@xfey/tutti 0.1.109 → 0.1.110

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 (43) hide show
  1. package/README.md +4 -2
  2. package/dist/chat-assistant/diagnostics.d.ts +1 -0
  3. package/dist/chat-assistant/index.js +18 -17
  4. package/dist/chat-assistant/reference-freshness-smoke-cli.d.ts +2 -0
  5. package/dist/chat-assistant/reference-freshness-smoke-cli.js +40 -0
  6. package/dist/chat-assistant/reference-freshness-smoke.d.ts +23 -0
  7. package/dist/chat-assistant/reference-freshness-smoke.js +274 -0
  8. package/dist/collaboration-ingestion/index.d.ts +1 -1
  9. package/dist/collaboration-ingestion/index.js +1 -1
  10. package/dist/collaboration-ingestion/managed-reference-sources.d.ts +3 -1
  11. package/dist/collaboration-ingestion/managed-reference-sources.js +7 -0
  12. package/dist/collaboration-state/task-compile-context.d.ts +1 -1
  13. package/dist/reference-access/message-context.d.ts +6 -0
  14. package/dist/reference-access/message-context.js +11 -0
  15. package/dist/reference-access/read-evidence.d.ts +2 -0
  16. package/dist/reference-access/read-evidence.js +8 -0
  17. package/dist/server-shell/cli/external-reference-runtime.js +1 -0
  18. package/dist/server-shell/http/routes/agent-context-external-reference-routes.js +1 -0
  19. package/dist/server-shell/http/routes/agent-context-messages-routes.js +2 -0
  20. package/dist/server-shell/http/routes/agent-context-reference-routes.js +39 -3
  21. package/dist/server-shell/http/routes/agent-context-references.d.ts +11 -0
  22. package/dist/server-shell/http/routes/agent-context-references.js +14 -0
  23. package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +2 -1
  24. package/node_modules/@tutti/shared/dist/schemas/api/external-references.d.ts +27 -4
  25. package/node_modules/@tutti/shared/dist/schemas/api/external-references.js +32 -3
  26. package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +1 -1
  27. package/node_modules/@tutti/shared/dist/schemas/api/index.js +1 -1
  28. package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +8 -4
  29. package/node_modules/@tutti/shared/dist/schemas/api/messages.js +2 -1
  30. package/node_modules/@tutti/shared/dist/schemas/api/platform-sessions.d.ts +5 -3
  31. package/node_modules/@tutti/shared/dist/schemas/api/platform-sessions.js +16 -1
  32. package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +2 -1
  33. package/node_modules/@tutti/shared/dist/schemas/internal/external-references.d.ts +15 -2
  34. package/node_modules/@tutti/shared/dist/schemas/internal/external-references.js +4 -2
  35. package/node_modules/@tutti/shared/dist/schemas/internal/platform-integration.d.ts +6 -6
  36. package/package.json +1 -1
  37. package/prompts/chat-assistant.md +16 -15
  38. package/prompts/skills/README.md +1 -1
  39. package/prompts/skills/read-references/README.md +2 -2
  40. package/prompts/skills/read-references/SKILL.md +24 -37
  41. package/web/assets/{homepage-motion-scene-B6yPJnY8.js → homepage-motion-scene-rxYjg-zc.js} +1 -1
  42. package/web/assets/{index-aQnJ5JoI.js → index-BrKWdtKZ.js} +3 -3
  43. package/web/index.html +1 -1
