@noodleseed/one 0.121.0 → 0.122.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/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +5 -2
- package/dist/commands/session.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +4 -4
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js +8 -8
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts +30 -9
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js +21 -6
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts +2 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/port.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js +3 -3
- package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.js +10 -9
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts +4 -3
- package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/results.js +5 -19
- package/node_modules/@noodle-borg/developer-mcp/dist/results.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/server.js +3 -3
- package/node_modules/@noodle-borg/developer-mcp/dist/server.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js +6 -25
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts +16 -3
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js +22 -19
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js +3 -9
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js +15 -16
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js +9 -17
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js +7 -10
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/budget.d.ts +41 -17
- package/node_modules/@noodle-borg/knowledge/dist/budget.d.ts.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/budget.js +0 -0
- package/node_modules/@noodle-borg/knowledge/dist/budget.js.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/index.d.ts +1 -0
- package/node_modules/@noodle-borg/knowledge/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/index.js +1 -0
- package/node_modules/@noodle-borg/knowledge/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.d.ts +22 -0
- package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.d.ts.map +1 -0
- package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.js +102 -0
- package/node_modules/@noodle-borg/knowledge/dist/postgres-budget-store.js.map +1 -0
- package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.d.ts +5 -3
- package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.js +61 -1
- package/node_modules/@noodle-borg/knowledge/dist/postgres-revision-store.js.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/revision-store.d.ts +28 -1
- package/node_modules/@noodle-borg/knowledge/dist/revision-store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/knowledge/dist/revision-store.js +39 -0
- package/node_modules/@noodle-borg/knowledge/dist/revision-store.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts +6 -4
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js +13 -16
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts +3 -2
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js +66 -47
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +15 -16
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts +2 -2
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +0 -2
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js +0 -16
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts +3 -28
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js +8 -67
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts +0 -4
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js +1 -14
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +45 -36
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts +2 -2
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +20 -229
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts +3 -2
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js +70 -36
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts +17 -6
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +98 -26
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js +0 -2
- package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/upstream-consent.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/apps.js +6 -27
- package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values.js +5 -8
- package/node_modules/@noodle-borg/service/dist/routes/config-values.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +7 -6
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +7 -6
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-package.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js +2 -7
- package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js +7 -20
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/envs.js +4 -8
- package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +21 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodleseed/assistant/package.json +41 -16
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-revision-store.d.ts","sourceRoot":"","sources":["../src/postgres-revision-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-revision-store.d.ts","sourceRoot":"","sources":["../src/postgres-revision-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAkB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAgB7B,qBAAa,8BAA+B,YAAW,sBAAsB;;gBAI/D,IAAI,EAAE,IAAI,EAAE,KAAK,GAAE,iBAA6C;IAKtE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC7B,KAAK,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8B5D,YAAY,CAChB,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAmBjB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,QAAQ,CACZ,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAmCV,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAwCtE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAWjC,MAAM,CACV,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IASnC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAoB/D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCvF,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;IA6BvE,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;CAQnB"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { knowledgeScopeKey } from './ir.js';
|
|
2
2
|
import { KnowledgeError } from './ports.js';
|
|
3
|
+
import { identityDocumentTextCodec, } from './revision-store.js';
|
|
3
4
|
const LEASE_TIMEOUT_MS = 60_000;
|
|
4
5
|
export class PostgresKnowledgeRevisionStore {
|
|
5
6
|
#pool;
|
|
6
|
-
|
|
7
|
+
#codec;
|
|
8
|
+
constructor(pool, codec = identityDocumentTextCodec) {
|
|
7
9
|
this.#pool = pool;
|
|
10
|
+
this.#codec = codec;
|
|
8
11
|
}
|
|
9
12
|
async ensureSchema() {
|
|
10
13
|
await this.#pool.query(`
|
|
@@ -33,6 +36,17 @@ export class PostgresKnowledgeRevisionStore {
|
|
|
33
36
|
holder text NOT NULL,
|
|
34
37
|
acquired_at timestamptz NOT NULL DEFAULT now()
|
|
35
38
|
)
|
|
39
|
+
`);
|
|
40
|
+
// Sealed revision text (ADR 0202 D5 as amended): lets any stateless instance rebuild the
|
|
41
|
+
// bundled BM25 index for the active revision. Ciphertext only; the codec owner holds keys.
|
|
42
|
+
await this.#pool.query(`
|
|
43
|
+
CREATE TABLE IF NOT EXISTS knowledge_revision_documents (
|
|
44
|
+
revision_id text NOT NULL REFERENCES knowledge_revisions (revision_id) ON DELETE CASCADE,
|
|
45
|
+
path text NOT NULL,
|
|
46
|
+
ciphertext bytea NOT NULL,
|
|
47
|
+
bytes integer NOT NULL,
|
|
48
|
+
PRIMARY KEY (revision_id, path)
|
|
49
|
+
)
|
|
36
50
|
`);
|
|
37
51
|
}
|
|
38
52
|
async stage(input) {
|
|
@@ -185,6 +199,52 @@ export class PostgresKnowledgeRevisionStore {
|
|
|
185
199
|
}
|
|
186
200
|
await this.#pool.query('DELETE FROM knowledge_revisions WHERE revision_id = $1', [revisionId]);
|
|
187
201
|
}
|
|
202
|
+
async stageDocuments(revisionId, documents) {
|
|
203
|
+
const client = await this.#pool.connect();
|
|
204
|
+
try {
|
|
205
|
+
await client.query('BEGIN');
|
|
206
|
+
const revision = await client.query('SELECT revision_id FROM knowledge_revisions WHERE revision_id = $1 FOR UPDATE', [revisionId]);
|
|
207
|
+
if (revision.rows[0] === undefined) {
|
|
208
|
+
await client.query('ROLLBACK');
|
|
209
|
+
throw new KnowledgeError('not-found', `revision ${revisionId} is not staged`);
|
|
210
|
+
}
|
|
211
|
+
await client.query('DELETE FROM knowledge_revision_documents WHERE revision_id = $1', [
|
|
212
|
+
revisionId,
|
|
213
|
+
]);
|
|
214
|
+
for (const document of documents) {
|
|
215
|
+
const plaintext = Buffer.from(document.text, 'utf8');
|
|
216
|
+
await client.query(`INSERT INTO knowledge_revision_documents (revision_id, path, ciphertext, bytes)
|
|
217
|
+
VALUES ($1, $2, $3, $4)`, [revisionId, document.descriptor.path, this.#codec.seal(plaintext), plaintext.length]);
|
|
218
|
+
}
|
|
219
|
+
await client.query('COMMIT');
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
await client.query('ROLLBACK').catch(() => undefined);
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
finally {
|
|
226
|
+
client.release();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
async documents(revisionId) {
|
|
230
|
+
const revision = await this.#pool.query('SELECT * FROM knowledge_revisions WHERE revision_id = $1', [revisionId]);
|
|
231
|
+
const row = revision.rows[0];
|
|
232
|
+
if (row === undefined) {
|
|
233
|
+
throw new KnowledgeError('not-found', `revision ${revisionId} is not staged`);
|
|
234
|
+
}
|
|
235
|
+
const rows = await this.#pool.query('SELECT path, ciphertext FROM knowledge_revision_documents WHERE revision_id = $1', [revisionId]);
|
|
236
|
+
const byPath = new Map(rows.rows.map((text) => [text.path, text.ciphertext]));
|
|
237
|
+
if (byPath.size === 0 && row.documents.length > 0) {
|
|
238
|
+
throw new KnowledgeError('store', `revision ${revisionId} has no staged document text`);
|
|
239
|
+
}
|
|
240
|
+
return row.documents.map((descriptor) => {
|
|
241
|
+
const ciphertext = byPath.get(descriptor.path);
|
|
242
|
+
if (ciphertext === undefined) {
|
|
243
|
+
throw new KnowledgeError('store', `revision ${revisionId} is missing text for ${descriptor.path}`);
|
|
244
|
+
}
|
|
245
|
+
return { descriptor, text: this.#codec.open(ciphertext).toString('utf8') };
|
|
246
|
+
});
|
|
247
|
+
}
|
|
188
248
|
rowScope(row) {
|
|
189
249
|
return { org: row.org, app: row.app, env: row.env };
|
|
190
250
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-revision-store.js","sourceRoot":"","sources":["../src/postgres-revision-store.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"postgres-revision-store.js","sourceRoot":"","sources":["../src/postgres-revision-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import type { KnowledgeScope } from './ir.js';
|
|
2
|
-
import type { KnowledgeRevision } from './ports.js';
|
|
2
|
+
import type { KnowledgeRevision, StagedDocument } from './ports.js';
|
|
3
|
+
/**
|
|
4
|
+
* Seals document text at rest and opens it for BM25 rebuilds (ADR 0202 D5 as amended: the
|
|
5
|
+
* managed-bundled tier persists revision text sealed in the revision store so a stateless
|
|
6
|
+
* instance can rebuild the active index). The service injects its secret-box codec; tests
|
|
7
|
+
* and non-durable stores may use the identity codec.
|
|
8
|
+
*/
|
|
9
|
+
export interface DocumentTextCodec {
|
|
10
|
+
seal(plaintext: Buffer): Buffer;
|
|
11
|
+
open(sealed: Buffer): Buffer;
|
|
12
|
+
}
|
|
13
|
+
export declare const identityDocumentTextCodec: DocumentTextCodec;
|
|
3
14
|
export interface StageRevisionInput {
|
|
4
15
|
readonly scope: KnowledgeScope;
|
|
5
16
|
readonly componentName: string;
|
|
@@ -39,12 +50,26 @@ export interface KnowledgeRevisionStore {
|
|
|
39
50
|
record(revisionId: string): Promise<RevisionRecord | undefined>;
|
|
40
51
|
/** Delete a revision record; refuses an active or pinned one. */
|
|
41
52
|
delete(revisionId: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Persist the revision's sealed document text so any instance can rebuild the bundled
|
|
55
|
+
* index (ADR 0202 D5 as amended). Idempotent full replacement per revision.
|
|
56
|
+
*/
|
|
57
|
+
stageDocuments(revisionId: string, documents: readonly StagedDocument[]): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* The staged text for a revision. Throws `KnowledgeError` when the revision is unknown or
|
|
60
|
+
* its text was never staged — a rebuild must fail loudly, never index an empty corpus.
|
|
61
|
+
*/
|
|
62
|
+
documents(revisionId: string): Promise<readonly StagedDocument[]>;
|
|
42
63
|
}
|
|
43
64
|
export declare function documentsContentHash(documentHashes: readonly string[]): string;
|
|
44
65
|
export declare class InMemoryKnowledgeRevisionStore implements KnowledgeRevisionStore {
|
|
45
66
|
private readonly records;
|
|
46
67
|
private readonly leases;
|
|
47
68
|
private readonly deploymentPins;
|
|
69
|
+
/** revisionId → path → sealed text; sealed even in memory so the codec path is exercised. */
|
|
70
|
+
private readonly sealedText;
|
|
71
|
+
private readonly codec;
|
|
72
|
+
constructor(codec?: DocumentTextCodec);
|
|
48
73
|
stage(input: StageRevisionInput): Promise<KnowledgeRevision>;
|
|
49
74
|
acquireLease(scope: KnowledgeScope, componentName: string, holder: string): Promise<LeaseTicket>;
|
|
50
75
|
releaseLease(ticket: LeaseTicket): Promise<void>;
|
|
@@ -55,5 +80,7 @@ export declare class InMemoryKnowledgeRevisionStore implements KnowledgeRevision
|
|
|
55
80
|
active(scope: KnowledgeScope, componentName: string): Promise<KnowledgeRevision | undefined>;
|
|
56
81
|
record(revisionId: string): Promise<RevisionRecord | undefined>;
|
|
57
82
|
delete(revisionId: string): Promise<void>;
|
|
83
|
+
stageDocuments(revisionId: string, documents: readonly StagedDocument[]): Promise<void>;
|
|
84
|
+
documents(revisionId: string): Promise<readonly StagedDocument[]>;
|
|
58
85
|
}
|
|
59
86
|
//# sourceMappingURL=revision-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revision-store.d.ts","sourceRoot":"","sources":["../src/revision-store.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"revision-store.d.ts","sourceRoot":"","sources":["../src/revision-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
import { createHash } from 'node:crypto';
|
|
11
11
|
import { knowledgeScopeKey } from './ir.js';
|
|
12
12
|
import { KnowledgeError } from './ports.js';
|
|
13
|
+
export const identityDocumentTextCodec = {
|
|
14
|
+
seal: (plaintext) => plaintext,
|
|
15
|
+
open: (sealed) => sealed,
|
|
16
|
+
};
|
|
13
17
|
export function documentsContentHash(documentHashes) {
|
|
14
18
|
return createHash('sha256').update(documentHashes.join('\n')).digest('hex');
|
|
15
19
|
}
|
|
@@ -18,6 +22,12 @@ export class InMemoryKnowledgeRevisionStore {
|
|
|
18
22
|
records = new Map();
|
|
19
23
|
leases = new Map();
|
|
20
24
|
deploymentPins = new Map();
|
|
25
|
+
/** revisionId → path → sealed text; sealed even in memory so the codec path is exercised. */
|
|
26
|
+
sealedText = new Map();
|
|
27
|
+
codec;
|
|
28
|
+
constructor(codec = identityDocumentTextCodec) {
|
|
29
|
+
this.codec = codec;
|
|
30
|
+
}
|
|
21
31
|
async stage(input) {
|
|
22
32
|
const scopeKey = knowledgeScopeKey(input.scope, input.componentName);
|
|
23
33
|
const existing = [...this.records.values()].find((record) => knowledgeScopeKey(record.revision.scope, record.revision.componentName) === scopeKey &&
|
|
@@ -95,6 +105,7 @@ export class InMemoryKnowledgeRevisionStore {
|
|
|
95
105
|
for (const [revisionId, record] of this.records) {
|
|
96
106
|
if (record.state !== 'active' && record.pins.size === 0) {
|
|
97
107
|
this.records.delete(revisionId);
|
|
108
|
+
this.sealedText.delete(revisionId);
|
|
98
109
|
removed += 1;
|
|
99
110
|
}
|
|
100
111
|
}
|
|
@@ -123,6 +134,34 @@ export class InMemoryKnowledgeRevisionStore {
|
|
|
123
134
|
throw new KnowledgeError('store', 'cannot delete a deployment-pinned revision');
|
|
124
135
|
}
|
|
125
136
|
this.records.delete(revisionId);
|
|
137
|
+
this.sealedText.delete(revisionId);
|
|
138
|
+
}
|
|
139
|
+
async stageDocuments(revisionId, documents) {
|
|
140
|
+
if (!this.records.has(revisionId)) {
|
|
141
|
+
throw new KnowledgeError('not-found', `revision ${revisionId} is not staged`);
|
|
142
|
+
}
|
|
143
|
+
const sealed = new Map();
|
|
144
|
+
for (const document of documents) {
|
|
145
|
+
sealed.set(document.descriptor.path, this.codec.seal(Buffer.from(document.text, 'utf8')));
|
|
146
|
+
}
|
|
147
|
+
this.sealedText.set(revisionId, sealed);
|
|
148
|
+
}
|
|
149
|
+
async documents(revisionId) {
|
|
150
|
+
const record = this.records.get(revisionId);
|
|
151
|
+
if (record === undefined) {
|
|
152
|
+
throw new KnowledgeError('not-found', `revision ${revisionId} is not staged`);
|
|
153
|
+
}
|
|
154
|
+
const sealed = this.sealedText.get(revisionId);
|
|
155
|
+
if (sealed === undefined && record.revision.documents.length > 0) {
|
|
156
|
+
throw new KnowledgeError('store', `revision ${revisionId} has no staged document text`);
|
|
157
|
+
}
|
|
158
|
+
return record.revision.documents.map((descriptor) => {
|
|
159
|
+
const ciphertext = sealed?.get(descriptor.path);
|
|
160
|
+
if (ciphertext === undefined) {
|
|
161
|
+
throw new KnowledgeError('store', `revision ${revisionId} is missing text for ${descriptor.path}`);
|
|
162
|
+
}
|
|
163
|
+
return { descriptor, text: this.codec.open(ciphertext).toString('utf8') };
|
|
164
|
+
});
|
|
126
165
|
}
|
|
127
166
|
}
|
|
128
167
|
//# sourceMappingURL=revision-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revision-store.js","sourceRoot":"","sources":["../src/revision-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"revision-store.js","sourceRoot":"","sources":["../src/revision-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DeveloperCapability } from '@noodle-borg/developer-mcp';
|
|
2
2
|
import { type DeveloperAccessGrant, type DeveloperGrantStore } from '../oauth/developer-grant.js';
|
|
3
3
|
import type { ControlPlaneStore } from '../store.js';
|
|
4
4
|
import type { ControlPlaneIdentity } from './deploy-gate.js';
|
|
@@ -6,11 +6,13 @@ export interface DeveloperGrantAuthorizationContext {
|
|
|
6
6
|
readonly grants: DeveloperGrantStore;
|
|
7
7
|
readonly controlPlane: ControlPlaneStore;
|
|
8
8
|
readonly org: string;
|
|
9
|
-
readonly env?: string;
|
|
10
9
|
readonly capability: DeveloperCapability;
|
|
10
|
+
readonly resourcePath: string;
|
|
11
11
|
readonly now?: () => string;
|
|
12
12
|
}
|
|
13
13
|
export declare function authorizeDeveloperGrant(identity: ControlPlaneIdentity, context: DeveloperGrantAuthorizationContext): Promise<boolean>;
|
|
14
|
-
export declare function activeDeveloperGrantForIdentity(identity: ControlPlaneIdentity, grants: DeveloperGrantStore,
|
|
15
|
-
|
|
14
|
+
export declare function activeDeveloperGrantForIdentity(identity: ControlPlaneIdentity, grants: DeveloperGrantStore, options?: {
|
|
15
|
+
readonly at?: string;
|
|
16
|
+
readonly resource?: string;
|
|
17
|
+
}): Promise<DeveloperAccessGrant | undefined>;
|
|
16
18
|
//# sourceMappingURL=developer-grant-guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"developer-grant-guard.d.ts","sourceRoot":"","sources":["../../src/auth/developer-grant-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"developer-grant-guard.d.ts","sourceRoot":"","sources":["../../src/auth/developer-grant-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAyB,MAAM,4BAA4B,CAAC;AAE7F,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAa3C"}
|
|
@@ -1,22 +1,26 @@
|
|
|
1
|
+
import { developerResourcePath } from '@noodle-borg/developer-mcp';
|
|
1
2
|
import { activeDeveloperGrant, } from '../oauth/developer-grant.js';
|
|
2
3
|
export async function authorizeDeveloperGrant(identity, context) {
|
|
3
4
|
if (identity.developerGrantId === undefined || identity.oauthClientId === undefined)
|
|
4
5
|
return false;
|
|
5
|
-
const grant = await activeDeveloperGrantForIdentity(identity, context.grants,
|
|
6
|
+
const grant = await activeDeveloperGrantForIdentity(identity, context.grants, {
|
|
7
|
+
at: context.now?.() ?? new Date().toISOString(),
|
|
8
|
+
});
|
|
6
9
|
if (grant === undefined)
|
|
7
10
|
return false;
|
|
8
|
-
if (grant.
|
|
9
|
-
return false;
|
|
10
|
-
if (context.env !== undefined && !grant.environments.includes(context.env))
|
|
11
|
+
if (developerResourcePath(grant.resource) !== context.resourcePath)
|
|
11
12
|
return false;
|
|
12
13
|
if (!grant.capabilities.includes(context.capability))
|
|
13
14
|
return false;
|
|
14
|
-
|
|
15
|
+
const member = await context.controlPlane.getOrgMember({
|
|
15
16
|
org: context.org,
|
|
16
17
|
subject: identity.subject,
|
|
17
|
-
})
|
|
18
|
+
});
|
|
19
|
+
if (member === undefined)
|
|
20
|
+
return false;
|
|
21
|
+
return context.capability !== 'deployments:rollback' || member.role === 'owner';
|
|
18
22
|
}
|
|
19
|
-
export async function activeDeveloperGrantForIdentity(identity, grants,
|
|
23
|
+
export async function activeDeveloperGrantForIdentity(identity, grants, options = {}) {
|
|
20
24
|
if (identity.developerGrantId === undefined || identity.oauthClientId === undefined)
|
|
21
25
|
return undefined;
|
|
22
26
|
const grant = await grants.get(identity.developerGrantId);
|
|
@@ -24,17 +28,10 @@ export async function activeDeveloperGrantForIdentity(identity, grants, at = new
|
|
|
24
28
|
activeDeveloperGrant(grant, {
|
|
25
29
|
subject: identity.subject,
|
|
26
30
|
clientId: identity.oauthClientId,
|
|
27
|
-
|
|
31
|
+
resource: options.resource ?? grant.resource,
|
|
32
|
+
at: options.at ?? new Date().toISOString(),
|
|
28
33
|
})
|
|
29
34
|
? grant
|
|
30
35
|
: undefined;
|
|
31
36
|
}
|
|
32
|
-
export async function developerEnvironmentAllowlist(identity, grants) {
|
|
33
|
-
if (identity.developerGrantId === undefined)
|
|
34
|
-
return undefined;
|
|
35
|
-
if (grants === undefined)
|
|
36
|
-
return new Set();
|
|
37
|
-
const grant = await activeDeveloperGrantForIdentity(identity, grants);
|
|
38
|
-
return new Set(grant?.environments ?? []);
|
|
39
|
-
}
|
|
40
37
|
//# sourceMappingURL=developer-grant-guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"developer-grant-guard.js","sourceRoot":"","sources":["../../src/auth/developer-grant-guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"developer-grant-guard.js","sourceRoot":"","sources":["../../src/auth/developer-grant-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAE7F,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AAarC,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAA8B,EAC9B,OAA2C;IAE3C,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAClG,MAAM,KAAK,GAAG,MAAM,+BAA+B,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;QAC5E,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAChD,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACjF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC;QACrD,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,OAAO,CAAC,UAAU,KAAK,sBAAsB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,QAA8B,EAC9B,MAA2B,EAC3B,UAAgE,EAAE;IAElE,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS;QACjF,OAAO,SAAS,CAAC;IACnB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1D,OAAO,KAAK,KAAK,SAAS;QACxB,oBAAoB,CAAC,KAAK,EAAE;YAC1B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,QAAQ,EAAE,QAAQ,CAAC,aAAa;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;YAC5C,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAC3C,CAAC;QACF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AppInspectionView, type DeploymentInspectionView, type DeveloperControlPlane, type DeveloperMcpContext, type EventsView, type GetLogsInput, type GetMetricsInput, type GetSessionInput, type InspectAppInput, type InspectDeploymentInput, type ListAppsInput, type ListAppsView, type ListEventsInput, type LogsView, type MetricsView, type RollbackDeploymentInput, type RollbackView, type SessionView } from '@noodle-borg/developer-mcp';
|
|
1
|
+
import { type AppInspectionView, type DeploymentInspectionView, type DeveloperContextView, type DeveloperControlPlane, type DeveloperMcpContext, type EventsView, type GetLogsInput, type GetMetricsInput, type GetSessionInput, type InspectAppInput, type InspectDeploymentInput, type ListAppsInput, type ListAppsView, type ListEventsInput, type LogsView, type MetricsView, type RollbackDeploymentInput, type RollbackView, type SessionView } from '@noodle-borg/developer-mcp';
|
|
2
2
|
import type { RequestEventStore } from '@noodle-borg/module';
|
|
3
3
|
import type { ServerRegistry } from '../registry.js';
|
|
4
4
|
import type { AuditSink } from '../store/audit.js';
|
|
@@ -9,7 +9,7 @@ export interface ServiceDeveloperControlPlaneOptions {
|
|
|
9
9
|
readonly registry: DeveloperRegistry;
|
|
10
10
|
readonly logs: UserAppLogStore;
|
|
11
11
|
readonly requestEvents: RequestEventStore;
|
|
12
|
-
readonly controlPlane: Pick<ControlPlaneStore, 'getActiveMcpSubdomain' | 'getOrgMember'>;
|
|
12
|
+
readonly controlPlane: Pick<ControlPlaneStore, 'getActiveMcpSubdomain' | 'getOrgMember' | 'listOrgsForSubject'>;
|
|
13
13
|
readonly audit: AuditSink;
|
|
14
14
|
readonly publicBaseUrl: string;
|
|
15
15
|
readonly publicBaseDomain?: string;
|
|
@@ -18,6 +18,7 @@ export interface ServiceDeveloperControlPlaneOptions {
|
|
|
18
18
|
export declare class ServiceDeveloperControlPlane implements DeveloperControlPlane {
|
|
19
19
|
#private;
|
|
20
20
|
constructor(options: ServiceDeveloperControlPlaneOptions);
|
|
21
|
+
getContext(ctx: DeveloperMcpContext): Promise<DeveloperContextView>;
|
|
21
22
|
listApps(ctx: DeveloperMcpContext, input: ListAppsInput): Promise<ListAppsView>;
|
|
22
23
|
inspectApp(ctx: DeveloperMcpContext, input: InspectAppInput): Promise<AppInspectionView>;
|
|
23
24
|
inspectDeployment(ctx: DeveloperMcpContext, input: InspectDeploymentInput): Promise<DeploymentInspectionView>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-plane-adapter.d.ts","sourceRoot":"","sources":["../../src/developer-mcp/control-plane-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"control-plane-adapter.d.ts","sourceRoot":"","sources":["../../src/developer-mcp/control-plane-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAG7B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAG1B,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAgB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAc,iBAAiB,EAAiC,MAAM,aAAa,CAAC;AAUhG,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,cAAc,EACZ,UAAU,GACV,QAAQ,GACR,gBAAgB,GAChB,eAAe,GACf,KAAK,GACL,WAAW,GACX,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,UAAU,CACb,CAAC;AAEF,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,IAAI,CACzB,iBAAiB,EACjB,uBAAuB,GAAG,cAAc,GAAG,oBAAoB,CAChE,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,qBAAa,4BAA6B,YAAW,qBAAqB;;gBAa5D,OAAO,EAAE,mCAAmC;IAWlD,UAAU,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2BnE,QAAQ,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAM/E,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYxF,iBAAiB,CACrB,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;IAyE9B,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAezE,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBlF,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBjF,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAYlF,kBAAkB,CACtB,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,YAAY,CAAC;CAkDzB"}
|