@theokit/agents 14.2.0 → 14.3.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 (3) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +27 -0
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # @theokit/agents
2
2
 
3
+ ## 14.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4b23f36: The environment variables this package reads are now a CLOSED list in the README, gated both ways.
8
+
9
+ An operator exported a variable and nothing happened, and there was no way to tell "this runtime does
10
+ not read it" from "it read it and my value was wrong". `rules/foreign-config-surfaces.md` settles
11
+ that for `.claude/` file surfaces in one sentence — _a surface is read, or it is refused with a
12
+ reason about this product; it is never accepted and ignored_ — and the environment was the largest
13
+ surface that sentence did not cover.
14
+
15
+ **The list is closed, and that is the part worth having.** A variable absent from the table is not
16
+ read by this package — not "undocumented", not "read somewhere else". One sentence answers for every
17
+ variable anyone could export, including the ones nobody enumerated.
18
+
19
+ | Variable | Security | What it changes |
20
+ | ------------------------- | -------- | ------------------------------------------------------------------- |
21
+ | `PROGRAMDATA` | no | where the machine-wide operator policy is looked for on Windows |
22
+ | `THEOKIT_CODEX_CLIENT_ID` | **yes** | which OAuth client the Codex device authorisation is issued against |
23
+ | `THEOKIT_DEBUG` | no | debug logging (the logs can carry request shapes) |
24
+
25
+ **Three, not two.** `THEOKIT_CODEX_CLIENT_ID` is read through a constant rather than a literal
26
+ (`src/auth/device-provider.ts:97`, constant at `:93`), so it is invisible to any scan matching only
27
+ `process.env.X` — and it is the one of the three that touches a credential path. A gate that missed
28
+ it would have signed off on an incomplete list, producing from inside the gate the exact silence the
29
+ list exists to remove.
30
+
31
+ **The security column is a decision per row, not a keyword match.** A name containing `AWS` can be a
32
+ plain address, and a name matching nothing can disable a control.
33
+
34
+ `node scripts/check-env-verdicts.mjs` fails in **both** directions — a variable read and not listed,
35
+ and a variable listed that nothing reads any more. The second is the quieter failure: after a
36
+ refactor deletes the only read, the table keeps advertising a variable that does nothing, and no
37
+ operator can detect that by experiment. The gate uses node's stdlib only, makes no network call, and
38
+ reads nothing outside this repository.
39
+
3
40
  ## 14.2.0
4
41
 
5
42
  ### Minor Changes
package/README.md CHANGED
@@ -154,6 +154,33 @@ file that arrives with the repository.
154
154
  This is distinct from the session auto-memory at `~/.claude/projects/`: each subagent reads and
155
155
  writes its own `MEMORY.md`, not the operator's.
156
156
 
157
+ ## Environment variables
158
+
159
+ **This list is CLOSED.** A variable that is not in this table is not read by this package — not
160
+ "undocumented", not "read somewhere else": not read. That is the whole point of writing it down.
161
+ `rules/foreign-config-surfaces.md` settles the same question for `.claude/` file surfaces in one
162
+ sentence — *a surface is read, or it is refused with a reason about this product; it is never
163
+ accepted and ignored* — and this is that sentence applied to the environment.
164
+
165
+ The reason the guarantee is worth more than a list of three: it answers for every variable anyone
166
+ could export, including the ones nobody enumerated, so an operator who sets something and sees no
167
+ change knows which of the two worlds they are in.
168
+
169
+ | Variable | Security | What it changes | Read at |
170
+ |---|---|---|---|
171
+ | `PROGRAMDATA` | no | Where the machine-wide operator policy is looked for on Windows. Changing it moves which policy file governs the run. | `src/config/operator-policy.ts:119` |
172
+ | `THEOKIT_CODEX_CLIENT_ID` | **yes** | Overrides the OAuth client id used for the Codex device flow. It selects which OAuth client the device authorisation is issued against, so it is a credential-path decision rather than a convenience one. | `src/auth/device-provider.ts:97`, via the constant at `:93` |
173
+ | `THEOKIT_DEBUG` | no | Turns on debug logging. Log output can contain request shapes, so treat the logs as sensitive even though the switch is not. | `src/debug-log.ts:10` |
174
+
175
+ The `Security` column is a decision per row, not a keyword match on the name. A name containing
176
+ `AWS` can be a plain address, and a name matching nothing can disable a control — so each row was
177
+ judged rather than classified.
178
+
179
+ `node scripts/check-env-verdicts.mjs` fails the build in **both** directions: a variable this package
180
+ reads and this table omits, and a variable this table lists that nothing reads any more. Without the
181
+ second direction the table would keep advertising a variable after a refactor deleted its only read,
182
+ which is a worse failure than never having documented it.
183
+
157
184
  ## Boundaries this package keeps
158
185
 
159
186
  - It does **not** call an LLM provider, run a tool-dispatch loop, or own the conversation store.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theokit/agents",
3
- "version": "14.2.0",
3
+ "version": "14.3.0",
4
4
  "description": "AI agents as first-class citizens of the TheoKit pipeline. The AgentBuilder.create() authoring chain compiles to the @theokit/sdk runtime.",
5
5
  "repository": {
6
6
  "type": "git",