@jigyasudham/veto 1.4.0 → 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 (40) hide show
  1. package/README.md +72 -0
  2. package/dist/council/decision-engine.d.ts.map +1 -1
  3. package/dist/council/decision-engine.js +20 -0
  4. package/dist/council/decision-engine.js.map +1 -1
  5. package/dist/council/decision-extractor.d.ts +13 -0
  6. package/dist/council/decision-extractor.d.ts.map +1 -0
  7. package/dist/council/decision-extractor.js +66 -0
  8. package/dist/council/decision-extractor.js.map +1 -0
  9. package/dist/council/devil-advocate.d.ts.map +1 -1
  10. package/dist/council/devil-advocate.js +12 -1
  11. package/dist/council/devil-advocate.js.map +1 -1
  12. package/dist/council/lead-developer.d.ts.map +1 -1
  13. package/dist/council/lead-developer.js +34 -14
  14. package/dist/council/lead-developer.js.map +1 -1
  15. package/dist/council/legal-compliance.d.ts.map +1 -1
  16. package/dist/council/legal-compliance.js +44 -24
  17. package/dist/council/legal-compliance.js.map +1 -1
  18. package/dist/council/llm-council.d.ts.map +1 -1
  19. package/dist/council/llm-council.js +41 -18
  20. package/dist/council/llm-council.js.map +1 -1
  21. package/dist/council/product-manager.d.ts.map +1 -1
  22. package/dist/council/product-manager.js +33 -13
  23. package/dist/council/product-manager.js.map +1 -1
  24. package/dist/council/security.d.ts.map +1 -1
  25. package/dist/council/security.js +44 -24
  26. package/dist/council/security.js.map +1 -1
  27. package/dist/council/system-architect.d.ts.map +1 -1
  28. package/dist/council/system-architect.js +33 -13
  29. package/dist/council/system-architect.js.map +1 -1
  30. package/dist/council/ux-designer.d.ts.map +1 -1
  31. package/dist/council/ux-designer.js +47 -26
  32. package/dist/council/ux-designer.js.map +1 -1
  33. package/dist/server.js +43 -9
  34. package/dist/server.js.map +1 -1
  35. package/dist/skills/memory/skill-session-restore.d.ts.map +1 -1
  36. package/dist/skills/memory/skill-session-restore.js +19 -24
  37. package/dist/skills/memory/skill-session-restore.js.map +1 -1
  38. package/dist/skills/memory/skill-session-save.js +4 -4
  39. package/dist/skills/memory/skill-session-save.js.map +1 -1
  40. package/package.json +1 -1
package/README.md CHANGED
@@ -276,6 +276,20 @@ veto_council_debate {
276
276
  }
