@dogsbay/commands 0.2.0-beta.101

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 (86) hide show
  1. package/README.md +137 -0
  2. package/dist/commands/content.d.ts +78 -0
  3. package/dist/commands/content.d.ts.map +1 -0
  4. package/dist/commands/content.js +634 -0
  5. package/dist/commands/content.js.map +1 -0
  6. package/dist/commands/examples.d.ts +49 -0
  7. package/dist/commands/examples.d.ts.map +1 -0
  8. package/dist/commands/examples.js +173 -0
  9. package/dist/commands/examples.js.map +1 -0
  10. package/dist/commands/keys.d.ts +14 -0
  11. package/dist/commands/keys.d.ts.map +1 -0
  12. package/dist/commands/keys.js +87 -0
  13. package/dist/commands/keys.js.map +1 -0
  14. package/dist/commands/link-retarget.d.ts +18 -0
  15. package/dist/commands/link-retarget.d.ts.map +1 -0
  16. package/dist/commands/link-retarget.js +104 -0
  17. package/dist/commands/link-retarget.js.map +1 -0
  18. package/dist/commands/refactor-files.d.ts +27 -0
  19. package/dist/commands/refactor-files.d.ts.map +1 -0
  20. package/dist/commands/refactor-files.js +264 -0
  21. package/dist/commands/refactor-files.js.map +1 -0
  22. package/dist/commands/refactor-keys.d.ts +21 -0
  23. package/dist/commands/refactor-keys.d.ts.map +1 -0
  24. package/dist/commands/refactor-keys.js +224 -0
  25. package/dist/commands/refactor-keys.js.map +1 -0
  26. package/dist/commands/refactor-structure.d.ts +19 -0
  27. package/dist/commands/refactor-structure.d.ts.map +1 -0
  28. package/dist/commands/refactor-structure.js +314 -0
  29. package/dist/commands/refactor-structure.js.map +1 -0
  30. package/dist/commands/reindex.d.ts +10 -0
  31. package/dist/commands/reindex.d.ts.map +1 -0
  32. package/dist/commands/reindex.js +23 -0
  33. package/dist/commands/reindex.js.map +1 -0
  34. package/dist/commands/topicmap-edit.d.ts +65 -0
  35. package/dist/commands/topicmap-edit.d.ts.map +1 -0
  36. package/dist/commands/topicmap-edit.js +194 -0
  37. package/dist/commands/topicmap-edit.js.map +1 -0
  38. package/dist/commands/topicmap.d.ts +13 -0
  39. package/dist/commands/topicmap.d.ts.map +1 -0
  40. package/dist/commands/topicmap.js +69 -0
  41. package/dist/commands/topicmap.js.map +1 -0
  42. package/dist/commands/validate.d.ts +13 -0
  43. package/dist/commands/validate.d.ts.map +1 -0
  44. package/dist/commands/validate.js +753 -0
  45. package/dist/commands/validate.js.map +1 -0
  46. package/dist/commands/where-used.d.ts +16 -0
  47. package/dist/commands/where-used.d.ts.map +1 -0
  48. package/dist/commands/where-used.js +83 -0
  49. package/dist/commands/where-used.js.map +1 -0
  50. package/dist/edits.d.ts +54 -0
  51. package/dist/edits.d.ts.map +1 -0
  52. package/dist/edits.js +158 -0
  53. package/dist/edits.js.map +1 -0
  54. package/dist/engine.d.ts +103 -0
  55. package/dist/engine.d.ts.map +1 -0
  56. package/dist/engine.js +115 -0
  57. package/dist/engine.js.map +1 -0
  58. package/dist/flags.d.ts +31 -0
  59. package/dist/flags.d.ts.map +1 -0
  60. package/dist/flags.js +73 -0
  61. package/dist/flags.js.map +1 -0
  62. package/dist/frontmatter-schema.d.ts +97 -0
  63. package/dist/frontmatter-schema.d.ts.map +1 -0
  64. package/dist/frontmatter-schema.js +240 -0
  65. package/dist/frontmatter-schema.js.map +1 -0
  66. package/dist/index.d.ts +35 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +70 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/indexes.d.ts +175 -0
  71. package/dist/indexes.d.ts.map +1 -0
  72. package/dist/indexes.js +536 -0
  73. package/dist/indexes.js.map +1 -0
  74. package/dist/json-schema.d.ts +10 -0
  75. package/dist/json-schema.d.ts.map +1 -0
  76. package/dist/json-schema.js +50 -0
  77. package/dist/json-schema.js.map +1 -0
  78. package/dist/storage.d.ts +68 -0
  79. package/dist/storage.d.ts.map +1 -0
  80. package/dist/storage.js +193 -0
  81. package/dist/storage.js.map +1 -0
  82. package/dist/workspace.d.ts +30 -0
  83. package/dist/workspace.d.ts.map +1 -0
  84. package/dist/workspace.js +63 -0
  85. package/dist/workspace.js.map +1 -0
  86. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `where-used` — inbound references for a file, anchor, or key.
