@spotpatch/shared 1.9.0 → 1.11.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/chunk-2LVIH7OA.js +75 -0
  2. package/dist/chunk-2LVIH7OA.js.map +1 -0
  3. package/dist/chunk-JGOIBOFI.js +34 -0
  4. package/dist/chunk-JGOIBOFI.js.map +1 -0
  5. package/dist/chunk-JU5HIWX7.js +431 -0
  6. package/dist/chunk-JU5HIWX7.js.map +1 -0
  7. package/dist/{chunk-K2UAPG7T.js → chunk-RK46Y7LD.js} +2 -23
  8. package/dist/chunk-RK46Y7LD.js.map +1 -0
  9. package/dist/{data-flow-runtime-zwbvImvl.d.cts → data-flow-runtime-BiouPr1G.d.cts} +2 -16
  10. package/dist/{data-flow-runtime-zwbvImvl.d.ts → data-flow-runtime-oKZOBYAB.d.ts} +2 -16
  11. package/dist/data-flow-runtime.cjs +11 -1
  12. package/dist/data-flow-runtime.cjs.map +1 -1
  13. package/dist/data-flow-runtime.d.cts +2 -1
  14. package/dist/data-flow-runtime.d.ts +2 -1
  15. package/dist/data-flow-runtime.js +4 -2
  16. package/dist/endpoints-GedF44M2.d.cts +26 -0
  17. package/dist/endpoints-GedF44M2.d.ts +26 -0
  18. package/dist/external-agent-control-BB-oicmw.d.cts +547 -0
  19. package/dist/external-agent-control-BB-oicmw.d.ts +547 -0
  20. package/dist/external-agent-node.cjs +692 -0
  21. package/dist/external-agent-node.cjs.map +1 -0
  22. package/dist/external-agent-node.d.cts +556 -0
  23. package/dist/external-agent-node.d.ts +556 -0
  24. package/dist/external-agent-node.js +210 -0
  25. package/dist/external-agent-node.js.map +1 -0
  26. package/dist/external-handoff--lT9XQEw.d.cts +720 -0
  27. package/dist/external-handoff--lT9XQEw.d.ts +720 -0
  28. package/dist/external-handoff-browser.cjs +324 -0
  29. package/dist/external-handoff-browser.cjs.map +1 -0
  30. package/dist/external-handoff-browser.d.cts +58 -0
  31. package/dist/external-handoff-browser.d.ts +58 -0
  32. package/dist/external-handoff-browser.js +198 -0
  33. package/dist/external-handoff-browser.js.map +1 -0
  34. package/dist/index.cjs +664 -129
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +164 -128
  37. package/dist/index.d.ts +164 -128
  38. package/dist/index.js +354 -267
  39. package/dist/index.js.map +1 -1
  40. package/package.json +28 -2
  41. package/dist/chunk-K2UAPG7T.js.map +0 -1
