@zhivex-ai/harness 1.3.0-rc.3 → 1.3.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 (157) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +12 -10
  3. package/SECURITY.md +1 -1
  4. package/SUPPORT.md +4 -4
  5. package/contracts/engine-api.json +334 -0
  6. package/contracts/public-api.json +267 -1
  7. package/contracts/stable-api-signatures.json +43 -43
  8. package/dist/acp-cli.js +54 -18
  9. package/dist/approvals/approval-history.d.ts +22 -0
  10. package/dist/approvals/explicit-review.d.ts +24 -0
  11. package/dist/approvals/host-policy-identity.d.ts +3 -0
  12. package/dist/cli/arguments.d.ts +6 -2
  13. package/dist/cli/checkpoints.d.ts +230 -0
  14. package/dist/cli/cli-profiles.d.ts +4 -2
  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/terminal/terminal-ui.d.ts +4 -0
  20. package/dist/{cli-entry-xmf48p6a.js → cli-entry-1gfg3brj.js} +14921 -10692
  21. package/dist/cli-entry-bx3vjw7h.js +656 -0
  22. package/dist/{index-fvca1xea.js → cli-entry-d5788aay.js} +339 -58
  23. package/dist/{cli-qgwvtk0w.js → cli-etsmtst3.js} +918 -2222
  24. package/dist/cli.js +3 -5
  25. package/dist/client/acp-mcp-admission.d.ts +32 -0
  26. package/dist/client/acp-mcp-host.d.ts +19 -0
  27. package/dist/client/acp-mcp-session.d.ts +14 -0
  28. package/dist/client/acp-stdio.d.ts +2 -0
  29. package/dist/client/acp.d.ts +4 -1
  30. package/dist/client/adapter.d.ts +13 -1
  31. package/dist/client/json-contracts.d.ts +107 -4
  32. package/dist/client/local-service.d.ts +2 -0
  33. package/dist/client/protocol.d.ts +127 -1
  34. package/dist/client/service-events.d.ts +4 -0
  35. package/dist/compat/cli-options.d.ts +13 -1
  36. package/dist/compat/code-support.js +23 -87
  37. package/dist/{config-q32jm1e6.js → config-c002f06f.js} +1 -1
  38. package/dist/{config-6gtpxvjv.js → config-j3jga5wh.js} +3 -1
  39. package/dist/context/adaptive-compaction.d.ts +1 -0
  40. package/dist/context/compaction.d.ts +1 -1
  41. package/dist/context/request-measurements.d.ts +17 -0
  42. package/dist/context/request-projection.d.ts +10 -0
  43. package/dist/context/task-memory.d.ts +1 -0
  44. package/dist/engine/acp.d.ts +2 -0
  45. package/dist/engine/acp.js +197 -1
  46. package/dist/engine/client.js +11 -4
  47. package/dist/engine/desktop-providers-v1.d.ts +4 -0
  48. package/dist/engine/desktop-providers-v1.js +18 -0
  49. package/dist/engine/desktop-state-v1.d.ts +10 -0
  50. package/dist/engine/desktop-state-v1.js +168 -0
  51. package/dist/engine/index.d.ts +12 -0
  52. package/dist/engine/index.js +571 -71
  53. package/dist/engine/mcp-stdio-v1.d.ts +11 -0
  54. package/dist/engine/mcp-stdio-v1.js +108 -0
  55. package/dist/engine/models.d.ts +3 -0
  56. package/dist/engine/models.js +894 -0
  57. package/dist/engine/protocol.d.ts +1 -0
  58. package/dist/engine/protocol.js +24 -0
  59. package/dist/engine/service.js +12 -5
  60. package/dist/execution/acceptance-snapshot.d.ts +2 -0
  61. package/dist/execution/execution-environment.d.ts +10 -0
  62. package/dist/execution/mcp-oci-channel.d.ts +11 -0
  63. package/dist/execution/mcp-oci-server.d.ts +38 -0
  64. package/dist/execution/mcp-oci-workspace.d.ts +23 -0
  65. package/dist/execution/mcp-resource-recovery.d.ts +19 -0
  66. package/dist/execution/mcp-workspace-snapshot.d.ts +20 -0
  67. package/dist/hostile-repository-demo.js +3169 -1163
  68. package/dist/{index-f4sb0e2q.js → index-2jrdcj6b.js} +17 -2
  69. package/dist/{index-77h9qr5h.js → index-3ah1f369.js} +40 -10
  70. package/dist/{index-pgqz45fj.js → index-42gp2hy8.js} +197 -1091
  71. package/dist/{index-41fkzt91.js → index-4jw3tvy8.js} +10 -2
  72. package/dist/index-6m08wvab.js +1768 -0
  73. package/dist/index-8705zxpr.js +145 -0
  74. package/dist/{index-d0wrghff.js → index-8vm2m34s.js} +225 -1416
  75. package/dist/index-8zzhggxv.js +477 -0
  76. package/dist/index-a97bezbz.js +1073 -0
  77. package/dist/index-azmwjp95.js +1004 -0
  78. package/dist/{cli-entry-0mmeag20.js → index-gq9xagx2.js} +122 -836
  79. package/dist/index-h0mqx2ed.js +1373 -0
  80. package/dist/index-hnaxfpb5.js +5589 -0
  81. package/dist/{index-2aymdsqc.js → index-qfpz5y2v.js} +24 -0
  82. package/dist/{index-kfgt9yqq.js → index-w2sj0wkw.js} +33 -10
  83. package/dist/index-wg1sd3at.js +80 -0
  84. package/dist/index-xqxeypt5.js +888 -0
  85. package/dist/index-yb239ghk.js +961 -0
  86. package/dist/index-z0qxmkm2.js +3389 -0
  87. package/dist/index.js +85 -72
  88. package/dist/integrations/mcp-host-session.d.ts +26 -0
  89. package/dist/integrations/mcp-stdio-admission.d.ts +54 -0
  90. package/dist/integrations/mcp-stdio-client.d.ts +44 -0
  91. package/dist/integrations/mcp-stdio-framing.d.ts +18 -0
  92. package/dist/integrations/mcp-stdio-launch.d.ts +20 -0
  93. package/dist/integrations/mcp-stdio-session.d.ts +7 -0
  94. package/dist/integrations/mcp-stdio-tools.d.ts +12 -0
  95. package/dist/internal/desktop/catalog.d.ts +2 -0
  96. package/dist/internal/desktop/persistence.d.ts +2 -3
  97. package/dist/internal/desktop/providers.d.ts +1 -0
  98. package/dist/models/catalog.d.ts +2 -0
  99. package/dist/persistence/governance-context.d.ts +126 -0
  100. package/dist/persistence/governance-report.d.ts +299 -0
  101. package/dist/persistence/host-database-backup.d.ts +28 -0
  102. package/dist/persistence/mcp-execution-journal.d.ts +19 -0
  103. package/dist/persistence/mcp-reconciliation.d.ts +33 -0
  104. package/dist/persistence/mcp-resource-journal.d.ts +54 -0
  105. package/dist/persistence/workspace-checkpoints.d.ts +138 -0
  106. package/dist/providers/anthropic-continuation.d.ts +5 -0
  107. package/dist/providers/providers.d.ts +1 -1
  108. package/dist/providers/vertex-auth.d.ts +27 -0
  109. package/dist/runtime/delegation-contracts.d.ts +9 -0
  110. package/dist/runtime/delegation-correction.d.ts +9 -0
  111. package/dist/runtime/delegation-result.d.ts +73 -0
  112. package/dist/runtime/error-diagnostics.d.ts +86 -0
  113. package/dist/runtime/harness.d.ts +11 -1
  114. package/dist/runtime/policy-decisions.d.ts +66 -0
  115. package/dist/runtime/policy-inspection.d.ts +52 -0
  116. package/dist/runtime/provider-diagnostics.d.ts +1 -0
  117. package/dist/runtime/runtime-instructions.d.ts +8 -0
  118. package/dist/runtime/task-acceptance-checks.d.ts +103 -0
  119. package/dist/runtime/task-acceptance-delivery.d.ts +107 -0
  120. package/dist/runtime/task-acceptance-host.d.ts +20 -0
  121. package/dist/runtime/task-acceptance-record.d.ts +107 -0
  122. package/dist/runtime/task-acceptance-validation.d.ts +25 -0
  123. package/dist/runtime/task-acceptance.d.ts +47 -0
  124. package/dist/runtime/time-to-safe-fix.d.ts +83 -0
  125. package/dist/runtime/tool-policy-file.d.ts +23 -0
  126. package/dist/runtime/tool-policy-paths.d.ts +5 -0
  127. package/dist/runtime/tool-policy.d.ts +6 -0
  128. package/dist/service-cli.js +14 -7
  129. package/dist/{service-client-cli-gs78wrxe.js → service-client-cli-3365rfav.js} +307 -248
  130. package/dist/verify-historical-migrations.js +3134 -1129
  131. package/dist/workspace/path-policy.d.ts +4 -0
  132. package/dist/zhx.js +3 -5
  133. package/docs/ACP.md +14 -2
  134. package/docs/ANTHROPIC.md +33 -0
  135. package/docs/CLI.md +132 -0
  136. package/docs/CLIENT_PROTOCOL.md +45 -0
  137. package/docs/CODE_RELEASE.md +35 -18
  138. package/docs/ENGINE_API.md +216 -7
  139. package/docs/EXTENSIBILITY.md +46 -3
  140. package/docs/FIRST_USE.md +6 -6
  141. package/docs/LOCAL_SERVICE.md +13 -0
  142. package/docs/MCP_STDIO.md +20 -0
  143. package/docs/README.md +1 -0
  144. package/docs/STABILITY.md +4 -2
  145. package/docs/SUPPORT_MATRIX.md +1 -1
  146. package/docs/TOOL_POLICY.md +81 -0
  147. package/docs/VERTEX.md +50 -0
  148. package/docs/adr/0002-isolated-mcp-stdio.md +135 -0
  149. package/docs/fixtures/mcp-stdio-contract-v1.json +189 -0
  150. package/docs/support-matrix.json +2 -0
  151. package/evaluations/representative-assembly-matrix.json +46 -1
  152. package/evaluations/task-acceptance-routes.json +7 -0
  153. package/examples/README.md +3 -3
  154. package/package.json +43 -12
  155. package/dist/cli-entry-64pdp3k5.js +0 -17
  156. package/dist/cli-entry-7h9savv5.js +0 -375
  157. package/dist/index-5wjwe91x.js +0 -9434
