@latysh-development/monolith 0.0.0-stage → 0.1.0-alpha.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 (291) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -2
  3. package/dist/brief/cli.d.ts +30 -0
  4. package/dist/brief/cli.d.ts.map +1 -0
  5. package/dist/brief/cli.js +85 -0
  6. package/dist/brief/collect.d.ts +17 -0
  7. package/dist/brief/collect.d.ts.map +1 -0
  8. package/dist/brief/collect.js +302 -0
  9. package/dist/brief/config.d.ts +40 -0
  10. package/dist/brief/config.d.ts.map +1 -0
  11. package/dist/brief/config.js +85 -0
  12. package/dist/brief/constants.d.ts +10 -0
  13. package/dist/brief/constants.d.ts.map +1 -0
  14. package/dist/brief/constants.js +9 -0
  15. package/dist/brief/docs.d.ts +53 -0
  16. package/dist/brief/docs.d.ts.map +1 -0
  17. package/dist/brief/docs.js +229 -0
  18. package/dist/brief/freshness.d.ts +104 -0
  19. package/dist/brief/freshness.d.ts.map +1 -0
  20. package/dist/brief/freshness.js +263 -0
  21. package/dist/brief/git-signals.d.ts +17 -0
  22. package/dist/brief/git-signals.d.ts.map +1 -0
  23. package/dist/brief/git-signals.js +101 -0
  24. package/dist/brief/index.d.ts +11 -0
  25. package/dist/brief/index.d.ts.map +1 -0
  26. package/dist/brief/index.js +5 -0
  27. package/dist/brief/reconcile.d.ts +75 -0
  28. package/dist/brief/reconcile.d.ts.map +1 -0
  29. package/dist/brief/reconcile.js +259 -0
  30. package/dist/brief/render.d.ts +60 -0
  31. package/dist/brief/render.d.ts.map +1 -0
  32. package/dist/brief/render.js +407 -0
  33. package/dist/brief/sanitize.d.ts +38 -0
  34. package/dist/brief/sanitize.d.ts.map +1 -0
  35. package/dist/brief/sanitize.js +48 -0
  36. package/dist/brief/selectors.d.ts +36 -0
  37. package/dist/brief/selectors.d.ts.map +1 -0
  38. package/dist/brief/selectors.js +75 -0
  39. package/dist/brief/story.d.ts +18 -0
  40. package/dist/brief/story.d.ts.map +1 -0
  41. package/dist/brief/story.js +59 -0
  42. package/dist/brief/types.d.ts +110 -0
  43. package/dist/brief/types.d.ts.map +1 -0
  44. package/dist/brief/types.js +11 -0
  45. package/dist/cli/index.d.ts +3 -0
  46. package/dist/cli/index.d.ts.map +1 -0
  47. package/dist/cli/index.js +166 -0
  48. package/dist/cli/init-args.d.ts +16 -0
  49. package/dist/cli/init-args.d.ts.map +1 -0
  50. package/dist/cli/init-args.js +24 -0
  51. package/dist/cli/ui-args.d.ts +23 -0
  52. package/dist/cli/ui-args.d.ts.map +1 -0
  53. package/dist/cli/ui-args.js +66 -0
  54. package/dist/cli/ui.d.ts +40 -0
  55. package/dist/cli/ui.d.ts.map +1 -0
  56. package/dist/cli/ui.js +180 -0
  57. package/dist/coordinatorium/checkpoint.d.ts +44 -0
  58. package/dist/coordinatorium/checkpoint.d.ts.map +1 -0
  59. package/dist/coordinatorium/checkpoint.js +124 -0
  60. package/dist/coordinatorium/cli.d.ts +39 -0
  61. package/dist/coordinatorium/cli.d.ts.map +1 -0
  62. package/dist/coordinatorium/cli.js +203 -0
  63. package/dist/coordinatorium/errors.d.ts +112 -0
  64. package/dist/coordinatorium/errors.d.ts.map +1 -0
  65. package/dist/coordinatorium/errors.js +145 -0
  66. package/dist/coordinatorium/index.d.ts +11 -0
  67. package/dist/coordinatorium/index.d.ts.map +1 -0
  68. package/dist/coordinatorium/index.js +5 -0
  69. package/dist/coordinatorium/lock.d.ts +187 -0
  70. package/dist/coordinatorium/lock.d.ts.map +1 -0
  71. package/dist/coordinatorium/lock.js +659 -0
  72. package/dist/coordinatorium/mission.d.ts +32 -0
  73. package/dist/coordinatorium/mission.d.ts.map +1 -0
  74. package/dist/coordinatorium/mission.js +87 -0
  75. package/dist/coordinatorium/state-keeper.d.ts +115 -0
  76. package/dist/coordinatorium/state-keeper.d.ts.map +1 -0
  77. package/dist/coordinatorium/state-keeper.js +396 -0
  78. package/dist/coordinatorium/types.d.ts +69 -0
  79. package/dist/coordinatorium/types.d.ts.map +1 -0
  80. package/dist/coordinatorium/types.js +27 -0
  81. package/dist/durable/assess.d.ts +105 -0
  82. package/dist/durable/assess.d.ts.map +1 -0
  83. package/dist/durable/assess.js +239 -0
  84. package/dist/durable/canonical.d.ts +25 -0
  85. package/dist/durable/canonical.d.ts.map +1 -0
  86. package/dist/durable/canonical.js +78 -0
  87. package/dist/durable/cli.d.ts +37 -0
  88. package/dist/durable/cli.d.ts.map +1 -0
  89. package/dist/durable/cli.js +141 -0
  90. package/dist/durable/errors.d.ts +188 -0
  91. package/dist/durable/errors.d.ts.map +1 -0
  92. package/dist/durable/errors.js +317 -0
  93. package/dist/durable/fs-store.d.ts +233 -0
  94. package/dist/durable/fs-store.d.ts.map +1 -0
  95. package/dist/durable/fs-store.js +1393 -0
  96. package/dist/durable/index.d.ts +20 -0
  97. package/dist/durable/index.d.ts.map +1 -0
  98. package/dist/durable/index.js +13 -0
  99. package/dist/durable/log.d.ts +33 -0
  100. package/dist/durable/log.d.ts.map +1 -0
  101. package/dist/durable/log.js +157 -0
  102. package/dist/durable/memory-store.d.ts +51 -0
  103. package/dist/durable/memory-store.d.ts.map +1 -0
  104. package/dist/durable/memory-store.js +302 -0
  105. package/dist/durable/projection.d.ts +35 -0
  106. package/dist/durable/projection.d.ts.map +1 -0
  107. package/dist/durable/projection.js +328 -0
  108. package/dist/durable/prune-check.d.ts +17 -0
  109. package/dist/durable/prune-check.d.ts.map +1 -0
  110. package/dist/durable/prune-check.js +45 -0
  111. package/dist/durable/register.d.ts +100 -0
  112. package/dist/durable/register.d.ts.map +1 -0
  113. package/dist/durable/register.js +532 -0
  114. package/dist/durable/retention.d.ts +49 -0
  115. package/dist/durable/retention.d.ts.map +1 -0
  116. package/dist/durable/retention.js +59 -0
  117. package/dist/durable/runtime.d.ts +497 -0
  118. package/dist/durable/runtime.d.ts.map +1 -0
  119. package/dist/durable/runtime.js +1271 -0
  120. package/dist/durable/seams.d.ts +40 -0
  121. package/dist/durable/seams.d.ts.map +1 -0
  122. package/dist/durable/seams.js +21 -0
  123. package/dist/durable/testing.d.ts +11 -0
  124. package/dist/durable/testing.d.ts.map +1 -0
  125. package/dist/durable/testing.js +25 -0
  126. package/dist/durable/types.d.ts +442 -0
  127. package/dist/durable/types.d.ts.map +1 -0
  128. package/dist/durable/types.js +75 -0
  129. package/dist/graph/builder.d.ts +11 -0
  130. package/dist/graph/builder.d.ts.map +1 -0
  131. package/dist/graph/builder.js +153 -0
  132. package/dist/graph/identity.d.ts +37 -0
  133. package/dist/graph/identity.d.ts.map +1 -0
  134. package/dist/graph/identity.js +46 -0
  135. package/dist/graph/index.d.ts +7 -0
  136. package/dist/graph/index.d.ts.map +1 -0
  137. package/dist/graph/index.js +3 -0
  138. package/dist/graph/resolver.d.ts +41 -0
  139. package/dist/graph/resolver.d.ts.map +1 -0
  140. package/dist/graph/resolver.js +36 -0
  141. package/dist/graph/types.d.ts +42 -0
  142. package/dist/graph/types.d.ts.map +1 -0
  143. package/dist/graph/types.js +1 -0
  144. package/dist/http/index.d.ts +5 -0
  145. package/dist/http/index.d.ts.map +1 -0
  146. package/dist/http/index.js +2 -0
  147. package/dist/http/server.d.ts +76 -0
  148. package/dist/http/server.d.ts.map +1 -0
  149. package/dist/http/server.js +195 -0
  150. package/dist/http/ui-assets.d.ts +22 -0
  151. package/dist/http/ui-assets.d.ts.map +1 -0
  152. package/dist/http/ui-assets.js +100 -0
  153. package/dist/index.d.ts +31 -0
  154. package/dist/index.d.ts.map +1 -0
  155. package/dist/index.js +26 -0
  156. package/dist/init/index.d.ts +12 -0
  157. package/dist/init/index.d.ts.map +1 -0
  158. package/dist/init/index.js +90 -0
  159. package/dist/init/prompts.d.ts +3 -0
  160. package/dist/init/prompts.d.ts.map +1 -0
  161. package/dist/init/prompts.js +47 -0
  162. package/dist/init/scaffold.d.ts +25 -0
  163. package/dist/init/scaffold.d.ts.map +1 -0
  164. package/dist/init/scaffold.js +204 -0
  165. package/dist/init/types.d.ts +14 -0
  166. package/dist/init/types.d.ts.map +1 -0
  167. package/dist/init/types.js +1 -0
  168. package/dist/readmodel/dashboard.d.ts +40 -0
  169. package/dist/readmodel/dashboard.d.ts.map +1 -0
  170. package/dist/readmodel/dashboard.js +236 -0
  171. package/dist/readmodel/index.d.ts +3 -0
  172. package/dist/readmodel/index.d.ts.map +1 -0
  173. package/dist/readmodel/index.js +1 -0
  174. package/dist/readmodel/types.d.ts +104 -0
  175. package/dist/readmodel/types.d.ts.map +1 -0
  176. package/dist/readmodel/types.js +15 -0
  177. package/dist/root/index.d.ts +179 -0
  178. package/dist/root/index.d.ts.map +1 -0
  179. package/dist/root/index.js +418 -0
  180. package/dist/root/safe-write.d.ts +268 -0
  181. package/dist/root/safe-write.d.ts.map +1 -0
  182. package/dist/root/safe-write.js +966 -0
  183. package/dist/root/write-artifacts.d.ts +20 -0
  184. package/dist/root/write-artifacts.d.ts.map +1 -0
  185. package/dist/root/write-artifacts.js +42 -0
  186. package/dist/scriptorium/compile.d.ts +4 -0
  187. package/dist/scriptorium/compile.d.ts.map +1 -0
  188. package/dist/scriptorium/compile.js +185 -0
  189. package/dist/scriptorium/frontmatter.d.ts +13 -0
  190. package/dist/scriptorium/frontmatter.d.ts.map +1 -0
  191. package/dist/scriptorium/frontmatter.js +90 -0
  192. package/dist/scriptorium/index.d.ts +3 -0
  193. package/dist/scriptorium/index.d.ts.map +1 -0
  194. package/dist/scriptorium/index.js +1 -0
  195. package/dist/scriptorium/markdown.d.ts +31 -0
  196. package/dist/scriptorium/markdown.d.ts.map +1 -0
  197. package/dist/scriptorium/markdown.js +88 -0
  198. package/dist/scriptorium/types.d.ts +78 -0
  199. package/dist/scriptorium/types.d.ts.map +1 -0
  200. package/dist/scriptorium/types.js +1 -0
  201. package/dist/types/enforcement.d.ts +11 -0
  202. package/dist/types/enforcement.d.ts.map +1 -0
  203. package/dist/types/enforcement.js +1 -0
  204. package/dist/types/integrity.d.ts +33 -0
  205. package/dist/types/integrity.d.ts.map +1 -0
  206. package/dist/types/integrity.js +1 -0
  207. package/dist/types/project-definition.d.ts +30 -0
  208. package/dist/types/project-definition.d.ts.map +1 -0
  209. package/dist/types/project-definition.js +1 -0
  210. package/dist/ui/assets/cosmic-glass-bg-Dwx47zPu.webp +0 -0
  211. package/dist/ui/assets/index-C4NhMaq7.js +28 -0
  212. package/dist/ui/assets/index-DMZ7ZvZY.css +1 -0
  213. package/dist/ui/index.html +13 -0
  214. package/dist/validate/index.d.ts +6 -0
  215. package/dist/validate/index.d.ts.map +1 -0
  216. package/dist/validate/index.js +214 -0
  217. package/dist/version.d.ts +2 -0
  218. package/dist/version.d.ts.map +1 -0
  219. package/dist/version.js +1 -0
  220. package/package.json +67 -4
  221. package/templates/.gitkeep +0 -0
  222. package/templates/default-instance/instruction/.cursorrules +53 -0
  223. package/templates/default-instance/instruction/.windsurfrules +53 -0
  224. package/templates/default-instance/instruction/CLAUDE.md +53 -0
  225. package/templates/default-instance/monolith/context/boot/HANDOFF.md +49 -0
  226. package/templates/default-instance/monolith/context/boot/WORK_SESSION.md +30 -0
  227. package/templates/default-instance/monolith/context/execution/current-state.md +30 -0
  228. package/templates/default-instance/monolith/context/maps/dependency-map.md +38 -0
  229. package/templates/default-instance/monolith/context/maps/project-map.md +85 -0
  230. package/templates/default-instance/monolith/context/maps/roadmap-index.md +41 -0
  231. package/templates/default-instance/monolith/context/maps/routing-map.md +147 -0
  232. package/templates/default-instance/monolith/context/maps/semantic-map.md +73 -0
  233. package/templates/default-instance/monolith/context/models/model-registry.md +37 -0
  234. package/templates/default-instance/monolith/context/models/privacy-classification.md +35 -0
  235. package/templates/default-instance/monolith/context/templates/plan-template.md +56 -0
  236. package/templates/default-instance/monolith/governance/README.md +29 -0
  237. package/templates/default-instance/monolith/governance/RULE_SCHEMA.md +58 -0
  238. package/templates/default-instance/monolith/learning/INDEX.md +48 -0
  239. package/templates/default-instance/monolith/learning/injection-map.md +49 -0
  240. package/templates/default-instance/monolith/learning/taxonomy.md +30 -0
  241. package/templates/default-instance/monolith/memory/errors/README.md +26 -0
  242. package/templates/default-instance/monolith/memory/errors/SCHEMA.md +47 -0
  243. package/templates/default-instance/monolith/memory/errors/TAXONOMY.md +27 -0
  244. package/templates/default-instance/monolith/memory/long-term/architecture-principles.md +31 -0
  245. package/templates/default-instance/monolith/memory/long-term/decisions.md +36 -0
  246. package/templates/default-instance/monolith/memory/long-term/execution-history.md +20 -0
  247. package/templates/default-instance/monolith/memory/long-term/tech-debt.md +25 -0
  248. package/templates/default-instance/monolith/memory/working/active.md +41 -0
  249. package/templates/default-instance/monolith/memory/working/governance-result.md +0 -0
  250. package/templates/default-instance/monolith/memory/working/integrity-result.md +0 -0
  251. package/templates/default-instance/monolith/memory/working/story-index.md +28 -0
  252. package/templates/default-instance/monolith/protocols/boot/boot-sequence.md +59 -0
  253. package/templates/default-instance/monolith/protocols/cognition/cognitive-modes.md +90 -0
  254. package/templates/default-instance/monolith/protocols/cognition/dry-run.md +56 -0
  255. package/templates/default-instance/monolith/protocols/cognition/execution-trace-format.md +52 -0
  256. package/templates/default-instance/monolith/protocols/cognition/semantic-planning.md +51 -0
  257. package/templates/default-instance/monolith/protocols/execution/hybrid-execution.md +37 -0
  258. package/templates/default-instance/monolith/protocols/execution/local-llm-governance.md +42 -0
  259. package/templates/default-instance/monolith/protocols/governance/command-policy.md +51 -0
  260. package/templates/default-instance/monolith/protocols/governance/core-invariants.md +40 -0
  261. package/templates/default-instance/monolith/protocols/governance/memory-governance.md +54 -0
  262. package/templates/default-instance/monolith/protocols/governance/metadata-schema.md +62 -0
  263. package/templates/default-instance/monolith/protocols/governance/skills.md +53 -0
  264. package/templates/default-instance/monolith/protocols/governance/work-session.md +46 -0
  265. package/templates/default-instance/monolith/skills/INDEX.md +28 -0
  266. package/templates/default-instance/monolith/skills/current-status/SKILL.md +47 -0
  267. package/templates/default-instance/monolith/skills/finalize-story/SKILL.md +86 -0
  268. package/templates/default-instance/monolith/skills/global-status/SKILL.md +56 -0
  269. package/templates/default-instance/monolith/skills/self-improvement/SKILL.md +77 -0
  270. package/templates/default-instance/monolith/state.json +11 -0
  271. package/templates/default-instance/monolith/tests/INDEX.md +57 -0
  272. package/templates/default-instance/monolith/tests/scenarios/architecture-review.md +32 -0
  273. package/templates/default-instance/monolith/tests/scenarios/debug-failure.md +32 -0
  274. package/templates/default-instance/monolith/tests/scenarios/dry-run-activation.md +33 -0
  275. package/templates/default-instance/monolith/tests/scenarios/execution-trace-verification.md +31 -0
  276. package/templates/default-instance/monolith/tests/scenarios/finalize-story.md +35 -0
  277. package/templates/default-instance/monolith/tests/scenarios/implement-feature.md +36 -0
  278. package/templates/default-instance/monolith/tests/scenarios/local-llm-delegation.md +31 -0
  279. package/templates/default-instance/monolith/tests/scenarios/planning-request.md +32 -0
  280. package/templates/default-instance/monolith/tests/scenarios/sensitive-context-task.md +30 -0
  281. package/templates/default-instance/monolith/tests/scenarios/validator-verification.md +33 -0
  282. package/templates/default-instance/monolith/tests/validation/expected-behavior.md +70 -0
  283. package/templates/default-instance/monolith/tests/validators/INDEX.md +17 -0
  284. package/templates/default-instance/monolith/tests/validators/delegation-semantics.md +22 -0
  285. package/templates/default-instance/monolith/tests/validators/mode-consistency.md +25 -0
  286. package/templates/default-instance/monolith/tests/validators/privacy-routing.md +23 -0
  287. package/templates/default-instance/monolith/tests/validators/protocol-references.md +27 -0
  288. package/templates/default-instance/monolith/tests/validators/routing-integrity.md +30 -0
  289. package/templates/default-instance/projectroot/AGENTS.md +107 -0
  290. package/templates/default-instance/projectroot/monolith.config.json +32 -0
  291. package/templates/default-instance/projectroot/project.definition.mjs.template +41 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Extracts the "## Current Story" section from
