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,512 @@
1
+ import { writeRunArtifact } from "./artifacts.js";
2
+ import { deriveCrewLaneTrail } from "./crewLanes.js";
3
+ import { newId, nowIso } from "./ids.js";
4
+ import { deriveLoopResponsibilitySchedule } from "./loopResponsibilities.js";
5
+ import { deriveOperatorNextActions } from "./operatorNextActions.js";
6
+ import { deriveReviewLanes } from "./reviewLanes.js";
7
+ import { deriveRevisionTrail } from "./revisionTrail.js";
8
+ import { loadRun, saveRun } from "./store.js";
9
+ import { runtimeRoles } from "./types.js";
10
+ export const defaultProgressPacketLimits = {
11
+ maxArtifacts: 40,
12
+ maxProviderResponses: 20,
13
+ maxApprovalEvents: 20,
14
+ maxToolEvents: 40,
15
+ maxRunEvents: 60,
16
+ maxOpenQuestions: 20,
17
+ maxReviewLanes: 12,
18
+ maxOperatorNextActions: 8,
19
+ maxLoopResponsibilities: 12,
20
+ maxCrewLanes: 12,
21
+ maxRevisionTrailItems: 8,
22
+ maxStringLength: 1000
23
+ };
24
+ const ontologyTerms = [
25
+ "Run",
26
+ "Plan",
27
+ "Slice",
28
+ "Task",
29
+ "Agent",
30
+ "Role",
31
+ "Artifact",
32
+ "Evidence",
33
+ "Approval",
34
+ "Commit",
35
+ "Validation",
36
+ "VerifierVerdict",
37
+ "ReviewLane",
38
+ "ReviewOwner",
39
+ "ReviewGate",
40
+ "SidecarEvidence",
41
+ "QA",
42
+ "CriticTrigger",
43
+ "RevisionPacket",
44
+ "LoopResponsibility",
45
+ "LoopResponsibilitySchedule",
46
+ "CrewLane",
47
+ "CrewLaneTrail",
48
+ "RevisionTrail",
49
+ "RevisionTrailItem",
50
+ "OperatorNextAction",
51
+ "OperatorActionOwner",
52
+ "Reconciliation",
53
+ "Decision"
54
+ ];
55
+ const progressPacketArtifactKind = "progress";
56
+ const mergeLimits = (limits) => ({
57
+ ...defaultProgressPacketLimits,
58
+ ...limits
59
+ });
60
+ const createBuildState = (limits) => ({
61
+ limits,
62
+ bounds: {
63
+ limits,
64
+ sections: {},
65
+ truncated: false,
66
+ textFieldsTruncated: 0
67
+ }
68
+ });
69
+ const markTextTruncated = (state) => {
70
+ state.bounds.truncated = true;
71
+ state.bounds.textFieldsTruncated += 1;
72
+ };
73
+ const truncateText = (value, state) => {
74
+ if (value.length <= state.limits.maxStringLength) {
75
+ return value;
76
+ }
77
+ markTextTruncated(state);
78
+ const suffix = "...[truncated]";
79
+ const prefixLength = Math.max(0, state.limits.maxStringLength - suffix.length);
80
+ return `${value.slice(0, prefixLength)}${suffix}`;
81
+ };
82
+ const boundedSection = (name, items, limit, state, mapItem) => {
83
+ const omitted = Math.max(0, items.length - limit);
84
+ const selected = items.slice(omitted);
85
+ const truncated = omitted > 0;
86
+ if (truncated) {
87
+ state.bounds.truncated = true;
88
+ }
89
+ state.bounds.sections[name] = {
90
+ included: selected.length,
91
+ omitted,
92
+ truncated
93
+ };
94
+ return {
95
+ items: selected.map(mapItem),
96
+ omitted,
97
+ truncated
98
+ };
99
+ };
100
+ const runSource = (run) => ({
101
+ kind: "run_record",
102
+ runId: run.runId
103
+ });
104
+ const artifactSource = (run, artifact) => ({
105
+ kind: "run_artifact",
106
+ runId: run.runId,
107
+ ref: artifact.ref
108
+ });
109
+ const approvalSource = (run, event) => ({
110
+ kind: "approval_event",
111
+ runId: run.runId,
112
+ id: event.id
113
+ });
114
+ const toolSource = (run, event) => ({
115
+ kind: "tool_event",
116
+ runId: run.runId,
117
+ id: event.id
118
+ });
119
+ const eventSource = (run, event) => ({
120
+ kind: "run_event",
121
+ runId: run.runId,
122
+ id: event.id,
123
+ eventType: event.type
124
+ });
125
+ const artifactRef = (run, artifact, state) => ({
126
+ kind: artifact.kind,
127
+ ref: artifact.ref,
128
+ summary: truncateText(artifact.summary, state),
129
+ canonical: true,
130
+ source: artifactSource(run, artifact)
131
+ });
132
+ const compactJsonObject = (value, state) => {
133
+ if (!value) {
134
+ return undefined;
135
+ }
136
+ const raw = JSON.stringify(value);
137
+ if (raw.length <= state.limits.maxStringLength) {
138
+ return JSON.parse(raw);
139
+ }
140
+ return {
141
+ truncated: true,
142
+ preview: truncateText(raw, state)
143
+ };
144
+ };
145
+ const runEventRef = (run, event, state) => {
146
+ const data = compactJsonObject(event.data, state);
147
+ const mapped = {
148
+ id: event.id,
149
+ createdAt: event.createdAt,
150
+ type: event.type,
151
+ message: truncateText(event.message, state),
152
+ source: eventSource(run, event)
153
+ };
154
+ if (data) {
155
+ mapped.data = data;
156
+ }
157
+ return mapped;
158
+ };
159
+ const approvalRef = (run, event, state) => ({
160
+ id: event.id,
161
+ createdAt: event.createdAt,
162
+ decision: event.decision,
163
+ reason: truncateText(event.reason, state),
164
+ source: approvalSource(run, event)
165
+ });
166
+ const toolEventRef = (run, event, state) => {
167
+ const mapped = {
168
+ id: event.id,
169
+ createdAt: event.createdAt,
170
+ tool: truncateText(event.tool, state),
171
+ command: truncateText(event.command, state),
172
+ args: event.args.map((arg) => truncateText(arg, state)),
173
+ cwd: truncateText(event.cwd, state),
174
+ exitCode: event.exitCode,
175
+ durationMs: event.durationMs,
176
+ safetyCategory: event.safetyCategory,
177
+ permissionDecision: event.permissionDecision,
178
+ source: toolSource(run, event)
179
+ };
180
+ if (event.stdoutRef) {
181
+ mapped.stdoutRef = event.stdoutRef;
182
+ }
183
+ if (event.stderrRef) {
184
+ mapped.stderrRef = event.stderrRef;
185
+ }
186
+ return mapped;
187
+ };
188
+ const stringField = (value) => typeof value === "string" ? value : undefined;
189
+ const roleField = (value) => typeof value === "string" && runtimeRoles.includes(value)
190
+ ? value
191
+ : undefined;
192
+ const providerResponseArtifacts = (run) => run.artifacts.filter((artifact) => artifact.kind === "plan" || artifact.kind === "agent" || artifact.kind === "reconciliation");
193
+ const providerResponseEvents = (run) => run.events.filter((event) => event.type === "agent_response" || event.type === "reconciliation_response");
194
+ const cloneRoleMapping = (roleMapping) => Object.fromEntries(Object.entries(roleMapping).map(([role, assignment]) => [
195
+ role,
196
+ {
197
+ ...assignment
198
+ }
199
+ ]));
200
+ const mapProviderResponses = (run, state) => {
201
+ const artifacts = providerResponseArtifacts(run);
202
+ return providerResponseEvents(run).map((event, index) => {
203
+ const artifact = artifacts[index];
204
+ const data = event.data ?? {};
205
+ const mappedEvent = runEventRef(run, event, state);
206
+ const mappedArtifact = artifact ? artifactRef(run, artifact, state) : undefined;
207
+ const sourceRefs = [
208
+ mappedEvent.source,
209
+ ...(mappedArtifact ? [mappedArtifact.source] : [])
210
+ ];
211
+ const response = {
212
+ summary: mappedArtifact?.summary ?? mappedEvent.message,
213
+ event: mappedEvent,
214
+ sourceRefs
215
+ };
216
+ const role = roleField(data.role);
217
+ const provider = stringField(data.provider);
218
+ const model = stringField(data.model);
219
+ const status = stringField(data.status);
220
+ if (role) {
221
+ response.role = role;
222
+ }
223
+ if (provider) {
224
+ response.provider = truncateText(provider, state);
225
+ }
226
+ if (model) {
227
+ response.model = truncateText(model, state);
228
+ }
229
+ if (status) {
230
+ response.status = truncateText(status, state);
231
+ }
232
+ if (mappedArtifact) {
233
+ response.artifact = mappedArtifact;
234
+ }
235
+ return response;
236
+ });
237
+ };
238
+ const latestArtifact = (artifacts, predicate) => artifacts.filter(predicate).at(-1);
239
+ const finalReportArtifact = (artifacts) => artifacts
240
+ .filter((artifact) => artifact.kind === "report" && artifact.summary.includes("Final report"))
241
+ .at(-1);
242
+ const createEvidenceGroup = (name, input, run, state) => ({
243
+ artifacts: boundedSection(`${name}.artifacts`, input.artifacts, state.limits.maxArtifacts, state, (artifact) => artifactRef(run, artifact, state)),
244
+ events: boundedSection(`${name}.events`, input.events, state.limits.maxRunEvents, state, (event) => runEventRef(run, event, state)),
245
+ toolEvents: boundedSection(`${name}.toolEvents`, input.toolEvents, state.limits.maxToolEvents, state, (event) => toolEventRef(run, event, state))
246
+ });
247
+ const isGitToolEvent = (event) => event.tool === "git_status" || event.tool === "git_diff";
248
+ const isGitArtifact = (artifact) => artifact.summary.includes("Git evidence summary");
249
+ const isValidationToolEvent = (event) => event.tool.startsWith("validation_");
250
+ const isValidationArtifact = (artifact) => artifact.summary.includes("Validation summary");
251
+ const openQuestions = (run, providerResponses, state) => {
252
+ const questions = [];
253
+ const source = runSource(run);
254
+ if (run.approvalRequired) {
255
+ questions.push({
256
+ severity: "blocking",
257
+ question: truncateText(`Run is waiting for approval: ${run.approvalReason ?? "no reason recorded"}`, state),
258
+ sourceRefs: [source]
259
+ });
260
+ }
261
+ if (run.state !== "completed") {
262
+ questions.push({
263
+ severity: "info",
264
+ question: truncateText(`Run state is ${run.state}; do not assume implementation is accepted.`, state),
265
+ sourceRefs: [source]
266
+ });
267
+ }
268
+ if (run.stopReason && run.state !== "completed") {
269
+ questions.push({
270
+ severity: run.state === "failed" || run.state === "aborted" ? "blocking" : "risk",
271
+ question: truncateText(`Stop reason is still active: ${run.stopReason}`, state),
272
+ sourceRefs: [source]
273
+ });
274
+ }
275
+ for (const event of run.toolEvents.filter((candidate) => candidate.exitCode !== 0)) {
276
+ questions.push({
277
+ severity: "blocking",
278
+ question: truncateText(`Tool ${event.tool} exited with ${event.exitCode}.`, state),
279
+ sourceRefs: [toolSource(run, event)]
280
+ });
281
+ }
282
+ for (const response of providerResponses.filter((candidate) => candidate.status === "blocked" || candidate.status === "failed")) {
283
+ questions.push({
284
+ severity: response.status === "failed" ? "blocking" : "risk",
285
+ question: truncateText(`Provider response is ${response.status}: ${response.summary}`, state),
286
+ sourceRefs: response.sourceRefs
287
+ });
288
+ }
289
+ return questions;
290
+ };
291
+ const uniqueSources = (sources) => {
292
+ const seen = new Set();
293
+ const unique = [];
294
+ for (const source of sources) {
295
+ const key = [
296
+ source.kind,
297
+ source.runId,
298
+ source.id ?? "",
299
+ source.ref ?? "",
300
+ source.eventType ?? ""
301
+ ].join("\u0000");
302
+ if (seen.has(key)) {
303
+ continue;
304
+ }
305
+ seen.add(key);
306
+ unique.push(source);
307
+ }
308
+ return unique;
309
+ };
310
+ export const buildProgressPacket = (run, input = {}) => {
311
+ const state = createBuildState(mergeLimits(input.limits));
312
+ const artifacts = boundedSection("artifacts", run.artifacts, state.limits.maxArtifacts, state, (artifact) => artifactRef(run, artifact, state));
313
+ const approvals = boundedSection("approvals", run.approvalEvents, state.limits.maxApprovalEvents, state, (event) => approvalRef(run, event, state));
314
+ const toolEvents = boundedSection("toolEvents", run.toolEvents, state.limits.maxToolEvents, state, (event) => toolEventRef(run, event, state));
315
+ const runEvents = boundedSection("runEvents", run.events, state.limits.maxRunEvents, state, (event) => runEventRef(run, event, state));
316
+ const providerResponses = boundedSection("providerResponses", mapProviderResponses(run, state), state.limits.maxProviderResponses, state, (response) => response);
317
+ const verifierVerdicts = boundedSection("verifierVerdicts", providerResponses.items.filter((response) => response.role === "verifier"), state.limits.maxProviderResponses, state, (response) => response);
318
+ const git = createEvidenceGroup("git", {
319
+ artifacts: run.artifacts.filter(isGitArtifact),
320
+ events: run.events.filter((event) => event.type === "git_evidence_captured"),
321
+ toolEvents: run.toolEvents.filter(isGitToolEvent)
322
+ }, run, state);
323
+ const validation = createEvidenceGroup("validation", {
324
+ artifacts: run.artifacts.filter(isValidationArtifact),
325
+ events: run.events.filter((event) => event.type === "validation_evidence_captured"),
326
+ toolEvents: run.toolEvents.filter(isValidationToolEvent)
327
+ }, run, state);
328
+ const questions = boundedSection("openQuestions", openQuestions(run, providerResponses.items, state), state.limits.maxOpenQuestions, state, (question) => question);
329
+ const reviewLanes = boundedSection("reviewLanes", deriveReviewLanes(run), state.limits.maxReviewLanes, state, (lane) => ({
330
+ ...lane,
331
+ summary: truncateText(lane.summary, state)
332
+ }));
333
+ const operatorNextActions = boundedSection("operatorNextActions", deriveOperatorNextActions(run), state.limits.maxOperatorNextActions, state, (nextAction) => ({
334
+ ...nextAction,
335
+ label: truncateText(nextAction.label, state),
336
+ description: truncateText(nextAction.description, state),
337
+ reason: truncateText(nextAction.reason, state),
338
+ ...(nextAction.artifact
339
+ ? {
340
+ artifact: {
341
+ ...nextAction.artifact,
342
+ summary: truncateText(nextAction.artifact.summary, state)
343
+ }
344
+ }
345
+ : {})
346
+ }));
347
+ const loopResponsibilities = boundedSection("loopResponsibilities", deriveLoopResponsibilitySchedule(run).responsibilities, state.limits.maxLoopResponsibilities, state, (item) => ({
348
+ ...item,
349
+ label: truncateText(item.label, state),
350
+ reason: truncateText(item.reason, state),
351
+ owner: {
352
+ ...item.owner,
353
+ label: truncateText(item.owner.label, state),
354
+ ...(item.owner.assignment ? { assignment: truncateText(item.owner.assignment, state) } : {})
355
+ }
356
+ }));
357
+ const crewLanes = boundedSection("crewLanes", deriveCrewLaneTrail(run).lanes, state.limits.maxCrewLanes, state, (lane) => ({
358
+ ...lane,
359
+ label: truncateText(lane.label, state),
360
+ summary: truncateText(lane.summary, state),
361
+ owner: {
362
+ ...lane.owner,
363
+ label: truncateText(lane.owner.label, state),
364
+ ...(lane.owner.assignment ? { assignment: truncateText(lane.owner.assignment, state) } : {})
365
+ }
366
+ }));
367
+ const revisionTrail = boundedSection("revisionTrail", deriveRevisionTrail(run).items, state.limits.maxRevisionTrailItems, state, (item) => ({
368
+ ...item,
369
+ ...(item.repairObjective ? { repairObjective: truncateText(item.repairObjective, state) } : {})
370
+ }));
371
+ const latestPlan = latestArtifact(artifacts.items, (artifact) => artifact.kind === "plan");
372
+ const latestProviderResponse = providerResponses.items.at(-1);
373
+ const latestProviderExecution = latestArtifact(artifacts.items, (artifact) => artifact.kind === "provider_invocation");
374
+ const latestVerifierResponse = providerResponses.items.filter((response) => response.role === "verifier").at(-1);
375
+ const latestCriticTrigger = latestArtifact(artifacts.items, (artifact) => artifact.kind === "critic_trigger");
376
+ const latestRevisionPacket = latestArtifact(artifacts.items, (artifact) => artifact.kind === "revision_packet");
377
+ const latestFinalReport = finalReportArtifact(artifacts.items);
378
+ const latestRepoContext = latestArtifact(artifacts.items, (artifact) => artifact.kind === "context");
379
+ const latest = {
380
+ ...(latestPlan ? { plan: latestPlan } : {}),
381
+ ...(latestProviderResponse ? { providerResponse: latestProviderResponse } : {}),
382
+ ...(latestProviderExecution ? { providerExecution: latestProviderExecution } : {}),
383
+ ...(latestVerifierResponse ? { verifierResponse: latestVerifierResponse } : {}),
384
+ ...(latestCriticTrigger ? { criticTrigger: latestCriticTrigger } : {}),
385
+ ...(latestRevisionPacket ? { revisionPacket: latestRevisionPacket } : {}),
386
+ ...(latestFinalReport ? { finalReport: latestFinalReport } : {}),
387
+ ...(latestRepoContext ? { repoContext: latestRepoContext } : {})
388
+ };
389
+ const canonicalSources = uniqueSources([
390
+ runSource(run),
391
+ ...artifacts.items.map((artifact) => artifact.source),
392
+ ...approvals.items.map((approval) => approval.source),
393
+ ...toolEvents.items.map((event) => event.source),
394
+ ...runEvents.items.map((event) => event.source),
395
+ ...providerResponses.items.flatMap((response) => response.sourceRefs),
396
+ ...reviewLanes.items.flatMap((lane) => lane.sourceRefs),
397
+ ...loopResponsibilities.items.flatMap((item) => [
398
+ ...item.eventRefs.map((id) => ({ kind: "run_event", runId: run.runId, id })),
399
+ ...item.artifactRefs.map((ref) => ({ kind: "run_artifact", runId: run.runId, ref }))
400
+ ]),
401
+ ...crewLanes.items.flatMap((lane) => lane.sourceRefs),
402
+ ...revisionTrail.items.flatMap((item) => item.sourceRefs),
403
+ ...questions.items.flatMap((question) => question.sourceRefs)
404
+ ]);
405
+ return {
406
+ schemaVersion: 1,
407
+ kind: "progress_packet",
408
+ ontologyVersion: "initial",
409
+ ontologyTerms,
410
+ run: {
411
+ runId: run.runId,
412
+ repoPath: run.repoPath,
413
+ userGoal: truncateText(run.userGoal, state),
414
+ mode: run.mode,
415
+ state: run.state,
416
+ createdAt: run.createdAt,
417
+ updatedAt: run.updatedAt,
418
+ approvalRequired: run.approvalRequired,
419
+ ...(run.approvalReason ? { approvalReason: truncateText(run.approvalReason, state) } : {}),
420
+ ...(run.stopReason ? { stopReason: truncateText(run.stopReason, state) } : {}),
421
+ maxIterations: run.maxIterations,
422
+ artifactCount: run.artifacts.length,
423
+ approvalEventCount: run.approvalEvents.length,
424
+ toolEventCount: run.toolEvents.length,
425
+ runEventCount: run.events.length,
426
+ providerResponseCount: providerResponseEvents(run).length,
427
+ source: runSource(run)
428
+ },
429
+ roleMapping: cloneRoleMapping(run.roleMapping),
430
+ latest,
431
+ reviewLanes,
432
+ operatorNextActions,
433
+ loopResponsibilities,
434
+ crewLanes,
435
+ revisionTrail,
436
+ evidence: {
437
+ artifacts,
438
+ providerResponses,
439
+ approvals,
440
+ toolEvents,
441
+ runEvents,
442
+ git,
443
+ validation,
444
+ verifierVerdicts
445
+ },
446
+ openQuestions: questions,
447
+ provenance: {
448
+ canonicalSources,
449
+ derivedFields: [
450
+ "latest",
451
+ "latest.providerExecution",
452
+ "evidence.providerResponses",
453
+ "evidence.git",
454
+ "evidence.validation",
455
+ "evidence.verifierVerdicts",
456
+ "reviewLanes",
457
+ "operatorNextActions",
458
+ "loopResponsibilities",
459
+ "crewLanes",
460
+ "revisionTrail",
461
+ "openQuestions"
462
+ ],
463
+ notes: [
464
+ "Progress packet was built from the RunRecord passed to buildProgressPacket.",
465
+ "Artifact refs, event ids, approval ids, and tool event ids are canonical evidence.",
466
+ "Summaries and open questions are derived navigation aids and are not authoritative without their source refs.",
467
+ "No providers, commands, network requests, or artifact file reads are performed by this builder."
468
+ ]
469
+ },
470
+ bounds: state.bounds
471
+ };
472
+ };
473
+ export const writeProgressPacketArtifact = async (run) => {
474
+ const latest = await loadRun(run.repoPath, run.runId);
475
+ const packet = buildProgressPacket(latest);
476
+ const artifact = await writeRunArtifact({
477
+ repoPath: latest.repoPath,
478
+ runId: latest.runId,
479
+ kind: progressPacketArtifactKind,
480
+ name: `progress-${newId("progress")}.json`,
481
+ content: `${JSON.stringify(packet, null, 2)}\n`,
482
+ summary: `Progress packet for ${latest.state} ${latest.mode} run.`
483
+ });
484
+ const current = await loadRun(latest.repoPath, latest.runId);
485
+ const eventCreatedAt = nowIso();
486
+ const updated = {
487
+ ...current,
488
+ updatedAt: eventCreatedAt,
489
+ artifacts: [...current.artifacts, artifact],
490
+ events: [
491
+ ...current.events,
492
+ {
493
+ id: newId("event"),
494
+ createdAt: eventCreatedAt,
495
+ type: "progress_packet_written",
496
+ message: "Wrote runtime progress packet.",
497
+ data: {
498
+ artifactRef: artifact.ref,
499
+ artifactSummary: artifact.summary,
500
+ packetKind: packet.kind
501
+ }
502
+ }
503
+ ]
504
+ };
505
+ await saveRun(updated);
506
+ return {
507
+ run: updated,
508
+ artifact,
509
+ packet
510
+ };
511
+ };
512
+ //# sourceMappingURL=progressPacket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progressPacket.js","sourceRoot":"","sources":["../../src/runtime/progressPacket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface ProtectedPathMatch {
2
+ path: string;
3
+ pattern: string;
4
+ }
5
+ export declare const matchProtectedPath: (filePath: string, patterns: string[]) => ProtectedPathMatch | undefined;
6
+ export declare const findProtectedPathMatches: (filePaths: string[], patterns: string[]) => ProtectedPathMatch[];
@@ -0,0 +1,48 @@
1
+ import path from "node:path";
2
+ const normalizePath = (filePath) => filePath.split(path.sep).join("/").replace(/^\.\//, "");
3
+ const escapeRegex = (char) => char.replace(/[|\\{}()[\]^$+?.]/g, "\\$&");
4
+ const globToRegex = (pattern) => {
5
+ let source = "";
6
+ for (let index = 0; index < pattern.length; index += 1) {
7
+ const char = pattern[index];
8
+ const next = pattern[index + 1];
9
+ const afterNext = pattern[index + 2];
10
+ if (char === "*" && next === "*" && afterNext === "/") {
11
+ source += "(?:.*/)?";
12
+ index += 2;
13
+ continue;
14
+ }
15
+ if (char === "*" && next === "*") {
16
+ source += ".*";
17
+ index += 1;
18
+ continue;
19
+ }
20
+ if (char === "*") {
21
+ source += "[^/]*";
22
+ continue;
23
+ }
24
+ if (char === "?") {
25
+ source += "[^/]";
26
+ continue;
27
+ }
28
+ source += escapeRegex(char ?? "");
29
+ }
30
+ return new RegExp(`^${source}$`);
31
+ };
32
+ export const matchProtectedPath = (filePath, patterns) => {
33
+ const normalizedPath = normalizePath(filePath);
34
+ for (const pattern of patterns) {
35
+ if (globToRegex(normalizePath(pattern)).test(normalizedPath)) {
36
+ return {
37
+ path: normalizedPath,
38
+ pattern
39
+ };
40
+ }
41
+ }
42
+ return undefined;
43
+ };
44
+ export const findProtectedPathMatches = (filePaths, patterns) => filePaths.flatMap((filePath) => {
45
+ const match = matchProtectedPath(filePath, patterns);
46
+ return match ? [match] : [];
47
+ });
48
+ //# sourceMappingURL=protectedPaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protectedPaths.js","sourceRoot":"","sources":["../../src/runtime/protectedPaths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAU,EAAE,CACjD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAE1D,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAEzF,MAAM,WAAW,GAAG,CAAC,OAAe,EAAU,EAAE;IAC9C,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtD,MAAM,IAAI,UAAU,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,IAAI,IAAI,CAAC;YACf,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,OAAO,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,MAAM,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,QAAgB,EAChB,QAAkB,EACc,EAAE;IAClC,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,SAAmB,EACnB,QAAkB,EACI,EAAE,CACxB,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;IAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type CodexCliModelDiscovery } from "../providers/codexCliModels.js";
2
+ import type { ProviderAccessMode, ProviderConfig, TheHoodConfig } from "./types.js";
3
+ export type ProviderModelPolicy = "listed" | "passthrough" | "discovered";
4
+ export interface ProviderDescriptor extends ProviderConfig {
5
+ id: string;
6
+ source: "builtin" | "config";
7
+ accessModes: ProviderAccessMode[];
8
+ defaultAccessMode: ProviderAccessMode;
9
+ modelPolicy: ProviderModelPolicy;
10
+ modelDiscovery?: CodexCliModelDiscovery;
11
+ }
12
+ export declare const listProviders: (config: TheHoodConfig) => ProviderDescriptor[];
13
+ export declare const listProvidersWithRuntimeModels: (config: TheHoodConfig) => ProviderDescriptor[];