@opengeni/contracts 2.15.2 → 3.0.1-canary.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 (42) hide show
  1. package/dist/atlassian.js +10 -9
  2. package/dist/{chunk-NPYLOZAP.js → chunk-5LYFSZ7O.js} +12 -12
  3. package/dist/{chunk-QP3BIGSC.js → chunk-FBXZZSXA.js} +7668 -7654
  4. package/dist/chunk-FBXZZSXA.js.map +1 -0
  5. package/dist/chunk-FY5DZL7T.js +348 -0
  6. package/dist/chunk-FY5DZL7T.js.map +1 -0
  7. package/dist/{chunk-6TCVR53X.js → chunk-O5LEQHDM.js} +2 -2
  8. package/dist/chunk-P3HLDT77.js +59 -0
  9. package/dist/chunk-P3HLDT77.js.map +1 -0
  10. package/dist/chunk-TEMFILR7.js +143 -0
  11. package/dist/chunk-TEMFILR7.js.map +1 -0
  12. package/dist/connect.d.ts +325 -0
  13. package/dist/connect.js +182 -0
  14. package/dist/connect.js.map +1 -0
  15. package/dist/connection-authority.js +28 -334
  16. package/dist/connection-authority.js.map +1 -1
  17. package/dist/editable-artifact-codec-registry.js +2 -2
  18. package/dist/editable-artifact-live.js +2 -2
  19. package/dist/editable-artifact-serialized-commit.js +3 -3
  20. package/dist/editable-artifacts.js +24 -24
  21. package/dist/external-identities.d.ts +620 -0
  22. package/dist/external-identities.js +34 -0
  23. package/dist/external-identities.js.map +1 -0
  24. package/dist/google-drive.js +12 -11
  25. package/dist/google-drive.js.map +1 -1
  26. package/dist/host-mcp-bindings.d.ts +297 -0
  27. package/dist/host-mcp-bindings.js +195 -0
  28. package/dist/host-mcp-bindings.js.map +1 -0
  29. package/dist/index.d.ts +150 -72
  30. package/dist/index.js +89 -81
  31. package/dist/personal-github.js +10 -9
  32. package/dist/personal-github.js.map +1 -1
  33. package/dist/sandbox-snapshots.d.ts +18 -0
  34. package/package.json +13 -1
  35. package/src/connect.ts +202 -0
  36. package/src/external-identities.ts +213 -0
  37. package/src/host-mcp-bindings.ts +226 -0
  38. package/src/index.ts +165 -69
  39. package/src/sandbox-snapshots.ts +67 -3
  40. package/dist/chunk-QP3BIGSC.js.map +0 -1
  41. /package/dist/{chunk-NPYLOZAP.js.map → chunk-5LYFSZ7O.js.map} +0 -0
  42. /package/dist/{chunk-6TCVR53X.js.map → chunk-O5LEQHDM.js.map} +0 -0
