@xfey/tutti 0.1.106 → 0.1.108

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 (69) hide show
  1. package/README.md +2 -0
  2. package/dist/collaboration-ingestion/external-source.js +10 -1
  3. package/dist/control-plane/procedure-logging.d.ts +1 -0
  4. package/dist/control-plane/procedure-logging.js +16 -5
  5. package/dist/control-plane/reference-summary-refresh.js +2 -2
  6. package/dist/control-plane/task-source-context-types.d.ts +2 -1
  7. package/dist/control-plane/task-source-context.js +7 -0
  8. package/dist/control-plane/workflows/openai.js +1 -0
  9. package/dist/providers/openai/app-server/read-only-procedure.d.ts +10 -2
  10. package/dist/providers/openai/app-server/read-only-procedure.js +68 -15
  11. package/dist/providers/openai/app-server/skills.d.ts +4 -1
  12. package/dist/providers/openai/app-server/skills.js +12 -2
  13. package/dist/providers/openai/app-server/workspace-write-run.js +14 -10
  14. package/dist/reference-access/cache.d.ts +50 -0
  15. package/dist/reference-access/cache.js +268 -0
  16. package/dist/reference-access/read-evidence.d.ts +6 -0
  17. package/dist/reference-access/read-evidence.js +15 -0
  18. package/dist/reference-access/service.d.ts +26 -0
  19. package/dist/reference-access/service.js +42 -0
  20. package/dist/server-shell/cli/external-reference-runtime.d.ts +12 -0
  21. package/dist/server-shell/cli/external-reference-runtime.js +75 -0
  22. package/dist/server-shell/cli/host-server-runtime.js +17 -1
  23. package/dist/server-shell/cli/relay-registration.js +1 -0
  24. package/dist/server-shell/http/create-server.d.ts +2 -0
  25. package/dist/server-shell/http/create-server.js +5 -4
  26. package/dist/server-shell/http/routes/agent-context-auth.d.ts +2 -1
  27. package/dist/server-shell/http/routes/agent-context-auth.js +3 -1
  28. package/dist/server-shell/http/routes/agent-context-external-reference-routes.d.ts +4 -0
  29. package/dist/server-shell/http/routes/agent-context-external-reference-routes.js +83 -0
  30. package/dist/server-shell/http/routes/agent-context-shared.d.ts +2 -0
  31. package/dist/server-shell/http/routes/agent-context.js +3 -1
  32. package/dist/server-shell/http/routes/project-api/reference-files-routes.js +19 -2
  33. package/dist/workspace-ops/project-workspace.js +6 -6
  34. package/dist/workspace-ops/reference-cache-policy.d.ts +6 -0
  35. package/dist/workspace-ops/reference-cache-policy.js +79 -0
  36. package/migrations/0021_external_reference_reads.sql +11 -0
  37. package/node_modules/@tutti/relay-client/dist/external-references.d.ts +11 -0
  38. package/node_modules/@tutti/relay-client/dist/external-references.js +63 -0
  39. package/node_modules/@tutti/relay-client/dist/host-control.d.ts +1 -0
  40. package/node_modules/@tutti/relay-client/dist/host-control.js +1 -0
  41. package/node_modules/@tutti/relay-client/dist/index.d.ts +1 -0
  42. package/node_modules/@tutti/relay-client/dist/index.js +1 -0
  43. package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +6 -0
  44. package/node_modules/@tutti/shared/dist/schemas/api/external-references.d.ts +23 -0
  45. package/node_modules/@tutti/shared/dist/schemas/api/external-references.js +21 -0
  46. package/node_modules/@tutti/shared/dist/schemas/api/feishu-documents.d.ts +46 -0
  47. package/node_modules/@tutti/shared/dist/schemas/api/feishu-documents.js +53 -0
  48. package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +4 -2
  49. package/node_modules/@tutti/shared/dist/schemas/api/index.js +3 -1
  50. package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +24 -0
  51. package/node_modules/@tutti/shared/dist/schemas/api/messages.js +2 -0
  52. package/node_modules/@tutti/shared/dist/schemas/api/platform-sessions.d.ts +10 -1
  53. package/node_modules/@tutti/shared/dist/schemas/api/platform-sessions.js +23 -1
  54. package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +6 -0
  55. package/node_modules/@tutti/shared/dist/schemas/internal/external-references.d.ts +109 -0
  56. package/node_modules/@tutti/shared/dist/schemas/internal/external-references.js +70 -0
  57. package/node_modules/@tutti/shared/dist/schemas/internal/feishu-documents.d.ts +49 -0
  58. package/node_modules/@tutti/shared/dist/schemas/internal/feishu-documents.js +36 -0
  59. package/node_modules/@tutti/shared/dist/schemas/internal/index.d.ts +2 -0
  60. package/node_modules/@tutti/shared/dist/schemas/internal/index.js +2 -0
  61. package/node_modules/@tutti/shared/dist/schemas/internal/platform-integration.d.ts +36 -0
  62. package/node_modules/@tutti/shared/dist/schemas/internal/platform-integration.js +3 -0
  63. package/package.json +1 -1
  64. package/prompts/skills/read-references/SKILL.md +32 -3
  65. package/web/assets/{homepage-motion-scene-tfFEdV9Y.js → homepage-motion-scene-B6yPJnY8.js} +1 -1
  66. package/web/assets/{index-C2Mmj25S.css → index-DvfZ57Nl.css} +1 -1
  67. package/web/assets/index-aQnJ5JoI.js +69 -0
  68. package/web/index.html +2 -2
  69. package/web/assets/index-B7ZGIvOv.js +0 -69
@@ -2,7 +2,7 @@ export * from "./openapi.js";
2
2
  export { ARTIFACT_FEEDBACK_MAX_ANNOTATIONS, ARTIFACT_FEEDBACK_MAX_AUTHORED_TEXT_LENGTH, ARTIFACT_FEEDBACK_MAX_COMMENT_LENGTH, ARTIFACT_FEEDBACK_MAX_SERIALIZED_BYTES, ARTIFACT_FEEDBACK_MAX_SUMMARY_LENGTH, ArtifactElementAnchorSchema, ArtifactElementKindSchema, ArtifactElementTargetSchema, ArtifactFeedbackAnnotationSchema, ArtifactFeedbackCommandSchema, ArtifactFeedbackRefSchema, ArtifactSemanticContextSchema, ArtifactSemanticSnapshotSchema, ArtifactSemanticStateSchema, } from "./artifact-feedback.js";
