@jigyasudham/veto 1.2.19 → 1.4.1

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 (61) hide show
  1. package/README.md +303 -251
  2. package/dist/cli.js +35 -9
  3. package/dist/cli.js.map +1 -1
  4. package/dist/context/reader.d.ts.map +1 -1
  5. package/dist/context/reader.js +4 -1
  6. package/dist/context/reader.js.map +1 -1
  7. package/dist/council/decision-engine.d.ts.map +1 -1
  8. package/dist/council/decision-engine.js +21 -1
  9. package/dist/council/decision-engine.js.map +1 -1
  10. package/dist/council/decision-extractor.d.ts +13 -0
  11. package/dist/council/decision-extractor.d.ts.map +1 -0
  12. package/dist/council/decision-extractor.js +66 -0
  13. package/dist/council/decision-extractor.js.map +1 -0
  14. package/dist/council/devil-advocate.d.ts.map +1 -1
  15. package/dist/council/devil-advocate.js +12 -1
  16. package/dist/council/devil-advocate.js.map +1 -1
  17. package/dist/council/index.d.ts.map +1 -1
  18. package/dist/council/index.js +26 -5
  19. package/dist/council/index.js.map +1 -1
  20. package/dist/council/lead-developer.d.ts.map +1 -1
  21. package/dist/council/lead-developer.js +34 -14
  22. package/dist/council/lead-developer.js.map +1 -1
  23. package/dist/council/legal-compliance.d.ts.map +1 -1
  24. package/dist/council/legal-compliance.js +44 -24
  25. package/dist/council/legal-compliance.js.map +1 -1
  26. package/dist/council/llm-council.d.ts +4 -0
  27. package/dist/council/llm-council.d.ts.map +1 -0
  28. package/dist/council/llm-council.js +160 -0
  29. package/dist/council/llm-council.js.map +1 -0
  30. package/dist/council/product-manager.d.ts.map +1 -1
  31. package/dist/council/product-manager.js +33 -13
  32. package/dist/council/product-manager.js.map +1 -1
  33. package/dist/council/security.d.ts.map +1 -1
  34. package/dist/council/security.js +44 -24
  35. package/dist/council/security.js.map +1 -1
  36. package/dist/council/system-architect.d.ts.map +1 -1
  37. package/dist/council/system-architect.js +33 -13
  38. package/dist/council/system-architect.js.map +1 -1
  39. package/dist/council/types.d.ts +2 -0
  40. package/dist/council/types.d.ts.map +1 -1
  41. package/dist/council/ux-designer.d.ts.map +1 -1
  42. package/dist/council/ux-designer.js +47 -26
  43. package/dist/council/ux-designer.js.map +1 -1
  44. package/dist/memory/local.d.ts +40 -1
  45. package/dist/memory/local.d.ts.map +1 -1
  46. package/dist/memory/local.js +95 -4
  47. package/dist/memory/local.js.map +1 -1
  48. package/dist/router/complexity-scorer.js +2 -2
  49. package/dist/router/complexity-scorer.js.map +1 -1
  50. package/dist/server.js +232 -793
  51. package/dist/server.js.map +1 -1
  52. package/dist/skills/memory/skill-session-restore.d.ts.map +1 -1
  53. package/dist/skills/memory/skill-session-restore.js +19 -24
  54. package/dist/skills/memory/skill-session-restore.js.map +1 -1
  55. package/dist/skills/memory/skill-session-save.js +4 -4
  56. package/dist/skills/memory/skill-session-save.js.map +1 -1
  57. package/dist/tools/definitions.d.ts +1073 -0
  58. package/dist/tools/definitions.d.ts.map +1 -0
  59. package/dist/tools/definitions.js +797 -0
  60. package/dist/tools/definitions.js.map +1 -0
  61. package/package.json +2 -2
