@tacuchi/agent-workflow-cli 21.16.0 → 22.0.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 (209) hide show
  1. package/README.md +4 -16
  2. package/dist/adapters/git-cli.js +36 -0
  3. package/dist/adapters/git-cli.js.map +1 -1
  4. package/dist/application/capability/design-handler.js +472 -177
  5. package/dist/application/capability/design-handler.js.map +1 -1
  6. package/dist/application/capability/dispatcher.js +1 -1
  7. package/dist/application/capability/dispatcher.js.map +1 -1
  8. package/dist/application/capability/durable-effect.js +1 -1
  9. package/dist/application/capability/durable-effect.js.map +1 -1
  10. package/dist/application/check-branch-service.js +1 -0
  11. package/dist/application/check-branch-service.js.map +1 -1
  12. package/dist/application/checkpoint-service.js +4 -3
  13. package/dist/application/checkpoint-service.js.map +1 -1
  14. package/dist/application/design/consumer-document.js +179 -0
  15. package/dist/application/design/consumer-document.js.map +1 -0
  16. package/dist/application/design/design-content-gate-service.js +9 -1
  17. package/dist/application/design/design-content-gate-service.js.map +1 -1
  18. package/dist/application/design/design-gate-service.js +18 -1
  19. package/dist/application/design/design-gate-service.js.map +1 -1
  20. package/dist/application/design/design-index-service.js +22 -3
  21. package/dist/application/design/design-index-service.js.map +1 -1
  22. package/dist/application/design/design-publish-service.js +44 -136
  23. package/dist/application/design/design-publish-service.js.map +1 -1
  24. package/dist/application/design/design-simple-service.js +38 -24
  25. package/dist/application/design/design-simple-service.js.map +1 -1
  26. package/dist/application/dev-only-services.js +19 -12
  27. package/dist/application/dev-only-services.js.map +1 -1
  28. package/dist/application/docs-canon-service.js +79 -5
  29. package/dist/application/docs-canon-service.js.map +1 -1
  30. package/dist/application/dsn-reader-service.js +12 -47
  31. package/dist/application/dsn-reader-service.js.map +1 -1
  32. package/dist/application/export-service.js +20 -11
  33. package/dist/application/export-service.js.map +1 -1
  34. package/dist/application/flow/flow-service.js +25 -0
  35. package/dist/application/flow/flow-service.js.map +1 -1
  36. package/dist/application/flow/internal-actions.js +5 -0
  37. package/dist/application/flow/internal-actions.js.map +1 -1
  38. package/dist/application/flow/submit.js +152 -22
  39. package/dist/application/flow/submit.js.map +1 -1
  40. package/dist/application/history-table.js +82 -44
  41. package/dist/application/history-table.js.map +1 -1
  42. package/dist/application/history-update-service.js +19 -9
  43. package/dist/application/history-update-service.js.map +1 -1
  44. package/dist/application/hook-git-commit-advisor.js +5 -4
  45. package/dist/application/hook-git-commit-advisor.js.map +1 -1
  46. package/dist/application/hook-sql-mutation-guard.js +1 -1
  47. package/dist/application/hook-sql-mutation-guard.js.map +1 -1
  48. package/dist/application/lifecycle-target.js +1 -0
  49. package/dist/application/lifecycle-target.js.map +1 -1
  50. package/dist/application/local-proposal.js +47 -23
  51. package/dist/application/local-proposal.js.map +1 -1
  52. package/dist/application/mcp-connections-service.js +37 -2
  53. package/dist/application/mcp-connections-service.js.map +1 -1
  54. package/dist/application/mcp-dbhub-launcher.js +22 -50
  55. package/dist/application/mcp-dbhub-launcher.js.map +1 -1
  56. package/dist/application/mcp-doctor-service.js +14 -23
  57. package/dist/application/mcp-doctor-service.js.map +1 -1
  58. package/dist/application/mcp-remove-service.js +3 -3
  59. package/dist/application/mcp-remove-service.js.map +1 -1
  60. package/dist/application/mcp-setup-service.js +4 -4
  61. package/dist/application/mcp-setup-service.js.map +1 -1
  62. package/dist/application/mcp-test-connection-service.js +4 -6
  63. package/dist/application/mcp-test-connection-service.js.map +1 -1
  64. package/dist/application/parsers/phases.js +17 -5
  65. package/dist/application/parsers/phases.js.map +1 -1
  66. package/dist/application/parsers/project-block.js +5 -11
  67. package/dist/application/parsers/project-block.js.map +1 -1
  68. package/dist/application/parsers/sessions-csv.js +16 -14
  69. package/dist/application/parsers/sessions-csv.js.map +1 -1
  70. package/dist/application/parsers/spec-relation.js +15 -11
  71. package/dist/application/parsers/spec-relation.js.map +1 -1
  72. package/dist/application/parsers/tasks.js +25 -1
  73. package/dist/application/parsers/tasks.js.map +1 -1
  74. package/dist/application/persist-service.js +67 -29
  75. package/dist/application/persist-service.js.map +1 -1
  76. package/dist/application/plugin-doctor/skills.js +1 -40
  77. package/dist/application/plugin-doctor/skills.js.map +1 -1
  78. package/dist/application/plugin-doctor-service.js +1 -3
  79. package/dist/application/plugin-doctor-service.js.map +1 -1
  80. package/dist/application/release-data/artifacts.js +1 -0
  81. package/dist/application/release-data/artifacts.js.map +1 -1
  82. package/dist/application/release-data/bundles.js +15 -6
  83. package/dist/application/release-data/bundles.js.map +1 -1
  84. package/dist/application/release-data/common.js +16 -7
  85. package/dist/application/release-data/common.js.map +1 -1
  86. package/dist/application/release-data/sessions.js +36 -8
  87. package/dist/application/release-data/sessions.js.map +1 -1
  88. package/dist/application/render/project-block.js +2 -2
  89. package/dist/application/render/project-block.js.map +1 -1
  90. package/dist/application/resume-service.js +9 -1
  91. package/dist/application/resume-service.js.map +1 -1
  92. package/dist/application/retirement/graph.js +14 -13
  93. package/dist/application/retirement/graph.js.map +1 -1
  94. package/dist/application/retirement/prepare.js +15 -2
  95. package/dist/application/retirement/prepare.js.map +1 -1
  96. package/dist/application/retirement/resolve.js.map +1 -1
  97. package/dist/application/self/clean-legacy.js +2 -4
  98. package/dist/application/self/clean-legacy.js.map +1 -1
  99. package/dist/application/self/mcp-config.js +8 -9
  100. package/dist/application/self/mcp-config.js.map +1 -1
  101. package/dist/application/session-close-service.js +8 -2
  102. package/dist/application/session-close-service.js.map +1 -1
  103. package/dist/application/session-create-service.js +26 -14
  104. package/dist/application/session-create-service.js.map +1 -1
  105. package/dist/application/session-resolver.js +80 -34
  106. package/dist/application/session-resolver.js.map +1 -1
  107. package/dist/application/session-resume-service.js +4 -3
  108. package/dist/application/session-resume-service.js.map +1 -1
  109. package/dist/application/source-boundary-policy.js +483 -0
  110. package/dist/application/source-boundary-policy.js.map +1 -0
  111. package/dist/application/status-service.js +1 -0
  112. package/dist/application/status-service.js.map +1 -1
  113. package/dist/application/workline-index-service.js +42 -20
  114. package/dist/application/workline-index-service.js.map +1 -1
  115. package/dist/application/workspace-migrate/apply.js +2 -4
  116. package/dist/application/workspace-migrate/apply.js.map +1 -1
  117. package/dist/application/workspace-migrate/plan.js +9 -6
  118. package/dist/application/workspace-migrate/plan.js.map +1 -1
  119. package/dist/application/workspace-migrate/preview.js +3 -3
  120. package/dist/application/workspace-migrate/preview.js.map +1 -1
  121. package/dist/application/worktree-service.js +3 -0
  122. package/dist/application/worktree-service.js.map +1 -1
  123. package/dist/cli/commands/capability.js +124 -5
  124. package/dist/cli/commands/capability.js.map +1 -1
  125. package/dist/cli/commands/designs.js +2 -6
  126. package/dist/cli/commands/designs.js.map +1 -1
  127. package/dist/cli/commands/dev-only.js +1 -1
  128. package/dist/cli/commands/dev-only.js.map +1 -1
  129. package/dist/cli/commands/flow.js +3 -1
  130. package/dist/cli/commands/flow.js.map +1 -1
  131. package/dist/cli/commands/index.js +0 -2
  132. package/dist/cli/commands/index.js.map +1 -1
  133. package/dist/cli/commands/mcp.js +53 -55
  134. package/dist/cli/commands/mcp.js.map +1 -1
  135. package/dist/cli/commands/persist.js +27 -21
  136. package/dist/cli/commands/persist.js.map +1 -1
  137. package/dist/cli/commands/resume.js +2 -2
  138. package/dist/cli/commands/resume.js.map +1 -1
  139. package/dist/cli/commands/session-create.js +2 -1
  140. package/dist/cli/commands/session-create.js.map +1 -1
  141. package/dist/cli/help-groups.js +0 -1
  142. package/dist/cli/help-groups.js.map +1 -1
  143. package/dist/cli/main.js +0 -0
  144. package/dist/cli/main.js.map +1 -1
  145. package/dist/cli/parser.js +1 -0
  146. package/dist/cli/parser.js.map +1 -1
  147. package/dist/cli/tui/data/recommended-skills.js +2 -2
  148. package/dist/cli/tui/data/recommended-skills.js.map +1 -1
  149. package/dist/cli/tui/tabs/mcp-tab-helpers.js +1 -1
  150. package/dist/cli/tui/tabs/mcp-tab.js +2 -2
  151. package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
  152. package/dist/domain/capability/protocol.js.map +1 -1
  153. package/dist/domain/correlative.js +121 -0
  154. package/dist/domain/correlative.js.map +1 -0
  155. package/dist/domain/design/capability.js +37 -3
  156. package/dist/domain/design/capability.js.map +1 -1
  157. package/dist/domain/design/direct.js.map +1 -1
  158. package/dist/domain/design/simple.js +33 -1
  159. package/dist/domain/design/simple.js.map +1 -1
  160. package/dist/domain/docs-canon.js +31 -0
  161. package/dist/domain/docs-canon.js.map +1 -0
  162. package/dist/domain/flow/answer.js +57 -1
  163. package/dist/domain/flow/answer.js.map +1 -1
  164. package/dist/domain/flow/authority.js +28 -29
  165. package/dist/domain/flow/authority.js.map +1 -1
  166. package/dist/domain/flow/execution-result.js +13 -1
  167. package/dist/domain/flow/execution-result.js.map +1 -1
  168. package/dist/domain/flow/run-state.js.map +1 -1
  169. package/dist/domain/mcp-entry.js +7 -12
  170. package/dist/domain/mcp-entry.js.map +1 -1
  171. package/dist/domain/retirement/selector.js +16 -14
  172. package/dist/domain/retirement/selector.js.map +1 -1
  173. package/dist/domain/source-boundary.js +3 -0
  174. package/dist/domain/source-boundary.js.map +1 -0
  175. package/dist/domain/workline-node.js +12 -5
  176. package/dist/domain/workline-node.js.map +1 -1
  177. package/dist/runtime/namespace-resolver.js +0 -3
  178. package/dist/runtime/namespace-resolver.js.map +1 -1
  179. package/package.json +5 -5
  180. package/skills/w/SKILL.md +2 -2
  181. package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +14 -9
  182. package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +7 -0
  183. package/skills/w/commands/export-scripts.md +8 -2
  184. package/skills/w/commands/plan-new.md +1 -0
  185. package/skills/w/context/MANIFEST.json +2 -9
  186. package/skills/w/exports/export-scripts/EXPORT.md +13 -9
  187. package/skills/w/loops/CHASSIS.md +1 -1
  188. package/skills/w/loops/plan-exec-loop/LOOP.md +14 -10
  189. package/skills/w/loops/plan-new-loop/LOOP.md +16 -16
  190. package/skills/w/loops/plan-refine-loop/LOOP.md +6 -1
  191. package/skills/w/loops/quick-loop/LOOP.md +2 -2
  192. package/skills/w/loops/spec-refine-loop/LOOP.md +4 -0
  193. package/skills/w/modules/DB-RESEARCH-RULE.md +5 -5
  194. package/skills/w/modules/DB-SCRIPTS-ONLY.md +5 -6
  195. package/skills/w/modules/EXEC-DB-POLICY.md +2 -2
  196. package/skills/w/modules/PLAN-INPUT.md +11 -9
  197. package/skills/w/roles/sql/ROLE.md +9 -9
  198. package/dist/application/decisiones-service.js +0 -31
  199. package/dist/application/decisiones-service.js.map +0 -1
  200. package/dist/application/dev-bootstrap-dsn-service.js +0 -76
  201. package/dist/application/dev-bootstrap-dsn-service.js.map +0 -1
  202. package/dist/application/profile/profile-service.js +0 -199
  203. package/dist/application/profile/profile-service.js.map +0 -1
  204. package/dist/application/tasks-service.js +0 -45
  205. package/dist/application/tasks-service.js.map +0 -1
  206. package/dist/cli/commands/bootstrap-dsn.js +0 -16
  207. package/dist/cli/commands/bootstrap-dsn.js.map +0 -1
  208. package/dist/cli/tui/components/process-list.js +0 -43
  209. package/dist/cli/tui/components/process-list.js.map +0 -1