3
3
  export { CompleteDesktopEntryContinuationBodySchema, CompleteDesktopEntryContinuationResponseSchema, CreateDesktopEntryContinuationResponseSchema, DESKTOP_ENTRY_COMPLETION_TOKEN_LENGTH, DESKTOP_ENTRY_PAYLOAD_KEY_LENGTH, DESKTOP_ENTRY_SEALED_IV_LENGTH, DesktopEntryCompletionTokenSchema, DesktopEntryContinuationPendingProjectionSchema, DesktopEntryContinuationReadyProjectionSchema, DesktopEntryPayloadKeySchema, GetDesktopEntryContinuationResponseSchema, MAX_DESKTOP_ENTRY_SEALED_CIPHERTEXT_LENGTH, SealedDesktopEntryPayloadSchema, } from "./desktop-entry-continuations.js";
4
4
  export { LOCAL_CONSOLE_ACCOUNT_HANDOFF_TOKEN_MAX_LENGTH, LOCAL_CONSOLE_ACCOUNT_HANDOFF_TOKEN_MIN_LENGTH, RegisterLocalConsoleAccountHandoffBodySchema, RegisterLocalConsoleAccountHandoffResponseSchema, } from "./local-console-account-handoffs.js";
5
- export { FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH, FEISHU_DOCX_REQUIRED_USER_SCOPE, FEISHU_H5_AUTHORIZATION_CODE_MAX_LENGTH, FEISHU_H5_REQUIRED_USER_SCOPE, FEISHU_PLATFORM_STATE_LENGTH, FeishuPlatformSessionBootstrapBodySchema, FeishuPlatformSessionBootstrapResponseSchema, FeishuBrowserHandoffResponseSchema, FeishuBrowserHandoffTokenSchema, ConsumeFeishuBrowserHandoffBodySchema, FeishuDocumentAuthorizationBootstrapResponseSchema, FeishuDocumentAuthorizationExchangeBodySchema, FeishuDocumentAuthorizationProjectionSchema, FeishuPlatformSessionExchangeBodySchema, FeishuPlatformSessionProjectionSchema, FeishuPlatformStateSchema, } from "./platform-sessions.js";
5
+ export { FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH, FEISHU_DOCX_READWRITE_USER_SCOPE, FEISHU_DOCX_REQUIRED_USER_SCOPE, FEISHU_H5_AUTHORIZATION_CODE_MAX_LENGTH, FEISHU_H5_REQUIRED_USER_SCOPE, FEISHU_OFFLINE_ACCESS_SCOPE, FEISHU_WIKI_REQUIRED_USER_SCOPE, FeishuDocumentAuthorizationBootstrapBodySchema, FEISHU_PLATFORM_STATE_LENGTH, FeishuPlatformSessionBootstrapBodySchema, FeishuPlatformSessionBootstrapResponseSchema, FeishuBrowserHandoffResponseSchema, FeishuBrowserHandoffTokenSchema, ConsumeFeishuBrowserHandoffBodySchema, FeishuDocumentAuthorizationBootstrapResponseSchema, FeishuDocumentAuthorizationExchangeBodySchema, FeishuDocumentAuthorizationProjectionSchema, FeishuPlatformSessionExchangeBodySchema, FeishuPlatformSessionProjectionSchema, FeishuPlatformStateSchema, hasFeishuDocxReadCapability, hasFeishuWikiReadCapability, } from "./platform-sessions.js";
6
6
  export { ApiErrorCodeSchema, ApiErrorResponseSchema, CommandDispositionBaseSchema, CursorPageRequestSchema, DEFAULT_SSE_REPLAY_WINDOW_POLICY, InterruptedCommandDispositionSchema, QueryInvalidationHintSchema, RelayInvalidationHintSchema, RelaySseEventTypeSchema, SseReplayWindowPolicySchema, WorkspaceSseEventTypeSchema, commandEnvelopeSchema, commandResponseSchema, commandResponseWithResultSchema, cursorPageSchema, relaySseEventSchema, timelineWindowSchema, workspaceSseEventSchema, } from "./primitives.js";
7
7
  export { GetProviderModelsResponseSchema, MAX_PROVIDER_MODEL_NAME_LENGTH, ProviderConfigInvalidReasonCodeSchema, ProviderConfigProjectionSchema, ProviderModelDiscoveryUnavailableReasonSchema, ProviderModelNameSchema, ProviderModelValidationFailureReasonSchema, ProviderUnavailableReasonCodeSchema, ProjectProviderUnavailableReasonSchema, UpdateProviderDefaultModelBodySchema, UpdateProviderDefaultModelDispositionSchema, UpdateProviderDefaultModelPayloadSchema, UpdateProviderDefaultModelResponseSchema, } from "./provider-config.js";
8
8
  export { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchema, ProviderUsageModelSummaryProjectionSchema, ProviderUsageProjectionSchema, ProviderUsageSourceSummaryProjectionSchema, } from "./provider-usage.js";