3
+ * `.monolith/memory/working/active.md` — confirmed structure only, no
4
+ * heuristic Markdown interpretation (section 5 of the brief contract).
5
+ *
6
+ * Only two things are recognized: a line that is exactly a level-1..6
7
+ * heading, and a line that is exactly `---` (used in active.md as a visual
8
+ * section separator). The "Current Story" section's content is everything
9
+ * between its own heading line and the next such boundary.
10
+ */
11
+ const CURRENT_STORY_HEADING_RE = /^##\s+Current Story\s*$/i;
12
+ const HEADING_RE = /^#{1,6}\s+/;
13
+ const RULE_RE = /^-{3,}\s*$/;
14
+ export function extractCurrentStory(content) {
15
+ const lines = content.split('\n');
16
+ let headingLineIdx = -1;
17
+ for (let i = 0; i < lines.length; i++) {
18
+ if (CURRENT_STORY_HEADING_RE.test(lines[i].trim())) {
19
+ headingLineIdx = i;
20
+ break;
21
+ }
22
+ }
23
+ if (headingLineIdx === -1) {
24
+ return { hasCurrentStorySection: false, excerpt: null, lineRange: null };
25
+ }
26
+ let endIdx = lines.length;
27
+ for (let i = headingLineIdx + 1; i < lines.length; i++) {
28
+ const trimmed = lines[i].trim();
29
+ if (HEADING_RE.test(trimmed) || RULE_RE.test(trimmed)) {
30
+ endIdx = i;
31
+ break;
32
+ }
33
+ }
34
+ const bodyLines = lines.slice(headingLineIdx + 1, endIdx);
35
+ // Trim leading/trailing blank lines, keep interior ones.
36
+ let start = 0;
37
+ let end = bodyLines.length;
38
+ while (start < end && bodyLines[start].trim() === '')
39
+ start++;
40
+ while (end > start && bodyLines[end - 1].trim() === '')
41
+ end--;
42
+ const trimmedLines = bodyLines.slice(start, end);
43
+ const excerpt = trimmedLines.join('\n');
44
+ if (trimmedLines.length === 0) {
45
+ // Heading exists but has no body — still a confirmed (empty) section.
46
+ return {
47
+ hasCurrentStorySection: true,
48
+ excerpt: '',
49
+ lineRange: `${headingLineIdx + 1}-${headingLineIdx + 1}`,
50
+ };
51
+ }
52
+ const firstLine1Indexed = headingLineIdx + 1 + 1 + start;
53
+ const lastLine1Indexed = firstLine1Indexed + trimmedLines.length - 1;
54
+ return {
55
+ hasCurrentStorySection: true,
56
+ excerpt,
57
+ lineRange: `${firstLine1Indexed}-${lastLine1Indexed}`,
58
+ };
59
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * MONOLITH Context Gateway — `monolith brief` (CONTEXT-001A).
3
+ *
4
+ * BriefModel is the thin, read-only data layer produced by `collect()`.
5
+ * It is deliberately NOT a new source of truth: every field is either a
6
+ * direct, narrow projection of an existing artifact (state.json, active.md,
7
+ * a protocol's/ADR's frontmatter) or a diagnostic about that artifact's
8
+ * readability. `render()` turns a BriefModel into bounded, deterministic
9
+ * text — it never re-derives data collect() didn't already produce.
10
+ */
11
+ import type { Mission, Checkpoint } from '../coordinatorium/types.js';
12
+ import type { ProjectFileErrorCode } from '../root/index.js';
13
+ import type { FreshnessResult, FreshnessEvidence } from './freshness.js';
14
+ export type DiagnosticSeverity = 'info' | 'warn' | 'error';
15
+ /**
16
+ * Collect-time diagnostic codes. These are known before any rendering /
17
+ * budget decision is made, which is what lets render() reserve space for
18
+ * them deterministically (see render.ts's two-phase budget accounting).
19
+ */
20
+ export type BriefDiagnosticCode = 'MONOLITH_NOT_INITIALIZED' | 'STATE_NOT_INITIALIZED' | 'STATE_EMPTY' | 'STATE_UNREADABLE' | 'STATE_LEGACY_SCHEMA_MIGRATED' | 'MULTIPLE_ACTIVE_MISSIONS' | 'CHECKPOINT_ORDER_MISMATCH' | 'ACTIVE_MD_MISSING' | 'ACTIVE_MD_REJECTED' | 'ACTIVE_MD_UNREADABLE' | 'ACTIVE_MD_NO_CURRENT_STORY' | 'CONFIG_UNREADABLE' | 'CONFIG_ADR_DIRS_INVALID' | 'DOC_DIR_UNREADABLE' | 'DOC_FILE_UNREADABLE' | 'DOC_DIR_OUTSIDE_PROJECT' | 'PATH_OUTSIDE_PROJECT' | 'WRITE_ARTIFACTS_PRESENT';
21
+ export interface BriefDiagnostic {
22
+ code: BriefDiagnosticCode;
23
+ severity: DiagnosticSeverity;
24
+ message: string;
25
+ /**
26
+ * SEC-001B.1-R: the typed reason of the safe reader, when the diagnostic is about
27
+ * reading a managed file. Callers must branch on this, never on `message`.
28
+ */
29
+ readCode?: ProjectFileErrorCode;
30
+ }
31
+ /** A pointer to the on-disk artifact a section's content was read from. */
32
+ export interface Provenance {
33
+ /** Relative to the project's targetDir. Never absolute. */
34
+ source: string;
35
+ }
36
+ export type StateKeeperStatus = 'absent' | 'empty' | 'unreadable' | 'ok';
37
+ export interface StateKeeperSummary {
38
+ status: StateKeeperStatus;
39
+ /** Only set when status === 'ok' or 'unreadable' was resolved after a parse. */
40
+ schemaVersionOnDisk?: number;
41
+ provenance: Provenance;
42
+ }
43
+ export interface MissionsSummary {
44
+ /** All in_progress missions, sorted by (startedAt, id). */
45
+ active: Mission[];
46
+ /** Finished missions (completed/failed/cancelled), most recently updated first. */
47
+ recentFinished: Mission[];
48
+ provenance: Provenance;
49
+ }
50
+ export interface CheckpointSummary {
51
+ missionId: string;
52
+ /** The checkpoint with the highest numeric ordinal for this mission, or null if none exist. */
53
+ latest: Checkpoint | null;
54
+ provenance: Provenance;
55
+ }
56
+ export interface StorySummary {
57
+ /** Whether active.md exists at all. */
58
+ fileExists: boolean;
59
+ /** Whether a "## Current Story" section was found inside an existing file. */
60
+ hasCurrentStorySection: boolean;
61
+ /** Raw section text (trimmed), only set when hasCurrentStorySection is true. */
62
+ excerpt: string | null;
63
+ /** 1-indexed inclusive line range of the excerpt within active.md, e.g. "24-29". */
64
+ lineRange: string | null;
65
+ provenance: Provenance | null;
66
+ }
67
+ export interface DocRef {
68
+ id: string;
69
+ title: string;
70
+ /** Relative to targetDir. */
71
+ path: string;
72
+ }
73
+ export interface AdrIndex {
74
+ items: AdrRef[];
75
+ provenance: Provenance;
76
+ }
77
+ export type AdrRef = DocRef;
78
+ export interface ProtocolIndex {
79
+ items: DocRef[];
80
+ provenance: Provenance;
81
+ }
82
+ export interface ProjectIdentity {
83
+ name: string;
84
+ monolithRoot: string;
85
+ provenance: Provenance;
86
+ }
87
+ export interface BriefModel {
88
+ identity: ProjectIdentity;
89
+ monolithInitialized: boolean;
90
+ stateKeeper: StateKeeperSummary;
91
+ missions: MissionsSummary;
92
+ checkpoints: CheckpointSummary[];
93
+ story: StorySummary;
94
+ mandatoryProtocols: ProtocolIndex;
95
+ adrs: AdrIndex;
96
+ /** Collect-time diagnostics, in deterministic (collection-order) sequence. */
97
+ diagnostics: BriefDiagnostic[];
98
+ /**
99
+ * SELF-AWARENESS-001: whether the recorded state can be trusted. Independent of
100
+ * Completeness. Optional so a hand-built model without it renders as before.
101
+ */
102
+ freshness?: FreshnessResult;
103
+ /**
104
+ * SELF-AWARENESS-002: the evidence `freshness` was computed from, kept so
105
+ * `brief --reconcile` can explain the verdict without a second git read.
106
+ * Never rendered by the plain brief.
107
+ */
108
+ freshnessEvidence?: FreshnessEvidence;
109
+ }
110
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/brief/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * MONOLITH Context Gateway — `monolith brief` (CONTEXT-001A).
3
+ *
4
+ * BriefModel is the thin, read-only data layer produced by `collect()`.
5
+ * It is deliberately NOT a new source of truth: every field is either a
6
+ * direct, narrow projection of an existing artifact (state.json, active.md,
7
+ * a protocol's/ADR's frontmatter) or a diagnostic about that artifact's
8
+ * readability. `render()` turns a BriefModel into bounded, deterministic
9
+ * text — it never re-derives data collect() didn't already produce.
10
+ */
11
+ export {};
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/env node
2
+ /* eslint-disable no-console */
3
+ /**
4
+ * MONOLITH CLI entrypoint
5
+ *
6
+ * Commands:
7
+ * monolith init — scaffold a new MONOLITH instance from templates/
8
+ * monolith validate — static instance checks (never executes project code)
9
+ * monolith status — not implemented
10
+ * monolith dry-run — not implemented
11
+ * monolith mission — manage Tactical Coordinatorium mission lifecycle
12
+ * monolith brief — deterministic, bounded project context summary
13
+ * monolith durable — inspect/verify/maintain Durable State task logs
14
+ * monolith ui — launch Mission Control (read-only dashboard)
15
+ */
16
+ import { MONOLITH_VERSION } from '../version.js';
17
+ import { parseInitArgs } from './init-args.js';
18
+ const USAGE = `
19
+ monolith v${MONOLITH_VERSION}
20
+
21
+ Usage:
22
+ monolith <command> [options]
23
+
24
+ Commands:
25
+ init Scaffold a new MONOLITH instance in the current directory.
26
+ No positional target-directory argument; refuses to run if it
27
+ would overwrite any existing tracked file (--yes only skips
28
+ interactive prompts, it does not force an overwrite).
29
+ validate Static checks of the instance files (config, definition file,
30
+ AGENTS.md, templates). Read-only: writes, creates and deletes
31
+ nothing. Never executes project code. Not a security
32
+ enforcement gate.
33
+ status Not implemented (exits 1).
34
+ dry-run Not implemented (exits 1).
35
+ mission Manage Tactical Coordinatorium missions (start/list/show/finish/checkpoint/checkpoints)
36
+ brief Print a deterministic, bounded summary of project state (Story,
37
+ active Missions, latest Checkpoints, mandatory Protocols,
38
+ accepted ADRs) — read-only, no LLM/network/ERG involved.
39
+ durable Inspect and maintain Durable State (long-running task logs):
40
+ list | show | assess | packet | verify | retention.
41
+ ui Launch Mission Control, the read-only web dashboard, on
42
+ 127.0.0.1 (default port 4173). 'ui dev' adds Vite hot reload
43
+ (source checkout only). See 'monolith ui --help'.
44
+
45
+ Mission usage:
46
+ monolith mission start --title "..." --system "..."
47
+ monolith mission list
48
+ monolith mission show <id>
49
+ monolith mission finish <id> --result completed|failed|cancelled [--summary "..."]
50
+ monolith mission checkpoint <missionId> --summary "..." [--remaining "..." ...] [--context "..."]
51
+ monolith mission checkpoints <missionId>
52
+
53
+ Brief usage:
54
+ monolith brief [--max-chars N] [--strict]
55
+ monolith brief --reconcile [--max-chars N] (read-only report: what the Freshness verdict rests on)
56
+
57
+ Durable usage:
58
+ monolith durable list [--status active|completed|failed|cancelled]
59
+ monolith durable show|assess|packet <taskId>
60
+ monolith durable verify [taskId] (exit 2 if a log fails verification)
61
+ monolith durable retention --retain-days N [--compact-after N] [--apply]
62
+
63
+ UI usage:
64
+ monolith ui [--port N]
65
+ monolith ui dev [--port N]
66
+
67
+ Options:
68
+ --help, -h Show this help
69
+ --version, -v Print version
70
+ `.trim();
71
+ async function main() {
72
+ const args = process.argv.slice(2);
73
+ // `ui` owns its own --help / --version-like flags (`monolith ui dev --help`).
74
+ const ownsHelp = args[0] === 'ui';
75
+ if (args.length === 0 || (!ownsHelp && (args.includes('--help') || args.includes('-h')))) {
76
+ console.log(USAGE);
77
+ process.exit(0);
78
+ return;
79
+ }
80
+ if (!ownsHelp && (args.includes('--version') || args.includes('-v'))) {
81
+ console.log(MONOLITH_VERSION);
82
+ process.exit(0);
83
+ return;
84
+ }
85
+ const command = args[0];
86
+ switch (command) {
87
+ case 'init': {
88
+ const parsed = parseInitArgs(args.slice(1));
89
+ if (!parsed.ok) {
90
+ console.error(parsed.message + '\n');
91
+ process.exit(1);
92
+ return;
93
+ }
94
+ const { runInit } = await import('../init/index.js');
95
+ await runInit({ targetDir: process.cwd(), yes: parsed.yes });
96
+ break;
97
+ }
98
+ case 'validate': {
99
+ const { runValidate } = await import('../validate/index.js');
100
+ const quiet = args.includes('--quiet') || args.includes('-q');
101
+ await runValidate({ targetDir: process.cwd(), quiet });
102
+ break;
103
+ }
104
+ case 'mission': {
105
+ const sub = args[1];
106
+ const rest = args.slice(2);
107
+ const { runMissionStart, runMissionList, runMissionShow, runMissionFinish, runMissionCheckpoint, runMissionCheckpoints, } = await import('../coordinatorium/cli.js');
108
+ switch (sub) {
109
+ case 'start':
110
+ await runMissionStart(rest);
111
+ break;
112
+ case 'list':
113
+ await runMissionList(rest);
114
+ break;
115
+ case 'show':
116
+ await runMissionShow(rest);
117
+ break;
118
+ case 'finish':
119
+ await runMissionFinish(rest);
120
+ break;
121
+ case 'checkpoint':
122
+ await runMissionCheckpoint(rest);
123
+ break;
124
+ case 'checkpoints':
125
+ await runMissionCheckpoints(rest);
126
+ break;
127
+ default:
128
+ console.error(`Unknown mission subcommand: ${sub ?? '(none)'}\n`);
129
+ console.log(USAGE);
130
+ process.exit(1);
131
+ }
132
+ break;
133
+ }
134
+ case 'brief': {
135
+ const { runBrief } = await import('../brief/cli.js');
136
+ await runBrief(args.slice(1));
137
+ break;
138
+ }
139
+ case 'durable': {
140
+ const { runDurableCommand } = await import('../durable/cli.js');
141
+ await runDurableCommand(args.slice(1));
142
+ break;
143
+ }
144
+ case 'ui': {
145
+ const { runUi } = await import('./ui.js');
146
+ process.exit(await runUi(args.slice(1)));
147
+ break;
148
+ }
149
+ case 'status':
150
+ console.error('monolith status — not yet implemented (Phase 6)');
151
+ process.exit(1);
152
+ break;
153
+ case 'dry-run':
154
+ console.error('monolith dry-run — not yet implemented (Phase 6)');
155
+ process.exit(1);
156
+ break;
157
+ default:
158
+ console.error(`Unknown command: ${command}\n`);
159
+ console.log(USAGE);
160
+ process.exit(1);
161
+ }
162
+ }
163
+ main().catch((err) => {
164
+ console.error(err instanceof Error ? err.message : String(err));
165
+ process.exit(1);
166
+ });
@@ -0,0 +1,16 @@
1
+ export type InitArgsResult = {
2
+ ok: true;
3
+ yes: boolean;
4
+ } | {
5
+ ok: false;
6
+ message: string;
7
+ };
8
+ /**
9
+ * Parses args after `monolith init`. There is no positional target-directory
10
+ * argument — init always scaffolds process.cwd() — so any arg that isn't a
11
+ * known flag is an explicit error, not a silently ignored no-op (see
12
+ * LESSON-2026-0006 / TD-007: a stray positional arg was previously dropped
13
+ * on the floor and the CLI scaffolded the current directory instead).
14
+ */
15
+ export declare function parseInitArgs(args: string[]): InitArgsResult;
16
+ //# sourceMappingURL=init-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-args.d.ts","sourceRoot":"","sources":["../../src/cli/init-args.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,cAAc,CAgB5D"}
@@ -0,0 +1,24 @@
1
+ const KNOWN_INIT_FLAGS = new Set(['--yes', '-y']);
2
+ /**
3
+ * Parses args after `monolith init`. There is no positional target-directory
4
+ * argument — init always scaffolds process.cwd() — so any arg that isn't a
5
+ * known flag is an explicit error, not a silently ignored no-op (see
6
+ * LESSON-2026-0006 / TD-007: a stray positional arg was previously dropped
7
+ * on the floor and the CLI scaffolded the current directory instead).
8
+ */
9
+ export function parseInitArgs(args) {
10
+ const unknown = args.filter((arg) => !KNOWN_INIT_FLAGS.has(arg));
11
+ if (unknown.length > 0) {
12
+ return {
13
+ ok: false,
14
+ message: `Unknown argument(s) for 'monolith init': ${unknown.join(' ')}\n` +
15
+ '\n' +
16
+ " monolith init takes no positional arguments — it always scaffolds\n" +
17
+ ' the current working directory. There is no way to target another\n' +
18
+ ' directory; `cd` there first.\n' +
19
+ '\n' +
20
+ ' Usage: monolith init [--yes|-y]',
21
+ };
22
+ }
23
+ return { ok: true, yes: args.includes('--yes') || args.includes('-y') };
24
+ }
@@ -0,0 +1,23 @@
1
+ export declare const DEFAULT_UI_PORT = 4173;
2
+ export declare const DEFAULT_DEV_UI_PORT = 5173;
3
+ export declare const UI_USAGE: string;
4
+ export declare const UI_DEV_USAGE: string;
5
+ export type UiArgsResult = {
6
+ ok: true;
7
+ help: false;
8
+ dev: boolean;
9
+ port: number | null;
10
+ } | {
11
+ ok: true;
12
+ help: true;
13
+ dev: boolean;
14
+ } | {
15
+ ok: false;
16
+ message: string;
17
+ };
18
+ /**
19
+ * Parses args after `monolith ui`. Anything that is not a known flag, the
20
+ * `dev` subcommand or a valid value is an explicit error (never ignored).
21
+ */
22
+ export declare function parseUiArgs(args: string[]): UiArgsResult;
23
+ //# sourceMappingURL=ui-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-args.d.ts","sourceRoot":"","sources":["../../src/cli/ui-args.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,eAAO,MAAM,QAAQ,QAUb,CAAC;AAET,eAAO,MAAM,YAAY,QAgBjB,CAAC;AAET,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA6BxD"}
@@ -0,0 +1,66 @@
1
+ export const DEFAULT_UI_PORT = 4173;
2
+ export const DEFAULT_DEV_UI_PORT = 5173;
3
+ export const UI_USAGE = `
4
+ Usage:
5
+ monolith ui [--port N] Serve Mission Control (read-only) for the project in the current directory
6
+ monolith ui dev [--port N] Mission Control with Vite hot reload (source checkout only)
7
+
8
+ Options:
9
+ --port N Port to listen on (1-65535). Default: ${DEFAULT_UI_PORT} (ui), ${DEFAULT_DEV_UI_PORT} (ui dev)
10
+ --help, -h Show this help
11
+
12
+ The server listens on 127.0.0.1 only; there is no option to change that.
13
+ `.trim();
14
+ export const UI_DEV_USAGE = `
15
+ Usage:
16
+ monolith ui dev [--port N]
17
+
18
+ Development mode for Mission Control. Starts the read-only dashboard API on a
19
+ free loopback port for the project in the current directory, and a Vite dev
20
+ server with hot module reload that proxies /api/dashboard to it.
21
+
22
+ Requires a source checkout of MONOLITH with its devDependencies installed
23
+ (ui/ and vite are not part of the published package).
24
+
25
+ Options:
26
+ --port N Port of the Vite dev server (1-65535). Default: ${DEFAULT_DEV_UI_PORT}
27
+ --help, -h Show this help
28
+
29
+ Both servers listen on 127.0.0.1 only.
30
+ `.trim();
31
+ /**
32
+ * Parses args after `monolith ui`. Anything that is not a known flag, the
33
+ * `dev` subcommand or a valid value is an explicit error (never ignored).
34
+ */
35
+ export function parseUiArgs(args) {
36
+ let dev = false;
37
+ let help = false;
38
+ let port = null;
39
+ for (let i = 0; i < args.length; i++) {
40
+ const arg = args[i];
41
+ if (arg === '--help' || arg === '-h') {
42
+ help = true;
43
+ }
44
+ else if (arg === 'dev' && i === 0) {
45
+ dev = true;
46
+ }
47
+ else if (arg === '--host' || arg.startsWith('--host=')) {
48
+ return {
49
+ ok: false,
50
+ message: "'--host' is not supported: Mission Control listens on 127.0.0.1 only (ADR-010 G2) and has no authentication, so it must not be exposed to a network.",
51
+ };
52
+ }
53
+ else if (arg === '--port' || arg.startsWith('--port=')) {
54
+ const inline = arg.startsWith('--port=');
55
+ const value = inline ? arg.slice('--port='.length) : args[++i];
56
+ if (value === undefined || !/^\d{1,5}$/.test(value) || Number(value) < 1 || Number(value) > 65535) {
57
+ return { ok: false, message: `Invalid --port value '${value ?? ''}': expected an integer from 1 to 65535.` };
58
+ }
59
+ port = Number(value);
60
+ }
61
+ else {
62
+ return { ok: false, message: `Unknown argument for 'monolith ui${dev ? ' dev' : ''}': ${arg}` };
63
+ }
64
+ }
65
+ return help ? { ok: true, help: true, dev } : { ok: true, help: false, dev, port };
66
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `monolith ui` — launches Mission Control (ADR-010) for the project in the
3
+ * current directory.
4
+ *
5
+ * monolith ui production: the built UI (dist/ui) and the read-only API on
6
+ * one loopback port. No Vite, no devDependencies.
7
+ * monolith ui dev development: the same API on a free loopback port plus a
8
+ * Vite dev server (HMR) that proxies /api/dashboard to it.
9
+ *
10
+ * Nothing here writes to the project, runs project code or opens a browser.
11
+ * Expected user errors are one line on stderr and exit code 1, never a stack.
12
+ */
13
+ /** Thrown for expected, user-fixable failures. */
14
+ export declare class UiLaunchError extends Error {
15
+ }
16
+ export interface UiLaunchOptions {
17
+ /** Project root (default: cwd). */
18
+ projectRoot?: string;
19
+ /** Directory of the built UI (default: `dist/ui` next to this module). */
20
+ uiDir?: string;
21
+ /** Source checkout root holding `ui/` and `node_modules/vite` (default: package root). */
22
+ packageRoot?: string;
23
+ /** Listen port; 0 = any free port (tests). */
24
+ port: number;
25
+ log?: (line: string) => void;
26
+ }
27
+ export interface UiHandle {
28
+ readonly url: string;
29
+ /** Stops everything this launch started and resolves when it is gone. */
30
+ stop(): Promise<void>;
31
+ /** Resolves with the exit code when the launch ends by itself (dev: Vite exited). */
32
+ readonly ended: Promise<number>;
33
+ }
34
+ /** The project must be a MONOLITH instance: contained `monolithRoot` that exists as a real directory. */
35
+ export declare function assertMonolithProject(projectRoot: string): void;
36
+ export declare function launchUi(opts: UiLaunchOptions): Promise<UiHandle>;
37
+ export declare function launchUiDev(opts: UiLaunchOptions): Promise<UiHandle>;
38
+ /** CLI entry for `monolith ui ...`. Resolves with the process exit code once the launch has ended. */
39
+ export declare function runUi(args: string[]): Promise<number>;
40
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/cli/ui.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAWH,kDAAkD;AAClD,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACjC;AAMD,yGAAyG;AACzG,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAqB/D;AAiBD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuBvE;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoD1E;AAED,sGAAsG;AACtG,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C3D"}