specky-sdd 3.7.2 → 3.8.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 (152) hide show
  1. package/.apm/agents/{design-architect.agent.md → specky-design-architect.agent.md} +2 -2
  2. package/.apm/agents/{implementer.agent.md → specky-implementer.agent.md} +2 -2
  3. package/.apm/agents/specky-onboarding.agent.md +1 -1
  4. package/.apm/agents/specky-orchestrator.agent.md +10 -10
  5. package/.apm/agents/{quality-reviewer.agent.md → specky-quality-reviewer.agent.md} +2 -2
  6. package/.apm/agents/{release-engineer.agent.md → specky-release-engineer.agent.md} +4 -4
  7. package/.apm/agents/{requirements-engineer.agent.md → specky-requirements-engineer.agent.md} +2 -2
  8. package/.apm/agents/{research-analyst.agent.md → specky-research-analyst.agent.md} +2 -2
  9. package/.apm/agents/{sdd-clarify.agent.md → specky-sdd-clarify.agent.md} +2 -2
  10. package/.apm/agents/{sdd-init.agent.md → specky-sdd-init.agent.md} +3 -3
  11. package/.apm/agents/{spec-engineer.agent.md → specky-spec-engineer.agent.md} +2 -2
  12. package/.apm/agents/{task-planner.agent.md → specky-task-planner.agent.md} +2 -2
  13. package/.apm/agents/{test-verifier.agent.md → specky-test-verifier.agent.md} +2 -2
  14. package/.apm/hooks/scripts/{artifact-validator.sh → specky-artifact-validator.sh} +11 -11
  15. package/.apm/hooks/scripts/{auto-checkpoint.sh → specky-auto-checkpoint.sh} +1 -1
  16. package/.apm/hooks/scripts/{branch-validator.sh → specky-branch-validator.sh} +3 -3
  17. package/.apm/hooks/scripts/{cognitive-debt-alert.sh → specky-cognitive-debt-alert.sh} +1 -1
  18. package/.apm/hooks/scripts/{drift-monitor.sh → specky-drift-monitor.sh} +1 -1
  19. package/.apm/hooks/scripts/{ears-validator.sh → specky-ears-validator.sh} +1 -1
  20. package/.apm/hooks/scripts/{lgtm-gate.sh → specky-lgtm-gate.sh} +1 -1
  21. package/.apm/hooks/scripts/{metrics-dashboard.sh → specky-metrics-dashboard.sh} +2 -2
  22. package/.apm/hooks/scripts/{phase-gate.sh → specky-phase-gate.sh} +1 -1
  23. package/.apm/hooks/scripts/{pipeline-guard.sh → specky-pipeline-guard.sh} +3 -3
  24. package/.apm/hooks/scripts/{release-gate.sh → specky-release-gate.sh} +1 -1
  25. package/.apm/hooks/scripts/{security-scan.sh → specky-security-scan.sh} +2 -2
  26. package/.apm/hooks/scripts/{session-banner.sh → specky-session-banner.sh} +4 -4
  27. package/.apm/hooks/scripts/{spec-quality.sh → specky-spec-quality.sh} +1 -1
  28. package/.apm/hooks/scripts/{spec-sync.sh → specky-spec-sync.sh} +2 -2
  29. package/.apm/hooks/scripts/{task-tracer.sh → specky-task-tracer.sh} +1 -1
  30. package/.apm/hooks/sdd-hooks.json +51 -51
  31. package/.apm/instructions/copilot-instructions.instructions.md +17 -17
  32. package/.apm/prompts/specky-api.prompt.md +2 -2
  33. package/.apm/prompts/specky-brownfield.prompt.md +2 -2
  34. package/.apm/prompts/specky-clarify.prompt.md +1 -1
  35. package/.apm/prompts/specky-debug-hook.prompt.md +1 -1
  36. package/.apm/prompts/specky-deploy.prompt.md +1 -1
  37. package/.apm/prompts/specky-design.prompt.md +1 -1
  38. package/.apm/prompts/specky-from-meeting.prompt.md +1 -1
  39. package/.apm/prompts/specky-greenfield.prompt.md +2 -2
  40. package/.apm/prompts/specky-implement.prompt.md +1 -1
  41. package/.apm/prompts/specky-migration.prompt.md +3 -3
  42. package/.apm/prompts/specky-release.prompt.md +1 -1
  43. package/.apm/prompts/specky-research.prompt.md +1 -1
  44. package/.apm/prompts/specky-specify.prompt.md +1 -1
  45. package/.apm/prompts/specky-tasks.prompt.md +1 -1
  46. package/.apm/prompts/specky-verify.prompt.md +1 -1
  47. package/.apm/skills/{implementer → specky-implementer}/SKILL.md +3 -3
  48. package/.apm/skills/specky-onboarding/SKILL.md +29 -29
  49. package/.apm/skills/specky-orchestrator/SKILL.md +28 -28
  50. package/.apm/skills/{release-engineer → specky-release-engineer}/SKILL.md +7 -7
  51. package/.apm/skills/{research-analyst → specky-research-analyst}/SKILL.md +2 -2
  52. package/.apm/skills/{sdd-markdown-standard → specky-sdd-markdown-standard}/SKILL.md +2 -2
  53. package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/SKILL.md +30 -30
  54. package/.apm/skills/{test-verifier → specky-test-verifier}/SKILL.md +2 -2
  55. package/CHANGELOG.md +76 -0
  56. package/README.md +24 -17
  57. package/apm-policy.yml +53 -0
  58. package/apm.lock.yaml +71 -0
  59. package/apm.yml +32 -2
  60. package/config.yml +31 -31
  61. package/dist/claude-hooks.json +51 -51
  62. package/dist/cli/commands/apm.d.ts +2 -0
  63. package/dist/cli/commands/apm.d.ts.map +1 -0
  64. package/dist/cli/commands/apm.js +139 -0
  65. package/dist/cli/commands/apm.js.map +1 -0
  66. package/dist/cli/commands/compile.d.ts +7 -0
  67. package/dist/cli/commands/compile.d.ts.map +1 -0
  68. package/dist/cli/commands/compile.js +106 -0
  69. package/dist/cli/commands/compile.js.map +1 -0
  70. package/dist/cli/commands/doctor.d.ts.map +1 -1
  71. package/dist/cli/commands/doctor.js +35 -13
  72. package/dist/cli/commands/doctor.js.map +1 -1
  73. package/dist/cli/commands/init.d.ts +1 -0
  74. package/dist/cli/commands/init.d.ts.map +1 -1
  75. package/dist/cli/commands/init.js +114 -15
  76. package/dist/cli/commands/init.js.map +1 -1
  77. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  78. package/dist/cli/commands/upgrade.js +5 -2
  79. package/dist/cli/commands/upgrade.js.map +1 -1
  80. package/dist/cli/index.js +30 -2
  81. package/dist/cli/index.js.map +1 -1
  82. package/dist/cli/lib/apm/lock.d.ts +23 -0
  83. package/dist/cli/lib/apm/lock.d.ts.map +1 -0
  84. package/dist/cli/lib/apm/lock.js +90 -0
  85. package/dist/cli/lib/apm/lock.js.map +1 -0
  86. package/dist/cli/lib/apm/manifest.d.ts +31 -0
  87. package/dist/cli/lib/apm/manifest.d.ts.map +1 -0
  88. package/dist/cli/lib/apm/manifest.js +65 -0
  89. package/dist/cli/lib/apm/manifest.js.map +1 -0
  90. package/dist/cli/lib/apm/policy.d.ts +23 -0
  91. package/dist/cli/lib/apm/policy.d.ts.map +1 -0
  92. package/dist/cli/lib/apm/policy.js +99 -0
  93. package/dist/cli/lib/apm/policy.js.map +1 -0
  94. package/dist/cli/lib/asset-copier.d.ts +13 -0
  95. package/dist/cli/lib/asset-copier.d.ts.map +1 -1
  96. package/dist/cli/lib/asset-copier.js +46 -126
  97. package/dist/cli/lib/asset-copier.js.map +1 -1
  98. package/dist/cli/lib/gitignore-writer.d.ts.map +1 -1
  99. package/dist/cli/lib/gitignore-writer.js +10 -0
  100. package/dist/cli/lib/gitignore-writer.js.map +1 -1
  101. package/dist/cli/lib/harness/compilers/agent-skills.d.ts +7 -0
  102. package/dist/cli/lib/harness/compilers/agent-skills.d.ts.map +1 -0
  103. package/dist/cli/lib/harness/compilers/agent-skills.js +23 -0
  104. package/dist/cli/lib/harness/compilers/agent-skills.js.map +1 -0
  105. package/dist/cli/lib/harness/compilers/claude.d.ts +10 -0
  106. package/dist/cli/lib/harness/compilers/claude.d.ts.map +1 -0
  107. package/dist/cli/lib/harness/compilers/claude.js +29 -0
  108. package/dist/cli/lib/harness/compilers/claude.js.map +1 -0
  109. package/dist/cli/lib/harness/compilers/common.d.ts +14 -0
  110. package/dist/cli/lib/harness/compilers/common.d.ts.map +1 -0
  111. package/dist/cli/lib/harness/compilers/common.js +43 -0
  112. package/dist/cli/lib/harness/compilers/common.js.map +1 -0
  113. package/dist/cli/lib/harness/compilers/copilot.d.ts +10 -0
  114. package/dist/cli/lib/harness/compilers/copilot.d.ts.map +1 -0
  115. package/dist/cli/lib/harness/compilers/copilot.js +32 -0
  116. package/dist/cli/lib/harness/compilers/copilot.js.map +1 -0
  117. package/dist/cli/lib/harness/compilers/cursor.d.ts +8 -0
  118. package/dist/cli/lib/harness/compilers/cursor.d.ts.map +1 -0
  119. package/dist/cli/lib/harness/compilers/cursor.js +27 -0
  120. package/dist/cli/lib/harness/compilers/cursor.js.map +1 -0
  121. package/dist/cli/lib/harness/compilers/opencode.d.ts +7 -0
  122. package/dist/cli/lib/harness/compilers/opencode.d.ts.map +1 -0
  123. package/dist/cli/lib/harness/compilers/opencode.js +26 -0
  124. package/dist/cli/lib/harness/compilers/opencode.js.map +1 -0
  125. package/dist/cli/lib/harness/index.d.ts +12 -0
  126. package/dist/cli/lib/harness/index.d.ts.map +1 -0
  127. package/dist/cli/lib/harness/index.js +24 -0
  128. package/dist/cli/lib/harness/index.js.map +1 -0
  129. package/dist/cli/lib/harness/tool-map.d.ts +15 -0
  130. package/dist/cli/lib/harness/tool-map.d.ts.map +1 -0
  131. package/dist/cli/lib/harness/tool-map.js +114 -0
  132. package/dist/cli/lib/harness/tool-map.js.map +1 -0
  133. package/dist/cli/lib/harness/types.d.ts +42 -0
  134. package/dist/cli/lib/harness/types.d.ts.map +1 -0
  135. package/dist/cli/lib/harness/types.js +12 -0
  136. package/dist/cli/lib/harness/types.js.map +1 -0
  137. package/dist/cli/lib/mcp-writer.d.ts +1 -0
  138. package/dist/cli/lib/mcp-writer.d.ts.map +1 -1
  139. package/dist/cli/lib/mcp-writer.js +5 -1
  140. package/dist/cli/lib/mcp-writer.js.map +1 -1
  141. package/dist/cli/lib/paths.d.ts +16 -0
  142. package/dist/cli/lib/paths.d.ts.map +1 -1
  143. package/dist/cli/lib/paths.js +18 -0
  144. package/dist/cli/lib/paths.js.map +1 -1
  145. package/dist/copilot-hooks.json +46 -46
  146. package/dist/services/state-machine.d.ts +4 -3
  147. package/dist/services/state-machine.d.ts.map +1 -1
  148. package/dist/services/state-machine.js +17 -9
  149. package/dist/services/state-machine.js.map +1 -1
  150. package/package.json +6 -4
  151. /package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/references/ears-notation.md +0 -0
  152. /package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/references/model-routing.md +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAoCtE"}
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCtE"}
@@ -25,10 +25,13 @@ export async function runUpgrade(opts) {
25
25
  }
