pantheon-opencode 1.5.2 → 1.6.0-beta.10

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 (146) hide show
  1. package/.pantheon/code-mode/README.md +4 -2
  2. package/.pantheon/code-mode/checkpoint_session.py +138 -102
  3. package/.pantheon/code-mode/compress-inline.py +102 -57
  4. package/.pantheon/code-mode/manifest.json +2 -8
  5. package/AGENTS.global.md +182 -0
  6. package/AGENTS.md +10 -891
  7. package/CHANGELOG.md +343 -0
  8. package/README.md +577 -79
  9. package/README.pt-BR.md +345 -60
  10. package/bin/pantheon-init.mjs +26 -3
  11. package/commands/pantheon-audit.md +7 -1
  12. package/commands/pantheon-consolidate.md +1 -1
  13. package/commands/pantheon-deepwork.md +14 -3
  14. package/commands/pantheon-focus.md +17 -0
  15. package/commands/pantheon-optimize.md +2 -2
  16. package/commands/pantheon-vision.md +61 -12
  17. package/package.json +30 -11
  18. package/plugin.json +2 -2
  19. package/pyproject.toml +11 -16
  20. package/scripts/build-agents-md.mjs +376 -58
  21. package/scripts/changelog-merge.mjs +161 -0
  22. package/scripts/check-plugin-v2-coverage.mjs +213 -0
  23. package/scripts/ci-validate-yaml.py +7 -5
  24. package/scripts/{code_mode_server.py → code_mode.py} +119 -27
  25. package/scripts/cost.mjs +244 -41
  26. package/scripts/doctor.mjs +236 -29
  27. package/scripts/install/agents-md.mjs +4 -4
  28. package/scripts/install/cli-ui.mjs +1 -1
  29. package/scripts/install/config-migration.mjs +319 -6
  30. package/scripts/install/health-check.mjs +26 -37
  31. package/scripts/install/interactive.mjs +7 -7
  32. package/scripts/install/migrate.mjs +1 -1
  33. package/scripts/install/opencode-version.mjs +246 -4
  34. package/scripts/install/opencode.mjs +627 -179
  35. package/scripts/install/plugin.mjs +43 -9
  36. package/scripts/install/shared.mjs +120 -12
  37. package/scripts/install/vision-prompt.mjs +161 -0
  38. package/scripts/install-mcp.mjs +28 -9
  39. package/scripts/{mcp_persistence_server.py → mcp_persistence.py} +392 -78
  40. package/{src/mcp/mcp_resources_server.py → scripts/mcp_resources.py} +2 -2
  41. package/scripts/{memory_mcp_server.py → memory_mcp.py} +372 -198
  42. package/scripts/postinstall.mjs +0 -7
  43. package/scripts/probe-context-rehydrate.mjs +36 -13
  44. package/scripts/probe-pantheon-cost.mjs +71 -15
  45. package/scripts/prune.mjs +2 -2
  46. package/scripts/run-node-tests.mjs +189 -0
  47. package/scripts/sync-artifacts.mjs +26 -13
  48. package/scripts/sync-tui.mjs +24 -3
  49. package/scripts/test-opencode-v2-sandbox.sh +1913 -0
  50. package/scripts/validate-routing.mjs +43 -3
  51. package/scripts/validate-sandbox-install.mjs +138 -0
  52. package/scripts/versioning.mjs +13 -1
  53. package/scripts/vision-status.mjs +682 -0
  54. package/skills-lock.json +15 -16
  55. package/src/agents/aphrodite.md +20 -37
  56. package/src/agents/apollo.md +7 -3
  57. package/src/agents/athena.md +63 -35
  58. package/src/agents/demeter.md +8 -28
  59. package/src/agents/gaia.md +1 -1
  60. package/src/agents/hephaestus.md +10 -21
  61. package/src/agents/hermes.md +15 -38
  62. package/src/agents/iris.md +1 -1
  63. package/src/agents/mnemosyne.md +23 -60
  64. package/src/agents/nyx.md +1 -1
  65. package/src/agents/prometheus.md +16 -20
  66. package/src/agents/talos.md +10 -2
  67. package/src/agents/themis.md +5 -5
  68. package/src/agents/zeus.md +99 -130
  69. package/src/instructions/agent-return-format.instructions.md +18 -3
  70. package/src/instructions/backend-standards.instructions.md +2 -0
  71. package/src/instructions/frontend-standards.instructions.md +3 -1
  72. package/src/instructions/memory-protocol.instructions.md +11 -110
  73. package/src/instructions/zeus-anti-stall.instructions.md +14 -61
  74. package/src/instructions/zeus-communication-rules.instructions.md +0 -1
  75. package/src/instructions/zeus-council-synthesis.instructions.md +32 -260
  76. package/src/instructions/zeus-memory-operations.instructions.md +26 -0
  77. package/src/instructions/zeus-timeout-retry.instructions.md +40 -87
  78. package/src/mcp/{code_mode_server.py → code_mode.py} +119 -27
  79. package/src/mcp/eval_store.py +2 -2
  80. package/src/mcp/mcp_codemap_module.py +559 -129
  81. package/src/mcp/{mcp_persistence_server.py → mcp_persistence.py} +392 -78
  82. package/{scripts/mcp_resources_server.py → src/mcp/mcp_resources.py} +2 -2
  83. package/src/mcp/{memory_mcp_server.py → memory_mcp.py} +373 -250
  84. package/src/mcp/{pantheon_vision_server.py → pantheon_vision.py} +396 -40
  85. package/src/mcp/requirements-mcp.txt +10 -6
  86. package/src/mcp/requirements-vision.txt +4 -2
  87. package/src/pantheon/cost-command.ts +399 -101
  88. package/src/pantheon/delegation-enforce.ts +10 -1
  89. package/src/pantheon/model-command.ts +18 -7
  90. package/src/pantheon/presets.d.mts +0 -8
  91. package/src/pantheon/presets.mjs +5 -32
  92. package/src/pantheon/todo-enforcer.ts +1 -1
  93. package/src/pantheon/v2-bounded-read.ts +640 -0
  94. package/src/pantheon/v2-delegation-enforce.ts +214 -0
  95. package/src/pantheon/v2-execute-after.ts +186 -0
  96. package/src/pantheon/v2-tools.ts +429 -0
  97. package/src/pantheon/v2-unsupported.d.mts +11 -0
  98. package/src/pantheon/v2-unsupported.mjs +90 -0
  99. package/src/pantheon/v2-vision.ts +622 -0
  100. package/src/pantheon/vision-local.ts +531 -0
  101. package/src/pantheon/vision.ts +1161 -116
  102. package/src/plugin-v2.ts +1244 -288
  103. package/src/plugin.ts +12 -9
  104. package/src/plugins/tui/dist/server.d.ts +1 -2
  105. package/src/plugins/tui/dist/server.d.ts.map +1 -1
  106. package/src/plugins/tui/dist/tui-v2.d.ts +154 -0
  107. package/src/plugins/tui/dist/tui-v2.d.ts.map +1 -0
  108. package/src/plugins/tui/dist/tui-v2.js +659 -0
  109. package/src/plugins/tui/dist/tui-v2.js.map +1 -0
  110. package/src/plugins/tui/dist/tui.d.ts +85 -82
  111. package/src/plugins/tui/dist/tui.d.ts.map +1 -1
  112. package/src/plugins/tui/dist/tui.js +72 -59
  113. package/src/plugins/tui/index-v2.ts +6 -0
  114. package/src/plugins/tui/package-lock.json +5504 -1341
  115. package/src/plugins/tui/package.json +25 -15
  116. package/src/plugins/tui/src/index-v2.tsx +734 -0
  117. package/src/plugins/tui/src/index.tsx +106 -85
  118. package/src/plugins/tui/src/opencode-v2.d.ts +13 -0
  119. package/src/plugins/tui/tsconfig.build.json +5 -0
  120. package/src/plugins/tui/tsconfig.typecheck.json +5 -0
  121. package/src/plugins/tui/tsdown.config.ts +22 -2
  122. package/src/plugins/tui/tui-v2.ts +2 -0
  123. package/src/plugins/tui/tui.ts +3 -0
  124. package/src/routing.yml +11 -22
  125. package/src/skills/README.md +34 -39
  126. package/src/skills/agent-coordination/SKILL.md +7 -2
  127. package/src/skills/artifact-management/SKILL.md +12 -5
  128. package/src/skills/auto-continue/SKILL.md +54 -95
  129. package/src/skills/code-review-checklist/SKILL.md +5 -5
  130. package/src/skills/context-compression/SKILL.md +26 -879
  131. package/src/skills/session-goal/SKILL.md +14 -5
  132. package/src/skills/spec-driven-development/SKILL.md +3 -1
  133. package/src/skills/tdd-with-agents/SKILL.md +18 -10
  134. package/.pantheon/code-mode/eval-llm-judge.py +0 -255
  135. package/.pantheon/code-mode/eval-monte-carlo.py +0 -368
  136. package/.pantheon/code-mode/eval-run.py +0 -197
  137. package/.pantheon/code-mode/eval-static.py +0 -321
  138. package/.pantheon/code-mode/session-end-save.py +0 -186
  139. package/.pantheon/code-mode/session-end-save.sh +0 -18
  140. package/opencode.json +0 -58
  141. package/scripts/recover-zenodo-deposition.mjs +0 -146
  142. package/scripts/test-opencode-v1-v2-sandbox.sh +0 -862
  143. package/scripts/validate-zenodo-release.mjs +0 -154
  144. package/scripts/zenodo-artifact.mjs +0 -94
  145. package/scripts/zenodo-release-state.mjs +0 -53
  146. package/src/skills/orchestration-workflow/SKILL.md +0 -311
