@byok-sdk/client 0.5.0 → 0.6.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.
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { promises, mkdirSync, existsSync, renameSync, writeFileSync, chmodSync,
4
4
  import path17, { join, isAbsolute } from 'path';
5
5
  import os5 from 'os';
6
6
  import { parseDeviceAssertionEnvelope, tenantId, DeviceProofProtectedClaimsSchema, deviceProofSigningInput, DEVICE_PROOF_SCHEMA_ID, SKILL_PACK_MAX_BYTES, hasCapability, parseSkillPackManifest, checkSkillPackManifest, skillPackContentHashInput, checkSkillPackFileContent, SKILL_PACK_ENTRY_PATH, checkSkillPackEntry, isSkillPackPathSafe, DEVICE_PROOF_HEADER, contentHash, TRUTH_RECORD_KINDS, nonceSigningBytes, DEVICE_ASSERTION_AUDIENCE_MAX_BYTES, DEVICE_ASSERTION_DEFAULT_TTL_MS, DEVICE_ASSERTION_MAX_TTL_MS, CONTENT_HASH_PATTERN, CapabilityDeclarationSchema, DeviceAssertionClaimsSchema, deviceAssertionSigningInput, DEVICE_ASSERTION_SCHEMA_ID } from '@byok-sdk/core';
7
- import { BYOK_PAIR_PATH, BYOK_CHALLENGE_PATH, BYOK_TOKEN_PATH, byokBlobUrlPath, BYOK_BLOBS_PATH, byokBlobFinalizePath, partitionAgentEvents, BYOK_SKILL_PACKS_PATH, byokSkillPackFilePath, BYOK_RECORDS_PATH, byokRecordPath, TASK_TRANSITIONS, CONFIGURED_TOOLSETS_MAX_ITEMS, ToolsetIdSchema, encodeEnvelope, createEnvelope, checkResultDocument, MAX_MESSAGES_PER_BATCH, BYOK_CAPABILITIES_PATH, BYOK_PRESENCE_PATH, RuntimeIdSchema, RESULT_DOCUMENT_MAX_BYTES, PROTOCOL_VERSION, decodeEnvelope, BYOK_MESSAGES_PATH, MessagesSendResponseSchema, BYOK_EVENTS_PATH, parseMessage, UnknownMessageTypeError, BYOK_WS_PATH } from '@byok-sdk/protocol';
7
+ import { BYOK_PAIR_PATH, BYOK_CHALLENGE_PATH, BYOK_TOKEN_PATH, byokBlobUrlPath, BYOK_BLOBS_PATH, byokBlobFinalizePath, partitionAgentEvents, BYOK_SKILL_PACKS_PATH, byokSkillPackFilePath, BYOK_RECORDS_PATH, byokRecordPath, TASK_TRANSITIONS, CONFIGURED_TOOLSETS_MAX_ITEMS, ToolsetIdSchema, encodeEnvelope, PROTOCOL_VERSION, createEnvelope, checkResultDocument, MAX_MESSAGES_PER_BATCH, BYOK_CAPABILITIES_PATH, BYOK_PRESENCE_PATH, RuntimeIdSchema, TERMINAL_INFERENCE_USAGE_MAX_DURATION_MS, TERMINAL_INFERENCE_USAGE_MAX_TOKENS, RESULT_DOCUMENT_MAX_BYTES, decodeEnvelope, BYOK_MESSAGES_PATH, MessagesSendResponseSchema, BYOK_EVENTS_PATH, parseMessage, UnknownMessageTypeError, BYOK_WS_PATH } from '@byok-sdk/protocol';
8
8
  import { promisify } from 'util';
9
9
  import { fileURLToPath } from 'url';
10
10
  import 'readline';
@@ -75,6 +75,28 @@ var SteerUnsupportedError = class extends Error {
75
75
  }
76
76
  };
77
77
 
