@jigyasudham/veto 3.0.0 → 3.1.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 (165) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +630 -589
  3. package/dist/agents/llm-runner.js +57 -57
  4. package/dist/cli/statusline.js +2 -2
  5. package/dist/cli.js +57 -26
  6. package/dist/cli.js.map +1 -1
  7. package/dist/memory/decisions.js +1 -1
  8. package/dist/memory/local.js +144 -144
  9. package/dist/memory/schema.js +228 -228
  10. package/dist/memory/sync.js +25 -25
  11. package/dist/router/implicit-outcomes.js +4 -4
  12. package/dist/router/learning-updater.js +45 -45
  13. package/dist/server.js +1 -1
  14. package/dist/tools/compact.js +3 -3
  15. package/dist/transcripts/archive.js +5 -5
  16. package/dist/transcripts/cache.d.ts +66 -0
  17. package/dist/transcripts/cache.d.ts.map +1 -0
  18. package/dist/transcripts/cache.js +0 -0
  19. package/dist/transcripts/cache.js.map +1 -0
  20. package/dist/transcripts/chunk.d.ts +26 -0
  21. package/dist/transcripts/chunk.d.ts.map +1 -0
  22. package/dist/transcripts/chunk.js +54 -0
  23. package/dist/transcripts/chunk.js.map +1 -0
  24. package/dist/transcripts/embed.d.ts +58 -0
  25. package/dist/transcripts/embed.d.ts.map +1 -0
  26. package/dist/transcripts/embed.js +303 -0
  27. package/dist/transcripts/embed.js.map +1 -0
  28. package/dist/transcripts/ingest.d.ts.map +1 -1
  29. package/dist/transcripts/ingest.js +14 -7
  30. package/dist/transcripts/ingest.js.map +1 -1
  31. package/dist/transcripts/manage.d.ts.map +1 -1
  32. package/dist/transcripts/manage.js +6 -0
  33. package/dist/transcripts/manage.js.map +1 -1
  34. package/dist/transcripts/mapping.js +5 -5
  35. package/dist/transcripts/pyramid.js +2 -2
  36. package/dist/transcripts/recall.d.ts +7 -0
  37. package/dist/transcripts/recall.d.ts.map +1 -1
  38. package/dist/transcripts/recall.js +25 -3
  39. package/dist/transcripts/recall.js.map +1 -1
  40. package/dist/transcripts/schema.d.ts +11 -1
  41. package/dist/transcripts/schema.d.ts.map +1 -1
  42. package/dist/transcripts/schema.js +126 -94
  43. package/dist/transcripts/schema.js.map +1 -1
  44. package/dist/transcripts/search.d.ts +35 -0
  45. package/dist/transcripts/search.d.ts.map +1 -1
  46. package/dist/transcripts/search.js +232 -34
  47. package/dist/transcripts/search.js.map +1 -1
  48. package/dist/transcripts/vectors.d.ts +40 -0
  49. package/dist/transcripts/vectors.d.ts.map +1 -0
  50. package/dist/transcripts/vectors.js +203 -0
  51. package/dist/transcripts/vectors.js.map +1 -0
  52. package/package.json +70 -61
  53. package/server.json +23 -23
  54. package/dist/skills/development/skill-api-design.d.ts +0 -15
  55. package/dist/skills/development/skill-api-design.d.ts.map +0 -1
  56. package/dist/skills/development/skill-api-design.js +0 -313
  57. package/dist/skills/development/skill-api-design.js.map +0 -1
  58. package/dist/skills/development/skill-auth.d.ts +0 -15
  59. package/dist/skills/development/skill-auth.d.ts.map +0 -1
  60. package/dist/skills/development/skill-auth.js +0 -255
  61. package/dist/skills/development/skill-auth.js.map +0 -1
  62. package/dist/skills/development/skill-ci-cd.d.ts +0 -2
  63. package/dist/skills/development/skill-ci-cd.d.ts.map +0 -1
  64. package/dist/skills/development/skill-ci-cd.js +0 -2
  65. package/dist/skills/development/skill-ci-cd.js.map +0 -1
  66. package/dist/skills/development/skill-crud.d.ts +0 -15
  67. package/dist/skills/development/skill-crud.d.ts.map +0 -1
  68. package/dist/skills/development/skill-crud.js +0 -193
  69. package/dist/skills/development/skill-crud.js.map +0 -1
  70. package/dist/skills/development/skill-db-schema.d.ts +0 -2
  71. package/dist/skills/development/skill-db-schema.d.ts.map +0 -1
  72. package/dist/skills/development/skill-db-schema.js +0 -2
  73. package/dist/skills/development/skill-db-schema.js.map +0 -1
  74. package/dist/skills/development/skill-docker.d.ts +0 -2
  75. package/dist/skills/development/skill-docker.d.ts.map +0 -1
  76. package/dist/skills/development/skill-docker.js +0 -2
  77. package/dist/skills/development/skill-docker.js.map +0 -1
  78. package/dist/skills/development/skill-env-setup.d.ts +0 -2
  79. package/dist/skills/development/skill-env-setup.d.ts.map +0 -1
  80. package/dist/skills/development/skill-env-setup.js +0 -2
  81. package/dist/skills/development/skill-env-setup.js.map +0 -1
  82. package/dist/skills/development/skill-scaffold.d.ts +0 -15
  83. package/dist/skills/development/skill-scaffold.d.ts.map +0 -1
  84. package/dist/skills/development/skill-scaffold.js +0 -299
  85. package/dist/skills/development/skill-scaffold.js.map +0 -1
  86. package/dist/skills/intelligence/skill-complexity-score.d.ts +0 -15
  87. package/dist/skills/intelligence/skill-complexity-score.d.ts.map +0 -1
  88. package/dist/skills/intelligence/skill-complexity-score.js +0 -66
  89. package/dist/skills/intelligence/skill-complexity-score.js.map +0 -1
  90. package/dist/skills/intelligence/skill-cost-track.d.ts +0 -14
  91. package/dist/skills/intelligence/skill-cost-track.d.ts.map +0 -1
  92. package/dist/skills/intelligence/skill-cost-track.js +0 -36
  93. package/dist/skills/intelligence/skill-cost-track.js.map +0 -1
  94. package/dist/skills/intelligence/skill-learning-loop.d.ts +0 -15
  95. package/dist/skills/intelligence/skill-learning-loop.d.ts.map +0 -1
  96. package/dist/skills/intelligence/skill-learning-loop.js +0 -66
  97. package/dist/skills/intelligence/skill-learning-loop.js.map +0 -1
  98. package/dist/skills/intelligence/skill-pattern-detect.d.ts +0 -14
  99. package/dist/skills/intelligence/skill-pattern-detect.d.ts.map +0 -1
  100. package/dist/skills/intelligence/skill-pattern-detect.js +0 -35
  101. package/dist/skills/intelligence/skill-pattern-detect.js.map +0 -1
  102. package/dist/skills/intelligence/skill-rate-watch.d.ts +0 -15
  103. package/dist/skills/intelligence/skill-rate-watch.d.ts.map +0 -1
  104. package/dist/skills/intelligence/skill-rate-watch.js +0 -58
  105. package/dist/skills/intelligence/skill-rate-watch.js.map +0 -1
  106. package/dist/skills/memory/skill-context-compress.d.ts +0 -15
  107. package/dist/skills/memory/skill-context-compress.d.ts.map +0 -1
  108. package/dist/skills/memory/skill-context-compress.js +0 -82
  109. package/dist/skills/memory/skill-context-compress.js.map +0 -1
  110. package/dist/skills/memory/skill-cross-sync.d.ts +0 -15
  111. package/dist/skills/memory/skill-cross-sync.d.ts.map +0 -1
  112. package/dist/skills/memory/skill-cross-sync.js +0 -88
  113. package/dist/skills/memory/skill-cross-sync.js.map +0 -1
  114. package/dist/skills/memory/skill-decision-log.d.ts +0 -15
  115. package/dist/skills/memory/skill-decision-log.d.ts.map +0 -1
  116. package/dist/skills/memory/skill-decision-log.js +0 -103
  117. package/dist/skills/memory/skill-decision-log.js.map +0 -1
  118. package/dist/skills/memory/skill-session-restore.d.ts +0 -15
  119. package/dist/skills/memory/skill-session-restore.d.ts.map +0 -1
  120. package/dist/skills/memory/skill-session-restore.js +0 -39
  121. package/dist/skills/memory/skill-session-restore.js.map +0 -1
  122. package/dist/skills/memory/skill-session-save.d.ts +0 -15
  123. package/dist/skills/memory/skill-session-save.d.ts.map +0 -1
  124. package/dist/skills/memory/skill-session-save.js +0 -74
  125. package/dist/skills/memory/skill-session-save.js.map +0 -1
  126. package/dist/skills/quality/skill-accessibility.d.ts +0 -2
  127. package/dist/skills/quality/skill-accessibility.d.ts.map +0 -1
  128. package/dist/skills/quality/skill-accessibility.js +0 -2
  129. package/dist/skills/quality/skill-accessibility.js.map +0 -1
  130. package/dist/skills/quality/skill-code-review.d.ts +0 -15
  131. package/dist/skills/quality/skill-code-review.d.ts.map +0 -1
  132. package/dist/skills/quality/skill-code-review.js +0 -60
  133. package/dist/skills/quality/skill-code-review.js.map +0 -1
  134. package/dist/skills/quality/skill-docs-gen.d.ts +0 -2
  135. package/dist/skills/quality/skill-docs-gen.d.ts.map +0 -1
  136. package/dist/skills/quality/skill-docs-gen.js +0 -2
  137. package/dist/skills/quality/skill-docs-gen.js.map +0 -1
  138. package/dist/skills/quality/skill-perf-audit.d.ts +0 -2
  139. package/dist/skills/quality/skill-perf-audit.d.ts.map +0 -1
  140. package/dist/skills/quality/skill-perf-audit.js +0 -2
  141. package/dist/skills/quality/skill-perf-audit.js.map +0 -1
  142. package/dist/skills/quality/skill-security-scan.d.ts +0 -15
  143. package/dist/skills/quality/skill-security-scan.d.ts.map +0 -1
  144. package/dist/skills/quality/skill-security-scan.js +0 -67
  145. package/dist/skills/quality/skill-security-scan.js.map +0 -1
  146. package/dist/skills/quality/skill-test-suite.d.ts +0 -15
  147. package/dist/skills/quality/skill-test-suite.d.ts.map +0 -1
  148. package/dist/skills/quality/skill-test-suite.js +0 -274
  149. package/dist/skills/quality/skill-test-suite.js.map +0 -1
  150. package/dist/skills/workflow/skill-deploy.d.ts +0 -2
  151. package/dist/skills/workflow/skill-deploy.d.ts.map +0 -1
  152. package/dist/skills/workflow/skill-deploy.js +0 -2
  153. package/dist/skills/workflow/skill-deploy.js.map +0 -1
  154. package/dist/skills/workflow/skill-git-workflow.d.ts +0 -2
  155. package/dist/skills/workflow/skill-git-workflow.d.ts.map +0 -1
  156. package/dist/skills/workflow/skill-git-workflow.js +0 -2
  157. package/dist/skills/workflow/skill-git-workflow.js.map +0 -1
  158. package/dist/skills/workflow/skill-rollback.d.ts +0 -2
  159. package/dist/skills/workflow/skill-rollback.d.ts.map +0 -1
  160. package/dist/skills/workflow/skill-rollback.js +0 -2
  161. package/dist/skills/workflow/skill-rollback.js.map +0 -1
  162. package/dist/skills/workflow/skill-task-breakdown.d.ts +0 -2
  163. package/dist/skills/workflow/skill-task-breakdown.d.ts.map +0 -1
  164. package/dist/skills/workflow/skill-task-breakdown.js +0 -2
  165. package/dist/skills/workflow/skill-task-breakdown.js.map +0 -1
