@agentshouse/mdruntime-adapter 0.1.0-cca5d676bc88e → 0.1.0-ccda1a2da11c3
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 +291 -213
- package/dist/actions.d.ts +69 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +197 -198
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +378 -112
- package/dist/discovery.d.ts +7 -6
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +50 -18
- package/dist/gather.d.ts +2 -1
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +15 -20
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/model.d.ts +1 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +21 -7
- package/dist/part.d.ts +13 -0
- package/dist/part.d.ts.map +1 -0
- package/dist/part.js +80 -0
- package/dist/read.d.ts +72 -20
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +353 -155
- package/dist/referrer.d.ts +9 -0
- package/dist/referrer.d.ts.map +1 -0
- package/dist/referrer.js +41 -0
- package/dist/refusal.d.ts +5 -9
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +31 -17
- package/dist/room-types.d.ts +6 -0
- package/dist/room-types.d.ts.map +1 -0
- package/dist/room-types.js +66 -0
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +184 -62
- package/dist/stream.d.ts +6 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +360 -42
- package/dist/transport.d.ts +67 -11
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -1
- package/dist/version.d.ts +1 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/write.d.ts +14 -9
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +172 -47
- package/package.json +3 -4
- package/dist/links.d.ts +0 -20
- package/dist/links.d.ts.map +0 -1
- package/dist/links.js +0 -104
package/dist/transport.d.ts
CHANGED
|
@@ -9,29 +9,37 @@ export declare const SITE_DOOR_DISCOVER = "/_house/door/discover";
|
|
|
9
9
|
export declare const SITE_DOOR_BOOTSTRAP = "/_house/door/bootstrap/";
|
|
10
10
|
export declare const SITE_DOOR_ENUMERATE = "/_house/door/enumerate";
|
|
11
11
|
export declare const SITE_DOOR_SUBMIT = "/_house/door/submit";
|
|
12
|
-
export declare const PRIVATE_LOCATOR = "private";
|
|
13
12
|
export type HouseMode = 'credential' | 'site';
|
|
14
13
|
export type HouseDoorAnswer = {
|
|
15
14
|
status: number;
|
|
16
15
|
body: unknown;
|
|
17
16
|
};
|
|
18
|
-
export
|
|
19
|
-
export
|
|
20
|
-
export
|
|
17
|
+
export declare const DOOR_FILES_GET = "/door/files/get";
|
|
18
|
+
export declare const SITE_FILES = "/_house/files/";
|
|
19
|
+
export declare const SITE_FILE_RECORD = "record";
|
|
20
|
+
export type HouseByteAct = 'authored_batch_upload' | 'file_upload' | 'binary_stage';
|
|
21
|
+
export type HouseByteBody = string | ArrayBuffer | Uint8Array | Blob;
|
|
22
|
+
export type HouseBytesAnswer = {
|
|
23
|
+
status: number;
|
|
24
|
+
body: ReadableStream<Uint8Array> | null;
|
|
25
|
+
mediaType: string;
|
|
26
|
+
};
|
|
21
27
|
export type HouseByteTransfer = {
|
|
22
28
|
act: HouseByteAct;
|
|
23
|
-
method: 'GET' | 'POST';
|
|
24
29
|
url: string;
|
|
25
|
-
|
|
26
|
-
body?: HouseByteBody;
|
|
30
|
+
body: HouseByteBody;
|
|
27
31
|
operation?: string;
|
|
28
32
|
};
|
|
29
33
|
export type HouseStreamEntry = {
|
|
30
34
|
path: string;
|
|
31
|
-
kind: 'edited' | 'removed';
|
|
35
|
+
kind: 'edited' | 'removed' | 'piece' | 'folder';
|
|
36
|
+
removed?: true;
|
|
32
37
|
revision?: string;
|
|
33
38
|
sha256?: string;
|
|
34
39
|
text?: string;
|
|
40
|
+
file?: string;
|
|
41
|
+
bytes?: number;
|
|
42
|
+
media_type?: string;
|
|
35
43
|
author?: {
|
|
36
44
|
user: string;
|
|
37
45
|
name: string;
|
|
@@ -40,6 +48,7 @@ export type HouseStreamEntry = {
|
|
|
40
48
|
name: string;
|
|
41
49
|
};
|
|
42
50
|
created_at?: string;
|
|
51
|
+
continued?: true;
|
|
43
52
|
};
|
|
44
53
|
type LiveFact<K extends ConversationEvent['kind']> = Extract<ConversationEvent, {
|
|
45
54
|
kind: K;
|
|
@@ -51,17 +60,32 @@ export type HouseListedConversation = {
|
|
|
51
60
|
created_at: string;
|
|
52
61
|
finished_at: string | null;
|
|
53
62
|
outcome: string | null;
|
|
63
|
+
waiting: boolean;
|
|
54
64
|
};
|
|
55
65
|
export type HouseStreamFrame = {
|
|
56
|
-
type: '
|
|
66
|
+
type: 'part';
|
|
57
67
|
authority: string;
|
|
68
|
+
carry: string;
|
|
69
|
+
index: number;
|
|
70
|
+
after: string;
|
|
71
|
+
from: string;
|
|
72
|
+
target: string;
|
|
73
|
+
handled: number;
|
|
74
|
+
entries: readonly HouseStreamEntry[];
|
|
75
|
+
} | {
|
|
76
|
+
type: 'carried';
|
|
77
|
+
authority: string;
|
|
78
|
+
carry: string;
|
|
79
|
+
parts: number;
|
|
58
80
|
after: string;
|
|
59
81
|
position: string;
|
|
60
82
|
log_epoch: string;
|
|
61
|
-
entries: readonly HouseStreamEntry[];
|
|
62
83
|
} | {
|
|
63
84
|
type: 'opening';
|
|
64
85
|
expired: readonly string[];
|
|
86
|
+
} | {
|
|
87
|
+
type: 'authority_changed';
|
|
88
|
+
rooms: readonly string[];
|
|
65
89
|
} | ({
|
|
66
90
|
type: 'turn';
|
|
67
91
|
conversation_id: string;
|
|
@@ -74,6 +98,10 @@ export type HouseStreamFrame = {
|
|
|
74
98
|
type: 'interactions';
|
|
75
99
|
conversation_id: string;
|
|
76
100
|
interactions: readonly unknown[];
|
|
101
|
+
} | {
|
|
102
|
+
type: 'deliveries';
|
|
103
|
+
conversation_id: string;
|
|
104
|
+
unknown: readonly string[];
|
|
77
105
|
} | {
|
|
78
106
|
type: 'process';
|
|
79
107
|
conversation_id: string;
|
|
@@ -86,6 +114,14 @@ export type HouseStreamFrame = {
|
|
|
86
114
|
type: 'options';
|
|
87
115
|
conversation_id: string;
|
|
88
116
|
options: LiveFact<'options'>['options'];
|
|
117
|
+
} | {
|
|
118
|
+
type: 'starting';
|
|
119
|
+
conversation_id: string;
|
|
120
|
+
step: string | null;
|
|
121
|
+
} | {
|
|
122
|
+
type: 'link';
|
|
123
|
+
conversation_id: string;
|
|
124
|
+
connected: boolean;
|
|
89
125
|
} | {
|
|
90
126
|
type: 'conversations';
|
|
91
127
|
conversations: readonly HouseListedConversation[];
|
|
@@ -99,18 +135,36 @@ export type HouseStreamFrame = {
|
|
|
99
135
|
type: 'signal';
|
|
100
136
|
service_mode: string;
|
|
101
137
|
};
|
|
138
|
+
export type HouseHeldCarry = {
|
|
139
|
+
id: string;
|
|
140
|
+
parts: number;
|
|
141
|
+
from: string;
|
|
142
|
+
target: string;
|
|
143
|
+
handled: number;
|
|
144
|
+
piece?: {
|
|
145
|
+
sha256: string;
|
|
146
|
+
offset: number;
|
|
147
|
+
};
|
|
148
|
+
};
|
|
102
149
|
export type HouseHeldRoom = {
|
|
103
150
|
authority: string;
|
|
104
151
|
position: string;
|
|
105
152
|
log_epoch: string;
|
|
153
|
+
carry?: HouseHeldCarry;
|
|
106
154
|
};
|
|
107
155
|
export type HouseOpening = {
|
|
108
156
|
hold(rooms: readonly HouseHeldRoom[], runtime: string): void;
|
|
157
|
+
received(authority: string, carry: string, index: number): void;
|
|
158
|
+
close(): void;
|
|
159
|
+
};
|
|
160
|
+
export type HouseClosing = {
|
|
161
|
+
revoked: boolean;
|
|
162
|
+
lost: boolean;
|
|
109
163
|
};
|
|
110
164
|
export type HouseStream = {
|
|
111
165
|
observe(receive: (frame: HouseStreamFrame) => void): () => void;
|
|
112
166
|
opened(notify: (opening: HouseOpening) => void): () => void;
|
|
113
|
-
closed(notify: (
|
|
167
|
+
closed(notify: (closing: HouseClosing) => void): () => void;
|
|
114
168
|
};
|
|
115
169
|
export type HouseDoor = {
|
|
116
170
|
door(route: string, body: unknown): Promise<HouseDoorAnswer>;
|
|
@@ -118,10 +172,12 @@ export type HouseDoor = {
|
|
|
118
172
|
};
|
|
119
173
|
export type HouseTransport = HouseDoor & {
|
|
120
174
|
transfer(request: HouseByteTransfer): Promise<HouseDoorAnswer>;
|
|
175
|
+
download(url: string): Promise<HouseBytesAnswer>;
|
|
121
176
|
};
|
|
122
177
|
export type HouseSiteTransport = HouseDoor & {
|
|
123
178
|
online(): boolean;
|
|
124
179
|
read(route: string): Promise<HouseDoorAnswer>;
|
|
180
|
+
download(route: string): Promise<HouseBytesAnswer>;
|
|
125
181
|
};
|
|
126
182
|
export {};
|
|
127
183
|
//# sourceMappingURL=transport.d.ts.map
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAEtD,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAE1D,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AAEtD,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/transport.js
CHANGED
|
@@ -8,4 +8,6 @@ export const SITE_DOOR_DISCOVER = '/_house/door/discover';
|
|
|
8
8
|
export const SITE_DOOR_BOOTSTRAP = '/_house/door/bootstrap/';
|
|
9
9
|
export const SITE_DOOR_ENUMERATE = '/_house/door/enumerate';
|
|
10
10
|
export const SITE_DOOR_SUBMIT = '/_house/door/submit';
|
|
11
|
-
export const
|
|
11
|
+
export const DOOR_FILES_GET = '/door/files/get';
|
|
12
|
+
export const SITE_FILES = '/_house/files/';
|
|
13
|
+
export const SITE_FILE_RECORD = 'record';
|
package/dist/version.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare function roomVersion(at: LogPosition): string;
|
|
|
11
11
|
export declare function logPosition(version: string): LogPosition | null;
|
|
12
12
|
export declare function readPosition(held: Readonly<Record<string, unknown>>): LogPosition | null;
|
|
13
13
|
export declare function presented(authority: string, at: LogPosition): PresentedPosition;
|
|
14
|
+
export declare const DECIMAL: RegExp;
|
|
14
15
|
export declare function reachedVersion(roomVersion: string, target: string, currentEpoch: string | undefined): boolean;
|
|
15
16
|
export declare function followsVersion(roomVersion: string, next: string): boolean;
|
|
16
17
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI/D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAKxF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,iBAAiB,CAE/E;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAI/D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAKxF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,iBAAiB,CAE/E;AAED,eAAO,MAAM,OAAO,QAAwB,CAAC;AAE7C,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAQT;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMzE"}
|
package/dist/version.js
CHANGED
|
@@ -18,7 +18,7 @@ export function readPosition(held) {
|
|
|
18
18
|
export function presented(authority, at) {
|
|
19
19
|
return { authority, position: at.position, log_epoch: at.logEpoch };
|
|
20
20
|
}
|
|
21
|
-
const DECIMAL = /^(?:0|[1-9][0-9]*)$/;
|
|
21
|
+
export const DECIMAL = /^(?:0|[1-9][0-9]*)$/;
|
|
22
22
|
export function reachedVersion(roomVersion, target, currentEpoch) {
|
|
23
23
|
if (roomVersion === target)
|
|
24
24
|
return true;
|
package/dist/write.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ChangeBatch, type HistoryResult, type MutationResult } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { HouseBounds } from './discovery.js';
|
|
3
3
|
export type HouseOperation = Readonly<Record<string, unknown>>;
|
|
4
4
|
export type ChangeMapping = {
|
|
@@ -10,6 +10,7 @@ export type ChangeMapping = {
|
|
|
10
10
|
rule: string;
|
|
11
11
|
};
|
|
12
12
|
export declare function houseChanges(batch: ChangeBatch, handle: string): ChangeMapping;
|
|
13
|
+
export declare function houseMove(batch: ChangeBatch, source: string, destination: string): ChangeMapping;
|
|
13
14
|
export type OperationHead = {
|
|
14
15
|
readonly operation_id: string;
|
|
15
16
|
readonly app_ref?: string;
|
|
@@ -21,14 +22,17 @@ export declare function deltaBody(changes: readonly HouseOperation[]): string;
|
|
|
21
22
|
export declare function deltaBytes(delta: string): number;
|
|
22
23
|
export declare function uploadable(inline: Readonly<Record<string, unknown>>, bytes: number, bounds: Pick<HouseBounds, 'max_inline_body_bytes' | 'max_upload_bytes'>): boolean;
|
|
23
24
|
export declare function deltaDigest(delta: string): Promise<string>;
|
|
24
|
-
export type
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
export type MoveAuthorities = {
|
|
26
|
+
readonly source: {
|
|
27
|
+
readonly authority: string;
|
|
28
|
+
readonly handle: string;
|
|
29
|
+
};
|
|
30
|
+
readonly destination: {
|
|
31
|
+
readonly authority: string;
|
|
32
|
+
readonly handle: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare function mutationOutcome(status: number, body: unknown, locator: string, handle: string, move?: MoveAuthorities): Generator<number, MutationResult, void>;
|
|
32
36
|
export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
33
37
|
kind: 'unmapped';
|
|
34
38
|
}>): {
|
|
@@ -38,6 +42,7 @@ export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
|
38
42
|
fields: {
|
|
39
43
|
path: string;
|
|
40
44
|
};
|
|
45
|
+
retryable: boolean;
|
|
41
46
|
};
|
|
42
47
|
export declare function revisionBody(input: {
|
|
43
48
|
path: string;
|
package/dist/write.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
|
package/dist/write.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { departure, ROW_WEIGHT, } from '@agentshouse/mdruntime';
|
|
2
|
+
import { answered, answering, binaryFileOf, headChange, revised } from './read.js';
|
|
2
3
|
import { sha256Hex, textBytes } from './digest.js';
|
|
3
4
|
import { nativePath, roomLocalPath } from './map.js';
|
|
4
5
|
import { classifyDoor, doorRefusal, scopedRefusal } from './refusal.js';
|
|
@@ -73,6 +74,25 @@ function operationOf(batch, change, handle) {
|
|
|
73
74
|
const operation = created(change, path);
|
|
74
75
|
return operation === null ? { rule: 'type-missing' } : { operation };
|
|
75
76
|
}
|
|
77
|
+
if (change.kind === 'binary') {
|
|
78
|
+
const written = {
|
|
79
|
+
op: 'upload',
|
|
80
|
+
path,
|
|
81
|
+
local_id: change.localId,
|
|
82
|
+
bytes: change.byteLength,
|
|
83
|
+
sha256: change.sha256,
|
|
84
|
+
media_type: change.mediaType,
|
|
85
|
+
};
|
|
86
|
+
const from = departure(batch.changes, batch.changes.indexOf(change));
|
|
87
|
+
if (from === change.path && priorAbsence(batch, change.path) !== undefined)
|
|
88
|
+
return { operation: written };
|
|
89
|
+
const replaced = priorExistence(batch, from);
|
|
90
|
+
if (replaced === undefined)
|
|
91
|
+
return { rule: 'precondition-missing' };
|
|
92
|
+
if (!('base' in replaced))
|
|
93
|
+
return { rule: 'presence-base-unrepresentable' };
|
|
94
|
+
return { operation: { ...written, base: replaced.base } };
|
|
95
|
+
}
|
|
76
96
|
const existence = priorExistence(batch, change.path);
|
|
77
97
|
if (existence === undefined)
|
|
78
98
|
return { rule: 'precondition-missing' };
|
|
@@ -100,6 +120,24 @@ export function houseChanges(batch, handle) {
|
|
|
100
120
|
}
|
|
101
121
|
return { kind: 'changes', changes };
|
|
102
122
|
}
|
|
123
|
+
export function houseMove(batch, source, destination) {
|
|
124
|
+
const changes = [];
|
|
125
|
+
for (const { path, to } of batch.between?.moves ?? []) {
|
|
126
|
+
const existence = priorExistence(batch, path);
|
|
127
|
+
if (existence === undefined)
|
|
128
|
+
return { kind: 'unmapped', path, rule: 'precondition-missing' };
|
|
129
|
+
if (!('base' in existence)) {
|
|
130
|
+
return { kind: 'unmapped', path, rule: 'presence-base-unrepresentable' };
|
|
131
|
+
}
|
|
132
|
+
changes.push({
|
|
133
|
+
op: 'rename',
|
|
134
|
+
path: nativePath(path, source),
|
|
135
|
+
to: nativePath(to, destination),
|
|
136
|
+
base: existence.base,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return { kind: 'changes', changes };
|
|
140
|
+
}
|
|
103
141
|
export function operationHead(batch) {
|
|
104
142
|
const writer = batch.writtenBy;
|
|
105
143
|
return writer === undefined
|
|
@@ -109,7 +147,7 @@ export function operationHead(batch) {
|
|
|
109
147
|
export function batchPaths(changes) {
|
|
110
148
|
return [
|
|
111
149
|
...new Set(changes.flatMap((change) => change.op === 'rename' ? [String(change.path), String(change.to)] : [String(change.path)])),
|
|
112
|
-
]
|
|
150
|
+
];
|
|
113
151
|
}
|
|
114
152
|
export function deltaBody(changes) {
|
|
115
153
|
return JSON.stringify({ changes });
|
|
@@ -124,20 +162,29 @@ export function uploadable(inline, bytes, bounds) {
|
|
|
124
162
|
export function deltaDigest(delta) {
|
|
125
163
|
return sha256Hex(delta);
|
|
126
164
|
}
|
|
127
|
-
function material(value, handle) {
|
|
165
|
+
function* material(value, handle, within = () => true) {
|
|
128
166
|
if (!Array.isArray(value))
|
|
129
167
|
return null;
|
|
130
168
|
const held = [];
|
|
131
169
|
for (const entry of value) {
|
|
170
|
+
yield ROW_WEIGHT;
|
|
132
171
|
if (typeof entry !== 'object' || entry === null)
|
|
133
172
|
return null;
|
|
134
173
|
const file = entry;
|
|
135
174
|
if (typeof file.path !== 'string')
|
|
136
175
|
return null;
|
|
176
|
+
if (!within(file.path))
|
|
177
|
+
continue;
|
|
137
178
|
if (file.content !== null && typeof file.content !== 'string')
|
|
138
179
|
return null;
|
|
139
180
|
if (file.revision !== null && file.revision !== undefined && typeof file.revision !== 'string')
|
|
140
181
|
return null;
|
|
182
|
+
const binary = binaryFileOf(file);
|
|
183
|
+
if (binary === null)
|
|
184
|
+
return null;
|
|
185
|
+
const head = headChange(file);
|
|
186
|
+
if (head === null)
|
|
187
|
+
return null;
|
|
141
188
|
let path;
|
|
142
189
|
try {
|
|
143
190
|
path = roomLocalPath(file.path, handle);
|
|
@@ -149,29 +196,84 @@ function material(value, handle) {
|
|
|
149
196
|
path,
|
|
150
197
|
content: file.content,
|
|
151
198
|
revision: typeof file.revision === 'string' ? file.revision : null,
|
|
199
|
+
...(binary === undefined ? {} : { binary }),
|
|
200
|
+
...(head === undefined ? {} : { head }),
|
|
152
201
|
});
|
|
153
202
|
}
|
|
154
203
|
return held;
|
|
155
204
|
}
|
|
156
|
-
function affectedOf(held) {
|
|
205
|
+
function* affectedOf(held) {
|
|
157
206
|
const affected = {};
|
|
158
207
|
for (const entry of held) {
|
|
159
208
|
if (entry.content !== null)
|
|
160
209
|
affected[entry.path] = entry.content;
|
|
210
|
+
yield ROW_WEIGHT;
|
|
161
211
|
}
|
|
162
212
|
return affected;
|
|
163
213
|
}
|
|
164
|
-
|
|
214
|
+
function* acceptedOf(at, contents) {
|
|
215
|
+
const answer = answering();
|
|
216
|
+
for (const entry of contents) {
|
|
217
|
+
yield ROW_WEIGHT + (entry.content?.length ?? 0);
|
|
218
|
+
if (entry.revision === null) {
|
|
219
|
+
answer.removals.add(entry.path);
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
if (entry.content !== null)
|
|
223
|
+
answer.documents.set(entry.path, entry.content);
|
|
224
|
+
if (entry.binary !== undefined)
|
|
225
|
+
answer.binaryFiles.set(entry.path, entry.binary);
|
|
226
|
+
revised(answer, entry.path, entry.revision);
|
|
227
|
+
if (entry.head !== undefined)
|
|
228
|
+
answer.changes.set(entry.path, entry.head);
|
|
229
|
+
}
|
|
230
|
+
const unbinaried = answer.binaryFiles.size === 0;
|
|
231
|
+
const { binaryFiles, ...room } = yield* answered(answer);
|
|
232
|
+
return { roomVersion: roomVersion(at), ...room, ...(unbinaried ? {} : { binaryFiles }) };
|
|
233
|
+
}
|
|
234
|
+
function* movedOutcome(held, move) {
|
|
235
|
+
const authorities = Array.isArray(held.authorities) ? held.authorities : [];
|
|
236
|
+
const at = (authority) => {
|
|
237
|
+
const entry = authorities.find((one) => typeof one === 'object' &&
|
|
238
|
+
one !== null &&
|
|
239
|
+
one.authority === authority);
|
|
240
|
+
return entry === undefined ? null : readPosition(entry);
|
|
241
|
+
};
|
|
242
|
+
const left = at(move.source.authority);
|
|
243
|
+
const arrived = at(move.destination.authority);
|
|
244
|
+
if (left === null || arrived === null)
|
|
245
|
+
return { kind: 'transport-uncertainty' };
|
|
246
|
+
const under = (handle) => (path) => path.startsWith(`/rooms/${handle}/`);
|
|
247
|
+
const leaving = yield* material(held.contents, move.source.handle, under(move.source.handle));
|
|
248
|
+
const arriving = yield* material(held.contents, move.destination.handle, under(move.destination.handle));
|
|
249
|
+
if (leaving === null || arriving === null)
|
|
250
|
+
return { kind: 'transport-uncertainty' };
|
|
251
|
+
return {
|
|
252
|
+
kind: 'accepted',
|
|
253
|
+
...(yield* acceptedOf(left, leaving)),
|
|
254
|
+
destination: yield* acceptedOf(arrived, arriving),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
export function* mutationOutcome(status, body, locator, handle, move) {
|
|
165
258
|
const refusal = doorRefusal(body);
|
|
166
259
|
if (refusal !== null && refusal.code === 'service_mode_write_halted') {
|
|
167
260
|
return { kind: 'write-halted' };
|
|
168
261
|
}
|
|
169
|
-
if (refusal !== null && refusal.code === '
|
|
170
|
-
return
|
|
262
|
+
if (refusal !== null && refusal.code === 'expired') {
|
|
263
|
+
return refusal.fields.restored === true
|
|
264
|
+
? { kind: 'expired', restored: true }
|
|
265
|
+
: { kind: 'expired' };
|
|
266
|
+
}
|
|
171
267
|
if (refusal !== null && refusal.code === 'edit_conflict') {
|
|
172
268
|
const { current, ...fields } = refusal.fields;
|
|
173
|
-
const held = material(current, handle) ?? [];
|
|
174
|
-
return {
|
|
269
|
+
const held = (yield* material(current, handle)) ?? [];
|
|
270
|
+
return {
|
|
271
|
+
kind: 'conflicted',
|
|
272
|
+
affected: yield* affectedOf(held),
|
|
273
|
+
code: refusal.code,
|
|
274
|
+
fields,
|
|
275
|
+
retryable: refusal.retryable,
|
|
276
|
+
};
|
|
175
277
|
}
|
|
176
278
|
if (refusal !== null && status === 404) {
|
|
177
279
|
return scopedRefusal(locator, 'undisclosed', refusal);
|
|
@@ -181,48 +283,41 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
181
283
|
if (refusal?.retryable === true &&
|
|
182
284
|
typeof reset === 'string' &&
|
|
183
285
|
classified?.kind === 'transport-uncertainty') {
|
|
184
|
-
return {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
286
|
+
return {
|
|
287
|
+
kind: 'retryable-refusal',
|
|
288
|
+
code: refusal.code,
|
|
289
|
+
fields: refusal.fields,
|
|
290
|
+
retryable: true,
|
|
291
|
+
reset,
|
|
292
|
+
};
|
|
188
293
|
}
|
|
189
|
-
if (classified !== null &&
|
|
294
|
+
if (classified !== null && classified.kind !== 'scoped-refusal')
|
|
295
|
+
return classified;
|
|
296
|
+
if (classified !== null && status === 403 && refusal?.code === 'operation_denied') {
|
|
190
297
|
return classified;
|
|
298
|
+
}
|
|
191
299
|
if (refusal !== null && status >= 400) {
|
|
192
|
-
return {
|
|
300
|
+
return {
|
|
301
|
+
kind: 'rejected',
|
|
302
|
+
affected: {},
|
|
303
|
+
code: refusal.code,
|
|
304
|
+
fields: refusal.fields,
|
|
305
|
+
retryable: refusal.retryable,
|
|
306
|
+
};
|
|
193
307
|
}
|
|
194
308
|
if (status !== 200 || typeof body !== 'object' || body === null) {
|
|
195
309
|
return { kind: 'transport-uncertainty' };
|
|
196
310
|
}
|
|
197
311
|
const held = body;
|
|
312
|
+
if (move !== undefined)
|
|
313
|
+
return yield* movedOutcome(held, move);
|
|
198
314
|
const at = readPosition(held);
|
|
199
315
|
if (at === null)
|
|
200
316
|
return { kind: 'transport-uncertainty' };
|
|
201
|
-
const contents = material(held.contents, handle);
|
|
317
|
+
const contents = yield* material(held.contents, handle);
|
|
202
318
|
if (contents === null)
|
|
203
319
|
return { kind: 'transport-uncertainty' };
|
|
204
|
-
|
|
205
|
-
if (originals === null)
|
|
206
|
-
return { kind: 'transport-uncertainty' };
|
|
207
|
-
const documents = {};
|
|
208
|
-
const revisions = {};
|
|
209
|
-
const removals = [];
|
|
210
|
-
for (const entry of contents) {
|
|
211
|
-
if (entry.content === null || entry.revision === null) {
|
|
212
|
-
removals.push(entry.path);
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
documents[entry.path] = entry.content;
|
|
216
|
-
revisions[entry.path] = entry.revision;
|
|
217
|
-
}
|
|
218
|
-
return {
|
|
219
|
-
kind: 'accepted',
|
|
220
|
-
roomVersion: roomVersion(at),
|
|
221
|
-
documents,
|
|
222
|
-
revisions,
|
|
223
|
-
removals: removals.sort(),
|
|
224
|
-
originals,
|
|
225
|
-
};
|
|
320
|
+
return { kind: 'accepted', ...(yield* acceptedOf(at, contents)) };
|
|
226
321
|
}
|
|
227
322
|
export function rejectedMapping(mapping) {
|
|
228
323
|
return {
|
|
@@ -230,6 +325,7 @@ export function rejectedMapping(mapping) {
|
|
|
230
325
|
affected: {},
|
|
231
326
|
code: mapping.rule,
|
|
232
327
|
fields: { path: mapping.path },
|
|
328
|
+
retryable: false,
|
|
233
329
|
};
|
|
234
330
|
}
|
|
235
331
|
export function revisionBody(input) {
|
|
@@ -242,20 +338,37 @@ export function revisionBody(input) {
|
|
|
242
338
|
function revisionAuthor(entry) {
|
|
243
339
|
const user = entry.author_user;
|
|
244
340
|
const site = entry.author_site;
|
|
245
|
-
const
|
|
246
|
-
|
|
341
|
+
const siteName = entry.author_site_name;
|
|
342
|
+
const inbox = entry.author_inbox;
|
|
343
|
+
const inboxName = entry.author_inbox_name;
|
|
344
|
+
const named = [site, siteName, inbox, inboxName].filter((held) => held !== undefined);
|
|
345
|
+
if (typeof user === 'string' && named.length === 0)
|
|
247
346
|
return { kind: 'user', id: user };
|
|
347
|
+
if (user !== null || named.length !== 2)
|
|
348
|
+
return null;
|
|
349
|
+
if (typeof site === 'string' && typeof siteName === 'string') {
|
|
350
|
+
return { kind: 'site', id: site, name: siteName };
|
|
248
351
|
}
|
|
249
|
-
if (
|
|
250
|
-
return { kind: '
|
|
352
|
+
if (typeof inbox === 'string' && typeof inboxName === 'string') {
|
|
353
|
+
return { kind: 'inbox', id: inbox, name: inboxName };
|
|
251
354
|
}
|
|
252
355
|
return null;
|
|
253
356
|
}
|
|
357
|
+
function historyBinary(entry) {
|
|
358
|
+
if (entry.file === undefined)
|
|
359
|
+
return undefined;
|
|
360
|
+
const { file, bytes, media_type: mediaType, sha256 } = entry;
|
|
361
|
+
if (typeof file !== 'string' ||
|
|
362
|
+
typeof bytes !== 'number' ||
|
|
363
|
+
typeof mediaType !== 'string' ||
|
|
364
|
+
typeof sha256 !== 'string')
|
|
365
|
+
return null;
|
|
366
|
+
return { fileRef: file, byteLength: bytes, mediaType, sha256 };
|
|
367
|
+
}
|
|
254
368
|
export function historyOutcome(status, body, locator, request) {
|
|
255
369
|
const classified = classifyDoor(status, body, locator);
|
|
256
|
-
if (classified !== null)
|
|
257
|
-
return classified
|
|
258
|
-
}
|
|
370
|
+
if (classified !== null)
|
|
371
|
+
return classified;
|
|
259
372
|
if (status !== 200 || typeof body !== 'object' || body === null) {
|
|
260
373
|
return { kind: 'transport-uncertainty' };
|
|
261
374
|
}
|
|
@@ -276,11 +389,14 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
276
389
|
return {
|
|
277
390
|
kind: 'scoped-refusal',
|
|
278
391
|
locator,
|
|
279
|
-
scope: '
|
|
392
|
+
scope: 'operation',
|
|
280
393
|
code: 'retained_history_unavailable',
|
|
281
394
|
fields: { path: request.path, revision: request.revision },
|
|
395
|
+
retryable: false,
|
|
282
396
|
};
|
|
283
397
|
}
|
|
398
|
+
if (typeof named.file === 'string')
|
|
399
|
+
return { kind: 'no-history' };
|
|
284
400
|
if (typeof named.content !== 'string')
|
|
285
401
|
return { kind: 'transport-uncertainty' };
|
|
286
402
|
return { kind: 'revision', content: named.content };
|
|
@@ -295,12 +411,21 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
295
411
|
typeof entry.created_at !== 'string') {
|
|
296
412
|
return { kind: 'transport-uncertainty' };
|
|
297
413
|
}
|
|
298
|
-
|
|
414
|
+
const binaryFile = historyBinary(entry);
|
|
415
|
+
if (binaryFile === null)
|
|
416
|
+
return { kind: 'transport-uncertainty' };
|
|
417
|
+
revisions.push({
|
|
418
|
+
revision: entry.revision,
|
|
419
|
+
author,
|
|
420
|
+
time: entry.created_at,
|
|
421
|
+
...(binaryFile === undefined ? {} : { binaryFile }),
|
|
422
|
+
});
|
|
299
423
|
}
|
|
300
424
|
const next = held.next_before;
|
|
301
425
|
return {
|
|
302
426
|
kind: 'history',
|
|
303
427
|
revisions,
|
|
304
428
|
...(typeof next === 'number' ? { pageToken: String(next) } : {}),
|
|
429
|
+
...(held.deleted === true ? { deleted: true } : {}),
|
|
305
430
|
};
|
|
306
431
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentshouse/mdruntime-adapter",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-ccda1a2da11c3",
|
|
4
4
|
"description": "Agents House Adapter for the MD Runtime",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
16
16
|
"types": "./dist/index.d.ts",
|
|
17
|
-
"
|
|
17
|
+
"default": "./dist/index.js"
|
|
18
18
|
},
|
|
19
19
|
"./package.json": "./package.json"
|
|
20
20
|
},
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
"LICENSE"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@agentshouse/
|
|
29
|
-
"@agentshouse/mdruntime": "0.1.0-cf6041a06849c"
|
|
28
|
+
"@agentshouse/mdruntime": "0.1.0-cc3518569406b"
|
|
30
29
|
}
|
|
31
30
|
}
|