@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.
- package/README.md +4 -16
- package/dist/adapters/git-cli.js +36 -0
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/application/capability/design-handler.js +472 -177
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +1 -1
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js +1 -1
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/check-branch-service.js +1 -0
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint-service.js +4 -3
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/design/consumer-document.js +179 -0
- package/dist/application/design/consumer-document.js.map +1 -0
- package/dist/application/design/design-content-gate-service.js +9 -1
- package/dist/application/design/design-content-gate-service.js.map +1 -1
- package/dist/application/design/design-gate-service.js +18 -1
- package/dist/application/design/design-gate-service.js.map +1 -1
- package/dist/application/design/design-index-service.js +22 -3
- package/dist/application/design/design-index-service.js.map +1 -1
- package/dist/application/design/design-publish-service.js +44 -136
- package/dist/application/design/design-publish-service.js.map +1 -1
- package/dist/application/design/design-simple-service.js +38 -24
- package/dist/application/design/design-simple-service.js.map +1 -1
- package/dist/application/dev-only-services.js +19 -12
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/docs-canon-service.js +79 -5
- package/dist/application/docs-canon-service.js.map +1 -1
- package/dist/application/dsn-reader-service.js +12 -47
- package/dist/application/dsn-reader-service.js.map +1 -1
- package/dist/application/export-service.js +20 -11
- package/dist/application/export-service.js.map +1 -1
- package/dist/application/flow/flow-service.js +25 -0
- package/dist/application/flow/flow-service.js.map +1 -1
- package/dist/application/flow/internal-actions.js +5 -0
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/submit.js +152 -22
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/history-table.js +82 -44
- package/dist/application/history-table.js.map +1 -1
- package/dist/application/history-update-service.js +19 -9
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +5 -4
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/hook-sql-mutation-guard.js +1 -1
- package/dist/application/hook-sql-mutation-guard.js.map +1 -1
- package/dist/application/lifecycle-target.js +1 -0
- package/dist/application/lifecycle-target.js.map +1 -1
- package/dist/application/local-proposal.js +47 -23
- package/dist/application/local-proposal.js.map +1 -1
- package/dist/application/mcp-connections-service.js +37 -2
- package/dist/application/mcp-connections-service.js.map +1 -1
- package/dist/application/mcp-dbhub-launcher.js +22 -50
- package/dist/application/mcp-dbhub-launcher.js.map +1 -1
- package/dist/application/mcp-doctor-service.js +14 -23
- package/dist/application/mcp-doctor-service.js.map +1 -1
- package/dist/application/mcp-remove-service.js +3 -3
- package/dist/application/mcp-remove-service.js.map +1 -1
- package/dist/application/mcp-setup-service.js +4 -4
- package/dist/application/mcp-setup-service.js.map +1 -1
- package/dist/application/mcp-test-connection-service.js +4 -6
- package/dist/application/mcp-test-connection-service.js.map +1 -1
- package/dist/application/parsers/phases.js +17 -5
- package/dist/application/parsers/phases.js.map +1 -1
- package/dist/application/parsers/project-block.js +5 -11
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/parsers/sessions-csv.js +16 -14
- package/dist/application/parsers/sessions-csv.js.map +1 -1
- package/dist/application/parsers/spec-relation.js +15 -11
- package/dist/application/parsers/spec-relation.js.map +1 -1
- package/dist/application/parsers/tasks.js +25 -1
- package/dist/application/parsers/tasks.js.map +1 -1
- package/dist/application/persist-service.js +67 -29
- package/dist/application/persist-service.js.map +1 -1
- package/dist/application/plugin-doctor/skills.js +1 -40
- package/dist/application/plugin-doctor/skills.js.map +1 -1
- package/dist/application/plugin-doctor-service.js +1 -3
- package/dist/application/plugin-doctor-service.js.map +1 -1
- package/dist/application/release-data/artifacts.js +1 -0
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/bundles.js +15 -6
- package/dist/application/release-data/bundles.js.map +1 -1
- package/dist/application/release-data/common.js +16 -7
- package/dist/application/release-data/common.js.map +1 -1
- package/dist/application/release-data/sessions.js +36 -8
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/render/project-block.js +2 -2
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/resume-service.js +9 -1
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/retirement/graph.js +14 -13
- package/dist/application/retirement/graph.js.map +1 -1
- package/dist/application/retirement/prepare.js +15 -2
- package/dist/application/retirement/prepare.js.map +1 -1
- package/dist/application/retirement/resolve.js.map +1 -1
- package/dist/application/self/clean-legacy.js +2 -4
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/mcp-config.js +8 -9
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/application/session-close-service.js +8 -2
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.js +26 -14
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-resolver.js +80 -34
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.js +4 -3
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/source-boundary-policy.js +483 -0
- package/dist/application/source-boundary-policy.js.map +1 -0
- package/dist/application/status-service.js +1 -0
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/workline-index-service.js +42 -20
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/workspace-migrate/apply.js +2 -4
- package/dist/application/workspace-migrate/apply.js.map +1 -1
- package/dist/application/workspace-migrate/plan.js +9 -6
- package/dist/application/workspace-migrate/plan.js.map +1 -1
- package/dist/application/workspace-migrate/preview.js +3 -3
- package/dist/application/workspace-migrate/preview.js.map +1 -1
- package/dist/application/worktree-service.js +3 -0
- package/dist/application/worktree-service.js.map +1 -1
- package/dist/cli/commands/capability.js +124 -5
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/designs.js +2 -6
- package/dist/cli/commands/designs.js.map +1 -1
- package/dist/cli/commands/dev-only.js +1 -1
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/flow.js +3 -1
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/index.js +0 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/mcp.js +53 -55
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/persist.js +27 -21
- package/dist/cli/commands/persist.js.map +1 -1
- package/dist/cli/commands/resume.js +2 -2
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/session-create.js +2 -1
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/help-groups.js +0 -1
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/main.js +0 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.js +1 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/data/recommended-skills.js +2 -2
- package/dist/cli/tui/data/recommended-skills.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab-helpers.js +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +2 -2
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/correlative.js +121 -0
- package/dist/domain/correlative.js.map +1 -0
- package/dist/domain/design/capability.js +37 -3
- package/dist/domain/design/capability.js.map +1 -1
- package/dist/domain/design/direct.js.map +1 -1
- package/dist/domain/design/simple.js +33 -1
- package/dist/domain/design/simple.js.map +1 -1
- package/dist/domain/docs-canon.js +31 -0
- package/dist/domain/docs-canon.js.map +1 -0
- package/dist/domain/flow/answer.js +57 -1
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +28 -29
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/execution-result.js +13 -1
- package/dist/domain/flow/execution-result.js.map +1 -1
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/mcp-entry.js +7 -12
- package/dist/domain/mcp-entry.js.map +1 -1
- package/dist/domain/retirement/selector.js +16 -14
- package/dist/domain/retirement/selector.js.map +1 -1
- package/dist/domain/source-boundary.js +3 -0
- package/dist/domain/source-boundary.js.map +1 -0
- package/dist/domain/workline-node.js +12 -5
- package/dist/domain/workline-node.js.map +1 -1
- package/dist/runtime/namespace-resolver.js +0 -3
- package/dist/runtime/namespace-resolver.js.map +1 -1
- package/package.json +5 -5
- package/skills/w/SKILL.md +2 -2
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +14 -9
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +7 -0
- package/skills/w/commands/export-scripts.md +8 -2
- package/skills/w/commands/plan-new.md +1 -0
- package/skills/w/context/MANIFEST.json +2 -9
- package/skills/w/exports/export-scripts/EXPORT.md +13 -9
- package/skills/w/loops/CHASSIS.md +1 -1
- package/skills/w/loops/plan-exec-loop/LOOP.md +14 -10
- package/skills/w/loops/plan-new-loop/LOOP.md +16 -16
- package/skills/w/loops/plan-refine-loop/LOOP.md +6 -1
- package/skills/w/loops/quick-loop/LOOP.md +2 -2
- package/skills/w/loops/spec-refine-loop/LOOP.md +4 -0
- package/skills/w/modules/DB-RESEARCH-RULE.md +5 -5
- package/skills/w/modules/DB-SCRIPTS-ONLY.md +5 -6
- package/skills/w/modules/EXEC-DB-POLICY.md +2 -2
- package/skills/w/modules/PLAN-INPUT.md +11 -9
- package/skills/w/roles/sql/ROLE.md +9 -9
- package/dist/application/decisiones-service.js +0 -31
- package/dist/application/decisiones-service.js.map +0 -1
- package/dist/application/dev-bootstrap-dsn-service.js +0 -76
- package/dist/application/dev-bootstrap-dsn-service.js.map +0 -1
- package/dist/application/profile/profile-service.js +0 -199
- package/dist/application/profile/profile-service.js.map +0 -1
- package/dist/application/tasks-service.js +0 -45
- package/dist/application/tasks-service.js.map +0 -1
- package/dist/cli/commands/bootstrap-dsn.js +0 -16
- package/dist/cli/commands/bootstrap-dsn.js.map +0 -1
- package/dist/cli/tui/components/process-list.js +0 -43
- 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 {
|
|
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(
|
|
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
|
|
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":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,yBAAyB,GAG1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,kBAAkB,
|
|
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
|
|
223
|
-
for (let probe = 0; probe < MAX_CLAIM_PROBES; probe++,
|
|
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
|
|
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
|
|
258
|
-
if (
|
|
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
|
|
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
|
|
288
|
-
if (
|
|
289
|
-
|
|
287
|
+
const correlative = leadingCorrelative(entry.name);
|
|
288
|
+
if (correlative !== null)
|
|
289
|
+
correlatives.push(correlative);
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
|
-
const
|
|
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:
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAgC,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAGL,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAiC7D,MAAM,YAAY,GAChB,mMAAmM,CAAC;AAEtM;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,WAAW,CAAC,KAAkB,CAAC,KAAK,IAAI,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,MAAyC,EACzC,SAAqB;IAErB,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACpC,4EAA4E;QAC5E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,2EAA2E;QAC3E,wDAAwD;QACxD,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,2EAA2E;IAC3E,8EAA8E;IAC9E,mEAAmE;IACnE,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;QACnE,eAAe,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC5F,sBAAsB,EAAE,KAAK;QAC7B,YAAY,EAAE,SAAS;QACvB,qBAAqB,EAAE,QAAQ,CAAC,GAAG;QACnC,eAAe,EAAE,cAAc;QAC/B,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,SAAoB,EACpB,WAAmB,EACnB,QAAwC,EACxC,cAAwB;IAExB,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACpD,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,QAAQ,CAAC,IAAI;QAC5B,SAAS,EAAE,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;QAChF,eAAe,EAAE,iBAAiB,CAChC,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CACtE;QACD,sBAAsB,EAAE,SAAS,EAAE,SAAS,KAAK,UAAU;QAC3D,YAAY,EAAE,WAAW;QACzB,qBAAqB,EAAE,QAAQ,CAAC,GAAG;QACnC,eAAe,EAAE,cAAc;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA6B;IACtD,OAAO;QACL,aAAa,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;QACnE,gBAAgB,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAyC;IAItE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,MAAM,EAAE,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAkB,EAClB,KAAmB;IAEnB,MAAM,MAAM,GAAmB;QAC7B,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,KAAK;QAC3B,MAAM,EAAE,SAAS;QACjB,uBAAuB,EAAE,KAAK;KAC/B,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAEpC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC5D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACtC,SAAS,GAAG,UAAU,CAAC;QACzB,CAAC;IACH,CAAC;IACD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAE3C,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtE,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,eAAe,GAAG,GAAG,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IACtE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,sBAAsB,CAAC,EAAE,WAAW,EAAE,CAAC;IAChF,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChD,MAAM,CAAC,oBAAoB,GAAG,QAAQ,KAAK,MAAM,CAAC;QAClD,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC;IAChC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAwBD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAY,EACZ,KAAmB,EACnB,KAAgB;IAEhB,oFAAoF;IACpF,kFAAkF;IAClF,KAAK,GAAG,CAAC;IACT,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAEhD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,2CAA2C;QAC3C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,gEAAgE;IAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,SAAS,CAAC,MAAM;QACzB,KAAK,EAAE,SAAS;KACjB,CAAC;AACJ,CAAC;AA4DD;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAkB,EAClB,GAAY,EACZ,KAAmB,EACnB,KAAsB;IAEtB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;IAEtE,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,+EAA+E;IAC/E,6EAA6E;IAC7E,+DAA+D;IAC/D,IAAI,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,0FAA0F,CAC/G,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,EAAE,EACF,KAAK,EACL,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,yEAAyE;QACzE,0EAA0E;QAC1E,0EAA0E;QAC1E,mBAAmB;QACnB,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7F,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClC,aAAa,EAAE,KAAK,IAAI,IAAI;gBAC5B,YAAY,EAAE,IAAI;aACnB,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,gBAAgB,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YAClF,yEAAyE;YACzE,iEAAiE;YACjE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAAE,SAAS;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9D,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;oBACL,GAAG,KAAK;oBACR,IAAI,EAAE,GAAG;oBACT,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC;oBAC7B,aAAa,EAAE,KAAK,IAAI,IAAI;oBAC5B,YAAY,EAAE,KAAK;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yCAAyC,MAAM,KAAK,gBAAgB,0CAA0C,CAC/G,CAAC;IACJ,CAAC,EACD,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAC/B,CAAC;IAEF,IAAI,OAAO,IAAI,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAChG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAC5B,EAAkB,EAClB,MAAc,EACd,KAAwB,EACxB,KAAa,EACb,MAAc;IAEd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE;YAAE,SAAS;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM;gBAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,4EAA4E;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,IAAI,CACjB,EAAkB,EAClB,MAAc,EACd,MAAe;IAEf,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,4EAA4E;QAC5E,4EAA4E;QAC5E,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,WAAW,KAAK,IAAI;gBAAE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC;QAC5B,MAAM;QACN,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC;QACxE,KAAK;QACL,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc;IAClD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -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
|
|
60
|
+
const checked = checkDestination(path, category, dir);
|
|
15
61
|
if (!checked.ok)
|
|
16
62
|
return checked;
|
|
17
|
-
|
|
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
|
|
39
|
-
if (!
|
|
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: ${
|
|
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":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
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
|
|
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
|
|
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.
|
|
58
|
-
*
|
|
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 `
|
|
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
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAoB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAShF,MAAM,UAAU,
|
|
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
|
-
|
|
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" || !
|
|
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
|
|
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
|
|
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)}`,
|