78
+ // src/release-identity.ts
79
+ var LOCAL_AGENT_RELEASE_VERSION_MAX_LENGTH = 128;
80
+ var LOCAL_AGENT_RELEASE_BUILD_ID_MAX_LENGTH = 128;
81
+ var STRICT_SEMVER_PATTERN = new RegExp(
82
+ "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
83
+ );
84
+ var BUILD_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/;
85
+ function resolveLocalAgentReleaseIdentity(input) {
86
+ if (input === void 0 || typeof input.version !== "string" || input.version.length > LOCAL_AGENT_RELEASE_VERSION_MAX_LENGTH || !STRICT_SEMVER_PATTERN.test(input.version)) {
87
+ throw new Error("DaemonConfig.localAgentRelease.version must be canonical strict SemVer");
88
+ }
89
+ if (input.buildId !== void 0 && (typeof input.buildId !== "string" || input.buildId.length > LOCAL_AGENT_RELEASE_BUILD_ID_MAX_LENGTH || !BUILD_ID_PATTERN.test(input.buildId))) {
90
+ throw new Error(
91
+ `DaemonConfig.localAgentRelease.buildId must be 1-${LOCAL_AGENT_RELEASE_BUILD_ID_MAX_LENGTH} safe opaque characters`
92
+ );
93
+ }
94
+ return Object.freeze({
95
+ version: input.version,
96
+ ...input.buildId === void 0 ? {} : { buildId: input.buildId }
97
+ });
98
+ }
99
+
78
100
  // src/runtime-failure.ts
79
101
  var RUNTIME_EXECUTION_FAILURE_BRAND = /* @__PURE__ */ Symbol.for("@byok-sdk/client/RuntimeExecutionFailure/v1");
80
102
  var RUNTIME_DISPOSAL_FAILURE_BRAND = /* @__PURE__ */ Symbol.for("@byok-sdk/client/RuntimeDisposalFailure/v1");
@@ -4366,7 +4388,20 @@ var PresencePublisher = class {
4366
4388
  headers: { "content-type": "application/json" },
4367
4389
  body: JSON.stringify({
4368
4390
  level: "online",
4369
- ...this.opts.configuredToolsets === void 0 ? {} : { configuredToolsets: this.opts.configuredToolsets }
4391
+ ...this.opts.configuredToolsets === void 0 ? {} : { configuredToolsets: this.opts.configuredToolsets },
4392
+ ...this.opts.clientVersion === void 0 ? {} : { clientVersion: this.opts.clientVersion },
4393
+ ...this.opts.protocolVersions === void 0 ? {} : { protocolVersions: [...this.opts.protocolVersions] },
4394
+ // Presence is a lightweight readiness fact, not a second
4395
+ // capability-negotiation channel. Keep its projection identical
4396
+ // to the persisted presence contract: the conn.hello snapshot's
4397
+ // runtime identity/version/auth facts, with no capabilities blob.
4398
+ ...this.opts.runtimes === void 0 ? {} : {
4399
+ runtimes: this.opts.runtimes.map(({ id, version, authPresent }) => ({
4400
+ id,
4401
+ ...version === void 0 ? {} : { version },
4402
+ ...authPresent === void 0 ? {} : { authPresent }
4403
+ }))
4404
+ }
4370
4405
  })
4371
4406
  },
4372
4407
  this.opts.auth
