@zhivex-ai/harness 1.2.0-rc.8 → 1.2.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +7 -7
  3. package/contracts/public-api.json +5 -0
  4. package/contracts/stable-api-signatures.json +28 -28
  5. package/dist/acp-cli.js +1096 -609
  6. package/dist/cli/arguments.d.ts +2 -0
  7. package/dist/cli/cli-credentials.d.ts +1 -1
  8. package/dist/cli/cli-options.d.ts +1 -1
  9. package/dist/cli/cli-profiles.d.ts +15 -0
  10. package/dist/cli/cli-stream.d.ts +3 -3
  11. package/dist/cli/console/console-commands.d.ts +3 -3
  12. package/dist/cli/console/console-input.d.ts +22 -3
  13. package/dist/cli/console/console-navigation.d.ts +3 -0
  14. package/dist/cli/console/console-presentation.d.ts +8 -2
  15. package/dist/cli/console/console-reasoning.d.ts +3 -0
  16. package/dist/cli/presentation.d.ts +3 -0
  17. package/dist/cli/run-document.d.ts +4 -4
  18. package/dist/cli/terminal/activity-history.d.ts +15 -0
  19. package/dist/cli/terminal/tool-activity.d.ts +11 -1
  20. package/dist/{cli-7nj89dq0.js → cli-3jmy4h5h.js} +385 -217
  21. package/dist/{cli-entry-t3bay5k5.js → cli-entry-427869g9.js} +287 -180
  22. package/dist/{cli-entry-0mhbpe8j.js → cli-entry-b1mfvmxe.js} +2 -1
  23. package/dist/{cli-entry-hkxakkng.js → cli-entry-c2f58zj2.js} +998 -210
  24. package/dist/cli.js +2 -2
  25. package/dist/client/json-contracts.d.ts +20 -0
  26. package/dist/{config-w1npe8mp.js → config-1k9t4jhh.js} +1 -1
  27. package/dist/context/compaction.d.ts +1 -1
  28. package/dist/context/semantic-compaction.d.ts +1 -1
  29. package/dist/context/task-memory.d.ts +2 -2
  30. package/dist/hostile-repository-demo.js +950 -509
  31. package/dist/index.js +1803 -1132
  32. package/dist/persistence/operations.d.ts +5 -1
  33. package/dist/persistence/state-backup-stream.d.ts +4 -0
  34. package/dist/providers/meta-replay.d.ts +1 -1
  35. package/dist/providers/qwen-context.d.ts +2 -0
  36. package/dist/providers/qwen-hosted-policy.d.ts +5 -0
  37. package/dist/providers/reasoning.d.ts +18 -0
  38. package/dist/runtime/config.d.ts +3 -0
  39. package/dist/runtime/error-diagnostics.d.ts +2 -0
  40. package/dist/runtime/harness.d.ts +1 -1
  41. package/dist/runtime/model-edit-references.d.ts +4 -2
  42. package/dist/runtime/progress-monitor.d.ts +6 -2
  43. package/dist/runtime/runtime-policy.d.ts +5 -4
  44. package/dist/runtime/time-to-safe-fix.d.ts +6 -1
  45. package/dist/service-cli.js +1112 -639
  46. package/dist/{service-client-cli-s3ee2hrj.js → service-client-cli-yx56n0hc.js} +66 -8
  47. package/dist/tools/dependency-read.d.ts +51 -4
  48. package/dist/tools/execution.d.ts +8 -8
  49. package/dist/tools/workspace.d.ts +27 -16
  50. package/dist/verify-historical-migrations.js +1122 -638
  51. package/dist/workspace/file-security.d.ts +6 -0
  52. package/dist/zhx.js +2 -2
  53. package/docs/CLI.md +75 -23
  54. package/docs/CONTEXT_ENGINEERING.md +25 -5
  55. package/docs/DURABLE_OPERATIONS.md +8 -0
  56. package/docs/EXTENSIBILITY.md +1 -1
  57. package/docs/FIRST_USE.md +6 -6
  58. package/docs/MODEL_CATALOG.md +28 -1
  59. package/evaluations/representative-assembly-matrix.json +55 -1
  60. package/evaluations/representative-repositories-v2.jsonl +7 -0
  61. package/examples/README.md +4 -4
  62. package/package.json +7 -7
