optio-api 0.2.10 → 0.2.12
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 +26 -16
- package/dist/access-scope.d.ts +7 -2
- package/dist/access-scope.d.ts.map +1 -1
- package/dist/access-scope.js +12 -5
- package/dist/access-scope.js.map +1 -1
- package/dist/adapters/express.d.ts.map +1 -1
- package/dist/adapters/express.js +6 -1
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/fastify.d.ts.map +1 -1
- package/dist/adapters/fastify.js +6 -1
- package/dist/adapters/fastify.js.map +1 -1
- package/dist/adapters/nextjs-app.d.ts.map +1 -1
- package/dist/adapters/nextjs-app.js +7 -1
- package/dist/adapters/nextjs-app.js.map +1 -1
- package/dist/adapters/nextjs-pages.d.ts.map +1 -1
- package/dist/adapters/nextjs-pages.js +7 -1
- package/dist/adapters/nextjs-pages.js.map +1 -1
- package/dist/conversation-archive.d.ts +76 -0
- package/dist/conversation-archive.d.ts.map +1 -0
- package/dist/conversation-archive.js +196 -0
- package/dist/conversation-archive.js.map +1 -0
- package/dist/discovery.d.ts +7 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +18 -11
- package/dist/discovery.js.map +1 -1
- package/dist/handlers.d.ts +28 -1
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +25 -1
- package/dist/handlers.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/process-change-hub.d.ts +87 -0
- package/dist/process-change-hub.d.ts.map +1 -0
- package/dist/process-change-hub.js +268 -0
- package/dist/process-change-hub.js.map +1 -0
- package/dist/process-change-relevance.d.ts +57 -0
- package/dist/process-change-relevance.d.ts.map +1 -0
- package/dist/process-change-relevance.js +101 -0
- package/dist/process-change-relevance.js.map +1 -0
- package/dist/stream-poller.d.ts +7 -0
- package/dist/stream-poller.d.ts.map +1 -1
- package/dist/stream-poller.js +288 -278
- package/dist/stream-poller.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { Db } from 'mongodb';
|
|
2
|
+
import type { ConversationFailureReason, ConversationRecord } from 'optio-contracts';
|
|
3
|
+
/**
|
|
4
|
+
* The proxy side of the engine's conversation archive (optio-core
|
|
5
|
+
* `conversation_archive.py`): one aiohttp listener per engine that serves a
|
|
6
|
+
* suspended process's decrypted conversation record. The engine publishes
|
|
7
|
+
* `{ _id: 'conversationArchive', url, password, updatedAt }` in
|
|
8
|
+
* `{prefix}_engine_endpoints`; this module finds that address, caches it for
|
|
9
|
+
* 30 s, and asks `GET <url>conversation/<_id>` with basic auth
|
|
10
|
+
* `optio:<password>`.
|
|
11
|
+
*
|
|
12
|
+
* Nothing here logs: the password and the record (plaintext conversation)
|
|
13
|
+
* must never reach a log line, and the 503 messages carry neither the address
|
|
14
|
+
* nor the password.
|
|
15
|
+
*
|
|
16
|
+
* Spec: docs/2026-10-12-suspended-conversation-view-design.md §3.
|
|
17
|
+
*/
|
|
18
|
+
export declare const CONVERSATION_ARCHIVE_ENDPOINT_ID = "conversationArchive";
|
|
19
|
+
/** How long a resolved endpoint is reused before MongoDB is read again. */
|
|
20
|
+
export declare const CONVERSATION_ARCHIVE_CACHE_TTL_MS = 30000;
|
|
21
|
+
/** The whole upstream exchange (connect, headers and body) must finish within this. */
|
|
22
|
+
export declare const CONVERSATION_ARCHIVE_TIMEOUT_MS = 15000;
|
|
23
|
+
/**
|
|
24
|
+
* The largest upstream body relayed (64 MiB): checked against a declared
|
|
25
|
+
* content-length first, then counted while the body is read. A larger answer
|
|
26
|
+
* is 503 `engine-unavailable`, so a broken or foreign upstream cannot make
|
|
27
|
+
* optio-api buffer without bound.
|
|
28
|
+
*/
|
|
29
|
+
export declare const CONVERSATION_ARCHIVE_MAX_BODY_BYTES: number;
|
|
30
|
+
export interface ConversationArchiveEndpoint {
|
|
31
|
+
url: string;
|
|
32
|
+
password: string;
|
|
33
|
+
}
|
|
34
|
+
export type ConversationErrorBody = {
|
|
35
|
+
reason: ConversationFailureReason;
|
|
36
|
+
message: string;
|
|
37
|
+
};
|
|
38
|
+
/** What the archive (or its absence) answered, as optio-api relays it. */
|
|
39
|
+
export type ConversationFetchResult = {
|
|
40
|
+
status: 200;
|
|
41
|
+
body: ConversationRecord;
|
|
42
|
+
} | {
|
|
43
|
+
status: 404 | 409 | 500 | 503;
|
|
44
|
+
body: ConversationErrorBody;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The published archive address of `(db, prefix)`, or null when no engine
|
|
48
|
+
* publishes one (or the document is malformed, or its url is not an http: or
|
|
49
|
+
* https: URL). A found address is cached for 30 s; an absence is not, so a
|
|
50
|
+
* freshly started engine is found at once.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveConversationArchive(db: Db, prefix: string): Promise<ConversationArchiveEndpoint | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Drop the cached address of `(db, prefix)`: the engine is gone, restarted
|
|
55
|
+
* elsewhere, or restarted with a new password. With `endpoint`, only when the
|
|
56
|
+
* cache still holds that very address (a concurrent request may already have
|
|
57
|
+
* cached a newer one).
|
|
58
|
+
*/
|
|
59
|
+
export declare function forgetConversationArchive(db: Db, prefix: string, endpoint?: ConversationArchiveEndpoint): void;
|
|
60
|
+
/**
|
|
61
|
+
* Ask the archive for the record of process `processObjectId` (the process
|
|
62
|
+
* document's `_id`, 24 hex; anything else is 404 `not-found` with no MongoDB
|
|
63
|
+
* read and no upstream call, as the engine would answer it). The archive's
|
|
64
|
+
* 200 / 404 / 409 / 500 answers pass through as they are. Everything else is
|
|
65
|
+
* 503 `engine-unavailable` and drops the cached address, so the next request
|
|
66
|
+
* reads MongoDB again: no published address, a connection failure, no
|
|
67
|
+
* complete answer within `timeoutMs`, a body over `maxBodyBytes` (default
|
|
68
|
+
* 64 MiB), a 401 (the engine restarted on the same port with a new
|
|
69
|
+
* password), or an answer that is not the archive's (another server on a
|
|
70
|
+
* reused port).
|
|
71
|
+
*/
|
|
72
|
+
export declare function fetchConversation(db: Db, prefix: string, processObjectId: string, opts?: {
|
|
73
|
+
timeoutMs?: number;
|
|
74
|
+
maxBodyBytes?: number;
|
|
75
|
+
}): Promise<ConversationFetchResult>;
|
|
76
|
+
//# sourceMappingURL=conversation-archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-archive.d.ts","sourceRoot":"","sources":["../src/conversation-archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErF;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gCAAgC,wBAAwB,CAAC;AACtE,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC,QAAS,CAAC;AACxD,uFAAuF;AACvF,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,QAAmB,CAAC;AAEpE,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,MAAM,EAAE,yBAAyB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3F,0EAA0E;AAC1E,MAAM,MAAM,uBAAuB,GAC/B;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAmCnE;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAgB7C;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,2BAA2B,GACrC,IAAI,CAIN;AAyDD;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACvD,OAAO,CAAC,uBAAuB,CAAC,CAyClC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The proxy side of the engine's conversation archive (optio-core
|
|
3
|
+
* `conversation_archive.py`): one aiohttp listener per engine that serves a
|
|
4
|
+
* suspended process's decrypted conversation record. The engine publishes
|
|
5
|
+
* `{ _id: 'conversationArchive', url, password, updatedAt }` in
|
|
6
|
+
* `{prefix}_engine_endpoints`; this module finds that address, caches it for
|
|
7
|
+
* 30 s, and asks `GET <url>conversation/<_id>` with basic auth
|
|
8
|
+
* `optio:<password>`.
|
|
9
|
+
*
|
|
10
|
+
* Nothing here logs: the password and the record (plaintext conversation)
|
|
11
|
+
* must never reach a log line, and the 503 messages carry neither the address
|
|
12
|
+
* nor the password.
|
|
13
|
+
*
|
|
14
|
+
* Spec: docs/2026-10-12-suspended-conversation-view-design.md §3.
|
|
15
|
+
*/
|
|
16
|
+
export const CONVERSATION_ARCHIVE_ENDPOINT_ID = 'conversationArchive';
|
|
17
|
+
/** How long a resolved endpoint is reused before MongoDB is read again. */
|
|
18
|
+
export const CONVERSATION_ARCHIVE_CACHE_TTL_MS = 30_000;
|
|
19
|
+
/** The whole upstream exchange (connect, headers and body) must finish within this. */
|
|
20
|
+
export const CONVERSATION_ARCHIVE_TIMEOUT_MS = 15_000;
|
|
21
|
+
/**
|
|
22
|
+
* The largest upstream body relayed (64 MiB): checked against a declared
|
|
23
|
+
* content-length first, then counted while the body is read. A larger answer
|
|
24
|
+
* is 503 `engine-unavailable`, so a broken or foreign upstream cannot make
|
|
25
|
+
* optio-api buffer without bound.
|
|
26
|
+
*/
|
|
27
|
+
export const CONVERSATION_ARCHIVE_MAX_BODY_BYTES = 64 * 1024 * 1024;
|
|
28
|
+
// Per MongoClient (as the process-change hubs are), then per database name and
|
|
29
|
+
// prefix: two clusters that both have a database `x` never share an entry.
|
|
30
|
+
const cache = new WeakMap();
|
|
31
|
+
function entries(db) {
|
|
32
|
+
let map = cache.get(db.client);
|
|
33
|
+
if (!map) {
|
|
34
|
+
map = new Map();
|
|
35
|
+
cache.set(db.client, map);
|
|
36
|
+
}
|
|
37
|
+
return map;
|
|
38
|
+
}
|
|
39
|
+
const keyOf = (db, prefix) => `${db.databaseName}\u0000${prefix}`;
|
|
40
|
+
/** Only an absolute http: or https: URL is an archive address. */
|
|
41
|
+
function isHttpUrl(url) {
|
|
42
|
+
try {
|
|
43
|
+
const { protocol } = new URL(url);
|
|
44
|
+
return protocol === 'http:' || protocol === 'https:';
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** A process document `_id` as the engine accepts it: 24 hex characters. */
|
|
51
|
+
const OBJECT_ID_RE = /^[0-9a-f]{24}$/i;
|
|
52
|
+
/**
|
|
53
|
+
* The published archive address of `(db, prefix)`, or null when no engine
|
|
54
|
+
* publishes one (or the document is malformed, or its url is not an http: or
|
|
55
|
+
* https: URL). A found address is cached for 30 s; an absence is not, so a
|
|
56
|
+
* freshly started engine is found at once.
|
|
57
|
+
*/
|
|
58
|
+
export async function resolveConversationArchive(db, prefix) {
|
|
59
|
+
const map = entries(db);
|
|
60
|
+
const key = keyOf(db, prefix);
|
|
61
|
+
const cached = map.get(key);
|
|
62
|
+
if (cached && Date.now() < cached.expiresAt)
|
|
63
|
+
return cached.endpoint;
|
|
64
|
+
if (cached)
|
|
65
|
+
map.delete(key);
|
|
66
|
+
const doc = await db
|
|
67
|
+
.collection(`${prefix}_engine_endpoints`)
|
|
68
|
+
.findOne({ _id: CONVERSATION_ARCHIVE_ENDPOINT_ID }, { projection: { url: 1, password: 1 } });
|
|
69
|
+
if (!doc || typeof doc.url !== 'string' || typeof doc.password !== 'string' || !isHttpUrl(doc.url)) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const endpoint = { url: doc.url, password: doc.password };
|
|
73
|
+
map.set(key, { endpoint, expiresAt: Date.now() + CONVERSATION_ARCHIVE_CACHE_TTL_MS });
|
|
74
|
+
return endpoint;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Drop the cached address of `(db, prefix)`: the engine is gone, restarted
|
|
78
|
+
* elsewhere, or restarted with a new password. With `endpoint`, only when the
|
|
79
|
+
* cache still holds that very address (a concurrent request may already have
|
|
80
|
+
* cached a newer one).
|
|
81
|
+
*/
|
|
82
|
+
export function forgetConversationArchive(db, prefix, endpoint) {
|
|
83
|
+
const map = entries(db);
|
|
84
|
+
const key = keyOf(db, prefix);
|
|
85
|
+
if (endpoint === undefined || map.get(key)?.endpoint === endpoint)
|
|
86
|
+
map.delete(key);
|
|
87
|
+
}
|
|
88
|
+
function unavailable(message) {
|
|
89
|
+
return { status: 503, body: { reason: 'engine-unavailable', message } };
|
|
90
|
+
}
|
|
91
|
+
const NO_ENDPOINT = 'No engine serves conversation records for this instance.';
|
|
92
|
+
const UNREACHABLE = 'The engine serving conversation records is not reachable.';
|
|
93
|
+
const TOO_SLOW = 'The engine did not send the conversation record in time.';
|
|
94
|
+
const NOT_THE_ARCHIVE = 'The engine serving conversation records gave an unusable answer.';
|
|
95
|
+
const STALE_CREDENTIALS = 'The engine serving conversation records refused the stored credentials (it may have restarted); try again.';
|
|
96
|
+
const TOO_LARGE = 'The conversation record the engine sent is too large to relay.';
|
|
97
|
+
// Any string reason passes, not only the ConversationFailureReason values: an
|
|
98
|
+
// unknown reason from a newer engine goes through to the client on purpose
|
|
99
|
+
// (the UI shows the message), rather than being turned into a 503.
|
|
100
|
+
function isErrorBody(body) {
|
|
101
|
+
return typeof body === 'object' && body !== null
|
|
102
|
+
&& typeof body.reason === 'string' && typeof body.message === 'string';
|
|
103
|
+
}
|
|
104
|
+
function isRecord(body) {
|
|
105
|
+
return typeof body === 'object' && body !== null && Array.isArray(body.events)
|
|
106
|
+
&& (body.capturedAt === null || typeof body.capturedAt === 'string');
|
|
107
|
+
}
|
|
108
|
+
class BodyTooLarge extends Error {
|
|
109
|
+
}
|
|
110
|
+
/** The body as text, or BodyTooLarge past `max` bytes (declared or read). */
|
|
111
|
+
async function readCapped(res, max) {
|
|
112
|
+
const declared = res.headers.get('content-length');
|
|
113
|
+
if (declared !== null && Number(declared) > max) {
|
|
114
|
+
await res.body?.cancel().catch(() => { });
|
|
115
|
+
throw new BodyTooLarge();
|
|
116
|
+
}
|
|
117
|
+
if (!res.body)
|
|
118
|
+
return '';
|
|
119
|
+
const reader = res.body.getReader();
|
|
120
|
+
const chunks = [];
|
|
121
|
+
let total = 0;
|
|
122
|
+
for (;;) {
|
|
123
|
+
const { done, value } = await reader.read();
|
|
124
|
+
if (done)
|
|
125
|
+
break;
|
|
126
|
+
total += value.byteLength;
|
|
127
|
+
if (total > max) {
|
|
128
|
+
await reader.cancel().catch(() => { });
|
|
129
|
+
throw new BodyTooLarge();
|
|
130
|
+
}
|
|
131
|
+
chunks.push(value);
|
|
132
|
+
}
|
|
133
|
+
// As res.text() decodes: UTF-8, a leading BOM dropped.
|
|
134
|
+
return new TextDecoder().decode(Buffer.concat(chunks, total));
|
|
135
|
+
}
|
|
136
|
+
function noSuchProcess() {
|
|
137
|
+
return { status: 404, body: { reason: 'not-found', message: 'No such process.' } };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Ask the archive for the record of process `processObjectId` (the process
|
|
141
|
+
* document's `_id`, 24 hex; anything else is 404 `not-found` with no MongoDB
|
|
142
|
+
* read and no upstream call, as the engine would answer it). The archive's
|
|
143
|
+
* 200 / 404 / 409 / 500 answers pass through as they are. Everything else is
|
|
144
|
+
* 503 `engine-unavailable` and drops the cached address, so the next request
|
|
145
|
+
* reads MongoDB again: no published address, a connection failure, no
|
|
146
|
+
* complete answer within `timeoutMs`, a body over `maxBodyBytes` (default
|
|
147
|
+
* 64 MiB), a 401 (the engine restarted on the same port with a new
|
|
148
|
+
* password), or an answer that is not the archive's (another server on a
|
|
149
|
+
* reused port).
|
|
150
|
+
*/
|
|
151
|
+
export async function fetchConversation(db, prefix, processObjectId, opts = {}) {
|
|
152
|
+
// Defence in depth: the handler passes a document's _id, but a custom
|
|
153
|
+
// adapter could pass anything, and it becomes part of the upstream path.
|
|
154
|
+
if (!OBJECT_ID_RE.test(processObjectId))
|
|
155
|
+
return noSuchProcess();
|
|
156
|
+
const endpoint = await resolveConversationArchive(db, prefix);
|
|
157
|
+
if (!endpoint)
|
|
158
|
+
return unavailable(NO_ENDPOINT);
|
|
159
|
+
const base = endpoint.url.endsWith('/') ? endpoint.url : `${endpoint.url}/`;
|
|
160
|
+
const authorization = `Basic ${Buffer.from(`optio:${endpoint.password}`).toString('base64')}`;
|
|
161
|
+
let status;
|
|
162
|
+
let text;
|
|
163
|
+
try {
|
|
164
|
+
const res = await fetch(`${base}conversation/${processObjectId}`, {
|
|
165
|
+
headers: { authorization, accept: 'application/json' },
|
|
166
|
+
redirect: 'manual',
|
|
167
|
+
// Covers reading the body too: undici aborts the body stream.
|
|
168
|
+
signal: AbortSignal.timeout(opts.timeoutMs ?? CONVERSATION_ARCHIVE_TIMEOUT_MS),
|
|
169
|
+
});
|
|
170
|
+
status = res.status;
|
|
171
|
+
text = await readCapped(res, opts.maxBodyBytes ?? CONVERSATION_ARCHIVE_MAX_BODY_BYTES);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
forgetConversationArchive(db, prefix, endpoint);
|
|
175
|
+
if (err instanceof BodyTooLarge)
|
|
176
|
+
return unavailable(TOO_LARGE);
|
|
177
|
+
const timedOut = err instanceof Error && (err.name === 'TimeoutError' || err.name === 'AbortError');
|
|
178
|
+
return unavailable(timedOut ? TOO_SLOW : UNREACHABLE);
|
|
179
|
+
}
|
|
180
|
+
let body;
|
|
181
|
+
try {
|
|
182
|
+
body = JSON.parse(text);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
body = undefined;
|
|
186
|
+
}
|
|
187
|
+
if (status === 200 && isRecord(body)) {
|
|
188
|
+
return { status: 200, body: { events: body.events, capturedAt: body.capturedAt } };
|
|
189
|
+
}
|
|
190
|
+
if ((status === 404 || status === 409 || status === 500) && isErrorBody(body)) {
|
|
191
|
+
return { status, body: { reason: body.reason, message: body.message } };
|
|
192
|
+
}
|
|
193
|
+
forgetConversationArchive(db, prefix, endpoint);
|
|
194
|
+
return unavailable(status === 401 ? STALE_CREDENTIALS : NOT_THE_ARCHIVE);
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=conversation-archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-archive.js","sourceRoot":"","sources":["../src/conversation-archive.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ interface OptioInstance {
|
|
|
5
5
|
prefix: string;
|
|
6
6
|
live: boolean;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* The optio instances (database + prefix) reachable through `opts`: in its one
|
|
10
|
+
* database (single-db) or in every database on the server (multi-db). With
|
|
11
|
+
* `prefix`, only instances of that prefix (an app pinned to one prefix, e.g.
|
|
12
|
+
* the adapters' `prefix` option).
|
|
13
|
+
*/
|
|
14
|
+
export declare function discoverInstances(opts: DbOptions, redis?: Redis, prefix?: string): Promise<OptioInstance[]>;
|
|
9
15
|
export {};
|
|
10
16
|
//# sourceMappingURL=discovery.d.ts.map
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AA6BD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAC9C,OAAO,CAAC,aAAa,EAAE,CAAC,CA4B1B"}
|
package/dist/discovery.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
const REQUIRED_FIELDS = ['processId', 'rootId', 'depth'];
|
|
2
|
-
async function discoverPrefixesInDb(db) {
|
|
2
|
+
async function discoverPrefixesInDb(db, only) {
|
|
3
3
|
const collections = await db.listCollections().toArray();
|
|
4
4
|
const candidates = collections
|
|
5
5
|
.map((c) => c.name)
|
|
6
6
|
.filter((name) => name.endsWith('_processes'))
|
|
7
|
-
.map((name) => name.slice(0, -'_processes'.length))
|
|
7
|
+
.map((name) => name.slice(0, -'_processes'.length))
|
|
8
|
+
.filter((prefix) => only === undefined || prefix === only);
|
|
8
9
|
const confirmed = [];
|
|
9
10
|
for (const prefix of candidates) {
|
|
10
11
|
const doc = await db.collection(`${prefix}_processes`).findOne();
|
|
@@ -21,14 +22,20 @@ async function checkLive(redis, database, prefix) {
|
|
|
21
22
|
const result = await redis.exists(key);
|
|
22
23
|
return result === 1;
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
+
/**
|
|
26
|
+
* The optio instances (database + prefix) reachable through `opts`: in its one
|
|
27
|
+
* database (single-db) or in every database on the server (multi-db). With
|
|
28
|
+
* `prefix`, only instances of that prefix (an app pinned to one prefix, e.g.
|
|
29
|
+
* the adapters' `prefix` option).
|
|
30
|
+
*/
|
|
31
|
+
export async function discoverInstances(opts, redis, prefix) {
|
|
25
32
|
if ('db' in opts && opts.db) {
|
|
26
33
|
const dbName = opts.db.databaseName;
|
|
27
|
-
const prefixes = await discoverPrefixesInDb(opts.db);
|
|
34
|
+
const prefixes = await discoverPrefixesInDb(opts.db, prefix);
|
|
28
35
|
const instances = [];
|
|
29
|
-
for (const
|
|
30
|
-
const live = await checkLive(redis, dbName,
|
|
31
|
-
instances.push({ database: dbName, prefix, live });
|
|
36
|
+
for (const found of prefixes) {
|
|
37
|
+
const live = await checkLive(redis, dbName, found);
|
|
38
|
+
instances.push({ database: dbName, prefix: found, live });
|
|
32
39
|
}
|
|
33
40
|
return instances;
|
|
34
41
|
}
|
|
@@ -37,10 +44,10 @@ export async function discoverInstances(opts, redis) {
|
|
|
37
44
|
const instances = [];
|
|
38
45
|
for (const dbInfo of databases) {
|
|
39
46
|
const db = opts.mongoClient.db(dbInfo.name);
|
|
40
|
-
const prefixes = await discoverPrefixesInDb(db);
|
|
41
|
-
for (const
|
|
42
|
-
const live = await checkLive(redis, dbInfo.name,
|
|
43
|
-
instances.push({ database: dbInfo.name, prefix, live });
|
|
47
|
+
const prefixes = await discoverPrefixesInDb(db, prefix);
|
|
48
|
+
for (const found of prefixes) {
|
|
49
|
+
const live = await checkLive(redis, dbInfo.name, found);
|
|
50
|
+
instances.push({ database: dbInfo.name, prefix: found, live });
|
|
44
51
|
}
|
|
45
52
|
}
|
|
46
53
|
return instances.sort((a, b) => a.database.localeCompare(b.database) || a.prefix.localeCompare(b.prefix));
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAIA,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAQzD,KAAK,UAAU,oBAAoB,CAAC,EAAM;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ProcessMetadataFilter } from './types.js';
|
|
2
2
|
import type { OptioContext } from './context.js';
|
|
3
3
|
import { type Access } from './auth.js';
|
|
4
|
-
import
|
|
4
|
+
import { type ConversationFetchResult } from './conversation-archive.js';
|
|
5
|
+
import type { LaunchFailureReason as LaunchFailureReasonType, CancelFailureReason as CancelFailureReasonType, DismissFailureReason as DismissFailureReasonType, ResurrectFailureReason as ResurrectFailureReasonType, ConversationFailureReason as ConversationFailureReasonType } from 'optio-contracts';
|
|
5
6
|
export interface ListQuery {
|
|
6
7
|
cursor?: string;
|
|
7
8
|
limit: number;
|
|
@@ -60,6 +61,32 @@ export declare function getProcessTreeLog(ctx: OptioContext, query: GetProcessTr
|
|
|
60
61
|
nextCursor: string | null;
|
|
61
62
|
totalCount: number;
|
|
62
63
|
} | null>;
|
|
64
|
+
/**
|
|
65
|
+
* `GET /processes/:id/conversation`. `headers` must go out with the answer:
|
|
66
|
+
* the record is decrypted conversation content, never to be cached.
|
|
67
|
+
*/
|
|
68
|
+
export type ConversationResult = (ConversationFetchResult | {
|
|
69
|
+
status: 403;
|
|
70
|
+
body: {
|
|
71
|
+
reason: ConversationFailureReasonType;
|
|
72
|
+
message: string;
|
|
73
|
+
};
|
|
74
|
+
}) & {
|
|
75
|
+
headers: {
|
|
76
|
+
'Cache-Control': 'no-store';
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The saved conversation of a suspended process, read through the engine's
|
|
81
|
+
* conversation archive (`conversation-archive.ts`): the engine decrypts, this
|
|
82
|
+
* only relays. Gated as the 'widget' action (scope: 404, authorize: 403)
|
|
83
|
+
* before anything reaches the engine. The engine is always asked by the
|
|
84
|
+
* process document's `_id`, also when `id` is a `processId` string.
|
|
85
|
+
*/
|
|
86
|
+
export declare function getProcessConversation(ctx: OptioContext, query: {
|
|
87
|
+
database?: string;
|
|
88
|
+
prefix?: string;
|
|
89
|
+
}, id: string, access?: Access): Promise<ConversationResult>;
|
|
63
90
|
export type ForbiddenResult = {
|
|
64
91
|
status: 403;
|
|
65
92
|
body: {
|
package/dist/handlers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers.js
CHANGED
|
@@ -2,7 +2,8 @@ import { ObjectId } from 'mongodb';
|
|
|
2
2
|
import { metadataFilterToMongo } from './metadata-filter-query.js';
|
|
3
3
|
import { resolveDb, resolveOptioEngine } from './resolve.js';
|
|
4
4
|
import { UNRESTRICTED } from './auth.js';
|
|
5
|
-
import { andScope, findScopedProcess, gateProcess, scopedResyncFilter } from './access-scope.js';
|
|
5
|
+
import { andScope, findActionTarget, findScopedProcess, gateProcess, scopedResyncFilter, } from './access-scope.js';
|
|
6
|
+
import { fetchConversation } from './conversation-archive.js';
|
|
6
7
|
function col(db, prefix) {
|
|
7
8
|
return db.collection(`${prefix}_processes`);
|
|
8
9
|
}
|
|
@@ -128,6 +129,29 @@ export async function getProcessTreeLog(ctx, query, id, access = UNRESTRICTED) {
|
|
|
128
129
|
totalCount: allLogs.length,
|
|
129
130
|
};
|
|
130
131
|
}
|
|
132
|
+
const NO_STORE = { 'Cache-Control': 'no-store' };
|
|
133
|
+
/**
|
|
134
|
+
* The saved conversation of a suspended process, read through the engine's
|
|
135
|
+
* conversation archive (`conversation-archive.ts`): the engine decrypts, this
|
|
136
|
+
* only relays. Gated as the 'widget' action (scope: 404, authorize: 403)
|
|
137
|
+
* before anything reaches the engine. The engine is always asked by the
|
|
138
|
+
* process document's `_id`, also when `id` is a `processId` string.
|
|
139
|
+
*/
|
|
140
|
+
export async function getProcessConversation(ctx, query, id, access = UNRESTRICTED) {
|
|
141
|
+
const { db, prefix } = resolveDb(ctx.dbOpts, query);
|
|
142
|
+
const processes = col(db, prefix);
|
|
143
|
+
const gate = await gateProcess(processes, id, access, 'widget');
|
|
144
|
+
if (!gate.ok && gate.status === 403) {
|
|
145
|
+
return { status: 403, body: { reason: 'forbidden', message: 'Forbidden' }, headers: NO_STORE };
|
|
146
|
+
}
|
|
147
|
+
// Unrestricted access skips gateProcess's lookup; find the document here.
|
|
148
|
+
const doc = gate.ok ? (gate.doc ?? (await findActionTarget(processes, id))) : null;
|
|
149
|
+
if (!doc) {
|
|
150
|
+
return { status: 404, body: { reason: 'not-found', message: 'No such process.' }, headers: NO_STORE };
|
|
151
|
+
}
|
|
152
|
+
const result = await fetchConversation(db, prefix, doc._id.toString());
|
|
153
|
+
return { ...result, headers: NO_STORE };
|
|
154
|
+
}
|
|
131
155
|
const FORBIDDEN = { status: 403, body: { message: 'Forbidden' } };
|
|
132
156
|
const LAUNCH_STATUS = {
|
|
133
157
|
'not-found': 404,
|
package/dist/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAW,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQjG,SAAS,GAAG,CAAC,EAAM,EAAE,MAAc;IACjC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB,CAAgC,IAAO;IACnE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAS;IAC3B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;KAC/B,CAAC;AACJ,CAAC;AAiBD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAiB,EACjB,KAAyB,EACzB,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE/D,MAAM,MAAM,GAA4B,QAAQ,CAC9C,EAAE,GAAG,qBAAqB,CAAC,cAAc,CAAC,EAAE,EAC5C,MAAM,CAAC,KAAK,CACb,CAAC;IACF,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,MAAM,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;IAC1C,IAAI,MAAM;QAAE,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IAEvD,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;QACxE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC;KACvC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IACrC,IAAI,OAAO;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QAC5B,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QACnE,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAiB,EACjB,KAA6C,EAC7C,EAAU,EACV,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EAAM,EAAE,MAAc,EAAE,SAAmB,EAAE,QAAiB,EAAE,YAAY,GAAG,CAAC;IACvG,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,QAAQ,GAAU,EAAE,CAAC;IACzB,IAAI,QAAQ,KAAK,SAAS,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;aACpC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;aAC7B,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aAClB,OAAO,EAAE,CAAC;QAEb,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAC/E,CAAC;QACF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAiB,EACjB,KAAgE,EAChE,EAAU,EACV,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,qEAAqE;IACrE,kEAAkE;IAClE,wEAAwE;IACxE,gEAAgE;IAChE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtE,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAiB,EACjB,KAAyB,EACzB,EAAU,EACV,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;IACxC,IAAI,OAAO;QAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IAE5B,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QACrD,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;KAC5B,CAAC;AACJ,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAiB,EACjB,KAA6B,EAC7B,EAAU,EACV,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC1C,MAAM,MAAM,GAA4B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAE9D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAC1C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;QACzB,GAAG,KAAK;QACR,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3B,YAAY,EAAE,CAAC,CAAC,IAAI;KACrB,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAEpG,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;IACxC,IAAI,OAAO;QAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC5B,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QACrD,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;AA+BD,MAAM,SAAS,GAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;AAEnF,MAAM,aAAa,GAA+C;IAChE,WAAW,EAAE,GAAG;IAChB,gBAAgB,EAAE,GAAG;IACrB,mBAAmB,EAAE,GAAG;IACxB,gBAAgB,EAAE,GAAG;CACtB,CAAC;AAEF,MAAM,aAAa,GAA+C;IAChE,WAAW,EAAE,GAAG;IAChB,iBAAiB,EAAE,GAAG;CACvB,CAAC;AAEF,MAAM,cAAc,GAAgD;IAClE,WAAW,EAAE,GAAG;IAChB,iBAAiB,EAAE,GAAG;CACvB,CAAC;AAEF,MAAM,QAAQ,GAGV;IACF,WAAW,EAAE,mBAAmB;IAChC,gBAAgB,EAAE,sCAAsC;IACxD,mBAAmB,EAAE,mCAAmC;IACxD,gBAAgB,EAAE,qDAAqD;IACvE,iBAAiB,EAAE,iDAAiD;IACpE,iBAAiB,EAAE,uCAAuC;CAC3D,CAAC;AAEF,SAAS,UAAU,CAAC,MAA+B;IACjD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,UAAU,CAAC,MAA+B;IACjD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,WAAW,CAAC,MAAgC;IACnD,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAiB,EACjB,KAA6C,EAC7C,EAAU,EACV,SAAkB,KAAK,EACvB,YAA2B,IAAI,EAC/B,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAiB,EACjB,KAA6C,EAC7C,EAAU,EACV,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxE,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAiB,EACjB,KAA6C,EAC7C,EAAU,EACV,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxE,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,gBAAgB,GAAkD;IACtE,WAAW,EAAE,GAAG;IAChB,mBAAmB,EAAE,GAAG;IACxB,sBAAsB,EAAE,GAAG;IAC3B,uBAAuB,EAAE,GAAG;IAC5B,gBAAgB,EAAE,GAAG;IACrB,eAAe,EAAE,GAAG;CACrB,CAAC;AAEF,MAAM,kBAAkB,GAA+C;IACrE,WAAW,EAAE,mBAAmB;IAChC,mBAAmB,EAAE,8DAA8D;IACnF,sBAAsB,EAAE,sCAAsC;IAC9D,uBAAuB,EAAE,gDAAgD;IACzE,gBAAgB,EAAE,qDAAqD;IACvE,eAAe,EAAE,6BAA6B;CAC/C,CAAC;AAEF,SAAS,aAAa,CAAC,MAAkC;IACvD,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;AACrG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAiB,EACjB,KAA6C,EAC7C,EAAU,EACV,YAA2B,IAAI,EAC/B,SAAiB,YAAY;IAE7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACzE,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACxE,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAiB,EACjB,KAA6C,EAC7C,QAAiB,KAAK,EACtB,cAAsC,EACtC,SAAiB,YAAY;IAE7B,4EAA4E;IAC5E,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;IACpF,IACE,MAAM,CAAC,UAAU;WACd,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC;YAC1B,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,cAAc,EAAE,MAAM,CAAC,MAA6C;SACrE,CAAC,CAAC,EACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,kBAAkB,EAAE;KAC5E,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export { listProcesses, getProcess, getProcessTree, getProcessLog, getProcessTreeLog, launchProcess, cancelProcess, dismissProcess, resurrectProcess, resyncProcesses, type ListQuery, type PaginationQuery, type TreeLogQuery, type LaunchCommandResult, type CancelCommandResult, type DismissCommandResult, type ResurrectCommandResult, type ResyncCommandResult, type ForbiddenResult, } from './handlers.js';
|
|
1
|
+
export { listProcesses, getProcess, getProcessTree, getProcessLog, getProcessTreeLog, getProcessConversation, launchProcess, cancelProcess, dismissProcess, resurrectProcess, resyncProcesses, type ListQuery, type PaginationQuery, type TreeLogQuery, type LaunchCommandResult, type CancelCommandResult, type DismissCommandResult, type ResurrectCommandResult, type ResyncCommandResult, type ForbiddenResult, type ConversationResult, } from './handlers.js';
|
|
2
|
+
export { resolveConversationArchive, forgetConversationArchive, fetchConversation, CONVERSATION_ARCHIVE_CACHE_TTL_MS, CONVERSATION_ARCHIVE_TIMEOUT_MS, CONVERSATION_ARCHIVE_MAX_BODY_BYTES, type ConversationArchiveEndpoint, type ConversationFetchResult, } from './conversation-archive.js';
|
|
2
3
|
export { checkAuth, accessFor, resolveAccess, UNRESTRICTED, type OptioRole, type AuthCallback, type AuthResult, type Access, type AccessHooks, type ScopeCallback, type ScopeFilter, type AuthorizeCallback, type AuthorizeInput, type OptioAction, type ProcessRef, } from './auth.js';
|
|
3
|
-
export { andScope, scopeToMongo, inScope, findScopedProcess, gateProcess, gateInstances, scopedResyncFilter, toProcessRef, type GateResult, type ScopedFilterResult, } from './access-scope.js';
|
|
4
|
+
export { andScope, scopeToMongo, inScope, findScopedProcess, gateProcess, findActionTarget, gateInstances, scopedResyncFilter, toProcessRef, type GateResult, type ScopedFilterResult, } from './access-scope.js';
|
|
4
5
|
export type { ProcessMetadataFilter } from './types.js';
|
|
5
6
|
export { createListPoller, createTreePoller, type StreamPollerOptions, type TreePollerOptions, type ListPollerHandle } from './stream-poller.js';
|
|
6
7
|
export { discoverInstances } from './discovery.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,iCAAiC,EACjC,+BAA+B,EAC/B,mCAAmC,EACnC,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGjJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGxH,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,WAAW,GACjB,MAAM,4BAA4B,CAAC;AAWpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
// Handlers (framework-agnostic)
|
|
2
|
-
export { listProcesses, getProcess, getProcessTree, getProcessLog, getProcessTreeLog, launchProcess, cancelProcess, dismissProcess, resurrectProcess, resyncProcesses, } from './handlers.js';
|
|
2
|
+
export { listProcesses, getProcess, getProcessTree, getProcessLog, getProcessTreeLog, getProcessConversation, launchProcess, cancelProcess, dismissProcess, resurrectProcess, resyncProcesses, } from './handlers.js';
|
|
3
|
+
// Conversation archive proxy (read a suspended process's record; for custom adapters)
|
|
4
|
+
export { resolveConversationArchive, forgetConversationArchive, fetchConversation, CONVERSATION_ARCHIVE_CACHE_TTL_MS, CONVERSATION_ARCHIVE_TIMEOUT_MS, CONVERSATION_ARCHIVE_MAX_BODY_BYTES, } from './conversation-archive.js';
|
|
3
5
|
// Authentication + per-request access (scope / authorize hooks)
|
|
4
6
|
export { checkAuth, accessFor, resolveAccess, UNRESTRICTED, } from './auth.js';
|
|
5
7
|
// Scope helpers (for custom adapters)
|
|
6
|
-
export { andScope, scopeToMongo, inScope, findScopedProcess, gateProcess, gateInstances, scopedResyncFilter, toProcessRef, } from './access-scope.js';
|
|
8
|
+
export { andScope, scopeToMongo, inScope, findScopedProcess, gateProcess, findActionTarget, gateInstances, scopedResyncFilter, toProcessRef, } from './access-scope.js';
|
|
7
9
|
// Stream poller (for custom adapters)
|
|
8
10
|
export { createListPoller, createTreePoller } from './stream-poller.js';
|
|
9
11
|
// Multi-db discovery
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,GAWhB,MAAM,eAAe,CAAC;AAEvB,sFAAsF;AACtF,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,iCAAiC,EACjC,+BAA+B,EAC/B,mCAAmC,GAGpC,MAAM,2BAA2B,CAAC;AAEnC,gEAAgE;AAChE,OAAO,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,GAYb,MAAM,WAAW,CAAC;AACnB,sCAAsC;AACtC,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAI3B,sCAAsC;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAA2E,MAAM,oBAAoB,CAAC;AAEjJ,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAA6D,MAAM,cAAc,CAAC;AAExH,0BAA0B;AAC1B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,GAE5B,MAAM,4BAA4B,CAAC;AAEpC,uCAAuC;AACvC,EAAE;AACF,oCAAoC;AACpC,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,+CAA+C;AAC/C,wEAAwE;AACxE,wFAAwF;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAwB,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAqB,MAAM,cAAc,CAAC"}
|