package/dist/index.js CHANGED
@@ -2,62 +2,68 @@ import {
2
2
  DATA_FLOW_SCHEMA_VERSION,
3
3
  DATA_FLOW_URL_QUERY_KEY_LIMIT,
4
4
  DEFAULT_DATA_FLOW_LIMITS,
5
- DEFAULT_RUNTIME_DATA_FLOW_LIMITS,
5
+ DEFAULT_RUNTIME_DATA_FLOW_LIMITS
6
+ } from "./chunk-RK46Y7LD.js";
7
+ import {
8
+ AGENT_APPLY_MODES,
9
+ AGENT_CAPABILITY_STATES,
10
+ AGENT_CHECK_STATUSES,
11
+ AGENT_FILE_CHANGE_KINDS,
12
+ AGENT_JOB_STATUSES,
13
+ AGENT_WORKSPACE_SNAPSHOT_LIMITS,
14
+ AGENT_WORKSPACE_STATES,
15
+ DEFAULT_AGENT_LIMITS,
16
+ ERROR_CODES,
17
+ ERROR_CODE_VALUES,
18
+ MAX_ANNOTATION_INSTRUCTION_CHARACTERS,
19
+ MAX_ANNOTATION_TARGETS,
20
+ MAX_TARGET_INSTRUCTION_CHARACTERS,
21
+ SPOTPATCH_LOCALES,
22
+ SPOTPATCH_LOCALE_PREFERENCES,
23
+ SpotPatchError,
24
+ activeAdapterSummarySchema,
25
+ agentCapabilityRequestSchema,
26
+ agentJobActionRequestSchema,
27
+ agentJobCreateRequestSchema,
28
+ agentWorkspaceHealthRequestSchema,
29
+ dataFlowComponentReportRequestSchema,
30
+ dataFlowPageReportRequestSchema,
31
+ dispatchSummarySchema,
32
+ externalHandoffCapabilityRequestSchema,
33
+ externalHandoffCapabilitySchema,
34
+ externalHandoffPublishDeliverySchema,
35
+ externalHandoffPublishRequestSchema,
36
+ externalHandoffPublishResultSchema,
37
+ externalHandoffReportableDispatchPhaseSchema,
38
+ externalHandoffResolveDeliveryRequestSchema,
39
+ externalHandoffSnapshotSchema,
40
+ externalHandoffStatusRequestSchema,
41
+ externalHandoffStatusResultSchema,
42
+ externalHandoffSummarySchema,
43
+ isErrorCode,
44
+ openEditorRequestSchema,
45
+ runtimeBootstrapRequestSchema,
46
+ sourceContextRequestSchema,
47
+ spotAnnotationRequestSchema,
48
+ spotTargetContextRequestSchema
49
+ } from "./chunk-JU5HIWX7.js";
50
+ import {
6
51
  SPOTPATCH_API_BASE,
7
52
  SPOTPATCH_ENDPOINTS,
8
53
  SPOTPATCH_TOKEN_HEADER,
9
54
  getAgentJobEndpoint
10
- } from "./chunk-K2UAPG7T.js";
11
-
12
- // src/errors/spotpatch-error.ts
13
- var SpotPatchError = class extends Error {
14
- code;
15
- constructor(code, message = code, options) {
16
- super(message, options);
17
- this.name = "SpotPatchError";
18
- this.code = code;
19
- }
20
- };
21
-
22
- // src/errors/error-code.ts
23
- var ERROR_CODES = {
24
- INVALID_REQUEST: "INVALID_REQUEST",
25
- INVALID_TOKEN: "INVALID_TOKEN",
26
- ORIGIN_NOT_ALLOWED: "ORIGIN_NOT_ALLOWED",
27
- SOURCE_NOT_FOUND: "SOURCE_NOT_FOUND",
28
- SOURCE_OUTSIDE_ROOT: "SOURCE_OUTSIDE_ROOT",
29
- SOURCE_TOO_LARGE: "SOURCE_TOO_LARGE",
30
- EDITOR_OPEN_FAILED: "EDITOR_OPEN_FAILED",
31
- DATA_FLOW_DISABLED: "DATA_FLOW_DISABLED",
32
- DATA_FLOW_SOURCE_STALE: "DATA_FLOW_SOURCE_STALE",
33
- DATA_FLOW_ANALYSIS_CANCELLED: "DATA_FLOW_ANALYSIS_CANCELLED",
34
- AI_DISABLED: "AI_DISABLED",
35
- PROVIDER_NOT_CONFIGURED: "PROVIDER_NOT_CONFIGURED",
36
- PROVIDER_AUTH_FAILED: "PROVIDER_AUTH_FAILED",
37
- PROVIDER_PROTOCOL_UNSUPPORTED: "PROVIDER_PROTOCOL_UNSUPPORTED",
38
- MODEL_NOT_ALLOWED: "MODEL_NOT_ALLOWED",
39
- MODEL_TOOL_CALL_UNSUPPORTED: "MODEL_TOOL_CALL_UNSUPPORTED",
40
- PROVIDER_RATE_LIMITED: "PROVIDER_RATE_LIMITED",
41
- AGENT_BUSY: "AGENT_BUSY",
42
- AGENT_LIMIT_EXCEEDED: "AGENT_LIMIT_EXCEEDED",
43
- AGENT_CANCELLED: "AGENT_CANCELLED",
44
- WORKTREE_DIRTY: "WORKTREE_DIRTY",
45
- WORKTREE_NOT_REPOSITORY: "WORKTREE_NOT_REPOSITORY",
46
- WORKTREE_OPERATION_IN_PROGRESS: "WORKTREE_OPERATION_IN_PROGRESS",
47
- WORKTREE_CONFLICTED: "WORKTREE_CONFLICTED",
48
- WORKTREE_LOCAL_CHANGES_TOO_LARGE: "WORKTREE_LOCAL_CHANGES_TOO_LARGE",
49
- WORKTREE_UNTRACKED_UNSUPPORTED: "WORKTREE_UNTRACKED_UNSUPPORTED",
50
- WORKTREE_LOCAL_CHANGES_UNSUPPORTED: "WORKTREE_LOCAL_CHANGES_UNSUPPORTED",
51
- TOOL_DENIED: "TOOL_DENIED",
52
- TOOL_INPUT_INVALID: "TOOL_INPUT_INVALID",
53
- TOOL_ARGUMENTS_INVALID: "TOOL_ARGUMENTS_INVALID",
54
- TOOL_CALL_ID_CONFLICT: "TOOL_CALL_ID_CONFLICT",
55
- TOOL_PATH_DENIED: "TOOL_PATH_DENIED",
56
- PATCH_REJECTED: "PATCH_REJECTED",
57
- VALIDATION_FAILED: "VALIDATION_FAILED",
58
- APPLY_CONFLICT: "APPLY_CONFLICT",
59
- INTERNAL_ERROR: "INTERNAL_ERROR"
60
- };
55
+ } from "./chunk-JGOIBOFI.js";
56
+ import {
57
+ EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,
58
+ EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES,
59
+ EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,
60
+ EXTERNAL_HANDOFF_DISPATCH_PHASES,
61
+ EXTERNAL_HANDOFF_FRAMEWORKS,
62
+ EXTERNAL_HANDOFF_LIMITS,
63
+ EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,
64
+ EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION,
65
+ EXTERNAL_HANDOFF_STATES
66
+ } from "./chunk-2LVIH7OA.js";
61
67
 
62
68
  // src/security/redaction.ts
63
69
  var INLINE_DATA_PATTERN = /data:[^\s"'<>]*;base64,[a-z0-9+/_=-]+/giu;
@@ -128,16 +134,6 @@ function sanitizeUrl(value, baseUrl) {
128
134
  }
129
135
  }
130
136
 
