pi-crew 0.9.68 → 0.10.1

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.
Files changed (217) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/agents/analyst.md +1 -1
  3. package/agents/cold-verifier.md +3 -1
  4. package/agents/critic.md +1 -1
  5. package/agents/executor.md +1 -1
  6. package/agents/explorer.md +1 -1
  7. package/agents/planner.md +1 -1
  8. package/agents/reviewer.md +1 -1
  9. package/agents/security-reviewer.md +1 -1
  10. package/agents/test-engineer.md +1 -1
  11. package/agents/verifier.md +1 -1
  12. package/agents/writer.md +1 -1
  13. package/dist/index.mjs +65838 -60331
  14. package/docs/README.md +2 -0
  15. package/docs/actions-reference.md +31 -0
  16. package/docs/commands-reference.md +17 -6
  17. package/docs/resource-formats.md +13 -0
  18. package/package.json +4 -2
  19. package/schema.json +15 -1
  20. package/scripts/resource-sampler.mjs +36 -2
  21. package/skills/requirements-to-task-packet/SKILL.md +26 -0
  22. package/skills/widget-rendering/SKILL.md +7 -7
  23. package/src/agents/agent-config.ts +2 -1
  24. package/src/agents/discover-agents.ts +23 -14
  25. package/src/config/config-merge.ts +183 -0
  26. package/src/config/config-validation.ts +681 -0
  27. package/src/config/config.ts +22 -864
  28. package/src/config/defaults.ts +35 -1
  29. package/src/config/drift-detector.ts +1 -1
  30. package/src/config/env-vars.ts +691 -0
  31. package/src/config/role-tools.ts +8 -8
  32. package/src/config/sanitize-project-config.ts +172 -0
  33. package/src/config/types.ts +30 -0
  34. package/src/extension/async-notifier.ts +25 -2
  35. package/src/extension/crew-vibes/config.ts +2 -1
  36. package/src/extension/plan-orchestrate.ts +132 -0
  37. package/src/extension/registration/commands/dashboard.ts +158 -0
  38. package/src/extension/registration/commands/index.ts +35 -0
  39. package/src/extension/registration/commands/manage.ts +303 -0
  40. package/src/extension/registration/commands/run.ts +214 -0
  41. package/src/extension/registration/commands/shared.ts +631 -0
  42. package/src/extension/registration/commands/status.ts +60 -0
  43. package/src/extension/registration/commands.ts +13 -1224
  44. package/src/extension/registration/lifecycle-handlers.ts +126 -15
  45. package/src/extension/registration/subagent-tools.ts +218 -9
  46. package/src/extension/rpc-hmac.ts +5 -3
  47. package/src/extension/team-tool/api/heartbeat.ts +47 -10
  48. package/src/extension/team-tool/api/plan-approval.ts +9 -0
  49. package/src/extension/team-tool/api/task-claims.ts +109 -40
  50. package/src/extension/team-tool/cancel.ts +84 -50
  51. package/src/extension/team-tool/dispatch/index.ts +1 -0
  52. package/src/extension/team-tool/dispatch/run.ts +4 -1
  53. package/src/extension/team-tool/doctor.ts +103 -1
  54. package/src/extension/team-tool/orchestrate.ts +66 -1
  55. package/src/extension/team-tool/plans.ts +192 -0
  56. package/src/extension/team-tool/respond.ts +197 -65
  57. package/src/extension/team-tool/run-deadline.ts +16 -1
  58. package/src/extension/team-tool/run-intent.ts +63 -0
  59. package/src/extension/team-tool/run.ts +48 -18
  60. package/src/extension/team-tool/status.ts +84 -26
  61. package/src/extension/team-tool.ts +11 -2
  62. package/src/hooks/registry.ts +1 -6
  63. package/src/i18n.ts +9 -0
  64. package/src/prompt/prompt-runtime.ts +521 -2
  65. package/src/prompt/worker-events-channel.ts +173 -0
  66. package/src/runtime/README.md +8 -8
  67. package/src/runtime/async-runner.ts +7 -3
  68. package/src/runtime/background-runner.ts +42 -14
  69. package/src/runtime/broker/broker-issuer.ts +9 -2
  70. package/src/runtime/broker/crew-broker-tokens.ts +43 -6
  71. package/src/runtime/broker/crew-broker.ts +838 -10
  72. package/src/runtime/broker/wait-status-cache.ts +157 -0
  73. package/src/runtime/budget-enforcement.ts +281 -0
  74. package/src/runtime/child-pi/child-pi-spawn.ts +60 -14
  75. package/src/runtime/child-pi/child-pi-timers.ts +324 -0
  76. package/src/runtime/child-pi/child-pi.ts +97 -201
  77. package/src/runtime/child-pi/mock-fixtures.ts +16 -2
  78. package/src/runtime/crew-agent-records.ts +259 -14
  79. package/src/runtime/delegate-spawn.ts +148 -0
  80. package/src/runtime/deterministic-ast.ts +2 -1
  81. package/src/runtime/dispatch-batch.ts +945 -0
  82. package/src/runtime/finalize-run.ts +557 -0
  83. package/src/runtime/goal-workflow/adaptive-plan.ts +87 -13
  84. package/src/runtime/goal-workflow/dynamic-workflow-runner.ts +3 -2
  85. package/src/runtime/goal-workflow/goal-state-store.ts +1 -1
  86. package/src/runtime/group-join.ts +11 -125
  87. package/src/runtime/live-session/live-session-runtime.ts +26 -1
  88. package/src/runtime/merge-gate.ts +7 -1
  89. package/src/runtime/merge-loop.ts +130 -0
  90. package/src/runtime/model/model-budget-summary.ts +53 -0
  91. package/src/runtime/model/model-fallback.ts +32 -2
  92. package/src/runtime/model/pi-args.ts +10 -0
  93. package/src/runtime/model/provider-extensions.ts +10 -0
  94. package/src/runtime/orphan-worker-registry.ts +1 -1
  95. package/src/runtime/output/output-validator.ts +45 -0
  96. package/src/runtime/parent-guard.ts +3 -1
  97. package/src/runtime/peer-dep.ts +2 -1
  98. package/src/runtime/per-write-validator.ts +0 -5
  99. package/src/runtime/pi-spawn.ts +61 -15
  100. package/src/runtime/plan-approval.ts +125 -0
  101. package/src/runtime/plan-replan.ts +151 -0
  102. package/src/runtime/recovery/checkpoint.ts +0 -18
  103. package/src/runtime/recovery/crash-recovery.ts +95 -46
  104. package/src/runtime/scheduler-context.ts +98 -0
  105. package/src/runtime/scheduling/coalesce-tasks.ts +5 -0
  106. package/src/runtime/scheduling/global-worker-cap.ts +2 -1
  107. package/src/runtime/scheduling/nested-slots.ts +70 -0
  108. package/src/runtime/scheduling/run-coalesced-task-group.ts +64 -13
  109. package/src/runtime/scheduling/task-graph-scheduler.ts +0 -10
  110. package/src/runtime/settings-store.ts +219 -0
  111. package/src/runtime/spawn-policy.ts +217 -0
  112. package/src/runtime/stale-reconciler.ts +87 -6
  113. package/src/runtime/subagent-manager.ts +25 -1
  114. package/src/runtime/task-output-context.ts +230 -9
  115. package/src/runtime/task-packet.ts +23 -1
  116. package/src/runtime/task-runner/child-executor.ts +106 -7
  117. package/src/runtime/task-runner/post-execution.ts +125 -1
  118. package/src/runtime/task-runner/pre-execution.ts +39 -1
  119. package/src/runtime/task-runner/prompt-builder.ts +51 -1
  120. package/src/runtime/task-runner/retrieval-orchestrator.ts +72 -18
  121. package/src/runtime/task-runner/spec-evidence.ts +403 -0
  122. package/src/runtime/task-runner/state-helpers.ts +26 -24
  123. package/src/runtime/task-runner.ts +11 -0
  124. package/src/runtime/team-runner.ts +129 -1671
  125. package/src/runtime/verification/spec-sandbox.ts +255 -0
  126. package/src/runtime/verification/verification-gates.ts +3 -2
  127. package/src/runtime/verification/verification-worktree.ts +2 -1
  128. package/src/runtime/workflow-phase-advance.ts +100 -0
  129. package/src/runtime/workspace-tree.ts +9 -0
  130. package/src/schema/config-schema.ts +65 -25
  131. package/src/schema/sensitive-config-paths.ts +64 -0
  132. package/src/schema/team-tool-schema.ts +13 -3
  133. package/src/state/README.md +4 -10
  134. package/src/state/atomic-write.ts +20 -3
  135. package/src/state/contracts.ts +38 -0
  136. package/src/state/coordination/mailbox.ts +12 -2
  137. package/src/state/event-log/cursor.ts +223 -0
  138. package/src/state/event-log/event-log-rotation.ts +12 -4
  139. package/src/state/event-log/event-log.ts +152 -369
  140. package/src/state/event-log/sequence-cache.ts +373 -0
  141. package/src/state/event-log/worker-atomic-writer.ts +2 -1
  142. package/src/state/stores/active-run-registry.ts +3 -2
  143. package/src/state/stores/manifest-io.ts +237 -0
  144. package/src/state/stores/ownership-map.ts +162 -0
  145. package/src/state/stores/plan-store.ts +241 -0
  146. package/src/state/stores/run-cache.ts +0 -90
  147. package/src/state/stores/spec-store.ts +189 -0
  148. package/src/state/stores/state-store.ts +66 -229
  149. package/src/state/types.ts +197 -0
  150. package/src/ui/dashboard-panes/plan-pane.ts +136 -0
  151. package/src/ui/dashboard-panes/progress-pane.ts +6 -0
  152. package/src/ui/dashboard-panes/transcript-pane.ts +31 -0
  153. package/src/ui/heartbeat-aggregator.ts +9 -1
  154. package/src/ui/keybinding-map.ts +54 -13
  155. package/src/ui/powerbar-publisher.ts +52 -1
  156. package/src/ui/run-dashboard.ts +31 -5
  157. package/src/ui/run-snapshot-cache.ts +57 -30
  158. package/src/ui/snapshot-types.ts +6 -1
  159. package/src/ui/widget/widget-renderer.ts +9 -1
  160. package/src/utils/file-coalescer.ts +0 -4
  161. package/src/utils/fs-errno.ts +66 -0
  162. package/src/utils/fs-watch.ts +1 -1
  163. package/src/utils/internal-error.ts +3 -1
  164. package/src/utils/paths.ts +11 -3
  165. package/src/utils/task-name-generator.ts +1 -8
  166. package/src/workflows/discover-workflows.ts +19 -2
  167. package/src/workflows/validate-workflow.ts +7 -1
  168. package/src/workflows/workflow-config.ts +10 -0
  169. package/src/workflows/workflow-serializer.ts +3 -0
  170. package/src/worktree/worktree-manager.ts +22 -0
  171. package/src/agents/agent-search.ts +0 -98
  172. package/src/benchmark/benchmark-runner.ts +0 -313
  173. package/src/benchmark/feedback-loop.ts +0 -73
  174. package/src/config/resilient-parser.ts +0 -117
  175. package/src/extension/crew-vibes/cat-frames.ts +0 -18
  176. package/src/extension/result-watcher.ts +0 -139
  177. package/src/observability/exporters/prometheus-exporter.ts +0 -54
  178. package/src/observability/metric-retention.ts +0 -64
  179. package/src/runtime/compaction/compaction-summary.ts +0 -278
  180. package/src/runtime/errors/crew-errors.ts +0 -162
  181. package/src/runtime/live-session/intercom-bridge.ts +0 -187
  182. package/src/runtime/loop-gates.ts +0 -128
  183. package/src/runtime/metric-parser.ts +0 -36
  184. package/src/runtime/output/stream-preview.ts +0 -184
  185. package/src/runtime/output/tool-progress.ts +0 -278
  186. package/src/runtime/phase-tracker.ts +0 -385
  187. package/src/runtime/pipeline-runner.ts +0 -523
  188. package/src/runtime/process/process-lifecycle.ts +0 -491
  189. package/src/runtime/recovery/retry-runner.ts +0 -330
  190. package/src/runtime/run-drift.ts +0 -219
  191. package/src/runtime/task-quality.ts +0 -199
  192. package/src/runtime/task-runner/run-projection.ts +0 -128
  193. package/src/runtime/verification/post-checks.ts +0 -142
  194. package/src/state/coordination/schedule.ts +0 -166
  195. package/src/state/event-log/jsonl-writer.ts +0 -115
  196. package/src/state/hook-instinct-bridge.ts +0 -94
  197. package/src/state/hook-integrations.ts +0 -51
  198. package/src/state/session-state-map.ts +0 -51
  199. package/src/state/stores/blob-store.ts +0 -308
  200. package/src/state/stores/instinct-store.ts +0 -275
  201. package/src/state/stores/observation-store.ts +0 -176
  202. package/src/state/tiered-eval.ts +0 -480
  203. package/src/state/types-eval.ts +0 -58
  204. package/src/tools/safe-bash-extension.ts +0 -54
  205. package/src/tools/safe-bash.ts +0 -505
  206. package/src/ui/agent-management-overlay.ts +0 -160
  207. package/src/ui/crew-footer.ts +0 -102
  208. package/src/ui/crew-select-list.ts +0 -114
  209. package/src/ui/dashboard-panes/capability-pane.ts +0 -77
  210. package/src/ui/transcript-entries.ts +0 -256
  211. package/src/utils/conflict-detect.ts +0 -721
  212. package/src/utils/fingerprint.ts +0 -180
  213. package/src/utils/gh-protocol.ts +0 -556
  214. package/src/utils/project-detector.ts +0 -160
  215. package/src/utils/sse-parser.ts +0 -131
  216. package/src/workflows/cost-estimator.ts +0 -34
  217. package/src/workflows/intermediate-store.ts +0 -166
