按桌面客户端统一方案 v0.1 + agent_management Sub Mode Runtime 对接,强制全量统一,不留兼容。
命名统一(强制,无兼容):
- 全仓 agnet/Agnet/AGNET → agent/Agent/AGENT:后端 Go(路由 /api/agent/*、env AGENT_*、
结构体/函数、19 个文件改名)、前端(agent-console/agent-hub、/api/agent 调用、i18n)、
DB(表 agent_*、列 agent_id)、compose/.env、文档、脚本。
- DB 加幂等迁移 renameAgnetTablesToAgent():启动时 rename 老 agnet_* 表/列,保住生产数据。
统一方案核心(10 项):
- callback 统一 /api/agent/callbacks/runtime-events(路由/广播URL/函数名)。
- artifact 兜底判定改用 Runtime 权威信号 metadata.synthesized(§7.2)+ 结构化 artifact_type。
- Manager→Runtime 路径对齐 /api/agent/sub-agile/deployments(§2.2),{deployment_id} 回退 swarm_id。
- 状态裁决 display_status:Manager 唯一裁判,completed 无有效产物→needs_codegen/
completed_without_deliverable(§10.6),接入 detail/timeline/workflow。
- GET /api/heicode/capabilities 能力发现(§6)。
- 模型策略 per_role(role_models)+ 收集 allowed_model_ids(§9)。
- resource_binding_id→secret_ref 服务端解析,客户端不再 inline secret_ref(§17.6)。
- 客户端统一路由层 /api/heicode/sub-agile|swarm/*(task≡deployment,复用控制面)+ workflow 投影。
- 日志分层 user_logs/debug_logs(§13)。
验证:go build ./... + go test(controller/router/model/middleware)全绿;前端 tsc -b + rsbuild build 通过。
待部署:VM .env 的 AGNET_*→AGENT_*;启动迁移自动 rename 表;其他三仓库需同步切到 /api/agent。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
2.7 KiB
Go
43 lines
2.7 KiB
Go
package model
|
|
|
|
// ResourceBinding is the Manager-side resource record described by docs/plan.md P1.
|
|
// It stores user-owned resource metadata and a Secret Store reference only;
|
|
// plaintext credentials must never be stored here.
|
|
type ResourceBinding struct {
|
|
Id int `json:"id"`
|
|
UserId int `json:"user_id" gorm:"index;not null"`
|
|
TenantId string `json:"tenant_id" gorm:"type:varchar(64);index"` // legacy compatibility only; do not use as a product boundary.
|
|
ProjectId string `json:"project_id" gorm:"type:varchar(64);index"`
|
|
BindingScope string `json:"binding_scope" gorm:"type:varchar(512);index"`
|
|
Name string `json:"name" gorm:"type:varchar(128);not null"`
|
|
ResourceType string `json:"resource_type" gorm:"type:varchar(32);index;not null"`
|
|
Provider string `json:"provider" gorm:"type:varchar(64);default:'custom'"`
|
|
ExternalId string `json:"external_id" gorm:"type:varchar(512)"`
|
|
SecretRef string `json:"secret_ref" gorm:"type:varchar(512)"`
|
|
Metadata string `json:"metadata" gorm:"type:text"`
|
|
PermissionScope string `json:"permission_scope" gorm:"type:text"`
|
|
Constraints string `json:"constraints" gorm:"type:text"`
|
|
Status string `json:"status" gorm:"type:varchar(32);default:'active';index"`
|
|
CreatedAt int64 `json:"created_at" gorm:"autoCreateTime;column:created_at"`
|
|
UpdatedAt int64 `json:"updated_at" gorm:"autoUpdateTime;column:updated_at"`
|
|
}
|
|
|
|
// ResourceGrant assigns a ResourceBinding to a role and child Agent.
|
|
// It is the auditable Manager expression of "user grants bound resource to role".
|
|
type ResourceGrant struct {
|
|
Id int `json:"id"`
|
|
UserId int `json:"user_id" gorm:"index;not null"`
|
|
TenantId string `json:"tenant_id" gorm:"type:varchar(64);index"` // legacy compatibility only; do not use as a product boundary.
|
|
ProjectId string `json:"project_id" gorm:"type:varchar(64);index"`
|
|
BindingScope string `json:"binding_scope" gorm:"type:varchar(512);index"`
|
|
ResourceId int `json:"resource_id" gorm:"index;not null"`
|
|
Role string `json:"role" gorm:"type:varchar(128);index;not null"`
|
|
AgentId string `json:"agent_id" gorm:"type:varchar(128);index;not null"`
|
|
PermissionScope string `json:"permission_scope" gorm:"type:text"`
|
|
Constraints string `json:"constraints" gorm:"type:text"`
|
|
Status string `json:"status" gorm:"type:varchar(32);default:'active';index"`
|
|
RevokedAt int64 `json:"revoked_at" gorm:"default:0"`
|
|
CreatedAt int64 `json:"created_at" gorm:"autoCreateTime;column:created_at"`
|
|
UpdatedAt int64 `json:"updated_at" gorm:"autoUpdateTime;column:updated_at"`
|
|
}
|