strikethroo 3.10.0 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/harnesses/agent-adapter.d.ts +20 -0
- package/dist/harnesses/agent-adapter.d.ts.map +1 -0
- package/dist/harnesses/agent-adapter.js +119 -0
- package/dist/harnesses/agent-adapter.js.map +1 -0
- package/dist/harnesses/index.d.ts +13 -0
- package/dist/harnesses/index.d.ts.map +1 -0
- package/dist/harnesses/index.js +18 -0
- package/dist/harnesses/index.js.map +1 -0
- package/dist/harnesses/registry.d.ts +35 -0
- package/dist/harnesses/registry.d.ts.map +1 -0
- package/dist/harnesses/registry.js +24 -0
- package/dist/harnesses/registry.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -28
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +1 -1
- package/dist/metadata.js +1 -1
- package/dist/serve/config-write.d.ts +15 -12
- package/dist/serve/config-write.d.ts.map +1 -1
- package/dist/serve/config-write.js +40 -26
- package/dist/serve/config-write.js.map +1 -1
- package/dist/serve/workspace-model.d.ts +4 -2
- package/dist/serve/workspace-model.d.ts.map +1 -1
- package/dist/serve/workspace-model.js +14 -1
- package/dist/serve/workspace-model.js.map +1 -1
- package/dist/skill-scripts/shared/root.js +1 -1
- package/dist-web/assets/{arc-Du83CoGP.js → arc-BVtIjHfG.js} +1 -1
- package/dist-web/assets/{architectureDiagram-3BPJPVTR-BA6BUfUW.js → architectureDiagram-3BPJPVTR-6n6Kx_Nw.js} +1 -1
- package/dist-web/assets/{blockDiagram-GPEHLZMM-kmZD9Z3J.js → blockDiagram-GPEHLZMM-DVQrCUNW.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-C-zr0OVA.js → c4Diagram-AAUBKEIU-BmsJKunV.js} +1 -1
- package/dist-web/assets/channel-C1JVeaAF.js +1 -0
- package/dist-web/assets/{chunk-2J33WTMH-DGyZyeF8.js → chunk-2J33WTMH-CLmshK_w.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-Ig1yILPK.js → chunk-4BX2VUAB-DFWJI57N.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-CcNftkuC.js → chunk-55IACEB6-Cw5bYv7_.js} +1 -1
- package/dist-web/assets/{chunk-727SXJPM-CiRgiu44.js → chunk-727SXJPM-cGYMQHSz.js} +1 -1
- package/dist-web/assets/{chunk-AQP2D5EJ-Bwjvwe11.js → chunk-AQP2D5EJ-CQjDykhJ.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-CWdvFsJu.js → chunk-FMBD7UC4-x3hzV0ms.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-8GmIk-IZ.js → chunk-ND2GUHAM-B2mXRbNo.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-CaL4wYlA.js → chunk-QZHKN3VN-CvnkhP9r.js} +1 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-D1UIhNJl.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-D1UIhNJl.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-RFm7vIyb.js → cose-bilkent-S5V4N54A-BZpF-dzH.js} +1 -1
- package/dist-web/assets/{dagre-BM42HDAG-ByE50cqc.js → dagre-BM42HDAG-DFMuZyrG.js} +1 -1
- package/dist-web/assets/{diagram-2AECGRRQ-B1Gv7VcB.js → diagram-2AECGRRQ-BvprRz2I.js} +1 -1
- package/dist-web/assets/{diagram-5GNKFQAL-DGJd_bsM.js → diagram-5GNKFQAL-DbHN8zOP.js} +1 -1
- package/dist-web/assets/{diagram-KO2AKTUF-YOmj2j9x.js → diagram-KO2AKTUF-2xhIBvDF.js} +1 -1
- package/dist-web/assets/{diagram-LMA3HP47-CVUXcS-1.js → diagram-LMA3HP47-BZSMb8wm.js} +1 -1
- package/dist-web/assets/{diagram-OG6HWLK6-DtmRK7uL.js → diagram-OG6HWLK6-DZxBiAwf.js} +1 -1
- package/dist-web/assets/{erDiagram-TEJ5UH35-DOUgdDj3.js → erDiagram-TEJ5UH35-DOc66mWB.js} +1 -1
- package/dist-web/assets/{flowDiagram-I6XJVG4X-DbuqdHpO.js → flowDiagram-I6XJVG4X-rEwEgwKf.js} +1 -1
- package/dist-web/assets/{ganttDiagram-6RSMTGT7-B7ZZ2LbX.js → ganttDiagram-6RSMTGT7-BAStzA-L.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-L-d2snvu.js → gitGraphDiagram-PVQCEYII-C0gTHRDa.js} +1 -1
- package/dist-web/assets/index-CGjoHidG.js +169 -0
- package/dist-web/assets/{index-IfoU0lmL.js → index-CNj2Qj_m.js} +1 -1
- package/dist-web/assets/{index-BU3TMxqs.js → index-DBUy3IfQ.js} +1 -1
- package/dist-web/assets/index-DROsk748.css +1 -0
- package/dist-web/assets/{infoDiagram-5YYISTIA-DJImDLu-.js → infoDiagram-5YYISTIA-Dh2D2DOL.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-BHk3O3EA.js → ishikawaDiagram-YF4QCWOH-4Fb9ugBL.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-BuU4sInb.js → journeyDiagram-JHISSGLW-BBjMcjNc.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-CtzGaGIa.js → kanban-definition-UN3LZRKU-eyj4aSf_.js} +1 -1
- package/dist-web/assets/{linear-BdRfGnlQ.js → linear-KJUWAP7h.js} +1 -1
- package/dist-web/assets/{mermaid.core-DFkZP_6I.js → mermaid.core-B9tzk4XH.js} +4 -4
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-07Y54l5p.js → mindmap-definition-RKZ34NQL-pTCX9_8k.js} +1 -1
- package/dist-web/assets/{pieDiagram-4H26LBE5-CqxqIeCc.js → pieDiagram-4H26LBE5-CV1GWPlT.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-DW_GPUMX.js → quadrantDiagram-W4KKPZXB-C60DVKh9.js} +1 -1
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-Btmdymfp.js → requirementDiagram-4Y6WPE33-D5GCyDny.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-5OEKKPKP-DmHixIVQ.js → sankeyDiagram-5OEKKPKP-L_jgOwN_.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-3UESZ5HK-G4uNNg00.js → sequenceDiagram-3UESZ5HK-ek4VA0bX.js} +1 -1
- package/dist-web/assets/{stateDiagram-AJRCARHV-DQpHeYYT.js → stateDiagram-AJRCARHV-DaTz-gXI.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-CgQxtWKp.js +1 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-Dj8GHpUR.js → timeline-definition-PNZ67QCA-BSZIQpRw.js} +1 -1
- package/dist-web/assets/{vennDiagram-CIIHVFJN-BfDQlVRY.js → vennDiagram-CIIHVFJN-0qDOzqt8.js} +1 -1
- package/dist-web/assets/{wardley-L42UT6IY-CNXhMfST.js → wardley-L42UT6IY-BOcRObI0.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-CfsAcXpz.js → wardleyDiagram-YWT4CUSO-KyyBf4a6.js} +1 -1
- package/dist-web/assets/{xychartDiagram-2RQKCTM6-CPA5hSTp.js → xychartDiagram-2RQKCTM6-SCVN95Cn.js} +1 -1
- package/dist-web/index.html +2 -2
- package/package.json +3 -1
- package/templates/harness/skills/st-create-plan/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-create-plan/scripts/get-next-plan-id.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/check-phase-readiness.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/create-feature-branch.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/dispatch-task-execution.cjs +66 -61
- package/templates/harness/skills/st-execute-blueprint/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-execute-blueprint/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-execute-task/scripts/check-task-dependencies.cjs +1 -1
- package/templates/harness/skills/st-execute-task/scripts/dispatch-task-execution.cjs +66 -61
- package/templates/harness/skills/st-execute-task/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-execute-task/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/SKILL.md +41 -4
- package/templates/harness/skills/st-full-workflow/scripts/check-phase-readiness.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/create-feature-branch.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/dispatch-task-execution.cjs +66 -61
- package/templates/harness/skills/st-full-workflow/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/get-next-plan-id.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/get-next-task-id.cjs +1 -1
- package/templates/harness/skills/st-full-workflow/scripts/route-task-execution.cjs +6575 -0
- package/templates/harness/skills/st-full-workflow/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-generate-tasks/SKILL.md +44 -3
- package/templates/harness/skills/st-generate-tasks/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-generate-tasks/scripts/get-next-task-id.cjs +1 -1
- package/templates/harness/skills/st-generate-tasks/scripts/route-task-execution.cjs +6575 -0
- package/templates/harness/skills/st-generate-tasks/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/harness/skills/st-refine-plan/scripts/find-strikethroo-root.cjs +1 -1
- package/templates/harness/skills/st-refine-plan/scripts/validate-plan-blueprint.cjs +1 -1
- package/templates/strikethroo/config/config.yaml +23 -0
- package/templates/strikethroo/config/hooks/TASK_EXECUTION_ROUTING.md +29 -0
- package/dist-web/assets/channel-BOHLeYWs.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-DnCGOL-L.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-DnCGOL-L.js +0 -1
- package/dist-web/assets/index-BJUf2P-C.css +0 -1
- package/dist-web/assets/index-DQQ5O8Wf.js +0 -125
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-DHbVjicl.js +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Agent Harness Adapter
|
|
3
|
+
*
|
|
4
|
+
* Every harness Strikethroo currently supports installs the same way: copy the
|
|
5
|
+
* agent templates from `templates/harness/agents/`, converting to Codex's TOML
|
|
6
|
+
* format where required. Rather than hand-write six near-identical adapters, a
|
|
7
|
+
* single factory produces one per harness, parameterized by the existing
|
|
8
|
+
* `getAgentFormat` descriptor.
|
|
9
|
+
*
|
|
10
|
+
* Importing this module has the side effect of registering an adapter for every
|
|
11
|
+
* entry in `SUPPORTED_HARNESSES`.
|
|
12
|
+
*/
|
|
13
|
+
import { Harness } from '../types';
|
|
14
|
+
import { HarnessAdapter } from './registry';
|
|
15
|
+
/**
|
|
16
|
+
* Build a {@link HarnessAdapter} for a harness whose install mechanism is the
|
|
17
|
+
* shared agent-file copy.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createAgentAdapter(id: Harness): HarnessAdapter;
|
|
20
|
+
//# sourceMappingURL=agent-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-adapter.d.ts","sourceRoot":"","sources":["../../src/harnesses/agent-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAuB,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,cAAc,EAA0B,MAAM,YAAY,CAAC;AAoDpE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,cAAc,CAa9D"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared Agent Harness Adapter
|
|
4
|
+
*
|
|
5
|
+
* Every harness Strikethroo currently supports installs the same way: copy the
|
|
6
|
+
* agent templates from `templates/harness/agents/`, converting to Codex's TOML
|
|
7
|
+
* format where required. Rather than hand-write six near-identical adapters, a
|
|
8
|
+
* single factory produces one per harness, parameterized by the existing
|
|
9
|
+
* `getAgentFormat` descriptor.
|
|
10
|
+
*
|
|
11
|
+
* Importing this module has the side effect of registering an adapter for every
|
|
12
|
+
* entry in `SUPPORTED_HARNESSES`.
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.createAgentAdapter = createAgentAdapter;
|
|
49
|
+
const fs = __importStar(require("fs-extra"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const types_1 = require("../types");
|
|
52
|
+
const utils_1 = require("../utils");
|
|
53
|
+
const registry_1 = require("./registry");
|
|
54
|
+
/**
|
|
55
|
+
* Absolute path to the shared agent templates directory.
|
|
56
|
+
*
|
|
57
|
+
* Resolved relative to this compiled module: `dist/harnesses/agent-adapter.js`
|
|
58
|
+
* sits two levels below the package root that holds `templates/`.
|
|
59
|
+
*/
|
|
60
|
+
function getAgentsTemplateDir() {
|
|
61
|
+
return path.join(__dirname, '..', '..', 'templates', 'harness', 'agents');
|
|
62
|
+
}
|
|
63
|
+
/** Resolve the target agent directory for a harness under a project root. */
|
|
64
|
+
function agentDirFor(harness, projectRoot) {
|
|
65
|
+
return path.resolve(projectRoot || '.', (0, utils_1.getAgentFormat)(harness).directory);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Write the agent files for a harness under `projectRoot`, overwriting any
|
|
69
|
+
* existing files. Returns the absolute paths written. Shared by `install` and
|
|
70
|
+
* `update` — the operation is idempotent.
|
|
71
|
+
*/
|
|
72
|
+
async function writeAgentFiles(harness, projectRoot) {
|
|
73
|
+
const sourceAgentsDir = getAgentsTemplateDir();
|
|
74
|
+
if (!(await fs.pathExists(sourceAgentsDir))) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const agentFiles = (await fs.readdir(sourceAgentsDir)).filter(f => f.endsWith('.md'));
|
|
78
|
+
const formatInfo = (0, utils_1.getAgentFormat)(harness);
|
|
79
|
+
const targetDir = agentDirFor(harness, projectRoot);
|
|
80
|
+
await fs.ensureDir(targetDir);
|
|
81
|
+
const writtenFiles = [];
|
|
82
|
+
for (const agentFile of agentFiles) {
|
|
83
|
+
const sourcePath = path.join(sourceAgentsDir, agentFile);
|
|
84
|
+
const content = await fs.readFile(sourcePath, 'utf-8');
|
|
85
|
+
const baseName = path.basename(agentFile, '.md');
|
|
86
|
+
const targetPath = path.join(targetDir, baseName + formatInfo.extension);
|
|
87
|
+
if (formatInfo.format === 'toml') {
|
|
88
|
+
await fs.writeFile(targetPath, (0, utils_1.convertAgentMdToToml)(content), 'utf-8');
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
await fs.writeFile(targetPath, content, 'utf-8');
|
|
92
|
+
}
|
|
93
|
+
writtenFiles.push(targetPath);
|
|
94
|
+
}
|
|
95
|
+
return writtenFiles;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build a {@link HarnessAdapter} for a harness whose install mechanism is the
|
|
99
|
+
* shared agent-file copy.
|
|
100
|
+
*/
|
|
101
|
+
function createAgentAdapter(id) {
|
|
102
|
+
return {
|
|
103
|
+
id,
|
|
104
|
+
async detect(projectRoot) {
|
|
105
|
+
return fs.pathExists(agentDirFor(id, projectRoot));
|
|
106
|
+
},
|
|
107
|
+
async install(projectRoot) {
|
|
108
|
+
return writeAgentFiles(id, projectRoot);
|
|
109
|
+
},
|
|
110
|
+
async update(projectRoot) {
|
|
111
|
+
return writeAgentFiles(id, projectRoot);
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Register an adapter for every supported harness.
|
|
116
|
+
for (const harness of types_1.SUPPORTED_HARNESSES) {
|
|
117
|
+
(0, registry_1.registerHarnessAdapter)(createAgentAdapter(harness));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=agent-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../src/harnesses/agent-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness Registry Barrel
|
|
3
|
+
*
|
|
4
|
+
* Importing this module guarantees the registry is populated: it pulls in the
|
|
5
|
+
* agent adapter module for its registration side effect, then re-exports the
|
|
6
|
+
* registry surface. Consumers should import from here, not from the individual
|
|
7
|
+
* modules, so the adapters are always registered before use.
|
|
8
|
+
*/
|
|
9
|
+
import './agent-adapter';
|
|
10
|
+
export { HarnessRegistry, registerHarnessAdapter } from './registry';
|
|
11
|
+
export type { HarnessAdapter } from './registry';
|
|
12
|
+
export { createAgentAdapter } from './agent-adapter';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harnesses/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Harness Registry Barrel
|
|
4
|
+
*
|
|
5
|
+
* Importing this module guarantees the registry is populated: it pulls in the
|
|
6
|
+
* agent adapter module for its registration side effect, then re-exports the
|
|
7
|
+
* registry surface. Consumers should import from here, not from the individual
|
|
8
|
+
* modules, so the adapters are always registered before use.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.createAgentAdapter = exports.registerHarnessAdapter = exports.HarnessRegistry = void 0;
|
|
12
|
+
require("./agent-adapter");
|
|
13
|
+
var registry_1 = require("./registry");
|
|
14
|
+
Object.defineProperty(exports, "HarnessRegistry", { enumerable: true, get: function () { return registry_1.HarnessRegistry; } });
|
|
15
|
+
Object.defineProperty(exports, "registerHarnessAdapter", { enumerable: true, get: function () { return registry_1.registerHarnessAdapter; } });
|
|
16
|
+
var agent_adapter_1 = require("./agent-adapter");
|
|
17
|
+
Object.defineProperty(exports, "createAgentAdapter", { enumerable: true, get: function () { return agent_adapter_1.createAgentAdapter; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harnesses/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,2BAAyB;AAEzB,uCAAqE;AAA5D,2GAAA,eAAe,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AAEhD,iDAAqD;AAA5C,mHAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness Adapter Registry
|
|
3
|
+
*
|
|
4
|
+
* A minimal, single extension point describing how each supported harness is
|
|
5
|
+
* detected, installed, and updated. `init` iterates the registry instead of
|
|
6
|
+
* branching over harnesses.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately small: no profiles, no delivery-strategy abstraction, and no
|
|
9
|
+
* per-tool config schema — just "one place to register a harness".
|
|
10
|
+
*/
|
|
11
|
+
import { Harness } from '../types';
|
|
12
|
+
/**
|
|
13
|
+
* Describes the lifecycle of a single harness.
|
|
14
|
+
*
|
|
15
|
+
* All paths are resolved against `projectRoot`. `install` and `update` return
|
|
16
|
+
* the absolute paths of the files they wrote.
|
|
17
|
+
*/
|
|
18
|
+
export interface HarnessAdapter {
|
|
19
|
+
/** The harness this adapter manages. */
|
|
20
|
+
id: Harness;
|
|
21
|
+
/** Resolve to `true` when the harness is already present under `projectRoot`. */
|
|
22
|
+
detect(projectRoot: string): Promise<boolean>;
|
|
23
|
+
/** Create the harness's files under `projectRoot`; resolve to the paths written. */
|
|
24
|
+
install(projectRoot: string): Promise<string[]>;
|
|
25
|
+
/** Re-apply the harness's files (idempotent); resolve to the paths written. */
|
|
26
|
+
update(projectRoot: string): Promise<string[]>;
|
|
27
|
+
}
|
|
28
|
+
/** The single registry of harness adapters, keyed by harness id. */
|
|
29
|
+
export declare const HarnessRegistry: Map<"claude" | "codex" | "cursor" | "gemini" | "copilot" | "opencode", HarnessAdapter>;
|
|
30
|
+
/**
|
|
31
|
+
* Register an adapter, keyed by its `id`. Later registrations for the same id
|
|
32
|
+
* replace earlier ones.
|
|
33
|
+
*/
|
|
34
|
+
export declare function registerHarnessAdapter(adapter: HarnessAdapter): void;
|
|
35
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/harnesses/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,iFAAiF;IACjF,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,oFAAoF;IACpF,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,+EAA+E;IAC/E,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChD;AAED,oEAAoE;AACpE,eAAO,MAAM,eAAe,wFAAqC,CAAC;AAElE;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAEpE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Harness Adapter Registry
|
|
4
|
+
*
|
|
5
|
+
* A minimal, single extension point describing how each supported harness is
|
|
6
|
+
* detected, installed, and updated. `init` iterates the registry instead of
|
|
7
|
+
* branching over harnesses.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately small: no profiles, no delivery-strategy abstraction, and no
|
|
10
|
+
* per-tool config schema — just "one place to register a harness".
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.HarnessRegistry = void 0;
|
|
14
|
+
exports.registerHarnessAdapter = registerHarnessAdapter;
|
|
15
|
+
/** The single registry of harness adapters, keyed by harness id. */
|
|
16
|
+
exports.HarnessRegistry = new Map();
|
|
17
|
+
/**
|
|
18
|
+
* Register an adapter, keyed by its `id`. Later registrations for the same id
|
|
19
|
+
* replace earlier ones.
|
|
20
|
+
*/
|
|
21
|
+
function registerHarnessAdapter(adapter) {
|
|
22
|
+
exports.HarnessRegistry.set(adapter.id, adapter);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/harnesses/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA4BH,wDAEC;AATD,oEAAoE;AACvD,QAAA,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;AAElE;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,OAAuB;IAC5D,uBAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAoC,MAAM,SAAS,CAAC;AA6EvF;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA8FvE;AAuID;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE"}
|
package/dist/index.js
CHANGED
|
@@ -51,6 +51,7 @@ const utils_1 = require("./utils");
|
|
|
51
51
|
const metadata_1 = require("./metadata");
|
|
52
52
|
const conflict_detector_1 = require("./conflict-detector");
|
|
53
53
|
const prompts_1 = require("./prompts");
|
|
54
|
+
const harnesses_1 = require("./harnesses");
|
|
54
55
|
// Visual formatting constants
|
|
55
56
|
const TERM_WIDTH = 80;
|
|
56
57
|
const DIVIDER = '─'.repeat(TERM_WIDTH);
|
|
@@ -142,11 +143,15 @@ async function init(options) {
|
|
|
142
143
|
// Copy common templates to .ai/strikethroo with conflict detection
|
|
143
144
|
console.log(` ${chalk_1.default.green('✓')} Copying common template files`);
|
|
144
145
|
await copyCommonTemplates(baseDir, options.force || false);
|
|
145
|
-
// Create harness-specific directories and copy templates
|
|
146
|
+
// Create harness-specific directories and copy templates via the registry
|
|
146
147
|
const allCreatedAgentFiles = new Map();
|
|
147
148
|
for (const harness of harnesses) {
|
|
148
149
|
console.log(` ${chalk_1.default.green('✓')} Setting up ${harness} harness configuration`);
|
|
149
|
-
const
|
|
150
|
+
const adapter = harnesses_1.HarnessRegistry.get(harness);
|
|
151
|
+
if (!adapter) {
|
|
152
|
+
throw new Error(`No registered harness adapter for: ${harness}`);
|
|
153
|
+
}
|
|
154
|
+
const created = await adapter.install(baseDir);
|
|
150
155
|
if (created.length > 0) {
|
|
151
156
|
allCreatedAgentFiles.set(harness, created);
|
|
152
157
|
}
|
|
@@ -291,32 +296,6 @@ async function applyResolutions(sourceDir, destDir, resolutions) {
|
|
|
291
296
|
// If 'keep', do nothing - keep user's file
|
|
292
297
|
}
|
|
293
298
|
}
|
|
294
|
-
async function createHarnessStructure(harness, baseDir) {
|
|
295
|
-
const sourceAgentsDir = getTemplatePath(path.join('harness', 'agents'));
|
|
296
|
-
const createdFiles = [];
|
|
297
|
-
if (!(await exists(sourceAgentsDir))) {
|
|
298
|
-
return createdFiles;
|
|
299
|
-
}
|
|
300
|
-
const agentFiles = (await fs.readdir(sourceAgentsDir)).filter(f => f.endsWith('.md'));
|
|
301
|
-
const formatInfo = (0, utils_1.getAgentFormat)(harness);
|
|
302
|
-
const targetDir = resolvePath(baseDir, formatInfo.directory);
|
|
303
|
-
await fs.ensureDir(targetDir);
|
|
304
|
-
for (const agentFile of agentFiles) {
|
|
305
|
-
const sourcePath = path.join(sourceAgentsDir, agentFile);
|
|
306
|
-
const content = await fs.readFile(sourcePath, 'utf-8');
|
|
307
|
-
const baseName = path.basename(agentFile, '.md');
|
|
308
|
-
const targetName = baseName + formatInfo.extension;
|
|
309
|
-
const targetPath = path.join(targetDir, targetName);
|
|
310
|
-
if (formatInfo.format === 'toml') {
|
|
311
|
-
await fs.writeFile(targetPath, (0, utils_1.convertAgentMdToToml)(content), 'utf-8');
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
await fs.writeFile(targetPath, content, 'utf-8');
|
|
315
|
-
}
|
|
316
|
-
createdFiles.push(targetPath);
|
|
317
|
-
}
|
|
318
|
-
return createdFiles;
|
|
319
|
-
}
|
|
320
299
|
/**
|
|
321
300
|
* Check if a directory already has Strikethroo initialized
|
|
322
301
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { InitMetadata } from './types';
|
|
|
13
13
|
* Skill bundles read this constant at build time to enforce a runtime
|
|
14
14
|
* schema-mismatch check against the workspace they're invoked against.
|
|
15
15
|
*/
|
|
16
|
-
export declare const CURRENT_WORKSPACE_SCHEMA_VERSION =
|
|
16
|
+
export declare const CURRENT_WORKSPACE_SCHEMA_VERSION = 4;
|
|
17
17
|
/**
|
|
18
18
|
* Calculate SHA-256 hash of a file
|
|
19
19
|
* @param filePath - Absolute path to the file
|
package/dist/metadata.js
CHANGED
|
@@ -55,7 +55,7 @@ const path = __importStar(require("path"));
|
|
|
55
55
|
* Skill bundles read this constant at build time to enforce a runtime
|
|
56
56
|
* schema-mismatch check against the workspace they're invoked against.
|
|
57
57
|
*/
|
|
58
|
-
exports.CURRENT_WORKSPACE_SCHEMA_VERSION =
|
|
58
|
+
exports.CURRENT_WORKSPACE_SCHEMA_VERSION = 4;
|
|
59
59
|
/**
|
|
60
60
|
* Calculate SHA-256 hash of a file
|
|
61
61
|
* @param filePath - Absolute path to the file
|
|
@@ -7,14 +7,16 @@
|
|
|
7
7
|
* module is that mutation's authoritative guard: a single, HTTP-free function
|
|
8
8
|
* the route handler and the tests both call.
|
|
9
9
|
*
|
|
10
|
-
* It enforces a strict allowlist: the `kind` must be `hooks` or `templates
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
10
|
+
* It enforces a strict allowlist: the `kind` must be `hooks` or `templates`
|
|
11
|
+
* (resolving to a single flat filename `config/<kind>/<id>.md` that stays
|
|
12
|
+
* inside the intended directory — no path separators, no `..`, no traversal),
|
|
13
|
+
* or the special `workspace` kind whose only valid `id` is `config`, mapping
|
|
14
|
+
* to the workspace's structured configuration file `config/config.yaml` (the
|
|
15
|
+
* file behind the Customize section's Config form). In every case the target
|
|
16
|
+
* file must ALREADY exist (this never creates a new file). When the guards
|
|
17
|
+
* pass it overwrites the file content verbatim. It never deletes or renames.
|
|
18
|
+
* Expected guard failures are returned as a typed result, not thrown; only an
|
|
19
|
+
* unexpected filesystem error surfaces as `fs-error`. Node built-ins only.
|
|
18
20
|
*/
|
|
19
21
|
/**
|
|
20
22
|
* Outcome of a {@link writeConfigFile} call. A discriminated union mirroring the
|
|
@@ -29,10 +31,11 @@ export type ConfigWriteResult = {
|
|
|
29
31
|
message: string;
|
|
30
32
|
};
|
|
31
33
|
/**
|
|
32
|
-
* Overwrites
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
34
|
+
* Overwrites an existing config file under `root` (the absolute
|
|
35
|
+
* `.ai/strikethroo` directory) with `content`, after validating the strict
|
|
36
|
+
* allowlist: `config/<kind>/<id>.md` for the `hooks`/`templates` kinds, or
|
|
37
|
+
* `config/config.yaml` for `workspace`/`config`. Returns a typed result;
|
|
38
|
+
* performs zero filesystem changes on any guard failure.
|
|
36
39
|
*/
|
|
37
40
|
export declare const writeConfigFile: (root: string, kind: string, id: string, content: string) => Promise<ConfigWriteResult>;
|
|
38
41
|
//# sourceMappingURL=config-write.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-write.d.ts","sourceRoot":"","sources":["../../src/serve/config-write.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config-write.d.ts","sourceRoot":"","sources":["../../src/serve/config-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAKN;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,IAAI,MAAM,EACV,SAAS,MAAM,KACd,OAAO,CAAC,iBAAiB,CA6C3B,CAAC"}
|
|
@@ -8,14 +8,16 @@
|
|
|
8
8
|
* module is that mutation's authoritative guard: a single, HTTP-free function
|
|
9
9
|
* the route handler and the tests both call.
|
|
10
10
|
*
|
|
11
|
-
* It enforces a strict allowlist: the `kind` must be `hooks` or `templates
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
11
|
+
* It enforces a strict allowlist: the `kind` must be `hooks` or `templates`
|
|
12
|
+
* (resolving to a single flat filename `config/<kind>/<id>.md` that stays
|
|
13
|
+
* inside the intended directory — no path separators, no `..`, no traversal),
|
|
14
|
+
* or the special `workspace` kind whose only valid `id` is `config`, mapping
|
|
15
|
+
* to the workspace's structured configuration file `config/config.yaml` (the
|
|
16
|
+
* file behind the Customize section's Config form). In every case the target
|
|
17
|
+
* file must ALREADY exist (this never creates a new file). When the guards
|
|
18
|
+
* pass it overwrites the file content verbatim. It never deletes or renames.
|
|
19
|
+
* Expected guard failures are returned as a typed result, not thrown; only an
|
|
20
|
+
* unexpected filesystem error surfaces as `fs-error`. Node built-ins only.
|
|
19
21
|
*/
|
|
20
22
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
23
|
if (k2 === undefined) k2 = k;
|
|
@@ -54,29 +56,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
54
56
|
exports.writeConfigFile = void 0;
|
|
55
57
|
const fs = __importStar(require("fs"));
|
|
56
58
|
const path = __importStar(require("path"));
|
|
57
|
-
/** The
|
|
59
|
+
/** The directory-backed config kinds that may be written. */
|
|
58
60
|
const KINDS = new Set(['hooks', 'templates']);
|
|
59
61
|
/**
|
|
60
|
-
* Overwrites
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
62
|
+
* Overwrites an existing config file under `root` (the absolute
|
|
63
|
+
* `.ai/strikethroo` directory) with `content`, after validating the strict
|
|
64
|
+
* allowlist: `config/<kind>/<id>.md` for the `hooks`/`templates` kinds, or
|
|
65
|
+
* `config/config.yaml` for `workspace`/`config`. Returns a typed result;
|
|
66
|
+
* performs zero filesystem changes on any guard failure.
|
|
64
67
|
*/
|
|
65
68
|
const writeConfigFile = async (root, kind, id, content) => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
let target;
|
|
70
|
+
if (kind === 'workspace') {
|
|
71
|
+
// The workspace's single structured config file. No id namespace exists
|
|
72
|
+
// here — `config` is the only valid id, fixed to config/config.yaml.
|
|
73
|
+
if (id !== 'config') {
|
|
74
|
+
return { ok: false, reason: 'invalid-id', message: 'Invalid config file id.' };
|
|
75
|
+
}
|
|
76
|
+
target = path.resolve(root, 'config', 'config.yaml');
|
|
72
77
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
else {
|
|
79
|
+
if (!KINDS.has(kind)) {
|
|
80
|
+
return { ok: false, reason: 'invalid-kind', message: `Unknown config kind: ${kind}.` };
|
|
81
|
+
}
|
|
82
|
+
// Reject obvious traversal/nesting attempts early before any resolution.
|
|
83
|
+
if (id === '' || id.includes('/') || id.includes('\\') || id.includes('..')) {
|
|
84
|
+
return { ok: false, reason: 'invalid-id', message: 'Invalid config file id.' };
|
|
85
|
+
}
|
|
86
|
+
const dir = path.resolve(root, 'config', kind);
|
|
87
|
+
target = path.resolve(dir, `${id}.md`);
|
|
88
|
+
// Containment: the resolved target must be a direct, flat child of `dir`.
|
|
89
|
+
const withinDir = target.startsWith(dir + path.sep);
|
|
90
|
+
const isFlatChild = path.dirname(target) === dir;
|
|
91
|
+
if (!withinDir || !isFlatChild) {
|
|
92
|
+
return { ok: false, reason: 'invalid-id', message: 'Invalid config file id.' };
|
|
93
|
+
}
|
|
80
94
|
}
|
|
81
95
|
try {
|
|
82
96
|
const stat = await fs.promises.stat(target);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-write.js","sourceRoot":"","sources":["../../src/serve/config-write.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"config-write.js","sourceRoot":"","sources":["../../src/serve/config-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,17 +60,19 @@ export interface ConfigFile {
|
|
|
60
60
|
/** File content. */
|
|
61
61
|
content: string;
|
|
62
62
|
}
|
|
63
|
-
/** The customizable config slice (hooks + templates). */
|
|
63
|
+
/** The customizable config slice (hooks + templates + workspace config.yaml). */
|
|
64
64
|
export interface WorkspaceConfig {
|
|
65
65
|
hooks: ConfigFile[];
|
|
66
66
|
templates: ConfigFile[];
|
|
67
|
+
/** The structured workspace configuration `config/config.yaml`, if present. */
|
|
68
|
+
workspace: ConfigFile | null;
|
|
67
69
|
}
|
|
68
70
|
/** The complete workspace model. */
|
|
69
71
|
export interface WorkspaceModel {
|
|
70
72
|
plans: PlanSummary[];
|
|
71
73
|
config: WorkspaceConfig;
|
|
72
74
|
}
|
|
73
|
-
/** Returns the config slice: hooks and
|
|
75
|
+
/** Returns the config slice: hooks, templates, and config.yaml under `config/`. */
|
|
74
76
|
export declare const getConfig: (root?: string) => WorkspaceConfig;
|
|
75
77
|
/**
|
|
76
78
|
* Returns the full detail for a single plan by its composite directory `name`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-model.d.ts","sourceRoot":"","sources":["../../src/serve/workspace-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAKL,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7F,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnF,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,+EAA+E;IAC/E,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,
|
|
1
|
+
{"version":3,"file":"workspace-model.d.ts","sourceRoot":"","sources":["../../src/serve/workspace-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAKL,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7F,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnF,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,+EAA+E;IAC/E,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,+EAA+E;IAC/E,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAED,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAgHD,mFAAmF;AACnF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,eAOzC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,UAAU,GAAG,SAKnF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,cAOjD,CAAC"}
|
|
@@ -147,12 +147,25 @@ const enumerateConfigDir = (root, dir) => {
|
|
|
147
147
|
};
|
|
148
148
|
});
|
|
149
149
|
};
|
|
150
|
-
/**
|
|
150
|
+
/** Reads `config/config.yaml` into a ConfigFile, or null when absent. */
|
|
151
|
+
const readWorkspaceConfigFile = (root) => {
|
|
152
|
+
const file = path.join(root, 'config', 'config.yaml');
|
|
153
|
+
let content;
|
|
154
|
+
try {
|
|
155
|
+
content = fs.readFileSync(file, 'utf8');
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return { id: 'config', file, relPath: path.relative(root, file), content };
|
|
161
|
+
};
|
|
162
|
+
/** Returns the config slice: hooks, templates, and config.yaml under `config/`. */
|
|
151
163
|
const getConfig = (root) => {
|
|
152
164
|
const resolved = resolveRoot(root);
|
|
153
165
|
return {
|
|
154
166
|
hooks: enumerateConfigDir(resolved, path.join(resolved, 'config', 'hooks')),
|
|
155
167
|
templates: enumerateConfigDir(resolved, path.join(resolved, 'config', 'templates')),
|
|
168
|
+
workspace: readWorkspaceConfigFile(resolved),
|
|
156
169
|
};
|
|
157
170
|
};
|
|
158
171
|
exports.getConfig = getConfig;
|