@agentshouse/mdruntime 0.1.0-alpha.2 → 0.1.0-alpha.21
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/AGENTS.md +87 -0
- package/dist/adapter.d.ts +145 -28
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +2 -1
- package/dist/adapter.js.map +1 -1
- package/dist/bootstrap.d.ts +11 -13
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +25 -24
- package/dist/bootstrap.js.map +1 -1
- package/dist/change-set.d.ts +33 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/change-set.js +74 -0
- package/dist/change-set.js.map +1 -0
- package/dist/change.d.ts +70 -0
- package/dist/change.d.ts.map +1 -0
- package/dist/change.js +12 -0
- package/dist/change.js.map +1 -0
- package/dist/client.d.ts +66 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +229 -0
- package/dist/client.js.map +1 -0
- package/dist/collection.d.ts +25 -3
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +97 -25
- package/dist/collection.js.map +1 -1
- package/dist/connection.d.ts +87 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1653 -70
- package/dist/connection.js.map +1 -1
- package/dist/conversation.d.ts +57 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +404 -0
- package/dist/conversation.js.map +1 -0
- package/dist/durability.d.ts +9 -0
- package/dist/durability.d.ts.map +1 -0
- package/dist/durability.js +11 -0
- package/dist/durability.js.map +1 -0
- package/dist/file.d.ts +20 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +149 -0
- package/dist/file.js.map +1 -0
- package/dist/host.d.ts +13 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +229 -0
- package/dist/host.js.map +1 -0
- package/dist/identity.d.ts +2 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +16 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts +5 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +15 -0
- package/dist/log.js.map +1 -0
- package/dist/memory.d.ts +17 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +264 -21
- package/dist/memory.js.map +1 -1
- package/dist/model.d.ts +70 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +28 -0
- package/dist/model.js.map +1 -0
- package/dist/outcome.d.ts +37 -0
- package/dist/outcome.d.ts.map +1 -0
- package/dist/outcome.js +23 -0
- package/dist/outcome.js.map +1 -0
- package/dist/overlay.d.ts +10 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +245 -0
- package/dist/overlay.js.map +1 -0
- package/dist/paths.d.ts +6 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +47 -0
- package/dist/paths.js.map +1 -0
- package/dist/query.d.ts +13 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +18 -0
- package/dist/query.js.map +1 -0
- package/dist/refresh.d.ts +14 -0
- package/dist/refresh.d.ts.map +1 -0
- package/dist/refresh.js +65 -0
- package/dist/refresh.js.map +1 -0
- package/dist/replica.d.ts +33 -0
- package/dist/replica.d.ts.map +1 -0
- package/dist/replica.js +134 -0
- package/dist/replica.js.map +1 -0
- package/dist/save.d.ts +35 -0
- package/dist/save.d.ts.map +1 -0
- package/dist/save.js +561 -0
- package/dist/save.js.map +1 -0
- package/dist/status.d.ts +25 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +32 -0
- package/dist/status.js.map +1 -0
- package/dist/store.d.ts +86 -4
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +394 -9
- package/dist/store.js.map +1 -1
- package/dist/transfer.d.ts +5 -0
- package/dist/transfer.d.ts.map +1 -0
- package/dist/transfer.js +5 -0
- package/dist/transfer.js.map +1 -0
- package/dist/wire.d.ts +63 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +142 -0
- package/dist/wire.js.map +1 -0
- package/package.json +13 -4
package/dist/collection.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { parse, validate, VERSION } from '@agentshouse/mdmodel';
|
|
2
|
-
|
|
3
|
-
const DEFINITION = 'definition';
|
|
2
|
+
import { beneath, normalize } from './paths.js';
|
|
4
3
|
export const MD_MODEL = {
|
|
5
4
|
identity: '@agentshouse/mdmodel',
|
|
6
5
|
version: VERSION
|
|
@@ -10,39 +9,112 @@ export const PRESENTED = {
|
|
|
10
9
|
$regex: '\\.md$'
|
|
11
10
|
}
|
|
12
11
|
};
|
|
13
|
-
function
|
|
14
|
-
return
|
|
12
|
+
function selected(composition, path) {
|
|
13
|
+
return composition.selection !== null && composition.selection.roots.some((root)=>beneath(root, path));
|
|
15
14
|
}
|
|
16
|
-
function
|
|
17
|
-
return
|
|
15
|
+
export function governing(composition, path) {
|
|
16
|
+
return composition.selection !== null && selected(composition, path) ? composition.selection.model : composition.model;
|
|
18
17
|
}
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
path,
|
|
23
|
-
fields: declaredIn(document, 'fields'),
|
|
24
|
-
sections: declaredIn(document, 'sections')
|
|
25
|
-
};
|
|
18
|
+
export function typesAt(composition, path) {
|
|
19
|
+
const model = governing(composition, path);
|
|
20
|
+
return model.status === 'unavailable' ? [] : model.types;
|
|
26
21
|
}
|
|
27
|
-
export function
|
|
22
|
+
export function parseCollection(text, composition, previous) {
|
|
28
23
|
const documents = {};
|
|
29
24
|
for (const path of Object.keys(text).sort()){
|
|
25
|
+
const retained = previous?.collection.documents[path];
|
|
26
|
+
if (retained !== undefined && previous?.text[path] === text[path]) {
|
|
27
|
+
documents[path] = retained;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
30
|
const parsed = parse(text[path], path);
|
|
31
|
-
if (
|
|
32
|
-
documents[path] = parsed.document;
|
|
33
|
-
}
|
|
34
|
-
if (validate(text, {
|
|
35
|
-
binaryTargets
|
|
36
|
-
}).verdict === 'refuse') return null;
|
|
37
|
-
const types = [];
|
|
38
|
-
for (const [path, document] of Object.entries(documents)){
|
|
39
|
-
if (!isMarkdown(path) || document.type !== DEFINITION) continue;
|
|
40
|
-
types.push(mdType(path, document));
|
|
31
|
+
if (parsed.ok) documents[path] = parsed.document;
|
|
41
32
|
}
|
|
42
33
|
return {
|
|
43
34
|
documents,
|
|
44
|
-
|
|
35
|
+
composition
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function readCollection(text, composition, previous) {
|
|
39
|
+
if (!validRoot(composition.collectionRoot)) return null;
|
|
40
|
+
const collection = parseCollection(text, composition, previous);
|
|
41
|
+
if (Object.keys(collection.documents).length !== Object.keys(text).length) return null;
|
|
42
|
+
if (Object.entries(collection.documents).some(([path, document])=>!member(path, composition.collectionRoot) && !selected(composition, path) && document.type !== undefined && document.type !== 'any')) return null;
|
|
43
|
+
return collection;
|
|
44
|
+
}
|
|
45
|
+
export function validRoot(root) {
|
|
46
|
+
return typeof root === 'string' && normalize(root) === root;
|
|
47
|
+
}
|
|
48
|
+
function member(path, root) {
|
|
49
|
+
return root === '' || path.startsWith(`${root}/`);
|
|
50
|
+
}
|
|
51
|
+
function validateAgainst(documents, binaryTargets, prefix, model, binding) {
|
|
52
|
+
if (model.status === 'unavailable' || binding === null) {
|
|
53
|
+
const typed = Object.entries(documents).find(([, content])=>{
|
|
54
|
+
const parsed = parse(content);
|
|
55
|
+
return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';
|
|
56
|
+
});
|
|
57
|
+
if (typed !== undefined) return {
|
|
58
|
+
verdict: 'refuse',
|
|
59
|
+
rule: 'model-unavailable',
|
|
60
|
+
file: `${prefix}${typed[0]}`,
|
|
61
|
+
version: VERSION
|
|
62
|
+
};
|
|
63
|
+
return validate(documents, {
|
|
64
|
+
binaryTargets
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const verdict = binding.validate({
|
|
68
|
+
model: model.snapshot,
|
|
69
|
+
documents,
|
|
70
|
+
binaryTargets
|
|
71
|
+
});
|
|
72
|
+
if (verdict.verdict === 'refuse' && verdict.source === 'model') return verdict;
|
|
73
|
+
if (verdict.verdict === 'accept') return verdict;
|
|
74
|
+
return {
|
|
75
|
+
...verdict,
|
|
76
|
+
file: `${prefix}${verdict.file}`,
|
|
77
|
+
...verdict.referrers === undefined ? {} : {
|
|
78
|
+
referrers: verdict.referrers.map((path)=>`${prefix}${path}`)
|
|
79
|
+
}
|
|
45
80
|
};
|
|
46
81
|
}
|
|
82
|
+
export function validateCollection(text, binaryTargets, composition, binding) {
|
|
83
|
+
const prefix = composition.collectionRoot === '' ? '' : `${composition.collectionRoot}/`;
|
|
84
|
+
const collection = {};
|
|
85
|
+
const selection = {};
|
|
86
|
+
for (const [path, content] of Object.entries(text)){
|
|
87
|
+
if (member(path, composition.collectionRoot)) {
|
|
88
|
+
collection[path.slice(prefix.length)] = content;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (selected(composition, path)) {
|
|
92
|
+
selection[path] = content;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const parsed = parse(content, path);
|
|
96
|
+
if (!parsed.ok) return {
|
|
97
|
+
verdict: 'refuse',
|
|
98
|
+
...parsed.refusal
|
|
99
|
+
};
|
|
100
|
+
if (Object.hasOwn(parsed.document.fields, 'type') && parsed.document.fields.type !== 'any') {
|
|
101
|
+
return {
|
|
102
|
+
verdict: 'refuse',
|
|
103
|
+
rule: 'outside-collection-type',
|
|
104
|
+
file: path,
|
|
105
|
+
version: VERSION
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const verdicts = [
|
|
110
|
+
validateAgainst(collection, binaryTargets.filter((path)=>member(path, composition.collectionRoot)).map((path)=>path.slice(prefix.length)), prefix, composition.model, binding)
|
|
111
|
+
];
|
|
112
|
+
if (composition.selection !== null) {
|
|
113
|
+
verdicts.push(validateAgainst(selection, binaryTargets.filter((path)=>selected(composition, path)), '', composition.selection.model, binding));
|
|
114
|
+
}
|
|
115
|
+
const refusals = verdicts.filter((verdict)=>verdict.verdict === 'refuse');
|
|
116
|
+
if (refusals.length === 0) return verdicts[0];
|
|
117
|
+
return refusals.find((refusal)=>refusal.rule !== 'model-unavailable') ?? refusals[0];
|
|
118
|
+
}
|
|
47
119
|
|
|
48
120
|
//# sourceMappingURL=collection.js.map
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/collection.ts"],"sourcesContent":["import { parse, validate, VERSION, type Document } from '@agentshouse/mdmodel';\nimport type { Selector } from '@agentshouse/query';\nimport type { MdModelIdentity } from './adapter.js';\n\nconst MARKDOWN = '.md';\nconst DEFINITION = 'definition';\n\nexport const MD_MODEL: MdModelIdentity = { identity: '@agentshouse/mdmodel', version: VERSION };\n\nexport const PRESENTED: Selector = { path: { $regex: '\\\\.md$' } };\n\nexport type MdType = {\n name: string;\n path: string;\n fields: Readonly<Record<string, unknown>>;\n sections: Readonly<Record<string, unknown>>;\n};\n\nexport type Collection = {\n documents: Readonly<Record<string, Document>>;\n types: readonly MdType[];\n};\n\nfunction isMarkdown(path: string) {\n return path.endsWith(MARKDOWN);\n}\n\nfunction declaredIn(document: Document, part: 'fields' | 'sections') {\n return (document.fields[part] ?? {}) as Readonly<Record<string, unknown>>;\n}\n\nfunction mdType(path: string, document: Document): MdType {\n return {\n name: path.slice(path.lastIndexOf('/') + 1, -MARKDOWN.length),\n path,\n fields: declaredIn(document, 'fields'),\n sections: declaredIn(document, 'sections'),\n };\n}\n\nexport function readCollection(\n text: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n): Collection | null {\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n const parsed = parse(text[path], path);\n if (!parsed.ok) return null;\n documents[path] = parsed.document;\n }\n if (validate(text, { binaryTargets }).verdict === 'refuse') return null;\n const types: MdType[] = [];\n for (const [path, document] of Object.entries(documents)) {\n if (!isMarkdown(path) || document.type !== DEFINITION) continue;\n types.push(mdType(path, document));\n }\n return { documents, types };\n}\n"],"names":["parse","validate","VERSION","MARKDOWN","DEFINITION","MD_MODEL","identity","version","PRESENTED","path","$regex","isMarkdown","endsWith","declaredIn","document","part","fields","mdType","name","slice","lastIndexOf","length","sections","readCollection","text","binaryTargets","documents","Object","keys","sort","parsed","ok","verdict","types","entries","type","push"],"mappings":"AAAA,SAASA,KAAK,EAAEC,QAAQ,EAAEC,OAAO,QAAuB,uBAAuB;AAI/E,MAAMC,WAAW;AACjB,MAAMC,aAAa;AAEnB,OAAO,MAAMC,WAA4B;IAAEC,UAAU;IAAwBC,SAASL;AAAQ,EAAE;AAEhG,OAAO,MAAMM,YAAsB;IAAEC,MAAM;QAAEC,QAAQ;IAAS;AAAE,EAAE;AAclE,SAASC,WAAWF,IAAY;IAC9B,OAAOA,KAAKG,QAAQ,CAACT;AACvB;AAEA,SAASU,WAAWC,QAAkB,EAAEC,IAA2B;IACjE,OAAQD,SAASE,MAAM,CAACD,KAAK,IAAI,CAAC;AACpC;AAEA,SAASE,OAAOR,IAAY,EAAEK,QAAkB;IAC9C,OAAO;QACLI,MAAMT,KAAKU,KAAK,CAACV,KAAKW,WAAW,CAAC,OAAO,GAAG,CAACjB,SAASkB,MAAM;QAC5DZ;QACAO,QAAQH,WAAWC,UAAU;QAC7BQ,UAAUT,WAAWC,UAAU;IACjC;AACF;AAEA,OAAO,SAASS,eACdC,IAAsC,EACtCC,aAAgC;IAEhC,MAAMC,YAAsC,CAAC;IAC7C,KAAK,MAAMjB,QAAQkB,OAAOC,IAAI,CAACJ,MAAMK,IAAI,GAAI;QAC3C,MAAMC,SAAS9B,MAAMwB,IAAI,CAACf,KAAK,EAAEA;QACjC,IAAI,CAACqB,OAAOC,EAAE,EAAE,OAAO;QACvBL,SAAS,CAACjB,KAAK,GAAGqB,OAAOhB,QAAQ;IACnC;IACA,IAAIb,SAASuB,MAAM;QAAEC;IAAc,GAAGO,OAAO,KAAK,UAAU,OAAO;IACnE,MAAMC,QAAkB,EAAE;IAC1B,KAAK,MAAM,CAACxB,MAAMK,SAAS,IAAIa,OAAOO,OAAO,CAACR,WAAY;QACxD,IAAI,CAACf,WAAWF,SAASK,SAASqB,IAAI,KAAK/B,YAAY;QACvD6B,MAAMG,IAAI,CAACnB,OAAOR,MAAMK;IAC1B;IACA,OAAO;QAAEY;QAAWO;IAAM;AAC5B"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/collection.ts"],"sourcesContent":["import { parse, validate, VERSION, type Document, type Validation } from '@agentshouse/mdmodel';\nimport type { Selector } from '@agentshouse/query';\nimport { beneath, normalize } from './paths.js';\nimport type { AttachedModelBinding, ModelState } from './model.js';\nimport type { MdModelIdentity } from './adapter.js';\n\nexport const MD_MODEL: MdModelIdentity = { identity: '@agentshouse/mdmodel', version: VERSION };\n\nexport const PRESENTED: Selector = { path: { $regex: '\\\\.md$' } };\n\nexport type MdType = {\n name: string;\n path: string;\n fields: Readonly<Record<string, unknown>>;\n sections: Readonly<Record<string, unknown>>;\n};\n\nexport type Collection = {\n documents: Readonly<Record<string, Document>>;\n composition: Composition;\n};\n\nexport type Composition = {\n collectionRoot: string;\n model: ModelState;\n selection: { roots: readonly string[]; model: ModelState } | null;\n};\n\nfunction selected(composition: Composition, path: string): boolean {\n return (\n composition.selection !== null &&\n composition.selection.roots.some((root) => beneath(root, path))\n );\n}\n\nexport function governing(composition: Composition, path: string): ModelState {\n return composition.selection !== null && selected(composition, path)\n ? composition.selection.model\n : composition.model;\n}\n\nexport function typesAt(composition: Composition, path: string): readonly MdType[] {\n const model = governing(composition, path);\n return model.status === 'unavailable' ? [] : model.types;\n}\n\nexport function parseCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: { text: Readonly<Record<string, string>>; collection: Collection },\n): Collection {\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n const retained = previous?.collection.documents[path];\n if (retained !== undefined && previous?.text[path] === text[path]) {\n documents[path] = retained;\n continue;\n }\n const parsed = parse(text[path], path);\n if (parsed.ok) documents[path] = parsed.document;\n }\n return { documents, composition };\n}\n\nexport function readCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: { text: Readonly<Record<string, string>>; collection: Collection },\n): Collection | null {\n if (!validRoot(composition.collectionRoot)) return null;\n const collection = parseCollection(text, composition, previous);\n if (Object.keys(collection.documents).length !== Object.keys(text).length) return null;\n if (\n Object.entries(collection.documents).some(\n ([path, document]) =>\n !member(path, composition.collectionRoot) &&\n !selected(composition, path) &&\n document.type !== undefined &&\n document.type !== 'any',\n )\n )\n return null;\n return collection;\n}\n\nexport function validRoot(root: unknown): root is string {\n return typeof root === 'string' && normalize(root) === root;\n}\n\nfunction member(path: string, root: string): boolean {\n return root === '' || path.startsWith(`${root}/`);\n}\n\ntype Refusal = Extract<Validation, { verdict: 'refuse' }> & { source?: 'content' | 'model' };\n\nfunction validateAgainst(\n documents: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n prefix: string,\n model: ModelState,\n binding: AttachedModelBinding | null,\n): Validation & { source?: 'content' | 'model' } {\n if (model.status === 'unavailable' || binding === null) {\n const typed = Object.entries(documents).find(([, content]) => {\n const parsed = parse(content);\n return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';\n });\n if (typed !== undefined)\n return {\n verdict: 'refuse',\n rule: 'model-unavailable',\n file: `${prefix}${typed[0]}`,\n version: VERSION,\n };\n return validate(documents, { binaryTargets });\n }\n const verdict = binding.validate({ model: model.snapshot, documents, binaryTargets });\n if (verdict.verdict === 'refuse' && verdict.source === 'model') return verdict;\n if (verdict.verdict === 'accept') return verdict;\n return {\n ...verdict,\n file: `${prefix}${verdict.file}`,\n ...(verdict.referrers === undefined\n ? {}\n : { referrers: verdict.referrers.map((path) => `${prefix}${path}`) }),\n };\n}\n\nexport function validateCollection(\n text: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n composition: Composition,\n binding: AttachedModelBinding | null,\n): Validation & { source?: 'content' | 'model' } {\n const prefix = composition.collectionRoot === '' ? '' : `${composition.collectionRoot}/`;\n const collection: Record<string, string> = {};\n const selection: Record<string, string> = {};\n for (const [path, content] of Object.entries(text)) {\n if (member(path, composition.collectionRoot)) {\n collection[path.slice(prefix.length)] = content;\n continue;\n }\n if (selected(composition, path)) {\n selection[path] = content;\n continue;\n }\n const parsed = parse(content, path);\n if (!parsed.ok) return { verdict: 'refuse', ...parsed.refusal };\n if (Object.hasOwn(parsed.document.fields, 'type') && parsed.document.fields.type !== 'any') {\n return { verdict: 'refuse', rule: 'outside-collection-type', file: path, version: VERSION };\n }\n }\n const verdicts = [\n validateAgainst(\n collection,\n binaryTargets\n .filter((path) => member(path, composition.collectionRoot))\n .map((path) => path.slice(prefix.length)),\n prefix,\n composition.model,\n binding,\n ),\n ];\n if (composition.selection !== null) {\n verdicts.push(\n validateAgainst(\n selection,\n binaryTargets.filter((path) => selected(composition, path)),\n '',\n composition.selection.model,\n binding,\n ),\n );\n }\n const refusals = verdicts.filter((verdict): verdict is Refusal => verdict.verdict === 'refuse');\n if (refusals.length === 0) return verdicts[0];\n return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];\n}\n"],"names":["parse","validate","VERSION","beneath","normalize","MD_MODEL","identity","version","PRESENTED","path","$regex","selected","composition","selection","roots","some","root","governing","model","typesAt","status","types","parseCollection","text","previous","documents","Object","keys","sort","retained","collection","undefined","parsed","ok","document","readCollection","validRoot","collectionRoot","length","entries","member","type","startsWith","validateAgainst","binaryTargets","prefix","binding","typed","find","content","verdict","rule","file","snapshot","source","referrers","map","validateCollection","slice","refusal","hasOwn","fields","verdicts","filter","push","refusals"],"mappings":"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"}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,34 +1,116 @@
|
|
|
1
|
+
import { type QueryBinding } from './query.js';
|
|
2
|
+
import { type AttachedModelBinding, type TypesResult } from './model.js';
|
|
1
3
|
import { type QueryOptions, type QueryResult } from '@agentshouse/query';
|
|
2
|
-
import { type Adapter, type Authorization } from './adapter.js';
|
|
3
|
-
import { type
|
|
4
|
+
import { type Adapter, type Authorization, type HistoryResult, type ProviderRefusal } from './adapter.js';
|
|
5
|
+
import { type ConversationSurface, type ConversationView } from './conversation.js';
|
|
6
|
+
import type { Change, WrittenBy } from './change.js';
|
|
7
|
+
import { type CallResult, type QueueEntry, type SubmissionOutcome } from './outcome.js';
|
|
8
|
+
import { type SaveRefusal } from './save.js';
|
|
9
|
+
import { type SyncStatus } from './status.js';
|
|
10
|
+
import { type RuntimeShell } from './durability.js';
|
|
11
|
+
export type AppTypedSelection = {
|
|
12
|
+
roots: readonly string[];
|
|
13
|
+
attachedModel: import('./model.js').ModelIdentity | null;
|
|
14
|
+
model: TypesResult;
|
|
15
|
+
};
|
|
4
16
|
export type AppRoom = {
|
|
17
|
+
collectionRoot: string;
|
|
5
18
|
name: string;
|
|
6
19
|
locator: string;
|
|
7
|
-
|
|
20
|
+
operations: import('./adapter.js').OperationScopes;
|
|
21
|
+
replica: import('./adapter.js').ReplicaAdmission;
|
|
22
|
+
attachedModel: import('./model.js').ModelIdentity | null;
|
|
23
|
+
model: TypesResult;
|
|
24
|
+
typedSelection: AppTypedSelection | null;
|
|
8
25
|
providerOwnedPaths: readonly string[];
|
|
9
26
|
roomVersion: string | null;
|
|
10
27
|
synchronizationAvailable: boolean;
|
|
28
|
+
refusal: ProviderRefusal | null;
|
|
29
|
+
};
|
|
30
|
+
export type AppSlotEntry = {
|
|
31
|
+
room: AppRoom;
|
|
32
|
+
segment: string | null;
|
|
33
|
+
};
|
|
34
|
+
export type AppSlot = {
|
|
35
|
+
slot: string;
|
|
36
|
+
entries: readonly AppSlotEntry[];
|
|
11
37
|
};
|
|
12
|
-
export type
|
|
38
|
+
export type RoomTypes = {
|
|
39
|
+
collection: TypesResult;
|
|
40
|
+
typedSelection: TypesResult | null;
|
|
41
|
+
};
|
|
42
|
+
export type ConnectionRefusalReason = 'no-matching-version' | 'missing-required-guarantee' | 'md-model-version-mismatch' | 'revoked-authorization' | 'client-host-protocol-mismatch';
|
|
13
43
|
export type ConnectionRefusal = {
|
|
14
44
|
reason: ConnectionRefusalReason;
|
|
15
45
|
reauthorizationOffered: boolean;
|
|
46
|
+
refusal: ProviderRefusal | null;
|
|
16
47
|
};
|
|
17
48
|
export type MdRuntimeOptions = {
|
|
18
49
|
adapter: Adapter;
|
|
50
|
+
shell: RuntimeShell;
|
|
51
|
+
modelBinding: AttachedModelBinding | null;
|
|
52
|
+
queryBinding: QueryBinding | null;
|
|
19
53
|
requiredGuarantees: readonly string[];
|
|
20
54
|
authorization?: Authorization;
|
|
21
55
|
discoveryIntervalMs?: number;
|
|
22
56
|
signal?: AbortSignal;
|
|
23
57
|
};
|
|
58
|
+
export type SaveResult = {
|
|
59
|
+
outcome: 'saved';
|
|
60
|
+
id: string;
|
|
61
|
+
} | ({
|
|
62
|
+
outcome: 'refused';
|
|
63
|
+
} & SaveRefusal);
|
|
64
|
+
export type DraftEntry = {
|
|
65
|
+
readonly locator: string;
|
|
66
|
+
readonly path: string;
|
|
67
|
+
readonly content: unknown;
|
|
68
|
+
};
|
|
69
|
+
export type DraftSurface = {
|
|
70
|
+
list(): Promise<readonly DraftEntry[]>;
|
|
71
|
+
read(locator: string, path: string): unknown;
|
|
72
|
+
replace(locator: string, path: string, content: unknown): Promise<void>;
|
|
73
|
+
discard(locator: string, path: string): Promise<void>;
|
|
74
|
+
};
|
|
75
|
+
export type QueueSurface = {
|
|
76
|
+
discard(locator: string, identifier: string): Promise<void>;
|
|
77
|
+
};
|
|
78
|
+
export type PresentationSurface = {
|
|
79
|
+
read(app: string): Promise<unknown>;
|
|
80
|
+
write(app: string, value: unknown): Promise<void>;
|
|
81
|
+
};
|
|
82
|
+
export type HistoryQuery = {
|
|
83
|
+
revision?: string;
|
|
84
|
+
pageToken?: string;
|
|
85
|
+
};
|
|
24
86
|
export type MdRuntime = {
|
|
87
|
+
loaded(): Promise<void>;
|
|
25
88
|
rooms(): readonly AppRoom[];
|
|
89
|
+
slots(): readonly AppSlot[];
|
|
26
90
|
query(options?: QueryOptions): QueryResult;
|
|
27
|
-
types(locator: string):
|
|
91
|
+
types(locator: string): RoomTypes;
|
|
92
|
+
syncStatus(): SyncStatus;
|
|
93
|
+
draft: DraftSurface;
|
|
94
|
+
conversation: ConversationSurface;
|
|
95
|
+
presentation: PresentationSurface;
|
|
96
|
+
save(locator: string, changes: readonly Change[], replacing?: string, writtenBy?: WrittenBy): Promise<SaveResult>;
|
|
97
|
+
outcome(identifier: string): SubmissionOutcome | null;
|
|
98
|
+
queue: QueueSurface;
|
|
99
|
+
history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryResult>;
|
|
100
|
+
call(name: string, input: unknown): Promise<CallResult>;
|
|
101
|
+
log(): string;
|
|
102
|
+
storageLoss(): string | null;
|
|
103
|
+
persistence(): boolean;
|
|
28
104
|
observe: {
|
|
29
105
|
(topic: 'rooms', listener: (rooms: readonly AppRoom[]) => void): () => void;
|
|
30
106
|
(topic: 'connection-refusal', listener: (refusal: ConnectionRefusal | null) => void): () => void;
|
|
107
|
+
(topic: 'storage-loss', listener: (statement: string | null) => void): () => void;
|
|
108
|
+
(topic: 'sync-status', listener: (status: SyncStatus) => void): () => void;
|
|
31
109
|
(topic: 'query', query: QueryOptions, listener: (result: QueryResult) => void): () => void;
|
|
110
|
+
(topic: 'queue', locator: string, listener: (entries: readonly QueueEntry[]) => void): () => void;
|
|
111
|
+
(topic: 'drafts', listener: (drafts: readonly DraftEntry[]) => void): () => void;
|
|
112
|
+
(topic: 'presentation', app: string, listener: (value: unknown) => void): () => void;
|
|
113
|
+
(topic: 'conversation', conversation: string, listener: (view: ConversationView) => void): () => void;
|
|
32
114
|
};
|
|
33
115
|
reauthorize(): Promise<void>;
|
|
34
116
|
};
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|