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.
Files changed (97) hide show
  1. package/dist/metadata.d.ts +1 -1
  2. package/dist/metadata.js +1 -1
  3. package/dist/serve/config-write.d.ts +15 -12
  4. package/dist/serve/config-write.d.ts.map +1 -1
  5. package/dist/serve/config-write.js +40 -26
  6. package/dist/serve/config-write.js.map +1 -1
  7. package/dist/serve/workspace-model.d.ts +4 -2
  8. package/dist/serve/workspace-model.d.ts.map +1 -1
  9. package/dist/serve/workspace-model.js +14 -1
  10. package/dist/serve/workspace-model.js.map +1 -1
  11. package/dist/skill-scripts/shared/root.js +1 -1
  12. package/dist-web/assets/{arc-CBaeBlTE.js → arc-BgbdqiWZ.js} +1 -1
  13. package/dist-web/assets/{architectureDiagram-3BPJPVTR-Bwk6TYrL.js → architectureDiagram-3BPJPVTR-C11ra1og.js} +1 -1
  14. package/dist-web/assets/{blockDiagram-GPEHLZMM-pwKL2jeu.js → blockDiagram-GPEHLZMM-sneTcKTc.js} +1 -1
  15. package/dist-web/assets/{c4Diagram-AAUBKEIU-CawEdYlw.js → c4Diagram-AAUBKEIU-rcZrBkXz.js} +1 -1
  16. package/dist-web/assets/channel-DhL4ovjN.js +1 -0
  17. package/dist-web/assets/{chunk-2J33WTMH-BHfiG9yq.js → chunk-2J33WTMH-BMATkNbT.js} +1 -1
  18. package/dist-web/assets/{chunk-4BX2VUAB-B-0m0Ow-.js → chunk-4BX2VUAB-BSz2O6Ft.js} +1 -1
  19. package/dist-web/assets/{chunk-55IACEB6-qzVN1QTX.js → chunk-55IACEB6-MumFzZkZ.js} +1 -1
  20. package/dist-web/assets/{chunk-727SXJPM-CyPamzvq.js → chunk-727SXJPM-4dQkVcIM.js} +1 -1
  21. package/dist-web/assets/{chunk-AQP2D5EJ-_b9DSvYH.js → chunk-AQP2D5EJ-v5TVK_fa.js} +1 -1
  22. package/dist-web/assets/{chunk-FMBD7UC4-CXBpEyeM.js → chunk-FMBD7UC4-BArw-yD6.js} +1 -1
  23. package/dist-web/assets/{chunk-ND2GUHAM-PE_EiT_2.js → chunk-ND2GUHAM-jmMu7-6G.js} +1 -1
  24. package/dist-web/assets/{chunk-QZHKN3VN-Dff5pQVs.js → chunk-QZHKN3VN-CoFZRE9S.js} +1 -1
  25. package/dist-web/assets/classDiagram-4FO5ZUOK-DNoS6CPC.js +1 -0
  26. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-DNoS6CPC.js +1 -0
  27. package/dist-web/assets/{cose-bilkent-S5V4N54A-CC2lVtJy.js → cose-bilkent-S5V4N54A-DfE6Yc6V.js} +1 -1
  28. package/dist-web/assets/{dagre-BM42HDAG-Ba3wwaEk.js → dagre-BM42HDAG-GLQxrEea.js} +1 -1
  29. package/dist-web/assets/{diagram-2AECGRRQ-D-eNzKxw.js → diagram-2AECGRRQ-CPF-j3jI.js} +1 -1
  30. package/dist-web/assets/{diagram-5GNKFQAL-B1LKlghw.js → diagram-5GNKFQAL-DX8N0bhf.js} +1 -1
  31. package/dist-web/assets/{diagram-KO2AKTUF-D8-5tjnC.js → diagram-KO2AKTUF-D4wM_Xrg.js} +1 -1
  32. package/dist-web/assets/{diagram-LMA3HP47-bS2_7Udo.js → diagram-LMA3HP47-uVt4DExc.js} +1 -1
  33. package/dist-web/assets/{diagram-OG6HWLK6-B4YtdIcD.js → diagram-OG6HWLK6-DzfLImY-.js} +1 -1
  34. package/dist-web/assets/{erDiagram-TEJ5UH35-PitIEuaM.js → erDiagram-TEJ5UH35-BDOB8bJk.js} +1 -1
  35. package/dist-web/assets/{flowDiagram-I6XJVG4X-DKmhqOBa.js → flowDiagram-I6XJVG4X-DsofFC7H.js} +1 -1
  36. package/dist-web/assets/{ganttDiagram-6RSMTGT7-HCsmsP2b.js → ganttDiagram-6RSMTGT7-DYCTEBUe.js} +1 -1
  37. package/dist-web/assets/{gitGraphDiagram-PVQCEYII-QbqTXLSl.js → gitGraphDiagram-PVQCEYII-B373xEyt.js} +1 -1
  38. package/dist-web/assets/{index-DFmqrXlR.js → index-BrXKePvp.js} +1 -1
  39. package/dist-web/assets/{index-CVX3hi3z.js → index-BxjDhqax.js} +1 -1
  40. package/dist-web/assets/index-CvZkEGgs.js +169 -0
  41. package/dist-web/assets/index-DROsk748.css +1 -0
  42. package/dist-web/assets/{infoDiagram-5YYISTIA-3To2TWNT.js → infoDiagram-5YYISTIA-BTdfbRG3.js} +1 -1
  43. package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-BetXO7yZ.js → ishikawaDiagram-YF4QCWOH-By0jpBpG.js} +1 -1
  44. package/dist-web/assets/{journeyDiagram-JHISSGLW-CoulYVgQ.js → journeyDiagram-JHISSGLW-CN4ddpRF.js} +1 -1
  45. package/dist-web/assets/{kanban-definition-UN3LZRKU-D9B13k6u.js → kanban-definition-UN3LZRKU-CSzp97xY.js} +1 -1
  46. package/dist-web/assets/{linear-D6zkWX3u.js → linear-Bo45a3LX.js} +1 -1
  47. package/dist-web/assets/{mermaid.core-DFcjGU0T.js → mermaid.core-fEMv_ThD.js} +4 -4
  48. package/dist-web/assets/{mindmap-definition-RKZ34NQL-B-twMs7e.js → mindmap-definition-RKZ34NQL-lcelYnaU.js} +1 -1
  49. package/dist-web/assets/{pieDiagram-4H26LBE5-DKX-iOJJ.js → pieDiagram-4H26LBE5-DqrHeOSK.js} +1 -1
  50. package/dist-web/assets/{quadrantDiagram-W4KKPZXB-DQpSSQxM.js → quadrantDiagram-W4KKPZXB-lKQsolLl.js} +1 -1
  51. package/dist-web/assets/{requirementDiagram-4Y6WPE33-DnIoIO9f.js → requirementDiagram-4Y6WPE33-D3GerVWN.js} +1 -1
  52. package/dist-web/assets/{sankeyDiagram-5OEKKPKP-BZwTjcsB.js → sankeyDiagram-5OEKKPKP-Dn0Rn4jy.js} +1 -1
  53. package/dist-web/assets/{sequenceDiagram-3UESZ5HK-ClRdeH1n.js → sequenceDiagram-3UESZ5HK-BMZb9HkP.js} +1 -1
  54. package/dist-web/assets/{stateDiagram-AJRCARHV-DyGtF4aB.js → stateDiagram-AJRCARHV-mHX_sHdp.js} +1 -1
  55. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-BwuUXdDR.js +1 -0
  56. package/dist-web/assets/{timeline-definition-PNZ67QCA-CAhtHKbz.js → timeline-definition-PNZ67QCA-CrVF3pNw.js} +1 -1
  57. package/dist-web/assets/{vennDiagram-CIIHVFJN-D8cuqu1b.js → vennDiagram-CIIHVFJN-Dfw6e8s7.js} +1 -1
  58. package/dist-web/assets/{wardley-L42UT6IY-BevJmKqU.js → wardley-L42UT6IY-HlLGXiR6.js} +1 -1
  59. package/dist-web/assets/{wardleyDiagram-YWT4CUSO-DZrGhjB4.js → wardleyDiagram-YWT4CUSO-DPL-Ch-8.js} +1 -1
  60. package/dist-web/assets/{xychartDiagram-2RQKCTM6-DczsJUEl.js → xychartDiagram-2RQKCTM6-Cd6IimVj.js} +1 -1
  61. package/dist-web/index.html +2 -2
  62. package/package.json +3 -1
  63. package/templates/harness/skills/st-create-plan/scripts/find-strikethroo-root.cjs +1 -1
  64. package/templates/harness/skills/st-create-plan/scripts/get-next-plan-id.cjs +1 -1
  65. package/templates/harness/skills/st-execute-blueprint/scripts/check-phase-readiness.cjs +1 -1
  66. package/templates/harness/skills/st-execute-blueprint/scripts/create-feature-branch.cjs +1 -1
  67. package/templates/harness/skills/st-execute-blueprint/scripts/dispatch-task-execution.cjs +66 -61
  68. package/templates/harness/skills/st-execute-blueprint/scripts/find-strikethroo-root.cjs +1 -1
  69. package/templates/harness/skills/st-execute-blueprint/scripts/validate-plan-blueprint.cjs +1 -1
  70. package/templates/harness/skills/st-execute-task/scripts/check-task-dependencies.cjs +1 -1
  71. package/templates/harness/skills/st-execute-task/scripts/dispatch-task-execution.cjs +66 -61
  72. package/templates/harness/skills/st-execute-task/scripts/find-strikethroo-root.cjs +1 -1
  73. package/templates/harness/skills/st-execute-task/scripts/validate-plan-blueprint.cjs +1 -1
  74. package/templates/harness/skills/st-full-workflow/SKILL.md +41 -4
  75. package/templates/harness/skills/st-full-workflow/scripts/check-phase-readiness.cjs +1 -1
  76. package/templates/harness/skills/st-full-workflow/scripts/create-feature-branch.cjs +1 -1
  77. package/templates/harness/skills/st-full-workflow/scripts/dispatch-task-execution.cjs +66 -61
  78. package/templates/harness/skills/st-full-workflow/scripts/find-strikethroo-root.cjs +1 -1
  79. package/templates/harness/skills/st-full-workflow/scripts/get-next-plan-id.cjs +1 -1
  80. package/templates/harness/skills/st-full-workflow/scripts/get-next-task-id.cjs +1 -1
  81. package/templates/harness/skills/st-full-workflow/scripts/route-task-execution.cjs +6682 -0
  82. package/templates/harness/skills/st-full-workflow/scripts/validate-plan-blueprint.cjs +1 -1
  83. package/templates/harness/skills/st-generate-tasks/SKILL.md +44 -3
  84. package/templates/harness/skills/st-generate-tasks/scripts/find-strikethroo-root.cjs +1 -1
  85. package/templates/harness/skills/st-generate-tasks/scripts/get-next-task-id.cjs +1 -1
  86. package/templates/harness/skills/st-generate-tasks/scripts/route-task-execution.cjs +6682 -0
  87. package/templates/harness/skills/st-generate-tasks/scripts/validate-plan-blueprint.cjs +1 -1
  88. package/templates/harness/skills/st-refine-plan/scripts/find-strikethroo-root.cjs +1 -1
  89. package/templates/harness/skills/st-refine-plan/scripts/validate-plan-blueprint.cjs +1 -1
  90. package/templates/strikethroo/config/config.yaml +25 -0
  91. package/templates/strikethroo/config/hooks/TASK_EXECUTION_ROUTING.md +29 -0
  92. package/dist-web/assets/channel-Bvh1akBB.js +0 -1
  93. package/dist-web/assets/classDiagram-4FO5ZUOK-0GgRFVnx.js +0 -1
  94. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-0GgRFVnx.js +0 -1
  95. package/dist-web/assets/index-BJUf2P-C.css +0 -1
  96. package/dist-web/assets/index-PrbhbiSQ.js +0 -125
  97. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-e00NXaxu.js +0 -1
