ChickenPige0n
|
a12984d174
|
feat(admin-web): add folder and project creation functionality in FolderNode and FolderTree components
|
2026-07-18 12:32:45 +08:00 |
|
hongjr03
|
9e954790dc
|
feat: add deployable alpha silo
|
2026-07-11 00:25:45 +08:00 |
|
hongjr03
|
848f913597
|
feat: secure organization provider credentials
|
2026-07-10 22:04:43 +08:00 |
|
hongjr03
|
73fa28a178
|
feat: provision non-root Hub service
|
2026-07-10 15:59:35 +08:00 |
|
hongjr03
|
c4f052efa2
|
feat(hub): add Feishu OAuth session for org admin
Introduce signed cookie sessions, Feishu web OAuth, requireOrgRole
guards, and the first org admin APIs (summary + project settings).
|
2026-07-10 00:55:19 +08:00 |
|
hongjr03
|
519ea8144f
|
feat: add Feishu project onboarding card
|
2026-07-10 00:32:09 +08:00 |
|
hongjr03
|
3f486232a8
|
feat(hub): 抽出运行时配置
|
2026-07-08 15:25:49 +08:00 |
|
hongjr03
|
012c8a7d89
|
fix(hub): default to OpenRouter Sonnet model
|
2026-07-08 11:48:16 +08:00 |
|
hongjr03
|
085f7c7186
|
fix(hub): 去掉冗余 OPENROUTER_API_KEY,直接用 ANTHROPIC_AUTH_TOKEN
|
2026-07-08 01:48:01 +08:00 |
|
hongjr03
|
b9f50407be
|
fix(hub): Claude Code SDK 经 OpenRouter Anthropic Skin,保留 provider-agnostic
我之前判断错了——OpenRouter 有 Anthropic Messages API 兼容端点
(https://openrouter.ai/api),Claude Code SDK 直连不需要代理。
ANTHROPIC_AUTH_TOKEN=OpenRouter key,ANTHROPIC_API_KEY='' 即可。
而且 ANTHROPIC_DEFAULT_SONNET_MODEL 可设 OpenRouter model ID
(z-ai/glm-4.7 等),所以 provider-agnostic 没丢。
ADR-0017 重写:从'Anthropic 专有'改为'Claude Code SDK via OpenRouter,
保留 provider-agnostic'。tsc rc=0。
|
2026-07-08 01:46:09 +08:00 |
|
hongjr03
|
1abcc495f4
|
test(hub): 真实 model 集成测试 + Gitea CI workflow
real-model.test.ts: 用真 OpenRouter model + 真 cph + 真 workspace 跑 agent
tool-calls 循环,验证 MockProvider 测不到的路径(model 返回 tool_calls →
dispatch → tool_result 回传 → 继续/stop)。没 OPENROUTER_API_KEY 时自动
skip,不阻塞 CI;有 key 时自动跑。
两个 test:(1) list files → cph check → 回答;(2) write file → read back。
hub-check.yml: Gitea CI workflow,对齐 checker-check/spec-check 的纪律:
npm ci → prisma generate → tsc → prisma validate → 装 cph → vitest unit →
vitest integration(postgres service container)→ real-model(可选,从
secrets 注入 key)。
全 suite: 60 passed + 2 skipped(无 key)。tsc rc=0。
|
2026-07-07 23:45:59 +08:00 |
|
hongjr03
|
ce767e9cab
|
feat(hub): 真实飞书读取 + 状态卡片 + 权限 gate + 部署脚本
FeishuRead(ADR-0003): feishuContextTool 从 stub 换成真实 lark
im.v1.message.get(单条 trigger/reply/status_card)+ list(thread 回复);
ADR-0003 chat 授权不变式不变(handler 已 gate)。
StatusCard: sendCard + buildRunStatusCard——完成/出错发 interactive card
(status 文案 + model 选择器 + 取消按钮带 runId),替代纯文本。
Permission(ADR-0004, project-wise): triggerAgent 查 PermissionGrant 对
project 的 edit+ 能力(manage⊇edit 单调);sender open_id 当 principal
(子类型学 OPEN,务实选择,permission.ts 标注);per-artifact OPEN;
settings 组合规则 OPEN。无权限回 '无权限触发'。
Deploy: cph-hub.service systemd unit(ExecStartPre 跑 prisma migrate)+
install_service.sh(idempotent,seed env)+ deploy_platform.sh
(rsync + npm ci + build + restart + healthz)。
client.ts 抽 createLarkClient/startFeishuListenerWithClient,tools 与
ws 共用同一 client。
tsc rc=0;prisma validate 通过;deploy 脚本 bash -n 通过。
|
2026-07-06 23:44:07 +08:00 |
|
hongjr03
|
b4dd8f09e1
|
feat(hub): Prisma schema + DB singleton,对齐 spec/System 契约
按 ADR-0001..0004/0017 重塑 schema,非照搬旧服务:
- ADR-0001: ProjectGroupBinding project↔chat 1:1(chatId @unique 钉单射不变式)
- ADR-0002: ProjectAgentLock projectId @id(at-most-one)+runId @unique;holder=run 非 session
- ADR-0004: PermissionGrant(resource×principal×role)+PermissionSettings(六旋钮)新落;
PermissionRole=read/edit/manage 与 PlatformRole=admin/teacher 分离(旧 schema 混淆了)
- ADR-0017: AgentSession 无 claudeSessionId,改 provider+model(切 model 即新 session)
- RunState 对齐 spec:加 WAITING_FOR_USER/TIMED_OUT(枚举完整性 OPEN)
- Audit:runId 是 PINNED 关系,其余 OPEN
旧 schema 的 FeishuProjectBinding(user/chat 混表)拆为单一 ProjectGroupBinding。
prisma validate 通过;generate 通过;tsc --noEmit rc=0;
类型级 schema 约束检查全部通过(ADR-0002 主键/唯一、ADR-0017 无 claudeSessionId 等)。
|
2026-07-06 22:48:28 +08:00 |
|