26
26
  // Upgrade = init with --force, re-detect IDE from existing install
27
27
  let ide = "auto";
28
+ let target;
28
29
  if (existsSync(installJson)) {
29
30
  try {
30
31
  const meta = JSON.parse(readFileSync(installJson, "utf8"));
31
- if (meta.ide)
32
+ if (Array.isArray(meta.targets) && meta.targets.length > 0)
33
+ target = meta.targets.join(",");
34
+ else if (meta.ide)
32
35
  ide = meta.ide;
33
36
  }
34
37
  catch {
@@ -36,6 +39,6 @@ export async function runUpgrade(opts) {
36
39
  }
37
40
  }
38
41
  console.log(`[specky upgrade] .specs/ and .specky/profile.json will be preserved.`);
39
- return runInit({ force: true, dryRun: false, ide, workspace });
42
+ return runInit({ force: true, dryRun: false, ide, target, workspace });
40
43
  }
41
44
  //# sourceMappingURL=upgrade.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAE/C,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAGxD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,mEAAmE;IACnE,IAAI,GAAG,GAA2C,MAAM,CAAC;IACzD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAExD,CAAC;YACF,IAAI,IAAI,CAAC,GAAG;gBAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAE/C,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAGxD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACtF,CAAC;IAED,mEAAmE;IACnE,IAAI,GAAG,GAA2C,MAAM,CAAC;IACzD,IAAI,MAA0B,CAAC;IAC/B,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAGxD,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvF,IAAI,IAAI,CAAC,GAAG;gBAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IACpF,OAAO,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACzE,CAAC"}
