aiwcli 0.12.3 → 0.12.7

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 (125) hide show
  1. package/bin/dev.cmd +3 -3
  2. package/bin/dev.js +16 -16
  3. package/bin/run.cmd +3 -3
  4. package/bin/run.js +21 -21
  5. package/dist/commands/branch.js +7 -2
  6. package/dist/lib/bmad-installer.js +37 -37
  7. package/dist/lib/terminal.d.ts +2 -0
  8. package/dist/lib/terminal.js +57 -7
  9. package/dist/templates/CLAUDE.md +205 -205
  10. package/dist/templates/_shared/.claude/commands/handoff-resume.md +12 -64
  11. package/dist/templates/_shared/.claude/commands/handoff.md +12 -198
  12. package/dist/templates/_shared/.claude/settings.json +65 -65
  13. package/dist/templates/_shared/.codex/workflows/handoff.md +226 -226
  14. package/dist/templates/_shared/.windsurf/workflows/handoff.md +226 -226
  15. package/dist/templates/_shared/handoff-system/CLAUDE.md +421 -0
  16. package/dist/templates/_shared/{lib-ts/handoff → handoff-system/lib}/document-generator.ts +215 -216
  17. package/dist/templates/_shared/{lib-ts/handoff → handoff-system/lib}/handoff-reader.ts +157 -158
  18. package/dist/templates/_shared/{scripts → handoff-system/scripts}/resume_handoff.ts +373 -373
  19. package/dist/templates/_shared/{scripts → handoff-system/scripts}/save_handoff.ts +469 -358
  20. package/dist/templates/_shared/handoff-system/workflows/handoff-resume.md +66 -0
  21. package/dist/templates/_shared/{workflows → handoff-system/workflows}/handoff.md +254 -254
  22. package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +2 -2
  23. package/dist/templates/_shared/hooks-ts/archive_plan.ts +159 -159
  24. package/dist/templates/_shared/hooks-ts/context_monitor.ts +147 -147
  25. package/dist/templates/_shared/hooks-ts/file-suggestion.ts +128 -128
  26. package/dist/templates/_shared/hooks-ts/pre_compact.ts +49 -49
  27. package/dist/templates/_shared/hooks-ts/session_end.ts +196 -183
  28. package/dist/templates/_shared/hooks-ts/session_start.ts +163 -151
  29. package/dist/templates/_shared/hooks-ts/task_create_capture.ts +48 -48
  30. package/dist/templates/_shared/hooks-ts/task_update_capture.ts +74 -74
  31. package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +93 -93
  32. package/dist/templates/_shared/lib-ts/CLAUDE.md +367 -367
  33. package/dist/templates/_shared/lib-ts/base/atomic-write.ts +138 -138
  34. package/dist/templates/_shared/lib-ts/base/constants.ts +303 -303
  35. package/dist/templates/_shared/lib-ts/base/git-state.ts +58 -58
  36. package/dist/templates/_shared/lib-ts/base/hook-utils.ts +582 -582
  37. package/dist/templates/_shared/lib-ts/base/inference.ts +301 -301
  38. package/dist/templates/_shared/lib-ts/base/logger.ts +247 -247
  39. package/dist/templates/_shared/lib-ts/base/state-io.ts +202 -130
  40. package/dist/templates/_shared/lib-ts/base/stop-words.ts +184 -184
  41. package/dist/templates/_shared/lib-ts/base/subprocess-utils.ts +56 -0
  42. package/dist/templates/_shared/lib-ts/base/utils.ts +184 -184
  43. package/dist/templates/_shared/lib-ts/context/context-formatter.ts +566 -560
  44. package/dist/templates/_shared/lib-ts/context/context-selector.ts +524 -515
  45. package/dist/templates/_shared/lib-ts/context/context-store.ts +712 -668
  46. package/dist/templates/_shared/lib-ts/context/plan-manager.ts +312 -312
  47. package/dist/templates/_shared/lib-ts/context/task-tracker.ts +185 -185
  48. package/dist/templates/_shared/lib-ts/package.json +20 -20
  49. package/dist/templates/_shared/lib-ts/templates/formatters.ts +102 -102
  50. package/dist/templates/_shared/lib-ts/templates/plan-context.ts +58 -58
  51. package/dist/templates/_shared/lib-ts/tsconfig.json +13 -13
  52. package/dist/templates/_shared/lib-ts/types.ts +186 -180
  53. package/dist/templates/_shared/scripts/resolve_context.ts +33 -33
  54. package/dist/templates/_shared/scripts/status_line.ts +690 -690
  55. package/dist/templates/cc-native/.claude/commands/{rlm → cc-native/rlm}/ask.md +136 -136
  56. package/dist/templates/cc-native/.claude/commands/{rlm → cc-native/rlm}/index.md +21 -21
  57. package/dist/templates/cc-native/.claude/commands/{rlm → cc-native/rlm}/overview.md +56 -56
  58. package/dist/templates/cc-native/.claude/commands/cc-native/specdev.md +10 -10
  59. package/dist/templates/cc-native/.windsurf/workflows/cc-native/fix.md +8 -8
  60. package/dist/templates/cc-native/.windsurf/workflows/cc-native/implement.md +8 -8
  61. package/dist/templates/cc-native/.windsurf/workflows/cc-native/research.md +8 -8
  62. package/dist/templates/cc-native/CC-NATIVE-README.md +189 -189
  63. package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +304 -304
  64. package/dist/templates/cc-native/_cc-native/agents/CLAUDE.md +143 -143
  65. package/dist/templates/cc-native/_cc-native/agents/PLAN-ORCHESTRATOR.md +213 -213
  66. package/dist/templates/cc-native/_cc-native/agents/plan-questions/PLAN-QUESTIONER.md +70 -70
  67. package/dist/templates/cc-native/_cc-native/cc-native.config.json +96 -96
  68. package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +247 -247
  69. package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +76 -76
  70. package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_subagent.ts +54 -54
  71. package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_write.ts +51 -51
  72. package/dist/templates/cc-native/_cc-native/hooks/mark_questions_asked.ts +53 -53
  73. package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +61 -61
  74. package/dist/templates/cc-native/_cc-native/lib-ts/agent-selection.ts +163 -163
  75. package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +156 -156
  76. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/format.ts +597 -597
  77. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/index.ts +26 -26
  78. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/tracker.ts +107 -107
  79. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/write.ts +119 -119
  80. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +21 -21
  81. package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +319 -319
  82. package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +144 -144
  83. package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +57 -57
  84. package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +83 -83
  85. package/dist/templates/cc-native/_cc-native/lib-ts/corroboration.ts +119 -119
  86. package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +79 -79
  87. package/dist/templates/cc-native/_cc-native/lib-ts/graduation.ts +132 -132
  88. package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +116 -116
  89. package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +168 -168
  90. package/dist/templates/cc-native/_cc-native/lib-ts/orchestrator.ts +70 -70
  91. package/dist/templates/cc-native/_cc-native/lib-ts/output-builder.ts +130 -130
  92. package/dist/templates/cc-native/_cc-native/lib-ts/plan-discovery.ts +80 -80
  93. package/dist/templates/cc-native/_cc-native/lib-ts/plan-enhancement.ts +41 -41
  94. package/dist/templates/cc-native/_cc-native/lib-ts/plan-questions.ts +101 -101
  95. package/dist/templates/cc-native/_cc-native/lib-ts/review-pipeline.ts +511 -511
  96. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/agent.ts +71 -71
  97. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/base/base-agent.ts +217 -217
  98. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/index.ts +12 -12
  99. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/claude-agent.ts +66 -65
  100. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/codex-agent.ts +184 -184
  101. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/gemini-agent.ts +39 -39
  102. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/orchestrator-claude-agent.ts +196 -195
  103. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/schemas.ts +201 -201
  104. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/types.ts +21 -21
  105. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/CLAUDE.md +480 -480
  106. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/embedding-indexer.ts +287 -287
  107. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/hyde.ts +148 -148
  108. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/index.ts +54 -54
  109. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/logger.ts +58 -58
  110. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/ollama-client.ts +208 -208
  111. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/retrieval-pipeline.ts +460 -460
  112. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-indexer.ts +446 -447
  113. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-loader.ts +280 -280
  114. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-searcher.ts +274 -274
  115. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/types.ts +201 -201
  116. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/vector-store.ts +278 -278
  117. package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +184 -184
  118. package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +275 -275
  119. package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +18 -18
  120. package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +329 -329
  121. package/dist/templates/cc-native/_cc-native/lib-ts/verdict.ts +72 -72
  122. package/dist/templates/cc-native/_cc-native/workflows/specdev.md +9 -9
  123. package/oclif.manifest.json +1 -1
  124. package/package.json +108 -108
  125. package/dist/templates/cc-native/_cc-native/lib-ts/nul +0 -3