@@ -1,15 +1,17 @@
1
1
  import {
2
+ ActivityHistory,
2
3
  CLI_EVENT_SCHEMA_VERSION,
3
4
  CLI_JSON_SCHEMA_VERSION,
4
5
  ConsoleInput,
6
+ ToolActivity,
5
7
  changeEnvelopeSchema,
6
- formatComposer,
8
+ formatAppliedFiles,
7
9
  formatConsoleHelp,
8
10
  formatConsoleWelcome,
9
11
  navigateConsole,
10
12
  sanitizeTerminalText,
11
13
  serializeStreamResult
12
- } from "./cli-entry-hkxakkng.js";
14
+ } from "./cli-entry-c2f58zj2.js";
13
15
  import {
14
16
  HARNESS_VERSION
15
17
  } from "./cli-entry-64pdp3k5.js";
@@ -18,8 +20,9 @@ import {
18
20
  HARNESS_ERROR_SCHEMA_VERSION,
19
21
  HarnessConfigError,
20
22
  HarnessStateConflictError,
21
- PROVIDERS
22
- } from "./cli-entry-t3bay5k5.js";
23
+ PROVIDERS,
24
+ reasoningEffortSchema
25
+ } from "./cli-entry-427869g9.js";
23
26
  import {
24
27
  __require
25
28
  } from "./cli-entry-1bx83sw4.js";
@@ -441,7 +444,8 @@ var cliInitDocumentSchema = observationalDocument({
441
444
  path: z6.string().min(1),
442
445
  schemaVersion: nonnegativeInteger,
443
446
  provider: z6.enum(PROVIDERS),
444
- model: z6.string().min(1)
447
+ model: z6.string().min(1),
448
+ reasoningEffort: reasoningEffortSchema.optional()
445
449
  }),
