@agentshouse/mdruntime 0.1.0-alpha.2 → 0.1.0-alpha.4
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/adapter.d.ts +33 -14
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js.map +1 -1
- package/dist/bootstrap.d.ts +5 -12
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +13 -20
- package/dist/bootstrap.js.map +1 -1
- package/dist/change.d.ts +64 -0
- package/dist/change.d.ts.map +1 -0
- package/dist/change.js +12 -0
- package/dist/change.js.map +1 -0
- package/dist/collection.d.ts +1 -0
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +10 -6
- package/dist/collection.js.map +1 -1
- package/dist/connection.d.ts +36 -1
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +657 -38
- package/dist/connection.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- 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 +1 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +69 -7
- package/dist/memory.js.map +1 -1
- package/dist/outcome.d.ts +30 -0
- package/dist/outcome.d.ts.map +1 -0
- package/dist/outcome.js +13 -0
- package/dist/outcome.js.map +1 -0
- package/dist/overlay.d.ts +8 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +139 -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/refresh.d.ts +13 -0
- package/dist/refresh.d.ts.map +1 -0
- package/dist/refresh.js +63 -0
- package/dist/refresh.js.map +1 -0
- package/dist/replica.d.ts +20 -0
- package/dist/replica.d.ts.map +1 -0
- package/dist/replica.js +61 -0
- package/dist/replica.js.map +1 -0
- package/dist/save.d.ts +26 -0
- package/dist/save.d.ts.map +1 -0
- package/dist/save.js +496 -0
- package/dist/save.js.map +1 -0
- package/dist/status.d.ts +16 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +31 -0
- package/dist/status.js.map +1 -0
- package/dist/store.d.ts +24 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +82 -2
- 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/package.json +3 -3
package/dist/adapter.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ChangeBatch } from './change.js';
|
|
1
2
|
export type Authorization = object;
|
|
2
3
|
export declare const ROOM_CONTRACT_VERSION = 1;
|
|
3
4
|
export declare const VERSION_1_CAPABILITIES: readonly ['stable-file-ids', 'ranked-provider-search', 'room-version-notifications', 'room-history', 'provider-actions'];
|
|
@@ -62,6 +63,7 @@ export type BootstrapPage = {
|
|
|
62
63
|
kind: 'bootstrap';
|
|
63
64
|
roomVersion: string;
|
|
64
65
|
documents: Readonly<Record<string, string>>;
|
|
66
|
+
revisions: Readonly<Record<string, string>>;
|
|
65
67
|
binaryTargets: readonly string[];
|
|
66
68
|
pageToken?: PageToken;
|
|
67
69
|
};
|
|
@@ -71,47 +73,64 @@ export type RefreshRequest = {
|
|
|
71
73
|
fromRoomVersion: string;
|
|
72
74
|
pageToken?: PageToken;
|
|
73
75
|
};
|
|
74
|
-
export type
|
|
75
|
-
kind: 'still-current';
|
|
76
|
-
} | {
|
|
76
|
+
export type RefreshPage = {
|
|
77
77
|
kind: 'net-advancement';
|
|
78
78
|
roomVersion: string;
|
|
79
|
+
documents: Readonly<Record<string, string>>;
|
|
80
|
+
revisions: Readonly<Record<string, string>>;
|
|
81
|
+
binaryTargets: readonly string[];
|
|
82
|
+
removals: readonly string[];
|
|
79
83
|
pageToken?: PageToken;
|
|
80
|
-
}
|
|
84
|
+
};
|
|
85
|
+
export type RefreshResult = {
|
|
86
|
+
kind: 'still-current';
|
|
87
|
+
} | RefreshPage | {
|
|
81
88
|
kind: 'beyond-horizon';
|
|
82
89
|
} | AdapterFailure;
|
|
83
90
|
export type MutationRequest = {
|
|
84
91
|
locator: string;
|
|
85
|
-
changeBatch:
|
|
86
|
-
id: string;
|
|
87
|
-
baseRoomVersion: string;
|
|
88
|
-
changes: readonly unknown[];
|
|
89
|
-
preconditions: readonly unknown[];
|
|
90
|
-
};
|
|
92
|
+
changeBatch: ChangeBatch;
|
|
91
93
|
};
|
|
92
94
|
export type MutationResult = {
|
|
93
95
|
kind: 'accepted';
|
|
94
96
|
roomVersion: string;
|
|
97
|
+
documents: Readonly<Record<string, string>>;
|
|
98
|
+
revisions: Readonly<Record<string, string>>;
|
|
99
|
+
removals: readonly string[];
|
|
100
|
+
author: string;
|
|
101
|
+
time: string;
|
|
95
102
|
} | {
|
|
96
103
|
kind: 'conflicted';
|
|
97
104
|
roomVersion: string;
|
|
105
|
+
affected: Readonly<Record<string, string>>;
|
|
98
106
|
text: string;
|
|
99
107
|
} | {
|
|
100
108
|
kind: 'rejected';
|
|
109
|
+
affected: Readonly<Record<string, string>>;
|
|
101
110
|
text: string;
|
|
111
|
+
} | {
|
|
112
|
+
kind: 'expired';
|
|
102
113
|
} | AdapterFailure;
|
|
114
|
+
export type HistoryRevision = {
|
|
115
|
+
revision: string;
|
|
116
|
+
author: string;
|
|
117
|
+
time: string;
|
|
118
|
+
};
|
|
103
119
|
export type HistoryRequest = {
|
|
104
120
|
locator: string;
|
|
105
121
|
path: string;
|
|
122
|
+
revision?: string;
|
|
106
123
|
pageToken?: PageToken;
|
|
107
124
|
};
|
|
108
125
|
export type HistoryResult = {
|
|
109
126
|
kind: 'history';
|
|
110
|
-
revisions: readonly
|
|
111
|
-
author: string;
|
|
112
|
-
time: string;
|
|
113
|
-
}[];
|
|
127
|
+
revisions: readonly HistoryRevision[];
|
|
114
128
|
pageToken?: PageToken;
|
|
129
|
+
} | {
|
|
130
|
+
kind: 'revision';
|
|
131
|
+
content: string;
|
|
132
|
+
} | {
|
|
133
|
+
kind: 'no-history';
|
|
115
134
|
} | AdapterFailure;
|
|
116
135
|
export type ActionRequest = {
|
|
117
136
|
name: string;
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,eAAO,MAAM,sBAAsB,YACjC,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,cAAc,EACd,kBAAkB,CACV,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IACpC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAE3F,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAErF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/adapter.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/adapter.ts"],"sourcesContent":["import type { ChangeBatch } from './change.js';\n\nexport type Authorization = object;\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const VERSION_1_CAPABILITIES = [\n 'stable-file-ids',\n 'ranked-provider-search',\n 'room-version-notifications',\n 'room-history',\n 'provider-actions',\n] as const;\n\nexport type MdModelIdentity = {\n identity: string;\n version: string;\n};\n\nexport type DiscoveredRoom = {\n name: string;\n locator: string;\n roomVersion: string;\n writeGrants: readonly string[];\n providerOwnedPaths: readonly string[];\n};\n\nexport type Capability = {\n name: string;\n limits?: readonly ProviderLimit[];\n actions?: readonly ActionDeclaration[];\n};\n\nexport type ActionDeclaration = {\n name: string;\n inputShape: unknown;\n resultKind: unknown;\n};\n\nexport type ProviderLimit = {\n name: string;\n value?: number | string;\n};\n\nexport type Retention = {\n history: number;\n outcome: number;\n refreshHorizon: number;\n};\n\nexport type Discovery = {\n kind: 'discovery';\n supportedVersions: readonly number[];\n mdModel: MdModelIdentity;\n rooms: readonly DiscoveredRoom[];\n capabilities: readonly Capability[];\n providerLimits: readonly ProviderLimit[];\n retention: Retention;\n origins: readonly string[];\n};\n\nexport type TransportUncertainty = { kind: 'transport-uncertainty' };\nexport type RoomNotReadable = { kind: 'room-not-readable'; locator: string };\nexport type RevokedAuthorization = { kind: 'revoked-authorization' };\n\nexport type AdapterFailure = TransportUncertainty | RoomNotReadable | RevokedAuthorization;\n\nexport type DiscoverResult = Discovery | TransportUncertainty | RevokedAuthorization;\n\nexport type PageToken = string;\n\nexport type BootstrapRequest = {\n locator: string;\n pageToken?: PageToken;\n};\n\nexport type BootstrapPage = {\n kind: 'bootstrap';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n binaryTargets: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type BootstrapResult = BootstrapPage | AdapterFailure;\n\nexport type RefreshRequest = {\n locator: string;\n fromRoomVersion: string;\n pageToken?: PageToken;\n};\n\nexport type RefreshPage = {\n kind: 'net-advancement';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n binaryTargets: readonly string[];\n removals: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type RefreshResult =\n | { kind: 'still-current' }\n | RefreshPage\n | { kind: 'beyond-horizon' }\n | AdapterFailure;\n\nexport type MutationRequest = {\n locator: string;\n changeBatch: ChangeBatch;\n};\n\nexport type MutationResult =\n | {\n kind: 'accepted';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n removals: readonly string[];\n author: string;\n time: string;\n }\n | {\n kind: 'conflicted';\n roomVersion: string;\n affected: Readonly<Record<string, string>>;\n text: string;\n }\n | {\n kind: 'rejected';\n affected: Readonly<Record<string, string>>;\n text: string;\n }\n | { kind: 'expired' }\n | AdapterFailure;\n\nexport type HistoryRevision = {\n revision: string;\n author: string;\n time: string;\n};\n\nexport type HistoryRequest = {\n locator: string;\n path: string;\n revision?: string;\n pageToken?: PageToken;\n};\n\nexport type HistoryResult =\n | {\n kind: 'history';\n revisions: readonly HistoryRevision[];\n pageToken?: PageToken;\n }\n | {\n kind: 'revision';\n content: string;\n }\n | { kind: 'no-history' }\n | AdapterFailure;\n\nexport type ActionRequest = {\n name: string;\n input: unknown;\n};\n\nexport type ActionResult =\n | { kind: 'action'; result: unknown }\n | { kind: 'rejected'; text: string }\n | AdapterFailure;\n\nexport type Adapter = {\n authorize(): Promise<Authorization>;\n discover(authorization: Authorization): Promise<DiscoverResult>;\n bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;\n refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;\n mutate(authorization: Authorization, request: MutationRequest): Promise<MutationResult>;\n history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;\n action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;\n};\n"],"names":["ROOM_CONTRACT_VERSION","VERSION_1_CAPABILITIES"],"mappings":"AAIA,OAAO,MAAMA,wBAAwB,EAAE;AAEvC,OAAO,MAAMC,yBAAyB;IACpC;IACA;IACA;IACA;IACA;CACD,CAAU"}
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import type { Adapter, Authorization, DiscoveredRoom
|
|
2
|
-
import { type
|
|
3
|
-
import type
|
|
4
|
-
export type StagedReplica = {
|
|
5
|
-
record: ReplicaRecord;
|
|
6
|
-
collection: Collection;
|
|
7
|
-
};
|
|
1
|
+
import type { Adapter, AdapterFailure, Authorization, DiscoveredRoom } from './adapter.js';
|
|
2
|
+
import { type ConfirmedLayer } from './replica.js';
|
|
3
|
+
import { type Unconfirmed } from './transfer.js';
|
|
8
4
|
export type BootstrapOutcome = {
|
|
9
5
|
kind: 'staged';
|
|
10
|
-
|
|
11
|
-
} |
|
|
12
|
-
kind: 'unconfirmed';
|
|
13
|
-
} | RoomNotReadable | RevokedAuthorization;
|
|
14
|
-
export declare function adoptReplica(record: ReplicaRecord): StagedReplica | null;
|
|
6
|
+
confirmed: ConfirmedLayer;
|
|
7
|
+
} | Unconfirmed | AdapterFailure;
|
|
15
8
|
export declare function bootstrapRoom(adapter: Adapter, authorization: Authorization, room: DiscoveredRoom): Promise<BootstrapOutcome>;
|
|
16
9
|
//# sourceMappingURL=bootstrap.d.ts.map
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAC7C,WAAW,GACX,cAAc,CAAC;AAEnB,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,gBAAgB,CAAC,CA4B3B"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,26 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
kind: 'unconfirmed'
|
|
4
|
-
};
|
|
5
|
-
function received(failure) {
|
|
6
|
-
return failure.kind === 'transport-uncertainty' ? unconfirmed : failure;
|
|
7
|
-
}
|
|
8
|
-
export function adoptReplica(record) {
|
|
9
|
-
const collection = readCollection(record.documents, record.binaryTargets);
|
|
10
|
-
return collection === null ? null : {
|
|
11
|
-
record,
|
|
12
|
-
collection
|
|
13
|
-
};
|
|
14
|
-
}
|
|
1
|
+
import { readConfirmed } from './replica.js';
|
|
2
|
+
import { unconfirmed } from './transfer.js';
|
|
15
3
|
export async function bootstrapRoom(adapter, authorization, room) {
|
|
16
4
|
const first = await adapter.bootstrap(authorization, {
|
|
17
5
|
locator: room.locator
|
|
18
6
|
});
|
|
19
|
-
if (first.kind !== 'bootstrap') return
|
|
7
|
+
if (first.kind !== 'bootstrap') return first;
|
|
20
8
|
const roomVersion = first.roomVersion;
|
|
21
9
|
const documents = {
|
|
22
10
|
...first.documents
|
|
23
11
|
};
|
|
12
|
+
const revisions = {
|
|
13
|
+
...first.revisions
|
|
14
|
+
};
|
|
24
15
|
const binaryTargets = new Set(first.binaryTargets);
|
|
25
16
|
let pageToken = first.pageToken;
|
|
26
17
|
while(pageToken !== undefined){
|
|
@@ -28,13 +19,14 @@ export async function bootstrapRoom(adapter, authorization, room) {
|
|
|
28
19
|
locator: room.locator,
|
|
29
20
|
pageToken
|
|
30
21
|
});
|
|
31
|
-
if (page.kind !== 'bootstrap') return
|
|
22
|
+
if (page.kind !== 'bootstrap') return page;
|
|
32
23
|
if (page.roomVersion !== roomVersion) return unconfirmed;
|
|
33
24
|
Object.assign(documents, page.documents);
|
|
25
|
+
Object.assign(revisions, page.revisions);
|
|
34
26
|
for (const target of page.binaryTargets)binaryTargets.add(target);
|
|
35
27
|
pageToken = page.pageToken;
|
|
36
28
|
}
|
|
37
|
-
const
|
|
29
|
+
const confirmed = readConfirmed({
|
|
38
30
|
locator: room.locator,
|
|
39
31
|
name: room.name,
|
|
40
32
|
writeGrants: room.writeGrants,
|
|
@@ -43,11 +35,12 @@ export async function bootstrapRoom(adapter, authorization, room) {
|
|
|
43
35
|
documents,
|
|
44
36
|
binaryTargets: [
|
|
45
37
|
...binaryTargets
|
|
46
|
-
].sort()
|
|
38
|
+
].sort(),
|
|
39
|
+
revisions
|
|
47
40
|
});
|
|
48
|
-
return
|
|
41
|
+
return confirmed === null ? unconfirmed : {
|
|
49
42
|
kind: 'staged',
|
|
50
|
-
|
|
43
|
+
confirmed
|
|
51
44
|
};
|
|
52
45
|
}
|
|
53
46
|
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/bootstrap.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/bootstrap.ts"],"sourcesContent":["import type { Adapter, AdapterFailure, Authorization, DiscoveredRoom } from './adapter.js';\nimport { readConfirmed, type ConfirmedLayer } from './replica.js';\nimport { unconfirmed, type Unconfirmed } from './transfer.js';\n\nexport type BootstrapOutcome =\n | { kind: 'staged'; confirmed: ConfirmedLayer }\n | Unconfirmed\n | AdapterFailure;\n\nexport async function bootstrapRoom(\n adapter: Adapter,\n authorization: Authorization,\n room: DiscoveredRoom,\n): Promise<BootstrapOutcome> {\n const first = await adapter.bootstrap(authorization, { locator: room.locator });\n if (first.kind !== 'bootstrap') return first;\n const roomVersion = first.roomVersion;\n const documents: Record<string, string> = { ...first.documents };\n const revisions: Record<string, string> = { ...first.revisions };\n const binaryTargets = new Set(first.binaryTargets);\n let pageToken = first.pageToken;\n while (pageToken !== undefined) {\n const page = await adapter.bootstrap(authorization, { locator: room.locator, pageToken });\n if (page.kind !== 'bootstrap') return page;\n if (page.roomVersion !== roomVersion) return unconfirmed;\n Object.assign(documents, page.documents);\n Object.assign(revisions, page.revisions);\n for (const target of page.binaryTargets) binaryTargets.add(target);\n pageToken = page.pageToken;\n }\n const confirmed = readConfirmed({\n locator: room.locator,\n name: room.name,\n writeGrants: room.writeGrants,\n providerOwnedPaths: room.providerOwnedPaths,\n roomVersion,\n documents,\n binaryTargets: [...binaryTargets].sort(),\n revisions,\n });\n return confirmed === null ? unconfirmed : { kind: 'staged', confirmed };\n}\n"],"names":["readConfirmed","unconfirmed","bootstrapRoom","adapter","authorization","room","first","bootstrap","locator","kind","roomVersion","documents","revisions","binaryTargets","Set","pageToken","undefined","page","Object","assign","target","add","confirmed","name","writeGrants","providerOwnedPaths","sort"],"mappings":"AACA,SAASA,aAAa,QAA6B,eAAe;AAClE,SAASC,WAAW,QAA0B,gBAAgB;AAO9D,OAAO,eAAeC,cACpBC,OAAgB,EAChBC,aAA4B,EAC5BC,IAAoB;IAEpB,MAAMC,QAAQ,MAAMH,QAAQI,SAAS,CAACH,eAAe;QAAEI,SAASH,KAAKG,OAAO;IAAC;IAC7E,IAAIF,MAAMG,IAAI,KAAK,aAAa,OAAOH;IACvC,MAAMI,cAAcJ,MAAMI,WAAW;IACrC,MAAMC,YAAoC;QAAE,GAAGL,MAAMK,SAAS;IAAC;IAC/D,MAAMC,YAAoC;QAAE,GAAGN,MAAMM,SAAS;IAAC;IAC/D,MAAMC,gBAAgB,IAAIC,IAAIR,MAAMO,aAAa;IACjD,IAAIE,YAAYT,MAAMS,SAAS;IAC/B,MAAOA,cAAcC,UAAW;QAC9B,MAAMC,OAAO,MAAMd,QAAQI,SAAS,CAACH,eAAe;YAAEI,SAASH,KAAKG,OAAO;YAAEO;QAAU;QACvF,IAAIE,KAAKR,IAAI,KAAK,aAAa,OAAOQ;QACtC,IAAIA,KAAKP,WAAW,KAAKA,aAAa,OAAOT;QAC7CiB,OAAOC,MAAM,CAACR,WAAWM,KAAKN,SAAS;QACvCO,OAAOC,MAAM,CAACP,WAAWK,KAAKL,SAAS;QACvC,KAAK,MAAMQ,UAAUH,KAAKJ,aAAa,CAAEA,cAAcQ,GAAG,CAACD;QAC3DL,YAAYE,KAAKF,SAAS;IAC5B;IACA,MAAMO,YAAYtB,cAAc;QAC9BQ,SAASH,KAAKG,OAAO;QACrBe,MAAMlB,KAAKkB,IAAI;QACfC,aAAanB,KAAKmB,WAAW;QAC7BC,oBAAoBpB,KAAKoB,kBAAkB;QAC3Cf;QACAC;QACAE,eAAe;eAAIA;SAAc,CAACa,IAAI;QACtCd;IACF;IACA,OAAOU,cAAc,OAAOrB,cAAc;QAAEQ,MAAM;QAAUa;IAAU;AACxE"}
|
package/dist/change.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export type Change = {
|
|
2
|
+
readonly kind: 'field';
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly value: unknown;
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: 'section';
|
|
8
|
+
readonly path: string;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly value: string;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: 'preamble';
|
|
13
|
+
readonly path: string;
|
|
14
|
+
readonly value: string;
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: 'create';
|
|
17
|
+
readonly path: string;
|
|
18
|
+
readonly fields: Readonly<Record<string, unknown>>;
|
|
19
|
+
readonly sections: Readonly<Record<string, string>>;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'replace';
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly content: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: 'move';
|
|
26
|
+
readonly path: string;
|
|
27
|
+
readonly to: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: 'remove';
|
|
30
|
+
readonly path: string;
|
|
31
|
+
};
|
|
32
|
+
export type Precondition = {
|
|
33
|
+
readonly kind: 'field';
|
|
34
|
+
readonly path: string;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly value: unknown;
|
|
37
|
+
} | {
|
|
38
|
+
readonly kind: 'section';
|
|
39
|
+
readonly path: string;
|
|
40
|
+
readonly name: string;
|
|
41
|
+
readonly value: string;
|
|
42
|
+
} | {
|
|
43
|
+
readonly kind: 'preamble';
|
|
44
|
+
readonly path: string;
|
|
45
|
+
readonly value: string;
|
|
46
|
+
} | {
|
|
47
|
+
readonly kind: 'revision';
|
|
48
|
+
readonly path: string;
|
|
49
|
+
readonly revision: string;
|
|
50
|
+
} | {
|
|
51
|
+
readonly kind: 'present';
|
|
52
|
+
readonly path: string;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: 'absent';
|
|
55
|
+
readonly path: string;
|
|
56
|
+
};
|
|
57
|
+
export type ChangeBatch = {
|
|
58
|
+
readonly id: string;
|
|
59
|
+
readonly baseRoomVersion: string;
|
|
60
|
+
readonly changes: readonly Change[];
|
|
61
|
+
readonly preconditions: readonly Precondition[];
|
|
62
|
+
};
|
|
63
|
+
export declare function immutable(batch: ChangeBatch): ChangeBatch;
|
|
64
|
+
//# sourceMappingURL=change.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../src/change.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,YAAY,GACpB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;CACjD,CAAC;AAUF,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAEzD"}
|
package/dist/change.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function frozen(value) {
|
|
2
|
+
if (Array.isArray(value)) return Object.freeze(value.map((item)=>frozen(item)));
|
|
3
|
+
if (value === null || typeof value !== 'object') return value;
|
|
4
|
+
const copy = {};
|
|
5
|
+
for (const [name, item] of Object.entries(value))copy[name] = frozen(item);
|
|
6
|
+
return Object.freeze(copy);
|
|
7
|
+
}
|
|
8
|
+
export function immutable(batch) {
|
|
9
|
+
return frozen(batch);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/change.ts"],"sourcesContent":["export type Change =\n | {\n readonly kind: 'field';\n readonly path: string;\n readonly name: string;\n readonly value: unknown;\n }\n | {\n readonly kind: 'section';\n readonly path: string;\n readonly name: string;\n readonly value: string;\n }\n | { readonly kind: 'preamble'; readonly path: string; readonly value: string }\n | {\n readonly kind: 'create';\n readonly path: string;\n readonly fields: Readonly<Record<string, unknown>>;\n readonly sections: Readonly<Record<string, string>>;\n }\n | { readonly kind: 'replace'; readonly path: string; readonly content: string }\n | { readonly kind: 'move'; readonly path: string; readonly to: string }\n | { readonly kind: 'remove'; readonly path: string };\n\nexport type Precondition =\n | {\n readonly kind: 'field';\n readonly path: string;\n readonly name: string;\n readonly value: unknown;\n }\n | {\n readonly kind: 'section';\n readonly path: string;\n readonly name: string;\n readonly value: string;\n }\n | { readonly kind: 'preamble'; readonly path: string; readonly value: string }\n | { readonly kind: 'revision'; readonly path: string; readonly revision: string }\n | { readonly kind: 'present'; readonly path: string }\n | { readonly kind: 'absent'; readonly path: string };\n\nexport type ChangeBatch = {\n readonly id: string;\n readonly baseRoomVersion: string;\n readonly changes: readonly Change[];\n readonly preconditions: readonly Precondition[];\n};\n\nfunction frozen<T>(value: T): T {\n if (Array.isArray(value)) return Object.freeze(value.map((item) => frozen(item))) as T;\n if (value === null || typeof value !== 'object') return value;\n const copy: Record<string, unknown> = {};\n for (const [name, item] of Object.entries(value)) copy[name] = frozen(item);\n return Object.freeze(copy) as T;\n}\n\nexport function immutable(batch: ChangeBatch): ChangeBatch {\n return frozen(batch);\n}\n"],"names":["frozen","value","Array","isArray","Object","freeze","map","item","copy","name","entries","immutable","batch"],"mappings":"AAiDA,SAASA,OAAUC,KAAQ;IACzB,IAAIC,MAAMC,OAAO,CAACF,QAAQ,OAAOG,OAAOC,MAAM,CAACJ,MAAMK,GAAG,CAAC,CAACC,OAASP,OAAOO;IAC1E,IAAIN,UAAU,QAAQ,OAAOA,UAAU,UAAU,OAAOA;IACxD,MAAMO,OAAgC,CAAC;IACvC,KAAK,MAAM,CAACC,MAAMF,KAAK,IAAIH,OAAOM,OAAO,CAACT,OAAQO,IAAI,CAACC,KAAK,GAAGT,OAAOO;IACtE,OAAOH,OAAOC,MAAM,CAACG;AACvB;AAEA,OAAO,SAASG,UAAUC,KAAkB;IAC1C,OAAOZ,OAAOY;AAChB"}
|
package/dist/collection.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export type Collection = {
|
|
|
13
13
|
documents: Readonly<Record<string, Document>>;
|
|
14
14
|
types: readonly MdType[];
|
|
15
15
|
};
|
|
16
|
+
export declare function parseCollection(text: Readonly<Record<string, string>>): Collection;
|
|
16
17
|
export declare function readCollection(text: Readonly<Record<string, string>>, binaryTargets: readonly string[]): Collection | null;
|
|
17
18
|
//# sourceMappingURL=collection.d.ts.map
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAKpD,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAEhG,eAAO,MAAM,SAAS,EAAE,QAAyC,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,CAAC;AAmBF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,UAAU,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAKpD,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAEhG,eAAO,MAAM,SAAS,EAAE,QAAyC,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B,CAAC;AAmBF,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,UAAU,CAYlF;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,UAAU,GAAG,IAAI,CAKnB"}
|
package/dist/collection.js
CHANGED
|
@@ -24,16 +24,12 @@ function mdType(path, document) {
|
|
|
24
24
|
sections: declaredIn(document, 'sections')
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
-
export function
|
|
27
|
+
export function parseCollection(text) {
|
|
28
28
|
const documents = {};
|
|
29
29
|
for (const path of Object.keys(text).sort()){
|
|
30
30
|
const parsed = parse(text[path], path);
|
|
31
|
-
if (
|
|
32
|
-
documents[path] = parsed.document;
|
|
31
|
+
if (parsed.ok) documents[path] = parsed.document;
|
|
33
32
|
}
|
|
34
|
-
if (validate(text, {
|
|
35
|
-
binaryTargets
|
|
36
|
-
}).verdict === 'refuse') return null;
|
|
37
33
|
const types = [];
|
|
38
34
|
for (const [path, document] of Object.entries(documents)){
|
|
39
35
|
if (!isMarkdown(path) || document.type !== DEFINITION) continue;
|
|
@@ -44,5 +40,13 @@ export function readCollection(text, binaryTargets) {
|
|
|
44
40
|
types
|
|
45
41
|
};
|
|
46
42
|
}
|
|
43
|
+
export function readCollection(text, binaryTargets) {
|
|
44
|
+
const collection = parseCollection(text);
|
|
45
|
+
if (Object.keys(collection.documents).length !== Object.keys(text).length) return null;
|
|
46
|
+
if (validate(text, {
|
|
47
|
+
binaryTargets
|
|
48
|
+
}).verdict === 'refuse') return null;
|
|
49
|
+
return collection;
|
|
50
|
+
}
|
|
47
51
|
|
|
48
52
|
//# 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
|
|
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 parseCollection(text: Readonly<Record<string, string>>): Collection {\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) documents[path] = parsed.document;\n }\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\nexport function readCollection(\n text: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n): Collection | null {\n const collection = parseCollection(text);\n if (Object.keys(collection.documents).length !== Object.keys(text).length) return null;\n if (validate(text, { binaryTargets }).verdict === 'refuse') return null;\n return collection;\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","parseCollection","text","documents","Object","keys","sort","parsed","ok","types","entries","type","push","readCollection","binaryTargets","collection","verdict"],"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,gBAAgBC,IAAsC;IACpE,MAAMC,YAAsC,CAAC;IAC7C,KAAK,MAAMhB,QAAQiB,OAAOC,IAAI,CAACH,MAAMI,IAAI,GAAI;QAC3C,MAAMC,SAAS7B,MAAMwB,IAAI,CAACf,KAAK,EAAEA;QACjC,IAAIoB,OAAOC,EAAE,EAAEL,SAAS,CAAChB,KAAK,GAAGoB,OAAOf,QAAQ;IAClD;IACA,MAAMiB,QAAkB,EAAE;IAC1B,KAAK,MAAM,CAACtB,MAAMK,SAAS,IAAIY,OAAOM,OAAO,CAACP,WAAY;QACxD,IAAI,CAACd,WAAWF,SAASK,SAASmB,IAAI,KAAK7B,YAAY;QACvD2B,MAAMG,IAAI,CAACjB,OAAOR,MAAMK;IAC1B;IACA,OAAO;QAAEW;QAAWM;IAAM;AAC5B;AAEA,OAAO,SAASI,eACdX,IAAsC,EACtCY,aAAgC;IAEhC,MAAMC,aAAad,gBAAgBC;IACnC,IAAIE,OAAOC,IAAI,CAACU,WAAWZ,SAAS,EAAEJ,MAAM,KAAKK,OAAOC,IAAI,CAACH,MAAMH,MAAM,EAAE,OAAO;IAClF,IAAIpB,SAASuB,MAAM;QAAEY;IAAc,GAAGE,OAAO,KAAK,UAAU,OAAO;IACnE,OAAOD;AACT"}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { type QueryOptions, type QueryResult } from '@agentshouse/query';
|
|
2
|
-
import { type Adapter, type Authorization } from './adapter.js';
|
|
2
|
+
import { type ActionResult, type Adapter, type Authorization, type HistoryResult } from './adapter.js';
|
|
3
|
+
import type { Change } from './change.js';
|
|
3
4
|
import { type MdType } from './collection.js';
|
|
5
|
+
import { type QueueEntry, type SubmissionOutcome } from './outcome.js';
|
|
6
|
+
import { type SaveRefusal } from './save.js';
|
|
7
|
+
import { type SyncStatus } from './status.js';
|
|
4
8
|
export type AppRoom = {
|
|
5
9
|
name: string;
|
|
6
10
|
locator: string;
|
|
@@ -21,14 +25,45 @@ export type MdRuntimeOptions = {
|
|
|
21
25
|
discoveryIntervalMs?: number;
|
|
22
26
|
signal?: AbortSignal;
|
|
23
27
|
};
|
|
28
|
+
export type SaveResult = {
|
|
29
|
+
outcome: 'saved';
|
|
30
|
+
id: string;
|
|
31
|
+
} | ({
|
|
32
|
+
outcome: 'refused';
|
|
33
|
+
} & SaveRefusal);
|
|
34
|
+
export type DraftSurface = {
|
|
35
|
+
read(locator: string, path: string): unknown;
|
|
36
|
+
replace(locator: string, path: string, content: unknown): Promise<void>;
|
|
37
|
+
discard(locator: string, path: string): Promise<void>;
|
|
38
|
+
};
|
|
39
|
+
export type QueueSurface = {
|
|
40
|
+
discard(locator: string, identifier: string): Promise<void>;
|
|
41
|
+
};
|
|
42
|
+
export type HistoryQuery = {
|
|
43
|
+
revision?: string;
|
|
44
|
+
pageToken?: string;
|
|
45
|
+
};
|
|
46
|
+
export type CallResult = ActionResult | {
|
|
47
|
+
kind: 'undeclared';
|
|
48
|
+
};
|
|
24
49
|
export type MdRuntime = {
|
|
25
50
|
rooms(): readonly AppRoom[];
|
|
26
51
|
query(options?: QueryOptions): QueryResult;
|
|
27
52
|
types(locator: string): readonly MdType[];
|
|
53
|
+
syncStatus(): SyncStatus;
|
|
54
|
+
draft: DraftSurface;
|
|
55
|
+
save(locator: string, changes: readonly Change[], replacing?: string): Promise<SaveResult>;
|
|
56
|
+
outcome(identifier: string): SubmissionOutcome | null;
|
|
57
|
+
queue: QueueSurface;
|
|
58
|
+
history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryResult>;
|
|
59
|
+
call(name: string, input: unknown): Promise<CallResult>;
|
|
60
|
+
log(): string;
|
|
28
61
|
observe: {
|
|
29
62
|
(topic: 'rooms', listener: (rooms: readonly AppRoom[]) => void): () => void;
|
|
30
63
|
(topic: 'connection-refusal', listener: (refusal: ConnectionRefusal | null) => void): () => void;
|
|
64
|
+
(topic: 'sync-status', listener: (status: SyncStatus) => void): () => void;
|
|
31
65
|
(topic: 'query', query: QueryOptions, listener: (result: QueryResult) => void): () => void;
|
|
66
|
+
(topic: 'queue', locator: string, listener: (entries: readonly QueueEntry[]) => void): () => void;
|
|
32
67
|
};
|
|
33
68
|
reauthorize(): Promise<void>;
|
|
34
69
|
};
|
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,EAGL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|