triss-coworker 0.44.0 → 0.44.2

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.
package/CHANGELOG.md CHANGED
@@ -7,50 +7,77 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Added
10
+ ## [0.44.2] — 2026-10-29
11
11
 
12
- - All execution engines now run non-coder model projections (`ask`, `review`,
13
- `chat`, `write`, `commit-msg`): `opencode` keeps its verified read-only
14
- projection; `opencode2`, `omp`, and `crush` execute best-effort and attach a
15
- warning naming the concrete limitation that is not verified, instead of
16
- rejecting the run before launch.
17
- - `triss config wizard` now opens the Easy path directly (provider + key,
18
- assistant hosts, summary, first command) and preserves existing explicit
19
- choices on rerun. `--advanced` exposes the full sections; an optional target
20
- argument accepts a canonical provider id, `coder`, or an integration name;
21
- `--yes`, `--agent`, and `--install` support headless apply; `triss init
22
- --setup` delegates to the same wizard after writing agent rules.
23
- - New persisted fields: `TRISS_CODER_PROVIDER`, `TRISS_DEFAULT_EFFORT`,
24
- `TRISS_CODER_EFFORT`, `TRISS_PROTECT_CREDENTIALS`, and
25
- `TRISS_CODER_PROTECT_CREDENTIALS` (credential protection is a tri-state:
26
- absent, true, or false — the string `"false"` is never a truthy opt-in) and
27
- `TRISS_MODEL_TRANSPORTS` (exact-model direct transport override map).
28
- - The `direct` engine now serves `opencode-zen` and `opencode-go` models
29
- through audited per-model transports (OpenAI Chat, OpenAI Responses,
30
- Anthropic Messages); a model without resolvable direct metadata fails with
31
- the stable `TRISS_DIRECT_ENGINE_REQUIRED` code and an actionable
32
- `TRISS_MODEL_TRANSPORTS` remedy instead of a generic registry error.
33
- - `--protect-credentials` / `--no-protect-credentials` on model-backed
34
- commands: the former requests the parent-owned proxy and falls back to a
35
- warned best-effort raw run when a protected route is unavailable; the latter
36
- overrides a persisted protection choice for one run. MCP forwards
37
- `protect_credentials` as the same tri-state.
12
+ ### Fixed
13
+
14
+ - Keep the pinned Harness npx acceptance check executable by installing its
15
+ required peer dependencies explicitly instead of hanging in npm peer
16
+ hoisting. The real add/remove and provider-route checks remain enabled.
17
+ - Update production and development dependencies, including Anthropic SDK
18
+ 1.3.0, MCP SDK 1.32.2, dotenv 18.0.9, linkedom 0.18.14 and OpenAI SDK
19
+ 7.43.0, and refresh vulnerable transitive dependencies.
20
+ - Keep standalone builds within the existing installer archive limits by
21
+ omitting dependency source maps and TypeScript declaration files. Runtime
22
+ sources, package metadata and licenses remain included.
23
+ - Refresh website dependencies, including Wrangler and Undici security fixes.
24
+ Website development and builds require Node >=22.22.0; the CLI runtime
25
+ requirement remains Node >=22.12.0.
38
26
 
39
27
  ### Changed
40
28
 