3
+ *
4
+ * Target forms:
5
+ * - `path/to/file.md` → links, images, includes, topic-map entries
6
+ * - `path/to/file.md#id` → only references targeting that anchor
7
+ * - `key:name` (or `name` when it matches no file) → key uses
8
+ *
9
+ * The safety primitive behind every refactor command: rename/delete
10
+ * become "what points here" queries.
11
+ */
12
+ import { z } from "zod";
13
+ export declare const whereUsedCommand: import("../engine.js").CommandDef<z.ZodObject<{
14
+ target: z.ZodString;
15
+ }, z.core.$strict>>;
16
+ //# sourceMappingURL=where-used.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-used.d.ts","sourceRoot":"","sources":["../../src/commands/where-used.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,gBAAgB;;mBAkE3B,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * `where-used` — inbound references for a file, anchor, or key.
3
+ *
4
+ * Target forms:
5
+ * - `path/to/file.md` → links, images, includes, topic-map entries
6
+ * - `path/to/file.md#id` → only references targeting that anchor
7
+ * - `key:name` (or `name` when it matches no file) → key uses
8
+ *
9
+ * The safety primitive behind every refactor command: rename/delete
10
+ * become "what points here" queries.
11
+ */
12
+ import { z } from "zod";
13
+ import { normalizeStoragePath } from "../storage.js";
14
+ import { defineCommand } from "../engine.js";
15
+ const input = z
16
+ .object({
17
+ target: z
18
+ .string()
19
+ .min(1)
20
+ .describe("File path, file#anchor, or key:name to find references to"),
21
+ })
22
+ .strict();
23
+ export const whereUsedCommand = defineCommand({
24
+ name: "where-used",
25
+ writes: "none",
26
+ description: "List every inbound reference to a file, anchor, or key",
27
+ input,
28
+ positionals: ["target"],
29
+ async run(ctx, { target }) {
30
+ const index = await ctx.workspace.index();
31
+ const asKey = (name) => {
32
+ const definitions = (index.keys.get(name) ?? []).map((def) => ({
33
+ file: def.file,
34
+ def: def.def,
35
+ }));
36
+ const usedIn = index.keyUses.get(name) ?? [];
37
+ return {
38
+ data: {
39
+ target: `key:${name}`,
40
+ kind: "key",
41
+ definitions,
42
+ uses: usedIn.map((file) => ({ from: file, kind: "key", raw: `key:${name}` })),
43
+ },
44
+ summary: `key "${name}": ${definitions.length} definition(s), used in ${usedIn.length} file(s)`,
45
+ };
46
+ };
47
+ if (target.startsWith("key:")) {
48
+ return asKey(target.slice("key:".length));
49
+ }
50
+ const hashIdx = target.indexOf("#");
51
+ const path = normalizeStoragePath(hashIdx >= 0 ? target.slice(0, hashIdx) : target);
52
+ const fragment = hashIdx >= 0 ? target.slice(hashIdx + 1) : undefined;
53
+ const known = index.docs.has(path) || index.maps.has(path) || (await ctx.workspace.storage.exists(path));
54
+ if (!known) {
55
+ // Bare names double as key lookups (`where-used product-name`)
56
+ if (!fragment && (index.keys.has(target) || index.keyUses.has(target))) {
57
+ return asKey(target);
58
+ }
59
+ return {
60
+ data: { target, kind: "unknown", uses: [] },
61
+ issues: [
62
+ {
63
+ severity: "warning",
64
+ code: "target-unknown",
65
+ message: `"${target}" is neither a workspace file nor a defined key`,
66
+ },
67
+ ],
68
+ summary: `"${target}" not found in the workspace`,
69
+ };
70
+ }
71
+ const inbound = index.inbound.get(path) ?? [];
72
+ const uses = fragment ? inbound.filter((ref) => ref.fragment === fragment) : inbound;
73
+ return {
74
+ data: {
75
+ target: fragment ? `${path}#${fragment}` : path,
76
+ kind: fragment ? "anchor" : "file",
77
+ uses,
78
+ },
79
+ summary: `${uses.length} reference(s) to ${fragment ? `${path}#${fragment}` : path}`,
80
+ };
81
+ },
82
+ });
83
+ //# sourceMappingURL=where-used.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-used.js","sourceRoot":"","sources":["../../src/commands/where-used.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,KAAK,GAAG,CAAC;KACZ,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,2DAA2D,CAAC;CACzE,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,wDAAwD;IACrE,KAAK;IACL,WAAW,EAAE,CAAC,QAAQ,CAAC;IACvB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE;QACvB,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAE1C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;YAC7B,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,GAAG,EAAE,GAAG,CAAC,GAAG;aACb,CAAC,CAAC,CAAC;YACJ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,IAAI,EAAE;oBACrB,IAAI,EAAE,KAAc;oBACpB,WAAW;oBACX,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAc,EAAE,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;iBACvF;gBACD,OAAO,EAAE,QAAQ,IAAI,MAAM,WAAW,CAAC,MAAM,2BAA2B,MAAM,CAAC,MAAM,UAAU;aAChG,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,MAAM,KAAK,GACT,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,+DAA+D;YAC/D,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACvE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC3C,MAAM,EAAE;oBACN;wBACE,QAAQ,EAAE,SAAkB;wBAC5B,IAAI,EAAE,gBAAgB;wBACtB,OAAO,EAAE,IAAI,MAAM,iDAAiD;qBACrE;iBACF;gBACD,OAAO,EAAE,IAAI,MAAM,8BAA8B;aAClD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAErF,OAAO;YACL,IAAI,EAAE;gBACJ,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC/C,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBAClC,IAAI;aACL;YACD,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,oBAAoB,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;SACrF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import type { InboundRef, WorkspaceIndex } from "./indexes.js";
2
+ import type { Workspace } from "./workspace.js";
3
+ /**
4
+ * Run a text edit over the PROSE of a markdown document only: the
5
+ * frontmatter block, fenced code, and inline code spans pass through
6
+ * verbatim. Every reference rewrite goes through here — a
7
+ * `[x](old.md)` or `{{ key }}` inside a code EXAMPLE must survive a
8
+ * refactor untouched.
9
+ */
10
+ export declare const editMarkdownProse: (source: string, edit: (prose: string) => string) => string;
11
+ /** Relative href from a doc/map directory to a workspace path (posix). */
12
+ export declare const relativeHref: (fromDir: string, targetPath: string) => string;
13
+ /**
14
+ * Replace a link/image href in PROSE, in both authoring forms:
15
+ * inline `](old)` / `](old "title")` (the `](` delimiter keeps `a.md`
16
+ * from matching inside `extra-a.md`) and reference-style definition
17
+ * lines (`[label]: old`). Code regions and frontmatter are never
18
+ * touched.
19
+ */
20
+ export declare const replaceLinkHref: (source: string, oldHref: string, newHref: string) => string;
21
+ /** Replace the path inside `{% include "old" %}` directives in prose. */
22
+ export declare const replaceIncludePath: (source: string, oldPath: string, newPath: string) => string;
23
+ /** Replace `href: old` lines in topic-map YAML, preserving quoting style. */
24
+ export declare const replaceMapHref: (source: string, oldHref: string, newHref: string) => string;
25
+ export declare const replaceLinkHrefs: (source: string, pairs: Map<string, string>) => string;
26
+ export declare const replaceIncludePaths: (source: string, pairs: Map<string, string>) => string;
27
+ /** Apply one inbound reference rewrite to a referencing file's source. */
28
+ export declare const applyRefRewrite: (source: string, ref: InboundRef, newHref: string) => string;
29
+ export interface RewriteResult {
30
+ /** Files whose content changed. */
31
+ changed: string[];
32
+ /**
33
+ * References the mapper wanted rewritten but whose authored form
34
+ * couldn't be located in the file (e.g. exotic link syntax). Callers
35
+ * surface these as issues — a missed rewrite must never be silent.
36
+ */
37
+ misses: InboundRef[];
38
+ }
39
+ /**
40
+ * Rewrite every inbound reference to `target`, computing each new href
41
+ * from the referencing file's location. `mapper` returns the new href,
42
+ * or null to leave that reference untouched. Edits are batched per
43
+ * referencing file so multiple refs never clobber each other.
44
+ */
45
+ export declare function rewriteInboundRefs(workspace: Workspace, index: WorkspaceIndex, target: string, mapper: (ref: InboundRef) => string | null): Promise<RewriteResult>;
46
+ /**
47
+ * Strip a leading YAML frontmatter block (conventional `---` fences, or a
48
+ * `...` end-of-document marker — legal YAML, written by Pandoc-flavoured
49
+ * sources, and already accepted by the indexer. Disagreeing with the indexer
50
+ * made `props-set` PREPEND a second block to a file that already had one).
51
+ * Returns [frontmatterBlock, body]; frontmatterBlock is "" when absent.
52
+ */
53
+ export declare const splitFrontmatter: (source: string) => [string, string];
54
+ //# sourceMappingURL=edits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edits.d.ts","sourceRoot":"","sources":["../src/edits.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAAG,MAGnF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,EAAE,YAAY,MAAM,KAAG,MAQlE,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,MAYlF,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,MAOnF,CAAC;AAEJ,6EAA6E;AAC7E,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,MAOjF,CAAC;AAUF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAY7E,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,MAUhF,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,EACd,KAAK,UAAU,EACf,SAAS,MAAM,KACd,MASF,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,IAAI,GACzC,OAAO,CAAC,aAAa,CAAC,CAoCxB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CAMhE,CAAC"}
package/dist/edits.js ADDED
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Text-edit helpers shared by the refactor commands.
3
+ *
4
+ * Refactorings are index lookups + SURGICAL text edits: files are
5
+ * rewritten by replacing exactly the authored reference syntax (link
6
+ * hrefs, include paths, topic-map href lines), never by re-serializing
7
+ * whole documents — authored formatting survives.
8
+ */
9
+ import { includeDirectiveRe } from "@dogsbay/minja";
10
+ import { transformProseSegments } from "@dogsbay/format-dogsbay-md";
11
+ /**
12
+ * Run a text edit over the PROSE of a markdown document only: the
13
+ * frontmatter block, fenced code, and inline code spans pass through
14
+ * verbatim. Every reference rewrite goes through here — a
15
+ * `[x](old.md)` or `{{ key }}` inside a code EXAMPLE must survive a
16
+ * refactor untouched.
17
+ */
18
+ export const editMarkdownProse = (source, edit) => {
19
+ const [frontmatter, body] = splitFrontmatter(source);
20
+ return frontmatter + transformProseSegments(body, edit);
21
+ };
22
+ /** Relative href from a doc/map directory to a workspace path (posix). */
23
+ export const relativeHref = (fromDir, targetPath) => {
24
+ const from = fromDir.split("/").filter((seg) => seg !== "" && seg !== ".");
25
+ const to = targetPath.split("/").filter((seg) => seg !== "" && seg !== ".");
26
+ let common = 0;
27
+ while (common < from.length && common < to.length - 1 && from[common] === to[common]) {
28
+ common++;
29
+ }
30
+ return "../".repeat(from.length - common) + to.slice(common).join("/");
31
+ };
32
+ const escapeRegExp = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
33
+ /**
34
+ * Replace a link/image href in PROSE, in both authoring forms:
35
+ * inline `](old)` / `](old "title")` (the `](` delimiter keeps `a.md`
36
+ * from matching inside `extra-a.md`) and reference-style definition
37
+ * lines (`[label]: old`). Code regions and frontmatter are never
38
+ * touched.
39
+ */
40
+ export const replaceLinkHref = (source, oldHref, newHref) => {
41
+ const old = escapeRegExp(oldHref);
42
+ const inlineRe = new RegExp(`\\]\\(\\s*${old}(?=\\s|\\))`, "g");
43
+ const withInline = editMarkdownProse(source, (prose) => prose.replace(inlineRe, (match) => match.replace(oldHref, newHref)));
44
+ // Reference-style definitions are whole lines; handle them on the
45
+ // full body (they can't sit inside inline code, and fenced examples
46
+ // are excluded by the prose walk in editMarkdownProse being
47
+ // line-anchored — a defn inside a fence is code, so guard it too)
48
+ const defRe = new RegExp(`^(\\s{0,3}\\[[^\\]]+\\]:\\s*)${old}((?:\\s+.*)?)$`, "gm");
49
+ return editMarkdownProse(withInline, (prose) => prose.replace(defRe, `$1${newHref}$2`));
50
+ };
51
+ /** Replace the path inside `{% include "old" %}` directives in prose. */
52
+ export const replaceIncludePath = (source, oldPath, newPath) => editMarkdownProse(source, (prose) => prose.replace(includeDirectiveRe(), (match, path) => path === oldPath
53
+ ? match.replace(`"${oldPath}"`, `"${newPath}"`).replace(`'${oldPath}'`, `'${newPath}'`)
54
+ : match));
55
+ /** Replace `href: old` lines in topic-map YAML, preserving quoting style. */
56
+ export const replaceMapHref = (source, oldHref, newHref) => {
57
+ const old = escapeRegExp(oldHref);
58
+ return source.replace(new RegExp(`(^\\s*(?:-\\s+)?href:\\s*)(["']?)${old}\\2(\\s*)$`, "gm"), (_m, prefix, quote, suffix) => `${prefix}${quote}${newHref}${quote}${suffix}`);
59
+ };
60
+ /**
61
+ * Rewrite a batch of href replacements without cross-talk: pairs are
62
+ * first swapped to unique NUL-delimited placeholders (impossible in
63
+ * authored markdown), then resolved — so pair A's NEW value can never
64
+ * be matched by pair B's OLD pattern.
65
+ */
66
+ const placeholder = (i) => `\u0000${i}\u0000`;
67
+ export const replaceLinkHrefs = (source, pairs) => {
68
+ let out = source;
69
+ const entries = [...pairs.entries()];
70
+ entries.forEach(([oldHref], i) => {
71
+ out = replaceLinkHref(out, oldHref, placeholder(i));
72
+ });
73
+ entries.forEach(([, newHref], i) => {
74
+ // Split on the placeholder alone: the match step may have kept
75
+ // authoring whitespace between `](` and the href
76
+ out = out.split(placeholder(i)).join(newHref);
77
+ });
78
+ return out;
79
+ };
80
+ export const replaceIncludePaths = (source, pairs) => {
81
+ let out = source;
82
+ const entries = [...pairs.entries()];
83
+ entries.forEach(([oldPath], i) => {
84
+ out = replaceIncludePath(out, oldPath, placeholder(i));
85
+ });
86
+ entries.forEach(([, newPath], i) => {
87
+ out = out.split(placeholder(i)).join(newPath);
88
+ });
89
+ return out;
90
+ };
91
+ /** Apply one inbound reference rewrite to a referencing file's source. */
92
+ export const applyRefRewrite = (source, ref, newHref) => {
93
+ switch (ref.kind) {
94
+ case "include":
95
+ return replaceIncludePath(source, ref.raw, newHref);
96
+ case "topicmap":
97
+ return replaceMapHref(source, ref.raw, newHref);
98
+ default:
99
+ return replaceLinkHref(source, ref.raw, newHref);
100
+ }
101
+ };
102
+ /**
103
+ * Rewrite every inbound reference to `target`, computing each new href
104
+ * from the referencing file's location. `mapper` returns the new href,
105
+ * or null to leave that reference untouched. Edits are batched per
106
+ * referencing file so multiple refs never clobber each other.
107
+ */
108
+ export async function rewriteInboundRefs(workspace, index, target, mapper) {
109
+ const refs = index.inbound.get(target) ?? [];
110
+ const byFile = new Map();
111
+ for (const ref of refs) {
112
+ const list = byFile.get(ref.from) ?? [];
113
+ list.push(ref);
114
+ byFile.set(ref.from, list);
115
+ }
116
+ const changed = [];
117
+ const misses = [];
118
+ for (const [file, fileRefs] of byFile) {
119
+ // Evaluate mappings BEFORE touching the file: when every ref maps
120
+ // to null (e.g. the referencing file was itself just deleted by the
121
+ // caller), the file must not even be read
122
+ const rewrites = fileRefs
123
+ .map((ref) => ({ ref, newHref: mapper(ref) }))
124
+ .filter((entry) => entry.newHref !== null && entry.newHref !== entry.ref.raw);
125
+ if (rewrites.length === 0)
126
+ continue;
127
+ const original = await workspace.storage.read(file);
128
+ let source = original;
129
+ for (const { ref, newHref } of rewrites) {
130
+ const before = source;
131
+ source = applyRefRewrite(source, ref, newHref);
132
+ if (source === before)
133
+ misses.push(ref);
134
+ }
135
+ if (source !== original) {
136
+ await workspace.storage.write(file, source);
137
+ changed.push(file);
138
+ }
139
+ }
140
+ return { changed, misses };
141
+ }
142
+ /**
143
+ * Strip a leading YAML frontmatter block (conventional `---` fences, or a
144
+ * `...` end-of-document marker — legal YAML, written by Pandoc-flavoured
145
+ * sources, and already accepted by the indexer. Disagreeing with the indexer
146
+ * made `props-set` PREPEND a second block to a file that already had one).
147
+ * Returns [frontmatterBlock, body]; frontmatterBlock is "" when absent.
148
+ */
149
+ export const splitFrontmatter = (source) => {
150
+ if (!source.startsWith("---\n") && !source.startsWith("---\r\n"))
151
+ return ["", source];
152
+ const close = /\r?\n(?:---|\.\.\.)[ \t]*(\r?\n|$)/.exec(source.slice(3));
153
+ if (!close)
154
+ return ["", source];
155
+ const end = 3 + close.index + close[0].length;
156
+ return [source.slice(0, end), source.slice(end)];
157
+ };
158
+ //# sourceMappingURL=edits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edits.js","sourceRoot":"","sources":["../src/edits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Command engine — typed definitions and the single execution path.
3
+ *
4
+ * A command is a name, a zod input schema, and a pure handler over a
5
+ * CommandContext. The schema is the single source of truth for every
6
+ * surface: CLI flags are generated from it, and (Phase 3) MCP tool
7
+ * schemas and JSON-RPC params come from the same object — parity by
8
+ * construction, verified by the schema conformance test.
9
+ */
10
+ import { z } from "zod";
11
+ import type { Workspace } from "./workspace.js";
12
+ export interface CommandContext {
13
+ workspace: Workspace;
14
+ }
15
+ export type IssueSeverity = "error" | "warning";
16
+ /** A problem a command found in the WORKSPACE (not an input error). */
17
+ export interface EngineIssue {
18
+ severity: IssueSeverity;
19
+ /** Stable machine-readable kind, e.g. "link-target-missing". */
20
+ code: string;
21
+ message: string;
22
+ /** Workspace-relative file the issue is about. */
23
+ file?: string;
24
+ /** 1-based line in `file`, when known. */
25
+ line?: number;
26
+ /** Plausible replacements (workspace paths or anchors) when the engine found some but not ONE — a picker, never an auto-fix. */
27
+ candidates?: string[];
28
+ /** A machine-applicable repair through a registered verb (only when unambiguous). */
29
+ fix?: {
30
+ verb: string;
31
+ args: Record<string, unknown>;
32
+ label: string;
33
+ };
34
+ }
35
+ export interface CommandOutput {
36
+ /** Structured result — exactly what --json prints. */
37
+ data: unknown;
38
+ /** Workspace problems found while running. */
39
+ issues?: EngineIssue[];
40
+ /** One-line human summary for CLI output. */
41
+ summary?: string;
42
+ }
43
+ /**
44
+ * What a command writes. `content` verbs rewrite the TEXT of documents and
45
+ * MUST take `expect` (the divergence gate — plans/ide-change-review.md §3);
46
+ * the registry refuses to register one that does not, so the classification
47
+ * lives on the verb, not in a test allowlist that can rot.
48
+ */
49
+ export type CommandWrites = "none" | "structure" | "content";
50
+ export interface CommandDef<Schema extends z.ZodTypeAny = z.ZodTypeAny> {
51
+ /** Unique kebab-case name; becomes the CLI command name. */
52
+ name: string;
53
+ description: string;
54
+ /** Read-only, structural (files/keys/maps, index-derived rewrites), or content (document text). */
55
+ writes: CommandWrites;
56
+ input: Schema;
57
+ /**
58
+ * Input keys promoted to CLI positional arguments, in order. Every
59
+ * listed key must exist in the schema shape; the rest become flags.
60
+ */
61
+ positionals?: string[];
62
+ run(ctx: CommandContext, input: z.infer<Schema>): Promise<CommandOutput>;
63
+ }
64
+ /** Identity helper that preserves the schema type for `run`'s input. */
65
+ export declare const defineCommand: <Schema extends z.ZodTypeAny>(def: CommandDef<Schema>) => CommandDef<Schema>;
66
+ export type CommandResult = {
67
+ ok: true;
68
+ command: string;
69
+ data: unknown;
70
+ issues: EngineIssue[];
71
+ summary?: string;
72
+ } | {
73
+ ok: false;
74
+ command: string;
75
+ error: string;
76
+ issues?: never;
77
+ };
78
+ export declare class CommandRegistry {
79
+ private commands;
80
+ register(def: CommandDef<z.ZodTypeAny>): void;
81
+ get(name: string): CommandDef | undefined;
82
+ all(): CommandDef[];
83
+ /**
84
+ * The single execution path for every surface: validate raw input
85
+ * against the schema, run the handler, wrap the result. Never throws
86
+ * for input or workspace problems — surfaces map the envelope.
87
+ */
88
+ run(name: string, rawInput: unknown, ctx: CommandContext): Promise<CommandResult>;
89
+ }
90
+ /** Shape of an object schema, unwrapping optional/default/effects layers. */
91
+ export declare const shapeOf: (schema: z.ZodTypeAny) => Record<string, z.ZodTypeAny>;
92
+ /** Strip Optional/Default/Pipe wrappers down to the base type. */
93
+ export declare const unwrap: (schema: z.ZodTypeAny) => z.ZodTypeAny;
94
+ /** True when the field must be provided (no optional/default wrapper). */
95
+ export declare const isRequired: (schema: z.ZodTypeAny) => boolean;
96
+ /**
97
+ * FIFO task queue: run one async task at a time, in arrival order.
98
+ * Concurrent surfaces (HTTP, MCP) wrap command execution in one of
99
+ * these so two mutating commands can never interleave read-modify-write
100
+ * on the shared Workspace. A failed task never blocks the queue.
101
+ */
102
+ export declare const createTaskQueue: () => (<T>(task: () => Promise<T>) => Promise<T>);
103
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhD,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gIAAgI;IAChI,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qFAAqF;IACrF,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAED,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IACpE,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1E;AAED,wEAAwE;AACxE,eAAO,MAAM,aAAa,GAAI,MAAM,SAAS,CAAC,CAAC,UAAU,EACvD,KAAK,UAAU,CAAC,MAAM,CAAC,KACtB,UAAU,CAAC,MAAM,CAAQ,CAAC;AAE7B,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAElE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAiC;IAEjD,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI;IAiB7C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,GAAG,IAAI,UAAU,EAAE;IAInB;;;;OAIG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA6BxF;AAED,6EAA6E;AAC7E,eAAO,MAAM,OAAO,GAAI,QAAQ,CAAC,CAAC,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAMzE,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,MAAM,GAAI,QAAQ,CAAC,CAAC,UAAU,KAAG,CAAC,CAAC,UAe/C,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,UAAU,GAAI,QAAQ,CAAC,CAAC,UAAU,KAAG,OAC+C,CAAC;AAElG;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAU5E,CAAC"}
package/dist/engine.js ADDED
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Command engine — typed definitions and the single execution path.
3
+ *
4
+ * A command is a name, a zod input schema, and a pure handler over a
5
+ * CommandContext. The schema is the single source of truth for every
6
+ * surface: CLI flags are generated from it, and (Phase 3) MCP tool
7
+ * schemas and JSON-RPC params come from the same object — parity by
8
+ * construction, verified by the schema conformance test.
9
+ */
10
+ import { z } from "zod";
11
+ /** Identity helper that preserves the schema type for `run`'s input. */
12
+ export const defineCommand = (def) => def;
13
+ export class CommandRegistry {
14
+ commands = new Map();
15
+ register(def) {
16
+ if (this.commands.has(def.name)) {
17
+ throw new Error(`Duplicate command name: ${def.name}`);
18
+ }
19
+ for (const positional of def.positionals ?? []) {
20
+ if (!(positional in shapeOf(def.input))) {
21
+ throw new Error(`Command "${def.name}" declares positional "${positional}" missing from its input schema`);
22
+ }
23
+ }
24
+ if (def.writes === "content" && !("expect" in shapeOf(def.input))) {
25
+ throw new Error(`Command "${def.name}" writes content but takes no \`expect\` (divergence gate)`);
26
+ }
27
+ this.commands.set(def.name, def);
28
+ }
29
+ get(name) {
30
+ return this.commands.get(name);
31
+ }
32
+ all() {
33
+ return [...this.commands.values()];
34
+ }
35
+ /**
36
+ * The single execution path for every surface: validate raw input
37
+ * against the schema, run the handler, wrap the result. Never throws
38
+ * for input or workspace problems — surfaces map the envelope.
39
+ */
40
+ async run(name, rawInput, ctx) {
41
+ const def = this.commands.get(name);
42
+ if (!def) {
43
+ return { ok: false, command: name, error: `Unknown command: ${name}` };
44
+ }
45
+ const parsed = def.input.safeParse(rawInput ?? {});
46
+ if (!parsed.success) {
47
+ const detail = parsed.error.issues
48
+ .map((issue) => `${issue.path.join(".") || "(input)"}: ${issue.message}`)
49
+ .join("; ");
50
+ return { ok: false, command: name, error: `Invalid input — ${detail}` };
51
+ }
52
+ try {
53
+ const output = await def.run(ctx, parsed.data);
54
+ return {
55
+ ok: true,
56
+ command: name,
57
+ data: output.data,
58
+ issues: output.issues ?? [],
59
+ ...(output.summary ? { summary: output.summary } : {}),
60
+ };
61
+ }
62
+ catch (error) {
63
+ return {
64
+ ok: false,
65
+ command: name,
66
+ error: error instanceof Error ? error.message : String(error),
67
+ };
68
+ }
69
+ }
70
+ }
71
+ /** Shape of an object schema, unwrapping optional/default/effects layers. */
72
+ export const shapeOf = (schema) => {
73
+ const unwrapped = unwrap(schema);
74
+ if (unwrapped instanceof z.ZodObject) {
75
+ return unwrapped.shape;
76
+ }
77
+ return {};
78
+ };
79
+ /** Strip Optional/Default/Pipe wrappers down to the base type. */
80
+ export const unwrap = (schema) => {
81
+ let current = schema;
82
+ for (;;) {
83
+ if (current instanceof z.ZodOptional || current instanceof z.ZodNullable) {
84
+ current = current.unwrap();
85
+ }
86
+ else if (current instanceof z.ZodDefault) {
87
+ current = current.removeDefault();
88
+ }
89
+ else if (current instanceof z.ZodPipe) {
90
+ // zod 4: .transform() builds a pipe; the INPUT side is what the
91
+ // CLI/JSON-schema surfaces describe (what callers may pass).
92
+ current = current.in;
93
+ }
94
+ else {
95
+ return current;
96
+ }
97
+ }
98
+ };
99
+ /** True when the field must be provided (no optional/default wrapper). */
100
+ export const isRequired = (schema) => !(schema instanceof z.ZodOptional) && !(schema instanceof z.ZodDefault) && !schema.isOptional();
101
+ /**
102
+ * FIFO task queue: run one async task at a time, in arrival order.
103
+ * Concurrent surfaces (HTTP, MCP) wrap command execution in one of
104
+ * these so two mutating commands can never interleave read-modify-write
105
+ * on the shared Workspace. A failed task never blocks the queue.
106
+ */
107
+ export const createTaskQueue = () => {
108
+ let tail = Promise.resolve();
109
+ return (task) => {
110
+ const result = tail.then(() => task());
111
+ tail = result.then(() => undefined, () => undefined);
112
+ return result;
113
+ };
114
+ };
115
+ //# sourceMappingURL=engine.js.map