aiwcli 0.12.7 → 0.12.8

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 (79) hide show
  1. package/dist/templates/CLAUDE.md +27 -0
  2. package/dist/templates/_shared/.claude/{commands/handoff.md → skills/handoff/SKILL.md} +3 -2
  3. package/dist/templates/_shared/.claude/{commands/handoff-resume.md → skills/handoff-resume/SKILL.md} +2 -1
  4. package/dist/templates/_shared/handoff-system/CLAUDE.md +433 -421
  5. package/dist/templates/_shared/lib-ts/CLAUDE.md +3 -3
  6. package/dist/templates/_shared/lib-ts/base/constants.ts +324 -306
  7. package/dist/templates/_shared/lib-ts/base/inference.ts +3 -3
  8. package/dist/templates/_shared/lib-ts/context/CLAUDE.md +134 -0
  9. package/dist/templates/_shared/scripts/status_line.ts +26 -29
  10. package/dist/templates/cc-native/.claude/commands/cc-native/specdev.md +1 -1
  11. package/dist/templates/cc-native/.claude/settings.json +3 -2
  12. package/dist/templates/cc-native/_cc-native/artifacts/CLAUDE.md +64 -0
  13. package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/format.ts +597 -597
  14. package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/index.ts +26 -26
  15. package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/tracker.ts +107 -107
  16. package/dist/templates/cc-native/_cc-native/{lib-ts/artifacts → artifacts/lib}/write.ts +119 -119
  17. package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +237 -247
  18. package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +76 -76
  19. package/dist/templates/cc-native/_cc-native/hooks/validate_task_prompt.ts +76 -0
  20. package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +163 -156
  21. package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +116 -116
  22. package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +1 -1
  23. package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +329 -329
  24. package/dist/templates/cc-native/_cc-native/plan-review/CLAUDE.md +149 -0
  25. package/dist/templates/cc-native/_cc-native/plan-review/agents/CLAUDE.md +143 -0
  26. package/dist/templates/cc-native/_cc-native/plan-review/agents/PLAN-ORCHESTRATOR.md +213 -0
  27. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-questions/PLAN-QUESTIONER.md +70 -0
  28. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-EVOLUTION.md +62 -0
  29. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-PATTERNS.md +61 -0
  30. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-STRUCTURE.md +62 -0
  31. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ASSUMPTION-TRACER.md +56 -0
  32. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CLARITY-AUDITOR.md +53 -0
  33. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-FEASIBILITY.md +66 -0
  34. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-GAPS.md +70 -0
  35. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-ORDERING.md +62 -0
  36. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CONSTRAINT-VALIDATOR.md +72 -0
  37. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-ADR-VALIDATOR.md +61 -0
  38. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-SCALE-MATCHER.md +64 -0
  39. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DEVILS-ADVOCATE.md +56 -0
  40. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DOCUMENTATION-PHILOSOPHY.md +86 -0
  41. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HANDOFF-READINESS.md +59 -0
  42. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HIDDEN-COMPLEXITY.md +58 -0
  43. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/INCREMENTAL-DELIVERY.md +66 -0
  44. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-DEPENDENCY.md +62 -0
  45. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-FMEA.md +66 -0
  46. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-PREMORTEM.md +71 -0
  47. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-REVERSIBILITY.md +74 -0
  48. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SCOPE-BOUNDARY.md +77 -0
  49. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SIMPLICITY-GUARDIAN.md +62 -0
  50. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SKEPTIC.md +68 -0
  51. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-BEHAVIOR-AUDITOR.md +61 -0
  52. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-CHARACTERIZATION.md +71 -0
  53. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-FIRST-VALIDATOR.md +61 -0
  54. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-PYRAMID-ANALYZER.md +61 -0
  55. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-COSTS.md +67 -0
  56. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-STAKEHOLDERS.md +65 -0
  57. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-COVERAGE.md +74 -0
  58. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-STRENGTH.md +69 -0
  59. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/agent-selection.ts +163 -163
  60. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/corroboration.ts +119 -119
  61. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/graduation.ts +132 -132
  62. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/orchestrator.ts +70 -70
  63. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/output-builder.ts +130 -130
  64. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/plan-questions.ts +102 -102
  65. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/review-pipeline.ts +511 -511
  66. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/agent.ts +74 -74
  67. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/base/base-agent.ts +217 -217
  68. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/index.ts +12 -12
  69. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/claude-agent.ts +66 -66
  70. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/codex-agent.ts +185 -185
  71. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/gemini-agent.ts +39 -39
  72. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/providers/orchestrator-claude-agent.ts +196 -196
  73. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/schemas.ts +201 -201
  74. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/reviewers/types.ts +23 -23
  75. package/dist/templates/cc-native/_cc-native/{lib-ts → plan-review/lib}/verdict.ts +72 -72
  76. package/dist/templates/cc-native/_cc-native/{workflows → plan-review/workflows}/specdev.md +9 -9
  77. package/oclif.manifest.json +1 -1
  78. package/package.json +1 -1
  79. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +0 -21
