@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.
- package/CHANGELOG.md +64 -0
- package/README.md +9 -10
- package/contracts/engine-api.json +2921 -0
- package/contracts/public-api.json +267 -1
- package/contracts/stable-api-signatures.json +43 -43
- package/dist/acp-cli.js +137 -15002
- package/dist/approvals/approval-history.d.ts +22 -0
- package/dist/approvals/explicit-review.d.ts +24 -0
- package/dist/approvals/host-policy-identity.d.ts +3 -0
- package/dist/cli/arguments.d.ts +6 -2
- package/dist/cli/checkpoints.d.ts +230 -0
- package/dist/cli/cli-options.d.ts +2 -41
- package/dist/cli/cli-profiles.d.ts +4 -2
- package/dist/cli/cli-stream.d.ts +2 -167
- package/dist/cli/governance-report.d.ts +5 -0
- package/dist/cli/policy-decisions.d.ts +9 -0
- package/dist/cli/policy.d.ts +5 -0
- package/dist/cli/presentation.d.ts +3 -1
- package/dist/cli/run-document.d.ts +2 -91
- package/dist/cli/terminal/terminal-continuation.d.ts +2 -3
- package/dist/cli/terminal/terminal-ui.d.ts +4 -0
- package/dist/{cli-entry-c2f58zj2.js → cli-entry-ae7x44d4.js} +14969 -10731
- package/dist/{cli-entry-427869g9.js → cli-entry-d5788aay.js} +388 -47
- package/dist/cli-entry-ev76ezcd.js +656 -0
- package/dist/{cli-3jmy4h5h.js → cli-t7hrhayq.js} +918 -2223
- package/dist/cli.js +3 -5
- package/dist/client/acp-mcp-admission.d.ts +32 -0
- package/dist/client/acp-mcp-host.d.ts +19 -0
- package/dist/client/acp-mcp-session.d.ts +14 -0
- package/dist/client/acp-stdio.d.ts +2 -0
- package/dist/client/acp.d.ts +4 -1
- package/dist/client/adapter.d.ts +13 -1
- package/dist/client/continuation.d.ts +3 -0
- package/dist/client/json-contracts.d.ts +107 -4
- package/dist/client/local-service.d.ts +2 -0
- package/dist/client/protocol.d.ts +127 -1
- package/dist/client/run-document.d.ts +91 -0
- package/dist/client/service-events.d.ts +4 -0
- package/dist/client/stream.d.ts +167 -0
- package/dist/compat/cli-options.d.ts +53 -0
- package/dist/compat/code-support.d.ts +22 -0
- package/dist/compat/code-support.js +74 -0
- package/dist/{config-1k9t4jhh.js → config-c002f06f.js} +1 -1
- package/dist/config-j3jga5wh.js +61 -0
- package/dist/context/adaptive-compaction.d.ts +1 -0
- package/dist/context/compaction.d.ts +1 -1
- package/dist/context/request-measurements.d.ts +17 -0
- package/dist/context/request-projection.d.ts +10 -0
- package/dist/context/task-memory.d.ts +1 -0
- package/dist/engine/acp.d.ts +6 -0
- package/dist/engine/acp.js +205 -0
- package/dist/engine/client.d.ts +6 -0
- package/dist/engine/client.js +28 -0
- package/dist/engine/desktop-providers-v1.d.ts +4 -0
- package/dist/engine/desktop-providers-v1.js +18 -0
- package/dist/engine/desktop-state-v1.d.ts +10 -0
- package/dist/engine/desktop-state-v1.js +168 -0
- package/dist/engine/index.d.ts +73 -0
- package/dist/engine/index.js +977 -0
- package/dist/engine/mcp-stdio-v1.d.ts +11 -0
- package/dist/engine/mcp-stdio-v1.js +108 -0
- package/dist/engine/models.d.ts +3 -0
- package/dist/engine/models.js +894 -0
- package/dist/engine/protocol.d.ts +7 -0
- package/dist/engine/protocol.js +182 -0
- package/dist/engine/service.d.ts +5 -0
- package/dist/engine/service.js +28 -0
- package/dist/execution/acceptance-snapshot.d.ts +2 -0
- package/dist/execution/execution-environment.d.ts +10 -0
- package/dist/execution/mcp-oci-channel.d.ts +11 -0
- package/dist/execution/mcp-oci-server.d.ts +38 -0
- package/dist/execution/mcp-oci-workspace.d.ts +23 -0
- package/dist/execution/mcp-resource-recovery.d.ts +19 -0
- package/dist/execution/mcp-workspace-snapshot.d.ts +20 -0
- package/dist/hostile-repository-demo.js +3368 -1304
- package/dist/index-1bx83sw4.js +4 -0
- package/dist/index-2gz7jv7g.js +549 -0
- package/dist/{cli-entry-b1mfvmxe.js → index-2jrdcj6b.js} +72 -115
- package/dist/index-3ah1f369.js +356 -0
- package/dist/index-42gp2hy8.js +1555 -0
- package/dist/index-4jw3tvy8.js +301 -0
- package/dist/index-8705zxpr.js +145 -0
- package/dist/index-8vm2m34s.js +2080 -0
- package/dist/index-8zzhggxv.js +477 -0
- package/dist/index-a97bezbz.js +1073 -0
- package/dist/index-gq9xagx2.js +1343 -0
- package/dist/index-h0mqx2ed.js +1373 -0
- package/dist/index-jgrx804e.js +5589 -0
- package/dist/index-qfpz5y2v.js +174 -0
- package/dist/index-t60rva31.js +1004 -0
- package/dist/index-wg1sd3at.js +80 -0
- package/dist/index-xqxeypt5.js +888 -0
- package/dist/index-yb239ghk.js +961 -0
- package/dist/index-z0qxmkm2.js +3389 -0
- package/dist/index-z4e8d0ph.js +1768 -0
- package/dist/index.js +251 -18649
- package/dist/integrations/mcp-host-session.d.ts +26 -0
- package/dist/integrations/mcp-stdio-admission.d.ts +54 -0
- package/dist/integrations/mcp-stdio-client.d.ts +44 -0
- package/dist/integrations/mcp-stdio-framing.d.ts +18 -0
- package/dist/integrations/mcp-stdio-launch.d.ts +20 -0
- package/dist/integrations/mcp-stdio-session.d.ts +7 -0
- package/dist/integrations/mcp-stdio-tools.d.ts +12 -0
- package/dist/internal/desktop/catalog.d.ts +2 -0
- package/dist/internal/desktop/persistence.d.ts +2 -3
- package/dist/internal/desktop/providers.d.ts +1 -0
- package/dist/models/catalog.d.ts +2 -0
- package/dist/persistence/governance-context.d.ts +126 -0
- package/dist/persistence/governance-report.d.ts +299 -0
- package/dist/persistence/host-database-backup.d.ts +28 -0
- package/dist/persistence/mcp-execution-journal.d.ts +19 -0
- package/dist/persistence/mcp-reconciliation.d.ts +33 -0
- package/dist/persistence/mcp-resource-journal.d.ts +54 -0
- package/dist/persistence/workspace-checkpoints.d.ts +138 -0
- package/dist/providers/anthropic-continuation.d.ts +5 -0
- package/dist/providers/providers.d.ts +1 -1
- package/dist/providers/vertex-auth.d.ts +27 -0
- package/dist/runtime/delegation-contracts.d.ts +9 -0
- package/dist/runtime/delegation-correction.d.ts +9 -0
- package/dist/runtime/delegation-result.d.ts +73 -0
- package/dist/runtime/error-diagnostics.d.ts +86 -0
- package/dist/runtime/harness.d.ts +11 -1
- package/dist/runtime/policy-decisions.d.ts +66 -0
- package/dist/runtime/policy-inspection.d.ts +52 -0
- package/dist/runtime/provider-diagnostics.d.ts +1 -0
- package/dist/runtime/runtime-instructions.d.ts +8 -0
- package/dist/runtime/task-acceptance-checks.d.ts +103 -0
- package/dist/runtime/task-acceptance-delivery.d.ts +107 -0
- package/dist/runtime/task-acceptance-host.d.ts +20 -0
- package/dist/runtime/task-acceptance-record.d.ts +107 -0
- package/dist/runtime/task-acceptance-validation.d.ts +25 -0
- package/dist/runtime/task-acceptance.d.ts +47 -0
- package/dist/runtime/time-to-safe-fix.d.ts +83 -0
- package/dist/runtime/tool-policy-file.d.ts +23 -0
- package/dist/runtime/tool-policy-paths.d.ts +5 -0
- package/dist/runtime/tool-policy.d.ts +6 -0
- package/dist/service-cli.js +19 -14504
- package/dist/{service-client-cli-yx56n0hc.js → service-client-cli-kns4mf57.js} +307 -248
- package/dist/verify-historical-migrations.js +3314 -1251
- package/dist/workspace/path-policy.d.ts +4 -0
- package/dist/zhx.js +3 -5
- package/docs/ACP.md +14 -2
- package/docs/ANTHROPIC.md +33 -0
- package/docs/CLI.md +132 -0
- package/docs/CLIENT_PROTOCOL.md +45 -0
- package/docs/CODE_RELEASE.md +93 -0
- package/docs/ENGINE_API.md +319 -0
- package/docs/EXTENSIBILITY.md +46 -3
- package/docs/FIRST_USE.md +6 -6
- package/docs/LOCAL_SERVICE.md +13 -0
- package/docs/MCP_STDIO.md +20 -0
- package/docs/README.md +6 -0
- package/docs/STABILITY.md +9 -1
- package/docs/SUPPORT_MATRIX.md +1 -1
- package/docs/TOOL_POLICY.md +81 -0
- package/docs/VERTEX.md +50 -0
- package/docs/adr/0002-isolated-mcp-stdio.md +135 -0
- package/docs/fixtures/mcp-stdio-contract-v1.json +189 -0
- package/docs/support-matrix.json +2 -0
- package/evaluations/representative-assembly-matrix.json +64 -1
- package/evaluations/task-acceptance-routes.json +7 -0
- package/examples/README.md +1 -1
- package/package.json +74 -12
- 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 };
|