tamperward 2.39.1 → 2.39.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.
Files changed (2) hide show
  1. package/dist/cli/index.js +23 -12
  2. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -19896,6 +19896,17 @@ var init_runtimes = __esm({
19896
19896
  });
19897
19897
 
19898
19898
  // src/adapters/contract.ts
19899
+ function immutableRuntimeCapabilities(caps) {
19900
+ return Object.freeze({
19901
+ preDeny: Object.freeze([...caps.preDeny]),
19902
+ postObserve: Object.freeze([...caps.postObserve]),
19903
+ endOfTurn: caps.endOfTurn,
19904
+ unsupported: Object.freeze([...caps.unsupported])
19905
+ });
19906
+ }
19907
+ function immutableRuntimeAdapter(adapter) {
19908
+ return Object.freeze(adapter);
19909
+ }
19899
19910
  function unknownToolFinding(toolName) {
19900
19911
  const name = toolName.length > 80 ? toolName.slice(0, 77) + "..." : toolName;
19901
19912
  const detail = 'Copilot tool "' + name + `" is not in TamperWard's explicit operation vocabulary`;
@@ -19963,7 +19974,7 @@ var init_adapter = __esm({
19963
19974
  init_contract();
19964
19975
  ClaudeRuntimeAdapter = class {
19965
19976
  name = "claude-code";
19966
- capabilities = {
19977
+ capabilities = immutableRuntimeCapabilities({
19967
19978
  preDeny: OPERATION_KINDS.filter((kind) => kind !== "mcp" && kind !== "other"),
19968
19979
  postObserve: [],
19969
19980
  endOfTurn: true,
@@ -19974,7 +19985,7 @@ var init_adapter = __esm({
19974
19985
  "network-egress control",
19975
19986
  "identity / authentication"
19976
19987
  ]
19977
- };
19988
+ });
19978
19989
  parseEvent(raw, phase) {
19979
19990
  try {
19980
19991
  return eventFrom(parseInput(raw), phase);
@@ -20071,7 +20082,7 @@ var init_adapter = __esm({
20071
20082
  return failClosedResult(outcome, detail, phase, (f, p) => this.denyPayload(f, p));
20072
20083
  }
20073
20084
  };
20074
- claudeAdapter = new ClaudeRuntimeAdapter();
20085
+ claudeAdapter = immutableRuntimeAdapter(new ClaudeRuntimeAdapter());
20075
20086
  }
20076
20087
  });
20077
20088
 
@@ -20373,7 +20384,7 @@ var init_adapter2 = __esm({
20373
20384
  * stop, so those are declared; every real gap is named in `unsupported`. The
20374
20385
  * `probe:codex-runtime` harness is what may later justify moving a kind into `preDeny`.
20375
20386
  */
20376
- capabilities = {
20387
+ capabilities = immutableRuntimeCapabilities({
20377
20388
  preDeny: [],
20378
20389
  postObserve: POST_OBSERVE,
20379
20390
  endOfTurn: true,
@@ -20383,7 +20394,7 @@ var init_adapter2 = __esm({
20383
20394
  "network-egress control",
20384
20395
  "identity / authentication"
20385
20396
  ]
20386
- };
20397
+ });
20387
20398
  parseEvent(raw, phase) {
20388
20399
  return normalizeCodexEvent(raw, phase);
20389
20400
  }
@@ -20462,7 +20473,7 @@ var init_adapter2 = __esm({
20462
20473
  return failClosedResult(outcome, detail, phase, (f, p) => this.denyPayload(f, p));
20463
20474
  }
20464
20475
  };
20465
- codexAdapter = new CodexRuntimeAdapter();
20476
+ codexAdapter = immutableRuntimeAdapter(new CodexRuntimeAdapter());
20466
20477
  }
20467
20478
  });
20468
20479
 
@@ -20703,7 +20714,7 @@ var init_adapter3 = __esm({
20703
20714
  * does not report. Every real gap is named in `unsupported`. The `probe:copilot-runtime`
20704
20715
  * harness is what may later justify moving a kind into `preDeny` or populating `postObserve`.
20705
20716
  */
20706
- capabilities = {
20717
+ capabilities = immutableRuntimeCapabilities({
20707
20718
  preDeny: [],
20708
20719
  postObserve: [],
20709
20720
  endOfTurn: true,
@@ -20717,7 +20728,7 @@ var init_adapter3 = __esm({
20717
20728
  "network-egress control",
20718
20729
  "identity / authentication"
20719
20730
  ]
20720
- };
20731
+ });
20721
20732
  parseEvent(raw, phase) {
20722
20733
  return normalizeCopilotEvent(raw, phase);
20723
20734
  }
@@ -20812,7 +20823,7 @@ var init_adapter3 = __esm({
20812
20823
  return failClosedResult(outcome, detail, phase, (f, p) => this.denyPayload(f, p));
20813
20824
  }
20814
20825
  };
20815
- copilotAdapter = new CopilotRuntimeAdapter();
20826
+ copilotAdapter = immutableRuntimeAdapter(new CopilotRuntimeAdapter());
20816
20827
  }
20817
20828
  });
20818
20829
 
@@ -21150,7 +21161,7 @@ var init_adapter4 = __esm({
21150
21161
  * no post-execution veto). `endOfTurn` is true via `onAgentStop`. Every real gap is named in
21151
21162
  * `unsupported`, at the granularity #611 asks for.
21152
21163
  */
21153
- capabilities = {
21164
+ capabilities = immutableRuntimeCapabilities({
21154
21165
  preDeny: [],
21155
21166
  postObserve: [],
21156
21167
  endOfTurn: true,
@@ -21162,7 +21173,7 @@ var init_adapter4 = __esm({
21162
21173
  "network-egress control",
21163
21174
  "identity / authentication"
21164
21175
  ]
21165
- };
21176
+ });
21166
21177
  parseEvent(raw, phase) {
21167
21178
  return normalizeCopilotSdkEvent(raw, phase);
21168
21179
  }
@@ -21257,7 +21268,7 @@ var init_adapter4 = __esm({
21257
21268
  return failClosedResult(outcome, detail, phase, (f, p) => this.denyPayload(f, p));
21258
21269
  }
21259
21270
  };
21260
- copilotSdkAdapter = new CopilotSdkHostedAdapter();
21271
+ copilotSdkAdapter = immutableRuntimeAdapter(new CopilotSdkHostedAdapter());
21261
21272
  }
21262
21273
  });
21263
21274
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tamperward",
3
- "version": "2.39.1",
3
+ "version": "2.39.2",
4
4
  "description": "The deterministic agent-integrity gate. One ruleset, evaluated on the actual diff/commands as a verdict, enforced everywhere a change can be made.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "hexrift",