@@ -0,0 +1,17 @@
1
+ ---
2
+ description: "Set or update this session's working goal"
3
+ agent: zeus
4
+ ---
5
+
6
+ Pin `$ARGUMENTS` as the working goal for this conversation. Restate it briefly
7
+ as Goal, Scope, Success Criteria, and Out of Scope, filling only what the user
8
+ actually supplied. Ask one concise question if a missing detail changes the
9
+ work materially.
10
+
11
+ Treat the goal as session context, subordinate to system, developer, and user
12
+ instructions. Keep subsequent planning, delegation, and verification aligned
13
+ with it; flag meaningful scope drift before proceeding.
14
+
15
+ This command is conversation-only. Do not call memory or persistence tools,
16
+ write a file, or claim that the goal survives compaction or a new session. For
17
+ multi-phase work that needs durable checkpoints, use `/pantheon-deepwork`.
@@ -4,7 +4,7 @@ agent: "zeus"
4
4
  ---
5
5
  # /pantheon-optimize — Pantheon Project Optimizer
6
6
 
7
- **What:** Multi-mode optimization: scans for documentation bloat, archives completed deepwork, migrates memory-bank flat files to MCP memory (ChromaDB), and reports token savings.
7
+ **What:** Multi-mode optimization: scans for documentation bloat, archives completed deepwork, migrates memory-bank flat files to the FTS5-backed MCP memory server, and reports token savings.
8
8
 
