@amaster.ai/employee-runtime-connector 0.1.13-beta.2 → 0.1.14

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
@@ -102,8 +102,10 @@ each authorized value through `browser_read_credential`. Desktop-delegated,
102
102
  same-UID, and non-Pi runners must not advertise or execute this capability.
103
103
 
104
104
  `browser_credential_auth_transaction_v1` remains build/runtime vocabulary for the
105
- older private-FD prototype and is advertised only if its complete Pi browser TCB
106
- is present. New browser-credential dispatches require
105
+ private-FD path and is advertised only when the sealed extension matches its pinned
106
+ digest. Pi Runtime owns the browser package and browser TCB version checks. The connector
107
+ loads only the sealed extension for these commands using Pi's explicit `--extension`
108
+ flag and disables ambient extension discovery. New browser-credential dispatches require
107
109
  `browser_credential_env_read_v1`; they never treat the older capability as
108
110
  equivalent. The retired `browser_credential_ref_fill_v1` claim is decode-only.
109
111
  Commands carrying credential refs are routed only by their exact required
@@ -117,7 +119,7 @@ The publish workflow runs on pushes that change Connector package inputs. `maste
117
119
 
118
120
  ## Pi plugin ownership boundary
119
121
 
120
- `pi-cli-runtime` owns Pi plugin installation, versions, package resolution, and configuration. The connector must only start Pi, deliver a command, manage its process lifecycle, and return its result. Do not add Pi-plugin version/digest/config admission checks to connector registration, heartbeat, or ordinary command dispatch. Credential capabilities are the narrow exceptions: the legacy private transaction attests its package manifest and TCB, while `browser_credential_env_read_v1` attests the runner-owned extension entrypoint. An absent or unexpected extension must remove the corresponding capability before dispatch. Other plugin failures remain task execution evidence, not connector admission decisions.
122
+ The `pi-agent` repository owns plugin installation, dependency versions, package resolution, and build validation for `pi-cli-runtime`. The connector passes the Company browser profile through `AMASTER_BROWSER_SESSION_USER_DATA_DIR`; governed browser sessions use their managed profile instead. Do not add Pi package version or digest admission checks to Connector registration, heartbeat, or readiness. Credential capabilities check their Connector-owned runtime extension: the private transaction checks its sealed extension digest, while `browser_credential_env_read_v1` checks its extension entrypoint. An absent or unexpected extension must remove the corresponding capability before dispatch. Other plugin failures remain task execution evidence, not Connector admission decisions.
121
123
 
122
124
  - `dist/amaster-runtime.mjs`: configuration, pairing, workspace, diagnostics, and daemon lifecycle CLI.
123
125
  - `dist/amaster-runtime-daemon.mjs`: standalone daemon bundle for connector registration, heartbeat, command execution, and result ingestion.
@@ -241,10 +243,25 @@ CAS revision. Both modes use the same ownership manifest and byte-ingest path.
241
243
  Pi JSON mode can also repeat a cumulative `message` snapshot beside each
242
244
  incremental `message_update`. The daemon compacts only that redundant snapshot
243
245
  from its retained parse/result buffer while preserving the delta, terminal
244
- events, live logs, and tool-argument guard input. Output telemetry reports both
245
- `rawOutputBytes` and `retainedOutputBytes` plus `retentionCompactedBytes`; flood
246
- limits continue to use raw bytes, so retention compaction never hides transport
247
- pressure or weakens the 50 MiB safety boundary.
246
+ events, live logs, and tool-argument guard input. For Pi stdout,
247
+ `AMASTER_EXECUTOR_MAX_OUTPUT_BYTES` (50 MiB by default) limits the compacted,
248
+ retained stream. A separate raw stdout safety ceiling is eight times that
249
+ limit, capped at 512 MiB; stderr and other executors still use the configured
250
+ raw-byte limit. Above a configured 512 MiB retained limit, the raw safety
251
+ ceiling can stop the process first. The command result's `outputFlood.basis`
252
+ distinguishes `retained` from `raw`, and telemetry reports both limits and byte counts.
253
+ The raw ceiling, timeout, memory limit, and tool-argument guard remain active
254
+ when Pi emits large redundant JSONL snapshots.
255
+
256
+ If a Pi assistant message ends at `length` with only thinking content and no
257
+ text or tool call, the daemon permits Pi's next generation so it can use its
258
+ built-in recovery when eligible. A second such message in the same run stops
259
+ the run; an unrecovered first message is classified when the process settles.
260
+ It returns `pi_reasoning_output_exhausted` with token counts and content block
261
+ types, never the thinking text. `outputTelemetry.piGenerationSummary` records
262
+ delta counts/bytes by type, the sum of completed assistant messages' output
263
+ tokens, and length-stop counts. These are diagnostic observations; use provider billing
264
+ records for authoritative usage.
248
265
 
249
266
  ## Pi terminal cleanup outcome
250
267
 
@@ -24,15 +24,9 @@ export const BUILD_SUPPORTED_CAPABILITIES = Object.freeze([
24
24
  "mirrorx_initialization_completion_v1",
25
25
  "native_session_checkpoint_v1",
26
26
  "pi_web_public_search_v1",
27
- "pi_web_public_fetch_v1",
28
27
  ]);
29
28
 
30
29
  const DYNAMIC_READINESS = Object.freeze({
31
- pi_web_public_fetch_v1: {
32
- reasonCode: "pi_web_fetch_extension_unavailable",
33
- ready: (input) => input.executors.some((executor) => executor.kind === "pi")
34
- && input.piWebFetchReady === true,
35
- },
36
30
  pi_web_public_search_v1: {
37
31
  reasonCode: "pi_web_search_extension_unavailable",
38
32
  ready: (input) => input.executors.some((executor) => executor.kind === "pi")
@@ -52,15 +46,8 @@ const DYNAMIC_READINESS = Object.freeze({
52
46
  },
53
47
  browser_credential_auth_transaction_v1: {
54
48
  reasonCode: "browser_credential_auth_runtime_incomplete",
55
- ready: (input) => {
56
- const readiness = input.browserCredentialAuth;
57
- return input.executors.some((executor) => executor.kind === "pi")
58
- && readiness?.privateChannel === true
59
- && readiness?.executorClient === true
60
- && readiness?.sealedGate === true
61
- && readiness?.atomicTransaction === true
62
- && readiness?.trustedProfileInjection === true;
63
- },
49
+ ready: (input) => input.executors.some((executor) => executor.kind === "pi")
50
+ && input.browserCredentialAuth?.extension === true,
64
51
  },
65
52
  native_session_checkpoint_v1: {
66
53
  reasonCode: "managed_pi_checkpoint_required",