277
277
  ```
278
278
 
279
+ When the task presents a binary choice, agents name the option they prefer:
280
+
281
+ ```
282
+ veto_council_debate {
283
+ task: "Should we add an Express HTTP layer or keep Veto pure MCP with an external adapter?"
284
+ }
285
+ → formatted_output includes:
286
+ 🎯 Council leans toward: "pure MCP with an external adapter" (5 agents prefer it)
287
+ Lead Dev: [Express HTTP vs external adapter] ... [WARN]
288
+ recommendation: Prefer "external adapter" — Express adds new infrastructure...
289
+ Security: [Express HTTP vs external adapter] ... [WARN]
290
+ recommendation: Prefer "external adapter" — keeps the threat model local-only...
291
+ ```
292
+
279
293
  ---
280
294
 
281
295
  ## Session Tagging + Search
@@ -296,6 +310,64 @@ veto_sessions_list { query: "auth" }
296
310
 
297
311
  ---
298
312
 
313
+ ## New in v1.4.1
314
+
315
+ ### Council debate — decision-aware verdicts
316
+
317
+ When your task presents a binary architectural choice ("should we X or Y", "A vs B"), every council agent now identifies which option it prefers and names it explicitly. The output includes a `🎯 Council leans toward:` line counting how many agents favour each option.
318
+
319
+ Before — agents fired generic keyword-matched concerns unrelated to the choice:
320
+ ```
321
+ Lead Dev: "Persistent memory stores grow unbounded..." ← nothing to do with the question
322
+ ```
323
+
324
+ After — agents address the specific choice:
325
+ ```
326
+ Lead Dev: [Express-bundled vs external-adapter] reason [WARN]
327
+ recommendation: Prefer "external-adapter" — "Express-bundled" adds new
328
+ infrastructure to maintain; validate real demand before building.
329
+ 🎯 Council leans toward: "external adapter pattern" (4 agents prefer it)
330
+ ```
331
+
332
+ LLM-backed agents (when MCP Sampling is available) are now explicitly instructed to name the preferred option in their recommendation.
333
+
334
+ ### `veto_session_restore` — resume instructions
335
+
336
+ The restore response now includes a `resume_instructions` field that tells the AI exactly what to do:
337
+
338
+ ```
339
+ veto_session_restore { session_id: "..." }
340
+ → {
341
+ resume_instructions: "Context restored. Trust the summary, context, and task_state
342
+ above. Do NOT re-read source files to orient yourself — only open a file if you
343
+ are about to EDIT it. Start immediately with: [nextAction from task_state].",
344
+ session_id: "...",
345
+ summary: "...",
346
+ context: { ... },
347
+ task_state: { nextAction: "Edit src/server.ts line 302, add zod validation..." },
348
+ ...
349
+ }
350
+ ```
351
+
352
+ This fixes the core issue where AI sessions were re-reading the entire codebase on restore instead of trusting the saved context.
353
+
354
+ ### `veto_session_save` — input validation
355
+
356
+ `summary`, `context`, and `task_state` now have enforced size limits. Oversized inputs are truncated with a warning rather than silently stored or crashing.
357
+
358
+ | Field | Limit |
359
+ |---|---|
360
+ | `summary` | 2,000 chars |
361
+ | `context` | 50,000 chars |
362
+ | `task_state` | 20,000 chars |
363
+
364
+ ```
365
+ veto_session_save { summary: "...(very long)..." }
366
+ → { success: true, truncation_warnings: ["summary truncated to 2000 chars (was 8432)"] }
367
+ ```
368
+
369
+ ---
370
+
299
371
  ## New in v1.4.0
300
372
 
301
373
  ### `veto_metrics` — usage dashboard
@@ -1 +1 @@
1
- {"version":3,"file":"decision-engine.d.ts","sourceRoot":"","sources":["../../src/council/decision-engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1E,KAAK,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AAEnC,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG;IACpC,aAAa,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAsDA;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAiGR"}
1
+ {"version":3,"file":"decision-engine.d.ts","sourceRoot":"","sources":["../../src/council/decision-engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAa,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1E,KAAK,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AAEnC,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG;IACpC,aAAa,EAAE,cAAc,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAsDA;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAmHR"}
@@ -1,3 +1,4 @@
1
+ import { extractDecision } from './decision-extractor.js';
1
2
  export function decide(votes) {
2
3
  const entries = [
3
4
  ['Lead Developer', votes.lead_dev],
@@ -121,6 +122,25 @@ export function formatDebate(task, votes, verdict, block_reasons, warnings, reco
121
122
  lines.push(` • ...and ${extra} more`);
122
123
  lines.push('');
123
124
  }
125
+ // Council position on a binary choice — surface which option most agents prefer
126
+ const decision = extractDecision(task);
127
+ if (decision.isDecisionTask) {
128
+ const allRecs = Object.values(votes)
129
+ .map(v => v.recommendation ?? '')
130
+ .filter(Boolean)
131
+ .join(' ');
132
+ const prefersA = (allRecs.match(new RegExp(`"${decision.optionA.slice(0, 20).replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`, 'gi')) ?? []).length;
133
+ const prefersB = (allRecs.match(new RegExp(`"${decision.optionB.slice(0, 20).replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`, 'gi')) ?? []).length;
134
+ if (prefersA > prefersB) {
135
+ lines.push(`🎯 Council leans toward: "${decision.optionA}" (${prefersA} agent${prefersA !== 1 ? 's' : ''} prefer it)`);
136
+ }
137
+ else if (prefersB > prefersA) {
138
+ lines.push(`🎯 Council leans toward: "${decision.optionB}" (${prefersB} agent${prefersB !== 1 ? 's' : ''} prefer it)`);
139
+ }
140
+ else {
141
+ lines.push(`🎯 Council is split on: "${decision.optionA}" vs "${decision.optionB}" — see agent recommendations below`);
142
+ }
143
+ }
124
144
  lines.push(`✅ Recommended: ${recommended}`);
