ultimate-pi 0.2.5 → 0.2.6

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 (31) hide show
  1. package/.pi/PACKAGING.md +35 -0
  2. package/.pi/prompts/harness-setup.md +48 -10
  3. package/.pi/{settings.json → settings.example.json} +1 -1
  4. package/CHANGELOG.md +9 -0
  5. package/package.json +35 -6
  6. package/.pi/harness/browser.json +0 -5
  7. package/.pi/harness/debates/README.md +0 -9
  8. package/.pi/harness/incidents/README.md +0 -6
  9. package/.pi/harness/release-readiness-report.md +0 -128
  10. package/.pi/harness/router/README.md +0 -35
  11. package/.pi/harness/router/apply-router-proposal.mjs +0 -153
  12. package/.pi/harness/router/proposals/canary-proposal.json +0 -96
  13. package/.pi/harness/router/propose-router-tuning.mjs +0 -149
  14. package/.pi/harness/runs/019e272f-3eef-7107-9712-ce281de55707-1778773891854/events.jsonl +0 -2
  15. package/.pi/harness/runs/019e272f-3eef-7107-9712-ce281de55707-1778773891854/trace.json +0 -17
  16. package/.pi/harness/runs/019e272f-3eef-7107-9712-ce281de55707-1778773912057/events.jsonl +0 -2
  17. package/.pi/harness/runs/019e272f-3eef-7107-9712-ce281de55707-1778773912057/trace.json +0 -17
  18. package/.pi/harness/runs/019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096/events.jsonl +0 -6
  19. package/.pi/harness/runs/019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096/trace.json +0 -42
  20. package/.pi/harness/runs/019e2732-8651-74e5-9f5d-4d06c3105f25-1778774136101/events.jsonl +0 -1
  21. package/.pi/harness/runs/019e2758-b332-771b-ad6f-54d0d8478768-1778776600591/events.jsonl +0 -2
  22. package/.pi/harness/runs/019e2758-b332-771b-ad6f-54d0d8478768-1778776600591/trace.json +0 -17
  23. package/.pi/harness/runs/README.md +0 -6
  24. package/.pi/harness/runs/budget-events.jsonl +0 -4
  25. package/.pi/harness/runs/canary-candidate-router.json +0 -72
  26. package/.pi/harness/runs/canary-evidence.json +0 -9
  27. package/.pi/harness/runs/index.jsonl +0 -4
  28. package/.pi/model-router.json +0 -95
  29. package/.pi/npm/.gitignore +0 -2
  30. package/.pi/prompts/release.md +0 -225
  31. package/firecrawl/.env +0 -53
