the-high-council 0.6.0

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 (78) hide show
  1. package/.env.example +19 -0
  2. package/CONTRIBUTING.md +41 -0
  3. package/LICENSE +21 -0
  4. package/PERSONAS.md +51 -0
  5. package/README.md +499 -0
  6. package/TROUBLESHOOTING.md +45 -0
  7. package/chains/cheap.json +35 -0
  8. package/chains/gp-judge-v1.json +80 -0
  9. package/chains/idea-open-c2.json +106 -0
  10. package/chains/mock-budget.json +15 -0
  11. package/chains/mock-debate.json +59 -0
  12. package/chains/mock-external.json +59 -0
  13. package/chains/mock-open.json +60 -0
  14. package/chains/mock-proposals.json +57 -0
  15. package/chains/mock-questions-wait.json +63 -0
  16. package/chains/mock-questions.json +63 -0
  17. package/chains/mock-relay.json +42 -0
  18. package/chains/mock-unanimous.json +42 -0
  19. package/chains/mock.json +17 -0
  20. package/chains/plan-auto-mistral.json +101 -0
  21. package/chains/plan-auto.json +131 -0
  22. package/chains/plan-cheap.json +82 -0
  23. package/chains/plan-debate-c2.json +86 -0
  24. package/chains/plan-debate-open-c2.json +98 -0
  25. package/chains/plan-debate-roles-c1.json +149 -0
  26. package/chains/plan-debate.json +116 -0
  27. package/chains/plan-fast.json +66 -0
  28. package/chains/plan-proposals-best-of-5.json +98 -0
  29. package/chains/plan-proposals.json +96 -0
  30. package/chains/plan-relay.json +83 -0
  31. package/chains/plan-thorough.json +82 -0
  32. package/chains/plan-unanimous.json +82 -0
  33. package/chains/seven-cheap.json +67 -0
  34. package/chains/seven.json +60 -0
  35. package/chains/smo-v2-cheap.json +67 -0
  36. package/chains/smo.json +50 -0
  37. package/chains/verify.json +40 -0
  38. package/package.json +55 -0
  39. package/src/board-export.js +77 -0
  40. package/src/budget.js +126 -0
  41. package/src/buys.js +44 -0
  42. package/src/cache-integrity.js +38 -0
  43. package/src/chain-lint.js +107 -0
  44. package/src/chain.js +880 -0
  45. package/src/cli.js +1031 -0
  46. package/src/cost-forecast.js +70 -0
  47. package/src/cost.js +139 -0
  48. package/src/errors.js +82 -0
  49. package/src/http-server.js +349 -0
  50. package/src/integrity.js +48 -0
  51. package/src/key-redaction.js +97 -0
  52. package/src/mcp/server.js +319 -0
  53. package/src/name-lint.js +186 -0
  54. package/src/partial-deliverable.js +38 -0
  55. package/src/peer-claim.js +98 -0
  56. package/src/personas.js +54 -0
  57. package/src/preflight.js +84 -0
  58. package/src/pricing.json +120 -0
  59. package/src/providers.js +268 -0
  60. package/src/replay.js +40 -0
  61. package/src/resume-brief.js +114 -0
  62. package/src/role-diagnostics.js +181 -0
  63. package/src/roles.js +520 -0
  64. package/src/schema-version.js +39 -0
  65. package/src/scope-freeze.js +35 -0
  66. package/src/seat-role.js +96 -0
  67. package/src/shape-rounds.js +58 -0
  68. package/src/spend.js +193 -0
  69. package/src/stage-contract.js +223 -0
  70. package/src/stage-submission.js +53 -0
  71. package/src/tie-break.js +94 -0
  72. package/src/ui/app.js +139 -0
  73. package/src/ui/index.html +43 -0
  74. package/src/ui/parse.js +101 -0
  75. package/src/ui/server.js +117 -0
  76. package/src/ui/style.css +37 -0
  77. package/src/verdict-stats.js +267 -0
  78. package/src/withdrawal-ledger.js +47 -0
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "mock-relay",
3
+ "description": "Offline. Exercises the relay panel branch (each critic is handed the verdicts before it) before spending anything real on it.",
4
+ "maxRounds": 2,
5
+ "signoff": "unanimous",
6
+ "panel": "relay",
7
+ "estimate": {
8
+ "promptTokens": 1000,
9
+ "draftTokens": 1000,
10
+ "critiqueTokens": 300
11
+ },
12
+ "seats": {
13
+ "criteria": {
14
+ "provider": "mock",
15
+ "model": "mock-criteria"
16
+ },
17
+ "builder": {
18
+ "provider": "mock",
19
+ "model": "mock-builder"
20
+ },
21
+ "reviser": {
22
+ "provider": "mock",
23
+ "model": "mock-builder"
24
+ },
25
+ "critics": [
26
+ {
27
+ "provider": "mock",
28
+ "model": "mock-critic-a",
29
+ "lab": "mock-a"
30
+ },
31
+ {
32
+ "provider": "mock",
33
+ "model": "mock-critic-b",
34
+ "lab": "mock-b"
35
+ }
36
+ ],
37
+ "finalist": {
38
+ "provider": "mock",
39
+ "model": "mock-finalist"
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "mock-unanimous",
3
+ "description": "Offline. Exercises the unanimous-signoff branch (all critics review every round, not round-robin) before spending anything real on it.",
4
+ "maxRounds": 2,
5
+ "stopOnPass": true,
6
+ "signoff": "unanimous",
7
+ "estimate": {
8
+ "promptTokens": 1000,
9
+ "draftTokens": 1000,
10
+ "critiqueTokens": 300
11
+ },
12
+ "seats": {
13
+ "criteria": {
14
+ "provider": "mock",
15
+ "model": "mock-criteria"
16
+ },
17
+ "builder": {
18
+ "provider": "mock",
19
+ "model": "mock-builder"
20
+ },
21
+ "reviser": {
22
+ "provider": "mock",
23
+ "model": "mock-builder"
24
+ },
25
+ "critics": [
26
+ {
27
+ "provider": "mock",
28
+ "model": "mock-critic-a",
29
+ "lab": "mock-a"
30
+ },
31
+ {
32
+ "provider": "mock",
33
+ "model": "mock-critic-b",
34
+ "lab": "mock-b"
35
+ }
36
+ ],
37
+ "finalist": {
38
+ "provider": "mock",
39
+ "model": "mock-finalist"
40
+ }
41
+ }
42
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "mock",
3
+ "description": "Offline. Calls no API and costs nothing. Exercises every branch of the chain so the plumbing can be tested before any key exists.",
4
+ "maxRounds": 2,
5
+ "stopOnPass": true,
6
+ "estimate": { "promptTokens": 1000, "draftTokens": 1000, "critiqueTokens": 300 },
7
+ "seats": {
8
+ "criteria": { "provider": "mock", "model": "mock-criteria" },
9
+ "builder": { "provider": "mock", "model": "mock-builder" },
10
+ "reviser": { "provider": "mock", "model": "mock-builder" },
11
+ "critics": [
12
+ { "provider": "mock", "model": "mock-critic-a" },
13
+ { "provider": "mock", "model": "mock-critic-b" }
14
+ ],
15
+ "finalist": { "provider": "mock", "model": "mock-finalist" }
16
+ }
17
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "name": "plan-auto-mistral",
3
+ "description": "plan-auto with every Sonnet-role seat (questions, criteria, skeleton, builder, reviser, handoff) on Mistral Large via OpenRouter, for the hosted shop where no Anthropic balance is spent. The Mistral critic seat is dropped so no lab grades its own draft; four labs remain on the panel.",
4
+ "maxRounds": 3,
5
+ "signoff": "unanimous",
6
+ "proposals": {
7
+ "parts": 6,
8
+ "maxTokens": 1500
9
+ },
10
+ "debate": true,
11
+ "handoff": true,
12
+ "estimate": {
13
+ "promptTokens": 16000,
14
+ "draftTokens": 16000,
15
+ "critiqueTokens": 2000
16
+ },
17
+ "seats": {
18
+ "questions": {
19
+ "provider": "openrouter",
20
+ "model": "mistralai/mistral-large-2512",
21
+ "lab": "mistral",
22
+ "maxTokens": 2000
23
+ },
24
+ "criteria": {
25
+ "provider": "openrouter",
26
+ "model": "mistralai/mistral-large-2512",
27
+ "lab": "mistral",
28
+ "maxTokens": 8000
29
+ },
30
+ "skeleton": {
31
+ "provider": "openrouter",
32
+ "model": "mistralai/mistral-large-2512",
33
+ "lab": "mistral",
34
+ "maxTokens": 8000
35
+ },
36
+ "builder": {
37
+ "provider": "openrouter",
38
+ "model": "mistralai/mistral-large-2512",
39
+ "lab": "mistral",
40
+ "maxTokens": 40000
41
+ },
42
+ "reviser": {
43
+ "provider": "openrouter",
44
+ "model": "mistralai/mistral-large-2512",
45
+ "lab": "mistral",
46
+ "maxTokens": 40000
47
+ },
48
+ "handoff": {
49
+ "provider": "openrouter",
50
+ "model": "mistralai/mistral-large-2512",
51
+ "lab": "mistral",
52
+ "maxTokens": 8000
53
+ },
54
+ "critics": [
55
+ {
56
+ "provider": "together",
57
+ "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
58
+ "maxTokens": 20000,
59
+ "extra": {
60
+ "chat_template_kwargs": {
61
+ "thinking": false
62
+ }
63
+ },
64
+ "lab": "deepseek"
65
+ },
66
+ {
67
+ "provider": "openrouter",
68
+ "model": "qwen/qwen3.5-plus-20260420",
69
+ "maxTokens": 20000,
70
+ "extra": {
71
+ "reasoning": {
72
+ "enabled": false
73
+ }
74
+ },
75
+ "lab": "qwen"
76
+ },
77
+ {
78
+ "provider": "openrouter",
79
+ "model": "z-ai/glm-5.3-flash",
80
+ "maxTokens": 20000,
81
+ "lab": "glm",
82
+ "extra": {
83
+ "reasoning": {
84
+ "effort": "low"
85
+ }
86
+ }
87
+ },
88
+ {
89
+ "provider": "google",
90
+ "model": "gemini-3.6-flash",
91
+ "maxTokens": 20000,
92
+ "lab": "gemini"
93
+ }
94
+ ]
95
+ },
96
+ "scope": "open",
97
+ "questions": {
98
+ "max": 8,
99
+ "wait": true
100
+ }
101
+ }
@@ -0,0 +1,131 @@
1
+ {
2
+ "name": "plan-auto",
3
+ "description": "idea-open-c2 with every Sonnet-role seat (questions, criteria, skeleton, builder, reviser, handoff) as a real Anthropic API seat instead of external claude-code-session, so the chain can run unattended end to end. Same labs, same open scope, same blind panel, same pause-for-answers behaviour. Built for A0 in sower-industries/PLAN.md: prove the automated plan-auto path locally, at real API cost, before any hosting or Stripe work exists.",
4
+ "maxRounds": 3,
5
+ "signoff": "unanimous",
6
+ "proposals": {
7
+ "parts": 6,
8
+ "maxTokens": 1500
9
+ },
10
+ "debate": true,
11
+ "handoff": true,
12
+ "estimate": {
13
+ "promptTokens": 16000,
14
+ "draftTokens": 16000,
15
+ "critiqueTokens": 2000
16
+ },
17
+ "seats": {
18
+ "questions": {
19
+ "provider": "anthropic",
20
+ "model": "claude-sonnet-5",
21
+ "maxTokens": 2000,
22
+ "extra": {
23
+ "thinking": {
24
+ "type": "disabled"
25
+ }
26
+ }
27
+ },
28
+ "criteria": {
29
+ "provider": "anthropic",
30
+ "model": "claude-sonnet-5",
31
+ "maxTokens": 8000,
32
+ "extra": {
33
+ "thinking": {
34
+ "type": "disabled"
35
+ }
36
+ }
37
+ },
38
+ "skeleton": {
39
+ "provider": "anthropic",
40
+ "model": "claude-sonnet-5",
41
+ "maxTokens": 8000,
42
+ "extra": {
43
+ "thinking": {
44
+ "type": "disabled"
45
+ }
46
+ }
47
+ },
48
+ "builder": {
49
+ "provider": "anthropic",
50
+ "model": "claude-sonnet-5",
51
+ "maxTokens": 40000,
52
+ "extra": {
53
+ "thinking": {
54
+ "type": "disabled"
55
+ }
56
+ }
57
+ },
58
+ "reviser": {
59
+ "provider": "anthropic",
60
+ "model": "claude-sonnet-5",
61
+ "maxTokens": 40000,
62
+ "extra": {
63
+ "thinking": {
64
+ "type": "disabled"
65
+ }
66
+ }
67
+ },
68
+ "handoff": {
69
+ "provider": "anthropic",
70
+ "model": "claude-sonnet-5",
71
+ "maxTokens": 8000,
72
+ "extra": {
73
+ "thinking": {
74
+ "type": "disabled"
75
+ }
76
+ }
77
+ },
78
+ "critics": [
79
+ {
80
+ "provider": "together",
81
+ "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
82
+ "maxTokens": 20000,
83
+ "extra": {
84
+ "chat_template_kwargs": {
85
+ "thinking": false
86
+ }
87
+ },
88
+ "lab": "deepseek"
89
+ },
90
+ {
91
+ "provider": "openrouter",
92
+ "model": "qwen/qwen3.5-plus-20260420",
93
+ "maxTokens": 20000,
94
+ "extra": {
95
+ "reasoning": {
96
+ "enabled": false
97
+ }
98
+ },
99
+ "lab": "qwen"
100
+ },
101
+ {
102
+ "provider": "openrouter",
103
+ "model": "z-ai/glm-5.3-flash",
104
+ "maxTokens": 20000,
105
+ "lab": "glm",
106
+ "extra": {
107
+ "reasoning": {
108
+ "effort": "low"
109
+ }
110
+ }
111
+ },
112
+ {
113
+ "provider": "openrouter",
114
+ "model": "mistralai/mistral-large-2512",
115
+ "maxTokens": 20000,
116
+ "lab": "mistral"
117
+ },
118
+ {
119
+ "provider": "google",
120
+ "model": "gemini-3.6-flash",
121
+ "maxTokens": 20000,
122
+ "lab": "gemini"
123
+ }
124
+ ]
125
+ },
126
+ "scope": "open",
127
+ "questions": {
128
+ "max": 8,
129
+ "wait": true
130
+ }
131
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "plan-cheap",
3
+ "description": "Generic long-form building-plan pass, one system/slice per run - not tied to any one project. Renamed from smo-v2-cheap once it stopped being SMO-specific. Builder/reviser/criteria on Sonnet 5 (worth paying for the seat that writes the plan); 5 critic seats, cheap-tier, no xAI/Grok. Mistral parked (2026-09-07: account-side 429 across three keys/workspaces, unresolved on their end) - add back once it clears, nothing else needs to change. Criteria are generated fresh from whatever request/constraints the task file gives it.",
4
+ "maxRounds": 5,
5
+ "stopOnPass": true,
6
+ "estimate": {
7
+ "promptTokens": 16000,
8
+ "draftTokens": 16000,
9
+ "critiqueTokens": 2000
10
+ },
11
+ "seats": {
12
+ "criteria": {
13
+ "provider": "anthropic",
14
+ "model": "claude-sonnet-5",
15
+ "maxTokens": 8000,
16
+ "extra": {
17
+ "thinking": {
18
+ "type": "disabled"
19
+ }
20
+ }
21
+ },
22
+ "builder": {
23
+ "provider": "anthropic",
24
+ "model": "claude-sonnet-5",
25
+ "maxTokens": 40000,
26
+ "extra": {
27
+ "thinking": {
28
+ "type": "disabled"
29
+ }
30
+ }
31
+ },
32
+ "reviser": {
33
+ "provider": "anthropic",
34
+ "model": "claude-sonnet-5",
35
+ "maxTokens": 40000,
36
+ "extra": {
37
+ "thinking": {
38
+ "type": "disabled"
39
+ }
40
+ }
41
+ },
42
+ "critics": [
43
+ {
44
+ "provider": "together",
45
+ "model": "Qwen/Qwen3.5-9B",
46
+ "maxTokens": 20000,
47
+ "extra": {
48
+ "chat_template_kwargs": {
49
+ "enable_thinking": false
50
+ }
51
+ },
52
+ "lab": "qwen"
53
+ },
54
+ {
55
+ "provider": "zai",
56
+ "model": "glm-4.7-flash",
57
+ "maxTokens": 20000,
58
+ "extra": {
59
+ "thinking": {
60
+ "type": "disabled"
61
+ }
62
+ }
63
+ },
64
+ {
65
+ "provider": "cohere",
66
+ "model": "command-r7b-12-2024",
67
+ "maxTokens": 4096
68
+ },
69
+ {
70
+ "provider": "google",
71
+ "model": "gemini-3.6-flash",
72
+ "maxTokens": 20000
73
+ },
74
+ {
75
+ "provider": "openrouter",
76
+ "model": "meta-llama/llama-3.3-70b-instruct",
77
+ "maxTokens": 20000,
78
+ "lab": "meta"
79
+ }
80
+ ]
81
+ }
82
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "plan-debate-c2",
3
+ "description": "plan-debate with every Sonnet stage as an EXTERNAL seat (his call, 2026-09-07): the run pauses at criteria, skeleton, build, each revision and the handoff, writes the exact prompt to NEEDS-<label>.md, and a Claude Code session on the Max plan writes <label>.md and resumes. The five labs stay on the API for cents. Same board, ledger, scoreboard and report as plan-debate; API cost is the labs only.",
4
+ "maxRounds": 3,
5
+ "signoff": "unanimous",
6
+ "proposals": {
7
+ "parts": 3,
8
+ "maxTokens": 1500
9
+ },
10
+ "debate": true,
11
+ "handoff": true,
12
+ "estimate": {
13
+ "promptTokens": 16000,
14
+ "draftTokens": 16000,
15
+ "critiqueTokens": 2000
16
+ },
17
+ "seats": {
18
+ "criteria": {
19
+ "provider": "external",
20
+ "model": "claude-code-session"
21
+ },
22
+ "skeleton": {
23
+ "provider": "external",
24
+ "model": "claude-code-session"
25
+ },
26
+ "builder": {
27
+ "provider": "external",
28
+ "model": "claude-code-session"
29
+ },
30
+ "reviser": {
31
+ "provider": "external",
32
+ "model": "claude-code-session"
33
+ },
34
+ "handoff": {
35
+ "provider": "external",
36
+ "model": "claude-code-session"
37
+ },
38
+ "critics": [
39
+ {
40
+ "provider": "together",
41
+ "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
42
+ "maxTokens": 20000,
43
+ "extra": {
44
+ "chat_template_kwargs": {
45
+ "thinking": false
46
+ }
47
+ },
48
+ "lab": "deepseek"
49
+ },
50
+ {
51
+ "provider": "openrouter",
52
+ "model": "qwen/qwen3.5-plus-20260420",
53
+ "maxTokens": 20000,
54
+ "extra": {
55
+ "reasoning": {
56
+ "enabled": false
57
+ }
58
+ },
59
+ "lab": "qwen"
60
+ },
61
+ {
62
+ "provider": "openrouter",
63
+ "model": "z-ai/glm-5.3-flash",
64
+ "maxTokens": 20000,
65
+ "lab": "glm",
66
+ "extra": {
67
+ "reasoning": {
68
+ "effort": "low"
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "provider": "openrouter",
74
+ "model": "mistralai/mistral-large-2512",
75
+ "maxTokens": 20000,
76
+ "lab": "mistral"
77
+ },
78
+ {
79
+ "provider": "google",
80
+ "model": "gemini-3.6-flash",
81
+ "maxTokens": 20000,
82
+ "lab": "gemini"
83
+ }
84
+ ]
85
+ }
86
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "plan-debate-open-c2",
3
+ "description": "plan-debate-c2 with scope OPEN (his call, 2026-09-07): every seat may add scope, each addition recorded with author and reason; critics judge additions for consistency, never restraint; the human-side verdict pass cuts to a phase afterwards. Proposers get 6 parts. Sonnet stages external (a Claude Code session on the subscription). Kimi K3 added 2026-09-08 as a sixth critic/proposer seat (OpenRouter, real Sept-2026 pricing ~$2.50/$14 per M - pricier than the other five; kept because it is a genuinely different lab, not for its price).",
4
+ "maxRounds": 3,
5
+ "signoff": "unanimous",
6
+ "proposals": {
7
+ "parts": 6,
8
+ "maxTokens": 1500
9
+ },
10
+ "debate": true,
11
+ "handoff": true,
12
+ "estimate": {
13
+ "promptTokens": 16000,
14
+ "draftTokens": 16000,
15
+ "critiqueTokens": 2000
16
+ },
17
+ "seats": {
18
+ "criteria": {
19
+ "provider": "external",
20
+ "model": "claude-code-session"
21
+ },
22
+ "skeleton": {
23
+ "provider": "external",
24
+ "model": "claude-code-session"
25
+ },
26
+ "builder": {
27
+ "provider": "external",
28
+ "model": "claude-code-session"
29
+ },
30
+ "reviser": {
31
+ "provider": "external",
32
+ "model": "claude-code-session"
33
+ },
34
+ "handoff": {
35
+ "provider": "external",
36
+ "model": "claude-code-session"
37
+ },
38
+ "critics": [
39
+ {
40
+ "provider": "together",
41
+ "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
42
+ "maxTokens": 20000,
43
+ "extra": {
44
+ "chat_template_kwargs": {
45
+ "thinking": false
46
+ }
47
+ },
48
+ "lab": "deepseek"
49
+ },
50
+ {
51
+ "provider": "openrouter",
52
+ "model": "qwen/qwen3.5-plus-20260420",
53
+ "maxTokens": 20000,
54
+ "extra": {
55
+ "reasoning": {
56
+ "enabled": false
57
+ }
58
+ },
59
+ "lab": "qwen"
60
+ },
61
+ {
62
+ "provider": "openrouter",
63
+ "model": "z-ai/glm-5.3-flash",
64
+ "maxTokens": 20000,
65
+ "lab": "glm",
66
+ "extra": {
67
+ "reasoning": {
68
+ "effort": "low"
69
+ }
70
+ }
71
+ },
72
+ {
73
+ "provider": "openrouter",
74
+ "model": "mistralai/mistral-large-2512",
75
+ "maxTokens": 20000,
76
+ "lab": "mistral"
77
+ },
78
+ {
79
+ "provider": "google",
80
+ "model": "gemini-3.6-flash",
81
+ "maxTokens": 20000,
82
+ "lab": "gemini"
83
+ },
84
+ {
85
+ "provider": "openrouter",
86
+ "model": "moonshotai/kimi-k3",
87
+ "maxTokens": 20000,
88
+ "lab": "kimi",
89
+ "extra": {
90
+ "reasoning": {
91
+ "enabled": false
92
+ }
93
+ }
94
+ }
95
+ ]
96
+ },
97
+ "scope": "open"
98
+ }