package/dist/cli/index.js CHANGED
@@ -3,11 +3,13 @@
3
3
  * cli/index.ts — Specky unified CLI entry point.
4
4
  *
5
5
  * Subcommands:
6
- * specky init [--ide=claude|copilot|both|auto] [--force] [--dry-run]
6
+ * specky init [--target=TARGET[,TARGET...]] [--force] [--dry-run]
7
+ * specky compile [--target=TARGET[,TARGET...]] [--dry-run]
7
8
  * specky doctor [--fix] [--verbose]
8
9
  * specky status
9
10
  * specky upgrade
10
11
  * specky hooks <list|test|run NAME>
12
+ * specky apm <validate|lock|verify-lock|policy|audit|sbom>
11
13
  * specky serve [--http] [--port=N] [--profile=enterprise]
12
14
  * specky --version | -v
13
15
  * specky --help | -h
@@ -50,7 +52,10 @@ Usage:
50
52
  Commands:
51
53
  install Install Specky assets into the current workspace
52
54
  init Alias of 'install' (same command)
55
+ --target=<targets> comma-list: copilot, claude, cursor,
56
+ opencode, agent-skills, both, all, auto
53
57
  --ide=<claude|copilot|both|auto> Default: auto
58
+ Deprecated alias for --target
54
59
  --force Overwrite existing files
