@spotpatch/shared 1.14.3 → 1.16.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 (41) hide show
  1. package/dist/{annotation-Cz-NNgR4.d.cts → annotation-eo_ltNRm.d.cts} +24 -1
  2. package/dist/{annotation-Cz-NNgR4.d.ts → annotation-eo_ltNRm.d.ts} +24 -1
  3. package/dist/{chunk-JTZFOTPT.js → chunk-7777QFBJ.js} +2 -2
  4. package/dist/{chunk-CLQ6MIJB.js → chunk-D7R32NFF.js} +5 -4
  5. package/dist/chunk-D7R32NFF.js.map +1 -0
  6. package/dist/{chunk-R6QJFNT2.js → chunk-FCY5V76A.js} +31 -1
  7. package/dist/chunk-FCY5V76A.js.map +1 -0
  8. package/dist/{chunk-EWJTKNL4.js → chunk-RWFGFW4N.js} +3 -2
  9. package/dist/chunk-RWFGFW4N.js.map +1 -0
  10. package/dist/{contextual-ask-BpbkpFFf.d.cts → contextual-ask-Dz3Mh9LR.d.cts} +117 -1
  11. package/dist/{contextual-ask-BpbkpFFf.d.ts → contextual-ask-Dz3Mh9LR.d.ts} +117 -1
  12. package/dist/contextual-ask-browser.cjs +2 -1
  13. package/dist/contextual-ask-browser.cjs.map +1 -1
  14. package/dist/contextual-ask-browser.d.cts +1 -1
  15. package/dist/contextual-ask-browser.d.ts +1 -1
  16. package/dist/contextual-ask-browser.js +1 -1
  17. package/dist/contextual-ask-node.cjs +28 -2
  18. package/dist/contextual-ask-node.cjs.map +1 -1
  19. package/dist/contextual-ask-node.d.cts +3 -3
  20. package/dist/contextual-ask-node.d.ts +3 -3
  21. package/dist/contextual-ask-node.js +3 -3
  22. package/dist/external-agent-node.cjs +26 -0
  23. package/dist/external-agent-node.cjs.map +1 -1
  24. package/dist/external-agent-node.d.cts +32 -2
  25. package/dist/external-agent-node.d.ts +32 -2
  26. package/dist/external-agent-node.js +2 -2
  27. package/dist/{external-handoff-5zHu-fz2.d.ts → external-handoff-BaPiKnYG.d.ts} +31 -1
  28. package/dist/{external-handoff-DeiIvR-2.d.cts → external-handoff-ByHmcwWv.d.cts} +31 -1
  29. package/dist/external-handoff-browser.d.cts +2 -2
  30. package/dist/external-handoff-browser.d.ts +2 -2
  31. package/dist/index.cjs +38 -2
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +49 -4
  34. package/dist/index.d.ts +49 -4
  35. package/dist/index.js +12 -4
  36. package/dist/index.js.map +1 -1
  37. package/package.json +1 -1
  38. package/dist/chunk-CLQ6MIJB.js.map +0 -1
  39. package/dist/chunk-EWJTKNL4.js.map +0 -1
  40. package/dist/chunk-R6QJFNT2.js.map +0 -1
  41. /package/dist/{chunk-JTZFOTPT.js.map → chunk-7777QFBJ.js.map} +0 -0
@@ -34,7 +34,7 @@ declare const CONTEXTUAL_ASK_LIMITS: Readonly<{
34
34
  readonly maximumModels: 800;
35
35
  readonly contentHashHexCharacters: 64;
36
36
  }>;
37
- declare const CONTEXTUAL_ASK_EXECUTOR_KINDS: readonly ["configured-key", "managed-codex"];
37
+ declare const CONTEXTUAL_ASK_EXECUTOR_KINDS: readonly ["configured-key", "managed-codex", "claude-code"];
38
38
  type ContextualAskExecutorKind = (typeof CONTEXTUAL_ASK_EXECUTOR_KINDS)[number];
39
39
  declare const CONTEXTUAL_ASK_EXECUTOR_STATES: readonly ["ready", "degraded", "unavailable"];
40
40
  type ContextualAskExecutorState = (typeof CONTEXTUAL_ASK_EXECUTOR_STATES)[number];
@@ -59,6 +59,8 @@ declare const contextualAskExecutorPreferenceSchema: z.ZodDiscriminatedUnion<[z.
59
59
  modelProfileId: z.ZodString;
60
60
  }, z.core.$strict>, z.ZodObject<{
61
61
  kind: z.ZodLiteral<"managed-codex">;
62
+ }, z.core.$strict>, z.ZodObject<{
63
+ kind: z.ZodLiteral<"claude-code">;
62
64
  }, z.core.$strict>], "kind">;
63
65
  declare const contextualAskOptionsSchema: z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
64
66
  defaultExecutor: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -67,6 +69,8 @@ declare const contextualAskOptionsSchema: z.ZodUnion<readonly [z.ZodBoolean, z.Z
67
69
  modelProfileId: z.ZodString;
68
70
  }, z.core.$strict>, z.ZodObject<{
69
71
  kind: z.ZodLiteral<"managed-codex">;
72
+ }, z.core.$strict>, z.ZodObject<{
73
+ kind: z.ZodLiteral<"claude-code">;
70
74
  }, z.core.$strict>], "kind">>;
71
75
  }, z.core.$strict>]>;
72
76
  declare const spotSelectionTargetSchema: z.ZodObject<{
@@ -117,6 +121,21 @@ declare const spotSelectionTargetSchema: z.ZodObject<{
117
121
  }, z.core.$strict>>;
118
122
  }, z.core.$strict>;
119
123
  element: z.ZodObject<{
124
+ instance: z.ZodOptional<z.ZodObject<{
125
+ id: z.ZodString;
126
+ state: z.ZodEnum<{
127
+ captured: "captured";
128
+ changed: "changed";
129
+ detached: "detached";
130
+ restored: "restored";
131
+ }>;
132
+ selectorStatus: z.ZodEnum<{
133
+ unavailable: "unavailable";
134
+ "unique-at-capture": "unique-at-capture";
135
+ }>;
136
+ label: z.ZodString;
137
+ context: z.ZodString;
138
+ }, z.core.$strict>>;
120
139
  tagName: z.ZodString;
121
140
  selector: z.ZodString;
122
141
  sanitizedHtml: z.ZodString;
@@ -222,6 +241,21 @@ declare const spotSelectionContextSchema: z.ZodObject<{
222
241
  }, z.core.$strict>>;
223
242
  }, z.core.$strict>;
