diff --git a/docs/integration/README.md b/docs/integration/README.md index 609d9c4..caef09a 100644 --- a/docs/integration/README.md +++ b/docs/integration/README.md @@ -19,7 +19,7 @@ | 4 | `[../sk-lifecycle.md](../sk-lifecycle.md)` | SK 来源、快照、写权边界(**单点真相**) | | 5 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §2–§3 | 身份、调用方式、RBAC | | 6 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §4 | 多租户与隔离 | -| 7 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §5 | 一键部署、SK 绑定、控制面 API | +| 7 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §5 | 一键部署、`sk_sources`、**运行时绑定**、**SK 访问策略**、控制面 API | | 8 | `[./orchestration-plan-contract.md](./orchestration-plan-contract.md)` | 模型提案对象与平台裁决规则 | | 9 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §6–§7 | 运行态、聚合视图、事件流(双轨) | | 10 | `[./Heicode-登录接口对接文档.md](./Heicode-登录接口对接文档.md)` | 已上线认证接口契约(login / me / refresh / logout) | diff --git a/docs/integration/acceptance-matrix.md b/docs/integration/acceptance-matrix.md index f2eb52c..ce461aa 100644 --- a/docs/integration/acceptance-matrix.md +++ b/docs/integration/acceptance-matrix.md @@ -24,6 +24,8 @@ | A08 | 回调安全 | callback 签名错误 | 模拟篡改签名 | 拒绝处理并记审计 | | A09 | 事件流 | SSE 断线后续传 | 已产生事件、支持 `Last-Event-ID` | 重连后补齐丢失窗口事件 | | A10 | 子输出流 | 会话订阅 `sub_agent.output` | 会话内子 agent 正在运行 | 客户端收到 `output_delta` 流式事件 | +| A11 | 运行时绑定 | 部署携带非法 `runtime_execution` 引用 | principal 不属于租户或未授权 | 拒绝,`RUNTIME_BINDING_INVALID` | +| A12 | SK 策略 | `sk_access_policy` 与租户策略冲突 | 显式拒绝覆盖必需快照路径 | 拒绝,`SK_POLICY_REJECTED` | ## 3. 验收字段(每条事件必须) diff --git a/docs/integration/agnet-platform-api-design.md b/docs/integration/agnet-platform-api-design.md index e4f92ab..bf15b57 100644 --- a/docs/integration/agnet-platform-api-design.md +++ b/docs/integration/agnet-platform-api-design.md @@ -131,6 +131,8 @@ Tenant(租户) | **团队成员** | 部署配置须 **显式包含团队成员**(至少:`user_id`、组织内角色、是否纳入该 Agnet 团队)。成员关系由 Manager/Agnet 持久化,供 **RBAC、配额与审计**;团队管理员经 **Manager 控制面**维护名单(增删改须审计)。 | | **成员所用模型** | 须能声明 **各成员默认使用的模型/路由**(如 `default_model_id`、`provider_profile_id` 或与 Manager **模型策略**对齐的引用)。支持「团队缺省 + 成员覆盖」;未授权模型 **不得**在执行路径上静默生效。 | | **子 agent(Agnet 平台内)与 SK** | 本文所称 **子 Agnet / 子 agent** 均指 **Agnet 平台内部的子智能体/子执行单元**(由 Agnet 编排与实例化),非 Heicode 自研运行时。部署配置须支持为 **指定子 agent** 绑定 **SK 输入源**;运行态下该子 agent **只读**白名单内的 SK 内容。 | +| **云上 / 运行时权限(须随部署传参)** | 用户在 **Heicode Manager** 中为子 agent 配置的 **执行环境绑定**(例如专用虚拟机池、云 identity / 服务账号引用、网络或资源配额策略 ID)**必须**出现在 **部署请求体**(或等价的平台编排参数)中,由 **Agnet 调度与强制执行**;不得假设「仅在控制台勾选、不传平台即可生效」。缺省值与继承规则(编队级 → 子 agent 覆盖)须在联合 RFC 中写死。 | +| **SK 访问策略(允许 / 禁止,须随部署传参)** | 除 **`sk_sources` 解析出的快照正文**外,须支持显式声明 **SK 工具/技能命名空间或路径的允许集与拒绝集**(或引用租户级策略模板 ID)。部署完成后,平台将 **物化**各子 agent 的 **有效 SK 策略**:快照内容 ∩ 允许规则 − 拒绝规则;子 agent 运行时 **不得**调用策略外的 SK 工具入口(与 §12 校验一致)。 | | **SK 与 Git / 上传 MD** | **SK 正文资产以 Git 仓库为统一事实源**(用户指定的远端/连接与分支、路径规则由集成约定)。同时允许用户 **上传 Markdown 等文件** 作为 **补充 SK 源**(租户内对象存储/制品 ID)。Agnet 执行前将两类来源 **解析为不可变快照**(commit SHA / upload version),再注入子 agent 上下文。 | | **SK 文件仅在 Heicode 中编辑** | Git 侧 SK 的 **创建、修改、删除** 经 **Heicode 客户端**提交到仓库(或 Heicode 发起变更后再同步);**上传类 SK** 的 **新增/替换** 仅通过 **Heicode 提供的入口**(Manager 可做登记与透传,**不提供 SK 正文在线编辑器**)。**Agnet 平台与子 agent 对 SK 均只读**;若 Agnet 控制台出现可直接改 SK 正文的 API/UI,视为 **违背产品边界**。 | @@ -158,13 +160,25 @@ Tenant(租户) "sub_agents": [ { "role_template": "sub_reviewer", - "sk_file_refs": ["sk_review_policy.md", "sk_api_bar.yaml"] + "sk_file_refs": ["sk_review_policy.md", "sk_api_bar.yaml"], + "runtime_execution": { + "profile_id": "exec_profile_vm_dedicated", + "cloud_principal_refs": ["cp_az_mi_ci_readonly"], + "network_policy_ref": "net_tenant_isolated" + }, + "sk_access_policy": { + "policy_ref": "tenant_sk_policy_default", + "deny_skill_ids": ["sk_admin_dest_env"], + "inherit_deployment_defaults": true + } } ], "parameters": { "unit_overrides": {} } } ``` +- `**runtime_execution`(推荐)**:承载 **子 agent 云上执行绑定**(VM/池、云 SA/MI、网络策略等);字段名可映射为 Agnet 内部模型,但 **语义不得省略**——Manager 收集的配置必须可达 Agnet。 +- `**sk_access_policy`(推荐)**:与 **`sk_sources` 快照**配合,声明 **允许/拒绝** 的技能 ID、路径前缀或租户策略引用;平台在部署落账时计算 **effective policy** 并下发给运行时。 - `**sk_sources`(推荐显式建模)**:替代或细化纯路径数组 `sk_file_refs`; 每个元素标明来源类型,便于 Agnet 实现拉取与快照。 **部署请求体中 SK 绑定扩展示意** @@ -195,8 +209,10 @@ Tenant(租户) | 类别 | 要求 | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **部署与编队** | 实现 `**POST /deployments`**(或 `**POST /teams/deployments`**)可接收 **成员、成员模型、子 agent 模板及 `sk_sources`**;返回 `**deployment_id**`、实例/子 agent 标识,供 Callback 与观测关联。 | +| **部署与编队** | 实现 `**POST /deployments`**(或 `**POST /teams/deployments`**)可接收 **成员、成员模型、子 agent 模板、`sk_sources`、`runtime_execution`、`sk_access_policy`**(字段名可等价映射);返回 `**deployment_id**`、实例/子 agent 标识,供 Callback 与观测关联。 | | **SK 快照只读** | 对每个 `deployment_id` / `sub_agent_id`,Agnet 须能记录 **已解析的 SK 快照**(Git:`commit_sha` + 路径哈希;Upload:`artifact_id` + 版本)。运行注入 **仅此快照**,不得在执行中「瞒报版本」拉未授权路径。 | +| **运行时绑定落账** | 部署请求中的 **`runtime_execution`(或等价字段)** 必须持久化,并在 **实例化子 agent** 时绑定到实际执行环境(VM、identity、网络隔离等);观测 API 能回答「该实例使用了哪套运行时绑定」。 | +| **SK 策略物化** | 部署接受后,Agnet 必须能输出 **每个子 agent 的生效 SK 策略**(快照哈希 + `sk_access_policy` 解析结果),供 Manager **Git 来源 / 审计**页展示「允许 / 禁止 SK」结论与追溯。 | | **Git 拉取** | Agnet 须支持 **按租户注册 Git 凭据/连接**(`connection_id` 或等价),由用户在 **Heicode/Manager 流程**中授权;**Agnet 不提供 Git 写接口用于改 SK**——写操作发生在 Git 远端或经 Heicode 提交后,Agnet 仅 **fetch + checkout 指定 ref**。 | | **上传制品** | 若支持 `type: "upload"`:Agnet(或与 Manager 分工)须提供 `**artifact_id`** 的只读获取(如 `GET /sk-artifacts/{artifact_id}/content` 或预签名 URL),**无 `PUT` 修改正文**于 Agnet 控制台;上传入口 **仅** Heicode 侧发起、Agnet 存只读副本。 | | **刷新策略** | 约定 **何时重新解析 SK**(如新 commit、用户触发刷新、部署新版本);须可通过 API 或事件暴露 `**sk_snapshot_refreshed`**,便于 Heicode 提示「已用新版本 SK」。 | @@ -204,7 +220,7 @@ Tenant(租户) - `**sk_file_refs`**(若保留简化字段):视为 **相对某默认 Git 根**或 **由 Manager 展开为 `sk_sources`** 前的简写;联合 RFC 须声明展开规则。 -- **验收**:部署完成后,Manager 可展示「团队成员—模型—**Agnet 子 agent**—SK 源(Git ref / 上传件)—快照版本」;Git 更新或 Heicode 重新上传后,按刷新策略在后续运行使用新快照。 +- **验收**:部署完成后,Manager 可展示「团队成员—模型—**Agnet 子 agent**—SK 源(Git ref / 上传件)—快照版本—**运行时绑定**—**生效 SK 策略**」;Git 更新或 Heicode 重新上传后,按刷新策略在后续运行使用新快照。 ### 5.1 部署编队 @@ -413,6 +429,8 @@ Tenant(租户) 3. `default_model_id` 在组织策略允许范围 4. `sk_sources` 可解析且无越权路径 5. 预算上限(tokens / cost / duration)未超策略阈值 +6. 若请求包含 **`runtime_execution`**:`profile_id` / `cloud_principal_refs` 等引用 **属于本租户且已授权**,否则 **拒绝部署**(错误码建议 `RUNTIME_BINDING_INVALID`)。 +7. 若请求包含 **`sk_access_policy`**:须与租户默认策略合并并 **物化为可执行的生效边界**;非法组合(例如引用禁止的技能 ID、与快照路径冲突)返回 **403** / `SK_POLICY_REJECTED`。 --- @@ -453,6 +471,8 @@ Tenant(租户) | `POLICY_REJECTED` | 平台策略拒绝执行提案 | | `MODEL_NOT_ALLOWED` | 模型未授权 | | `SK_SOURCE_UNRESOLVABLE` | SK 源不可解析或不可读 | +| `RUNTIME_BINDING_INVALID` | 云上 / 运行时绑定引用无效或未授权 | +| `SK_POLICY_REJECTED` | SK 允许 / 拒绝策略与快照或租户策略冲突 | | `BUDGET_EXCEEDED` | 超预算 | | `FORBIDDEN_CROSS_TENANT` | 跨租户访问拒绝 | | `DEPLOYMENT_CONFLICT` | 幂等或状态冲突 | diff --git a/docs/integration/orchestration-plan-contract.md b/docs/integration/orchestration-plan-contract.md index 9b38ec7..04646a2 100644 --- a/docs/integration/orchestration-plan-contract.md +++ b/docs/integration/orchestration-plan-contract.md @@ -42,7 +42,17 @@ "role_template": "AG-DEV", "goal": "按拆解清单完成实现与自测", "default_model_id": "mdl_claude_sonnet", - "sk_sources": [] + "sk_sources": [], + "runtime_execution": { + "profile_id": "exec_profile_vm_pool_ci", + "cloud_principal_refs": ["cp_az_mi_build"], + "network_policy_ref": "net_project_default" + }, + "sk_access_policy": { + "policy_ref": "tenant_sk_policy_default", + "deny_skill_ids": ["sk_cross_env_admin"], + "inherit_deployment_defaults": true + } } ], "constraints": { @@ -71,6 +81,8 @@ | `agents[].goal` | 是 | 该角色目标 | | `agents[].default_model_id` | 否 | 建议模型;最终由平台策略裁决 | | `agents[].sk_sources` | 否 | SK 来源列表 | +| `agents[].runtime_execution` | 否 | **须在转为部署请求时保留**:子 agent 云上执行绑定(VM/池、云 principal、网络策略等),与 [`agnet-platform-api-design.md`](./agnet-platform-api-design.md) §5.0 一致 | +| `agents[].sk_access_policy` | 否 | **须在转为部署请求时保留**:SK 允许 / 禁止规则(引用或内联),与快照合并后由平台物化为生效策略 | | `constraints.allowed_model_ids` | 否 | 允许模型白名单 | | `metadata.tenant_id` | 是 | 顶层隔离键 | | `metadata.project_id` | 是 | 项目标识 | @@ -85,6 +97,8 @@ Agnet 在执行前必须做下列校验: 3. 模型授权:`default_model_id` 在组织与项目策略允许范围内 4. SK 边界:`sk_sources` 可解析、可读、无越权路径 5. 预算约束:`max_tokens` / `max_cost_usd` / `max_duration_sec` 不超策略上限 +6. 运行时边界:若存在 `runtime_execution`,其引用须为本租户已授权的执行档案 / 云 principal(否则 `RUNTIME_BINDING_INVALID`) +7. SK 策略:若存在 `sk_access_policy`,合并后须一致且可执行(否则 `SK_POLICY_REJECTED`) ## 5. 典型拒绝码 @@ -93,13 +107,15 @@ Agnet 在执行前必须做下列校验: | `POLICY_REJECTED` | 平台策略拒绝执行 | | `MODEL_NOT_ALLOWED` | 模型未授权 | | `SK_SOURCE_UNRESOLVABLE` | SK 源无法解析或无权限读取 | +| `RUNTIME_BINDING_INVALID` | 云上 / 运行时绑定无效或未授权 | +| `SK_POLICY_REJECTED` | SK 允许 / 拒绝策略冲突 | | `BUDGET_EXCEEDED` | 预算超限 | | `FORBIDDEN_CROSS_TENANT` | 跨租户访问拒绝 | | `DEPLOYMENT_CONFLICT` | 幂等冲突或状态冲突 | ## 6. 对接建议 -- `orchestration_plan` 建议由 Manager 转换成 Agnet `POST /deployments` 标准 payload +- `orchestration_plan` 建议由 Manager **无损映射**为 Agnet `POST /deployments` 标准 payload;**`runtime_execution` / `sk_access_policy` 不得在进入部署链路时丢弃**,否则子 agent 无法获得用户在 Manager 配置的权限与 SK 边界 - 拒绝时应返回 `error.code` + `request_id` + `correlation_id` - 接受后返回 `deployment_id`,并通过事件流持续反馈执行状态 diff --git a/docs/sk-lifecycle.md b/docs/sk-lifecycle.md index 7cff44a..650b2fa 100644 --- a/docs/sk-lifecycle.md +++ b/docs/sk-lifecycle.md @@ -120,10 +120,12 @@ Agnet 不需要、也不应该提供针对 SK 正文的 `PUT` / `PATCH`:写操 - 团队成员列表与组织内角色 - 各成员所用模型 / `provider_profile_id` - 子 agent 模板与 `sk_sources` +- **用户在 Manager 配置的子 agent 云上 / 运行时权限**(如 `runtime_execution`:VM 池、云 principal、网络策略等),**必须随部署请求传给 Agnet**,不得在链路中丢弃 +- **SK 允许 / 禁止策略**(如 `sk_access_policy`),与快照合并后的生效边界须由平台落账,子 agent 仅能在该边界内消费 SK 部署完成后 Manager 应能展示: -`团队成员 → 模型 → Agnet 子 agent → SK 源(Git ref / 上传件)→ 快照版本` +`团队成员 → 模型 → Agnet 子 agent → SK 源(Git ref / 上传件)→ 快照版本 → 运行时绑定 → 生效 SK 策略` 未授权模型 **不得** 在执行路径上静默生效。 diff --git a/heicode/web/default/src/features/agnet-console/pages.tsx b/heicode/web/default/src/features/agnet-console/pages.tsx index 603b4a6..3bc0348 100644 --- a/heicode/web/default/src/features/agnet-console/pages.tsx +++ b/heicode/web/default/src/features/agnet-console/pages.tsx @@ -620,7 +620,7 @@ export function AgnetAuditPage() { } // ============================================================================= -// Git sources — SK 正文以 Git 为准;此处为绑定说明 + 运行时解析锚点列表 +// Git sources — 绑定代码/SK 仓库与云上权限 → 部署 → 展示各部署的快照锚点(SK 正文仍以 Git 为准) // ============================================================================= export function AgnetSKSourcesPage() { @@ -672,6 +672,19 @@ export function AgnetSKSourcesPage() {

