@tangle-network/agent-interface 0.37.0 → 0.38.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.
@@ -0,0 +1,203 @@
1
+ import { z } from "zod";
2
+ import { canonicalCandidateDigest, isCanonicalJsonValue, isWellFormedUnicode, looksLikeCredential, omitTopLevelDigest, sha256DigestSchema, } from "./agent-candidate-schema-common.js";
3
+ export const AGENT_WORKSPACE_LEASE_PHASES = [
4
+ "copy-ready",
5
+ "workspace-sealed",
6
+ "execution-bound",
7
+ "destroying",
8
+ "cleanup-failed",
9
+ "destroyed",
10
+ ];
11
+ const controlCharacterPattern = /[\u0000-\u001f\u007f]/;
12
+ const publicIdentifierSchema = z
13
+ .string()
14
+ .min(1)
15
+ .max(500)
16
+ .refine((value) => value.trim().length > 0 &&
17
+ isWellFormedUnicode(value) &&
18
+ !controlCharacterPattern.test(value) &&
19
+ !looksLikeCredential(value), "public workspace identity cannot carry credential-like material");
20
+ const publicLocatorSchema = z
21
+ .string()
22
+ .min(1)
23
+ .max(16_384)
24
+ .refine((value) => value.trim().length > 0 &&
25
+ isWellFormedUnicode(value) &&
26
+ !controlCharacterPattern.test(value) &&
27
+ !looksLikeCredential(value), "workspace locator must be public, well-formed text");
28
+ const publicCleanupErrorSchema = z
29
+ .string()
30
+ .min(1)
31
+ .max(2_000)
32
+ .refine((value) => value.trim().length > 0 &&
33
+ isWellFormedUnicode(value) &&
34
+ !controlCharacterPattern.test(value) &&
35
+ !looksLikeCredential(value), "workspace cleanup error must be sanitized public text");
36
+ const timestampSchema = z
37
+ .number()
38
+ .int()
39
+ .nonnegative()
40
+ .max(Number.MAX_SAFE_INTEGER);
41
+ export const agentWorkspaceLeasePhaseSchema = z.enum(AGENT_WORKSPACE_LEASE_PHASES);
42
+ export const agentWorkspaceSourceSnapshotPolicySchema = z.strictObject({
43
+ kind: z.literal("provider-declared"),
44
+ name: publicIdentifierSchema,
45
+ version: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
46
+ digest: sha256DigestSchema,
47
+ });
48
+ export const agentWorkspaceAllocationIdentitySchema = z.strictObject({
49
+ provider: publicIdentifierSchema,
50
+ root: publicLocatorSchema,
51
+ identityDigest: sha256DigestSchema,
52
+ });
53
+ const agentWorkspaceLeaseRecordFields = {
54
+ kind: z.literal("agent-workspace-lease"),
55
+ schemaVersion: z.literal(1),
56
+ phase: agentWorkspaceLeasePhaseSchema,
57
+ leaseId: publicIdentifierSchema,
58
+ ownerId: publicIdentifierSchema,
59
+ workspace: agentWorkspaceAllocationIdentitySchema,
60
+ isolation: z.enum(["per-run", "shared"]),
61
+ sourceSnapshotDigest: sha256DigestSchema,
62
+ sourceSnapshotPolicy: agentWorkspaceSourceSnapshotPolicySchema,
63
+ preparedWorkspaceDigest: sha256DigestSchema.optional(),
64
+ profileActivationDigest: sha256DigestSchema.optional(),
65
+ executionPreparationDigest: sha256DigestSchema.optional(),
66
+ createdAtMs: timestampSchema,
67
+ updatedAtMs: timestampSchema,
68
+ expiresAtMs: timestampSchema,
69
+ cleanupAttempts: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
70
+ cleanupError: publicCleanupErrorSchema.optional(),
71
+ };
72
+ const rawAgentWorkspaceLeaseRecordMaterialSchema = z
73
+ .strictObject(agentWorkspaceLeaseRecordFields)
74
+ .superRefine((record, context) => {
75
+ validateAgentWorkspaceLeaseState(record, context);
76
+ if (!isCanonicalJsonValue(record)) {
77
+ context.addIssue({
78
+ code: "custom",
79
+ message: "workspace lease material must contain only RFC 8785 JSON values",
80
+ });
81
+ }
82
+ })
83
+ .transform((record) => record);
84
+ export const agentWorkspaceLeaseRecordMaterialSchema = rawAgentWorkspaceLeaseRecordMaterialSchema;
85
+ export const agentWorkspaceLeaseRecordSchema = z
86
+ .strictObject({
87
+ ...agentWorkspaceLeaseRecordFields,
88
+ digest: sha256DigestSchema,
89
+ })
90
+ .superRefine((record, context) => {
91
+ validateAgentWorkspaceLeaseState(record, context);
92
+ if (!isCanonicalJsonValue(record)) {
93
+ context.addIssue({
94
+ code: "custom",
95
+ message: "workspace lease record must contain only RFC 8785 JSON values",
96
+ });
97
+ }
98
+ else if (canonicalCandidateDigest(omitTopLevelDigest(record)) !== record.digest) {
99
+ context.addIssue({
100
+ code: "custom",
101
+ path: ["digest"],
102
+ message: "workspace lease record digest is invalid",
103
+ });
104
+ }
105
+ })
106
+ .transform((record) => record);
107
+ /** Canonical public identity; private token/state fields cannot enter its schema. */
108
+ export function canonicalAgentWorkspaceLeaseRecordDigest(material) {
109
+ return canonicalCandidateDigest(agentWorkspaceLeaseRecordMaterialSchema.parse(material));
110
+ }
111
+ /** Build and self-hash one phase-valid public workspace lease record. */
112
+ export function buildAgentWorkspaceLeaseRecord(material) {
113
+ const parsed = agentWorkspaceLeaseRecordMaterialSchema.parse(material);
114
+ return agentWorkspaceLeaseRecordSchema.parse({
115
+ ...parsed,
116
+ digest: canonicalCandidateDigest(parsed),
117
+ });
118
+ }
119
+ function validateAgentWorkspaceLeaseState(record, context) {
120
+ if (record.updatedAtMs < record.createdAtMs) {
121
+ context.addIssue({
122
+ code: "custom",
123
+ path: ["updatedAtMs"],
124
+ message: "workspace lease update cannot precede creation",
125
+ });
126
+ }
127
+ if (record.expiresAtMs <= record.createdAtMs) {
128
+ context.addIssue({
129
+ code: "custom",
130
+ path: ["expiresAtMs"],
131
+ message: "workspace lease expiry must follow creation",
132
+ });
133
+ }
134
+ const hasPrepared = record.preparedWorkspaceDigest !== undefined;
135
+ const hasActivation = record.profileActivationDigest !== undefined;
136
+ const hasExecution = record.executionPreparationDigest !== undefined;
137
+ if (hasPrepared !== hasActivation) {
138
+ context.addIssue({
139
+ code: "custom",
140
+ message: "prepared workspace and profile activation evidence must appear together",
141
+ });
142
+ }
143
+ if (hasExecution && (!hasPrepared || !hasActivation)) {
144
+ context.addIssue({
145
+ code: "custom",
146
+ path: ["executionPreparationDigest"],
147
+ message: "execution binding requires sealed workspace evidence",
148
+ });
149
+ }
150
+ const active = record.phase === "copy-ready" ||
151
+ record.phase === "workspace-sealed" ||
152
+ record.phase === "execution-bound";
153
+ if (active && record.cleanupAttempts !== 0) {
154
+ context.addIssue({
155
+ code: "custom",
156
+ path: ["cleanupAttempts"],
157
+ message: "active workspace phases cannot have cleanup attempts",
158
+ });
159
+ }
160
+ if (!active && record.cleanupAttempts < 1) {
161
+ context.addIssue({
162
+ code: "custom",
163
+ path: ["cleanupAttempts"],
164
+ message: "cleanup workspace phases require at least one cleanup attempt",
165
+ });
166
+ }
167
+ if (record.phase === "copy-ready" && (hasPrepared || hasExecution)) {
168
+ context.addIssue({
169
+ code: "custom",
170
+ message: "copy-ready workspace cannot carry preparation evidence",
171
+ });
172
+ }
173
+ if (record.phase === "workspace-sealed" &&
174
+ (!hasPrepared || !hasActivation || hasExecution)) {
175
+ context.addIssue({
176
+ code: "custom",
177
+ message: "workspace-sealed phase requires preparation evidence without execution binding",
178
+ });
179
+ }
180
+ if (record.phase === "execution-bound" &&
181
+ (!hasPrepared || !hasActivation || !hasExecution)) {
182
+ context.addIssue({
183
+ code: "custom",
184
+ message: "execution-bound phase requires complete preparation evidence",
185
+ });
186
+ }
187
+ if (record.phase === "cleanup-failed") {
188
+ if (record.cleanupError === undefined) {
189
+ context.addIssue({
190
+ code: "custom",
191
+ path: ["cleanupError"],
192
+ message: "cleanup-failed phase requires a sanitized error",
193
+ });
194
+ }
195
+ }
196
+ else if (record.cleanupError !== undefined) {
197
+ context.addIssue({
198
+ code: "custom",
199
+ path: ["cleanupError"],
200
+ message: "cleanup error is valid only in cleanup-failed phase",
201
+ });
202
+ }
203
+ }
@@ -1,4 +1,4 @@
1
- import type { ReasoningEffort } from "./agent-profile.js";
1
+ import { type ReasoningEffort } from "./agent-profile.js";
2
2
  import type { HarnessType } from "./harness.js";