@@ -3,11 +3,17 @@ import { VIEWER_HARD_READ_LIMIT_BYTES, WorkspaceOpsError, readReferenceSummaryIn
3
3
  import { authorizeAgentContextRequest } from "./agent-context-auth.js";
4
4
  import { AgentContextBadRequestError } from "./agent-context-errors.js";
5
5
  import { boundedLimit, pageByOffset, queryString } from "./agent-context-query.js";
6
- import { mapReferenceUnavailableReason, referenceListItems, } from "./agent-context-references.js";
6
+ import { mapReferenceUnavailableReason, localReferenceProvenance, managedReferencePaths, referenceListItems, } from "./agent-context-references.js";
7
7
  import { AGENT_CONTEXT_BASE_PATH, REFERENCE_FILE_DEFAULT_MAX_BYTES, REFERENCE_FILE_MAX_BYTES, REFERENCES_LIMIT_DEFAULT, REFERENCES_LIMIT_MAX, requireWorkspaceRoot, } from "./agent-context-shared.js";
8
8
  export function registerAgentContextReferenceRoutes(app, options) {
9
9
  app.get(`${AGENT_CONTEXT_BASE_PATH}/references`, (request) => {
10
- authorizeAgentContextRequest(request, options, "references:list");
10
+ const invocation = authorizeAgentContextRequest(request, options, "references:list");
11
+ const started = performance.now();
12
+ request.log.info({
13
+ stage: "local_reference_request",
14
+ action: "list",
15
+ invocation_ref: invocation.reference_invocation_ref,
16
+ }, "Local Reference request started");
11
17
  const query = request.query;
12
18
  const limit = boundedLimit(query.limit, {
13
19
  default: REFERENCES_LIMIT_DEFAULT,
@@ -20,6 +26,12 @@ export function registerAgentContextReferenceRoutes(app, options) {
20
26
  ...(cursor === undefined ? {} : { cursor }),
21
27
  limit,
22
28
  });
29
+ request.log.info({
30
+ stage: "local_reference_list",
31
+ invocation_ref: invocation.reference_invocation_ref,
32
+ source_count: page.items.length,
33
+ elapsed_ms: Math.round(performance.now() - started),
34
+ }, "Local References listed; remote freshness not checked");
23
35
  return {
24
36
  items: page.items,
25
37
  page: {
@@ -29,7 +41,13 @@ export function registerAgentContextReferenceRoutes(app, options) {
29
41
  };
30
42
  });
31
43
  app.get(`${AGENT_CONTEXT_BASE_PATH}/references/file`, (request) => {
32
- authorizeAgentContextRequest(request, options, "references:read");
44
+ const invocation = authorizeAgentContextRequest(request, options, "references:read");
45
+ const started = performance.now();
46
+ const diagnosticFields = {
47
+ invocation_ref: invocation.reference_invocation_ref,
48
+ action: "read",
49
+ };
50
+ request.log.info({ ...diagnosticFields, stage: "local_reference_request" }, "Local Reference request started");
33
51
  const path = queryString(request.query.path);
34
52
  if (path === undefined || path.trim() === "") {
35
53
  throw new AgentContextBadRequestError("Reference path is required");
@@ -49,12 +67,21 @@ export function registerAgentContextReferenceRoutes(app, options) {
49
67
  entry: file.file,
50
68
  summaries: readReferenceSummaryIndex({ workspaceRoot: requireWorkspaceRoot(options) }),
51
69
  });
70
+ const provenance = localReferenceProvenance(file.file.path, managedReferencePaths(options));
71
+ request.log.info({
72
+ ...diagnosticFields,
73
+ stage: "local_reference_read",
74
+ ...provenance,
75
+ result_kind: file.content.kind,
76
+ elapsed_ms: Math.round(performance.now() - started),
77
+ }, "Local Reference read; remote freshness not checked");
52
78
  if (file.content.kind !== "text") {
53
79
  return {
54
80
  kind: "unavailable",
55
81
  path,
56
82
  reason: file.content.reason,
57
83
  summary,
84
+ provenance,
58
85
  };
59
86
  }
60
87
  return {
@@ -62,12 +89,21 @@ export function registerAgentContextReferenceRoutes(app, options) {
62
89
  path: file.file.path,
63
90
  name: file.file.name,
64
91
  summary,
92
+ provenance,
65
93
  text: redactText(file.content.text),
66
94
  truncated: file.content.truncated,
67
95
  bytes_read: file.content.bytes_returned,
68
96
  };
69
97
  }
70
98
  catch (error) {
99
+ request.log.warn({
100
+ ...diagnosticFields,
101
+ stage: "local_reference_unavailable",
102
+ reason_code: error instanceof WorkspaceOpsError
103
+ ? error.code
104
+ : "reference_read_unavailable",
105
+ elapsed_ms: Math.round(performance.now() - started),
106
+ }, "Local Reference read unavailable");
71
107
  if (error instanceof WorkspaceOpsError) {
72
108
  return {
73
109
  kind: "unavailable",
@@ -1,15 +1,26 @@
1
1
  import { WorkspaceOpsError } from "../../../workspace-ops/index.js";
2
+ import type { HostProjectStore } from "../../../store/index.js";
2
3
  type AgentContextWorkspaceOptions = {
4
+ store?: HostProjectStore;
3
5
  workspaceOps?: {
4
6
  workspaceRoot: string;
5
7
  };
6
8
  now?: () => Date;
7
9
  };
10
+ export declare function localReferenceProvenance(path: string, managedPaths: ReadonlySet<string>): {
11
+ origin: "local_reference" | "managed_snapshot";
12
+ verification: "local_only";
13
+ };
14
+ export declare function managedReferencePaths(options: AgentContextWorkspaceOptions): ReadonlySet<string>;
8
15
  export declare function mapReferenceUnavailableReason(error: WorkspaceOpsError): string;
9
16
  export declare function referenceListItems(options: AgentContextWorkspaceOptions): {
10
17
  can_read_text: boolean;
11
18
  blocked_reason?: string;
12
19
  summary: import("../../../workspace-ops/types.js").ReferenceSummaryProjection;
20
+ provenance: {
21
+ origin: "local_reference" | "managed_snapshot";
22
+ verification: "local_only";
23
+ };
13
24
  extension?: string;
14
25
  media_type?: string;
15
26
  path: string;
@@ -1,5 +1,17 @@
1
1
  import { REFERENCE_INDEX_PATH, WorkspaceOpsError, readReferenceFileEntries, readReferenceSummaryIndex, readViewerFile, referenceFileCategoryForPath, referenceMediaTypeForPath, referenceSummaryProjectionForEntry, } from "../../../workspace-ops/index.js";
2
2
  import { AgentContextBadRequestError } from "./agent-context-errors.js";
3
+ import { readManagedReferenceSourcePaths } from "../../../collaboration-ingestion/index.js";
4
+ export function localReferenceProvenance(path, managedPaths) {
5
+ return {
6
+ origin: managedPaths.has(path) ? "managed_snapshot" : "local_reference",
7
+ verification: "local_only",
8
+ };
9
+ }
10
+ export function managedReferencePaths(options) {
11
+ return options.store === undefined
12
+ ? new Set()
13
+ : readManagedReferenceSourcePaths(options.store.db);
14
+ }
3
15
  function requireWorkspaceRoot(options) {
4
16
  if (options.workspaceOps === undefined) {
5
17
  throw new AgentContextBadRequestError("Workspace viewer is unavailable");
@@ -24,6 +36,7 @@ export function mapReferenceUnavailableReason(error) {
24
36
  export function referenceListItems(options) {
25
37
  const workspaceRoot = requireWorkspaceRoot(options);
26
38
  const summaries = readReferenceSummaryIndex({ workspaceRoot });
39
+ const managedPaths = managedReferencePaths(options);
27
40
  return referenceEntries(options).map((entry) => {
28
41
  const category = referenceFileCategoryForPath(entry.path) ?? "file";
29
42
  const mediaType = referenceMediaTypeForPath(entry.path);
@@ -37,6 +50,7 @@ export function referenceListItems(options) {
37
50
  ...(mediaType === undefined ? {} : { media_type: mediaType }),
38
51
  ...(entry.extension === undefined ? {} : { extension: entry.extension }),
39
52
  summary,
53
+ provenance: localReferenceProvenance(entry.path, managedPaths),
40
54
  ...read,
41
55
  };
42
56
  });
@@ -507,9 +507,10 @@ export declare const SendClarificationRoundMessageResultSchema: import("@sinclai
507
507
  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">]>;
508
508
  body: import("@sinclair/typebox").TString;
509
509
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
510
+ external_reference_reads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
510
511
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
511
512
  source_ref: import("@sinclair/typebox").TString;
512
- kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
513
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
513
514
  name: import("@sinclair/typebox").TString;
514
515
  created_at: import("@sinclair/typebox").TString;
515
516
  }>>>;
@@ -1,8 +1,21 @@
1
1
  import { type Static } from "@sinclair/typebox";
2
+ export type FeishuExternalReferenceLocator = {
3
+ kind: "docx" | "wiki" | "file";
4
+ token: string;
5
+ };
6
+ /** Private locator parsing only; callers must never fetch the supplied URL. */
7
+ export declare function parseFeishuExternalReferenceInput(value: string): FeishuExternalReferenceLocator | null;
2
8
  export declare const ExternalReferenceRefSchema: import("@sinclair/typebox").TString;
9
+ export declare const ReferenceSubmissionRefSchema: import("@sinclair/typebox").TString;
10
+ export declare const ReferenceSubmissionSchema: import("@sinclair/typebox").TObject<{
11
+ submission_ref: import("@sinclair/typebox").TString;
12
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"docx">, import("@sinclair/typebox").TLiteral<"wiki">, import("@sinclair/typebox").TLiteral<"file">]>;
13
+ created_at: import("@sinclair/typebox").TString;
14
+ expires_at: import("@sinclair/typebox").TString;
15
+ }>;
3
16
  export declare const ExternalReferenceDescriptorSchema: import("@sinclair/typebox").TObject<{
4
17
  source_ref: import("@sinclair/typebox").TString;
5
- kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
18
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
6
19
  name: import("@sinclair/typebox").TString;
7
20
  created_at: import("@sinclair/typebox").TString;
8
21
  }>;
@@ -10,14 +23,24 @@ export declare const ExternalReferenceListSchema: import("@sinclair/typebox").TO
10
23
  can_register: import("@sinclair/typebox").TBoolean;
11
24
  items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
12
25
  source_ref: import("@sinclair/typebox").TString;
13
- kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
26
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
14
27
  name: import("@sinclair/typebox").TString;
15
28
  created_at: import("@sinclair/typebox").TString;
16
29
  }>>;
30
+ pending: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
31
+ submission_ref: import("@sinclair/typebox").TString;
32
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"docx">, import("@sinclair/typebox").TLiteral<"wiki">, import("@sinclair/typebox").TLiteral<"file">]>;
33
+ created_at: import("@sinclair/typebox").TString;
34
+ expires_at: import("@sinclair/typebox").TString;
35
+ }>>>;
17
36
  }>;
18
- export declare const RegisterExternalReferenceBodySchema: import("@sinclair/typebox").TObject<{
37
+ export declare const RegisterExternalReferenceBodySchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
19
38
  document_url: import("@sinclair/typebox").TString;
20
- }>;
39
+ }>, import("@sinclair/typebox").TObject<{
40
+ submission_ref: import("@sinclair/typebox").TString;
41
+ }>]>;
42
+ export type RegisterExternalReferenceBody = Static<typeof RegisterExternalReferenceBodySchema>;
43
+ export type ReferenceSubmission = Static<typeof ReferenceSubmissionSchema>;
21
44
  export type ExternalReferenceDescriptor = Static<typeof ExternalReferenceDescriptorSchema>;
22
45
  export type ExternalReferenceList = Static<typeof ExternalReferenceListSchema>;
23
46
  //# sourceMappingURL=external-references.d.ts.map
@@ -1,10 +1,35 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { IsoDateTimeStringSchema } from "../domain/index.js";
3
+ import { parseFeishuDocumentUrl } from "./feishu-documents.js";
4
+ /** Private locator parsing only; callers must never fetch the supplied URL. */
5
+ export function parseFeishuExternalReferenceInput(value) {
6
+ if (value.length > 2048 ||
7
+ [...value].some((character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127))
8
+ return null;
9
+ const input = value.trim();
10
+ if (/^[A-Za-z0-9]{27}$/u.test(input))
11
+ return { kind: "docx", token: input };
12
+ const document = parseFeishuDocumentUrl(input);
13
+ if (document)
14
+ return document;
15
+ const file = /^https:\/\/(?:[a-z0-9-]+\.)?(?:feishu\.cn|larksuite\.com)(?::443)?\/file\/([a-z0-9]{1,256})\/?(?:[?#][^\s]*)?$/iu.exec(input);
16
+ return file?.[1] ? { kind: "file", token: file[1] } : null;
17
+ }
3
18
  export const ExternalReferenceRefSchema = Type.String({ pattern: "^external_ref_[a-f0-9]{32}$" });
19
+ export const ReferenceSubmissionRefSchema = Type.String({
20
+ pattern: "^ref_submission_[a-f0-9]{32}$",
21
+ });
22
+ export const ReferenceSubmissionSchema = Type.Object({
23
+ submission_ref: ReferenceSubmissionRefSchema,
24
+ kind: Type.Union([Type.Literal("docx"), Type.Literal("wiki"), Type.Literal("file")]),
25
+ created_at: IsoDateTimeStringSchema,
26
+ expires_at: IsoDateTimeStringSchema,
27
+ }, { additionalProperties: false });
4
28
  export const ExternalReferenceDescriptorSchema = Type.Object({
5
29
  source_ref: ExternalReferenceRefSchema,
6
30
  kind: Type.Union([
7
31
  Type.Literal("feishu_docx"),
32
+ Type.Literal("feishu_drive_file"),
8
33
  Type.Literal("feishu_file"),
9
34
  Type.Literal("feishu_image"),
10
35
  ]),
@@ -14,8 +39,12 @@ export const ExternalReferenceDescriptorSchema = Type.Object({
14
39
  export const ExternalReferenceListSchema = Type.Object({
15
40
  can_register: Type.Boolean(),
16
41
  items: Type.Array(ExternalReferenceDescriptorSchema, { maxItems: 500 }),
42
+ pending: Type.Optional(Type.Array(ReferenceSubmissionSchema, { maxItems: 20 })),
17
43
  }, { additionalProperties: false });
18
- export const RegisterExternalReferenceBodySchema = Type.Object({
19
- document_url: Type.String({ minLength: 1, maxLength: 2048 }),
20
- }, { additionalProperties: false });
44
+ export const RegisterExternalReferenceBodySchema = Type.Union([
45
+ Type.Object({
46
+ document_url: Type.String({ minLength: 1, maxLength: 2048 }),
47
+ }, { additionalProperties: false }),
48
+ Type.Object({ submission_ref: ReferenceSubmissionRefSchema }, { additionalProperties: false }),
49
+ ]);
21
50
  //# sourceMappingURL=external-references.js.map
@@ -5,7 +5,7 @@ export { CompleteDesktopEntryContinuationBodySchema, CompleteDesktopEntryContinu
5
5
  export type { CompleteDesktopEntryContinuationBody, CreateDesktopEntryContinuationResponse, GetDesktopEntryContinuationResponse, SealedDesktopEntryPayload, } from "./desktop-entry-continuations.js";
6
6
  export { LOCAL_CONSOLE_ACCOUNT_HANDOFF_TOKEN_MAX_LENGTH, LOCAL_CONSOLE_ACCOUNT_HANDOFF_TOKEN_MIN_LENGTH, RegisterLocalConsoleAccountHandoffBodySchema, RegisterLocalConsoleAccountHandoffResponseSchema, } from "./local-console-account-handoffs.js";
7
7
  export type { RegisterLocalConsoleAccountHandoffBody, RegisterLocalConsoleAccountHandoffResponse, } from "./local-console-account-handoffs.js";
8
- 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";
8
+ export { FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH, FEISHU_DOCX_READWRITE_USER_SCOPE, FEISHU_DOCX_REQUIRED_USER_SCOPE, FEISHU_DRIVE_DOWNLOAD_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, hasFeishuDriveDownloadCapability, hasFeishuWikiReadCapability, } from "./platform-sessions.js";
9
9
  export type { FeishuPlatformSessionBootstrapBody, FeishuPlatformSessionBootstrapResponse, FeishuBrowserHandoffResponse, ConsumeFeishuBrowserHandoffBody, FeishuDocumentAuthorizationBootstrapResponse, FeishuDocumentAuthorizationProfile, FeishuDocumentAuthorizationExchangeBody, FeishuDocumentAuthorizationProjection, FeishuPlatformSessionExchangeBody, FeishuPlatformSessionProjection, } from "./platform-sessions.js";
10
10
  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";
11
11
  export { GetProviderModelsResponseSchema, MAX_PROVIDER_MODEL_NAME_LENGTH, ProviderConfigInvalidReasonCodeSchema, ProviderConfigProjectionSchema, ProviderModelDiscoveryUnavailableReasonSchema, ProviderModelNameSchema, ProviderModelValidationFailureReasonSchema, ProviderUnavailableReasonCodeSchema, ProjectProviderUnavailableReasonSchema, UpdateProviderDefaultModelBodySchema, UpdateProviderDefaultModelDispositionSchema, UpdateProviderDefaultModelPayloadSchema, UpdateProviderDefaultModelResponseSchema, } from "./provider-config.js";
@@ -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_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";
5
+ export { FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH, FEISHU_DOCX_READWRITE_USER_SCOPE, FEISHU_DOCX_REQUIRED_USER_SCOPE, FEISHU_DRIVE_DOWNLOAD_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, hasFeishuDriveDownloadCapability, 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";
@@ -133,9 +133,10 @@ 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_reference_reads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
136
137
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
137
138
  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
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
139
140
  name: import("@sinclair/typebox").TString;
140
141
  created_at: import("@sinclair/typebox").TString;
141
142
  }>>>;
@@ -343,9 +344,10 @@ export declare const MessageProjectionSchema: import("@sinclair/typebox").TObjec
343
344
  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">]>;
344
345
  body: import("@sinclair/typebox").TString;
345
346
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
347
+ external_reference_reads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
346
348
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
347
349
  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">]>;
350
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
349
351
  name: import("@sinclair/typebox").TString;
350
352
  created_at: import("@sinclair/typebox").TString;
351
353
  }>>>;
@@ -672,9 +674,10 @@ export declare const SendMainChatMessageResultSchema: import("@sinclair/typebox"
672
674
  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">]>;
673
675
  body: import("@sinclair/typebox").TString;
674
676
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
677
+ external_reference_reads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
675
678
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
676
679
  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">]>;
680
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
678
681
  name: import("@sinclair/typebox").TString;
679
682
  created_at: import("@sinclair/typebox").TString;
680
683
  }>>>;
@@ -903,9 +906,10 @@ export declare const MessageCreatedEventPayloadSchema: import("@sinclair/typebox
903
906
  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">]>;
904
907
  body: import("@sinclair/typebox").TString;
905
908
  refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
909
+ external_reference_reads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
906
910
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
907
911
  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">]>;
912
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
909
913
  name: import("@sinclair/typebox").TString;
910
914
  created_at: import("@sinclair/typebox").TString;
911
915
  }>>>;
@@ -1,5 +1,5 @@
1
1
  import { Type } from "@sinclair/typebox";
2
- import { ExternalReferenceDescriptorSchema } from "./external-references.js";
2
+ import { ExternalReferenceDescriptorSchema, ExternalReferenceRefSchema, } from "./external-references.js";
3
3
  import { ActivityRefSchema, ClarificationRoundRefSchema, ClarificationThreadRefSchema, CursorSchema, IsoDateTimeStringSchema, MessageIdSchema, RunResultIdSchema, TaskIdSchema, WorkflowInvocationRefSchema, } from "../domain/index.js";
4
4
  import { ACCOUNT_AVATAR_COLORS } from "../../domain/index.js";
5
5
  import { InterruptedCommandDispositionSchema, NonEmptyStringSchema, commandEnvelopeSchema, commandResponseWithResultSchema, timelineWindowSchema, } from "./primitives.js";
@@ -125,6 +125,7 @@ export const ArtifactPreviewRefSchema = Type.Object({
125
125
  run_result_id: Type.Optional(RunResultIdSchema),
126
126
  }, { additionalProperties: false });
127
127
  export const MessageRefsSchema = Type.Object({
128
+ external_reference_reads: Type.Optional(Type.Array(ExternalReferenceRefSchema, { minItems: 1, maxItems: 16, uniqueItems: true })),
128
129
  external_references: Type.Optional(Type.Array(ExternalReferenceDescriptorSchema, { minItems: 1, maxItems: 16 })),
129
130
  task_id: Type.Optional(TaskIdSchema),
130
131
  activity_ref: Type.Optional(ActivityRefSchema),
@@ -5,13 +5,15 @@ export declare const FEISHU_DOCX_REQUIRED_USER_SCOPE = "docx:document:readonly";
5
5
  export declare const FEISHU_DOCX_READWRITE_USER_SCOPE = "docx:document";
6
6
  export declare const FEISHU_OFFLINE_ACCESS_SCOPE = "offline_access";
7
7
  export declare const FEISHU_WIKI_REQUIRED_USER_SCOPE = "wiki:node:read";
8
- export type FeishuDocumentAuthorizationProfile = "docx" | "wiki_docx";
8
+ export declare const FEISHU_DRIVE_DOWNLOAD_USER_SCOPE = "drive:file:download";
9
+ export type FeishuDocumentAuthorizationProfile = "docx" | "wiki_docx" | "drive_file";
9
10
  export declare const FEISHU_PLATFORM_STATE_LENGTH = 43;
10
11
  export declare const FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH = 43;
11
12
  export declare function hasFeishuDocxReadCapability(scopes: readonly string[]): boolean;
12
13
  export declare function hasFeishuWikiReadCapability(scopes: readonly string[]): boolean;
14
+ export declare function hasFeishuDriveDownloadCapability(scopes: readonly string[]): boolean;
13
15
  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">]>>;
16
+ profile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"docx">, import("@sinclair/typebox").TLiteral<"wiki_docx">, import("@sinclair/typebox").TLiteral<"drive_file">]>>;
15
17
  }>;
16
18
  export declare const FeishuPlatformStateSchema: import("@sinclair/typebox").TString;
17
19
  export declare const FeishuBrowserHandoffTokenSchema: import("@sinclair/typebox").TString;
@@ -52,7 +54,7 @@ export declare const FeishuDocumentAuthorizationBootstrapResponseSchema: import(
52
54
  platform: import("@sinclair/typebox").TLiteral<"feishu">;
53
55
  app_id: import("@sinclair/typebox").TString;
54
56
  state: import("@sinclair/typebox").TString;
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">]>]>;
57
+ 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").TLiteral<"drive:file:download">]>, 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">]>]>;
56
58
  expires_at: import("@sinclair/typebox").TString;
57
59
  }>;
58
60
  export declare const FeishuDocumentAuthorizationExchangeBodySchema: import("@sinclair/typebox").TObject<{
@@ -6,6 +6,7 @@ export const FEISHU_DOCX_REQUIRED_USER_SCOPE = "docx:document:readonly";
6
6
  export const FEISHU_DOCX_READWRITE_USER_SCOPE = "docx:document";
7
7
  export const FEISHU_OFFLINE_ACCESS_SCOPE = "offline_access";
8
8
  export const FEISHU_WIKI_REQUIRED_USER_SCOPE = "wiki:node:read";
9
+ export const FEISHU_DRIVE_DOWNLOAD_USER_SCOPE = "drive:file:download";
9
10
  export const FEISHU_PLATFORM_STATE_LENGTH = 43;
10
11
  export const FEISHU_BROWSER_HANDOFF_TOKEN_LENGTH = 43;
11
12
  export function hasFeishuDocxReadCapability(scopes) {
@@ -14,8 +15,17 @@ export function hasFeishuDocxReadCapability(scopes) {
14
15
  export function hasFeishuWikiReadCapability(scopes) {
15
16
  return scopes.some((scope) => [FEISHU_WIKI_REQUIRED_USER_SCOPE, "wiki:wiki:readonly", "wiki:wiki"].includes(scope));
16
17
  }
18
+ export function hasFeishuDriveDownloadCapability(scopes) {
19
+ return scopes.some((scope) => [
20
+ FEISHU_DRIVE_DOWNLOAD_USER_SCOPE,
21
+ "drive:drive",
22
+ "drive:drive:readonly",
23
+ "drive:file",
24
+ "drive:file:readonly",
25
+ ].includes(scope));
26
+ }
17
27
  export const FeishuDocumentAuthorizationBootstrapBodySchema = Type.Object({
18
- profile: Type.Optional(Type.Union([Type.Literal("docx"), Type.Literal("wiki_docx")])),
28
+ profile: Type.Optional(Type.Union([Type.Literal("docx"), Type.Literal("wiki_docx"), Type.Literal("drive_file")])),
19
29
  }, { additionalProperties: false });
20
30
  export const FeishuPlatformStateSchema = Type.String({
21
31
  minLength: FEISHU_PLATFORM_STATE_LENGTH,
@@ -65,6 +75,11 @@ export const FeishuDocumentAuthorizationBootstrapResponseSchema = Type.Object({
65
75
  app_id: Type.String({ minLength: 1, maxLength: 128, pattern: "^cli_[A-Za-z0-9]+$" }),
66
76
  state: FeishuPlatformStateSchema,
67
77
  authorization_scopes: Type.Union([
78
+ Type.Tuple([
79
+ Type.Literal(FEISHU_DOCX_REQUIRED_USER_SCOPE),
80
+ Type.Literal(FEISHU_OFFLINE_ACCESS_SCOPE),
81
+ Type.Literal(FEISHU_DRIVE_DOWNLOAD_USER_SCOPE),
82
+ ]),
68
83
  Type.Tuple([
69
84
  Type.Literal(FEISHU_DOCX_REQUIRED_USER_SCOPE),
70
85
  Type.Literal(FEISHU_OFFLINE_ACCESS_SCOPE),
@@ -400,9 +400,10 @@ 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_reference_reads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
403
404
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
404
405
  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
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
406
407
  name: import("@sinclair/typebox").TString;
407
408
  created_at: import("@sinclair/typebox").TString;
408
409
  }>>>;
@@ -11,6 +11,7 @@ export declare const ExternalReferenceAuthoritySchema: import("@sinclair/typebox
11
11
  }>;
12
12
  export declare const ExternalReferenceControlRequestSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
13
13
  action: import("@sinclair/typebox").TLiteral<"list">;
14
+ include_pending: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
14
15
  authority: import("@sinclair/typebox").TObject<{
15
16
  project_ref: import("@sinclair/typebox").TString;
16
17
  installation_ref: import("@sinclair/typebox").TString;
@@ -30,6 +31,17 @@ export declare const ExternalReferenceControlRequestSchema: import("@sinclair/ty
30
31
  role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
31
32
  }>;
32
33
  request_ref: import("@sinclair/typebox").TString;
34
+ }>, import("@sinclair/typebox").TObject<{
35
+ action: import("@sinclair/typebox").TLiteral<"confirm">;
36
+ submission_ref: import("@sinclair/typebox").TString;
37
+ authority: import("@sinclair/typebox").TObject<{
38
+ project_ref: import("@sinclair/typebox").TString;
39
+ installation_ref: import("@sinclair/typebox").TString;
40
+ binding_ref: import("@sinclair/typebox").TString;
41
+ external_subject_ref: import("@sinclair/typebox").TString;
42
+ role: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"owner">, import("@sinclair/typebox").TLiteral<"member">]>;
43
+ }>;
44
+ request_ref: import("@sinclair/typebox").TString;
33
45
  }>, import("@sinclair/typebox").TObject<{
34
46
  action: import("@sinclair/typebox").TLiteral<"prepare">;
35
47
  source_ref: import("@sinclair/typebox").TString;
@@ -59,7 +71,7 @@ export declare const ExternalReferenceControlRequestSchema: import("@sinclair/ty
59
71
  export declare const ExternalReferencePreparedSchema: import("@sinclair/typebox").TObject<{
60
72
  source: import("@sinclair/typebox").TObject<{
61
73
  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">]>;
74
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
63
75
  name: import("@sinclair/typebox").TString;
64
76
  created_at: import("@sinclair/typebox").TString;
65
77
  }>;
@@ -73,7 +85,7 @@ export declare const ExternalReferenceReadResultSchema: import("@sinclair/typebo
73
85
  upload_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
74
86
  source: import("@sinclair/typebox").TObject<{
75
87
  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">]>;
88
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
77
89
  name: import("@sinclair/typebox").TString;
78
90
  created_at: import("@sinclair/typebox").TString;
79
91
  }>;
@@ -84,6 +96,7 @@ export declare const ExternalReferenceReadResultSchema: import("@sinclair/typebo
84
96
  transfer_ref: import("@sinclair/typebox").TString;
85
97
  }>;
86
98
  export declare const ExternalReferenceHostRequestSchema: import("@sinclair/typebox").TObject<{
99
+ supports_drive_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
87
100
  invocation_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
88
101
  project_identity: import("@sinclair/typebox").TObject<{
89
102
  source: import("@sinclair/typebox").TLiteral<"git_config">;
@@ -1,6 +1,6 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { Value } from "@sinclair/typebox/value";
3
- import { ExternalReferenceListSchema, } from "../api/external-references.js";
3
+ import { ExternalReferenceListSchema, ReferenceSubmissionRefSchema, } from "../api/external-references.js";
4
4
  import { ExternalReferenceDescriptorSchema, ExternalReferenceRefSchema, } from "../api/external-references.js";
5
5
  import { HostConnectionRefSchema, EventRefSchema, ProjectIdSchema, RelayProjectRefSchema, RelayUploadRefSchema, } from "../domain/index.js";
6
6
  export const EXTERNAL_REFERENCE_CONTROL_PATH = "/internal/v1/external-references";
@@ -19,12 +19,13 @@ const common = {
19
19
  const SourceRead = { source_ref: ExternalReferenceRefSchema };
20
20
  // PUT URL is a transient, private Relay-issued staging capability. Never log or persist it.
21
21
  export const ExternalReferenceControlRequestSchema = Type.Union([
22
- Type.Object({ ...common, action: Type.Literal("list") }, { additionalProperties: false }),
22
+ Type.Object({ ...common, action: Type.Literal("list"), include_pending: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),
23
23
  Type.Object({
24
24
  ...common,
25
25
  action: Type.Literal("register"),
26
26
  document_url: Type.String({ minLength: 1, maxLength: 2048 }),
27
27
  }, { additionalProperties: false }),
28
+ Type.Object({ ...common, action: Type.Literal("confirm"), submission_ref: ReferenceSubmissionRefSchema }, { additionalProperties: false }),
28
29
  Type.Object({ ...common, ...SourceRead, action: Type.Literal("prepare") }, { additionalProperties: false }),
29
30
  Type.Object({
30
31
  ...common,
@@ -48,6 +49,7 @@ export const ExternalReferenceReadResultSchema = Type.Object({
48
49
  upload_id: Type.Optional(RelayUploadRefSchema),
49
50
  }, { additionalProperties: false });
50
51
  export const ExternalReferenceHostRequestSchema = Type.Object({
52
+ supports_drive_files: Type.Optional(Type.Boolean()),
51
53
  invocation_ref: Type.Optional(EventRefSchema),
52
54
  project_identity: Type.Object({ source: Type.Literal("git_config"), project_id: ProjectIdSchema }, { additionalProperties: false }),
53
55
  host_auth: Type.Object({
@@ -219,7 +219,7 @@ export declare const PreIdentityReferenceAttachmentSourceSchema: import("@sincla
219
219
  export declare const NormalizedConversationSourceSchema: import("@sinclair/typebox").TObject<{
220
220
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
221
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">]>;
222
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
223
223
  name: import("@sinclair/typebox").TString;
224
224
  created_at: import("@sinclair/typebox").TString;
225
225
  }>>>;
@@ -295,7 +295,7 @@ export declare const NormalizedConversationSourceSchema: import("@sinclair/typeb
295
295
  export declare const PreIdentityNormalizedConversationSourceSchema: import("@sinclair/typebox").TObject<{
296
296
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
297
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">]>;
298
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
299
299
  name: import("@sinclair/typebox").TString;
300
300
  created_at: import("@sinclair/typebox").TString;
301
301
  }>>>;
@@ -480,7 +480,7 @@ export declare const ConversationSourceIngestionEnvelopeSchema: import("@sinclai
480
480
  source: import("@sinclair/typebox").TObject<{
481
481
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
482
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">]>;
483
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
484
484
  name: import("@sinclair/typebox").TString;
485
485
  created_at: import("@sinclair/typebox").TString;
486
486
  }>>>;
@@ -681,7 +681,7 @@ export declare const ConversationIngestionEnvelopeSchema: import("@sinclair/type
681
681
  source: import("@sinclair/typebox").TObject<{
682
682
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
683
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">]>;
684
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
685
685
  name: import("@sinclair/typebox").TString;
686
686
  created_at: import("@sinclair/typebox").TString;
687
687
  }>>>;
@@ -909,7 +909,7 @@ export declare const IntegrationConversationSourceDeliveryRequestSchema: import(
909
909
  source: import("@sinclair/typebox").TObject<{
910
910
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
911
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">]>;
912
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
913
913
  name: import("@sinclair/typebox").TString;
914
914
  created_at: import("@sinclair/typebox").TString;
915
915
  }>>>;
@@ -1470,7 +1470,7 @@ export declare const TrustedConversationSourceIngestionCommandSchema: import("@s
1470
1470
  source: import("@sinclair/typebox").TObject<{
1471
1471
  external_references: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
1472
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">]>;
1473
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"feishu_docx">, import("@sinclair/typebox").TLiteral<"feishu_drive_file">, import("@sinclair/typebox").TLiteral<"feishu_file">, import("@sinclair/typebox").TLiteral<"feishu_image">]>;
1474
1474
  name: import("@sinclair/typebox").TString;
1475
1475
  created_at: import("@sinclair/typebox").TString;
1476
1476
  }>>>;