@noodleseed/one 0.154.0 → 0.156.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/dist/assistant-embed-django-tests.d.ts +3 -0
- package/dist/assistant-embed-django-tests.d.ts.map +1 -0
- package/dist/assistant-embed-django-tests.js +140 -0
- package/dist/assistant-embed-django-tests.js.map +1 -0
- package/dist/assistant-embed-django.d.ts +4 -0
- package/dist/assistant-embed-django.d.ts.map +1 -0
- package/dist/assistant-embed-django.js +259 -0
- package/dist/assistant-embed-django.js.map +1 -0
- package/dist/assistant-embed-installation.d.ts +29 -0
- package/dist/assistant-embed-installation.d.ts.map +1 -0
- package/dist/assistant-embed-installation.js +124 -0
- package/dist/assistant-embed-installation.js.map +1 -0
- package/dist/assistant-embed-profile.d.ts +8 -0
- package/dist/assistant-embed-profile.d.ts.map +1 -0
- package/dist/assistant-embed-profile.js +150 -0
- package/dist/assistant-embed-profile.js.map +1 -0
- package/dist/assistant-embed-scaffold-template.d.ts +3 -2
- package/dist/assistant-embed-scaffold-template.d.ts.map +1 -1
- package/dist/assistant-embed-scaffold-template.js +39 -84
- package/dist/assistant-embed-scaffold-template.js.map +1 -1
- package/dist/assistant-embed-tests.d.ts +5 -0
- package/dist/assistant-embed-tests.d.ts.map +1 -0
- package/dist/assistant-embed-tests.js +106 -0
- package/dist/assistant-embed-tests.js.map +1 -0
- package/dist/assistant-embed-vue.d.ts +3 -0
- package/dist/assistant-embed-vue.d.ts.map +1 -0
- package/dist/assistant-embed-vue.js +77 -0
- package/dist/assistant-embed-vue.js.map +1 -0
- package/dist/commands/assistant-embed-ops.d.ts.map +1 -1
- package/dist/commands/assistant-embed-ops.js +112 -63
- package/dist/commands/assistant-embed-ops.js.map +1 -1
- package/dist/commands/author-loop.d.ts.map +1 -1
- package/dist/commands/author-loop.js +24 -28
- package/dist/commands/author-loop.js.map +1 -1
- package/dist/commands/deploy-first-flow.d.ts.map +1 -1
- package/dist/commands/deploy-first-flow.js +26 -15
- package/dist/commands/deploy-first-flow.js.map +1 -1
- package/dist/commands/deploy-preflight.d.ts +5 -0
- package/dist/commands/deploy-preflight.d.ts.map +1 -1
- package/dist/commands/deploy-preflight.js +44 -5
- package/dist/commands/deploy-preflight.js.map +1 -1
- package/dist/commands/local-readiness.d.ts +9 -1
- package/dist/commands/local-readiness.d.ts.map +1 -1
- package/dist/commands/local-readiness.js +74 -4
- package/dist/commands/local-readiness.js.map +1 -1
- package/dist/commands/project-setup.d.ts.map +1 -1
- package/dist/commands/project-setup.js +10 -15
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/control-plane-request.d.ts +4 -0
- package/dist/control-plane-request.d.ts.map +1 -1
- package/dist/control-plane-request.js +40 -20
- package/dist/control-plane-request.js.map +1 -1
- package/dist/project-scaffold-model.d.ts +14 -0
- package/dist/project-scaffold-model.d.ts.map +1 -0
- package/dist/project-scaffold-model.js +36 -0
- package/dist/project-scaffold-model.js.map +1 -0
- package/dist/project-scaffold-templates.d.ts.map +1 -1
- package/dist/project-scaffold-templates.js +73 -39
- package/dist/project-scaffold-templates.js.map +1 -1
- package/dist/project-scaffold-test-template.d.ts +4 -0
- package/dist/project-scaffold-test-template.d.ts.map +1 -0
- package/dist/project-scaffold-test-template.js +89 -0
- package/dist/project-scaffold-test-template.js.map +1 -0
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +1 -2
- package/dist/project.js.map +1 -1
- package/dist/widget-focused-template.d.ts +1 -1
- package/dist/widget-focused-template.d.ts.map +1 -1
- package/dist/widget-focused-template.js +34 -12
- package/dist/widget-focused-template.js.map +1 -1
- package/dist/widget-scaffold-template.d.ts +1 -1
- package/dist/widget-scaffold-template.d.ts.map +1 -1
- package/dist/widget-scaffold-template.js +75 -43
- package/dist/widget-scaffold-template.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +18 -4
- package/node_modules/@noodle-borg/agent-kit/dist/skill-app-playbook-ref.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +9 -12
- package/node_modules/@noodle-borg/agent-kit/dist/skill-connect-refs.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-operations-ref.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-embedded-assistant-ref.js +34 -26
- package/node_modules/@noodle-borg/agent-kit/dist/skill-server-playbook-ref.js +2 -2
- package/node_modules/@noodle-borg/agent-kit/dist/skill-verification-ref.js +2 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-suggestions.js +5 -3
- package/node_modules/@noodle-borg/assistant-gateway/dist/continuity-bounds.d.ts +36 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/continuity-bounds.js +52 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/continuity-store.d.ts +115 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/continuity-store.js +51 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-continuity-store.d.ts +26 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/in-memory-continuity-store.js +80 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/model-request.d.ts +1 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/model-request.js +2 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/model-response-values.js +11 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/model-responses.js +1 -10
- package/node_modules/@noodle-borg/assistant-gateway/dist/model-stream.js +1 -10
- package/node_modules/@noodle-borg/assistant-gateway/dist/portable.d.ts +3 -0
- package/node_modules/@noodle-borg/assistant-gateway/dist/portable.js +3 -0
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +41 -0
- package/node_modules/@noodle-borg/authoring/dist/assistant.js +4 -0
- package/node_modules/@noodle-borg/authoring/dist/recording.d.ts +1 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-assistant.js +10 -4
- package/node_modules/@noodle-borg/compiler/dist/manifest/branding-schema.js +86 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +44 -25
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +24 -76
- package/node_modules/@noodle-borg/compiler/package.json +0 -1
- package/node_modules/@noodle-borg/deploy-client/dist/deploy-payload-size.js +6 -2
- package/node_modules/@noodle-borg/service/dist/registry-helpers.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +193 -96
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +3 -0
- package/node_modules/@noodleseed/assistant/README.md +21 -23
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +5 -4
- package/dist/saas-scaffold-template.d.ts +0 -4
- package/dist/saas-scaffold-template.d.ts.map +0 -1
- package/dist/saas-scaffold-template.js +0 -56
- package/dist/saas-scaffold-template.js.map +0 -1
- package/node_modules/tailwindcss/LICENSE +0 -21
- package/node_modules/tailwindcss/README.md +0 -36
- package/node_modules/tailwindcss/dist/chunk-5JIJA4QV.mjs +0 -1
- package/node_modules/tailwindcss/dist/chunk-HMCCH6MG.mjs +0 -1
- package/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +0 -1
- package/node_modules/tailwindcss/dist/colors-C__qRT83.d.ts +0 -347
- package/node_modules/tailwindcss/dist/colors.d.mts +0 -347
- package/node_modules/tailwindcss/dist/colors.d.ts +0 -5
- package/node_modules/tailwindcss/dist/colors.js +0 -1
- package/node_modules/tailwindcss/dist/colors.mjs +0 -1
- package/node_modules/tailwindcss/dist/default-theme.d.mts +0 -1199
- package/node_modules/tailwindcss/dist/default-theme.d.ts +0 -1199
- package/node_modules/tailwindcss/dist/default-theme.js +0 -1
- package/node_modules/tailwindcss/dist/default-theme.mjs +0 -1
- package/node_modules/tailwindcss/dist/flatten-color-palette.d.mts +0 -6
- package/node_modules/tailwindcss/dist/flatten-color-palette.d.ts +0 -6
- package/node_modules/tailwindcss/dist/flatten-color-palette.js +0 -1
- package/node_modules/tailwindcss/dist/flatten-color-palette.mjs +0 -1
- package/node_modules/tailwindcss/dist/lib.d.mts +0 -379
- package/node_modules/tailwindcss/dist/lib.d.ts +0 -3
- package/node_modules/tailwindcss/dist/lib.js +0 -38
- package/node_modules/tailwindcss/dist/lib.mjs +0 -38
- package/node_modules/tailwindcss/dist/plugin.d.mts +0 -11
- package/node_modules/tailwindcss/dist/plugin.d.ts +0 -134
- package/node_modules/tailwindcss/dist/plugin.js +0 -1
- package/node_modules/tailwindcss/dist/plugin.mjs +0 -1
- package/node_modules/tailwindcss/dist/resolve-config-B4yBzhca.d.ts +0 -29
- package/node_modules/tailwindcss/dist/resolve-config-QUZ9b-Gn.d.mts +0 -190
- package/node_modules/tailwindcss/dist/types-DWdTiksJ.d.mts +0 -128
- package/node_modules/tailwindcss/index.css +0 -944
- package/node_modules/tailwindcss/package.json +0 -89
- package/node_modules/tailwindcss/preflight.css +0 -393
- package/node_modules/tailwindcss/theme.css +0 -510
- package/node_modules/tailwindcss/utilities.css +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { continuityDigest, continuityHandle, continuityHashesEqual, continuityMaxRestores, continuityWindowMs, sameContinuityContext, } from './continuity-store.js';
|
|
3
|
+
/** The in-memory half of the pair. Both run the shared parity suite; neither is the only proof. */
|
|
4
|
+
export class InMemoryAssistantContinuityStore {
|
|
5
|
+
#rows = new Map();
|
|
6
|
+
async issue(input) {
|
|
7
|
+
return this.#write({ ...input, restoreCount: 0 });
|
|
8
|
+
}
|
|
9
|
+
async claim(input) {
|
|
10
|
+
const hash = continuityDigest(input.handle);
|
|
11
|
+
const found = [...this.#rows.values()].find((row) => continuityHashesEqual(row.handleHash, hash));
|
|
12
|
+
if (!found || found.claimedAt !== undefined)
|
|
13
|
+
return { ok: false, reason: 'unknown' };
|
|
14
|
+
// Context before expiry: a handle replayed from somewhere it was never issued should read as the
|
|
15
|
+
// exfiltration signal it is, whether or not the value happened to be stale by then.
|
|
16
|
+
if (!sameContinuityContext(found.context, input.context)) {
|
|
17
|
+
return { ok: false, reason: 'context_mismatch' };
|
|
18
|
+
}
|
|
19
|
+
if (Date.parse(found.expiresAt) <= input.now.getTime())
|
|
20
|
+
return { ok: false, reason: 'expired' };
|
|
21
|
+
const restoreCount = found.restoreCount + 1;
|
|
22
|
+
const claimed = {
|
|
23
|
+
...found,
|
|
24
|
+
restoreCount,
|
|
25
|
+
claimedAt: input.now.toISOString(),
|
|
26
|
+
};
|
|
27
|
+
this.#rows.set(found.id, claimed);
|
|
28
|
+
if (restoreCount >= found.maxRestores)
|
|
29
|
+
return { ok: true, record: claimed };
|
|
30
|
+
const rotated = this.#write({
|
|
31
|
+
sessionId: found.sessionId,
|
|
32
|
+
tenant: found.tenant,
|
|
33
|
+
context: found.context,
|
|
34
|
+
// Re-derive from the record so a rotation can never widen what the first issue clamped.
|
|
35
|
+
windowMs: Date.parse(found.expiresAt) - Date.parse(found.createdAt),
|
|
36
|
+
maxRestores: found.maxRestores,
|
|
37
|
+
restoreCount,
|
|
38
|
+
now: input.now,
|
|
39
|
+
});
|
|
40
|
+
return rotated === undefined
|
|
41
|
+
? { ok: true, record: claimed }
|
|
42
|
+
: { ok: true, record: claimed, handle: rotated.handle };
|
|
43
|
+
}
|
|
44
|
+
async sweepExpired(input) {
|
|
45
|
+
let removed = 0;
|
|
46
|
+
for (const [id, row] of this.#rows) {
|
|
47
|
+
if (row.claimedAt !== undefined || Date.parse(row.expiresAt) <= input.now.getTime()) {
|
|
48
|
+
this.#rows.delete(id);
|
|
49
|
+
removed++;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return removed;
|
|
53
|
+
}
|
|
54
|
+
#write(input) {
|
|
55
|
+
const windowMs = continuityWindowMs(input.windowMs);
|
|
56
|
+
const maxRestores = continuityMaxRestores(input.maxRestores);
|
|
57
|
+
if (windowMs === 0 || maxRestores === 0)
|
|
58
|
+
return undefined;
|
|
59
|
+
// Supersede rather than accumulate: one live handle per session.
|
|
60
|
+
for (const [id, row] of this.#rows) {
|
|
61
|
+
if (row.sessionId === input.sessionId && row.claimedAt === undefined)
|
|
62
|
+
this.#rows.delete(id);
|
|
63
|
+
}
|
|
64
|
+
const handle = continuityHandle();
|
|
65
|
+
const record = {
|
|
66
|
+
id: `cont_${randomUUID().replaceAll('-', '')}`,
|
|
67
|
+
sessionId: input.sessionId,
|
|
68
|
+
tenant: input.tenant,
|
|
69
|
+
context: input.context,
|
|
70
|
+
handleHash: continuityDigest(handle),
|
|
71
|
+
restoreCount: input.restoreCount,
|
|
72
|
+
maxRestores,
|
|
73
|
+
createdAt: input.now.toISOString(),
|
|
74
|
+
expiresAt: new Date(input.now.getTime() + windowMs).toISOString(),
|
|
75
|
+
};
|
|
76
|
+
this.#rows.set(record.id, record);
|
|
77
|
+
return { record, handle };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=in-memory-continuity-store.js.map
|
|
@@ -94,6 +94,7 @@ export declare function requestModelCompletion(input: {
|
|
|
94
94
|
readonly messages: readonly AssistantModelMessage[];
|
|
95
95
|
readonly tools: readonly AssistantModelTool[];
|
|
96
96
|
readonly toolChoice?: 'auto' | 'none' | 'required';
|
|
97
|
+
readonly jsonOutput?: boolean;
|
|
97
98
|
readonly fetcher: (url: string, init: RequestInit) => Promise<Response>;
|
|
98
99
|
readonly onContent?: (delta: string) => void;
|
|
99
100
|
readonly maxResponseBytes?: number;
|
|
@@ -17,6 +17,7 @@ export async function requestModelCompletion(input) {
|
|
|
17
17
|
store: false,
|
|
18
18
|
input: responsesInput(input.messages),
|
|
19
19
|
tools: responsesTools(input.tools),
|
|
20
|
+
...(input.jsonOutput ? { text: { format: { type: 'json_object' } } } : {}),
|
|
20
21
|
...(input.toolChoice === undefined ? {} : { tool_choice: input.toolChoice }),
|
|
21
22
|
...(completionLimit === undefined ? {} : { max_output_tokens: completionLimit }),
|
|
22
23
|
}
|
|
@@ -26,6 +27,7 @@ export async function requestModelCompletion(input) {
|
|
|
26
27
|
stream: true,
|
|
27
28
|
messages: input.messages,
|
|
28
29
|
tools: input.tools,
|
|
30
|
+
...(input.jsonOutput ? { response_format: { type: 'json_object' } } : {}),
|
|
29
31
|
...(input.toolChoice === undefined ? {} : { tool_choice: input.toolChoice }),
|
|
30
32
|
...(completionLimit === undefined ? {} : { max_completion_tokens: completionLimit }),
|
|
31
33
|
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function nonNegativeInteger(value) {
|
|
2
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
|
|
3
|
+
}
|
|
4
|
+
export async function readBoundedText(response, maxBytes) {
|
|
5
|
+
const text = await response.text();
|
|
6
|
+
if (new TextEncoder().encode(text).byteLength > maxBytes) {
|
|
7
|
+
throw new Error('model response too large');
|
|
8
|
+
}
|
|
9
|
+
return text;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=model-response-values.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { nonNegativeInteger, readBoundedText } from './model-response-values.js';
|
|
1
2
|
export function responsesInput(messages) {
|
|
2
3
|
return messages.flatMap((message) => {
|
|
3
4
|
if (message.role === 'tool') {
|
|
@@ -150,14 +151,4 @@ function parseRecord(value) {
|
|
|
150
151
|
}
|
|
151
152
|
return value;
|
|
152
153
|
}
|
|
153
|
-
function nonNegativeInteger(value) {
|
|
154
|
-
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
|
|
155
|
-
}
|
|
156
|
-
async function readBoundedText(response, maxBytes) {
|
|
157
|
-
const text = await response.text();
|
|
158
|
-
if (new TextEncoder().encode(text).byteLength > maxBytes) {
|
|
159
|
-
throw new Error('model response too large');
|
|
160
|
-
}
|
|
161
|
-
return text;
|
|
162
|
-
}
|
|
163
154
|
//# sourceMappingURL=model-responses.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { nonNegativeInteger, readBoundedText } from './model-response-values.js';
|
|
1
2
|
export async function readModelCompletion(response, onContent, maxBytes = 1 << 20) {
|
|
2
3
|
const contentType = response.headers.get('content-type') ?? '';
|
|
3
4
|
if (!contentType.includes('text/event-stream')) {
|
|
@@ -111,14 +112,4 @@ function normalizeUsageValue(usage) {
|
|
|
111
112
|
...(reasoningTokens === undefined ? {} : { reasoningTokens }),
|
|
112
113
|
};
|
|
113
114
|
}
|
|
114
|
-
function nonNegativeInteger(value) {
|
|
115
|
-
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
|
|
116
|
-
}
|
|
117
|
-
async function readBoundedText(response, maxBytes) {
|
|
118
|
-
const text = await response.text();
|
|
119
|
-
if (new TextEncoder().encode(text).byteLength > maxBytes) {
|
|
120
|
-
throw new Error('model response too large');
|
|
121
|
-
}
|
|
122
|
-
return text;
|
|
123
|
-
}
|
|
124
115
|
//# sourceMappingURL=model-stream.js.map
|
|
@@ -17,12 +17,15 @@ export * from './assistant-store.js';
|
|
|
17
17
|
export * from './assistant-transcript.js';
|
|
18
18
|
export * from './assistant-transcript-events.js';
|
|
19
19
|
export * from './assistant-view-availability.js';
|
|
20
|
+
export * from './continuity-bounds.js';
|
|
21
|
+
export * from './continuity-store.js';
|
|
20
22
|
export * from './elevation.js';
|
|
21
23
|
export * from './elevation-store.js';
|
|
22
24
|
export * from './embed-operator-view.js';
|
|
23
25
|
export * from './embed-script.js';
|
|
24
26
|
export * from './embed-store.js';
|
|
25
27
|
export * from './in-memory-assistant-appearance-store.js';
|
|
28
|
+
export * from './in-memory-continuity-store.js';
|
|
26
29
|
export * from './in-memory-elevation-store.js';
|
|
27
30
|
export * from './in-memory-embed-store.js';
|
|
28
31
|
export * from './managed-spend.js';
|
|
@@ -17,12 +17,15 @@ export * from './assistant-store.js';
|
|
|
17
17
|
export * from './assistant-transcript.js';
|
|
18
18
|
export * from './assistant-transcript-events.js';
|
|
19
19
|
export * from './assistant-view-availability.js';
|
|
20
|
+
export * from './continuity-bounds.js';
|
|
21
|
+
export * from './continuity-store.js';
|
|
20
22
|
export * from './elevation.js';
|
|
21
23
|
export * from './elevation-store.js';
|
|
22
24
|
export * from './embed-operator-view.js';
|
|
23
25
|
export * from './embed-script.js';
|
|
24
26
|
export * from './embed-store.js';
|
|
25
27
|
export * from './in-memory-assistant-appearance-store.js';
|
|
28
|
+
export * from './in-memory-continuity-store.js';
|
|
26
29
|
export * from './in-memory-elevation-store.js';
|
|
27
30
|
export * from './in-memory-embed-store.js';
|
|
28
31
|
export * from './managed-spend.js';
|
|
@@ -173,6 +173,31 @@ export interface AuthenticatedWebsiteAccess {
|
|
|
173
173
|
readonly enabled?: boolean;
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Anonymous cross-page display continuity for one public surface (ADR 0223, clauses 11-16).
|
|
178
|
+
*
|
|
179
|
+
* Off unless asked for. Anonymous conversation text is your content on your page, so whether it
|
|
180
|
+
* survives a navigation is your call rather than a default the platform imposes.
|
|
181
|
+
*
|
|
182
|
+
* What a visitor gets is the text they have already read, re-rendered on the next page, on a fresh
|
|
183
|
+
* session. What it never grants is the old session itself: no tool authority, no share of a spent
|
|
184
|
+
* turn budget, and no pending confirmation carried across — a capability that survives a navigation
|
|
185
|
+
* is exactly what this design refuses to create.
|
|
186
|
+
*/
|
|
187
|
+
export interface AssistantContinuityDeclaration {
|
|
188
|
+
readonly enabled?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* How long a handle stays valid after the turn that issued it, measured from when the visitor last
|
|
191
|
+
* spoke. Defaults to 300; 600 is the structural ceiling, and 0 disables continuity outright. An
|
|
192
|
+
* operator may lower what you declare here and can never raise it.
|
|
193
|
+
*/
|
|
194
|
+
readonly windowSeconds?: number;
|
|
195
|
+
/**
|
|
196
|
+
* How many times one conversation may be restored before continuity ends and the next page starts
|
|
197
|
+
* fresh. Defaults to 3, ceiling 10, and 0 disables continuity outright.
|
|
198
|
+
*/
|
|
199
|
+
readonly maxRestores?: number;
|
|
200
|
+
}
|
|
176
201
|
export interface PublicWebsiteAccess {
|
|
177
202
|
readonly mode: 'public' | 'mixed';
|
|
178
203
|
readonly origins: readonly string[];
|
|
@@ -182,6 +207,8 @@ export interface PublicWebsiteAccess {
|
|
|
182
207
|
readonly webmcp?: {
|
|
183
208
|
readonly enabled?: boolean;
|
|
184
209
|
};
|
|
210
|
+
/** @see PublicWebsiteInput.continuity */
|
|
211
|
+
readonly continuity?: AssistantContinuityDeclaration;
|
|
185
212
|
}
|
|
186
213
|
export type AssistantAccess = AuthenticatedWebsiteAccess | PublicWebsiteAccess;
|
|
187
214
|
export interface AuthenticatedWebsiteInput {
|
|
@@ -226,6 +253,14 @@ export interface PublicWebsiteInput {
|
|
|
226
253
|
readonly webmcp?: {
|
|
227
254
|
readonly enabled?: boolean;
|
|
228
255
|
};
|
|
256
|
+
/**
|
|
257
|
+
* Let an anonymous visitor keep the conversation they can see when they navigate to another page
|
|
258
|
+
* of this site. Omitted means off, and no existing embed changes behavior.
|
|
259
|
+
*
|
|
260
|
+
* Declared only here, never on an authenticated surface: that direction reattaches through a
|
|
261
|
+
* backend-verified sign-in instead, so a declaration there would configure nothing.
|
|
262
|
+
*/
|
|
263
|
+
readonly continuity?: AssistantContinuityDeclaration;
|
|
229
264
|
}
|
|
230
265
|
export declare function authenticatedWebsite(input: AuthenticatedWebsiteInput): AuthenticatedWebsiteAccess;
|
|
231
266
|
export declare function publicWebsite(input: PublicWebsiteInput): PublicWebsiteAccess;
|
|
@@ -255,6 +290,12 @@ export interface AssistantSurfaceConfig {
|
|
|
255
290
|
readonly webmcp?: {
|
|
256
291
|
readonly enabled?: boolean;
|
|
257
292
|
};
|
|
293
|
+
/**
|
|
294
|
+
* Present only on a public or mixed surface; an authenticated one never carries it.
|
|
295
|
+
*
|
|
296
|
+
* @see PublicWebsiteInput.continuity
|
|
297
|
+
*/
|
|
298
|
+
readonly continuity?: AssistantContinuityDeclaration;
|
|
258
299
|
}
|
|
259
300
|
export interface EmbeddedAssistantConfig extends AssistantUiOptions {
|
|
260
301
|
readonly model: AssistantModel;
|
|
@@ -16,6 +16,7 @@ export function publicWebsite(input) {
|
|
|
16
16
|
capabilities: [...input.capabilities],
|
|
17
17
|
...(input.instructions === undefined ? {} : { instructions: input.instructions }),
|
|
18
18
|
...(input.webmcp === undefined ? {} : { webmcp: { ...input.webmcp } }),
|
|
19
|
+
...(input.continuity === undefined ? {} : { continuity: { ...input.continuity } }),
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
function serializeOrigins(origins, path) {
|
|
@@ -59,6 +60,9 @@ export function embeddedAssistant(input) {
|
|
|
59
60
|
? { sessionClaims: structuredClone(surface.sessionClaims) }
|
|
60
61
|
: {}),
|
|
61
62
|
...(surface.webmcp === undefined ? {} : { webmcp: { ...surface.webmcp } }),
|
|
63
|
+
...(surface.mode !== 'authenticated' && surface.continuity !== undefined
|
|
64
|
+
? { continuity: { ...surface.continuity } }
|
|
65
|
+
: {}),
|
|
62
66
|
})),
|
|
63
67
|
allowedOrigins: surfaces.flatMap((surface) => [...surface.origins]),
|
|
64
68
|
...structuredClone(ui),
|
|
@@ -2,7 +2,7 @@ import type { ConnectorRef } from './connectors.js';
|
|
|
2
2
|
import type { AmbientContextOptions } from './context.js';
|
|
3
3
|
import type { ResourceContext, ToolOptions } from './server.js';
|
|
4
4
|
export type SymbolicScope = Ref & Record<string, Ref>;
|
|
5
|
-
export type ConnectorClient = Record<string, (args?: Readonly<Record<string, unknown>>) =>
|
|
5
|
+
export type ConnectorClient = Record<string, (args?: Readonly<Record<string, unknown>>) => SymbolicScope>;
|
|
6
6
|
type RecordedStep = {
|
|
7
7
|
readonly id: string;
|
|
8
8
|
readonly use: string;
|
|
@@ -383,15 +383,15 @@ export const ASSISTANT_COMMAND = {
|
|
|
383
383
|
subcommand({
|
|
384
384
|
...SUBCOMMAND_FIELDS,
|
|
385
385
|
name: 'embed',
|
|
386
|
-
summary: '
|
|
386
|
+
summary: 'Install the selected website integration with explicit application-owned seams and verification guidance.',
|
|
387
387
|
flags: [
|
|
388
388
|
flag({
|
|
389
389
|
...FLAG_FIELDS,
|
|
390
390
|
name: 'framework',
|
|
391
391
|
type: 'string',
|
|
392
392
|
value: '<framework>',
|
|
393
|
-
summary: 'Embedding
|
|
394
|
-
constraints: { choices: ['nextjs'], default: 'nextjs' },
|
|
393
|
+
summary: 'Embedding profile: nextjs or authenticated django-vue.',
|
|
394
|
+
constraints: { choices: ['nextjs', 'django-vue'], default: 'nextjs' },
|
|
395
395
|
}),
|
|
396
396
|
flag({
|
|
397
397
|
...FLAG_FIELDS,
|
|
@@ -407,6 +407,12 @@ export const ASSISTANT_COMMAND = {
|
|
|
407
407
|
type: 'boolean',
|
|
408
408
|
summary: 'Overwrite user-modified scaffold files.',
|
|
409
409
|
}),
|
|
410
|
+
flag({
|
|
411
|
+
...FLAG_FIELDS,
|
|
412
|
+
name: 'dry-run',
|
|
413
|
+
type: 'boolean',
|
|
414
|
+
summary: 'Preview generated files, hashes, conflicts, and next steps without writing files.',
|
|
415
|
+
}),
|
|
410
416
|
flag({
|
|
411
417
|
...FLAG_FIELDS,
|
|
412
418
|
name: 'no-agents',
|
|
@@ -432,7 +438,7 @@ export const ASSISTANT_COMMAND = {
|
|
|
432
438
|
name: 'surface',
|
|
433
439
|
type: 'string',
|
|
434
440
|
value: '<mode>',
|
|
435
|
-
summary: 'Surface
|
|
441
|
+
summary: 'Surface to install or check; public omits backend exchange, mixed adds the existing-login handoff.',
|
|
436
442
|
constraints: { choices: ['authenticated', 'public', 'mixed'], default: 'authenticated' },
|
|
437
443
|
}),
|
|
438
444
|
flag({
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Shared manifest primitives: colors, https URLs, managed variable expressions, assistant origins,
|
|
4
|
+
* packaged asset references, and the server brand kit.
|
|
5
|
+
*
|
|
6
|
+
* Extracted verbatim from `schema.ts` so that file stays inside its size budget as the assistant
|
|
7
|
+
* surface grows. These are leaf validators with no dependency on tools, prompts, widgets, or the
|
|
8
|
+
* assistant block, which is what makes the split one-directional and free of an import cycle.
|
|
9
|
+
*/
|
|
10
|
+
const hexColorSchema = z.string().regex(/^#[0-9A-Fa-f]{6}$/, 'must be a 6-digit hex color');
|
|
11
|
+
export const httpsUrlSchema = z.url().regex(/^https:\/\//, 'must use https');
|
|
12
|
+
const managedVariableExpressionPattern = /^\$\{env\.[A-Za-z0-9_]+\}$/;
|
|
13
|
+
export const managedVariableExpressionSchema = z
|
|
14
|
+
.string()
|
|
15
|
+
.regex(managedVariableExpressionPattern, 'must be an exact managed variable expression');
|
|
16
|
+
// HTTP is allowed only for loopback development origins (mirrors the host-pattern loopback
|
|
17
|
+
// exception used for connector/CSP origins); production embedding origins stay https-only.
|
|
18
|
+
const assistantOriginOrVariablePattern = /^(?:\$\{env\.[A-Za-z0-9_]+\}|https:\/\/[^/?#@\\]+|http:\/\/(?:localhost|127\.0\.0\.1|\[::1\])(?::\d+)?)$/;
|
|
19
|
+
function isCanonicalAssistantOrigin(value) {
|
|
20
|
+
try {
|
|
21
|
+
return new URL(value).origin === value;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export const assistantOriginOrVariableSchema = z
|
|
28
|
+
.string()
|
|
29
|
+
.regex(assistantOriginOrVariablePattern, 'must be a canonical bare origin using https (http is allowed only for localhost/127.0.0.1/[::1] loopback development origins)')
|
|
30
|
+
.refine((value) => managedVariableExpressionPattern.test(value) || isCanonicalAssistantOrigin(value), 'must be a canonical bare origin');
|
|
31
|
+
const packagedAssetSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
kind: z.literal('asset'),
|
|
34
|
+
sourcePath: z.string().min(1),
|
|
35
|
+
logicalId: z.string().min(1),
|
|
36
|
+
})
|
|
37
|
+
.strict();
|
|
38
|
+
const brandAssetSchema = z
|
|
39
|
+
.object({
|
|
40
|
+
uri: z.union([httpsUrlSchema, packagedAssetSchema]),
|
|
41
|
+
darkUri: z.union([httpsUrlSchema, packagedAssetSchema]).optional(),
|
|
42
|
+
alt: z.string().trim().min(1),
|
|
43
|
+
})
|
|
44
|
+
.strict();
|
|
45
|
+
const brandThemeTokensSchema = z
|
|
46
|
+
.object({
|
|
47
|
+
surface: hexColorSchema.optional(),
|
|
48
|
+
surfaceRaised: hexColorSchema.optional(),
|
|
49
|
+
surfaceMuted: hexColorSchema.optional(),
|
|
50
|
+
text: hexColorSchema.optional(),
|
|
51
|
+
textMuted: hexColorSchema.optional(),
|
|
52
|
+
accent: hexColorSchema.optional(),
|
|
53
|
+
accentText: hexColorSchema.optional(),
|
|
54
|
+
link: hexColorSchema.optional(),
|
|
55
|
+
border: hexColorSchema.optional(),
|
|
56
|
+
borderStrong: hexColorSchema.optional(),
|
|
57
|
+
focus: hexColorSchema.optional(),
|
|
58
|
+
success: hexColorSchema.optional(),
|
|
59
|
+
warning: hexColorSchema.optional(),
|
|
60
|
+
danger: hexColorSchema.optional(),
|
|
61
|
+
code: hexColorSchema.optional(),
|
|
62
|
+
})
|
|
63
|
+
.strict();
|
|
64
|
+
export const serverBrandingSchema = z
|
|
65
|
+
.object({
|
|
66
|
+
name: z.string().trim().min(1).optional(),
|
|
67
|
+
accent: hexColorSchema.optional(),
|
|
68
|
+
surface: hexColorSchema.optional(),
|
|
69
|
+
surfaceDark: hexColorSchema.optional(),
|
|
70
|
+
logo: brandAssetSchema.optional(),
|
|
71
|
+
mark: brandAssetSchema.optional(),
|
|
72
|
+
avatar: brandAssetSchema.optional(),
|
|
73
|
+
theme: z
|
|
74
|
+
.object({
|
|
75
|
+
light: brandThemeTokensSchema.optional(),
|
|
76
|
+
dark: brandThemeTokensSchema.optional(),
|
|
77
|
+
})
|
|
78
|
+
.strict()
|
|
79
|
+
.optional(),
|
|
80
|
+
radius: z.enum(['none', 'sm', 'md', 'lg']).optional(),
|
|
81
|
+
density: z.enum(['compact', 'comfortable']).optional(),
|
|
82
|
+
typography: z.enum(['system', 'serif', 'mono']).optional(),
|
|
83
|
+
colorScheme: z.enum(['auto', 'light', 'dark']).optional(),
|
|
84
|
+
})
|
|
85
|
+
.strict();
|
|
86
|
+
//# sourceMappingURL=branding-schema.js.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import type { PackagedAssetReference } from '../assets.js';
|
|
3
2
|
type ToolAuthorizationManifest = {
|
|
4
3
|
readonly requiredScopes?: readonly string[] | undefined;
|
|
5
4
|
readonly allowedRoles?: readonly string[] | undefined;
|
|
@@ -381,6 +380,11 @@ export declare const manifestV1Schema: z.ZodObject<{
|
|
|
381
380
|
webmcp: z.ZodOptional<z.ZodObject<{
|
|
382
381
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
383
382
|
}, z.core.$strict>>;
|
|
383
|
+
continuity: z.ZodOptional<z.ZodObject<{
|
|
384
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
385
|
+
windowSeconds: z.ZodOptional<z.ZodNumber>;
|
|
386
|
+
maxRestores: z.ZodOptional<z.ZodNumber>;
|
|
387
|
+
}, z.core.$strict>>;
|
|
384
388
|
}, z.core.$strict>>>;
|
|
385
389
|
sessionClaims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
386
390
|
exposeToModel: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -395,18 +399,18 @@ export declare const manifestV1Schema: z.ZodObject<{
|
|
|
395
399
|
surface: z.ZodOptional<z.ZodString>;
|
|
396
400
|
surfaceDark: z.ZodOptional<z.ZodString>;
|
|
397
401
|
logo: z.ZodOptional<z.ZodObject<{
|
|
398
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
399
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
402
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
403
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
400
404
|
alt: z.ZodString;
|
|
401
405
|
}, z.core.$strict>>;
|
|
402
406
|
mark: z.ZodOptional<z.ZodObject<{
|
|
403
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
404
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
407
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
408
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
405
409
|
alt: z.ZodString;
|
|
406
410
|
}, z.core.$strict>>;
|
|
407
411
|
avatar: z.ZodOptional<z.ZodObject<{
|
|
408
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
409
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
412
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
413
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
410
414
|
alt: z.ZodString;
|
|
411
415
|
}, z.core.$strict>>;
|
|
412
416
|
theme: z.ZodOptional<z.ZodObject<{
|
|
@@ -864,6 +868,11 @@ export declare const manifestV2Schema: z.ZodObject<{
|
|
|
864
868
|
webmcp: z.ZodOptional<z.ZodObject<{
|
|
865
869
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
866
870
|
}, z.core.$strict>>;
|
|
871
|
+
continuity: z.ZodOptional<z.ZodObject<{
|
|
872
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
873
|
+
windowSeconds: z.ZodOptional<z.ZodNumber>;
|
|
874
|
+
maxRestores: z.ZodOptional<z.ZodNumber>;
|
|
875
|
+
}, z.core.$strict>>;
|
|
867
876
|
}, z.core.$strict>>>;
|
|
868
877
|
sessionClaims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
869
878
|
exposeToModel: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -878,18 +887,18 @@ export declare const manifestV2Schema: z.ZodObject<{
|
|
|
878
887
|
surface: z.ZodOptional<z.ZodString>;
|
|
879
888
|
surfaceDark: z.ZodOptional<z.ZodString>;
|
|
880
889
|
logo: z.ZodOptional<z.ZodObject<{
|
|
881
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
882
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
890
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
891
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
883
892
|
alt: z.ZodString;
|
|
884
893
|
}, z.core.$strict>>;
|
|
885
894
|
mark: z.ZodOptional<z.ZodObject<{
|
|
886
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
887
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
895
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
896
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
888
897
|
alt: z.ZodString;
|
|
889
898
|
}, z.core.$strict>>;
|
|
890
899
|
avatar: z.ZodOptional<z.ZodObject<{
|
|
891
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
892
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
900
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
901
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
893
902
|
alt: z.ZodString;
|
|
894
903
|
}, z.core.$strict>>;
|
|
895
904
|
theme: z.ZodOptional<z.ZodObject<{
|
|
@@ -1557,6 +1566,11 @@ export declare const manifestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1557
1566
|
webmcp: z.ZodOptional<z.ZodObject<{
|
|
1558
1567
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
1559
1568
|
}, z.core.$strict>>;
|
|
1569
|
+
continuity: z.ZodOptional<z.ZodObject<{
|
|
1570
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
1571
|
+
windowSeconds: z.ZodOptional<z.ZodNumber>;
|
|
1572
|
+
maxRestores: z.ZodOptional<z.ZodNumber>;
|
|
1573
|
+
}, z.core.$strict>>;
|
|
1560
1574
|
}, z.core.$strict>>>;
|
|
1561
1575
|
sessionClaims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1562
1576
|
exposeToModel: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -1571,18 +1585,18 @@ export declare const manifestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1571
1585
|
surface: z.ZodOptional<z.ZodString>;
|
|
1572
1586
|
surfaceDark: z.ZodOptional<z.ZodString>;
|
|
1573
1587
|
logo: z.ZodOptional<z.ZodObject<{
|
|
1574
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
1575
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
1588
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
1589
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
1576
1590
|
alt: z.ZodString;
|
|
1577
1591
|
}, z.core.$strict>>;
|
|
1578
1592
|
mark: z.ZodOptional<z.ZodObject<{
|
|
1579
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
1580
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
1593
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
1594
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
1581
1595
|
alt: z.ZodString;
|
|
1582
1596
|
}, z.core.$strict>>;
|
|
1583
1597
|
avatar: z.ZodOptional<z.ZodObject<{
|
|
1584
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
1585
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
1598
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
1599
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
1586
1600
|
alt: z.ZodString;
|
|
1587
1601
|
}, z.core.$strict>>;
|
|
1588
1602
|
theme: z.ZodOptional<z.ZodObject<{
|
|
@@ -2039,6 +2053,11 @@ export declare const manifestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
2039
2053
|
webmcp: z.ZodOptional<z.ZodObject<{
|
|
2040
2054
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
2041
2055
|
}, z.core.$strict>>;
|
|
2056
|
+
continuity: z.ZodOptional<z.ZodObject<{
|
|
2057
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
2058
|
+
windowSeconds: z.ZodOptional<z.ZodNumber>;
|
|
2059
|
+
maxRestores: z.ZodOptional<z.ZodNumber>;
|
|
2060
|
+
}, z.core.$strict>>;
|
|
2042
2061
|
}, z.core.$strict>>>;
|
|
2043
2062
|
sessionClaims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
2044
2063
|
exposeToModel: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -2053,18 +2072,18 @@ export declare const manifestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
2053
2072
|
surface: z.ZodOptional<z.ZodString>;
|
|
2054
2073
|
surfaceDark: z.ZodOptional<z.ZodString>;
|
|
2055
2074
|
logo: z.ZodOptional<z.ZodObject<{
|
|
2056
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
2057
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
2075
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
2076
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
2058
2077
|
alt: z.ZodString;
|
|
2059
2078
|
}, z.core.$strict>>;
|
|
2060
2079
|
mark: z.ZodOptional<z.ZodObject<{
|
|
2061
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
2062
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
2080
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
2081
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
2063
2082
|
alt: z.ZodString;
|
|
2064
2083
|
}, z.core.$strict>>;
|
|
2065
2084
|
avatar: z.ZodOptional<z.ZodObject<{
|
|
2066
|
-
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>;
|
|
2067
|
-
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<PackagedAssetReference, unknown, z.core.$ZodTypeInternals<PackagedAssetReference, unknown>>]>>;
|
|
2085
|
+
uri: z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>;
|
|
2086
|
+
darkUri: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodType<import("../assets.js").PackagedAssetReference, unknown, z.core.$ZodTypeInternals<import("../assets.js").PackagedAssetReference, unknown>>]>>;
|
|
2068
2087
|
alt: z.ZodString;
|
|
2069
2088
|
}, z.core.$strict>>;
|
|
2070
2089
|
theme: z.ZodOptional<z.ZodObject<{
|