{t('Git sources binding explainer')}

+
+

+ {t('Git sources workflow title')} +

+
    +
  1. {t('Git sources workflow step 1')}
  2. +
  3. {t('Git sources workflow step 2')}
  4. +
  5. {t('Git sources workflow step 3')}
  6. +
  7. {t('Git sources workflow step 4')}
  8. +
  9. {t('Git sources workflow step 5')}
  10. +
+
+ {!effectiveDeployment ? ( ( `Auth request failed (${res.status})` throw new Error(message) } - return data + return data as T } // ============================================================================ diff --git a/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx b/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx index 0c86e28..f1a862b 100644 --- a/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx +++ b/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx @@ -35,7 +35,7 @@ const MODELS: ModelConfig[] = [ id: 'gemini-pro', name: 'gemini-2.5-pro', response: - 'Heicode Manager binds Git-backed SK sources and rolls Agnet runs, events, resolved anchors, and audit into one tenant-scoped control plane.', + 'Bind Git code and SK tool repos, allocate cloud permissions for sub-agents, then deploy—runs inherit SK allow/deny policy with hashed anchors, events, and audit on one tenant-scoped control plane.', tokens: 29, latency: 156, badgeClass: diff --git a/heicode/web/default/src/features/home/components/sections/cta.tsx b/heicode/web/default/src/features/home/components/sections/cta.tsx index 39256fe..5855911 100644 --- a/heicode/web/default/src/features/home/components/sections/cta.tsx +++ b/heicode/web/default/src/features/home/components/sections/cta.tsx @@ -1,6 +1,5 @@ import { Link } from '@tanstack/react-router' import { ArrowRight } from 'lucide-react' -import { useTranslation } from 'react-i18next' import { Button } from '@/components/ui/button' import { AnimateInView } from '@/components/animate-in-view' @@ -10,8 +9,6 @@ interface CTAProps { } export function CTA(props: CTAProps) { - const { t } = useTranslation() - if (props.isAuthenticated) { return null } diff --git a/heicode/web/default/src/features/home/components/sections/features.tsx b/heicode/web/default/src/features/home/components/sections/features.tsx index c100fc0..f7da8d3 100644 --- a/heicode/web/default/src/features/home/components/sections/features.tsx +++ b/heicode/web/default/src/features/home/components/sections/features.tsx @@ -8,7 +8,6 @@ import { Users, HeartHandshake, } from 'lucide-react' -import { useTranslation } from 'react-i18next' import { AnimateInView } from '@/components/animate-in-view' interface FeaturesProps { @@ -16,8 +15,6 @@ interface FeaturesProps { } export function Features(_props: FeaturesProps) { - const { t } = useTranslation() - const features = [ { id: 'fast', diff --git a/heicode/web/default/src/features/home/components/sections/how-it-works.tsx b/heicode/web/default/src/features/home/components/sections/how-it-works.tsx index 4a9b231..c2f5db9 100644 --- a/heicode/web/default/src/features/home/components/sections/how-it-works.tsx +++ b/heicode/web/default/src/features/home/components/sections/how-it-works.tsx @@ -1,10 +1,7 @@ import { Settings, Zap, BarChart3 } from 'lucide-react' -import { useTranslation } from 'react-i18next' import { AnimateInView } from '@/components/animate-in-view' export function HowItWorks() { - const { t } = useTranslation() - const steps = [ { num: '1', diff --git a/heicode/web/default/src/features/home/components/sections/stats.tsx b/heicode/web/default/src/features/home/components/sections/stats.tsx index 57a9661..e6196b0 100644 --- a/heicode/web/default/src/features/home/components/sections/stats.tsx +++ b/heicode/web/default/src/features/home/components/sections/stats.tsx @@ -1,5 +1,4 @@ import { useRef, useEffect, useCallback } from 'react' -import { useTranslation } from 'react-i18next' interface CounterProps { end: number @@ -70,8 +69,6 @@ interface StatsProps { } export function Stats(_props: StatsProps) { - const { t } = useTranslation() - const stats = [ { end: 100, suffix: 'K+', label: '已编排任务' }, { end: 50, suffix: '+', label: '接入租户' }, diff --git a/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx b/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx index ee63468..3ec11fb 100644 --- a/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx +++ b/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx @@ -21,7 +21,7 @@ import { StatusBadge, type StatusBadgeProps, } from '@/components/status-badge' -import type { UsageLog } from '../../data/schema' +import type { UsageLog } from '../../usage-log-schema' import { formatModelName, getFirstResponseTimeColor, diff --git a/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx b/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx index ce0ef23..116c93f 100644 --- a/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx +++ b/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx @@ -29,7 +29,7 @@ import { Label } from '@/components/ui/label' import { ScrollArea } from '@/components/ui/scroll-area' import { StatusBadge, type StatusBadgeProps } from '@/components/status-badge' import { DynamicPricingBreakdown } from '@/features/pricing/components/dynamic-pricing-breakdown' -import type { UsageLog } from '../../data/schema' +import type { UsageLog } from '../../usage-log-schema' import { parseLogOther, getParamOverrideActionLabel, diff --git a/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx b/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx index 3fd340b..c51150c 100644 --- a/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx +++ b/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx @@ -132,7 +132,7 @@ export function UsageLogsTable({ logCategory }: UsageLogsTableProps) { const isLoadingData = isLoading || (isFetching && !data) const table = useReactTable({ - data: logs as Record[], + data: logs as unknown as Record[], columns: columns as ColumnDef>[], state: { columnFilters, diff --git a/heicode/web/default/src/features/usage-logs/lib/format.ts b/heicode/web/default/src/features/usage-logs/lib/format.ts index 82d1ca4..59b1851 100644 --- a/heicode/web/default/src/features/usage-logs/lib/format.ts +++ b/heicode/web/default/src/features/usage-logs/lib/format.ts @@ -4,7 +4,7 @@ import { parseTiersFromExpr, type ParsedTier, } from '@/features/pricing/lib/billing-expr' -import type { UsageLog } from '../data/schema' +import type { UsageLog } from '../usage-log-schema' import type { LogOtherData } from '../types' const PARAM_OVERRIDE_ACTION_MAP: Record = { diff --git a/heicode/web/default/src/features/usage-logs/types.ts b/heicode/web/default/src/features/usage-logs/types.ts index 9fcda22..7d5d20e 100644 --- a/heicode/web/default/src/features/usage-logs/types.ts +++ b/heicode/web/default/src/features/usage-logs/types.ts @@ -1,7 +1,7 @@ /** * Type definitions for usage logs */ -import type { UsageLog } from './data/schema' +import type { UsageLog } from './usage-log-schema' // ============================================================================ // Log Category Types diff --git a/heicode/web/default/src/features/usage-logs/usage-log-schema.ts b/heicode/web/default/src/features/usage-logs/usage-log-schema.ts new file mode 100644 index 0000000..0c62507 --- /dev/null +++ b/heicode/web/default/src/features/usage-logs/usage-log-schema.ts @@ -0,0 +1,24 @@ +/** + * API row shape for common (chat/relay) usage logs from the Manager backend. + * Kept permissive: optional fields mirror partial responses and legacy rows. + */ +export interface UsageLog { + id?: number + user_id: number + username?: string + type: number + channel: number + channel_name?: string + token_name?: string + model_name: string + group?: string + other: string + quota: number + use_time: number + prompt_tokens: number + completion_tokens: number + is_stream: boolean + request_id?: string + content?: string + ip?: string +} diff --git a/heicode/web/default/src/hooks/use-sidebar-data.ts b/heicode/web/default/src/hooks/use-sidebar-data.ts index 899f073..1487bdb 100644 --- a/heicode/web/default/src/hooks/use-sidebar-data.ts +++ b/heicode/web/default/src/hooks/use-sidebar-data.ts @@ -21,7 +21,7 @@ import { type SidebarData } from '@/components/layout/types' * - 平台是管理后台:登录后默认仅展示 Code delivery cockpit + 个人入口; * - 不再向普通用户暴露 Playground / API Keys / Models 等开发者控制台条目; * - Usage logs 作为交付链路的一环,归并进 Code delivery 分组; - * - Git sources:SK 正文以 Git 为准;此处仅登记连接与展示运行时解析锚点(commit / 制品),不提供正文编辑; + * - Git sources:先绑定代码与 SK 工具仓库并分配子 Agent 云上权限,部署后在此查看快照锚点;SK 正文仍以 Git 为准,不提供 Markdown 编辑; * - 所有 admin/root 管理类入口(Channels/Models/Tenants/Redemption/...) * 收纳进 "系统设置" workspace(点击进入 /system-settings 后才出现)。 * diff --git a/heicode/web/default/src/i18n/locales/en.json b/heicode/web/default/src/i18n/locales/en.json index 3535f48..2956a5d 100644 --- a/heicode/web/default/src/i18n/locales/en.json +++ b/heicode/web/default/src/i18n/locales/en.json @@ -1605,10 +1605,16 @@ "Get Started": "Get Started", "Git binding": "Git binding", "Git sources": "Git sources", - "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", - "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.", + "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", + "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.", + "Git sources workflow title": "Typical setup flow", + "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.", + "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.", + "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.", + "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.", + "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.", "Git-backed SK sources": "Git-backed SK sources", - "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.", + "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.", "GitHub": "GitHub", "Give the group a recognizable name and optional description.": "Give the group a recognizable name and optional description.", "Give this group a recognizable name.": "Give this group a recognizable name.", @@ -1775,7 +1781,7 @@ "Inspect": "Inspect", "Inspect events": "Inspect events", "Inspect Git sources": "Inspect Git sources", - "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.", + "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.", "Inspect SK lineage": "Inspect SK lineage", "Inspect user prompts": "Inspect user prompts", "Instance": "Instance", @@ -2176,9 +2182,9 @@ "No deployment available for events.": "No deployment available for events.", "No deployment available for SK snapshots.": "No deployment available for SK snapshots.", "No deployment for Git sources": "No deployment selected yet", - "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.", + "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.", "No resolved snapshots yet": "No resolved snapshots yet", - "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.", + "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.", "No deployments available. Create one to get started.": "No deployments available. Create one to get started.", "No Deployments Found": "No Deployments Found", "No deployments match the current filter": "No deployments match the current filter", @@ -3106,7 +3112,7 @@ "Sign in": "Sign in", "Sign In": "Sign In", "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.", - "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.", + "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.", "Sign in to your workspace": "Sign in to your workspace", "Sign in with Passkey": "Sign in with Passkey", "Sign out": "Sign out", diff --git a/heicode/web/default/src/i18n/locales/fr.json b/heicode/web/default/src/i18n/locales/fr.json index 1d7877e..05504ec 100644 --- a/heicode/web/default/src/i18n/locales/fr.json +++ b/heicode/web/default/src/i18n/locales/fr.json @@ -1605,10 +1605,16 @@ "Get Started": "Commencer", "Git binding": "Git binding", "Git sources": "Git sources", - "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", - "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.", + "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", + "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.", + "Git sources workflow title": "Typical setup flow", + "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.", + "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.", + "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.", + "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.", + "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.", "Git-backed SK sources": "Git-backed SK sources", - "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.", + "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.", "GitHub": "GitHub", "Give the group a recognizable name and optional description.": "Donnez au groupe un nom reconnaissable et une description facultative.", "Give this group a recognizable name.": "Donnez un nom reconnaissable à ce groupe.", @@ -1775,7 +1781,7 @@ "Inspect": "Inspect", "Inspect events": "Inspect events", "Inspect Git sources": "Inspect Git sources", - "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.", + "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.", "Inspect SK lineage": "Inspect SK lineage", "Inspect user prompts": "Inspecter les invites utilisateur", "Instance": "Instance", @@ -2176,9 +2182,9 @@ "No deployment available for events.": "No deployment available for events.", "No deployment available for SK snapshots.": "No deployment available for SK snapshots.", "No deployment for Git sources": "No deployment selected yet", - "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.", + "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.", "No resolved snapshots yet": "No resolved snapshots yet", - "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.", + "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.", "No deployments available. Create one to get started.": "Aucun déploiement disponible. Créez-en un pour commencer.", "No Deployments Found": "Aucun déploiement trouvé", "No deployments match the current filter": "No deployments match the current filter", @@ -3106,7 +3112,7 @@ "Sign in": "Se connecter", "Sign In": "Se connecter", "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.", - "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.", + "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.", "Sign in to your workspace": "Sign in to your workspace", "Sign in with Passkey": "Se connecter avec Passkey", "Sign out": "Se déconnecter", diff --git a/heicode/web/default/src/i18n/locales/ja.json b/heicode/web/default/src/i18n/locales/ja.json index 2d37018..913c241 100644 --- a/heicode/web/default/src/i18n/locales/ja.json +++ b/heicode/web/default/src/i18n/locales/ja.json @@ -1605,10 +1605,16 @@ "Get Started": "開始する", "Git binding": "Git binding", "Git sources": "Git sources", - "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", - "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.", + "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", + "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.", + "Git sources workflow title": "Typical setup flow", + "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.", + "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.", + "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.", + "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.", + "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.", "Git-backed SK sources": "Git-backed SK sources", - "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.", + "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.", "GitHub": "GitHub", "Give the group a recognizable name and optional description.": "グループに認識しやすい名前とオプションの説明を付けます。", "Give this group a recognizable name.": "このグループに認識しやすい名前を付けます。", @@ -1775,7 +1781,7 @@ "Inspect": "Inspect", "Inspect events": "Inspect events", "Inspect Git sources": "Inspect Git sources", - "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.", + "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.", "Inspect SK lineage": "Inspect SK lineage", "Inspect user prompts": "ユーザープロンプトの検査", "Instance": "インスタンス", @@ -2176,9 +2182,9 @@ "No deployment available for events.": "No deployment available for events.", "No deployment available for SK snapshots.": "No deployment available for SK snapshots.", "No deployment for Git sources": "No deployment selected yet", - "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.", + "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.", "No resolved snapshots yet": "No resolved snapshots yet", - "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.", + "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.", "No deployments available. Create one to get started.": "利用可能なデプロイメントがありません。開始するには1つ作成してください。", "No Deployments Found": "デプロイメントが見つかりません", "No deployments match the current filter": "No deployments match the current filter", @@ -3106,7 +3112,7 @@ "Sign in": "ログイン", "Sign In": "ログイン", "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.", - "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.", + "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.", "Sign in to your workspace": "Sign in to your workspace", "Sign in with Passkey": "Passkeyでログイン", "Sign out": "ログアウト", diff --git a/heicode/web/default/src/i18n/locales/ru.json b/heicode/web/default/src/i18n/locales/ru.json index 60771bb..eaf32cb 100644 --- a/heicode/web/default/src/i18n/locales/ru.json +++ b/heicode/web/default/src/i18n/locales/ru.json @@ -1605,10 +1605,16 @@ "Get Started": "Начать", "Git binding": "Git binding", "Git sources": "Git sources", - "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", - "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.", + "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", + "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.", + "Git sources workflow title": "Typical setup flow", + "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.", + "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.", + "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.", + "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.", + "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.", "Git-backed SK sources": "Git-backed SK sources", - "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.", + "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.", "GitHub": "GitHub", "Give the group a recognizable name and optional description.": "Дайте группе узнаваемое имя и необязательное описание.", "Give this group a recognizable name.": "Дайте этой группе узнаваемое имя.", @@ -1775,7 +1781,7 @@ "Inspect": "Inspect", "Inspect events": "Inspect events", "Inspect Git sources": "Inspect Git sources", - "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.", + "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.", "Inspect SK lineage": "Inspect SK lineage", "Inspect user prompts": "Просмотр запросов пользователя", "Instance": "Экземпляр", @@ -2176,9 +2182,9 @@ "No deployment available for events.": "No deployment available for events.", "No deployment available for SK snapshots.": "No deployment available for SK snapshots.", "No deployment for Git sources": "No deployment selected yet", - "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.", + "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.", "No resolved snapshots yet": "No resolved snapshots yet", - "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.", + "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.", "No deployments available. Create one to get started.": "Нет доступных развертываний. Создайте одно, чтобы начать.", "No Deployments Found": "Развертывания не найдены", "No deployments match the current filter": "No deployments match the current filter", @@ -3106,7 +3112,7 @@ "Sign in": "Войти", "Sign In": "Войти", "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.", - "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.", + "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.", "Sign in to your workspace": "Sign in to your workspace", "Sign in with Passkey": "Войти с Passkey", "Sign out": "Выйти", diff --git a/heicode/web/default/src/i18n/locales/vi.json b/heicode/web/default/src/i18n/locales/vi.json index 6265ae5..2dd828c 100644 --- a/heicode/web/default/src/i18n/locales/vi.json +++ b/heicode/web/default/src/i18n/locales/vi.json @@ -1605,10 +1605,16 @@ "Get Started": "Bắt đầu", "Git binding": "Git binding", "Git sources": "Git sources", - "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", - "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.", + "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.", + "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.", + "Git sources workflow title": "Typical setup flow", + "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.", + "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.", + "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.", + "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.", + "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.", "Git-backed SK sources": "Git-backed SK sources", - "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.", + "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.", "GitHub": "GitHub", "Give the group a recognizable name and optional description.": "Đặt cho nhóm một cái tên dễ nhận biết và mô tả tùy chọn.", "Give this group a recognizable name.": "Hãy đặt cho nhóm này một cái tên dễ nhận biết.", @@ -1775,7 +1781,7 @@ "Inspect": "Inspect", "Inspect events": "Inspect events", "Inspect Git sources": "Inspect Git sources", - "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.", + "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.", "Inspect SK lineage": "Inspect SK lineage", "Inspect user prompts": "Kiểm tra lời nhắc của người dùng", "Instance": "Phiên bản", @@ -2176,9 +2182,9 @@ "No deployment available for events.": "No deployment available for events.", "No deployment available for SK snapshots.": "No deployment available for SK snapshots.", "No deployment for Git sources": "No deployment selected yet", - "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.", + "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.", "No resolved snapshots yet": "No resolved snapshots yet", - "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.", + "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.", "No deployments available. Create one to get started.": "Không có triển khai nào khả dụng. Tạo một cái để bắt đầu.", "No Deployments Found": "Không tìm thấy triển khai nào", "No deployments match the current filter": "No deployments match the current filter", @@ -3106,7 +3112,7 @@ "Sign in": "Đăng nhập", "Sign In": "Đăng nhập", "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.", - "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.", + "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.", "Sign in to your workspace": "Sign in to your workspace", "Sign in with Passkey": "Đăng nhập bằng Passkey", "Sign out": "Đăng xuất", diff --git a/heicode/web/default/src/i18n/locales/zh.json b/heicode/web/default/src/i18n/locales/zh.json index c802d77..f420015 100644 --- a/heicode/web/default/src/i18n/locales/zh.json +++ b/heicode/web/default/src/i18n/locales/zh.json @@ -1605,10 +1605,16 @@ "Get Started": "开始使用", "Git binding": "Git 绑定", "Git sources": "Git 来源", - "Git sources binding explainer": "Skill(SK)正文以 Git 仓库为唯一事实源。Manager 不在此编辑 Markdown:请在 Heicode 客户端或部署计划的 sk_sources 中登记仓库连接与引用。下列为运行时解析得到的不可变快照锚点(Git commit / 上传制品),供审计追溯。", - "Git sources subtitle": "为 SK 绑定 Git 仓库后,在此查看与各次部署关联的快照锚点。", + "Git sources binding explainer": "Skill(SK)定义以 Git 为唯一事实源。Manager 不在此编辑 Markdown:请在 Heicode 客户端或部署计划的 sk_sources 中登记代码仓库、SK 工具仓库与引用;并在同一计划中为子 Agent 分配云上权限(虚拟机、角色、API 范围等)。完成绑定后再部署子 Agent,使每次运行继承允许的 SK 与被禁止的 SK 策略。下列为运行时解析得到的不可变快照锚点(Git commit / 上传制品),供审计追溯。", + "Git sources subtitle": "绑定代码与 SK 工具仓库、为子 Agent 分配云上权限并部署后,在此按部署查看快照锚点。", + "Git sources workflow title": "典型配置顺序", + "Git sources workflow step 1": "绑定团队用于应用代码与交付上下文的 Git 仓库。", + "Git sources workflow step 2": "绑定 SK 工具仓库(技能来源),声明租户可引用的工具集。", + "Git sources workflow step 3": "为子 Agent 分配云上资源与权限(如独立虚拟机、角色与其他访问边界)。", + "Git sources workflow step 4": "部署子 Agent;部署会把已绑定的来源与策略写入该次运行。", + "Git sources workflow step 5": "部署完成后,子 Agent 从控制面获知生效的允许 SK 与禁止 SK。", "Git-backed SK sources": "基于 Git 的 SK 来源", - "Git-backed SK sources description": "来自已绑定 Git 引用与上传制品的不可变快照,并注入每次运行以供审计。", + "Git-backed SK sources description": "先完成仓库与云上能力绑定;每次部署后的不可变快照反映在该租户策略下实际运行的 SK 血缘。", "GitHub": "GitHub", "Give the group a recognizable name and optional description.": "为该分组提供一个可识别的名称和可选的描述。", "Give this group a recognizable name.": "为此分组提供一个可识别的名称。", @@ -1775,7 +1781,7 @@ "Inspect": "查看", "Inspect events": "查看事件", "Inspect Git sources": "查看 Git 来源与快照", - "Inspect Git sources description": "查看已绑定仓库解析出的锚点(commit / 制品哈希)。", + "Inspect Git sources description": "按「绑定 → 分配云上权限 → 部署」完成后,在此查看各次部署的锚点与血缘。", "Inspect SK lineage": "追溯 SK 血缘", "Inspect user prompts": "检查用户提示", "Instance": "实例", @@ -2176,9 +2182,9 @@ "No deployment available for events.": "暂无可查看事件的部署。", "No deployment available for SK snapshots.": "暂无可查看 SK 快照的部署。", "No deployment for Git sources": "暂无可关联的部署", - "No deployment for Git sources hint": "请在编排计划的 sk_sources 中指向 Git 仓库并创建部署后,此处会显示解析锚点。", + "No deployment for Git sources hint": "在计划中完成代码/SK 仓库与子 Agent 云上权限的配置并创建部署后,此处会显示解析锚点。", "No resolved snapshots yet": "尚无已解析的快照", - "No resolved snapshots hint": "在配置好基于 Git 的来源后,由控制面触发快照解析即可在此查看。", + "No resolved snapshots hint": "仓库、云上权限与部署就绪后,由控制面解析快照锚点即可在此审计追溯。", "No deployments available. Create one to get started.": "没有可用的部署。创建一个开始吧。", "No Deployments Found": "未找到部署", "No deployments match the current filter": "没有符合当前筛选条件的部署", @@ -3106,7 +3112,7 @@ "Sign in": "登录", "Sign In": "登录", "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "登录后即可操作 Agnet 部署、查看事件,并审计你账号下各租户的 SK 快照。", - "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "登录后即可操作部署、查看事件,并审阅你账号下各租户与 Git 绑定的快照锚点。", + "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "登录后即可绑定仓库与云上权限、部署子 Agent,并审阅你账号下各租户与 Git 绑定的快照锚点。", "Sign in to your workspace": "登录到你的工作空间", "Sign in with Passkey": "使用 Passkey 登录", "Sign out": "登出",