@rivet-dev/agentos-core 0.2.16-rc.2 → 0.2.17

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.
@@ -109,13 +109,23 @@ import type { SoftwareInput } from "./packages.js";
109
109
  import { type AgentOsSidecarPlacement } from "./sidecar/rpc-client.js";
110
110
  export interface AgentOsSharedSidecarOptions {
111
111
  pool?: string;
112
+ runtime?: AgentOsSidecarRuntimeConfig;
112
113
  }
113
114
  export interface AgentOsCreateSidecarOptions {
114
115
  sidecarId?: string;
116
+ runtime?: AgentOsSidecarRuntimeConfig;
117
+ }
118
+ /** Process-wide runtime settings applied when the native sidecar starts. */
119
+ export interface AgentOsSidecarRuntimeConfig {
120
+ executor?: {
121
+ /** Optional ceiling for concurrent V8 executors. Omit to leave admission uncapped. */
122
+ maxActiveVms?: number;
123
+ };
115
124
  }
116
125
  export type AgentOsSidecarConfig = {
117
126
  kind: "shared";
118
127
  pool?: string;
128
+ runtime?: AgentOsSidecarRuntimeConfig;
119
129
  } | {
120
130
  kind: "explicit";
121
131
  handle: AgentOsSidecar;
@@ -925,7 +935,7 @@ export declare class AgentOs {
925
935
  export declare function getAgentOsRuntimeAdmin(vm: AgentOs): AgentOsRuntimeAdmin;
926
936
  export declare function getAgentOsKernel(vm: AgentOs): Kernel;
927
937
  export declare class AgentOsSidecar {
928
- constructor(sidecarId: string, placement: AgentOsSidecarPlacement, sharedPool?: string);
938
+ constructor(sidecarId: string, placement: AgentOsSidecarPlacement, sharedPool?: string, runtime?: AgentOsSidecarRuntimeConfig);
929
939
  describe(): AgentOsSidecarDescription;
930
940
  dispose(): Promise<void>;
931
941
  }
package/dist/agent-os.js CHANGED
@@ -153,6 +153,13 @@ async function waitForTrackedExitPromises(promises, timeoutMs) {
153
153
  }),
154
154
  ]);
155
155
  }
156
+ function headersToRecord(headers) {
157
+ const result = {};
158
+ headers.forEach((value, name) => {
159
+ result[name] = value;
160
+ });
161
+ return result;
162
+ }
156
163
  import { OPT_AGENTOS_ROOT, } from "./agentos-package.js";
157
164
  import { getBaseEnvironment } from "./base-filesystem.js";
158
165
  import { CronManager } from "./cron/cron-manager.js";
@@ -2156,17 +2163,11 @@ export class AgentOs {
2156
2163
  completed = completedBeforeAdmission.has(executionId);
2157
2164
  if (completed)
2158
2165
  resolveCompletion?.();
2159
- let rejectAbort;
2160
- const aborted = !background && options.signal
2161
- ? new Promise((_resolve, reject) => {
2162
- rejectAbort = reject;
2163
- })
2164
- : undefined;
2165
2166
  const abort = () => {
2167
+ // Admitted executions report cancellation through their structured result.
2166
2168
  void this._cancelExecution(response.response.operationId).catch((error) => {
2167
2169
  console.error("[agentos] failed to cancel aborted execution", error);
2168
2170
  });
2169
- rejectAbort?.(options.signal?.reason ?? new DOMException("Aborted", "AbortError"));
2170
2171
  };
2171
2172
  options.signal?.addEventListener("abort", abort, { once: true });
2172
2173
  if (options.signal?.aborted)
@@ -2198,7 +2199,7 @@ export class AgentOs {
2198
2199
  };
2199
2200
  }
2200
2201
  try {
2201
- await (aborted ? Promise.race([completion, aborted]) : completion);
2202
+ await completion;
2202
2203
  return await this._waitExecutionResult(response.response.operationId);
2203
2204
  }
