@jaggerxtrm/specialists 3.7.1 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -9
- package/config/mandatory-rules/README.md +113 -0
- package/config/mandatory-rules/gitnexus-required.md +12 -1
- package/config/mandatory-rules/serena-cheatsheet.md +41 -0
- package/config/skills/specialists-creator/SKILL.md +6 -32
- package/config/skills/specialists-creator/scripts/audit-spec-uniformity.mjs +86 -0
- package/config/skills/specialists-creator/scripts/scaffold-specialist.ts +1 -6
- package/config/skills/update-specialists/SKILL.md +83 -8
- package/config/skills/using-specialists/SKILL.md +13 -0
- package/config/skills/using-specialists-v2/SKILL.md +639 -0
- package/config/specialists/debugger.specialist.json +7 -9
- package/config/specialists/executor.specialist.json +5 -6
- package/config/specialists/explorer.specialist.json +3 -7
- package/config/specialists/memory-processor.specialist.json +8 -9
- package/config/specialists/node-coordinator.specialist.json +1 -5
- package/config/specialists/overthinker.specialist.json +7 -13
- package/config/specialists/planner.specialist.json +12 -12
- package/config/specialists/researcher.specialist.json +9 -14
- package/config/specialists/reviewer.specialist.json +8 -8
- package/config/specialists/specialists-creator.specialist.json +7 -2
- package/config/specialists/sync-docs.specialist.json +7 -11
- package/config/specialists/test-runner.specialist.json +4 -13
- package/config/specialists/xt-merge.specialist.json +3 -5
- package/dist/index.js +3066 -1368
- package/dist/lib.js +13219 -0
- package/dist/types/cli/attach.d.ts +2 -0
- package/dist/types/cli/attach.d.ts.map +1 -0
- package/dist/types/cli/clean.d.ts +2 -0
- package/dist/types/cli/clean.d.ts.map +1 -0
- package/dist/types/cli/config.d.ts +2 -0
- package/dist/types/cli/config.d.ts.map +1 -0
- package/dist/types/cli/db.d.ts +2 -0
- package/dist/types/cli/db.d.ts.map +1 -0
- package/dist/types/cli/doctor.d.ts +15 -0
- package/dist/types/cli/doctor.d.ts.map +1 -0
- package/dist/types/cli/edit.d.ts +2 -0
- package/dist/types/cli/edit.d.ts.map +1 -0
- package/dist/types/cli/end.d.ts +2 -0
- package/dist/types/cli/end.d.ts.map +1 -0
- package/dist/types/cli/epic.d.ts +8 -0
- package/dist/types/cli/epic.d.ts.map +1 -0
- package/dist/types/cli/feed.d.ts +19 -0
- package/dist/types/cli/feed.d.ts.map +1 -0
- package/dist/types/cli/follow-up.d.ts +2 -0
- package/dist/types/cli/follow-up.d.ts.map +1 -0
- package/dist/types/cli/format-helpers.d.ts +108 -0
- package/dist/types/cli/format-helpers.d.ts.map +1 -0
- package/dist/types/cli/help.d.ts +2 -0
- package/dist/types/cli/help.d.ts.map +1 -0
- package/dist/types/cli/init.d.ts +10 -0
- package/dist/types/cli/init.d.ts.map +1 -0
- package/dist/types/cli/install.d.ts +2 -0
- package/dist/types/cli/install.d.ts.map +1 -0
- package/dist/types/cli/list-rules.d.ts +2 -0
- package/dist/types/cli/list-rules.d.ts.map +1 -0
- package/dist/types/cli/list.d.ts +13 -0
- package/dist/types/cli/list.d.ts.map +1 -0
- package/dist/types/cli/memory.d.ts +2 -0
- package/dist/types/cli/memory.d.ts.map +1 -0
- package/dist/types/cli/merge.d.ts +79 -0
- package/dist/types/cli/merge.d.ts.map +1 -0
- package/dist/types/cli/models.d.ts +2 -0
- package/dist/types/cli/models.d.ts.map +1 -0
- package/dist/types/cli/node.d.ts +2 -0
- package/dist/types/cli/node.d.ts.map +1 -0
- package/dist/types/cli/poll.d.ts +25 -0
- package/dist/types/cli/poll.d.ts.map +1 -0
- package/dist/types/cli/ps.d.ts +2 -0
- package/dist/types/cli/ps.d.ts.map +1 -0
- package/dist/types/cli/quickstart.d.ts +2 -0
- package/dist/types/cli/quickstart.d.ts.map +1 -0
- package/dist/types/cli/result.d.ts +2 -0
- package/dist/types/cli/result.d.ts.map +1 -0
- package/dist/types/cli/resume.d.ts +2 -0
- package/dist/types/cli/resume.d.ts.map +1 -0
- package/dist/types/cli/run.d.ts +2 -0
- package/dist/types/cli/run.d.ts.map +1 -0
- package/dist/types/cli/script.d.ts +23 -0
- package/dist/types/cli/script.d.ts.map +1 -0
- package/dist/types/cli/serve.d.ts +17 -0
- package/dist/types/cli/serve.d.ts.map +1 -0
- package/dist/types/cli/setup.d.ts +2 -0
- package/dist/types/cli/setup.d.ts.map +1 -0
- package/dist/types/cli/status.d.ts +4 -0
- package/dist/types/cli/status.d.ts.map +1 -0
- package/dist/types/cli/steer.d.ts +2 -0
- package/dist/types/cli/steer.d.ts.map +1 -0
- package/dist/types/cli/stop.d.ts +2 -0
- package/dist/types/cli/stop.d.ts.map +1 -0
- package/dist/types/cli/tmux-utils.d.ts +23 -0
- package/dist/types/cli/tmux-utils.d.ts.map +1 -0
- package/dist/types/cli/validate.d.ts +11 -0
- package/dist/types/cli/validate.d.ts.map +1 -0
- package/dist/types/cli/version.d.ts +2 -0
- package/dist/types/cli/version.d.ts.map +1 -0
- package/dist/types/cli/view.d.ts +2 -0
- package/dist/types/cli/view.d.ts.map +1 -0
- package/dist/types/constants.d.ts +140 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib.d.ts +5 -0
- package/dist/types/lib.d.ts.map +1 -0
- package/dist/types/pi/backendMap.d.ts +3 -0
- package/dist/types/pi/backendMap.d.ts.map +1 -0
- package/dist/types/pi/session.d.ts +209 -0
- package/dist/types/pi/session.d.ts.map +1 -0
- package/dist/types/server.d.ts +10 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/specialist/beads.d.ts +60 -0
- package/dist/types/specialist/beads.d.ts.map +1 -0
- package/dist/types/specialist/chain-identity.d.ts +18 -0
- package/dist/types/specialist/chain-identity.d.ts.map +1 -0
- package/dist/types/specialist/epic-lifecycle.d.ts +57 -0
- package/dist/types/specialist/epic-lifecycle.d.ts.map +1 -0
- package/dist/types/specialist/epic-readiness.d.ts +55 -0
- package/dist/types/specialist/epic-readiness.d.ts.map +1 -0
- package/dist/types/specialist/epic-reconciler.d.ts +35 -0
- package/dist/types/specialist/epic-reconciler.d.ts.map +1 -0
- package/dist/types/specialist/hooks.d.ts +44 -0
- package/dist/types/specialist/hooks.d.ts.map +1 -0
- package/dist/types/specialist/job-control.d.ts +29 -0
- package/dist/types/specialist/job-control.d.ts.map +1 -0
- package/dist/types/specialist/job-file-output.d.ts +4 -0
- package/dist/types/specialist/job-file-output.d.ts.map +1 -0
- package/dist/types/specialist/job-root.d.ts +21 -0
- package/dist/types/specialist/job-root.d.ts.map +1 -0
- package/dist/types/specialist/jobRegistry.d.ts +69 -0
- package/dist/types/specialist/jobRegistry.d.ts.map +1 -0
- package/dist/types/specialist/json-output.d.ts +2 -0
- package/dist/types/specialist/json-output.d.ts.map +1 -0
- package/dist/types/specialist/loader.d.ts +48 -0
- package/dist/types/specialist/loader.d.ts.map +1 -0
- package/dist/types/specialist/mandatory-rules.d.ts +41 -0
- package/dist/types/specialist/mandatory-rules.d.ts.map +1 -0
- package/dist/types/specialist/memory-retrieval.d.ts +34 -0
- package/dist/types/specialist/memory-retrieval.d.ts.map +1 -0
- package/dist/types/specialist/model-display.d.ts +4 -0
- package/dist/types/specialist/model-display.d.ts.map +1 -0
- package/dist/types/specialist/node-contract.d.ts +343 -0
- package/dist/types/specialist/node-contract.d.ts.map +1 -0
- package/dist/types/specialist/node-resolve.d.ts +5 -0
- package/dist/types/specialist/node-resolve.d.ts.map +1 -0
- package/dist/types/specialist/node-supervisor.d.ts +198 -0
- package/dist/types/specialist/node-supervisor.d.ts.map +1 -0
- package/dist/types/specialist/observability-db.d.ts +19 -0
- package/dist/types/specialist/observability-db.d.ts.map +1 -0
- package/dist/types/specialist/observability-sqlite.d.ts +218 -0
- package/dist/types/specialist/observability-sqlite.d.ts.map +1 -0
- package/dist/types/specialist/pipeline.d.ts +23 -0
- package/dist/types/specialist/pipeline.d.ts.map +1 -0
- package/dist/types/specialist/process-liveness.d.ts +2 -0
- package/dist/types/specialist/process-liveness.d.ts.map +1 -0
- package/dist/types/specialist/runner.d.ts +98 -0
- package/dist/types/specialist/runner.d.ts.map +1 -0
- package/dist/types/specialist/schema.d.ts +2875 -0
- package/dist/types/specialist/schema.d.ts.map +1 -0
- package/dist/types/specialist/script-runner.d.ts +47 -0
- package/dist/types/specialist/script-runner.d.ts.map +1 -0
- package/dist/types/specialist/supervisor.d.ts +142 -0
- package/dist/types/specialist/supervisor.d.ts.map +1 -0
- package/dist/types/specialist/templateEngine.d.ts +2 -0
- package/dist/types/specialist/templateEngine.d.ts.map +1 -0
- package/dist/types/specialist/timeline-events.d.ts +563 -0
- package/dist/types/specialist/timeline-events.d.ts.map +1 -0
- package/dist/types/specialist/timeline-query.d.ts +129 -0
- package/dist/types/specialist/timeline-query.d.ts.map +1 -0
- package/dist/types/specialist/worktree-gc.d.ts +24 -0
- package/dist/types/specialist/worktree-gc.d.ts.map +1 -0
- package/dist/types/specialist/worktree.d.ts +69 -0
- package/dist/types/specialist/worktree.d.ts.map +1 -0
- package/dist/types/tools/specialist/feed_specialist.tool.d.ts +51 -0
- package/dist/types/tools/specialist/feed_specialist.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/list_specialists.tool.d.ts +28 -0
- package/dist/types/tools/specialist/list_specialists.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/resume_specialist.tool.d.ts +46 -0
- package/dist/types/tools/specialist/resume_specialist.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/specialist_init.tool.d.ts +26 -0
- package/dist/types/tools/specialist/specialist_init.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/specialist_status.tool.d.ts +33 -0
- package/dist/types/tools/specialist/specialist_status.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/steer_specialist.tool.d.ts +38 -0
- package/dist/types/tools/specialist/steer_specialist.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/stop_specialist.tool.d.ts +31 -0
- package/dist/types/tools/specialist/stop_specialist.tool.d.ts.map +1 -0
- package/dist/types/tools/specialist/use_specialist.tool.d.ts +93 -0
- package/dist/types/tools/specialist/use_specialist.tool.d.ts.map +1 -0
- package/dist/types/utils/circuitBreaker.d.ts +19 -0
- package/dist/types/utils/circuitBreaker.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +11 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/package.json +13 -2
- package/config/specialists/parallel-review.specialist.json +0 -65
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants and configuration for Specialists MCP server
|
|
3
|
+
*/
|
|
4
|
+
export declare const LOG_PREFIX = "[specialists]";
|
|
5
|
+
export declare const AI_MODELS: {
|
|
6
|
+
readonly GEMINI: {
|
|
7
|
+
readonly PRIMARY: "gemini-3-pro-preview";
|
|
8
|
+
readonly FLASH: "gemini-3-flash-preview";
|
|
9
|
+
readonly PRO_2_5: "gemini-2.5-pro";
|
|
10
|
+
readonly FLASH_2_5: "gemini-2.5-flash";
|
|
11
|
+
readonly FLASH_LITE: "gemini-2.5-flash-lite";
|
|
12
|
+
};
|
|
13
|
+
readonly CURSOR_AGENT: {
|
|
14
|
+
readonly GPT_5_1: "gpt-5.1";
|
|
15
|
+
readonly GPT_5: "gpt-5";
|
|
16
|
+
readonly COMPOSER_1: "composer-1";
|
|
17
|
+
readonly SONNET_4_5: "sonnet-4.5";
|
|
18
|
+
readonly HAIKU_5: "haiku-5";
|
|
19
|
+
readonly DEEPSEEK_V3: "deepseek-v3";
|
|
20
|
+
};
|
|
21
|
+
readonly DROID: {
|
|
22
|
+
readonly PRIMARY: "glm-4.6";
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export declare const CLI: {
|
|
26
|
+
readonly COMMANDS: {
|
|
27
|
+
readonly GEMINI: "gemini";
|
|
28
|
+
readonly CURSOR_AGENT: "cursor-agent";
|
|
29
|
+
readonly DROID: "droid";
|
|
30
|
+
readonly ECHO: "echo";
|
|
31
|
+
};
|
|
32
|
+
readonly FLAGS: {
|
|
33
|
+
readonly GEMINI: {
|
|
34
|
+
readonly SANDBOX: "-s";
|
|
35
|
+
readonly HELP: "-help";
|
|
36
|
+
readonly MODEL: "--model";
|
|
37
|
+
};
|
|
38
|
+
readonly CURSOR: {
|
|
39
|
+
readonly PROMPT: "-p";
|
|
40
|
+
readonly OUTPUT: "--output-format";
|
|
41
|
+
readonly PRINT: "--print";
|
|
42
|
+
readonly FORCE: "--force";
|
|
43
|
+
readonly FILE: "--file";
|
|
44
|
+
};
|
|
45
|
+
readonly DROID: {
|
|
46
|
+
readonly EXEC: "exec";
|
|
47
|
+
readonly AUTO: "--auto";
|
|
48
|
+
readonly OUTPUT: "--output-format";
|
|
49
|
+
readonly SESSION: "--session-id";
|
|
50
|
+
readonly SKIP_PERMISSIONS: "--skip-permissions-unsafe";
|
|
51
|
+
readonly FILE: "--file";
|
|
52
|
+
readonly CWD: "--cwd";
|
|
53
|
+
};
|
|
54
|
+
readonly ROVODEV: {
|
|
55
|
+
readonly RUN: "run";
|
|
56
|
+
readonly YOLO: "--yolo";
|
|
57
|
+
readonly RESTORE: "--restore";
|
|
58
|
+
readonly CONFIG: "--config-file";
|
|
59
|
+
};
|
|
60
|
+
readonly QWEN: {
|
|
61
|
+
readonly SANDBOX: "-s";
|
|
62
|
+
readonly YOLO: "-y";
|
|
63
|
+
readonly OUTPUT: "-o";
|
|
64
|
+
readonly INTERACTIVE: "-i";
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
export declare const ERROR_MESSAGES: {
|
|
69
|
+
readonly NO_PROMPT_PROVIDED: "No prompt provided. Please include a prompt in your request.";
|
|
70
|
+
readonly TOOL_NOT_FOUND: "Tool not found in registry";
|
|
71
|
+
readonly INVALID_ARGUMENTS: "Invalid tool arguments";
|
|
72
|
+
readonly EXECUTION_FAILED: "Tool execution failed";
|
|
73
|
+
readonly QUOTA_EXCEEDED: "Quota exceeded for primary model, attempting fallback...";
|
|
74
|
+
readonly VALIDATION_FAILED: "Tool response validation failed";
|
|
75
|
+
};
|
|
76
|
+
export declare const STATUS_MESSAGES: {
|
|
77
|
+
readonly THINKING: "🤔 Thinking...";
|
|
78
|
+
readonly PROCESSING: "⚙️ Processing...";
|
|
79
|
+
readonly SEARCHING: "🔍 Searching...";
|
|
80
|
+
readonly EXECUTING: "🚀 Executing...";
|
|
81
|
+
readonly COMPLETED: "✅ Analysis complete";
|
|
82
|
+
readonly FAILED: "❌ Analysis failed";
|
|
83
|
+
readonly STARTING_ANALYSIS: "🚀 Starting analysis...";
|
|
84
|
+
};
|
|
85
|
+
export declare const MCP_CONFIG: {
|
|
86
|
+
readonly SERVER_NAME: "specialists";
|
|
87
|
+
readonly VERSION: "1.0.0";
|
|
88
|
+
readonly CAPABILITIES: {
|
|
89
|
+
readonly tools: {};
|
|
90
|
+
readonly prompts: {};
|
|
91
|
+
readonly logging: {};
|
|
92
|
+
};
|
|
93
|
+
readonly KEEP_ALIVE_INTERVAL: 25000;
|
|
94
|
+
};
|
|
95
|
+
export declare const APPROVAL_MODES: {
|
|
96
|
+
readonly PLAN: "plan";
|
|
97
|
+
readonly DEFAULT: "default";
|
|
98
|
+
readonly AUTO_EDIT: "auto-edit";
|
|
99
|
+
readonly YOLO: "yolo";
|
|
100
|
+
};
|
|
101
|
+
export declare const BACKENDS: {
|
|
102
|
+
readonly GEMINI: "ask-gemini";
|
|
103
|
+
readonly CURSOR: "ask-cursor";
|
|
104
|
+
readonly DROID: "ask-droid";
|
|
105
|
+
readonly ROVODEV: "ask-rovodev";
|
|
106
|
+
readonly QWEN: "ask-qwen";
|
|
107
|
+
};
|
|
108
|
+
export { BACKENDS as default };
|
|
109
|
+
export type GeminiModel = typeof AI_MODELS.GEMINI[keyof typeof AI_MODELS.GEMINI];
|
|
110
|
+
export type ApprovalMode = typeof APPROVAL_MODES[keyof typeof APPROVAL_MODES];
|
|
111
|
+
export type BackendType = typeof BACKENDS[keyof typeof BACKENDS];
|
|
112
|
+
/**
|
|
113
|
+
* Agent role descriptions and configurations
|
|
114
|
+
*
|
|
115
|
+
* Defines the specialization and preferred backend for each agent type
|
|
116
|
+
*/
|
|
117
|
+
export declare const AGENT_ROLES: {
|
|
118
|
+
readonly ARCHITECT: {
|
|
119
|
+
/**
|
|
120
|
+
* AI backend used for execution (e.g., "gemini", "cursor-agent", "droid")
|
|
121
|
+
*/
|
|
122
|
+
readonly backend: "ask-gemini";
|
|
123
|
+
readonly specialization: "High-level system design, architecture analysis, and strategic planning";
|
|
124
|
+
readonly description: "Uses Gemini for deep architectural reasoning, security analysis, and long-term design decisions";
|
|
125
|
+
};
|
|
126
|
+
readonly IMPLEMENTER: {
|
|
127
|
+
readonly name: "ImplementerAgent";
|
|
128
|
+
readonly backend: "ask-droid";
|
|
129
|
+
readonly fallbackBackend: undefined;
|
|
130
|
+
readonly specialization: "Precise code implementation with production-quality standards";
|
|
131
|
+
readonly description: "Uses Droid (GLM-4.6) for autonomous agentic tasks and implementation";
|
|
132
|
+
};
|
|
133
|
+
readonly TESTER: {
|
|
134
|
+
readonly name: "TesterAgent";
|
|
135
|
+
readonly backend: "ask-cursor";
|
|
136
|
+
readonly specialization: "Fast test generation and validation";
|
|
137
|
+
readonly description: "Uses Cursor Agent (Sonnet 4.5) for rapid test case generation and validation";
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAE1C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;CAmBZ,CAAC;AAEX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CN,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;CAQlB,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAGX,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAC9E,MAAM,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,WAAW;;QAEpB;;WAEG;;;;;;;;;;;;;;;;;;CAkBG,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Specialists MCP Server — entry point
|
|
4
|
+
* Subcommands: install, version, list, view, models, init, db, validate, edit, config, run,
|
|
5
|
+
* status, ps, result, feed, poll, clean, merge, epic, end, stop, attach, quickstart, serve, script, help
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { runScriptSpecialist as runScript, } from './specialist/script-runner.js';
|
|
2
|
+
export type { ScriptGenerateRequest, ScriptGenerateResult, ScriptGenerateSuccess, ScriptGenerateFailure, ScriptSpecialistErrorType, ScriptRunnerOptions, } from './specialist/script-runner.js';
|
|
3
|
+
export { SpecialistLoader } from './specialist/loader.js';
|
|
4
|
+
export type { Specialist } from './specialist/schema.js';
|
|
5
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/lib.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,mBAAmB,IAAI,SAAS,GACjC,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backendMap.d.ts","sourceRoot":"","sources":["../../../src/pi/backendMap.ts"],"names":[],"mappings":"AAcA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CASvD"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
export declare class SessionKilledError extends Error {
|
|
2
|
+
constructor();
|
|
3
|
+
}
|
|
4
|
+
export declare class StallTimeoutError extends Error {
|
|
5
|
+
constructor(timeoutMs: number);
|
|
6
|
+
}
|
|
7
|
+
export interface AgentSessionMeta {
|
|
8
|
+
backend: string;
|
|
9
|
+
model: string;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
startedAt: Date;
|
|
12
|
+
}
|
|
13
|
+
export interface SessionTokenUsage {
|
|
14
|
+
input_tokens?: number;
|
|
15
|
+
output_tokens?: number;
|
|
16
|
+
cache_creation_tokens?: number;
|
|
17
|
+
cache_read_tokens?: number;
|
|
18
|
+
total_tokens?: number;
|
|
19
|
+
cost_usd?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface SessionRunMetrics {
|
|
22
|
+
token_usage?: SessionTokenUsage;
|
|
23
|
+
finish_reason?: string;
|
|
24
|
+
exit_reason?: string;
|
|
25
|
+
turns?: number;
|
|
26
|
+
tool_calls?: number;
|
|
27
|
+
tool_call_names?: string[];
|
|
28
|
+
auto_compactions?: number;
|
|
29
|
+
auto_retries?: number;
|
|
30
|
+
api_error?: string;
|
|
31
|
+
}
|
|
32
|
+
export type SessionMetricEvent = {
|
|
33
|
+
type: 'token_usage';
|
|
34
|
+
token_usage: SessionTokenUsage;
|
|
35
|
+
source: 'message_done' | 'turn_end' | 'agent_end';
|
|
36
|
+
} | {
|
|
37
|
+
type: 'finish_reason';
|
|
38
|
+
finish_reason: string;
|
|
39
|
+
source: 'message_done' | 'turn_end' | 'agent_end';
|
|
40
|
+
} | {
|
|
41
|
+
type: 'turn_summary';
|
|
42
|
+
turn_index: number;
|
|
43
|
+
token_usage?: SessionTokenUsage;
|
|
44
|
+
finish_reason?: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'compaction';
|
|
47
|
+
phase: 'start' | 'end';
|
|
48
|
+
tokensBefore?: number;
|
|
49
|
+
summary?: string;
|
|
50
|
+
firstKeptEntryId?: string;
|
|
51
|
+
} | {
|
|
52
|
+
type: 'retry';
|
|
53
|
+
phase: 'start' | 'end';
|
|
54
|
+
attempt?: number;
|
|
55
|
+
maxAttempts?: number;
|
|
56
|
+
delayMs?: number;
|
|
57
|
+
errorMessage?: string;
|
|
58
|
+
} | {
|
|
59
|
+
type: 'model_change';
|
|
60
|
+
action: 'set_model' | 'cycle_model';
|
|
61
|
+
model?: string;
|
|
62
|
+
previousModel?: string;
|
|
63
|
+
} | {
|
|
64
|
+
type: 'extension_error';
|
|
65
|
+
extension?: string;
|
|
66
|
+
errorMessage?: string;
|
|
67
|
+
} | {
|
|
68
|
+
type: 'api_error';
|
|
69
|
+
source: 'rpc' | 'stderr';
|
|
70
|
+
errorMessage: string;
|
|
71
|
+
};
|
|
72
|
+
export interface PiSessionOptions {
|
|
73
|
+
model: string;
|
|
74
|
+
systemPrompt?: string;
|
|
75
|
+
/** Absolute path boundary for write-side tools; undefined disables enforcement */
|
|
76
|
+
worktreeBoundary?: string;
|
|
77
|
+
/** Permission level from specialist YAML — controls which pi tools are enabled */
|
|
78
|
+
permissionLevel?: string;
|
|
79
|
+
/** Skill files loaded via pi --skill (injected into system prompt natively) */
|
|
80
|
+
skillPaths?: string[];
|
|
81
|
+
/** Thinking level passed as pi --thinking <level> */
|
|
82
|
+
thinkingLevel?: string;
|
|
83
|
+
/** Working directory for the pi process — defaults to process.cwd() if not set */
|
|
84
|
+
cwd?: string;
|
|
85
|
+
/** Extra environment variables injected into the pi process */
|
|
86
|
+
env?: Record<string, string>;
|
|
87
|
+
/** npm extension package names to skip when assembling pi -e args */
|
|
88
|
+
excludeExtensions?: string[];
|
|
89
|
+
/** Called with each text token as it arrives */
|
|
90
|
+
onToken?: (delta: string) => void;
|
|
91
|
+
/** Called with each thinking token */
|
|
92
|
+
onThinking?: (delta: string) => void;
|
|
93
|
+
/** Called with tool name, optional args payload, and optional tool call ID when a tool starts executing */
|
|
94
|
+
onToolStart?: (tool: string, args?: Record<string, unknown>, toolCallId?: string) => void;
|
|
95
|
+
/** Called with tool name, error flag, optional tool call ID, summarized result content, and optional raw result payload */
|
|
96
|
+
onToolEnd?: (tool: string, isError: boolean, toolCallId?: string, resultContent?: string, resultRaw?: Record<string, unknown>) => void;
|
|
97
|
+
/** Called with the raw pi event type (for job status tracking) */
|
|
98
|
+
onEvent?: (type: string, details?: {
|
|
99
|
+
charCount?: number;
|
|
100
|
+
toolCallId?: string;
|
|
101
|
+
model?: string;
|
|
102
|
+
previousModel?: string;
|
|
103
|
+
action?: 'set_model' | 'cycle_model';
|
|
104
|
+
extension?: string;
|
|
105
|
+
errorMessage?: string;
|
|
106
|
+
tokensBefore?: number;
|
|
107
|
+
summary?: string;
|
|
108
|
+
firstKeptEntryId?: string;
|
|
109
|
+
attempt?: number;
|
|
110
|
+
maxAttempts?: number;
|
|
111
|
+
delayMs?: number;
|
|
112
|
+
}) => void;
|
|
113
|
+
/** Called with additive observability metrics derived from RPC events */
|
|
114
|
+
onMetric?: (event: SessionMetricEvent) => void;
|
|
115
|
+
/** Called once with actual backend/model from the first assistant message_start */
|
|
116
|
+
onMeta?: (meta: {
|
|
117
|
+
backend: string;
|
|
118
|
+
model: string;
|
|
119
|
+
}) => void;
|
|
120
|
+
/** Kill and fail if no streaming/protocol activity occurs within this window */
|
|
121
|
+
stallTimeoutMs?: number;
|
|
122
|
+
/** Extended stall timeout used while known test commands run via bash tool */
|
|
123
|
+
testCommandStallTimeoutMs?: number;
|
|
124
|
+
}
|
|
125
|
+
export declare function validateWriteToolPathAgainstBoundary(toolName: string, toolArgs: Record<string, unknown> | undefined, worktreeBoundary: string | undefined): string | undefined;
|
|
126
|
+
export declare class PiAgentSession {
|
|
127
|
+
private options;
|
|
128
|
+
private proc?;
|
|
129
|
+
private _lastOutput;
|
|
130
|
+
private _donePromise?;
|
|
131
|
+
private _doneResolve?;
|
|
132
|
+
private _doneReject?;
|
|
133
|
+
private _agentEndReceived;
|
|
134
|
+
private _killed;
|
|
135
|
+
private _lineBuffer;
|
|
136
|
+
private _pendingRequests;
|
|
137
|
+
private _nextRequestId;
|
|
138
|
+
private _stderrBuffer;
|
|
139
|
+
private _apiError?;
|
|
140
|
+
private _stallTimer?;
|
|
141
|
+
private _stallError?;
|
|
142
|
+
private _testWindowToolCallIds;
|
|
143
|
+
private _testWindowWithoutIdCount;
|
|
144
|
+
private _metrics;
|
|
145
|
+
readonly meta: AgentSessionMeta;
|
|
146
|
+
private constructor();
|
|
147
|
+
static create(options: PiSessionOptions): Promise<PiAgentSession>;
|
|
148
|
+
start(): Promise<void>;
|
|
149
|
+
private _clearStallTimer;
|
|
150
|
+
private _isTestWindowActive;
|
|
151
|
+
private _resolveStallTimeoutMs;
|
|
152
|
+
private _activateTestWindow;
|
|
153
|
+
private _deactivateTestWindow;
|
|
154
|
+
private _markActivity;
|
|
155
|
+
private _updateTokenUsage;
|
|
156
|
+
private _updateFinishReason;
|
|
157
|
+
private _handleEvent;
|
|
158
|
+
/**
|
|
159
|
+
* Send a JSON command to pi's stdin and return a promise for the response.
|
|
160
|
+
* Each call is assigned a unique ID; concurrent calls are supported.
|
|
161
|
+
*/
|
|
162
|
+
private sendCommand;
|
|
163
|
+
/**
|
|
164
|
+
* Write the prompt to pi's stdin and await the RPC ack.
|
|
165
|
+
* Stdin is kept open for subsequent RPC commands.
|
|
166
|
+
* Call waitForDone() to block until agent_end, then close() to terminate.
|
|
167
|
+
*/
|
|
168
|
+
prompt(task: string): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Wait for the agent to finish. Optionally times out (throws Error on timeout).
|
|
171
|
+
*/
|
|
172
|
+
waitForDone(timeout?: number): Promise<void>;
|
|
173
|
+
/**
|
|
174
|
+
* Get the last assistant output text. Tries RPC first, falls back to in-memory capture.
|
|
175
|
+
*/
|
|
176
|
+
getLastOutput(): Promise<string>;
|
|
177
|
+
/**
|
|
178
|
+
* Get current session state via RPC.
|
|
179
|
+
*/
|
|
180
|
+
getState(): Promise<any>;
|
|
181
|
+
getMetrics(): SessionRunMetrics;
|
|
182
|
+
/**
|
|
183
|
+
* Close the pi process cleanly by ending stdin (EOF) and waiting for exit.
|
|
184
|
+
*/
|
|
185
|
+
close(): Promise<void>;
|
|
186
|
+
kill(reason?: Error): void;
|
|
187
|
+
/** Returns accumulated stderr output from the pi process. */
|
|
188
|
+
getStderr(): string;
|
|
189
|
+
/**
|
|
190
|
+
* Send a mid-run steering message to the Pi agent and await the RPC ack.
|
|
191
|
+
* Pi delivers it after the current assistant turn finishes tool calls.
|
|
192
|
+
*/
|
|
193
|
+
steer(message: string): Promise<void>;
|
|
194
|
+
/**
|
|
195
|
+
* Queue a follow_up on the Pi session using pi's native follow_up RPC command.
|
|
196
|
+
* This is distinct from resume(): follow_up queues work during a still-running turn,
|
|
197
|
+
* while resume() sends a next-turn prompt to a waiting (idle) session.
|
|
198
|
+
*
|
|
199
|
+
* Not yet implemented — reserved to prevent semantic drift with pi's native follow_up.
|
|
200
|
+
*/
|
|
201
|
+
followUp(_task: string): never;
|
|
202
|
+
/**
|
|
203
|
+
* Start a new turn on the same Pi session (keep-alive multi-turn).
|
|
204
|
+
* Resets done state and sends a new prompt — Pi retains full conversation history.
|
|
205
|
+
* Only valid after waitForDone() has resolved for the previous turn.
|
|
206
|
+
*/
|
|
207
|
+
resume(task: string, timeout?: number): Promise<void>;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/pi/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AA6BA,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAY;;IAqBzB,OAAO,CAAC,WAAW,CAAoC;IAEvD,OAAO,CAAC,aAAa;IAwDf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface BeadDependency {
|
|
2
|
+
id: string;
|
|
3
|
+
title?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
notes?: string;
|
|
6
|
+
status?: string;
|
|
7
|
+
dependency_type?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface BeadRecord {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
notes?: string;
|
|
14
|
+
parent?: string;
|
|
15
|
+
status?: string;
|
|
16
|
+
dependencies?: BeadDependency[];
|
|
17
|
+
}
|
|
18
|
+
export declare function buildBeadContext(bead: BeadRecord, completedBlockers?: BeadRecord[]): string;
|
|
19
|
+
export declare class BeadsClient {
|
|
20
|
+
private readonly available;
|
|
21
|
+
constructor();
|
|
22
|
+
private static checkAvailable;
|
|
23
|
+
isAvailable(): boolean;
|
|
24
|
+
/** Create a bead for a specialist run. Returns the bead ID or null on failure. */
|
|
25
|
+
createBead(specialistName: string): string | null;
|
|
26
|
+
/** Read a bead by ID. Returns null on any failure. */
|
|
27
|
+
readBead(id: string): BeadRecord | null;
|
|
28
|
+
/**
|
|
29
|
+
* Fetch completed blockers of a bead at the given depth.
|
|
30
|
+
* depth=1 returns immediate completed blockers only.
|
|
31
|
+
* depth=2 also includes their completed blockers, etc.
|
|
32
|
+
*/
|
|
33
|
+
getCompletedBlockers(id: string, depth?: number): BeadRecord[];
|
|
34
|
+
/** Link a tracking bead back to the input bead that supplied the prompt. */
|
|
35
|
+
addDependency(trackingBeadId: string, inputBeadId: string): void;
|
|
36
|
+
/** Close a bead with COMPLETE or ERROR status. */
|
|
37
|
+
closeBead(id: string, status: 'COMPLETE' | 'ERROR' | 'CANCELLED', durationMs: number, model: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Close a bead only if it is currently open or in_progress.
|
|
40
|
+
* Idempotent: no-op when bead is already closed/deferred/blocked or unreadable.
|
|
41
|
+
* Used by supervisor terminal-state writes and `sp stop` to retire linked beads automatically (unitAI-9truh).
|
|
42
|
+
*/
|
|
43
|
+
closeBeadIfInProgress(id: string, reason: string): boolean;
|
|
44
|
+
/** Append bead notes with specialist output or metadata. */
|
|
45
|
+
updateBeadNotes(id: string, notes: string): {
|
|
46
|
+
ok: boolean;
|
|
47
|
+
error?: string;
|
|
48
|
+
};
|
|
49
|
+
/** Record a bd audit entry linking the bead to the specialist invocation. */
|
|
50
|
+
auditBead(id: string, toolName: string, model: string, exitCode: number): void;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Determine whether to create a bead for this specialist run.
|
|
54
|
+
*
|
|
55
|
+
* auto — create bead only for non-READ_ONLY specialists (write-capable)
|
|
56
|
+
* always — always create (discovery specialists: codebase-explorer, init-session)
|
|
57
|
+
* never — skip entirely (utility one-offs, fast runs)
|
|
58
|
+
*/
|
|
59
|
+
export declare function shouldCreateBead(beadsIntegration: 'auto' | 'always' | 'never', permissionRequired: string): boolean;
|
|
60
|
+
//# sourceMappingURL=beads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../../src/specialist/beads.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;CACjC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,GAAE,UAAU,EAAO,GAAG,MAAM,CA6B/F;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;;IASpC,OAAO,CAAC,MAAM,CAAC,cAAc;IAK7B,WAAW,IAAI,OAAO;IAItB,kFAAkF;IAClF,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYjD,sDAAsD;IACtD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAsBvC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,UAAU,EAAE;IAgCzD,4EAA4E;IAC5E,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhE,kDAAkD;IAClD,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAM1G;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAS1D,4DAA4D;IAC5D,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAgB3E,6EAA6E;IAC7E,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAe/E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,EAC7C,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAIT"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SupervisorStatus } from './supervisor.js';
|
|
2
|
+
export declare const CHAIN_KINDS: readonly ["chain", "prep"];
|
|
3
|
+
export type ChainKind = (typeof CHAIN_KINDS)[number];
|
|
4
|
+
export interface PersistedChainIdentity {
|
|
5
|
+
chain_kind: ChainKind;
|
|
6
|
+
chain_id?: string;
|
|
7
|
+
chain_root_job_id?: string;
|
|
8
|
+
chain_root_bead_id?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ChainIdentityResolverInput extends Pick<SupervisorStatus, 'id' | 'bead_id' | 'worktree_path' | 'worktree_owner_job_id' | 'chain_id' | 'chain_root_job_id' | 'chain_root_bead_id'> {
|
|
11
|
+
}
|
|
12
|
+
export interface ChainRootSnapshot {
|
|
13
|
+
bead_id?: string;
|
|
14
|
+
chain_root_bead_id?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function isChainKind(value: string | undefined): value is ChainKind;
|
|
17
|
+
export declare function derivePersistedChainIdentity(status: ChainIdentityResolverInput, chainRootSnapshot?: ChainRootSnapshot): PersistedChainIdentity;
|
|
18
|
+
//# sourceMappingURL=chain-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-identity.d.ts","sourceRoot":"","sources":["../../../src/specialist/chain-identity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAO,MAAM,WAAW,4BAA6B,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,SAAS,GAAG,eAAe,GAAG,uBAAuB,GAAG,UAAU,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;CAAG;AAErM,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAEzE;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,0BAA0B,EAClC,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,sBAAsB,CAuBxB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { SupervisorStatus } from './supervisor.js';
|
|
2
|
+
/**
|
|
3
|
+
* Epic lifecycle is independent from node lifecycle:
|
|
4
|
+
* - epic: merge-gated publication lifecycle for wave-bound chain groups
|
|
5
|
+
* - chain: worktree lineage rooted at worktree_owner_job_id
|
|
6
|
+
* - job: one specialist run
|
|
7
|
+
* - node: coordinator/member runtime lifecycle
|
|
8
|
+
*/
|
|
9
|
+
export declare const EPIC_STATES: readonly ["open", "resolving", "merge_ready", "merged", "failed", "abandoned"];
|
|
10
|
+
export type EpicState = (typeof EPIC_STATES)[number];
|
|
11
|
+
export declare const EPIC_TERMINAL_STATES: readonly ["merged", "failed", "abandoned"];
|
|
12
|
+
export declare const VALID_EPIC_TRANSITIONS: Record<EpicState, readonly EpicState[]>;
|
|
13
|
+
export interface EpicRunRecord {
|
|
14
|
+
epic_id: string;
|
|
15
|
+
status: EpicState;
|
|
16
|
+
updated_at_ms: number;
|
|
17
|
+
status_json: string;
|
|
18
|
+
}
|
|
19
|
+
export interface EpicChainRecord {
|
|
20
|
+
chain_id: string;
|
|
21
|
+
epic_id: string;
|
|
22
|
+
chain_root_bead_id?: string;
|
|
23
|
+
chain_root_job_id?: string;
|
|
24
|
+
updated_at_ms: number;
|
|
25
|
+
}
|
|
26
|
+
export interface EpicReadinessInput {
|
|
27
|
+
epicId: string;
|
|
28
|
+
epicStatus: EpicState;
|
|
29
|
+
chainStatuses: ReadonlyArray<{
|
|
30
|
+
chainId: string;
|
|
31
|
+
hasRunningJob: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
export interface EpicReadinessResult {
|
|
35
|
+
epicId: string;
|
|
36
|
+
epicStatus: EpicState;
|
|
37
|
+
isReady: boolean;
|
|
38
|
+
blockingChains: string[];
|
|
39
|
+
summary: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function isEpicTerminalState(status: EpicState): boolean;
|
|
42
|
+
export declare function isEpicUnresolvedState(status: EpicState): boolean;
|
|
43
|
+
export declare function canTransitionEpicState(from: EpicState, to: EpicState): boolean;
|
|
44
|
+
export declare function transitionEpicState(from: EpicState, to: EpicState): EpicState;
|
|
45
|
+
export declare function resolveChainId(status: Pick<SupervisorStatus, 'id' | 'worktree_path' | 'worktree_owner_job_id' | 'chain_id'>): string | undefined;
|
|
46
|
+
export declare function evaluateEpicMergeReadiness(input: EpicReadinessInput): EpicReadinessResult;
|
|
47
|
+
export interface EpicTransitionAuditEntry {
|
|
48
|
+
from: EpicState;
|
|
49
|
+
to: EpicState;
|
|
50
|
+
at_ms: number;
|
|
51
|
+
reason?: string;
|
|
52
|
+
trigger?: string;
|
|
53
|
+
forced?: boolean;
|
|
54
|
+
}
|
|
55
|
+
export declare function appendEpicTransitionAudit(statusJson: string | undefined, entry: EpicTransitionAuditEntry): string;
|
|
56
|
+
export declare function summarizeEpicTransition(epicId: string, from: EpicState, to: EpicState): string;
|
|
57
|
+
//# sourceMappingURL=epic-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epic-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/specialist/epic-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,gFAAiF,CAAC;AAE1G,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,oBAAoB,4CAA6C,CAAC;AAE/E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAO1E,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAE9D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAEhE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAE9E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,SAAS,CAK7E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,eAAe,GAAG,uBAAuB,GAAG,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,CAKhJ;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAkCzF;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,SAAS,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAyBjH;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAE9F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { EpicRunRecord, EpicState } from './epic-lifecycle.js';
|
|
2
|
+
import type { ObservabilitySqliteClient } from './observability-sqlite.js';
|
|
3
|
+
import type { SupervisorStatus } from './supervisor.js';
|
|
4
|
+
export type ReviewerVerdict = 'pass' | 'partial' | 'fail' | 'missing';
|
|
5
|
+
export type ChainReadinessState = 'pending' | 'blocked' | 'pass' | 'failed';
|
|
6
|
+
export type EpicReadinessState = 'unresolved' | 'resolving' | 'merge_ready' | 'blocked' | 'failed' | 'merged' | 'abandoned';
|
|
7
|
+
interface EvaluatorJob {
|
|
8
|
+
id: string;
|
|
9
|
+
specialist: string;
|
|
10
|
+
status: SupervisorStatus['status'];
|
|
11
|
+
pid?: number;
|
|
12
|
+
started_at_ms: number;
|
|
13
|
+
result_text?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ChainReadinessSummary {
|
|
16
|
+
chain_id: string;
|
|
17
|
+
chain_root_bead_id?: string;
|
|
18
|
+
state: ChainReadinessState;
|
|
19
|
+
reviewer_verdict: ReviewerVerdict;
|
|
20
|
+
blocking_reason?: string;
|
|
21
|
+
has_active_jobs: boolean;
|
|
22
|
+
job_ids: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface PrepReadinessSummary {
|
|
25
|
+
total: number;
|
|
26
|
+
done: number;
|
|
27
|
+
running: number;
|
|
28
|
+
failed: number;
|
|
29
|
+
blocker_job_ids: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface EpicReadinessSummary {
|
|
32
|
+
epic_id: string;
|
|
33
|
+
persisted_state: EpicState;
|
|
34
|
+
readiness_state: EpicReadinessState;
|
|
35
|
+
next_state: EpicState;
|
|
36
|
+
can_transition: boolean;
|
|
37
|
+
prep: PrepReadinessSummary;
|
|
38
|
+
chains: ChainReadinessSummary[];
|
|
39
|
+
blockers: string[];
|
|
40
|
+
summary: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function evaluateEpicReadinessSummary(input: {
|
|
43
|
+
epicId: string;
|
|
44
|
+
persistedState: EpicState;
|
|
45
|
+
prepJobs: readonly SupervisorStatus[];
|
|
46
|
+
chainInputs: ReadonlyArray<{
|
|
47
|
+
chain_id: string;
|
|
48
|
+
chain_root_bead_id?: string;
|
|
49
|
+
jobs: readonly EvaluatorJob[];
|
|
50
|
+
}>;
|
|
51
|
+
}): EpicReadinessSummary;
|
|
52
|
+
export declare function loadEpicReadinessSummary(sqlite: ObservabilitySqliteClient, epicId: string): EpicReadinessSummary;
|
|
53
|
+
export declare function syncEpicStateFromReadiness(sqlite: ObservabilitySqliteClient, summary: EpicReadinessSummary): EpicRunRecord;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=epic-readiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epic-readiness.d.ts","sourceRoot":"","sources":["../../../src/specialist/epic-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOxD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5H,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,gBAAgB,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,SAAS,CAAC;IAC3B,eAAe,EAAE,kBAAkB,CAAC;IACpC,UAAU,EAAE,SAAS,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAgMD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,SAAS,CAAC;IAC1B,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,WAAW,EAAE,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9G,GAAG,oBAAoB,CAuBvB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAwChH;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAwB1H"}
|