dorfl 0.3.2 → 0.4.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/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +108 -0
- package/dist/cli.js.map +1 -1
- package/dist/prd-to-spec.d.ts +3 -52
- package/dist/prd-to-spec.d.ts.map +1 -1
- package/dist/prd-to-spec.js +12 -94
- package/dist/prd-to-spec.js.map +1 -1
- package/dist/resync-protocol.d.ts +73 -0
- package/dist/resync-protocol.d.ts.map +1 -0
- package/dist/resync-protocol.js +114 -0
- package/dist/resync-protocol.js.map +1 -0
- package/dist/skills/setup/SKILL.md +1 -1
- package/package.json +1 -1
- package/src/cli.ts +157 -0
- package/src/prd-to-spec.ts +18 -140
- package/src/resync-protocol.ts +162 -0
package/dist/prd-to-spec.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync, writeFileSync,
|
|
2
|
-
import { join,
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, writeFileSync, rmdirSync, } from 'node:fs';
|
|
2
|
+
import { join, basename } from 'node:path';
|
|
3
3
|
import { run, git, gitMv } from './git.js';
|
|
4
|
-
import { resolveProtocolDoc } from './prompt.js';
|
|
5
4
|
import { WORK_ROOT } from './work-layout.js';
|
|
6
5
|
import { repoConfigPath } from './repo-config.js';
|
|
6
|
+
import { resyncProtocol, PROTOCOL_DOCS, } from './resync-protocol.js';
|
|
7
|
+
// The protocol re-sync now lives in the shared `resync-protocol.ts` module (so
|
|
8
|
+
// the standalone `dorfl sync` command and this migration engine share ONE
|
|
9
|
+
// implementation). Re-exported here for backward compatibility with existing
|
|
10
|
+
// importers/tests that reach for these symbols on `prd-to-spec.js`.
|
|
11
|
+
export { resyncProtocol, PROTOCOL_DOCS };
|
|
7
12
|
/** The `prd → spec` cutover this verb enacts (ADR §7e). */
|
|
8
13
|
export const MIGRATION = {
|
|
9
14
|
from: 'prd',
|
|
@@ -12,24 +17,6 @@ export const MIGRATION = {
|
|
|
12
17
|
toFolder: 'specs',
|
|
13
18
|
configKeys: [{ from: 'prdsLandIn', to: 'specsLandIn' }],
|
|
14
19
|
};
|
|
15
|
-
/**
|
|
16
|
-
* The FULL set of protocol docs `setup` propagates into a repo's
|
|
17
|
-
* `work/protocol/`. The re-sync copies EACH from the package's canonical source
|
|
18
|
-
* (via {@link resolveProtocolDoc}) so the migrated repo carries the new `spec`
|
|
19
|
-
* contract. Kept in lockstep with `skills/setup/protocol/` (the source of truth)
|
|
20
|
-
* and the `vendor-protocol` build step (which vendors these into `dist/protocol/`
|
|
21
|
-
* so the published CLI is self-contained).
|
|
22
|
-
*/
|
|
23
|
-
export const PROTOCOL_DOCS = [
|
|
24
|
-
'WORK-CONTRACT.md',
|
|
25
|
-
'CLAIM-PROTOCOL.md',
|
|
26
|
-
'REVIEW-PROTOCOL.md',
|
|
27
|
-
'SURFACE-PROTOCOL.md',
|
|
28
|
-
'TASKING-PROTOCOL.md',
|
|
29
|
-
'ADR-FORMAT.md',
|
|
30
|
-
'task-template.md',
|
|
31
|
-
'spec-template.md',
|
|
32
|
-
];
|
|
33
20
|
// ───────────────────────────────────────────────────────────────────────────
|
|
34
21
|
// Layer: keep-case replace (the bespoke sweep — see the tooling JSDoc above).
|
|
35
22
|
// ───────────────────────────────────────────────────────────────────────────
|
|
@@ -124,78 +111,6 @@ export function checkQuiescence(repoPath, migration = MIGRATION, env = undefined
|
|
|
124
111
|
}
|
|
125
112
|
return undefined;
|
|
126
113
|
}
|
|
127
|
-
/**
|
|
128
|
-
* Re-sync the target repo's `work/protocol/*` from the package's canonical
|
|
129
|
-
* source (the deterministic part of the `setup` skill — copy the docs verbatim +
|
|
130
|
-
* bump `VERSION`). Resolves each doc's SOURCE via {@link resolveProtocolDoc} with
|
|
131
|
-
* NO `cwd`, so it reads the package-vendored (`dist/protocol/`) or dev-source
|
|
132
|
-
* (`skills/setup/protocol/`) copy — NEVER the target repo's own (old) copy. This
|
|
133
|
-
* is how the migrated repo picks up the new `spec` contract before its data is
|
|
134
|
-
* converted. Idempotent: a doc already byte-identical is reported `unchanged`.
|
|
135
|
-
* A doc whose SOURCE cannot be resolved is reported `skipped` (NOT copied, NEVER
|
|
136
|
-
* a VERSION-bump) rather than silently bumping VERSION with nothing copied.
|
|
137
|
-
*
|
|
138
|
-
* `dryRun` reports what WOULD be copied without writing. `resolveDoc` overrides
|
|
139
|
-
* how a doc's source path is resolved (defaults to {@link resolveProtocolDoc});
|
|
140
|
-
* it exists so a test can force a non-resolvable source (a path that does not
|
|
141
|
-
* exist) to exercise the skip path.
|
|
142
|
-
*/
|
|
143
|
-
export function resyncProtocol(repoPath, options = {}) {
|
|
144
|
-
const protocolDir = join(repoPath, WORK_ROOT, 'protocol');
|
|
145
|
-
const resolveDoc = options.resolveDoc ?? ((name) => resolveProtocolDoc(name));
|
|
146
|
-
const docs = [];
|
|
147
|
-
for (const name of PROTOCOL_DOCS) {
|
|
148
|
-
// Resolve the SOURCE (package/dev), never the target's adopted copy.
|
|
149
|
-
const source = resolveDoc(name);
|
|
150
|
-
const destAbs = join(protocolDir, name);
|
|
151
|
-
const destRel = relative(repoPath, destAbs);
|
|
152
|
-
const sourceExists = existsSync(source);
|
|
153
|
-
if (!sourceExists) {
|
|
154
|
-
// The source doc could not be resolved: copy NOTHING and record the doc as
|
|
155
|
-
// SKIPPED (never a change). This is the latent-bug fix: a non-resolvable
|
|
156
|
-
// source must not count as `changed` and bump `VERSION` while copying no
|
|
157
|
-
// file. `unchanged: false` here is honest (the dest was not made to match a
|
|
158
|
-
// source), but `skipped: true` keeps it OUT of the VERSION-bump tally.
|
|
159
|
-
docs.push({ name, dest: destRel, unchanged: false, skipped: true });
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
// Source resolved: a doc is CHANGED (VERSION-bump-worthy) only when the dest
|
|
163
|
-
// is absent OR its content differs from the source. An identical dest is a
|
|
164
|
-
// no-op copy (`unchanged`), so an already-synced re-run stays a true no-op.
|
|
165
|
-
const unchanged = existsSync(destAbs) &&
|
|
166
|
-
readFileSync(source, 'utf8') === readFileSync(destAbs, 'utf8');
|
|
167
|
-
if (!options.dryRun) {
|
|
168
|
-
mkdirSync(dirname(destAbs), { recursive: true });
|
|
169
|
-
copyFileSync(source, destAbs);
|
|
170
|
-
}
|
|
171
|
-
docs.push({ name, dest: destRel, unchanged, skipped: false });
|
|
172
|
-
}
|
|
173
|
-
const versionAbs = join(protocolDir, 'VERSION');
|
|
174
|
-
const versionRel = relative(repoPath, versionAbs);
|
|
175
|
-
// Bump VERSION only when a doc was ACTUALLY COPIED with new content, or when
|
|
176
|
-
// VERSION is absent AND at least one doc was genuinely synced (copied). A
|
|
177
|
-
// SKIPPED doc (unresolvable source, nothing copied) is NEVER a change —
|
|
178
|
-
// counting it would bump VERSION without copying a single doc (the latent bug),
|
|
179
|
-
// and the write-when-absent fallback must ALSO require a real copy so an
|
|
180
|
-
// all-skipped resync leaves no VERSION behind. A re-run on an already-synced
|
|
181
|
-
// repo must stay a true no-op — otherwise the (always-fresh) `synced-at`
|
|
182
|
-
// timestamp would dirty the tree on every idempotent re-run.
|
|
183
|
-
const anyDocChanged = docs.some((d) => !d.unchanged && !d.skipped);
|
|
184
|
-
const anyDocSynced = docs.some((d) => !d.skipped);
|
|
185
|
-
if (!options.dryRun &&
|
|
186
|
-
(anyDocChanged || (anyDocSynced && !existsSync(versionAbs)))) {
|
|
187
|
-
mkdirSync(dirname(versionAbs), { recursive: true });
|
|
188
|
-
const today = new Date().toISOString().slice(0, 10);
|
|
189
|
-
writeFileSync(versionAbs, [
|
|
190
|
-
`protocol-version: ${today}`,
|
|
191
|
-
'synced-from: skills/setup/protocol/',
|
|
192
|
-
`synced-at: ${new Date().toISOString()}`,
|
|
193
|
-
'source-commit: dorfl prd-to-spec',
|
|
194
|
-
'',
|
|
195
|
-
].join('\n'));
|
|
196
|
-
}
|
|
197
|
-
return { docs, versionPath: versionRel };
|
|
198
|
-
}
|
|
199
114
|
// ───────────────────────────────────────────────────────────────────────────
|
|
200
115
|
// Layer 3a: the FOLDER move (in lockstep with work-layout.ts).
|
|
201
116
|
// ───────────────────────────────────────────────────────────────────────────
|
|
@@ -684,7 +599,10 @@ export function runPrdToSpec(options) {
|
|
|
684
599
|
};
|
|
685
600
|
}
|
|
686
601
|
// 2. Setup contract re-sync FIRST (decision B).
|
|
687
|
-
const resync = resyncProtocol(repoPath, {
|
|
602
|
+
const resync = resyncProtocol(repoPath, {
|
|
603
|
+
dryRun,
|
|
604
|
+
sourceCommit: 'dorfl prd-to-spec',
|
|
605
|
+
});
|
|
688
606
|
// 3a. Folders (git mv) — before content, so the content sweep also fixes the
|
|
689
607
|
// moved items' own `work/prds/…` body refs in their NEW location.
|
|
690
608
|
const folderMoves = migrateFolders(repoPath, migration, { dryRun });
|
package/dist/prd-to-spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd-to-spec.js","sourceRoot":"","sources":["../src/prd-to-spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prd-to-spec.js","sourceRoot":"","sources":["../src/prd-to-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The **protocol re-sync** primitive: copy the package's canonical
|
|
3
|
+
* `work/protocol/*` docs into a target repo's `work/protocol/` and bump
|
|
4
|
+
* `work/protocol/VERSION`. This is the deterministic slice of what the `setup`
|
|
5
|
+
* skill does — the SINGLE source of truth for "make this repo carry the current
|
|
6
|
+
* protocol contract".
|
|
7
|
+
*
|
|
8
|
+
* Two verbs drive it:
|
|
9
|
+
* - `dorfl sync` — the standalone "get the latest protocol" command (a repo
|
|
10
|
+
* that adopted an OLD protocol picks up the new docs in one command);
|
|
11
|
+
* - `dorfl prd-to-spec` — the vocabulary-migration engine, which re-syncs the
|
|
12
|
+
* contract FIRST (before converting the repo's data) so the migrated repo
|
|
13
|
+
* lands on the new `spec` contract.
|
|
14
|
+
*
|
|
15
|
+
* It was lifted out of `prd-to-spec.ts` (where it began life) into this shared
|
|
16
|
+
* module so both verbs import ONE implementation; `prd-to-spec.ts` re-exports
|
|
17
|
+
* the symbols for backward compatibility.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* The FULL set of protocol docs `setup` propagates into a repo's
|
|
21
|
+
* `work/protocol/`. The re-sync copies EACH from the package's canonical source
|
|
22
|
+
* (via {@link resolveProtocolDoc}) so a set-up repo carries the current
|
|
23
|
+
* contract. Kept in lockstep with `skills/setup/protocol/` (the source of truth)
|
|
24
|
+
* and the `vendor-protocol` build step (which vendors these into `dist/protocol/`
|
|
25
|
+
* so the published CLI is self-contained).
|
|
26
|
+
*/
|
|
27
|
+
export declare const PROTOCOL_DOCS: readonly string[];
|
|
28
|
+
/** One protocol doc the re-sync copied (or WOULD copy under `--dry-run`). */
|
|
29
|
+
export interface ResyncedDoc {
|
|
30
|
+
/** The doc basename (e.g. `'WORK-CONTRACT.md'`). */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Repo-relative destination (`work/protocol/<name>`). */
|
|
33
|
+
dest: string;
|
|
34
|
+
/** True when the target already had byte-identical content (a no-op copy). */
|
|
35
|
+
unchanged: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* True when the doc's SOURCE could not be resolved (the package/dev copy is
|
|
38
|
+
* missing), so NOTHING was copied to `dest`. A skipped doc is NEVER counted as
|
|
39
|
+
* a change (it must not bump `VERSION` — the latent bug this field guards) and
|
|
40
|
+
* is surfaced LOUDLY by the caller. Distinct from `unchanged` (which means the
|
|
41
|
+
* source WAS resolved and matched the dest byte-for-byte).
|
|
42
|
+
*/
|
|
43
|
+
skipped: boolean;
|
|
44
|
+
}
|
|
45
|
+
/** What the protocol re-sync did (or would do). */
|
|
46
|
+
export interface ResyncResult {
|
|
47
|
+
docs: ResyncedDoc[];
|
|
48
|
+
/** Repo-relative `work/protocol/VERSION` path (written unless dry-run). */
|
|
49
|
+
versionPath: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Re-sync the target repo's `work/protocol/*` from the package's canonical
|
|
53
|
+
* source (the deterministic part of the `setup` skill — copy the docs verbatim +
|
|
54
|
+
* bump `VERSION`). Resolves each doc's SOURCE via {@link resolveProtocolDoc} with
|
|
55
|
+
* NO `cwd`, so it reads the package-vendored (`dist/protocol/`) or dev-source
|
|
56
|
+
* (`skills/setup/protocol/`) copy — NEVER the target repo's own (old) copy. This
|
|
57
|
+
* is how a repo picks up the current contract. Idempotent: a doc already
|
|
58
|
+
* byte-identical is reported `unchanged`. A doc whose SOURCE cannot be resolved
|
|
59
|
+
* is reported `skipped` (NOT copied, NEVER a VERSION-bump) rather than silently
|
|
60
|
+
* bumping VERSION with nothing copied.
|
|
61
|
+
*
|
|
62
|
+
* `dryRun` reports what WOULD be copied without writing. `resolveDoc` overrides
|
|
63
|
+
* how a doc's source path is resolved (defaults to {@link resolveProtocolDoc});
|
|
64
|
+
* it exists so a test can force a non-resolvable source (a path that does not
|
|
65
|
+
* exist) to exercise the skip path. `sourceCommit` is stamped into the written
|
|
66
|
+
* `VERSION` provenance line so a reader can tell which verb wrote it.
|
|
67
|
+
*/
|
|
68
|
+
export declare function resyncProtocol(repoPath: string, options?: {
|
|
69
|
+
dryRun?: boolean;
|
|
70
|
+
resolveDoc?: (name: string) => string;
|
|
71
|
+
sourceCommit?: string;
|
|
72
|
+
}): ResyncResult;
|
|
73
|
+
//# sourceMappingURL=resync-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resync-protocol.d.ts","sourceRoot":"","sources":["../src/resync-protocol.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAS1C,CAAC;AAEF,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC3B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACjB,GACJ,YAAY,CA+Dd"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, copyFileSync, mkdirSync, } from 'node:fs';
|
|
2
|
+
import { join, relative, dirname } from 'node:path';
|
|
3
|
+
import { resolveProtocolDoc } from './prompt.js';
|
|
4
|
+
import { WORK_ROOT } from './work-layout.js';
|
|
5
|
+
/**
|
|
6
|
+
* The **protocol re-sync** primitive: copy the package's canonical
|
|
7
|
+
* `work/protocol/*` docs into a target repo's `work/protocol/` and bump
|
|
8
|
+
* `work/protocol/VERSION`. This is the deterministic slice of what the `setup`
|
|
9
|
+
* skill does — the SINGLE source of truth for "make this repo carry the current
|
|
10
|
+
* protocol contract".
|
|
11
|
+
*
|
|
12
|
+
* Two verbs drive it:
|
|
13
|
+
* - `dorfl sync` — the standalone "get the latest protocol" command (a repo
|
|
14
|
+
* that adopted an OLD protocol picks up the new docs in one command);
|
|
15
|
+
* - `dorfl prd-to-spec` — the vocabulary-migration engine, which re-syncs the
|
|
16
|
+
* contract FIRST (before converting the repo's data) so the migrated repo
|
|
17
|
+
* lands on the new `spec` contract.
|
|
18
|
+
*
|
|
19
|
+
* It was lifted out of `prd-to-spec.ts` (where it began life) into this shared
|
|
20
|
+
* module so both verbs import ONE implementation; `prd-to-spec.ts` re-exports
|
|
21
|
+
* the symbols for backward compatibility.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* The FULL set of protocol docs `setup` propagates into a repo's
|
|
25
|
+
* `work/protocol/`. The re-sync copies EACH from the package's canonical source
|
|
26
|
+
* (via {@link resolveProtocolDoc}) so a set-up repo carries the current
|
|
27
|
+
* contract. Kept in lockstep with `skills/setup/protocol/` (the source of truth)
|
|
28
|
+
* and the `vendor-protocol` build step (which vendors these into `dist/protocol/`
|
|
29
|
+
* so the published CLI is self-contained).
|
|
30
|
+
*/
|
|
31
|
+
export const PROTOCOL_DOCS = [
|
|
32
|
+
'WORK-CONTRACT.md',
|
|
33
|
+
'CLAIM-PROTOCOL.md',
|
|
34
|
+
'REVIEW-PROTOCOL.md',
|
|
35
|
+
'SURFACE-PROTOCOL.md',
|
|
36
|
+
'TASKING-PROTOCOL.md',
|
|
37
|
+
'ADR-FORMAT.md',
|
|
38
|
+
'task-template.md',
|
|
39
|
+
'spec-template.md',
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* Re-sync the target repo's `work/protocol/*` from the package's canonical
|
|
43
|
+
* source (the deterministic part of the `setup` skill — copy the docs verbatim +
|
|
44
|
+
* bump `VERSION`). Resolves each doc's SOURCE via {@link resolveProtocolDoc} with
|
|
45
|
+
* NO `cwd`, so it reads the package-vendored (`dist/protocol/`) or dev-source
|
|
46
|
+
* (`skills/setup/protocol/`) copy — NEVER the target repo's own (old) copy. This
|
|
47
|
+
* is how a repo picks up the current contract. Idempotent: a doc already
|
|
48
|
+
* byte-identical is reported `unchanged`. A doc whose SOURCE cannot be resolved
|
|
49
|
+
* is reported `skipped` (NOT copied, NEVER a VERSION-bump) rather than silently
|
|
50
|
+
* bumping VERSION with nothing copied.
|
|
51
|
+
*
|
|
52
|
+
* `dryRun` reports what WOULD be copied without writing. `resolveDoc` overrides
|
|
53
|
+
* how a doc's source path is resolved (defaults to {@link resolveProtocolDoc});
|
|
54
|
+
* it exists so a test can force a non-resolvable source (a path that does not
|
|
55
|
+
* exist) to exercise the skip path. `sourceCommit` is stamped into the written
|
|
56
|
+
* `VERSION` provenance line so a reader can tell which verb wrote it.
|
|
57
|
+
*/
|
|
58
|
+
export function resyncProtocol(repoPath, options = {}) {
|
|
59
|
+
const protocolDir = join(repoPath, WORK_ROOT, 'protocol');
|
|
60
|
+
const resolveDoc = options.resolveDoc ?? ((name) => resolveProtocolDoc(name));
|
|
61
|
+
const docs = [];
|
|
62
|
+
for (const name of PROTOCOL_DOCS) {
|
|
63
|
+
// Resolve the SOURCE (package/dev), never the target's adopted copy.
|
|
64
|
+
const source = resolveDoc(name);
|
|
65
|
+
const destAbs = join(protocolDir, name);
|
|
66
|
+
const destRel = relative(repoPath, destAbs);
|
|
67
|
+
const sourceExists = existsSync(source);
|
|
68
|
+
if (!sourceExists) {
|
|
69
|
+
// The source doc could not be resolved: copy NOTHING and record the doc as
|
|
70
|
+
// SKIPPED (never a change). This is the latent-bug fix: a non-resolvable
|
|
71
|
+
// source must not count as `changed` and bump `VERSION` while copying no
|
|
72
|
+
// file. `unchanged: false` here is honest (the dest was not made to match a
|
|
73
|
+
// source), but `skipped: true` keeps it OUT of the VERSION-bump tally.
|
|
74
|
+
docs.push({ name, dest: destRel, unchanged: false, skipped: true });
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
// Source resolved: a doc is CHANGED (VERSION-bump-worthy) only when the dest
|
|
78
|
+
// is absent OR its content differs from the source. An identical dest is a
|
|
79
|
+
// no-op copy (`unchanged`), so an already-synced re-run stays a true no-op.
|
|
80
|
+
const unchanged = existsSync(destAbs) &&
|
|
81
|
+
readFileSync(source, 'utf8') === readFileSync(destAbs, 'utf8');
|
|
82
|
+
if (!options.dryRun) {
|
|
83
|
+
mkdirSync(dirname(destAbs), { recursive: true });
|
|
84
|
+
copyFileSync(source, destAbs);
|
|
85
|
+
}
|
|
86
|
+
docs.push({ name, dest: destRel, unchanged, skipped: false });
|
|
87
|
+
}
|
|
88
|
+
const versionAbs = join(protocolDir, 'VERSION');
|
|
89
|
+
const versionRel = relative(repoPath, versionAbs);
|
|
90
|
+
// Bump VERSION only when a doc was ACTUALLY COPIED with new content, or when
|
|
91
|
+
// VERSION is absent AND at least one doc was genuinely synced (copied). A
|
|
92
|
+
// SKIPPED doc (unresolvable source, nothing copied) is NEVER a change —
|
|
93
|
+
// counting it would bump VERSION without copying a single doc (the latent bug),
|
|
94
|
+
// and the write-when-absent fallback must ALSO require a real copy so an
|
|
95
|
+
// all-skipped resync leaves no VERSION behind. A re-run on an already-synced
|
|
96
|
+
// repo must stay a true no-op — otherwise the (always-fresh) `synced-at`
|
|
97
|
+
// timestamp would dirty the tree on every idempotent re-run.
|
|
98
|
+
const anyDocChanged = docs.some((d) => !d.unchanged && !d.skipped);
|
|
99
|
+
const anyDocSynced = docs.some((d) => !d.skipped);
|
|
100
|
+
if (!options.dryRun &&
|
|
101
|
+
(anyDocChanged || (anyDocSynced && !existsSync(versionAbs)))) {
|
|
102
|
+
mkdirSync(dirname(versionAbs), { recursive: true });
|
|
103
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
104
|
+
writeFileSync(versionAbs, [
|
|
105
|
+
`protocol-version: ${today}`,
|
|
106
|
+
'synced-from: skills/setup/protocol/',
|
|
107
|
+
`synced-at: ${new Date().toISOString()}`,
|
|
108
|
+
`source-commit: ${options.sourceCommit ?? 'dorfl sync'}`,
|
|
109
|
+
'',
|
|
110
|
+
].join('\n'));
|
|
111
|
+
}
|
|
112
|
+
return { docs, versionPath: versionRel };
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=resync-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resync-protocol.js","sourceRoot":"","sources":["../src/resync-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ An **ADR** (`docs/adr/`) records a **DECISION + its why** — the rejected optio
|
|
|
37
37
|
`ls`/glob the repo first. For EACH artifact setup would write, if it ALREADY exists, do NOT overwrite — report it and leave it (or, for `dorfl.json` / `CONTEXT.md`, offer to MERGE-in only the missing keys/sections). Only CREATE what is missing. This is what makes setup safe to run on a populated repo and idempotent to re-run.
|
|
38
38
|
|
|
39
39
|
- If `work/` already has the folders → skip them. **If `work/` is on the LEGACY FLAT layout** (top-level `backlog/` / `prd/` / `observations/` / … instead of the `notes/` / `tasks/` / `specs/` umbrellas) → do NOT silently scaffold a second, parallel tree beside it; surface it and offer the documented migration mapping (see A5b).
|
|
40
|
-
- **`work/protocol/` is the ONE exception to never-clobber — it is protocol-owned, not repo-owned.** The repo's `work/` _items_ (tasks/specs/notes) are sacred and never touched; but the `work/protocol/` reference docs are verbatim copies setup owns, so re-running setup **re-syncs** them (overwrite with the current canonical copies + bump `work/protocol/VERSION`). This is how a repo picks up protocol updates. Never hand-edit `work/protocol/<doc>` in a target repo — edits belong in setup's canonical `protocol/` source and propagate via re-sync.
|
|
40
|
+
- **`work/protocol/` is the ONE exception to never-clobber — it is protocol-owned, not repo-owned.** The repo's `work/` _items_ (tasks/specs/notes) are sacred and never touched; but the `work/protocol/` reference docs are verbatim copies setup owns, so re-running setup **re-syncs** them (overwrite with the current canonical copies + bump `work/protocol/VERSION`). This is how a repo picks up protocol updates. (If `dorfl` is installed, `dorfl sync` is the focused, non-interactive way to do JUST this re-sync — no re-scan/conversation — and can additionally `--add-skills` to refresh the operator's packaged skills.) Never hand-edit `work/protocol/<doc>` in a target repo — edits belong in setup's canonical `protocol/` source and propagate via re-sync.
|
|
41
41
|
- If `CONTEXT.md` exists → do not overwrite; offer to APPEND a "domain terms" section if absent, else leave it.
|
|
42
42
|
- If `dorfl.json` exists → do not overwrite; report its `verify`/`harness` and offer to fill only ABSENT keys.
|
|
43
43
|
- **Detect Phase B material — do NOT skip dotfolders that might hold meaningful content.** While inventorying, note any **convertible material**: a `tasks/` folder, a `TODO.md`, an issue-tracker export, `docs/` design notes / RFCs, plan files, and **substantial source code** (code that embodies decisions). A plain `ls` of the visible top level is NOT enough: a hidden (dot-prefixed) folder can hold real sources (design docs, plans, tasks, notes), and a missed source is silently under-routed (a rich design doc that should be a spec never gets seen). So look inside dotfolders too, and judge each by whether it _could plausibly contain documents/plans/notes_ worth converting. **Skip only the noise** — `.git/`, `node_modules/` and other dependency dirs, build output, and anything `.gitignore`d are never sources. This detection decides whether Phase B runs (see A4 / Phase B). A repo with only a README that says "clean slate" (or nothing) → Phase B is empty; finish after Phase A.
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -114,6 +114,7 @@ import {
|
|
|
114
114
|
type PrdToSpecResult,
|
|
115
115
|
type DataLeak,
|
|
116
116
|
} from './prd-to-spec.js';
|
|
117
|
+
import {resyncProtocol, type ResyncResult} from './resync-protocol.js';
|
|
117
118
|
import {sweepRemoteMergedBranches} from './reap-branches.js';
|
|
118
119
|
import {sweepOrphanSidecars} from './orphan-sidecar.js';
|
|
119
120
|
import {sweepLedgerDuplicates, formatLedgerSweep} from './ledger-lint.js';
|
|
@@ -910,6 +911,91 @@ function printLeak(leak: DataLeak): void {
|
|
|
910
911
|
);
|
|
911
912
|
}
|
|
912
913
|
|
|
914
|
+
/**
|
|
915
|
+
* A minimal interactive yes/no confirmation (default NO). Prompts on stderr
|
|
916
|
+
* (stdout stays reserved for machine/report output) and reads one line from
|
|
917
|
+
* stdin. Callers only reach this on an interactive (TTY) session — a non-TTY
|
|
918
|
+
* path decides WITHOUT prompting (so a scripted run never hangs). Returns true
|
|
919
|
+
* only for an explicit `y`/`yes`.
|
|
920
|
+
*/
|
|
921
|
+
function confirmYesNo(message: string): Promise<boolean> {
|
|
922
|
+
return new Promise((resolvePrompt) => {
|
|
923
|
+
const rl = createInterface({input: process.stdin, output: process.stderr});
|
|
924
|
+
rl.question(`${message} [y/N] `, (answer) => {
|
|
925
|
+
rl.close();
|
|
926
|
+
const a = answer.trim().toLowerCase();
|
|
927
|
+
resolvePrompt(a === 'y' || a === 'yes');
|
|
928
|
+
});
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
interface SyncFlags {
|
|
933
|
+
/** The repo working-tree root to sync (default: cwd). */
|
|
934
|
+
repo?: string;
|
|
935
|
+
/** Report what WOULD change, touching nothing. */
|
|
936
|
+
dryRun?: boolean;
|
|
937
|
+
/**
|
|
938
|
+
* ALSO (re-)install the packaged dorfl skills into the operator's own harness
|
|
939
|
+
* dir(s), NON-INTERACTIVELY. This flag IS the confirmation: it BYPASSES the
|
|
940
|
+
* interactive ask. Without it, an interactive (TTY) session PROMPTS once
|
|
941
|
+
* before installing, and a non-TTY session skips the skills step entirely
|
|
942
|
+
* (so a scripted `sync` never hangs). Either way, the protocol re-sync half
|
|
943
|
+
* always runs.
|
|
944
|
+
*/
|
|
945
|
+
addSkills?: boolean;
|
|
946
|
+
/** With `--add-skills` (or a confirmed prompt): scope the skills install to <cwd>/.agents/skills/ instead of the global default. */
|
|
947
|
+
local?: boolean;
|
|
948
|
+
json?: boolean;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* Human-readable report for the deterministic protocol re-sync half of
|
|
953
|
+
* `dorfl sync`. Groups the docs into changed / unchanged / skipped and names the
|
|
954
|
+
* VERSION file. `dryRun` reframes it as "WOULD" so a preview reads honestly.
|
|
955
|
+
* A SKIPPED doc (unresolvable source) is surfaced LOUDLY — the contract in the
|
|
956
|
+
* target repo is incomplete for that doc.
|
|
957
|
+
*/
|
|
958
|
+
export function formatSyncReport(
|
|
959
|
+
result: ResyncResult,
|
|
960
|
+
dryRun: boolean,
|
|
961
|
+
): string {
|
|
962
|
+
const lines: string[] = [];
|
|
963
|
+
const changed = result.docs.filter((d) => !d.unchanged && !d.skipped);
|
|
964
|
+
const unchanged = result.docs.filter((d) => d.unchanged);
|
|
965
|
+
const skipped = result.docs.filter((d) => d.skipped);
|
|
966
|
+
const verb = dryRun ? 'WOULD sync' : 'Synced';
|
|
967
|
+
lines.push(
|
|
968
|
+
dryRun
|
|
969
|
+
? '=== dorfl sync (DRY RUN — nothing written) ==='
|
|
970
|
+
: '=== dorfl sync ===',
|
|
971
|
+
);
|
|
972
|
+
lines.push(
|
|
973
|
+
`Protocol: ${verb} ${result.docs.length} doc(s) — ` +
|
|
974
|
+
`${changed.length} changed, ${unchanged.length} unchanged, ` +
|
|
975
|
+
`${skipped.length} skipped.`,
|
|
976
|
+
);
|
|
977
|
+
for (const d of changed) {
|
|
978
|
+
lines.push(` ~ ${d.dest}`);
|
|
979
|
+
}
|
|
980
|
+
for (const d of skipped) {
|
|
981
|
+
lines.push(
|
|
982
|
+
` !! ${d.name}: SOURCE could not be resolved — NOT copied ` +
|
|
983
|
+
'(the contract doc is missing in the package).',
|
|
984
|
+
);
|
|
985
|
+
}
|
|
986
|
+
if (changed.length > 0 || skipped.length === result.docs.length) {
|
|
987
|
+
lines.push(
|
|
988
|
+
`VERSION: ${dryRun ? 'WOULD bump' : 'bumped'} ${result.versionPath}` +
|
|
989
|
+
(skipped.length === result.docs.length
|
|
990
|
+
? ' (no doc synced — no bump)'
|
|
991
|
+
: '.'),
|
|
992
|
+
);
|
|
993
|
+
} else {
|
|
994
|
+
lines.push(`VERSION: unchanged (${result.versionPath} — already current).`);
|
|
995
|
+
}
|
|
996
|
+
return lines.join('\n');
|
|
997
|
+
}
|
|
998
|
+
|
|
913
999
|
interface StatusFlags {
|
|
914
1000
|
config?: string;
|
|
915
1001
|
workspace?: string;
|
|
@@ -3541,6 +3627,77 @@ export function buildProgram(): Command {
|
|
|
3541
3627
|
);
|
|
3542
3628
|
});
|
|
3543
3629
|
|
|
3630
|
+
// `dorfl sync`: bring an already-onboarded repo up to the CURRENT protocol.
|
|
3631
|
+
// Always re-syncs `work/protocol/*` + bumps VERSION (the deterministic slice of
|
|
3632
|
+
// `setup`, shared with `prd-to-spec` via `resync-protocol.ts`). `--add-skills`
|
|
3633
|
+
// ADDITIONALLY (re-)installs the packaged skills into the operator's harness
|
|
3634
|
+
// dir(s), NON-INTERACTIVELY (the flag IS the confirmation); without it an
|
|
3635
|
+
// interactive session PROMPTS once and a non-TTY session skips skills.
|
|
3636
|
+
program
|
|
3637
|
+
.command('sync')
|
|
3638
|
+
.helpGroup(HEADLINE_GROUP)
|
|
3639
|
+
.description(
|
|
3640
|
+
"Bring THIS repo up to the current dorfl protocol: re-sync work/protocol/* from the package's canonical contract docs and bump work/protocol/VERSION (idempotent — a no-op when already current). This is how a repo that adopted an older protocol picks up the latest. Optionally ALSO (re-)installs the packaged dorfl skills into your own harness: pass --add-skills to do it non-interactively (the flag bypasses the ask), otherwise an interactive run prompts once (a non-TTY run skips skills). Runs IN-PLACE (no git commit/push — the human commits the result).",
|
|
3641
|
+
)
|
|
3642
|
+
.option('--repo <dir>', 'the repo working-tree root to sync (default: cwd)')
|
|
3643
|
+
.option(
|
|
3644
|
+
'--dry-run',
|
|
3645
|
+
'REPORT what the protocol re-sync WOULD change, touching nothing (no writes; skills are never installed under --dry-run)',
|
|
3646
|
+
)
|
|
3647
|
+
.option(
|
|
3648
|
+
'--add-skills',
|
|
3649
|
+
'ALSO (re-)install the packaged dorfl skills into your own harness dir(s), non-interactively. This flag IS the confirmation — it bypasses the interactive ask.',
|
|
3650
|
+
)
|
|
3651
|
+
.option(
|
|
3652
|
+
'--local',
|
|
3653
|
+
'with skills install: scope to <cwd>/.agents/skills/ instead of the global ~/.agents/skills/ default',
|
|
3654
|
+
)
|
|
3655
|
+
.option('--json', 'output the raw protocol re-sync result as JSON')
|
|
3656
|
+
.action(async (flags: SyncFlags) => {
|
|
3657
|
+
const repoPath = flags.repo ?? process.cwd();
|
|
3658
|
+
const dryRun = flags.dryRun === true;
|
|
3659
|
+
|
|
3660
|
+
// 1. The deterministic protocol re-sync (always runs).
|
|
3661
|
+
const resync = resyncProtocol(repoPath, {
|
|
3662
|
+
dryRun,
|
|
3663
|
+
sourceCommit: 'dorfl sync',
|
|
3664
|
+
});
|
|
3665
|
+
if (flags.json) {
|
|
3666
|
+
console.log(JSON.stringify(resync, null, 2));
|
|
3667
|
+
} else {
|
|
3668
|
+
console.log(formatSyncReport(resync, dryRun));
|
|
3669
|
+
}
|
|
3670
|
+
|
|
3671
|
+
// A doc whose source could not be resolved is a broken package — exit
|
|
3672
|
+
// non-zero so a scripted `sync` notices the incomplete contract.
|
|
3673
|
+
const anySkipped = resync.docs.some((d) => d.skipped);
|
|
3674
|
+
|
|
3675
|
+
// 2. The OPTIONAL skills install. Never under --dry-run (a preview writes
|
|
3676
|
+
// nothing). `--add-skills` authorises it directly (bypasses the ask);
|
|
3677
|
+
// otherwise an interactive TTY prompts once, and a non-TTY skips.
|
|
3678
|
+
if (!dryRun) {
|
|
3679
|
+
let doSkills = flags.addSkills === true;
|
|
3680
|
+
if (!doSkills && process.stdin.isTTY) {
|
|
3681
|
+
const scope = flags.local === true ? 'project-local' : 'global';
|
|
3682
|
+
doSkills = await confirmYesNo(
|
|
3683
|
+
`Also (re-)install the packaged dorfl skills into your ${scope} harness dir(s)?`,
|
|
3684
|
+
);
|
|
3685
|
+
}
|
|
3686
|
+
if (doSkills) {
|
|
3687
|
+
const result = installSkills({global: flags.local !== true});
|
|
3688
|
+
console.log(formatSkillsAddReport(result, flags.local === true));
|
|
3689
|
+
} else if (flags.addSkills !== true && !process.stdin.isTTY) {
|
|
3690
|
+
console.error(
|
|
3691
|
+
'>> Skills not installed (non-interactive run; pass --add-skills to install them).',
|
|
3692
|
+
);
|
|
3693
|
+
}
|
|
3694
|
+
}
|
|
3695
|
+
|
|
3696
|
+
if (anySkipped) {
|
|
3697
|
+
process.exit(1);
|
|
3698
|
+
}
|
|
3699
|
+
});
|
|
3700
|
+
|
|
3544
3701
|
program
|
|
3545
3702
|
.command('prd-to-spec')
|
|
3546
3703
|
.helpGroup(ADVANCED_GROUP)
|