2204
2205
  finally {
@@ -2794,6 +2795,7 @@ export class AgentOs {
2794
2795
  env: options.env,
2795
2796
  stdin: options.stdin,
2796
2797
  timeout: options.timeoutMs,
2798
+ streamStdin: true,
2797
2799
  onStdout: (data) => {
2798
2800
  recordOutput("stdout", data);
2799
2801
  options?.onStdout?.(data);
@@ -3195,7 +3197,7 @@ export class AgentOs {
3195
3197
  port,
3196
3198
  method: request.method,
3197
3199
  path: `${url.pathname}${url.search}`,
3198
- headersJson: JSON.stringify(Object.fromEntries(request.headers.entries())),
3200
+ headersJson: JSON.stringify(headersToRecord(request.headers)),
3199
3201
  ...(request.method !== "GET" && request.method !== "HEAD"
3200
3202
  ? {
3201
3203
  bodyBase64: Buffer.from(await request.arrayBuffer()).toString("base64"),
@@ -3218,7 +3220,7 @@ export class AgentOs {
3218
3220
  port,
3219
3221
  method: request.method,
3220
3222
  path: `${url.pathname}${url.search}`,
3221
- headersJson: JSON.stringify(Object.fromEntries(request.headers.entries())),
3223
+ headersJson: JSON.stringify(headersToRecord(request.headers)),
3222
3224
  ...(request.method !== "GET" && request.method !== "HEAD"
3223
3225
  ? {
3224
3226
  bodyBase64: Buffer.from(await request.arrayBuffer()).toString("base64"),
@@ -4564,7 +4566,9 @@ export function getAgentOsKernel(vm) {
4564
4566
  }
4565
4567
  function resolveAgentOsSidecar(config) {
4566
4568
  if (!config || config.kind === "shared") {
4567
- return getSharedAgentOsSidecarInternal(config?.kind === "shared" ? { pool: config.pool } : undefined);
4569
+ return getSharedAgentOsSidecarInternal(config?.kind === "shared"
4570
+ ? { pool: config.pool, runtime: config.runtime }
4571
+ : undefined);
4568
4572
  }
4569
4573
  return config.handle;
4570
4574
  }
@@ -4675,7 +4679,7 @@ function ensureSharedSidecarNativeProcess(sidecar) {
4675
4679
  const client = SidecarProcess.spawn({
4676
4680
  cwd: REPO_ROOT,
4677
4681
  command: ensureNativeSidecarBinary(),
4678
- args: [],
4682
+ args: sidecarRuntimeArgs(state.runtime),
4679
4683
  });
4680
4684
  // Track the child immediately — BEFORE the handshake await — so a
4681
4685
  // failed `authenticateAndOpenSession()` can still reap it (otherwise
@@ -4738,7 +4742,7 @@ async function disposeSharedSidecarNativeProcess(state) {
4738
4742
  }
4739
4743
  }
4740
4744
  export class AgentOsSidecar {
4741
- constructor(sidecarId, placement, sharedPool) {
4745
+ constructor(sidecarId, placement, sharedPool, runtime) {
4742
4746
  sidecarStates.set(this, {
4743
4747
  description: {
4744
4748
  sidecarId,
@@ -4748,6 +4752,7 @@ export class AgentOsSidecar {
4748
4752
  },
4749
4753
  activeLeases: new Set(),
4750
4754
  sharedPool,
4755
+ runtime: normalizeSidecarRuntimeConfig(runtime),
4751
4756
  });
4752
4757
  }
4753
4758
  describe() {
@@ -4787,7 +4792,7 @@ function createAgentOsSidecarInternal(options = {}) {
4787
4792
  return new AgentOsSidecar(sidecarId, {
4788
4793
  kind: "explicit",
4789
4794
  sidecarId,
4790
- });
4795
+ }, undefined, options.runtime);
4791
4796
  }
4792
4797
  /**
4793
4798
  * Test-only escape hatch: dispose every cached shared sidecar so vitest
@@ -4816,12 +4821,37 @@ function getSharedAgentOsSidecarInternal(options = {}) {
4816
4821
  const pool = options.pool ?? "default";
4817
4822
  const existing = sharedSidecars.get(pool);
4818
4823
  if (existing && existing.describe().state !== "disposed") {
4824
+ if (options.runtime !== undefined) {
4825
+ const requested = normalizeSidecarRuntimeConfig(options.runtime);
4826
+ const configured = getSidecarState(existing).runtime;
4827
+ if (!sidecarRuntimeConfigsEqual(requested, configured)) {
4828
+ throw new Error(`Shared sidecar pool ${JSON.stringify(pool)} already exists with different runtime settings`);
4829
+ }
4830
+ }
4819
4831
  return existing;
4820
4832
  }
4821
- const sidecar = new AgentOsSidecar(`agentos-shared-sidecar:${pool}`, { kind: "shared", ...(pool ? { pool } : {}) }, pool);
4833
+ const sidecar = new AgentOsSidecar(`agentos-shared-sidecar:${pool}`, { kind: "shared", ...(pool ? { pool } : {}) }, pool, options.runtime);
4822
4834
  sharedSidecars.set(pool, sidecar);
4823
4835
  return sidecar;
4824
4836
  }
4837
+ function normalizeSidecarRuntimeConfig(runtime) {
4838
+ const maxActiveVms = runtime?.executor?.maxActiveVms;
4839
+ if (maxActiveVms === undefined)
4840
+ return {};
4841
+ if (!Number.isSafeInteger(maxActiveVms) || maxActiveVms <= 0) {
4842
+ throw new Error("runtime.executor.maxActiveVms must be a positive safe integer");
4843
+ }
4844
+ return { executor: { maxActiveVms } };
4845
+ }
4846
+ function sidecarRuntimeConfigsEqual(left, right) {
4847
+ return left.executor?.maxActiveVms === right.executor?.maxActiveVms;
4848
+ }
4849
+ function sidecarRuntimeArgs(runtime) {
4850
+ const maxActiveVms = runtime.executor?.maxActiveVms;
4851
+ return maxActiveVms === undefined
4852
+ ? []
4853
+ : ["--max-active-vms", String(maxActiveVms)];
4854
+ }
4825
4855
  async function leaseAgentOsSidecarVm(sidecar, options) {
4826
4856
  const state = getSidecarState(sidecar);
4827
4857
  if (state.description.state !== "ready") {
@@ -1,3 +1,4 @@
1
+ /// <reference path="../long-timeout.d.ts" />
1
2
  import { clearTimeout as clearLongTimeout, setTimeout as longSetTimeout, } from "long-timeout";
2
3
  import { resolveSchedule, validateScheduleForRegistration, } from "./parse-schedule.js";
3
4
  /**
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ export { CronManager, InvalidScheduleError, PastScheduleError, TimerScheduleDriv
4
4
  export { createHostDirBackend, nodeModulesMount } from "./host-dir-mount.js";
5
5
  export { binding, MAX_BINDING_DESCRIPTION_LENGTH, bindings, validateBindings, } from "./bindings.js";
6
6
  export type { Binding, BindingExample, Bindings } from "./bindings.js";
7
- export { agentOsLimitsSchema, agentOsOptionFieldSchemas, agentOsOptionsSchema, bindingSchema, mountConfigSchema, nativeMountConfigSchema, parseAgentOsOptions, permissionsSchema, rootFilesystemConfigSchema, sharedSidecarConfigSchema, sidecarConfigSchema, bindingsSchema, } from "./options-schema.js";
7
+ export { agentOsLimitsSchema, agentOsOptionFieldSchemas, agentOsOptionsSchema, bindingSchema, mountConfigSchema, nativeMountConfigSchema, parseAgentOsOptions, permissionsSchema, rootFilesystemConfigSchema, sharedSidecarConfigSchema, sidecarConfigSchema, bindingsSchema, sidecarRuntimeConfigSchema, } from "./options-schema.js";
8
8
  export { createSnapshotExport } from "./layers.js";
9
9
  export { defineSoftware } from "./packages.js";
10
10
  export { isPackageDescriptor, OPT_AGENTOS_BIN, OPT_AGENTOS_ROOT, tryReadAgentosPackageManifest, } from "./agentos-package.js";
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export { AgentOs, AgentOsSidecar } from "./agent-os.js";
3
3
  export { CronManager, InvalidScheduleError, PastScheduleError, TimerScheduleDriver, } from "./cron/index.js";
4
4
  export { createHostDirBackend, nodeModulesMount } from "./host-dir-mount.js";
5
5
  export { binding, MAX_BINDING_DESCRIPTION_LENGTH, bindings, validateBindings, } from "./bindings.js";
6
- export { agentOsLimitsSchema, agentOsOptionFieldSchemas, agentOsOptionsSchema, bindingSchema, mountConfigSchema, nativeMountConfigSchema, parseAgentOsOptions, permissionsSchema, rootFilesystemConfigSchema, sharedSidecarConfigSchema, sidecarConfigSchema, bindingsSchema, } from "./options-schema.js";
6
+ export { agentOsLimitsSchema, agentOsOptionFieldSchemas, agentOsOptionsSchema, bindingSchema, mountConfigSchema, nativeMountConfigSchema, parseAgentOsOptions, permissionsSchema, rootFilesystemConfigSchema, sharedSidecarConfigSchema, sidecarConfigSchema, bindingsSchema, sidecarRuntimeConfigSchema, } from "./options-schema.js";
7
7
  export { createSnapshotExport } from "./layers.js";
8
8
  export { defineSoftware } from "./packages.js";
9
9
  export { isPackageDescriptor, OPT_AGENTOS_BIN, OPT_AGENTOS_ROOT, tryReadAgentosPackageManifest, } from "./agentos-package.js";
@@ -249,13 +249,28 @@ export declare const mountConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
249
249
  lowers: z.ZodArray<z.ZodUnknown>;
250
250
  }, z.core.$strict>;
251
251
  }, z.core.$strict>]>;
252
+ export declare const sidecarRuntimeConfigSchema: z.ZodObject<{
253
+ executor: z.ZodOptional<z.ZodObject<{
254
+ maxActiveVms: z.ZodOptional<z.ZodNumber>;
255
+ }, z.core.$strict>>;
256
+ }, z.core.$strict>;
252
257
  export declare const sharedSidecarConfigSchema: z.ZodObject<{
253
258
  kind: z.ZodLiteral<"shared">;
254
259
  pool: z.ZodOptional<z.ZodString>;
260
+ runtime: z.ZodOptional<z.ZodObject<{
261
+ executor: z.ZodOptional<z.ZodObject<{
262
+ maxActiveVms: z.ZodOptional<z.ZodNumber>;
263
+ }, z.core.$strict>>;
264
+ }, z.core.$strict>>;
255
265
  }, z.core.$strict>;
256
266
  export declare const sidecarConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
257
267
  kind: z.ZodLiteral<"shared">;
258
268
  pool: z.ZodOptional<z.ZodString>;
269
+ runtime: z.ZodOptional<z.ZodObject<{
270
+ executor: z.ZodOptional<z.ZodObject<{
271
+ maxActiveVms: z.ZodOptional<z.ZodNumber>;
272
+ }, z.core.$strict>>;
273
+ }, z.core.$strict>>;
259
274
  }, z.core.$strict>, z.ZodObject<{
260
275
  kind: z.ZodLiteral<"explicit">;
261
276
  handle: z.ZodUnknown;
@@ -456,6 +471,11 @@ export declare const agentOsOptionFieldSchemas: {
456
471
  readonly sidecar: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
457
472
  kind: z.ZodLiteral<"shared">;
458
473
  pool: z.ZodOptional<z.ZodString>;
474
+ runtime: z.ZodOptional<z.ZodObject<{
475
+ executor: z.ZodOptional<z.ZodObject<{
476
+ maxActiveVms: z.ZodOptional<z.ZodNumber>;
477
+ }, z.core.$strict>>;
478
+ }, z.core.$strict>>;
459
479
  }, z.core.$strict>, z.ZodObject<{
460
480
  kind: z.ZodLiteral<"explicit">;
461
481
  handle: z.ZodUnknown;
@@ -293,10 +293,21 @@ export const mountConfigSchema = z.union([
293
293
  nativeMountConfigSchema,
294
294
  overlayMountConfigSchema,
295
295
  ]);
296
+ export const sidecarRuntimeConfigSchema = z
297
+ .object({
298
+ executor: z
299
+ .object({
300
+ maxActiveVms: positiveInteger.max(Number.MAX_SAFE_INTEGER).optional(),
301
+ })
302
+ .strict()
303
+ .optional(),
304
+ })
305
+ .strict();
296
306
  export const sharedSidecarConfigSchema = z
297
307
  .object({
298
308
  kind: z.literal("shared"),
299
309
  pool: z.string().optional(),
310
+ runtime: sidecarRuntimeConfigSchema.optional(),
300
311
  })
301
312
  .strict();
302
313
  const explicitSidecarSchema = z
package/dist/sandbox.js CHANGED
@@ -8,7 +8,11 @@ function normalizeHeaders(headers) {
8
8
  return undefined;
9
9
  }
10
10
  if (headers instanceof Headers) {
11
- return Object.fromEntries(headers.entries());
11
+ const normalized = {};
12
+ headers.forEach((value, name) => {
13
+ normalized[name] = value;
14
+ });
15
+ return normalized;
12
16
  }
13
17
  if (Array.isArray(headers)) {
14
18
  return Object.fromEntries(headers);
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { AgentExitEvent, AgentExitHandler, AgentOsCreateSidecarOptions, AgentOsLimits, AgentOsOptions, AgentOsSharedSidecarOptions, AgentOsSidecarConfig, AgentOsSidecarDescription, AgentRegistryEntry, AgentRestartOutcome, AgentStderrEvent, AgentStderrHandler, BatchReadResult, BatchWriteEntry, BatchWriteResult, DirEntry, DynamicMountDescriptor, ExportRootFilesystemOptions, HttpRequest, HttpResponse, LimitWarning, LimitWarningHandler, MountConfig, MountConfigJsonObject, MountConfigJsonPrimitive, MountConfigJsonValue, MountInfo, NativeMountConfig, NativeMountPluginDescriptor, NativeRootFilesystemConfig, OverlayMountConfig, OverlayRootFilesystemConfig, PlainMountConfig, ProcessOutput, ProcessTreeNode, ReaddirEntry, ReaddirRecursiveOptions, RootFilesystemConfig, RootLowerInput, ShellData, ShellExit, ShellOptions, } from "./agent-os.js";
1
+ export type { AgentExitEvent, AgentExitHandler, AgentOsCreateSidecarOptions, AgentOsLimits, AgentOsOptions, AgentOsSharedSidecarOptions, AgentOsSidecarConfig, AgentOsSidecarDescription, AgentOsSidecarRuntimeConfig, AgentRegistryEntry, AgentRestartOutcome, AgentStderrEvent, AgentStderrHandler, BatchReadResult, BatchWriteEntry, BatchWriteResult, DirEntry, DynamicMountDescriptor, ExportRootFilesystemOptions, HttpRequest, HttpResponse, LimitWarning, LimitWarningHandler, MountConfig, MountConfigJsonObject, MountConfigJsonPrimitive, MountConfigJsonValue, MountInfo, NativeMountConfig, NativeMountPluginDescriptor, NativeRootFilesystemConfig, OverlayMountConfig, OverlayRootFilesystemConfig, PlainMountConfig, ProcessOutput, ProcessTreeNode, ReaddirEntry, ReaddirRecursiveOptions, RootFilesystemConfig, RootLowerInput, ShellData, ShellExit, ShellOptions, } from "./agent-os.js";
2
2
  export type { CodeEvaluationResult, CodeExecutionResult, ContextDescriptor, ContextState, ExecutionErrorData, ExecutionSignal, InlineExecutionOptions, JavaScriptEvaluationOptions, JavaScriptExecutionOptions, LanguageExecutionOptions, LanguageSpawnOptions, NpmPackageInstallOptions, NpmProjectInstallOptions, OutputCapture, OutputReplay, ProcessDescriptor, ProcessExit, ProcessOutputEvent, PythonInstallOptions, SpawnOptions, TypeScriptCheckOptions, TypeScriptCheckResult, TypeScriptDiagnostic, TypeScriptEvaluationOptions, TypeScriptExecutionOptions, TypeScriptFileExecutionOptions, } from "./language-execution.js";
3
3
  export type * from "./session-api.js";
4
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rivet-dev/agentos-core",
3
- "version": "0.2.16-rc.2",
3
+ "version": "0.2.17",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./dist/index.js",
@@ -56,7 +56,7 @@
56
56
  "build:agentos-protocol": "node ./scripts/compile-agentos-protocol.mjs",
57
57
  "build:protocols": "pnpm run build:agentos-protocol",
58
58
  "test": "vitest run --exclude '**/*.nightly.test.ts' --reporter=verbose",
59
- "test:unit": "vitest run tests/agent-exit-event.test.ts tests/agentos-package.test.ts tests/agentos-protocol.test.ts tests/allowed-node-builtins.test.ts tests/bindings-zod.test.ts tests/bindings.test.ts tests/cron-manager.test.ts tests/cron-timer-driver.test.ts tests/generated-protocol.test.ts tests/leak-agent-os-processes.test.ts tests/leak-rpc-client.test.ts tests/mount-descriptors.test.ts tests/mount-reconfigure.test.ts tests/options-schema.test.ts tests/public-api-exports.test.ts tests/root-filesystem-descriptors.test.ts tests/runtime-compat-mount.test.ts tests/session-event-ordering.test.ts tests/session-permission-surface.test.ts tests/sidecar-client.test.ts tests/sidecar-permission-descriptors.test.ts tests/wasm-permission-tiers.test.ts --fileParallelism=false",
59
+ "test:unit": "vitest run tests/agent-exit-event.test.ts tests/agentos-package.test.ts tests/agentos-protocol.test.ts tests/allowed-node-builtins.test.ts tests/bindings-zod.test.ts tests/bindings.test.ts tests/cron-manager.test.ts tests/cron-timer-driver.test.ts tests/execution-abort.test.ts tests/generated-protocol.test.ts tests/leak-agent-os-processes.test.ts tests/leak-rpc-client.test.ts tests/mount-descriptors.test.ts tests/mount-reconfigure.test.ts tests/options-schema.test.ts tests/public-api-exports.test.ts tests/root-filesystem-descriptors.test.ts tests/runtime-compat-mount.test.ts tests/session-event-ordering.test.ts tests/session-permission-surface.test.ts tests/sidecar-client.test.ts tests/sidecar-permission-descriptors.test.ts tests/wasm-permission-tiers.test.ts --fileParallelism=false",
60
60
  "test:pr": "pnpm test:unit && vitest run tests/migration-parity.test.ts tests/acp-reactor-regression.test.ts --fileParallelism=false --reporter=verbose",
61
61
  "test:nightly": "vitest run tests/*.nightly.test.ts --reporter=verbose --passWithNoTests"
62
62
  },
@@ -64,19 +64,18 @@
64
64
  "@agentclientprotocol/sdk": "0.16.1",
65
65
  "@agentos-software/claude-code": "0.2.7",
66
66
  "@agentos-software/codex-cli": "0.3.4",
67
- "@agentos-software/common": "0.2.16-rc.2",
68
- "@agentos-software/manifest": "0.2.16-rc.2",
67
+ "@agentos-software/common": "0.2.17",
68
+ "@agentos-software/manifest": "0.2.17",
69
69
  "@agentos-software/opencode": "0.2.7",
70
70
  "@agentos-software/pi": "0.2.7",
71
71
  "@aws-sdk/client-s3": "^3.1019.0",
72
- "@rivet-dev/agentos-sidecar": "0.2.16-rc.2",
72
+ "@rivet-dev/agentos-sidecar": "0.2.17",
73
73
  "@rivetkit/bare-ts": "^0.6.2",
74
- "@rivet-dev/agentos-runtime-core": "0.2.16-rc.2",
74
+ "@rivet-dev/agentos-runtime-core": "0.2.17",
75
75
  "@xterm/headless": "^6.0.0",
76
76
  "better-sqlite3": "^12.8.0",
77
77
  "croner": "^10.0.1",
78
78
  "googleapis": "^144.0.0",
79
- "isolated-vm": "^6.0.0",
80
79
  "long-timeout": "^0.1.1",
81
80
  "minimatch": "^10.2.4",
82
81
  "zod": "^4.1.11",
@@ -106,7 +105,7 @@
106
105
  "@agentos-software/vim": "0.3.3",
107
106
  "@agentos-software/wget": "0.3.3",
108
107
  "@agentos-software/yq": "0.3.3",
109
- "@rivet-dev/agentos-test-harness": "0.2.16-rc.2",
108
+ "@rivet-dev/agentos-test-harness": "0.2.17",
110
109
  "@anthropic-ai/claude-agent-sdk": "^0.2.87",
111
110
  "@anthropic-ai/claude-code": "^2.1.86",
112
111
  "@bare-ts/tools": "0.15.0",
@@ -120,5 +119,10 @@
120
119
  "vitest": "^2.1.8",
121
120
  "ws": "^8.18.0",
122
121
  "zod3": "npm:zod@^3.25.76"
122
+ },
123
+ "repository": {
124
+ "type": "git",
125
+ "url": "https://github.com/rivet-dev/agentos.git",
126
+ "directory": "packages/core"
123
127
  }
124
128
  }