strikethroo 3.11.0 → 3.13.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/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-CBaeBlTE.js → arc-BgbdqiWZ.js} +1 -1
- package/dist-web/assets/{architectureDiagram-3BPJPVTR-Bwk6TYrL.js → architectureDiagram-3BPJPVTR-C11ra1og.js} +1 -1
- package/dist-web/assets/{blockDiagram-GPEHLZMM-pwKL2jeu.js → blockDiagram-GPEHLZMM-sneTcKTc.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-CawEdYlw.js → c4Diagram-AAUBKEIU-rcZrBkXz.js} +1 -1
- package/dist-web/assets/channel-DhL4ovjN.js +1 -0
- package/dist-web/assets/{chunk-2J33WTMH-BHfiG9yq.js → chunk-2J33WTMH-BMATkNbT.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-B-0m0Ow-.js → chunk-4BX2VUAB-BSz2O6Ft.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-qzVN1QTX.js → chunk-55IACEB6-MumFzZkZ.js} +1 -1
- package/dist-web/assets/{chunk-727SXJPM-CyPamzvq.js → chunk-727SXJPM-4dQkVcIM.js} +1 -1
- package/dist-web/assets/{chunk-AQP2D5EJ-_b9DSvYH.js → chunk-AQP2D5EJ-v5TVK_fa.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-CXBpEyeM.js → chunk-FMBD7UC4-BArw-yD6.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-PE_EiT_2.js → chunk-ND2GUHAM-jmMu7-6G.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-Dff5pQVs.js → chunk-QZHKN3VN-CoFZRE9S.js} +1 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-DNoS6CPC.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-DNoS6CPC.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-CC2lVtJy.js → cose-bilkent-S5V4N54A-DfE6Yc6V.js} +1 -1
- package/dist-web/assets/{dagre-BM42HDAG-Ba3wwaEk.js → dagre-BM42HDAG-GLQxrEea.js} +1 -1
- package/dist-web/assets/{diagram-2AECGRRQ-D-eNzKxw.js → diagram-2AECGRRQ-CPF-j3jI.js} +1 -1
- package/dist-web/assets/{diagram-5GNKFQAL-B1LKlghw.js → diagram-5GNKFQAL-DX8N0bhf.js} +1 -1
- package/dist-web/assets/{diagram-KO2AKTUF-D8-5tjnC.js → diagram-KO2AKTUF-D4wM_Xrg.js} +1 -1
- package/dist-web/assets/{diagram-LMA3HP47-bS2_7Udo.js → diagram-LMA3HP47-uVt4DExc.js} +1 -1
- package/dist-web/assets/{diagram-OG6HWLK6-B4YtdIcD.js → diagram-OG6HWLK6-DzfLImY-.js} +1 -1
- package/dist-web/assets/{erDiagram-TEJ5UH35-PitIEuaM.js → erDiagram-TEJ5UH35-BDOB8bJk.js} +1 -1
- package/dist-web/assets/{flowDiagram-I6XJVG4X-DKmhqOBa.js → flowDiagram-I6XJVG4X-DsofFC7H.js} +1 -1
- package/dist-web/assets/{ganttDiagram-6RSMTGT7-HCsmsP2b.js → ganttDiagram-6RSMTGT7-DYCTEBUe.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-QbqTXLSl.js → gitGraphDiagram-PVQCEYII-B373xEyt.js} +1 -1
- package/dist-web/assets/{index-DFmqrXlR.js → index-BrXKePvp.js} +1 -1
- package/dist-web/assets/{index-CVX3hi3z.js → index-BxjDhqax.js} +1 -1
- package/dist-web/assets/index-CvZkEGgs.js +169 -0
- package/dist-web/assets/index-DROsk748.css +1 -0
- package/dist-web/assets/{infoDiagram-5YYISTIA-3To2TWNT.js → infoDiagram-5YYISTIA-BTdfbRG3.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-BetXO7yZ.js → ishikawaDiagram-YF4QCWOH-By0jpBpG.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-CoulYVgQ.js → journeyDiagram-JHISSGLW-CN4ddpRF.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-D9B13k6u.js → kanban-definition-UN3LZRKU-CSzp97xY.js} +1 -1
- package/dist-web/assets/{linear-D6zkWX3u.js → linear-Bo45a3LX.js} +1 -1
- package/dist-web/assets/{mermaid.core-DFcjGU0T.js → mermaid.core-fEMv_ThD.js} +4 -4
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-B-twMs7e.js → mindmap-definition-RKZ34NQL-lcelYnaU.js} +1 -1
- package/dist-web/assets/{pieDiagram-4H26LBE5-DKX-iOJJ.js → pieDiagram-4H26LBE5-DqrHeOSK.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-DQpSSQxM.js → quadrantDiagram-W4KKPZXB-lKQsolLl.js} +1 -1
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-DnIoIO9f.js → requirementDiagram-4Y6WPE33-D3GerVWN.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-5OEKKPKP-BZwTjcsB.js → sankeyDiagram-5OEKKPKP-Dn0Rn4jy.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-3UESZ5HK-ClRdeH1n.js → sequenceDiagram-3UESZ5HK-BMZb9HkP.js} +1 -1
- package/dist-web/assets/{stateDiagram-AJRCARHV-DyGtF4aB.js → stateDiagram-AJRCARHV-mHX_sHdp.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-BwuUXdDR.js +1 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-CAhtHKbz.js → timeline-definition-PNZ67QCA-CrVF3pNw.js} +1 -1
- package/dist-web/assets/{vennDiagram-CIIHVFJN-D8cuqu1b.js → vennDiagram-CIIHVFJN-Dfw6e8s7.js} +1 -1
- package/dist-web/assets/{wardley-L42UT6IY-BevJmKqU.js → wardley-L42UT6IY-HlLGXiR6.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-DZrGhjB4.js → wardleyDiagram-YWT4CUSO-DPL-Ch-8.js} +1 -1
- package/dist-web/assets/{xychartDiagram-2RQKCTM6-DczsJUEl.js → xychartDiagram-2RQKCTM6-Cd6IimVj.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 +6682 -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 +6682 -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 +25 -0
- package/templates/strikethroo/config/hooks/TASK_EXECUTION_ROUTING.md +29 -0
- package/dist-web/assets/channel-Bvh1akBB.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-0GgRFVnx.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-0GgRFVnx.js +0 -1
- package/dist-web/assets/index-BJUf2P-C.css +0 -1
- package/dist-web/assets/index-PrbhbiSQ.js +0 -125
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-e00NXaxu.js +0 -1
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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-model.js","sourceRoot":"","sources":["../../src/serve/workspace-model.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,uDAAmE;AACnE,iEAA2E;AAC3E,yCAMoB;AACpB,6CAA6F;
|
|
1
|
+
{"version":3,"file":"workspace-model.js","sourceRoot":"","sources":["../../src/serve/workspace-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ const path = __importStar(require("path"));
|
|
|
40
40
|
// integer literal. In direct TS execution (Vitest), the ambient declaration
|
|
41
41
|
// has no runtime value; the `typeof` guard avoids a ReferenceError and falls
|
|
42
42
|
// back to the current schema version used by source-level tests.
|
|
43
|
-
const EXPECTED_SCHEMA = typeof EXPECTED_WORKSPACE_SCHEMA_VERSION !== 'undefined' ? EXPECTED_WORKSPACE_SCHEMA_VERSION :
|
|
43
|
+
const EXPECTED_SCHEMA = typeof EXPECTED_WORKSPACE_SCHEMA_VERSION !== 'undefined' ? EXPECTED_WORKSPACE_SCHEMA_VERSION : 4;
|
|
44
44
|
const isValidStrikethrooRoot = (strikethrooPath) => {
|
|
45
45
|
try {
|
|
46
46
|
if (!fs.existsSync(strikethrooPath))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bk as ln,aN as an,H as k,b7 as w,F as N,ag as un,V as g,bc as tn,b8 as C,aH as _,c as rn,m as o,aF as on,j as sn,d as fn}from"./mermaid.core-
|
|
1
|
+
import{bk as ln,aN as an,H as k,b7 as w,F as N,ag as un,V as g,bc as tn,b8 as C,aH as _,c as rn,m as o,aF as on,j as sn,d as fn}from"./mermaid.core-fEMv_ThD.js";function cn(l){return l.innerRadius}function gn(l){return l.outerRadius}function yn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,j,F,v,A,O,a){var q=j-l,i=F-h,n=O-v,d=a-A,u=d*q-n*i;if(!(u*u<g))return u=(n*(h-A)-d*(l-v))/u,[l+u*q,h+u*i]}function Q(l,h,j,F,v,A,O){var a=l-j,q=h-F,i=(O?A:-A)/C(a*a+q*q),n=i*q,d=-i*a,u=l+n,s=h+d,f=j+n,c=F+d,S=(u+f)/2,t=(s+c)/2,m=f-u,y=c-s,R=m*m+y*y,T=v-A,P=u*c-f*s,D=(y<0?-1:1)*C(on(0,T*T*R-P*P)),E=(P*y-m*D)/R,I=(-P*m-y*D)/R,b=(P*y+m*D)/R,p=(-P*m+y*D)/R,x=E-S,e=I-t,r=b-S,V=p-t;return x*x+e*e>r*r+V*V&&(E=b,I=p),{cx:E,cy:I,x01:-n,y01:-d,x11:E*(v/T-1),y11:I*(v/T-1)}}function hn(){var l=cn,h=gn,j=N(0),F=null,v=yn,A=dn,O=mn,a=null,q=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,S=rn(c-f),t=c>f;if(a||(a=n=q()),s<u&&(d=s,s=u,u=d),!(s>g))a.moveTo(0,0);else if(S>tn-g)a.moveTo(s*k(f),s*w(f)),a.arc(0,0,s,f,c,!t),u>g&&(a.moveTo(u*k(c),u*w(c)),a.arc(0,0,u,c,f,t));else{var m=f,y=c,R=f,T=c,P=S,D=S,E=O.apply(this,arguments)/2,I=E>g&&(F?+F.apply(this,arguments):C(u*u+s*s)),b=_(rn(s-u)/2,+j.apply(this,arguments)),p=b,x=b,e,r;if(I>g){var V=sn(I/u*w(E)),G=sn(I/s*w(E));(P-=V*2)>g?(V*=t?1:-1,R+=V,T-=V):(P=0,R=T=(f+c)/2),(D-=G*2)>g?(G*=t?1:-1,m+=G,y-=G):(D=0,m=y=(f+c)/2)}var z=s*k(m),B=s*w(m),J=u*k(T),K=u*w(T);if(b>g){var L=s*k(y),M=s*w(y),U=u*k(R),W=u*w(R),H;if(S<an)if(H=pn(z,B,U,W,L,M,J,K)){var X=z-H[0],Y=B-H[1],Z=L-H[0],$=M-H[1],nn=1/w(fn((X*Z+Y*$)/(C(X*X+Y*Y)*C(Z*Z+$*$)))/2),en=C(H[0]*H[0]+H[1]*H[1]);p=_(b,(u-en)/(nn-1)),x=_(b,(s-en)/(nn+1))}else p=x=0}D>g?x>g?(e=Q(U,W,z,B,s,x,t),r=Q(L,M,J,K,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<b?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(z,B),a.arc(0,0,s,m,y,!t)):a.moveTo(z,B),!(u>g)||!(P>g)?a.lineTo(J,K):p>g?(e=Q(J,K,L,M,u,-p,t),r=Q(z,B,U,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<b?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[k(d)*n,w(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:N(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:N(+n),i):h},i.cornerRadius=function(n){return arguments.length?(j=typeof n=="function"?n:N(+n),i):j},i.padRadius=function(n){return arguments.length?(F=n==null?null:typeof n=="function"?n:N(+n),i):F},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:N(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:N(+n),i):A},i.padAngle=function(n){return arguments.length?(O=typeof n=="function"?n:N(+n),i):O},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|