@@ -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 = 3;
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 = 3;
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
- * the `id` must resolve to a single flat filename `config/<kind>/<id>.md` that
12
- * stays inside the intended directory (no path separators, no `..`, no
13
- * traversal); and the target file must ALREADY exist (this never creates a new
14
- * file). When the guards pass it overwrites the file content verbatim. It never
15
- * deletes or renames. Expected guard failures are returned as a typed result,
16
- * not thrown; only an unexpected filesystem error surfaces as `fs-error`.
17
- * Node built-ins only.
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 the existing config file `config/<kind>/<id>.md` under `root` (the
33
- * absolute `.ai/strikethroo` directory) with `content`, after validating the
34
- * strict allowlist. Returns a typed result; performs zero filesystem changes on
35
- * any guard failure.
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;;;;;;;;;;;;;;;;;GAiBG;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;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,IAAI,MAAM,EACV,SAAS,MAAM,KACd,OAAO,CAAC,iBAAiB,CAmC3B,CAAC"}
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
- * the `id` must resolve to a single flat filename `config/<kind>/<id>.md` that
13
- * stays inside the intended directory (no path separators, no `..`, no
14
- * traversal); and the target file must ALREADY exist (this never creates a new
15
- * file). When the guards pass it overwrites the file content verbatim. It never
16
- * deletes or renames. Expected guard failures are returned as a typed result,
17
- * not thrown; only an unexpected filesystem error surfaces as `fs-error`.
18
- * Node built-ins only.
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 only config kinds that may be written. */
59
+ /** The directory-backed config kinds that may be written. */
58
60
  const KINDS = new Set(['hooks', 'templates']);