@@ -1,180 +0,0 @@
1
- /**
2
- * Incremental fingerprinting — detect file changes to skip unchanged work.
3
- *
4
- * Pattern origin: Understand-Anything/packages/core/src/fingerprint.ts
5
- * Content hash + structural signature per file. Change classifier:
6
- * NONE (unchanged), COSMETIC (whitespace/comments only), STRUCTURAL (code changed).
7
- * Only STRUCTURAL changes trigger re-analysis.
8
- */
9
-
10
- import { createHash } from "node:crypto";
11
- import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
12
- import { logInternalError } from "../utils/internal-error.ts";
13
-
14
- // ── Types ────────────────────────────────────────────────────────────────
15
-
16
- export type ChangeClass = "NONE" | "COSMETIC" | "STRUCTURAL";
17
-
18
- export interface FileFingerprint {
19
- path: string;
20
- contentHash: string;
21
- structuralSignature: string;
22
- lastModified: number; // mtime ms
23
- changeClass: ChangeClass;
24
- }
25
-
26
- export interface FingerprintDelta {
27
- added: string[];
28
- removed: string[];
29
- modified: FileFingerprint[]; // only STRUCTURAL changes
30
- unchanged: number;
31
- }
32
-
33
- // ── Fingerprinting ───────────────────────────────────────────────────────
34
-
35
- /**
36
- * Compute SHA-256 content hash of a file.
37
- */
38
- export function computeContentHash(filePath: string): string {
39
- try {
40
- const content = readFileSync(filePath);
41
- return createHash("sha256").update(content).digest("hex");
42
- } catch {
43
- return "";
44
- }
45
- }
46
-
47
- /**
48
- * Extract a structural signature from source code.
49
- *
50
- * Captures function signatures, class methods, and import specifiers.
51
- * Ignores whitespace, comments, and string content.
52
- * Returns a hash of the structural elements.
53
- */
54
- export function computeStructuralSignature(content: string, filePath: string): string {
55
- const lines = content.split("\n");
56
- const structural: string[] = [];
57
-
58
- for (const line of lines) {
59
- const trimmed = line.trim();
60
-
61
- // Skip empty lines and comments
62
- if (trimmed.length === 0) continue;
63
- if (trimmed.startsWith("//") || trimmed.startsWith("/*") || trimmed.startsWith("*")) continue;
64
-
65
- // Capture structural lines
66
- if (
67
- // Function/method declarations
68
- /^(export\s+)?(async\s+)?function\s/.test(trimmed) ||
69
- (/^\w+\s*\(/.test(trimmed) && !/^(if|for|while|switch|return|throw|await)/.test(trimmed)) ||
70
- // Class declarations
71
- /^(export\s+)?(abstract\s+)?class\s/.test(trimmed) ||
72
- /^(public|private|protected|static|readonly|abstract)\s/.test(trimmed) ||
73
- // Interface/type declarations
74
- /^(export\s+)?(interface|type)\s/.test(trimmed) ||
75
- // Import declarations
76
- /^import\s/.test(trimmed) ||
77
- // Export declarations
78
- /^export\s+(default\s+)?(const|let|var|function|class|interface|type|enum)\s/.test(trimmed)
79
- ) {
80
- structural.push(trimmed);
81
- }
82
- }
83
-
84
- return createHash("sha256").update(structural.join("\n")).digest("hex");
85
- }
86
-
87
- /**
88
- * Classify the change between two fingerprints.
89
- */
90
- export function classifyChange(previous: FileFingerprint | undefined, current: FileFingerprint): ChangeClass {
91
- if (!previous) return "STRUCTURAL"; // New file
92
-
93
- if (previous.contentHash === current.contentHash) return "NONE";
94
- if (previous.structuralSignature === current.structuralSignature) return "COSMETIC";
95
- return "STRUCTURAL";
96
- }
97
-
98
- /**
99
- * Compute fingerprint for a single file.
100
- */
101
- export function fingerprintFile(filePath: string): FileFingerprint {
102
- const content = readFileSync(filePath, "utf-8");
103
- const stat = statSync(filePath);
104
-
105
- return {
106
- path: filePath,
107
- contentHash: computeContentHash(filePath),
108
- structuralSignature: computeStructuralSignature(content, filePath),
109
- lastModified: stat.mtimeMs,
110
- changeClass: "NONE", // will be classified during delta computation
111
- };
112
- }
113
-
114
- // ── Fingerprint Store ────────────────────────────────────────────────────
115
-
116
- const MAX_FINGERPRINTS = 10000;
117
-
118
- /**
119
- * Load fingerprint baseline from a JSON file.
120
- */
121
- export function loadFingerprintBaseline(storePath: string): Map<string, FileFingerprint> {
122
- const map = new Map<string, FileFingerprint>();
123
- if (!existsSync(storePath)) return map;
124
-
125
- try {
126
- const data = JSON.parse(readFileSync(storePath, "utf-8")) as FileFingerprint[];
127
- for (const fp of data) {
128
- if (map.size >= MAX_FINGERPRINTS) break;
129
- map.set(fp.path, fp);
130
- }
131
- } catch (error) {
132
- logInternalError("fingerprint.load", error, `storePath=${storePath}`);
133
- }
134
- return map;
135
- }
136
-
137
- /**
138
- * Save fingerprint baseline to a JSON file.
139
- */
140
- export function saveFingerprintBaseline(storePath: string, fingerprints: Map<string, FileFingerprint>): void {
141
- const entries = [...fingerprints.entries()].slice(0, MAX_FINGERPRINTS).map(([, fp]) => fp);
142
- writeFileSync(storePath, JSON.stringify(entries, null, 2), "utf-8");
143
- }
144
-
145
- /**
146
- * Compute delta between baseline and current fingerprints.
147
- *
148
- * Only returns STRUCTURAL changes in the `modified` field.
149
- */
150
- export function computeFingerprintDelta(baseline: Map<string, FileFingerprint>, current: Map<string, FileFingerprint>): FingerprintDelta {
151
- const added: string[] = [];
152
- const removed: string[] = [];
153
- const modified: FileFingerprint[] = [];
154
- let unchanged = 0;
155
-
156
- // Find added and modified
157
- for (const [path, currentFp] of current) {
158
- const prev = baseline.get(path);
159
- const changeClass = classifyChange(prev, currentFp);
160
-
161
- if (!prev) {
162
- added.push(path);
163
- } else if (changeClass === "STRUCTURAL") {
164
- modified.push({ ...currentFp, changeClass: "STRUCTURAL" });
165
- } else if (changeClass === "COSMETIC") {
166
- unchanged++; // cosmetic = treated as unchanged for re-analysis
167
- } else {
168
- unchanged++;
169
- }
170
- }
171
-
172
- // Find removed
173
- for (const path of baseline.keys()) {
174
- if (!current.has(path)) {
175
- removed.push(path);
176
- }
177
- }
178
-
179
- return { added, removed, modified, unchanged };
180
- }