@blxzer/cursor-trellis 0.3.4 → 0.3.6

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 (210) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +13 -13
  3. package/README.zh-CN.md +1 -1
  4. package/bin/cstl.js +1 -1
  5. package/bin/smart-search.js +1 -1
  6. package/dist/cli/index.d.ts.map +1 -1
  7. package/dist/cli/index.js +17 -2
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/commands/campaign/canvas-render.d.ts +68 -0
  10. package/dist/commands/campaign/canvas-render.d.ts.map +1 -0
  11. package/dist/commands/campaign/canvas-render.js +414 -0
  12. package/dist/commands/campaign/canvas-render.js.map +1 -0
  13. package/dist/commands/campaign/compose.d.ts +15 -0
  14. package/dist/commands/campaign/compose.d.ts.map +1 -0
  15. package/dist/commands/campaign/compose.js +110 -0
  16. package/dist/commands/campaign/compose.js.map +1 -0
  17. package/dist/commands/campaign/index.d.ts +13 -0
  18. package/dist/commands/campaign/index.d.ts.map +1 -0
  19. package/dist/commands/campaign/index.js +134 -0
  20. package/dist/commands/campaign/index.js.map +1 -0
  21. package/dist/commands/campaign/kind-map.d.ts +6 -0
  22. package/dist/commands/campaign/kind-map.d.ts.map +1 -0
  23. package/dist/commands/campaign/kind-map.js +21 -0
  24. package/dist/commands/campaign/kind-map.js.map +1 -0
  25. package/dist/commands/campaign/mcp-server.d.ts +6 -0
  26. package/dist/commands/campaign/mcp-server.d.ts.map +1 -0
  27. package/dist/commands/campaign/mcp-server.js +167 -0
  28. package/dist/commands/campaign/mcp-server.js.map +1 -0
  29. package/dist/commands/campaign/render.d.ts +5 -0
  30. package/dist/commands/campaign/render.d.ts.map +1 -0
  31. package/dist/commands/campaign/render.js +103 -0
  32. package/dist/commands/campaign/render.js.map +1 -0
  33. package/dist/commands/campaign/trellis-load.d.ts +13 -0
  34. package/dist/commands/campaign/trellis-load.d.ts.map +1 -0
  35. package/dist/commands/campaign/trellis-load.js +122 -0
  36. package/dist/commands/campaign/trellis-load.js.map +1 -0
  37. package/dist/commands/campaign/types.d.ts +61 -0
  38. package/dist/commands/campaign/types.d.ts.map +1 -0
  39. package/dist/commands/campaign/types.js +3 -0
  40. package/dist/commands/campaign/types.js.map +1 -0
  41. package/dist/commands/goal/index.d.ts +3 -0
  42. package/dist/commands/goal/index.d.ts.map +1 -0
  43. package/dist/commands/goal/index.js +159 -0
  44. package/dist/commands/goal/index.js.map +1 -0
  45. package/dist/commands/goal/review.d.ts +6 -0
  46. package/dist/commands/goal/review.d.ts.map +1 -0
  47. package/dist/commands/goal/review.js +28 -0
  48. package/dist/commands/goal/review.js.map +1 -0
  49. package/dist/commands/init.d.ts.map +1 -1
  50. package/dist/commands/init.js +11 -1
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/rpc/client.d.ts +51 -0
  53. package/dist/commands/rpc/client.d.ts.map +1 -0
  54. package/dist/commands/rpc/client.js +147 -0
  55. package/dist/commands/rpc/client.js.map +1 -0
  56. package/dist/commands/rpc/index.d.ts +10 -0
  57. package/dist/commands/rpc/index.d.ts.map +1 -0
  58. package/dist/commands/rpc/index.js +157 -0
  59. package/dist/commands/rpc/index.js.map +1 -0
  60. package/dist/commands/rpc/serve.d.ts +23 -0
  61. package/dist/commands/rpc/serve.d.ts.map +1 -0
  62. package/dist/commands/rpc/serve.js +60 -0
  63. package/dist/commands/rpc/serve.js.map +1 -0
  64. package/dist/commands/rpc/smoke.d.ts +16 -0
  65. package/dist/commands/rpc/smoke.d.ts.map +1 -0
  66. package/dist/commands/rpc/smoke.js +92 -0
  67. package/dist/commands/rpc/smoke.js.map +1 -0
  68. package/dist/commands/sdk/index.d.ts +9 -0
  69. package/dist/commands/sdk/index.d.ts.map +1 -0
  70. package/dist/commands/sdk/index.js +58 -0
  71. package/dist/commands/sdk/index.js.map +1 -0
  72. package/dist/commands/sdk/run.d.ts +42 -0
  73. package/dist/commands/sdk/run.d.ts.map +1 -0
  74. package/dist/commands/sdk/run.js +220 -0
  75. package/dist/commands/sdk/run.js.map +1 -0
  76. package/dist/commands/sdk/status.d.ts +14 -0
  77. package/dist/commands/sdk/status.d.ts.map +1 -0
  78. package/dist/commands/sdk/status.js +69 -0
  79. package/dist/commands/sdk/status.js.map +1 -0
  80. package/dist/configurators/workflow.d.ts.map +1 -1
  81. package/dist/configurators/workflow.js +13 -1
  82. package/dist/configurators/workflow.js.map +1 -1
  83. package/dist/goal/action-packet.d.ts +89 -0
  84. package/dist/goal/action-packet.d.ts.map +1 -0
  85. package/dist/goal/action-packet.js +113 -0
  86. package/dist/goal/action-packet.js.map +1 -0
  87. package/dist/goal/audit.d.ts +14 -0
  88. package/dist/goal/audit.d.ts.map +1 -0
  89. package/dist/goal/audit.js +12 -0
  90. package/dist/goal/audit.js.map +1 -0
  91. package/dist/goal/constants.d.ts +26 -0
  92. package/dist/goal/constants.d.ts.map +1 -0
  93. package/dist/goal/constants.js +24 -0
  94. package/dist/goal/constants.js.map +1 -0
  95. package/dist/goal/paths.d.ts +8 -0
  96. package/dist/goal/paths.d.ts.map +1 -0
  97. package/dist/goal/paths.js +36 -0
  98. package/dist/goal/paths.js.map +1 -0
  99. package/dist/goal/preflight.d.ts +21 -0
  100. package/dist/goal/preflight.d.ts.map +1 -0
  101. package/dist/goal/preflight.js +97 -0
  102. package/dist/goal/preflight.js.map +1 -0
  103. package/dist/goal/review-seam.d.ts +44 -0
  104. package/dist/goal/review-seam.d.ts.map +1 -0
  105. package/dist/goal/review-seam.js +153 -0
  106. package/dist/goal/review-seam.js.map +1 -0
  107. package/dist/goal/reviewer-rules.d.ts +13 -0
  108. package/dist/goal/reviewer-rules.d.ts.map +1 -0
  109. package/dist/goal/reviewer-rules.js +153 -0
  110. package/dist/goal/reviewer-rules.js.map +1 -0
  111. package/dist/goal/reviewer.d.ts +9 -0
  112. package/dist/goal/reviewer.d.ts.map +1 -0
  113. package/dist/goal/reviewer.js +54 -0
  114. package/dist/goal/reviewer.js.map +1 -0
  115. package/dist/goal/runtime.d.ts +32 -0
  116. package/dist/goal/runtime.d.ts.map +1 -0
  117. package/dist/goal/runtime.js +242 -0
  118. package/dist/goal/runtime.js.map +1 -0
  119. package/dist/goal/sdk-client.d.ts +10 -0
  120. package/dist/goal/sdk-client.d.ts.map +1 -0
  121. package/dist/goal/sdk-client.js +34 -0
  122. package/dist/goal/sdk-client.js.map +1 -0
  123. package/dist/goal/state.d.ts +40 -0
  124. package/dist/goal/state.d.ts.map +1 -0
  125. package/dist/goal/state.js +37 -0
  126. package/dist/goal/state.js.map +1 -0
  127. package/dist/goal/task-triggers.d.ts +15 -0
  128. package/dist/goal/task-triggers.d.ts.map +1 -0
  129. package/dist/goal/task-triggers.js +23 -0
  130. package/dist/goal/task-triggers.js.map +1 -0
  131. package/dist/goal/walls.d.ts +12 -0
  132. package/dist/goal/walls.d.ts.map +1 -0
  133. package/dist/goal/walls.js +65 -0
  134. package/dist/goal/walls.js.map +1 -0
  135. package/dist/goal/worker-prompt.d.ts +13 -0
  136. package/dist/goal/worker-prompt.d.ts.map +1 -0
  137. package/dist/goal/worker-prompt.js +41 -0
  138. package/dist/goal/worker-prompt.js.map +1 -0
  139. package/dist/goal/worker.d.ts +42 -0
  140. package/dist/goal/worker.d.ts.map +1 -0
  141. package/dist/goal/worker.js +180 -0
  142. package/dist/goal/worker.js.map +1 -0
  143. package/dist/migrations/manifests/0.3.5.json +9 -0
  144. package/dist/migrations/manifests/0.3.6.json +9 -0
  145. package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +35 -29
  146. package/dist/templates/common/bundled-skills/smart-search-cli/references/cli-contract.md +11 -25
  147. package/dist/templates/common/commands/continue.md +15 -3
  148. package/dist/templates/common/skills/check.md +7 -4
  149. package/dist/templates/cursor/agents/cstl-check.md +1 -0
  150. package/dist/templates/cursor/fixtures/expected-rules.d.ts.map +1 -1
  151. package/dist/templates/cursor/fixtures/expected-rules.js +6 -1
  152. package/dist/templates/cursor/fixtures/expected-rules.js.map +1 -1
  153. package/dist/templates/cursor/rules/cstl-cursor-modes.mdc +32 -0
  154. package/dist/templates/cursor/rules/cstl-triage.mdc +2 -4
  155. package/dist/templates/cursor/rules/retrieval-routing.mdc +26 -7
  156. package/dist/templates/markdown/agents.md +2 -0
  157. package/dist/templates/markdown/index.d.ts +3 -0
  158. package/dist/templates/markdown/index.d.ts.map +1 -1
  159. package/dist/templates/markdown/index.js +3 -0
  160. package/dist/templates/markdown/index.js.map +1 -1
  161. package/dist/templates/markdown/spec/guides/cursor-context-injection-guide.md.txt +38 -21
  162. package/dist/templates/markdown/spec/guides/cursor-native-modes-guide.md.txt +125 -0
  163. package/dist/templates/markdown/spec/guides/index.md.txt +107 -104
  164. package/dist/templates/markdown/spec/guides/injection-budget-guide.md.txt +111 -0
  165. package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +38 -6
  166. package/dist/templates/markdown/spec/guides/verification-strength-guide.md.txt +184 -0
  167. package/dist/templates/shared-hooks/session-start.py +10 -0
  168. package/dist/templates/trellis/config.yaml +18 -0
  169. package/dist/templates/trellis/index.d.ts +5 -0
  170. package/dist/templates/trellis/index.d.ts.map +1 -1
  171. package/dist/templates/trellis/index.js +14 -0
  172. package/dist/templates/trellis/index.js.map +1 -1
  173. package/dist/templates/trellis/scripts/common/artifact_locale.py +278 -0
  174. package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +51 -2
  175. package/dist/templates/trellis/scripts/common/config.py +39 -0
  176. package/dist/templates/trellis/scripts/common/injection_budget.py +317 -0
  177. package/dist/templates/trellis/scripts/common/parent_orchestration.py +500 -5
  178. package/dist/templates/trellis/scripts/common/retrieval_agent_instructions.py +9 -3
  179. package/dist/templates/trellis/scripts/common/session_context.py +32 -4
  180. package/dist/templates/trellis/scripts/common/session_memory.py +26 -0
  181. package/dist/templates/trellis/scripts/common/subagent_dispatch.py +74 -9
  182. package/dist/templates/trellis/scripts/common/task_context.py +18 -0
  183. package/dist/templates/trellis/scripts/common/task_dashboard.py +16 -1
  184. package/dist/templates/trellis/scripts/common/task_map.py +670 -614
  185. package/dist/templates/trellis/scripts/common/task_store.py +191 -40
  186. package/dist/templates/trellis/scripts/common/test_observable_defaults.py +135 -0
  187. package/dist/templates/trellis/scripts/cursor_retrieval_probe_prompt.md +14 -12
  188. package/dist/templates/trellis/scripts/generate_dispatch_prompt.py +182 -0
  189. package/dist/templates/trellis/scripts/injection_budget_probe.py +69 -0
  190. package/dist/templates/trellis/scripts/retrieval_probe_matrix_template.json +3 -3
  191. package/dist/templates/trellis/scripts/spec_health_outcomes.py +160 -0
  192. package/dist/templates/trellis/scripts/task.py +51 -0
  193. package/dist/templates/trellis/tasks/locale/en/default-prd.md +19 -0
  194. package/dist/templates/trellis/tasks/locale/zh/default-prd.md +19 -0
  195. package/dist/templates/trellis/workflow.md +23 -3
  196. package/dist/utils/codebase-retrieval-router.d.ts.map +1 -1
  197. package/dist/utils/codebase-retrieval-router.js +14 -0
  198. package/dist/utils/codebase-retrieval-router.js.map +1 -1
  199. package/dist/utils/cursor-sdk-gate.d.ts +10 -0
  200. package/dist/utils/cursor-sdk-gate.d.ts.map +1 -0
  201. package/dist/utils/cursor-sdk-gate.js +32 -0
  202. package/dist/utils/cursor-sdk-gate.js.map +1 -0
  203. package/dist/utils/project-capabilities.d.ts +30 -3
  204. package/dist/utils/project-capabilities.d.ts.map +1 -1
  205. package/dist/utils/project-capabilities.js +182 -11
  206. package/dist/utils/project-capabilities.js.map +1 -1
  207. package/dist/utils/readiness.d.ts.map +1 -1
  208. package/dist/utils/readiness.js +26 -0
  209. package/dist/utils/readiness.js.map +1 -1
  210. package/package.json +4 -3
