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.
- package/.apm/agents/{design-architect.agent.md → specky-design-architect.agent.md} +2 -2
- package/.apm/agents/{implementer.agent.md → specky-implementer.agent.md} +2 -2
- package/.apm/agents/specky-onboarding.agent.md +1 -1
- package/.apm/agents/specky-orchestrator.agent.md +10 -10
- package/.apm/agents/{quality-reviewer.agent.md → specky-quality-reviewer.agent.md} +2 -2
- package/.apm/agents/{release-engineer.agent.md → specky-release-engineer.agent.md} +4 -4
- package/.apm/agents/{requirements-engineer.agent.md → specky-requirements-engineer.agent.md} +2 -2
- package/.apm/agents/{research-analyst.agent.md → specky-research-analyst.agent.md} +2 -2
- package/.apm/agents/{sdd-clarify.agent.md → specky-sdd-clarify.agent.md} +2 -2
- package/.apm/agents/{sdd-init.agent.md → specky-sdd-init.agent.md} +3 -3
- package/.apm/agents/{spec-engineer.agent.md → specky-spec-engineer.agent.md} +2 -2
- package/.apm/agents/{task-planner.agent.md → specky-task-planner.agent.md} +2 -2
- package/.apm/agents/{test-verifier.agent.md → specky-test-verifier.agent.md} +2 -2
- package/.apm/hooks/scripts/{artifact-validator.sh → specky-artifact-validator.sh} +11 -11
- package/.apm/hooks/scripts/{auto-checkpoint.sh → specky-auto-checkpoint.sh} +1 -1
- package/.apm/hooks/scripts/{branch-validator.sh → specky-branch-validator.sh} +3 -3
- package/.apm/hooks/scripts/{cognitive-debt-alert.sh → specky-cognitive-debt-alert.sh} +1 -1
- package/.apm/hooks/scripts/{drift-monitor.sh → specky-drift-monitor.sh} +1 -1
- package/.apm/hooks/scripts/{ears-validator.sh → specky-ears-validator.sh} +1 -1
- package/.apm/hooks/scripts/{lgtm-gate.sh → specky-lgtm-gate.sh} +1 -1
- package/.apm/hooks/scripts/{metrics-dashboard.sh → specky-metrics-dashboard.sh} +2 -2
- package/.apm/hooks/scripts/{phase-gate.sh → specky-phase-gate.sh} +1 -1
- package/.apm/hooks/scripts/{pipeline-guard.sh → specky-pipeline-guard.sh} +3 -3
- package/.apm/hooks/scripts/{release-gate.sh → specky-release-gate.sh} +1 -1
- package/.apm/hooks/scripts/{security-scan.sh → specky-security-scan.sh} +2 -2
- package/.apm/hooks/scripts/{session-banner.sh → specky-session-banner.sh} +4 -4
- package/.apm/hooks/scripts/{spec-quality.sh → specky-spec-quality.sh} +1 -1
- package/.apm/hooks/scripts/{spec-sync.sh → specky-spec-sync.sh} +2 -2
- package/.apm/hooks/scripts/{task-tracer.sh → specky-task-tracer.sh} +1 -1
- package/.apm/hooks/sdd-hooks.json +51 -51
- package/.apm/instructions/copilot-instructions.instructions.md +17 -17
- package/.apm/prompts/specky-api.prompt.md +2 -2
- package/.apm/prompts/specky-brownfield.prompt.md +2 -2
- package/.apm/prompts/specky-clarify.prompt.md +1 -1
- package/.apm/prompts/specky-debug-hook.prompt.md +1 -1
- package/.apm/prompts/specky-deploy.prompt.md +1 -1
- package/.apm/prompts/specky-design.prompt.md +1 -1
- package/.apm/prompts/specky-from-meeting.prompt.md +1 -1
- package/.apm/prompts/specky-greenfield.prompt.md +2 -2
- package/.apm/prompts/specky-implement.prompt.md +1 -1
- package/.apm/prompts/specky-migration.prompt.md +3 -3
- package/.apm/prompts/specky-release.prompt.md +1 -1
- package/.apm/prompts/specky-research.prompt.md +1 -1
- package/.apm/prompts/specky-specify.prompt.md +1 -1
- package/.apm/prompts/specky-tasks.prompt.md +1 -1
- package/.apm/prompts/specky-verify.prompt.md +1 -1
- package/.apm/skills/{implementer → specky-implementer}/SKILL.md +3 -3
- package/.apm/skills/specky-onboarding/SKILL.md +29 -29
- package/.apm/skills/specky-orchestrator/SKILL.md +28 -28
- package/.apm/skills/{release-engineer → specky-release-engineer}/SKILL.md +7 -7
- package/.apm/skills/{research-analyst → specky-research-analyst}/SKILL.md +2 -2
- package/.apm/skills/{sdd-markdown-standard → specky-sdd-markdown-standard}/SKILL.md +2 -2
- package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/SKILL.md +30 -30
- package/.apm/skills/{test-verifier → specky-test-verifier}/SKILL.md +2 -2
- package/CHANGELOG.md +76 -0
- package/README.md +24 -17
- package/apm-policy.yml +53 -0
- package/apm.lock.yaml +71 -0
- package/apm.yml +32 -2
- package/config.yml +31 -31
- package/dist/claude-hooks.json +51 -51
- package/dist/cli/commands/apm.d.ts +2 -0
- package/dist/cli/commands/apm.d.ts.map +1 -0
- package/dist/cli/commands/apm.js +139 -0
- package/dist/cli/commands/apm.js.map +1 -0
- package/dist/cli/commands/compile.d.ts +7 -0
- package/dist/cli/commands/compile.d.ts.map +1 -0
- package/dist/cli/commands/compile.js +106 -0
- package/dist/cli/commands/compile.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +35 -13
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +114 -15
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +5 -2
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/index.js +30 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/apm/lock.d.ts +23 -0
- package/dist/cli/lib/apm/lock.d.ts.map +1 -0
- package/dist/cli/lib/apm/lock.js +90 -0
- package/dist/cli/lib/apm/lock.js.map +1 -0
- package/dist/cli/lib/apm/manifest.d.ts +31 -0
- package/dist/cli/lib/apm/manifest.d.ts.map +1 -0
- package/dist/cli/lib/apm/manifest.js +65 -0
- package/dist/cli/lib/apm/manifest.js.map +1 -0
- package/dist/cli/lib/apm/policy.d.ts +23 -0
- package/dist/cli/lib/apm/policy.d.ts.map +1 -0
- package/dist/cli/lib/apm/policy.js +99 -0
- package/dist/cli/lib/apm/policy.js.map +1 -0
- package/dist/cli/lib/asset-copier.d.ts +13 -0
- package/dist/cli/lib/asset-copier.d.ts.map +1 -1
- package/dist/cli/lib/asset-copier.js +46 -126
- package/dist/cli/lib/asset-copier.js.map +1 -1
- package/dist/cli/lib/gitignore-writer.d.ts.map +1 -1
- package/dist/cli/lib/gitignore-writer.js +10 -0
- package/dist/cli/lib/gitignore-writer.js.map +1 -1
- package/dist/cli/lib/harness/compilers/agent-skills.d.ts +7 -0
- package/dist/cli/lib/harness/compilers/agent-skills.d.ts.map +1 -0
- package/dist/cli/lib/harness/compilers/agent-skills.js +23 -0
- package/dist/cli/lib/harness/compilers/agent-skills.js.map +1 -0
- package/dist/cli/lib/harness/compilers/claude.d.ts +10 -0
- package/dist/cli/lib/harness/compilers/claude.d.ts.map +1 -0
- package/dist/cli/lib/harness/compilers/claude.js +29 -0
- package/dist/cli/lib/harness/compilers/claude.js.map +1 -0
- package/dist/cli/lib/harness/compilers/common.d.ts +14 -0
- package/dist/cli/lib/harness/compilers/common.d.ts.map +1 -0
- package/dist/cli/lib/harness/compilers/common.js +43 -0
- package/dist/cli/lib/harness/compilers/common.js.map +1 -0
- package/dist/cli/lib/harness/compilers/copilot.d.ts +10 -0
- package/dist/cli/lib/harness/compilers/copilot.d.ts.map +1 -0
- package/dist/cli/lib/harness/compilers/copilot.js +32 -0
- package/dist/cli/lib/harness/compilers/copilot.js.map +1 -0
- package/dist/cli/lib/harness/compilers/cursor.d.ts +8 -0
- package/dist/cli/lib/harness/compilers/cursor.d.ts.map +1 -0
- package/dist/cli/lib/harness/compilers/cursor.js +27 -0
- package/dist/cli/lib/harness/compilers/cursor.js.map +1 -0
- package/dist/cli/lib/harness/compilers/opencode.d.ts +7 -0
- package/dist/cli/lib/harness/compilers/opencode.d.ts.map +1 -0
- package/dist/cli/lib/harness/compilers/opencode.js +26 -0
- package/dist/cli/lib/harness/compilers/opencode.js.map +1 -0
- package/dist/cli/lib/harness/index.d.ts +12 -0
- package/dist/cli/lib/harness/index.d.ts.map +1 -0
- package/dist/cli/lib/harness/index.js +24 -0
- package/dist/cli/lib/harness/index.js.map +1 -0
- package/dist/cli/lib/harness/tool-map.d.ts +15 -0
- package/dist/cli/lib/harness/tool-map.d.ts.map +1 -0
- package/dist/cli/lib/harness/tool-map.js +114 -0
- package/dist/cli/lib/harness/tool-map.js.map +1 -0
- package/dist/cli/lib/harness/types.d.ts +42 -0
- package/dist/cli/lib/harness/types.d.ts.map +1 -0
- package/dist/cli/lib/harness/types.js +12 -0
- package/dist/cli/lib/harness/types.js.map +1 -0
- package/dist/cli/lib/mcp-writer.d.ts +1 -0
- package/dist/cli/lib/mcp-writer.d.ts.map +1 -1
- package/dist/cli/lib/mcp-writer.js +5 -1
- package/dist/cli/lib/mcp-writer.js.map +1 -1
- package/dist/cli/lib/paths.d.ts +16 -0
- package/dist/cli/lib/paths.d.ts.map +1 -1
- package/dist/cli/lib/paths.js +18 -0
- package/dist/cli/lib/paths.js.map +1 -1
- package/dist/copilot-hooks.json +46 -46
- package/dist/services/state-machine.d.ts +4 -3
- package/dist/services/state-machine.d.ts.map +1 -1
- package/dist/services/state-machine.js +17 -9
- package/dist/services/state-machine.js.map +1 -1
- package/package.json +6 -4
- /package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/references/ears-notation.md +0 -0
- /package/.apm/skills/{sdd-pipeline → specky-sdd-pipeline}/references/model-routing.md +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness/index.ts — the harness compiler registry.
|
|
3
|
+
*
|
|
4
|
+
* `getCompiler(target)` returns the compiler that renders Specky's canonical
|
|
5
|
+
* `.apm` primitives into a harness's native form. Register new harnesses here.
|
|
6
|
+
*/
|
|
7
|
+
import { copilotCompiler } from "./compilers/copilot.js";
|
|
8
|
+
import { claudeCompiler } from "./compilers/claude.js";
|
|
9
|
+
import { cursorCompiler } from "./compilers/cursor.js";
|
|
10
|
+
import { opencodeCompiler } from "./compilers/opencode.js";
|
|
11
|
+
import { agentSkillsCompiler } from "./compilers/agent-skills.js";
|
|
12
|
+
const COMPILERS = {
|
|
13
|
+
copilot: copilotCompiler,
|
|
14
|
+
claude: claudeCompiler,
|
|
15
|
+
cursor: cursorCompiler,
|
|
16
|
+
opencode: opencodeCompiler,
|
|
17
|
+
"agent-skills": agentSkillsCompiler,
|
|
18
|
+
};
|
|
19
|
+
export function getCompiler(target) {
|
|
20
|
+
return COMPILERS[target];
|
|
21
|
+
}
|
|
22
|
+
export const SUPPORTED_TARGETS = Object.keys(COMPILERS);
|
|
23
|
+
export { mapTool, normalizeToLogical, logicalToNative } from "./tool-map.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/lib/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,SAAS,GAA2C;IACtD,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,cAAc;IACtB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,cAAc,EAAE,mBAAmB;CACtC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAqB;IAC7C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAoB,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness/tool-map.ts — logical↔native tool vocabulary.
|
|
3
|
+
*
|
|
4
|
+
* A single source of truth for how Specky's canonical tool ids map to each
|
|
5
|
+
* harness's native tool tokens. Copilot and Claude outputs produced here are
|
|
6
|
+
* byte-for-byte identical to the legacy inline transforms in asset-copier.ts.
|
|
7
|
+
*/
|
|
8
|
+
import type { HarnessTarget, LogicalTool } from "./types.js";
|
|
9
|
+
/** Fold any known native/source token into a canonical logical tool id. */
|
|
10
|
+
export declare function normalizeToLogical(token: string): LogicalTool;
|
|
11
|
+
/** Render a logical tool id into the native token(s) for a harness. */
|
|
12
|
+
export declare function logicalToNative(logical: LogicalTool, target: HarnessTarget): string[];
|
|
13
|
+
/** Map a single source/native token to the native token(s) for a harness. */
|
|
14
|
+
export declare function mapTool(token: string, target: HarnessTarget): string[];
|
|
15
|
+
//# sourceMappingURL=tool-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-map.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/harness/tool-map.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK7D,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAsC7D;AA0DD,uEAAuE;AACvE,wBAAgB,eAAe,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,aAAa,GACtB,MAAM,EAAE,CAQV;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAEtE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness/tool-map.ts — logical↔native tool vocabulary.
|
|
3
|
+
*
|
|
4
|
+
* A single source of truth for how Specky's canonical tool ids map to each
|
|
5
|
+
* harness's native tool tokens. Copilot and Claude outputs produced here are
|
|
6
|
+
* byte-for-byte identical to the legacy inline transforms in asset-copier.ts.
|
|
7
|
+
*/
|
|
8
|
+
const MCP_PREFIX = "mcp.specky.";
|
|
9
|
+
const RAW_PREFIX = "raw:";
|
|
10
|
+
/** Fold any known native/source token into a canonical logical tool id. */
|
|
11
|
+
export function normalizeToLogical(token) {
|
|
12
|
+
if (token.startsWith("specky/")) {
|
|
13
|
+
return `${MCP_PREFIX}${token.slice("specky/".length)}`;
|
|
14
|
+
}
|
|
15
|
+
if (token.startsWith("mcp__specky__")) {
|
|
16
|
+
return `${MCP_PREFIX}${token.slice("mcp__specky__".length)}`;
|
|
17
|
+
}
|
|
18
|
+
if (token.startsWith("sdd_")) {
|
|
19
|
+
return `${MCP_PREFIX}${token}`;
|
|
20
|
+
}
|
|
21
|
+
switch (token) {
|
|
22
|
+
case "Read":
|
|
23
|
+
case "Glob":
|
|
24
|
+
case "Grep":
|
|
25
|
+
case "search":
|
|
26
|
+
return "workspace.search";
|
|
27
|
+
case "Edit":
|
|
28
|
+
case "Write":
|
|
29
|
+
case "MultiEdit":
|
|
30
|
+
case "edit":
|
|
31
|
+
return "workspace.edit";
|
|
32
|
+
case "Bash":
|
|
33
|
+
case "runCommands":
|
|
34
|
+
return "workspace.command";
|
|
35
|
+
case "WebFetch":
|
|
36
|
+
case "WebSearch":
|
|
37
|
+
case "fetch":
|
|
38
|
+
return "web.fetch";
|
|
39
|
+
case "Task":
|
|
40
|
+
case "agent":
|
|
41
|
+
return "agent.delegate";
|
|
42
|
+
case "TodoWrite":
|
|
43
|
+
case "todos":
|
|
44
|
+
return "todo.write";
|
|
45
|
+
default:
|
|
46
|
+
return `${RAW_PREFIX}${token}`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const NATIVE = {
|
|
50
|
+
"workspace.search": {
|
|
51
|
+
copilot: ["search"],
|
|
52
|
+
claude: ["Read", "Glob", "Grep"],
|
|
53
|
+
cursor: ["Read", "Glob", "Grep"],
|
|
54
|
+
opencode: ["read"],
|
|
55
|
+
"agent-skills": ["workspace.search"],
|
|
56
|
+
},
|
|
57
|
+
"workspace.edit": {
|
|
58
|
+
copilot: ["edit"],
|
|
59
|
+
claude: ["Edit", "Write"],
|
|
60
|
+
cursor: ["Edit", "Write"],
|
|
61
|
+
opencode: ["edit"],
|
|
62
|
+
"agent-skills": ["workspace.edit"],
|
|
63
|
+
},
|
|
64
|
+
"workspace.command": {
|
|
65
|
+
copilot: ["runCommands"],
|
|
66
|
+
claude: ["Bash"],
|
|
67
|
+
cursor: ["Bash"],
|
|
68
|
+
opencode: ["bash"],
|
|
69
|
+
"agent-skills": ["workspace.command"],
|
|
70
|
+
},
|
|
71
|
+
"web.fetch": {
|
|
72
|
+
copilot: ["fetch"],
|
|
73
|
+
claude: ["WebFetch", "WebSearch"],
|
|
74
|
+
cursor: ["WebFetch", "WebSearch"],
|
|
75
|
+
opencode: ["fetch"],
|
|
76
|
+
"agent-skills": ["web.fetch"],
|
|
77
|
+
},
|
|
78
|
+
"agent.delegate": {
|
|
79
|
+
copilot: ["agent"],
|
|
80
|
+
claude: ["Task"],
|
|
81
|
+
cursor: ["Task"],
|
|
82
|
+
opencode: ["agent"],
|
|
83
|
+
"agent-skills": ["agent.delegate"],
|
|
84
|
+
},
|
|
85
|
+
"todo.write": {
|
|
86
|
+
copilot: ["todos"],
|
|
87
|
+
claude: ["TodoWrite"],
|
|
88
|
+
cursor: ["TodoWrite"],
|
|
89
|
+
opencode: ["todo"],
|
|
90
|
+
"agent-skills": ["todo.write"],
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
function speckyMcpToken(tool, target) {
|
|
94
|
+
if (target === "claude" || target === "cursor")
|
|
95
|
+
return `mcp__specky__${tool}`;
|
|
96
|
+
if (target === "agent-skills")
|
|
97
|
+
return tool;
|
|
98
|
+
return `specky/${tool}`;
|
|
99
|
+
}
|
|
100
|
+
/** Render a logical tool id into the native token(s) for a harness. */
|
|
101
|
+
export function logicalToNative(logical, target) {
|
|
102
|
+
if (logical.startsWith(MCP_PREFIX)) {
|
|
103
|
+
return [speckyMcpToken(logical.slice(MCP_PREFIX.length), target)];
|
|
104
|
+
}
|
|
105
|
+
if (logical.startsWith(RAW_PREFIX)) {
|
|
106
|
+
return [logical.slice(RAW_PREFIX.length)];
|
|
107
|
+
}
|
|
108
|
+
return NATIVE[logical][target];
|
|
109
|
+
}
|
|
110
|
+
/** Map a single source/native token to the native token(s) for a harness. */
|
|
111
|
+
export function mapTool(token, target) {
|
|
112
|
+
return logicalToNative(normalizeToLogical(token), target);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=tool-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-map.js","sourceRoot":"","sources":["../../../../src/cli/lib/harness/tool-map.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC5C,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,UAAU,GAAG,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACT,OAAO,kBAAkB,CAAC;QAC9B,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM;YACP,OAAO,gBAAgB,CAAC;QAC5B,KAAK,MAAM,CAAC;QACZ,KAAK,aAAa;YACd,OAAO,mBAAmB,CAAC;QAC/B,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,OAAO;YACR,OAAO,WAAW,CAAC;QACvB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACR,OAAO,gBAAgB,CAAC;QAC5B,KAAK,WAAW,CAAC;QACjB,KAAK,OAAO;YACR,OAAO,YAAY,CAAC;QACxB;YACI,OAAO,GAAG,UAAU,GAAG,KAAK,EAAE,CAAC;IACvC,CAAC;AACL,CAAC;AAOD,MAAM,MAAM,GAA8D;IACtE,kBAAkB,EAAE;QAChB,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAChC,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,cAAc,EAAE,CAAC,kBAAkB,CAAC;KACvC;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,cAAc,EAAE,CAAC,gBAAgB,CAAC;KACrC;IACD,mBAAmB,EAAE;QACjB,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,cAAc,EAAE,CAAC,mBAAmB,CAAC;KACxC;IACD,WAAW,EAAE;QACT,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QACjC,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QACjC,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,cAAc,EAAE,CAAC,WAAW,CAAC;KAChC;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,cAAc,EAAE,CAAC,gBAAgB,CAAC;KACrC;IACD,YAAY,EAAE;QACV,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,MAAM,EAAE,CAAC,WAAW,CAAC;QACrB,MAAM,EAAE,CAAC,WAAW,CAAC;QACrB,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,cAAc,EAAE,CAAC,YAAY,CAAC;KACjC;CACJ,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY,EAAE,MAAqB;IACvD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,gBAAgB,IAAI,EAAE,CAAC;IAC9E,IAAI,MAAM,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,UAAU,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAC3B,OAAoB,EACpB,MAAqB;IAErB,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC,OAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,MAAqB;IACxD,OAAO,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness/types.ts — Primitive Intermediate Representation (IR) and the
|
|
3
|
+
* per-harness compiler contract.
|
|
4
|
+
*
|
|
5
|
+
* Specky keeps a single canonical primitive source in `.apm/`. Each supported
|
|
6
|
+
* agent harness (GitHub Copilot, Claude Code, and future targets) has a
|
|
7
|
+
* compiler that renders those primitives into that harness's native file
|
|
8
|
+
* layout and tool vocabulary. Adding a new harness means adding a new
|
|
9
|
+
* `HarnessCompiler` — never hand-editing agents/prompts per platform.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Supported harness targets. Extend this union and register a compiler in
|
|
13
|
+
* `harness/index.ts` to add a new harness (e.g. "codex", "gemini", "kiro").
|
|
14
|
+
* New targets must also add native tool mappings in `harness/tool-map.ts`.
|
|
15
|
+
*/
|
|
16
|
+
export type HarnessTarget = "copilot" | "claude" | "cursor" | "opencode" | "agent-skills";
|
|
17
|
+
/**
|
|
18
|
+
* Canonical, harness-agnostic tool vocabulary. Primitive sources are authored
|
|
19
|
+
* against native Copilot tokens today; `normalizeToLogical` folds any known
|
|
20
|
+
* native token into one of these logical ids, and `logicalToNative` renders a
|
|
21
|
+
* logical id back into the tokens a specific harness understands.
|
|
22
|
+
*/
|
|
23
|
+
export type LogicalTool = "workspace.search" | "workspace.edit" | "workspace.command" | "web.fetch" | "agent.delegate" | "todo.write" | `mcp.specky.${string}` | `raw:${string}`;
|
|
24
|
+
/**
|
|
25
|
+
* A compiler renders canonical primitive files into one harness's native
|
|
26
|
+
* form. Content transforms operate on raw file text (frontmatter + body);
|
|
27
|
+
* renamers map source filenames to the harness's expected extension.
|
|
28
|
+
*/
|
|
29
|
+
export interface HarnessCompiler {
|
|
30
|
+
readonly target: HarnessTarget;
|
|
31
|
+
/** Transform an agent markdown file (frontmatter `tools:` line, etc.). */
|
|
32
|
+
compileAgent(content: string): string;
|
|
33
|
+
/** Transform a prompt/command markdown file. */
|
|
34
|
+
compilePrompt(content: string): string;
|
|
35
|
+
/** Transform an instruction/rules markdown file. */
|
|
36
|
+
compileInstruction(content: string): string;
|
|
37
|
+
/** Map an agent source filename to the harness's expected filename. */
|
|
38
|
+
renameAgent(fileName: string): string;
|
|
39
|
+
/** Map a prompt source filename to the harness's expected filename. */
|
|
40
|
+
renamePrompt(fileName: string): string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACnB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,cAAc,CAAC;AAErB;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,cAAc,MAAM,EAAE,GACtB,OAAO,MAAM,EAAE,CAAC;AAEtB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,0EAA0E;IAC1E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,gDAAgD;IAChD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,oDAAoD;IACpD,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,uEAAuE;IACvE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,uEAAuE;IACvE,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* harness/types.ts — Primitive Intermediate Representation (IR) and the
|
|
3
|
+
* per-harness compiler contract.
|
|
4
|
+
*
|
|
5
|
+
* Specky keeps a single canonical primitive source in `.apm/`. Each supported
|
|
6
|
+
* agent harness (GitHub Copilot, Claude Code, and future targets) has a
|
|
7
|
+
* compiler that renders those primitives into that harness's native file
|
|
8
|
+
* layout and tool vocabulary. Adding a new harness means adding a new
|
|
9
|
+
* `HarnessCompiler` — never hand-editing agents/prompts per platform.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/lib/harness/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"AA+CA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;CAAE,CAuBhF"}
|
|
@@ -43,7 +43,11 @@ export function writeMcpRegistration(path, opts) {
|
|
|
43
43
|
const name = opts.serverName ?? "specky";
|
|
44
44
|
const existing = readJson(path);
|
|
45
45
|
const before = JSON.stringify(existing);
|
|
46
|
-
if (opts.
|
|
46
|
+
if (opts.useOpenCodeSchema) {
|
|
47
|
+
existing.mcp = existing.mcp ?? {};
|
|
48
|
+
existing.mcp[name] = DEFAULT_SERVER;
|
|
49
|
+
}
|
|
50
|
+
else if (opts.useVscodeSchema) {
|
|
47
51
|
existing.servers = existing.servers ?? {};
|
|
48
52
|
existing.servers[name] = DEFAULT_SERVER;
|
|
49
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-writer.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-writer.js","sourceRoot":"","sources":["../../../src/cli/lib/mcp-writer.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/lib/paths.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare function sourcePaths(pkgRoot: string): {
|
|
|
17
17
|
copilotHooksManifest: string;
|
|
18
18
|
configYml: string;
|
|
19
19
|
apmYml: string;
|
|
20
|
+
apmPolicyYml: string;
|
|
20
21
|
};
|
|
21
22
|
export interface Targets {
|
|
22
23
|
claude: {
|
|
@@ -37,9 +38,24 @@ export interface Targets {
|
|
|
37
38
|
hooksManifest: string;
|
|
38
39
|
instructions: string;
|
|
39
40
|
};
|
|
41
|
+
cursor: {
|
|
42
|
+
root: string;
|
|
43
|
+
agents: string;
|
|
44
|
+
commands: string;
|
|
45
|
+
rules: string;
|
|
46
|
+
hooksManifest: string;
|
|
47
|
+
mcp: string;
|
|
48
|
+
};
|
|
49
|
+
opencode: {
|
|
50
|
+
root: string;
|
|
51
|
+
agents: string;
|
|
52
|
+
commands: string;
|
|
53
|
+
mcp: string;
|
|
54
|
+
};
|
|
40
55
|
shared: {
|
|
41
56
|
specky: string;
|
|
42
57
|
specs: string;
|
|
58
|
+
agentSkills: string;
|
|
43
59
|
vscodeMcp: string;
|
|
44
60
|
claudeMcp: string;
|
|
45
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CASpC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CASpC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAgBA;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA8CtD"}
|
package/dist/cli/lib/paths.js
CHANGED
|
@@ -41,11 +41,14 @@ export function sourcePaths(pkgRoot) {
|
|
|
41
41
|
copilotHooksManifest: resolve(pkgRoot, "dist/copilot-hooks.json"),
|
|
42
42
|
configYml: resolve(pkgRoot, "config.yml"),
|
|
43
43
|
apmYml: resolve(pkgRoot, "apm.yml"),
|
|
44
|
+
apmPolicyYml: resolve(pkgRoot, "apm-policy.yml"),
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
47
|
export function targetPaths(workspace) {
|
|
47
48
|
const claude = resolve(workspace, ".claude");
|
|
48
49
|
const github = resolve(workspace, ".github");
|
|
50
|
+
const cursor = resolve(workspace, ".cursor");
|
|
51
|
+
const opencode = resolve(workspace, ".opencode");
|
|
49
52
|
return {
|
|
50
53
|
claude: {
|
|
51
54
|
root: claude,
|
|
@@ -65,9 +68,24 @@ export function targetPaths(workspace) {
|
|
|
65
68
|
hooksManifest: resolve(github, "hooks/specky/sdd-hooks.json"),
|
|
66
69
|
instructions: resolve(github, "instructions"),
|
|
67
70
|
},
|
|
71
|
+
cursor: {
|
|
72
|
+
root: cursor,
|
|
73
|
+
agents: resolve(cursor, "agents"),
|
|
74
|
+
commands: resolve(cursor, "commands"),
|
|
75
|
+
rules: resolve(cursor, "rules"),
|
|
76
|
+
hooksManifest: resolve(cursor, "hooks.json"),
|
|
77
|
+
mcp: resolve(cursor, "mcp.json"),
|
|
78
|
+
},
|
|
79
|
+
opencode: {
|
|
80
|
+
root: opencode,
|
|
81
|
+
agents: resolve(opencode, "agents"),
|
|
82
|
+
commands: resolve(opencode, "commands"),
|
|
83
|
+
mcp: resolve(workspace, "opencode.json"),
|
|
84
|
+
},
|
|
68
85
|
shared: {
|
|
69
86
|
specky: resolve(workspace, ".specky"),
|
|
70
87
|
specs: resolve(workspace, ".specs"),
|
|
88
|
+
agentSkills: resolve(workspace, ".agents/skills"),
|
|
71
89
|
vscodeMcp: resolve(workspace, ".vscode/mcp.json"),
|
|
72
90
|
claudeMcp: resolve(workspace, ".mcp.json"),
|
|
73
91
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,qCAAqC;IACrC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACzD,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"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"}
|