skillscript-runtime 0.9.9 → 0.13.2
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 +39 -46
- package/dist/bootstrap.d.ts +57 -18
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +188 -54
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli.js +5 -6
- package/dist/cli.js.map +1 -1
- package/dist/connectors/agent-noop.d.ts +2 -2
- package/dist/connectors/agent-noop.d.ts.map +1 -1
- package/dist/connectors/config.d.ts +46 -0
- package/dist/connectors/config.d.ts.map +1 -1
- package/dist/connectors/config.js +109 -1
- package/dist/connectors/config.js.map +1 -1
- package/dist/connectors/index.d.ts +3 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +6 -3
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/local-model-mcp.d.ts +3 -3
- package/dist/connectors/local-model-mcp.d.ts.map +1 -1
- package/dist/connectors/local-model.d.ts +30 -11
- package/dist/connectors/local-model.d.ts.map +1 -1
- package/dist/connectors/local-model.js +44 -12
- package/dist/connectors/local-model.js.map +1 -1
- package/dist/connectors/mcp-remote.d.ts +3 -3
- package/dist/connectors/mcp-remote.d.ts.map +1 -1
- package/dist/connectors/mcp.d.ts +3 -3
- package/dist/connectors/mcp.d.ts.map +1 -1
- package/dist/connectors/memory-store-mcp.d.ts +3 -3
- package/dist/connectors/memory-store-mcp.d.ts.map +1 -1
- package/dist/connectors/memory-store-mcp.js +3 -1
- package/dist/connectors/memory-store-mcp.js.map +1 -1
- package/dist/connectors/memory-store.d.ts +26 -6
- package/dist/connectors/memory-store.d.ts.map +1 -1
- package/dist/connectors/memory-store.js +84 -15
- package/dist/connectors/memory-store.js.map +1 -1
- package/dist/connectors/registry.d.ts +28 -5
- package/dist/connectors/registry.d.ts.map +1 -1
- package/dist/connectors/registry.js +34 -11
- package/dist/connectors/registry.js.map +1 -1
- package/dist/connectors/skill-store.d.ts +3 -3
- package/dist/connectors/skill-store.d.ts.map +1 -1
- package/dist/connectors/sqlite-skill-store.d.ts +89 -0
- package/dist/connectors/sqlite-skill-store.d.ts.map +1 -0
- package/dist/connectors/sqlite-skill-store.js +506 -0
- package/dist/connectors/sqlite-skill-store.js.map +1 -0
- package/dist/connectors/types.d.ts +86 -9
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/connectors/types.js.map +1 -1
- package/dist/errors.d.ts +15 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +47 -6
- package/dist/errors.js.map +1 -1
- package/dist/help-content.d.ts.map +1 -1
- package/dist/help-content.js +18 -4
- package/dist/help-content.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime-config.d.ts +0 -2
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +1 -1
- package/dist/runtime-config.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +29 -30
- package/dist/runtime.js.map +1 -1
- package/dist/testing/conformance.d.ts.map +1 -1
- package/dist/testing/conformance.js +12 -6
- package/dist/testing/conformance.js.map +1 -1
- package/examples/README.md +13 -13
- package/examples/connectors/LocalModelTemplate/LocalModelTemplate.ts +138 -0
- package/examples/connectors/LocalModelTemplate/README.md +134 -0
- package/examples/connectors/McpConnectorTemplate/McpConnectorTemplate.ts +200 -0
- package/examples/connectors/McpConnectorTemplate/README.md +153 -0
- package/examples/connectors/MemoryStoreTemplate/MemoryStoreTemplate.ts +155 -0
- package/examples/connectors/MemoryStoreTemplate/README.md +169 -0
- package/examples/connectors/README.md +47 -0
- package/examples/connectors/SkillStoreTemplate/README.md +143 -0
- package/examples/connectors/SkillStoreTemplate/SkillStoreTemplate.ts +199 -0
- package/examples/{hello.skill.provenance.json → skillscripts/hello.skill.provenance.json} +1 -1
- package/package.json +1 -1
- package/scaffold/config.toml +8 -12
- package/scaffold/connectors.json +31 -3
- /package/examples/{classify-support-ticket.skill.md → skillscripts/classify-support-ticket.skill.md} +0 -0
- /package/examples/{cut-release-tag.skill.md → skillscripts/cut-release-tag.skill.md} +0 -0
- /package/examples/{doc-qa-with-citations.skill.md → skillscripts/doc-qa-with-citations.skill.md} +0 -0
- /package/examples/{feedback-sentiment-scan.skill.md → skillscripts/feedback-sentiment-scan.skill.md} +0 -0
- /package/examples/{hello.skill.md → skillscripts/hello.skill.md} +0 -0
- /package/examples/{morning-brief.skill.md → skillscripts/morning-brief.skill.md} +0 -0
- /package/examples/{queue-length-monitor.skill.md → skillscripts/queue-length-monitor.skill.md} +0 -0
- /package/examples/{service-health-watch.skill.md → skillscripts/service-health-watch.skill.md} +0 -0
- /package/examples/{youtrack-morning-sweep.skill.md → skillscripts/youtrack-morning-sweep.skill.md} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-store-mcp.js","sourceRoot":"","sources":["../../src/connectors/memory-store-mcp.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gEAAgE;AAChE,2EAA2E;AAC3E,sCAAsC;AACtC,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,yBAAyB;AACzB,EAAE;AACF,2EAA2E;AAC3E,EAAE;AACF,uFAAuF;AACvF,EAAE;AACF,uEAAuE;AACvE,6DAA6D;AAC7D,8BAA8B;AAC9B,EAAE;AACF,sEAAsE;AACtE,qEAAqE;AACrE,+DAA+D;AAC/D,wCAAwC;AACxC,EAAE;AACF,oEAAoE;AACpE,4DAA4D;AAC5D,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,oEAAoE;AACpE,sDAAsD;AACtD,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,iEAAiE;AACjE,oCAAoC;AAYpC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,OAAO,uBAAuB;
|
|
1
|
+
{"version":3,"file":"memory-store-mcp.js","sourceRoot":"","sources":["../../src/connectors/memory-store-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MemoryStore, MemoryWrite, MemoryWriteRecord, PortableMemory, QueryFilters,
|
|
1
|
+
import type { MemoryStore, MemoryWrite, MemoryWriteRecord, PortableMemory, QueryFilters, MemoryStoreCapabilities, ManifestInfo } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* SQLite-backed MemoryStore. Schema:
|
|
4
4
|
*
|
|
@@ -26,12 +26,20 @@ export interface SqliteMemoryStoreConfig {
|
|
|
26
26
|
dbPath: string;
|
|
27
27
|
}
|
|
28
28
|
export declare class SqliteMemoryStore implements MemoryStore {
|
|
29
|
-
static staticCapabilities():
|
|
29
|
+
static staticCapabilities(): MemoryStoreCapabilities;
|
|
30
30
|
private readonly db;
|
|
31
31
|
constructor(config: SqliteMemoryStoreConfig);
|
|
32
32
|
private bootstrap;
|
|
33
|
+
/**
|
|
34
|
+
* v0.13.0 — one-time backfill on bootstrap. If memory_tags is empty AND
|
|
35
|
+
* memories has tags-bearing rows (pre-v0.13 data), populate from the JSON
|
|
36
|
+
* column. Idempotent: subsequent bootstraps find memory_tags non-empty and
|
|
37
|
+
* skip. Adopters migrating from earlier versions get indexed tag filters
|
|
38
|
+
* without an explicit migration step.
|
|
39
|
+
*/
|
|
40
|
+
private backfillMemoryTags;
|
|
33
41
|
query(filters: QueryFilters): Promise<PortableMemory[]>;
|
|
34
|
-
manifest(): Promise<ManifestInfo
|
|
42
|
+
manifest(): Promise<ManifestInfo<"memory_store">>;
|
|
35
43
|
/**
|
|
36
44
|
* v0.8.0 — `MemoryStore.write()` impl. Generates a substrate id; persists
|
|
37
45
|
* via the existing `upsert()` schema with tags + metadata. The `summary`
|
|
@@ -52,9 +60,21 @@ export declare class SqliteMemoryStore implements MemoryStore {
|
|
|
52
60
|
close(): void;
|
|
53
61
|
private rowToMemory;
|
|
54
62
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
63
|
+
* v0.13.0 — sanitize a query string for FTS5 MATCH.
|
|
64
|
+
*
|
|
65
|
+
* Default behavior: split on whitespace, quote each token. FTS5 sees N
|
|
66
|
+
* literal phrase tokens AND'd together. **Boolean operators like `OR` /
|
|
67
|
+
* `NOT` / `NEAR` are NOT supported** — they're quoted as literal phrase
|
|
68
|
+
* tokens and become a search for those words. This is a deliberate
|
|
69
|
+
* safety stance over arbitrary user input.
|
|
70
|
+
*
|
|
71
|
+
* Escape hatch: prefix the query with `raw:` and the rest passes through
|
|
72
|
+
* verbatim. Caller takes responsibility for FTS5 syntax + injection
|
|
73
|
+
* safety. Example: `raw:foo OR bar`.
|
|
74
|
+
*
|
|
75
|
+
* Pre-v0.13 docstring claimed "pre-quoted" passed through; that wasn't
|
|
76
|
+
* accurate (the tokenizer re-quoted). The `raw:` prefix is the actual
|
|
77
|
+
* escape hatch.
|
|
58
78
|
*/
|
|
59
79
|
private sanitizeFtsQuery;
|
|
60
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/connectors/memory-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/connectors/memory-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,uBAAuB,EACvB,YAAY,EACb,MAAM,YAAY,CAAC;AAgCpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,MAAM,CAAC,kBAAkB,IAAI,uBAAuB;IAiBpD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,MAAM,EAAE,uBAAuB;IAQ3C,OAAO,CAAC,SAAS;IAwCjB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAapB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAqCvD,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAkBvD;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoB3D,kDAAkD;IAClD,MAAM,CAAC,MAAM,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,IAAI;IA6BR,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,WAAW;IAiBnB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,gBAAgB;CAUzB"}
|
|
@@ -72,6 +72,41 @@ export class SqliteMemoryStore {
|
|
|
72
72
|
INSERT INTO memories_fts(memories_fts, rowid, summary, detail) VALUES('delete', old.rowid, old.summary, old.detail);
|
|
73
73
|
INSERT INTO memories_fts(rowid, summary, detail) VALUES (new.rowid, new.summary, new.detail);
|
|
74
74
|
END;
|
|
75
|
+
-- v0.13.0 — normalized tag relation. Pre-v0.13 tag filter was a JS-side
|
|
76
|
+
-- substring scan over the JSON tags column (linear, wrong-ranked).
|
|
77
|
+
-- Relation lets SQL push tag predicates into indexed lookups + EXISTS
|
|
78
|
+
-- semantics. FK + ON DELETE CASCADE keeps the relation in sync when
|
|
79
|
+
-- memories rows are removed (FTS triggers stay separate).
|
|
80
|
+
CREATE TABLE IF NOT EXISTS memory_tags (
|
|
81
|
+
memory_id TEXT NOT NULL,
|
|
82
|
+
tag TEXT NOT NULL,
|
|
83
|
+
PRIMARY KEY (memory_id, tag),
|
|
84
|
+
FOREIGN KEY (memory_id) REFERENCES memories(id) ON DELETE CASCADE
|
|
85
|
+
);
|
|
86
|
+
CREATE INDEX IF NOT EXISTS memory_tags_tag_idx ON memory_tags(tag);
|
|
87
|
+
PRAGMA foreign_keys = ON;
|
|
88
|
+
`);
|
|
89
|
+
this.backfillMemoryTags();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* v0.13.0 — one-time backfill on bootstrap. If memory_tags is empty AND
|
|
93
|
+
* memories has tags-bearing rows (pre-v0.13 data), populate from the JSON
|
|
94
|
+
* column. Idempotent: subsequent bootstraps find memory_tags non-empty and
|
|
95
|
+
* skip. Adopters migrating from earlier versions get indexed tag filters
|
|
96
|
+
* without an explicit migration step.
|
|
97
|
+
*/
|
|
98
|
+
backfillMemoryTags() {
|
|
99
|
+
const have = this.db.prepare("SELECT COUNT(*) AS c FROM memory_tags").get().c;
|
|
100
|
+
if (have > 0)
|
|
101
|
+
return;
|
|
102
|
+
const hasJson = this.db.prepare("SELECT COUNT(*) AS c FROM memories WHERE tags IS NOT NULL").get().c;
|
|
103
|
+
if (hasJson === 0)
|
|
104
|
+
return;
|
|
105
|
+
this.db.exec(`
|
|
106
|
+
INSERT OR IGNORE INTO memory_tags (memory_id, tag)
|
|
107
|
+
SELECT m.id, je.value
|
|
108
|
+
FROM memories m, json_each(m.tags) je
|
|
109
|
+
WHERE m.tags IS NOT NULL;
|
|
75
110
|
`);
|
|
76
111
|
}
|
|
77
112
|
async query(filters) {
|
|
@@ -85,19 +120,24 @@ export class SqliteMemoryStore {
|
|
|
85
120
|
return rows.map((r) => this.rowToMemory(r, undefined));
|
|
86
121
|
}
|
|
87
122
|
const sanitized = this.sanitizeFtsQuery(query);
|
|
123
|
+
// v0.13.0 — push tag filter into SQL via EXISTS join on memory_tags
|
|
124
|
+
// relation. Exact match (was JS substring scan; semantic change). Reduces
|
|
125
|
+
// a linear-time JS filter to an indexed lookup; ranking still by FTS
|
|
126
|
+
// score (tags don't influence relevance, just inclusion).
|
|
127
|
+
const tagFilter = filters["domain_tags"];
|
|
128
|
+
const params = { $q: sanitized, $limit: limit };
|
|
129
|
+
let tagJoin = "";
|
|
130
|
+
if (typeof tagFilter === "string" && tagFilter !== "") {
|
|
131
|
+
tagJoin = "AND EXISTS (SELECT 1 FROM memory_tags mt WHERE mt.memory_id = m.id AND mt.tag = $tag)";
|
|
132
|
+
params["$tag"] = tagFilter;
|
|
133
|
+
}
|
|
88
134
|
const rows = this.db.prepare(`SELECT m.id, m.summary, m.detail, m.tags, m.created_at, m.metadata, bm25(memories_fts) AS score
|
|
89
135
|
FROM memories_fts
|
|
90
136
|
JOIN memories m ON memories_fts.rowid = m.rowid
|
|
91
|
-
WHERE memories_fts MATCH $q
|
|
137
|
+
WHERE memories_fts MATCH $q ${tagJoin}
|
|
92
138
|
ORDER BY score
|
|
93
|
-
LIMIT $limit`).all(
|
|
94
|
-
|
|
95
|
-
// Optional substring filter on domain_tags. Stored as a JSON-stringified array.
|
|
96
|
-
if (typeof filters["domain_tags"] === "string" && filters["domain_tags"] !== "") {
|
|
97
|
-
const needle = filters["domain_tags"];
|
|
98
|
-
return results.filter((m) => Array.isArray(m.domain_tags) && m.domain_tags.some((t) => t.includes(needle)));
|
|
99
|
-
}
|
|
100
|
-
return results;
|
|
139
|
+
LIMIT $limit`).all(params);
|
|
140
|
+
return rows.map((r) => this.rowToMemory(r, r["score"]));
|
|
101
141
|
}
|
|
102
142
|
async manifest() {
|
|
103
143
|
return {
|
|
@@ -107,7 +147,12 @@ export class SqliteMemoryStore {
|
|
|
107
147
|
supported_modes: ["fts"],
|
|
108
148
|
score_range: "unbounded",
|
|
109
149
|
supported_filters: ["domain_tags"],
|
|
110
|
-
|
|
150
|
+
// v0.13.0 — `domain_tags` filter pushed into SQL via memory_tags
|
|
151
|
+
// relation; exact match semantic (was substring scan pre-v0.13).
|
|
152
|
+
tag_filter_semantic: "exact match via indexed memory_tags relation",
|
|
153
|
+
// v0.13.0 — `query` field is phrase-tokens by default; prefix with
|
|
154
|
+
// `raw:` for adopter-explicit FTS5 syntax.
|
|
155
|
+
fts_query_semantic: "phrase-tokens (boolean ops disabled); use `raw:` prefix for FTS5 syntax",
|
|
111
156
|
},
|
|
112
157
|
};
|
|
113
158
|
}
|
|
@@ -141,7 +186,8 @@ export class SqliteMemoryStore {
|
|
|
141
186
|
}
|
|
142
187
|
/** Helper for tests/seeding — insert a memory. */
|
|
143
188
|
upsert(memory) {
|
|
144
|
-
const
|
|
189
|
+
const tagList = memory.domain_tags ?? [];
|
|
190
|
+
const tagsJson = tagList.length > 0 ? JSON.stringify(tagList) : null;
|
|
145
191
|
const metadata = memory.metadata ? JSON.stringify(memory.metadata) : null;
|
|
146
192
|
const createdAt = memory.created_at ?? Math.floor(Date.now() / 1000);
|
|
147
193
|
this.db.prepare(`INSERT INTO memories (id, summary, detail, tags, created_at, metadata)
|
|
@@ -151,10 +197,18 @@ export class SqliteMemoryStore {
|
|
|
151
197
|
$id: memory.id,
|
|
152
198
|
$summary: memory.summary,
|
|
153
199
|
$detail: memory.detail ?? null,
|
|
154
|
-
$tags:
|
|
200
|
+
$tags: tagsJson,
|
|
155
201
|
$createdAt: createdAt,
|
|
156
202
|
$metadata: metadata,
|
|
157
203
|
});
|
|
204
|
+
// v0.13.0 — maintain the memory_tags relation. Clear + reinsert keeps
|
|
205
|
+
// upsert semantics clean (tag list is canonical per call).
|
|
206
|
+
this.db.prepare("DELETE FROM memory_tags WHERE memory_id = $id").run({ $id: memory.id });
|
|
207
|
+
if (tagList.length > 0) {
|
|
208
|
+
const ins = this.db.prepare("INSERT OR IGNORE INTO memory_tags (memory_id, tag) VALUES ($id, $tag)");
|
|
209
|
+
for (const tag of tagList)
|
|
210
|
+
ins.run({ $id: memory.id, $tag: tag });
|
|
211
|
+
}
|
|
158
212
|
}
|
|
159
213
|
close() {
|
|
160
214
|
this.db.close();
|
|
@@ -179,11 +233,26 @@ export class SqliteMemoryStore {
|
|
|
179
233
|
return memory;
|
|
180
234
|
}
|
|
181
235
|
/**
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
236
|
+
* v0.13.0 — sanitize a query string for FTS5 MATCH.
|
|
237
|
+
*
|
|
238
|
+
* Default behavior: split on whitespace, quote each token. FTS5 sees N
|
|
239
|
+
* literal phrase tokens AND'd together. **Boolean operators like `OR` /
|
|
240
|
+
* `NOT` / `NEAR` are NOT supported** — they're quoted as literal phrase
|
|
241
|
+
* tokens and become a search for those words. This is a deliberate
|
|
242
|
+
* safety stance over arbitrary user input.
|
|
243
|
+
*
|
|
244
|
+
* Escape hatch: prefix the query with `raw:` and the rest passes through
|
|
245
|
+
* verbatim. Caller takes responsibility for FTS5 syntax + injection
|
|
246
|
+
* safety. Example: `raw:foo OR bar`.
|
|
247
|
+
*
|
|
248
|
+
* Pre-v0.13 docstring claimed "pre-quoted" passed through; that wasn't
|
|
249
|
+
* accurate (the tokenizer re-quoted). The `raw:` prefix is the actual
|
|
250
|
+
* escape hatch.
|
|
185
251
|
*/
|
|
186
252
|
sanitizeFtsQuery(q) {
|
|
253
|
+
if (q.startsWith("raw:")) {
|
|
254
|
+
return q.slice(4).trim();
|
|
255
|
+
}
|
|
187
256
|
return q
|
|
188
257
|
.split(/\s+/)
|
|
189
258
|
.filter((s) => s.length > 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/connectors/memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWzC,SAAS,gBAAgB;IACvB,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAOnD,SAAS,gBAAgB;IACvB,OAAQ,WAAW,CAAC,aAAa,CAAwC,CAAC,YAAY,CAAC;AACzF,CAAC;AA6BD,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,kBAAkB;QACvB,OAAO;YACL,cAAc,EAAE,cAAc;YAC9B,cAAc,EAAE,mBAAmB;YACnC,gBAAgB,EAAE,gBAAgB;YAClC,QAAQ,EAAE;gBACR,eAAe,EAAE,IAAI;gBACrB,mBAAmB,EAAE,IAAI;gBACzB,iBAAiB,EAAE,KAAK;gBACxB,eAAe,EAAE,KAAK;gBACtB,6BAA6B,EAAE,KAAK;gBACpC,gBAAgB,EAAE,KAAK;gBACvB,oBAAoB,EAAE,KAAK;aAC5B;SACF,CAAC;IACJ,CAAC;IAEgB,EAAE,CAAe;IAElC,YAAY,MAA+B;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/connectors/memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,18 +38,41 @@ export declare class Registry {
|
|
|
38
38
|
getLocalModel(name?: string): LocalModel;
|
|
39
39
|
getMcpConnector(name?: string): McpConnector;
|
|
40
40
|
/**
|
|
41
|
-
* Returns the registered AgentConnector
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
41
|
+
* Returns the registered AgentConnector. Throws when missing — symmetric
|
|
42
|
+
* with `getSkillStore` / `getMcpConnector` / etc. v0.13.0 — was silent
|
|
43
|
+
* NoOp fallback; that pattern hid wiring gaps until prod (skills with
|
|
44
|
+
* `# Output: agent:` ran "successfully" in dev with no real delivery).
|
|
45
|
+
* Callers that want graceful-no-op behavior use
|
|
46
|
+
* `getAgentConnectorOrDefault()` explicitly.
|
|
46
47
|
*/
|
|
47
48
|
getAgentConnector(name?: string): AgentConnector;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the registered AgentConnector, or `NoOpAgentConnector` when none
|
|
51
|
+
* is wired. Use this when you genuinely want the no-op default (test rigs,
|
|
52
|
+
* runtime dispatch paths that pair the return with a separate
|
|
53
|
+
* `hasAgentConnector()` check to record `delivery_skipped`). v0.13.0 —
|
|
54
|
+
* explicit opt-in replaces the silent fallback of pre-v0.13
|
|
55
|
+
* `getAgentConnector()`.
|
|
56
|
+
*/
|
|
57
|
+
getAgentConnectorOrDefault(name?: string): AgentConnector;
|
|
48
58
|
getSkillStoreClass(name?: string): SkillStoreClass;
|
|
49
59
|
getMemoryStoreClass(name?: string): MemoryStoreClass;
|
|
50
60
|
getLocalModelClass(name?: string): LocalModelClass;
|
|
51
61
|
getMcpConnectorClass(name?: string): McpConnectorClass;
|
|
62
|
+
/**
|
|
63
|
+
* Returns the registered AgentConnector class. Throws when missing —
|
|
64
|
+
* symmetric with the other `get*Class` methods. v0.13.0 — was silent
|
|
65
|
+
* fallback to `NoOpAgentConnector` via `as unknown as` cast; the cast
|
|
66
|
+
* masked any interface drift.
|
|
67
|
+
*/
|
|
52
68
|
getAgentConnectorClass(name?: string): AgentConnectorClass;
|
|
69
|
+
/**
|
|
70
|
+
* Returns the registered AgentConnector class, or `NoOpAgentConnector`
|
|
71
|
+
* when none is wired. Direct typing — no `unknown` cast. If
|
|
72
|
+
* `NoOpAgentConnector` ever drifts from `AgentConnectorClass`, the
|
|
73
|
+
* compiler tells us here.
|
|
74
|
+
*/
|
|
75
|
+
getAgentConnectorClassOrDefault(name?: string): AgentConnectorClass;
|
|
53
76
|
listSkillStoreClasses(): SkillStoreClass[];
|
|
54
77
|
listMemoryStoreClasses(): MemoryStoreClass[];
|
|
55
78
|
listLocalModelClasses(): LocalModelClass[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAyCtE,qBAAa,QAAQ;IACnB,OAAO,CAAC,WAAW,CAAyD;IAC5E,OAAO,CAAC,YAAY,CAA2D;IAC/E,OAAO,CAAC,WAAW,CAAyD;IAC5E,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,eAAe,CAAiE;IAIxF,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;IAI5D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI9D,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;IAI5D,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAQzF;;;;OAIG;IACH,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI/D,8FAA8F;IAC9F,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMtD;;;;;OAKG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIhE;;;;;;OAMG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnF,aAAa,CAAC,IAAI,SAAY,GAAG,UAAU;IAG3C,cAAc,CAAC,IAAI,SAAY,GAAG,WAAW;IAG7C,aAAa,CAAC,IAAI,SAAY,GAAG,UAAU;IAG3C,eAAe,CAAC,IAAI,SAAY,GAAG,YAAY;IAG/C
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,17 +76,27 @@ export class Registry {
|
|
|
76
76
|
return must(this.mcpConnectors, name, "McpConnector").instance;
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
* Returns the registered AgentConnector
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
79
|
+
* Returns the registered AgentConnector. Throws when missing — symmetric
|
|
80
|
+
* with `getSkillStore` / `getMcpConnector` / etc. v0.13.0 — was silent
|
|
81
|
+
* NoOp fallback; that pattern hid wiring gaps until prod (skills with
|
|
82
|
+
* `# Output: agent:` ran "successfully" in dev with no real delivery).
|
|
83
|
+
* Callers that want graceful-no-op behavior use
|
|
84
|
+
* `getAgentConnectorOrDefault()` explicitly.
|
|
84
85
|
*/
|
|
85
86
|
getAgentConnector(name = "primary") {
|
|
87
|
+
return must(this.agentConnectors, name, "AgentConnector").instance;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns the registered AgentConnector, or `NoOpAgentConnector` when none
|
|
91
|
+
* is wired. Use this when you genuinely want the no-op default (test rigs,
|
|
92
|
+
* runtime dispatch paths that pair the return with a separate
|
|
93
|
+
* `hasAgentConnector()` check to record `delivery_skipped`). v0.13.0 —
|
|
94
|
+
* explicit opt-in replaces the silent fallback of pre-v0.13
|
|
95
|
+
* `getAgentConnector()`.
|
|
96
|
+
*/
|
|
97
|
+
getAgentConnectorOrDefault(name = "primary") {
|
|
86
98
|
const entry = this.agentConnectors.get(name);
|
|
87
|
-
|
|
88
|
-
return entry.instance;
|
|
89
|
-
return DEFAULT_AGENT_CONNECTOR;
|
|
99
|
+
return entry !== undefined ? entry.instance : DEFAULT_AGENT_CONNECTOR;
|
|
90
100
|
}
|
|
91
101
|
// ─── Get class (linter offline lookup) ──────────────────────────────────
|
|
92
102
|
getSkillStoreClass(name = "primary") {
|
|
@@ -101,11 +111,24 @@ export class Registry {
|
|
|
101
111
|
getMcpConnectorClass(name = "primary") {
|
|
102
112
|
return must(this.mcpConnectors, name, "McpConnector").ctor;
|
|
103
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns the registered AgentConnector class. Throws when missing —
|
|
116
|
+
* symmetric with the other `get*Class` methods. v0.13.0 — was silent
|
|
117
|
+
* fallback to `NoOpAgentConnector` via `as unknown as` cast; the cast
|
|
118
|
+
* masked any interface drift.
|
|
119
|
+
*/
|
|
104
120
|
getAgentConnectorClass(name = "primary") {
|
|
121
|
+
return must(this.agentConnectors, name, "AgentConnector").ctor;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Returns the registered AgentConnector class, or `NoOpAgentConnector`
|
|
125
|
+
* when none is wired. Direct typing — no `unknown` cast. If
|
|
126
|
+
* `NoOpAgentConnector` ever drifts from `AgentConnectorClass`, the
|
|
127
|
+
* compiler tells us here.
|
|
128
|
+
*/
|
|
129
|
+
getAgentConnectorClassOrDefault(name = "primary") {
|
|
105
130
|
const entry = this.agentConnectors.get(name);
|
|
106
|
-
|
|
107
|
-
return entry.ctor;
|
|
108
|
-
return NoOpAgentConnector;
|
|
131
|
+
return entry !== undefined ? entry.ctor : NoOpAgentConnector;
|
|
109
132
|
}
|
|
110
133
|
// ─── List distinct classes per kind ─────────────────────────────────────
|
|
111
134
|
listSkillStoreClasses() { return distinct(this.skillStores); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/connectors/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SkillStore, SkillSource, SkillMeta, SkillStatus, SkillFilter, VersionInfo,
|
|
1
|
+
import type { SkillStore, SkillSource, SkillMeta, SkillStatus, SkillFilter, VersionInfo, SkillStoreCapabilities, ManifestInfo } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Filesystem-backed SkillStore. Skills live as `*.skill.md` files under a
|
|
4
4
|
* directory. Per-skill version history lives in a sidecar `*.versions.jsonl`
|
|
@@ -21,9 +21,9 @@ import type { SkillStore, SkillSource, SkillMeta, SkillStatus, SkillFilter, Vers
|
|
|
21
21
|
*/
|
|
22
22
|
export declare class FilesystemSkillStore implements SkillStore {
|
|
23
23
|
private readonly rootDir;
|
|
24
|
-
static staticCapabilities():
|
|
24
|
+
static staticCapabilities(): SkillStoreCapabilities;
|
|
25
25
|
constructor(rootDir: string);
|
|
26
|
-
manifest(): Promise<ManifestInfo
|
|
26
|
+
manifest(): Promise<ManifestInfo<"skill_store">>;
|
|
27
27
|
load(name: string, version?: string): Promise<SkillSource>;
|
|
28
28
|
query(filter?: SkillFilter): Promise<SkillMeta[]>;
|
|
29
29
|
metadata(name: string): Promise<SkillMeta>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-store.d.ts","sourceRoot":"","sources":["../../src/connectors/skill-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"skill-store.d.ts","sourceRoot":"","sources":["../../src/connectors/skill-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,oBAAqB,YAAW,UAAU;IAgBzC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAfpC,MAAM,CAAC,kBAAkB,IAAI,sBAAsB;gBAetB,OAAO,EAAE,MAAM;IAEtC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAUhD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA0B1D,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BjD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAa1C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAmC9C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAqCxF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAsC5E,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe;YAIT,SAAS;CAkBxB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { SkillStore, SkillSource, SkillMeta, SkillStatus, SkillFilter, VersionInfo, SkillStoreCapabilities, ManifestInfo } from "./types.js";
|
|
2
|
+
export interface SqliteSkillStoreConfig {
|
|
3
|
+
/** Path to the SQLite database file. Use `:memory:` for an ephemeral store. */
|
|
4
|
+
dbPath: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* SQLite-backed SkillStore. Two-table schema:
|
|
8
|
+
*
|
|
9
|
+
* skills(name PRIMARY KEY, current_version, content_hash, status, source,
|
|
10
|
+
* description, metadata_json, created_at, updated_at,
|
|
11
|
+
* status_changed_at)
|
|
12
|
+
* skill_versions(name, version, content_hash, source, status,
|
|
13
|
+
* previous_status, changed_at, PRIMARY KEY (name, version))
|
|
14
|
+
*
|
|
15
|
+
* `skills` is the fast-path read for `load()` / `metadata()` / `query()`.
|
|
16
|
+
* `skill_versions` is the append-only history for `versions()`.
|
|
17
|
+
*
|
|
18
|
+
* `update_status()` wraps the UPDATE + INSERT in a transaction so the audit
|
|
19
|
+
* trail never logs a transition that didn't take effect. `delete()` hard-
|
|
20
|
+
* cascades — both tables purged. If you need recovery, back up adopter-side
|
|
21
|
+
* BEFORE calling delete (skill names can be reused after delete; no orphan
|
|
22
|
+
* history left behind).
|
|
23
|
+
*
|
|
24
|
+
* WAL is enabled at bootstrap so concurrent readers don't block a writer.
|
|
25
|
+
* Tag filtering uses `json_extract(metadata_json, '$.tags')` — O(n) table
|
|
26
|
+
* scan documented in `manifest()` features.
|
|
27
|
+
*
|
|
28
|
+
* `version` string format: first 12 chars of `content_hash`. Consumers MUST
|
|
29
|
+
* treat `version` as opaque (equality only) — same convention as
|
|
30
|
+
* FilesystemSkillStore.
|
|
31
|
+
*
|
|
32
|
+
* **Bundled default — one of three legs of the SkillStore connector model.**
|
|
33
|
+
* Adopters wire which leg via `connectors.json` substrate config:
|
|
34
|
+
* - `"filesystem"` (default) — uses FilesystemSkillStore
|
|
35
|
+
* - `"sqlite"` — uses this class
|
|
36
|
+
* - `{ type: "custom", module, export, config }` — adopter's own impl
|
|
37
|
+
*
|
|
38
|
+
* Runtime hosts (MCP server, web dashboard) honor the configured leg
|
|
39
|
+
* automatically. The bundled CLI authoring commands (`skillfile compile`,
|
|
40
|
+
* `skillfile lint`, `skillfile audit`, `skillfile list`) stay
|
|
41
|
+
* filesystem-pinned — they're the FS-authoring loop regardless of substrate
|
|
42
|
+
* config. Sqlite-backed skills are authored via the dashboard or the
|
|
43
|
+
* `skill_write` MCP tool.
|
|
44
|
+
*
|
|
45
|
+
* See `docs/sqlite-skill-store.md` for the forking checklist (writing your
|
|
46
|
+
* own adopter SkillStore impl).
|
|
47
|
+
*/
|
|
48
|
+
export declare class SqliteSkillStore implements SkillStore {
|
|
49
|
+
static staticCapabilities(): SkillStoreCapabilities;
|
|
50
|
+
private readonly db;
|
|
51
|
+
/**
|
|
52
|
+
* v0.13.0 — REGEXP support probed once at construction. `node:sqlite`
|
|
53
|
+
* doesn't include REGEXP by default. When unsupported, `query()` with
|
|
54
|
+
* `name_pattern` falls back to a JS-side filter over a full-table scan
|
|
55
|
+
* (no index help). Surfaced in `manifest()` so adopters notice the
|
|
56
|
+
* degradation; was a silent fallback before.
|
|
57
|
+
*/
|
|
58
|
+
private readonly regexpSupported;
|
|
59
|
+
constructor(config: SqliteSkillStoreConfig);
|
|
60
|
+
private probeRegexpSupport;
|
|
61
|
+
/**
|
|
62
|
+
* v0.13.0 — transaction helper. Wraps a synchronous block in
|
|
63
|
+
* BEGIN/COMMIT/ROLLBACK with the "ROLLBACK after COMMIT may itself fail"
|
|
64
|
+
* edge case absorbed once. Three callers (`store()`, `delete()`,
|
|
65
|
+
* `update_status()`) consolidate here.
|
|
66
|
+
*/
|
|
67
|
+
private withTransaction;
|
|
68
|
+
private bootstrap;
|
|
69
|
+
manifest(): Promise<ManifestInfo<"skill_store">>;
|
|
70
|
+
load(name: string, version?: string): Promise<SkillSource>;
|
|
71
|
+
query(filter?: SkillFilter): Promise<SkillMeta[]>;
|
|
72
|
+
metadata(name: string): Promise<SkillMeta>;
|
|
73
|
+
versions(name: string): Promise<VersionInfo[]>;
|
|
74
|
+
store(name: string, source: string, metadata?: Partial<SkillMeta>): Promise<VersionInfo>;
|
|
75
|
+
delete(name: string): Promise<void>;
|
|
76
|
+
update_status(name: string, status: SkillStatus): Promise<VersionInfo>;
|
|
77
|
+
close(): void;
|
|
78
|
+
/**
|
|
79
|
+
* v0.13.0 — Throws `SkillNotFoundError` on miss. Cannot distinguish
|
|
80
|
+
* "never existed" from "deleted between calls" — hard-cascade `delete()`
|
|
81
|
+
* removes the skill row + all skill_versions, so the substrate has no
|
|
82
|
+
* evidence either way. Callers needing that distinction must track
|
|
83
|
+
* delete events themselves (e.g., watch their own `delete()` calls) or
|
|
84
|
+
* switch to soft-delete (tombstone via `update_status("Disabled")`).
|
|
85
|
+
*/
|
|
86
|
+
private skillRow;
|
|
87
|
+
private metadataRowToMeta;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=sqlite-skill-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-skill-store.d.ts","sourceRoot":"","sources":["../../src/connectors/sqlite-skill-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,sBAAsB,EACtB,YAAY,EACb,MAAM,YAAY,CAAC;AA6BpB,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,MAAM,CAAC,kBAAkB,IAAI,sBAAsB;IAenD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAE9B,MAAM,EAAE,sBAAsB;IAkB1C,OAAO,CAAC,kBAAkB;IAS1B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,SAAS;IAgCX,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAgBhD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiC1D,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqDjD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAK1C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAqB9C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAkFxF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAyD5E,KAAK,IAAI,IAAI;IAIb;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,iBAAiB;CAqB1B"}
|