125
145
  if (verdict === 'RED') {
126
146
  lines.push('');
@@ -1 +1 @@
1
- {"version":3,"file":"decision-engine.js","sourceRoot":"","sources":["../../src/council/decision-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-engine.js","sourceRoot":"","sources":["../../src/council/decision-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AgentVote } from './types.js';
2
+ export interface DecisionContext {
3
+ isDecisionTask: boolean;
4
+ optionA: string;
5
+ optionB: string;
6
+ }
7
+ export declare function extractDecision(task: string): DecisionContext;
8
+ export declare function pickSide(optionA: string, optionB: string, riskPatterns: RegExp): {
9
+ preferred: string;
10
+ avoided: string;
11
+ } | null;
12
+ export declare function reframeVote(vote: AgentVote, ctx: DecisionContext, preferred: string | null, domainAdvice: string): AgentVote;
13
+ //# sourceMappingURL=decision-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-extractor.d.ts","sourceRoot":"","sources":["../../src/council/decision-extractor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA4B7D;AAKD,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO/C;AAGD,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,YAAY,EAAE,MAAM,GACnB,SAAS,CAWX"}
@@ -0,0 +1,66 @@
1
+ // Extracts a binary architectural choice from a task description.
2
+ // Used by all council agents to frame their votes against the specific decision.
3
+ const NULL_CTX = { isDecisionTask: false, optionA: '', optionB: '' };
4
+ function cleanOption(s) {
5
+ return s
6
+ .replace(/^(build|add|use|keep|go\s+with|implement|we\s+should\s+)?/i, '')
7
+ .replace(/[,.\s]+$/, '')
8
+ .trim()
9
+ .slice(0, 70);
10
+ }
11
+ export function extractDecision(task) {
12
+ const flat = task.replace(/[\r\n]+/g, ' ').replace(/\s{2,}/g, ' ');
13
+ // "X vs Y" or "X versus Y"
14
+ const vsMatch = flat.match(/(.{8,90}?)\s+(?:vs\.?|versus)\s+(.{8,90}?)(?:[.?!]|$)/i);
15
+ if (vsMatch) {
16
+ const a = cleanOption(vsMatch[1].split(/[?!—–]/).pop() ?? '');
17
+ const b = cleanOption(vsMatch[2].split(/[,?!.—–]/)[0]);
18
+ if (a.length >= 4 && b.length >= 4)
19
+ return { isDecisionTask: true, optionA: a, optionB: b };
20
+ }
21
+ // "should we [A] or [B]" / "should we [A], or keep [B]" / "should we [A] — or [B]"
22
+ const shouldMatch = flat.match(/should\s+we\s+(.{8,140}?)\s*,?\s*(?:—\s*)?or\s+(?:keep\s+|go\s+with\s+)?(.{8,120})(?:[?.]|$)/i);
23
+ if (shouldMatch) {
24
+ const a = cleanOption(shouldMatch[1]);
25
+ const b = cleanOption(shouldMatch[2].split(/[,?.!]/)[0]);
26
+ if (a.length >= 4 && b.length >= 4)
27
+ return { isDecisionTask: true, optionA: a, optionB: b };
28
+ }
29
+ // "X approach/pattern or Y approach/pattern"
30
+ const approachMatch = flat.match(/(.{5,60}?)\s+(?:approach|option|pattern|strategy|method)\s+or\s+(.{5,60}?)\s+(?:approach|option|pattern|strategy|method)/i);
31
+ if (approachMatch) {
32
+ const a = cleanOption(approachMatch[1]);
33
+ const b = cleanOption(approachMatch[2]);
34
+ if (a.length >= 4 && b.length >= 4)
35
+ return { isDecisionTask: true, optionA: a, optionB: b };
36
+ }
37
+ return NULL_CTX;
38
+ }
39
+ // Returns which option is preferred from a given agent's perspective.
40
+ // riskPatterns: regex matching traits that make an option RISKIER for this domain.
41
+ // Counts occurrences so a single safe word can't cancel a strong risk signal.
42
+ export function pickSide(optionA, optionB, riskPatterns) {
43
+ const g = new RegExp(riskPatterns.source, 'gi');
44
+ const aHits = (optionA.match(g) ?? []).length;
45
+ const bHits = (optionB.match(g) ?? []).length;
46
+ if (aHits > bHits)
47
+ return { preferred: optionB, avoided: optionA };
48
+ if (bHits > aHits)
49
+ return { preferred: optionA, avoided: optionB };
50
+ return null;
51
+ }
52
+ // Reframes an existing vote to explicitly address the architectural choice.
53
+ export function reframeVote(vote, ctx, preferred, domainAdvice) {
54
+ if (!ctx.isDecisionTask)
55
+ return vote;
56
+ const { optionA, optionB } = ctx;
57
+ const rec = preferred
58
+ ? `Prefer "${preferred}" — ${domainAdvice}`
59
+ : domainAdvice || vote.recommendation || '';
60
+ return {
61
+ ...vote,
62
+ reason: `[${optionA} vs ${optionB}] ${vote.reason}`,
63
+ recommendation: rec,
64
+ };
65
+ }
66
+ //# sourceMappingURL=decision-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-extractor.js","sourceRoot":"","sources":["../../src/council/decision-extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"devil-advocate.d.ts","sourceRoot":"","sources":["../../src/council/devil-advocate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA+H5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAmC/C"}
1
+ {"version":3,"file":"devil-advocate.d.ts","sourceRoot":"","sources":["../../src/council/devil-advocate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgI5C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAqC/C"}
@@ -1,3 +1,4 @@
1
+ import { extractDecision, reframeVote } from './decision-extractor.js';
1
2
  // Devil always warns — never alone blocks, never approves non-trivial tasks
2
3
  const PROBES = [
3
4
  {
@@ -142,11 +143,21 @@ export function analyze(task) {
142
143
  matched.push(GENERIC);
143
144
  }
144
145
  const top = matched.slice(0, 3); // cap at 3 concerns to avoid flooding
145
- return {
146
+ const vote = {
146
147
  verdict: 'warn',
147
148
  reason: top[0].concern,
148
149
  concerns: top.slice(1).map(m => m.concern),
149
150
  recommendation: top.map(m => m.recommendation).join(' | '),
150
151
  };
152
+ return applyDecisionStance(vote, task);
153
+ }
154
+ function applyDecisionStance(vote, task) {
155
+ const ctx = extractDecision(task);
156
+ if (!ctx.isDecisionTask)
157
+ return vote;
158
+ // Devil challenges the first (typically "build new") option — it's the direction being proposed
159
+ const { optionA } = ctx;
160
+ const advice = `Before committing to "${optionA}": what is the failure mode at 2AM with no one watching? What breaks first, how do you detect it, and how fast can you roll back?`;
161
+ return reframeVote(vote, ctx, null, advice);
151
162
  }
152
163
  //# sourceMappingURL=devil-advocate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devil-advocate.js","sourceRoot":"","sources":["../../src/council/devil-advocate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devil-advocate.js","sourceRoot":"","sources":["../../src/council/devil-advocate.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":"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"}
1
+ {"version":3,"file":"legal-compliance.js","sourceRoot":"","sources":["../../src/council/legal-compliance.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AA4HvE,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA+B5F"}
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"}