@@ -5092,6 +5127,7 @@ var WsTransport = class {
5092
5127
  capabilities: this.opts.capabilities,
5093
5128
  deviceId: this.opts.deviceId,
5094
5129
  productId: this.opts.productId,
5130
+ clientVersion: this.opts.clientVersion,
5095
5131
  runtimes: this.opts.runtimes,
5096
5132
  configuredToolsets: this.opts.configuredToolsets === void 0 ? void 0 : [...this.opts.configuredToolsets],
5097
5133
  cursor: this.opts.getCursor?.()
@@ -5182,6 +5218,7 @@ var ConnectionManager = class {
5182
5218
  deviceId: opts.deviceId,
5183
5219
  productId: opts.productId,
5184
5220
  capabilities: opts.capabilities,
5221
+ clientVersion: opts.clientVersion,
5185
5222
  runtimes: opts.runtimes,
5186
5223
  configuredToolsets: opts.configuredToolsets,
5187
5224
  getCursor: () => this.cursor,
@@ -8421,6 +8458,9 @@ var DEFAULT_MAX_TASK_OUTPUT_BYTES = 64 * 1024 * 1024;
8421
8458
  function isKnownRuntimeId(id) {
8422
8459
  return RuntimeIdSchema.safeParse(id).success;
8423
8460
  }
8461
+ function terminalUsageNumber(value, maximum) {
8462
+ return value !== void 0 && Number.isSafeInteger(value) && value >= 0 && value <= maximum ? value : void 0;
8463
+ }
8424
8464
  var DEFAULT_RUNTIME_PREFERENCE = ["claude", "codex", "pi"];
8425
8465
  function orderByPreference(candidates, preference) {
8426
8466
  const rank = new Map(preference.map((id, index) => [id, index]));
@@ -8720,7 +8760,13 @@ var TaskRunner = class {
8720
8760
  const timeoutMs = this.deps.shutdownInterruptTimeoutMs ?? DEFAULT_SHUTDOWN_INTERRUPT_TIMEOUT_MS;
8721
8761
  await raceSettleFirst(() => active.session.interrupt(), timeoutMs);
8722
8762
  if (this.tasks.get(active.taskId) !== active) return true;
8723
- this.deps.send(createEnvelope("task.fail", { reason, retryable }, { taskId: active.taskId }));
8763
+ this.deps.send(
8764
+ createEnvelope(
8765
+ "task.fail",
8766
+ { reason, retryable, ...this.terminalInferenceUsagePayload(active) },
8767
+ { taskId: active.taskId }
8768
+ )
8769
+ );
8724
8770
  return this.finish(active.taskId);
8725
8771
  }
8726
8772
  /** Graceful-shutdown caller of {@link teardownActiveTask} — see `shutdownActiveTasks`'s own doc comment. `retryable: true`: nothing about the task/policy itself was ever at fault, only this device's own availability right now. */
@@ -9098,7 +9144,8 @@ var TaskRunner = class {
9098
9144
  this.deps.batcherOptions
9099
9145
  ),
9100
9146
  approvalQueue: [],
9101
- outputBytesSoFar: 0
9147
+ outputBytesSoFar: 0,
9148
+ startedAtMs: Date.now()
9102
9149
  };
9103
9150
  if (this.pendingCancelled.has(taskId)) {
9104
9151
  const reason = this.pendingCancelled.get(taskId);
@@ -9110,7 +9157,13 @@ var TaskRunner = class {
9110
9157
  } catch {
9111
9158
  }
9112
9159
  await this.updateGitPhaseBestEffort(gitWorkspaceId, "cancelled");
9113
- this.deps.send(createEnvelope("task.cancelled", { reason }, { taskId }));
9160
+ this.deps.send(
9161
+ createEnvelope(
9162
+ "task.cancelled",
9163
+ { reason, ...this.terminalInferenceUsagePayload(active) },
9164
+ { taskId }
9165
+ )
9166
+ );
9114
9167
  await this.finish(taskId);
9115
9168
  return;
9116
9169
  }
@@ -9183,6 +9236,9 @@ var TaskRunner = class {
9183
9236
  );
9184
9237
  return;
9185
9238
  }
9239
+ if (event.type === "usage") {
9240
+ active.lastUsage = event;
9241
+ }
9186
9242
  if (event.type === "needs_approval") {
9187
9243
  active.batcher.flush();
9188
9244
  const { taskId } = active;
@@ -9235,7 +9291,8 @@ var TaskRunner = class {
9235
9291
  // (where the codec actually serializes it), so a contextual
9236
9292
  // `toJSON(key)` or an unstable getter cannot make the wire
9237
9293
  // bytes differ from what the cap gate approved.
9238
- ...outcome.document !== void 0 ? { document: outcome.document } : {}
9294
+ ...outcome.document !== void 0 ? { document: outcome.document } : {},
9295
+ ...this.terminalInferenceUsagePayload(active)
9239
9296
  },
9240
9297
  { taskId: active.taskId, sessionRef: active.session.sessionRef }
9241
9298
  )
@@ -9352,7 +9409,13 @@ var TaskRunner = class {
9352
9409
  } catch {
9353
9410
  }
9354
9411
  await this.observeGit(active, "salvage");
9355
- this.deps.send(createEnvelope("task.cancelled", { reason }, { taskId }));
9412
+ this.deps.send(
9413
+ createEnvelope(
9414
+ "task.cancelled",
9415
+ { reason, ...this.terminalInferenceUsagePayload(active) },
9416
+ { taskId }
9417
+ )
9418
+ );
9356
9419
  await this.finish(taskId);
9357
9420
  }
9358
9421
  /** M3-B: bounded insert for `pendingCancelled` — see its class-level doc comment and `MAX_TRACKED_TASK_IDS`. Evicts the oldest SAFE-TO-EVICT entry once over cap — see `evictPendingCancelled` (finding #5: not simply "the oldest entry", which could be an in-flight offer's own cancel marker). */
@@ -9790,7 +9853,13 @@ var TaskRunner = class {
9790
9853
  } catch {
9791
9854
  }
9792
9855
  await this.observeGit(active, "salvage");
