-
四处写 _registry.json 的地方都用 JSON.stringify(registry, null, 2) 直接落盘, 不带末尾换行。文件在仓库里是带换行的,导致任何一次 hire()/depositTemplate()/ 模板增删改之后,git diff 都会多出一行 "\ No newline at end of file" 的噪音, 把真实的数据变更淹掉。 写入点: - company-service.js:374 depositTemplate() - company-service.js:824 _updateTemplateUsedCount() - routes/company.js:86 PATCH /templates/:templateId - routes/company.js:120 DELETE /templates/:templateId 同时提交一次真实的运行时数据变更:qa-judge usedCount 7 → 8。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
-
hire() now checks system_agents (source_kind='template') before provisioning a new company agent: if the role has a shared template row, skip copying agent.md and instead let AgentManager.getAgentConfig()/PromptBuilder.build() resolve the prompt from the shared legacy_path at call time, with per-company context assembled from a new company-context.md. Roles without a template row (including the 6 ids that exist in both system/agents/ and system/templates/, e.g. evolver-youtube-crawler) fall back to the existing full-copy behavior unchanged. - server/services/graph-service.js (new): lookupSharedAgentMd(), upsertOrgGraphNode() - server/services/company-service.js: hire() reference-mode branch, _provisionReferenceAgent() - server/src/core/agent-manager.js: getAgentConfig() resolves prompt/companyContextPath - server/src/core/prompt-builder.js: build() concatenates company-context.md - unit + integration tests covering all 6 acceptance criteria from docs/todo/system-design/27-p1-virtual-reference.md §6, including a regression test against the real idearun:evolver-youtube-crawler naming-collision case Full regression suite (587 tests) passes; independent adversarial review found 0 blocking/major issues. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
-
Fixed 4 hidden bugs where path.join(DATA_ROOT, "system", ...) was used instead of direct path.resolve to root-level system/: - agent-chat.js: billing log scan (line 804) and agent list scan (line 909) - company-service.js: TEMPLATES_DIR and GLOBAL_AGENTS_DIR constants - heartbeat-service.js: system agents scan directory These were missed because they used path.join with a variable (DATA_ROOT) rather than the literal string "data/system" that sed caught.
-
…ictly enforce empty shell company creation
-
- System agents: 只保留 master (data/system/agents/master) - Templates: 所有可复用 agent 模板 (data/system/templates/) - Companies: 公司创建时自动部署 5 个元 Agent (innovator/hunter/digester/evolver/agent-creator) 路径修复: - agent-chat.js: /list 扫描路径修正 (system/agents + companies/*/agents) - agent-manager.js: 动态 agent 查找路径修正 - skill-config-loader.js: 修正 agents root - pipeline-service.js: pipelines 输出到 companies/{id}/pipelines/ - billing.log: 移至 companies/{id}/logs/ 下 Skills 标准化: - 所有 template agent 建立 .claude/skills/main_skill/SKILL.md - company-service._copyTemplate() 新增 .claude/ 目录复制 - innovator SKILL.md v3.0: 移除旧 l3-hunt/l2-digest 命名 - 清理重复 agent_creator, 统一为 agent-creator 清理: - 移除 data/agents, data/workspace, data/logs, data/goals 旧目录 - 清除所有未使用的 DATA_DIR 声明 - 清除 template 中的 conversations/logs/memory 运行态数据
-
- Add Company Overview tab as default landing page - Show company info: status, uptime, agent count, heartbeat status - Start/Stop company buttons (activate/deactivate all agent heartbeats) - Per-agent heartbeat controls: interval dropdown, start/stop buttons - Backend APIs: GET status, POST start/shutdown, PUT/POST agent heartbeat - Track startedAt timestamp for uptime calculation - Update CEO agent.md with mandatory 5-step startup workflow - Fix company nav to default to overview tab
-
- scaffoldNewAgent: create agent skeleton via AgentScaffold directly - depositTemplate: benchmark gating (≥95) + auto-deposit to templates/ - hireWithTraining: full flow (template lookup → scaffold fallback) - Company route: /hire uses hireWithTraining, new /deposit-template endpoint - E2E test: 69/69 passed (Phase 1 + Phase 2)
-
- CompanyService: CRUD (create/get/list/update/shutdown) - Agent Hiring Pipeline: template lookup → copy → context injection - Template registry (_registry.json) with CEO and qa-judge initial templates - resolveAgentDir(companyId, agentId) unified agent directory resolution - Company REST API routes (/api/company/*) - E2E test: 46/46 passed