@@ -1,66 +0,0 @@
1
- // Skill: complexity-score — how to write task descriptions that route correctly
2
- export function run(input) {
3
- return {
4
- skill: 'complexity-score',
5
- template: `
6
- // ── Complexity Scoring Cheat Sheet ───────────────────────────────────────
7
- //
8
- // The router scores 0–100 from five factors:
9
- //
10
- // Factor 1: Word count 0–20 pts (1 pt per 3 words, cap 20)
11
- // Factor 2: Tech keywords 0–30 pts HIGH +5, MEDIUM +2
12
- // Factor 3: Task depth 0–20 pts conjunctions, commas, length
13
- // Factor 4: Files affected 0–20 pts 3 pts per file
14
- // Factor 5: Council bonus +10 pts security/auth/migration keywords
15
- //
16
- // Tier thresholds (defaults, adjusted by learning loop):
17
- // Tier 1: score 0–30 → Haiku / Flash (fast, cheap)
18
- // Tier 2: score 31–70 → Sonnet / Pro (daily coding)
19
- // Tier 3: score 71+ → Sonnet / Advanced (hard problems)
20
- //
21
- // To get a higher tier: add detail, technical keywords, or pass files_affected
22
- // To get a lower tier: simplify the description or scope down the task
23
- //
24
- // Example — under-scored:
25
- // "write tests" → score 9 → Tier 1 (too short)
26
- //
27
- // Example — correctly scored:
28
- // "write unit and integration tests for the JWT auth middleware, covering
29
- // token expiry, refresh rotation, and concurrent request edge cases"
30
- // → score 47 → Tier 2
31
- //
32
- // Example — correctly scored, high complexity:
33
- // "migrate user authentication from session cookies to JWT with refresh
34
- // token rotation — update middleware, session store, and all auth tests"
35
- // → score 78 → Tier 3 (contains 'migrate', 'authentication', 'jwt')
36
- `.trim(),
37
- checklist: [
38
- 'Call veto_route_task to see the current score before submitting a task',
39
- 'If the score is too low: add technical keywords and more specific detail to the description',
40
- 'If the score is too high: simplify the description or split into sub-tasks',
41
- 'Pass files_affected if the task touches multiple files — adds 3 pts per file',
42
- 'Use force_council=true to bypass scoring and go straight to Tier 3',
43
- 'After completing a task: call veto_record_outcome with the actual quality (0–100)',
44
- 'After 20+ outcomes: call veto_learning_apply to update the router thresholds',
45
- ],
46
- patterns: [
47
- 'Specificity → score: more specific descriptions score higher and route to better models',
48
- 'Keyword density: security/auth/migration keywords add +5 each and trigger council',
49
- 'files_affected multiplier: 5 files = +12 pts — use this for multi-file refactors',
50
- 'Outcome feedback: recording actuals enables the learning loop to tune thresholds over time',
51
- ],
52
- gotchas: [
53
- 'Short task descriptions under-score — "fix auth bug" scores ~9, Tier 1 is almost certainly wrong for auth',
54
- 'The learning loop needs 20 outcomes before it adjusts thresholds — the router is static until then',
55
- 'force_council=true always routes to Tier 3 regardless of score — use sparingly',
56
- 'Council auto-triggers on: architecture, security, auth, migration, drop table — you cannot suppress this',
57
- ],
58
- resources: [
59
- 'veto_route_task — score a task and see the tier before submitting',
60
- 'veto_record_outcome — record output quality to feed the learning loop',
61
- 'veto_learning_apply — apply learned thresholds after 20+ recorded outcomes',
62
- 'veto_learning_stats — see current tier distribution and suggested thresholds',
63
- ],
64
- };
65
- }
66
- //# sourceMappingURL=skill-complexity-score.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-complexity-score.js","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-complexity-score.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAKhF,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bb,CAAC,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,wEAAwE;YACxE,6FAA6F;YAC7F,4EAA4E;YAC5E,8EAA8E;YAC9E,oEAAoE;YACpE,mFAAmF;YACnF,8EAA8E;SAC/E;QACD,QAAQ,EAAE;YACR,yFAAyF;YACzF,mFAAmF;YACnF,kFAAkF;YAClF,4FAA4F;SAC7F;QACD,OAAO,EAAE;YACP,2GAA2G;YAC3G,oGAAoG;YACpG,gFAAgF;YAChF,0GAA0G;SAC3G;QACD,SAAS,EAAE;YACT,mEAAmE;YACnE,uEAAuE;YACvE,4EAA4E;YAC5E,8EAA8E;SAC/E;KACF,CAAC;AACJ,CAAC"}
@@ -1,14 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- checklist: string[];
9
- patterns: string[];
10
- gotchas: string[];
11
- resources: string[];
12
- }
13
- export declare function run(input: SkillInput): SkillOutput;
14
- //# sourceMappingURL=skill-cost-track.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-cost-track.d.ts","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-cost-track.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAClG,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAAE;AAEhI,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAiClD"}
@@ -1,36 +0,0 @@
1
- // Skill: cost-track — monitor and reduce AI token spend and infrastructure costs
2
- export function run(input) {
3
- return {
4
- skill: 'cost-track',
5
- checklist: [
6
- 'Call veto_learning_stats to see the current Tier 1/2/3 distribution',
7
- 'A healthy distribution is roughly 40% T1 / 45% T2 / 15% T3 — more T3 than this is expensive',
8
- 'Identify tasks that are routed to Tier 3 but could be Tier 2 with a better description',
9
- 'Call veto_rate_status to check current daily usage % per platform',
10
- 'If Claude is above 70%: T1/T2 tasks are already auto-routing to Gemini — verify this is working',
11
- 'Call veto_agent_performance_stats to identify agents with low quality scores — they waste tokens on retries',
12
- 'Record task outcomes via veto_record_outcome — this is the only way to measure actual cost/quality ratio',
13
- 'After 20+ outcomes: call veto_learning_apply — learned thresholds reduce over-routing to expensive tiers',
14
- 'Monthly: export veto_memory_export and review knowledge base size — prune irrelevant entries',
15
- ],
16
- patterns: [
17
- 'Tier distribution monitoring: T3% × avg_T3_tokens = the main cost driver',
18
- 'Outcome recording: quality data enables threshold calibration which directly reduces cost',
19
- 'Rate limit utilisation: 70–90% is healthy; under 30% means you are paying for unused capacity',
20
- 'Context compression: veto_route_task with context= returns a compression plan — use it',
21
- ],
22
- gotchas: [
23
- 'Not recording outcomes — the learning loop cannot calibrate without quality data',
24
- 'Treating all Tier 3 tasks as justified — many are there because of a short description, not actual complexity',
25
- 'Ignoring context compression — a 15,000 token context costs 10× more than a compressed 1,500 token context',
26
- 'Optimising AI cost while ignoring developer time — developer time is almost always the larger cost',
27
- ],
28
- resources: [
29
- 'veto_learning_stats — current tier distribution and suggested thresholds',
30
- 'veto_rate_status — daily usage % per platform',
31
- 'veto_learning_apply — apply learned thresholds to reduce over-routing',
32
- 'veto_record_outcome — record output quality to feed the cost/quality calibration loop',
33
- ],
34
- };
35
- }
36
- //# sourceMappingURL=skill-cost-track.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-cost-track.js","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-cost-track.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAKjF,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,SAAS,EAAE;YACT,qEAAqE;YACrE,6FAA6F;YAC7F,wFAAwF;YACxF,mEAAmE;YACnE,iGAAiG;YACjG,6GAA6G;YAC7G,0GAA0G;YAC1G,0GAA0G;YAC1G,8FAA8F;SAC/F;QACD,QAAQ,EAAE;YACR,0EAA0E;YAC1E,2FAA2F;YAC3F,+FAA+F;YAC/F,wFAAwF;SACzF;QACD,OAAO,EAAE;YACP,kFAAkF;YAClF,+GAA+G;YAC/G,4GAA4G;YAC5G,oGAAoG;SACrG;QACD,SAAS,EAAE;YACT,0EAA0E;YAC1E,+CAA+C;YAC/C,uEAAuE;YACvE,uFAAuF;SACxF;KACF,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-learning-loop.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-learning-loop.d.ts","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-learning-loop.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAClG,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAAE;AAEnJ,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CA+DlD"}
@@ -1,66 +0,0 @@
1
- // Skill: learning-loop — how to feed outcome data back into the router and agents
2
- export function run(input) {
3
- return {
4
- skill: 'learning-loop',
5
- template: `
6
- // ── Learning Loop Protocol ────────────────────────────────────────────────
7
- //
8
- // The router gets smarter when you record task outcomes.
9
- // Without outcome data, thresholds stay at the default 30/70 forever.
10
- //
11
- // Step 1: Complete a task
12
- //
13
- // Step 2: Score the output quality (0–100):
14
- // 90–100 Excellent — exactly what was needed, no revision required
15
- // 70–89 Good — minor revisions needed
16
- // 50–69 Acceptable — significant revision needed but usable
17
- // 30–49 Poor — required a full rewrite
18
- // 0–29 Failed — output was wrong or harmful
19
- //
20
- // Step 3: Record via veto_record_outcome:
21
- // {
22
- // task_type: "write-auth-middleware", // short label, consistent naming helps
23
- // complexity: 58, // from veto_route_task result
24
- // model_tier: 2, // tier that was actually used
25
- // agent: "coder", // agent type used
26
- // output_quality: 87, // your score
27
- // tokens_used: 1240 // optional but useful
28
- // }
29
- //
30
- // Step 4: After 20+ outcomes: call veto_learning_apply
31
- // The router reads the quality data and adjusts tier1_max and tier2_max
32
- // Adjustment is conservative — it needs 20+ data points to act
33
- //
34
- // Step 5: Check veto_learning_stats to see what changed
35
- `.trim(),
36
- checklist: [
37
- 'Record every task outcome, not just the bad ones — the loop needs both successes and failures',
38
- 'Use consistent task_type labels across sessions (e.g. "write-unit-tests" not "tests")',
39
- 'Score output quality honestly — over-reporting quality prevents threshold improvement',
40
- 'Include tokens_used when possible — this feeds cost/quality optimisation',
41
- 'Call veto_learning_apply after every 10 new outcomes to keep thresholds current',
42
- 'Call veto_learning_stats monthly to review the tier distribution and agent performance',
43
- 'If an agent consistently scores below 70%: check veto_agent_performance_stats for patterns',
44
- 'Council insights: review veto_council_insights monthly to see if any GREEN verdicts led to debugging',
45
- ],
46
- patterns: [
47
- 'Consistent labelling: task_type labels that vary prevent pattern detection ("test" vs "write-tests" vs "unit-tests" are invisible to the loop)',
48
- 'Regular application: apply thresholds every 10 outcomes — waiting for 100 delays improvement by months',
49
- 'Quality honesty: the loop self-corrects only when quality scores reflect reality',
50
- 'Council correlation: the council insights loop needs decisions logged with veto_memory_store to work',
51
- ],
52
- gotchas: [
53
- 'Only recording failures — a loop trained on failures sees everything as over-tiered',
54
- 'Inconsistent task_type labels — "auth", "authentication", "write-auth" look like three different task types',
55
- 'Not calling veto_learning_apply — recording outcomes without applying has zero effect on routing',
56
- 'Applying thresholds with fewer than 20 data points — results will be noisy and unreliable',
57
- ],
58
- resources: [
59
- 'veto_record_outcome — record a task quality score',
60
- 'veto_learning_apply — apply recorded outcomes to adjust tier thresholds',
61
- 'veto_learning_stats — view tier distribution, agent performance, and suggested thresholds',
62
- 'veto_council_insights — review council decisions correlated with debugging sessions',
63
- ],
64
- };
65
- }
66
- //# sourceMappingURL=skill-learning-loop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-learning-loop.js","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-learning-loop.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAKlF,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8Bb,CAAC,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,+FAA+F;YAC/F,uFAAuF;YACvF,uFAAuF;YACvF,0EAA0E;YAC1E,iFAAiF;YACjF,wFAAwF;YACxF,4FAA4F;YAC5F,sGAAsG;SACvG;QACD,QAAQ,EAAE;YACR,gJAAgJ;YAChJ,wGAAwG;YACxG,kFAAkF;YAClF,sGAAsG;SACvG;QACD,OAAO,EAAE;YACP,qFAAqF;YACrF,6GAA6G;YAC7G,kGAAkG;YAClG,2FAA2F;SAC5F;QACD,SAAS,EAAE;YACT,mDAAmD;YACnD,yEAAyE;YACzE,2FAA2F;YAC3F,qFAAqF;SACtF;KACF,CAAC;AACJ,CAAC"}
@@ -1,14 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- checklist: string[];
9
- patterns: string[];
10
- gotchas: string[];
11
- resources: string[];
12
- }
13
- export declare function run(input: SkillInput): SkillOutput;
14
- //# sourceMappingURL=skill-pattern-detect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-pattern-detect.d.ts","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-pattern-detect.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAClG,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAAE;AAEhI,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgClD"}
@@ -1,35 +0,0 @@
1
- // Skill: pattern-detect — find repeated patterns and anti-patterns in a codebase
2
- export function run(input) {
3
- return {
4
- skill: 'pattern-detect',
5
- checklist: [
6
- 'Call veto_patterns_list to load all stored coding patterns before scanning',
7
- 'Scan the 5 most recently modified files for structural patterns (not style — structure)',
8
- 'Look for: repeated try/catch shapes, recurring if/else chains, duplicated utility logic',
9
- 'Look for anti-patterns: N+1 loops, empty catch blocks, hardcoded magic strings/numbers',
10
- 'Compare found patterns against stored patterns — update confidence via veto_pattern_store',
11
- 'New patterns not yet stored: add via veto_pattern_store with a category.name key format',
12
- 'Anti-patterns found: flag them via veto_memory_store (type="pattern", title="Anti-pattern: X")',
13
- 'After scanning: call veto_agent_plan with agent="pattern-learner" for deeper style analysis',
14
- ],
15
- patterns: [
16
- 'Structure over style: detect structural patterns (how code is organised) not style (how it is formatted)',
17
- 'Frequency threshold: a pattern seen in 3+ files is established; seen in 1–2 files is tentative',
18
- 'Anti-pattern distinction: store anti-patterns separately with "Anti-pattern:" title prefix',
19
- 'Confidence accumulation: every confirmed observation of a pattern increments its confidence score',
20
- ],
21
- gotchas: [
22
- 'Detecting style instead of structure — style is enforced by a linter; pattern detection adds no value there',
23
- 'Flagging intentional deviations as anti-patterns — some files deliberately break the pattern (e.g. test fixtures)',
24
- 'Not updating stored patterns when the codebase evolves — stale patterns mislead future agents',
25
- 'Storing too-specific patterns ("function X uses this exact shape") vs. too-generic ("uses functions")',
26
- ],
27
- resources: [
28
- 'veto_patterns_list — list all stored patterns with confidence scores',
29
- 'veto_pattern_store — add or update a pattern',
30
- 'veto_memory_store (type="pattern") — store anti-patterns and architectural patterns',
31
- 'veto_agent_plan with agent="pattern-learner" — deeper coding style analysis',
32
- ],
33
- };
34
- }
35
- //# sourceMappingURL=skill-pattern-detect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-pattern-detect.js","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-pattern-detect.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAKjF,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE;YACT,4EAA4E;YAC5E,yFAAyF;YACzF,yFAAyF;YACzF,wFAAwF;YACxF,2FAA2F;YAC3F,yFAAyF;YACzF,gGAAgG;YAChG,6FAA6F;SAC9F;QACD,QAAQ,EAAE;YACR,0GAA0G;YAC1G,gGAAgG;YAChG,4FAA4F;YAC5F,mGAAmG;SACpG;QACD,OAAO,EAAE;YACP,6GAA6G;YAC7G,mHAAmH;YACnH,+FAA+F;YAC/F,uGAAuG;SACxG;QACD,SAAS,EAAE;YACT,sEAAsE;YACtE,8CAA8C;YAC9C,qFAAqF;YACrF,6EAA6E;SAC9E;KACF,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-rate-watch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-rate-watch.d.ts","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-rate-watch.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAAE;AAClG,MAAM,WAAW,WAAW;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;CAAE;AAEnJ,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAuDlD"}
@@ -1,58 +0,0 @@
1
- // Skill: rate-watch — monitor AI rate limits and trigger platform switches proactively
2
- export function run(input) {
3
- return {
4
- skill: 'rate-watch',
5
- template: `
6
- // ── Rate Limit Thresholds ─────────────────────────────────────────────────
7
- //
8
- // 0–69% Green zone — normal routing, no action needed
9
- // 70–89% Warning — Tier 1/2 auto-routes to Gemini/Codex
10
- // Tier 3 stays on Claude (too important to downgrade)
11
- // 90%+ Critical — all tasks routed to Gemini/Codex
12
- // Non-urgent work queued for reset
13
- //
14
- // Cross-platform switch (manual):
15
- //
16
- // Claude at 90%+ mid-task?
17
- // 1. Call veto_session_save (capture current state)
18
- // 2. Note the session ID
19
- // 3. Open Gemini terminal
20
- // 4. Call veto_session_restore {session_id}
21
- // 5. Continue — Gemini has full context
22
- // Total interruption: under 10 seconds
23
- //
24
- // All platforms at limit simultaneously?
25
- // Check veto_rate_status for reset times
26
- // Work on tasks that don't need AI (docs, planning, code review checklists)
27
- // Auto-resumes when first platform resets
28
- `.trim(),
29
- checklist: [
30
- 'Call veto_rate_status at the start of long sessions to check headroom',
31
- 'At 70%: start Tier 1/2 tasks on Gemini/Codex proactively instead of waiting for auto-routing',
32
- 'At 80%: save the current session via veto_session_save as a precaution',
33
- 'At 90%: switch platform manually using veto_session_save → veto_session_restore',
34
- 'At 100%: check reset times from veto_rate_status, switch to non-AI tasks until reset',
35
- 'After a platform switch: verify the session restored correctly before continuing',
36
- 'Prefer Gemini for T1/T2 overflow — it has higher rate limits on the free tier',
37
- ],
38
- patterns: [
39
- 'Proactive switch at 80%: switching before hitting 90% avoids a mid-task interruption',
40
- 'Session save at 70%: ensures context is preserved if a hard limit is hit unexpectedly',
41
- 'Platform diversity: using two platforms in parallel halves the effective rate limit pressure',
42
- 'Tier-based overflow: only T1/T2 overflow — never route T3 to a lower-capability model',
43
- ],
44
- gotchas: [
45
- 'Switching platforms without saving the session — the receiving platform starts blind',
46
- 'Routing Tier 3 tasks to Gemini Flash or Haiku to avoid rate limits — quality loss is not worth it',
47
- 'Not checking rate status before a long task — hitting the limit mid-migration is high risk',
48
- 'Forgetting that rate limits reset daily at midnight UTC — a limit today may reset in 2 hours',
49
- ],
50
- resources: [
51
- 'veto_rate_status — current usage % and advisory for all platforms',
52
- 'veto_route_task — routes tasks to the least-loaded platform automatically',
53
- 'veto_session_save — save context before switching platforms',
54
- 'veto_session_restore — restore on the receiving platform',
55
- ],
56
- };
57
- }
58
- //# sourceMappingURL=skill-rate-watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-rate-watch.js","sourceRoot":"","sources":["../../../src/skills/intelligence/skill-rate-watch.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAKvF,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuBb,CAAC,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,uEAAuE;YACvE,8FAA8F;YAC9F,wEAAwE;YACxE,iFAAiF;YACjF,sFAAsF;YACtF,kFAAkF;YAClF,+EAA+E;SAChF;QACD,QAAQ,EAAE;YACR,sFAAsF;YACtF,uFAAuF;YACvF,8FAA8F;YAC9F,uFAAuF;SACxF;QACD,OAAO,EAAE;YACP,sFAAsF;YACtF,mGAAmG;YACnG,4FAA4F;YAC5F,8FAA8F;SAC/F;QACD,SAAS,EAAE;YACT,mEAAmE;YACnE,2EAA2E;YAC3E,6DAA6D;YAC7D,0DAA0D;SAC3D;KACF,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-context-compress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-context-compress.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-context-compress.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA2CD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAuClD"}
@@ -1,82 +0,0 @@
1
- // Skill: context-compress — when and how to compress context before model calls
2
- const TEMPLATE = `
3
- // ── Context Compression Protocol ─────────────────────────────────────────
4
- //
5
- // Apply when token count > 8,000 or before any cross-platform handoff.
6
- // Target: < 30% of original token count, zero loss of active constraints.
7
- //
8
- // Compression tiers:
9
- //
10
- // TIER 1 — Keep verbatim (never compress):
11
- // - Active blockers that require human input
12
- // - Open decisions that have not been resolved
13
- // - File paths of files currently being modified
14
- // - The single next action
15
- // - Error messages that have not been diagnosed
16
- //
17
- // TIER 2 — Compress to 1–3 sentences:
18
- // - Completed subtasks (collapse to "✓ Implemented X")
19
- // - Read-back confirmations ("confirmed the file exists")
20
- // - Resolved blockers ("fixed: dependency conflict — used --legacy-peer-deps")
21
- // - Prior session context (collapse to a 2-sentence progress summary)
22
- //
23
- // TIER 3 — Drop entirely:
24
- // - Superseded decisions (replaced by a newer ADR)
25
- // - Files read but not modified and not needed going forward
26
- // - Exploratory steps that led to dead ends and have been abandoned
27
- // - Console output that has already been analyzed
28
- //
29
- // Compressed context shape:
30
- {
31
- "phase": "implementing",
32
- "completed": ["Brief one-liner per completed subtask"],
33
- "inProgress": "The exact current subtask in one sentence",
34
- "remaining": ["Ordered list of remaining subtasks"],
35
- "activeConstraints": ["Each constraint in one sentence"],
36
- "openDecisions": [{ "question": "...", "options": ["A", "B"] }],
37
- "blockers": ["Any current blocker with full detail"],
38
- "keyFiles": ["Only files still needed going forward"],
39
- "nextAction": "Single concrete step — unambiguous"
40
- }
41
- `.trim();
42
- export function run(input) {
43
- return {
44
- skill: 'context-compress',
45
- template: TEMPLATE,
46
- checklist: [
47
- 'Measure the current context token estimate before compressing',
48
- 'Apply compression only when token count exceeds 8,000 or before a platform handoff',
49
- 'Identify Tier 1 items first — these are never touched',
50
- 'Identify Tier 3 items — drop them completely without summarising',
51
- 'For Tier 2 items: write one sentence per completed subtask; the reader does not need the history',
52
- 'Preserve the full text of any active blocker — the receiving agent must understand it in full',
53
- 'Preserve the nextAction as a concrete step, not "continue the task"',
54
- 'After compressing: verify the compressed context is complete by simulating a cold-start agent reading it',
55
- 'Save the compressed context via veto_session_save before switching context',
56
- 'Target a compression ratio of at least 3:1 — if you cannot achieve this, you have too many Tier 1 items',
57
- 'Do not compress active error messages — they need full context to diagnose',
58
- 'Do not summarise open decisions — they need all options preserved',
59
- ],
60
- patterns: [
61
- 'Tier-based compression: verbatim | summarise | drop — never binary keep/delete',
62
- 'Cold-start test: can a fresh agent read the compressed context and continue the task without questions?',
63
- 'Constraint-first ordering: active constraints at the top, history at the bottom',
64
- 'Forward-only compression: compress backward-looking content, not forward-looking content',
65
- ],
66
- gotchas: [
67
- 'Compressing active constraints as if they were completed work — causes silent violations in the next session',
68
- 'Summarising blockers instead of preserving them verbatim — the receiving agent gets a vague summary and cannot resolve the blocker',
69
- 'Dropping unresolved error messages — the receiving agent restarts diagnosis from scratch',
70
- 'Targeting a fixed token count without checking completeness — may cut load-bearing context',
71
- 'Not saving the compressed context — the compression is lost on the next context switch',
72
- 'Treating all prior session content as droppable — some prior-session decisions are still active constraints',
73
- ],
74
- resources: [
75
- 'Use veto_route_task with context= to get the router\'s compression estimate',
76
- 'Use veto_session_save to persist the compressed context',
77
- 'Use veto_memory_store to permanently record key decisions before they are compressed away',
78
- 'The compression target is based on the router\'s context-compressor module heuristics',
79
- ],
80
- };
81
- }
82
- //# sourceMappingURL=skill-context-compress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-context-compress.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-context-compress.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAiBhF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuChB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,+DAA+D;YAC/D,oFAAoF;YACpF,uDAAuD;YACvD,kEAAkE;YAClE,kGAAkG;YAClG,+FAA+F;YAC/F,qEAAqE;YACrE,0GAA0G;YAC1G,4EAA4E;YAC5E,yGAAyG;YACzG,4EAA4E;YAC5E,mEAAmE;SACpE;QACD,QAAQ,EAAE;YACR,gFAAgF;YAChF,yGAAyG;YACzG,iFAAiF;YACjF,0FAA0F;SAC3F;QACD,OAAO,EAAE;YACP,8GAA8G;YAC9G,oIAAoI;YACpI,0FAA0F;YAC1F,4FAA4F;YAC5F,wFAAwF;YACxF,6GAA6G;SAC9G;QACD,SAAS,EAAE;YACT,6EAA6E;YAC7E,yDAAyD;YACzD,2FAA2F;YAC3F,uFAAuF;SACxF;KACF,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-cross-sync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-cross-sync.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-cross-sync.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAmDD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAqClD"}
@@ -1,88 +0,0 @@
1
- // Skill: cross-sync — how to move veto memory between machines using file export/import
2
- const TEMPLATE = `
3
- // ── Cross-Machine Memory Transfer ────────────────────────────────────────
4
- //
5
- // Veto stores everything in ~/.veto/veto.db (SQLite).
6
- // To continue work on another machine: export → copy → import.
7
- //
8
- // No external services. No accounts. No env vars.
9
- //
10
- // ── Step 1: Export on Machine A ───────────────────────────────────────────
11
- //
12
- // veto_memory_export
13
- // → writes to ~/.veto/veto-export.json by default
14
- // → or specify output_path to write directly to shared storage
15
- //
16
- // Example with shared storage:
17
- // veto_memory_export { output_path: "/Users/you/Dropbox/veto-export.json" }
18
- //
19
- // ── Step 2: Copy the file ─────────────────────────────────────────────────
20
- //
21
- // Options (pick any):
22
- // • Dropbox / OneDrive / Google Drive — put output_path in your sync folder
23
- // • USB drive
24
- // • scp / rsync over SSH
25
- // • Email / messaging app
26
- // • AirDrop (Mac)
27
- //
28
- // ── Step 3: Import on Machine B ───────────────────────────────────────────
29
- //
30
- // veto_memory_import { input_path: "/path/to/veto-export.json" }
31
- // → merges into local ~/.veto/veto.db
32
- // → INSERT OR IGNORE — local rows are never overwritten
33
- // → returns { merged: {...}, skipped: {...} } showing what was added
34
- //
35
- // ── Step 4: Verify and resume ─────────────────────────────────────────────
36
- //
37
- // veto_sessions_list — confirm sessions arrived
38
- // veto_session_restore { id } — load the session you want to continue
39
- // veto_memory_search { query } — confirm knowledge base arrived
40
- //
41
- // ── What gets exported ────────────────────────────────────────────────────
42
- //
43
- // sessions — all saved sessions with task state and context
44
- // decisions — all logged decisions and rationale
45
- // knowledge_base — all stored solutions, patterns, errors, references
46
- // patterns — coding style and convention patterns
47
- // project_map — codebase structure maps
48
- // council_outcomes — all council debate results
49
- `.trim();
50
- export function run(input) {
51
- return {
52
- skill: 'cross-sync',
53
- template: TEMPLATE,
54
- checklist: [
55
- 'Before leaving Machine A: call veto_memory_export to create the export file',
56
- 'Check the export result — confirm row counts look right for sessions and knowledge_base',
57
- 'Copy the export file to Machine B via any method (Dropbox, USB, scp, etc.)',
58
- 'On Machine B: call veto_memory_import with the file path',
59
- 'Check the import result — merged counts show what was added, skipped counts show duplicates',
60
- 'Call veto_sessions_list to confirm the sessions you need are present',
61
- 'Call veto_session_restore with the session ID to load your prior context',
62
- 'Call veto_memory_search to confirm knowledge base entries are available',
63
- 'If working across multiple machines regularly: use a shared folder (Dropbox) as output_path so no manual copy is needed',
64
- 'After significant work on Machine B: run veto_memory_export again before switching back',
65
- ],
66
- patterns: [
67
- 'Export-before-switch: always export before ending a session, not only when switching machines',
68
- 'Shared-folder shortcut: point output_path at a Dropbox/OneDrive folder — no manual copy step',
69
- 'Merge semantics: INSERT OR IGNORE means both machines can export/import in any order without data loss',
70
- 'Verify-after-import: always call veto_sessions_list after import to confirm data arrived before starting work',
71
- ],
72
- gotchas: [
73
- 'Forgetting to export before switching — Machine B starts with no memory of Machine A\'s work',
74
- 'Importing a stale export (from yesterday) — you lose today\'s work on Machine A; always export fresh',
75
- 'The export file is plain JSON — it contains your session context. Don\'t commit it to a public git repo',
76
- 'Pattern merge adds seen_counts from both machines — this is intentional (more observations = higher confidence)',
77
- 'INSERT OR IGNORE means if Machine B already has a session with the same ID, it is not updated. Export fresh from Machine A if you need the latest version of a session',
78
- ],
79
- resources: [
80
- 'veto_memory_export — export all memory to JSON (default path: ~/.veto/veto-export.json)',
81
- 'veto_memory_import — import and merge JSON into local SQLite',
82
- 'veto_sessions_list — verify sessions after import',
83
- 'veto_session_restore — load a specific session to resume work',
84
- 'veto_memory_search — verify knowledge base after import',
85
- ],
86
- };
87
- }
88
- //# sourceMappingURL=skill-cross-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-cross-sync.js","sourceRoot":"","sources":["../../../src/skills/memory/skill-cross-sync.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAiBxF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ChB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,6EAA6E;YAC7E,yFAAyF;YACzF,4EAA4E;YAC5E,0DAA0D;YAC1D,6FAA6F;YAC7F,sEAAsE;YACtE,0EAA0E;YAC1E,yEAAyE;YACzE,yHAAyH;YACzH,yFAAyF;SAC1F;QACD,QAAQ,EAAE;YACR,+FAA+F;YAC/F,8FAA8F;YAC9F,wGAAwG;YACxG,+GAA+G;SAChH;QACD,OAAO,EAAE;YACP,8FAA8F;YAC9F,sGAAsG;YACtG,yGAAyG;YACzG,iHAAiH;YACjH,wKAAwK;SACzK;QACD,SAAS,EAAE;YACT,yFAAyF;YACzF,8DAA8D;YAC9D,mDAAmD;YACnD,+DAA+D;YAC/D,yDAAyD;SAC1D;KACF,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-decision-log.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-decision-log.d.ts","sourceRoot":"","sources":["../../../src/skills/memory/skill-decision-log.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA+DD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAwClD"}