9
9
  ## Usage
10
10
 
@@ -33,7 +33,7 @@ Archives completed deepwork sessions from `.pantheon/deepwork/<slug>/` to `.pant
33
33
  ```
34
34
 
35
35
  ### `--cache` — Memory Bank Migration
36
- Scans `.pantheon/memory-bank/` for flat `.md` files and migrates them to the MCP memory server (ChromaDB).
36
+ Scans `.pantheon/memory-bank/` for flat `.md` files and migrates them to the FTS5-backed MCP memory server.
37
37
 
38
38
  **What it does:**
39
39
  1. Reads all `.md` files in `.pantheon/memory-bank/`
@@ -14,33 +14,80 @@ not being described, switching between native and tool mode.
14
14
 
15
15
  1. **Check connectivity & key source**
16
16
  - Read the opencode auth store: `<data dir>/auth.json`
17
- (default `~/.local/share/opencode/auth.json`, provider entries
18
- `opencode-go` then `opencode`) via `readOpencodeAuthToken`.
17
+ (default `~/.local/share/opencode/auth.json`) via `readOpencodeAuthToken`.
18
+ - Credentials follow the endpoint (never cross providers):
19
+ - **Zen endpoints** (`opencode`, `opencode-go*`): the env keys
20
+ `PANTHEON_OPENCODE_API_KEY` / `OPENCODE_API_KEY` first, then the auth
21
+ store — the resolved provider entry first, then the legacy Zen entries
22
+ `opencode-go` then `opencode`.
23
+ - **Non-Zen endpoints** (e.g. discovered OpenAI-compatible providers):
24
+ ONLY that provider's own auth-store entry. The shared Zen env keys and
25
+ the legacy `opencode-go` / `opencode` entries are never attached to a
26
+ non-Zen base URL; absent an own credential the image falls through to
27
+ the tool→local chain.
19
28
  - Report whether the user is connected (`opencode auth login`) or has an
