@orchestrator-claude/definitions 3.32.2 → 3.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +145 -0
  2. package/agents/adversarial-reviewer.md +2 -2
  3. package/agents/azure-devops-engineer.md +9 -1
  4. package/agents/cicd-platform-engineer.md +477 -0
  5. package/agents/debug-sidecar.md +6 -1
  6. package/agents/doc-sidecar.md +6 -1
  7. package/agents/frontend-engineer.md +173 -0
  8. package/agents/implementer.md +39 -23
  9. package/agents/methodology-researcher.md +2 -1
  10. package/agents/operational-artifact-builder.md +2 -1
  11. package/agents/orchestrator.md +47 -76
  12. package/agents/planner.md +2 -2
  13. package/agents/presentation-engineer.md +1 -1
  14. package/agents/python-data-engineer.md +214 -0
  15. package/agents/reviewer.md +16 -8
  16. package/agents/specifier.md +1 -1
  17. package/agents/task-generator.md +1 -1
  18. package/agents/test-sidecar.md +15 -4
  19. package/dist/cli.js +78 -0
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/DiffCommand.js +1 -1
  22. package/dist/commands/DiffCommand.js.map +1 -1
  23. package/dist/commands/InstallCommand.d.ts +41 -0
  24. package/dist/commands/InstallCommand.d.ts.map +1 -0
  25. package/dist/commands/InstallCommand.js +253 -0
  26. package/dist/commands/InstallCommand.js.map +1 -0
  27. package/dist/http/ApiClient.d.ts +5 -0
  28. package/dist/http/ApiClient.d.ts.map +1 -1
  29. package/dist/http/ApiClient.js.map +1 -1
  30. package/dist/install/DevCheckoutDetector.d.ts +66 -0
  31. package/dist/install/DevCheckoutDetector.d.ts.map +1 -0
  32. package/dist/install/DevCheckoutDetector.js +150 -0
  33. package/dist/install/DevCheckoutDetector.js.map +1 -0
  34. package/dist/install/HooksWirer.d.ts +29 -0
  35. package/dist/install/HooksWirer.d.ts.map +1 -0
  36. package/dist/install/HooksWirer.js +80 -0
  37. package/dist/install/HooksWirer.js.map +1 -0
  38. package/dist/install/LocalDiffReporter.d.ts +25 -0
  39. package/dist/install/LocalDiffReporter.d.ts.map +1 -0
  40. package/dist/install/LocalDiffReporter.js +50 -0
  41. package/dist/install/LocalDiffReporter.js.map +1 -0
  42. package/dist/install/Materializer.d.ts +67 -0
  43. package/dist/install/Materializer.d.ts.map +1 -0
  44. package/dist/install/Materializer.js +196 -0
  45. package/dist/install/Materializer.js.map +1 -0
  46. package/dist/install/McpRegistrar.d.ts +63 -0
  47. package/dist/install/McpRegistrar.d.ts.map +1 -0
  48. package/dist/install/McpRegistrar.js +114 -0
  49. package/dist/install/McpRegistrar.js.map +1 -0
  50. package/dist/install/ProcessRunner.d.ts +25 -0
  51. package/dist/install/ProcessRunner.d.ts.map +1 -0
  52. package/dist/install/ProcessRunner.js +41 -0
  53. package/dist/install/ProcessRunner.js.map +1 -0
  54. package/dist/install/ProjectSettingsNeutralizer.d.ts +39 -0
  55. package/dist/install/ProjectSettingsNeutralizer.d.ts.map +1 -0
  56. package/dist/install/ProjectSettingsNeutralizer.js +100 -0
  57. package/dist/install/ProjectSettingsNeutralizer.js.map +1 -0
  58. package/dist/install/types.d.ts +52 -0
  59. package/dist/install/types.d.ts.map +1 -0
  60. package/dist/install/types.js +8 -0
  61. package/dist/install/types.js.map +1 -0
  62. package/dist/manifest/ManifestLoader.d.ts.map +1 -1
  63. package/dist/manifest/ManifestLoader.js +3 -2
  64. package/dist/manifest/ManifestLoader.js.map +1 -1
  65. package/dist/manifest/types.d.ts +3 -0
  66. package/dist/manifest/types.d.ts.map +1 -1
  67. package/dist/scripts/bundle-hooks.d.ts +39 -0
  68. package/dist/scripts/bundle-hooks.d.ts.map +1 -0
  69. package/dist/scripts/bundle-hooks.js +165 -0
  70. package/dist/scripts/bundle-hooks.js.map +1 -0
  71. package/dist/scripts/generate-manifest.d.ts +22 -3
  72. package/dist/scripts/generate-manifest.d.ts.map +1 -1
  73. package/dist/scripts/generate-manifest.js +78 -35
  74. package/dist/scripts/generate-manifest.js.map +1 -1
  75. package/hooks/dangling-guard.mjs +7426 -0
  76. package/hooks/dangling-guard.ts +223 -6
  77. package/hooks/gate-guardian.mjs +463 -0
  78. package/hooks/hooks.json +63 -0
  79. package/hooks/lib/additional-directories-sync.ts +295 -0
  80. package/hooks/lib/api-client.ts +388 -7
  81. package/hooks/lib/session-selection.ts +81 -0
  82. package/hooks/mailbox-listener.mjs +259 -0
  83. package/hooks/post-compact.mjs +7931 -0
  84. package/hooks/post-implement.mjs +238 -0
  85. package/hooks/session-start.mjs +8234 -0
  86. package/hooks/session-start.ts +264 -23
  87. package/hooks/sprint-registry.mjs +59 -0
  88. package/hooks/subagent-start.mjs +289 -0
  89. package/hooks/subagent-stop.mjs +7793 -0
  90. package/hooks/subagent-stop.ts +4 -2
  91. package/hooks/user-prompt.mjs +329 -0
  92. package/hooks/workflow-guard.mjs +7805 -0
  93. package/hooks/workflow-guard.ts +360 -119
  94. package/hooks-settings-template.json +63 -0
  95. package/manifest.json +124 -90
  96. package/mcp-servers.json +48 -0
  97. package/package.json +10 -4
  98. package/personas/auditor-compliance.md +104 -0
  99. package/personas/cfo-conservador.md +88 -0
  100. package/personas/designer-perfeccionista.md +104 -0
  101. package/personas/diretor-cetico-fmcg.md +80 -0
  102. package/personas/engenheiro-cetico-construcao.md +107 -0
  103. package/skills/artifact-generator/SKILL.md +1 -1
  104. package/skills/artifact-production/SKILL.md +28 -0
  105. package/skills/backlog-synthesis/SKILL.md +8 -3
  106. package/skills/checkpoint-protocol/SKILL.md +7 -0
  107. package/skills/infographic-engine/SKILL.md +116 -0
  108. package/skills/orchestrator/SKILL.md +93 -7
  109. package/skills/persona-library/SKILL.md +1 -1
  110. package/skills/project-conventions/SKILL.md +53 -30
  111. package/skills/project-management-enterprise/SKILL.md +1 -1
  112. package/skills/python-data-engineering/SKILL.md +792 -0
  113. package/skills/release/SKILL.md +29 -18
  114. package/skills/release/release.sh +65 -4
  115. package/skills/storybook-validated-loop/SKILL.md +110 -0
  116. package/skills/tdd-discipline/SKILL.md +16 -0
  117. package/skills/workflow-coordination/SKILL.md +117 -16