@@ -18,4 +18,6 @@ export { ArtifactKindSchema, ArtifactManifestSchema, ArtifactPreviewProjectionSc
18
18
  export { DeleteSkillBodySchema, DeleteSkillDispositionSchema, DeleteSkillPayloadSchema, DeleteSkillResponseSchema, GetSkillParamsSchema, GetSkillResponseSchema, GetSkillsResponseSchema, ImportSkillZipBodySchema, ImportSkillZipDispositionSchema, ImportSkillZipPayloadSchema, ImportSkillZipResponseSchema, ImportSkillZipResultSchema, SkillDetailProjectionSchema, SkillNameSchema, SkillProjectionSchema, } from "./skills.js";
19
19
  export { ActivityEventProjectionSchema, ActivityEventSsePayloadSchema, ApprovalChangedEventPayloadSchema, ActivityProjectionSchema, ConnectionReadyEventPayloadSchema, ExecutionActivitySummarySchema, ExecutionStatusChangedEventPayloadSchema, ExecutionStatusKindSchema, ExecutionStatusProjectionSchema, ProcedureLaneSchema, ProviderConfigChangedEventPayloadSchema, QueryInvalidateEventPayloadSchema, ScratchpadUpdatedEventPayloadSchema, TaskDetailUpdatedEventPayloadSchema, TaskUpdatedEventPayloadSchema, WorklistChangedEventPayloadSchema, WorkspaceRecoveredEventPayloadSchema, } from "./runtime-events.js";
20
20
  export { ContextSyncBodySchema, ContextSyncDispositionSchema, ContextSyncPayloadSchema, ContextSyncResponseSchema, ContextSyncResultSchema, InitializeProjectDocsBodySchema, InitializeProjectDocsDispositionSchema, InitializeProjectDocsPayloadSchema, InitializeProjectDocsResponseSchema, InitializeProjectDocsResultSchema, ProjectDocsProcedureStartResultSchema, RefreshScratchpadDispositionSchema, RefreshScratchpadResultSchema, RunSchedulerNowBodySchema, RunSchedulerNowDispositionSchema, RunSchedulerNowPayloadSchema, RunSchedulerNowResponseSchema, RetryTaskBodySchema, RetryTaskDispositionSchema, RetryTaskPayloadSchema, RetryTaskResponseSchema, SubmitWorklistBodySchema, SubmitWorklistDispositionSchema, SubmitWorklistPayloadSchema, SubmitWorklistResponseSchema, SubmitWorklistResultSchema, UpdateProjectDescriptionBodySchema, UpdateProjectDescriptionDispositionSchema, UpdateProjectDescriptionPayloadSchema, UpdateProjectDescriptionResponseSchema, UpdateProjectDescriptionResultSchema, UpdateProjectDisplayNameBodySchema, UpdateProjectDisplayNameDispositionSchema, UpdateProjectDisplayNamePayloadSchema, UpdateProjectDisplayNameResponseSchema, UpdateProjectDisplayNameResultSchema, } from "./workspace-commands.js";
21
+ export * from "./feishu-documents.js";
22
+ export * from "./external-references.js";
21
23
  //# sourceMappingURL=index.js.map
@@ -133,6 +133,12 @@ export declare const ArtifactPreviewRefSchema: import("@sinclair/typebox").TObje
133
133
  run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
134
134
  }>;
135
135
  export declare const MessageRefsSchema: import("@sinclair/typebox").TObject<{
136
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
137
+ source_ref: import("@sinclair/typebox").TString;
138
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
139
+ name: import("@sinclair/typebox").TString;
140
+ created_at: import("@sinclair/typebox").TString;
141
+ }>>>;
136
142
  task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
137
143
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
138
144
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -337,6 +343,12 @@ export declare const MessageProjectionSchema: import("@sinclair/typebox").TObjec
337
343
  message_kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user_text">, import("@sinclair/typebox").TLiteral<"agent_text">, import("@sinclair/typebox").TLiteral<"system_notice">, import("@sinclair/typebox").TLiteral<"clarification_request">, import("@sinclair/typebox").TLiteral<"clarification_card">]>;
338
344
  body: import("@sinclair/typebox").TString;
339
345
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
346
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
347
+ source_ref: import("@sinclair/typebox").TString;
348
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
349
+ name: import("@sinclair/typebox").TString;
350
+ created_at: import("@sinclair/typebox").TString;
351
+ }>>>;
340
352
  task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
341
353
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
342
354
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -660,6 +672,12 @@ export declare const SendMainChatMessageResultSchema: import("@sinclair/typebox"
660
672
  message_kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user_text">, import("@sinclair/typebox").TLiteral<"agent_text">, import("@sinclair/typebox").TLiteral<"system_notice">, import("@sinclair/typebox").TLiteral<"clarification_request">, import("@sinclair/typebox").TLiteral<"clarification_card">]>;
661
673
  body: import("@sinclair/typebox").TString;
662
674
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
675
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
676
+ source_ref: import("@sinclair/typebox").TString;
677
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
678
+ name: import("@sinclair/typebox").TString;
679
+ created_at: import("@sinclair/typebox").TString;
680
+ }>>>;
663
681
  task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
664
682
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
665
683
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -885,6 +903,12 @@ export declare const MessageCreatedEventPayloadSchema: import("@sinclair/typebox
885
903
  message_kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user_text">, import("@sinclair/typebox").TLiteral<"agent_text">, import("@sinclair/typebox").TLiteral<"system_notice">, import("@sinclair/typebox").TLiteral<"clarification_request">, import("@sinclair/typebox").TLiteral<"clarification_card">]>;
886
904
  body: import("@sinclair/typebox").TString;
887
905
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
906
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
907
+ source_ref: import("@sinclair/typebox").TString;
908
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
909
+ name: import("@sinclair/typebox").TString;
910
+ created_at: import("@sinclair/typebox").TString;
911
+ }>>>;
888
912
  task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
889
913
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
890
914
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -1,4 +1,5 @@
1
1
  import { Type } from "@sinclair/typebox";
2
+ import { ExternalReferenceDescriptorSchema } from "./external-references.js";
2
3
  import { ActivityRefSchema, ClarificationRoundRefSchema, ClarificationThreadRefSchema, CursorSchema, IsoDateTimeStringSchema, MessageIdSchema, RunResultIdSchema, TaskIdSchema, WorkflowInvocationRefSchema, } from "../domain/index.js";
3
4
  import { ACCOUNT_AVATAR_COLORS } from "../../domain/index.js";
4
5
  import { InterruptedCommandDispositionSchema, NonEmptyStringSchema, commandEnvelopeSchema, commandResponseWithResultSchema, timelineWindowSchema, } from "./primitives.js";
@@ -124,6 +125,7 @@ export const ArtifactPreviewRefSchema = Type.Object({
124
125
  run_result_id: Type.Optional(RunResultIdSchema),
125
126
  }, { additionalProperties: false });