package/dist/index.js CHANGED
@@ -610,6 +610,7 @@ import {
610
610
  HostExportCursor,
611
611
  HostExportInitiator,
612
612
  HostExportInitiatorContext,
613
+ HostMcpCreateSelections,
613
614
  HostSessionEvent,
614
615
  HostUsageEvent,
615
616
  HostUsageExport,
@@ -965,7 +966,6 @@ import {
965
966
  PackInstallationStatus,
966
967
  PackRigResolution,
967
968
  PackUninstallPreview,
968
- Permission,
969
969
  PersonalResourceAttachmentIntent,
970
970
  PersonalResourceAttachmentSummary,
971
971
  PersonalResourceRetentionMode,
@@ -1126,8 +1126,6 @@ import {
1126
1126
  SESSION_AUTHORIZATION_LIST_SCOPE_MAX_IDS,
1127
1127
  SESSION_EFFECTIVE_TOOL_POLICY_ID_LIMIT,
1128
1128
  SESSION_EFFECTIVE_TOOL_POLICY_ID_MAX_LENGTH,
1129
- SESSION_END_USER_ID_MAX_CHARS,
1130
- SESSION_END_USER_SOURCE_MAX_CHARS,
1131
1129
  SESSION_EVENT_CLIENT_EVENT_ID_MAX_BYTES,
1132
1130
  SESSION_EVENT_DUPLICATE_REASON_MAX_BYTES,
1133
1131
  SESSION_EVENT_ENVELOPE_MAX_BYTES,
@@ -1213,7 +1211,6 @@ import {
1213
1211
  SessionControlResponse,
1214
1212
  SessionControlState,
1215
1213
  SessionEffectiveToolPolicy,
1216
- SessionEndUser,
1217
1214
  SessionEvent,
1218
1215
  SessionEventLatestClass,
1219
1216
  SessionEventPayloadMode,
@@ -1259,6 +1256,7 @@ import {
1259
1256
  SessionRealtimeModel,
1260
1257
  SessionRealtimeMutationResponse,
1261
1258
  SessionRealtimeState,
1259
+ SessionScopeSubjectId,
1262
1260
  SessionSkill,
1263
1261
  SessionSkills,
1264
1262
  SessionSpawnDenial,
@@ -1747,6 +1745,7 @@ import {
1747
1745
  bundledSkillSelectionFromMetadata,
1748
1746
  canonicalCodexFleetReplayJsonV1,
1749
1747
  canonicalModalCheckpointProviderBinding,
1748
+ canonicalSkillReviewQuestion,
1750
1749
  canonicalizeSlackTaskPolicy,
1751
1750
  canonicalizeWorkspaceLearningSourceOverrides,
1752
1751
  capabilityCatalogItemIsTrustedForExposure,
@@ -1799,6 +1798,7 @@ import {
1799
1798
  omitInlineWorkspaceArchiveWhenObjectRefPresent,
1800
1799
  parseSkillFrontmatter,
1801
1800
  parseWorkspaceArchiveDescriptor,
1801
+ parseWorkspaceArchiveObjectKey,
1802
1802
  parseWorkspaceArchiveObjectRef,
1803
1803
  prefixedMcpToolName,
1804
1804
  readCodexCredentialPolicySnapshotV1,
@@ -1847,10 +1847,12 @@ import {
1847
1847
  signStreamToken,
1848
1848
  skillReviewHumanInput,
1849
1849
  stableJson,
1850
+ storedSessionMemoryScope,
1850
1851
  toolResultSpillFilename,
1851
1852
  toolResultSpillSandboxPath,
1852
1853
  turnExecutionPolicyAuditMetadata,
1853
1854
  validateSkillTextFiles,
1855
+ validateWorkspaceArchiveObjectRef,
1854
1856
  variableSetVariableNameReservation,
1855
1857
  verifyDelegatedAccessToken,
1856
1858
  verifyEnrollToken,
@@ -1864,7 +1866,7 @@ import {
1864
1866
  workspaceLearningPolicyRouterContext,
1865
1867
  workspaceLearningSourceKey,
1866
1868
  workspaceSlackReactionChannelAllowed
1867
- } from "./chunk-QP3BIGSC.js";
1869
+ } from "./chunk-FBXZZSXA.js";
1868
1870
  import {
1869
1871
  CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES,
1870
1872
  CONNECTOR_ATTACHMENT_MAX_BYTES,
@@ -1896,7 +1898,7 @@ import {
1896
1898
  assertCanonicalEditableArtifactSerializedCommit,
1897
1899
  decodeEditableArtifactSerializedCommit,
1898
1900
  encodeEditableArtifactSerializedCommit
1899
- } from "./chunk-6TCVR53X.js";
1901
+ } from "./chunk-O5LEQHDM.js";
1900
1902
  import {
1901
1903
  WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1,
1902
1904
  XaiProviderAccountAuthoritySnapshotV1
@@ -1924,6 +1926,29 @@ import {
1924
1926
  MAX_COMMITTED_TRANSACTION_OPERATIONS,
1925
1927
  decodeCommittedTransactionSummary
1926
1928
  } from "./chunk-3SIZGL3O.js";
1929
+ import {
1930
+ EDITABLE_ARTIFACT_COMMAND_MAX_BYTES,
1931
+ EDITABLE_ARTIFACT_INTENT_MAX_BYTES,
1932
+ EDITABLE_ARTIFACT_INTENT_MAX_CAUSAL_ACTORS,
1933
+ EDITABLE_ARTIFACT_INTENT_MAX_UNDO_TARGETS,
1934
+ EDITABLE_ARTIFACT_INTENT_PROTOCOL_VERSION,
1935
+ EDITABLE_ARTIFACT_INTENT_VERSION,
1936
+ EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES,
1937
+ EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES,
1938
+ assertEditableArtifactRequestHash,
1939
+ decodeEditableArtifactMutationIntent,
1940
+ encodeEditableArtifactMutationIntent,
1941
+ hashEditableArtifactMutationIntent,
1942
+ hashEditableArtifactMutationIntentBytes
1943
+ } from "./chunk-NVJMJWLL.js";
1944
+ import {
1945
+ EDITABLE_ARTIFACT_CAUSAL_FRONTIER_MAX_BYTES,
1946
+ EDITABLE_ARTIFACT_CAUSAL_FRONTIER_MAX_REPLICAS,
1947
+ EDITABLE_ARTIFACT_CAUSAL_FRONTIER_VERSION,
1948
+ assertCanonicalEditableArtifactCausalFrontierBytes,
1949
+ decodeEditableArtifactCausalFrontier,
1950
+ encodeEditableArtifactCausalFrontier
1951
+ } from "./chunk-YRKRZ6OF.js";
1927
1952
  import {
1928
1953
  CanonicalHumanBindingOperationRequest,
1929
1954
  CanonicalHumanIdentityMutationOutcome,
@@ -2005,59 +2030,34 @@ import {
2005
2030
  OrganizationRecoveryUnavailableReason,
2006
2031
  StartOrganizationRecoveryOperationRequest
2007
2032
  } from "./chunk-BCS7WHCK.js";
2008
- import {
2009
- SiteSessionPathError,
2010
- siteSessionPath
2011
- } from "./chunk-UGTBTPTQ.js";
2012
- import {
2013
- ConnectorDocumentDestination,
2014
- ConnectorDocumentDestinationAuthority,
2015
- ConnectorDocumentDestinationSelection,
2016
- bindConnectorDocumentDestination,
2017
- connectorDestinationDocumentAuthority,
2018
- connectorDocumentDestinationCollectionId,
2019
- legacyWorkspaceConnectorDocumentDestination,
2020
- resolveConnectorDocumentDestination
2021
- } from "./chunk-WYBDERIY.js";
2022
- import {
2023
- AUTOMATIC_SESSION_TITLE_FALLBACK,
2024
- AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES,
2025
- SESSION_TITLE_MAX_CHARACTERS,
2026
- boundAutomaticSessionTitle,
2027
- containsSensitiveAutomaticSessionTitleValue,
2028
- deriveAutomaticSessionTitlePreview,
2029
- deriveSessionDisplayTitle,
2030
- normalizeAutomaticSessionTitle,
2031
- sessionTitleIsPending
2032
- } from "./chunk-7ABONTXE.js";
2033
- import {
2034
- EDITABLE_ARTIFACT_COMMAND_MAX_BYTES,
2035
- EDITABLE_ARTIFACT_INTENT_MAX_BYTES,
2036
- EDITABLE_ARTIFACT_INTENT_MAX_CAUSAL_ACTORS,
2037
- EDITABLE_ARTIFACT_INTENT_MAX_UNDO_TARGETS,
2038
- EDITABLE_ARTIFACT_INTENT_PROTOCOL_VERSION,
2039
- EDITABLE_ARTIFACT_INTENT_VERSION,
2040
- EDITABLE_ARTIFACT_KERNEL_VERSION_MAX_BYTES,
2041
- EDITABLE_ARTIFACT_PRODUCT_MAX_SNAPSHOT_BYTES,
2042
- assertEditableArtifactRequestHash,
2043
- decodeEditableArtifactMutationIntent,
2044
- encodeEditableArtifactMutationIntent,
2045
- hashEditableArtifactMutationIntent,
2046
- hashEditableArtifactMutationIntentBytes
2047
- } from "./chunk-NVJMJWLL.js";
2048
- import {
2049
- EDITABLE_ARTIFACT_CAUSAL_FRONTIER_MAX_BYTES,
2050
- EDITABLE_ARTIFACT_CAUSAL_FRONTIER_MAX_REPLICAS,
2051
- EDITABLE_ARTIFACT_CAUSAL_FRONTIER_VERSION,
2052
- assertCanonicalEditableArtifactCausalFrontierBytes,
2053
- decodeEditableArtifactCausalFrontier,
2054
- encodeEditableArtifactCausalFrontier
2055
- } from "./chunk-YRKRZ6OF.js";
2056
2033
  import {
2057
2034
  EDITABLE_ARTIFACT_CODEC_REGISTRY,
2058
2035
  currentEditableArtifactCompatibility,
2059
2036
  editableArtifactCodecFor
2060
- } from "./chunk-NPYLOZAP.js";
2037
+ } from "./chunk-5LYFSZ7O.js";
2038
+ import {
2039
+ SPREADSHEET_ARTIFACT_METADATA_MAX_SHEETS,
2040
+ SPREADSHEET_ARTIFACT_METADATA_MIN_RESPONSE_BYTES,
2041
+ SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,
2042
+ SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES,
2043
+ SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES,
2044
+ SPREADSHEET_ARTIFACT_QUERY_VERSION,
2045
+ SPREADSHEET_ARTIFACT_VIEWPORT_MAX_AREA,
2046
+ SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS,
2047
+ SPREADSHEET_ARTIFACT_VIEWPORT_MIN_RESPONSE_BYTES,
2048
+ assertCanonicalSpreadsheetArtifactKernelProjectionBytes,
2049
+ assertCanonicalSpreadsheetArtifactKernelQueryBytes,
2050
+ decodeSpreadsheetArtifactKernelProjection,
2051
+ decodeSpreadsheetArtifactKernelQuery,
2052
+ decodeSpreadsheetMetadataKernelProjection,
2053
+ decodeSpreadsheetViewportKernelProjection,
2054
+ encodeSpreadsheetArtifactKernelProjection,
2055
+ encodeSpreadsheetArtifactKernelQuery,
2056
+ encodeSpreadsheetMetadataKernelProjection,
2057
+ encodeSpreadsheetMetadataKernelQuery,
2058
+ encodeSpreadsheetViewportKernelProjection,
2059
+ encodeSpreadsheetViewportKernelQuery
2060
+ } from "./chunk-Y3KNXVTD.js";
2061
2061
  import {
2062
2062
  PRESENTATION_ARTIFACT_COMMAND_MAX_BYTES,
2063
2063
  PRESENTATION_ARTIFACT_COMMAND_MAX_COMMANDS,
@@ -2090,29 +2090,6 @@ import {
2090
2090
  encodePresentationArtifactQuery,
2091
2091
  encodePresentationArtifactQueryResponse
2092
2092
  } from "./chunk-D2HKF2EF.js";
2093
- import {
2094
- SPREADSHEET_ARTIFACT_METADATA_MAX_SHEETS,
2095
- SPREADSHEET_ARTIFACT_METADATA_MIN_RESPONSE_BYTES,
2096
- SPREADSHEET_ARTIFACT_PROJECTION_MAX_BYTES,
2097
- SPREADSHEET_ARTIFACT_PROJECTION_MAX_STRING_BYTES,
2098
- SPREADSHEET_ARTIFACT_QUERY_MAX_BYTES,
2099
- SPREADSHEET_ARTIFACT_QUERY_VERSION,
2100
- SPREADSHEET_ARTIFACT_VIEWPORT_MAX_AREA,
2101
- SPREADSHEET_ARTIFACT_VIEWPORT_MAX_CELLS,
2102
- SPREADSHEET_ARTIFACT_VIEWPORT_MIN_RESPONSE_BYTES,
2103
- assertCanonicalSpreadsheetArtifactKernelProjectionBytes,
2104
- assertCanonicalSpreadsheetArtifactKernelQueryBytes,
2105
- decodeSpreadsheetArtifactKernelProjection,
2106
- decodeSpreadsheetArtifactKernelQuery,
2107
- decodeSpreadsheetMetadataKernelProjection,
2108
- decodeSpreadsheetViewportKernelProjection,
2109
- encodeSpreadsheetArtifactKernelProjection,
2110
- encodeSpreadsheetArtifactKernelQuery,
2111
- encodeSpreadsheetMetadataKernelProjection,
2112
- encodeSpreadsheetMetadataKernelQuery,
2113
- encodeSpreadsheetViewportKernelProjection,
2114
- encodeSpreadsheetViewportKernelQuery
2115
- } from "./chunk-Y3KNXVTD.js";
2116
2093
  import {
2117
2094
  SPREADSHEET_ARTIFACT_COMMAND_MAX_BYTES,
2118
2095
  SPREADSHEET_ARTIFACT_COMMAND_MAX_CELLS,
@@ -2163,6 +2140,34 @@ import {
2163
2140
  SPREADSHEET_ARTIFACT_MODEL_SCHEMA_VERSION,
2164
2141
  SPREADSHEET_COLLABORATION_SNAPSHOT_VERSION
2165
2142
  } from "./chunk-PX3VCKAU.js";
2143
+ import {
2144
+ SiteSessionPathError,
2145
+ siteSessionPath
2146
+ } from "./chunk-UGTBTPTQ.js";
2147
+ import {
2148
+ ConnectorDocumentDestination,
2149
+ ConnectorDocumentDestinationAuthority,
2150
+ ConnectorDocumentDestinationSelection,
2151
+ bindConnectorDocumentDestination,
2152
+ connectorDestinationDocumentAuthority,
2153
+ connectorDocumentDestinationCollectionId,
2154
+ legacyWorkspaceConnectorDocumentDestination,
2155
+ resolveConnectorDocumentDestination
2156
+ } from "./chunk-WYBDERIY.js";
2157
+ import {
2158
+ Permission
2159
+ } from "./chunk-P3HLDT77.js";
2160
+ import {
2161
+ AUTOMATIC_SESSION_TITLE_FALLBACK,
2162
+ AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES,
2163
+ SESSION_TITLE_MAX_CHARACTERS,
2164
+ boundAutomaticSessionTitle,
2165
+ containsSensitiveAutomaticSessionTitleValue,
2166
+ deriveAutomaticSessionTitlePreview,
2167
+ deriveSessionDisplayTitle,
2168
+ normalizeAutomaticSessionTitle,
2169
+ sessionTitleIsPending
2170
+ } from "./chunk-7ABONTXE.js";
2166
2171
  export {
2167
2172
  AGENT_AUTHORED_COMPANY_PROFILE_CONTENT_MAX_UTF8_BYTES,
2168
2173
  AGENT_AUTHORED_COMPANY_PROFILE_ENTRY_MAX_CHARS,
@@ -2858,6 +2863,7 @@ export {
2858
2863
  HostExportCursor,
2859
2864
  HostExportInitiator,
2860
2865
  HostExportInitiatorContext,
2866
+ HostMcpCreateSelections,
2861
2867
  HostSessionEvent,
2862
2868
  HostUsageEvent,
2863
2869
  HostUsageExport,
@@ -3434,8 +3440,6 @@ export {
3434
3440
  SESSION_AUTHORIZATION_LIST_SCOPE_MAX_IDS,
3435
3441
  SESSION_EFFECTIVE_TOOL_POLICY_ID_LIMIT,
3436
3442
  SESSION_EFFECTIVE_TOOL_POLICY_ID_MAX_LENGTH,
3437
- SESSION_END_USER_ID_MAX_CHARS,
3438
- SESSION_END_USER_SOURCE_MAX_CHARS,
3439
3443
  SESSION_EVENT_CLIENT_EVENT_ID_MAX_BYTES,
3440
3444
  SESSION_EVENT_DUPLICATE_REASON_MAX_BYTES,
3441
3445
  SESSION_EVENT_ENVELOPE_MAX_BYTES,
@@ -3539,7 +3543,6 @@ export {
3539
3543
  SessionControlResponse,
3540
3544
  SessionControlState,
3541
3545
  SessionEffectiveToolPolicy,
3542
- SessionEndUser,
3543
3546
  SessionEvent,
3544
3547
  SessionEventLatestClass,
3545
3548
  SessionEventPayloadMode,
@@ -3585,6 +3588,7 @@ export {
3585
3588
  SessionRealtimeModel,
3586
3589
  SessionRealtimeMutationResponse,
3587
3590
  SessionRealtimeState,
3591
+ SessionScopeSubjectId,
3588
3592
  SessionSkill,
3589
3593
  SessionSkills,
3590
3594
  SessionSpawnDenial,
@@ -4113,6 +4117,7 @@ export {
4113
4117
  bundledSkillSelectionFromMetadata,
4114
4118
  canonicalCodexFleetReplayJsonV1,
4115
4119
  canonicalModalCheckpointProviderBinding,
4120
+ canonicalSkillReviewQuestion,
4116
4121
  canonicalizeSlackTaskPolicy,
4117
4122
  canonicalizeWorkspaceLearningSourceOverrides,
4118
4123
  capabilityCatalogItemIsTrustedForExposure,
@@ -4212,6 +4217,7 @@ export {
4212
4217
  parseConnectorAttachmentTransferEnvelope,
4213
4218
  parseSkillFrontmatter,
4214
4219
  parseWorkspaceArchiveDescriptor,
4220
+ parseWorkspaceArchiveObjectKey,
4215
4221
  parseWorkspaceArchiveObjectRef,
4216
4222
  prefixedMcpToolName,
4217
4223
  readCodexCredentialPolicySnapshotV1,
@@ -4270,11 +4276,13 @@ export {
4270
4276
  skillReviewHumanInput,
4271
4277
  spreadsheetSheetId,
4272
4278
  stableJson,
4279
+ storedSessionMemoryScope,
4273
4280
  toolResultSpillFilename,
4274
4281
  toolResultSpillSandboxPath,
4275
4282
  turnExecutionPolicyAuditMetadata,
4276
4283
  validateRetainedOutputEvidence,
4277
4284
  validateSkillTextFiles,
4285
+ validateWorkspaceArchiveObjectRef,
4278
4286
  variableSetVariableNameReservation,
4279
4287
  verifyDelegatedAccessToken,
4280
4288
  verifyEnrollToken,
@@ -1,26 +1,27 @@
1
1
  import {
2
2
  ConnectionMetadata
3
- } from "./chunk-QP3BIGSC.js";
3
+ } from "./chunk-FBXZZSXA.js";
4
4
  import "./chunk-YBW5JSA3.js";
5
- import "./chunk-6TCVR53X.js";
5
+ import "./chunk-O5LEQHDM.js";
6
6
  import "./chunk-GRG7PHWQ.js";
7
7
  import "./chunk-MRWYRAS5.js";
8
8
  import "./chunk-3SIZGL3O.js";
9
+ import "./chunk-NVJMJWLL.js";
10
+ import "./chunk-YRKRZ6OF.js";
9
11
  import "./chunk-JUFK3T4Q.js";
10
12
  import "./chunk-M5ZGRVIQ.js";
11
13
  import "./chunk-BCS7WHCK.js";
12
- import "./chunk-UGTBTPTQ.js";
13
- import "./chunk-WYBDERIY.js";
14
- import "./chunk-7ABONTXE.js";
15
- import "./chunk-NVJMJWLL.js";
16
- import "./chunk-YRKRZ6OF.js";
17
- import "./chunk-NPYLOZAP.js";
18
- import "./chunk-D2HKF2EF.js";
14
+ import "./chunk-5LYFSZ7O.js";
19
15
  import "./chunk-Y3KNXVTD.js";
16
+ import "./chunk-D2HKF2EF.js";
20
17
  import "./chunk-TXTQIYCV.js";
21
18
  import "./chunk-RIY7GYQS.js";
22
19
  import "./chunk-MYBZRDTY.js";
23
20
  import "./chunk-PX3VCKAU.js";
21
+ import "./chunk-UGTBTPTQ.js";
22
+ import "./chunk-WYBDERIY.js";
23
+ import "./chunk-P3HLDT77.js";
24
+ import "./chunk-7ABONTXE.js";
24
25
 
25
26
  // src/personal-github.ts
26
27
  import { z } from "zod";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/personal-github.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { ConnectionMetadata } from \"./index\";\n\nexport const PERSONAL_GITHUB_PROVIDER_DOMAIN = \"github.com\" as const;\nexport const PERSONAL_GITHUB_PROVIDER_FAMILY = \"github\" as const;\nexport const PERSONAL_GITHUB_CREDENTIAL_ROLE = \"opengeni_github_personal\" as const;\nexport const PERSONAL_GITHUB_CONNECTION_SURFACE_ID = \"github:personal\" as const;\nexport const PERSONAL_GITHUB_REQUESTED_SCOPES = [\"repo\"] as const;\nexport const PERSONAL_GITHUB_AUTHORIZATION_URL =\n \"https://github.com/login/oauth/authorize\" as const;\nexport const PERSONAL_GITHUB_TOKEN_URL = \"https://github.com/login/oauth/access_token\" as const;\nexport const PERSONAL_GITHUB_USER_URL = \"https://api.github.com/user\" as const;\nexport const PERSONAL_GITHUB_API_ORIGIN = \"https://api.github.com\" as const;\nexport const PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX = 100 as const;\n\nexport const PersonalGitHubRepositoryId = z.string().regex(/^[1-9]\\d*$/u);\nexport type PersonalGitHubRepositoryId = z.infer<typeof PersonalGitHubRepositoryId>;\n\nexport const PersonalGitHubRepositoryAccess = z.enum([\"read\", \"write\"]);\nexport type PersonalGitHubRepositoryAccess = z.infer<typeof PersonalGitHubRepositoryAccess>;\n\nexport const PersonalGitHubRepositoryPermissions = z\n .object({\n pull: z.boolean(),\n push: z.boolean(),\n admin: z.boolean(),\n maintain: z.boolean(),\n triage: z.boolean(),\n })\n .strict();\nexport type PersonalGitHubRepositoryPermissions = z.infer<\n typeof PersonalGitHubRepositoryPermissions\n>;\n\nexport const PersonalGitHubRepositoryVisibility = z.enum([\"public\", \"private\", \"internal\"]);\nexport type PersonalGitHubRepositoryVisibility = z.infer<typeof PersonalGitHubRepositoryVisibility>;\n\nconst PersonalGitHubRepositoryFullName = z\n .string()\n .min(3)\n .max(140)\n .regex(/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})\\/[A-Za-z0-9_.-]{1,100}$/u);\n\nexport function canonicalPersonalGitHubRepositoryUrl(fullName: string): string {\n return `https://github.com/${fullName}`;\n}\n\n/** A bounded, credential-free projection verified directly against GitHub. */\nexport const PersonalGitHubRepository = z\n .object({\n repositoryId: PersonalGitHubRepositoryId,\n fullName: PersonalGitHubRepositoryFullName,\n canonicalUrl: z.string().url().max(512),\n defaultBranch: z.string().min(1).max(255),\n visibility: PersonalGitHubRepositoryVisibility,\n private: z.boolean(),\n archived: z.boolean(),\n disabled: z.boolean(),\n permissions: PersonalGitHubRepositoryPermissions,\n })\n .strict()\n .superRefine((repository, context) => {\n if (repository.canonicalUrl !== canonicalPersonalGitHubRepositoryUrl(repository.fullName)) {\n context.addIssue({\n code: \"custom\",\n path: [\"canonicalUrl\"],\n message: \"canonicalUrl must be derived from fullName\",\n });\n }\n if (repository.private !== (repository.visibility === \"private\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"private\"],\n message: \"private must agree with visibility\",\n });\n }\n });\nexport type PersonalGitHubRepository = z.infer<typeof PersonalGitHubRepository>;\n\nexport const PersonalGitHubSelectedRepository = PersonalGitHubRepository.safeExtend({\n selectedAccess: PersonalGitHubRepositoryAccess,\n selectionGeneration: z.number().int().positive(),\n selectedAt: z.string().datetime({ offset: true }),\n lastVerifiedAt: z.string().datetime({ offset: true }),\n}).strict();\nexport type PersonalGitHubSelectedRepository = z.infer<typeof PersonalGitHubSelectedRepository>;\n\nexport const PersonalGitHubRepositorySelectionState = z\n .object({\n connectionAuthorityGeneration: z.number().int().positive(),\n credentialBindingId: z.string().uuid(),\n providerPrincipalId: PersonalGitHubRepositoryId,\n selectionGeneration: z.number().int().nonnegative(),\n repositories: z\n .array(PersonalGitHubSelectedRepository)\n .max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX),\n })\n .strict();\nexport type PersonalGitHubRepositorySelectionState = z.infer<\n typeof PersonalGitHubRepositorySelectionState\n>;\n\nexport const ListPersonalGitHubRepositoriesQuery = z\n .object({\n cursor: z.coerce.number().int().positive().max(10_000).default(1),\n limit: z.coerce.number().int().min(1).max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX).default(50),\n })\n .strict();\nexport type ListPersonalGitHubRepositoriesQuery = z.infer<\n typeof ListPersonalGitHubRepositoriesQuery\n>;\n\nexport const PersonalGitHubRepositoryCatalogItem = PersonalGitHubRepository.safeExtend({\n selectedAccess: PersonalGitHubRepositoryAccess.nullable(),\n}).strict();\nexport type PersonalGitHubRepositoryCatalogItem = z.infer<\n typeof PersonalGitHubRepositoryCatalogItem\n>;\n\nexport const ListPersonalGitHubRepositoriesResponse = z\n .object({\n repositories: z\n .array(PersonalGitHubRepositoryCatalogItem)\n .max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX),\n nextCursor: z.number().int().positive().nullable(),\n selection: PersonalGitHubRepositorySelectionState,\n })\n .strict();\nexport type ListPersonalGitHubRepositoriesResponse = z.infer<\n typeof ListPersonalGitHubRepositoriesResponse\n>;\n\nexport const PersonalGitHubRepositorySelectionInput = z\n .object({\n repositoryId: PersonalGitHubRepositoryId,\n fullName: PersonalGitHubRepositoryFullName,\n access: PersonalGitHubRepositoryAccess,\n })\n .strict();\nexport type PersonalGitHubRepositorySelectionInput = z.infer<\n typeof PersonalGitHubRepositorySelectionInput\n>;\n\nexport const ReplacePersonalGitHubRepositorySelectionsRequest = z\n .object({\n expectedConnectionAuthorityGeneration: z.number().int().positive(),\n expectedSelectionGeneration: z.number().int().nonnegative(),\n idempotencyKey: z.string().trim().min(1).max(200),\n repositories: z\n .array(PersonalGitHubRepositorySelectionInput)\n .max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX),\n })\n .strict()\n .superRefine((request, context) => {\n const repositoryIds = new Set<string>();\n const fullNames = new Set<string>();\n request.repositories.forEach((repository, index) => {\n const normalizedFullName = repository.fullName.toLowerCase();\n if (repositoryIds.has(repository.repositoryId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"repositories\", index, \"repositoryId\"],\n message: \"repositoryId must be unique\",\n });\n }\n if (fullNames.has(normalizedFullName)) {\n context.addIssue({\n code: \"custom\",\n path: [\"repositories\", index, \"fullName\"],\n message: \"fullName must be unique\",\n });\n }\n repositoryIds.add(repository.repositoryId);\n fullNames.add(normalizedFullName);\n });\n });\nexport type ReplacePersonalGitHubRepositorySelectionsRequest = z.infer<\n typeof ReplacePersonalGitHubRepositorySelectionsRequest\n>;\n\nexport const VerifyPersonalGitHubRepositorySelectionsRequest = z\n .object({\n expectedConnectionAuthorityGeneration: z.number().int().positive(),\n expectedSelectionGeneration: z.number().int().nonnegative(),\n idempotencyKey: z.string().trim().min(1).max(200),\n })\n .strict();\nexport type VerifyPersonalGitHubRepositorySelectionsRequest = z.infer<\n typeof VerifyPersonalGitHubRepositorySelectionsRequest\n>;\n\n/**\n * Owner-visible, credential-free metadata for one dedicated personal GitHub\n * OAuth connection. Repository selections are a separate authority and never\n * live in this credential record.\n */\nexport const PersonalGitHubConnectionMetadata = z\n .object({\n credentialRole: z.literal(PERSONAL_GITHUB_CREDENTIAL_ROLE),\n providerFamily: z.literal(PERSONAL_GITHUB_PROVIDER_FAMILY),\n providerPrincipalId: z.string().regex(/^\\d+$/u),\n githubUserId: z.string().regex(/^\\d+$/u),\n githubLogin: z.string().min(1).max(100),\n oauthEnvironment: z.string().min(1).max(128),\n oauthClientMarker: z.string().regex(/^[a-f0-9]{32}$/u),\n credentialBindingId: z.string().uuid(),\n connectedAt: z.string().datetime({ offset: true }),\n lastVerifiedAt: z.string().datetime({ offset: true }),\n disconnectedAt: z.string().datetime({ offset: true }).nullable().optional(),\n refreshTokenExpiresAt: z.string().datetime({ offset: true }).nullable().optional(),\n })\n .passthrough();\nexport type PersonalGitHubConnectionMetadata = z.infer<typeof PersonalGitHubConnectionMetadata>;\n\nexport const PersonalGitHubOAuthStartRequest = z\n .object({\n /** Existing exact connection generation to re-authorize in place. */\n connectionId: z.string().uuid().optional(),\n /** Same-workspace UI path restored after the callback. */\n returnPath: z.string().min(1).max(2048).optional(),\n })\n .strict();\nexport type PersonalGitHubOAuthStartRequest = z.infer<typeof PersonalGitHubOAuthStartRequest>;\n\nexport const PersonalGitHubOAuthStartResponse = z\n .object({\n authorizationUrl: z.string().url(),\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type PersonalGitHubOAuthStartResponse = z.infer<typeof PersonalGitHubOAuthStartResponse>;\n\nexport const PersonalGitHubConnectionStatusResponse = z\n .object({\n enabled: z.boolean(),\n connection: ConnectionMetadata.nullable(),\n reviewUrl: z.string().url().nullable(),\n })\n .strict();\nexport type PersonalGitHubConnectionStatusResponse = z.infer<\n typeof PersonalGitHubConnectionStatusResponse\n>;\n\nexport const PersonalGitHubDisconnectRequest = z\n .object({\n expectedVersion: z.number().int().positive(),\n idempotencyKey: z.string().trim().min(1).max(200),\n })\n .strict();\nexport type PersonalGitHubDisconnectRequest = z.infer<typeof PersonalGitHubDisconnectRequest>;\n\nexport function isPersonalGitHubConnection(\n connection: Pick<z.infer<typeof ConnectionMetadata>, \"providerDomain\" | \"kind\" | \"metadata\">,\n): boolean {\n return (\n connection.providerDomain.toLowerCase() === PERSONAL_GITHUB_PROVIDER_DOMAIN &&\n connection.kind === \"oauth2\" &&\n PersonalGitHubConnectionMetadata.safeParse(connection.metadata).success\n );\n}\n\nexport function hasReservedPersonalGitHubMetadata(\n metadata: Record<string, unknown> | undefined,\n): boolean {\n return metadata?.credentialRole === PERSONAL_GITHUB_CREDENTIAL_ROLE;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/personal-github.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport { ConnectionMetadata } from \"./index\";\n\nexport const PERSONAL_GITHUB_PROVIDER_DOMAIN = \"github.com\" as const;\nexport const PERSONAL_GITHUB_PROVIDER_FAMILY = \"github\" as const;\nexport const PERSONAL_GITHUB_CREDENTIAL_ROLE = \"opengeni_github_personal\" as const;\nexport const PERSONAL_GITHUB_CONNECTION_SURFACE_ID = \"github:personal\" as const;\nexport const PERSONAL_GITHUB_REQUESTED_SCOPES = [\"repo\"] as const;\nexport const PERSONAL_GITHUB_AUTHORIZATION_URL =\n \"https://github.com/login/oauth/authorize\" as const;\nexport const PERSONAL_GITHUB_TOKEN_URL = \"https://github.com/login/oauth/access_token\" as const;\nexport const PERSONAL_GITHUB_USER_URL = \"https://api.github.com/user\" as const;\nexport const PERSONAL_GITHUB_API_ORIGIN = \"https://api.github.com\" as const;\nexport const PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX = 100 as const;\n\nexport const PersonalGitHubRepositoryId = z.string().regex(/^[1-9]\\d*$/u);\nexport type PersonalGitHubRepositoryId = z.infer<typeof PersonalGitHubRepositoryId>;\n\nexport const PersonalGitHubRepositoryAccess = z.enum([\"read\", \"write\"]);\nexport type PersonalGitHubRepositoryAccess = z.infer<typeof PersonalGitHubRepositoryAccess>;\n\nexport const PersonalGitHubRepositoryPermissions = z\n .object({\n pull: z.boolean(),\n push: z.boolean(),\n admin: z.boolean(),\n maintain: z.boolean(),\n triage: z.boolean(),\n })\n .strict();\nexport type PersonalGitHubRepositoryPermissions = z.infer<\n typeof PersonalGitHubRepositoryPermissions\n>;\n\nexport const PersonalGitHubRepositoryVisibility = z.enum([\"public\", \"private\", \"internal\"]);\nexport type PersonalGitHubRepositoryVisibility = z.infer<typeof PersonalGitHubRepositoryVisibility>;\n\nconst PersonalGitHubRepositoryFullName = z\n .string()\n .min(3)\n .max(140)\n .regex(/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})\\/[A-Za-z0-9_.-]{1,100}$/u);\n\nexport function canonicalPersonalGitHubRepositoryUrl(fullName: string): string {\n return `https://github.com/${fullName}`;\n}\n\n/** A bounded, credential-free projection verified directly against GitHub. */\nexport const PersonalGitHubRepository = z\n .object({\n repositoryId: PersonalGitHubRepositoryId,\n fullName: PersonalGitHubRepositoryFullName,\n canonicalUrl: z.string().url().max(512),\n defaultBranch: z.string().min(1).max(255),\n visibility: PersonalGitHubRepositoryVisibility,\n private: z.boolean(),\n archived: z.boolean(),\n disabled: z.boolean(),\n permissions: PersonalGitHubRepositoryPermissions,\n })\n .strict()\n .superRefine((repository, context) => {\n if (repository.canonicalUrl !== canonicalPersonalGitHubRepositoryUrl(repository.fullName)) {\n context.addIssue({\n code: \"custom\",\n path: [\"canonicalUrl\"],\n message: \"canonicalUrl must be derived from fullName\",\n });\n }\n if (repository.private !== (repository.visibility === \"private\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"private\"],\n message: \"private must agree with visibility\",\n });\n }\n });\nexport type PersonalGitHubRepository = z.infer<typeof PersonalGitHubRepository>;\n\nexport const PersonalGitHubSelectedRepository = PersonalGitHubRepository.safeExtend({\n selectedAccess: PersonalGitHubRepositoryAccess,\n selectionGeneration: z.number().int().positive(),\n selectedAt: z.string().datetime({ offset: true }),\n lastVerifiedAt: z.string().datetime({ offset: true }),\n}).strict();\nexport type PersonalGitHubSelectedRepository = z.infer<typeof PersonalGitHubSelectedRepository>;\n\nexport const PersonalGitHubRepositorySelectionState = z\n .object({\n connectionAuthorityGeneration: z.number().int().positive(),\n credentialBindingId: z.string().uuid(),\n providerPrincipalId: PersonalGitHubRepositoryId,\n selectionGeneration: z.number().int().nonnegative(),\n repositories: z\n .array(PersonalGitHubSelectedRepository)\n .max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX),\n })\n .strict();\nexport type PersonalGitHubRepositorySelectionState = z.infer<\n typeof PersonalGitHubRepositorySelectionState\n>;\n\nexport const ListPersonalGitHubRepositoriesQuery = z\n .object({\n cursor: z.coerce.number().int().positive().max(10_000).default(1),\n limit: z.coerce.number().int().min(1).max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX).default(50),\n })\n .strict();\nexport type ListPersonalGitHubRepositoriesQuery = z.infer<\n typeof ListPersonalGitHubRepositoriesQuery\n>;\n\nexport const PersonalGitHubRepositoryCatalogItem = PersonalGitHubRepository.safeExtend({\n selectedAccess: PersonalGitHubRepositoryAccess.nullable(),\n}).strict();\nexport type PersonalGitHubRepositoryCatalogItem = z.infer<\n typeof PersonalGitHubRepositoryCatalogItem\n>;\n\nexport const ListPersonalGitHubRepositoriesResponse = z\n .object({\n repositories: z\n .array(PersonalGitHubRepositoryCatalogItem)\n .max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX),\n nextCursor: z.number().int().positive().nullable(),\n selection: PersonalGitHubRepositorySelectionState,\n })\n .strict();\nexport type ListPersonalGitHubRepositoriesResponse = z.infer<\n typeof ListPersonalGitHubRepositoriesResponse\n>;\n\nexport const PersonalGitHubRepositorySelectionInput = z\n .object({\n repositoryId: PersonalGitHubRepositoryId,\n fullName: PersonalGitHubRepositoryFullName,\n access: PersonalGitHubRepositoryAccess,\n })\n .strict();\nexport type PersonalGitHubRepositorySelectionInput = z.infer<\n typeof PersonalGitHubRepositorySelectionInput\n>;\n\nexport const ReplacePersonalGitHubRepositorySelectionsRequest = z\n .object({\n expectedConnectionAuthorityGeneration: z.number().int().positive(),\n expectedSelectionGeneration: z.number().int().nonnegative(),\n idempotencyKey: z.string().trim().min(1).max(200),\n repositories: z\n .array(PersonalGitHubRepositorySelectionInput)\n .max(PERSONAL_GITHUB_REPOSITORY_CATALOG_MAX),\n })\n .strict()\n .superRefine((request, context) => {\n const repositoryIds = new Set<string>();\n const fullNames = new Set<string>();\n request.repositories.forEach((repository, index) => {\n const normalizedFullName = repository.fullName.toLowerCase();\n if (repositoryIds.has(repository.repositoryId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"repositories\", index, \"repositoryId\"],\n message: \"repositoryId must be unique\",\n });\n }\n if (fullNames.has(normalizedFullName)) {\n context.addIssue({\n code: \"custom\",\n path: [\"repositories\", index, \"fullName\"],\n message: \"fullName must be unique\",\n });\n }\n repositoryIds.add(repository.repositoryId);\n fullNames.add(normalizedFullName);\n });\n });\nexport type ReplacePersonalGitHubRepositorySelectionsRequest = z.infer<\n typeof ReplacePersonalGitHubRepositorySelectionsRequest\n>;\n\nexport const VerifyPersonalGitHubRepositorySelectionsRequest = z\n .object({\n expectedConnectionAuthorityGeneration: z.number().int().positive(),\n expectedSelectionGeneration: z.number().int().nonnegative(),\n idempotencyKey: z.string().trim().min(1).max(200),\n })\n .strict();\nexport type VerifyPersonalGitHubRepositorySelectionsRequest = z.infer<\n typeof VerifyPersonalGitHubRepositorySelectionsRequest\n>;\n\n/**\n * Owner-visible, credential-free metadata for one dedicated personal GitHub\n * OAuth connection. Repository selections are a separate authority and never\n * live in this credential record.\n */\nexport const PersonalGitHubConnectionMetadata = z\n .object({\n credentialRole: z.literal(PERSONAL_GITHUB_CREDENTIAL_ROLE),\n providerFamily: z.literal(PERSONAL_GITHUB_PROVIDER_FAMILY),\n providerPrincipalId: z.string().regex(/^\\d+$/u),\n githubUserId: z.string().regex(/^\\d+$/u),\n githubLogin: z.string().min(1).max(100),\n oauthEnvironment: z.string().min(1).max(128),\n oauthClientMarker: z.string().regex(/^[a-f0-9]{32}$/u),\n credentialBindingId: z.string().uuid(),\n connectedAt: z.string().datetime({ offset: true }),\n lastVerifiedAt: z.string().datetime({ offset: true }),\n disconnectedAt: z.string().datetime({ offset: true }).nullable().optional(),\n refreshTokenExpiresAt: z.string().datetime({ offset: true }).nullable().optional(),\n })\n .passthrough();\nexport type PersonalGitHubConnectionMetadata = z.infer<typeof PersonalGitHubConnectionMetadata>;\n\nexport const PersonalGitHubOAuthStartRequest = z\n .object({\n /** Existing exact connection generation to re-authorize in place. */\n connectionId: z.string().uuid().optional(),\n /** Same-workspace UI path restored after the callback. */\n returnPath: z.string().min(1).max(2048).optional(),\n })\n .strict();\nexport type PersonalGitHubOAuthStartRequest = z.infer<typeof PersonalGitHubOAuthStartRequest>;\n\nexport const PersonalGitHubOAuthStartResponse = z\n .object({\n authorizationUrl: z.string().url(),\n expiresAt: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type PersonalGitHubOAuthStartResponse = z.infer<typeof PersonalGitHubOAuthStartResponse>;\n\nexport const PersonalGitHubConnectionStatusResponse = z\n .object({\n enabled: z.boolean(),\n connection: ConnectionMetadata.nullable(),\n reviewUrl: z.string().url().nullable(),\n })\n .strict();\nexport type PersonalGitHubConnectionStatusResponse = z.infer<\n typeof PersonalGitHubConnectionStatusResponse\n>;\n\nexport const PersonalGitHubDisconnectRequest = z\n .object({\n expectedVersion: z.number().int().positive(),\n idempotencyKey: z.string().trim().min(1).max(200),\n })\n .strict();\nexport type PersonalGitHubDisconnectRequest = z.infer<typeof PersonalGitHubDisconnectRequest>;\n\nexport function isPersonalGitHubConnection(\n connection: Pick<z.infer<typeof ConnectionMetadata>, \"providerDomain\" | \"kind\" | \"metadata\">,\n): boolean {\n return (\n connection.providerDomain.toLowerCase() === PERSONAL_GITHUB_PROVIDER_DOMAIN &&\n connection.kind === \"oauth2\" &&\n PersonalGitHubConnectionMetadata.safeParse(connection.metadata).success\n );\n}\n\nexport function hasReservedPersonalGitHubMetadata(\n metadata: Record<string, unknown> | undefined,\n): boolean {\n return metadata?.credentialRole === PERSONAL_GITHUB_CREDENTIAL_ROLE;\n}\n"],"mappings":"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","names":[]}
@@ -50,13 +50,31 @@ export type WorkspaceArchiveObjectRef = {
50
50
  bytes: number;
51
51
  backend: string;
52
52
  };
53
+ export type WorkspaceArchiveObjectKey = {
54
+ accountId: string;
55
+ workspaceId: string;
56
+ sandboxGroupId: string;
57
+ revision: string;
58
+ uploadId: string | null;
59
+ };
60
+ export declare function parseWorkspaceArchiveObjectKey(value: unknown): WorkspaceArchiveObjectKey | null;
53
61
  export declare function parseWorkspaceArchiveObjectRef(value: unknown): WorkspaceArchiveObjectRef | null;
54
62
  export declare function workspaceArchiveObjectKey(input: {
55
63
  accountId: string;
56
64
  workspaceId: string;
57
65
  sandboxGroupId: string;
58
66
  revision: string;
67
+ /** New upload invocations supply a fresh randomUUID; omission is legacy-only. */
68
+ uploadId?: string;
59
69
  }): string;
70
+ /** Bind a stored locator to its publication/restore scope and verified tar
71
+ * descriptor. A logical revision never substitutes for the exact physical key. */
72
+ export declare function validateWorkspaceArchiveObjectRef(value: unknown, input: {
73
+ accountId: string;
74
+ workspaceId: string;
75
+ sandboxGroupId: string;
76
+ descriptor: WorkspaceArchiveDescriptor;
77
+ }): WorkspaceArchiveObjectRef | null;
60
78
  export declare function workspaceArchivePayloadPresent(sessionState: Record<string, unknown> | null | undefined): boolean;
61
79
  /** Restore may inline object bytes in memory for hydrate. That copy must never
62
80
  * be published onto a lease when a durable object-storage ref exists. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/contracts",
3
- "version": "2.15.2",
3
+ "version": "3.0.1-canary.0",
4
4
  "description": "Shared zod schemas and wire-contract types for the OpenGeni API.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -18,6 +18,18 @@
18
18
  "module": "./dist/index.js",
19
19
  "types": "./dist/index.d.ts",
20
20
  "exports": {
21
+ "./host-mcp-bindings": {
22
+ "types": "./dist/host-mcp-bindings.d.ts",
23
+ "import": "./dist/host-mcp-bindings.js"
24
+ },
25
+ "./external-identities": {
26
+ "types": "./dist/external-identities.d.ts",
27
+ "import": "./dist/external-identities.js"
28
+ },
29
+ "./connect": {
30
+ "types": "./dist/connect.d.ts",
31
+ "import": "./dist/connect.js"
32
+ },
21
33
  "./site-session-http": {
22
34
  "types": "./dist/site-session-http.d.ts",
23
35
  "import": "./dist/site-session-http.js"