224
243
  element: z.ZodObject<{
244
+ instance: z.ZodOptional<z.ZodObject<{
245
+ id: z.ZodString;
246
+ state: z.ZodEnum<{
247
+ captured: "captured";
248
+ changed: "changed";
249
+ detached: "detached";
250
+ restored: "restored";
251
+ }>;
252
+ selectorStatus: z.ZodEnum<{
253
+ unavailable: "unavailable";
254
+ "unique-at-capture": "unique-at-capture";
255
+ }>;
256
+ label: z.ZodString;
257
+ context: z.ZodString;
258
+ }, z.core.$strict>>;
225
259
  tagName: z.ZodString;
226
260
  selector: z.ZodString;
227
261
  sanitizedHtml: z.ZodString;
@@ -343,6 +377,21 @@ declare const spotAskTaskEnvelopeSchema: z.ZodObject<{
343
377
  }, z.core.$strict>>;
344
378
  }, z.core.$strict>;
345
379
  element: z.ZodObject<{
380
+ instance: z.ZodOptional<z.ZodObject<{
381
+ id: z.ZodString;
382
+ state: z.ZodEnum<{
383
+ captured: "captured";
384
+ changed: "changed";
385
+ detached: "detached";
386
+ restored: "restored";
387
+ }>;
388
+ selectorStatus: z.ZodEnum<{
389
+ unavailable: "unavailable";
390
+ "unique-at-capture": "unique-at-capture";
391
+ }>;
392
+ label: z.ZodString;
393
+ context: z.ZodString;
394
+ }, z.core.$strict>>;
346
395
  tagName: z.ZodString;
347
396
  selector: z.ZodString;
348
397
  sanitizedHtml: z.ZodString;
@@ -469,6 +518,21 @@ declare const spotChangeTaskEnvelopeSchema: z.ZodObject<{
469
518
  }, z.core.$strict>>;
470
519
  }, z.core.$strict>;