9793
- this.deps.send(createEnvelope("task.fail", { reason: reason ?? "rejected", retryable: false }, { taskId }));
9856
+ this.deps.send(
9857
+ createEnvelope(
9858
+ "task.fail",
9859
+ { reason: reason ?? "rejected", retryable: false, ...this.terminalInferenceUsagePayload(active) },
9860
+ { taskId }
9861
+ )
9862
+ );
9794
9863
  await this.finish(taskId);
9795
9864
  }
9796
9865
  /** Pre-claim, fail-closed rejection (protocol §3.2) — never claims first. */
@@ -9808,9 +9877,44 @@ var TaskRunner = class {
9808
9877
  return;
9809
9878
  }
9810
9879
  if (active) await this.observeGit(active, "salvage");
9811
- this.deps.send(createEnvelope("task.fail", { reason, retryable }, { taskId }));
9880
+ this.deps.send(
9881
+ createEnvelope(
9882
+ "task.fail",
9883
+ active === void 0 ? { reason, retryable } : { reason, retryable, ...this.terminalInferenceUsagePayload(active) },
9884
+ { taskId }
9885
+ )
9886
+ );
9812
9887
  await this.finish(taskId);
9813
9888
  }
9889
+ /**
9890
+ * Build the optional terminal observation from facts this running daemon
9891
+ * actually has. No offered `dispatchSelection` is echoed here: it is a
9892
+ * requested execution target, not an adapter-reported provider/model fact.
9893
+ * The bundled adapter event contracts currently expose token observations
9894
+ * (Codex and Claude) but no provider/model observation, so those keys stay
9895
+ * absent. Pi exposes no native usage observation, so its terminal payload
9896
+ * omits this optional block rather than fabricating a usage observation from
9897
+ * independently known runtime, elapsed duration, or Local Agent version.
9898
+ */
9899
+ terminalInferenceUsagePayload(active) {
9900
+ const release = this.deps.localAgentRelease;
9901
+ const runtimeId = active.adapter.descriptor.id;
9902
+ if (release === void 0 || active.lastUsage === void 0 || !isKnownRuntimeId(runtimeId)) return {};
9903
+ const nowMs = Date.now();
9904
+ const durationMs = terminalUsageNumber(nowMs - active.startedAtMs, TERMINAL_INFERENCE_USAGE_MAX_DURATION_MS);
9905
+ const promptTokens = terminalUsageNumber(active.lastUsage?.inputTokens, TERMINAL_INFERENCE_USAGE_MAX_TOKENS);
9906
+ const completionTokens = terminalUsageNumber(active.lastUsage?.outputTokens, TERMINAL_INFERENCE_USAGE_MAX_TOKENS);
9907
+ return {
9908
+ usage: {
9909
+ runtime: runtimeId,
9910
+ clientVersion: release.version,
9911
+ reportedAt: new Date(nowMs).toISOString(),
9912
+ ...promptTokens === void 0 ? {} : { promptTokens },
9913
+ ...completionTokens === void 0 ? {} : { completionTokens },
9914
+ ...durationMs === void 0 ? {} : { durationMs }
9915
+ }
9916
+ };
9917
+ }
9814
9918
  /**
9815
9919
  * additive-minor (`task.complete.document`): the whole daemon-side gate
9816
9920
  * between a configured {@link ResultDocumentExtractor} and the wire —
@@ -10339,6 +10443,7 @@ function createDaemonWithAdapters(config, adapters, overrides = {}) {
10339
10443
  return buildDaemonWithAdapters(config, adapters, overrides);
10340
10444
  }
10341
10445
  function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProbe) {
10446
+ const localAgentRelease = resolveLocalAgentReleaseIdentity(config.localAgentRelease);
10342
10447
  const mcpToolsets = resolveMcpToolsets(config.mcpToolsets);
10343
10448
  const configuredToolsets = Object.freeze(
10344
10449
  [...mcpToolsets?.keys() ?? []].sort()
@@ -10452,6 +10557,7 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
10452
10557
  let controlServerHandle;
10453
10558
  let daemonOwnerLease;
10454
10559
  let presencePublisher;
10560
+ let detectedRuntimeFacts = [];
10455
10561
  let presenceDiscovery;
10456
10562
  let presenceDiscoveryInFlight = false;
10457
10563
  let shutdownPromise;
@@ -10585,6 +10691,7 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
10585
10691
  Promise.resolve(new BlobClient(config.serverUrl, auth))
10586
10692
  ]);
10587
10693
  observer.noteRuntimesDetected(runtimes);
10694
+ detectedRuntimeFacts = runtimes;
10588
10695
  const capabilities = computeCapabilities(adapters);
10589
10696
  const journalIdentity = config.hostedJournal ? { tenantId: config.hostedJournal.tenantId, productId: config.productId, deviceId: record.deviceId } : void 0;
10590
10697
  const sendEnvelope = activeJournal && journalIdentity ? (envelope) => {
@@ -10662,6 +10769,10 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
10662
10769
  approvalRegistry,
10663
10770
  storeDir,
10664
10771
  productId: config.productId,
10772
+ // U2 terminal inference usage consumes the one U4a-resolved,
10773
+ // process-immutable identity captured above. This is composition-only:
10774
+ // TaskRunner receives no config, manifest, or second identity resolver.
10775
+ localAgentRelease,
10665
10776
  approvalTimeoutMs: overrides.approvalTimeoutMs,
10666
10777
  // Finding F5(a): see TaskRunnerDeps.shutdownInterruptTimeoutMs's own doc comment.
10667
10778
  shutdownInterruptTimeoutMs: overrides.shutdown?.taskInterruptTimeoutMs,
@@ -10707,6 +10818,7 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
10707
10818
  deviceId: record.deviceId,
10708
10819
  productId: config.productId,
10709
10820
  capabilities,
10821
+ clientVersion: localAgentRelease.version,
10710
10822
  runtimes,
10711
10823
  configuredToolsets,
10712
10824
  auth,
@@ -10796,6 +10908,9 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
10796
10908
  serverUrl: config.serverUrl,
10797
10909
  auth,
10798
10910
  configuredToolsets,
10911
+ clientVersion: localAgentRelease.version,
10912
+ protocolVersions: [PROTOCOL_VERSION],
10913
+ runtimes: detectedRuntimeFacts,
10799
10914
  ...presenceCadence,
10800
10915
  onDegraded: (reason) => console.warn(`[byok/client] ${reason}`)
10801
10916
  });
@@ -10977,6 +11092,7 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
10977
11092
  const activeTasks = observer.tasks().filter((task) => TASK_TRANSITIONS[task.state].length > 0).map((task) => ({ taskId: task.taskId, state: task.state }));
10978
11093
  const pendingApprovals = approvalRegistry.list();
10979
11094
  return {
11095
+ localAgentRelease,
10980
11096
  pid: process.pid,
10981
11097
  uptimeMs: startedAt !== void 0 ? Date.now() - startedAt : 0,
10982
11098
  paired: auth.deviceId !== void 0,
@@ -11175,6 +11291,7 @@ function buildDaemonWithAdapters(config, adapters, overrides = {}, assertionProb
11175
11291
  }
11176
11292
  function status() {
11177
11293
  return {
11294
+ localAgentRelease,
11178
11295
  paired: auth.deviceId !== void 0,
11179
11296
  connected: connectionState === "open",
11180
11297
  degraded: connection?.isTransportDegraded() ?? false,
@@ -12689,6 +12806,6 @@ function createServiceLifecycle(def, opts = {}) {
12689
12806
  }
12690
12807
  }
12691
12808
 
12692
- export { AuthManager, BlobClient, ClaudeAdapter, CodexAdapter, DEFAULT_ACK_CRITICAL_RESERVE_BYTES, DEFAULT_CLEANUP_BATCH_LIMIT, DEFAULT_HARD_BUDGET_RATIO, DEFAULT_INCREMENTAL_VACUUM_PAGES, DEFAULT_LOG_ROTATION, DEFAULT_NORMAL_COMPACTION_INTERVAL_MS, DEFAULT_PRESSURE_COMPACTION_INTERVAL_MS, DEFAULT_RETENTION_MS, DEFAULT_SOFT_BUDGET_RATIO, DaemonObserver, DeviceRevokedError, GitWorkspaceError, GitWorkspaceManager, GitWorkspaceStore, JOURNAL_DB_FILENAME, JOURNAL_QUARANTINE_DIRNAME, JOURNAL_TASK_REF_PREFIX, JournalClosedError, JournalCorruptError, JournalRecordTooLargeError, JournalUnavailableError, JournalUnknownTaskError, LocalStorageEmergencyError, LocalStoragePolicyError, LocalStoragePressureEngine, PI_PACKAGE_NAME, PiAdapter, PolicyUnsupportedError, RUNTIME_ADAPTER_CONTRACT_VIOLATION_REASON, RuntimeDisposalFailure, RuntimeExecutionFailure, SKILL_PACKS_CAPABILITY, SKILL_PACKS_DIRNAME, SKILL_PACK_AUDIT_FILENAME, SKILL_PACK_INSTALL_ERROR_CODES, SKILL_PACK_LOCK_FILENAME, SKILL_PACK_LOCK_SCHEMA, SKILL_PACK_RESPONSE_MAX_BYTES, SecureDirHardeningError, SkillPackInstallError, SqliteLocalTaskJournal, SteerUnsupportedError, StoredDeviceProofSigner, TruthMemoryClient, TruthMemoryClientError, UnsupportedServicePlatformError, buildIcaclsArgs, cleanupEligibleAt, cleanupOrderFor, computePressureState, createDaemon, createDaemonWithAdapters, createFilesystemCleanupExecutor, createServiceLifecycle, createStatfsFreeBytesProvider, ensureSecureDir, freezeRuntimeAdapterDescriptor, generateLaunchdPlist, generateSystemdUnit, generateWinswXml, installSkillPacks, isGitWorkspaceConfig, isRuntimeDisposalFailure, isRuntimeExecutionFailure, journalHash, listInstalledSkillPacks, nodeAgentProgram, prependGitWorkspaceGuidance, projectRuntimeBoundaryFailure, projectRuntimeExecutionFailure, projectSkillPack, requestDeviceAssertion, resolveLocalStoragePolicy, sanitizeServiceName, sealRuntimeOperationManifest, skillPacksRoot };
12809
+ export { AuthManager, BlobClient, ClaudeAdapter, CodexAdapter, DEFAULT_ACK_CRITICAL_RESERVE_BYTES, DEFAULT_CLEANUP_BATCH_LIMIT, DEFAULT_HARD_BUDGET_RATIO, DEFAULT_INCREMENTAL_VACUUM_PAGES, DEFAULT_LOG_ROTATION, DEFAULT_NORMAL_COMPACTION_INTERVAL_MS, DEFAULT_PRESSURE_COMPACTION_INTERVAL_MS, DEFAULT_RETENTION_MS, DEFAULT_SOFT_BUDGET_RATIO, DaemonObserver, DeviceRevokedError, GitWorkspaceError, GitWorkspaceManager, GitWorkspaceStore, JOURNAL_DB_FILENAME, JOURNAL_QUARANTINE_DIRNAME, JOURNAL_TASK_REF_PREFIX, JournalClosedError, JournalCorruptError, JournalRecordTooLargeError, JournalUnavailableError, JournalUnknownTaskError, LocalStorageEmergencyError, LocalStoragePolicyError, LocalStoragePressureEngine, PI_PACKAGE_NAME, PiAdapter, PolicyUnsupportedError, RUNTIME_ADAPTER_CONTRACT_VIOLATION_REASON, RuntimeDisposalFailure, RuntimeExecutionFailure, SKILL_PACKS_CAPABILITY, SKILL_PACKS_DIRNAME, SKILL_PACK_AUDIT_FILENAME, SKILL_PACK_INSTALL_ERROR_CODES, SKILL_PACK_LOCK_FILENAME, SKILL_PACK_LOCK_SCHEMA, SKILL_PACK_RESPONSE_MAX_BYTES, SecureDirHardeningError, SkillPackInstallError, SqliteLocalTaskJournal, SteerUnsupportedError, StoredDeviceProofSigner, TruthMemoryClient, TruthMemoryClientError, UnsupportedServicePlatformError, buildIcaclsArgs, cleanupEligibleAt, cleanupOrderFor, computePressureState, createDaemon, createDaemonWithAdapters, createFilesystemCleanupExecutor, createServiceLifecycle, createStatfsFreeBytesProvider, ensureSecureDir, freezeRuntimeAdapterDescriptor, generateLaunchdPlist, generateSystemdUnit, generateWinswXml, installSkillPacks, isGitWorkspaceConfig, isRuntimeDisposalFailure, isRuntimeExecutionFailure, journalHash, listInstalledSkillPacks, nodeAgentProgram, prependGitWorkspaceGuidance, projectRuntimeBoundaryFailure, projectRuntimeExecutionFailure, projectSkillPack, requestDeviceAssertion, resolveLocalAgentReleaseIdentity, resolveLocalStoragePolicy, sanitizeServiceName, sealRuntimeOperationManifest, skillPacksRoot };
12693
12810
  //# sourceMappingURL=index.js.map
12694
12811
  //# sourceMappingURL=index.js.map