131
- // src/model/annotation.ts
132
- var MAX_ANNOTATION_TARGETS = 20;
133
- var MAX_TARGET_INSTRUCTION_CHARACTERS = 2e3;
134
- var MAX_ANNOTATION_INSTRUCTION_CHARACTERS = 4e3;
135
- var SPOTPATCH_LOCALES = Object.freeze(["en-US", "zh-CN"]);
136
- var SPOTPATCH_LOCALE_PREFERENCES = Object.freeze([
137
- "auto",
138
- ...SPOTPATCH_LOCALES
139
- ]);
140
-
141
137
  // src/model/data-flow-adapters.ts
142
138
  var DATA_FLOW_QUERY_ADAPTER_MODULES = Object.freeze([
143
139
  "@tanstack/react-query",
@@ -591,69 +587,6 @@ import { z as z2 } from "zod";
591
587
  // src/model/editor.ts
592
588
  var SPOTPATCH_EDITOR_PREFERENCES = ["auto", "vscode", "cursor"];
593
589
 
594
- // src/model/agent.ts
595
- var AGENT_APPLY_MODES = Object.freeze([
596
- "review",
597
- "auto",
598
- "trusted-auto"
599
- ]);
600
- var DEFAULT_AGENT_LIMITS = Object.freeze({
601
- maxTurns: 20,
602
- maxToolCalls: 80,
603
- maxChangedFiles: 20,
604
- maxDiffBytes: 512e3,
605
- maxReadBytesPerFile: 256e3,
606
- maxToolOutputCharacters: 4e4,
607
- maxProviderResponseBytes: 2e6,
608
- providerConnectTimeoutMs: 15e3,
609
- providerFirstByteTimeoutMs: 3e4,
610
- providerIdleTimeoutMs: 6e4,
611
- checkTimeoutMs: 12e4,
612
- jobTimeoutMs: 6e5
613
- });
614
- var AGENT_JOB_STATUSES = Object.freeze([
615
- "queued",
616
- "preparing",
617
- "running",
618
- "validating",
619
- "awaiting-review",
620
- "applying",
621
- "applied",
622
- "completed",
623
- "cancelling",
624
- "cancelled",
625
- "reverting",
626
- "reverted",
627
- "failed"
628
- ]);
629
- var AGENT_CAPABILITY_STATES = Object.freeze([
630
- "unknown",
631
- "probing",
632
- "agent-ready",
633
- "prompt-only",
634
- "unavailable"
635
- ]);
636
- var AGENT_WORKSPACE_STATES = Object.freeze([
637
- "ready",
638
- "consent-required",
639
- "blocked"
640
- ]);
641
- var AGENT_WORKSPACE_SNAPSHOT_LIMITS = Object.freeze({
642
- maxUntrackedFiles: 1e3,
643
- maxUntrackedBytes: 20 * 1024 * 1024
644
- });
645
- var AGENT_FILE_CHANGE_KINDS = Object.freeze([
646
- "added",
647
- "modified",
648
- "deleted"
649
- ]);
650
- var AGENT_CHECK_STATUSES = Object.freeze([
651
- "passed",
652
- "failed",
653
- "cancelled",
654
- "timed-out"
655
- ]);
656
-
657
590
  // src/model/runtime-config.ts
658
591
  var SPOTPATCH_NEXT_BUNDLERS = Object.freeze(["turbopack", "webpack"]);
659
592
  var SPOTPATCH_NEXT_ROUTER_KINDS = Object.freeze([
@@ -704,6 +637,7 @@ var runtimeConfigBaseShape = {
704
637
  debug: z2.boolean(),
705
638
  dataFlow: runtimeDataFlowConfigSchema,
706
639
  editor: z2.enum(SPOTPATCH_EDITOR_PREFERENCES),
640
+ externalAgent: z2.strictObject({ enabled: z2.boolean() }),
707
641
  frameworkVersion: boundedText2(64),
708
642
  locale: z2.enum(SPOTPATCH_LOCALE_PREFERENCES),
709
643
  maxTargets: z2.number().int().min(1).max(MAX_ANNOTATION_TARGETS),
@@ -749,149 +683,248 @@ function parseSourceMarker(value) {
749
683
  return Object.freeze({ fileId, line, column });
750
684
  }
751
685
 
752
- // src/protocol/requests.ts
686
+ // src/protocol/external-agent-control.ts
753
687
  import { z as z3 } from "zod";
754
- var runtimeBootstrapRequestSchema = z3.strictObject({});
755
- var sourceCoordinatesSchema = z3.strictObject({
756
- fileId: z3.string().min(1).max(128),
757
- line: z3.number().int().positive(),
758
- column: z3.number().int().positive()
688
+ var EXTERNAL_AGENT_CONTROL_SCHEMA_VERSION = 1;
689
+ var EXTERNAL_AGENT_MANAGED_ADAPTER_KINDS = Object.freeze(["codex"]);
690
+ var EXTERNAL_AGENT_MODES = Object.freeze(["inbox", "managed"]);
691
+ var EXTERNAL_AGENT_CONNECTION_STATES = Object.freeze([
692
+ "disconnected",
693
+ "diagnosing",
694
+ "awaiting-consent",
695
+ "connecting",
696
+ "ready",
697
+ "busy",
698
+ "degraded",
699
+ "error",
700
+ "disconnecting"
701
+ ]);
702
+ var EXTERNAL_AGENT_AUTH_READINESS = Object.freeze([
703
+ "authenticated",
704
+ "auth-not-required",
705
+ "signed-out",
706
+ "unknown"
707
+ ]);
708
+ var EXTERNAL_AGENT_GRANT_STATES = Object.freeze([
709
+ "missing",
710
+ "valid",
711
+ "invalid"
712
+ ]);
713
+ var EXTERNAL_AGENT_DELIVERY_STATUSES = Object.freeze([
714
+ "queued",
715
+ "dispatching",
716
+ "accepted",
717
+ "unknown"
718
+ ]);
719
+ var EXTERNAL_AGENT_EXECUTION_STATUSES = Object.freeze([
720
+ "not-observable",
721
+ "started",
722
+ "terminal-succeeded",
723
+ "terminal-failed",
724
+ "interrupted",
725
+ "unknown"
726
+ ]);
727
+ var EXTERNAL_AGENT_MANAGED_PHASES = Object.freeze([
728
+ "preparing",
729
+ "running",
730
+ "auditing",
731
+ "validating",
732
+ "applying",
733
+ "completed",
734
+ "review-required",
735
+ "failed",
736
+ "cancelled",
737
+ "cleanup-warning"
738
+ ]);
739
+ var EXTERNAL_AGENT_VALIDATION_OUTCOMES = Object.freeze([
740
+ "passed",
741
+ "failed",
742
+ "not-configured",
743
+ "unavailable"
744
+ ]);
745
+ var EXTERNAL_AGENT_CHECK_OUTCOMES = Object.freeze([
746
+ "passed",
747
+ "failed",
748
+ "unavailable"
749
+ ]);
750
+ var EXTERNAL_AGENT_ERROR_STAGES = Object.freeze([
751
+ "integration",
752
+ "binary",
753
+ "handshake",
754
+ "auth",
755
+ "model",
756
+ "protocol",
757
+ "snapshot",
758
+ "audit",
759
+ "validation",
760
+ "apply",
761
+ "cleanup"
762
+ ]);
763
+ var EXTERNAL_AGENT_ERROR_RECOVERABILITY = Object.freeze([
764
+ "retry",
765
+ "user-action",
766
+ "reconfigure",
767
+ "none"
768
+ ]);
769
+ var EXTERNAL_AGENT_ERROR_CODES = Object.freeze([
770
+ "AGENT_BINARY_NOT_FOUND",
771
+ "AGENT_BINARY_UNTRUSTED",
772
+ "AGENT_VERSION_UNSUPPORTED",
773
+ "APP_SERVER_HANDSHAKE_FAILED",
774
+ "AGENT_AUTH_REQUIRED",
775
+ "AGENT_MODEL_UNAVAILABLE",
776
+ "AGENT_PROTOCOL_INCOMPATIBLE",
777
+ "CODEX_CONFIG_ISOLATION_UNSUPPORTED",
778
+ "MANAGED_GRANT_INVALID",
779
+ "MANAGED_PLATFORM_UNSUPPORTED",
780
+ "MANAGED_GIT_REQUIRED",
781
+ "MANAGED_SNAPSHOT_FAILED",
782
+ "MANAGED_SCOPE_VIOLATION",
783
+ "MANAGED_CHANGE_LIMIT_EXCEEDED",
784
+ "MANAGED_VALIDATION_FAILED",
785
+ "MANAGED_WORKSPACE_CONFLICT",
786
+ "MANAGED_APPLY_FAILED",
787
+ "MANAGED_CLEANUP_INCOMPLETE"
788
+ ]);
789
+ var EXTERNAL_AGENT_ACTIONS = Object.freeze([
790
+ "install-agent",
791
+ "use-supported-version",
792
+ "sign-in",
793
+ "choose-available-model",
794
+ "use-inbox",
795
+ "confirm-managed-access",
796
+ "review-candidate-diff",
797
+ "review-workspace-conflict",
798
+ "retry",
799
+ "inspect-cleanup-warning"
800
+ ]);
801
+ var EXTERNAL_AGENT_MANAGED_PROFILE = "managed-apply-v1";
802
+ var EXTERNAL_AGENT_CONTROL_LIMITS = Object.freeze({
803
+ maximumEventSubscribers: 4,
804
+ eventHeartbeatMs: 15e3,
805
+ eventReconnectMinimumMs: 500,
806
+ eventReconnectMaximumMs: 1e4,
807
+ maximumChangedFiles: DEFAULT_AGENT_LIMITS.maxChangedFiles,
808
+ maximumChecks: 64,
809
+ maximumEventLineBytes: 64 * 1024,
810
+ maximumResultDiffBytes: DEFAULT_AGENT_LIMITS.maxDiffBytes
759
811
  });
760
- var sourceContextRequestSchema = sourceCoordinatesSchema.extend({
761
- maxLines: z3.number().int().positive()
762
- }).strict();
763
- var openEditorRequestSchema = sourceCoordinatesSchema.strict();
764
- var dataFlowSourceCoordinatesRequestSchema = sourceCoordinatesSchema.extend({
765
- schemaVersion: z3.literal(1),
766
- sourceVersion: z3.string().min(1).max(128).optional()
767
- }).strict();
768
- var dataFlowComponentIdentityRequestSchema = z3.strictObject({
769
- schemaVersion: z3.literal(1),
770
- componentSourceId: z3.string().min(1).max(128),
771
- sourceVersion: z3.string().min(1).max(128)
812
+ var isoTimestampSchema = z3.iso.datetime();
813
+ var requestIdSchema = z3.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/u);
814
+ var safeRelativePathSchema = z3.string().min(1).max(4096).superRefine((value, context) => {
815
+ const segments = value.split("/");
816
+ if (value.startsWith("/") || value.includes("\\") || segments.some(
817
+ (segment) => segment.length === 0 || segment === "." || segment === ".."
818
+ )) {
819
+ context.addIssue({ code: "custom", message: "Expected a safe relative path." });
820
+ }
772
821
  });
773
- var dataFlowComponentReportRequestSchema = z3.union([
774
- dataFlowSourceCoordinatesRequestSchema,
775
- dataFlowComponentIdentityRequestSchema
776
- ]);
777
- var dataFlowPageReportRequestSchema = z3.strictObject({
778
- schemaVersion: z3.literal(1),
779
- targets: z3.array(dataFlowComponentReportRequestSchema).min(1).max(MAX_ANNOTATION_TARGETS)
822
+ var externalAgentErrorSchema = z3.strictObject({
823
+ code: z3.enum(EXTERNAL_AGENT_ERROR_CODES),
824
+ stage: z3.enum(EXTERNAL_AGENT_ERROR_STAGES),
825
+ recoverability: z3.enum(EXTERNAL_AGENT_ERROR_RECOVERABILITY),
826
+ action: z3.enum(EXTERNAL_AGENT_ACTIONS)
780
827
  });
781
- var profileIdSchema2 = z3.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
782
- var boundedString = (maximum) => z3.string().max(maximum);
783
- var sourceRefSchema = z3.strictObject({
784
- fileId: boundedString(128).optional(),
785
- relativePath: boundedString(1024).optional(),
786
- line: z3.number().int().positive().optional(),
787
- column: z3.number().int().positive().optional(),
788
- origin: z3.enum(["jsx-host", "react-fiber", "dom-ancestor", "none"]),
789
- confidence: z3.enum(["exact", "probable", "approximate", "unknown"])
828
+ var managedFileSummarySchema = z3.strictObject({
829
+ path: safeRelativePathSchema,
830
+ additions: z3.number().int().nonnegative(),
831
+ deletions: z3.number().int().nonnegative()
790
832
  });
791
- var matchedStyleRuleSchema = z3.strictObject({
792
- selector: boundedString(2048),
793
- declarations: boundedString(8192),
794
- source: boundedString(1024).optional(),
795
- media: boundedString(1024).optional()
833
+ var managedCheckSummarySchema = z3.strictObject({
834
+ id: z3.string().min(1).max(128).regex(/^[A-Za-z0-9._-]+$/u),
835
+ outcome: z3.enum(EXTERNAL_AGENT_CHECK_OUTCOMES),
836
+ durationMs: z3.number().int().nonnegative(),
837
+ exitCode: z3.number().int().optional()
796
838
  });
797
- var codeContextSchema = z3.strictObject({
798
- relativePath: boundedString(1024),
799
- language: z3.enum(["tsx", "jsx"]),
800
- startLine: z3.number().int().positive(),
801
- endLine: z3.number().int().positive(),
802
- excerpt: boundedString(16e3),
803
- boundary: z3.enum(["component", "nearby-lines"])
839
+ var managedTimingSummarySchema = z3.strictObject({
840
+ preparing: z3.number().int().nonnegative().optional(),
841
+ agent: z3.number().int().nonnegative().optional(),
842
+ auditing: z3.number().int().nonnegative().optional(),
843
+ validating: z3.number().int().nonnegative().optional(),
844
+ applying: z3.number().int().nonnegative().optional(),
845
+ total: z3.number().int().nonnegative().optional()
804
846
  });
805
- var pageContextSchema = z3.strictObject({
806
- url: boundedString(2048),
807
- pathname: boundedString(2048),
808
- title: boundedString(1024),
809
- viewportWidth: z3.number().nonnegative(),
810
- viewportHeight: z3.number().nonnegative(),
811
- devicePixelRatio: z3.number().positive()
847
+ var managedTaskStatusSchema = z3.strictObject({
848
+ revision: z3.number().int().positive(),
849
+ deliveryStatus: z3.enum(EXTERNAL_AGENT_DELIVERY_STATUSES),
850
+ executionStatus: z3.enum(EXTERNAL_AGENT_EXECUTION_STATUSES),
851
+ managedPhase: z3.enum(EXTERNAL_AGENT_MANAGED_PHASES),
852
+ validationOutcome: z3.enum(EXTERNAL_AGENT_VALIDATION_OUTCOMES).optional(),
853
+ files: z3.array(managedFileSummarySchema).max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumChangedFiles),
854
+ checks: z3.array(managedCheckSummarySchema).max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumChecks),
855
+ timings: managedTimingSummarySchema,
856
+ resultExpiresAt: isoTimestampSchema.optional()
812
857
  });
813
- var spotTargetContextRequestSchema = z3.strictObject({
814
- instruction: z3.string().trim().min(1).max(MAX_TARGET_INSTRUCTION_CHARACTERS),
815
- page: pageContextSchema.optional(),
816
- source: sourceRefSchema,
817
- react: z3.strictObject({
818
- supported: z3.boolean(),
819
- version: boundedString(64).optional(),
820
- componentName: boundedString(256).optional(),
821
- componentSourceId: boundedString(128).optional(),
822
- sourceVersion: boundedString(128).optional(),
823
- componentStack: z3.array(boundedString(256)).max(64),
824
- source: sourceRefSchema.optional()
825
- }),
826
- element: z3.strictObject({
827
- tagName: boundedString(128),
828
- selector: boundedString(2048),
829
- sanitizedHtml: boundedString(8192),
830
- textPreview: boundedString(2048).optional(),
831
- role: boundedString(256).optional(),
832
- rect: z3.strictObject({
833
- x: z3.number(),
834
- y: z3.number(),
835
- width: z3.number().nonnegative(),
836
- height: z3.number().nonnegative()
837
- })
838
- }),
839
- styles: z3.strictObject({
840
- classNames: z3.array(boundedString(512)).max(256),
841
- inlineStyle: boundedString(8192).optional(),
842
- matchedRules: z3.array(matchedStyleRuleSchema).max(256),
843
- computed: z3.record(boundedString(256), boundedString(2048)),
844
- warnings: z3.array(boundedString(1024)).max(64)
858
+ var externalAgentControlStatusSchema = z3.strictObject({
859
+ schemaVersion: z3.literal(EXTERNAL_AGENT_CONTROL_SCHEMA_VERSION),
860
+ sequence: z3.number().int().nonnegative(),
861
+ mode: z3.enum(EXTERNAL_AGENT_MODES),
862
+ adapter: z3.strictObject({
863
+ kind: z3.enum(EXTERNAL_AGENT_MANAGED_ADAPTER_KINDS),
864
+ maturity: z3.literal("experimental"),
865
+ availability: z3.enum(["available", "unavailable"])
845
866
  }),
846
- code: codeContextSchema.optional(),
847
- warnings: z3.array(boundedString(1024)).max(64)
867
+ connectionState: z3.enum(EXTERNAL_AGENT_CONNECTION_STATES),
868
+ authReadiness: z3.enum(EXTERNAL_AGENT_AUTH_READINESS),
869
+ grantState: z3.enum(EXTERNAL_AGENT_GRANT_STATES),
870
+ requestedModel: z3.string().min(1).max(128).optional(),
871
+ effectiveModel: z3.string().min(1).max(128).optional(),
872
+ task: managedTaskStatusSchema.optional(),
873
+ error: externalAgentErrorSchema.optional(),
874
+ updatedAt: isoTimestampSchema
848
875
  });
849
- var spotAnnotationRequestSchema = z3.strictObject({
850
- schemaVersion: z3.literal(3),
851
- id: boundedString(128),
852
- locale: z3.enum(SPOTPATCH_LOCALES),
853
- page: pageContextSchema,
854
- targets: z3.array(spotTargetContextRequestSchema).min(1).max(MAX_ANNOTATION_TARGETS),
855
- createdAt: z3.iso.datetime()
856
- }).superRefine((annotation, context) => {
857
- const total = annotation.targets.reduce(
858
- (characters, target) => characters + target.instruction.length,
859
- 0
860
- );
861
- if (total > MAX_ANNOTATION_INSTRUCTION_CHARACTERS) {
862
- context.addIssue({
863
- code: "custom",
864
- message: "Combined target instructions exceed the annotation limit.",
865
- path: ["targets"]
866
- });
867
- }
876
+ var externalAgentControlStatusRequestSchema = z3.strictObject({});
877
+ var externalAgentControlConnectRequestSchema = z3.strictObject({
878
+ requestId: requestIdSchema,
879
+ adapterKind: z3.literal("codex"),
880
+ profile: z3.literal(EXTERNAL_AGENT_MANAGED_PROFILE)
868
881
  });
869
- var agentCapabilityRequestSchema = z3.strictObject({
870
- providerProfileId: profileIdSchema2,
871
- modelProfileId: profileIdSchema2
882
+ var externalAgentControlDisconnectRequestSchema = z3.strictObject({
883
+ requestId: requestIdSchema,
884
+ adapterKind: z3.literal("codex"),
885
+ revokeGrant: z3.boolean()
872
886
  });
873
- var agentWorkspaceHealthRequestSchema = z3.strictObject({});
874
- var agentJobCreateRequestSchema = z3.strictObject({
875
- annotation: spotAnnotationRequestSchema,
876
- applyMode: z3.enum(AGENT_APPLY_MODES).optional(),
877
- providerProfileId: profileIdSchema2,
878
- modelProfileId: profileIdSchema2,
879
- providerDataConsent: z3.literal(true),
880
- trustedFastModeConsent: z3.literal(true).optional(),
881
- workingTreeMode: z3.enum(["require-clean", "include-local-changes"]).default("require-clean")
887
+ var externalAgentControlCancelRequestSchema = z3.strictObject({
888
+ requestId: requestIdSchema,
889
+ revision: z3.number().int().positive()
890
+ });
891
+ var externalAgentEventsRequestSchema = z3.strictObject({
892
+ afterSequence: z3.number().int().nonnegative().optional()
893
+ });
894
+ var externalAgentEventSchema = z3.discriminatedUnion("type", [
895
+ z3.strictObject({
896
+ type: z3.literal("status"),
897
+ data: externalAgentControlStatusSchema
898
+ }),
899
+ z3.strictObject({
900
+ type: z3.literal("heartbeat"),
901
+ sequence: z3.number().int().nonnegative(),
902
+ emittedAt: isoTimestampSchema
903
+ })
904
+ ]);
905
+ var externalAgentResultRequestSchema = z3.strictObject({
906
+ revision: z3.number().int().positive()
907
+ });
908
+ var externalAgentManagedResultSchema = z3.strictObject({
909
+ revision: z3.number().int().positive(),
910
+ diff: z3.string().max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumResultDiffBytes),
911
+ files: z3.array(managedFileSummarySchema).max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumChangedFiles),
912
+ checks: z3.array(managedCheckSummarySchema).max(EXTERNAL_AGENT_CONTROL_LIMITS.maximumChecks),
913
+ timings: managedTimingSummarySchema,
914
+ validationOutcome: z3.enum(EXTERNAL_AGENT_VALIDATION_OUTCOMES),
915
+ expiresAt: isoTimestampSchema
882
916
  });
883
- var agentJobActionRequestSchema = z3.strictObject({});
884
917
 
885
918
  // src/protocol/agent-schemas.ts
886
919
  import { z as z4 } from "zod";
887
- var profileIdSchema3 = z4.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
888
- var boundedString2 = (maximum) => z4.string().max(maximum);
920
+ var profileIdSchema2 = z4.string().min(1).max(64).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
921
+ var boundedString = (maximum) => z4.string().max(maximum);
889
922
  var errorCodeSchema = z4.enum(ERROR_CODES);
890
923
  var agentCapabilitySnapshotSchema = z4.strictObject({
891
- providerProfileId: profileIdSchema3,
892
- providerLabel: boundedString2(100),
893
- modelProfileId: profileIdSchema3,
894
- modelLabel: boundedString2(100),
924
+ providerProfileId: profileIdSchema2,
925
+ providerLabel: boundedString(100),
926
+ modelProfileId: profileIdSchema2,
927
+ modelLabel: boundedString(100),
895
928
  protocol: z4.enum(["responses", "chat-completions"]),
896
929
  state: z4.enum(AGENT_CAPABILITY_STATES),
897
930
  authenticated: z4.boolean(),
@@ -931,26 +964,26 @@ var agentWorkspaceHealthSnapshotSchema = z4.strictObject({
931
964
  { message: "Agent workspace health fields are inconsistent." }
932
965
  );
933
966
  var agentChangedFileSchema = z4.strictObject({
934
- relativePath: boundedString2(1024),
967
+ relativePath: boundedString(1024),
935
968
  kind: z4.enum(AGENT_FILE_CHANGE_KINDS),
936
969
  additions: z4.number().int().nonnegative(),
937
970
  deletions: z4.number().int().nonnegative()
938
971
  });
939
972
  var agentCheckResultSchema = z4.strictObject({
940
- checkId: profileIdSchema3,
941
- label: boundedString2(100),
973
+ checkId: profileIdSchema2,
974
+ label: boundedString(100),
942
975
  status: z4.enum(AGENT_CHECK_STATUSES),
943
976
  durationMs: z4.number().int().nonnegative(),
944
- output: boundedString2(8e4)
977
+ output: boundedString(8e4)
945
978
  });
946
979
  var agentJobSnapshotSchema = z4.strictObject({
947
980
  jobId: z4.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
948
981
  status: z4.enum(AGENT_JOB_STATUSES),
949
- providerProfileId: profileIdSchema3,
950
- providerLabel: boundedString2(100),
951
- modelProfileId: profileIdSchema3,
952
- modelLabel: boundedString2(100),
953
- phaseMessage: boundedString2(1024),
982
+ providerProfileId: profileIdSchema2,
983
+ providerLabel: boundedString(100),
984
+ modelProfileId: profileIdSchema2,
985
+ modelLabel: boundedString(100),
986
+ phaseMessage: boundedString(1024),
954
987
  createdAt: z4.iso.datetime(),
955
988
  updatedAt: z4.iso.datetime(),
956
989
  canCancel: z4.boolean(),
@@ -960,8 +993,8 @@ var agentJobSnapshotSchema = z4.strictObject({
960
993
  });
961
994
  var agentJobResultSchema = z4.strictObject({
962
995
  jobId: z4.string().min(22).max(128).regex(/^[A-Za-z0-9_-]+$/),
963
- summary: boundedString2(8e4),
964
- diff: boundedString2(1e6),
996
+ summary: boundedString(8e4),
997
+ diff: boundedString(1e6),
965
998
  files: z4.array(agentChangedFileSchema).max(100),
966
999
  checks: z4.array(agentCheckResultSchema).max(100)
967
1000
  });
@@ -991,17 +1024,17 @@ var agentJobEventSchema = z4.discriminatedUnion("type", [
991
1024
  }),
992
1025
  agentJobEventBaseSchema.extend({
993
1026
  type: z4.literal("phase"),
994
- data: z4.strictObject({ message: boundedString2(1024) })
1027
+ data: z4.strictObject({ message: boundedString(1024) })
995
1028
  }),
996
1029
  agentJobEventBaseSchema.extend({
997
1030
  type: z4.literal("tool"),
998
1031
  data: z4.strictObject({
999
1032
  turn: z4.number().int().positive(),
1000
- toolCallId: boundedString2(256),
1001
- toolName: boundedString2(100),
1033
+ toolCallId: boundedString(256),
1034
+ toolName: boundedString(100),
1002
1035
  state: z4.enum(["started", "succeeded", "failed"]),
1003
- relativePath: boundedString2(1024).optional(),
1004
- checkLabel: boundedString2(100).optional()
1036
+ relativePath: boundedString(1024).optional(),
1037
+ checkLabel: boundedString(100).optional()
1005
1038
  })
1006
1039
  }),
1007
1040
  agentJobEventBaseSchema.extend({
@@ -1016,7 +1049,7 @@ var agentJobEventSchema = z4.discriminatedUnion("type", [
1016
1049
  type: z4.literal("error"),
1017
1050
  data: z4.strictObject({
1018
1051
  code: errorCodeSchema,
1019
- message: boundedString2(1024)
1052
+ message: boundedString(1024)
1020
1053
  })
1021
1054
  })
1022
1055
  ]).superRefine((event, context) => {
@@ -1066,6 +1099,32 @@ export {
1066
1099
  DEFAULT_DATA_FLOW_LIMITS,
1067
1100
  DEFAULT_RUNTIME_DATA_FLOW_LIMITS,
1068
1101
  ERROR_CODES,
1102
+ ERROR_CODE_VALUES,
1103
+ EXTERNAL_AGENT_ACTIONS,
1104
+ EXTERNAL_AGENT_AUTH_READINESS,
1105
+ EXTERNAL_AGENT_CONNECTION_STATES,
1106
+ EXTERNAL_AGENT_CONTROL_LIMITS,
1107
+ EXTERNAL_AGENT_CONTROL_SCHEMA_VERSION,
1108
+ EXTERNAL_AGENT_DELIVERY_STATUSES,
1109
+ EXTERNAL_AGENT_ERROR_CODES,
1110
+ EXTERNAL_AGENT_ERROR_RECOVERABILITY,
1111
+ EXTERNAL_AGENT_ERROR_STAGES,
1112
+ EXTERNAL_AGENT_EXECUTION_STATUSES,
1113
+ EXTERNAL_AGENT_GRANT_STATES,
1114
+ EXTERNAL_AGENT_MANAGED_ADAPTER_KINDS,
1115
+ EXTERNAL_AGENT_MANAGED_PHASES,
1116
+ EXTERNAL_AGENT_MANAGED_PROFILE,
1117
+ EXTERNAL_AGENT_MODES,
1118
+ EXTERNAL_AGENT_VALIDATION_OUTCOMES,
1119
+ EXTERNAL_HANDOFF_ACTIVE_ADAPTER_KINDS,
1120
+ EXTERNAL_HANDOFF_ACTIVE_ADAPTER_STATES,
1121
+ EXTERNAL_HANDOFF_BROKER_PROTOCOL_VERSION,
1122
+ EXTERNAL_HANDOFF_DISPATCH_PHASES,
1123
+ EXTERNAL_HANDOFF_FRAMEWORKS,
1124
+ EXTERNAL_HANDOFF_LIMITS,
1125
+ EXTERNAL_HANDOFF_REPORTABLE_DISPATCH_PHASES,
1126
+ EXTERNAL_HANDOFF_SNAPSHOT_SCHEMA_VERSION,
1127
+ EXTERNAL_HANDOFF_STATES,
1069
1128
  MAX_ANNOTATION_INSTRUCTION_CHARACTERS,
1070
1129
  MAX_ANNOTATION_TARGETS,
1071
1130
  MAX_TARGET_INSTRUCTION_CHARACTERS,
@@ -1080,6 +1139,7 @@ export {
1080
1139
  SPOTPATCH_REPOSITORY_URL,
1081
1140
  SPOTPATCH_TOKEN_HEADER,
1082
1141
  SpotPatchError,
1142
+ activeAdapterSummarySchema,
1083
1143
  agentCapabilityRequestSchema,
1084
1144
  agentCapabilitySnapshotSchema,
1085
1145
  agentChangedFileSchema,
@@ -1096,10 +1156,37 @@ export {
1096
1156
  dataDependencySchema,
1097
1157
  dataFlowComponentReportRequestSchema,
1098
1158
  dataFlowPageReportRequestSchema,
1159
+ dispatchSummarySchema,
1160
+ externalAgentControlCancelRequestSchema,
1161
+ externalAgentControlConnectRequestSchema,
1162
+ externalAgentControlDisconnectRequestSchema,
1163
+ externalAgentControlStatusRequestSchema,
1164
+ externalAgentControlStatusSchema,
1165
+ externalAgentErrorSchema,
1166
+ externalAgentEventSchema,
1167
+ externalAgentEventsRequestSchema,
1168
+ externalAgentManagedResultSchema,
1169
+ externalAgentResultRequestSchema,
1170
+ externalHandoffCapabilityRequestSchema,
1171
+ externalHandoffCapabilitySchema,
1172
+ externalHandoffPublishDeliverySchema,
1173
+ externalHandoffPublishRequestSchema,
1174
+ externalHandoffPublishResultSchema,
1175
+ externalHandoffReportableDispatchPhaseSchema,
1176
+ externalHandoffResolveDeliveryRequestSchema,
1177
+ externalHandoffSnapshotSchema,
1178
+ externalHandoffStatusRequestSchema,
1179
+ externalHandoffStatusResultSchema,
1180
+ externalHandoffSummarySchema,
1099
1181
  formatSourceMarker,
1100
1182
  getAgentJobEndpoint,
1183
+ isErrorCode,
1101
1184
  isSensitiveName,
1102
1185
  limitDataFlowReportCollections,
1186
+ managedCheckSummarySchema,
1187
+ managedFileSummarySchema,
1188
+ managedTaskStatusSchema,
1189
+ managedTimingSummarySchema,
1103
1190
  networkObservationSchema,
1104
1191
  openEditorRequestSchema,
1105
1192
  pageDataFlowReportSchema,