41
- - Crush is provider-neutral: any canonical provider projects onto a run-scoped
42
- config with `$ENV` credential references. Protected mode remains the crush
43
- default; an explicit `--no-protect-credentials` runs crush raw through the
44
- same run-scoped config as a disclosed best-effort choice. Responses-protocol
45
- models ride a bounded chat→responses bridge in the credential proxy
46
- (message-only; tool rounds are refused with a precise error).
47
- - `triss ask`, `triss review`, and other model-backed commands no longer
48
- require engine-specific provider restrictions: provider and engine are
49
- independent choices, honored as selected with truthful warnings for
50
- best-effort routes.
51
- - The setup wizard no longer resets an existing provider/engine selection or
52
- installs a Claude MCP server implicitly; Easy and Advanced share one setup
53
- and resolution path.
29
+ - Incorporate the dependency updates from Dependabot PRs #137, #139,
30
+ #141–#145, #147, #148 and #150–#152. MCP SDK 1.32.2 supersedes the older
31
+ 1.32.0 proposal. GitHub Actions remain pinned to immutable commit hashes.
32
+ - Align `triss-dsh-provider-bundle` at 0.44.2; provider routes and settings
33
+ remain unchanged.
34
+
35
+
36
+ ### Artifact integrity (0.44.2)
37
+
38
+ - `triss-dsh-provider-bundle-0.44.2.tgz` — sha256
39
+ `46b4b875bc4f8f833765200bbb4440bd7ddbe60699f4acfc32f3ba6eea055528`
40
+ — `sha512-XsGZTWVLVyvNqatXyXc3/xjq/bCrd9Nt913oWrZA28ytCKTZEZ+8se2Kw5JQTbju+AL4sIR42irbdyhEi5S3rg==`
41
+ (computed with npm pack; the output is byte-deterministic).
42
+ - Root `triss-coworker-0.44.2.tgz` sha256 is reproducible via `npm pack` at
43
+ tag `v0.44.2`; its tarball includes this changelog, so its hash is verified
44
+ separately rather than embedded here.
45
+
46
+ ## [0.44.1] — 2026-09-09
47
+
48
+ ### Fixed
49
+
50
+ - All nine open Dependabot security alerts (#21–#29) are closed in one
51
+ sweep. Root package: `hono` 4.13.7 (CVE-2026-84363 query-parser fragment
52
+ differential, CVE-2026-84364 `parseBody()` memory exhaustion,
53
+ CVE-2026-84365 `toSSG()` path traversal) and `js-yaml` 4.3.2
54
+ (CVE-2026-84375). Site: `astro` 7.3.2 (critical RCE via AVIF image
55
+ optimization, GHSA-26w7-cxv4-gfx2), `sharp` 0.35.4 (libheif
56
+ GHSA-g89c-p67h-r497, GHSA-2jg2-4ch7-h545), `js-yaml` 4.3.2, and `svgo`
57
+ 4.1.0 (CVE-2026-84369, CVE-2026-84370). `npm audit` reports 0
58
+ production vulnerabilities for the root package and the site.
59
+ - Carried dependency groups superseded from Dependabot: `@anthropic-ai/sdk`
60
+ ^0.124.0 (production) and the development-dependencies group (`keyv`
61
+ 5.6.0, `flat-cache` 6.1.23 lockfile-only).
62
+
63
+ ### Changed
64
+
65
+ - The 2026-09-08 documentation audit landed (D01–D16, A01–A03): generated
66
+ CLI and MCP references, security-model and getting-started updates, and
67
+ packaged-documentation acceptance in the publish pipeline.
68
+ - `triss-dsh-provider-bundle` is version-aligned at 0.44.1 and republished
69
+ unchanged; its OpenCode Zen, OpenCode Go, and Z.AI routes are unchanged.
70
+
71
+ ### Artifact integrity (0.44.1)
72
+
73
+ - `triss-dsh-provider-bundle-0.44.1.tgz` — sha256
74
+ `76b74f0092665c9f0a4e7cc1060f8f359ea9de04be59cd24557580d4f71ec3a1`
75
+ — `sha512-8/taMLUGjQjM2i4HME6gcZev+XycbhR6TmNv0zKtbPxT66MzVm98w3aZ1LPK3oNqqkPEMWz1yGMP5n1rGUdmNw==`
76
+ (computed with npm pack; the output is byte-deterministic).
77
+ - Root `triss-coworker-0.44.1.tgz` sha256 is reproducible via `npm pack` at
78
+ tag `v0.44.1`; the root tarball ships `CHANGELOG.md`, so its hash cannot
79
+ be recorded inside this file. Registry verification compares the packed
80
+ artifact with the published tarball byte-for-byte.
54
81
 
55
82
  ## [0.44.0] — 2026-09-08
56
83
 
@@ -73,19 +100,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
73
100
  - Headless apply: `triss config wizard --yes --agent none [--install]`
74
101
  assembles a complete configuration from existing files, the environment,
75
102
  and explicit flags; missing requirements exit non-zero before writing.
76
- `triss init --setup` delegates to the same wizard after writing agent
77
- rules.
103
+ `triss init --setup` delegates to the same wizard before any rules write,
104
+ preserving init's target and scope intent.
78
105
  - Every execution engine now serves every canonical provider: crush runs any
79
106
  provider through a run-scoped config with `$ENV` credential references
80
107
  (provider block seeded before `crush models use`), and opencode2, omp, and
81
108
  crush execute non-coder projections (`ask`, `review`, `chat`, `write`,
82
109
  `commit-msg`) best-effort with structured warnings naming the unverified
83
- limitation.
110
+ limitation. Provider and engine are independent choices for model-backed
111
+ commands, honored as selected with truthful warnings for best-effort
112
+ routes.
84
113
  - `--protect-credentials` / `--no-protect-credentials` on model-backed
85
114
  commands; MCP forwards `protect_credentials` as the same tri-state and
86
115
  carries credential mode and disclosures in the run envelope.
87
- - `TRISS_CODER_EFFORT` and `TRISS_DEFAULT_EFFORT` knobs, honored by every
88
- engine (crush discloses when a provider declares no effort support).
116
+ - New persisted fields: `TRISS_CODER_PROVIDER` (coder-only provider default
117
+ that never rewrites `TRISS_DEFAULT_PROVIDER`), `TRISS_DEFAULT_EFFORT`,
118
+ `TRISS_CODER_EFFORT` (honored by every engine; crush discloses when a
119
+ provider declares no effort support), the `TRISS_PROTECT_CREDENTIALS` /
120
+ `TRISS_CODER_PROTECT_CREDENTIALS` tri-state (absent, true, or false — the
121
+ string `"false"` is never a truthy opt-in), and `TRISS_MODEL_TRANSPORTS`
122
+ (exact-model direct transport override map; a model without resolvable
123
+ direct metadata fails with the stable `TRISS_DIRECT_ENGINE_REQUIRED` code
124
+ and this remedy).
89
125
 
90
126
  ### Changed
91
127
 
package/README.md CHANGED
@@ -55,7 +55,7 @@ triss config wizard --yes --agent none
55
55
  Connect Claude Code, Codex, or both:
56
56
 
57
57
  ```bash
58
- triss init --target claude --global --setup # writes rules, then runs the wizard
58
+ triss init --target claude --global --setup # runs the setup wizard first, then writes rules
59
59
  triss init --target codex --global
60
60
  triss mcp install --target claude --global
61
61
  triss mcp install --target codex --global
@@ -65,12 +65,17 @@ triss mcp install --target codex --global
65
65
  integration. Omit values to enter them interactively; secret input is masked:
66
66
 
67
67
  ```bash
68
+ triss config set -g TRISS_OPENAI_COMPATIBLE_BASE_URL
68
69
  triss config set -g TRISS_OPENAI_COMPATIBLE_API_KEY
69
70
  triss config set -g TRISS_OPENAI_COMPATIBLE_MODEL
70
71
  triss config set -g TRISS_OPENAI_COMPATIBLE_SMALL_MODEL
71
72
  ```
72
73
 
73
- Check the credential and selected defaults with `triss status`. Existing provider and engine choices are not changed by these three profile-field commands; use `triss config wizard --advanced` to adjust them if needed.
74
+ `openai-compatible` is a configurable profile, not a provider detector: its
75
+ built-in endpoint is `https://api.deepseek.com/v1`. Set the base URL explicitly
76
+ when using another compatible endpoint. These four commands edit profile
77
+ fields; they do not reset an existing default provider or engine. Check the
78
+ effective configuration with `triss status` before the first request.
74
79
 
75
80
  For an installed host, run `triss mcp status` and restart that host's session. There is no need to repeat `triss init` or `triss mcp install` if the wizard already connected it. Terminal users skip this step.
76
81
 
@@ -123,7 +128,7 @@ Every provider has an endpoint, credential, `model` role, and `smallModel` role.
123
128
  4. global `~/.config/triss/.env`;
124
129
  5. registry defaults.
125
130
 
126
- `TRISS_DEFAULT_PROVIDER` selects the provider when a request omits one; `TRISS_DEFAULT_ENGINE` selects `direct`, `opencode`, `opencode2`, `omp`, or `crush` when it omits an engine. Direct CLI and MCP commands accept a native model id. Coder model options use `<provider>/<model-id>`. Every engine can execute non-coder model projections (`ask`, `review`, `chat`, …); what differs per engine is the available protection, not permission to run. `opencode` and `direct` have a verified read-only projection; `opencode2` runs the same deny-everything projection agent through its run-scoped config surface, `omp` uses its run-private policy overlay, and `crush` runs single-agent with the restrict allowlist. Engines without a verified projection report their concrete limitation as a warning on the result — never as a refusal.
131
+ `TRISS_DEFAULT_PROVIDER` selects the provider when a request omits one; `TRISS_DEFAULT_ENGINE` selects `direct`, `opencode`, `opencode2`, `omp`, or `crush` when it omits an engine. The `--model` value is either a qualified `<canonical-provider>/<native-id>` selector or a bare native id; a bare id resolves against `--provider` when given, otherwise against the effective default provider. An explicit `--provider` that conflicts with a qualified model prefix is rejected, not silently replaced. Every engine can execute non-coder model projections (`ask`, `review`, `chat`, …); what differs per engine is the available protection, not permission to run. `opencode` and `direct` have a verified read-only projection; `opencode2` runs the same deny-everything projection agent through its run-scoped config surface, `omp` uses its run-private policy overlay, and `crush` runs single-agent with the restrict allowlist. Engines without a verified projection report their concrete limitation as a warning on the result — never as a refusal.
127
132
 
128
133
  Shared reasoning effort values:
129
134
 
@@ -135,7 +140,8 @@ Examples:
135
140
 
136
141
  ```bash
137
142
  triss ask --provider zai --model glm-5.2 --effort high \
138
- --paths src --question "Find correctness defects"
143
+ --paths 'src/**/*.js' \
144
+ --question "Find correctness defects. Cite file paths and line numbers."
139
145
 
140
146
  triss review --provider moonshot --model kimi-k3 --effort max
141
147
 
@@ -143,6 +149,11 @@ triss chat --provider openai-compatible --effort low \
143
149
  "Explain this error"
144
150
  ```
145
151
 
152
+ `--paths` accepts text files or quoted glob patterns. Directories are not read
153
+ recursively; an input like `--paths src` fails with a "no readable file
154
+ content" error before any model call. Quote globs so Triss, rather than the
155
+ shell, expands them.
156
+
146
157
  Omit `--model` to use the command's provider role. There are no public model presets.
147
158
 
148
159
  ## Configuration
@@ -184,11 +195,15 @@ never gains ambient file, shell, edit, skill, or delegation access. The other
184
195
  engines apply their best-effort equivalents (run-scoped config surface,
185
196
  run-private policy overlay, or the restrict allowlist) and attach a warning
186
197
  that names exactly what is not verified. The process still runs as the current
187
- OS user and is not a filesystem sandbox. Add `--protect-credentials` to a model
188
- command when the selected credential can be kept behind the parent-owned proxy
189
- (it falls back to a best-effort raw run with a warning when a protected route
190
- is unavailable); `--no-protect-credentials` overrides a persisted
191
- `TRISS_PROTECT_CREDENTIALS=true` choice for one run. For coder runs configured
198
+ OS user and is not a filesystem sandbox. Best-effort tool-policy support does
199
+ not imply an automatic credential downgrade: a selected protected route fails
200
+ closed — before any credential-bearing spawn — when the raw key cannot be
201
+ contained by the checked credential boundary or when the proxy cannot start.
202
+ `--protect-credentials` requests the parent-owned credential proxy;
203
+ `--no-protect-credentials` is an explicit choice to run with the selected raw
204
+ credential and a disclosed limitation, and it overrides a persisted
205
+ `TRISS_PROTECT_CREDENTIALS=true` (or `TRISS_CODER_PROTECT_CREDENTIALS=true`)
206
+ choice for one run. For coder runs configured
192
207
  through the wizard, `--coder-protect-credentials` / `--coder-no-protect-credentials`
193
208
  persist `TRISS_CODER_PROTECT_CREDENTIALS=true` / `=false` (cannot be combined);
194
209
  the coder-specific value takes precedence over the shared
@@ -287,7 +302,7 @@ Engine details:
287
302
 
288
303
  If the wizard has not already connected your host, choose Claude Code or Codex in the [host-connection guide](https://triss.work/docs/getting-started/#step-4). Only run setup for the host you intend to use.
289
304
 
290
- Core tools include `triss_ask`, `triss_chat`, `triss_fetch`, `triss_review`, `triss_write`, `triss_commit_msg`, `triss_status`, and the migration/update surfaces. Coder tools appear when any canonical provider credential is configured. Tracker tools appear only when their integration credential is ready.
305
+ Core tools include `triss_ask`, `triss_chat`, `triss_fetch`, `triss_review`, `triss_review_shard`, `triss_write`, `triss_commit_msg`, and `triss_status`. Updates and migration stay CLI-side: the MCP server emits passive update notices but exposes no update or migration tool. Coder tools appear when any canonical provider credential is configured. Tracker tools appear only when their integration credential is ready.
291
306
 
292
307
  The MCP schemas use the same `provider`, `model`, `effort`, and engine contracts as the CLI. Full reference: [MCP](https://github.com/ayleen/triss-coworker/blob/main/docs/mcp.md).
293
308
 
@@ -316,7 +331,7 @@ Usage records preserve provider, model, token-class provenance, billing mode, an
316
331
  ## Updates
317
332
 
318
333
  ```bash
319
- triss update --check
334
+ triss update
320
335
  triss update --apply
321
336
  triss update --rollback
322
337
  ```
package/SECURITY.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Security
2
2
 
3
3
  Triss is a local CLI and MCP server that can read files, fetch URLs, call
4
- tracker APIs, and send selected context to a DeepSeek-compatible model. That
5
- makes the trust boundary worth spelling out plainly.
4
+ tracker APIs, and send selected context to the model provider you configure.
5
+ That makes the trust boundary worth spelling out plainly.
6
6
 
7
7
  ## Reporting vulnerabilities
8
8
 
@@ -22,8 +22,8 @@ advisory unless they ask to remain anonymous.
22
22
 
23
23
  ## What leaves your machine
24
24
 
25
- Model-backed commands send the requested prompt and selected corpus to the
26
- configured OpenAI-compatible endpoint:
25
+ Model-backed commands send the requested prompt and selected context to the
26
+ resolved endpoint of your selected canonical provider:
27
27
 
28
28
  - `triss ask`
29
29
  - `triss chat`
@@ -84,21 +84,31 @@ content is never written to this log** — metadata only. If working-directory
84
84
  paths are themselves sensitive (client names in folder names), set
85
85
  `TRISS_USAGE_LOG_CWD=0`, or disable the log entirely with
86
86
  `TRISS_USAGE_LOG=0`. The file rotates once past `TRISS_USAGE_LOG_MAX_BYTES`;
87
- the generated defaults table in [docs/configuration.md](docs/configuration.md#tunables)
87
+ the generated defaults table in
88
+ [docs/configuration.md](docs/configuration.md#network-and-usage-controls)
88
89
  is the source of truth. Delete it at any time with `triss usage --reset`.
89
90
 
90
91
  ## Data residency and GDPR
91
92
 
92
93
  Triss is a local tool, not a hosted service — it stores none of your data
93
94
  server-side and has no subprocessors of its own. The party that processes
94
- your prompts is **whatever model endpoint you configure**. The default is
95
- DeepSeek (`api.deepseek.com`); if your compliance posture requires an EU- or
96
- US-resident processor, a signed DPA, or a zero-retention guarantee, point
97
- `TRISS_WORKER_BASE_URL` at a provider that offers one (Azure OpenAI,
98
- AWS Bedrock, Mistral, or a self-hosted vLLM/Ollama endpoint — see the
99
- provider recipes in the README) and set the model names accordingly. Your
100
- organisation's agreement with that provider is the controlling document;
101
- Triss adds no additional data flows on top of it.
95
+ your prompts is **whatever model endpoint you configure**.
96
+
97
+ Model-backed commands send their selected context to the resolved provider
98
+ endpoint. For the `openai-compatible` profile, configure
99
+ `TRISS_OPENAI_COMPATIBLE_BASE_URL`, `TRISS_OPENAI_COMPATIBLE_API_KEY`, and the
100
+ profile's model fields. Other canonical providers use their own endpoint
101
+ fields (see the provider field table in
102
+ [docs/configuration.md](docs/configuration.md#canonical-providers)).
103
+ `TRISS_WORKER_BASE_URL` is a pre-0.42 migration input, not a current setup
104
+ instruction; the migration reference in
105
+ [src/migration/legacy-inventory.js](src/migration/legacy-inventory.js) maps it
106
+ to the canonical field. Triss does not enforce a provider's retention,
107
+ training, residency, or contractual policies — your organisation's agreement
108
+ with that provider is the controlling document. Triss does not add undocumented
109
+ data flows on top of the configured provider; see the complete flow table in
110
+ [docs/data-flows.md](docs/data-flows.md), including integrations, approved
111
+ setup downloads, and the credential-free passive update check.
102
112
 
103
113
  ## Supply chain
104
114
 
@@ -4,7 +4,7 @@ Triss Coworker third-party notices
4
4
  The npm package installs the following direct runtime dependencies. Their
5
5
  license texts and transitive notices are distributed with those packages:
6
6
 
7
- - @anthropic-ai/sdk — MIT
7
+ - @anthropic-ai/sdk — Apache-2.0
8
8
  - @modelcontextprotocol/sdk — MIT
9
9
  - commander — MIT
10
10
  - dotenv — BSD-2-Clause