@@ -1,201 +1,201 @@
1
- /**
2
- * JSON schemas and prompt constants for plan reviewers.
3
- * Centralized schema definitions used by Claude/Codex/Gemini agents and orchestrator.
4
- * See cc-native-plan-review-spec.md §4.10
5
- */
6
-
7
- // ---------------------------------------------------------------------------
8
- // Prompt Constants
9
- // ---------------------------------------------------------------------------
10
-
11
- /** Prefix for agent review prompts (embedded in stdin or --system-prompt) */
12
- export const AGENT_REVIEW_PROMPT_PREFIX = `# SINGLE-TURN PLAN REVIEW
13
-
14
- ## CRITICAL: ONE TURN ONLY
15
- You have exactly ONE response to complete this review. Do NOT attempt multi-step workflows, context queries, or phased analysis. Analyze the plan and output your review immediately.
16
-
17
- ## YOUR TASK
18
- Review the plan below from your area of expertise. Then call StructuredOutput with your assessment.
19
-
20
- ## REQUIRED OUTPUT (all fields must have content)
21
- Call StructuredOutput with:
22
- - **verdict**: "pass" (no concerns), "warn" (some concerns), or "fail" (critical issues)
23
- - **summary**: 2-3 sentences with your overall assessment and key findings (REQUIRED)
24
- - **issues**: Array of concerns found. Format each as:
25
- {"severity": "high/medium/low", "category": "...", "issue": "...", "suggested_fix": "...", "dimension": "..."}
26
- - **dimension**: Classify each issue into exactly one dimension:
27
- completeness, simplicity, security, performance, reliability,
28
- maintainability, testability, scope, feasibility, or clarity.
29
- Examples: "missing error handling" → reliability, "excessive abstraction" → simplicity,
30
- "no test strategy" → testability, "missing deployment steps" → completeness,
31
- "unclear interaction between components" → clarity.
32
- - **missing_sections**: Topics the plan should address but doesn't
33
- - **questions**: Things that need clarification before implementation
34
-
35
- ## IMPORTANT RULES
36
- 1. A "warn" verdict MUST include at least one issue explaining why
37
- 2. Summary MUST explain your reasoning, not just "looks good" or empty
38
- 3. Focus on your expertise area (architecture, security, performance, etc.)
39
- 4. Output StructuredOutput NOW - no other tools, no questions, no delays
40
- 5. Return ONLY your top 3 most critical issues. Prioritize high-severity over medium/low. Quality over quantity.
41
- `;
42
-
43
- /** Prefix for Codex/Gemini review prompts (legacy, may be deprecated) */
44
- export const REVIEW_PROMPT_PREFIX = `You are a senior staff software engineer acting as a strict plan reviewer.
45
-
46
- Review the PLAN below. Focus on:
47
- - missing steps, unclear assumptions, edge cases
48
- - security/privacy concerns
49
- - testing/rollout/rollback completeness
50
- - operational concerns (observability, failure modes)
51
- `;
52
-
53
- // ---------------------------------------------------------------------------
54
- // JSON Schemas
55
- // ---------------------------------------------------------------------------
56
-
57
- /** JSON schema for review structured output (agents: Claude, Codex, Gemini) */
58
- export const REVIEW_SCHEMA: Record<string, unknown> = {
59
- type: "object",
60
- properties: {
61
- verdict: { type: "string", enum: ["pass", "warn", "fail"] },
62
- summary: { type: "string", minLength: 20 },
63
- issues: {
64
- type: "array",
65
- items: {
66
- type: "object",
67
- properties: {
68
- severity: { type: "string", enum: ["high", "medium", "low"] },
69
- category: { type: "string" },
70
- issue: { type: "string" },
71
- suggested_fix: { type: "string" },
72
- dimension: {
73
- type: "string",
74
- enum: [
75
- "completeness", "simplicity", "security", "performance",
76
- "reliability", "maintainability", "testability", "scope",
77
- "feasibility", "clarity",
78
- ],
79
- },
80
- },
81
- required: ["severity", "category", "issue", "suggested_fix", "dimension"],
82
- additionalProperties: false,
83
- },
84
- },
85
- missing_sections: { type: "array", items: { type: "string" } },
86
- questions: { type: "array", items: { type: "string" } },
87
- },
88
- required: ["verdict", "summary", "issues", "missing_sections", "questions"],
89
- additionalProperties: false,
90
- };
91
-
92
- /**
93
- * Build orchestrator JSON schema with enum-constrained agent names.
94
- * Dynamic schema that restricts selectedAgents to valid agent names.
95
- */
96
- export function buildOrchestratorSchema(
97
- validAgentNames: string[],
98
- categories: string[],
99
- ): Record<string, unknown> {
100
- const itemsSchema: Record<string, unknown> = { type: "string" };
101
- if (validAgentNames.length > 0) {
102
- itemsSchema.enum = validAgentNames;
103
- }
104
-
105
- return {
106
- type: "object",
107
- properties: {
108
- complexity: { type: "string", enum: ["simple", "medium", "high"] },
109
- category: { type: "string", enum: categories },
110
- selectedAgents: {
111
- type: "array",
112
- items: itemsSchema,
113
- },
114
- reasoning: { type: "string" },
115
- skipReason: { type: "string" },
116
- },
117
- required: ["complexity", "category", "selectedAgents", "reasoning"],
118
- additionalProperties: false,
119
- };
120
- }
121
-
122
- // ---------------------------------------------------------------------------
123
- // Plan Questions Schema
124
- // ---------------------------------------------------------------------------
125
-
126
- /** Prefix for plan question generation prompts */
127
- export const QUESTIONS_PROMPT_PREFIX = `# PLAN QUESTION GENERATION
128
-
129
- ## CRITICAL: ONE TURN ONLY
130
- You have exactly ONE response. Do NOT attempt multi-step workflows or tool use beyond StructuredOutput.
131
-
132
- ## YOUR TASK
133
- You are reviewing a plan that was written by another agent. You have NO access to the codebase, NO session history, and NO exploration context. You see ONLY the plan text.
134
-
135
- This is intentional. Plans must be executable by a fresh agent in a new session. If the plan assumes knowledge that isn't written down, that's a gap.
136
-
137
- ## WHAT TO LOOK FOR
138
- - Questions the plan doesn't answer but should
139
- - Assumptions the plan makes without stating them
140
- - Ambiguities where a reader could interpret something two ways
141
- - Missing context that would be obvious to the author but not a new reader
142
-
143
- ## IMPORTANT
144
- - Focus on questions that would change the implementation approach if answered differently
145
- - Don't ask about things clearly stated in the plan
146
- - Don't generate generic questions — every question should be specific to THIS plan
147
- - Aim for 3-6 high-value questions
148
- `;
149
-
150
- /** JSON schema for plan question generation output */
151
- export const QUESTIONS_SCHEMA: Record<string, unknown> = {
152
- type: "object",
153
- properties: {
154
- questions: {
155
- type: "array",
156
- items: { type: "string" },
157
- description: "Questions the user should answer before this plan is implemented",
158
- },
159
- assumptions: {
160
- type: "array",
161
- items: { type: "string" },
162
- description: "Assumptions the plan makes that are not explicitly stated",
163
- },
164
- ambiguities: {
165
- type: "array",
166
- items: { type: "string" },
167
- description: "Parts of the plan that could be interpreted multiple ways",
168
- },
169
- },
170
- required: ["questions", "assumptions", "ambiguities"],
171
- additionalProperties: false,
172
- };
173
-
174
- // ---------------------------------------------------------------------------
175
- // Orchestrator Schemas
176
- // ---------------------------------------------------------------------------
177
-
178
- /** JSON schema for orchestrator structured output (static fallback) */
179
- export const ORCHESTRATOR_SCHEMA: Record<string, unknown> = {
180
- type: "object",
181
- properties: {
182
- complexity: { type: "string", enum: ["simple", "medium", "high"] },
183
- category: {
184
- type: "string",
185
- enum: [
186
- "code",
187
- "infrastructure",
188
- "documentation",
189
- "life",
190
- "business",
191
- "design",
192
- "research",
193
- ],
194
- },
195
- selectedAgents: { type: "array", items: { type: "string" } },
196
- reasoning: { type: "string" },
197
- skipReason: { type: "string" },
198
- },
199
- required: ["complexity", "category", "selectedAgents", "reasoning"],
200
- additionalProperties: false,
201
- };
1
+ /**
2
+ * JSON schemas and prompt constants for plan reviewers.
3
+ * Centralized schema definitions used by Claude/Codex/Gemini agents and orchestrator.
4
+ * See cc-native-plan-review-spec.md §4.10
5
+ */
6
+
7
+ // ---------------------------------------------------------------------------
8
+ // Prompt Constants
9
+ // ---------------------------------------------------------------------------
10
+
11
+ /** Prefix for agent review prompts (embedded in stdin or --system-prompt) */
12
+ export const AGENT_REVIEW_PROMPT_PREFIX = `# SINGLE-TURN PLAN REVIEW
13
+
14
+ ## CRITICAL: ONE TURN ONLY
15
+ You have exactly ONE response to complete this review. Do NOT attempt multi-step workflows, context queries, or phased analysis. Analyze the plan and output your review immediately.
16
+
17
+ ## YOUR TASK
18
+ Review the plan below from your area of expertise. Then call StructuredOutput with your assessment.
19
+
20
+ ## REQUIRED OUTPUT (all fields must have content)
21
+ Call StructuredOutput with:
22
+ - **verdict**: "pass" (no concerns), "warn" (some concerns), or "fail" (critical issues)
23
+ - **summary**: 2-3 sentences with your overall assessment and key findings (REQUIRED)
24
+ - **issues**: Array of concerns found. Format each as:
25
+ {"severity": "high/medium/low", "category": "...", "issue": "...", "suggested_fix": "...", "dimension": "..."}
26
+ - **dimension**: Classify each issue into exactly one dimension:
27
+ completeness, simplicity, security, performance, reliability,
28
+ maintainability, testability, scope, feasibility, or clarity.
29
+ Examples: "missing error handling" → reliability, "excessive abstraction" → simplicity,
30
+ "no test strategy" → testability, "missing deployment steps" → completeness,
31
+ "unclear interaction between components" → clarity.
32
+ - **missing_sections**: Topics the plan should address but doesn't
33
+ - **questions**: Things that need clarification before implementation
34
+
35
+ ## IMPORTANT RULES
36
+ 1. A "warn" verdict MUST include at least one issue explaining why
37
+ 2. Summary MUST explain your reasoning, not just "looks good" or empty
38
+ 3. Focus on your expertise area (architecture, security, performance, etc.)
39
+ 4. Output StructuredOutput NOW - no other tools, no questions, no delays
40
+ 5. Return ONLY your top 3 most critical issues. Prioritize high-severity over medium/low. Quality over quantity.
41
+ `;
42
+
43
+ /** Prefix for Codex/Gemini review prompts (legacy, may be deprecated) */
44
+ export const REVIEW_PROMPT_PREFIX = `You are a senior staff software engineer acting as a strict plan reviewer.
45
+
46
+ Review the PLAN below. Focus on:
47
+ - missing steps, unclear assumptions, edge cases
48
+ - security/privacy concerns
49
+ - testing/rollout/rollback completeness
50
+ - operational concerns (observability, failure modes)
51
+ `;
52
+
53
+ // ---------------------------------------------------------------------------
54
+ // JSON Schemas
55
+ // ---------------------------------------------------------------------------
56
+
57
+ /** JSON schema for review structured output (agents: Claude, Codex, Gemini) */
58
+ export const REVIEW_SCHEMA: Record<string, unknown> = {
59
+ type: "object",
60
+ properties: {
61
+ verdict: { type: "string", enum: ["pass", "warn", "fail"] },
62
+ summary: { type: "string", minLength: 20 },
63
+ issues: {
64
+ type: "array",
65
+ items: {
66
+ type: "object",
67
+ properties: {
68
+ severity: { type: "string", enum: ["high", "medium", "low"] },
69
+ category: { type: "string" },
70
+ issue: { type: "string" },
71
+ suggested_fix: { type: "string" },
72
+ dimension: {
73
+ type: "string",
74
+ enum: [
75
+ "completeness", "simplicity", "security", "performance",
76
+ "reliability", "maintainability", "testability", "scope",
77
+ "feasibility", "clarity",
78
+ ],
79
+ },
80
+ },
81
+ required: ["severity", "category", "issue", "suggested_fix", "dimension"],
82
+ additionalProperties: false,
83
+ },
84
+ },
85
+ missing_sections: { type: "array", items: { type: "string" } },
86
+ questions: { type: "array", items: { type: "string" } },
87
+ },
88
+ required: ["verdict", "summary", "issues", "missing_sections", "questions"],
89
+ additionalProperties: false,
90
+ };
91
+
92
+ /**
93
+ * Build orchestrator JSON schema with enum-constrained agent names.
94
+ * Dynamic schema that restricts selectedAgents to valid agent names.
95
+ */
96
+ export function buildOrchestratorSchema(
97
+ validAgentNames: string[],
98
+ categories: string[],
99
+ ): Record<string, unknown> {
100
+ const itemsSchema: Record<string, unknown> = { type: "string" };
101
+ if (validAgentNames.length > 0) {
102
+ itemsSchema.enum = validAgentNames;
103
+ }
104
+
105
+ return {
106
+ type: "object",
107
+ properties: {
108
+ complexity: { type: "string", enum: ["simple", "medium", "high"] },
109
+ category: { type: "string", enum: categories },
110
+ selectedAgents: {
111
+ type: "array",
112
+ items: itemsSchema,
113
+ },
114
+ reasoning: { type: "string" },
115
+ skipReason: { type: "string" },
116
+ },
117
+ required: ["complexity", "category", "selectedAgents", "reasoning"],
118
+ additionalProperties: false,
119
+ };
120
+ }
121
+
122
+ // ---------------------------------------------------------------------------
123
+ // Plan Questions Schema
124
+ // ---------------------------------------------------------------------------
125
+
126
+ /** Prefix for plan question generation prompts */
127
+ export const QUESTIONS_PROMPT_PREFIX = `# PLAN QUESTION GENERATION
128
+
129
+ ## CRITICAL: ONE TURN ONLY
130
+ You have exactly ONE response. Do NOT attempt multi-step workflows or tool use beyond StructuredOutput.
131
+
132
+ ## YOUR TASK
133
+ You are reviewing a plan that was written by another agent. You have NO access to the codebase, NO session history, and NO exploration context. You see ONLY the plan text.
134
+
135
+ This is intentional. Plans must be executable by a fresh agent in a new session. If the plan assumes knowledge that isn't written down, that's a gap.
136
+
137
+ ## WHAT TO LOOK FOR
138
+ - Questions the plan doesn't answer but should
139
+ - Assumptions the plan makes without stating them
140
+ - Ambiguities where a reader could interpret something two ways
141
+ - Missing context that would be obvious to the author but not a new reader
142
+
143
+ ## IMPORTANT
144
+ - Focus on questions that would change the implementation approach if answered differently
145
+ - Don't ask about things clearly stated in the plan
146
+ - Don't generate generic questions — every question should be specific to THIS plan
147
+ - Aim for 3-6 high-value questions
148
+ `;
149
+
150
+ /** JSON schema for plan question generation output */
151
+ export const QUESTIONS_SCHEMA: Record<string, unknown> = {
152
+ type: "object",
153
+ properties: {
154
+ questions: {
155
+ type: "array",
156
+ items: { type: "string" },
157
+ description: "Questions the user should answer before this plan is implemented",
158
+ },
159
+ assumptions: {
160
+ type: "array",
161
+ items: { type: "string" },
162
+ description: "Assumptions the plan makes that are not explicitly stated",
163
+ },
164
+ ambiguities: {
165
+ type: "array",
166
+ items: { type: "string" },
167
+ description: "Parts of the plan that could be interpreted multiple ways",
168
+ },
169
+ },
170
+ required: ["questions", "assumptions", "ambiguities"],
171
+ additionalProperties: false,
172
+ };
173
+
174
+ // ---------------------------------------------------------------------------
175
+ // Orchestrator Schemas
176
+ // ---------------------------------------------------------------------------
177
+
178
+ /** JSON schema for orchestrator structured output (static fallback) */
179
+ export const ORCHESTRATOR_SCHEMA: Record<string, unknown> = {
180
+ type: "object",
181
+ properties: {
182
+ complexity: { type: "string", enum: ["simple", "medium", "high"] },
183
+ category: {
184
+ type: "string",
185
+ enum: [
186
+ "code",
187
+ "infrastructure",
188
+ "documentation",
189
+ "life",
190
+ "business",
191
+ "design",
192
+ "research",
193
+ ],
194
+ },
195
+ selectedAgents: { type: "array", items: { type: "string" } },
196
+ reasoning: { type: "string" },
197
+ skipReason: { type: "string" },
198
+ },
199
+ required: ["complexity", "category", "selectedAgents", "reasoning"],
200
+ additionalProperties: false,
201
+ };
@@ -1,23 +1,23 @@
1
- /**
2
- * Reviewer interface and options for plan review implementations.
3
- * See cc-native-plan-review-spec.md §4.9
4
- */
5
-
6
- import type { ReviewerResult, Verdict, ReviewData } from "../types.js";
7
-
8
- // Re-export for convenience
9
-
10
-
11
- /** Create a standard ReviewerResult. Shared by all reviewer implementations. */
12
- export function makeResult(
13
- name: string,
14
- ok: boolean,
15
- verdict: Verdict,
16
- data: ReviewData | Record<string, unknown>,
17
- raw: string,
18
- err: string,
19
- ): ReviewerResult {
20
- return { name, ok, verdict, data: data as Record<string, unknown>, raw, err };
21
- }
1
+ /**
2
+ * Reviewer interface and options for plan review implementations.
3
+ * See cc-native-plan-review-spec.md §4.9
4
+ */
5
+
6
+ import type { ReviewerResult, Verdict, ReviewData } from "../types.js";
7
+
8
+ // Re-export for convenience
9
+
10
+
11
+ /** Create a standard ReviewerResult. Shared by all reviewer implementations. */
12
+ export function makeResult(
13
+ name: string,
14
+ ok: boolean,
15
+ verdict: Verdict,
16
+ data: ReviewData | Record<string, unknown>,
17
+ raw: string,
18
+ err: string,
19
+ ): ReviewerResult {
20
+ return { name, ok, verdict, data: data as Record<string, unknown>, raw, err };
21
+ }
22
22
 
23
23
  export {type Reviewer, type ReviewerResult, type ReviewOptions} from "../types.js";