@@ -0,0 +1,11 @@
1
+ /** Experimental, host-only OCI MCP API. Never load host policy from a workspace. */
2
+ export { createMcpStdioAdmissionAuthority, McpStdioAdmissionError } from '../integrations/mcp-stdio-admission.js';
3
+ export type { McpStdioLaunchProposal, McpStdioLaunchReceipt } from '../integrations/mcp-stdio-admission.js';
4
+ export { prepareMcpWorkspaceSnapshot, discardMcpWorkspaceSnapshot } from '../execution/mcp-workspace-snapshot.js';
5
+ export type { McpWorkspaceSnapshot } from '../execution/mcp-workspace-snapshot.js';
6
+ export { recoverDockerMcpResources } from '../execution/mcp-resource-recovery.js';
7
+ export { createMcpReconciliationAuthority } from '../persistence/mcp-reconciliation.js';
8
+ export type { McpReconciliationDecision, McpReconciliationReview } from '../persistence/mcp-reconciliation.js';
9
+ export type { HarnessIsolatedMcpSession } from '../integrations/mcp-host-session.js';
10
+ export type { IsolatedMcpLaunchOptions } from '../integrations/mcp-stdio-session.js';
11
+ export { launchIsolatedMcpSession } from '../integrations/mcp-stdio-session.js';
@@ -0,0 +1,108 @@
1
+ import {
2
+ McpStdioAdmissionError,
3
+ createMcpStdioAdmissionAuthority,
4
+ discardMcpWorkspaceSnapshot,
5
+ launchDockerMcpTools,
6
+ matchesMcpResourceScope,
7
+ mcpResourceOutputSchema,
8
+ mcpResourcePlanSchema,
9
+ prepareMcpWorkspaceSnapshot,
10
+ recoverDockerMcpResources
11
+ } from "../index-6m08wvab.js";
12
+ import"../index-azmwjp95.js";
13
+ import"../index-z0qxmkm2.js";
14
+ import"../index-yb239ghk.js";
15
+ import"../index-gq9xagx2.js";
16
+ import"../index-8705zxpr.js";
17
+ import"../index-xqxeypt5.js";
18
+ import"../index-1bx83sw4.js";
19
+ // src/persistence/mcp-reconciliation.ts
20
+ import { z } from "zod";
21
+ var digest = z.string().regex(/^[a-f0-9]{64}$/);
22
+ var identitySchema = z.object({
23
+ schemaVersion: z.literal(1),
24
+ kind: z.literal("isolated-mcp-call"),
25
+ proposalHash: digest,
26
+ argumentsHash: digest,
27
+ toolNameHash: digest
28
+ }).strict();
29
+ var decisionSchema = z.object({
30
+ toolCallId: z.string().regex(/^mcp_execution_[a-f0-9]{64}$/),
31
+ expectedRevision: z.number().int().nonnegative(),
32
+ outcome: z.enum(["effect_confirmed", "no_effect_confirmed"]),
33
+ evidenceDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/)
34
+ }).strict();
35
+ function createMcpReconciliationAuthority(options) {
36
+ const { store, runId, hostId, authorize } = options;
37
+ const scope = Object.freeze(structuredClone(options.scope));
38
+ if (!store.loadToolCall || !store.saveToolCall || !store.listToolCalls || !runId || !hostId || !scope.userId || !scope.tenantId) {
39
+ throw new Error("MCP reconciliation requires a scoped durable host authority.");
40
+ }
41
+ const load = store.loadToolCall.bind(store), save = store.saveToolCall.bind(store), list = store.listToolCalls.bind(store);
42
+ const read = async (decision) => {
43
+ const row = await load(runId, decision.toolCallId, scope);
44
+ if (!row || row.toolName !== "isolated_mcp_call" || row.revision !== decision.expectedRevision || !(row.status === "pending" || row.status === "running" || row.error?.message === "MCP_OUTCOME_UNKNOWN")) {
45
+ throw new Error("MCP reconciliation target is stale or has no unresolved outcome.");
46
+ }
47
+ const identity = identitySchema.parse(row.input);
48
+ const resources = (await list(runId, scope)).filter((entry) => entry.toolName === "isolated_mcp_resources");
49
+ if (!resources.length || resources.some((entry) => {
50
+ const plan = mcpResourcePlanSchema.parse(entry.input);
51
+ return !matchesMcpResourceScope(plan, runId, scope, hostId) || mcpResourceOutputSchema.parse(entry.output).phase !== "closed";
52
+ }))
53
+ throw new Error("MCP reconciliation requires confirmed resource cleanup.");
54
+ return { row, identity };
55
+ };
56
+ return Object.freeze({
57
+ async reconcile(input) {
58
+ const decision = Object.freeze(decisionSchema.parse(input));
59
+ const initial = await read(decision);
60
+ const review = Object.freeze({
61
+ ...decision,
62
+ runId,
63
+ scope,
64
+ proposalHash: initial.identity.proposalHash,
65
+ argumentsHash: initial.identity.argumentsHash,
66
+ toolNameHash: initial.identity.toolNameHash
67
+ });
68
+ if (await authorize(review) !== true)
69
+ throw new Error("MCP reconciliation was not authorized.");
70
+ const current = await read(decision);
71
+ if (JSON.stringify(current.identity) !== JSON.stringify(initial.identity))
72
+ throw new Error("MCP reconciliation identity changed.");
73
+ const now = Date.now();
74
+ await save({
75
+ ...current.row,
76
+ status: "failed",
77
+ error: { message: "MCP_OUTCOME_RECONCILED" },
78
+ completedAt: now,
79
+ updatedAt: now,
80
+ output: {
81
+ schemaVersion: 1,
82
+ kind: "isolated-mcp-reconciliation",
83
+ outcome: decision.outcome,
84
+ evidenceDigest: decision.evidenceDigest,
85
+ previousStatus: current.row.status,
86
+ previousError: current.row.error?.message ?? null,
87
+ reviewedRevision: decision.expectedRevision,
88
+ actor: scope.userId,
89
+ resolvedAt: now
90
+ }
91
+ }, { expectedRevision: decision.expectedRevision });
92
+ }
93
+ });
94
+ }
95
+ // src/integrations/mcp-stdio-session.ts
96
+ async function launchIsolatedMcpSession(options) {
97
+ const session = await launchDockerMcpTools(options);
98
+ return Object.freeze({ hostSession: session.hostSession, close: session.close });
99
+ }
100
+ export {
101
+ McpStdioAdmissionError,
102
+ createMcpReconciliationAuthority,
103
+ createMcpStdioAdmissionAuthority,
104
+ discardMcpWorkspaceSnapshot,
105
+ launchIsolatedMcpSession,
106
+ prepareMcpWorkspaceSnapshot,
107
+ recoverDockerMcpResources
108
+ };
@@ -0,0 +1,3 @@
1
+ /** Browser-safe model metadata. No credentials, transports, filesystem or processes. */
2
+ export { bundledModelCatalog, bundledDefaultModel, catalogModelSchema, modelCatalogSchema, catalogModels, modelDescription } from "../models/catalog.js";
3
+ export type { CatalogModel, ModelCatalog } from "../models/catalog.js";