471
520
  element: z.ZodObject<{
521
+ instance: z.ZodOptional<z.ZodObject<{
522
+ id: z.ZodString;
523
+ state: z.ZodEnum<{
524
+ captured: "captured";
525
+ changed: "changed";
526
+ detached: "detached";
527
+ restored: "restored";
528
+ }>;
529
+ selectorStatus: z.ZodEnum<{
530
+ unavailable: "unavailable";
531
+ "unique-at-capture": "unique-at-capture";
532
+ }>;
533
+ label: z.ZodString;
534
+ context: z.ZodString;
535
+ }, z.core.$strict>>;
472
536
  tagName: z.ZodString;
473
537
  selector: z.ZodString;
474
538
  sanitizedHtml: z.ZodString;
@@ -585,6 +649,21 @@ declare const spotTaskEnvelopeSchema: z.ZodUnion<readonly [z.ZodObject<{
585
649
  }, z.core.$strict>>;
586
650
  }, z.core.$strict>;
587
651
  element: z.ZodObject<{
652
+ instance: z.ZodOptional<z.ZodObject<{
653
+ id: z.ZodString;
654
+ state: z.ZodEnum<{
655
+ captured: "captured";
656
+ changed: "changed";
657
+ detached: "detached";
658
+ restored: "restored";
659
+ }>;
660
+ selectorStatus: z.ZodEnum<{
661
+ unavailable: "unavailable";
662
+ "unique-at-capture": "unique-at-capture";
663
+ }>;
664
+ label: z.ZodString;
665
+ context: z.ZodString;
666
+ }, z.core.$strict>>;
588
667
  tagName: z.ZodString;
589
668
  selector: z.ZodString;
590
669
  sanitizedHtml: z.ZodString;
@@ -710,6 +789,21 @@ declare const spotTaskEnvelopeSchema: z.ZodUnion<readonly [z.ZodObject<{
710
789
  }, z.core.$strict>>;
711
790
  }, z.core.$strict>;
712
791
  element: z.ZodObject<{
792
+ instance: z.ZodOptional<z.ZodObject<{
793
+ id: z.ZodString;
794
+ state: z.ZodEnum<{
795
+ captured: "captured";
796
+ changed: "changed";
797
+ detached: "detached";
798
+ restored: "restored";
799
+ }>;
800
+ selectorStatus: z.ZodEnum<{
801
+ unavailable: "unavailable";
802
+ "unique-at-capture": "unique-at-capture";
803
+ }>;
804
+ label: z.ZodString;
805
+ context: z.ZodString;
806
+ }, z.core.$strict>>;
713
807
  tagName: z.ZodString;
714
808
  selector: z.ZodString;
715
809
  sanitizedHtml: z.ZodString;
@@ -883,6 +977,7 @@ declare const askAnswerResultSchema: z.ZodObject<{
883
977
  kind: z.ZodEnum<{
884
978
  "configured-key": "configured-key";
885
979
  "managed-codex": "managed-codex";
980
+ "claude-code": "claude-code";
886
981
  }>;
887
982
  label: z.ZodString;
888
983
  modelLabel: z.ZodString;
@@ -935,6 +1030,7 @@ declare const contextualAskExecutorCapabilitySchema: z.ZodObject<{
935
1030
  kind: z.ZodEnum<{
936
1031
  "configured-key": "configured-key";
937
1032
  "managed-codex": "managed-codex";
1033
+ "claude-code": "claude-code";
938
1034
  }>;
939
1035
  label: z.ZodString;
940
1036
  requestedModelLabel: z.ZodString;
@@ -974,6 +1070,7 @@ declare const contextualAskCapabilitySchema: z.ZodObject<{
974
1070
  kind: z.ZodEnum<{
975
1071
  "configured-key": "configured-key";
976
1072
  "managed-codex": "managed-codex";
1073
+ "claude-code": "claude-code";
977
1074
  }>;
978
1075
  label: z.ZodString;
979
1076
  requestedModelLabel: z.ZodString;
@@ -1097,6 +1194,21 @@ declare const askJobCreateRequestSchema: z.ZodObject<{
1097
1194
  }, z.core.$strict>>;
1098
1195
  }, z.core.$strict>;
1099
1196
  element: z.ZodObject<{
1197
+ instance: z.ZodOptional<z.ZodObject<{
1198
+ id: z.ZodString;
1199
+ state: z.ZodEnum<{
1200
+ captured: "captured";
1201
+ changed: "changed";
1202
+ detached: "detached";
1203
+ restored: "restored";
1204
+ }>;
1205
+ selectorStatus: z.ZodEnum<{
1206
+ unavailable: "unavailable";
1207
+ "unique-at-capture": "unique-at-capture";
1208
+ }>;
1209
+ label: z.ZodString;
1210
+ context: z.ZodString;
1211
+ }, z.core.$strict>>;
1100
1212
  tagName: z.ZodString;
1101
1213
  selector: z.ZodString;
1102
1214
  sanitizedHtml: z.ZodString;
@@ -1177,6 +1289,7 @@ declare const askJobSnapshotSchema: z.ZodObject<{
1177
1289
  kind: z.ZodEnum<{
1178
1290
  "configured-key": "configured-key";
1179
1291
  "managed-codex": "managed-codex";
1292
+ "claude-code": "claude-code";
1180
1293
  }>;
1181
1294
  label: z.ZodString;
1182
1295
  modelLabel: z.ZodString;
@@ -1223,6 +1336,7 @@ declare const askJobResultResponseSchema: z.ZodObject<{
1223
1336
  kind: z.ZodEnum<{
1224
1337
  "configured-key": "configured-key";
1225
1338
  "managed-codex": "managed-codex";
1339
+ "claude-code": "claude-code";
1226
1340
  }>;
1227
1341
  label: z.ZodString;
1228
1342
  modelLabel: z.ZodString;
@@ -1260,6 +1374,7 @@ declare const askJobResultResponseSchema: z.ZodObject<{
1260
1374
  kind: z.ZodEnum<{
1261
1375
  "configured-key": "configured-key";
1262
1376
  "managed-codex": "managed-codex";
1377
+ "claude-code": "claude-code";
1263
1378
  }>;
1264
1379
  label: z.ZodString;
1265
1380
  modelLabel: z.ZodString;
@@ -1328,6 +1443,7 @@ declare const askJobEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1328
1443
  kind: z.ZodEnum<{
1329
1444
  "configured-key": "configured-key";
1330
1445
  "managed-codex": "managed-codex";
1446
+ "claude-code": "claude-code";
1331
1447
  }>;
1332
1448
  label: z.ZodString;
1333
1449
  modelLabel: z.ZodString;
@@ -75,7 +75,8 @@ var CONTEXTUAL_ASK_LIMITS = Object.freeze({
75
75
  });
76
76
  var CONTEXTUAL_ASK_EXECUTOR_KINDS = Object.freeze([
77
77
  "configured-key",
78
- "managed-codex"
78
+ "managed-codex",
79
+ "claude-code"
79
80
  ]);
80
81
  var CONTEXTUAL_ASK_EXECUTOR_STATES = Object.freeze([
81
82
  "ready",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contextual-ask-browser.ts","../src/protocol/contextual-ask-constants.ts","../src/protocol/endpoints.ts"],"sourcesContent":["import type { ERROR_CODES as GLOBAL_ERROR_CODES } from \"./errors/error-code.js\";\nimport type { ContextualAskErrorCode } from \"./errors/error-code.js\";\n\nconst CONTEXTUAL_ASK_ERRORS = {\n ASK_DISABLED: \"ASK_DISABLED\",\n ASK_SELECTION_REQUIRED: \"ASK_SELECTION_REQUIRED\",\n ASK_SELECTION_STALE: \"ASK_SELECTION_STALE\",\n ASK_QUESTION_INVALID: \"ASK_QUESTION_INVALID\",\n ASK_EXECUTOR_UNAVAILABLE: \"ASK_EXECUTOR_UNAVAILABLE\",\n ASK_TIMEOUT: \"ASK_TIMEOUT\",\n ASK_CONSENT_REQUIRED: \"ASK_CONSENT_REQUIRED\",\n ASK_BUSY: \"ASK_BUSY\",\n ASK_IDEMPOTENCY_CONFLICT: \"ASK_IDEMPOTENCY_CONFLICT\",\n ASK_SOURCE_SCOPE_DENIED: \"ASK_SOURCE_SCOPE_DENIED\",\n ASK_LIMIT_EXCEEDED: \"ASK_LIMIT_EXCEEDED\",\n ASK_ANSWER_INVALID: \"ASK_ANSWER_INVALID\",\n ASK_WRITE_ATTEMPTED: \"ASK_WRITE_ATTEMPTED\",\n ASK_CANCELLED: \"ASK_CANCELLED\",\n ASK_RESULT_EXPIRED: \"ASK_RESULT_EXPIRED\",\n ASK_PROTOCOL_INCOMPATIBLE: \"ASK_PROTOCOL_INCOMPATIBLE\",\n} as const satisfies Record<ContextualAskErrorCode, ContextualAskErrorCode>;\n\n/** Browser-reachable Ask errors only; no provider details or Node failures. */\nexport const ERROR_CODES = Object.freeze({\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n ...CONTEXTUAL_ASK_ERRORS,\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const satisfies Pick<\n typeof GLOBAL_ERROR_CODES,\n \"INTERNAL_ERROR\" | \"INVALID_REQUEST\" | \"INVALID_TOKEN\" | \"ORIGIN_NOT_ALLOWED\"\n>);\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\nconst ERROR_CODE_VALUES: readonly string[] = Object.values(ERROR_CODES);\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return typeof value === \"string\" && ERROR_CODE_VALUES.includes(value);\n}\n\nexport {\n ASK_ANSWER_WARNING_CODES,\n ASK_EXECUTOR_ANSWER_WARNING_CODES,\n ASK_FILE_COUNT_BUCKETS,\n ASK_JOB_STATUSES,\n ASK_READ_ACTIVITY_STATES,\n ASK_SOURCE_CONFIDENCES,\n CONTEXTUAL_ASK_EXECUTOR_KINDS,\n CONTEXTUAL_ASK_EXECUTOR_STATES,\n CONTEXTUAL_ASK_LIMITS,\n CONTEXTUAL_ASK_SCHEMA_VERSION,\n type AskAnswerWarningCode,\n type AskExecutorAnswerWarningCode,\n type AskFileCountBucket,\n type AskJobStatus,\n type AskReadActivityState,\n type AskSourceConfidence,\n type ContextualAskExecutorKind,\n type ContextualAskExecutorState,\n} from \"./protocol/contextual-ask-constants.js\";\nexport {\n getAskJobEndpoint,\n SPOTPATCH_ENDPOINTS,\n SPOTPATCH_TOKEN_HEADER,\n type AskJobAction,\n} from \"./protocol/endpoints.js\";\nexport type {\n AskAnswerBlock,\n AskAnswerResult,\n AskAnswerWarning,\n AskDraftOrigin,\n AskSourceReference,\n ContextualAskCapability,\n ContextualAskExecutorCapability,\n SpotAskTaskEnvelope,\n SpotChangeTaskEnvelope,\n SpotSelectionContext,\n SpotSelectionTarget,\n SpotTaskEnvelope,\n} from \"./model/contextual-ask.js\";\nexport type {\n AskJobActionRequest,\n AskJobCreateRequest,\n AskJobEvent,\n AskJobEventsRequest,\n AskJobResultResponse,\n AskJobSnapshot,\n ContextualAskCapabilityRequest,\n} from \"./protocol/contextual-ask.js\";\n","export const CONTEXTUAL_ASK_SCHEMA_VERSION = 1 as const;\n\nexport const CONTEXTUAL_ASK_LIMITS = Object.freeze({\n maximumTargets: 20,\n maximumQuestionCharacters: 4_000,\n maximumAnswerCharacters: 40_000,\n maximumAnswerBlocks: 40,\n maximumSources: 64,\n maximumReadFiles: 32,\n maximumReadBytesPerFile: 64 * 1_024,\n maximumReadBytesTotal: 512 * 1_024,\n maximumToolCalls: 48,\n maximumModelTurns: 12,\n jobTimeoutMs: 300_000,\n resultTtlMs: 900_000,\n maximumActiveJobsPerSession: 1,\n maximumRetainedResultsPerSession: 1,\n maximumRetainedEvents: 256,\n maximumEventSubscribers: 4,\n eventHeartbeatMs: 15_000,\n maximumRequestBodyBytes: 256 * 1_024,\n maximumSearchQueryCharacters: 256,\n maximumSearchResults: 64,\n maximumSearchPreviewCharacters: 500,\n capabilityTimeoutMs: 30_000,\n maximumIdCharacters: 128,\n maximumProfileIdCharacters: 64,\n maximumLabelCharacters: 256,\n maximumRelativePathCharacters: 1_024,\n maximumLanguageCharacters: 64,\n maximumPhaseMessageCharacters: 1_024,\n maximumExecutors: 32,\n maximumModels: 800,\n contentHashHexCharacters: 64,\n} as const);\n\nexport const CONTEXTUAL_ASK_EXECUTOR_KINDS = Object.freeze([\n \"configured-key\",\n \"managed-codex\",\n] as const);\nexport type ContextualAskExecutorKind = (typeof CONTEXTUAL_ASK_EXECUTOR_KINDS)[number];\n\nexport const CONTEXTUAL_ASK_EXECUTOR_STATES = Object.freeze([\n \"ready\",\n \"degraded\",\n \"unavailable\",\n] as const);\nexport type ContextualAskExecutorState =\n (typeof CONTEXTUAL_ASK_EXECUTOR_STATES)[number];\n\nexport const ASK_JOB_STATUSES = Object.freeze([\n \"queued\",\n \"authorizing\",\n \"running\",\n \"cancelling\",\n \"answered\",\n \"cancelled\",\n \"failed\",\n] as const);\nexport type AskJobStatus = (typeof ASK_JOB_STATUSES)[number];\n\nexport const ASK_ANSWER_WARNING_CODES = Object.freeze([\n \"insufficient-evidence\",\n \"partial-context\",\n \"source-truncated\",\n \"source-stale\",\n] as const);\nexport type AskAnswerWarningCode = (typeof ASK_ANSWER_WARNING_CODES)[number];\n\n/** Warnings an executor may declare from its own evidence assessment. */\nexport const ASK_EXECUTOR_ANSWER_WARNING_CODES = Object.freeze([\n \"insufficient-evidence\",\n \"partial-context\",\n] as const satisfies readonly AskAnswerWarningCode[]);\nexport type AskExecutorAnswerWarningCode =\n (typeof ASK_EXECUTOR_ANSWER_WARNING_CODES)[number];\n\nexport const ASK_READ_ACTIVITY_STATES = Object.freeze([\n \"started\",\n \"succeeded\",\n \"failed\",\n] as const);\nexport type AskReadActivityState = (typeof ASK_READ_ACTIVITY_STATES)[number];\n\nexport const ASK_FILE_COUNT_BUCKETS = Object.freeze([\"one\", \"few\", \"many\"] as const);\nexport type AskFileCountBucket = (typeof ASK_FILE_COUNT_BUCKETS)[number];\n\nexport const ASK_SOURCE_CONFIDENCES = Object.freeze([\n \"exact\",\n \"probable\",\n \"approximate\",\n] as const);\nexport type AskSourceConfidence = (typeof ASK_SOURCE_CONFIDENCES)[number];\n\nexport const CONTEXTUAL_ASK_PERMISSION_PROFILE = \"spotpatch-ask-readonly\" as const;\n","export const SPOTPATCH_API_BASE = \"/__spotpatch/v1\" as const;\nexport const SPOTPATCH_TOKEN_HEADER = \"X-SpotPatch-Token\" as const;\n\nexport const SPOTPATCH_ENDPOINTS = Object.freeze({\n bootstrap: `${SPOTPATCH_API_BASE}/bootstrap`,\n sourceContext: `${SPOTPATCH_API_BASE}/source-context`,\n openEditor: `${SPOTPATCH_API_BASE}/open-editor`,\n dataFlowComponentReport: `${SPOTPATCH_API_BASE}/data-flow/component-report`,\n dataFlowPageReport: `${SPOTPATCH_API_BASE}/data-flow/page-report`,\n agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,\n agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,\n agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`,\n askCapability: `${SPOTPATCH_API_BASE}/ask/capability`,\n askJobs: `${SPOTPATCH_API_BASE}/ask/jobs`,\n externalHandoffCapability: `${SPOTPATCH_API_BASE}/external-handoff/capability`,\n externalHandoffPublish: `${SPOTPATCH_API_BASE}/external-handoff/publish`,\n externalHandoffStatus: `${SPOTPATCH_API_BASE}/external-handoff/status`,\n externalHandoffResolveDelivery: `${SPOTPATCH_API_BASE}/external-handoff/resolve-delivery`,\n externalAgentControlStatus: `${SPOTPATCH_API_BASE}/external-agent/control/status`,\n externalAgentControlConnect: `${SPOTPATCH_API_BASE}/external-agent/control/connect`,\n externalAgentControlDisconnect: `${SPOTPATCH_API_BASE}/external-agent/control/disconnect`,\n externalAgentControlCancel: `${SPOTPATCH_API_BASE}/external-agent/control/cancel`,\n externalAgentEvents: `${SPOTPATCH_API_BASE}/external-agent/events`,\n externalAgentResult: `${SPOTPATCH_API_BASE}/external-agent/result`,\n});\n\nexport type AgentJobAction = \"events\" | \"result\" | \"cancel\" | \"apply\" | \"revert\";\nexport type AskJobAction = \"events\" | \"result\" | \"cancel\";\n\nexport function getAgentJobEndpoint(jobId: string, action: AgentJobAction): string {\n return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;\n}\n\nexport function getAskJobEndpoint(\n jobId: string,\n action: AskJobAction,\n options: Readonly<{ afterSequence?: number }> = {},\n): string {\n const endpoint = `${SPOTPATCH_ENDPOINTS.askJobs}/${encodeURIComponent(jobId)}/${action}`;\n if (action !== \"events\" && options.afterSequence !== undefined) {\n throw new RangeError(\"afterSequence is only valid for the events endpoint.\");\n }\n if (options.afterSequence === undefined) return endpoint;\n if (!Number.isSafeInteger(options.afterSequence) || options.afterSequence < 0) {\n throw new RangeError(\"afterSequence must be a non-negative safe integer.\");\n }\n return `${endpoint}?afterSequence=${String(options.afterSequence)}`;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/contextual-ask-browser.ts","../src/protocol/contextual-ask-constants.ts","../src/protocol/endpoints.ts"],"sourcesContent":["import type { ERROR_CODES as GLOBAL_ERROR_CODES } from \"./errors/error-code.js\";\nimport type { ContextualAskErrorCode } from \"./errors/error-code.js\";\n\nconst CONTEXTUAL_ASK_ERRORS = {\n ASK_DISABLED: \"ASK_DISABLED\",\n ASK_SELECTION_REQUIRED: \"ASK_SELECTION_REQUIRED\",\n ASK_SELECTION_STALE: \"ASK_SELECTION_STALE\",\n ASK_QUESTION_INVALID: \"ASK_QUESTION_INVALID\",\n ASK_EXECUTOR_UNAVAILABLE: \"ASK_EXECUTOR_UNAVAILABLE\",\n ASK_TIMEOUT: \"ASK_TIMEOUT\",\n ASK_CONSENT_REQUIRED: \"ASK_CONSENT_REQUIRED\",\n ASK_BUSY: \"ASK_BUSY\",\n ASK_IDEMPOTENCY_CONFLICT: \"ASK_IDEMPOTENCY_CONFLICT\",\n ASK_SOURCE_SCOPE_DENIED: \"ASK_SOURCE_SCOPE_DENIED\",\n ASK_LIMIT_EXCEEDED: \"ASK_LIMIT_EXCEEDED\",\n ASK_ANSWER_INVALID: \"ASK_ANSWER_INVALID\",\n ASK_WRITE_ATTEMPTED: \"ASK_WRITE_ATTEMPTED\",\n ASK_CANCELLED: \"ASK_CANCELLED\",\n ASK_RESULT_EXPIRED: \"ASK_RESULT_EXPIRED\",\n ASK_PROTOCOL_INCOMPATIBLE: \"ASK_PROTOCOL_INCOMPATIBLE\",\n} as const satisfies Record<ContextualAskErrorCode, ContextualAskErrorCode>;\n\n/** Browser-reachable Ask errors only; no provider details or Node failures. */\nexport const ERROR_CODES = Object.freeze({\n INVALID_REQUEST: \"INVALID_REQUEST\",\n INVALID_TOKEN: \"INVALID_TOKEN\",\n ORIGIN_NOT_ALLOWED: \"ORIGIN_NOT_ALLOWED\",\n ...CONTEXTUAL_ASK_ERRORS,\n INTERNAL_ERROR: \"INTERNAL_ERROR\",\n} as const satisfies Pick<\n typeof GLOBAL_ERROR_CODES,\n \"INTERNAL_ERROR\" | \"INVALID_REQUEST\" | \"INVALID_TOKEN\" | \"ORIGIN_NOT_ALLOWED\"\n>);\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES];\nconst ERROR_CODE_VALUES: readonly string[] = Object.values(ERROR_CODES);\n\nexport function isErrorCode(value: unknown): value is ErrorCode {\n return typeof value === \"string\" && ERROR_CODE_VALUES.includes(value);\n}\n\nexport {\n ASK_ANSWER_WARNING_CODES,\n ASK_EXECUTOR_ANSWER_WARNING_CODES,\n ASK_FILE_COUNT_BUCKETS,\n ASK_JOB_STATUSES,\n ASK_READ_ACTIVITY_STATES,\n ASK_SOURCE_CONFIDENCES,\n CONTEXTUAL_ASK_EXECUTOR_KINDS,\n CONTEXTUAL_ASK_EXECUTOR_STATES,\n CONTEXTUAL_ASK_LIMITS,\n CONTEXTUAL_ASK_SCHEMA_VERSION,\n type AskAnswerWarningCode,\n type AskExecutorAnswerWarningCode,\n type AskFileCountBucket,\n type AskJobStatus,\n type AskReadActivityState,\n type AskSourceConfidence,\n type ContextualAskExecutorKind,\n type ContextualAskExecutorState,\n} from \"./protocol/contextual-ask-constants.js\";\nexport {\n getAskJobEndpoint,\n SPOTPATCH_ENDPOINTS,\n SPOTPATCH_TOKEN_HEADER,\n type AskJobAction,\n} from \"./protocol/endpoints.js\";\nexport type {\n AskAnswerBlock,\n AskAnswerResult,\n AskAnswerWarning,\n AskDraftOrigin,\n AskSourceReference,\n ContextualAskCapability,\n ContextualAskExecutorCapability,\n SpotAskTaskEnvelope,\n SpotChangeTaskEnvelope,\n SpotSelectionContext,\n SpotSelectionTarget,\n SpotTaskEnvelope,\n} from \"./model/contextual-ask.js\";\nexport type {\n AskJobActionRequest,\n AskJobCreateRequest,\n AskJobEvent,\n AskJobEventsRequest,\n AskJobResultResponse,\n AskJobSnapshot,\n ContextualAskCapabilityRequest,\n} from \"./protocol/contextual-ask.js\";\n","export const CONTEXTUAL_ASK_SCHEMA_VERSION = 1 as const;\n\nexport const CONTEXTUAL_ASK_LIMITS = Object.freeze({\n maximumTargets: 20,\n maximumQuestionCharacters: 4_000,\n maximumAnswerCharacters: 40_000,\n maximumAnswerBlocks: 40,\n maximumSources: 64,\n maximumReadFiles: 32,\n maximumReadBytesPerFile: 64 * 1_024,\n maximumReadBytesTotal: 512 * 1_024,\n maximumToolCalls: 48,\n maximumModelTurns: 12,\n jobTimeoutMs: 300_000,\n resultTtlMs: 900_000,\n maximumActiveJobsPerSession: 1,\n maximumRetainedResultsPerSession: 1,\n maximumRetainedEvents: 256,\n maximumEventSubscribers: 4,\n eventHeartbeatMs: 15_000,\n maximumRequestBodyBytes: 256 * 1_024,\n maximumSearchQueryCharacters: 256,\n maximumSearchResults: 64,\n maximumSearchPreviewCharacters: 500,\n capabilityTimeoutMs: 30_000,\n maximumIdCharacters: 128,\n maximumProfileIdCharacters: 64,\n maximumLabelCharacters: 256,\n maximumRelativePathCharacters: 1_024,\n maximumLanguageCharacters: 64,\n maximumPhaseMessageCharacters: 1_024,\n maximumExecutors: 32,\n maximumModels: 800,\n contentHashHexCharacters: 64,\n} as const);\n\nexport const CONTEXTUAL_ASK_EXECUTOR_KINDS = Object.freeze([\n \"configured-key\",\n \"managed-codex\",\n \"claude-code\",\n] as const);\nexport type ContextualAskExecutorKind = (typeof CONTEXTUAL_ASK_EXECUTOR_KINDS)[number];\n\nexport const CONTEXTUAL_ASK_EXECUTOR_STATES = Object.freeze([\n \"ready\",\n \"degraded\",\n \"unavailable\",\n] as const);\nexport type ContextualAskExecutorState =\n (typeof CONTEXTUAL_ASK_EXECUTOR_STATES)[number];\n\nexport const ASK_JOB_STATUSES = Object.freeze([\n \"queued\",\n \"authorizing\",\n \"running\",\n \"cancelling\",\n \"answered\",\n \"cancelled\",\n \"failed\",\n] as const);\nexport type AskJobStatus = (typeof ASK_JOB_STATUSES)[number];\n\nexport const ASK_ANSWER_WARNING_CODES = Object.freeze([\n \"insufficient-evidence\",\n \"partial-context\",\n \"source-truncated\",\n \"source-stale\",\n] as const);\nexport type AskAnswerWarningCode = (typeof ASK_ANSWER_WARNING_CODES)[number];\n\n/** Warnings an executor may declare from its own evidence assessment. */\nexport const ASK_EXECUTOR_ANSWER_WARNING_CODES = Object.freeze([\n \"insufficient-evidence\",\n \"partial-context\",\n] as const satisfies readonly AskAnswerWarningCode[]);\nexport type AskExecutorAnswerWarningCode =\n (typeof ASK_EXECUTOR_ANSWER_WARNING_CODES)[number];\n\nexport const ASK_READ_ACTIVITY_STATES = Object.freeze([\n \"started\",\n \"succeeded\",\n \"failed\",\n] as const);\nexport type AskReadActivityState = (typeof ASK_READ_ACTIVITY_STATES)[number];\n\nexport const ASK_FILE_COUNT_BUCKETS = Object.freeze([\"one\", \"few\", \"many\"] as const);\nexport type AskFileCountBucket = (typeof ASK_FILE_COUNT_BUCKETS)[number];\n\nexport const ASK_SOURCE_CONFIDENCES = Object.freeze([\n \"exact\",\n \"probable\",\n \"approximate\",\n] as const);\nexport type AskSourceConfidence = (typeof ASK_SOURCE_CONFIDENCES)[number];\n\nexport const CONTEXTUAL_ASK_PERMISSION_PROFILE = \"spotpatch-ask-readonly\" as const;\n","export const SPOTPATCH_API_BASE = \"/__spotpatch/v1\" as const;\nexport const SPOTPATCH_TOKEN_HEADER = \"X-SpotPatch-Token\" as const;\n\nexport const SPOTPATCH_ENDPOINTS = Object.freeze({\n bootstrap: `${SPOTPATCH_API_BASE}/bootstrap`,\n sourceContext: `${SPOTPATCH_API_BASE}/source-context`,\n openEditor: `${SPOTPATCH_API_BASE}/open-editor`,\n dataFlowComponentReport: `${SPOTPATCH_API_BASE}/data-flow/component-report`,\n dataFlowPageReport: `${SPOTPATCH_API_BASE}/data-flow/page-report`,\n agentCapability: `${SPOTPATCH_API_BASE}/agent/capability`,\n agentWorkspaceHealth: `${SPOTPATCH_API_BASE}/agent/workspace-health`,\n agentJobs: `${SPOTPATCH_API_BASE}/agent/jobs`,\n askCapability: `${SPOTPATCH_API_BASE}/ask/capability`,\n askJobs: `${SPOTPATCH_API_BASE}/ask/jobs`,\n externalHandoffCapability: `${SPOTPATCH_API_BASE}/external-handoff/capability`,\n externalHandoffPublish: `${SPOTPATCH_API_BASE}/external-handoff/publish`,\n externalHandoffStatus: `${SPOTPATCH_API_BASE}/external-handoff/status`,\n externalHandoffResolveDelivery: `${SPOTPATCH_API_BASE}/external-handoff/resolve-delivery`,\n externalAgentControlStatus: `${SPOTPATCH_API_BASE}/external-agent/control/status`,\n externalAgentControlConnect: `${SPOTPATCH_API_BASE}/external-agent/control/connect`,\n externalAgentControlDisconnect: `${SPOTPATCH_API_BASE}/external-agent/control/disconnect`,\n externalAgentControlCancel: `${SPOTPATCH_API_BASE}/external-agent/control/cancel`,\n externalAgentEvents: `${SPOTPATCH_API_BASE}/external-agent/events`,\n externalAgentResult: `${SPOTPATCH_API_BASE}/external-agent/result`,\n});\n\nexport type AgentJobAction = \"events\" | \"result\" | \"cancel\" | \"apply\" | \"revert\";\nexport type AskJobAction = \"events\" | \"result\" | \"cancel\";\n\nexport function getAgentJobEndpoint(jobId: string, action: AgentJobAction): string {\n return `${SPOTPATCH_ENDPOINTS.agentJobs}/${encodeURIComponent(jobId)}/${action}`;\n}\n\nexport function getAskJobEndpoint(\n jobId: string,\n action: AskJobAction,\n options: Readonly<{ afterSequence?: number }> = {},\n): string {\n const endpoint = `${SPOTPATCH_ENDPOINTS.askJobs}/${encodeURIComponent(jobId)}/${action}`;\n if (action !== \"events\" && options.afterSequence !== undefined) {\n throw new RangeError(\"afterSequence is only valid for the events endpoint.\");\n }\n if (options.afterSequence === undefined) return endpoint;\n if (!Number.isSafeInteger(options.afterSequence) || options.afterSequence < 0) {\n throw new RangeError(\"afterSequence must be a non-negative safe integer.\");\n }\n return `${endpoint}?afterSequence=${String(options.afterSequence)}`;\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
- export { A as ASK_ANSWER_WARNING_CODES, a as ASK_EXECUTOR_ANSWER_WARNING_CODES, b as ASK_FILE_COUNT_BUCKETS, c as ASK_JOB_STATUSES, d as ASK_READ_ACTIVITY_STATES, e as ASK_SOURCE_CONFIDENCES, f as AskAnswerBlock, g as AskAnswerResult, h as AskAnswerWarning, i as AskAnswerWarningCode, j as AskDraftOrigin, k as AskExecutorAnswerWarningCode, l as AskFileCountBucket, m as AskJobActionRequest, n as AskJobCreateRequest, o as AskJobEvent, p as AskJobEventsRequest, q as AskJobResultResponse, r as AskJobSnapshot, s as AskJobStatus, t as AskReadActivityState, u as AskSourceConfidence, v as AskSourceReference, C as CONTEXTUAL_ASK_EXECUTOR_KINDS, w as CONTEXTUAL_ASK_EXECUTOR_STATES, x as CONTEXTUAL_ASK_LIMITS, y as CONTEXTUAL_ASK_SCHEMA_VERSION, z as ContextualAskCapability, B as ContextualAskCapabilityRequest, D as ContextualAskExecutorCapability, E as ContextualAskExecutorKind, F as ContextualAskExecutorState, S as SpotAskTaskEnvelope, G as SpotChangeTaskEnvelope, H as SpotSelectionContext, I as SpotSelectionTarget, J as SpotTaskEnvelope } from './contextual-ask-BpbkpFFf.cjs';
1
+ export { A as ASK_ANSWER_WARNING_CODES, a as ASK_EXECUTOR_ANSWER_WARNING_CODES, b as ASK_FILE_COUNT_BUCKETS, c as ASK_JOB_STATUSES, d as ASK_READ_ACTIVITY_STATES, e as ASK_SOURCE_CONFIDENCES, f as AskAnswerBlock, g as AskAnswerResult, h as AskAnswerWarning, i as AskAnswerWarningCode, j as AskDraftOrigin, k as AskExecutorAnswerWarningCode, l as AskFileCountBucket, m as AskJobActionRequest, n as AskJobCreateRequest, o as AskJobEvent, p as AskJobEventsRequest, q as AskJobResultResponse, r as AskJobSnapshot, s as AskJobStatus, t as AskReadActivityState, u as AskSourceConfidence, v as AskSourceReference, C as CONTEXTUAL_ASK_EXECUTOR_KINDS, w as CONTEXTUAL_ASK_EXECUTOR_STATES, x as CONTEXTUAL_ASK_LIMITS, y as CONTEXTUAL_ASK_SCHEMA_VERSION, z as ContextualAskCapability, B as ContextualAskCapabilityRequest, D as ContextualAskExecutorCapability, E as ContextualAskExecutorKind, F as ContextualAskExecutorState, S as SpotAskTaskEnvelope, G as SpotChangeTaskEnvelope, H as SpotSelectionContext, I as SpotSelectionTarget, J as SpotTaskEnvelope } from './contextual-ask-Dz3Mh9LR.cjs';
2
2
  export { A as AskJobAction, S as SPOTPATCH_ENDPOINTS, a as SPOTPATCH_TOKEN_HEADER, g as getAskJobEndpoint } from './endpoints-O3ohYyAo.cjs';
3
3
  import 'zod';
4
4
 
@@ -1,4 +1,4 @@
1
- export { A as ASK_ANSWER_WARNING_CODES, a as ASK_EXECUTOR_ANSWER_WARNING_CODES, b as ASK_FILE_COUNT_BUCKETS, c as ASK_JOB_STATUSES, d as ASK_READ_ACTIVITY_STATES, e as ASK_SOURCE_CONFIDENCES, f as AskAnswerBlock, g as AskAnswerResult, h as AskAnswerWarning, i as AskAnswerWarningCode, j as AskDraftOrigin, k as AskExecutorAnswerWarningCode, l as AskFileCountBucket, m as AskJobActionRequest, n as AskJobCreateRequest, o as AskJobEvent, p as AskJobEventsRequest, q as AskJobResultResponse, r as AskJobSnapshot, s as AskJobStatus, t as AskReadActivityState, u as AskSourceConfidence, v as AskSourceReference, C as CONTEXTUAL_ASK_EXECUTOR_KINDS, w as CONTEXTUAL_ASK_EXECUTOR_STATES, x as CONTEXTUAL_ASK_LIMITS, y as CONTEXTUAL_ASK_SCHEMA_VERSION, z as ContextualAskCapability, B as ContextualAskCapabilityRequest, D as ContextualAskExecutorCapability, E as ContextualAskExecutorKind, F as ContextualAskExecutorState, S as SpotAskTaskEnvelope, G as SpotChangeTaskEnvelope, H as SpotSelectionContext, I as SpotSelectionTarget, J as SpotTaskEnvelope } from './contextual-ask-BpbkpFFf.js';
1
+ export { A as ASK_ANSWER_WARNING_CODES, a as ASK_EXECUTOR_ANSWER_WARNING_CODES, b as ASK_FILE_COUNT_BUCKETS, c as ASK_JOB_STATUSES, d as ASK_READ_ACTIVITY_STATES, e as ASK_SOURCE_CONFIDENCES, f as AskAnswerBlock, g as AskAnswerResult, h as AskAnswerWarning, i as AskAnswerWarningCode, j as AskDraftOrigin, k as AskExecutorAnswerWarningCode, l as AskFileCountBucket, m as AskJobActionRequest, n as AskJobCreateRequest, o as AskJobEvent, p as AskJobEventsRequest, q as AskJobResultResponse, r as AskJobSnapshot, s as AskJobStatus, t as AskReadActivityState, u as AskSourceConfidence, v as AskSourceReference, C as CONTEXTUAL_ASK_EXECUTOR_KINDS, w as CONTEXTUAL_ASK_EXECUTOR_STATES, x as CONTEXTUAL_ASK_LIMITS, y as CONTEXTUAL_ASK_SCHEMA_VERSION, z as ContextualAskCapability, B as ContextualAskCapabilityRequest, D as ContextualAskExecutorCapability, E as ContextualAskExecutorKind, F as ContextualAskExecutorState, S as SpotAskTaskEnvelope, G as SpotChangeTaskEnvelope, H as SpotSelectionContext, I as SpotSelectionTarget, J as SpotTaskEnvelope } from './contextual-ask-Dz3Mh9LR.js';
2
2
  export { A as AskJobAction, S as SPOTPATCH_ENDPOINTS, a as SPOTPATCH_TOKEN_HEADER, g as getAskJobEndpoint } from './endpoints-O3ohYyAo.js';
3
3
  import 'zod';
4
4
 
@@ -9,7 +9,7 @@ import {
9
9
  CONTEXTUAL_ASK_EXECUTOR_STATES,
10
10
  CONTEXTUAL_ASK_LIMITS,
11
11
  CONTEXTUAL_ASK_SCHEMA_VERSION
12
- } from "./chunk-EWJTKNL4.js";
12
+ } from "./chunk-RWFGFW4N.js";
13
13
  import {
14
14
  SPOTPATCH_ENDPOINTS,
15
15
  SPOTPATCH_TOKEN_HEADER,
@@ -66,6 +66,22 @@ module.exports = __toCommonJS(contextual_ask_node_exports);
66
66
  // src/model/context-schema.ts
67
67
  var import_zod = require("zod");
68
68
 
69
+ // src/model/element-instance.ts
70
+ var ELEMENT_INSTANCE_LIMITS = Object.freeze({
71
+ idCharacters: 128,
72
+ contextCharacters: 1200,
73
+ labelCharacters: 160,
74
+ selectorCharacters: 2048,
75
+ ancestorDepth: 8,
76
+ locatorDepth: 32
77
+ });
78
+ var ELEMENT_INSTANCE_STATES = [
79
+ "captured",
80
+ "changed",
81
+ "detached",
82
+ "restored"
83
+ ];
84
+
69
85
  // src/model/annotation.ts
70
86
  var MAX_ANNOTATION_TARGETS = 20;
71
87
  var MAX_TARGET_INSTRUCTION_CHARACTERS = 2e3;
@@ -78,6 +94,13 @@ var SPOTPATCH_LOCALE_PREFERENCES = Object.freeze([
78
94
 
79
95
  // src/model/context-schema.ts
80
96
  var boundedString = (maximum) => import_zod.z.string().max(maximum);
97
+ var elementInstanceContextSchema = import_zod.z.strictObject({
98
+ id: import_zod.z.string().min(1).max(ELEMENT_INSTANCE_LIMITS.idCharacters).regex(/^[A-Za-z0-9_-]+$/u),
99
+ state: import_zod.z.enum(ELEMENT_INSTANCE_STATES),
100
+ selectorStatus: import_zod.z.enum(["unique-at-capture", "unavailable"]),
101
+ label: boundedString(ELEMENT_INSTANCE_LIMITS.labelCharacters),
102
+ context: boundedString(ELEMENT_INSTANCE_LIMITS.contextCharacters)
103
+ });
81
104
  var sourceRefSchema = import_zod.z.strictObject({
82
105
  fileId: boundedString(128).optional(),
83
106
  relativePath: boundedString(1024).optional(),
@@ -122,6 +145,7 @@ var spotTargetContextSchema = import_zod.z.strictObject({
122
145
  source: sourceRefSchema.optional()
123
146
  }),
124
147
  element: import_zod.z.strictObject({
148
+ instance: elementInstanceContextSchema.optional(),
125
149
  tagName: boundedString(128),
126
150
  selector: boundedString(2048),
127
151
  sanitizedHtml: boundedString(8192),
@@ -282,7 +306,8 @@ var CONTEXTUAL_ASK_LIMITS = Object.freeze({
282
306
  });
283
307
  var CONTEXTUAL_ASK_EXECUTOR_KINDS = Object.freeze([
284
308
  "configured-key",
285
- "managed-codex"
309
+ "managed-codex",
310
+ "claude-code"
286
311
  ]);
287
312
  var CONTEXTUAL_ASK_EXECUTOR_STATES = Object.freeze([
288
313
  "ready",
@@ -340,7 +365,8 @@ var contextualAskExecutorPreferenceSchema = import_zod2.z.discriminatedUnion("ki
340
365
  providerProfileId: profileIdSchema,
341
366
  modelProfileId: profileIdSchema
342
367
  }),
343
- import_zod2.z.strictObject({ kind: import_zod2.z.literal("managed-codex") })
368
+ import_zod2.z.strictObject({ kind: import_zod2.z.literal("managed-codex") }),
369
+ import_zod2.z.strictObject({ kind: import_zod2.z.literal("claude-code") })
344
370
  ]);
345
371
  var contextualAskOptionsSchema = import_zod2.z.union([
346
372
  import_zod2.z.boolean(),