agentera 3.0.0-dev.5 → 3.0.0-next.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 (336) hide show
  1. package/README.md +4 -3
  2. package/bundle/extract-corpus-parity.json +23 -0
  3. package/bundle/references/adapters/cursor.md +9 -8
  4. package/bundle/references/adapters/opencode.md +1 -1
  5. package/bundle/references/adapters/package-registry.yaml +0 -1
  6. package/bundle/references/adapters/package-surface-characterization.md +1 -2
  7. package/bundle/references/analysis/startup-measurement-contract.yaml +15 -15
  8. package/bundle/references/cli/audience-namespace-cli-migration.yaml +40 -26
  9. package/bundle/references/cli/bundle-skill-vocabulary.yaml +1 -29
  10. package/bundle/references/cli/coexistence-probe.yaml +9 -0
  11. package/bundle/references/cli/parity-expected-actual-template.md +30 -0
  12. package/bundle/references/cli/single-name-protocol.yaml +42 -0
  13. package/bundle/references/cli/update-channels.yaml +16 -0
  14. package/bundle/references/cli/upgrade-repair-wording.md +31 -0
  15. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +98 -0
  16. package/bundle/references/cli/vocabulary-index.yaml +6 -4
  17. package/bundle/references/cli/vocabulary.md +307 -301
  18. package/bundle/references/meta/documentation-inventory.md +9 -3
  19. package/bundle/skills/agentera/SKILL.md +49 -41
  20. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +4 -1
  21. package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +2 -1
  22. package/bundle/skills/agentera/capability_schema_contract.yaml +28 -0
  23. package/bundle/skills/agentera/references/contract.md +324 -315
  24. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +38 -33
  25. package/dist/analytics/extractCorpus/cli.js +149 -0
  26. package/dist/analytics/extractCorpus/cli.js.map +1 -0
  27. package/dist/analytics/extractCorpus/copilotSessions.js +273 -0
  28. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -0
  29. package/dist/analytics/extractCorpus/core.js +363 -0
  30. package/dist/analytics/extractCorpus/core.js.map +1 -0
  31. package/dist/analytics/extractCorpus/corpus.js +145 -0
  32. package/dist/analytics/extractCorpus/corpus.js.map +1 -0
  33. package/dist/analytics/extractCorpus/coverageAudit.js +261 -0
  34. package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -0
  35. package/dist/analytics/extractCorpus/cursorSessions.js +423 -0
  36. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -0
  37. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  38. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -0
  39. package/dist/analytics/extractCorpus/filesystemSources.js +122 -0
  40. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -0
  41. package/dist/analytics/extractCorpus/index.js +12 -0
  42. package/dist/analytics/extractCorpus/index.js.map +1 -0
  43. package/dist/analytics/extractCorpus/jsonlSessions.js +185 -0
  44. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -0
  45. package/dist/analytics/extractCorpus/sqliteCaps.js +44 -0
  46. package/dist/analytics/extractCorpus/sqliteCaps.js.map +1 -0
  47. package/dist/analytics/extractCorpus/sqliteSessions.js +368 -0
  48. package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -0
  49. package/dist/analytics/extractCorpus.js +2 -1790
  50. package/dist/analytics/extractCorpus.js.map +1 -1
  51. package/dist/analytics/usageStats.js +1 -1
  52. package/dist/analytics/usageStats.js.map +1 -1
  53. package/dist/capabilities/inspirera/instructions.js +1 -1
  54. package/dist/capabilities/inspirera/instructions.js.map +1 -1
  55. package/dist/capabilities/planera/instructions.js +1 -1
  56. package/dist/capabilities/planera/instructions.js.map +1 -1
  57. package/dist/capabilities/profilera/instructions.js +1 -1
  58. package/dist/capabilities/profilera/instructions.js.map +1 -1
  59. package/dist/capabilities/realisera/instructions.js +1 -1
  60. package/dist/capabilities/realisera/instructions.js.map +1 -1
  61. package/dist/capabilities/resonera/instructions.js +1 -1
  62. package/dist/capabilities/resonera/instructions.js.map +1 -1
  63. package/dist/capabilities/visionera/instructions.js +1 -1
  64. package/dist/capabilities/visionera/instructions.js.map +1 -1
  65. package/dist/capabilities/visualisera/instructions.js +3 -4
  66. package/dist/capabilities/visualisera/instructions.js.map +1 -1
  67. package/dist/cli/appContext.js +2 -14
  68. package/dist/cli/appContext.js.map +1 -1
  69. package/dist/cli/capabilityContext/benchmark.js +557 -0
  70. package/dist/cli/capabilityContext/benchmark.js.map +1 -0
  71. package/dist/cli/capabilityContext/bespoke.js +25 -0
  72. package/dist/cli/capabilityContext/bespoke.js.map +1 -0
  73. package/dist/cli/capabilityContext/closeout.js +230 -0
  74. package/dist/cli/capabilityContext/closeout.js.map +1 -0
  75. package/dist/cli/capabilityContext/contract.js +186 -0
  76. package/dist/cli/capabilityContext/contract.js.map +1 -0
  77. package/dist/cli/capabilityContext/evidence.js +446 -0
  78. package/dist/cli/capabilityContext/evidence.js.map +1 -0
  79. package/dist/cli/capabilityContext/index.js +4 -0
  80. package/dist/cli/capabilityContext/index.js.map +1 -0
  81. package/dist/cli/capabilityContext/orchestration.js +107 -0
  82. package/dist/cli/capabilityContext/orchestration.js.map +1 -0
  83. package/dist/cli/capabilityContext/planState.js +271 -0
  84. package/dist/cli/capabilityContext/planState.js.map +1 -0
  85. package/dist/cli/capabilityContext/progress.js +96 -0
  86. package/dist/cli/capabilityContext/progress.js.map +1 -0
  87. package/dist/cli/capabilityContext/realisera.js +174 -0
  88. package/dist/cli/capabilityContext/realisera.js.map +1 -0
  89. package/dist/cli/capabilityContext/shared.js +94 -0
  90. package/dist/cli/capabilityContext/shared.js.map +1 -0
  91. package/dist/cli/capabilityContext/slim.js +106 -0
  92. package/dist/cli/capabilityContext/slim.js.map +1 -0
  93. package/dist/cli/capabilityContext/startup.js +208 -0
  94. package/dist/cli/capabilityContext/startup.js.map +1 -0
  95. package/dist/cli/capabilityContext/types.js +43 -0
  96. package/dist/cli/capabilityContext/types.js.map +1 -0
  97. package/dist/cli/capabilityContext.js +1 -2486
  98. package/dist/cli/capabilityContext.js.map +1 -1
  99. package/dist/cli/commands/appHome.js +23 -0
  100. package/dist/cli/commands/appHome.js.map +1 -0
  101. package/dist/cli/commands/compact.js +1 -1
  102. package/dist/cli/commands/compact.js.map +1 -1
  103. package/dist/cli/commands/doctor.js +18 -96
  104. package/dist/cli/commands/doctor.js.map +1 -1
  105. package/dist/cli/commands/lint.js +4 -36
  106. package/dist/cli/commands/lint.js.map +1 -1
  107. package/dist/cli/commands/prime/bundleStatus.js +126 -0
  108. package/dist/cli/commands/prime/bundleStatus.js.map +1 -0
  109. package/dist/cli/commands/prime/collectOrientationState.js +143 -0
  110. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -0
  111. package/dist/cli/commands/prime/orientationOutput.js +172 -0
  112. package/dist/cli/commands/prime/orientationOutput.js.map +1 -0
  113. package/dist/cli/commands/prime/types.js +2 -0
  114. package/dist/cli/commands/prime/types.js.map +1 -0
  115. package/dist/cli/commands/prime/v1Migration.js +39 -0
  116. package/dist/cli/commands/prime/v1Migration.js.map +1 -0
  117. package/dist/cli/commands/prime.js +10 -549
  118. package/dist/cli/commands/prime.js.map +1 -1
  119. package/dist/cli/commands/query.js +1 -1
  120. package/dist/cli/commands/query.js.map +1 -1
  121. package/dist/cli/commands/report.js +19 -4
  122. package/dist/cli/commands/report.js.map +1 -1
  123. package/dist/cli/commands/schema.js +1 -2
  124. package/dist/cli/commands/schema.js.map +1 -1
  125. package/dist/cli/commands/state/decisions.js +397 -0
  126. package/dist/cli/commands/state/decisions.js.map +1 -0
  127. package/dist/cli/commands/state/docs.js +93 -0
  128. package/dist/cli/commands/state/docs.js.map +1 -0
  129. package/dist/cli/commands/state/experiments.js +67 -0
  130. package/dist/cli/commands/state/experiments.js.map +1 -0
  131. package/dist/cli/commands/state/health.js +114 -0
  132. package/dist/cli/commands/state/health.js.map +1 -0
  133. package/dist/cli/commands/state/index.js +51 -0
  134. package/dist/cli/commands/state/index.js.map +1 -0
  135. package/dist/cli/commands/state/objective.js +68 -0
  136. package/dist/cli/commands/state/objective.js.map +1 -0
  137. package/dist/cli/commands/state/plan.js +172 -0
  138. package/dist/cli/commands/state/plan.js.map +1 -0
  139. package/dist/cli/commands/state/progress.js +47 -0
  140. package/dist/cli/commands/state/progress.js.map +1 -0
  141. package/dist/cli/commands/state/shared.js +15 -0
  142. package/dist/cli/commands/state/shared.js.map +1 -0
  143. package/dist/cli/commands/state/todo.js +121 -0
  144. package/dist/cli/commands/state/todo.js.map +1 -0
  145. package/dist/cli/commands/validate.js +38 -24
  146. package/dist/cli/commands/validate.js.map +1 -1
  147. package/dist/cli/contracts/bundleStatus.js +2 -0
  148. package/dist/cli/contracts/bundleStatus.js.map +1 -0
  149. package/dist/cli/contracts/orientationState.js +2 -0
  150. package/dist/cli/contracts/orientationState.js.map +1 -0
  151. package/dist/cli/dispatch/argvParser.js +33 -0
  152. package/dist/cli/dispatch/argvParser.js.map +1 -0
  153. package/dist/cli/dispatch/check.js +328 -0
  154. package/dist/cli/dispatch/check.js.map +1 -0
  155. package/dist/cli/dispatch/commands.js +27 -0
  156. package/dist/cli/dispatch/commands.js.map +1 -0
  157. package/dist/cli/dispatch/index.js +179 -0
  158. package/dist/cli/dispatch/index.js.map +1 -0
  159. package/dist/cli/dispatch/lifecycle.js +537 -0
  160. package/dist/cli/dispatch/lifecycle.js.map +1 -0
  161. package/dist/cli/dispatch/prime.js +104 -0
  162. package/dist/cli/dispatch/prime.js.map +1 -0
  163. package/dist/cli/dispatch/shared.js +64 -0
  164. package/dist/cli/dispatch/shared.js.map +1 -0
  165. package/dist/cli/dispatch/state.js +144 -0
  166. package/dist/cli/dispatch/state.js.map +1 -0
  167. package/dist/cli/dispatch.js +1 -1293
  168. package/dist/cli/dispatch.js.map +1 -1
  169. package/dist/cli/help.js +30 -2
  170. package/dist/cli/help.js.map +1 -1
  171. package/dist/cli/orientation/attention.js +57 -0
  172. package/dist/cli/orientation/attention.js.map +1 -0
  173. package/dist/cli/orientation/corpusCoverage.js +71 -0
  174. package/dist/cli/orientation/corpusCoverage.js.map +1 -0
  175. package/dist/cli/orientation.js +41 -28
  176. package/dist/cli/orientation.js.map +1 -1
  177. package/dist/cli/startupCompletenessContract.js +49 -0
  178. package/dist/cli/startupCompletenessContract.js.map +1 -0
  179. package/dist/cli/todoSeverity.js +19 -0
  180. package/dist/cli/todoSeverity.js.map +1 -0
  181. package/dist/core/jsonValue.js +6 -0
  182. package/dist/core/jsonValue.js.map +1 -0
  183. package/dist/core/pyjson.js +67 -2
  184. package/dist/core/pyjson.js.map +1 -1
  185. package/dist/hooks/common.js +8 -23
  186. package/dist/hooks/common.js.map +1 -1
  187. package/dist/hooks/compaction/apply.js +263 -0
  188. package/dist/hooks/compaction/apply.js.map +1 -0
  189. package/dist/hooks/compaction/dryRun.js +181 -0
  190. package/dist/hooks/compaction/dryRun.js.map +1 -0
  191. package/dist/hooks/compaction/index.js +23 -0
  192. package/dist/hooks/compaction/index.js.map +1 -0
  193. package/dist/hooks/compaction/parse.js +258 -0
  194. package/dist/hooks/compaction/parse.js.map +1 -0
  195. package/dist/hooks/compaction/retention.js +197 -0
  196. package/dist/hooks/compaction/retention.js.map +1 -0
  197. package/dist/hooks/compaction/status.js +241 -0
  198. package/dist/hooks/compaction/status.js.map +1 -0
  199. package/dist/hooks/compaction/types.js +6 -0
  200. package/dist/hooks/compaction/types.js.map +1 -0
  201. package/dist/hooks/cursorPreToolUse.js +1 -1
  202. package/dist/hooks/cursorPreToolUse.js.map +1 -1
  203. package/dist/hooks/cursorSessionStart.js +10 -2
  204. package/dist/hooks/cursorSessionStart.js.map +1 -1
  205. package/dist/hooks/sessionStart.js +4 -4
  206. package/dist/hooks/sessionStart.js.map +1 -1
  207. package/dist/hooks/sessionStop.js +3 -12
  208. package/dist/hooks/sessionStop.js.map +1 -1
  209. package/dist/hooks/validateArtifact/agentFacing.js +10 -0
  210. package/dist/hooks/validateArtifact/agentFacing.js.map +1 -0
  211. package/dist/hooks/validateArtifact/index.js +149 -0
  212. package/dist/hooks/validateArtifact/index.js.map +1 -0
  213. package/dist/hooks/validateArtifact/markdown.js +146 -0
  214. package/dist/hooks/validateArtifact/markdown.js.map +1 -0
  215. package/dist/hooks/validateArtifact/runtime.js +83 -0
  216. package/dist/hooks/validateArtifact/runtime.js.map +1 -0
  217. package/dist/hooks/validateArtifact/schema.js +455 -0
  218. package/dist/hooks/validateArtifact/schema.js.map +1 -0
  219. package/dist/hooks/validateArtifact/traversal.js +105 -0
  220. package/dist/hooks/validateArtifact/traversal.js.map +1 -0
  221. package/dist/hooks/validateArtifact/violations.js +105 -0
  222. package/dist/hooks/validateArtifact/violations.js.map +1 -0
  223. package/dist/migrate/v2HandoffManifest.js +333 -0
  224. package/dist/migrate/v2HandoffManifest.js.map +1 -0
  225. package/dist/registries/artifactProtocolIds.js +77 -0
  226. package/dist/registries/artifactProtocolIds.js.map +1 -0
  227. package/dist/release/releaseMetadata.js +235 -0
  228. package/dist/release/releaseMetadata.js.map +1 -0
  229. package/dist/setup/codex/agents.js +96 -0
  230. package/dist/setup/codex/agents.js.map +1 -0
  231. package/dist/setup/codex/cli.js +161 -0
  232. package/dist/setup/codex/cli.js.map +1 -0
  233. package/dist/setup/codex/configToml.js +644 -0
  234. package/dist/setup/codex/configToml.js.map +1 -0
  235. package/dist/setup/codex/constants.js +29 -0
  236. package/dist/setup/codex/constants.js.map +1 -0
  237. package/dist/setup/codex/installRoot.js +64 -0
  238. package/dist/setup/codex/installRoot.js.map +1 -0
  239. package/dist/setup/codex/state.js +270 -0
  240. package/dist/setup/codex/state.js.map +1 -0
  241. package/dist/setup/codex.js +11 -1196
  242. package/dist/setup/codex.js.map +1 -1
  243. package/dist/setup/cursor.js +1 -1
  244. package/dist/setup/cursor.js.map +1 -1
  245. package/dist/setup/doctor/core.js +300 -0
  246. package/dist/setup/doctor/core.js.map +1 -0
  247. package/dist/setup/doctor/diagnostics.js +247 -0
  248. package/dist/setup/doctor/diagnostics.js.map +1 -0
  249. package/dist/setup/doctor/opencode.js +281 -0
  250. package/dist/setup/doctor/opencode.js.map +1 -0
  251. package/dist/setup/doctor/report.js +418 -0
  252. package/dist/setup/doctor/report.js.map +1 -0
  253. package/dist/setup/doctor.js +9 -1296
  254. package/dist/setup/doctor.js.map +1 -1
  255. package/dist/setup/opencode.js +13 -0
  256. package/dist/setup/opencode.js.map +1 -0
  257. package/dist/setup/smokeChecks.js +1 -1
  258. package/dist/setup/smokeChecks.js.map +1 -1
  259. package/dist/state/installRoot.js +49 -18
  260. package/dist/state/installRoot.js.map +1 -1
  261. package/dist/state/startupAnalysis/benchmark.js +367 -0
  262. package/dist/state/startupAnalysis/benchmark.js.map +1 -0
  263. package/dist/state/startupAnalysis/contract.js +122 -0
  264. package/dist/state/startupAnalysis/contract.js.map +1 -0
  265. package/dist/state/startupAnalysis/helpers.js +287 -0
  266. package/dist/state/startupAnalysis/helpers.js.map +1 -0
  267. package/dist/state/startupAnalysis/index.js +7 -0
  268. package/dist/state/startupAnalysis/index.js.map +1 -0
  269. package/dist/state/startupAnalysis/metrics.js +334 -0
  270. package/dist/state/startupAnalysis/metrics.js.map +1 -0
  271. package/dist/state/startupAnalysis/records.js +195 -0
  272. package/dist/state/startupAnalysis/records.js.map +1 -0
  273. package/dist/state/startupAnalysis/report.js +101 -0
  274. package/dist/state/startupAnalysis/report.js.map +1 -0
  275. package/dist/state/startupAnalysis/threshold.js +500 -0
  276. package/dist/state/startupAnalysis/threshold.js.map +1 -0
  277. package/dist/state/startupAnalysis.js +2 -1952
  278. package/dist/state/startupAnalysis.js.map +1 -1
  279. package/dist/upgrade/appModel.js +1 -4
  280. package/dist/upgrade/appModel.js.map +1 -1
  281. package/dist/upgrade/bundleEvidence.js +34 -0
  282. package/dist/upgrade/bundleEvidence.js.map +1 -0
  283. package/dist/upgrade/channels.js +8 -1
  284. package/dist/upgrade/channels.js.map +1 -1
  285. package/dist/upgrade/cliProbe.js +22 -0
  286. package/dist/upgrade/cliProbe.js.map +1 -0
  287. package/dist/upgrade/coexistenceProbe.js +80 -0
  288. package/dist/upgrade/coexistenceProbe.js.map +1 -0
  289. package/dist/upgrade/compatibility.js +1 -4
  290. package/dist/upgrade/compatibility.js.map +1 -1
  291. package/dist/upgrade/doctor.js +204 -170
  292. package/dist/upgrade/doctor.js.map +1 -1
  293. package/dist/upgrade/doctorClassifier.js +208 -0
  294. package/dist/upgrade/doctorClassifier.js.map +1 -0
  295. package/dist/upgrade/migrateArtifactsV2ToV3.js +6 -84
  296. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  297. package/dist/upgrade/nextMajorDoctor.js +20 -1
  298. package/dist/upgrade/nextMajorDoctor.js.map +1 -1
  299. package/dist/upgrade/npxPlatformStatus.js +24 -0
  300. package/dist/upgrade/npxPlatformStatus.js.map +1 -0
  301. package/dist/upgrade/projectIntegration.js +55 -70
  302. package/dist/upgrade/projectIntegration.js.map +1 -1
  303. package/dist/upgrade/projectIntegrationDecision.js +93 -0
  304. package/dist/upgrade/projectIntegrationDecision.js.map +1 -0
  305. package/dist/upgrade/runtimeMigration.js +13 -2
  306. package/dist/upgrade/runtimeMigration.js.map +1 -1
  307. package/dist/upgrade/v3CapabilitySurface.js +15 -0
  308. package/dist/upgrade/v3CapabilitySurface.js.map +1 -0
  309. package/dist/upgrade/versionResolution.js +8 -0
  310. package/dist/upgrade/versionResolution.js.map +1 -1
  311. package/dist/validate/appHomeContract.js +3 -3
  312. package/dist/validate/appHomeContract.js.map +1 -1
  313. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +93 -0
  314. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +1 -0
  315. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +488 -0
  316. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +1 -0
  317. package/dist/validate/lifecycleAdapters/shared.js +198 -0
  318. package/dist/validate/lifecycleAdapters/shared.js.map +1 -0
  319. package/dist/validate/lifecycleAdapters.js +12 -722
  320. package/dist/validate/lifecycleAdapters.js.map +1 -1
  321. package/dist/validate/selfAudit.js +62 -20
  322. package/dist/validate/selfAudit.js.map +1 -1
  323. package/dist/validate/vocabularyAuthority.js +298 -0
  324. package/dist/validate/vocabularyAuthority.js.map +1 -0
  325. package/package.json +3 -3
  326. package/bundle/references/v1-section-mapping.md +0 -47
  327. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  328. package/bundle/skills/hej/SKILL.md +0 -69
  329. package/bundle/skills/hej/agents/hej.toml +0 -11
  330. package/bundle/skills/hej/agents/openai.yaml +0 -8
  331. package/dist/cli/commands/state.js +0 -1023
  332. package/dist/cli/commands/state.js.map +0 -1
  333. package/dist/hooks/compaction.js +0 -935
  334. package/dist/hooks/compaction.js.map +0 -1
  335. package/dist/hooks/validateArtifact.js +0 -935
  336. package/dist/hooks/validateArtifact.js.map +0 -1