126
127
  export const MessageRefsSchema = Type.Object({
128
+ external_references: Type.Optional(Type.Array(ExternalReferenceDescriptorSchema, { minItems: 1, maxItems: 16 })),
127
129
  task_id: Type.Optional(TaskIdSchema),
128
130
  activity_ref: Type.Optional(ActivityRefSchema),
129
131
  workflow_ref: Type.Optional(WorkflowInvocationRefSchema),
@@ -2,8 +2,17 @@ import type { Static } from "@sinclair/typebox";
2
2
  export declare const FEISHU_H5_AUTHORIZATION_CODE_MAX_LENGTH = 2048;
3
3
  export declare const FEISHU_H5_REQUIRED_USER_SCOPE = "im:chat.members:read";
4
4
  export declare const FEISHU_DOCX_REQUIRED_USER_SCOPE = "docx:document:readonly";
5
+ export declare const FEISHU_DOCX_READWRITE_USER_SCOPE = "docx:document";
6
+ export declare const FEISHU_OFFLINE_ACCESS_SCOPE = "offline_access";
7
+ export declare const FEISHU_WIKI_REQUIRED_USER_SCOPE = "wiki:node:read";
8
+ export type FeishuDocumentAuthorizationProfile = "docx" | "wiki_docx";
5
9
  export declare const FEISHU_PLATFORM_STATE_LENGTH = 43;
6
10
  export declare const FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH = 43;
11
+ export declare function hasFeishuDocxReadCapability(scopes: readonly string[]): boolean;
12
+ export declare function hasFeishuWikiReadCapability(scopes: readonly string[]): boolean;
13
+ export declare const FeishuDocumentAuthorizationBootstrapBodySchema: import("@sinclair/typebox").TObject<{
14
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"docx">, import("@sinclair/typebox").TLiteral<"wiki_docx">]>>;
15
+ }>;
7
16
  export declare const FeishuPlatformStateSchema: import("@sinclair/typebox").TString;
8
17
  export declare const FeishuBrowserHandoffTokenSchema: import("@sinclair/typebox").TString;
9
18
  export declare const FeishuPlatformSessionBootstrapBodySchema: import("@sinclair/typebox").TObject<{
@@ -43,7 +52,7 @@ export declare const FeishuDocumentAuthorizationBootstrapResponseSchema: import(
43
52
  platform: import("@sinclair/typebox").TLiteral<"feishu">;
44
53
  app_id: import("@sinclair/typebox").TString;
45
54
  state: import("@sinclair/typebox").TString;
46
- authorization_scopes: import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TLiteral<"docx:document:readonly">]>;
55
+ authorization_scopes: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TLiteral<"docx:document:readonly">, import("@sinclair/typebox").TLiteral<"offline_access">]>, import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TLiteral<"docx:document:readonly">, import("@sinclair/typebox").TLiteral<"offline_access">, import("@sinclair/typebox").TLiteral<"wiki:node:read">]>]>;
47
56
  expires_at: import("@sinclair/typebox").TString;
48
57
  }>;