@@ -11,16 +11,37 @@ import { buildContextString } from '../context/reader.js';
11
11
  export function runDebate(input) {
12
12
  const enrichedContext = buildContextString(input.project_dir, input.context);
13
13
  const fullText = enrichedContext ? `${input.task}\n\n${enrichedContext}` : input.task;
14
- // All 7 agents are synchronous — run them all then collect results
14
+ const strictness = input.strictness ?? 'standard';
15
+ // fast: 3 core agents (dev + architect + security) — full council as fallback
15
16
  const lead_dev = leadDevAnalyze(fullText);
16
- const pm = pmAnalyze(fullText);
17
17
  const architect = architectAnalyze(fullText);
18
- const ux = uxAnalyze(fullText);
19
- const devil = devilAnalyze(fullText);
20
- const legal = legalAnalyze(fullText);
21
18
  const security = securityAnalyze(fullText);
19
+ let pm = pmAnalyze(fullText);
20
+ let ux = uxAnalyze(fullText);
21
+ let devil = devilAnalyze(fullText);
22
+ let legal = legalAnalyze(fullText);
23
+ if (strictness === 'fast') {
24
+ // Override non-core agents with silent approvals to preserve DebateResult shape
25
+ const silent = () => ({ verdict: 'approve', reason: 'skipped (fast mode)', concerns: [] });
26
+ pm = silent();
27
+ ux = silent();
28
+ devil = silent();
29
+ legal = silent();
30
+ }
22
31
  const votes = { lead_dev, pm, architect, ux, devil, legal, security };
23
32
  const { final_verdict, block_reasons, warnings, recommended } = decide(votes);
33
+ if (strictness === 'strict' && block_reasons.length > 0) {
34
+ // Rebuttal round: devil's advocate argues against the most critical blocker
35
+ const rebuttalContext = `REBUTTAL REQUIRED. The council flagged this blocker:\n"${block_reasons[0]}"\nDevil's Advocate: argue why this concern may be overstated or how it can be mitigated.\n\n${fullText}`;
36
+ const rebuttal = devilAnalyze(rebuttalContext);
37
+ // Merge rebuttal reasoning into devil vote
38
+ votes.devil = {
39
+ verdict: rebuttal.verdict,
40
+ reason: `[REBUTTAL] ${rebuttal.reason}`,
41
+ concerns: rebuttal.concerns,
42
+ recommendation: rebuttal.recommendation,
43
+ };
44
+ }
24
45
  const debated_at = new Date().toISOString();
25
46
  const formatted_output = formatDebate(input.task, votes, final_verdict, block_reasons, warnings, recommended);
26
47
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/council/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAEtF,mEAAmE;IACnE,MAAM,QAAQ,GAAK,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAW,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,SAAS,GAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAW,SAAS,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAQ,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAQ,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAK,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE9G,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa;QACb,KAAK;QACL,WAAW;QACX,aAAa;QACb,QAAQ;QACR,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/council/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lead-developer.d.ts","sourceRoot":"","sources":["../../src/council/lead-developer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoI5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAkD/C"}
1
+ {"version":3,"file":"lead-developer.d.ts","sourceRoot":"","sources":["../../src/council/lead-developer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqI5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAoD/C"}
@@ -1,3 +1,4 @@
1
+ import { extractDecision, pickSide, reframeVote } from './decision-extractor.js';
1
2
  const BLOCK_RULES = [
2
3
  {
3
4
  pattern: /\bmd5\b/i,
@@ -140,33 +141,52 @@ export function analyze(task) {
140
141
  concerns.push(rule.concern);
141
142
  }
142
143
  }
144
+ let vote;
143
145
  if (blocks.length > 0) {
144
- return {
146
+ vote = {
145
147
  verdict: 'block',
146
148
  reason: blocks[0].reason,
147
149
  concerns: [...blocks.slice(1).map(b => b.reason), ...concerns],
148
150
  recommendation: blocks.map(b => b.recommendation).join(' | '),
149
151
  };
150
152
  }
151
- if (concerns.length > 0) {
152
- return {
153
+ else if (concerns.length > 0) {
154
+ vote = {
153
155
  verdict: 'warn',
154
156
  reason: `${concerns.length} code quality issue${concerns.length > 1 ? 's' : ''} detected.`,
155
157
  concerns,
156
158
  recommendation: 'Address quality concerns before shipping to production.',
157
159
  };
158
160
  }
159
- // No bad patterns — apply topic-based expert analysis
160
- const matched = TOPIC_INSIGHTS.filter(t => t.pattern.test(task));
161
- if (matched.length > 0) {
162
- const top = matched.slice(0, 2);
163
- return {
164
- verdict: 'warn',
165
- reason: top[0].concern,
166
- concerns: top.slice(1).map(t => t.concern),
167
- recommendation: top.map(t => t.recommendation).join(' | '),
168
- };
161
+ else {
162
+ // No bad patterns apply topic-based expert analysis
163
+ const matched = TOPIC_INSIGHTS.filter(t => t.pattern.test(task));
164
+ if (matched.length > 0) {
165
+ const top = matched.slice(0, 2);
166
+ vote = {
167
+ verdict: 'warn',
168
+ reason: top[0].concern,
169
+ concerns: top.slice(1).map(t => t.concern),
170
+ recommendation: top.map(t => t.recommendation).join(' | '),
171
+ };
172
+ }
173
+ else {
174
+ vote = { verdict: 'approve', reason: 'No security or quality violations detected. Code quality standards appear satisfied.', concerns: [] };
175
+ }
169
176
  }
170
- return { verdict: 'approve', reason: 'No security or quality violations detected. Code quality standards appear satisfied.', concerns: [] };
177
+ return applyDecisionStance(vote, task);
178
+ }
179
+ // Risk: traits that increase implementation burden / maintenance surface
180
+ const LEAD_DEV_RISK = /\b(http|express|rest.?api|api.?layer|bundl|embed|integrat\s+into|new\s+(server|layer|endpoint|transport))\b/i;
181
+ function applyDecisionStance(vote, task) {
182
+ const ctx = extractDecision(task);
183
+ if (!ctx.isDecisionTask)
184
+ return vote;
185
+ const { optionA, optionB } = ctx;
186
+ const side = pickSide(optionA, optionB, LEAD_DEV_RISK);
187
+ const advice = side
188
+ ? `"${side.avoided}" adds new infrastructure to maintain; "${side.preferred}" limits scope and keeps the codebase smaller — validate real demand before building.`
189
+ : `Evaluate which option requires fewer new abstractions. Prefer the path with the smaller implementation surface until user demand justifies the cost.`;
190
+ return reframeVote(vote, ctx, side?.preferred ?? null, advice);
171
191
  }
172
192
  //# sourceMappingURL=lead-developer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lead-developer.js","sourceRoot":"","sources":["../../src/council/lead-developer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lead-developer.js","sourceRoot":"","sources":["../../src/council/lead-developer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"legal-compliance.d.ts","sourceRoot":"","sources":["../../src/council/legal-compliance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA8G5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAqF/C"}
1
+ {"version":3,"file":"legal-compliance.d.ts","sourceRoot":"","sources":["../../src/council/legal-compliance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA+G5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAuF/C"}
@@ -1,3 +1,4 @@
1
+ import { extractDecision, pickSide, reframeVote } from './decision-extractor.js';
1
2
  const BLOCK_RULES = [
2
3
  {
3
4
  pattern: /\b(gpl|gnu.?general.?public.?license)\b/i,
@@ -121,22 +122,6 @@ export function analyze(task) {
121
122
  recommendations.push(rule.recommendation);
122
123
  }
123
124
  }
124
- if (blocks.length > 0) {
125
- return {
126
- verdict: 'block',
127
- reason: blocks[0].reason,
128
- concerns: blocks.slice(1).map(b => b.reason),
129
- recommendation: blocks.map(b => b.recommendation).join(' | '),
130
- };
131
- }
132
- if (concerns.length > 0) {
133
- return {
134
- verdict: 'warn',
135
- reason: `${concerns.length} legal or compliance concern${concerns.length > 1 ? 's' : ''} — review before shipping.`,
136
- concerns,
137
- recommendation: recommendations[0],
138
- };
139
- }
140
125
  // Topic-based legal analysis for tasks with no specific pattern matches
141
126
  const TOPIC_INSIGHTS = [
142
127
  {
@@ -170,16 +155,51 @@ export function analyze(task) {
170
155
  recommendation: 'If collecting any telemetry, disclose it in the Marketplace listing and use VS Code\'s telemetry API which respects user opt-out settings. Consult Marketplace policies before publishing.',
171
156
  },
172
157
  ];
173
- const topicMatched = TOPIC_INSIGHTS.filter(t => t.pattern.test(task));
174
- if (topicMatched.length > 0) {
175
- const top = topicMatched.slice(0, 2);
176
- return {
158
+ let vote;
159
+ if (blocks.length > 0) {
160
+ vote = {
161
+ verdict: 'block',
162
+ reason: blocks[0].reason,
163
+ concerns: blocks.slice(1).map(b => b.reason),
164
+ recommendation: blocks.map(b => b.recommendation).join(' | '),
165
+ };
166
+ }
167
+ else if (concerns.length > 0) {
168
+ vote = {
177
169
  verdict: 'warn',
178
- reason: top[0].concern,
179
- concerns: top.slice(1).map(t => t.concern),
180
- recommendation: top.map(t => t.recommendation).join(' | '),
170
+ reason: `${concerns.length} legal or compliance concern${concerns.length > 1 ? 's' : ''} — review before shipping.`,
171
+ concerns,
172
+ recommendation: recommendations[0],
181
173
  };
182
174
  }
183
- return { verdict: 'approve', reason: 'No legal or compliance issues detected.', concerns: [] };
175
+ else {
176
+ const topicMatched = TOPIC_INSIGHTS.filter(t => t.pattern.test(task));
177
+ if (topicMatched.length > 0) {
178
+ const top = topicMatched.slice(0, 2);
179
+ vote = {
180
+ verdict: 'warn',
181
+ reason: top[0].concern,
182
+ concerns: top.slice(1).map(t => t.concern),
183
+ recommendation: top.map(t => t.recommendation).join(' | '),
184
+ };
185
+ }
186
+ else {
187
+ vote = { verdict: 'approve', reason: 'No legal or compliance issues detected.', concerns: [] };
188
+ }
189
+ }
190
+ return applyDecisionStance(vote, task);
191
+ }
192
+ // Legal risk: options that expose more data surface, add network endpoints, or create new data flows
193
+ const LEGAL_RISK = /\b(http|rest.?api|network|remote|endpoint|expose|token|oauth|third.?party|integrate)\b/i;
194
+ function applyDecisionStance(vote, task) {
195
+ const ctx = extractDecision(task);
196
+ if (!ctx.isDecisionTask)
197
+ return vote;
198
+ const { optionA, optionB } = ctx;
199
+ const side = pickSide(optionA, optionB, LEGAL_RISK);
200
+ const advice = side
201
+ ? `"${side.preferred}" has a smaller data surface area and fewer cross-boundary data flows. "${side.avoided}" introduces new data exposure obligations — document retention policies and user consent before shipping.`
202
+ : `Both options may create data obligations. Confirm: what user data each option stores, for how long, and whether users can delete it.`;
203
+ return reframeVote(vote, ctx, side?.preferred ?? null, advice);
184
204
  }
185
205
  //# sourceMappingURL=legal-compliance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"legal-compliance.js","sourceRoot":"","sources":["../../src/council/legal-compliance.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAuE;IACtF;QACE,OAAO,EAAE,0CAA0C;QACnD,MAAM,EAAE,+FAA+F;QACvG,cAAc,EAAE,iGAAiG;KAClH;IACD;QACE,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,iFAAiF;QACzF,cAAc,EAAE,0FAA0F;KAC3G;IACD;QACE,OAAO,EAAE,0EAA0E;QACnF,MAAM,EAAE,4GAA4G;QACpH,cAAc,EAAE,sHAAsH;KACvI;IACD;QACE,OAAO,EAAE,mDAAmD;QAC5D,MAAM,EAAE,sGAAsG;QAC9G,cAAc,EAAE,+GAA+G;KAChI;IACD;QACE,OAAO,EAAE,wDAAwD;QACjE,MAAM,EAAE,kGAAkG;QAC1G,cAAc,EAAE,4FAA4F;KAC7G;IACD;QACE,OAAO,EAAE,kEAAkE;QAC3E,MAAM,EAAE,6GAA6G;QACrH,cAAc,EAAE,8FAA8F;KAC/G;IACD;QACE,OAAO,EAAE,2EAA2E;QACpF,MAAM,EAAE,6GAA6G;QACrH,cAAc,EAAE,uGAAuG;KACxH;IACD;QACE,OAAO,EAAE,wFAAwF;QACjG,MAAM,EAAE,+FAA+F;QACvG,cAAc,EAAE,6GAA6G;KAC9H;IACD;QACE,OAAO,EAAE,4EAA4E;QACrF,MAAM,EAAE,4FAA4F;QACpG,cAAc,EAAE,kHAAkH;KACnI;IACD;QACE,OAAO,EAAE,6DAA6D;QACtE,MAAM,EAAE,kGAAkG;QAC1G,cAAc,EAAE,wFAAwF;KACzG;CACF,CAAC;AAEF,MAAM,UAAU,GAAwE;IACtF;QACE,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,uGAAuG;QAChH,cAAc,EAAE,oGAAoG;KACrH;IACD;QACE,OAAO,EAAE,oHAAoH;QAC7H,OAAO,EAAE,2FAA2F;QACpG,cAAc,EAAE,gGAAgG;KACjH;IACD;QACE,OAAO,EAAE,mEAAmE;QAC5E,OAAO,EAAE,6EAA6E;QACtF,cAAc,EAAE,gGAAgG;KACjH;IACD;QACE,OAAO,EAAE,4EAA4E;QACrF,OAAO,EAAE,qFAAqF;QAC9F,cAAc,EAAE,gGAAgG;KACjH;IACD;QACE,OAAO,EAAE,yCAAyC;QAClD,OAAO,EAAE,kGAAkG;QAC3G,cAAc,EAAE,2EAA2E;KAC5F;IACD;QACE,OAAO,EAAE,kFAAkF;QAC3F,OAAO,EAAE,sGAAsG;QAC/G,cAAc,EAAE,iGAAiG;KAClH;IACD;QACE,OAAO,EAAE,+EAA+E;QACxF,OAAO,EAAE,oGAAoG;QAC7G,cAAc,EAAE,4FAA4F;KAC7G;IACD;QACE,OAAO,EAAE,mCAAmC;QAC5C,OAAO,EAAE,sEAAsE;QAC/E,cAAc,EAAE,iHAAiH;KAClI;IACD;QACE,OAAO,EAAE,iFAAiF;QAC1F,OAAO,EAAE,oFAAoF;QAC7F,cAAc,EAAE,kFAAkF;KACnG;IACD;QACE,OAAO,EAAE,+EAA+E;QACxF,OAAO,EAAE,wFAAwF;QACjG,cAAc,EAAE,oGAAoG;KACrH;CACF,CAAC;AAEF,MAAM,OAAO,GAAG,0EAA0E,CAAC;AAE3F,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,qCAAqC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7F,CAAC;IAED,MAAM,MAAM,GAAsD,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC5C,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,+BAA+B,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,4BAA4B;YACnH,QAAQ;YACR,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,MAAM,cAAc,GAAwE;QAC1F;YACE,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,wKAAwK;YACjL,cAAc,EAAE,sLAAsL;SACvM;QACD;YACE,OAAO,EAAE,qDAAqD;YAC9D,OAAO,EAAE,2KAA2K;YACpL,cAAc,EAAE,4KAA4K;SAC7L;QACD;YACE,OAAO,EAAE,yCAAyC;YAClD,OAAO,EAAE,+KAA+K;YACxL,cAAc,EAAE,+KAA+K;SAChM;QACD;YACE,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE,4KAA4K;YACrL,cAAc,EAAE,mJAAmJ;SACpK;QACD;YACE,OAAO,EAAE,oCAAoC;YAC7C,OAAO,EAAE,mKAAmK;YAC5K,cAAc,EAAE,yJAAyJ;SAC1K;QACD;YACE,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE,2KAA2K;YACpL,cAAc,EAAE,4LAA4L;SAC7M;KACF,CAAC;IAEF,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO;YACtB,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1C,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;SAC3D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,yCAAyC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"legal-compliance.js","sourceRoot":"","sources":["../../src/council/legal-compliance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import type { DebateInput, DebateResult } from './types.js';
3
+ export declare function runLlmDebate(server: Server, input: DebateInput): Promise<DebateResult>;
4
+ //# sourceMappingURL=llm-council.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-council.d.ts","sourceRoot":"","sources":["../../src/council/llm-council.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAa,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6IvE,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAqC5F"}
@@ -0,0 +1,160 @@
1
+ // LLM-backed council — runs all 7 agents via MCP sampling in parallel.
2
+ // Falls back to the deterministic agent for any individual call that fails.
3
+ // Falls back entirely to deterministic runDebate() if sampling is not supported.
4
+ import { decide, formatDebate } from './decision-engine.js';
5
+ import { buildContextString } from '../context/reader.js';
6
+ import { searchKnowledge } from '../memory/local.js';
7
+ import { extractDecision } from './decision-extractor.js';
8
+ // Deterministic fallbacks — one per agent
9
+ import { analyze as leadDevFallback } from './lead-developer.js';
10
+ import { analyze as pmFallback } from './product-manager.js';
11
+ import { analyze as architectFallback } from './system-architect.js';
12
+ import { analyze as uxFallback } from './ux-designer.js';
13
+ import { analyze as devilFallback } from './devil-advocate.js';
14
+ import { analyze as legalFallback } from './legal-compliance.js';
15
+ import { analyze as securityFallback } from './security.js';
16
+ // ─── Agent personas ───────────────────────────────────────────────────────────
17
+ const SYSTEM_PROMPTS = {
18
+ lead_dev: `You are the Lead Developer in a software council. Assess technical feasibility, code quality, implementation risk, and engineering best practices. Be pragmatic — approve sound work, warn about concerning patterns, block only when something is technically broken or creates severe technical debt.
19
+
20
+ IMPORTANT: If the task presents two specific options (e.g. "A vs B" or "should we X or Y"), your recommendation MUST explicitly state which option you prefer and why — do not give generic advice that applies to both. Name the option you prefer in your recommendation field.
21
+
22
+ Return ONLY valid JSON, no other text:
23
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence directly addressing the task","concerns":["specific concern"],"recommendation":"Prefer [named option] — reason specific to your domain"}`,
24
+ pm: `You are the Product Manager in a software council. Assess user value, business alignment, scope clarity, and product-market fit. Approve features that deliver clear value, warn when scope is vague or requirements are incomplete, block only when something contradicts core product goals.
25
+
26
+ IMPORTANT: If the task presents two specific options (e.g. "A vs B" or "should we X or Y"), your recommendation MUST explicitly state which option you prefer and why — do not give generic advice that applies to both. Name the option you prefer in your recommendation field.
27
+
28
+ Return ONLY valid JSON, no other text:
29
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence directly addressing the task","concerns":["specific concern"],"recommendation":"Prefer [named option] — reason specific to your domain"}`,
30
+ architect: `You are the System Architect in a software council. Assess scalability, maintainability, system design, coupling, and architectural integrity. Approve decisions that fit the architecture well, warn about complexity or coupling risks, block breaking changes that violate architectural principles.
31
+
32
+ IMPORTANT: If the task presents two specific options (e.g. "A vs B" or "should we X or Y"), your recommendation MUST explicitly state which option you prefer and why — do not give generic advice that applies to both. Name the option you prefer in your recommendation field.
33
+
34
+ Return ONLY valid JSON, no other text:
35
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence directly addressing the task","concerns":["specific concern"],"recommendation":"Prefer [named option] — reason specific to your domain"}`,
36
+ ux: `You are the UX Designer in a software council. Assess usability, accessibility, user flow, and experience quality. Approve changes that improve or maintain UX, warn about confusing patterns or missing states, block changes that harm users or violate accessibility standards.
37
+
38
+ IMPORTANT: If the task presents two specific options (e.g. "A vs B" or "should we X or Y"), your recommendation MUST explicitly state which option you prefer and why — do not give generic advice that applies to both. Name the option you prefer in your recommendation field.
39
+
40
+ Return ONLY valid JSON, no other text:
41
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence directly addressing the task","concerns":["specific concern"],"recommendation":"Prefer [named option] — reason specific to your domain"}`,
42
+ devil: `You are the Devil's Advocate in a software council. Your job is to find problems others miss — edge cases, failure modes, hidden dependencies, unintended consequences, and flawed assumptions. Be incisive. Warn about risks that compound over time. Block when you identify a fatal flaw.
43
+
44
+ IMPORTANT: If the task presents two specific options, challenge the one that looks more attractive or ambitious. Ask: what breaks first? What's the worst-case failure mode of the preferred option? Name the option you are challenging in your reason.
45
+
46
+ Return ONLY valid JSON, no other text:
47
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence challenging the specific proposed option","concerns":["failure mode 1","failure mode 2"],"recommendation":"actionable mitigation for the named option"}`,
48
+ legal: `You are the Legal & Compliance officer in a software council. Assess regulatory risk, data privacy (GDPR, CCPA), licensing conflicts, and compliance requirements. Approve decisions within legal boundaries, warn about grey areas, block anything that creates clear legal liability or compliance violations.
49
+
50
+ IMPORTANT: If the task presents two specific options (e.g. "A vs B" or "should we X or Y"), your recommendation MUST explicitly state which option has lower legal risk and why — do not give generic advice that applies to both. Name the safer option in your recommendation field.
51
+
52
+ Return ONLY valid JSON, no other text:
53
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence directly addressing the task","concerns":["specific legal concern"],"recommendation":"Prefer [named option] — reason specific to your domain"}`,
54
+ security: `You are the Security Engineer in a software council. Assess security implications using OWASP Top 10 and security best practices. Approve secure designs, warn about potential vulnerabilities, block anything that introduces clear security risks — injection, broken auth, sensitive data exposure, or insecure design.
55
+
56
+ IMPORTANT: If the task presents two specific options (e.g. "A vs B" or "should we X or Y"), your recommendation MUST explicitly state which option is more secure and why — do not give generic advice that applies to both. Name the more secure option in your recommendation field.
57
+
58
+ Return ONLY valid JSON, no other text:
59
+ {"verdict":"approve"|"warn"|"block","reason":"one sentence directly addressing the task","concerns":["specific vulnerability"],"recommendation":"Prefer [named option] — reason specific to your domain"}`,
60
+ };
61
+ const FALLBACKS = {
62
+ lead_dev: leadDevFallback,
63
+ pm: pmFallback,
64
+ architect: architectFallback,
65
+ ux: uxFallback,
66
+ devil: devilFallback,
67
+ legal: legalFallback,
68
+ security: securityFallback,
69
+ };
70
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
71
+ function parseAgentVote(text, agentKey, fallbackTask) {
72
+ try {
73
+ const match = text.match(/\{[\s\S]*?\}/);
74
+ if (!match)
75
+ throw new Error('no JSON found');
76
+ const raw = JSON.parse(match[0]);
77
+ const verdict = ['approve', 'warn', 'block'].includes(raw.verdict) ? raw.verdict : 'warn';
78
+ return {
79
+ verdict,
80
+ reason: typeof raw.reason === 'string' && raw.reason ? raw.reason : 'No reason provided.',
81
+ concerns: Array.isArray(raw.concerns) ? raw.concerns.filter((c) => typeof c === 'string') : [],
82
+ recommendation: typeof raw.recommendation === 'string' ? raw.recommendation : undefined,
83
+ };
84
+ }
85
+ catch {
86
+ return FALLBACKS[agentKey](fallbackTask);
87
+ }
88
+ }
89
+ function buildMemoryContext(task, project_dir) {
90
+ try {
91
+ const memories = searchKnowledge({ query: task, type: 'decision', limit: 2, project_dir });
92
+ if (memories.length === 0)
93
+ return '';
94
+ return memories
95
+ .map(m => `- ${m.title}: ${m.content.slice(0, 120)}`)
96
+ .join('\n');
97
+ }
98
+ catch {
99
+ return '';
100
+ }
101
+ }
102
+ // ─── Core: one LLM sampling call per agent ────────────────────────────────────
103
+ async function callAgentLlm(server, agentKey, task, memoryContext, decisionContext) {
104
+ const parts = [`Task to evaluate:\n${task}`];
105
+ if (decisionContext)
106
+ parts.push(`\nARCHITECTURAL CHOICE DETECTED:\n${decisionContext}\nYour response MUST address this specific choice — name the option you prefer in your recommendation.`);
107
+ if (memoryContext)
108
+ parts.push(`\nRelevant past council decisions:\n${memoryContext}`);
109
+ const userText = parts.join('\n');
110
+ try {
111
+ const result = await server.createMessage({
112
+ messages: [{ role: 'user', content: { type: 'text', text: userText } }],
113
+ systemPrompt: SYSTEM_PROMPTS[agentKey],
114
+ maxTokens: 300,
115
+ includeContext: 'none',
116
+ });
117
+ const responseText = result.content.type === 'text' ? result.content.text : '';
118
+ return parseAgentVote(responseText, agentKey, task);
119
+ }
120
+ catch {
121
+ // Sampling unavailable or failed for this agent — use deterministic fallback
122
+ return FALLBACKS[agentKey](task);
123
+ }
124
+ }
125
+ // ─── Public API ───────────────────────────────────────────────────────────────
126
+ export async function runLlmDebate(server, input) {
127
+ const enrichedContext = buildContextString(input.project_dir, input.context);
128
+ const fullText = enrichedContext ? `${input.task}\n\n${enrichedContext}` : input.task;
129
+ const memoryContext = buildMemoryContext(input.task, input.project_dir);
130
+ // Extract architectural choice if present — inject into every LLM call
131
+ const decision = extractDecision(input.task);
132
+ const decisionContext = decision.isDecisionTask
133
+ ? `Option A: "${decision.optionA}" vs Option B: "${decision.optionB}"`
134
+ : undefined;
135
+ // All 7 agents run in parallel — each falls back individually on sampling failure
136
+ const [lead_dev, pm, architect, ux, devil, legal, security] = await Promise.all([
137
+ callAgentLlm(server, 'lead_dev', fullText, memoryContext, decisionContext),
138
+ callAgentLlm(server, 'pm', fullText, memoryContext, decisionContext),
139
+ callAgentLlm(server, 'architect', fullText, memoryContext, decisionContext),
140
+ callAgentLlm(server, 'ux', fullText, memoryContext, decisionContext),
141
+ callAgentLlm(server, 'devil', fullText, memoryContext, decisionContext),
142
+ callAgentLlm(server, 'legal', fullText, memoryContext, decisionContext),
143
+ callAgentLlm(server, 'security', fullText, memoryContext, decisionContext),
144
+ ]);
145
+ const votes = { lead_dev, pm, architect, ux, devil, legal, security };
146
+ const { final_verdict, block_reasons, warnings, recommended } = decide(votes);
147
+ const debated_at = new Date().toISOString();
148
+ const formatted_output = formatDebate(input.task, votes, final_verdict, block_reasons, warnings, recommended);
149
+ return {
150
+ task: input.task,
151
+ final_verdict,
152
+ votes,
153
+ recommended,
154
+ block_reasons,
155
+ warnings,
156
+ debated_at,
157
+ formatted_output,
158
+ };
159
+ }
160
+ //# sourceMappingURL=llm-council.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-council.js","sourceRoot":"","sources":["../../src/council/llm-council.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAC5E,iFAAiF;AAIjF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,0CAA0C;AAC1C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAO,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAY,sBAAsB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAY,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAS,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAS,uBAAuB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE5D,iFAAiF;AAEjF,MAAM,cAAc,GAA2B;IAC7C,QAAQ,EAAE;;;;;oMAKwL;IAElM,EAAE,EAAE;;;;;oMAK8L;IAElM,SAAS,EAAE;;;;;oMAKuL;IAElM,EAAE,EAAE;;;;;oMAK8L;IAElM,KAAK,EAAE;;;;;mNAK0M;IAEjN,KAAK,EAAE;;;;;0MAKiM;IAExM,QAAQ,EAAE;;;;;0MAK8L;CACzM,CAAC;AAEF,MAAM,SAAS,GAAgD;IAC7D,QAAQ,EAAG,eAAe;IAC1B,EAAE,EAAS,UAAU;IACrB,SAAS,EAAE,iBAAiB;IAC5B,EAAE,EAAS,UAAU;IACrB,KAAK,EAAM,aAAa;IACxB,KAAK,EAAM,aAAa;IACxB,QAAQ,EAAG,gBAAgB;CAC5B,CAAC;AAEF,iFAAiF;AAEjF,SAAS,cAAc,CAAC,IAAY,EAAE,QAAgB,EAAE,YAAoB;IAC1E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,OAAO,GAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACrG,OAAO;YACL,OAAO;YACP,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB;YACzF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YACvG,cAAc,EAAE,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;SACxF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,WAAoB;IAC5D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,QAAQ;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;aACpD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,YAAY,CACzB,MAAc,EACd,QAAgB,EAChB,IAAY,EACZ,aAAqB,EACrB,eAAwB;IAExB,MAAM,KAAK,GAAa,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,qCAAqC,eAAe,wGAAwG,CAAC,CAAC;IAC9L,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,uCAAuC,aAAa,EAAE,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACxC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;YACvE,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC;YACtC,SAAS,EAAE,GAAG;YACd,cAAc,EAAE,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;QAC7E,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAkB;IACnE,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,eAAe,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACtF,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAExE,uEAAuE;IACvE,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc;QAC7C,CAAC,CAAC,cAAc,QAAQ,CAAC,OAAO,mBAAmB,QAAQ,CAAC,OAAO,GAAG;QACtE,CAAC,CAAC,SAAS,CAAC;IAEd,kFAAkF;IAClF,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9E,YAAY,CAAC,MAAM,EAAE,UAAU,EAAG,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;QAC3E,YAAY,CAAC,MAAM,EAAE,IAAI,EAAS,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;QAC3E,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;QAC3E,YAAY,CAAC,MAAM,EAAE,IAAI,EAAS,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;QAC3E,YAAY,CAAC,MAAM,EAAE,OAAO,EAAM,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;QAC3E,YAAY,CAAC,MAAM,EAAE,OAAO,EAAM,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;QAC3E,YAAY,CAAC,MAAM,EAAE,UAAU,EAAG,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC;KAC5E,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE9G,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa;QACb,KAAK;QACL,WAAW;QACX,aAAa;QACb,QAAQ;QACR,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"product-manager.d.ts","sourceRoot":"","sources":["../../src/council/product-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkG5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAmD/C"}
1
+ {"version":3,"file":"product-manager.d.ts","sourceRoot":"","sources":["../../src/council/product-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmG5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAqD/C"}
@@ -1,3 +1,4 @@
1
+ import { extractDecision, pickSide, reframeVote } from './decision-extractor.js';
1
2
  const BLOCK_RULES = [
2
3
  {
3
4
  pattern: /rewrite.{0,20}from.{0,10}scratch/i,
@@ -108,32 +109,51 @@ export function analyze(task) {
108
109
  recommendations.push(rule.recommendation);
109
110
  }
110
111
  }
112
+ let vote;
111
113
  if (blocks.length > 0) {
112
- return {
114
+ vote = {
113
115
  verdict: 'block',
114
116
  reason: blocks[0].reason,
115
117
  concerns: blocks.slice(1).map(b => b.reason),
116
118
  recommendation: blocks.map(b => b.recommendation).join(' | '),
117
119
  };
118
120
  }
119
- if (concerns.length > 0) {
120
- return {
121
+ else if (concerns.length > 0) {
122
+ vote = {
121
123
  verdict: 'warn',
122
124
  reason: `${concerns.length} product risk${concerns.length > 1 ? 's' : ''} — scope or complexity concern.`,
123
125
  concerns,
124
126
  recommendation: recommendations[0],
125
127
  };
126
128
  }
127
- const matched = TOPIC_INSIGHTS.filter(t => t.pattern.test(task));
128
- if (matched.length > 0) {
129
- const top = matched.slice(0, 2);
130
- return {
131
- verdict: 'warn',
132
- reason: top[0].concern,
133
- concerns: top.slice(1).map(t => t.concern),
134
- recommendation: top.map(t => t.recommendation).join(' | '),
135
- };
129
+ else {
130
+ const matched = TOPIC_INSIGHTS.filter(t => t.pattern.test(task));
131
+ if (matched.length > 0) {
132
+ const top = matched.slice(0, 2);
133
+ vote = {
134
+ verdict: 'warn',
135
+ reason: top[0].concern,
136
+ concerns: top.slice(1).map(t => t.concern),
137
+ recommendation: top.map(t => t.recommendation).join(' | '),
138
+ };
139
+ }
140
+ else {
141
+ vote = { verdict: 'approve', reason: 'Reasonable scope. Ship it.', concerns: [] };
142
+ }
136
143
  }
137
- return { verdict: 'approve', reason: 'Reasonable scope. Ship it.', concerns: [] };
144
+ return applyDecisionStance(vote, task);
145
+ }
146
+ // PM risk: options that add scope, infrastructure, or delay time-to-value
147
+ const PM_RISK = /\b(http|express|rest.?api|api.?layer|new\s+(server|layer|transport)|oauth|auth.?system|bundl)\b/i;
148
+ function applyDecisionStance(vote, task) {
149
+ const ctx = extractDecision(task);
150
+ if (!ctx.isDecisionTask)
151
+ return vote;
152
+ const { optionA, optionB } = ctx;
153
+ const side = pickSide(optionA, optionB, PM_RISK);
154
+ const advice = side
155
+ ? `"${side.preferred}" ships faster and has lower scope risk. Defer "${side.avoided}" until users explicitly request it and usage data justifies the investment.`
156
+ : `Evaluate which option delivers user value sooner. Ship the simpler path; add complexity only once real demand is confirmed.`;
157
+ return reframeVote(vote, ctx, side?.preferred ?? null, advice);
138
158
  }
139
159
  //# sourceMappingURL=product-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-manager.js","sourceRoot":"","sources":["../../src/council/product-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"product-manager.js","sourceRoot":"","sources":["../../src/council/product-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/council/security.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkI5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA0F/C"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/council/security.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmI5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA4F/C"}