@@ -0,0 +1,181 @@
1
+ /**
2
+ * One-line formatters and artifact specifications.
3
+ *
4
+ * Each entry type (progress, decisions, health, experiments,
5
+ * todo-resolved) has its own SPECS row, archive heading, and
6
+ * formatOneline function. This module owns the body-field extraction
7
+ * helpers shared by all the formatters.
8
+ */
9
+ // --- body field helpers ----------------------------------------------------
10
+ export function escapeRe(s) {
11
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
12
+ }
13
+ export function extractField(body, label) {
14
+ const pattern = new RegExp(`^\\*\\*${escapeRe(label)}\\*\\*:\\s*(.+?)$`, "m");
15
+ const m = pattern.exec(body);
16
+ return m ? m[1].trim() : "";
17
+ }
18
+ function firstNonEmpty(body) {
19
+ for (const line of body.split(/\r\n|\r|\n/)) {
20
+ if (line.trim())
21
+ return line.trim();
22
+ }
23
+ return "";
24
+ }
25
+ export function truncateWords(text, limit = 15) {
26
+ const words = text.split(/\s+/).filter((w) => w.length > 0);
27
+ // Match Python str.split() token count but preserve original spacing on no-trunc.
28
+ const tokenCount = (text.match(/\S+/g) ?? []).length;
29
+ if (tokenCount <= limit)
30
+ return text;
31
+ return words.slice(0, limit).join(" ") + "...";
32
+ }
33
+ const HEADER_NUM_RE = /(?:Cycle|Decision|Audit|Experiment)\s+(\d+)/;
34
+ const HEADER_DATE_RE = /(\d{4}-\d{2}-\d{2})/;
35
+ export const NUMBER_RE = /(?:Cycle|Decision|Audit|Experiment|EXP-)\s*(\d+)/;
36
+ export function parseHeader(header) {
37
+ const numMatch = HEADER_NUM_RE.exec(header);
38
+ const dateMatch = HEADER_DATE_RE.exec(header);
39
+ const number = numMatch ? numMatch[1] : "";
40
+ const date = dateMatch ? dateMatch[1] : "";
41
+ const parts = header.split(" · ");
42
+ let title = parts.length >= 2 ? parts[parts.length - 1].trim() : "";
43
+ if (title === date) {
44
+ title = parts.length >= 3 ? parts[parts.length - 2].trim() : "";
45
+ }
46
+ return [number, date, title];
47
+ }
48
+ // --- one-line formatters ---------------------------------------------------
49
+ function formatProgressOneline(entry) {
50
+ let [number, date, title] = parseHeader(entry.header);
51
+ if (!title) {
52
+ title = extractField(entry.body, "What") || firstNonEmpty(entry.body);
53
+ }
54
+ title = truncateWords(title || "(no summary)", 20);
55
+ const numberPart = number ? `Cycle ${number}` : "Cycle ?";
56
+ const datePart = date ? ` (${date})` : "";
57
+ return `- ${numberPart}${datePart}: ${title}`;
58
+ }
59
+ function formatDecisionOneline(entry) {
60
+ const [number, date] = parseHeader(entry.header);
61
+ let chosen = extractField(entry.body, "Chosen alternative");
62
+ if (!chosen)
63
+ chosen = extractField(entry.body, "Chosen");
64
+ if (!chosen)
65
+ chosen = firstNonEmpty(entry.body);
66
+ chosen = truncateWords(chosen || "(no rationale)", 20);
67
+ const numberPart = number ? `Decision ${number}` : "Decision ?";
68
+ const datePart = date ? ` (${date})` : "";
69
+ return `- ${numberPart}${datePart}: ${chosen}`;
70
+ }
71
+ function formatHealthOneline(entry) {
72
+ const [number, date] = parseHeader(entry.header);
73
+ let grade = extractField(entry.body, "Overall");
74
+ if (!grade)
75
+ grade = extractField(entry.body, "Grade");
76
+ let trajectory = extractField(entry.body, "Overall trajectory");
77
+ if (!trajectory)
78
+ trajectory = "";
79
+ const summaryBits = [];
80
+ if (grade)
81
+ summaryBits.push(truncateWords(grade, 10));
82
+ if (trajectory && trajectory !== grade)
83
+ summaryBits.push(truncateWords(trajectory, 10));
84
+ const summary = summaryBits.length > 0 ? summaryBits.join(" | ") : "no summary";
85
+ const numberPart = number ? `Audit ${number}` : "Audit ?";
86
+ const datePart = date ? ` · ${date}` : "";
87
+ return `### ${numberPart}${datePart} (${summary})`;
88
+ }
89
+ function formatExperimentOneline(entry) {
90
+ const [number] = parseHeader(entry.header);
91
+ let summary = extractField(entry.body, "Metric");
92
+ if (!summary)
93
+ summary = extractField(entry.body, "Conclusion");
94
+ if (!summary)
95
+ summary = extractField(entry.body, "Result");
96
+ if (!summary)
97
+ summary = firstNonEmpty(entry.body);
98
+ summary = truncateWords(summary || "(no result)", 15);
99
+ const numberPart = number ? `EXP-${number}` : "EXP-?";
100
+ return `- ${numberPart}: ${summary}`;
101
+ }
102
+ const TODO_CHECKBOX_RE = /^-\s*\[x\]\s*/;
103
+ const TODO_ISS_LABEL_RE = /ISS-\d+:?\s*/;
104
+ function isTodoOnelinePassthrough(entry) {
105
+ return entry.kind === "oneline";
106
+ }
107
+ function stripTodoMetadata(header) {
108
+ let stripped = header.replace(TODO_CHECKBOX_RE, "");
109
+ stripped = stripped.replace(/~~/g, "").trim();
110
+ stripped = stripped.split(" · ")[0].trim();
111
+ stripped = stripped.replace(TODO_ISS_LABEL_RE, "").trim();
112
+ return stripped;
113
+ }
114
+ export function formatTodoOneline(entry) {
115
+ const header = String(entry.header).trim();
116
+ if (isTodoOnelinePassthrough(entry)) {
117
+ return header.startsWith("- ") ? header : `- ${header}`;
118
+ }
119
+ const summary = truncateWords(stripTodoMetadata(header) || "(resolved)", 15);
120
+ return `- [x] ${summary}`;
121
+ }
122
+ export const SPECS = {
123
+ progress: {
124
+ name: "progress",
125
+ entryHeadingRe: /^■?\s*##\s+Cycle\s+\d+/m,
126
+ onelineHeadingRe: /^-\s+Cycle\s+\d+/m,
127
+ archiveHeading: "## Archived Cycles",
128
+ formatOneline: formatProgressOneline,
129
+ scopedSection: null,
130
+ },
131
+ decisions: {
132
+ name: "decisions",
133
+ entryHeadingRe: /^##\s+Decision\s+\d+/m,
134
+ onelineHeadingRe: /^-\s+Decision\s+\d+/m,
135
+ archiveHeading: "## Archived Decisions",
136
+ formatOneline: formatDecisionOneline,
137
+ scopedSection: null,
138
+ },
139
+ health: {
140
+ name: "health",
141
+ entryHeadingRe: /^##\s+Audit\s+\d+/m,
142
+ onelineHeadingRe: /^###\s+Audit\s+\d+/m,
143
+ archiveHeading: "## Archived Audits",
144
+ formatOneline: formatHealthOneline,
145
+ scopedSection: null,
146
+ },
147
+ experiments: {
148
+ name: "experiments",
149
+ entryHeadingRe: /^##\s+Experiment\s+\d+/m,
150
+ onelineHeadingRe: /^-\s+EXP-\d+/m,
151
+ archiveHeading: "## Archived Experiments",
152
+ formatOneline: formatExperimentOneline,
153
+ scopedSection: null,
154
+ },
155
+ "todo-resolved": {
156
+ name: "todo-resolved",
157
+ entryHeadingRe: /^-\s+\[x\]\s+/m,
158
+ onelineHeadingRe: null,
159
+ archiveHeading: null,
160
+ formatOneline: formatTodoOneline,
161
+ scopedSection: "## ✓ Resolved",
162
+ },
163
+ };
164
+ export const COMPACTABLE_YAML_ARTIFACTS = {
165
+ progress: ["cycles", "archive"],
166
+ decisions: ["decisions", "archive"],
167
+ health: ["audits", "archive"],
168
+ };
169
+ export const YAML_SPEC_BY_ARTIFACT = {
170
+ progress: "progress",
171
+ decisions: "decisions",
172
+ health: "health",
173
+ };
174
+ export const NON_COMPACTABLE_ARTIFACTS = {
175
+ changelog: ["exempt", "public release history is not compacted"],
176
+ plan: ["unsupported", "active plan is lifecycle state, not a uniform retained-entry log"],
177
+ docs: ["unsupported", "docs owns artifact mapping and schema metadata"],
178
+ vision: ["protected", "vision state is protected during execution cycles"],
179
+ design: ["unsupported", "design is a human-facing identity artifact, not a uniform retained-entry log"],
180
+ };
181
+ //# sourceMappingURL=dryRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dryRun.js","sourceRoot":"","sources":["../../../src/hooks/compaction/dryRun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Public surface for the compaction hook.
3
+ *
4
+ * Re-exports the API consumed by `cli/commands/compact.ts` and the
5
+ * test suite. The actual implementation lives in the per-
6
+ * responsibility submodules:
7
+ *
8
+ * dryRun.ts one-line formatters and SPECS metadata
9
+ * retention.ts sort, select, and decision-satisfaction helpers
10
+ * parse.ts markdown entry parsing
11
+ * apply.ts writers (compactYamlFile, compactFile, detectOverflow)
12
+ * status.ts read-only status reporting (computeCompactionStatus,
13
+ * checkCompaction, fixCompaction, runCompaction)
14
+ */
15
+ import { applyRetentionCaps as _applyRetentionCaps } from "../common.js";
16
+ import { compactFile, compactYamlFile, detectOverflow, compactEntries } from "./apply.js";
17
+ import { checkCompaction, computeCompactionStatus, fixCompaction, runCompaction } from "./status.js";
18
+ import { parseEntries, parseFullEntries, parseOnelineEntries, splitArchive, extractResolvedSection, parseTodoResolved, countTodoResolvedEntries, normalizeTodoResolvedLayout, } from "./parse.js";
19
+ import { SPECS, COMPACTABLE_YAML_ARTIFACTS, NON_COMPACTABLE_ARTIFACTS, YAML_SPEC_BY_ARTIFACT, formatTodoOneline } from "./dryRun.js";
20
+ import { overLimitCount, stableSortBy, yamlArchiveEntry, yamlArchiveEntries, yamlRecentFullAndOlder, yamlSortEntries, decisionProtectedOverflowCount, selectDecisionActiveEntries, selectDecisionArchiveEntries, } from "./retention.js";
21
+ export { compactFile, compactYamlFile, detectOverflow, compactEntries, checkCompaction, computeCompactionStatus, fixCompaction, runCompaction, parseEntries, parseFullEntries, parseOnelineEntries, splitArchive, extractResolvedSection, parseTodoResolved, SPECS, COMPACTABLE_YAML_ARTIFACTS, NON_COMPACTABLE_ARTIFACTS, YAML_SPEC_BY_ARTIFACT, formatTodoOneline, countTodoResolvedEntries, normalizeTodoResolvedLayout, overLimitCount, stableSortBy, yamlArchiveEntry, yamlArchiveEntries, yamlRecentFullAndOlder, yamlSortEntries, decisionProtectedOverflowCount, selectDecisionActiveEntries, selectDecisionArchiveEntries, };
22
+ void _applyRetentionCaps;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/compaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrI,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,KAAK,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,GAC7B,CAAC;AAEF,KAAK,mBAAmB,CAAC"}
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Markdown entry parsing for the compaction writer.
3
+ *
4
+ * Splits a markdown artifact into "full" and "oneline" entries by
5
+ * walking the spec's heading regex, then collects the trailing
6
+ * detail body up to the next heading. The TODO-resolved section
7
+ * uses indented detail lines as the body delimiter; open items stay
8
+ * in severity bands and resolved items belong only under
9
+ * `## ✓ Resolved`.
10
+ */
11
+ import { parseTodoMarkdownListItem } from "../../cli/todoMarkdown.js";
12
+ import { SPECS, escapeRe } from "./dryRun.js";
13
+ const SEVERITY_HEADING_RE = /^##\s*(⇶|⇉|→|⇢)\s/m;
14
+ const STRIKETHROUGH_ITEM_RE = /^(\s*)-\s+~~(.+?)~~\s*(.*)$/;
15
+ export function splitArchive(text, archiveHeading) {
16
+ if (!archiveHeading)
17
+ return [text, ""];
18
+ const pattern = new RegExp(`^${escapeRe(archiveHeading)}\\s*$`, "m");
19
+ const match = pattern.exec(text);
20
+ if (!match)
21
+ return [text, ""];
22
+ const pre = text.slice(0, match.index).replace(/\s+$/, "");
23
+ const after = text.slice(match.index + match[0].length);
24
+ const nextSection = /^##\s/m.exec(after);
25
+ if (nextSection) {
26
+ const archiveBody = after.slice(0, nextSection.index);
27
+ const trailing = after.slice(nextSection.index);
28
+ return [pre, archiveBody.trim() + (trailing ? "\n\n" + trailing : "")];
29
+ }
30
+ return [pre, after.trim()];
31
+ }
32
+ export function parseFullEntries(text, spec) {
33
+ const entries = [];
34
+ const re = new RegExp(spec.entryHeadingRe.source, "gm");
35
+ const matches = [...text.matchAll(re)];
36
+ for (let i = 0; i < matches.length; i++) {
37
+ const m = matches[i];
38
+ const lineStart = text.lastIndexOf("\n", m.index - 1) + 1;
39
+ let lineEnd = text.indexOf("\n", m.index);
40
+ if (lineEnd === -1)
41
+ lineEnd = text.length;
42
+ const headerLine = text.slice(lineStart, lineEnd).trim();
43
+ const glyphMatch = /^(■)\s*/.exec(headerLine);
44
+ const glyph = glyphMatch ? glyphMatch[1] + " " : "";
45
+ const remainder = glyphMatch ? headerLine.slice(glyphMatch[0].length) : headerLine;
46
+ const header = glyph + remainder.replace(/^#+/, "").trim();
47
+ const bodyStart = lineEnd + 1;
48
+ let bodyEnd;
49
+ if (i + 1 < matches.length) {
50
+ bodyEnd = text.lastIndexOf("\n", matches[i + 1].index - 1) + 1;
51
+ }
52
+ else {
53
+ bodyEnd = text.length;
54
+ }
55
+ const body = text.slice(bodyStart, bodyEnd).trim();
56
+ entries.push({ header, body, kind: "full" });
57
+ }
58
+ return entries;
59
+ }
60
+ export function parseOnelineEntries(text, spec) {
61
+ if (spec.onelineHeadingRe === null)
62
+ return [];
63
+ const entries = [];
64
+ const re = new RegExp(spec.onelineHeadingRe.source);
65
+ for (const line of text.split(/\r\n|\r|\n/)) {
66
+ if (re.test(line)) {
67
+ entries.push({ header: line.replace(/\s+$/, ""), body: "", kind: "oneline" });
68
+ }
69
+ }
70
+ return entries;
71
+ }
72
+ export function extractResolvedSection(text) {
73
+ const m = /^##\s+(?:✓\s+)?Resolved\s*$/m.exec(text);
74
+ if (!m)
75
+ return [-1, -1, ""];
76
+ const bodyStart = m.index + m[0].length + 1;
77
+ const nextSection = /^##\s/m.exec(text.slice(bodyStart));
78
+ const bodyEnd = nextSection ? bodyStart + nextSection.index : text.length;
79
+ return [m.index, bodyEnd, text.slice(bodyStart, bodyEnd)];
80
+ }
81
+ export function parseTodoResolved(text, spec) {
82
+ const [, , body] = extractResolvedSection(text);
83
+ if (!body)
84
+ return [];
85
+ const entries = [];
86
+ const lines = body.split(/\r\n|\r|\n/);
87
+ const headRe = new RegExp(spec.entryHeadingRe.source);
88
+ let i = 0;
89
+ while (i < lines.length) {
90
+ const line = lines[i];
91
+ if (headRe.test(line)) {
92
+ const detailLines = [];
93
+ let j = i + 1;
94
+ while (j < lines.length) {
95
+ const nxt = lines[j];
96
+ if (nxt.startsWith(" ") || nxt.startsWith("\t")) {
97
+ detailLines.push(nxt);
98
+ j += 1;
99
+ }
100
+ else if (nxt.trim() === "") {
101
+ if (j + 1 < lines.length && (lines[j + 1].startsWith(" ") || lines[j + 1].startsWith("\t"))) {
102
+ detailLines.push(nxt);
103
+ j += 1;
104
+ }
105
+ else {
106
+ break;
107
+ }
108
+ }
109
+ else {
110
+ break;
111
+ }
112
+ }
113
+ const bodyText = detailLines.join("\n").trim();
114
+ entries.push({ header: line.replace(/\s+$/, ""), body: bodyText, kind: bodyText ? "full" : "oneline" });
115
+ i = j;
116
+ }
117
+ else {
118
+ i += 1;
119
+ }
120
+ }
121
+ return entries;
122
+ }
123
+ export function isTodoSeveritySectionHeading(line) {
124
+ return SEVERITY_HEADING_RE.test(line.trim());
125
+ }
126
+ export function isTodoResolvedSectionHeading(line) {
127
+ return /^##\s*(?:✓\s+)?Resolved\s*$/im.test(line.trim());
128
+ }
129
+ export function classifyTodoSectionHeading(line) {
130
+ if (isTodoSeveritySectionHeading(line))
131
+ return "severity";
132
+ if (isTodoResolvedSectionHeading(line))
133
+ return "resolved";
134
+ if (/^##\s/.test(line.trim()))
135
+ return "other";
136
+ return "other";
137
+ }
138
+ export function strikethroughTodoLineToCheckbox(line) {
139
+ const m = STRIKETHROUGH_ITEM_RE.exec(line);
140
+ if (!m)
141
+ return null;
142
+ const tail = m[3]?.trim();
143
+ const body = m[2].trim();
144
+ return `${m[1]}- [x] ${body}${tail ? (tail.startsWith("·") ? ` ${tail}` : ` ${tail}`) : ""}`;
145
+ }
146
+ export function isLegacyStrikethroughTodoLine(line) {
147
+ return /^(\s*)-\s+~~/.test(line);
148
+ }
149
+ export function countTodoResolvedInSeverityBands(content) {
150
+ let count = 0;
151
+ let section = "other";
152
+ for (const line of content.split(/\r\n|\r|\n/)) {
153
+ const kind = classifyTodoSectionHeading(line);
154
+ if (kind !== "other" || /^##\s/.test(line.trim())) {
155
+ section = kind;
156
+ continue;
157
+ }
158
+ if (section !== "severity")
159
+ continue;
160
+ const trimmed = line.trim();
161
+ if (!trimmed.startsWith("-"))
162
+ continue;
163
+ const parsed = parseTodoMarkdownListItem(trimmed);
164
+ if (parsed?.status === "resolved" || isLegacyStrikethroughTodoLine(trimmed)) {
165
+ count += 1;
166
+ }
167
+ }
168
+ return count;
169
+ }
170
+ export function countTodoResolvedEntries(content) {
171
+ const spec = SPECS["todo-resolved"];
172
+ const resolvedSection = parseTodoResolved(content, spec);
173
+ const misplaced = countTodoResolvedInSeverityBands(content);
174
+ return {
175
+ full: resolvedSection.filter((e) => e.kind === "full").length,
176
+ oneline: resolvedSection.filter((e) => e.kind === "oneline").length + misplaced,
177
+ };
178
+ }
179
+ /**
180
+ * Move resolved rows from severity bands into `## ✓ Resolved`, creating the
181
+ * section when absent. Newly migrated rows are prepended (newest-first folds).
182
+ */
183
+ export function normalizeTodoResolvedLayout(content) {
184
+ const lines = content.split(/\r\n|\r|\n/);
185
+ const beforeResolved = [];
186
+ const migratedResolved = [];
187
+ const existingResolved = [];
188
+ const afterResolved = [];
189
+ let section = "other";
190
+ let seenResolvedHeading = false;
191
+ for (const line of lines) {
192
+ const headingKind = classifyTodoSectionHeading(line);
193
+ if (headingKind === "resolved") {
194
+ seenResolvedHeading = true;
195
+ section = "resolved";
196
+ continue;
197
+ }
198
+ if (headingKind === "severity") {
199
+ section = "severity";
200
+ if (!seenResolvedHeading)
201
+ beforeResolved.push(line);
202
+ else
203
+ afterResolved.push(line);
204
+ continue;
205
+ }
206
+ if (/^##\s/.test(line.trim())) {
207
+ section = "other";
208
+ if (!seenResolvedHeading)
209
+ beforeResolved.push(line);
210
+ else
211
+ afterResolved.push(line);
212
+ continue;
213
+ }
214
+ const trimmed = line.trim();
215
+ if (section === "resolved") {
216
+ if (trimmed)
217
+ existingResolved.push(line);
218
+ continue;
219
+ }
220
+ if (section === "severity" && trimmed.startsWith("-")) {
221
+ const converted = strikethroughTodoLineToCheckbox(line) ?? line;
222
+ const parsed = parseTodoMarkdownListItem(converted.trim());
223
+ if (parsed?.status === "resolved" || isLegacyStrikethroughTodoLine(trimmed)) {
224
+ migratedResolved.push(converted.trim());
225
+ continue;
226
+ }
227
+ }
228
+ if (!seenResolvedHeading)
229
+ beforeResolved.push(line);
230
+ else
231
+ afterResolved.push(line);
232
+ }
233
+ if (migratedResolved.length === 0) {
234
+ return { text: content, changed: false };
235
+ }
236
+ const rebuilt = [...beforeResolved];
237
+ if (rebuilt.length > 0 && rebuilt[rebuilt.length - 1]?.trim() !== "")
238
+ rebuilt.push("");
239
+ rebuilt.push("## ✓ Resolved");
240
+ rebuilt.push(...migratedResolved, ...existingResolved);
241
+ if (afterResolved.length > 0) {
242
+ rebuilt.push("");
243
+ rebuilt.push(...afterResolved);
244
+ }
245
+ const text = rebuilt.join("\n").replace(/\n*$/, "\n");
246
+ return { text, changed: text !== content };
247
+ }
248
+ export function parseEntries(text, specName) {
249
+ const spec = SPECS[specName];
250
+ if (spec.name === "todo-resolved") {
251
+ return parseTodoResolved(text, spec);
252
+ }
253
+ const [pre, archiveBody] = splitArchive(text, spec.archiveHeading || "");
254
+ const fullEntries = parseFullEntries(pre, spec);
255
+ const onelineEntries = parseOnelineEntries(archiveBody, spec);
256
+ return [...fullEntries, ...onelineEntries];
257
+ }
258
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/hooks/compaction/parse.ts"],"names":[],"mappings":"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"}