@tangle-network/agent-interface 0.39.0 → 0.41.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.
package/README.md CHANGED
@@ -5,6 +5,42 @@ agents, the sidecar, and provider adapters: capabilities, agent profiles,
5
5
  message parts, and harness descriptors. This is the canonical home for those
6
6
  shapes; higher-level packages import from here rather than redefining them.
7
7
 
8
+ ## Durable runs, interactions, and context
9
+
10
+ `AgentRunControlRef` identifies a retained run without depending on a live JavaScript object.
11
+ `RuntimeEventEnvelope` adds stable run, event, sequence, cursor, and timestamp fields around the existing `StreamEvent` union, and its runtime schema validates every canonical event variant.
12
+
13
+ An environment advertises `interactions` only when it can originate and answer typed requests.
14
+ `AgentEnvironmentCapabilitiesSchema` strictly validates the complete capability document at runtime, including all-or-nothing durable branching declarations.
15
+ Optional provider methods must be absent when their capability is false so clients cannot expose an action the provider has denied.
16
+ The capability names supported request kinds, answer field types, response scopes, secret answers, concurrency, replay, and response idempotency.
17
+ `AgentEnvironment.respondToInteraction()` and `AgentSession.respondToInteraction()` bind each response to its run, environment, optional provider session, interaction, and caller operation identifier.
18
+ Their acknowledgement distinguishes acceptance, exact prior resolution, conflicting prior resolution, expiry, cancellation, unknown interaction, unknown run, binding mismatch, and transport failure.
19
+ Acknowledgements deliberately contain no answer value or answer hash because both can disclose low-entropy secret answers.
20
+ Response data is accepted only after `validateInteractionResponse()` checks it against the exact outstanding request, rejects undeclared fields, and enforces the request's permission scopes.
21
+ An omitted permission scope permits only a one-time response; session and persistent grants must be explicit.
22
+ The legacy `SdkProviderAdapter.respondToInteraction(response)` remains source-compatible, while new adapters use `respondToInteractionCommand(command)` for exact binding and durable acknowledgement.
23
+
24
+ Portable conversation transfer reuses `BackendMessage` and `InputPart` rather than defining another message format.
25
+ Planning is represented separately from execution: a plan embeds the immutable source, lists every message and part decision, names the destination runner, contains the exact derived context, and carries a canonical digest.
26
+ Every plan request has a canonical request digest, and every ready, over-limit, or unsupported result repeats the request identifier and digest.
27
+ `portableContextPlanResultMatchesRequest()` verifies that the result belongs to the exact request, the returned source and destination match, and a ready plan stays within its requested token limit.
28
+ Partial input or output always requires explicit user or policy acceptance, even when no individual message was transformed.
29
+ `ContextTransferRequest` binds an operation identifier to that accepted plan, while `ContextTransferResult` distinguishes first admission, exact replay, changed-input conflict, and unknown transport outcome.
30
+ `contextTransferResultMatchesRequest()` checks the operation identifier and request digest for every outcome before a caller accepts, retries, or reports it.
31
+ Its successful receipt repeats the exact destination and carries the provider's session-creation operation and timestamp, identifying the one fresh provider session that admitted the context.
32
+ `NativeContextBoundaryProof` is the separate path for same-session continuation and includes the exact run identity.
33
+ Continuation is valid only when the provider proves the recorded token, revision, digest, or message boundary, sends zero copied history, and applies retry or changed-input conflict semantics.
34
+
35
+ Providers that support recoverable workspace copies expose `workspaceBranching` and set `branching.retrySafe`, `branching.lookup`, and `branching.cleanup` together.
36
+ Checkpoint and fork requests bind an idempotency key to a canonical request digest.
37
+ Every returned resource repeats and validates that identity, lookups recover remote success after caller restart, changed-input key reuse returns a conflict, and cleanup binds its acknowledgement to the exact provider and target.
38
+ A checkpoint with dependent forks returns `in_use` plus the blocking environment identifiers and remains recoverable until those forks are destroyed.
39
+ The older `checkpoint()` and `fork()` methods remain source-compatible for providers that have not yet implemented recovery semantics, but clients must not present them as durable workspace branching.
40
+
41
+ All new wire values have exported Zod schemas on the package root.
42
+ Omitting `interactions` or leaving the three durable branching flags false is the compatible declaration for existing providers.
43
+
8
44
  ## Install