@@ -0,0 +1,42 @@
1
+ export type SdkRunMode = "mock" | "live";
2
+ export interface SdkRunOptions {
3
+ task: string;
4
+ campaign: string;
5
+ mode: SdkRunMode;
6
+ prompt?: string;
7
+ cwd?: string;
8
+ rpcUrl?: string;
9
+ token?: string;
10
+ noRpc?: boolean;
11
+ /** When set, write dogfood under this absolute path instead of <task>/research/ */
12
+ evidencePath?: string;
13
+ }
14
+ export interface SdkRunResult {
15
+ ok: boolean;
16
+ runId: string;
17
+ mode: SdkRunMode;
18
+ taskPath: string;
19
+ evidencePath: string;
20
+ rpc: {
21
+ attempted: boolean;
22
+ ok: boolean;
23
+ url?: string;
24
+ detail: string;
25
+ };
26
+ agent: {
27
+ status: string;
28
+ result: string;
29
+ };
30
+ errors: string[];
31
+ }
32
+ /**
33
+ * Build the Agent prompt for SDK RUN. Always prepends an explicit --task binding
34
+ * block so SessionStart "Selected task: none" cannot be misread as unbound.
35
+ */
36
+ export declare function buildSdkRunPrompt(taskPath: string, userPrompt?: string): string;
37
+ /**
38
+ * Minimal Trellis SDK RUN: bind explicit task path, run mock/live agent, write dogfood, emit RPC.
39
+ */
40
+ export declare function runSdkRun(options: SdkRunOptions): Promise<SdkRunResult>;
41
+ export declare function runSdkRunCommand(options: SdkRunOptions): Promise<number>;
42
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/sdk/run.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE;QACH,SAAS,EAAE,OAAO,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAqBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAeR;AA8HD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAkE7E;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
@@ -0,0 +1,220 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { campaignBroadcastTopic } from "@blxzer/cursor-trellis-core/rpc";
5
+ import { resolveRpcToken, resolveRpcUrl, rpcPublish, rpcRegister, } from "../rpc/client.js";
6
+ const DEFAULT_PROMPT = "Trellis SDK RUN (S1 worker): confirm task path binding by restating the absolute taskPath; do not call integrate-child or start-execution --approved; summarize readiness in one short paragraph.";
7
+ function resolveTaskPath(taskArg) {
8
+ return path.resolve(process.cwd(), taskArg);
9
+ }
10
+ function assertTaskDir(taskPath) {
11
+ if (!fs.existsSync(taskPath) || !fs.statSync(taskPath).isDirectory()) {
12
+ throw new Error(`Task path is not a directory: ${taskPath}`);
13
+ }
14
+ const prd = path.join(taskPath, "prd.md");
15
+ if (!fs.existsSync(prd)) {
16
+ throw new Error(`Task path missing prd.md (refusing unbound SDK RUN; pass --task <dir> that contains prd.md): ${prd}`);
17
+ }
18
+ }
19
+ /**
20
+ * Build the Agent prompt for SDK RUN. Always prepends an explicit --task binding
21
+ * block so SessionStart "Selected task: none" cannot be misread as unbound.
22
+ */
23
+ export function buildSdkRunPrompt(taskPath, userPrompt) {
24
+ const absoluteTask = path.resolve(taskPath);
25
+ const prdPath = path.join(absoluteTask, "prd.md");
26
+ const instruction = userPrompt?.trim() || DEFAULT_PROMPT;
27
+ return [
28
+ "## SDK RUN task binding (authoritative)",
29
+ `- Bound via CLI \`--task\` (not \`selected_task\` / SessionStart).`,
30
+ `- taskPath (absolute): \`${absoluteTask}\``,
31
+ `- prd.md (absolute): \`${prdPath}\``,
32
+ `- Binding status: **BOUND**.`,
33
+ `- Do **not** report unbound solely because SessionStart says \`Selected task: none\` — that pointer is irrelevant for SDK RUN.`,
34
+ "",
35
+ "## Instructions",
36
+ instruction,
37
+ ].join("\n");
38
+ }
39
+ async function runMockAgent(prompt) {
40
+ return {
41
+ status: "completed",
42
+ result: `[mock] SDK RUN accepted prompt (${prompt.length} chars). No @cursor/sdk call. CAP: safe-task/SDK only; no Parent integrate.`,
43
+ };
44
+ }
45
+ async function runLiveAgent(prompt, cwd) {
46
+ const { promptCursorAgent } = await import("../../goal/sdk-client.js");
47
+ return promptCursorAgent(prompt, cwd);
48
+ }
49
+ function writeDogfoodEvidence(options) {
50
+ const dir = path.dirname(options.evidencePath);
51
+ fs.mkdirSync(dir, { recursive: true });
52
+ const body = `# SDK RUN dogfood
53
+
54
+ generated: ${new Date().toISOString()}
55
+ runId: \`${options.result.runId}\`
56
+ mode: \`${options.result.mode}\`
57
+ taskPath: \`${options.result.taskPath}\`
58
+
59
+ ## Agent
60
+
61
+ - status: \`${options.result.agent.status}\`
62
+ - result:
63
+
64
+ \`\`\`text
65
+ ${options.result.agent.result}
66
+ \`\`\`
67
+
68
+ ## RPC
69
+
70
+ - attempted: ${options.result.rpc.attempted}
71
+ - ok: ${options.result.rpc.ok}
72
+ - url: ${options.result.rpc.url ?? "(none)"}
73
+ - detail: ${options.result.rpc.detail}
74
+
75
+ ## CAP / HITL
76
+
77
+ - Claim: SDK / safe-task automation RUN only
78
+ - Does **not** call \`task.py start-execution --approved\` or \`integrate-child\`
79
+ - Not an IDE chat tab
80
+
81
+ ## Errors
82
+
83
+ ${options.result.errors.length === 0
84
+ ? "(none)"
85
+ : options.result.errors.map((e) => `- ${e}`).join("\n")}
86
+ `;
87
+ fs.writeFileSync(options.evidencePath, body, "utf-8");
88
+ }
89
+ async function emitRpcEvents(options) {
90
+ const from = { kind: "sdk", id: options.runId };
91
+ const topic = campaignBroadcastTopic(options.campaign);
92
+ const reg = await rpcRegister({
93
+ url: options.url,
94
+ kind: from.kind,
95
+ id: from.id,
96
+ campaignId: options.campaign,
97
+ token: options.token,
98
+ });
99
+ if (reg.error) {
100
+ return {
101
+ ok: false,
102
+ detail: `register failed: ${reg.error.code} ${reg.error.message}`,
103
+ };
104
+ }
105
+ const body = {
106
+ event: "trellis.child.state",
107
+ taskPath: options.taskPath,
108
+ mode: options.mode,
109
+ status: options.status,
110
+ runId: options.runId,
111
+ clientKind: "sdk",
112
+ };
113
+ const published = await rpcPublish({
114
+ url: options.url,
115
+ from,
116
+ topic,
117
+ campaignId: options.campaign,
118
+ body,
119
+ token: options.token,
120
+ });
121
+ if (published.error) {
122
+ return {
123
+ ok: false,
124
+ detail: `publish failed: ${published.error.code} ${published.error.message}`,
125
+ };
126
+ }
127
+ const delivered = typeof published.payload.delivered === "number"
128
+ ? published.payload.delivered
129
+ : 0;
130
+ return {
131
+ ok: true,
132
+ detail: `registered sdk:${options.runId}; published ${topic} (delivered=${delivered})`,
133
+ };
134
+ }
135
+ /**
136
+ * Minimal Trellis SDK RUN: bind explicit task path, run mock/live agent, write dogfood, emit RPC.
137
+ */
138
+ export async function runSdkRun(options) {
139
+ const errors = [];
140
+ const runId = randomUUID().slice(0, 8);
141
+ const taskPath = resolveTaskPath(options.task);
142
+ assertTaskDir(taskPath);
143
+ const cwd = options.cwd ? path.resolve(options.cwd) : process.cwd();
144
+ const prompt = buildSdkRunPrompt(taskPath, options.prompt);
145
+ const evidencePath = options.evidencePath ??
146
+ path.join(taskPath, "research", "sdk-run-dogfood.md");
147
+ let agent;
148
+ if (options.mode === "live") {
149
+ agent = await runLiveAgent(prompt, cwd);
150
+ }
151
+ else {
152
+ agent = await runMockAgent(prompt);
153
+ }
154
+ let rpc = {
155
+ attempted: false,
156
+ ok: false,
157
+ detail: "skipped (--no-rpc)",
158
+ };
159
+ if (!options.noRpc) {
160
+ const url = resolveRpcUrl(options.rpcUrl);
161
+ const token = resolveRpcToken(options.token);
162
+ rpc = { attempted: true, ok: false, url, detail: "" };
163
+ try {
164
+ const outcome = await emitRpcEvents({
165
+ url,
166
+ token,
167
+ runId,
168
+ campaign: options.campaign,
169
+ taskPath,
170
+ mode: options.mode,
171
+ status: agent.status,
172
+ });
173
+ rpc.ok = outcome.ok;
174
+ rpc.detail = outcome.detail;
175
+ if (!outcome.ok) {
176
+ errors.push(`rpc: ${outcome.detail}`);
177
+ }
178
+ }
179
+ catch (error) {
180
+ const message = error instanceof Error ? error.message : String(error);
181
+ rpc.ok = false;
182
+ rpc.detail = `unavailable: ${message}`;
183
+ errors.push(`rpc: ${rpc.detail}`);
184
+ }
185
+ }
186
+ const partial = {
187
+ runId,
188
+ mode: options.mode,
189
+ taskPath,
190
+ evidencePath,
191
+ rpc,
192
+ agent,
193
+ errors,
194
+ };
195
+ writeDogfoodEvidence({ evidencePath, result: partial });
196
+ // RPC degrade is allowed (LAYERED); validation failures already threw.
197
+ const ok = options.mode === "mock" || agent.status.length > 0;
198
+ return { ok, ...partial };
199
+ }
200
+ export async function runSdkRunCommand(options) {
201
+ try {
202
+ const result = await runSdkRun(options);
203
+ if (result.ok) {
204
+ console.log(`SDK RUN OK mode=${result.mode} runId=${result.runId} task=${result.taskPath}`);
205
+ console.log(`evidence: ${result.evidencePath}`);
206
+ console.log(`rpc: ${result.rpc.detail}`);
207
+ if (result.errors.length > 0) {
208
+ console.warn(`notes: ${result.errors.join("; ")}`);
209
+ }
210
+ return 0;
211
+ }
212
+ console.error(`SDK RUN FAILED: ${result.errors.join("; ") || "unknown"}`);
213
+ return 1;
214
+ }
215
+ catch (error) {
216
+ console.error("SDK RUN error:", error instanceof Error ? error.message : error);
217
+ return 1;
218
+ }
219
+ }
220
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/sdk/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type SdkStatusResult = {
2
+ ok: boolean;
3
+ cwd: string;
4
+ keyPresent: boolean;
5
+ capabilitySelected: boolean;
6
+ sdkModuleResolvable: boolean | null;
7
+ nextSteps: string[];
8
+ };
9
+ export declare function collectSdkStatus(cwd?: string): Promise<SdkStatusResult>;
10
+ export declare function runSdkStatusCommand(options?: {
11
+ cwd?: string;
12
+ json?: boolean;
13
+ }): Promise<number>;
14
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/sdk/status.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAeF,wBAAsB,gBAAgB,CACpC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmClB"}
@@ -0,0 +1,69 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { cursorApiKeySetupGuide, hasCursorApiKey, } from "../../utils/cursor-sdk-gate.js";
4
+ import { loadProjectCapabilities } from "../../utils/project-capabilities.js";
5
+ async function probeSdkModuleResolvable() {
6
+ try {
7
+ const dynamicImport = new Function("specifier", "return import(specifier)");
8
+ await dynamicImport("@cursor/sdk");
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ export async function collectSdkStatus(cwd = process.cwd()) {
16
+ const keyPresent = hasCursorApiKey();
17
+ const selected = loadProjectCapabilities(cwd);
18
+ const capabilitySelected = selected.includes("cursor-sdk");
19
+ const sdkModuleResolvable = await probeSdkModuleResolvable();
20
+ const nextSteps = [];
21
+ if (!keyPresent) {
22
+ nextSteps.push("Set CURSOR_API_KEY in this process, then re-run `cstl sdk status` or re-select `cursor-sdk` during init/update.");
23
+ nextSteps.push("Use `cstl sdk run --task <path> --mock` without a key.");
24
+ }
25
+ else {
26
+ nextSteps.push("Key present. You may enable `cursor-sdk` at init/update and use `cstl sdk run --task <path> --live` after accepting billing/privacy risk.");
27
+ }
28
+ if (!capabilitySelected && fs.existsSync(path.join(cwd, ".cstl"))) {
29
+ nextSteps.push("Project has `.cstl/` but `cursor-sdk` is not in `.cstl/capabilities.json` selected list.");
30
+ }
31
+ if (sdkModuleResolvable === false) {
32
+ nextSteps.push("@cursor/sdk could not be imported from this CLI install; reinstall cursor-trellis / @blxzer/cursor-trellis.");
33
+ }
34
+ return {
35
+ ok: keyPresent,
36
+ cwd,
37
+ keyPresent,
38
+ capabilitySelected,
39
+ sdkModuleResolvable,
40
+ nextSteps,
41
+ };
42
+ }
43
+ export async function runSdkStatusCommand(options) {
44
+ const cwd = options?.cwd ? path.resolve(options.cwd) : process.cwd();
45
+ const status = await collectSdkStatus(cwd);
46
+ if (options?.json) {
47
+ console.log(JSON.stringify(status, null, 2));
48
+ return status.keyPresent ? 0 : 1;
49
+ }
50
+ console.log("Cursor SDK status");
51
+ console.log(` cwd: ${status.cwd}`);
52
+ console.log(` CURSOR_API_KEY: ${status.keyPresent ? "present" : "missing"} (value never printed)`);
53
+ console.log(` capability cursor-sdk selected: ${status.capabilitySelected ? "yes" : "no"}`);
54
+ console.log(` @cursor/sdk importable from CLI: ${status.sdkModuleResolvable === null
55
+ ? "unknown"
56
+ : status.sdkModuleResolvable
57
+ ? "yes"
58
+ : "no"}`);
59
+ console.log(" next steps:");
60
+ for (const step of status.nextSteps) {
61
+ console.log(` - ${step}`);
62
+ }
63
+ if (!status.keyPresent) {
64
+ console.log("");
65
+ console.log(cursorApiKeySetupGuide());
66
+ }
67
+ return status.keyPresent ? 0 : 1;
68
+ }
69
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/sdk/status.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AA4CA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAOtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AA+CA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAOtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Df"}
@@ -8,7 +8,7 @@ backendIndexContent, backendDirectoryStructureContent, backendDatabaseGuidelines
8
8
  // Frontend structure (multi-doc)
9
9
  frontendIndexContent, frontendDirectoryStructureContent, frontendTypeSafetyContent, frontendHookGuidelinesContent, frontendComponentGuidelinesContent, frontendQualityGuidelinesContent, frontendStateManagementContent,
10
10
  // Guides structure
11
- guidesIndexContent, guidesCrossLayerThinkingGuideContent, guidesCodeReuseThinkingGuideContent, guidesDurableLearningDecisionGuideContent, guidesRetrievalDailyGuideContent, guidesCursorSemanticComplianceContent, guidesCursorSubagentPolicyContent, guidesExecutionStrategyContent, guidesCursorContextInjectionGuideContent, } from "../templates/markdown/index.js";
11
+ guidesIndexContent, guidesCrossLayerThinkingGuideContent, guidesCodeReuseThinkingGuideContent, guidesDurableLearningDecisionGuideContent, guidesRetrievalDailyGuideContent, guidesCursorSemanticComplianceContent, guidesCursorSubagentPolicyContent, guidesExecutionStrategyContent, guidesCursorContextInjectionGuideContent, guidesCursorNativeModesGuideContent, guidesVerificationStrengthGuideContent, guidesInjectionBudgetGuideContent, } from "../templates/markdown/index.js";
12
12
  import { writeFile, ensureDir } from "../utils/file-writer.js";