@@ -1,149 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import crypto from "node:crypto";
4
- import fs from "node:fs";
5
- import path from "node:path";
6
-
7
- const ROUTER_PATH = ".pi/model-router.json";
8
-
9
- function fail(message) {
10
- process.stderr.write(`Error: ${message}\n`);
11
- process.exit(1);
12
- }
13
-
14
- function parseArgs(argv) {
15
- const args = {};
16
- for (let i = 0; i < argv.length; i++) {
17
- const token = argv[i];
18
- if (!token.startsWith("--")) continue;
19
- const key = token.slice(2);
20
- const value = argv[i + 1];
21
- if (!value || value.startsWith("--")) {
22
- args[key] = true;
23
- continue;
24
- }
25
- args[key] = value;
26
- i++;
27
- }
28
- return args;
29
- }
30
-
31
- function readJson(filePath, label) {
32
- if (!fs.existsSync(filePath)) {
33
- fail(`${label} not found: ${filePath}`);
34
- }
35
- try {
36
- return JSON.parse(fs.readFileSync(filePath, "utf8"));
37
- } catch (error) {
38
- fail(`${label} is not valid JSON (${filePath}): ${error.message}`);
39
- }
40
- }
41
-
42
- function sha256FromJson(value) {
43
- const canonical = `${JSON.stringify(value, null, 2)}\n`;
44
- return crypto.createHash("sha256").update(canonical).digest("hex");
45
- }
46
-
47
- function ensureEvidence(evidence) {
48
- const required = [
49
- "sample_count",
50
- "min_sample_count",
51
- "success_rate_delta",
52
- "cost_per_task_delta",
53
- "regression_guard_passed",
54
- "trace_refs",
55
- ];
56
- for (const field of required) {
57
- if (!(field in evidence)) fail(`evidence missing required field: ${field}`);
58
- }
59
- if (!Number.isInteger(evidence.sample_count) || evidence.sample_count < 1) {
60
- fail("evidence.sample_count must be an integer >= 1");
61
- }
62
- if (
63
- !Number.isInteger(evidence.min_sample_count) ||
64
- evidence.min_sample_count < 1
65
- ) {
66
- fail("evidence.min_sample_count must be an integer >= 1");
67
- }
68
- if (evidence.sample_count < evidence.min_sample_count) {
69
- fail(
70
- `insufficient sample_count (${evidence.sample_count} < ${evidence.min_sample_count})`,
71
- );
72
- }
73
- if (typeof evidence.success_rate_delta !== "number") {
74
- fail("evidence.success_rate_delta must be numeric");
75
- }
76
- if (typeof evidence.cost_per_task_delta !== "number") {
77
- fail("evidence.cost_per_task_delta must be numeric");
78
- }
79
- if (evidence.regression_guard_passed !== true) {
80
- fail("evidence.regression_guard_passed must be true");
81
- }
82
- if (!Array.isArray(evidence.trace_refs) || evidence.trace_refs.length === 0) {
83
- fail("evidence.trace_refs must be a non-empty array");
84
- }
85
- }
86
-
87
- const args = parseArgs(process.argv.slice(2));
88
-
89
- if (args.help || args.h) {
90
- process.stdout.write(
91
- [
92
- "Usage:",
93
- " node .pi/harness/router/propose-router-tuning.mjs \\",
94
- " --evidence <evidence.json> \\",
95
- " --candidate <candidate-router.json> \\",
96
- " --proposal-out <proposal.json>",
97
- "",
98
- "Behavior:",
99
- " - validates evidence thresholds",
100
- " - captures base/candidate router hashes",
101
- " - emits proposal artifact without changing .pi/model-router.json",
102
- ].join("\n"),
103
- );
104
- process.exit(0);
105
- }
106
-
107
- if (!args.evidence) fail("missing --evidence");
108
- if (!args.candidate) fail("missing --candidate");
109
- if (!args["proposal-out"]) fail("missing --proposal-out");
110
-
111
- const baseRouter = readJson(ROUTER_PATH, "base router");
112
- const candidateRouter = readJson(args.candidate, "candidate router");
113
- const evidence = readJson(args.evidence, "evidence");
114
-
115
- ensureEvidence(evidence);
116
-
117
- const now = new Date().toISOString();
118
- const proposalId = `router-tune-${now.replace(/[:.]/g, "-")}`;
119
-
120
- const proposal = {
121
- schema_version: "1.0.0",
122
- proposal_id: proposalId,
123
- created_at: now,
124
- router_path: ROUTER_PATH,
125
- base_router_sha256: sha256FromJson(baseRouter),
126
- candidate_router_sha256: sha256FromJson(candidateRouter),
127
- evidence,
128
- status: "proposed",
129
- approval: {
130
- required: true,
131
- approved_by: null,
132
- approved_at: null,
133
- justification: null,
134
- },
135
- candidate_router: candidateRouter,
136
- };
137
-
138
- const outputPath = path.resolve(args["proposal-out"]);
139
- fs.mkdirSync(path.dirname(outputPath), { recursive: true });
140
- fs.writeFileSync(outputPath, `${JSON.stringify(proposal, null, 2)}\n`);
141
-
142
- process.stdout.write(
143
- [
144
- "Router tuning proposal created.",
145
- `proposal_id: ${proposal.proposal_id}`,
146
- `output: ${outputPath}`,
147
- "status: proposed (no router write performed)",
148
- ].join("\n") + "\n",
149
- );
@@ -1,2 +0,0 @@
1
- {"timestamp":"2026-05-14T15:51:31.965Z","type":"run_start","run_id":"019e272f-3eef-7107-9712-ce281de55707-1778773891854","plan_id":"plan-unknown","phase":"plan"}
2
- {"timestamp":"2026-05-14T15:51:38.346Z","type":"run_end","run_id":"019e272f-3eef-7107-9712-ce281de55707-1778773891854","phase":"plan","tool_span_count":0,"artifact_ref_count":0}
@@ -1,17 +0,0 @@
1
- {
2
- "schema_version": "1.0.0",
3
- "contract_version": "1.0.0",
4
- "run_id": "019e272f-3eef-7107-9712-ce281de55707-1778773891854",
5
- "plan_id": "plan-unknown",
6
- "agent_id": "019e272f-3eef-7107-9712-ce281de55707",
7
- "phase": "plan",
8
- "model": "auto",
9
- "thinking_level": "off",
10
- "tool_spans": [],
11
- "artifact_refs": [],
12
- "cost": {
13
- "input_tokens": 15381,
14
- "output_tokens": 33,
15
- "total_tokens": 15414
16
- }
17
- }
@@ -1,2 +0,0 @@
1
- {"timestamp":"2026-05-14T15:51:52.062Z","type":"run_start","run_id":"019e272f-3eef-7107-9712-ce281de55707-1778773912057","plan_id":"plan-unknown","phase":"plan"}
2
- {"timestamp":"2026-05-14T15:52:14.313Z","type":"run_end","run_id":"019e272f-3eef-7107-9712-ce281de55707-1778773912057","phase":"plan","tool_span_count":0,"artifact_ref_count":0}
@@ -1,17 +0,0 @@
1
- {
2
- "schema_version": "1.0.0",
3
- "contract_version": "1.0.0",
4
- "run_id": "019e272f-3eef-7107-9712-ce281de55707-1778773912057",
5
- "plan_id": "plan-unknown",
6
- "agent_id": "019e272f-3eef-7107-9712-ce281de55707",
7
- "phase": "plan",
8
- "model": "auto",
9
- "thinking_level": "off",
10
- "tool_spans": [],
11
- "artifact_refs": [],
12
- "cost": {
13
- "input_tokens": 31337,
14
- "output_tokens": 528,
15
- "total_tokens": 31865
16
- }
17
- }
@@ -1,6 +0,0 @@
1
- {"timestamp":"2026-05-14T15:54:46.136Z","type":"run_start","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","plan_id":"plan-unknown","phase":"plan"}
2
- {"timestamp":"2026-05-14T15:54:59.110Z","type":"tool_start","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","tool_call_id":"call_00_7UHDcydTHJHVR2dT5xpb0903","tool_name":"bash"}
3
- {"timestamp":"2026-05-14T15:54:59.137Z","type":"tool_start","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","tool_call_id":"call_01_aNsry1whTl5hRf5Ew91t3142","tool_name":"bash"}
4
- {"timestamp":"2026-05-14T15:54:59.139Z","type":"tool_start","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","tool_call_id":"call_02_N2e56Q6vKr6cAYzd4Z9q7953","tool_name":"bash"}
5
- {"timestamp":"2026-05-14T15:55:11.546Z","type":"tool_start","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","tool_call_id":"call_00_wG71Rv3SKrf6R9K03EeS0264","tool_name":"ctx_batch_execute"}
6
- {"timestamp":"2026-05-14T15:55:25.167Z","type":"run_end","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","phase":"plan","tool_span_count":4,"artifact_ref_count":0}
@@ -1,42 +0,0 @@
1
- {
2
- "schema_version": "1.0.0",
3
- "contract_version": "1.0.0",
4
- "run_id": "019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096",
5
- "plan_id": "plan-unknown",
6
- "agent_id": "019e2732-8651-74e5-9f5d-4d06c3105f25",
7
- "phase": "plan",
8
- "model": "auto",
9
- "thinking_level": "off",
10
- "tool_spans": [
11
- {
12
- "tool_call_id": "call_00_7UHDcydTHJHVR2dT5xpb0903",
13
- "tool_name": "bash",
14
- "started_at": "2026-05-14T15:54:59.108Z",
15
- "ended_at": "2026-05-14T15:54:59.108Z"
16
- },
17
- {
18
- "tool_call_id": "call_01_aNsry1whTl5hRf5Ew91t3142",
19
- "tool_name": "bash",
20
- "started_at": "2026-05-14T15:54:59.136Z",
21
- "ended_at": "2026-05-14T15:54:59.136Z"
22
- },
23
- {
24
- "tool_call_id": "call_02_N2e56Q6vKr6cAYzd4Z9q7953",
25
- "tool_name": "bash",
26
- "started_at": "2026-05-14T15:54:59.139Z",
27
- "ended_at": "2026-05-14T15:54:59.139Z"
28
- },
29
- {
30
- "tool_call_id": "call_00_wG71Rv3SKrf6R9K03EeS0264",
31
- "tool_name": "ctx_batch_execute",
32
- "started_at": "2026-05-14T15:55:11.541Z",
33
- "ended_at": "2026-05-14T15:55:11.541Z"
34
- }
35
- ],
36
- "artifact_refs": [],
37
- "cost": {
38
- "input_tokens": 16951,
39
- "output_tokens": 1020,
40
- "total_tokens": 17971
41
- }
42
- }
@@ -1 +0,0 @@
1
- {"timestamp":"2026-05-14T15:55:36.107Z","type":"run_start","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774136101","plan_id":"plan-unknown","phase":"plan"}
@@ -1,2 +0,0 @@
1
- {"timestamp":"2026-05-14T16:36:40.660Z","type":"run_start","run_id":"019e2758-b332-771b-ad6f-54d0d8478768-1778776600591","plan_id":"plan-unknown","phase":"plan"}
2
- {"timestamp":"2026-05-14T16:36:47.570Z","type":"run_end","run_id":"019e2758-b332-771b-ad6f-54d0d8478768-1778776600591","phase":"plan","tool_span_count":0,"artifact_ref_count":0}
@@ -1,17 +0,0 @@
1
- {
2
- "schema_version": "1.0.0",
3
- "contract_version": "1.0.0",
4
- "run_id": "019e2758-b332-771b-ad6f-54d0d8478768-1778776600591",
5
- "plan_id": "plan-unknown",
6
- "agent_id": "019e2758-b332-771b-ad6f-54d0d8478768",
7
- "phase": "plan",
8
- "model": "auto",
9
- "thinking_level": "off",
10
- "tool_spans": [],
11
- "artifact_refs": [],
12
- "cost": {
13
- "input_tokens": 21,
14
- "output_tokens": 32,
15
- "total_tokens": 53
16
- }
17
- }
@@ -1,6 +0,0 @@
1
- # Harness Runs
2
-
3
- Store lightweight run metadata and trace indexes here.
4
-
5
- - Primary source of truth for full trace payloads remains external telemetry.
6
- - Local files should contain run IDs, pointers, and replay metadata only.
@@ -1,4 +0,0 @@
1
- {"timestamp":"2026-05-14T15:54:59.134Z","schema_version":"1.0.0","contract_version":"1.0.0","event_type":"budget_exhausted","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25","debate_id":"plan-budget-guard","round_count":1,"budget_used":16593,"exhaustion_reason":"debate_global_cap_exceeded","caps":{"max_rounds":6,"round_token_cap":2500,"debate_global_cap":35000},"minimum_evidence_confidence":0.6,"default_policy_outcome":"block","human_override_allowed":true}
2
- {"timestamp":"2026-05-14T15:54:59.138Z","schema_version":"1.0.0","contract_version":"1.0.0","event_type":"budget_exhausted","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25","debate_id":"plan-budget-guard","round_count":1,"budget_used":16593,"exhaustion_reason":"debate_global_cap_exceeded","caps":{"max_rounds":6,"round_token_cap":2500,"debate_global_cap":35000},"minimum_evidence_confidence":0.6,"default_policy_outcome":"block","human_override_allowed":true}
3
- {"timestamp":"2026-05-14T15:54:59.140Z","schema_version":"1.0.0","contract_version":"1.0.0","event_type":"budget_exhausted","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25","debate_id":"plan-budget-guard","round_count":1,"budget_used":16593,"exhaustion_reason":"debate_global_cap_exceeded","caps":{"max_rounds":6,"round_token_cap":2500,"debate_global_cap":35000},"minimum_evidence_confidence":0.6,"default_policy_outcome":"block","human_override_allowed":true}
4
- {"timestamp":"2026-05-14T15:55:11.581Z","schema_version":"1.0.0","contract_version":"1.0.0","event_type":"budget_exhausted","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25","debate_id":"plan-budget-guard","round_count":1,"budget_used":17161,"exhaustion_reason":"debate_global_cap_exceeded","caps":{"max_rounds":6,"round_token_cap":2500,"debate_global_cap":35000},"minimum_evidence_confidence":0.6,"default_policy_outcome":"block","human_override_allowed":true}
@@ -1,72 +0,0 @@
1
- {
2
- "defaultProfile": "auto",
3
- "debug": false,
4
- "classifierModel": "opencode-go/qwen3.6-plus",
5
- "phaseBias": 0.5,
6
- "maxSessionBudget": 1.0,
7
- "largeContextThreshold": 100000,
8
- "rules": [
9
- {
10
- "matches": ["deploy", "production", "release"],
11
- "tier": "high",
12
- "reason": "Safety check for production tasks"
13
- },
14
- {
15
- "matches": "changelog",
16
- "tier": "low"
17
- }
18
- ],
19
- "profiles": {
20
- "auto": {
21
- "high": {
22
- "model": "opencode-go/deepseek-v4-pro",
23
- "thinking": "high",
24
- "fallbacks": ["opencode-go/qwen3.6-plus", "opencode-go/kimi-k2.6"]
25
- },
26
- "medium": {
27
- "model": "opencode-go/qwen3.6-plus",
28
- "thinking": "medium",
29
- "fallbacks": ["opencode-go/deepseek-v4-pro"]
30
- },
31
- "low": {
32
- "model": "opencode-go/deepseek-v4-flash",
33
- "thinking": "low",
34
- "fallbacks": ["opencode-go/qwen3.5-plus"]
35
- }
36
- },
37
- "cheap": {
38
- "high": {
39
- "model": "opencode-go/qwen3.6-plus",
40
- "thinking": "low",
41
- "fallbacks": ["opencode-go/qwen3.5-plus"]
42
- },
43
- "medium": {
44
- "model": "opencode-go/qwen3.5-plus",
45
- "thinking": "off",
46
- "fallbacks": ["opencode-go/deepseek-v4-flash"]
47
- },
48
- "low": {
49
- "model": "opencode-go/deepseek-v4-flash",
50
- "thinking": "off",
51
- "fallbacks": ["opencode-go/qwen3.5-plus"]
52
- }
53
- },
54
- "deep": {
55
- "high": {
56
- "model": "opencode-go/deepseek-v4-pro",
57
- "thinking": "xhigh",
58
- "fallbacks": ["opencode-go/kimi-k2.6"]
59
- },
60
- "medium": {
61
- "model": "opencode-go/kimi-k2.6",
62
- "thinking": "medium",
63
- "fallbacks": ["opencode-go/deepseek-v4-pro"]
64
- },
65
- "low": {
66
- "model": "opencode-go/qwen3.6-plus",
67
- "thinking": "low",
68
- "fallbacks": ["opencode-go/deepseek-v4-flash"]
69
- }
70
- }
71
- }
72
- }
@@ -1,9 +0,0 @@
1
- {
2
- "sample_count": 24,
3
- "min_sample_count": 12,
4
- "success_rate_delta": 0.08,
5
- "cost_per_task_delta": -0.04,
6
- "regression_guard_passed": true,
7
- "trace_refs": ["run-canary-001", "run-canary-002"],
8
- "notes": "canary validation synthetic evidence"
9
- }
@@ -1,4 +0,0 @@
1
- {"timestamp":"2026-05-14T15:51:38.345Z","run_id":"019e272f-3eef-7107-9712-ce281de55707-1778773891854","plan_id":"plan-unknown","phase":"plan","trace_file":"/home/aryaniyaps/ai-projects/ultimate-pi/.pi/harness/runs/019e272f-3eef-7107-9712-ce281de55707-1778773891854/trace.json"}
2
- {"timestamp":"2026-05-14T15:52:14.312Z","run_id":"019e272f-3eef-7107-9712-ce281de55707-1778773912057","plan_id":"plan-unknown","phase":"plan","trace_file":"/home/aryaniyaps/ai-projects/ultimate-pi/.pi/harness/runs/019e272f-3eef-7107-9712-ce281de55707-1778773912057/trace.json"}
3
- {"timestamp":"2026-05-14T15:55:25.166Z","run_id":"019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096","plan_id":"plan-unknown","phase":"plan","trace_file":"/home/aryaniyaps/ai-projects/ultimate-pi/.pi/harness/runs/019e2732-8651-74e5-9f5d-4d06c3105f25-1778774086096/trace.json"}
4
- {"timestamp":"2026-05-14T16:36:47.569Z","run_id":"019e2758-b332-771b-ad6f-54d0d8478768-1778776600591","plan_id":"plan-unknown","phase":"plan","trace_file":"/home/aryaniyaps/ai-projects/ultimate-pi/.pi/harness/runs/019e2758-b332-771b-ad6f-54d0d8478768-1778776600591/trace.json"}
@@ -1,95 +0,0 @@
1
- {
2
- "defaultProfile": "auto",
3
- "debug": false,
4
- "classifierModel": "opencode-go/qwen3.6-plus",
5
- "phaseBias": 0.5,
6
- "maxSessionBudget": 1.0,
7
- "largeContextThreshold": 100000,
8
- "rules": [
9
- {
10
- "matches": [
11
- "deploy",
12
- "production",
13
- "release"
14
- ],
15
- "tier": "high",
16
- "reason": "Safety check for production tasks"
17
- },
18
- {
19
- "matches": "changelog",
20
- "tier": "low"
21
- }
22
- ],
23
- "profiles": {
24
- "auto": {
25
- "high": {
26
- "model": "opencode-go/deepseek-v4-pro",
27
- "thinking": "high",
28
- "fallbacks": [
29
- "opencode-go/qwen3.6-plus",
30
- "opencode-go/kimi-k2.6"
31
- ]
32
- },
33
- "medium": {
34
- "model": "opencode-go/qwen3.6-plus",
35
- "thinking": "medium",
36
- "fallbacks": [
37
- "opencode-go/deepseek-v4-pro"
38
- ]
39
- },
40
- "low": {
41
- "model": "opencode-go/deepseek-v4-flash",
42
- "thinking": "low",
43
- "fallbacks": [
44
- "opencode-go/qwen3.5-plus"
45
- ]
46
- }
47
- },
48
- "cheap": {
49
- "high": {
50
- "model": "opencode-go/qwen3.6-plus",
51
- "thinking": "low",
52
- "fallbacks": [
53
- "opencode-go/qwen3.5-plus"
54
- ]
55
- },
56
- "medium": {
57
- "model": "opencode-go/qwen3.5-plus",
58
- "thinking": "off",
59
- "fallbacks": [
60
- "opencode-go/deepseek-v4-flash"
61
- ]
62
- },
63
- "low": {
64
- "model": "opencode-go/deepseek-v4-flash",
65
- "thinking": "off",
66
- "fallbacks": [
67
- "opencode-go/qwen3.5-plus"
68
- ]
69
- }
70
- },
71
- "deep": {
72
- "high": {
73
- "model": "opencode-go/deepseek-v4-pro",
74
- "thinking": "xhigh",
75
- "fallbacks": [
76
- "opencode-go/kimi-k2.6"
77
- ]
78
- },
79
- "medium": {
80
- "model": "opencode-go/kimi-k2.6",
81
- "thinking": "medium",
82
- "fallbacks": [
83
- "opencode-go/deepseek-v4-pro"
84
- ]
85
- },
86
- "low": {
87
- "model": "opencode-go/qwen3.6-plus",
88
- "thinking": "low",
89
- "fallbacks": [
90
- "opencode-go/deepseek-v4-flash"
91
- ]
92
- }
93
- }
94
- }
95
- }
@@ -1,2 +0,0 @@
1
- *
2
- !.gitignore