@@ -17,8 +17,8 @@
17
17
  import { createHash } from "node:crypto";
18
18
  import { join } from "node:path";
19
19
  import { DESIGNS_DIR, DESIGN_MANIFEST_FILE, DESIGN_MANIFEST_SCHEMA_ID, } from "../../domain/design/manifest.js";
20
- import { SIMPLE_DESIGN_FILE, archivedDesignPath, designFolder, designSlug, nextPackageId, validateSimpleDesign, } from "../../domain/design/simple.js";
21
- import { baseDigest } from "../../domain/proposal.js";
20
+ import { SIMPLE_DESIGN_FILE, archivedDesignPath, designFolder, designSlug, nextPackageId, simpleMaturity, validateSimpleDesign, } from "../../domain/design/simple.js";
21
+ import { checkConsumerBase, checkConsumerReference, checkConsumerShape, withConsumerRelation, } from "./consumer-document.js";
22
22
  /**
23
23
  * The identity and the destination, decided before a single byte is authored.
24
24
  *
@@ -27,6 +27,7 @@ import { baseDigest } from "../../domain/proposal.js";
27
27
  * thing that differs here is where the folder comes from.
28
28
  */
29
29
  export function resolveSimpleTarget(index, operation, inputs) {
30
+ const root = inputs.root ?? index.root;
30
31
  if (operation === "create") {
31
32
  const title = inputs.title ?? "";
32
33
  if (title.trim().length === 0) {
@@ -45,10 +46,11 @@ export function resolveSimpleTarget(index, operation, inputs) {
45
46
  ok: true,
46
47
  value: {
47
48
  packageId,
48
- path: designFolder(index.root, packageId, designSlug(title)),
49
+ path: designFolder(root, packageId, designSlug(title)),
49
50
  revision: 1,
50
51
  supersedes: null,
51
52
  manifest: null,
53
+ manifest_base: null,
52
54
  },
53
55
  };
54
56
  }
@@ -96,6 +98,7 @@ export function resolveSimpleTarget(index, operation, inputs) {
96
98
  revision: current + 1,
97
99
  supersedes: current === 0 ? null : current,
98
100
  manifest: found.manifest,
101
+ manifest_base: found.manifest_base,
99
102
  },
100
103
  };
101
104
  }
