thehood 0.1.0-preview.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.
Files changed (274) hide show
  1. package/CODE_OF_CONDUCT.md +21 -0
  2. package/CONTRIBUTING.md +58 -0
  3. package/LICENSE +21 -0
  4. package/PRIVACY.md +49 -0
  5. package/README.md +264 -0
  6. package/SECURITY.md +31 -0
  7. package/dist/bridges/chatgptWebBridge.d.ts +2 -0
  8. package/dist/bridges/chatgptWebBridge.js +981 -0
  9. package/dist/bridges/chatgptWebBridge.js.map +1 -0
  10. package/dist/cli/args.d.ts +9 -0
  11. package/dist/cli/args.js +82 -0
  12. package/dist/cli/args.js.map +1 -0
  13. package/dist/cli/format.d.ts +56 -0
  14. package/dist/cli/format.js +752 -0
  15. package/dist/cli/format.js.map +1 -0
  16. package/dist/cli/main.d.ts +2 -0
  17. package/dist/cli/main.js +996 -0
  18. package/dist/cli/main.js.map +1 -0
  19. package/dist/cli/mcpConfig.d.ts +36 -0
  20. package/dist/cli/mcpConfig.js +98 -0
  21. package/dist/cli/mcpConfig.js.map +1 -0
  22. package/dist/index.d.ts +37 -0
  23. package/dist/index.js +38 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/mcp/protocol.d.ts +44 -0
  26. package/dist/mcp/protocol.js +33 -0
  27. package/dist/mcp/protocol.js.map +1 -0
  28. package/dist/mcp/server.d.ts +1 -0
  29. package/dist/mcp/server.js +106 -0
  30. package/dist/mcp/server.js.map +1 -0
  31. package/dist/mcp/tools.d.ts +10 -0
  32. package/dist/mcp/tools.js +2200 -0
  33. package/dist/mcp/tools.js.map +1 -0
  34. package/dist/mcp/validation.d.ts +8 -0
  35. package/dist/mcp/validation.js +67 -0
  36. package/dist/mcp/validation.js.map +1 -0
  37. package/dist/providers/chatgptWeb.d.ts +2 -0
  38. package/dist/providers/chatgptWeb.js +26 -0
  39. package/dist/providers/chatgptWeb.js.map +1 -0
  40. package/dist/providers/claudeCode.d.ts +4 -0
  41. package/dist/providers/claudeCode.js +32 -0
  42. package/dist/providers/claudeCode.js.map +1 -0
  43. package/dist/providers/codexCli.d.ts +6 -0
  44. package/dist/providers/codexCli.js +25 -0
  45. package/dist/providers/codexCli.js.map +1 -0
  46. package/dist/providers/codexCliModels.d.ts +23 -0
  47. package/dist/providers/codexCliModels.js +147 -0
  48. package/dist/providers/codexCliModels.js.map +1 -0
  49. package/dist/providers/localCommand.d.ts +26 -0
  50. package/dist/providers/localCommand.js +614 -0
  51. package/dist/providers/localCommand.js.map +1 -0
  52. package/dist/providers/markdownPayload.d.ts +7 -0
  53. package/dist/providers/markdownPayload.js +29 -0
  54. package/dist/providers/markdownPayload.js.map +1 -0
  55. package/dist/providers/responseSchema.d.ts +3 -0
  56. package/dist/providers/responseSchema.js +187 -0
  57. package/dist/providers/responseSchema.js.map +1 -0
  58. package/dist/providers/router.d.ts +3 -0
  59. package/dist/providers/router.js +21 -0
  60. package/dist/providers/router.js.map +1 -0
  61. package/dist/providers/stub.d.ts +2 -0
  62. package/dist/providers/stub.js +177 -0
  63. package/dist/providers/stub.js.map +1 -0
  64. package/dist/providers/types.d.ts +37 -0
  65. package/dist/providers/types.js +2 -0
  66. package/dist/providers/types.js.map +1 -0
  67. package/dist/runtime/agentBoard.d.ts +79 -0
  68. package/dist/runtime/agentBoard.js +166 -0
  69. package/dist/runtime/agentBoard.js.map +1 -0
  70. package/dist/runtime/agentBoardArtifact.d.ts +9 -0
  71. package/dist/runtime/agentBoardArtifact.js +171 -0
  72. package/dist/runtime/agentBoardArtifact.js.map +1 -0
  73. package/dist/runtime/agentRunner.d.ts +17 -0
  74. package/dist/runtime/agentRunner.js +92 -0
  75. package/dist/runtime/agentRunner.js.map +1 -0
  76. package/dist/runtime/approvalInbox.d.ts +54 -0
  77. package/dist/runtime/approvalInbox.js +143 -0
  78. package/dist/runtime/approvalInbox.js.map +1 -0
  79. package/dist/runtime/approvalPolicy.d.ts +11 -0
  80. package/dist/runtime/approvalPolicy.js +58 -0
  81. package/dist/runtime/approvalPolicy.js.map +1 -0
  82. package/dist/runtime/artifacts.d.ts +23 -0
  83. package/dist/runtime/artifacts.js +48 -0
  84. package/dist/runtime/artifacts.js.map +1 -0
  85. package/dist/runtime/browserManager.d.ts +37 -0
  86. package/dist/runtime/browserManager.js +356 -0
  87. package/dist/runtime/browserManager.js.map +1 -0
  88. package/dist/runtime/canonicalMemory.d.ts +23 -0
  89. package/dist/runtime/canonicalMemory.js +134 -0
  90. package/dist/runtime/canonicalMemory.js.map +1 -0
  91. package/dist/runtime/chatGptPageReadiness.d.ts +16 -0
  92. package/dist/runtime/chatGptPageReadiness.js +74 -0
  93. package/dist/runtime/chatGptPageReadiness.js.map +1 -0
  94. package/dist/runtime/commandRunner.d.ts +18 -0
  95. package/dist/runtime/commandRunner.js +115 -0
  96. package/dist/runtime/commandRunner.js.map +1 -0
  97. package/dist/runtime/commandSafety.d.ts +7 -0
  98. package/dist/runtime/commandSafety.js +61 -0
  99. package/dist/runtime/commandSafety.js.map +1 -0
  100. package/dist/runtime/config.d.ts +10 -0
  101. package/dist/runtime/config.js +107 -0
  102. package/dist/runtime/config.js.map +1 -0
  103. package/dist/runtime/crewLanes.d.ts +2 -0
  104. package/dist/runtime/crewLanes.js +123 -0
  105. package/dist/runtime/crewLanes.js.map +1 -0
  106. package/dist/runtime/criticPolicy.d.ts +17 -0
  107. package/dist/runtime/criticPolicy.js +50 -0
  108. package/dist/runtime/criticPolicy.js.map +1 -0
  109. package/dist/runtime/defaults.d.ts +5 -0
  110. package/dist/runtime/defaults.js +100 -0
  111. package/dist/runtime/defaults.js.map +1 -0
  112. package/dist/runtime/directives.d.ts +3 -0
  113. package/dist/runtime/directives.js +218 -0
  114. package/dist/runtime/directives.js.map +1 -0
  115. package/dist/runtime/doctor.d.ts +36 -0
  116. package/dist/runtime/doctor.js +185 -0
  117. package/dist/runtime/doctor.js.map +1 -0
  118. package/dist/runtime/errors.d.ts +20 -0
  119. package/dist/runtime/errors.js +41 -0
  120. package/dist/runtime/errors.js.map +1 -0
  121. package/dist/runtime/externalTransfer.d.ts +20 -0
  122. package/dist/runtime/externalTransfer.js +156 -0
  123. package/dist/runtime/externalTransfer.js.map +1 -0
  124. package/dist/runtime/fanout.d.ts +64 -0
  125. package/dist/runtime/fanout.js +263 -0
  126. package/dist/runtime/fanout.js.map +1 -0
  127. package/dist/runtime/gitEvidence.d.ts +10 -0
  128. package/dist/runtime/gitEvidence.js +80 -0
  129. package/dist/runtime/gitEvidence.js.map +1 -0
  130. package/dist/runtime/handoffs.d.ts +32 -0
  131. package/dist/runtime/handoffs.js +100 -0
  132. package/dist/runtime/handoffs.js.map +1 -0
  133. package/dist/runtime/ids.d.ts +2 -0
  134. package/dist/runtime/ids.js +4 -0
  135. package/dist/runtime/ids.js.map +1 -0
  136. package/dist/runtime/localStateIgnore.d.ts +9 -0
  137. package/dist/runtime/localStateIgnore.js +98 -0
  138. package/dist/runtime/localStateIgnore.js.map +1 -0
  139. package/dist/runtime/loop.d.ts +14 -0
  140. package/dist/runtime/loop.js +1863 -0
  141. package/dist/runtime/loop.js.map +1 -0
  142. package/dist/runtime/loopRecommendation.d.ts +109 -0
  143. package/dist/runtime/loopRecommendation.js +566 -0
  144. package/dist/runtime/loopRecommendation.js.map +1 -0
  145. package/dist/runtime/loopResponsibilities.d.ts +2 -0
  146. package/dist/runtime/loopResponsibilities.js +395 -0
  147. package/dist/runtime/loopResponsibilities.js.map +1 -0
  148. package/dist/runtime/loopRunner.d.ts +28 -0
  149. package/dist/runtime/loopRunner.js +81 -0
  150. package/dist/runtime/loopRunner.js.map +1 -0
  151. package/dist/runtime/operatorNextActions.d.ts +2 -0
  152. package/dist/runtime/operatorNextActions.js +344 -0
  153. package/dist/runtime/operatorNextActions.js.map +1 -0
  154. package/dist/runtime/paths.d.ts +9 -0
  155. package/dist/runtime/paths.js +14 -0
  156. package/dist/runtime/paths.js.map +1 -0
  157. package/dist/runtime/permissions.d.ts +9 -0
  158. package/dist/runtime/permissions.js +73 -0
  159. package/dist/runtime/permissions.js.map +1 -0
  160. package/dist/runtime/progressPacket.d.ts +12 -0
  161. package/dist/runtime/progressPacket.js +512 -0
  162. package/dist/runtime/progressPacket.js.map +1 -0
  163. package/dist/runtime/protectedPaths.d.ts +6 -0
  164. package/dist/runtime/protectedPaths.js +48 -0
  165. package/dist/runtime/protectedPaths.js.map +1 -0
  166. package/dist/runtime/providers.d.ts +13 -0
  167. package/dist/runtime/providers.js +60 -0
  168. package/dist/runtime/providers.js.map +1 -0
  169. package/dist/runtime/reconciliation.d.ts +17 -0
  170. package/dist/runtime/reconciliation.js +283 -0
  171. package/dist/runtime/reconciliation.js.map +1 -0
  172. package/dist/runtime/redaction.d.ts +1 -0
  173. package/dist/runtime/redaction.js +5 -0
  174. package/dist/runtime/redaction.js.map +1 -0
  175. package/dist/runtime/remoteRepoContext.d.ts +77 -0
  176. package/dist/runtime/remoteRepoContext.js +316 -0
  177. package/dist/runtime/remoteRepoContext.js.map +1 -0
  178. package/dist/runtime/repoContext.d.ts +50 -0
  179. package/dist/runtime/repoContext.js +399 -0
  180. package/dist/runtime/repoContext.js.map +1 -0
  181. package/dist/runtime/repoGateway.d.ts +64 -0
  182. package/dist/runtime/repoGateway.js +308 -0
  183. package/dist/runtime/repoGateway.js.map +1 -0
  184. package/dist/runtime/responseContracts.d.ts +3 -0
  185. package/dist/runtime/responseContracts.js +86 -0
  186. package/dist/runtime/responseContracts.js.map +1 -0
  187. package/dist/runtime/reviewLanes.d.ts +2 -0
  188. package/dist/runtime/reviewLanes.js +343 -0
  189. package/dist/runtime/reviewLanes.js.map +1 -0
  190. package/dist/runtime/reviewRouting.d.ts +51 -0
  191. package/dist/runtime/reviewRouting.js +152 -0
  192. package/dist/runtime/reviewRouting.js.map +1 -0
  193. package/dist/runtime/revisionPacket.d.ts +38 -0
  194. package/dist/runtime/revisionPacket.js +144 -0
  195. package/dist/runtime/revisionPacket.js.map +1 -0
  196. package/dist/runtime/revisionTrail.d.ts +2 -0
  197. package/dist/runtime/revisionTrail.js +162 -0
  198. package/dist/runtime/revisionTrail.js.map +1 -0
  199. package/dist/runtime/role-assignment.d.ts +4 -0
  200. package/dist/runtime/role-assignment.js +21 -0
  201. package/dist/runtime/role-assignment.js.map +1 -0
  202. package/dist/runtime/roleRoster.d.ts +28 -0
  203. package/dist/runtime/roleRoster.js +96 -0
  204. package/dist/runtime/roleRoster.js.map +1 -0
  205. package/dist/runtime/runInsights.d.ts +121 -0
  206. package/dist/runtime/runInsights.js +305 -0
  207. package/dist/runtime/runInsights.js.map +1 -0
  208. package/dist/runtime/runMonitor.d.ts +33 -0
  209. package/dist/runtime/runMonitor.js +143 -0
  210. package/dist/runtime/runMonitor.js.map +1 -0
  211. package/dist/runtime/runtime.d.ts +15 -0
  212. package/dist/runtime/runtime.js +199 -0
  213. package/dist/runtime/runtime.js.map +1 -0
  214. package/dist/runtime/runtimeInfo.d.ts +9 -0
  215. package/dist/runtime/runtimeInfo.js +76 -0
  216. package/dist/runtime/runtimeInfo.js.map +1 -0
  217. package/dist/runtime/store.d.ts +4 -0
  218. package/dist/runtime/store.js +48 -0
  219. package/dist/runtime/store.js.map +1 -0
  220. package/dist/runtime/summons.d.ts +25 -0
  221. package/dist/runtime/summons.js +403 -0
  222. package/dist/runtime/summons.js.map +1 -0
  223. package/dist/runtime/teamPresets.d.ts +14 -0
  224. package/dist/runtime/teamPresets.js +153 -0
  225. package/dist/runtime/teamPresets.js.map +1 -0
  226. package/dist/runtime/types.d.ts +505 -0
  227. package/dist/runtime/types.js +28 -0
  228. package/dist/runtime/types.js.map +1 -0
  229. package/dist/runtime/validationCommands.d.ts +18 -0
  230. package/dist/runtime/validationCommands.js +106 -0
  231. package/dist/runtime/validationCommands.js.map +1 -0
  232. package/dist/tui/dashboard.d.ts +41 -0
  233. package/dist/tui/dashboard.js +1115 -0
  234. package/dist/tui/dashboard.js.map +1 -0
  235. package/docs/ARCHITECTURE.md +277 -0
  236. package/docs/CLI_SPEC.md +396 -0
  237. package/docs/CODEX_SETUP.md +288 -0
  238. package/docs/COMPLETION_CONTRACT.md +52 -0
  239. package/docs/CONTRIBUTOR_GUIDE.md +70 -0
  240. package/docs/DEMO.md +62 -0
  241. package/docs/GLOSSARY.md +46 -0
  242. package/docs/GOAL_LOOP_SCHEDULE.md +50 -0
  243. package/docs/KNOWN_LIMITATIONS.md +29 -0
  244. package/docs/LICENSING.md +21 -0
  245. package/docs/LOOP_RECIPES.md +290 -0
  246. package/docs/LOOP_SELECTION_UX.md +118 -0
  247. package/docs/MCP_SPEC.md +689 -0
  248. package/docs/MEMORY_AND_RECONCILIATION.md +222 -0
  249. package/docs/NPM_PUBLISHING.md +51 -0
  250. package/docs/OPEN_DECISIONS.md +81 -0
  251. package/docs/PROMPT_SCHEMAS.md +411 -0
  252. package/docs/PROVIDER_ADAPTERS.md +323 -0
  253. package/docs/PROVIDER_MATRIX.md +21 -0
  254. package/docs/PUBLIC_REPO_READINESS.md +49 -0
  255. package/docs/RESEARCH_NOTES.md +92 -0
  256. package/docs/ROADMAP.md +94 -0
  257. package/docs/ROLE_CONTRACTS.md +252 -0
  258. package/docs/RUNTIME_LOOP.md +240 -0
  259. package/docs/SECURITY_AND_PRIVACY.md +161 -0
  260. package/docs/TESTING_AND_VERIFICATION.md +180 -0
  261. package/docs/TRUST_MODEL.md +65 -0
  262. package/docs/decisions/0001-runtime-first-cli-and-mcp.md +23 -0
  263. package/docs/decisions/0002-provider-neutral-role-mapping.md +43 -0
  264. package/docs/decisions/0003-separate-implementation-and-verification.md +27 -0
  265. package/docs/product/README.md +14 -0
  266. package/docs/product/model-selection.md +88 -0
  267. package/docs/product/positioning.md +37 -0
  268. package/docs/product/pro-usage-modes.md +70 -0
  269. package/docs/product/roadmap.md +57 -0
  270. package/docs/product/role-policy.md +89 -0
  271. package/docs/product/runtime-invariants.md +44 -0
  272. package/docs/release/v0.1.0-preview.0.md +48 -0
  273. package/examples/stub-demo/README.md +25 -0
  274. package/package.json +55 -0
