@zhivex-ai/harness 1.2.0 → 1.3.0-rc.7

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 (164) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +9 -10
  3. package/contracts/engine-api.json +2921 -0
  4. package/contracts/public-api.json +267 -1
  5. package/contracts/stable-api-signatures.json +43 -43
  6. package/dist/acp-cli.js +137 -15002
  7. package/dist/approvals/approval-history.d.ts +22 -0
  8. package/dist/approvals/explicit-review.d.ts +24 -0
  9. package/dist/approvals/host-policy-identity.d.ts +3 -0
  10. package/dist/cli/arguments.d.ts +6 -2
  11. package/dist/cli/checkpoints.d.ts +230 -0
  12. package/dist/cli/cli-options.d.ts +2 -41
  13. package/dist/cli/cli-profiles.d.ts +4 -2
  14. package/dist/cli/cli-stream.d.ts +2 -167
  15. package/dist/cli/governance-report.d.ts +5 -0
  16. package/dist/cli/policy-decisions.d.ts +9 -0
  17. package/dist/cli/policy.d.ts +5 -0
  18. package/dist/cli/presentation.d.ts +3 -1
  19. package/dist/cli/run-document.d.ts +2 -91
  20. package/dist/cli/terminal/terminal-continuation.d.ts +2 -3
  21. package/dist/cli/terminal/terminal-ui.d.ts +4 -0
  22. package/dist/{cli-entry-c2f58zj2.js → cli-entry-ae7x44d4.js} +14969 -10731
  23. package/dist/{cli-entry-427869g9.js → cli-entry-d5788aay.js} +388 -47
  24. package/dist/cli-entry-ev76ezcd.js +656 -0
  25. package/dist/{cli-3jmy4h5h.js → cli-t7hrhayq.js} +918 -2223
  26. package/dist/cli.js +3 -5
  27. package/dist/client/acp-mcp-admission.d.ts +32 -0
  28. package/dist/client/acp-mcp-host.d.ts +19 -0
  29. package/dist/client/acp-mcp-session.d.ts +14 -0
  30. package/dist/client/acp-stdio.d.ts +2 -0
  31. package/dist/client/acp.d.ts +4 -1
  32. package/dist/client/adapter.d.ts +13 -1
  33. package/dist/client/continuation.d.ts +3 -0
  34. package/dist/client/json-contracts.d.ts +107 -4
  35. package/dist/client/local-service.d.ts +2 -0
  36. package/dist/client/protocol.d.ts +127 -1
  37. package/dist/client/run-document.d.ts +91 -0
  38. package/dist/client/service-events.d.ts +4 -0
  39. package/dist/client/stream.d.ts +167 -0
  40. package/dist/compat/cli-options.d.ts +53 -0
  41. package/dist/compat/code-support.d.ts +22 -0
  42. package/dist/compat/code-support.js +74 -0
  43. package/dist/{config-1k9t4jhh.js → config-c002f06f.js} +1 -1
  44. package/dist/config-j3jga5wh.js +61 -0
  45. package/dist/context/adaptive-compaction.d.ts +1 -0
  46. package/dist/context/compaction.d.ts +1 -1
  47. package/dist/context/request-measurements.d.ts +17 -0
  48. package/dist/context/request-projection.d.ts +10 -0
  49. package/dist/context/task-memory.d.ts +1 -0
  50. package/dist/engine/acp.d.ts +6 -0
  51. package/dist/engine/acp.js +205 -0
  52. package/dist/engine/client.d.ts +6 -0
  53. package/dist/engine/client.js +28 -0
  54. package/dist/engine/desktop-providers-v1.d.ts +4 -0
  55. package/dist/engine/desktop-providers-v1.js +18 -0
  56. package/dist/engine/desktop-state-v1.d.ts +10 -0
  57. package/dist/engine/desktop-state-v1.js +168 -0
  58. package/dist/engine/index.d.ts +73 -0
  59. package/dist/engine/index.js +977 -0
  60. package/dist/engine/mcp-stdio-v1.d.ts +11 -0
  61. package/dist/engine/mcp-stdio-v1.js +108 -0
  62. package/dist/engine/models.d.ts +3 -0
  63. package/dist/engine/models.js +894 -0
  64. package/dist/engine/protocol.d.ts +7 -0
  65. package/dist/engine/protocol.js +182 -0
  66. package/dist/engine/service.d.ts +5 -0
  67. package/dist/engine/service.js +28 -0
  68. package/dist/execution/acceptance-snapshot.d.ts +2 -0
  69. package/dist/execution/execution-environment.d.ts +10 -0
  70. package/dist/execution/mcp-oci-channel.d.ts +11 -0
  71. package/dist/execution/mcp-oci-server.d.ts +38 -0
  72. package/dist/execution/mcp-oci-workspace.d.ts +23 -0
  73. package/dist/execution/mcp-resource-recovery.d.ts +19 -0
  74. package/dist/execution/mcp-workspace-snapshot.d.ts +20 -0
  75. package/dist/hostile-repository-demo.js +3368 -1304
  76. package/dist/index-1bx83sw4.js +4 -0
  77. package/dist/index-2gz7jv7g.js +549 -0
  78. package/dist/{cli-entry-b1mfvmxe.js → index-2jrdcj6b.js} +72 -115
  79. package/dist/index-3ah1f369.js +356 -0
  80. package/dist/index-42gp2hy8.js +1555 -0
  81. package/dist/index-4jw3tvy8.js +301 -0
  82. package/dist/index-8705zxpr.js +145 -0
  83. package/dist/index-8vm2m34s.js +2080 -0
  84. package/dist/index-8zzhggxv.js +477 -0
  85. package/dist/index-a97bezbz.js +1073 -0
  86. package/dist/index-gq9xagx2.js +1343 -0
  87. package/dist/index-h0mqx2ed.js +1373 -0
  88. package/dist/index-jgrx804e.js +5589 -0
  89. package/dist/index-qfpz5y2v.js +174 -0
  90. package/dist/index-t60rva31.js +1004 -0
  91. package/dist/index-wg1sd3at.js +80 -0
  92. package/dist/index-xqxeypt5.js +888 -0
  93. package/dist/index-yb239ghk.js +961 -0
  94. package/dist/index-z0qxmkm2.js +3389 -0
  95. package/dist/index-z4e8d0ph.js +1768 -0
  96. package/dist/index.js +251 -18649
  97. package/dist/integrations/mcp-host-session.d.ts +26 -0
  98. package/dist/integrations/mcp-stdio-admission.d.ts +54 -0
  99. package/dist/integrations/mcp-stdio-client.d.ts +44 -0
  100. package/dist/integrations/mcp-stdio-framing.d.ts +18 -0
  101. package/dist/integrations/mcp-stdio-launch.d.ts +20 -0
  102. package/dist/integrations/mcp-stdio-session.d.ts +7 -0
  103. package/dist/integrations/mcp-stdio-tools.d.ts +12 -0
  104. package/dist/internal/desktop/catalog.d.ts +2 -0
  105. package/dist/internal/desktop/persistence.d.ts +2 -3
  106. package/dist/internal/desktop/providers.d.ts +1 -0
  107. package/dist/models/catalog.d.ts +2 -0
  108. package/dist/persistence/governance-context.d.ts +126 -0
  109. package/dist/persistence/governance-report.d.ts +299 -0
  110. package/dist/persistence/host-database-backup.d.ts +28 -0
  111. package/dist/persistence/mcp-execution-journal.d.ts +19 -0
  112. package/dist/persistence/mcp-reconciliation.d.ts +33 -0
  113. package/dist/persistence/mcp-resource-journal.d.ts +54 -0
  114. package/dist/persistence/workspace-checkpoints.d.ts +138 -0
  115. package/dist/providers/anthropic-continuation.d.ts +5 -0
  116. package/dist/providers/providers.d.ts +1 -1
  117. package/dist/providers/vertex-auth.d.ts +27 -0
  118. package/dist/runtime/delegation-contracts.d.ts +9 -0
  119. package/dist/runtime/delegation-correction.d.ts +9 -0
  120. package/dist/runtime/delegation-result.d.ts +73 -0
  121. package/dist/runtime/error-diagnostics.d.ts +86 -0
  122. package/dist/runtime/harness.d.ts +11 -1
  123. package/dist/runtime/policy-decisions.d.ts +66 -0
  124. package/dist/runtime/policy-inspection.d.ts +52 -0
  125. package/dist/runtime/provider-diagnostics.d.ts +1 -0
  126. package/dist/runtime/runtime-instructions.d.ts +8 -0
  127. package/dist/runtime/task-acceptance-checks.d.ts +103 -0
  128. package/dist/runtime/task-acceptance-delivery.d.ts +107 -0
  129. package/dist/runtime/task-acceptance-host.d.ts +20 -0
  130. package/dist/runtime/task-acceptance-record.d.ts +107 -0
  131. package/dist/runtime/task-acceptance-validation.d.ts +25 -0
  132. package/dist/runtime/task-acceptance.d.ts +47 -0
  133. package/dist/runtime/time-to-safe-fix.d.ts +83 -0
  134. package/dist/runtime/tool-policy-file.d.ts +23 -0
  135. package/dist/runtime/tool-policy-paths.d.ts +5 -0
  136. package/dist/runtime/tool-policy.d.ts +6 -0
  137. package/dist/service-cli.js +19 -14504
  138. package/dist/{service-client-cli-yx56n0hc.js → service-client-cli-kns4mf57.js} +307 -248
  139. package/dist/verify-historical-migrations.js +3314 -1251
  140. package/dist/workspace/path-policy.d.ts +4 -0
  141. package/dist/zhx.js +3 -5
  142. package/docs/ACP.md +14 -2
  143. package/docs/ANTHROPIC.md +33 -0
  144. package/docs/CLI.md +132 -0
  145. package/docs/CLIENT_PROTOCOL.md +45 -0
  146. package/docs/CODE_RELEASE.md +93 -0
  147. package/docs/ENGINE_API.md +319 -0
  148. package/docs/EXTENSIBILITY.md +46 -3
  149. package/docs/FIRST_USE.md +6 -6
  150. package/docs/LOCAL_SERVICE.md +13 -0
  151. package/docs/MCP_STDIO.md +20 -0
  152. package/docs/README.md +6 -0
  153. package/docs/STABILITY.md +9 -1
  154. package/docs/SUPPORT_MATRIX.md +1 -1
  155. package/docs/TOOL_POLICY.md +81 -0
  156. package/docs/VERTEX.md +50 -0
  157. package/docs/adr/0002-isolated-mcp-stdio.md +135 -0
  158. package/docs/fixtures/mcp-stdio-contract-v1.json +189 -0
  159. package/docs/support-matrix.json +2 -0
  160. package/evaluations/representative-assembly-matrix.json +64 -1
  161. package/evaluations/task-acceptance-routes.json +7 -0
  162. package/examples/README.md +1 -1
  163. package/package.json +74 -12
  164. package/dist/cli-entry-64pdp3k5.js +0 -17