@@ -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
- }
22
-
23
- export {type Reviewer, type ReviewerResult, type ReviewOptions} from "../types.js";
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 "../../../lib-ts/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
+
23
+ export {type Reviewer, type ReviewerResult, type ReviewOptions} from "../../../lib-ts/types.js";
@@ -1,72 +1,72 @@
1
- /**
2
- * Pure verdict aggregation logic.
3
- * See cc-native-plan-review-spec.md §4.2
4
- */
5
-
6
- import type { ReviewDecisionResult, Verdict } from "./types.js";
7
-
8
- /**
9
- * Return the worst verdict from a list.
10
- * Order: pass < warn < fail. skip→pass, error→warn.
11
- */
12
- export function worstVerdict(verdicts: Verdict[]): Verdict {
13
- const order: Record<Verdict, number> = {
14
- pass: 0,
15
- warn: 1,
16
- fail: 2,
17
- skip: 0,
18
- error: 1,
19
- };
20
-
21
- let worst: Verdict = "pass";
22
- for (const v of verdicts) {
23
- if ((order[v] ?? 1) > (order[worst] ?? 0)) {
24
- worst = v;
25
- }
26
- }
27
-
28
- // Normalize error → warn
29
- if (worst === "error") return "warn";
30
- return worst;
31
- }
32
-
33
- /**
34
- * Verdict aggregation: fail veto triggers a block.
35
- *
36
- * Priority order:
37
- * 1. Fail Veto: Any fail → deny (ISO 61508 zero-tolerance)
38
- * 2. Acceptable: warns are informational only
39
- *
40
- * Error exclusion: Detectors that produce no signal (error/skip) are excluded
41
- * from the denominator.
42
- *
43
- * @param allVerdicts - List of verdict strings from all reviewers
44
- * @returns ReviewDecisionResult with should_deny, reason, and score
45
- */
46
- export function computeReviewDecision(
47
- allVerdicts: Verdict[],
48
- ): ReviewDecisionResult {
49
- // Exclude non-signal verdicts
50
- const signalVerdicts = allVerdicts.filter(
51
- (v) => v === "pass" || v === "warn" || v === "fail",
52
- );
53
-
54
- if (signalVerdicts.length === 0) {
55
- return { should_deny: false, reason: "no_signal", score: 0 };
56
- }
57
-
58
- // Fail blocks unconditionally
59
- const failCount = signalVerdicts.filter((v) => v === "fail").length;
60
- if (failCount > 0) {
61
- return { should_deny: true, reason: "fail_veto", score: 1 };
62
- }
63
-
64
- // Warn also blocks — reviewers flagged concerns worth addressing
65
- const warnCount = signalVerdicts.filter((v) => v === "warn").length;
66
- const warnRatio = warnCount / signalVerdicts.length;
67
- if (warnCount > 0) {
68
- return { should_deny: true, reason: "warn_block", score: warnRatio };
69
- }
70
-
71
- return { should_deny: false, reason: "acceptable", score: 0 };
72
- }
1
+ /**
2
+ * Pure verdict aggregation logic.
3
+ * See cc-native-plan-review-spec.md §4.2
4
+ */
5
+
6
+ import type { ReviewDecisionResult, Verdict } from "../../lib-ts/types.js";
7
+
8
+ /**
9
+ * Return the worst verdict from a list.
10
+ * Order: pass < warn < fail. skip→pass, error→warn.
11
+ */
12
+ export function worstVerdict(verdicts: Verdict[]): Verdict {
13
+ const order: Record<Verdict, number> = {
14
+ pass: 0,
15
+ warn: 1,
16
+ fail: 2,
17
+ skip: 0,
18
+ error: 1,
19
+ };
20
+
21
+ let worst: Verdict = "pass";
22
+ for (const v of verdicts) {
23
+ if ((order[v] ?? 1) > (order[worst] ?? 0)) {
24
+ worst = v;
25
+ }
26
+ }
27
+
28
+ // Normalize error → warn
29
+ if (worst === "error") return "warn";
30
+ return worst;
31
+ }
32
+
33
+ /**
34
+ * Verdict aggregation: fail veto triggers a block.
35
+ *
36
+ * Priority order:
37
+ * 1. Fail Veto: Any fail → deny (ISO 61508 zero-tolerance)
38
+ * 2. Acceptable: warns are informational only
39
+ *
40
+ * Error exclusion: Detectors that produce no signal (error/skip) are excluded
41
+ * from the denominator.
42
+ *
43
+ * @param allVerdicts - List of verdict strings from all reviewers
44
+ * @returns ReviewDecisionResult with should_deny, reason, and score
45
+ */
46
+ export function computeReviewDecision(
47
+ allVerdicts: Verdict[],
48
+ ): ReviewDecisionResult {
49
+ // Exclude non-signal verdicts
50
+ const signalVerdicts = allVerdicts.filter(
51
+ (v) => v === "pass" || v === "warn" || v === "fail",
52
+ );
53
+
54
+ if (signalVerdicts.length === 0) {
55
+ return { should_deny: false, reason: "no_signal", score: 0 };
56
+ }
57
+
58
+ // Fail blocks unconditionally
59
+ const failCount = signalVerdicts.filter((v) => v === "fail").length;
60
+ if (failCount > 0) {
61
+ return { should_deny: true, reason: "fail_veto", score: 1 };
62
+ }
63
+
64
+ // Warn also blocks — reviewers flagged concerns worth addressing
65
+ const warnCount = signalVerdicts.filter((v) => v === "warn").length;
66
+ const warnRatio = warnCount / signalVerdicts.length;
67
+ if (warnCount > 0) {
68
+ return { should_deny: true, reason: "warn_block", score: warnRatio };
69
+ }
70
+
71
+ return { should_deny: false, reason: "acceptable", score: 0 };
72
+ }
@@ -1,9 +1,9 @@
1
- Read this spec and interview me in detail using the AskUserQuestionTool about literally anything:
2
- - Technical implementation
3
- - UI & UX
4
- - Concerns
5
- - Tradeoffs, etc.
6
-
7
- But make sure the questions are not obvious
8
-
9
- Be very in-depth and continue interviewing me continually until it's complete, then write the spec to the file.
1
+ Read this spec and interview me in detail using the AskUserQuestionTool about literally anything:
2
+ - Technical implementation
3
+ - UI & UX
4
+ - Concerns
5
+ - Tradeoffs, etc.
6
+
7
+ But make sure the questions are not obvious
8
+
9
+ Be very in-depth and continue interviewing me continually until it's complete, then write the spec to the file.
@@ -416,5 +416,5 @@
416
416
  ]
417
417
  }
418
418
  },
419
- "version": "0.12.7"
419
+ "version": "0.12.8"
420
420
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aiwcli",
3
3
  "description": "AI Workflow CLI - Command-line interface for AI-powered workflows",
4
- "version": "0.12.7",
4
+ "version": "0.12.8",
5
5
  "author": "jofu-tofu",
6
6
  "bin": {
7
7
  "aiw": "bin/run.js"
@@ -1,21 +0,0 @@
1
- /**
2
- * Review artifact writing and formatting.
3
- * Re-exports from artifacts/ subdirectory for backward compatibility.
4
- */
5
-
6
- export {
7
- formatReviewMarkdown,
8
- formatCombinedMarkdown,
9
- buildInlineReviewSummary,
10
- extractTopIssuesText,
11
- buildHighIssuesDocument,
12
- buildCorroborationReport,
13
- generateReviewIndex,
14
- buildCombinedJson,
15
- writeCombinedArtifacts,
16
- writeFile,
17
- writeFileNonCritical,
18
- writeReviewTracker,
19
- extractPreviousHashes,
20
- } from "./artifacts/index.js";
21
- export type { ReviewTrackerEntry } from "./artifacts/index.js";