@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.
- package/README.md +4 -2
- package/dist/chat-assistant/diagnostics.d.ts +1 -0
- package/dist/chat-assistant/index.js +18 -17
- package/dist/chat-assistant/reference-freshness-smoke-cli.d.ts +2 -0
- package/dist/chat-assistant/reference-freshness-smoke-cli.js +40 -0
- package/dist/chat-assistant/reference-freshness-smoke.d.ts +23 -0
- package/dist/chat-assistant/reference-freshness-smoke.js +274 -0
- package/dist/collaboration-ingestion/index.d.ts +1 -1
- package/dist/collaboration-ingestion/index.js +1 -1
- package/dist/collaboration-ingestion/managed-reference-sources.d.ts +3 -1
- package/dist/collaboration-ingestion/managed-reference-sources.js +7 -0
- package/dist/collaboration-state/task-compile-context.d.ts +1 -1
- package/dist/reference-access/message-context.d.ts +6 -0
- package/dist/reference-access/message-context.js +11 -0
- package/dist/reference-access/read-evidence.d.ts +2 -0
- package/dist/reference-access/read-evidence.js +8 -0
- package/dist/server-shell/cli/external-reference-runtime.js +1 -0
- package/dist/server-shell/http/routes/agent-context-external-reference-routes.js +1 -0
- package/dist/server-shell/http/routes/agent-context-messages-routes.js +2 -0
- package/dist/server-shell/http/routes/agent-context-reference-routes.js +39 -3
- package/dist/server-shell/http/routes/agent-context-references.d.ts +11 -0
- package/dist/server-shell/http/routes/agent-context-references.js +14 -0
- package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +2 -1
- package/node_modules/@tutti/shared/dist/schemas/api/external-references.d.ts +27 -4
- package/node_modules/@tutti/shared/dist/schemas/api/external-references.js +32 -3
- package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +1 -1
- package/node_modules/@tutti/shared/dist/schemas/api/index.js +1 -1
- package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +8 -4
- package/node_modules/@tutti/shared/dist/schemas/api/messages.js +2 -1
- package/node_modules/@tutti/shared/dist/schemas/api/platform-sessions.d.ts +5 -3
- package/node_modules/@tutti/shared/dist/schemas/api/platform-sessions.js +16 -1
- package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +2 -1
- package/node_modules/@tutti/shared/dist/schemas/internal/external-references.d.ts +15 -2
- package/node_modules/@tutti/shared/dist/schemas/internal/external-references.js +4 -2
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-integration.d.ts +6 -6
- package/package.json +1 -1
- package/prompts/chat-assistant.md +16 -15
- package/prompts/skills/README.md +1 -1
- package/prompts/skills/read-references/README.md +2 -2
- package/prompts/skills/read-references/SKILL.md +24 -37
- package/web/assets/{homepage-motion-scene-B6yPJnY8.js → homepage-motion-scene-rxYjg-zc.js} +1 -1
- package/web/assets/{index-aQnJ5JoI.js → index-BrKWdtKZ.js} +3 -3
- 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.
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
}>>>;
|