20
- env key (`PANTHEON_OPENCODE_API_KEY` / `OPENCODE_API_KEY`).
29
+ env key — for a non-Zen target, report the target provider's own entry.
21
30
  - **Never log or echo the token itself** — only connected/not connected.
22
31
 
23
- 2. **Show current status**
32
+ 2. **Show current status (mode + resolved target + origin)**
24
33
  - Effective mode precedence: env `PANTHEON_VISION_MODE` > config file
25
34
  `mode` > default `auto`.
26
- - Read the current config file if present (project `.opencode/opencode-vision.json`
27
- then user `~/.config/opencode/opencode-vision.json`).
35
+ - Resolved target + origin, in precedence order:
36
+ env `PANTHEON_VISION_MODEL` → config `visionModel` (project
37
+ `.opencode/opencode-vision.json`, then user
38
+ `~/.config/opencode/opencode-vision.json`) → active preset `vision.model`
39
+ → **automatic discovery** in the host catalog (`GET /config/providers`)
40
+ → built-in default.
41
+ - Resolve the installed helper first (do not assume the current project
42
+ contains Pantheon source). Check, in order:
43
+ `$OPENCODE_CONFIG_DIR/.opencode/scripts/`,
44
+ `$OPENCODE_CONFIG_DIR/scripts/`,
45
+ `${XDG_CONFIG_HOME:-$HOME/.config}/opencode/scripts/`,
46
+ `$HOME/.opencode/scripts/`, `.opencode/scripts/`, then
47
+ `$(npm root -g)/pantheon-opencode/scripts/`. Run the first existing
48
+ `vision-status.mjs` as `node "$helper" --dir="$PWD"` and show its output
49
+ (mode + target + origin). The same helper drives the picker with
50
+ `--list` (enumerate candidates) and `--set <provider/model>` (pin one).
51
+ - If the helper is missing, resolve inline with the same precedence and be
52
+ honest: discovery needs the live host catalog, so when no explicit model
53
+ is configured report `auto (resolved at session start)` and name the
54
+ fallback default — never invent a value.
28
55
 
29
56
  3. **Ask what to set (interactive)**
30
57
  - **Mode:** `native` | `tool` | `auto`
31
- - `native` — describe images via the multimodal model directly (needs key)
58
+ - `native` — describe images via the multimodal model directly (needs a
59
+ usable credential for the resolved endpoint)
32
60
  - `tool` — always use the MCP tool fallback (`imageAnalysisTool`)
33
61
  - `auto` — try native first, fall back to the tool (default)