446
450
  credential: observationalDocument({
447
451
  configured: z6.boolean(),
@@ -783,6 +787,9 @@ var runServiceCli = async (options, annotate) => {
783
787
  } else
784
788
  session2 = await create(options.idempotencyKey);
785
789
  let activeRun;
790
+ let consoleInput;
791
+ const history = new ActivityHistory;
792
+ const seenMutations = new Set;
786
793
  const currentRun = async (runId = activeRun ?? session2.runs.at(-1)?.runId) => {
787
794
  if (!runId)
788
795
  return;
@@ -808,6 +815,27 @@ var runServiceCli = async (options, annotate) => {
808
815
  const invoke = async (command) => {
809
816
  let cursor = await cursorAtEnd();
810
817
  let finished = false, streamed = false;
818
+ consoleInput?.startBackground();
819
+ const activity = new ToolActivity((text) => {
820
+ process.stderr.write(text);
821
+ }, Boolean(consoleInput && process.stdout.isTTY), () => process.stdout.columns || 80, () => consoleInput?.backgroundStatus ?? "");
822
+ const observe = (a) => {
823
+ if (options.json || options.jsonl)
824
+ return;
825
+ history.observeService(a);
826
+ if (a.type === "agent-step-start" || a.type === "agent-run-start")
827
+ activity.phase("Waiting for model response");
828
+ else if (a.type === "agent-compaction")
829
+ activity.phase("Updating context");
830
+ else if (a.type === "tool-call")
831
+ activity.start(typeof a.toolName === "string" ? a.toolName : undefined);
832
+ else if (a.type === "tool-result")
833
+ activity.finish(typeof a.toolName === "string" ? a.toolName : "tool", a.isError !== true);
834
+ else if (["agent-run-finish", "tool-approval-request", "agent-approval-request"].includes(String(a.type)))
835
+ activity.flush();
836
+ else if (a.type === "text-delta")
837
+ activity.pause();
838
+ };
811
839
  const pending = call(command).finally(() => {
812
840
  finished = true;
813
841
  });
@@ -825,6 +853,7 @@ var runServiceCli = async (options, annotate) => {
825
853
  const a = event.activity;
826
854
  if (a.type === "checkpoint" || a.type === "user-message")
827
855
  continue;
856
+ observe(a);
828
857
  if (options.jsonl)
829
858
  process.stdout.write(JSON.stringify({ ...a, schemaVersion: 1, kind: "run-event", sequence: ++sequence }) + `
830
859
  `);
@@ -848,6 +877,7 @@ var runServiceCli = async (options, annotate) => {
848
877
  const a = event.activity;
849
878
  if (a.type === "checkpoint" || a.type === "user-message")
850
879
  continue;
880
+ observe(a);
851
881
  if (options.jsonl)
852
882
  process.stdout.write(JSON.stringify({ ...a, schemaVersion: 1, kind: "run-event", sequence: ++sequence }) + `
853
883
  `);
@@ -868,6 +898,8 @@ var runServiceCli = async (options, annotate) => {
868
898
  } catch (e) {
869
899
  throw annotate(e, sequence);
870
900
  } finally {
901
+ activity.flush();
902
+ consoleInput?.stopBackground();
871
903
  activeRun = undefined;
872
904
  }
873
905
  };
@@ -885,6 +917,18 @@ var runServiceCli = async (options, annotate) => {
885
917
  Run ${run2.runId} · ${run2.status} · session ${session2.sessionId}
886
918
  `);
887
919
  }
920
+ if (!options.json && !options.jsonl) {
921
+ const fresh = document.mutations.filter((entry) => !seenMutations.has(entry.id));
922
+ for (const entry of fresh)
923
+ seenMutations.add(entry.id);
924
+ while (seenMutations.size > 2000)
925
+ seenMutations.delete(seenMutations.values().next().value);
926
+ const receipt = formatAppliedFiles(fresh, "Review changes in the host workspace");
927
+ if (receipt) {
928
+ process.stdout.write(receipt);
929
+ history.add(receipt.trim());
930
+ }
931
+ }
888
932
  if (["failed", "cancelled", "timed_out"].includes(run2.status))
889
933
  process.exitCode = 1;
890
934
  };
@@ -928,6 +972,7 @@ Run ${run2.runId} · ${run2.status} · session ${session2.sessionId}
928
972
  }
929
973
  const input = new ConsoleInput(process.stdin, process.stdout, Boolean(process.stdin.isTTY), "service");
930
974
  input.onInterrupt = interrupt;
975
+ consoleInput = input;
931
976
  try {
932
977
  process.stdout.write(formatConsoleWelcome({ version: HARNESS_VERSION, workspace: projectId, sessionId: session2.sessionId, service: true }, { columns: process.stdout.columns ?? 80 }) + `
933
978
  `);
@@ -935,9 +980,8 @@ Run ${run2.runId} · ${run2.status} · session ${session2.sessionId}
935
980
  if (previous)
936
981
  print(previous);
937
982
  for (;; ) {
938
- process.stdout.write(formatComposer({ model: "local service", status: session2.runs.at(-1)?.status === "waiting_approval" ? "approval pending · /pending" : "ready", ...session2.title ? { title: session2.title } : {}, automaticApprovals: options.yes === true }, process.stdout.columns));
939
- const raw = await input.question(`
940
- > `, true).catch((e) => {
983
+ input.setQueueEnabled(!session2.runs.some((run2) => ["created", "running", "waiting_approval"].includes(run2.status)));
984
+ const raw = await input.compose({ model: "local service", status: session2.runs.at(-1)?.status === "waiting_approval" ? "approval pending · /pending" : "ready", ...session2.title ? { title: session2.title } : {}, automaticApprovals: options.yes === true }).catch((e) => {
941
985
  if (input.isClosed)
942
986
  return "/exit";
943
987
  if (e instanceof Error && e.name === "AbortError")
@@ -961,11 +1005,23 @@ Run ${run2.runId} · ${run2.status} · session ${session2.sessionId}
961
1005
  }
962
1006
  if (text === "/help" || text === "/help all")
963
1007
  process.stdout.write(formatConsoleHelp("service", text === "/help all"));
1008
+ else if (text === "/activity" || text === "/activity clear") {
1009
+ if (text.endsWith(" clear"))
1010
+ history.clear();
1011
+ process.stdout.write(history.render());
1012
+ } else if (text === "/queue clear") {
1013
+ input.clearQueue();
1014
+ process.stdout.write(`Queued tasks cleared.
1015
+ `);
1016
+ } else if (text === "/queue")
1017
+ process.stdout.write(input.queueSummary());
964
1018
  else if (text === "/sessions" || text.startsWith("/sessions "))
965
1019
  print(await list(text.slice(9).trim() || undefined));
966
1020
  else if (text === "/new") {
967
1021
  session2 = await create();
968
1022
  input.clearHistory();
1023
+ history.clear();
1024
+ seenMutations.clear();
969
1025
  process.stdout.write(`Session ${session2.sessionId}.
970
1026
  `);
971
1027
  } else if (text === "/resume" || text.startsWith("/resume ")) {
@@ -978,6 +1034,8 @@ Run ${run2.runId} · ${run2.status} · session ${session2.sessionId}
978
1034
  }
979
1035
  session2 = await getSession(id2);
980
1036
  input.clearHistory();
1037
+ history.clear();
1038
+ seenMutations.clear();
981
1039
  print(await currentRun());
982
1040
  } else if (text.startsWith("/rename ")) {
983
1041
  const r = await call({ method: "session.rename", sessionId: session2.sessionId, expectedRevision: session2.revision, idempotencyKey: key("rename"), title: text.slice(8) });
@@ -1,16 +1,63 @@
1
1
  import { z } from "zod";
2
2
  export declare const dependencyReadSchema: z.ZodObject<{
3
3
  package: z.ZodString;
4
+ action: z.ZodDefault<z.ZodEnum<{
5
+ list: "list";
6
+ read: "read";
7
+ search: "search";
8
+ }>>;
4
9
  file: z.ZodDefault<z.ZodString>;
10
+ path: z.ZodDefault<z.ZodString>;
11
+ query: z.ZodOptional<z.ZodString>;
12
+ recursive: z.ZodDefault<z.ZodBoolean>;
13
+ caseSensitive: z.ZodDefault<z.ZodBoolean>;
5
14
  startLine: z.ZodDefault<z.ZodNumber>;
15
+ limit: z.ZodDefault<z.ZodNumber>;
16
+ offset: z.ZodDefault<z.ZodNumber>;
6
17
  }, z.core.$strip>;
7
- /** Dedicated read-only boundary. No arbitrary dependency source, scripts, links,
8
- * nested packages or writes; exports are available through package.json. */
9
- export declare function readDependency(root: string, input: z.infer<typeof dependencyReadSchema>): Promise<{
18
+ type DependencyInput = z.input<typeof dependencyReadSchema>;
19
+ type DependencyReadResult = {
10
20
  package: string;
11
21
  file: string;
12
22
  startLine: number;
13
23
  content: string;
14
24
  digest: string;
15
25
  truncated: boolean;
16
- }>;
26
+ };
27
+ type DependencyPage = {
28
+ package: string;
29
+ path: string;
30
+ skippedFiles: number;
31
+ truncated: boolean;
32
+ nextOffset: number | null;
33
+ notice?: string;
34
+ };
35
+ type DependencyListResult = DependencyPage & {
36
+ action: "list";
37
+ entries: {
38
+ path: string;
39
+ type: "file" | "directory";
40
+ }[];
41
+ };
42
+ type DependencySearchResult = DependencyPage & {
43
+ action: "search";
44
+ matches: {
45
+ file: string;
46
+ line: number;
47
+ text: string;
48
+ }[];
49
+ };
50
+ type DependencyResult = DependencyReadResult | DependencyListResult | DependencySearchResult;
51
+ /** Dedicated read-only package boundary. Reads never execute source, follow links,
52
+ * enter nested dependencies or expose hidden files. Content reads are descriptor-bound. */
53
+ export declare function readDependency(root: string, input: DependencyInput & {
54
+ action?: "read";
55
+ }): Promise<DependencyReadResult>;
56
+ export declare function readDependency(root: string, input: DependencyInput & {
57
+ action: "list";
58
+ }): Promise<DependencyListResult>;
59
+ export declare function readDependency(root: string, input: DependencyInput & {
60
+ action: "search";
61
+ }): Promise<DependencySearchResult>;
62
+ export declare function readDependency(root: string, input: DependencyInput): Promise<DependencyResult>;
63
+ export {};
@@ -4,13 +4,13 @@ import { Workspace } from "../workspace/workspace.js";
4
4
  export declare const createExecutionEnvironmentTools: (workspace: Workspace, execution?: Extract<HarnessConfig["execution"], {
5
5
  backend: "oci";
6
6
  }>) => {
7
- run_environment_command: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
7
+ run_environment_command: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
8
8
  command: z.ZodEnum<{
9
9
  [x: string]: string;
10
10
  }> | z.ZodString;
11
11
  args: z.ZodDefault<z.ZodArray<z.ZodString>>;
12
12
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
13
- run_environment_batch: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
13
+ run_environment_batch: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
14
14
  commands: z.ZodArray<z.ZodObject<{
15
15
  command: z.ZodEnum<{
16
16
  [x: string]: string;
@@ -18,22 +18,22 @@ export declare const createExecutionEnvironmentTools: (workspace: Workspace, exe
18
18
  args: z.ZodDefault<z.ZodArray<z.ZodString>>;
19
19
  }, z.core.$strict>>;
20
20
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
21
- run_environment_shell?: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
21
+ run_environment_shell?: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
22
22
  script: z.ZodString;
23
23
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
24
- environment_status: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
25
- inspect_environment_patch: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
26
- apply_environment_patch: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
24
+ environment_status: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
25
+ inspect_environment_patch: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
26
+ apply_environment_patch: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
27
27
  patchId: z.ZodString;
28
28
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
29
- verify_and_apply_environment_patch: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
29
+ verify_and_apply_environment_patch: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
30
30
  patchId: z.ZodString;
31
31
  command: z.ZodEnum<{
32
32
  [x: string]: string;
33
33
  }> | z.ZodString;
34
34
  args: z.ZodDefault<z.ZodArray<z.ZodString>>;
35
35
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
36
- verify_and_apply_reviewed_edits: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
36
+ verify_and_apply_reviewed_edits: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
37
37
  changes: z.ZodArray<z.ZodObject<{
38
38
  path: z.ZodString;
39
39
  expectedDigest: z.ZodNullable<z.ZodString>;
@@ -1,37 +1,48 @@
1
1
  import { z } from "zod";
2
2
  import { Workspace } from "../workspace/workspace.js";
3
3
  export declare const createWorkspaceTools: (workspace: Workspace, allowedChecks: readonly string[]) => {
4
- read_dependency: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
4
+ read_dependency: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
5
5
  package: z.ZodString;
6
+ action: z.ZodDefault<z.ZodEnum<{
7
+ list: "list";
8
+ read: "read";
9
+ search: "search";
10
+ }>>;
6
11
  file: z.ZodDefault<z.ZodString>;
12
+ path: z.ZodDefault<z.ZodString>;
13
+ query: z.ZodOptional<z.ZodString>;
14
+ recursive: z.ZodDefault<z.ZodBoolean>;
15
+ caseSensitive: z.ZodDefault<z.ZodBoolean>;
7
16
  startLine: z.ZodDefault<z.ZodNumber>;
17
+ limit: z.ZodDefault<z.ZodNumber>;
18
+ offset: z.ZodDefault<z.ZodNumber>;
8
19
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
9
- list_files: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
20
+ list_files: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
10
21
  path: z.ZodDefault<z.ZodString>;
11
22
  limit: z.ZodDefault<z.ZodNumber>;
12
23
  includeDigests: z.ZodDefault<z.ZodBoolean>;
13
24
  cursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
14
25
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
15
- read_file: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
26
+ read_file: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
16
27
  path: z.ZodString;
17
28
  startLine: z.ZodDefault<z.ZodNumber>;
18
29
  endLine: z.ZodOptional<z.ZodNumber>;
19
30
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
20
- read_files: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
31
+ read_files: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
21
32
  files: z.ZodArray<z.ZodObject<{
22
33
  path: z.ZodString;
23
34
  startLine: z.ZodDefault<z.ZodNumber>;
24
35
  endLine: z.ZodOptional<z.ZodNumber>;
25
36
  }, z.core.$strip>>;
26
37
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
27
- search_files: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
38
+ search_files: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
28
39
  query: z.ZodString;
29
40
  path: z.ZodDefault<z.ZodString>;
30
41
  caseSensitive: z.ZodDefault<z.ZodBoolean>;
31
42
  limit: z.ZodDefault<z.ZodNumber>;
32
43
  cursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
33
44
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
34
- search_many: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
45
+ search_many: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
35
46
  queries: z.ZodArray<z.ZodObject<{
36
47
  query: z.ZodString;
37
48
  caseSensitive: z.ZodDefault<z.ZodBoolean>;
@@ -39,14 +50,14 @@ export declare const createWorkspaceTools: (workspace: Workspace, allowedChecks:
39
50
  path: z.ZodDefault<z.ZodString>;
40
51
  limitPerQuery: z.ZodDefault<z.ZodNumber>;
41
52
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
42
- propose_edits: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
53
+ propose_edits: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
43
54
  changes: z.ZodArray<z.ZodObject<{
44
55
  path: z.ZodString;
45
56
  expectedDigest: z.ZodNullable<z.ZodString>;
46
57
  content: z.ZodString;
47
58
  }, z.core.$strict>>;
48
59
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
49
- apply_patch: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
60
+ apply_patch: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
50
61
  proposalId: z.ZodString;
51
62
  changes: z.ZodArray<z.ZodObject<{
52
63
  path: z.ZodString;
@@ -54,37 +65,37 @@ export declare const createWorkspaceTools: (workspace: Workspace, allowedChecks:
54
65
  content: z.ZodString;
55
66
  }, z.core.$strict>>;
56
67
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
57
- apply_reviewed_replacement: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
68
+ apply_reviewed_replacement: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
58
69
  path: z.ZodString;
59
70
  expectedDigest: z.ZodString;
60
71
  oldText: z.ZodString;
61
72
  newText: z.ZodString;
62
73
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
63
- apply_reviewed_edits: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
74
+ apply_reviewed_edits: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
64
75
  changes: z.ZodArray<z.ZodObject<{
65
76
  path: z.ZodString;
66
77
  expectedDigest: z.ZodNullable<z.ZodString>;
67
78
  content: z.ZodString;
68
79
  }, z.core.$strict>>;
69
80
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
70
- move_file: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
81
+ move_file: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
71
82
  source: z.ZodString;
72
83
  destination: z.ZodString;
73
84
  expectedDigest: z.ZodString;
74
85
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
75
- quarantine_file: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
86
+ quarantine_file: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
76
87
  path: z.ZodString;
77
88
  expectedDigest: z.ZodString;
78
89
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
79
- restore_file: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
90
+ restore_file: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
80
91
  quarantineId: z.ZodString;
81
92
  destination: z.ZodOptional<z.ZodString>;
82
93
  expectedDigest: z.ZodOptional<z.ZodString>;
83
94
  }, z.core.$strict>, import("@zhivex-ai/core").JsonValue, unknown>;
84
- run_check: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{
95
+ run_check: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{
85
96
  check: z.ZodString;
86
97
  expectedScript: z.ZodString;
87
98
  }, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
88
- mutation_audit: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
89
- git_diff: import("@zhivex-ai/agents").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
99
+ mutation_audit: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
100
+ git_diff: import("@zhivex-ai/core").ToolDefinition<z.ZodObject<{}, z.core.$strip>, import("@zhivex-ai/core").JsonValue, unknown>;
90
101
  };