@@ -0,0 +1,505 @@
1
+ export type JsonPrimitive = string | number | boolean | null;
2
+ export type JsonValue = JsonPrimitive | JsonValue[] | {
3
+ [key: string]: JsonValue;
4
+ };
5
+ export type JsonObject = {
6
+ [key: string]: JsonValue;
7
+ };
8
+ export declare const runModes: readonly ["plan", "research", "implement", "review"];
9
+ export type RunMode = (typeof runModes)[number];
10
+ export declare const runStates: readonly ["created", "planning", "awaiting_approval", "delegating", "implementing", "verifying", "critiquing", "integrating", "completed", "failed", "aborted"];
11
+ export type RunState = (typeof runStates)[number];
12
+ export declare const runtimeRoles: readonly ["orchestrator", "planner", "researcher", "implementer", "qa", "verifier", "critic", "integrator", "citation"];
13
+ export type RuntimeRole = (typeof runtimeRoles)[number];
14
+ export declare const approvalDecisions: readonly ["approve", "reject", "revise"];
15
+ export type ApprovalDecision = (typeof approvalDecisions)[number];
16
+ export interface RoleAssignment {
17
+ provider: string;
18
+ model: string;
19
+ }
20
+ export type RoleMap = Partial<Record<RuntimeRole, RoleAssignment>>;
21
+ export declare const providerAccessModes: readonly ["agent-bridge", "api-agent", "mcp-connector"];
22
+ export type ProviderAccessMode = (typeof providerAccessModes)[number];
23
+ export interface RuntimeDefaults {
24
+ maxIterations: number;
25
+ fanoutMaxItems: number;
26
+ editRequiresApproval: boolean;
27
+ dependencyInstallRequiresApproval: boolean;
28
+ networkRequiresApproval: boolean;
29
+ protectedTestPaths: string[];
30
+ }
31
+ export type ApprovalPolicyMode = "manual" | "auto_low_risk" | "autopilot";
32
+ export type ExternalTransferApprovalMode = "manual" | "auto_low_risk";
33
+ export type ExternalTransferPolicyDecision = "manual" | "auto_approve";
34
+ export interface ExternalTransferPolicyRule {
35
+ provider?: string;
36
+ model?: string;
37
+ purposes?: ExternalTransferPurpose[];
38
+ riskClasses?: ExternalTransferRiskClass[];
39
+ maxBytes?: number;
40
+ decision: ExternalTransferPolicyDecision;
41
+ }
42
+ export interface ExternalTransferApprovalPolicy {
43
+ mode: ExternalTransferApprovalMode;
44
+ maxAutoApproveBytes: number;
45
+ rules: ExternalTransferPolicyRule[];
46
+ }
47
+ export interface ApprovalPolicy {
48
+ mode: ApprovalPolicyMode;
49
+ externalTransfers: ExternalTransferApprovalPolicy;
50
+ }
51
+ export interface ProviderConfig {
52
+ enabled: boolean;
53
+ models: string[];
54
+ accessModes?: ProviderAccessMode[];
55
+ defaultAccessMode?: ProviderAccessMode;
56
+ apiKeyEnv?: string;
57
+ browserProfile?: string;
58
+ }
59
+ export interface TheHoodConfig {
60
+ version: 1;
61
+ defaults: RuntimeDefaults;
62
+ approvalPolicy: ApprovalPolicy;
63
+ providers: Record<string, ProviderConfig>;
64
+ roles: RoleMap;
65
+ }
66
+ export type RunArtifactKind = "plan" | "diff" | "log" | "report" | "metadata" | "status" | "agent" | "directive" | "context" | "remote_context" | "progress" | "reconciliation" | "critic_trigger" | "revision_packet" | "review_routing" | "fanout" | "provider_invocation" | "transfer_manifest";
67
+ export interface RunArtifact {
68
+ kind: RunArtifactKind;
69
+ ref: string;
70
+ summary: string;
71
+ }
72
+ export type CommandSafetyCategory = "read_only" | "local_write" | "dependency_install" | "network" | "destructive" | "credential_sensitive" | "unknown";
73
+ export interface ApprovalEvent {
74
+ id: string;
75
+ createdAt: string;
76
+ decision: ApprovalDecision;
77
+ reason: string;
78
+ }
79
+ export interface ToolEvent {
80
+ id: string;
81
+ createdAt: string;
82
+ tool: string;
83
+ command: string;
84
+ args: string[];
85
+ cwd: string;
86
+ exitCode: number;
87
+ durationMs: number;
88
+ safetyCategory: CommandSafetyCategory;
89
+ permissionDecision: "allowed" | "allowed_explicit_user" | "denied";
90
+ stdoutRef?: string;
91
+ stderrRef?: string;
92
+ }
93
+ export interface RunEvent {
94
+ id: string;
95
+ createdAt: string;
96
+ type: string;
97
+ message: string;
98
+ data?: JsonObject;
99
+ }
100
+ export type RunHandoffKind = "agent_handoff" | "approval_gate" | "approval_auto_approved" | "completion";
101
+ export interface RunHandoffEvent {
102
+ id: string;
103
+ createdAt: string;
104
+ kind: RunHandoffKind;
105
+ reason: string;
106
+ stateBefore: RunState;
107
+ stateAfter: RunState;
108
+ fromRole?: RuntimeRole;
109
+ fromProvider?: string;
110
+ fromModel?: string;
111
+ toRole?: RuntimeRole;
112
+ toProvider?: string;
113
+ toModel?: string;
114
+ gate?: string;
115
+ approvalEventId?: string;
116
+ artifactRefs?: string[];
117
+ }
118
+ export interface RunRecord {
119
+ runId: string;
120
+ createdAt: string;
121
+ updatedAt: string;
122
+ repoPath: string;
123
+ userGoal: string;
124
+ mode: RunMode;
125
+ state: RunState;
126
+ preferredRole?: RuntimeRole;
127
+ roleMapping: RoleMap;
128
+ constraints: string[];
129
+ maxIterations: number;
130
+ approvalRequired: boolean;
131
+ approvalReason?: string;
132
+ stopReason?: string;
133
+ artifacts: RunArtifact[];
134
+ approvalEvents: ApprovalEvent[];
135
+ toolEvents: ToolEvent[];
136
+ events: RunEvent[];
137
+ handoffs: RunHandoffEvent[];
138
+ }
139
+ export type ProgressPacketSourceKind = "run_record" | "run_artifact" | "run_event" | "approval_event" | "tool_event";
140
+ export interface ProgressPacketSourceRef {
141
+ kind: ProgressPacketSourceKind;
142
+ runId: string;
143
+ id?: string;
144
+ ref?: string;
145
+ eventType?: string;
146
+ }
147
+ export type ReviewLaneKind = "reviewer" | "tester" | "qa" | "critic";
148
+ export type ReviewLaneState = "pending" | "satisfied" | "needs_revision" | "blocked" | "failed";
149
+ export type ReviewLaneSourceKind = "required_gate" | "verifier_response" | "qa_response" | "critic_response" | "validation_evidence" | "summon_evidence";
150
+ export type ReviewLaneOwnerKind = "role" | "runtime";
151
+ export interface ReviewLaneOwner {
152
+ kind: ReviewLaneOwnerKind;
153
+ label: string;
154
+ readOnly: boolean;
155
+ role?: RuntimeRole;
156
+ provider?: string;
157
+ model?: string;
158
+ assignment?: string;
159
+ }
160
+ export interface ReviewLaneEvidence {
161
+ sourceKind: ReviewLaneSourceKind;
162
+ summary: string;
163
+ sourceRefs: ProgressPacketSourceRef[];
164
+ artifactRefs: string[];
165
+ eventRefs: string[];
166
+ canSatisfyRequired: boolean;
167
+ }
168
+ export interface ReviewLane {
169
+ id: string;
170
+ label: string;
171
+ kind: ReviewLaneKind;
172
+ state: ReviewLaneState;
173
+ required: boolean;
174
+ sourceKind: ReviewLaneSourceKind;
175
+ summary: string;
176
+ sourceRefs: ProgressPacketSourceRef[];
177
+ artifactRefs: string[];
178
+ eventRefs: string[];
179
+ owner: ReviewLaneOwner;
180
+ canSatisfyRequired: boolean;
181
+ satisfiesRequired: boolean;
182
+ sidecarEvidence: ReviewLaneEvidence[];
183
+ role?: RuntimeRole;
184
+ }
185
+ export type OperatorNextActionKind = "review_approval_reason" | "inspect_artifact" | "inspect_final_report" | "inspect_progress_packet" | "preview_external_transfer" | "continue_with_approval" | "reject_or_revise" | "continue" | "inspect_status" | "inspect_artifacts" | "reconcile" | "wait_for_provider" | "review_required" | "validation_required" | "terminal_complete" | "terminal_failed" | "terminal_aborted";
186
+ export type OperatorNextActionOwnerKind = "runtime" | "role";
187
+ export interface OperatorNextActionOwner {
188
+ kind: OperatorNextActionOwnerKind;
189
+ label: string;
190
+ role?: RuntimeRole;
191
+ }
192
+ export interface OperatorNextActionArtifact {
193
+ kind: RunArtifactKind;
194
+ ref: string;
195
+ summary: string;
196
+ }
197
+ export interface OperatorNextAction {
198
+ action: OperatorNextActionKind;
199
+ label: string;
200
+ description: string;
201
+ owner: OperatorNextActionOwner;
202
+ blocking: boolean;
203
+ required: boolean;
204
+ state: string;
205
+ reason: string;
206
+ generatedAt: string;
207
+ artifactRefs: string[];
208
+ eventRefs: string[];
209
+ commandHint?: string;
210
+ mcpToolHint?: string;
211
+ tool?: string;
212
+ arguments?: JsonObject;
213
+ artifact?: OperatorNextActionArtifact;
214
+ }
215
+ export type LoopResponsibilityKind = "plan" | "implement" | "test" | "verify" | "qa" | "critique" | "reconcile" | "integrate" | "operator_approval" | "complete";
216
+ export type LoopResponsibilityStatus = "pending" | "ready" | "in_progress" | "satisfied" | "blocked" | "skipped" | "advisory";
217
+ export type LoopResponsibilityOwnerKind = "runtime" | "role";
218
+ export interface LoopResponsibilityOwner {
219
+ kind: LoopResponsibilityOwnerKind;
220
+ label: string;
221
+ role?: RuntimeRole;
222
+ provider?: string;
223
+ model?: string;
224
+ assignment?: string;
225
+ readOnly?: boolean;
226
+ }
227
+ export interface LoopResponsibility {
228
+ id: string;
229
+ kind: LoopResponsibilityKind;
230
+ label: string;
231
+ owner: LoopResponsibilityOwner;
232
+ required: boolean;
233
+ blocking: boolean;
234
+ status: LoopResponsibilityStatus;
235
+ state: RunState;
236
+ reason: string;
237
+ canSatisfyGate: boolean;
238
+ artifactRefs: string[];
239
+ eventRefs: string[];
240
+ handoffRefs: string[];
241
+ sidecarOnly?: boolean;
242
+ }
243
+ export interface LoopResponsibilitySchedule {
244
+ schemaVersion: 1;
245
+ kind: "loop_responsibility_schedule";
246
+ runId: string;
247
+ generatedAt: string;
248
+ phase: RunState;
249
+ responsibilities: LoopResponsibility[];
250
+ blockers: LoopResponsibility[];
251
+ }
252
+ export type CrewLaneAuthority = "runtime" | "edit" | "read_only" | "operator";
253
+ export type CrewLaneSourceKind = "loop_responsibility" | "review_lane";
254
+ export interface CrewLane {
255
+ id: string;
256
+ kind: LoopResponsibilityKind;
257
+ label: string;
258
+ owner: LoopResponsibilityOwner;
259
+ authority: CrewLaneAuthority;
260
+ required: boolean;
261
+ blocking: boolean;
262
+ status: LoopResponsibilityStatus;
263
+ state: RunState;
264
+ sourceKind: CrewLaneSourceKind;
265
+ summary: string;
266
+ responsibilityId: string;
267
+ reviewLaneId?: string;
268
+ canSatisfyGate: boolean;
269
+ satisfiesRequired: boolean;
270
+ artifactRefs: string[];
271
+ eventRefs: string[];
272
+ handoffRefs: string[];
273
+ sourceRefs: ProgressPacketSourceRef[];
274
+ sidecarOnly?: boolean;
275
+ }
276
+ export interface CrewLaneTrail {
277
+ schemaVersion: 1;
278
+ kind: "crew_lane_trail";
279
+ runId: string;
280
+ generatedAt: string;
281
+ phase: RunState;
282
+ lanes: CrewLane[];
283
+ blockers: CrewLane[];
284
+ }
285
+ export type RevisionTrailStatus = "packet_written" | "delegated" | "repairing" | "repair_reported" | "awaiting_review" | "reviewed" | "superseded";
286
+ export interface RevisionTrailItem {
287
+ id: string;
288
+ status: RevisionTrailStatus;
289
+ active: boolean;
290
+ packetArtifactRef: string;
291
+ sourceRole?: RuntimeRole;
292
+ reasonCode?: string;
293
+ repairObjective?: string;
294
+ sourceResponseRef?: string;
295
+ criticTriggerRef?: string;
296
+ repairResponseRef?: string;
297
+ completedEventRef?: string;
298
+ evidenceRefs: string[];
299
+ validationArtifactRefs: string[];
300
+ reviewResponseRefs: string[];
301
+ artifactRefs: string[];
302
+ eventRefs: string[];
303
+ handoffRefs: string[];
304
+ sourceRefs: ProgressPacketSourceRef[];
305
+ }
306
+ export interface RevisionTrail {
307
+ schemaVersion: 1;
308
+ kind: "revision_trail";
309
+ runId: string;
310
+ generatedAt: string;
311
+ phase: RunState;
312
+ items: RevisionTrailItem[];
313
+ latest?: RevisionTrailItem;
314
+ }
315
+ export interface ProgressPacketLimits {
316
+ maxArtifacts: number;
317
+ maxProviderResponses: number;
318
+ maxApprovalEvents: number;
319
+ maxToolEvents: number;
320
+ maxRunEvents: number;
321
+ maxOpenQuestions: number;
322
+ maxReviewLanes: number;
323
+ maxOperatorNextActions: number;
324
+ maxLoopResponsibilities: number;
325
+ maxCrewLanes: number;
326
+ maxRevisionTrailItems: number;
327
+ maxStringLength: number;
328
+ }
329
+ export interface ProgressPacketSectionBounds {
330
+ included: number;
331
+ omitted: number;
332
+ truncated: boolean;
333
+ }
334
+ export interface ProgressPacketBounds {
335
+ limits: ProgressPacketLimits;
336
+ sections: Record<string, ProgressPacketSectionBounds>;
337
+ truncated: boolean;
338
+ textFieldsTruncated: number;
339
+ }
340
+ export interface ProgressPacketBoundedSection<T> {
341
+ items: T[];
342
+ omitted: number;
343
+ truncated: boolean;
344
+ }
345
+ export interface ProgressPacketArtifactRef {
346
+ kind: RunArtifactKind;
347
+ ref: string;
348
+ summary: string;
349
+ canonical: true;
350
+ source: ProgressPacketSourceRef;
351
+ }
352
+ export interface ProgressPacketApproval {
353
+ id: string;
354
+ createdAt: string;
355
+ decision: ApprovalDecision;
356
+ reason: string;
357
+ source: ProgressPacketSourceRef;
358
+ }
359
+ export interface ProgressPacketToolEvidence {
360
+ id: string;
361
+ createdAt: string;
362
+ tool: string;
363
+ command: string;
364
+ args: string[];
365
+ cwd: string;
366
+ exitCode: number;
367
+ durationMs: number;
368
+ safetyCategory: CommandSafetyCategory;
369
+ permissionDecision: ToolEvent["permissionDecision"];
370
+ stdoutRef?: string;
371
+ stderrRef?: string;
372
+ source: ProgressPacketSourceRef;
373
+ }
374
+ export interface ProgressPacketRunEvent {
375
+ id: string;
376
+ createdAt: string;
377
+ type: string;
378
+ message: string;
379
+ data?: JsonObject;
380
+ source: ProgressPacketSourceRef;
381
+ }
382
+ export interface ProgressPacketProviderResponse {
383
+ role?: RuntimeRole;
384
+ provider?: string;
385
+ model?: string;
386
+ status?: string;
387
+ summary: string;
388
+ artifact?: ProgressPacketArtifactRef;
389
+ event?: ProgressPacketRunEvent;
390
+ sourceRefs: ProgressPacketSourceRef[];
391
+ }
392
+ export interface ProgressPacketEvidenceGroup {
393
+ artifacts: ProgressPacketBoundedSection<ProgressPacketArtifactRef>;
394
+ events: ProgressPacketBoundedSection<ProgressPacketRunEvent>;
395
+ toolEvents: ProgressPacketBoundedSection<ProgressPacketToolEvidence>;
396
+ }
397
+ export interface ProgressPacketOpenQuestion {
398
+ severity: "info" | "risk" | "blocking";
399
+ question: string;
400
+ sourceRefs: ProgressPacketSourceRef[];
401
+ }
402
+ export interface ProgressPacketRunSnapshot {
403
+ runId: string;
404
+ repoPath: string;
405
+ userGoal: string;
406
+ mode: RunMode;
407
+ state: RunState;
408
+ createdAt: string;
409
+ updatedAt: string;
410
+ approvalRequired: boolean;
411
+ approvalReason?: string;
412
+ stopReason?: string;
413
+ maxIterations: number;
414
+ artifactCount: number;
415
+ approvalEventCount: number;
416
+ toolEventCount: number;
417
+ runEventCount: number;
418
+ providerResponseCount: number;
419
+ source: ProgressPacketSourceRef;
420
+ }
421
+ export interface ProgressPacketLatestState {
422
+ plan?: ProgressPacketArtifactRef;
423
+ providerResponse?: ProgressPacketProviderResponse;
424
+ providerExecution?: ProgressPacketArtifactRef;
425
+ verifierResponse?: ProgressPacketProviderResponse;
426
+ criticTrigger?: ProgressPacketArtifactRef;
427
+ revisionPacket?: ProgressPacketArtifactRef;
428
+ finalReport?: ProgressPacketArtifactRef;
429
+ repoContext?: ProgressPacketArtifactRef;
430
+ }
431
+ export interface ProgressPacketEvidence {
432
+ artifacts: ProgressPacketBoundedSection<ProgressPacketArtifactRef>;
433
+ providerResponses: ProgressPacketBoundedSection<ProgressPacketProviderResponse>;
434
+ approvals: ProgressPacketBoundedSection<ProgressPacketApproval>;
435
+ toolEvents: ProgressPacketBoundedSection<ProgressPacketToolEvidence>;
436
+ runEvents: ProgressPacketBoundedSection<ProgressPacketRunEvent>;
437
+ git: ProgressPacketEvidenceGroup;
438
+ validation: ProgressPacketEvidenceGroup;
439
+ verifierVerdicts: ProgressPacketBoundedSection<ProgressPacketProviderResponse>;
440
+ }
441
+ export interface ProgressPacketProvenance {
442
+ canonicalSources: ProgressPacketSourceRef[];
443
+ derivedFields: string[];
444
+ notes: string[];
445
+ }
446
+ export interface ProgressPacket {
447
+ schemaVersion: 1;
448
+ kind: "progress_packet";
449
+ ontologyVersion: "initial";
450
+ ontologyTerms: string[];
451
+ run: ProgressPacketRunSnapshot;
452
+ roleMapping: RoleMap;
453
+ latest: ProgressPacketLatestState;
454
+ reviewLanes: ProgressPacketBoundedSection<ReviewLane>;
455
+ operatorNextActions: ProgressPacketBoundedSection<OperatorNextAction>;
456
+ loopResponsibilities: ProgressPacketBoundedSection<LoopResponsibility>;
457
+ crewLanes: ProgressPacketBoundedSection<CrewLane>;
458
+ revisionTrail: ProgressPacketBoundedSection<RevisionTrailItem>;
459
+ evidence: ProgressPacketEvidence;
460
+ openQuestions: ProgressPacketBoundedSection<ProgressPacketOpenQuestion>;
461
+ provenance: ProgressPacketProvenance;
462
+ bounds: ProgressPacketBounds;
463
+ }
464
+ export type ExternalTransferPurpose = "repo_context" | "progress_packet" | "memory_packet" | "reconciliation";
465
+ export type ExternalTransferRiskClass = "public" | "repo_context" | "private_runtime_memory" | "secret_risk";
466
+ export interface ExternalTransferArtifactRef {
467
+ kind: RunArtifactKind;
468
+ ref: string;
469
+ summary: string;
470
+ byteLength: number;
471
+ truncated: boolean;
472
+ sha256: string;
473
+ }
474
+ export interface ExternalTransferRisk {
475
+ class: ExternalTransferRiskClass;
476
+ reasons: string[];
477
+ secretPatternHits: number;
478
+ }
479
+ export interface ExternalTransferManifest {
480
+ schemaVersion: 1;
481
+ kind: "external_transfer_manifest";
482
+ runId: string;
483
+ createdAt: string;
484
+ destination: RoleAssignment;
485
+ role: RuntimeRole;
486
+ purpose: ExternalTransferPurpose;
487
+ approvalPhrase: string;
488
+ approvalHint: string;
489
+ artifacts: ExternalTransferArtifactRef[];
490
+ totalBytes: number;
491
+ risk: ExternalTransferRisk;
492
+ redaction: {
493
+ status: "not_applied" | "applied";
494
+ notes: string[];
495
+ };
496
+ preview: {
497
+ maxBytes: number;
498
+ content: string;
499
+ truncated: boolean;
500
+ };
501
+ provenance: {
502
+ sourceArtifactRefs: string[];
503
+ notes: string[];
504
+ };
505
+ }
@@ -0,0 +1,28 @@
1
+ export const runModes = ["plan", "research", "implement", "review"];
2
+ export const runStates = [
3
+ "created",
4
+ "planning",
5
+ "awaiting_approval",
6
+ "delegating",
7
+ "implementing",
8
+ "verifying",
9
+ "critiquing",
10
+ "integrating",
11
+ "completed",
12
+ "failed",
13
+ "aborted"
14
+ ];
15
+ export const runtimeRoles = [
16
+ "orchestrator",
17
+ "planner",
18
+ "researcher",
19
+ "implementer",
20
+ "qa",
21
+ "verifier",
22
+ "critic",
23
+ "integrator",
24
+ "citation"
25
+ ];
26
+ export const approvalDecisions = ["approve", "reject", "revise"];
27
+ export const providerAccessModes = ["agent-bridge", "api-agent", "mcp-connector"];
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAG7E,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS;IACT,UAAU;IACV,mBAAmB;IACnB,YAAY;IACZ,cAAc;IACd,WAAW;IACX,YAAY;IACZ,aAAa;IACb,WAAW;IACX,QAAQ;IACR,SAAS;CACD,CAAC;AAGX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc;IACd,SAAS;IACT,YAAY;IACZ,aAAa;IACb,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,UAAU;CACF,CAAC;AAGX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAU1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,eAAe,CAAU,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { RunArtifact, RunRecord, ToolEvent } from "./types.js";
2
+ export interface ValidationCommand {
3
+ script: string;
4
+ command: string;
5
+ args: string[];
6
+ }
7
+ export interface ValidationCommandResult extends ValidationCommand {
8
+ event: ToolEvent;
9
+ }
10
+ export interface ValidationEvidenceResult {
11
+ run: RunRecord;
12
+ discoveredCommands: ValidationCommand[];
13
+ executedCommands: ValidationCommandResult[];
14
+ failedCommands: ValidationCommandResult[];
15
+ artifact: RunArtifact;
16
+ }
17
+ export declare const discoverValidationCommands: (repoPathInput: string) => Promise<ValidationCommand[]>;
18
+ export declare const captureValidationEvidence: (run: RunRecord) => Promise<ValidationEvidenceResult>;
@@ -0,0 +1,106 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { writeRunArtifact } from "./artifacts.js";
4
+ import { runRuntimeCommand } from "./commandRunner.js";
5
+ import { newId, nowIso } from "./ids.js";
6
+ import { resolveRepoPath } from "./paths.js";
7
+ import { loadRun, saveRun } from "./store.js";
8
+ const preferredValidationScripts = ["typecheck", "test", "lint", "build"];
9
+ const createEvent = (type, message, data) => ({
10
+ id: newId("event"),
11
+ createdAt: nowIso(),
12
+ type,
13
+ message,
14
+ ...(data ? { data } : {})
15
+ });
16
+ const readPackageJson = async (repoPath) => {
17
+ try {
18
+ const raw = await fs.readFile(path.join(repoPath, "package.json"), "utf8");
19
+ return JSON.parse(raw);
20
+ }
21
+ catch (error) {
22
+ if (error.code === "ENOENT") {
23
+ return undefined;
24
+ }
25
+ throw error;
26
+ }
27
+ };
28
+ export const discoverValidationCommands = async (repoPathInput) => {
29
+ const repoPath = resolveRepoPath(repoPathInput);
30
+ const packageJson = await readPackageJson(repoPath);
31
+ const scripts = packageJson?.scripts ?? {};
32
+ return preferredValidationScripts.flatMap((script) => typeof scripts[script] === "string"
33
+ ? [
34
+ {
35
+ script,
36
+ command: "npm",
37
+ args: ["run", script]
38
+ }
39
+ ]
40
+ : []);
41
+ };
42
+ export const captureValidationEvidence = async (run) => {
43
+ const discoveredCommands = await discoverValidationCommands(run.repoPath);
44
+ const selectedCommands = discoveredCommands.slice(0, 1);
45
+ const executedCommands = [];
46
+ let latestRun = run;
47
+ for (const command of selectedCommands) {
48
+ const result = await runRuntimeCommand({
49
+ repoPath: latestRun.repoPath,
50
+ runId: latestRun.runId,
51
+ tool: `validation_${command.script}`,
52
+ command: command.command,
53
+ args: command.args
54
+ });
55
+ latestRun = result.run;
56
+ executedCommands.push({
57
+ ...command,
58
+ event: result.event
59
+ });
60
+ }
61
+ const failedCommands = executedCommands.filter((command) => command.event.exitCode !== 0);
62
+ const artifact = await writeRunArtifact({
63
+ repoPath: latestRun.repoPath,
64
+ runId: latestRun.runId,
65
+ kind: "metadata",
66
+ name: "validation-summary.json",
67
+ content: `${JSON.stringify({
68
+ discoveredCommands,
69
+ executedCommands: executedCommands.map((command) => ({
70
+ script: command.script,
71
+ command: command.command,
72
+ args: command.args,
73
+ toolEventId: command.event.id,
74
+ exitCode: command.event.exitCode,
75
+ stdoutRef: command.event.stdoutRef,
76
+ stderrRef: command.event.stderrRef
77
+ })),
78
+ failedCommandCount: failedCommands.length
79
+ }, null, 2)}\n`,
80
+ summary: `Validation summary for ${executedCommands.length} command(s), ${failedCommands.length} failed.`
81
+ });
82
+ const currentRun = await loadRun(latestRun.repoPath, latestRun.runId);
83
+ const updated = {
84
+ ...currentRun,
85
+ updatedAt: nowIso(),
86
+ artifacts: [...currentRun.artifacts, artifact],
87
+ events: [
88
+ ...currentRun.events,
89
+ createEvent("validation_evidence_captured", "Captured runtime validation evidence.", {
90
+ discoveredCommandCount: discoveredCommands.length,
91
+ executedCommandCount: executedCommands.length,
92
+ failedCommandCount: failedCommands.length,
93
+ artifactRef: artifact.ref
94
+ })
95
+ ]
96
+ };
97
+ await saveRun(updated);
98
+ return {
99
+ run: updated,
100
+ discoveredCommands,
101
+ executedCommands,
102
+ failedCommands,
103
+ artifact
104
+ };
105
+ };
106
+ //# sourceMappingURL=validationCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationCommands.js","sourceRoot":"","sources":["../../src/runtime/validationCommands.ts"],"names":[],"mappings":"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"}