@@ -0,0 +1,39 @@
1
+ export declare class ProjectSettingsNeutralizer {
2
+ private readonly projectSettingsPath;
3
+ constructor(projectSettingsPath: string);
4
+ /**
5
+ * Copies `projectSettingsPath` to `<path>.orch-install-bak` (R-2). Safe to
6
+ * call more than once — always re-copies the CURRENT on-disk content, so
7
+ * a caller that already backed up before calling `neutralize()` (which
8
+ * also backs up internally) never loses the true pre-mutation state.
9
+ */
10
+ backup(): string;
11
+ /**
12
+ * Removes only the `hooks` key from `projectSettingsPath`, preserving
13
+ * every other key untouched. Calls `backup()` unconditionally as its
14
+ * first action (R-2) — no branch in this method mutates the file before
15
+ * a backup exists.
16
+ */
17
+ neutralize(): {
18
+ neutralized: boolean;
19
+ };
20
+ /**
21
+ * Restores `projectSettingsPath` from a previously-created backup path
22
+ * (as returned by `backup()`). Called by the ORCHESTRATOR's own `catch` —
23
+ * see module JSDoc — never invoked internally by this class.
24
+ */
25
+ restore(bakPath: string): void;
26
+ private backupPath;
27
+ private readSettings;
28
+ /**
29
+ * Stage-then-swap for a SINGLE file (ADR-003 discipline, scaled down from
30
+ * `Materializer`'s per-category directory rename): write to a sibling
31
+ * temp path, then `renameSync` over the target. A failure at either step
32
+ * never touches `projectSettingsPath` — the temp file is the only thing
33
+ * that can be left in an inconsistent state, and it is cleaned up in the
34
+ * `catch`.
35
+ */
36
+ private writeAtomic;
37
+ private tmpPath;
38
+ }
39
+ //# sourceMappingURL=ProjectSettingsNeutralizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSettingsNeutralizer.d.ts","sourceRoot":"","sources":["../../src/install/ProjectSettingsNeutralizer.ts"],"names":[],"mappings":"AA8BA,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAAnB,mBAAmB,EAAE,MAAM;IAExD;;;;;OAKG;IACH,MAAM,IAAI,MAAM;IAMhB;;;;;OAKG;IACH,UAAU,IAAI;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE;IAYtC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAKpB;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,OAAO;CAGhB"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * ProjectSettingsNeutralizer - backup + atomic removal of the `hooks` key
3
+ * from the target project's `.claude/settings.json`, with rollback
4
+ * (RF-003/RF-006, R-2).
5
+ *
6
+ * Two independent safety nets protect against a partial mutation corrupting
7
+ * the project's settings file:
8
+ * 1. **Atomic write** (this module, `writeAtomic()`): `neutralize()` never
9
+ * writes through `projectSettingsPath` directly — it writes the next
10
+ * content to a sibling temp file and `renameSync`s it over the target
11
+ * (same stage-then-swap discipline as `Materializer`, ADR-003). A
12
+ * rename replaces whatever directory entry currently sits at the
13
+ * target path (including a symlink, FA-002) without following it, so a
14
+ * mid-write failure (e.g. a mocked `ENOSPC`) always leaves the
15
+ * ORIGINAL file untouched — never a half-written one.
16
+ * 2. **Backup + restore** (R-2, AC-006): `neutralize()` unconditionally
17
+ * calls `backup()` as its very first action — there is no code path
18
+ * that mutates `projectSettingsPath` without a `.orch-install-bak`
19
+ * copy already on disk. `restore(bakPath)` is the counterpart the
20
+ * ORCHESTRATOR (`InstallCommand`, TASK-032, Fase 6 — out of this
21
+ * module's scope) calls from its own `catch` if a LATER step of the
22
+ * overall install sequence fails after `neutralize()` already
23
+ * succeeded. This class only implements the primitive — it never
24
+ * calls `restore()` on itself.
25
+ *
26
+ * `neutralize()` removes ONLY the `hooks` key — every other key (`env`,
27
+ * `permissions`, `enabledPlugins`, ...) is preserved untouched.
28
+ */
29
+ import { copyFileSync, existsSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
30
+ export class ProjectSettingsNeutralizer {
31
+ projectSettingsPath;
32
+ constructor(projectSettingsPath) {
33
+ this.projectSettingsPath = projectSettingsPath;
34
+ }
35
+ /**
36
+ * Copies `projectSettingsPath` to `<path>.orch-install-bak` (R-2). Safe to
37
+ * call more than once — always re-copies the CURRENT on-disk content, so
38
+ * a caller that already backed up before calling `neutralize()` (which
39
+ * also backs up internally) never loses the true pre-mutation state.
40
+ */
41
+ backup() {
42
+ const bakPath = this.backupPath();
43
+ copyFileSync(this.projectSettingsPath, bakPath);
44
+ return bakPath;
45
+ }
46
+ /**
47
+ * Removes only the `hooks` key from `projectSettingsPath`, preserving
48
+ * every other key untouched. Calls `backup()` unconditionally as its
49
+ * first action (R-2) — no branch in this method mutates the file before
50
+ * a backup exists.
51
+ */
52
+ neutralize() {
53
+ this.backup();
54
+ const current = this.readSettings();
55
+ const hadHooks = Object.prototype.hasOwnProperty.call(current, 'hooks');
56
+ const { hooks: _hooks, ...rest } = current;
57
+ this.writeAtomic(JSON.stringify(rest, null, 2));
58
+ return { neutralized: hadHooks };
59
+ }
60
+ /**
61
+ * Restores `projectSettingsPath` from a previously-created backup path
62
+ * (as returned by `backup()`). Called by the ORCHESTRATOR's own `catch` —
63
+ * see module JSDoc — never invoked internally by this class.
64
+ */
65
+ restore(bakPath) {
66
+ copyFileSync(bakPath, this.projectSettingsPath);
67
+ }
68
+ backupPath() {
69
+ return `${this.projectSettingsPath}.orch-install-bak`;
70
+ }
71
+ readSettings() {
72
+ const raw = readFileSync(this.projectSettingsPath, 'utf-8');
73
+ return JSON.parse(raw);
74
+ }
75
+ /**
76
+ * Stage-then-swap for a SINGLE file (ADR-003 discipline, scaled down from
77
+ * `Materializer`'s per-category directory rename): write to a sibling
78
+ * temp path, then `renameSync` over the target. A failure at either step
79
+ * never touches `projectSettingsPath` — the temp file is the only thing
80
+ * that can be left in an inconsistent state, and it is cleaned up in the
81
+ * `catch`.
82
+ */
83
+ writeAtomic(content) {
84
+ const tmpPath = this.tmpPath();
85
+ try {
86
+ writeFileSync(tmpPath, content, 'utf-8');
87
+ renameSync(tmpPath, this.projectSettingsPath);
88
+ }
89
+ catch (error) {
90
+ if (existsSync(tmpPath)) {
91
+ rmSync(tmpPath, { force: true });
92
+ }
93
+ throw new Error(`ProjectSettingsNeutralizer.neutralize() failed writing "${this.projectSettingsPath}": ${error.message}`, { cause: error });
94
+ }
95
+ }
96
+ tmpPath() {
97
+ return `${this.projectSettingsPath}.orch-neutralize-tmp-${process.pid}`;
98
+ }
99
+ }
100
+ //# sourceMappingURL=ProjectSettingsNeutralizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSettingsNeutralizer.js","sourceRoot":"","sources":["../../src/install/ProjectSettingsNeutralizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpG,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,mBAA2B;QAA3B,wBAAmB,GAAnB,mBAAmB,CAAQ;IAAG,CAAC;IAE5D;;;;;OAKG;IACH,MAAM;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAE3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAe;QACrB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClD,CAAC;IAEO,UAAU;QAChB,OAAO,GAAG,IAAI,CAAC,mBAAmB,mBAAmB,CAAC;IACxD,CAAC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAED;;;;;;;OAOG;IACK,WAAW,CAAC,OAAe;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,mBAAmB,MAAO,KAAe,CAAC,OAAO,EAAE,EACnH,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,OAAO;QACb,OAAO,GAAG,IAAI,CAAC,mBAAmB,wBAAwB,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1E,CAAC;CACF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Types for the `orch-defs install` command (RFC-040 §9.1).
3
+ *
4
+ * These types define the public contract used across the install pipeline
5
+ * (detection, MCP server registration, hooks wiring, project neutralization).
6
+ */
7
+ export interface InstallCommandOptions {
8
+ dryRun?: boolean;
9
+ devCheckoutAck?: boolean;
10
+ homeDir?: string;
11
+ monorepoRoot?: string;
12
+ cwd?: string;
13
+ }
14
+ export interface InstallResult {
15
+ success: boolean;
16
+ mode: 'clean-install' | 'dev-checkout';
17
+ dryRun: boolean;
18
+ summary: {
19
+ filesWritten: number;
20
+ filesUnchanged: number;
21
+ mcpServersRegistered: number;
22
+ mcpServersSkipped: number;
23
+ hooksWired: boolean;
24
+ projectNeutralized: boolean;
25
+ };
26
+ warnings: string[];
27
+ errors: string[];
28
+ }
29
+ export interface DetectionResult {
30
+ mode: 'clean-install' | 'dev-checkout';
31
+ matchedSlugs: string[];
32
+ reason: string;
33
+ }
34
+ export interface McpServerSpec {
35
+ name: string;
36
+ type?: 'stdio' | 'http';
37
+ command?: string;
38
+ args?: string[];
39
+ env?: Record<string, string>;
40
+ url?: string;
41
+ }
42
+ export interface HooksTemplate {
43
+ hooks: Record<string, Array<{
44
+ matcher: string;
45
+ hooks: Array<{
46
+ type: 'command';
47
+ command: string;
48
+ timeout: number;
49
+ }>;
50
+ }>>;
51
+ }
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/install/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,eAAe,GAAG,cAAc,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,OAAO,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,GAAG,cAAc,CAAC;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CACX,MAAM,EACN,KAAK,CAAC;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,SAAS,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrE,CAAC,CACH,CAAC;CACH"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Types for the `orch-defs install` command (RFC-040 §9.1).
3
+ *
4
+ * These types define the public contract used across the install pipeline
5
+ * (detection, MCP server registration, hooks wiring, project neutralization).
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/install/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ManifestLoader.d.ts","sourceRoot":"","sources":["../../src/manifest/ManifestLoader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAItF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,IAAI,IAAI,cAAc;IAqBtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAuBxC;;;OAGG;IACH,eAAe,IAAI;QAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QAAC,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE;IAgC3E;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAQrD;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC,eAAe,GAAG;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAc1E,cAAc,IAAI,MAAM;CAGzB"}
1
+ {"version":3,"file":"ManifestLoader.d.ts","sourceRoot":"","sources":["../../src/manifest/ManifestLoader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAItF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,IAAI,IAAI,cAAc;IAqBtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAuBxC;;;OAGG;IACH,eAAe,IAAI;QAAE,KAAK,EAAE,eAAe,EAAE,CAAC;QAAC,OAAO,EAAE,eAAe,EAAE,CAAA;KAAE;IAiC3E;;OAEG;IACH,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM;IAQrD;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC,eAAe,GAAG;QAAE,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAc1E,cAAc,IAAI,MAAM;CAGzB"}
@@ -40,7 +40,7 @@ export class ManifestLoader {
40
40
  if (!manifest.version || typeof manifest.version !== 'string') {
41
41
  throw new Error('Manifest must have a version string.');
42
42
  }
43
- const categories = ['agents', 'skills', 'hooks', 'kb'];
43
+ const categories = ['agents', 'skills', 'hooks', 'personas', 'kb'];
44
44
  for (const cat of categories) {
45
45
  if (!Array.isArray(manifest.definitions[cat])) {
46
46
  throw new Error(`Manifest definitions.${cat} must be an array.`);
@@ -59,6 +59,7 @@ export class ManifestLoader {
59
59
  ...manifest.definitions.agents,
60
60
  ...manifest.definitions.skills,
61
61
  ...manifest.definitions.hooks,
62
+ ...manifest.definitions.personas,
62
63
  ...manifest.definitions.kb,
63
64
  ];
64
65
  for (const entry of allEntries) {
@@ -94,7 +95,7 @@ export class ManifestLoader {
94
95
  getAllEntries() {
95
96
  const manifest = this.load();
96
97
  const entries = [];
97
- const categories = ['agents', 'skills', 'hooks', 'kb'];
98
+ const categories = ['agents', 'skills', 'hooks', 'personas', 'kb'];
98
99
  for (const cat of categories) {
99
100
  for (const entry of manifest.definitions[cat]) {
100
101
  entries.push({ ...entry, category: cat });
@@ -1 +1 @@
1
- {"version":3,"file":"ManifestLoader.js","sourceRoot":"","sources":["../../src/manifest/ManifestLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManifestLoader.js","sourceRoot":"","sources":["../../src/manifest/ManifestLoader.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export interface ManifestSchema {
18
18
  agents: DefinitionEntry[];
19
19
  skills: DefinitionEntry[];
20
20
  hooks: DefinitionEntry[];
21
+ personas: DefinitionEntry[];
21
22
  kb: DefinitionEntry[];
22
23
  };
23
24
  }
@@ -35,6 +36,8 @@ export interface SeedResult {
35
36
  skillsFailed: number;
36
37
  hooksSeeded: number;
37
38
  hooksFailed: number;
39
+ personasSeeded: number;
40
+ personasFailed: number;
38
41
  kbSeeded: number;
39
42
  kbFailed: number;
40
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,6BAA6B,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;QACzB,EAAE,EAAE,eAAe,EAAE,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,6BAA6B,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;QAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;QACzB,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,EAAE,EAAE,eAAe,EAAE,CAAC;KACvB,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ export interface BundledHook {
3
+ entryFile: string;
4
+ outputFile: string;
5
+ }
6
+ /**
7
+ * Lists TOP-LEVEL `.ts` files directly under `hooksDir` — never recursing
8
+ * into `lib/` (or any other subdirectory). `hooks/lib/*.ts` files are
9
+ * imported BY these entry points, not separate install-time artifacts once
10
+ * bundled (their code is inlined into whichever top-level bundle(s)
11
+ * reference them).
12
+ */
13
+ export declare function discoverTopLevelHookEntryPoints(hooksDir: string): string[];
14
+ /**
15
+ * Bundles ONE entry point to `outputPath` via esbuild, using the exact
16
+ * options the real build relies on (ESM + Node platform + the CJS-interop
17
+ * `require` shim banner — see module JSDoc for why each option is needed).
18
+ *
19
+ * IMPORTANT (empirically verified — TASK freshness-guard probe): esbuild's
20
+ * generated bytes depend on the ENTRY file's real on-disk path (its
21
+ * relative depth from `process.cwd()` affects both an embedded path comment
22
+ * and, less obviously, the generated CJS-interop helper call for `yaml`).
23
+ * Only `outputPath` is safe to redirect to a throwaway location — copying
24
+ * the `.ts` SOURCE to a different absolute path before bundling changes the
25
+ * output for reasons unrelated to source drift. Callers that need a
26
+ * freshness/drift check (bundle now, compare against a committed file) MUST
27
+ * bundle the entry from its real location and only redirect `outputPath`.
28
+ */
29
+ export declare function bundleOneHook(entryPath: string, outputPath: string): void;
30
+ /**
31
+ * Bundles every top-level hook entry point discovered under
32
+ * `<packageRoot>/hooks` into a co-located, self-contained `<name>.mjs` file.
33
+ * Pure side effect is writing those `.mjs` files (esbuild `buildSync`) —
34
+ * mirrors the `generateManifest`/`writeManifest` split in spirit (this
35
+ * module has no separate "pure" variant since bundling IS the write), but
36
+ * is safe to call repeatedly: each run fully regenerates its own outputs.
37
+ */
38
+ export declare function bundleHooks(packageRoot?: string): BundledHook[];
39
+ //# sourceMappingURL=bundle-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-hooks.d.ts","sourceRoot":"","sources":["../../src/scripts/bundle-hooks.ts"],"names":[],"mappings":";AA4FA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAYzE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,WAAW,GAAE,MAA6B,GAAG,WAAW,EAAE,CAmBrF"}
@@ -0,0 +1,165 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Build-time script: bundles every TOP-LEVEL hook entry point
4
+ * (`hooks/*.ts`, excluding `hooks/lib/*.ts`) into a self-contained ESM
5
+ * `.mjs` bundle, co-located next to its `.ts` source (RFC-040 installer,
6
+ * TASK-043 "hook bundling", inserted between Fase 9 and Fase 10).
7
+ *
8
+ * ROOT CAUSE this fixes (measured by the AC-008 probe re-run, Fase 9):
9
+ * `Materializer` stages manifested hook entries as bare TypeScript source
10
+ * (a raw text copy driven by `manifest.json`), and `HooksWirer` wires them
11
+ * as `npx tsx <target>/hooks/<hook>.ts`. On a genuinely fresh install
12
+ * target (no monorepo, no INTERIM/C6-TD-204 symlink farm masking this on a
13
+ * dev machine), every hook that imports a non-builtin package (`yaml`,
14
+ * `@orchestrator-claude/project-root-resolver`, transitively `glob` via
15
+ * `lib/finops-parser.ts` — verified empirically, NOT just the `yaml` +
16
+ * `project-root-resolver` surface originally hypothesized) crashes at
17
+ * import time with `MODULE_NOT_FOUND`, before the hook's own logic ever
18
+ * runs.
19
+ *
20
+ * BUILD-TIME vs INSTALL-TIME bundling (verify-before-assert decision):
21
+ * bundling happens HERE, as a `packages/definitions` build step (wired into
22
+ * `npm run build` / `prepublishOnly`, alongside the existing `tsc` +
23
+ * `generate-manifest` steps) — NOT inside `Materializer` at install-time.
24
+ * Reasons, confirmed by reading the package's real build/publish flow
25
+ * (`package.json` `build`/`prepublishOnly` scripts) before choosing:
26
+ * 1. `esbuild` bundling here needs to resolve `yaml` and the WORKSPACE
27
+ * package `@orchestrator-claude/project-root-resolver` from
28
+ * node_modules — reliably available inside this monorepo (where
29
+ * `npm run build` always runs) but NOT guaranteed on an end user's
30
+ * fresh install target (the exact absence that causes the bug).
31
+ * 2. A single deterministic bundle is produced once at publish time and
32
+ * shipped as the actual package artifact (`hooks/*.mjs` is covered by
33
+ * the existing `files: ["hooks", ...]` entry) — every `orch-defs
34
+ * install` run then just copies pre-verified bytes (unchanged
35
+ * `Materializer`/manifest-driven flow), instead of re-invoking esbuild
36
+ * (and re-trusting whatever esbuild version happens to be installed)
37
+ * on every end-user machine at install time.
38
+ *
39
+ * ESM + a `createRequire` banner shim (not CJS, not bare `.js`) — verified
40
+ * empirically, not by extension convention alone:
41
+ * - `import.meta.url` (used by several hooks/libs for `__dirname`
42
+ * derivation) is used natively and correctly ONLY in esbuild's `esm`
43
+ * output format; the `cjs` format empties `import.meta` at build time
44
+ * (esbuild's own documented behavior), which crashes
45
+ * `fileURLToPath(import.meta.url)` at runtime (`ERR_INVALID_ARG_TYPE`,
46
+ * confirmed empirically during this task's Verify-Before-Assert probe).
47
+ * - `.mjs` (not bare `.js`) guarantees Node interprets the bundle as an ES
48
+ * module regardless of Node version or the absence of any nearby
49
+ * `package.json` `"type"` field at the install target (a bare `.js`
50
+ * bundle's module-type is otherwise version-dependent on Node's
51
+ * experimental CommonJS/ESM entry-point sniffing heuristic).
52
+ * - `yaml` is a genuine CommonJs package (`"type": "commonjs"`) whose
53
+ * internal modules `require()` Node builtins (e.g. `require('process')`
54
+ * in `yaml/dist/compose/composer.js`). When esbuild bundles such a
55
+ * lazily-wrapped CJS dependency into an `esm` bundle, its generated
56
+ * `require()`-forwarding shim throws `Dynamic require of "..." is not
57
+ * supported` at runtime UNLESS a real `require` function exists in
58
+ * scope — confirmed empirically. The `banner` below injects exactly
59
+ * that (`createRequire(import.meta.url)`), which resolves Node builtins
60
+ * natively; this is the standard, documented esbuild fix for this exact
61
+ * ESM+CJS-interop class of bug.
62
+ *
63
+ * `bundleHooks(packageRoot)` (like `generateManifest`) is written to be
64
+ * called directly from `scripts/sync-hook-mirrors.ts` in the future (its
65
+ * write-mode currently regenerates `manifest.json` after syncing hook
66
+ * mirrors but does NOT yet re-run this bundler — see the TASK-043
67
+ * implementation report's flagged follow-up finding, deliberately NOT
68
+ * fixed here to keep this fix's blast radius to the RFC-040 installer
69
+ * pipeline, per the "document, don't silently expand scope" rule).
70
+ *
71
+ * Usage: npx tsx src/scripts/bundle-hooks.ts
72
+ */
73
+ import { readdirSync, statSync, existsSync } from 'node:fs';
74
+ import { resolve, join, dirname, basename } from 'node:path';
75
+ import { fileURLToPath } from 'node:url';
76
+ import { buildSync } from 'esbuild';
77
+ const __dirname = dirname(fileURLToPath(import.meta.url));
78
+ const DEFAULT_PACKAGE_ROOT = resolve(__dirname, '../..');
79
+ /**
80
+ * esbuild's generated `require()`-forwarding shim throws `Dynamic require of
81
+ * "..." is not supported` for CJS dependencies (e.g. `yaml`) that `require()`
82
+ * a Node builtin from inside a lazily-invoked CommonJS wrapper, when the
83
+ * output format is `esm` and no real `require` exists at runtime. Injecting
84
+ * a real one via `createRequire` (Node's own documented mechanism) resolves
85
+ * this — verified empirically against every real distributable hook.
86
+ */
87
+ const REQUIRE_SHIM_BANNER = "import { createRequire as __createRequireShim } from 'node:module'; " +
88
+ 'const require = __createRequireShim(import.meta.url);';
89
+ /**
90
+ * Lists TOP-LEVEL `.ts` files directly under `hooksDir` — never recursing
91
+ * into `lib/` (or any other subdirectory). `hooks/lib/*.ts` files are
92
+ * imported BY these entry points, not separate install-time artifacts once
93
+ * bundled (their code is inlined into whichever top-level bundle(s)
94
+ * reference them).
95
+ */
96
+ export function discoverTopLevelHookEntryPoints(hooksDir) {
97
+ if (!existsSync(hooksDir)) {
98
+ return [];
99
+ }
100
+ return readdirSync(hooksDir)
101
+ .filter((name) => name.endsWith('.ts') && statSync(join(hooksDir, name)).isFile())
102
+ .sort();
103
+ }
104
+ /**
105
+ * Bundles ONE entry point to `outputPath` via esbuild, using the exact
106
+ * options the real build relies on (ESM + Node platform + the CJS-interop
107
+ * `require` shim banner — see module JSDoc for why each option is needed).
108
+ *
109
+ * IMPORTANT (empirically verified — TASK freshness-guard probe): esbuild's
110
+ * generated bytes depend on the ENTRY file's real on-disk path (its
111
+ * relative depth from `process.cwd()` affects both an embedded path comment
112
+ * and, less obviously, the generated CJS-interop helper call for `yaml`).
113
+ * Only `outputPath` is safe to redirect to a throwaway location — copying
114
+ * the `.ts` SOURCE to a different absolute path before bundling changes the
115
+ * output for reasons unrelated to source drift. Callers that need a
116
+ * freshness/drift check (bundle now, compare against a committed file) MUST
117
+ * bundle the entry from its real location and only redirect `outputPath`.
118
+ */
119
+ export function bundleOneHook(entryPath, outputPath) {
120
+ buildSync({
121
+ entryPoints: [entryPath],
122
+ bundle: true,
123
+ platform: 'node',
124
+ format: 'esm',
125
+ target: 'node20',
126
+ banner: { js: REQUIRE_SHIM_BANNER },
127
+ sourcemap: false,
128
+ logLevel: 'silent',
129
+ outfile: outputPath,
130
+ });
131
+ }
132
+ /**
133
+ * Bundles every top-level hook entry point discovered under
134
+ * `<packageRoot>/hooks` into a co-located, self-contained `<name>.mjs` file.
135
+ * Pure side effect is writing those `.mjs` files (esbuild `buildSync`) —
136
+ * mirrors the `generateManifest`/`writeManifest` split in spirit (this
137
+ * module has no separate "pure" variant since bundling IS the write), but
138
+ * is safe to call repeatedly: each run fully regenerates its own outputs.
139
+ */
140
+ export function bundleHooks(packageRoot = DEFAULT_PACKAGE_ROOT) {
141
+ const hooksDir = resolve(packageRoot, 'hooks');
142
+ const entryNames = discoverTopLevelHookEntryPoints(hooksDir);
143
+ const results = [];
144
+ for (const entryName of entryNames) {
145
+ const entryPath = join(hooksDir, entryName);
146
+ const outputName = `${basename(entryName, '.ts')}.mjs`;
147
+ const outputPath = join(hooksDir, outputName);
148
+ bundleOneHook(entryPath, outputPath);
149
+ results.push({
150
+ entryFile: `hooks/${entryName}`,
151
+ outputFile: `hooks/${outputName}`,
152
+ });
153
+ }
154
+ return results;
155
+ }
156
+ // ─── CLI Entry Guard ──────────────────────────────────────────────────────────
157
+ const isCli = process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1];
158
+ if (isCli) {
159
+ const results = bundleHooks();
160
+ console.log(`Bundled ${String(results.length)} hook(s):`);
161
+ for (const { entryFile, outputFile } of results) {
162
+ console.log(` ${entryFile} -> ${outputFile}`);
163
+ }
164
+ }
165
+ //# sourceMappingURL=bundle-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-hooks.js","sourceRoot":"","sources":["../../src/scripts/bundle-hooks.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,27 @@
3
3
  * Build-time script: generates manifest.json with SHA256 checksums
4
4
  * for all definition files in the package.
5
5
  *
6
- * Usage: node --loader ts-node/esm src/scripts/generate-manifest.ts
7
- * Or: npx tsx src/scripts/generate-manifest.ts
6
+ * generateManifest(packageRoot) is a PURE, in-memory computation (no writes) —
7
+ * safe to import from other packages/scripts (e.g. scripts/sync-hook-mirrors.ts,
8
+ * RFC-040/TD-204 follow-up) without triggering a manifest.json write as a side
9
+ * effect of module import. The CLI entry point (writeManifest + isCli guard,
10
+ * mirroring the pattern in scripts/sync-hook-mirrors.ts) performs the actual
11
+ * write and is the only thing that runs when this file is executed directly.
12
+ *
13
+ * Usage: npx tsx src/scripts/generate-manifest.ts
14
+ */
15
+ import type { ManifestSchema } from '../manifest/types.js';
16
+ /**
17
+ * Pure, in-memory computation of the definitions manifest for `packageRoot`.
18
+ * Performs NO writes — safe to call repeatedly (e.g. from a check-mode drift
19
+ * detector) without side effects. Defaults to this package's own root when
20
+ * called with no argument (preserves the original CLI behavior).
21
+ */
22
+ export declare function generateManifest(packageRoot?: string): ManifestSchema;
23
+ /**
24
+ * Thin writer: computes the manifest via generateManifest() and writes it to
25
+ * <packageRoot>/manifest.json. This is the only function in this module that
26
+ * performs I/O writes.
8
27
  */
9
- export {};
28
+ export declare function writeManifest(packageRoot?: string): ManifestSchema;
10
29
  //# sourceMappingURL=generate-manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-manifest.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-manifest.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
1
+ {"version":3,"file":"generate-manifest.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-manifest.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAkF5E;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,GAAE,MAA6B,GAAG,cAAc,CAuC3F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,WAAW,GAAE,MAA6B,GAAG,cAAc,CAKxF"}