34
- - **Vision model:** e.g. `opencode-go/mimo-v2.5`, `opencode-go/minimax-m3`,
35
- or an explicit override (precedence: env `PANTHEON_VISION_MODEL` > config
36
- `visionModel` > active preset `vision.model` > default `opencode-go/mimo-v2.5`).
62
+ - **Vision model — show the picker, do NOT make the user type blind.**
63
+ Run `node "$helper" --list --dir="$PWD"` and present its numbered list.
64
+ - **Read the `Source:` line out loud.** It is `host catalog`
65
+ (`capabilities.input.image`) when the live catalog is available, or
66
+ `heuristic` (`opencode models` + known vision families) otherwise — the
67
+ heuristic is a *guess*, so say so; never present it as certain.
68
+ - Each row shows `Access` (free/paid when the catalog reports cost) and
69
+ `Credential`. **`Credential: no` means the native path has no key for
70
+ that provider, so images degrade to the MCP tool fallback (which then
71
+ falls back to local metadata like EXIF/size) — that is expected, not an
72
+ error.** `yes (env|store)` means a key is present (never echo it).
73
+ - Let the user choose by **number** or type a `provider/model`. Then apply
74
+ it with `node "$helper" --set <provider/model> --dir="$PWD"` (add
75
+ `--global` to pin in the user config; default is the project config).
76
+ - If the list is empty, report the helper's `Source: none` reason (e.g.
77
+ `opencode models` unavailable) and let the user type the model manually.
78
+ - Precedence for the effective model is unchanged: env
79
+ `PANTHEON_VISION_MODEL` > config `visionModel` > active preset
80
+ `vision.model` > automatic discovery > default `opencode-go/mimo-v2.5`.
37
81
  - **Tool fallback:** `imageAnalysisTool` (default
38
82
  `pantheon_vision_vision_describe`). Bifrost is opt-in only when
39
83
  explicitly selected here or through `PANTHEON_VISION_TOOL`.
40
84
 
41
85
  4. **Save the config**