59
61
  /**
60
- * Overwrites the existing config file `config/<kind>/<id>.md` under `root` (the
61
- * absolute `.ai/strikethroo` directory) with `content`, after validating the
62
- * strict allowlist. Returns a typed result; performs zero filesystem changes on
63
- * any guard failure.
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
- if (!KINDS.has(kind)) {
67
- return { ok: false, reason: 'invalid-kind', message: `Unknown config kind: ${kind}.` };
68
- }
69
- // Reject obvious traversal/nesting attempts early before any resolution.
70
- if (id === '' || id.includes('/') || id.includes('\\') || id.includes('..')) {
71
- return { ok: false, reason: 'invalid-id', message: 'Invalid config file id.' };
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
- const dir = path.resolve(root, 'config', kind);
74
- const target = path.resolve(dir, `${id}.md`);
75
- // Containment: the resolved target must be a direct, flat child of `dir`.
76
- const withinDir = target.startsWith(dir + path.sep);
77
- const isFlatChild = path.dirname(target) === dir;
78
- if (!withinDir || !isFlatChild) {
79
- return { ok: false, reason: 'invalid-id', message: 'Invalid config file id.' };
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;;;;;;;;;;;;;;;;;GAiBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAe7B,iDAAiD;AACjD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9C;;;;;GAKG;AACI,MAAM,eAAe,GAAG,KAAK,EAClC,IAAY,EACZ,IAAY,EACZ,EAAU,EACV,OAAe,EACa,EAAE;IAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,IAAI,GAAG,EAAE,CAAC;IACzF,CAAC;IAED,yEAAyE;IACzE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACjF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAE7C,0EAA0E;IAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;IACjD,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAC/E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;IACpF,CAAC;AACH,CAAC,CAAC;AAxCW,QAAA,eAAe,mBAwC1B"}
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 templates under `config/`. */
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,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAoGD,qEAAqE;AACrE,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,eAMzC,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"}
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
- /** Returns the config slice: hooks and templates under `config/`. */
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":"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"}
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 : 3;
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-DFcjGU0T.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};
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};