9
45
 
10
46
  ```bash
@@ -166,6 +166,8 @@ export declare const agentCandidateExecutionSchema: z.ZodObject<{
166
166
  openclaw: "openclaw";
167
167
  amp: "amp";
168
168
  "factory-droids": "factory-droids";
169
+ forge: "forge";
170
+ cursor: "cursor";
169
171
  acp: "acp";
170
172
  "cli-base": "cli-base";
171
173
  }>;
@@ -74,6 +74,8 @@ export declare const agentCandidateProfilePlanMaterialSchema: z.ZodObject<{
74
74
  openclaw: "openclaw";
75
75
  amp: "amp";
76
76
  "factory-droids": "factory-droids";
77
+ forge: "forge";
78
+ cursor: "cursor";
77
79
  acp: "acp";
78
80
  "cli-base": "cli-base";
79
81
  }>;
@@ -331,6 +333,8 @@ export declare const agentCandidateExecutionPlanMaterialSchema: z.ZodObject<{
331
333
  openclaw: "openclaw";
332
334
  amp: "amp";
333
335
  "factory-droids": "factory-droids";
336
+ forge: "forge";
337
+ cursor: "cursor";
334
338
  acp: "acp";
335
339
  "cli-base": "cli-base";
336
340
  }>;
@@ -519,7 +523,7 @@ export declare const agentCandidateProfilePlanEvidenceSchema: z.ZodObject<{
519
523
  digest: z.ZodType<`sha256:${string}`, unknown, z.core.$ZodTypeInternals<`sha256:${string}`, unknown>>;
520
524
  material: z.ZodType<{
521
525
  sourceProfileDigest: `sha256:${string}`;
522
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
526
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
523
527
  files: {
524
528
  relPath: string;
525
529
  mode: number;
@@ -543,7 +547,7 @@ export declare const agentCandidateProfilePlanEvidenceSchema: z.ZodObject<{
543
547
  } | undefined;
544
548
  }, unknown, z.core.$ZodTypeInternals<{
545
549
  sourceProfileDigest: `sha256:${string}`;
546
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
550
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
547
551
  files: {
548
552
  relPath: string;
549
553
  mode: number;
@@ -592,7 +596,7 @@ export declare const agentCandidateProfileActivationSchema: z.ZodObject<{
592
596
  digest: `sha256:${string}`;
593
597
  material: {
594
598
  sourceProfileDigest: `sha256:${string}`;
595
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
599
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
596
600
  files: {
597
601
  relPath: string;
598
602
  mode: number;
@@ -639,7 +643,7 @@ export declare const agentCandidateProfileActivationSchema: z.ZodObject<{
639
643
  digest: `sha256:${string}`;
640
644
  material: {
641
645
  sourceProfileDigest: `sha256:${string}`;
642
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
646
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
643
647
  files: {
644
648
  relPath: string;
645
649
  mode: number;
@@ -719,7 +723,7 @@ export declare const agentCandidateExecutionPlanEvidenceSchema: z.ZodObject<{
719
723
  targetWorkspace: "candidate" | "task";
720
724
  mountPaths: string[];
721
725
  };
722
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
726
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
723
727
  harnessVersion: string;
724
728
  instructionDelivery: {
725
729
  kind: "argv-append";
@@ -962,7 +966,7 @@ export declare const agentCandidateExecutionPlanEvidenceSchema: z.ZodObject<{
962
966
  targetWorkspace: "candidate" | "task";
963
967
  mountPaths: string[];
964
968
  };
965
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
969
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
966
970
  harnessVersion: string;
967
971
  instructionDelivery: {
968
972
  kind: "argv-append";
@@ -50,6 +50,8 @@ export declare const agentCandidateProfileSchema: z.ZodObject<{
50
50
  openclaw: "openclaw";
51
51
  amp: "amp";
52
52
  "factory-droids": "factory-droids";
53
+ forge: "forge";
54
+ cursor: "cursor";
53
55
  acp: "acp";
54
56
  "cli-base": "cli-base";
55
57
  }>>;
@@ -41,6 +41,8 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
41
41
  openclaw: "openclaw";
42
42
  amp: "amp";
43
43
  "factory-droids": "factory-droids";
44
+ forge: "forge";
45
+ cursor: "cursor";
44
46
  acp: "acp";
45
47
  "cli-base": "cli-base";
46
48
  }>>;
@@ -589,6 +591,8 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
589
591
  openclaw: "openclaw";
590
592
  amp: "amp";
591
593
  "factory-droids": "factory-droids";
594
+ forge: "forge";
595
+ cursor: "cursor";
592
596
  acp: "acp";
593
597
  "cli-base": "cli-base";
594
598
  }>;
@@ -864,6 +868,8 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
864
868
  openclaw: "openclaw";
865
869
  amp: "amp";
866
870
  "factory-droids": "factory-droids";
871
+ forge: "forge";
872
+ cursor: "cursor";
867
873
  acp: "acp";
868
874
  "cli-base": "cli-base";
869
875
  }>>;
@@ -1412,6 +1418,8 @@ export declare const agentCandidateExperimentSchema: z.ZodObject<{
1412
1418
  openclaw: "openclaw";
1413
1419
  amp: "amp";
1414
1420
  "factory-droids": "factory-droids";
1421
+ forge: "forge";
1422
+ cursor: "cursor";
1415
1423
  acp: "acp";
1416
1424
  "cli-base": "cli-base";
1417
1425
  }>;
@@ -2049,7 +2057,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2049
2057
  digest: `sha256:${string}`;
2050
2058
  material: {
2051
2059
  sourceProfileDigest: `sha256:${string}`;
2052
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
2060
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
2053
2061
  files: {
2054
2062
  relPath: string;
2055
2063
  mode: number;
@@ -2096,7 +2104,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2096
2104
  digest: `sha256:${string}`;
2097
2105
  material: {
2098
2106
  sourceProfileDigest: `sha256:${string}`;
2099
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
2107
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
2100
2108
  files: {
2101
2109
  relPath: string;
2102
2110
  mode: number;
@@ -2176,7 +2184,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2176
2184
  targetWorkspace: "candidate" | "task";
2177
2185
  mountPaths: string[];
2178
2186
  };
2179
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
2187
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
2180
2188
  harnessVersion: string;
2181
2189
  instructionDelivery: {
2182
2190
  kind: "argv-append";
@@ -2419,7 +2427,7 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2419
2427
  targetWorkspace: "candidate" | "task";
2420
2428
  mountPaths: string[];
2421
2429
  };
2422
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
2430
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
2423
2431
  harnessVersion: string;
2424
2432
  instructionDelivery: {
2425
2433
  kind: "argv-append";
@@ -2726,6 +2734,8 @@ export declare const candidateExecutionEvidenceSchema: z.ZodObject<{
2726
2734
  openclaw: "openclaw";
2727
2735
  amp: "amp";
2728
2736
  "factory-droids": "factory-droids";
2737
+ forge: "forge";
2738
+ cursor: "cursor";
2729
2739
  acp: "acp";
2730
2740
  "cli-base": "cli-base";
2731
2741
  }>;
@@ -3589,6 +3599,8 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
3589
3599
  openclaw: "openclaw";
3590
3600
  amp: "amp";
3591
3601
  "factory-droids": "factory-droids";
3602
+ forge: "forge";
3603
+ cursor: "cursor";
3592
3604
  acp: "acp";
3593
3605
  "cli-base": "cli-base";
3594
3606
  }>>;
@@ -4137,6 +4149,8 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
4137
4149
  openclaw: "openclaw";
4138
4150
  amp: "amp";
4139
4151
  "factory-droids": "factory-droids";
4152
+ forge: "forge";
4153
+ cursor: "cursor";
4140
4154
  acp: "acp";
4141
4155
  "cli-base": "cli-base";
4142
4156
  }>;
@@ -4412,6 +4426,8 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
4412
4426
  openclaw: "openclaw";
4413
4427
  amp: "amp";
4414
4428
  "factory-droids": "factory-droids";
4429
+ forge: "forge";
4430
+ cursor: "cursor";
4415
4431
  acp: "acp";
4416
4432
  "cli-base": "cli-base";
4417
4433
  }>>;
@@ -4960,6 +4976,8 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
4960
4976
  openclaw: "openclaw";
4961
4977
  amp: "amp";
4962
4978
  "factory-droids": "factory-droids";
4979
+ forge: "forge";
4980
+ cursor: "cursor";
4963
4981
  acp: "acp";
4964
4982
  "cli-base": "cli-base";
4965
4983
  }>;
@@ -5598,7 +5616,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5598
5616
  digest: `sha256:${string}`;
5599
5617
  material: {
5600
5618
  sourceProfileDigest: `sha256:${string}`;
5601
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
5619
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
5602
5620
  files: {
5603
5621
  relPath: string;
5604
5622
  mode: number;
@@ -5645,7 +5663,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5645
5663
  digest: `sha256:${string}`;
5646
5664
  material: {
5647
5665
  sourceProfileDigest: `sha256:${string}`;
5648
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
5666
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
5649
5667
  files: {
5650
5668
  relPath: string;
5651
5669
  mode: number;
@@ -5725,7 +5743,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5725
5743
  targetWorkspace: "candidate" | "task";
5726
5744
  mountPaths: string[];
5727
5745
  };
5728
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
5746
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
5729
5747
  harnessVersion: string;
5730
5748
  instructionDelivery: {
5731
5749
  kind: "argv-append";
@@ -5968,7 +5986,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
5968
5986
  targetWorkspace: "candidate" | "task";
5969
5987
  mountPaths: string[];
5970
5988
  };
5971
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
5989
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
5972
5990
  harnessVersion: string;
5973
5991
  instructionDelivery: {
5974
5992
  kind: "argv-append";
@@ -6275,6 +6293,8 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6275
6293
  openclaw: "openclaw";
6276
6294
  amp: "amp";
6277
6295
  "factory-droids": "factory-droids";
6296
+ forge: "forge";
6297
+ cursor: "cursor";
6278
6298
  acp: "acp";
6279
6299
  "cli-base": "cli-base";
6280
6300
  }>;
@@ -6976,7 +6996,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
6976
6996
  digest: `sha256:${string}`;
6977
6997
  material: {
6978
6998
  sourceProfileDigest: `sha256:${string}`;
6979
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
6999
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
6980
7000
  files: {
6981
7001
  relPath: string;
6982
7002
  mode: number;
@@ -7023,7 +7043,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7023
7043
  digest: `sha256:${string}`;
7024
7044
  material: {
7025
7045
  sourceProfileDigest: `sha256:${string}`;
7026
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
7046
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
7027
7047
  files: {
7028
7048
  relPath: string;
7029
7049
  mode: number;
@@ -7103,7 +7123,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7103
7123
  targetWorkspace: "candidate" | "task";
7104
7124
  mountPaths: string[];
7105
7125
  };
7106
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
7126
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
7107
7127
  harnessVersion: string;
7108
7128
  instructionDelivery: {
7109
7129
  kind: "argv-append";
@@ -7346,7 +7366,7 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7346
7366
  targetWorkspace: "candidate" | "task";
7347
7367
  mountPaths: string[];
7348
7368
  };
7349
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
7369
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
7350
7370
  harnessVersion: string;
7351
7371
  instructionDelivery: {
7352
7372
  kind: "argv-append";
@@ -7653,6 +7673,8 @@ export declare const agentImprovementMeasuredComparisonSchema: z.ZodObject<{
7653
7673
  openclaw: "openclaw";
7654
7674
  amp: "amp";
7655
7675
  "factory-droids": "factory-droids";
7676
+ forge: "forge";
7677
+ cursor: "cursor";
7656
7678
  acp: "acp";
7657
7679
  "cli-base": "cli-base";
7658
7680
  }>;
@@ -8546,6 +8568,8 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
8546
8568
  openclaw: "openclaw";
8547
8569
  amp: "amp";
8548
8570
  "factory-droids": "factory-droids";
8571
+ forge: "forge";
8572
+ cursor: "cursor";
8549
8573
  acp: "acp";
8550
8574
  "cli-base": "cli-base";
8551
8575
  }>>;
@@ -9094,6 +9118,8 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
9094
9118
  openclaw: "openclaw";
9095
9119
  amp: "amp";
9096
9120
  "factory-droids": "factory-droids";
9121
+ forge: "forge";
9122
+ cursor: "cursor";
9097
9123
  acp: "acp";
9098
9124
  "cli-base": "cli-base";
9099
9125
  }>;
@@ -9369,6 +9395,8 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
9369
9395
  openclaw: "openclaw";
9370
9396
  amp: "amp";
9371
9397
  "factory-droids": "factory-droids";
9398
+ forge: "forge";
9399
+ cursor: "cursor";
9372
9400
  acp: "acp";
9373
9401
  "cli-base": "cli-base";
9374
9402
  }>>;
@@ -9917,6 +9945,8 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
9917
9945
  openclaw: "openclaw";
9918
9946
  amp: "amp";
9919
9947
  "factory-droids": "factory-droids";
9948
+ forge: "forge";
9949
+ cursor: "cursor";
9920
9950
  acp: "acp";
9921
9951
  "cli-base": "cli-base";
9922
9952
  }>;
@@ -10555,7 +10585,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10555
10585
  digest: `sha256:${string}`;
10556
10586
  material: {
10557
10587
  sourceProfileDigest: `sha256:${string}`;
10558
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
10588
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
10559
10589
  files: {
10560
10590
  relPath: string;
10561
10591
  mode: number;
@@ -10602,7 +10632,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10602
10632
  digest: `sha256:${string}`;
10603
10633
  material: {
10604
10634
  sourceProfileDigest: `sha256:${string}`;
10605
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
10635
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
10606
10636
  files: {
10607
10637
  relPath: string;
10608
10638
  mode: number;
@@ -10682,7 +10712,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10682
10712
  targetWorkspace: "candidate" | "task";
10683
10713
  mountPaths: string[];
10684
10714
  };
10685
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
10715
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
10686
10716
  harnessVersion: string;
10687
10717
  instructionDelivery: {
10688
10718
  kind: "argv-append";
@@ -10925,7 +10955,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
10925
10955
  targetWorkspace: "candidate" | "task";
10926
10956
  mountPaths: string[];
10927
10957
  };
10928
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
10958
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
10929
10959
  harnessVersion: string;
10930
10960
  instructionDelivery: {
10931
10961
  kind: "argv-append";
@@ -11232,6 +11262,8 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11232
11262
  openclaw: "openclaw";
11233
11263
  amp: "amp";
11234
11264
  "factory-droids": "factory-droids";
11265
+ forge: "forge";
11266
+ cursor: "cursor";
11235
11267
  acp: "acp";
11236
11268
  "cli-base": "cli-base";
11237
11269
  }>;
@@ -11933,7 +11965,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11933
11965
  digest: `sha256:${string}`;
11934
11966
  material: {
11935
11967
  sourceProfileDigest: `sha256:${string}`;
11936
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
11968
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
11937
11969
  files: {
11938
11970
  relPath: string;
11939
11971
  mode: number;
@@ -11980,7 +12012,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
11980
12012
  digest: `sha256:${string}`;
11981
12013
  material: {
11982
12014
  sourceProfileDigest: `sha256:${string}`;
11983
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
12015
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
11984
12016
  files: {
11985
12017
  relPath: string;
11986
12018
  mode: number;
@@ -12060,7 +12092,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12060
12092
  targetWorkspace: "candidate" | "task";
12061
12093
  mountPaths: string[];
12062
12094
  };
12063
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
12095
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
12064
12096
  harnessVersion: string;
12065
12097
  instructionDelivery: {
12066
12098
  kind: "argv-append";
@@ -12303,7 +12335,7 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12303
12335
  targetWorkspace: "candidate" | "task";
12304
12336
  mountPaths: string[];
12305
12337
  };
12306
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
12338
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
12307
12339
  harnessVersion: string;
12308
12340
  instructionDelivery: {
12309
12341
  kind: "argv-append";
@@ -12610,6 +12642,8 @@ export declare const agentImprovementProposalSchema: z.ZodObject<{
12610
12642
  openclaw: "openclaw";
12611
12643
  amp: "amp";
12612
12644
  "factory-droids": "factory-droids";
12645
+ forge: "forge";
12646
+ cursor: "cursor";
12613
12647
  acp: "acp";
12614
12648
  "cli-base": "cli-base";
12615
12649
  }>;
@@ -196,7 +196,7 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
196
196
  digest: `sha256:${string}`;
197
197
  material: {
198
198
  sourceProfileDigest: `sha256:${string}`;
199
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
199
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
200
200
  files: {
201
201
  relPath: string;
202
202
  mode: number;
@@ -243,7 +243,7 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
243
243
  digest: `sha256:${string}`;
244
244
  material: {
245
245
  sourceProfileDigest: `sha256:${string}`;
246
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
246
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
247
247
  files: {
248
248
  relPath: string;
249
249
  mode: number;
@@ -323,7 +323,7 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
323
323
  targetWorkspace: "candidate" | "task";
324
324
  mountPaths: string[];
325
325
  };
326
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
326
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
327
327
  harnessVersion: string;
328
328
  instructionDelivery: {
329
329
  kind: "argv-append";
@@ -566,7 +566,7 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
566
566
  targetWorkspace: "candidate" | "task";
567
567
  mountPaths: string[];
568
568
  };
569
- harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "acp" | "cli-base";
569
+ harness: "claude-code" | "nanoclaw" | "codex" | "opencode" | "kimi-code" | "pi" | "gemini" | "hermes" | "openclaw" | "amp" | "factory-droids" | "forge" | "cursor" | "acp" | "cli-base";
570
570
  harnessVersion: string;
571
571
  instructionDelivery: {
572
572
  kind: "argv-append";
@@ -873,6 +873,8 @@ export declare const agentCandidateMaterializationReceiptSchema: z.ZodObject<{
873
873
  openclaw: "openclaw";
874
874
  amp: "amp";
875
875
  "factory-droids": "factory-droids";
876
+ forge: "forge";
877
+ cursor: "cursor";
876
878
  acp: "acp";
877
879
  "cli-base": "cli-base";
878
880
  }>;
@@ -45,6 +45,8 @@ export declare const agentCandidateBundleSchema: z.ZodObject<{
45
45
  openclaw: "openclaw";
46
46
  amp: "amp";
47
47
  "factory-droids": "factory-droids";
48
+ forge: "forge";
49
+ cursor: "cursor";
48
50
  acp: "acp";
49
51
  "cli-base": "cli-base";
50
52
  }>>;
@@ -593,6 +595,8 @@ export declare const agentCandidateBundleSchema: z.ZodObject<{
593
595
  openclaw: "openclaw";
594
596
  amp: "amp";
595
597
  "factory-droids": "factory-droids";
598
+ forge: "forge";
599
+ cursor: "cursor";
596
600
  acp: "acp";
597
601
  "cli-base": "cli-base";
598
602
  }>;
@@ -238,6 +238,8 @@ export declare const agentExecutionPreparationReceiptSchema: z.ZodObject<{
238
238
  openclaw: "openclaw";
239
239
  amp: "amp";
240
240
  "factory-droids": "factory-droids";
241
+ forge: "forge";
242
+ cursor: "cursor";
241
243
  acp: "acp";
242
244
  "cli-base": "cli-base";
243
245
  }>;
@@ -0,0 +1,9 @@
1
+ import type { AgentProfile } from "./agent-profile.js";
2
+ /**
3
+ * Detach, validate, and recursively freeze one AgentProfile at an intake boundary.
4
+ *
5
+ * The returned value is exactly the existing schema output: this function adds no
6
+ * defaults and applies no provider, model, or execution policy. Values outside the
7
+ * existing canonical profile JSON domain fail instead of becoming mutable state.
8
+ */
9
+ export declare function snapshotAgentProfile(value: unknown): AgentProfile;
@@ -0,0 +1,24 @@
1
+ import { canonicalAgentProfileValue } from "./agent-profile-canonical.js";
2
+ import { agentProfileSchema } from "./profile-schema.js";
3
+ /**
4
+ * Detach, validate, and recursively freeze one AgentProfile at an intake boundary.
5
+ *
6
+ * The returned value is exactly the existing schema output: this function adds no
7
+ * defaults and applies no provider, model, or execution policy. Values outside the
8
+ * existing canonical profile JSON domain fail instead of becoming mutable state.
9
+ */
10
+ export function snapshotAgentProfile(value) {
11
+ const parsed = agentProfileSchema.parse(structuredClone(value));
12
+ canonicalAgentProfileValue(parsed);
13
+ return deepFreeze(parsed);
14
+ }
15
+ function deepFreeze(value, seen = new Set()) {
16
+ if (value === null || typeof value !== "object" || seen.has(value)) {
17
+ return value;
18
+ }
19
+ seen.add(value);
20
+ for (const child of Object.values(value)) {
21
+ deepFreeze(child, seen);
22
+ }
23
+ return Object.freeze(value);
24
+ }