42
- - Default: project config `.opencode/opencode-vision.json`
43
- (merged with the user config `~/.config/opencode/opencode-vision.json`;
86
+ - The `--set` in step 3 already merged `visionModel` atomically
87
+ (`.bak` backup, existing keys preserved, corrupted JSON left untouched).
88
+ If the user typed a model instead of using `--set`, apply it the same way.
89
+ - Default target: project config `.opencode/opencode-vision.json`
90
+ (resolved alongside the user config `~/.config/opencode/opencode-vision.json`;
44
91
  project wins on conflicts).
45
92
  - `--global` → write to `~/.config/opencode/opencode-vision.json`.
46
93
  - Shape:
@@ -65,3 +112,5 @@ not being described, switching between native and tool mode.
65
112
  - Do NOT print tokens or auth.json contents.
66
113
  - Do NOT overwrite existing config keys not being changed — merge.
67
114
  - If the config file is corrupted JSON, warn and ask before overwriting.
115
+ - State the picker's `Source:` (catalog vs heuristic) honestly — a heuristic
116
+ list is a guess; never imply certainty about image capability.
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "pantheon-opencode",
3
- "version": "1.5.2",
3
+ "version": "1.6.0-beta.10",
4
4
  "description": "Multi-agent orchestration for OpenCode — 14 specialized agents, TDD, Themis review gates.",
5
5
  "type": "module",
6
+ "workspaces": [
7
+ "src/plugins/tui"
8
+ ],
6
9
  "publishConfig": {
7
10
  "access": "public",
8
11
  "registry": "https://registry.npmjs.org/"
@@ -38,8 +41,12 @@
38
41
  "hooks:install": "pre-commit install",
39
42
  "hooks:update": "pre-commit autoupdate",
40
43
  "test:security": "npm run secret-scan",
41
- "test:node": "node --test tests/*.mjs tests/pantheon/*.mjs",
44
+ "test:node": "node scripts/run-node-tests.mjs --label 'test:node' 'tests/*.mjs' 'tests/pantheon/*.mjs'",
45
+ "coverage": "echo 'Node coverage (report-only, NO threshold is enforced).' && echo 'Covers: the .mjs/.js modules under scripts/, src/ and bin/ that test:node exercises.' && echo 'Does NOT cover: test:ts (hand-rolled tsx loop, no node --test runner) and test:ci (pytest).' && echo ' TypeScript under src/ (41 files) is therefore entirely unmeasured here.' && echo '' && node scripts/run-node-tests.mjs --label 'coverage' -- --experimental-test-coverage --test-coverage-include='scripts/**/*.mjs' --test-coverage-include='src/**/*.mjs' --test-coverage-include='src/**/*.js' --test-coverage-include='bin/**/*.mjs' 'tests/*.mjs' 'tests/pantheon/*.mjs'",
46
+ "coverage:plugin-v2": "node scripts/check-plugin-v2-coverage.mjs",
42
47
  "test:ts": "for f in tests/pantheon/*.test.ts; do if [ \"$f\" = tests/pantheon/plugin-v2-contract.test.ts ]; then NODE_OPTIONS=--conditions=import tsx \"$f\"; else tsx \"$f\"; fi || exit 1; done",
48
+ "test:hooks": "node scripts/run-node-tests.mjs --label 'test:hooks' 'tests/pantheon/plugin-v2-hook-canary.test.mjs'",
49
+ "test:tool-canary": "node scripts/run-node-tests.mjs --label 'test:tool-canary' 'tests/canary/plugin-v2-tool-canary.test.mjs'",
43
50
  "test:all": "npm run test:ci && npm run test:node && npm run test:ts",
44
51
  "test": "npm run test:all",
45
52
  "test:ci": "python3 -m pytest -q --tb=short 2>&1"
@@ -68,8 +75,8 @@
68
75
  "!src/agents/README.md",
69
76
  "bin/*.mjs",
70
77
  "AGENTS.md",
78
+ "AGENTS.global.md",
71
79
  "CHANGELOG.md",
72
- "opencode.json",
73
80
  "src/mcp/*.py",
74
81
  "src/instructions/*.instructions.md",
75
82
  "src/mcp/*.mjs",
@@ -78,6 +85,9 @@
78
85
  "src/routing.yml",
79
86
  "src/pantheon/**",
80
87
  ".pantheon/code-mode/**",
88
+ "!.pantheon/code-mode/session-end-save.py",
89
+ "!.pantheon/code-mode/session-end-save.sh",
90
+ "!.pantheon/code-mode/eval-*.py",
81
91
  "src/plugins/**",
82
92
  "scripts/hooks/**",
83
93
  "src/mcp/requirements*",
@@ -88,18 +98,27 @@
88
98
  "!**/*.pyc"
89
99
  ],
90
100
  "dependencies": {
91
- "@opencode-ai/plugin": "1.18.30",
92
- "js-yaml": "^4.3.2",
93
- "zod": "4.1.8"
101
+ "@opencode-ai/plugin": "1.18.33",
102
+ "js-yaml": "^5.4.2",
103
+ "zod": "4.1.8",
104
+ "@opencode-ai/sdk": "1.18.33"
94
105
  },
95
106
  "devDependencies": {
96
- "@biomejs/biome": "2.5.13",
97
- "@commitlint/cli": "21.2.2",
98
- "@commitlint/config-conventional": "21.2.2",
107
+ "@biomejs/biome": "2.5.14",
108
+ "@commitlint/cli": "21.2.3",
109
+ "@commitlint/config-conventional": "21.2.3",
110
+ "ajv": "8.20.0",
99
111
  "husky": "^9.1.7",
100
- "tsx": "4.23.13",
101
- "typescript": "6.0.3"
112
+ "tsx": "4.23.15",
113
+ "typescript": "7.0.2"
114
+ },
115
+ "overrides": {
116
+ "@babel/core": "7.29.7",
117
+ "seroval": "1.6.8",
118
+ "solid-js": "1.9.12",
119
+ "rolldown": "1.2.7"
102
120
  },
121
+ "//overrides": "TUI production advisory fixes: Babel >=7.29.6 and Seroval >=1.6.3; Solid stays at 1.9.12 to satisfy OpenTUI's exact peer. Remove only after upstream ranges include fixed versions; Seroval compatibility is covered by the Solid serializer regression test.",
103
122
  "repository": {
104
123
  "type": "git",
105
124
  "url": "https://github.com/ils15/pantheon-opencode.git"
package/plugin.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "pantheon",
3
3
  "publisher": "ils15",
4
- "version": "1.5.2",
4
+ "version": "1.6.0-beta.10",
5
5
  "displayName": "Pantheon",
6
- "description": "Conductor-Delegate orchestration platform with 14 specialized agents, 21 skills, and OpenCode support.",
6
+ "description": "Conductor-Delegate orchestration platform with 14 specialized agents, 20 skills, and OpenCode support.",
7
7
  "agents": "./src/agents",
8
8
  "skills": "./src/skills",
9
9
  "instructions": "./src/instructions",
package/pyproject.toml CHANGED
@@ -4,20 +4,19 @@ build-backend = "setuptools.backends._legacy:_Backend"
4
4
 
5
5
  [project]
6
6
  name = "pantheon"
7
- version = "1.5.2"
7
+ version = "1.6.0-beta.10"
8
8
  description = "Multi-agent orchestration framework"
9
9
  requires-python = ">=3.11"
10
10
  dependencies = []
11
11
 
12
12
  [tool.pytest.ini_options]
13
- # `tests/` holds the main suite; the two entries below are orphaned test
14
- # modules that live next to the code they cover and are collected here so
15
- # pytest (and therefore `npm test`) exercises them instead of letting them
16
- # rot as dead code.
13
+ # `tests/` holds the main suite; the entry below is an orphaned test module
14
+ # that lives next to the code it covers and is collected here so pytest (and
15
+ # therefore `npm test`) exercises it instead of letting it rot as dead code.
17
16
  testpaths = [
18
17
  "tests",
19
- "scripts/vector_memory/test_memory.py",
20
18
  "benchmarks/beta2/test_beta2.py",
19
+ "benchmarks/beta2/test_t1.py",
21
20
  ]
22
21
  asyncio_mode = "auto"
23
22
  addopts = "-v --tb=short"
@@ -28,7 +27,6 @@ target-version = "py311"
28
27
 
29
28
  [tool.ruff.lint]
30
29
  select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "PL", "RUF", "C901"]
31
- ignore = ["E501"]
32
30
 
33
31
  [tool.ruff.lint.per-file-ignores]
34
32
  "__init__.py" = ["F401"]
@@ -36,25 +34,22 @@ ignore = ["E501"]
36
34
  "scripts/ci-validate-yaml.py" = ["N999"]
37
35
  "scripts/scrub-secrets.py" = ["N999"]
38
36
  # These modules defer optional/heavy imports until the corresponding command is used.
39
- "scripts/vector_memory/*.py" = ["PLC0415"]
40
37
  "tests/test_code_mode_sandbox.py" = ["PLC0415", "N806"]
41
38
  "tests/test_code_mode_server.py" = ["PLC0415"]
42
39
  "tests/test_codemap_mcp.py" = ["PLC0415"]
43
40
  "tests/test_memory_mcp_server.py" = ["PLC0415", "PLR2004"]
44
41
  # Existing public APIs and test fixtures are intentionally broad/simple; refactoring
45
42
  # them would be behavior-affecting rather than a mechanical lint correction.
46
- "scripts/code_mode_server.py" = ["PLR0913"]
47
- "src/mcp/code_mode_server.py" = ["PLR0913"]
48
- "scripts/mcp_persistence_server.py" = ["PLR0913"]
49
- "src/mcp/mcp_persistence_server.py" = ["PLR0913"]
50
- "scripts/memory_mcp_server.py" = ["C901"]
51
- "scripts/vector_memory/index.py" = ["C901", "PLR0913", "PLR2004", "PLW0603", "PLW2901"]
52
- "scripts/vector_memory/cli.py" = ["PLR2004"]
53
- "scripts/vector_memory/query.py" = ["PLR0913"]
43
+ "scripts/code_mode.py" = ["PLR0913", "PLR0917"]
44
+ "src/mcp/code_mode.py" = ["PLR0913", "PLR0917"]
45
+ "scripts/mcp_persistence.py" = ["PLR0913", "PLR0917"]
46
+ "src/mcp/mcp_persistence.py" = ["PLR0913", "PLR0917"]
47
+ "scripts/memory_mcp.py" = ["C901"]
54
48
  "src/mcp/eval_store.py" = ["PLR2004"]
55
49
  "tests/test_code_mode_frontmatter.py" = ["PLR2004"]
56
50
  "tests/test_eval.py" = ["PLR2004"]
57
51
  "tests/test_mcp_persistence_server.py" = ["PLR2004"]
52
+ "benchmarks/beta2/test_t1.py" = ["PLR2004"]
58
53
 
59
54
  [tool.mypy]
60
55
  python_version = "3.11"