@@ -0,0 +1,174 @@
1
+ // src/client/stream.ts
2
+ var CLI_JSON_SCHEMA_VERSION = 1;
3
+ var CLI_EVENT_SCHEMA_VERSION = 1;
4
+ var streamEventDocument = (event, sequence = 0) => {
5
+ if (!Number.isSafeInteger(sequence) || sequence < 0) {
6
+ throw new Error("JSONL event sequence must be a non-negative integer.");
7
+ }
8
+ const base = {
9
+ schemaVersion: CLI_EVENT_SCHEMA_VERSION,
10
+ kind: "run-event",
11
+ sequence,
12
+ type: event.type
13
+ };
14
+ switch (event.type) {
15
+ case "text-delta":
16
+ return { ...base, textDelta: event.textDelta };
17
+ case "tool-call":
18
+ return { ...base, toolCallId: event.toolCall.id, toolName: event.toolCall.name };
19
+ case "tool-result":
20
+ return {
21
+ ...base,
22
+ toolCallId: event.toolResult.toolCallId,
23
+ toolName: event.toolResult.toolName,
24
+ isError: event.toolResult.isError
25
+ };
26
+ case "tool-approval-request":
27
+ case "agent-approval-request":
28
+ return {
29
+ ...base,
30
+ approvalRequestId: event.approval.id,
31
+ approvalKind: event.approval.kind ?? "provider",
32
+ toolName: event.approval.name
33
+ };
34
+ case "agent-approval-resolved":
35
+ return {
36
+ ...base,
37
+ approvalRequestId: event.approval.approvalRequestId,
38
+ approved: event.approval.approve
39
+ };
40
+ case "provider-data":
41
+ return { ...base, provider: event.provider };
42
+ case "image-generation":
43
+ return {
44
+ ...base,
45
+ provider: event.provider,
46
+ partial: event.partial,
47
+ ...event.id ? { id: event.id } : {},
48
+ ...event.index !== undefined ? { index: event.index } : {}
49
+ };
50
+ case "finish":
51
+ return {
52
+ ...base,
53
+ ...event.finishReason ? { finishReason: event.finishReason } : {},
54
+ ...event.usage ? { usage: event.usage } : {}
55
+ };
56
+ case "error":
57
+ return { ...base, error: "Provider stream failed." };
58
+ case "agent-run-start":
59
+ return { ...base, currentStep: event.currentStep, maxSteps: event.maxSteps };
60
+ case "agent-step-start":
61
+ return { ...base, stepIndex: event.stepIndex };
62
+ case "agent-step-finish":
63
+ return {
64
+ ...base,
65
+ stepIndex: event.step.index,
66
+ status: event.step.status,
67
+ toolCalls: event.step.toolResults.length
68
+ };
69
+ case "agent-compaction":
70
+ return {
71
+ ...base,
72
+ compactionId: event.compaction.id,
73
+ reasons: event.compaction.reasons,
74
+ messageCountBefore: event.compaction.messageCountBefore,
75
+ messageCountAfter: event.compaction.messageCountAfter
76
+ };
77
+ case "agent-run-finish":
78
+ return {
79
+ ...base,
80
+ runId: event.state.runId,
81
+ status: event.status,
82
+ provider: event.state.provider,
83
+ model: event.state.modelId
84
+ };
85
+ }
86
+ };
87
+ var serializeStreamEvent = (event, sequence = 0) => JSON.stringify(streamEventDocument(event, sequence));
88
+ var streamResultDocument = (result, sequence = 0) => {
89
+ if (!Number.isSafeInteger(sequence) || sequence < 0) {
90
+ throw new Error("JSONL result sequence must be a non-negative integer.");
91
+ }
92
+ return {
93
+ schemaVersion: CLI_EVENT_SCHEMA_VERSION,
94
+ kind: "run-stream-result",
95
+ sequence,
96
+ runId: result.runId,
97
+ status: result.status,
98
+ provider: result.provider,
99
+ model: result.model,
100
+ steps: result.steps,
101
+ toolCalls: result.toolCalls,
102
+ pendingApprovals: (result.pendingApprovals ?? []).map((approval) => ({
103
+ id: approval.id,
104
+ kind: approval.kind,
105
+ name: approval.name,
106
+ ...approval.childRunId ? { childRunId: approval.childRunId } : {},
107
+ ...approval.childAgentId ? { childAgentId: approval.childAgentId } : {}
108
+ })),
109
+ children: (result.children ?? []).map((child) => ({
110
+ runId: child.runId,
111
+ status: child.status
112
+ }))
113
+ };
114
+ };
115
+ var serializeStreamResult = (result, sequence = 0) => JSON.stringify(streamResultDocument(result, sequence));
116
+
117
+ // src/client/protocol.ts
118
+ import { z } from "zod";
119
+ var HARNESS_CLIENT_PROTOCOL_VERSION = 1;
120
+ var id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/);
121
+ var revision = z.number().int().nonnegative().safe();
122
+ var scoped = { projectId: id };
123
+ var session = { ...scoped, sessionId: id };
124
+ var run = { ...session, runId: id };
125
+ var mutation = { idempotencyKey: id };
126
+ var checkpoint = { ...session, checkpointId: z.string().uuid() };
127
+ var restore = { ...session, operationId: z.string().uuid() };
128
+ var fileDigest = z.string().regex(/^sha256:[a-f0-9]{64}$/);
129
+ var harnessClientCommandSchema = z.discriminatedUnion("method", [
130
+ z.object({ method: z.literal("project.get"), ...scoped }).strict(),
131
+ z.object({ method: z.literal("policy.get"), ...scoped }).strict(),
132
+ z.object({ method: z.literal("session.list"), ...scoped, search: z.string().max(256).optional() }).strict(),
133
+ z.object({ method: z.literal("session.create"), ...scoped, ...mutation, title: z.string().max(256).optional() }).strict(),
134
+ z.object({ method: z.literal("session.get"), ...session }).strict(),
135
+ z.object({ method: z.literal("session.rename"), ...session, ...mutation, expectedRevision: revision, title: z.string().max(256) }).strict(),
136
+ z.object({ method: z.literal("checkpoint.list"), ...session }).strict(),
137
+ z.object({ method: z.literal("checkpoint.inspect"), ...checkpoint }).strict(),
138
+ z.object({
139
+ method: z.literal("checkpoint.capture"),
140
+ ...session,
141
+ ...mutation,
142
+ expectedRevision: revision,
143
+ turnId: id,
144
+ paths: z.array(z.string().min(1).max(1024)).min(1).max(20)
145
+ }).strict(),
146
+ z.object({
147
+ method: z.literal("restore.prepare"),
148
+ ...checkpoint,
149
+ ...mutation,
150
+ expectedRevision: revision,
151
+ expected: z.record(z.string().min(1).max(1024), fileDigest).refine((value) => Object.keys(value).length >= 1 && Object.keys(value).length <= 20)
152
+ }).strict(),
153
+ z.object({ method: z.literal("restore.get"), ...restore }).strict(),
154
+ z.object({ method: z.literal("restore.apply"), ...restore, ...mutation, expectedRevision: revision, reviewedProposalId: fileDigest }).strict(),
155
+ z.object({ method: z.literal("restore.recoverFork"), ...restore, ...mutation, expectedRevision: revision, forkSessionId: id }).strict(),
156
+ z.object({ method: z.literal("run.start"), ...session, ...mutation, expectedRevision: revision, prompt: z.string().min(1).max(64 * 1024) }).strict(),
157
+ z.object({ method: z.literal("run.get"), ...run, includeReview: z.boolean().optional(), includeDiff: z.boolean().optional(), decisionOffset: z.number().int().min(0).max(512).optional() }).strict(),
158
+ z.object({
159
+ method: z.literal("approval.resolve"),
160
+ ...run,
161
+ ...mutation,
162
+ expectedRevision: revision,
163
+ decisions: z.array(z.object({ approvalId: z.string().min(1).max(256), digest: z.string().regex(/^[a-f0-9]{64}$/), approve: z.boolean() }).strict()).min(1).max(64)
164
+ }).strict(),
165
+ z.object({ method: z.literal("run.cancel"), ...run, ...mutation, expectedRevision: revision }).strict()
166
+ ]);
167
+ var harnessClientRequestSchema = z.object({
168
+ protocolVersion: z.literal(HARNESS_CLIENT_PROTOCOL_VERSION),
169
+ requestId: id,
170
+ connectionId: id,
171
+ command: harnessClientCommandSchema
172
+ }).strict();
173
+
174
+ export { CLI_JSON_SCHEMA_VERSION, CLI_EVENT_SCHEMA_VERSION, streamEventDocument, serializeStreamEvent, streamResultDocument, serializeStreamResult, HARNESS_CLIENT_PROTOCOL_VERSION, harnessClientCommandSchema, harnessClientRequestSchema };