• # Conflicts:
    #	system/agents/master/.claude/scheduled_tasks.json
    yibo authored
     
    Browse Dir »
  • …_DIR move, stray files
    
    - CLAUDE.md: document DevLoop subsystem (spec-first workflow, project root/git-vault,
      mock mode, L1 loop, unit layout, audit trail) and add missing test commands
    - server/routes/agent-chat.js, server/services/task-service.js: TASK_META_DIR moved
      from system/agents/.tasks to system/tasklog
    - system/agents/master/.claude/scheduled_tasks.json: scheduled task state update
    - remove stray memory/daily/2026-04-02.md and a garbled-filename artifact left under
      system/agents/digester-youtube-crawler/
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »
  • 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>
    yibo authored
     
    Browse Dir »
  • Adds server/services/graph-db.js (new data/graph.sqlite: system_agents,
    org_graph_nodes, org_graph_edges) and graph-seed-service.js, which scans
    system/agents/, system/templates/, and data/companies/*/company.json into
    seed rows without touching company-service.js's existing hire/copy path.
    
    Real repo data diverged from the design doc's original estimates (8 not 10
    global agents; 39 not 34 template dirs; system/agents/ and system/templates/
    turn out to share 6 ids describing the "same" agent from two different
    files) — documented in docs/todo/system-design/27-graph-agent-architecture.md
    section 7 for P1/P2 to resolve.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »

  • First successful real-CLI agent invocation. After REAL.1 (system-prompt
    injection) + REAL.2 (mtime-diff file detection) wired, the only remaining
    gate was Claude auth. Once CLAUDE_CODE_OAUTH_TOKEN was added to the
    project .env, scripts/real-pm-smoke.js completed cleanly:
    
      Wire-up status:
        ✓ process spawn
        ✓ stream chunks       (3)
        ✓ result text          (Claude returned "DONE")
        ✓ files written        (6: prd/index, feature-tree, user-flows,
                                  product/overview, assets/shell.{css,js})
        ✓ git commit           (8cb0493)
      5/5 checks passed · elapsed 163s
    
    PM output quality (real Claude, not mock):
    - valid <article data-doc="prd" data-rev="1"> + <section data-rev="1">
      structure per system prompt
    - nav links use correct relative paths across 4 chapters
    - pid (p-7gwlbl) embedded in HTML metadata
    - 中文 prose in the requested 克制 voice
    
    Spec-deviation confirmed (no MCP tool gateway yet — Claude only has
    built-in Read/Write/Bash):
    - ✗ agent-state/pm.json (no update_runtime_state tool)
    - ✗ agent-state/pm-todo.json (no write_todolist tool)
    - ✗ history/prd-rev-001.html (no archive_doc tool)
    - ✗ timeline.ndjson 'prd_drafted' event (no timeline_append tool)
    - ✓ core PRD site IS produced — sufficient to prove pipeline
    
    ──── code ────
    
    - scripts/real-pm-smoke.js — loads root .env via dotenv resolved
      from server/node_modules (script dir has no node_modules of its own).
    
    ──── ambient ────
    
    Files modified by user/linter while real-CLI work was in flight; merged
    without revert:
    - server/routes/devloop.js — new GET /:pid/requirements endpoint
    - server/services/devloop/path-resolver.js — listProjects() includes
      archived flag + helpers; supports project archive lifecycle
    - server/services/devloop/git-vault.js — commit() now accepts files[]
      to scope which paths the commit covers (avoids dragging linked-existing
      user's unstaged files into chore commits)
    - server/src/core/devloop/loop-controller.js — createProject uses
      explicit files:['project.json','timeline.ndjson'] for first chore
      commit (avoids same issue)
    - server/tests/devloop/path-resolver.test.js — coverage for archive/
      patch/hardDelete helpers
    - web/src/components/devloop/RequirementListSection.vue (new)
    - web/src/views/DevLoopNewRequirement.vue (new)
    - web/src/views/DevLoopDashboard.vue — mounts RequirementListSection
    - web/src/views/DevLoopProjects.vue — list page polish
    - web/src/router/index.js — adds /devloop/:pid/requirements/new route
    - web/src/components/devloop/DashboardHeader.vue — back link tweak
    
    Test results: 233/233 vitest pass (was 230 → +3 path-resolver cases).
    
    ──── ⚠ SECURITY NOTE ────
    
    .env is currently TRACKED in git (committed in b1a348b) even though
    .gitignore lists it. Existing committed contents include credentials for
    DOUBAO / FEISHU / GITHUB / GOOGLE / JWT. The CLAUDE_CODE_OAUTH_TOKEN +
    AZURE_OPENAI_API_KEY I just added to .env are NOT in this commit — they
    stay in your working tree only.
    
    Recommended follow-up (separate commit):
      git rm --cached .env
      git commit -m "chore: stop tracking .env (already gitignored)"
    And rotate every key that was in the previous committed .env.
    
    Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »
  • Two parallel pieces of plumbing — neither has been exercised end-to-end yet
    (real CLI gated on `claude /login`; Projects list view served alongside
    existing pages):
    
    ──── real-CLI wire-up (REAL.1 + REAL.2) ────
    
    LemonBoss now has a clean toggle between mock & real Claude CLI:
    
    - packages/acp-core/protocol/ClaudeCliProtocol.js
      * `options.systemPrompt` → `--append-system-prompt <prompt>` so each
        devloop agent receives its role-specific prompt.md without losing
        Claude's default tool-use conventions.
      * `options.maxBudgetUsd` → `--max-budget-usd` (note: only effective in
        `--print` mode; documented inline).
    
    - server/src/core/devloop/loop-controller.js
      * callAgent now branches on `opts.mock`:
        - mock (P1-P5 path, untouched): fixture sequence + `mock/files` event
        - real: read system/templates/{agent}/prompt.md, pass as systemPrompt,
          snapshot project file mtimes pre-call, diff post-call to compute
          `files_written` — no fixture, no mock/files needed.
      * `_snapshotMtimes(root)` helper walks the project tree (skipping
        .git / node_modules / .cache / .tmp) and returns Map<relPath,mtime>.
      * timeline event payload now carries `real: true` flag.
    
    - scripts/real-pm-smoke.js — minimal real-CLI sanity:
      spawns claude, injects PM prompt, prints which files were written +
      git commit sha. Hard timeout 5min. Single agent → expected spend
      $0.10-0.30 per run when authenticated.
    
    Current status: process spawn + system-prompt injection + stream-json
    flow all verified up to the `Not logged in · Please run /login` gate.
    Auth is the only remaining blocker for executing the real smoke.
    
    ──── project CRUD routes ────
    
    server/routes/devloop.js + server/services/devloop/path-resolver.js
    add the lifecycle pieces the Projects list view needs:
    
    - GET    /projects?include_archived=true   list w/ archive filter
    - PATCH  /projects/:pid                    edit name + idea_summary
    - DELETE /projects/:pid                    soft delete (archive)
    - DELETE /projects/:pid?hard=true          hard delete (rm -rf sandbox;
                                                unregister linked)
    - POST   /projects/:pid/restore            un-archive
    
    path-resolver exposes matching helpers: listProjects({includeArchived}),
    patchProjectMeta(pid,patch), hardDeleteProject(pid).
    
    ──── UI ────
    
    - web/src/views/DevLoopProjects.vue (320 lines, new)  — Projects list
    - web/src/router/index.js — adds `/devloop` → DevLoopProjects
    - web/src/components/devloop/DashboardHeader.vue — back-link now points
      to `/devloop` (project list) instead of `/company`.
    
    ──── housekeeping ────
    
    - CLAUDE.md / start.sh — start.sh now boots server/index.js (full route
      surface incl. /api/devloop) instead of the historical agent-server.js;
      docs updated to reflect this.
    
    ──── tests (+12) ────
    
    - server/tests/devloop/routes-crud.test.js — 12 cases:
      PATCH validation (4) · soft DELETE + list filter (4) · POST /restore
      (1) · hard DELETE (2) · GET /projects default behavior (1).
    
    Results:
    - phase0-verify .. phase5-verify: 8+7+7+6+9+9+7 all pass
    - vitest devloop+acp-core: 230/230 (was 218 → +12)
    
    Specs:
    - docs/prd/newfunction/_spec/arch-acp-bridge.md · Mock Mode
    - docs/prd/newfunction/_spec/plan-migration.md · "自举乐趣" (real path
      prep)
    
    Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »
  • First concrete code commit for DevLoop. Implements all 7 services that
    P0.A tools will depend on, per plan-migration P0.0.
    
    Services (server/services/devloop/, ~900 lines):
    - path-resolver.js   foundation — resolveProjectRoot + 12 derived paths;
                         sandbox + linked-new mode support; sensitive path
                         blacklist (with /tmp + os.tmpdir() exemptions);
                         ~/.devloop/linked-projects.json registry
    - doc-store.js       PRD/SDD multi-file site IO + cheerio validateHTML +
                         validateUnitsSchema + canonical-JSON hashContract
                         + automatic history/ archival
    - unit-registry.js   FSM (M-2: pending→coding→testing→passed/failed/blocked);
                         l2GateOpen; diffUnits (added/changed/removed);
                         reset semantics for L2 + L3
    - bug-tracker.js     bugs.ndjson append-only + dedupKey + P-9 transition
                         state machine + list/stats/history aggregation
    - timeline-logger.js M-13 ProcessTimeline — append/read/tail;
                         summary truncate to 280; payload oversize → ref form
    - changelog-writer.js M-15 — append/read/latest for prd/sdd/units revs
    - sse-broker.js      per-pid pub/sub + 25s heartbeat + stream.log replay
                         via Last-Event-ID; emit returns monotonic id
    - git-vault.js       spawn-git wrapper — init/commit/tag/log/diff/status/
                         resetWorkingTree/revert/archive; per-pid mutex;
                         nothing-to-commit returns {skipped:true} not throw
    
    Tests (server/tests/devloop/, 71 passing):
    - path-resolver.test.js  (17 cases) — sensitive path · sandbox alloc · linked-new
    - doc-store.test.js      (12 cases) — validateHTML · validateUnitsSchema · hashContract
    - unit-registry.test.js  (15 cases) — FSM transitions · l2GateOpen · diffUnits
    - bug-tracker.test.js    (10 cases) — open dedup · transition · list filter · history
    - timeline-logger.test.js (9 cases) — append/read/tail · summary truncate · oversize
    - git-vault.test.js      (8 cases)  — init idempotent · commit · tag · status · archive
    
    vitest config (`globals: true`) means tests use describe/it/expect globally,
    no `require('vitest')` needed (and would fail under vitest 4).
    
    Dep added: cheerio@^1.0.0 (used by docStore.validateHTML; HTML parsing).
    
    Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
    yibo authored
     
    Browse Dir »

  • Layer 1 (P0): Per-agent session mutex
    - heartbeat-service.js: skip heartbeat if previous session still active (30min safety valve)
    - agent-chat.js: reject concurrent /chat requests for same agentId with different convId (429)
      Multi-turn conversations on same convId still work normally
    
    Layer 2 (P1): Advisory file lock utility
    - server/utils/file-lock.js: O_EXCL-based .lock file mechanism
      Auto-cleanup stale locks, graceful degradation on timeout
    
    Root cause: HeartbeatService creates new convId per heartbeat, spawning
    independent Claude CLI processes that concurrently write config.json and
    SKILL.md, causing rollbacks and FRAUDULENT scores.
    yibo authored
     
    Browse Dir »






  • - 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 运行态数据
    yibo authored
     
    Browse Dir »
  • - Add task transition CLI and API for Context Flush & Hot Swap
    - Enforce strict bash-only tool policy for Base Agents
    - Inject  into system prompt for self-retrying loop
    - Implement Goal node updates on transitions
    - Add P0 Execute pre-approval block (Human-in-the-loop)
    - Track token metrics to billing.log
    yibo authored
     
    Browse Dir »

  • yibo authored
     
    Browse Dir »
  • Yi Bo authored
     
    Browse Dir »
  • - 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
    Yi Bo authored
     
    Browse Dir »
  • Phase 3 反馈进化闭环:
    
    1. DataSourceService (运营数据接入):
       - 新增 datasource-service.js: 抽象适配器模式
       - MockAdapter: 模拟运营数据 (开发调试)
       - FileAdapter: 从本地 JSON 文件读取数据
       - 可扩展: 预留 WechatAdapter/DouyinAdapter 接口
       - API: GET /data/metrics, /data/trending, /data/attribution
    
    2. 归因分析引擎:
       - analyzeAttribution(): 自动对比两个时间段指标
       - 计算变化百分比和趋势方向
       - 自动提取显著变化维度并生成洞察文本
       - API: GET /api/company/:id/data/attribution
    
    3. Know-how 自动更新 (memory-service.js):
       - 新增 updateAgentKnowhow() 函数
       - autoReflect 产出的 patterns/lessons 自动写回 SKILL.md
       - 在 SKILL.md 末尾维护'经验教训(自动沉淀)'段落
       - 保留最近 20 条记录,自动清理过旧条目
       - 闭环: Agent执行 → 反思 → 经验写入SKILL → 下次读取改进行为
    yibo authored
     
    Browse Dir »
  • Phase 2 改进:
    
    1. 工作日历系统 (ScheduleService):
       - 新增 schedule-service.js: 公司级日程管理
       - 支持按小时调度、按周几过滤、时区感知
       - 心跳触发时自动检查到期 slots 并触发 Agent
       - 执行去重(同日同 slot 不重复触发)
       - CRUD API: GET/POST/PUT/DELETE /api/company/:id/schedule/slots
       - CLI: schedule add / schedule list
    
    2. 告警通道 (Alert Channel):
       - Pipeline 步骤超时自动告警 Master Agent
       - 心跳异常自动告警 Master Agent
       - _sendAlertToMaster() 统一告警接口
    
    3. CEO → Pipeline 自动生成:
       - CEO 模板从 3 步升级为 5 步工作流
       - 新增 Step 2: Pipeline JSON 设计(含 loop/cron/steps 结构)
       - 新增 Step 4: OKR 创建
       - Pipeline 设计输出为 CTO 搭建流水线的蓝图
    
    4. Master 晨会日报:
       - 每天 08:00 自动生成全公司运营日报
       - 包含公司状态、Pipeline 运行、OKR 进度、Agent 活跃度
       - 自动推送给 Master Agent
       - 防重复机制(每天只生成一次)
    
    5. Pipeline 驳回信息注入:
       - 驳回步骤被心跳重新触发时,__rejection 信息注入 prompt
       - 让 Agent 知道被驳回的原因和重做次数
       - 替换原有 curl 汇报指令为 task report CLI
    yibo authored
     
    Browse Dir »
  • Phase 1 核心改进:
    
    1. Pipeline↔Task 系统打通:
       - task/report 回调自动推进 Pipeline 步骤
       - findActiveRunStep() 按 agentId 定位活跃步骤
       - 扫描所有公司的 Pipeline Runs 实现跨公司桥接
    
    2. Pipeline 循环执行:
       - 新增 pipeline.loop 配置项
       - Run 完成后自动启动下一轮 (最大 maxLoops=365)
       - loopCount 计数器追踪循环轮次
    
    3. COO 质量门控:
       - 新增 rejectStep() 驳回方法,含驳回历史记录
       - POST /api/agent/task/reject API 端点
       - POST /api/company/:id/pipelines/runs/:runId/reject 路由
       - node bin/lemon.js task reject CLI 命令
       - 驳回后自动唤醒 Agent 重做,注入改进意见
    
    4. COO 模板全面强化:
       - agent.md: 4维度评分体系、质量审核流程图
       - soul.md: 性格、价值观、决策原则
       - tools.md: 新增 task reject 核心工具
       - heartbeat.md: 结构化巡检清单 + 升级规则
    yibo authored
     
    Browse Dir »
  • yibo authored
     
    Browse Dir »
  • …ter Agent cognitive auto-recovery loop
    
    - Refactored CompanyDashboard into read-only Observer UI
    - Enforced strict companyId:roleId namespacing across Node APIs and AgentManager
    - Added dynamic <env_status> injection to PromptBuilder for robust context
    - Introduced bin/lemon.js CLI for structured LLM tool execution
    - Implemented in-stream error interceptors for implicit silent retry loop
    yibo authored
     
    Browse Dir »

  • - CompanyHeartbeatService: company-level heartbeat with timer registration
    - Auto-trigger: cron-based pipeline scheduling (intervalHours)
    - Active run driving: dispatch tasks to agents, timeout detection
    - CEO heartbeat: periodic company status check
    - Pipeline cron field support in definitions
    - Registered in server startup alongside agent heartbeat
    - E2E test: 113/113 passed (all phases + autonomous loop)
    yibo authored
     
    Browse Dir »
  • - PipelineService: define pipelines with ordered agent-assigned steps
    - Run lifecycle: start → markStepStarted → advanceStep → complete
    - Step output automatically flows as next step input
    - Pipeline CRUD + Run management REST API routes
    - E2E test: 106/106 passed (Phase 1 + 2 + 3 + 4)
    yibo authored
     
    Browse Dir »
  • - GoalsService refactored: constructor accepts optional companyId
      - With companyId: goals stored in data/{companyId}/goals/
      - Without: backward-compatible data/goals/ (global)
    - Company Goals REST API: full OKR CRUD under /api/company/:id/goals
    - OKR isolation verified: different companies have independent goal spaces
    - E2E test: 81/81 passed (Phase 1 + 2 + 3)
    yibo authored
     
    Browse Dir »
  • - 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)
    yibo authored
     
    Browse Dir »
  • - 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
    yibo authored
     
    Browse Dir »
  • - Extracted HeartbeatService to periodically wake up agents flagged with 'heartbeat.enabled'
    - Sends a silent [SYSTEM HEARTBEAT] message to trigger self-checks (e.g. OKR state validation)
    - Automatically integrated service dispatch hook in server startup sequence
    - Configured qa-judge to run autonomous heartbeat every 10 min
    yibo authored
     
    Browse Dir »
  • Yi Bo authored
     
    Browse Dir »
  • …ze Chinese keyword extraction
    
    - Fix: The long trailing history in todo.md drowned out the actual current task keywords because English tokens (e.g. TASK, P2, from) padded the 30-keyword limit beforehand.
    - Updated extractKeywords: Process Chinese characters first as they carry more weight for NLP context intent.
    - Added userMessage prefix to searchText in buildSystemPrompt so newly dispatched tasks dominate keyword extraction.
    - End-to-end e2e test created and passed (27/27 asserts passed)
    yibo authored
     
    Browse Dir »
  • Phase 3 features:
    - autoReflect: auto-trigger on complex conversations (toolCount>=3 or duration>=60s)
      - Extracts patterns from successful conversations
      - Extracts lessons from failed conversations
      - Auto-solidifies cerebellum plans from 5+ tool-call successes
      - Writes reflection logs to memory/reflections/
      - Updates memory.md 'verified patterns' and 'lessons learned' sections
    - consolidateMemory: merge short-term sessions older than 7 days into long-term/
      - Extracts frequent keywords across merged sessions
      - Writes consolidated summary to long-term/consolidate-{date}.md
      - Updates long-term/patterns.md with high-frequency patterns
    - generateDailyReport: aggregate today's sessions and reflections into daily/{date}.md
    - API endpoints: POST /:agentId/memory/consolidate, POST /:agentId/memory/daily-report
    
    Test results: 16/16 passed (Phase 3 test suite)
    yibo authored
     
    Browse Dir »
  • - Hippocampus keyword matching engine (extractKeywords + score)
    - Cerebellum plan storage (saveCerebellumPlan)
    - Auto-sync hippocampus-index.json + hippocampus.md
    - POST /:agentId/memory/cerebellum API endpoint
    - buildSystemPrompt injects matched plans from hippocampus
    - Use count & lastUsed tracking on plan access
    - Chinese n-gram + English word tokenizer with stop words
    - Fix: score formula uses entry keyword count as denominator
    - Fix: useCount updates original index entry not spread copy
    - Verified: OKR plan matched + injected into CEO prompt
    yibo authored
     
    Browse Dir »
  • - New: server/services/memory-service.js
      - saveSessionSummary(): auto-save session summary to short-term/
      - loadRecentMemory(): inject last 5 sessions into system prompt
      - appendToMemoryMd(): auto-append key facts with size control
    - Modified: server/routes/agent-chat.js
      - buildSystemPrompt() now loads recent short-term sessions
      - Conversation completion triggers auto memory save
    - Verified: CEO Agent conversation creates session file + updates memory.md
    yibo authored
     
    Browse Dir »