13
13
  import { replacePythonCommandLiterals } from "./shared.js";
14
14
  import { writeCursor2plusLocalBundle } from "./cursor2plus-local.js";
@@ -177,6 +177,18 @@ async function createSpecTemplates(cwd, projectType, packages, remoteSpecPackage
177
177
  name: "cursor-context-injection-guide.md",
178
178
  content: guidesCursorContextInjectionGuideContent,
179
179
  },
180
+ {
181
+ name: "cursor-native-modes-guide.md",
182
+ content: guidesCursorNativeModesGuideContent,
183
+ },
184
+ {
185
+ name: "verification-strength-guide.md",
186
+ content: guidesVerificationStrengthGuideContent,
187
+ },
188
+ {
189
+ name: "injection-budget-guide.md",
190
+ content: guidesInjectionBudgetGuideContent,
191
+ },
180
192
  ];
181
193
  for (const doc of guidesDocs) {
182
194
  await writeFile(path.join(guidesDir, doc.name), doc.content);
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EACL,yBAAyB;AACzB,gCAAgC;AAChC,mBAAmB,EACnB,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B;AAC3B,iCAAiC;AACjC,oBAAoB,EACpB,iCAAiC,EACjC,yBAAyB,EACzB,6BAA6B,EAC7B,kCAAkC,EAClC,gCAAgC,EAChC,8BAA8B;AAC9B,mBAAmB;AACnB,kBAAkB,EAClB,oCAAoC,EACpC,mCAAmC,EACnC,yCAAyC,EACzC,gCAAgC,EAChC,qCAAqC,EACrC,iCAAiC,EACjC,8BAA8B,EAC9B,wCAAwC,GACzC,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,eAAe,GAGhB,MAAM,8BAA8B,CAAC;AAsCtC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAW,EACX,OAAyB;IAEzB,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,WAAW,CAAC;IACxD,MAAM,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,MAAM,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,CAAC;IAErE,iCAAiC;IACjC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9C,6EAA6E;IAC7E,MAAM,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1D,6EAA6E;IAC7E,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,CAAC,EACzC,4BAA4B,CAAC,UAAU,CAAC,CACzC,CAAC;IAEF,iCAAiC;IACjC,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,EAChD,iBAAiB,CAClB,CAAC;IAEF,kCAAkC;IAClC,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,EACjD,kBAAkB,CACnB,CAAC;IACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,+BAA+B,CAAC,EAC7E,0BAA0B,CAC3B,CAAC;IAEF,kCAAkC;IAClC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,EAC3C,4BAA4B,CAAC,yBAAyB,CAAC,CACxD,CAAC;IAEF,0BAA0B;IAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvC,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,8CAA8C;IAC9C,wEAAwE;IACxE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,qDAAqD;QACrD,MAAM,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9B,uEAAuE;QACvE,MAAM,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IACrD,SAAS,CAAC,WAAW,CAAC,CAAC;IACvB,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACpD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,QAAQ,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAE;YAC/D,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,SAAS,CAAC,UAAU,CAAC,CAAC;IACtB,MAAM,IAAI,GAAoB;QAC5B,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE;QAClD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,gCAAgC;SAC1C;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,gCAAgC;SAC1C;QACD,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,+BAA+B,EAAE;QAC3E,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,+BAA+B,EAAE;QAC3E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,2BAA2B,EAAE;KACpE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,SAAS,CAAC,WAAW,CAAC,CAAC;IACvB,MAAM,IAAI,GAAoB;QAC5B,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE;QACnD;YACE,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,iCAAiC;SAC3C;QACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,EAAE;QAC9D,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,6BAA6B,EAAE;QACtE;YACE,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,kCAAkC;SAC5C;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,gCAAgC;SAC1C;QACD,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,8BAA8B,EAAE;KACzE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,WAAwB;IAExB,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAW,EACX,WAAwB,EACxB,QAA4B,EAC5B,kBAAgC;IAEhC,+BAA+B;IAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtC,6CAA6C;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC;IACzD,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,UAAU,GAAoB;QAClC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE;QACjD;YACE,IAAI,EAAE,oCAAoC;YAC1C,OAAO,EAAE,yCAAyC;SACnD;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,oCAAoC;SAC9C;QACD;YACE,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,mCAAmC;SAC7C;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,gCAAgC;SAC1C;QACD;YACE,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,qCAAqC;SAC/C;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,iCAAiC;SAC3C;QACD;YACE,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,8BAA8B;SACxC;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,OAAO,EAAE,wCAAwC;SAClD;KACF,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,sDAAsD;QACtD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;YAC/D,SAAS,CAAC,WAAW,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAChE,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { z } from "zod";
2
+ /** Parent lock v0 — shared with reviewer Child. */
3
+ export declare const GOAL_ACTION_PACKET_SCHEMA_VERSION: 1;
4
+ export declare const HARD_DENY_IDS: readonly ["H-1", "H-2", "H-3", "H-4", "H-5", "H-6"];
5
+ export type HardDenyId = (typeof HARD_DENY_IDS)[number];
6
+ export declare const REVIEW_DECISIONS: readonly ["allow", "allow_with_constraints", "deny_suggest_alternative", "uncertain"];
7
+ export type ReviewDecision = (typeof REVIEW_DECISIONS)[number];
8
+ declare const axesSchema: z.ZodObject<{
9
+ A: z.ZodBoolean;
10
+ B: z.ZodBoolean;
11
+ C: z.ZodBoolean;
12
+ }, z.core.$strip>;
13
+ export declare const goalActionPacketSchema: z.ZodObject<{
14
+ schema_version: z.ZodLiteral<1>;
15
+ goal_id: z.ZodString;
16
+ task_dir: z.ZodOptional<z.ZodNullable<z.ZodString>>;
17
+ proposed_action: z.ZodString;
18
+ action_kind: z.ZodString;
19
+ axes: z.ZodObject<{
20
+ A: z.ZodBoolean;
21
+ B: z.ZodBoolean;
22
+ C: z.ZodBoolean;
23
+ }, z.core.$strip>;
24
+ hard_deny_candidates: z.ZodArray<z.ZodString>;
25
+ done_when_ref: z.ZodString;
26
+ diff_or_cmd_digest: z.ZodString;
27
+ constraints_hint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
+ }, z.core.$strip>;
29
+ export declare const goalReviewDecisionSchema: z.ZodObject<{
30
+ schema_version: z.ZodLiteral<1>;
31
+ decision: z.ZodEnum<{
32
+ allow: "allow";
33
+ allow_with_constraints: "allow_with_constraints";
34
+ deny_suggest_alternative: "deny_suggest_alternative";
35
+ uncertain: "uncertain";
36
+ }>;
37
+ axes: z.ZodObject<{
38
+ A: z.ZodBoolean;
39
+ B: z.ZodBoolean;
40
+ C: z.ZodBoolean;
41
+ }, z.core.$strip>;
42
+ hard_deny_hit: z.ZodNullable<z.ZodString>;
43
+ constraints: z.ZodOptional<z.ZodArray<z.ZodString>>;
44
+ alternative: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ rationale: z.ZodString;
46
+ l1_ready: z.ZodObject<{
47
+ time: z.ZodString;
48
+ action: z.ZodString;
49
+ axes: z.ZodObject<{
50
+ A: z.ZodBoolean;
51
+ B: z.ZodBoolean;
52
+ C: z.ZodBoolean;
53
+ }, z.core.$strip>;
54
+ reviewer: z.ZodString;
55
+ decision: z.ZodString;
56
+ rollback_hint: z.ZodString;
57
+ }, z.core.$strip>;
58
+ h3_allowed: z.ZodOptional<z.ZodBoolean>;
59
+ valid: z.ZodOptional<z.ZodBoolean>;
60
+ invalid_reason: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$strip>;
62
+ export type GoalAxes = z.infer<typeof axesSchema>;
63
+ export type GoalActionPacket = z.infer<typeof goalActionPacketSchema>;
64
+ export type GoalReviewDecision = z.infer<typeof goalReviewDecisionSchema>;
65
+ export declare function parseGoalActionPacket(input: unknown): GoalActionPacket;
66
+ export declare function safeParseGoalActionPacket(input: unknown): {
67
+ valid: true;
68
+ packet: GoalActionPacket;
69
+ } | {
70
+ valid: false;
71
+ invalid_reason: string;
72
+ };
73
+ export declare function parseGoalReviewDecision(input: unknown): GoalReviewDecision;
74
+ export declare function isValidReviewDecision(decision: GoalReviewDecision): {
75
+ valid: true;
76
+ } | {
77
+ valid: false;
78
+ reason: string;
79
+ };
80
+ export declare function deriveH3Allowed(decision: GoalReviewDecision): boolean;
81
+ export declare function validateGoalReviewDecision(input: unknown): {
82
+ valid: true;
83
+ decision: GoalReviewDecision;
84
+ } | {
85
+ valid: false;
86
+ invalid_reason: string;
87
+ };
88
+ export {};
89
+ //# sourceMappingURL=action-packet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-packet.d.ts","sourceRoot":"","sources":["../../src/goal/action-packet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,mDAAmD;AACnD,eAAO,MAAM,iCAAiC,EAAG,CAAU,CAAC;AAE5D,eAAO,MAAM,aAAa,qDAOhB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,gBAAgB,uFAKnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,QAAA,MAAM,UAAU;;;;iBAId,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;iBAWjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBnC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAClD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAStF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAM1E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAepD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAKrE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAc1F"}
@@ -0,0 +1,113 @@
1
+ import { z } from "zod";
2
+ /** Parent lock v0 — shared with reviewer Child. */
3
+ export const GOAL_ACTION_PACKET_SCHEMA_VERSION = 1;
4
+ export const HARD_DENY_IDS = [
5
+ "H-1",
6
+ "H-2",
7
+ "H-3",
8
+ "H-4",
9
+ "H-5",
10
+ "H-6",
11
+ ];
12
+ export const REVIEW_DECISIONS = [
13
+ "allow",
14
+ "allow_with_constraints",
15
+ "deny_suggest_alternative",
16
+ "uncertain",
17
+ ];
18
+ const axesSchema = z.object({
19
+ A: z.boolean(),
20
+ B: z.boolean(),
21
+ C: z.boolean(),
22
+ });
23
+ export const goalActionPacketSchema = z.object({
24
+ schema_version: z.literal(GOAL_ACTION_PACKET_SCHEMA_VERSION),
25
+ goal_id: z.string().min(1),
26
+ task_dir: z.string().nullable().optional(),
27
+ proposed_action: z.string().min(1),
28
+ action_kind: z.string().min(1),
29
+ axes: axesSchema,
30
+ hard_deny_candidates: z.array(z.string()),
31
+ done_when_ref: z.string().min(1),
32
+ diff_or_cmd_digest: z.string().min(1),
33
+ constraints_hint: z.string().nullable().optional(),
34
+ });
35
+ export const goalReviewDecisionSchema = z.object({
36
+ schema_version: z.literal(GOAL_ACTION_PACKET_SCHEMA_VERSION),
37
+ decision: z.enum(REVIEW_DECISIONS),
38
+ axes: axesSchema,
39
+ hard_deny_hit: z.string().nullable(),
40
+ constraints: z.array(z.string()).optional(),
41
+ alternative: z.string().nullable().optional(),
42
+ rationale: z.string().min(1),
43
+ l1_ready: z.object({
44
+ time: z.string().min(1),
45
+ action: z.string().min(1),
46
+ axes: axesSchema,
47
+ reviewer: z.string().min(1),
48
+ decision: z.string().min(1),
49
+ rollback_hint: z.string().min(1),
50
+ }),
51
+ h3_allowed: z.boolean().optional(),
52
+ valid: z.boolean().optional(),
53
+ invalid_reason: z.string().optional(),
54
+ });
55
+ export function parseGoalActionPacket(input) {
56
+ return goalActionPacketSchema.parse(input);
57
+ }
58
+ export function safeParseGoalActionPacket(input) {
59
+ const parsed = goalActionPacketSchema.safeParse(input);
60
+ if (!parsed.success) {
61
+ return {
62
+ valid: false,
63
+ invalid_reason: parsed.error.issues.map((i) => i.message).join("; "),
64
+ };
65
+ }
66
+ return { valid: true, packet: parsed.data };
67
+ }
68
+ export function parseGoalReviewDecision(input) {
69
+ const parsed = goalReviewDecisionSchema.parse(input);
70
+ if (parsed.hard_deny_hit != null && parsed.h3_allowed === true) {
71
+ throw new Error("invalid decision: hard_deny_hit set but h3_allowed is true");
72
+ }
73
+ return parsed;
74
+ }
75
+ export function isValidReviewDecision(decision) {
76
+ if (decision.valid === false) {
77
+ return { valid: false, reason: decision.invalid_reason ?? "marked invalid" };
78
+ }
79
+ const l1 = decision.l1_ready;
80
+ if (!l1.time || !l1.action || !l1.reviewer || !l1.decision || !l1.rollback_hint) {
81
+ return { valid: false, reason: "incomplete l1_ready" };
82
+ }
83
+ if (!decision.decision || !decision.axes) {
84
+ return { valid: false, reason: "missing decision or axes" };
85
+ }
86
+ if (decision.hard_deny_hit != null && decision.h3_allowed === true) {
87
+ return { valid: false, reason: "hard_deny_hit set but h3_allowed is true" };
88
+ }
89
+ return { valid: true };
90
+ }
91
+ export function deriveH3Allowed(decision) {
92
+ if (decision.hard_deny_hit != null) {
93
+ return false;
94
+ }
95
+ return decision.decision === "uncertain";
96
+ }
97
+ export function validateGoalReviewDecision(input) {
98
+ try {
99
+ const decision = parseGoalReviewDecision(input);
100
+ const check = isValidReviewDecision(decision);
101
+ if (!check.valid) {
102
+ return { valid: false, invalid_reason: check.reason };
103
+ }
104
+ return { valid: true, decision };
105
+ }
106
+ catch (error) {
107
+ return {
108
+ valid: false,
109
+ invalid_reason: error instanceof Error ? error.message : String(error),
110
+ };
111
+ }
112
+ }
113
+ //# sourceMappingURL=action-packet.js.map