@@ -112,9 +115,18 @@ export function resolveSimpleTarget(index, operation, inputs) {
112
115
  export async function buildSimpleProposal(fs, workspace, input) {
113
116
  const { target } = input;
114
117
  const documentPath = `${target.path}/${SIMPLE_DESIGN_FILE}`;
118
+ const consumer = input.consumer_document ?? null;
115
119
  const parsed = validateSimpleDesign(input.document, documentPath);
116
120
  if (!parsed.ok || parsed.value === null)
117
121
  return { ok: false, failures: parsed.failures };
122
+ if (consumer !== null) {
123
+ const shape = checkConsumerShape(consumer, input.docs_canon);
124
+ if (shape !== null)
125
+ return { ok: false, failures: [shape] };
126
+ const consumerBase = await checkConsumerBase(fs, workspace, consumer);
127
+ if (consumerBase !== null)
128
+ return { ok: false, failures: [consumerBase] };
129
+ }
118
130
  const digest = `sha256:${createHash("sha256").update(input.document, "utf8").digest("hex")}`;
119
131
  const artifacts = [];
120
132
  // The outgoing revision first: it has to exist at its archived path before the
@@ -145,21 +157,39 @@ export async function buildSimpleProposal(fs, workspace, input) {
145
157
  content: input.document,
146
158
  overwrite: target.supersedes !== null,
147
159
  });
148
- const manifest = nextManifest(target, parsed.value.title, digest, input.published);
160
+ const manifest = nextManifest(target, parsed.value.title, digest, input.published, consumer);
161
+ if (consumer !== null) {
162
+ const reference = checkConsumerReference(consumer, {
163
+ package: target.packageId,
164
+ revision: target.revision,
165
+ digest,
166
+ });
167
+ if (reference !== null)
168
+ return { ok: false, failures: [reference] };
169
+ }
149
170
  artifacts.push({
150
171
  path: `${target.path}/${DESIGN_MANIFEST_FILE}`,
151
172
  content: `${JSON.stringify(manifest, null, 2)}\n`,
152
173
  overwrite: target.manifest !== null,
153
174
  });
175
+ if (consumer !== null) {
176
+ // The package is complete before the consumer moves. A final failure rolls
177
+ // the whole set back through the shared publish boundary.
178
+ artifacts.push({ path: consumer.path, content: consumer.content, overwrite: true });
179
+ }
154
180
  return {
155
181
  ok: true,
156
182
  value: {
157
183
  artifacts,
158
- base: await manifestBase(fs, workspace, target),
184
+ // The target's manifest and base came from the same index read. Do not
185
+ // re-read now: a concurrent update must make this proposal stale at
186
+ // apply, never bless candidate bytes derived from the earlier manifest.
187
+ base: target.manifest_base,
159
188
  digest,
160
189
  revision: target.revision,
161
190
  packageId: target.packageId,
162
191
  title: parsed.value.title,
192
+ maturity: simpleMaturity(parsed.value),
163
193
  },
164
194
  };
165
195
  }