55
60
  --dry-run Show changes without writing
56
61
 
@@ -60,11 +65,20 @@ Commands:
60
65
 
61
66
  status Show install + pipeline status
62
67
 
68
+ compile Compile instruction primitives into root context files
69
+ --target=<targets> comma-list: copilot, claude, cursor,
70
+ opencode, agent-skills, both, all
71
+ --dry-run Show output paths without writing
72
+
63
73
  upgrade Refresh installed assets (preserves .specs/)
64
74
 
65
75
  hooks <list|test|run NAME>
66
76
  Manage installed hooks
67
77
 
78
+ apm <validate|lock|verify-lock|policy|audit|sbom>
79
+ Validate APM manifest, lock primitives, enforce
80
+ governance policy, and export primitive SBOM
81
+
68
82
  serve Start the MCP server (stdio by default)
69
83
  --http HTTP streaming transport
70
84
  --port=<N> HTTP port (default 3200)
@@ -86,9 +100,11 @@ async function dispatch(command, rest) {
86
100
  case "init": {
87
101
  const { runInit } = await import("./commands/init.js");
88
102
  const ideRaw = flags["ide"];
103
+ const targetRaw = flags["target"];
89
104
  const ide = typeof ideRaw === "string" ? ideRaw : "auto";
90
105
  return runInit({
91
106
  ide,
107
+ target: typeof targetRaw === "string" ? targetRaw : undefined,
92
108
  force: flags["force"] === true,
93
109
  dryRun: flags["dry-run"] === true,
94
110
  });
@@ -104,6 +120,14 @@ async function dispatch(command, rest) {
104
120
  const { runStatus } = await import("./commands/status.js");
105
121
  return runStatus({});
106
122
  }
123
+ case "compile": {
124
+ const { runCompile } = await import("./commands/compile.js");
125
+ const targetRaw = flags["target"];
126
+ return runCompile({
127
+ target: typeof targetRaw === "string" ? targetRaw : undefined,
128
+ dryRun: flags["dry-run"] === true,
129
+ });
130
+ }
107
131
  case "upgrade": {
108
132
  const { runUpgrade } = await import("./commands/upgrade.js");
109
133
  return runUpgrade({ keepSpecs: flags["keep-specs"] === true });
@@ -113,6 +137,10 @@ async function dispatch(command, rest) {
113
137
  const action = (positional[0] ?? "list");
114
138
  return runHooks({ action, name: positional[1] });
115
139
  }
140
+ case "apm": {
141
+ const { apmCommand } = await import("./commands/apm.js");
142
+ return apmCommand(positional);
143
+ }
116
144
  case "serve": {
117
145
  const { runServe } = await import("./commands/serve.js");
118
146
  const portFlag = flags["port"];
@@ -176,7 +204,7 @@ async function main() {
176
204
  const isLegacyBin = binName === "specky-sdd" || binName.endsWith("specky-sdd");
177
205
  // Legacy back-compat: `specky-sdd` with no subcommand OR with --http maps to serve
178
206
  const knownCommands = new Set([
179
- "install", "init", "doctor", "status", "upgrade", "hooks", "serve",
207
+ "install", "init", "doctor", "status", "compile", "upgrade", "hooks", "apm", "serve",
180
208
  "help", "--help", "-h", "--version", "-v",
181
209
  ]);
182
210
  const firstArg = args[0];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare const LOCK_SCHEMA_VERSION = 1;
2
+ export interface ApmLock {
3
+ schemaVersion: number;
4
+ package: {
5
+ name: string;
6
+ version: string;
7
+ };
8
+ primitives: Record<string, string>;
9
+ }
10
+ /** Compute the sorted `.apm` + governance manifest hash map for a package root. */
11
+ export declare function hashPrimitives(pkgRoot: string): Record<string, string>;
12
+ export declare function generateLock(pkgRoot: string): ApmLock;
13
+ export declare function serializeLock(lock: ApmLock): string;
14
+ export declare function lockPath(pkgRoot: string): string;
15
+ export interface VerifyResult {
16
+ ok: boolean;
17
+ missing: string[];
18
+ changed: string[];
19
+ extra: string[];
20
+ error?: string;
21
+ }
22
+ export declare function verifyLock(pkgRoot: string): VerifyResult;
23
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/apm/lock.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,MAAM,WAAW,OAAO;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAiBD,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWtE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CA8BxD"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * apm/lock.ts — reproducible lockfile for the canonical primitive source.
3
+ *
4
+ * `apm lock` records a sha256 for every file under `.apm/`, plus apm.yml and
5
+ * apm-policy.yml, into apm.lock.yaml. `apm verify-lock` recomputes and diffs,
6
+ * so any drift between the committed primitives/governance files and the
7
+ * lockfile — a hand-edit, a partial upgrade, a corrupted install — is caught
8
+ * deterministically.
9
+ */
10
+ import { createHash } from "node:crypto";
11
+ import { readFileSync, readdirSync, statSync, existsSync } from "node:fs";
12
+ import { relative, resolve } from "node:path";
13
+ import { parse, stringify } from "yaml";
14
+ import { sourcePaths } from "../paths.js";
15
+ export const LOCK_SCHEMA_VERSION = 1;
16
+ function walkFiles(dir) {
17
+ if (!existsSync(dir))
18
+ return [];
19
+ const out = [];
20
+ for (const name of readdirSync(dir)) {
21
+ const full = resolve(dir, name);
22
+ if (statSync(full).isDirectory())
23
+ out.push(...walkFiles(full));
24
+ else
25
+ out.push(full);
26
+ }
27
+ return out;
28
+ }
29
+ function sha256(file) {
30
+ return `sha256:${createHash("sha256").update(readFileSync(file)).digest("hex")}`;
31
+ }
32
+ /** Compute the sorted `.apm` + governance manifest hash map for a package root. */
33
+ export function hashPrimitives(pkgRoot) {
34
+ const { apmDir, apmYml, apmPolicyYml } = sourcePaths(pkgRoot);
35
+ const files = [...walkFiles(apmDir)];
36
+ if (existsSync(apmYml))
37
+ files.push(apmYml);
38
+ if (existsSync(apmPolicyYml))
39
+ files.push(apmPolicyYml);
40
+ const map = {};
41
+ for (const file of files.sort((a, b) => a.localeCompare(b))) {
42
+ map[relative(pkgRoot, file)] = sha256(file);
43
+ }
44
+ return map;
45
+ }
46
+ export function generateLock(pkgRoot) {
47
+ const pkg = JSON.parse(readFileSync(resolve(pkgRoot, "package.json"), "utf8"));
48
+ return {
49
+ schemaVersion: LOCK_SCHEMA_VERSION,
50
+ package: { name: pkg.name, version: pkg.version },
51
+ primitives: hashPrimitives(pkgRoot),
52
+ };
53
+ }
54
+ export function serializeLock(lock) {
55
+ return `# Generated by \`specky apm lock\`. Do not edit by hand.\n${stringify(lock)}`;
56
+ }
57
+ export function lockPath(pkgRoot) {
58
+ return resolve(pkgRoot, "apm.lock.yaml");
59
+ }
60
+ export function verifyLock(pkgRoot) {
61
+ const path = lockPath(pkgRoot);
62
+ if (!existsSync(path)) {
63
+ return {
64
+ ok: false,
65
+ missing: [],
66
+ changed: [],
67
+ extra: [],
68
+ error: "apm.lock.yaml not found — run `specky apm lock`",
69
+ };
70
+ }
71
+ const locked = parse(readFileSync(path, "utf8"));
72
+ const current = hashPrimitives(pkgRoot);
73
+ const lockedPrimitives = locked.primitives ?? {};
74
+ const missing = [];
75
+ const changed = [];
76
+ for (const [file, hash] of Object.entries(lockedPrimitives)) {
77
+ if (!(file in current))
78
+ missing.push(file);
79
+ else if (current[file] !== hash)
80
+ changed.push(file);
81
+ }
82
+ const extra = Object.keys(current).filter((f) => !(f in lockedPrimitives));
83
+ return {
84
+ ok: missing.length === 0 && changed.length === 0 && extra.length === 0,
85
+ missing: missing.sort(),
86
+ changed: changed.sort(),
87
+ extra: extra.sort(),
88
+ };
89
+ }
90
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../src/cli/lib/apm/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface ApmMcpServer {
2
+ name: string;
3
+ transport?: string;
4
+ command?: string;
5
+ args?: string[];
6
+ tools?: string[];
7
+ registry?: boolean;
8
+ }
9
+ export interface ApmManifest {
10
+ name: string;
11
+ version: string;
12
+ description?: string;
13
+ targets: string[];
14
+ primitives: Record<string, string>;
15
+ mcp?: {
16
+ servers?: ApmMcpServer[];
17
+ };
18
+ }
19
+ export declare function loadManifest(pkgRoot: string): ApmManifest;
20
+ export interface ValidationResult {
21
+ ok: boolean;
22
+ errors: string[];
23
+ warnings: string[];
24
+ }
25
+ /**
26
+ * Validate the APM manifest: required fields, version parity with
27
+ * package.json, declared primitive paths exist, targets are non-empty, and at
28
+ * least one MCP server is declared.
29
+ */
30
+ export declare function validateManifest(pkgRoot: string): ValidationResult;
31
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/apm/manifest.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;CACtC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAMzD;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAmDlE"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * apm/manifest.ts — load and validate the APM manifest (apm.yml).
3
+ *
4
+ * The manifest is the enterprise contract for the package: it declares the
5
+ * canonical primitive source, the harness targets the package compiles to, and
6
+ * the MCP servers that back the primitives' tool ids. `apm validate` checks the
7
+ * manifest against the on-disk primitives and the npm manifest (package.json).
8
+ */
9
+ import { readFileSync, existsSync } from "node:fs";
10
+ import { resolve } from "node:path";
11
+ import { parse } from "yaml";
12
+ import { sourcePaths } from "../paths.js";
13
+ export function loadManifest(pkgRoot) {
14
+ const { apmYml } = sourcePaths(pkgRoot);
15
+ if (!existsSync(apmYml)) {
16
+ throw new Error(`[specky] apm.yml not found at ${apmYml}`);
17
+ }
18
+ return parse(readFileSync(apmYml, "utf8"));
19
+ }
20
+ /**
21
+ * Validate the APM manifest: required fields, version parity with
22
+ * package.json, declared primitive paths exist, targets are non-empty, and at
23
+ * least one MCP server is declared.
24
+ */
25
+ export function validateManifest(pkgRoot) {
26
+ const errors = [];
27
+ const warnings = [];
28
+ let manifest;
29
+ try {
30
+ manifest = loadManifest(pkgRoot);
31
+ }
32
+ catch (err) {
33
+ return { ok: false, errors: [err.message], warnings };
34
+ }
35
+ const pkg = JSON.parse(readFileSync(resolve(pkgRoot, "package.json"), "utf8"));
36
+ if (!manifest.name)
37
+ errors.push("apm.yml: missing 'name'");
38
+ else if (manifest.name !== pkg.name) {
39
+ errors.push(`apm.yml name "${manifest.name}" != package.json name "${pkg.name}"`);
40
+ }
41
+ if (!manifest.version)
42
+ errors.push("apm.yml: missing 'version'");
43
+ else if (manifest.version !== pkg.version) {
44
+ errors.push(`apm.yml version "${manifest.version}" != package.json version "${pkg.version}"`);
45
+ }
46
+ if (!Array.isArray(manifest.targets) || manifest.targets.length === 0) {
47
+ errors.push("apm.yml: 'targets' must list at least one harness target");
48
+ }
49
+ if (!manifest.primitives || typeof manifest.primitives !== "object") {
50
+ errors.push("apm.yml: missing 'primitives' map");
51
+ }
52
+ else {
53
+ for (const [kind, relPath] of Object.entries(manifest.primitives)) {
54
+ if (!existsSync(resolve(pkgRoot, relPath))) {
55
+ errors.push(`apm.yml: primitive '${kind}' path does not exist: ${relPath}`);
56
+ }
57
+ }
58
+ }
59
+ const servers = manifest.mcp?.servers ?? [];
60
+ if (servers.length === 0) {
61
+ warnings.push("apm.yml: no MCP servers declared under 'mcp.servers'");
62
+ }
63
+ return { ok: errors.length === 0, errors, warnings };
64
+ }
65
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../src/cli/lib/apm/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface ApmPolicy {
2
+ schemaVersion?: number;
3
+ allowedSources?: string[];
4
+ mcp?: {
5
+ allowTransitive?: boolean;
6
+ allowedServers?: string[];
7
+ };
8
+ hooks?: {
9
+ allowedEvents?: string[];
10
+ };
11
+ targets?: Record<string, {
12
+ forbidToolTokens?: string[];
13
+ }>;
14
+ }
15
+ export declare function policyPath(pkgRoot: string): string;
16
+ export declare function loadPolicy(pkgRoot: string): ApmPolicy;
17
+ export interface PolicyResult {
18
+ ok: boolean;
19
+ errors: string[];
20
+ warnings: string[];
21
+ }
22
+ export declare function checkPolicy(pkgRoot: string): PolicyResult;
23
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/apm/policy.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,GAAG,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/D,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC7D;AAYD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAIrD;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAqFD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAiBzD"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * apm/policy.ts — enforce the enterprise governance policy (apm-policy.yml).
3
+ *
4
+ * Checks that: declared MCP servers are allow-listed, hook manifests only
5
+ * register allowed events, and each harness target's compiled tool tokens stay
6
+ * isolated (no foreign harness tokens leak across targets).
7
+ */
8
+ import { readFileSync, existsSync, readdirSync } from "node:fs";
9
+ import { resolve } from "node:path";
10
+ import { parse } from "yaml";
11
+ import { sourcePaths } from "../paths.js";
12
+ import { loadManifest } from "./manifest.js";
13
+ import { getCompiler } from "../harness/index.js";
14
+ const TARGET_ALIASES = {
15
+ "github-copilot": "copilot",
16
+ copilot: "copilot",
17
+ "claude-code": "claude",
18
+ claude: "claude",
19
+ cursor: "cursor",
20
+ opencode: "opencode",
21
+ "agent-skills": "agent-skills",
22
+ };
23
+ export function policyPath(pkgRoot) {
24
+ return resolve(pkgRoot, "apm-policy.yml");
25
+ }
26
+ export function loadPolicy(pkgRoot) {
27
+ const path = policyPath(pkgRoot);
28
+ if (!existsSync(path))
29
+ return {};
30
+ return parse(readFileSync(path, "utf8")) ?? {};
31
+ }
32
+ function toolsLine(content) {
33
+ return content.split("\n").find((line) => line.startsWith("tools:")) ?? "";
34
+ }
35
+ function checkMcpAllowlist(pkgRoot, policy, errors) {
36
+ const allowedServers = policy.mcp?.allowedServers ?? [];
37
+ const manifest = loadManifest(pkgRoot);
38
+ for (const server of manifest.mcp?.servers ?? []) {
39
+ if (!allowedServers.includes(server.name)) {
40
+ errors.push(`MCP server "${server.name}" is not in policy allowedServers`);
41
+ }
42
+ }
43
+ }
44
+ function checkHookEvents(policy, hooksManifest, errors) {
45
+ const allowedEvents = policy.hooks?.allowedEvents;
46
+ if (!allowedEvents || !existsSync(hooksManifest))
47
+ return;
48
+ const manifestJson = JSON.parse(readFileSync(hooksManifest, "utf8"));
49
+ for (const event of Object.keys(manifestJson)) {
50
+ if (!allowedEvents.includes(event)) {
51
+ errors.push(`Hook manifest registers disallowed event "${event}"`);
52
+ }
53
+ }
54
+ }
55
+ function policyAgentFiles(agentsDir) {
56
+ return existsSync(agentsDir)
57
+ ? readdirSync(agentsDir).filter((file) => file.endsWith(".agent.md"))
58
+ : [];
59
+ }
60
+ function checkForbiddenTokens(targetName, target, forbidden, agentsDir, agentFiles, errors) {
61
+ if (forbidden.length === 0)
62
+ return;
63
+ const compiler = getCompiler(target);
64
+ for (const file of agentFiles) {
65
+ const source = readFileSync(resolve(agentsDir, file), "utf8");
66
+ const line = toolsLine(compiler.compileAgent(source));
67
+ for (const token of forbidden) {
68
+ if (line.includes(token)) {
69
+ errors.push(`${targetName}: agent "${file}" compiles to a forbidden tool token "${token}"`);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ function checkTargetIsolation(policy, agentsDir, errors, warnings) {
75
+ const agentFiles = policyAgentFiles(agentsDir);
76
+ for (const [targetName, rules] of Object.entries(policy.targets ?? {})) {
77
+ const target = TARGET_ALIASES[targetName];
78
+ if (!target) {
79
+ warnings.push(`policy targets: unknown target "${targetName}"`);
80
+ continue;
81
+ }
82
+ checkForbiddenTokens(targetName, target, rules.forbidToolTokens ?? [], agentsDir, agentFiles, errors);
83
+ }
84
+ }
85
+ export function checkPolicy(pkgRoot) {
86
+ const errors = [];
87
+ const warnings = [];
88
+ const policy = loadPolicy(pkgRoot);
89
+ if (!existsSync(policyPath(pkgRoot))) {
90
+ warnings.push("apm-policy.yml not found — governance checks are skipped");
91
+ return { ok: true, errors, warnings };
92
+ }
93
+ const { agentsDir, hooksManifest } = sourcePaths(pkgRoot);
94
+ checkMcpAllowlist(pkgRoot, policy, errors);
95
+ checkHookEvents(policy, hooksManifest, errors);
96
+ checkTargetIsolation(policy, agentsDir, errors, warnings);
97
+ return { ok: errors.length === 0, errors, warnings };
98
+ }
99
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../src/cli/lib/apm/policy.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,19 @@ export declare function copyToClaude(pkgRoot: string, targets: Targets, opts: Co
16
16
  * Copy assets to GitHub Copilot `.github/` layout.
17
17
  */
18
18
  export declare function copyToCopilot(pkgRoot: string, targets: Targets, opts: CopyOptions): CopyResult;
19
+ /**
20
+ * Copy assets to Cursor `.cursor/` layout.
21
+ */
22
+ export declare function copyToCursor(pkgRoot: string, targets: Targets, opts: CopyOptions): CopyResult;
23
+ /**
24
+ * Copy assets to OpenCode `.opencode/` layout. OpenCode has no hooks concept,
25
+ * so Specky hook primitives are intentionally skipped for this target.
26
+ */
27
+ export declare function copyToOpenCode(pkgRoot: string, targets: Targets, opts: CopyOptions): CopyResult;
28
+ /**
29
+ * Copy neutral Agent Skills to the cross-client `.agents/skills/` directory.
30
+ */
31
+ export declare function copyToAgentSkills(pkgRoot: string, targets: Targets, opts: CopyOptions): CopyResult;
19
32
  /**
20
33
  * Compute SHA256 of every copied file so `specky doctor` can detect drift.
21
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"asset-copier.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/asset-copier.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAqB,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAqND;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CA0CZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CAmDZ;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,GAChB,MAAM,CAwBR;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAEjE;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"asset-copier.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/asset-copier.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAqB,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAmFD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CA2CZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CAoDZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CAUZ;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,GAChB,UAAU,CAOZ;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,UAAU,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,GAChB,MAAM,CAwBR;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAEjE;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAC"}