mtech-ai-local-runner 0.1.27 → 0.1.28

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/README.md CHANGED
@@ -10,13 +10,24 @@ The package stores safe runner configuration locally and keeps OAuth refresh cre
10
10
 
11
11
  Public npm installation requires no npm account or publishing OTP. Setup requires Gateway OAuth login, and local Claude Code must already be authenticated (`claude auth status`).
12
12
 
13
+ ## 0.1.28: completion receipt wire compatibility
14
+
15
+ Completion transport separates local timing/process observations from the strict
16
+ official-exec v2/v3 security receipt without changing its authority fields or
17
+ Gateway validation. Other receipt protocols and the original caller result are
18
+ unchanged. The existing 0.1.27 two-document actual acceptance and its same-Job
19
+ completion recovery are recorded separately; installing this patch does not
20
+ rerun Codex, alter personal login/settings or update the daemon.
21
+
13
22
  ## 0.1.27: explicit job MCP exposure
14
23
 
15
24
  The job-local MCP omits deferred and Code Mode surfaces so the inspected ordinary
16
25
  MCP path keeps its tools directly available. Server authentication, enabled tools
17
26
  and scoped read-only/private-path checks remain unchanged. Exact-binary no-model
18
27
  inspection accepted the configuration and registered four synthetic tools;
19
- actual model selection and document reads still require separate acceptance.
28
+ the subsequent separately approved actual run read both documents successfully.
29
+ The initial model-request tool list was not captured; observed scoped reads are
30
+ distinct evidence from a complete model-catalog inspection.
20
31
  Foreground installation does not run Codex or update the daemon.
21
32
 
22
33
  ## 0.1.26: compiled private-file denial compatibility
@@ -481,13 +481,25 @@ export class McpGatewayClient {
481
481
  };
482
482
  }
483
483
  async completeLocalJob(input) {
484
+ let result = input.result;
485
+ const receipt = result.security_receipt;
486
+ if (receipt && !Array.isArray(receipt) && receipt.transport === "official_exec_v1"
487
+ && ["cli-exec-job-security-receipt-v2", "cli-exec-job-security-receipt-v3"].includes(String(receipt.receipt_version))) {
488
+ // These local observations are not part of the strict Gateway authority
489
+ // receipt. Preserve the original locally and every other field unchanged;
490
+ // unknown authority fields must still reach, and be rejected by, Gateway.
491
+ const authority = { ...receipt };
492
+ delete authority.preparation_timing;
493
+ delete authority.launch_process;
494
+ result = { ...result, security_receipt: authority };
495
+ }
484
496
  await this.callTool("local_agent_job_complete", {
485
497
  job_id: input.jobId,
486
498
  generation: input.generation,
487
499
  lease_token: input.leaseToken,
488
500
  runner_id: this.runnerId,
489
501
  status: input.status,
490
- result: input.result,
502
+ result,
491
503
  });
492
504
  }
493
505
  async heartbeatLocalJob(input) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mtech-ai-local-runner",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "bin": {