3
3
  /**
4
4
  * The unified harness capability layer — the single source of truth for:
@@ -1,3 +1,4 @@
1
+ import { REASONING_EFFORTS, } from "./agent-profile.js";
1
2
  /**
2
3
  * The unified harness capability layer — the single source of truth for:
3
4
  * 1. harness ↔ model compatibility (which models a harness can run), and
@@ -15,15 +16,7 @@
15
16
  * caller supplies.
16
17
  */
17
18
  /** low → high. `none` = thinking off; `ultracode` = max (claude-code mode). */
18
- export const reasoningLadder = [
19
- "none",
20
- "minimal",
21
- "low",
22
- "medium",
23
- "high",
24
- "xhigh",
25
- "ultracode",
26
- ];
19
+ export const reasoningLadder = REASONING_EFFORTS;
27
20
  // ── Harness ↔ model compatibility ────────────────────────────────────────────
28
21
  /**
29
22
  * Provider prefixes a harness is vendor-locked to (canonical-id prefix, e.g. `anthropic`, `openai`).
package/dist/index.d.ts CHANGED
@@ -623,6 +623,10 @@ export * from "./agent-profile-improvement.js";
623
623
  export * from "./agent-profile-improvement-schema.js";
624
624
  export * from "./agent-execution-limits.js";
625
625
  export * from "./agent-profile.js";
626
+ export * from "./agent-profile-activation.js";
627
+ export * from "./agent-profile-materialization.js";
628
+ export * from "./agent-execution-preparation.js";
629
+ export * from "./agent-workspace-lease.js";
626
630
  export * from "./certified-context.js";
627
631
  export * from "./profile-diff.js";
628
632
  export * from "./harness.js";
package/dist/index.js CHANGED
@@ -135,6 +135,10 @@ export * from "./agent-profile-improvement.js";
135
135
  export * from "./agent-profile-improvement-schema.js";
136
136
  export * from "./agent-execution-limits.js";
137
137
  export * from "./agent-profile.js";
138
+ export * from "./agent-profile-activation.js";
139
+ export * from "./agent-profile-materialization.js";
140
+ export * from "./agent-execution-preparation.js";
141
+ export * from "./agent-workspace-lease.js";
138
142
  export * from "./certified-context.js";
139
143
  export * from "./profile-diff.js";
140
144
  export * from "./harness.js";
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { AgentProfile, AgentProfileMcpServer } from "./agent-profile.js";
2
+ import { type AgentProfile, type AgentProfileMcpServer } from "./agent-profile.js";
3
3
  import type { AgentProfileDiff } from "./profile-diff.js";
4
4
  import { type SandboxSizePreset } from "./sandbox-size.js";
5
5
  export declare const agentProfilePermissionValueSchema: z.ZodEnum<{
@@ -11,11 +11,7 @@ export declare const agentProfilePermissionSchema: z.ZodUnion<readonly [z.ZodEnu
11
11
  allow: "allow";
12
12
  ask: "ask";
13
13
  deny: "deny";
14
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
15
- allow: "allow";
16
- ask: "ask";
17
- deny: "deny";
18
- }>>]>;
14
+ }>, z.ZodType<Record<string, "allow" | "ask" | "deny">, unknown, z.core.$ZodTypeInternals<Record<string, "allow" | "ask" | "deny">, unknown>>]>;
19
15
  export declare const agentProfileResourceRefSchema: z.ZodUnion<readonly [z.ZodObject<{
20
16
  kind: z.ZodLiteral<"inline">;
21
17
  name: z.ZodString;
@@ -137,51 +133,102 @@ export declare const agentProfileModelHintsSchema: z.ZodObject<{
137
133
  xhigh: "xhigh";
138
134
  ultracode: "ultracode";
139
135
  }>>;
140
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
136
+ metadata: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
141
137
  }, z.core.$strict>;
142
138
  export declare const agentProfilePromptSchema: z.ZodObject<{
143
139
  systemPrompt: z.ZodOptional<z.ZodString>;
144
140
  instructions: z.ZodOptional<z.ZodArray<z.ZodString>>;
145
141
  }, z.core.$strict>;
142
+ export declare const agentProfilePublicConfigValueSchema: z.ZodObject<{
143
+ kind: z.ZodLiteral<"public">;
144
+ value: z.ZodString;
145
+ }, z.core.$strict>;
146
+ export declare const agentProfileSecretRefSchema: z.ZodObject<{
147
+ kind: z.ZodLiteral<"secret-ref">;
148
+ key: z.ZodString;
149
+ format: z.ZodOptional<z.ZodEnum<{
150
+ raw: "raw";
151
+ bearer: "bearer";
152
+ }>>;
153
+ }, z.core.$strict>;
154
+ export declare const agentProfileConfigValueSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
155
+ kind: z.ZodLiteral<"public">;
156
+ value: z.ZodString;
157
+ }, z.core.$strict>, z.ZodObject<{
158
+ kind: z.ZodLiteral<"secret-ref">;
159
+ key: z.ZodString;
160
+ format: z.ZodOptional<z.ZodEnum<{
161
+ raw: "raw";
162
+ bearer: "bearer";
163
+ }>>;
164
+ }, z.core.$strict>], "kind">;
165
+ export declare const agentProfileEnvironmentSchema: z.ZodType<Record<string, {
166
+ kind: "public";
167
+ value: string;
168
+ } | {
169
+ kind: "secret-ref";
170
+ key: string;
171
+ format?: "raw" | "bearer" | undefined;
172
+ }>, unknown, z.core.$ZodTypeInternals<Record<string, {
173
+ kind: "public";
174
+ value: string;
175
+ } | {
176
+ kind: "secret-ref";
177
+ key: string;
178
+ format?: "raw" | "bearer" | undefined;
179
+ }>, unknown>>;
180
+ export declare const agentProfileHeaderSchema: z.ZodType<Record<string, {
181
+ kind: "public";
182
+ value: string;
183
+ } | {
184
+ kind: "secret-ref";
185
+ key: string;
186
+ format?: "raw" | "bearer" | undefined;
187
+ }>, unknown, z.core.$ZodTypeInternals<Record<string, {
188
+ kind: "public";
189
+ value: string;
190
+ } | {
191
+ kind: "secret-ref";
192
+ key: string;
193
+ format?: "raw" | "bearer" | undefined;
194
+ }>, unknown>>;
146
195
  export declare const agentSubagentProfileSchema: z.ZodObject<{
147
196
  description: z.ZodOptional<z.ZodString>;
148
197
  prompt: z.ZodOptional<z.ZodString>;
149
198
  model: z.ZodOptional<z.ZodString>;
150
- tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
151
- permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
152
- allow: "allow";
153
- ask: "ask";
154
- deny: "deny";
155
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
156
- allow: "allow";
157
- ask: "ask";
158
- deny: "deny";
159
- }>>]>>>;
199
+ tools: z.ZodOptional<z.ZodType<Record<string, boolean>, unknown, z.core.$ZodTypeInternals<Record<string, boolean>, unknown>>>;
200
+ permissions: z.ZodOptional<z.ZodType<Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">>, unknown, z.core.$ZodTypeInternals<Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">>, unknown>>>;
160
201
  maxSteps: z.ZodOptional<z.ZodNumber>;
161
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
202
+ metadata: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
162
203
  }, z.core.$strict>;
163
204
  export declare const agentProfileHookCommandSchema: z.ZodObject<{
164
205
  command: z.ZodString;
165
206
  timeoutMs: z.ZodOptional<z.ZodNumber>;
166
207
  blocking: z.ZodOptional<z.ZodBoolean>;
167
208
  matcher: z.ZodOptional<z.ZodString>;
168
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
209
+ env: z.ZodOptional<z.ZodType<Record<string, {
210
+ kind: "public";
211
+ value: string;
212
+ } | {
213
+ kind: "secret-ref";
214
+ key: string;
215
+ format?: "raw" | "bearer" | undefined;
216
+ }>, unknown, z.core.$ZodTypeInternals<Record<string, {
217
+ kind: "public";
218
+ value: string;
219
+ } | {
220
+ kind: "secret-ref";
221
+ key: string;
222
+ format?: "raw" | "bearer" | undefined;
223
+ }>, unknown>>>;
169
224
  }, z.core.$strict>;
170
225
  export declare const agentProfileModeSchema: z.ZodObject<{
171
226
  description: z.ZodOptional<z.ZodString>;
172
227
  model: z.ZodOptional<z.ZodString>;
173
228
  prompt: z.ZodOptional<z.ZodString>;
174
- tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
175
- permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
176
- allow: "allow";
177
- ask: "ask";
178
- deny: "deny";
179
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
180
- allow: "allow";
181
- ask: "ask";
182
- deny: "deny";
183
- }>>]>>>;
184
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
229
+ tools: z.ZodOptional<z.ZodType<Record<string, boolean>, unknown, z.core.$ZodTypeInternals<Record<string, boolean>, unknown>>>;
230
+ permissions: z.ZodOptional<z.ZodType<Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">>, unknown, z.core.$ZodTypeInternals<Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">>, unknown>>>;
231
+ metadata: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
185
232
  }, z.core.$strict>;
186
233
  export declare const agentProfileConfidentialSchema: z.ZodObject<{
187
234
  tee: z.ZodOptional<z.ZodString>;
@@ -264,7 +311,7 @@ export declare const agentProfileSchema: z.ZodObject<{
264
311
  xhigh: "xhigh";
265
312
  ultracode: "ultracode";
266
313
  }>>;
267
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
314
+ metadata: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
268
315
  }, z.core.$strict>>;
269
316
  harness: z.ZodOptional<z.ZodEnum<{
270
317
  "claude-code": "claude-code";
@@ -281,39 +328,31 @@ export declare const agentProfileSchema: z.ZodObject<{
281
328
  acp: "acp";
282
329
  "cli-base": "cli-base";
283
330
  }>>;
284
- permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
285
- allow: "allow";
286
- ask: "ask";
287
- deny: "deny";
288
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
289
- allow: "allow";
290
- ask: "ask";
291
- deny: "deny";
292
- }>>]>>>;
293
- tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
294
- mcp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<AgentProfileMcpServer, unknown, z.core.$ZodTypeInternals<AgentProfileMcpServer, unknown>>>>;
331
+ permissions: z.ZodOptional<z.ZodType<Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">>, unknown, z.core.$ZodTypeInternals<Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">>, unknown>>>;
332
+ tools: z.ZodOptional<z.ZodType<Record<string, boolean>, unknown, z.core.$ZodTypeInternals<Record<string, boolean>, unknown>>>;
333
+ mcp: z.ZodOptional<z.ZodType<Record<string, AgentProfileMcpServer>, unknown, z.core.$ZodTypeInternals<Record<string, AgentProfileMcpServer>, unknown>>>;
295
334
  connections: z.ZodOptional<z.ZodArray<z.ZodObject<{
296
335
  connectionId: z.ZodString;
297
336
  capabilities: z.ZodArray<z.ZodString>;
298
337
  alias: z.ZodOptional<z.ZodString>;
299
338
  }, z.core.$strict>>>;
300
- subagents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
301
- description: z.ZodOptional<z.ZodString>;
302
- prompt: z.ZodOptional<z.ZodString>;
303
- model: z.ZodOptional<z.ZodString>;
304
- tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
305
- permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
306
- allow: "allow";
307
- ask: "ask";
308
- deny: "deny";
309
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
310
- allow: "allow";
311
- ask: "ask";
312
- deny: "deny";
313
- }>>]>>>;
314
- maxSteps: z.ZodOptional<z.ZodNumber>;
315
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
316
- }, z.core.$strict>>>;
339
+ subagents: z.ZodOptional<z.ZodType<Record<string, {
340
+ description?: string | undefined;
341
+ prompt?: string | undefined;
342
+ model?: string | undefined;
343
+ tools?: Record<string, boolean> | undefined;
344
+ permissions?: Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">> | undefined;
345
+ maxSteps?: number | undefined;
346
+ metadata?: Record<string, unknown> | undefined;
347
+ }>, unknown, z.core.$ZodTypeInternals<Record<string, {
348
+ description?: string | undefined;
349
+ prompt?: string | undefined;
350
+ model?: string | undefined;
351
+ tools?: Record<string, boolean> | undefined;
352
+ permissions?: Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">> | undefined;
353
+ maxSteps?: number | undefined;
354
+ metadata?: Record<string, unknown> | undefined;
355
+ }>, unknown>>>;
317
356
  resources: z.ZodOptional<z.ZodObject<{
318
357
  files: z.ZodOptional<z.ZodArray<z.ZodObject<{
319
358
  path: z.ZodString;
@@ -387,37 +426,56 @@ export declare const agentProfileSchema: z.ZodObject<{
387
426
  }, z.core.$strict>]>]>>;
388
427
  failOnError: z.ZodOptional<z.ZodBoolean>;
389
428
  }, z.core.$strict>>;
390
- hooks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
391
- command: z.ZodString;
392
- timeoutMs: z.ZodOptional<z.ZodNumber>;
393
- blocking: z.ZodOptional<z.ZodBoolean>;
394
- matcher: z.ZodOptional<z.ZodString>;
395
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
396
- }, z.core.$strict>>>>;
397
- modes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
398
- description: z.ZodOptional<z.ZodString>;
399
- model: z.ZodOptional<z.ZodString>;
400
- prompt: z.ZodOptional<z.ZodString>;
401
- tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
402
- permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodEnum<{
403
- allow: "allow";
404
- ask: "ask";
405
- deny: "deny";
406
- }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
407
- allow: "allow";
408
- ask: "ask";
409
- deny: "deny";
410
- }>>]>>>;
411
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
412
- }, z.core.$strict>>>;
429
+ hooks: z.ZodOptional<z.ZodType<Record<string, {
430
+ command: string;
431
+ timeoutMs?: number | undefined;
432
+ blocking?: boolean | undefined;
433
+ matcher?: string | undefined;
434
+ env?: Record<string, {
435
+ kind: "public";
436
+ value: string;
437
+ } | {
438
+ kind: "secret-ref";
439
+ key: string;
440
+ format?: "raw" | "bearer" | undefined;
441
+ }> | undefined;
442
+ }[]>, unknown, z.core.$ZodTypeInternals<Record<string, {
443
+ command: string;
444
+ timeoutMs?: number | undefined;
445
+ blocking?: boolean | undefined;
446
+ matcher?: string | undefined;
447
+ env?: Record<string, {
448
+ kind: "public";
449
+ value: string;
450
+ } | {
451
+ kind: "secret-ref";
452
+ key: string;
453
+ format?: "raw" | "bearer" | undefined;
454
+ }> | undefined;
455
+ }[]>, unknown>>>;
456
+ modes: z.ZodOptional<z.ZodType<Record<string, {
457
+ description?: string | undefined;
458
+ model?: string | undefined;
459
+ prompt?: string | undefined;
460
+ tools?: Record<string, boolean> | undefined;
461
+ permissions?: Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">> | undefined;
462
+ metadata?: Record<string, unknown> | undefined;
463
+ }>, unknown, z.core.$ZodTypeInternals<Record<string, {
464
+ description?: string | undefined;
465
+ model?: string | undefined;
466
+ prompt?: string | undefined;
467
+ tools?: Record<string, boolean> | undefined;
468
+ permissions?: Record<string, "allow" | "ask" | "deny" | Record<string, "allow" | "ask" | "deny">> | undefined;
469
+ metadata?: Record<string, unknown> | undefined;
470
+ }>, unknown>>>;
413
471
  confidential: z.ZodOptional<z.ZodObject<{
414
472
  tee: z.ZodOptional<z.ZodString>;
415
473
  attestationNonce: z.ZodOptional<z.ZodString>;
416
474
  sealed: z.ZodOptional<z.ZodBoolean>;
417
475
  attestationRefresh: z.ZodOptional<z.ZodBoolean>;
418
476
  }, z.core.$strict>>;
419
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
420
- extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodUndefined]>>>;
477
+ metadata: z.ZodOptional<z.ZodType<Record<string, unknown>, unknown, z.core.$ZodTypeInternals<Record<string, unknown>, unknown>>>;
478
+ extensions: z.ZodOptional<z.ZodType<Record<string, Record<string, unknown> | undefined>, unknown, z.core.$ZodTypeInternals<Record<string, Record<string, unknown> | undefined>, unknown>>>;
421
479
  }, z.core.$strict>;
422
480
  export declare const agentProfileDiffSchema: z.ZodType<AgentProfileDiff>;
423
481
  /**