@@ -170,7 +200,7 @@ export async function buildSimpleProposal(fs, workspace, input) {
170
200
  * the archive: the digest is the identity of a revision and the path is where it
171
201
  * happens to be, so repointing one is a re-index and never a rewrite of history.
172
202
  */
173
- function nextManifest(target, title, digest, published) {
203
+ function nextManifest(target, title, digest, published, consumer) {
174
204
  const previous = target.manifest;
175
205
  const baselines = (previous?.baselines ?? []).map((b) => ({
176
206
  ...b,
@@ -183,7 +213,7 @@ function nextManifest(target, title, digest, published) {
183
213
  parent_baseline: target.supersedes === null ? null : `${target.packageId}@r${target.supersedes}`,
184
214
  published,
185
215
  });
186
- return {
216
+ return withConsumerRelation({
187
217
  schema: previous?.schema ?? DESIGN_MANIFEST_SCHEMA_ID,
188
218
  id: target.packageId,
189
219
  mode: "simple",
@@ -196,22 +226,6 @@ function nextManifest(target, title, digest, published) {
196
226
  currentness: [],
197
227
  governance: previous?.governance ?? { reviews: [], revocations: [] },
198
228
  relations: previous?.relations ?? { specs: [], plans: [] },
199
- };
200
- }
201
- /**
202
- * The compare-and-swap base: the manifest as it stood when this was computed.
203
- *
204
- * Null for a brand-new design — there is nothing to have moved. The publication
205
- * of a first revision is protected by its destinations not existing, which
206
- * `applyLocalProposal` enforces through `overwrite: false`.
207
- */
208
- async function manifestBase(fs, workspace, target) {
209
- if (target.manifest === null)
210
- return null;
211
- const path = `${target.path}/${DESIGN_MANIFEST_FILE}`;
212
- const absolute = join(workspace, path);
213
- if (!(await fs.exists(absolute)))
214
- return null;
215
- return { path, digest: baseDigest(await fs.readText(absolute)) };
229
+ }, consumer);
216
230
  }
217
231
  //# sourceMappingURL=design-simple-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-simple-service.js","sourceRoot":"","sources":["../../../src/application/design/design-simple-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design-simple-service.js","sourceRoot":"","sources":["../../../src/application/design/design-simple-service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { existsSync, readFileSync, readdirSync, unlinkSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { isAbsolute, join } from "node:path";
4
+ import { formatCorrelative, leadingCorrelative, maxCorrelative, nextCorrelative, sameCorrelative, } from "../domain/correlative.js";
4
5
  import { HARNESSES, harnessById } from "../domain/harnesses.js";
5
6
  import { reservationMarker } from "../domain/reservation.js";
6
7
  import { decideResources, } from "../domain/resource-policy.js";
@@ -219,12 +220,11 @@ export async function runNextNumber(fs, env, paths, input) {
219
220
  claim_reused: true,
220
221
  };
221
222
  }
222
- let number = state.current_max + 1;
223
- for (let probe = 0; probe < MAX_CLAIM_PROBES; probe++, number++) {
224
- const nnn = String(number).padStart(3, "0");
223
+ let nnn = state.next;
224
+ for (let probe = 0; probe < MAX_CLAIM_PROBES; probe++, nnn = nextCorrelative(nnn)) {
225
225
  // Taken by NUMBER: another document already holds this correlative under
226
226
  // a different slug, so the name is free while the number is not.
227
- if (state.files.some((name) => name.startsWith(`${nnn}-`)))
227
+ if (state.files.some((name) => hasCorrelative(name, nnn)))
228
228
  continue;
229
229
  const path = join(target, `${nnn}-${claim}`);
230
230
  const { created } = await fs.writeTextExclusive(path, marker);
@@ -254,8 +254,8 @@ export async function runNextNumber(fs, env, paths, input) {
254
254
  */
255
255
  async function heldReservation(fs, target, files, claim, marker) {
256
256
  for (const name of files) {
257
- const nnn = name.slice(0, 3);
258
- if (!/^\d{3}$/.test(nnn) || name.slice(3) !== `-${claim}`)
257
+ const nnn = leadingCorrelative(name);
258
+ if (nnn === null || name.slice(nnn.length) !== `-${claim}`)
259
259
  continue;
260
260
  const path = join(target, name);
261
261
  try {
@@ -278,30 +278,37 @@ async function scan(fs, target, dryRun) {
278
278
  created = true;
279
279
  }
280
280
  const files = [];
281
- const numbers = [];
281
+ const correlatives = [];
282
282
  if (exists) {
283
283
  const entries = await fs.list(target);
284
284
  const sortedEntries = [...entries].sort((a, b) => a.name.localeCompare(b.name));
285
285
  for (const entry of sortedEntries) {
286
286
  files.push(entry.name);
287
- const m = entry.name.match(/^(\d{3})/);
288
- if (m?.[1])
289
- numbers.push(Number.parseInt(m[1], 10));
287
+ const correlative = leadingCorrelative(entry.name);
288
+ if (correlative !== null)
289
+ correlatives.push(correlative);
290
290
  }
291
291
  }
292
- const currentMax = numbers.length > 0 ? Math.max(...numbers) : 0;
292
+ const maximum = maxCorrelative(correlatives);
293
+ // `current_max` is a legacy JSON number kept for callers that display it.
294
+ // All minting itself uses `next`, which remains lossless for any digit width.
295
+ const currentMax = maximum === null ? 0 : Number.parseInt(maximum, 10);
293
296
  return {
294
297
  directory: normalize(target),
295
298
  exists,
296
299
  created,
297
300
  current_max: currentMax,
298
- next: String(currentMax + 1).padStart(3, "0"),
301
+ next: maximum === null ? formatCorrelative(1) : nextCorrelative(maximum),
299
302
  files,
300
303
  claimed_path: null,
301
304
  claimed_owner: null,
302
305
  claim_reused: false,
303
306
  };
304
307
  }
308
+ function hasCorrelative(name, wanted) {
309
+ const found = leadingCorrelative(name);
310
+ return found !== null && sameCorrelative(found, wanted);
311
+ }
305
312
  function normalize(path) {
306
313
  return path.split("\\").join("/");
307
314
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dev-only-services.js","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-only-services.js","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,54 @@
1
1
  import { parse as parseToml } from "smol-toml";
2
+ import { DEFAULT_CORE_DOCS_CANON } from "../domain/docs-canon.js";
2
3
  import { checkSafeRelativePath } from "../domain/safe-path.js";
4
+ /**
5
+ * The workspace's DOCUMENTARY CANON: where each export category publishes.
6
+ *
7
+ * The categories are the tool's (an export owns exactly one folder and that
8
+ * invariant does not move); the FOLDER is the workspace's. A workspace whose
9
+ * canon says `documentacion/manuales` used to get a second, parallel tree next
10
+ * to its own the first time it exported, because the destinations were literals
11
+ * in the policy table.
12
+ *
13
+ * It lives in the `[docs]` table of `skills.toml` — the workspace's only
14
+ * declarative config, already read through the same global → workspace cascade.
15
+ * The alternative was the WORKSPACE block, which is a CLI-RENDERED block: a
16
+ * value there needs a renderer, a parser slot and an upsert path before anyone
17
+ * can write it, and it would still be a second place to look for config.
18
+ *
19
+ * Fail-closed, unlike the skills cascade above it: a role that cannot be
20
+ * resolved falls back to a built-in skill and the workspace still runs, whereas
21
+ * a destination that cannot be resolved would publish a dossier somewhere the
22
+ * author did not mean. A workspace that declares nothing keeps the tool's
23
+ * default and never reads a file that is not there.
24
+ */
25
+ /** Every document category the CLI may publish or index. */
26
+ export const DOCS_CATEGORIES = [
27
+ "research",
28
+ "spec",
29
+ "plan",
30
+ "diagrams",
31
+ "manuals",
32
+ "reports",
33
+ "scripts",
34
+ ];
35
+ /** The three categories that form Workline's document graph. */
36
+ export const CORE_DOC_CATEGORIES = ["research", "spec", "plan"];
37
+ export { DEFAULT_CORE_DOCS_CANON } from "../domain/docs-canon.js";
38
+ const CORE_DOC_CATEGORY_SET = new Set(CORE_DOC_CATEGORIES);
39
+ /** Current layout when the workspace has no `[docs]` table. */
40
+ export const DEFAULT_DOCS_CANON = {
41
+ ...DEFAULT_CORE_DOCS_CANON,
42
+ diagrams: "docs/diagrams",
43
+ manuals: "docs/manuals",
44
+ reports: "docs/reports",
45
+ scripts: "docs/scripts",
46
+ };
3
47
  const TABLE = "docs";
4
48
  export async function resolveDocsCanon(fs, paths, categories) {
5
49
  const canon = {};
50
+ for (const category of categories)
51
+ canon[category] = DEFAULT_DOCS_CANON[category];
6
52
  // Workspace last: it overrides the user-global default, same order as skills.
7
53
  for (const path of [paths.userSkillsToml(), paths.cwdSkillsToml()]) {
8
54
  if (!(await fs.exists(path)))
@@ -11,14 +57,30 @@ export async function resolveDocsCanon(fs, paths, categories) {
11
57
  if (!level.ok)
12
58
  return level;
13
59
  for (const [category, dir] of Object.entries(level.table)) {
14
- const checked = checkDestination(path, category, dir, categories);
60
+ const checked = checkDestination(path, category, dir);
15
61
  if (!checked.ok)
16
62
  return checked;
17
- canon[category] = checked.dir;
63
+ if (categories.includes(category))
64
+ canon[category] = checked.dir;
18
65
  }
19
66
  }
20
67
  return { ok: true, canon };
21
68
  }
69
+ /** Resolve research/spec/plan together so their writers and readers agree. */
70
+ export async function resolveCoreDocsCanon(fs, paths) {
71
+ const resolved = await resolveDocsCanon(fs, paths, CORE_DOC_CATEGORIES);
72
+ if (!resolved.ok)
73
+ return resolved;
74
+ const research = resolved.canon.research;
75
+ const spec = resolved.canon.spec;
76
+ const plan = resolved.canon.plan;
77
+ // Defaults are installed above; keep this guard because config is an external
78
+ // boundary and a missing path must never fall through to a second literal.
79
+ if (research === undefined || spec === undefined || plan === undefined) {
80
+ return { ok: false, error: "el canon documental no resolvió research, spec y plan" };
81
+ }
82
+ return { ok: true, canon: { research, spec, plan } };
83
+ }
22
84
  async function readDocsTable(fs, path) {
23
85
  let parsed;
24
86
  try {
@@ -35,11 +97,11 @@ async function readDocsTable(fs, path) {
35
97
  }
36
98
  return { ok: true, table: table };
37
99
  }
38
- function checkDestination(path, category, dir, categories) {
39
- if (!categories.includes(category)) {
100
+ function checkDestination(path, category, dir) {
101
+ if (!DOCS_CATEGORIES.includes(category)) {
40
102
  return {
41
103
  ok: false,
42
- error: `${path}: [${TABLE}] no reconoce '${category}'; las categorías son: ${categories.join(", ")}`,
104
+ error: `${path}: [${TABLE}] no reconoce '${category}'; las categorías son: ${DOCS_CATEGORIES.join(", ")}`,
43
105
  };
44
106
  }
45
107
  if (typeof dir !== "string") {
@@ -63,6 +125,18 @@ function checkDestination(path, category, dir, categories) {
63
125
  error: `${path}: [${TABLE}].${category} = '${dir}' apunta a un directorio oculto; el canon documental publica documentos, no estado interno de la herramienta`,
64
126
  };
65
127
  }
128
+ // Core document routes are read by flow, retirement, custody and design
129
+ // boundaries that have not all adopted DocsCanon yet. Accepting a custom
130
+ // route here would let persist/index see one tree while a later lifecycle
131
+ // write still targets another. Keep the shared defaults centralised now and
132
+ // refuse a relocation until that migration is complete.
133
+ if (CORE_DOC_CATEGORY_SET.has(category) &&
134
+ safe.path !== DEFAULT_DOCS_CANON[category]) {
135
+ return {
136
+ ok: false,
137
+ error: `${path}: [${TABLE}].${category} todavía no admite un destino personalizado; flow, retiro, custodia y diseño siguen cerrados sobre el layout canónico`,
138
+ };
139
+ }
66
140
  return { ok: true, dir: safe.path };
67
141
  }
68
142
  //# sourceMappingURL=docs-canon-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs-canon-service.js","sourceRoot":"","sources":["../../src/application/docs-canon-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-canon-service.js","sourceRoot":"","sources":["../../src/application/docs-canon-service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { normalizeMcpInstance } from "../domain/mcp-entry.js";
3
- export function readBootstrapDsn(paths) {
3
+ export function readDsnFile(paths) {
4
4
  const path = paths.userDsnFile();
5
5
  if (!existsSync(path)) {
6
6
  return { path, exists: false, values: {} };
@@ -22,58 +22,23 @@ export function readBootstrapDsn(paths) {
22
22
  return { path, exists: true, values };
23
23
  }
24
24
  export function dsnKeyForInstance(instance) {
25
- return dsnKeyFromSegments(instanceSegments(instance));
26
- }
27
- /**
28
- * The variable names that may hold the DSN of `instance`, most specific first:
29
- * the canonical key, and the one without its leading segment. An alias usually
30
- * carries an organisation prefix (`qtc-cert`) that the variable the user really
31
- * exported does not (`DB_CERT_DSN`).
32
- *
33
- * Exactly ONE segment is ever dropped. `qtc-cert-ro` may fall back to
34
- * DB_CERT_RO_DSN but never to DB_RO_DSN, because collapsing an alias to its last
35
- * segment makes different organisations share one generic name — `acme-prod` and
36
- * `qtc-prod` would both reach DB_PROD_DSN, and starting a server against another
37
- * environment's credential is a worse outcome than refusing to start.
38
- */
39
- export function dsnKeyCandidates(instance) {
40
- const segments = instanceSegments(instance);
41
- // A single-segment or degenerate alias still yields its canonical key: callers
42
- // must always have at least one name to probe and to name in errors.
43
- if (segments.length <= 1)
44
- return [dsnKeyFromSegments(segments)];
45
- return [dsnKeyFromSegments(segments), dsnKeyFromSegments(segments.slice(1))];
46
- }
47
- function instanceSegments(instance) {
48
- return normalizeMcpInstance(instance)
49
- .split("-")
50
- .filter((segment) => segment.length > 0);
51
- }
52
- function dsnKeyFromSegments(segments) {
53
- return `DB_${segments.join("_").toUpperCase()}_DSN`;
25
+ return `DB_${normalizeMcpInstance(instance).replace(/-/g, "_").toUpperCase()}_DSN`;
54
26
  }
55
27
  /**
56
28
  * Single resolution path shared by the dbhub launcher and the connection
57
- * tester. Precedence: the whole candidate list in `env` first, then the whole
58
- * list in the dsn.env file an exported variable beats a persisted one, and
59
- * among exported variables the most specific name wins.
29
+ * tester. The caller supplies the exact variable registered for the connection;
30
+ * the environment wins over the local dsn.env file for that one name only.
60
31
  *
61
- * Throws whatever `readBootstrapDsn` throws (unreadable dsn.env): each caller
32
+ * Throws whatever `readDsnFile` throws (unreadable dsn.env): each caller
62
33
  * decides how that surfaces instead of it being swallowed here.
63
34
  */
64
- export function resolveDsnFromCandidates(candidates, env, paths) {
65
- for (const variable of candidates) {
66
- const fromEnv = env[variable];
67
- if (fromEnv && fromEnv.length > 0)
68
- return { dsn: fromEnv, variable, source: "env" };
69
- }
70
- // Read once, and only after every candidate missed in the environment.
71
- const values = readBootstrapDsn(paths).values;
72
- for (const variable of candidates) {
73
- const fromFile = values[variable];
74
- if (fromFile && fromFile.length > 0)
75
- return { dsn: fromFile, variable, source: "dsn.env" };
76
- }
35
+ export function resolveExactDsn(variable, env, paths) {
36
+ const fromEnv = env[variable];
37
+ if (fromEnv && fromEnv.length > 0)
38
+ return { dsn: fromEnv, variable, source: "env" };
39
+ const fromFile = readDsnFile(paths).values[variable];
40
+ if (fromFile && fromFile.length > 0)
41
+ return { dsn: fromFile, variable, source: "dsn.env" };
77
42
  return null;
78
43
  }
79
44
  //# sourceMappingURL=dsn-reader-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dsn-reader-service.js","sourceRoot":"","sources":["../../src/application/dsn-reader-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dsn-reader-service.js","sourceRoot":"","sources":["../../src/application/dsn-reader-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAoB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAShF,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAqB;IACrD,OAAO,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC;AACrF,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,GAAuC,EACvC,KAAmB;IAEnB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACpF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { CORRELATIVE_SOURCE, isCorrelative } from "../domain/correlative.js";
1
2
  import { localDateIso } from "./dates.js";
2
3
  import { runNextNumber } from "./dev-only-services.js";
3
4
  import { resolveDocsCanon } from "./docs-canon-service.js";
@@ -11,6 +12,17 @@ export const EXPORT_CATEGORIES = [
11
12
  "reports",
12
13
  "scripts",
13
14
  ];
15
+ /**
16
+ * The generated contract for `export-scripts`, also mirrored by its direct
17
+ * command guide. Keep its semantic anchors exported so a small parity guard
18
+ * catches doctrine that drifts away from what the CLI actually sends.
19
+ */
20
+ export const SCRIPTS_FINAL_STATE_CONTRACT = "Un dossier con 00-ROLLBACK.sql y README.md obligatorios, más los forwards NN-<nombre>.sql numerados de forma continua desde 01. El CLI NUNCA ejecuta SQL. El bundle publica el ESTADO FINAL NETO de la secuencia, no una réplica por sesión: lo que nace y muere dentro de la secuencia se omite; lo migrado va directo a su forma final; lo que el contexto declara retirado se omite aunque ningún script lo elimine. 00-ROLLBACK.sql invierte ese ESTADO FINAL en orden seguro para las dependencias, no el reverso literal de los forwards. Reconciliá contra el código además de las sesiones y la base. Excluí identidades concretas y semillas de prueba; conservá sólo objetos compartidos y necesarios para el estado final.";
21
+ export const SCRIPTS_FINAL_STATE_CONTRACT_ANCHORS = [
22
+ "ESTADO FINAL NETO",
23
+ "orden seguro para las dependencias",
24
+ "objetos compartidos y necesarios para el estado final",
25
+ ];
14
26
  const POLICIES = {
15
27
  diagrams: {
16
28
  dir: "docs/diagrams",
@@ -40,13 +52,7 @@ const POLICIES = {
40
52
  shape: "dossier",
41
53
  required: ["00-ROLLBACK.sql", "README.md"],
42
54
  extensions: [".sql", ".md"],
43
- // The net-final-state doctrine travels HERE, in the contract the composer
44
- // must obey, and not in the `skills/w` bundle: the bundle's context budget
45
- // is a frozen gate with 121 B of headroom and this is ~700 B, so shipping it
46
- // there would mean cutting live doctrine to pay for it. The contract reaches
47
- // the same reader at the exact moment the bundle is being written, and its
48
- // bytes are request bytes, which no frozen gate prices.
49
- contract: "Un dossier con 00-ROLLBACK.sql y README.md obligatorios, más los forwards NN-<nombre>.sql numerados de forma continua desde 01. El CLI NUNCA ejecuta SQL. El bundle publica el ESTADO FINAL NETO de la secuencia, no una réplica por sesión: lo que nace y muere dentro de la secuencia se omite; lo migrado va directo a su forma final; lo que el contexto declara retirado se omite aunque ningún script lo elimine. 00-ROLLBACK.sql invierte ese ESTADO FINAL en orden seguro para las dependencias, no el reverso literal de los forwards. Reconciliá contra el código además de las sesiones y la base. Excluí identidades concretas y semillas de prueba; conservá funciones reutilizables, tablas maestras y el registro de menú/rol.",
55
+ contract: SCRIPTS_FINAL_STATE_CONTRACT,
50
56
  },
51
57
  };
52
58
  const LIMITS = { max_artifacts: 64, max_artifact_bytes: 512 * 1024 };
@@ -173,7 +179,6 @@ async function readCorpus(fs, env, paths, selection) {
173
179
  }
174
180
  // ── the scope, travelling between stages ─────────────────────────────────────
175
181
  const DATE_RE = /^\d{4}-\d{2}-\d{2}$/;
176
- const NEXT_RE = /^\d{3,}$/;
177
182
  /**
178
183
  * The scope an answer echoes back, so `validate` and `apply` rebuild the
179
184
  * preparation the answer was written against.
@@ -210,7 +215,7 @@ function scopeShapeError(scope) {
210
215
  if (typeof scope.date !== "string" || !DATE_RE.test(scope.date)) {
211
216
  return "'date' tiene que ser YYYY-MM-DD";
212
217
  }
213
- if (typeof scope.next !== "string" || !NEXT_RE.test(scope.next)) {
218
+ if (typeof scope.next !== "string" || !isCorrelative(scope.next)) {
214
219
  return "'next' tiene que ser el correlativo de 3 dígitos";
215
220
  }
216
221
  if (scope.sessions !== undefined && !isStringArray(scope.sessions)) {
@@ -388,7 +393,9 @@ function renumber(artifact, prepared, minted, policy) {
388
393
  if (artifact.path === policy.overwritable)
389
394
  return artifact;
390
395
  if (policy.shape === "document") {
391
- const name = artifact.path.slice(policy.dir.length + 1).replace(/^\d{3}-/, "");
396
+ const name = artifact.path
397
+ .slice(policy.dir.length + 1)
398
+ .replace(new RegExp(`^${CORRELATIVE_SOURCE}-`), "");
392
399
  return { path: `${policy.dir}/${minted}-${name}`, content: artifact.content };
393
400
  }
394
401
  // The number to move is the UNIT's own, which is its LAST segment — never the
@@ -397,7 +404,9 @@ function renumber(artifact, prepared, minted, policy) {
397
404
  // replacement: the export would be approved into `docs/003-manuales/…` and
398
405
  // written into `docs/001-manuales/…`, a folder outside `allowed_destinations`
399
406
  // that nothing downstream re-checks.
400
- const unitName = prepared.unit.slice(policy.dir.length + 1).replace(/^\d{3}-/, `${minted}-`);
407
+ const unitName = prepared.unit
408
+ .slice(policy.dir.length + 1)
409
+ .replace(new RegExp(`^${CORRELATIVE_SOURCE}-`), `${minted}-`);
401
410
  const unit = `${policy.dir}/${unitName}`;
402
411
  return {
403
412
  path: `${unit}/${artifact.path.slice(prepared.unit.length + 1)}`,