49
58
  export declare const FeishuDocumentAuthorizationExchangeBodySchema: import("@sinclair/typebox").TObject<{
@@ -3,8 +3,20 @@ import { IsoDateTimeStringSchema, RelayAccountRefSchema, RelayPlatformSessionRef
3
3
  export const FEISHU_H5_AUTHORIZATION_CODE_MAX_LENGTH = 2_048;
4
4
  export const FEISHU_H5_REQUIRED_USER_SCOPE = "im:chat.members:read";
5
5
  export const FEISHU_DOCX_REQUIRED_USER_SCOPE = "docx:document:readonly";
6
+ export const FEISHU_DOCX_READWRITE_USER_SCOPE = "docx:document";
7
+ export const FEISHU_OFFLINE_ACCESS_SCOPE = "offline_access";
8
+ export const FEISHU_WIKI_REQUIRED_USER_SCOPE = "wiki:node:read";
6
9
  export const FEISHU_PLATFORM_STATE_LENGTH = 43;
7
10
  export const FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH = 43;
11
+ export function hasFeishuDocxReadCapability(scopes) {
12
+ return scopes.some((scope) => scope === FEISHU_DOCX_REQUIRED_USER_SCOPE || scope === FEISHU_DOCX_READWRITE_USER_SCOPE);
13
+ }
14
+ export function hasFeishuWikiReadCapability(scopes) {
15
+ return scopes.some((scope) => [FEISHU_WIKI_REQUIRED_USER_SCOPE, "wiki:wiki:readonly", "wiki:wiki"].includes(scope));
16
+ }
17
+ export const FeishuDocumentAuthorizationBootstrapBodySchema = Type.Object({
18
+ profile: Type.Optional(Type.Union([Type.Literal("docx"), Type.Literal("wiki_docx")])),
19
+ }, { additionalProperties: false });
8
20
  export const FeishuPlatformStateSchema = Type.String({
9
21
  minLength: FEISHU_PLATFORM_STATE_LENGTH,
10
22
  maxLength: FEISHU_PLATFORM_STATE_LENGTH,
@@ -52,7 +64,17 @@ export const FeishuDocumentAuthorizationBootstrapResponseSchema = Type.Object({
52
64
  platform: Type.Literal("feishu"),
53
65
  app_id: Type.String({ minLength: 1, maxLength: 128, pattern: "^cli_[A-Za-z0-9]+$" }),
54
66
  state: FeishuPlatformStateSchema,
55
- authorization_scopes: Type.Tuple([Type.Literal(FEISHU_DOCX_REQUIRED_USER_SCOPE)]),
67
+ authorization_scopes: Type.Union([
68
+ Type.Tuple([
69
+ Type.Literal(FEISHU_DOCX_REQUIRED_USER_SCOPE),
70
+ Type.Literal(FEISHU_OFFLINE_ACCESS_SCOPE),
71
+ ]),
72
+ Type.Tuple([
73
+ Type.Literal(FEISHU_DOCX_REQUIRED_USER_SCOPE),
74
+ Type.Literal(FEISHU_OFFLINE_ACCESS_SCOPE),
75
+ Type.Literal(FEISHU_WIKI_REQUIRED_USER_SCOPE),
76
+ ]),
77
+ ]),
56
78
  expires_at: IsoDateTimeStringSchema,
57
79
  }, { additionalProperties: false });
58
80
  export const FeishuDocumentAuthorizationExchangeBodySchema = Type.Object({
@@ -400,6 +400,12 @@ export declare const UploadReferenceFileResultSchema: import("@sinclair/typebox"
400
400
  message_kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user_text">, import("@sinclair/typebox").TLiteral<"agent_text">, import("@sinclair/typebox").TLiteral<"system_notice">, import("@sinclair/typebox").TLiteral<"clarification_request">, import("@sinclair/typebox").TLiteral<"clarification_card">]>;
401
401
  body: import("@sinclair/typebox").TString;
402
402
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
403
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
404
+ source_ref: import("@sinclair/typebox").TString;
405
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
406
+ name: import("@sinclair/typebox").TString;
407
+ created_at: import("@sinclair/typebox").TString;
408
+ }>>>;
403
409
  task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
404
410
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
405
411
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -0,0 +1,109 @@
1
+ import { type Static } from "@sinclair/typebox";
2
+ import { type ExternalReferenceList } from "../api/external-references.js";
3
+ export declare const EXTERNAL_REFERENCE_CONTROL_PATH = "/internal/v1/external-references";
4
+ export declare const EXTERNAL_REFERENCE_HOST_PATH = "/host-control/v1/external-references";
5
+ export declare const ExternalReferenceAuthoritySchema: import("@sinclair/typebox").TObject<{
6
+ project_ref: import("@sinclair/typebox").TString;
7
+ installation_ref: import("@sinclair/typebox").TString;
8
+ binding_ref: import("@sinclair/typebox").TString;
9
+ external_subject_ref: import("@sinclair/typebox").TString;
10
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
11
+ }>;
12
+ export declare const ExternalReferenceControlRequestSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
13
+ action: import("@sinclair/typebox").TLiteral<"list">;
14
+ authority: import("@sinclair/typebox").TObject<{
15
+ project_ref: import("@sinclair/typebox").TString;
16
+ installation_ref: import("@sinclair/typebox").TString;
17
+ binding_ref: import("@sinclair/typebox").TString;
18
+ external_subject_ref: import("@sinclair/typebox").TString;
19
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
20
+ }>;
21
+ request_ref: import("@sinclair/typebox").TString;
22
+ }>, import("@sinclair/typebox").TObject<{
23
+ action: import("@sinclair/typebox").TLiteral<"register">;
24
+ document_url: import("@sinclair/typebox").TString;
25
+ authority: import("@sinclair/typebox").TObject<{
26
+ project_ref: import("@sinclair/typebox").TString;
27
+ installation_ref: import("@sinclair/typebox").TString;
28
+ binding_ref: import("@sinclair/typebox").TString;
29
+ external_subject_ref: import("@sinclair/typebox").TString;
30
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
31
+ }>;
32
+ request_ref: import("@sinclair/typebox").TString;
33
+ }>, import("@sinclair/typebox").TObject<{
34
+ action: import("@sinclair/typebox").TLiteral<"prepare">;
35
+ source_ref: import("@sinclair/typebox").TString;
36
+ authority: import("@sinclair/typebox").TObject<{
37
+ project_ref: import("@sinclair/typebox").TString;
38
+ installation_ref: import("@sinclair/typebox").TString;
39
+ binding_ref: import("@sinclair/typebox").TString;
40
+ external_subject_ref: import("@sinclair/typebox").TString;
41
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
42
+ }>;
43
+ request_ref: import("@sinclair/typebox").TString;
44
+ }>, import("@sinclair/typebox").TObject<{
45
+ action: import("@sinclair/typebox").TLiteral<"transfer">;
46
+ transfer_ref: import("@sinclair/typebox").TString;
47
+ put_url: import("@sinclair/typebox").TString;
48
+ headers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
49
+ source_ref: import("@sinclair/typebox").TString;
50
+ authority: import("@sinclair/typebox").TObject<{
51
+ project_ref: import("@sinclair/typebox").TString;
52
+ installation_ref: import("@sinclair/typebox").TString;
53
+ binding_ref: import("@sinclair/typebox").TString;
54
+ external_subject_ref: import("@sinclair/typebox").TString;
55
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
56
+ }>;
57
+ request_ref: import("@sinclair/typebox").TString;
58
+ }>]>;
59
+ export declare const ExternalReferencePreparedSchema: import("@sinclair/typebox").TObject<{
60
+ source: import("@sinclair/typebox").TObject<{
61
+ source_ref: import("@sinclair/typebox").TString;
62
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
63
+ name: import("@sinclair/typebox").TString;
64
+ created_at: import("@sinclair/typebox").TString;
65
+ }>;
66
+ revision: import("@sinclair/typebox").TString;
67
+ sha256: import("@sinclair/typebox").TString;
68
+ size_bytes: import("@sinclair/typebox").TInteger;
69
+ media_type: import("@sinclair/typebox").TString;
70
+ transfer_ref: import("@sinclair/typebox").TString;
71
+ }>;
72
+ export declare const ExternalReferenceReadResultSchema: import("@sinclair/typebox").TObject<{
73
+ upload_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
74
+ source: import("@sinclair/typebox").TObject<{
75
+ source_ref: import("@sinclair/typebox").TString;
76
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
77
+ name: import("@sinclair/typebox").TString;
78
+ created_at: import("@sinclair/typebox").TString;
79
+ }>;
80
+ revision: import("@sinclair/typebox").TString;
81
+ sha256: import("@sinclair/typebox").TString;
82
+ size_bytes: import("@sinclair/typebox").TInteger;
83
+ media_type: import("@sinclair/typebox").TString;
84
+ transfer_ref: import("@sinclair/typebox").TString;
85
+ }>;
86
+ export declare const ExternalReferenceHostRequestSchema: import("@sinclair/typebox").TObject<{
87
+ invocation_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
88
+ project_identity: import("@sinclair/typebox").TObject<{
89
+ source: import("@sinclair/typebox").TLiteral<"git_config">;
90
+ project_id: import("@sinclair/typebox").TString;
91
+ }>;
92
+ host_auth: import("@sinclair/typebox").TObject<{
93
+ kind: import("@sinclair/typebox").TLiteral<"host_registration_secret_v1">;
94
+ secret: import("@sinclair/typebox").TString;
95
+ }>;
96
+ relay_project_ref: import("@sinclair/typebox").TString;
97
+ host_connection_ref: import("@sinclair/typebox").TString;
98
+ request_ref: import("@sinclair/typebox").TString;
99
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"read">]>;
100
+ source_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
101
+ }>;
102
+ export type ExternalReferenceAuthority = Static<typeof ExternalReferenceAuthoritySchema>;
103
+ export type ExternalReferenceControlRequest = Static<typeof ExternalReferenceControlRequestSchema>;
104
+ export type ExternalReferencePrepared = Static<typeof ExternalReferencePreparedSchema>;
105
+ export type ExternalReferenceReadResult = Static<typeof ExternalReferenceReadResultSchema>;
106
+ export type ExternalReferenceHostRequest = Static<typeof ExternalReferenceHostRequestSchema>;
107
+ export declare function isExternalReferenceList(value: unknown): value is ExternalReferenceList;
108
+ export declare function isExternalReferenceReadResult(value: unknown): value is ExternalReferenceReadResult;
109
+ //# sourceMappingURL=external-references.d.ts.map
@@ -0,0 +1,70 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { Value } from "@sinclair/typebox/value";
3
+ import { ExternalReferenceListSchema, } from "../api/external-references.js";
4
+ import { ExternalReferenceDescriptorSchema, ExternalReferenceRefSchema, } from "../api/external-references.js";
5
+ import { HostConnectionRefSchema, EventRefSchema, ProjectIdSchema, RelayProjectRefSchema, RelayUploadRefSchema, } from "../domain/index.js";
6
+ export const EXTERNAL_REFERENCE_CONTROL_PATH = "/internal/v1/external-references";
7
+ export const EXTERNAL_REFERENCE_HOST_PATH = "/host-control/v1/external-references";
8
+ export const ExternalReferenceAuthoritySchema = Type.Object({
9
+ project_ref: RelayProjectRefSchema,
10
+ installation_ref: Type.String({ minLength: 1, maxLength: 512 }),
11
+ binding_ref: Type.String({ minLength: 1, maxLength: 512 }),
12
+ external_subject_ref: Type.String({ pattern: "^open_id:[A-Za-z0-9_-]{1,500}$" }),
13
+ role: Type.Union([Type.Literal("owner"), Type.Literal("member")]),
14
+ }, { additionalProperties: false });
15
+ const common = {
16
+ authority: ExternalReferenceAuthoritySchema,
17
+ request_ref: Type.String({ pattern: "^eref_[a-f0-9]{32}$" }),
18
+ };
19
+ const SourceRead = { source_ref: ExternalReferenceRefSchema };
20
+ // PUT URL is a transient, private Relay-issued staging capability. Never log or persist it.
21
+ export const ExternalReferenceControlRequestSchema = Type.Union([
22
+ Type.Object({ ...common, action: Type.Literal("list") }, { additionalProperties: false }),
23
+ Type.Object({
24
+ ...common,
25
+ action: Type.Literal("register"),
26
+ document_url: Type.String({ minLength: 1, maxLength: 2048 }),
27
+ }, { additionalProperties: false }),
28
+ Type.Object({ ...common, ...SourceRead, action: Type.Literal("prepare") }, { additionalProperties: false }),
29
+ Type.Object({
30
+ ...common,
31
+ ...SourceRead,
32
+ action: Type.Literal("transfer"),
33
+ transfer_ref: Type.String({ pattern: "^transfer_[a-f0-9]{32}$" }),
34
+ put_url: Type.String({ maxLength: 8192, pattern: "^https://" }),
35
+ headers: Type.Record(Type.String({ maxLength: 128 }), Type.String({ maxLength: 2048 })),
36
+ }, { additionalProperties: false }),
37
+ ]);
38
+ export const ExternalReferencePreparedSchema = Type.Object({
39
+ source: ExternalReferenceDescriptorSchema,
40
+ revision: Type.String({ minLength: 1, maxLength: 256 }),
41
+ sha256: Type.String({ pattern: "^[a-f0-9]{64}$" }),
42
+ size_bytes: Type.Integer({ minimum: 0, maximum: 10485760 }),
43
+ media_type: Type.String({ minLength: 1, maxLength: 128 }),
44
+ transfer_ref: Type.String({ pattern: "^transfer_[a-f0-9]{32}$" }),
45
+ }, { additionalProperties: false });
46
+ export const ExternalReferenceReadResultSchema = Type.Object({
47
+ ...ExternalReferencePreparedSchema.properties,
48
+ upload_id: Type.Optional(RelayUploadRefSchema),
49
+ }, { additionalProperties: false });
50
+ export const ExternalReferenceHostRequestSchema = Type.Object({
51
+ invocation_ref: Type.Optional(EventRefSchema),
52
+ project_identity: Type.Object({ source: Type.Literal("git_config"), project_id: ProjectIdSchema }, { additionalProperties: false }),
53
+ host_auth: Type.Object({
54
+ kind: Type.Literal("host_registration_secret_v1"),
55
+ secret: Type.String({ minLength: 1, maxLength: 512 }),
56
+ }, { additionalProperties: false }),
57
+ relay_project_ref: RelayProjectRefSchema,
58
+ host_connection_ref: HostConnectionRefSchema,
59
+ request_ref: common.request_ref,
60
+ action: Type.Union([Type.Literal("list"), Type.Literal("read")]),
61
+ source_ref: Type.Optional(ExternalReferenceRefSchema),
62
+ }, { additionalProperties: false });
63
+ export function isExternalReferenceList(value) {
64
+ return Value.Check(ExternalReferenceListSchema, value);
65
+ }
66
+ export function isExternalReferenceReadResult(value) {
67
+ return (Value.Check(ExternalReferenceReadResultSchema, value) &&
68
+ (value.size_bytes === 0 || value.upload_id !== undefined));
69
+ }
70
+ //# sourceMappingURL=external-references.js.map
@@ -0,0 +1,49 @@
1
+ import { type Static } from "@sinclair/typebox";
2
+ export declare const FEISHU_DOCUMENT_CONTROL_PATH = "/internal/v1/feishu-documents";
3
+ export declare const FeishuDocumentControlRequestSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
4
+ action: import("@sinclair/typebox").TLiteral<"list">;
5
+ authority: import("@sinclair/typebox").TObject<{
6
+ project_ref: import("@sinclair/typebox").TString;
7
+ installation_ref: import("@sinclair/typebox").TString;
8
+ binding_ref: import("@sinclair/typebox").TString;
9
+ external_subject_ref: import("@sinclair/typebox").TString;
10
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
11
+ }>;
12
+ diagnostic_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ }>, import("@sinclair/typebox").TObject<{
14
+ action: import("@sinclair/typebox").TLiteral<"connect">;
15
+ document_id: import("@sinclair/typebox").TString;
16
+ authority: import("@sinclair/typebox").TObject<{
17
+ project_ref: import("@sinclair/typebox").TString;
18
+ installation_ref: import("@sinclair/typebox").TString;
19
+ binding_ref: import("@sinclair/typebox").TString;
20
+ external_subject_ref: import("@sinclair/typebox").TString;
21
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
22
+ }>;
23
+ diagnostic_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ }>, import("@sinclair/typebox").TObject<{
25
+ action: import("@sinclair/typebox").TLiteral<"connect_wiki">;
26
+ node_token: import("@sinclair/typebox").TString;
27
+ authority: import("@sinclair/typebox").TObject<{
28
+ project_ref: import("@sinclair/typebox").TString;
29
+ installation_ref: import("@sinclair/typebox").TString;
30
+ binding_ref: import("@sinclair/typebox").TString;
31
+ external_subject_ref: import("@sinclair/typebox").TString;
32
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
33
+ }>;
34
+ diagnostic_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
35
+ }>, import("@sinclair/typebox").TObject<{
36
+ expected_updated_at: import("@sinclair/typebox").TString;
37
+ action: import("@sinclair/typebox").TLiteral<"refresh">;
38
+ source_ref: import("@sinclair/typebox").TString;
39
+ authority: import("@sinclair/typebox").TObject<{
40
+ project_ref: import("@sinclair/typebox").TString;
41
+ installation_ref: import("@sinclair/typebox").TString;
42
+ binding_ref: import("@sinclair/typebox").TString;
43
+ external_subject_ref: import("@sinclair/typebox").TString;
44
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
45
+ }>;
46
+ diagnostic_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
47
+ }>]>;
48
+ export type FeishuDocumentControlRequest = Static<typeof FeishuDocumentControlRequestSchema>;
49
+ //# sourceMappingURL=feishu-documents.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { FeishuDocumentSourceRefSchema, RefreshFeishuDocumentBodySchema, } from "../api/feishu-documents.js";
3
+ import { RelayProjectRefSchema } from "../domain/index.js";
4
+ export const FEISHU_DOCUMENT_CONTROL_PATH = "/internal/v1/feishu-documents";
5
+ const authority = Type.Object({
6
+ project_ref: RelayProjectRefSchema,
7
+ installation_ref: Type.String({ minLength: 1, maxLength: 512 }),
8
+ binding_ref: Type.String({ minLength: 1, maxLength: 512 }),
9
+ external_subject_ref: Type.String({ pattern: "^open_id:[A-Za-z0-9_-]{1,500}$" }),
10
+ role: Type.Union([Type.Literal("owner"), Type.Literal("member")]),
11
+ }, { additionalProperties: false });
12
+ const common = {
13
+ authority,
14
+ diagnostic_id: Type.Optional(Type.String({ pattern: "^fdiag_[a-f0-9]{32}$" })),
15
+ };
16
+ // The private document locator travels only in this authenticated Relay -> Integration body.
17
+ export const FeishuDocumentControlRequestSchema = Type.Union([
18
+ Type.Object({ ...common, action: Type.Literal("list") }, { additionalProperties: false }),
19
+ Type.Object({
20
+ ...common,
21
+ action: Type.Literal("connect"),
22
+ document_id: Type.String({ pattern: "^[A-Za-z0-9]{27}$" }),
23
+ }, { additionalProperties: false }),
24
+ Type.Object({
25
+ ...common,
26
+ action: Type.Literal("connect_wiki"),
27
+ node_token: Type.String({ pattern: "^[A-Za-z0-9]{1,999}$" }),
28
+ }, { additionalProperties: false }),
29
+ Type.Object({
30
+ ...common,
31
+ action: Type.Literal("refresh"),
32
+ source_ref: FeishuDocumentSourceRefSchema,
33
+ ...RefreshFeishuDocumentBodySchema.properties,
34
+ }, { additionalProperties: false }),
35
+ ]);
36
+ //# sourceMappingURL=feishu-documents.js.map
@@ -73,4 +73,6 @@ export declare function isFeishuPlatformSessionContext(value: unknown): value is
73
73
  export declare function parseFeishuPlatformSessionContext(value: unknown): FeishuPlatformSessionContext | null;
74
74
  export * from "./platform-integration.js";
75
75
  export * from "./feishu-user-credentials.js";
76
+ export * from "./feishu-documents.js";
77
+ export * from "./external-references.js";
76
78
  //# sourceMappingURL=index.d.ts.map
@@ -67,4 +67,6 @@ export function parseFeishuPlatformSessionContext(value) {
67
67
  }
68
68
  export * from "./platform-integration.js";
69
69
  export * from "./feishu-user-credentials.js";
70
+ export * from "./feishu-documents.js";
71
+ export * from "./external-references.js";
70
72
  //# sourceMappingURL=index.js.map
@@ -217,6 +217,12 @@ export declare const PreIdentityReferenceAttachmentSourceSchema: import("@sincla
217
217
  adapter_version: import("@sinclair/typebox").TString;
218
218
  }>;
219
219
  export declare const NormalizedConversationSourceSchema: import("@sinclair/typebox").TObject<{
220
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
221
+ source_ref: import("@sinclair/typebox").TString;
222
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
223
+ name: import("@sinclair/typebox").TString;
224
+ created_at: import("@sinclair/typebox").TString;
225
+ }>>>;
220
226
  locator: import("@sinclair/typebox").TObject<{
221
227
  conversation: import("@sinclair/typebox").TObject<{
222
228
  installation: import("@sinclair/typebox").TObject<{
@@ -287,6 +293,12 @@ export declare const NormalizedConversationSourceSchema: import("@sinclair/typeb
287
293
  adapter_version: import("@sinclair/typebox").TString;
288
294
  }>;
289
295
  export declare const PreIdentityNormalizedConversationSourceSchema: import("@sinclair/typebox").TObject<{
296
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
297
+ source_ref: import("@sinclair/typebox").TString;
298
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
299
+ name: import("@sinclair/typebox").TString;
300
+ created_at: import("@sinclair/typebox").TString;
301
+ }>>>;
290
302
  locator: import("@sinclair/typebox").TObject<{
291
303
  conversation: import("@sinclair/typebox").TObject<{
292
304
  installation: import("@sinclair/typebox").TObject<{
@@ -466,6 +478,12 @@ export declare const ConversationSourceIngestionEnvelopeSchema: import("@sinclai
466
478
  verified_at: import("@sinclair/typebox").TString;
467
479
  }>;
468
480
  source: import("@sinclair/typebox").TObject<{
481
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
482
+ source_ref: import("@sinclair/typebox").TString;
483
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
484
+ name: import("@sinclair/typebox").TString;
485
+ created_at: import("@sinclair/typebox").TString;
486
+ }>>>;
469
487
  locator: import("@sinclair/typebox").TObject<{
470
488
  conversation: import("@sinclair/typebox").TObject<{
471
489
  installation: import("@sinclair/typebox").TObject<{
@@ -661,6 +679,12 @@ export declare const ConversationIngestionEnvelopeSchema: import("@sinclair/type
661
679
  verified_at: import("@sinclair/typebox").TString;
662
680
  }>;
663
681
  source: import("@sinclair/typebox").TObject<{
682
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
683
+ source_ref: import("@sinclair/typebox").TString;
684
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
685
+ name: import("@sinclair/typebox").TString;
686
+ created_at: import("@sinclair/typebox").TString;
687
+ }>>>;
664
688
  locator: import("@sinclair/typebox").TObject<{
665
689
  conversation: import("@sinclair/typebox").TObject<{
666
690
  installation: import("@sinclair/typebox").TObject<{
@@ -883,6 +907,12 @@ export declare const IntegrationConversationSourceDeliveryRequestSchema: import(
883
907
  attempt: import("@sinclair/typebox").TInteger;
884
908
  }>;
885
909
  source: import("@sinclair/typebox").TObject<{
910
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
911
+ source_ref: import("@sinclair/typebox").TString;
912
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
913
+ name: import("@sinclair/typebox").TString;
914
+ created_at: import("@sinclair/typebox").TString;
915
+ }>>>;
886
916
  locator: import("@sinclair/typebox").TObject<{
887
917
  conversation: import("@sinclair/typebox").TObject<{
888
918
  installation: import("@sinclair/typebox").TObject<{
@@ -1438,6 +1468,12 @@ export declare const TrustedConversationSourceIngestionCommandSchema: import("@s
1438
1468
  verified_at: import("@sinclair/typebox").TString;
1439
1469
  }>;
1440
1470
  source: import("@sinclair/typebox").TObject<{
1471
+ external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
1472
+ source_ref: import("@sinclair/typebox").TString;
1473
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
1474
+ name: import("@sinclair/typebox").TString;
1475
+ created_at: import("@sinclair/typebox").TString;
1476
+ }>>>;
1441
1477
  locator: import("@sinclair/typebox").TObject<{
1442
1478
  conversation: import("@sinclair/typebox").TObject<{
1443
1479
  installation: import("@sinclair/typebox").TObject<{
@@ -1,5 +1,6 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { Value } from "@sinclair/typebox/value";
3
+ import { ExternalReferenceDescriptorSchema } from "../api/external-references.js";
3
4
  import { IdempotencyKeySchema, IsoDateTimeStringSchema, MessageIdSchema, RelayAccountRefSchema, RelayProjectRefSchema, } from "../domain/index.js";
4
5
  import { MAX_REFERENCE_STAGED_UPLOAD_BYTES, PresignedUploadPutSchema, ReferenceStagedUploadReferenceProperties, RelayUploadProjectionSchema, } from "../api/uploads.js";
5
6
  export const PlatformAdapterKeySchema = Type.String({
@@ -132,6 +133,7 @@ export const PreIdentityReferenceAttachmentSourceSchema = Type.Object({
132
133
  adapter_version: Type.String({ minLength: 1, maxLength: 128 }),
133
134
  }, { additionalProperties: false });
134
135
  export const NormalizedConversationSourceSchema = Type.Object({
136
+ external_references: Type.Optional(Type.Array(ExternalReferenceDescriptorSchema, { minItems: 1, maxItems: 16 })),
135
137
  locator: ExternalMessageLocatorSchema,
136
138
  revision_ref: ExternalObjectRefSchema,
137
139
  author: NormalizedConversationAuthorSchema,
@@ -142,6 +144,7 @@ export const NormalizedConversationSourceSchema = Type.Object({
142
144
  adapter_version: Type.String({ minLength: 1, maxLength: 128 }),
143
145
  }, { additionalProperties: false });
144
146
  export const PreIdentityNormalizedConversationSourceSchema = Type.Object({
147
+ external_references: Type.Optional(Type.Array(ExternalReferenceDescriptorSchema, { minItems: 1, maxItems: 16 })),
145
148
  locator: ExternalMessageLocatorSchema,
146
149
  revision_ref: ExternalObjectRefSchema,
147
150
  author: PreIdentityConversationAuthorSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfey/tutti",
3
- "version": "0.1.106",
3
+ "version": "0.1.108",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",