@agentshouse/mdruntime-adapter 0.1.0-ca218e62303fd → 0.1.0-ca231c2cbedb4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/actions.d.ts +4 -22
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +23 -134
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +304 -174
- package/dist/app-reference.d.ts +2 -0
- package/dist/app-reference.d.ts.map +1 -0
- package/dist/app-reference.js +2 -0
- package/dist/crockford.d.ts +4 -0
- package/dist/crockford.d.ts.map +1 -0
- package/dist/crockford.js +3 -0
- package/dist/discovery.d.ts +6 -10
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +37 -32
- package/dist/gather.d.ts +1 -1
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +4 -14
- package/dist/house-model.d.ts +2 -0
- package/dist/house-model.d.ts.map +1 -0
- package/dist/house-model.js +484 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/model.d.ts +5 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +11 -13
- package/dist/part.d.ts +15 -0
- package/dist/part.d.ts.map +1 -0
- package/dist/part.js +82 -0
- package/dist/read.d.ts +58 -24
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +270 -144
- package/dist/room-types.d.ts +7 -0
- package/dist/room-types.d.ts.map +1 -0
- package/dist/room-types.js +124 -0
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +126 -125
- package/dist/stream.d.ts +3 -3
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +64 -37
- package/dist/transport.d.ts +32 -11
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +2 -1
- package/dist/upload.d.ts +12 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +63 -0
- package/dist/write.d.ts +12 -1
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +93 -55
- package/package.json +8 -4
- package/AGENTS.md +0 -309
- package/dist/handed.d.ts +0 -15
- package/dist/handed.d.ts.map +0 -1
- package/dist/handed.js +0 -38
- package/dist/referrer.d.ts +0 -7
- package/dist/referrer.d.ts.map +0 -1
- package/dist/referrer.js +0 -35
package/dist/transport.d.ts
CHANGED
|
@@ -15,27 +15,27 @@ export type HouseDoorAnswer = {
|
|
|
15
15
|
body: unknown;
|
|
16
16
|
};
|
|
17
17
|
export declare const DOOR_FILES_GET = "/door/files/get";
|
|
18
|
+
export declare const DOOR_FILES_ATTACH = "/door/files/attach";
|
|
19
|
+
export declare const DOOR_FILES_FINISH = "/door/files/finish";
|
|
18
20
|
export declare const SITE_FILES = "/_house/files/";
|
|
19
|
-
export
|
|
20
|
-
export type HouseByteAct = 'authored_batch_upload' | 'conversation_file_upload' | 'binary_stage';
|
|
21
|
-
export type HouseByteBody = string | ArrayBuffer | Uint8Array | Blob;
|
|
21
|
+
export type HouseByteAct = 'authored_batch_upload';
|
|
22
22
|
export type HouseBytesAnswer = {
|
|
23
23
|
status: number;
|
|
24
|
-
|
|
24
|
+
body: ReadableStream<Uint8Array> | null;
|
|
25
|
+
mediaType: string;
|
|
25
26
|
};
|
|
26
27
|
export type HouseByteTransfer = {
|
|
27
28
|
act: HouseByteAct;
|
|
28
29
|
url: string;
|
|
29
|
-
body:
|
|
30
|
-
operation?: string;
|
|
30
|
+
body: string;
|
|
31
31
|
};
|
|
32
32
|
export type HouseStreamEntry = {
|
|
33
33
|
path: string;
|
|
34
|
-
kind: 'edited' | 'removed' | 'piece';
|
|
34
|
+
kind: 'edited' | 'removed' | 'piece' | 'folder';
|
|
35
|
+
removed?: true;
|
|
35
36
|
revision?: string;
|
|
36
37
|
sha256?: string;
|
|
37
38
|
text?: string;
|
|
38
|
-
file?: string;
|
|
39
39
|
bytes?: number;
|
|
40
40
|
media_type?: string;
|
|
41
41
|
author?: {
|
|
@@ -58,6 +58,7 @@ export type HouseListedConversation = {
|
|
|
58
58
|
created_at: string;
|
|
59
59
|
finished_at: string | null;
|
|
60
60
|
outcome: string | null;
|
|
61
|
+
waiting: boolean;
|
|
61
62
|
};
|
|
62
63
|
export type HouseStreamFrame = {
|
|
63
64
|
type: 'part';
|
|
@@ -80,6 +81,9 @@ export type HouseStreamFrame = {
|
|
|
80
81
|
} | {
|
|
81
82
|
type: 'opening';
|
|
82
83
|
expired: readonly string[];
|
|
84
|
+
} | {
|
|
85
|
+
type: 'authority_changed';
|
|
86
|
+
rooms: readonly string[];
|
|
83
87
|
} | ({
|
|
84
88
|
type: 'turn';
|
|
85
89
|
conversation_id: string;
|
|
@@ -92,6 +96,10 @@ export type HouseStreamFrame = {
|
|
|
92
96
|
type: 'interactions';
|
|
93
97
|
conversation_id: string;
|
|
94
98
|
interactions: readonly unknown[];
|
|
99
|
+
} | {
|
|
100
|
+
type: 'deliveries';
|
|
101
|
+
conversation_id: string;
|
|
102
|
+
unknown: readonly string[];
|
|
95
103
|
} | {
|
|
96
104
|
type: 'process';
|
|
97
105
|
conversation_id: string;
|
|
@@ -104,6 +112,14 @@ export type HouseStreamFrame = {
|
|
|
104
112
|
type: 'options';
|
|
105
113
|
conversation_id: string;
|
|
106
114
|
options: LiveFact<'options'>['options'];
|
|
115
|
+
} | {
|
|
116
|
+
type: 'starting';
|
|
117
|
+
conversation_id: string;
|
|
118
|
+
step: string | null;
|
|
119
|
+
} | {
|
|
120
|
+
type: 'link';
|
|
121
|
+
conversation_id: string;
|
|
122
|
+
connected: boolean;
|
|
107
123
|
} | {
|
|
108
124
|
type: 'conversations';
|
|
109
125
|
conversations: readonly HouseListedConversation[];
|
|
@@ -139,22 +155,27 @@ export type HouseOpening = {
|
|
|
139
155
|
received(authority: string, carry: string, index: number): void;
|
|
140
156
|
close(): void;
|
|
141
157
|
};
|
|
158
|
+
export type HouseClosing = {
|
|
159
|
+
revoked: boolean;
|
|
160
|
+
lost: boolean;
|
|
161
|
+
};
|
|
142
162
|
export type HouseStream = {
|
|
143
163
|
observe(receive: (frame: HouseStreamFrame) => void): () => void;
|
|
144
164
|
opened(notify: (opening: HouseOpening) => void): () => void;
|
|
145
|
-
closed(notify: (
|
|
165
|
+
closed(notify: (closing: HouseClosing) => void): () => void;
|
|
146
166
|
};
|
|
147
167
|
export type HouseDoor = {
|
|
148
|
-
door(route: string, body: unknown): Promise<HouseDoorAnswer>;
|
|
168
|
+
door(route: string, body: unknown, arriving?: (bytes: number) => void): Promise<HouseDoorAnswer>;
|
|
149
169
|
stream: HouseStream;
|
|
150
170
|
};
|
|
151
171
|
export type HouseTransport = HouseDoor & {
|
|
152
172
|
transfer(request: HouseByteTransfer): Promise<HouseDoorAnswer>;
|
|
173
|
+
put(url: string, body: Blob, headers: Readonly<Record<string, string>>): Promise<number>;
|
|
153
174
|
download(url: string): Promise<HouseBytesAnswer>;
|
|
154
175
|
};
|
|
155
176
|
export type HouseSiteTransport = HouseDoor & {
|
|
156
177
|
online(): boolean;
|
|
157
|
-
read(route: string): Promise<HouseDoorAnswer>;
|
|
178
|
+
read(route: string, arriving?: (bytes: number) => void): Promise<HouseDoorAnswer>;
|
|
158
179
|
download(route: string): Promise<HouseBytesAnswer>;
|
|
159
180
|
};
|
|
160
181
|
export {};
|
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,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/transport.js
CHANGED
|
@@ -9,5 +9,6 @@ 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
11
|
export const DOOR_FILES_GET = '/door/files/get';
|
|
12
|
+
export const DOOR_FILES_ATTACH = '/door/files/attach';
|
|
13
|
+
export const DOOR_FILES_FINISH = '/door/files/finish';
|
|
12
14
|
export const SITE_FILES = '/_house/files/';
|
|
13
|
-
export const SITE_FILE_RECORD = 'record';
|
package/dist/upload.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type HouseDoorAnswer, type HouseTransport } from './transport.js';
|
|
2
|
+
export type HouseUpload = {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly partBytes: number;
|
|
5
|
+
readonly parts: readonly {
|
|
6
|
+
readonly part: number;
|
|
7
|
+
readonly url: string;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
export declare function houseUpload(value: unknown): HouseUpload | null;
|
|
11
|
+
export declare function finishedUpload(transport: HouseTransport, first: HouseUpload, blob: Blob): Promise<HouseDoorAnswer | null>;
|
|
12
|
+
//# sourceMappingURL=upload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../src/upload.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5E,CAAC;AAeF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAQ9D;AA8BD,wBAAsB,cAAc,CAClC,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAejC"}
|
package/dist/upload.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { sha256 } from '@agentshouse/mdruntime/digest';
|
|
2
|
+
import { DOOR_FILES_FINISH } from './transport.js';
|
|
3
|
+
const FINISHING_ROUNDS = 24;
|
|
4
|
+
function record(value) {
|
|
5
|
+
return value !== null && typeof value === 'object' ? value : {};
|
|
6
|
+
}
|
|
7
|
+
function part(value) {
|
|
8
|
+
const { part: number, url } = record(value);
|
|
9
|
+
return Number.isSafeInteger(number) && number > 0 && typeof url === 'string'
|
|
10
|
+
? { part: number, url }
|
|
11
|
+
: null;
|
|
12
|
+
}
|
|
13
|
+
export function houseUpload(value) {
|
|
14
|
+
const { id, part_bytes: partBytes, parts = [] } = record(value);
|
|
15
|
+
if (typeof id !== 'string' || !Number.isSafeInteger(partBytes) || partBytes <= 0)
|
|
16
|
+
return null;
|
|
17
|
+
if (!Array.isArray(parts))
|
|
18
|
+
return null;
|
|
19
|
+
const named = parts.map(part);
|
|
20
|
+
if (named.some((one) => one === null))
|
|
21
|
+
return null;
|
|
22
|
+
return { id, partBytes: partBytes, parts: named };
|
|
23
|
+
}
|
|
24
|
+
function checksum(hex) {
|
|
25
|
+
let bytes = '';
|
|
26
|
+
for (let at = 0; at < hex.length; at += 2)
|
|
27
|
+
bytes += String.fromCharCode(Number.parseInt(hex.slice(at, at + 2), 16));
|
|
28
|
+
return { 'x-amz-checksum-sha256': btoa(bytes) };
|
|
29
|
+
}
|
|
30
|
+
async function partSha256(blob, partBytes) {
|
|
31
|
+
const parts = [];
|
|
32
|
+
for (let start = 0; start === 0 || start < blob.size; start += partBytes)
|
|
33
|
+
parts.push(await sha256(blob.slice(start, start + partBytes)));
|
|
34
|
+
return parts;
|
|
35
|
+
}
|
|
36
|
+
async function sent(transport, upload, blob, digests) {
|
|
37
|
+
for (const { part: number, url } of upload.parts) {
|
|
38
|
+
const start = (number - 1) * upload.partBytes;
|
|
39
|
+
const slice = blob.slice(start, start + upload.partBytes);
|
|
40
|
+
if ((await transport.put(url, slice, checksum(digests[number - 1]))) !== 200)
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
export async function finishedUpload(transport, first, blob) {
|
|
46
|
+
const digests = await partSha256(blob, first.partBytes);
|
|
47
|
+
let upload = first;
|
|
48
|
+
for (let round = 0; round < FINISHING_ROUNDS; round += 1) {
|
|
49
|
+
if (!(await sent(transport, upload, blob, digests)))
|
|
50
|
+
return null;
|
|
51
|
+
const answer = await transport.door(DOOR_FILES_FINISH, {
|
|
52
|
+
upload: upload.id,
|
|
53
|
+
part_sha256: digests,
|
|
54
|
+
});
|
|
55
|
+
if (answer.status !== 200)
|
|
56
|
+
return answer;
|
|
57
|
+
const missing = houseUpload(record(answer.body).upload);
|
|
58
|
+
if (missing === null)
|
|
59
|
+
return answer;
|
|
60
|
+
upload = missing;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
package/dist/write.d.ts
CHANGED
|
@@ -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,7 +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
|
|
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>;
|
|
25
36
|
export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
26
37
|
kind: 'unmapped';
|
|
27
38
|
}>): {
|
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,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"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"}
|
package/dist/write.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { departure, } from '@agentshouse/mdruntime';
|
|
2
|
-
import { binaryFileOf, headChange } from './read.js';
|
|
1
|
+
import { departure, ROW_WEIGHT, } from '@agentshouse/mdruntime';
|
|
2
|
+
import { answered, answering, binaryFileOf, headChange, revised } from './read.js';
|
|
3
3
|
import { sha256Hex, textBytes } from './digest.js';
|
|
4
4
|
import { nativePath, roomLocalPath } from './map.js';
|
|
5
5
|
import { classifyDoor, doorRefusal, scopedRefusal } from './refusal.js';
|
|
@@ -120,6 +120,24 @@ export function houseChanges(batch, handle) {
|
|
|
120
120
|
}
|
|
121
121
|
return { kind: 'changes', changes };
|
|
122
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
|
+
}
|
|
123
141
|
export function operationHead(batch) {
|
|
124
142
|
const writer = batch.writtenBy;
|
|
125
143
|
return writer === undefined
|
|
@@ -129,7 +147,7 @@ export function operationHead(batch) {
|
|
|
129
147
|
export function batchPaths(changes) {
|
|
130
148
|
return [
|
|
131
149
|
...new Set(changes.flatMap((change) => change.op === 'rename' ? [String(change.path), String(change.to)] : [String(change.path)])),
|
|
132
|
-
]
|
|
150
|
+
];
|
|
133
151
|
}
|
|
134
152
|
export function deltaBody(changes) {
|
|
135
153
|
return JSON.stringify({ changes });
|
|
@@ -144,16 +162,19 @@ export function uploadable(inline, bytes, bounds) {
|
|
|
144
162
|
export function deltaDigest(delta) {
|
|
145
163
|
return sha256Hex(delta);
|
|
146
164
|
}
|
|
147
|
-
function material(value, handle) {
|
|
165
|
+
function* material(value, handle, within = () => true) {
|
|
148
166
|
if (!Array.isArray(value))
|
|
149
167
|
return null;
|
|
150
168
|
const held = [];
|
|
151
169
|
for (const entry of value) {
|
|
170
|
+
yield ROW_WEIGHT;
|
|
152
171
|
if (typeof entry !== 'object' || entry === null)
|
|
153
172
|
return null;
|
|
154
173
|
const file = entry;
|
|
155
174
|
if (typeof file.path !== 'string')
|
|
156
175
|
return null;
|
|
176
|
+
if (!within(file.path))
|
|
177
|
+
continue;
|
|
157
178
|
if (file.content !== null && typeof file.content !== 'string')
|
|
158
179
|
return null;
|
|
159
180
|
if (file.revision !== null && file.revision !== undefined && typeof file.revision !== 'string')
|
|
@@ -181,15 +202,59 @@ function material(value, handle) {
|
|
|
181
202
|
}
|
|
182
203
|
return held;
|
|
183
204
|
}
|
|
184
|
-
function affectedOf(held) {
|
|
205
|
+
function* affectedOf(held) {
|
|
185
206
|
const affected = {};
|
|
186
207
|
for (const entry of held) {
|
|
187
208
|
if (entry.content !== null)
|
|
188
209
|
affected[entry.path] = entry.content;
|
|
210
|
+
yield ROW_WEIGHT;
|
|
189
211
|
}
|
|
190
212
|
return affected;
|
|
191
213
|
}
|
|
192
|
-
|
|
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) {
|
|
193
258
|
const refusal = doorRefusal(body);
|
|
194
259
|
if (refusal !== null && refusal.code === 'service_mode_write_halted') {
|
|
195
260
|
return { kind: 'write-halted' };
|
|
@@ -201,10 +266,10 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
201
266
|
}
|
|
202
267
|
if (refusal !== null && refusal.code === 'edit_conflict') {
|
|
203
268
|
const { current, ...fields } = refusal.fields;
|
|
204
|
-
const held = material(current, handle) ?? [];
|
|
269
|
+
const held = (yield* material(current, handle)) ?? [];
|
|
205
270
|
return {
|
|
206
271
|
kind: 'conflicted',
|
|
207
|
-
affected: affectedOf(held),
|
|
272
|
+
affected: yield* affectedOf(held),
|
|
208
273
|
code: refusal.code,
|
|
209
274
|
fields,
|
|
210
275
|
retryable: refusal.retryable,
|
|
@@ -228,8 +293,9 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
228
293
|
}
|
|
229
294
|
if (classified !== null && classified.kind !== 'scoped-refusal')
|
|
230
295
|
return classified;
|
|
231
|
-
if (classified !== null && status === 403)
|
|
296
|
+
if (classified !== null && status === 403 && refusal?.code === 'operation_denied') {
|
|
232
297
|
return classified;
|
|
298
|
+
}
|
|
233
299
|
if (refusal !== null && status >= 400) {
|
|
234
300
|
return {
|
|
235
301
|
kind: 'rejected',
|
|
@@ -243,39 +309,15 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
243
309
|
return { kind: 'transport-uncertainty' };
|
|
244
310
|
}
|
|
245
311
|
const held = body;
|
|
312
|
+
if (move !== undefined)
|
|
313
|
+
return yield* movedOutcome(held, move);
|
|
246
314
|
const at = readPosition(held);
|
|
247
315
|
if (at === null)
|
|
248
316
|
return { kind: 'transport-uncertainty' };
|
|
249
|
-
const contents = material(held.contents, handle);
|
|
317
|
+
const contents = yield* material(held.contents, handle);
|
|
250
318
|
if (contents === null)
|
|
251
319
|
return { kind: 'transport-uncertainty' };
|
|
252
|
-
|
|
253
|
-
const revisions = {};
|
|
254
|
-
const changes = {};
|
|
255
|
-
const binaryFiles = {};
|
|
256
|
-
const removals = [];
|
|
257
|
-
for (const entry of contents) {
|
|
258
|
-
if (entry.revision === null) {
|
|
259
|
-
removals.push(entry.path);
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
if (entry.content !== null)
|
|
263
|
-
documents[entry.path] = entry.content;
|
|
264
|
-
if (entry.binary !== undefined)
|
|
265
|
-
binaryFiles[entry.path] = entry.binary;
|
|
266
|
-
revisions[entry.path] = entry.revision;
|
|
267
|
-
if (entry.head !== undefined)
|
|
268
|
-
changes[entry.path] = entry.head;
|
|
269
|
-
}
|
|
270
|
-
return {
|
|
271
|
-
kind: 'accepted',
|
|
272
|
-
roomVersion: roomVersion(at),
|
|
273
|
-
documents,
|
|
274
|
-
revisions,
|
|
275
|
-
changes,
|
|
276
|
-
removals: removals.sort(),
|
|
277
|
-
...(Object.keys(binaryFiles).length === 0 ? {} : { binaryFiles }),
|
|
278
|
-
};
|
|
320
|
+
return { kind: 'accepted', ...(yield* acceptedOf(at, contents)) };
|
|
279
321
|
}
|
|
280
322
|
export function rejectedMapping(mapping) {
|
|
281
323
|
return {
|
|
@@ -296,26 +338,22 @@ export function revisionBody(input) {
|
|
|
296
338
|
function revisionAuthor(entry) {
|
|
297
339
|
const user = entry.author_user;
|
|
298
340
|
const site = entry.author_site;
|
|
299
|
-
const
|
|
300
|
-
|
|
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)
|
|
301
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 };
|
|
302
351
|
}
|
|
303
|
-
if (
|
|
304
|
-
return { kind: '
|
|
352
|
+
if (typeof inbox === 'string' && typeof inboxName === 'string') {
|
|
353
|
+
return { kind: 'inbox', id: inbox, name: inboxName };
|
|
305
354
|
}
|
|
306
355
|
return null;
|
|
307
356
|
}
|
|
308
|
-
function historyBinary(entry) {
|
|
309
|
-
if (entry.file === undefined)
|
|
310
|
-
return undefined;
|
|
311
|
-
const { file, bytes, media_type: mediaType, sha256 } = entry;
|
|
312
|
-
if (typeof file !== 'string' ||
|
|
313
|
-
typeof bytes !== 'number' ||
|
|
314
|
-
typeof mediaType !== 'string' ||
|
|
315
|
-
typeof sha256 !== 'string')
|
|
316
|
-
return null;
|
|
317
|
-
return { fileRef: file, byteLength: bytes, mediaType, sha256 };
|
|
318
|
-
}
|
|
319
357
|
export function historyOutcome(status, body, locator, request) {
|
|
320
358
|
const classified = classifyDoor(status, body, locator);
|
|
321
359
|
if (classified !== null)
|
|
@@ -340,13 +378,13 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
340
378
|
return {
|
|
341
379
|
kind: 'scoped-refusal',
|
|
342
380
|
locator,
|
|
343
|
-
scope: '
|
|
381
|
+
scope: 'operation',
|
|
344
382
|
code: 'retained_history_unavailable',
|
|
345
383
|
fields: { path: request.path, revision: request.revision },
|
|
346
384
|
retryable: false,
|
|
347
385
|
};
|
|
348
386
|
}
|
|
349
|
-
if (typeof named.
|
|
387
|
+
if (typeof named.media_type === 'string')
|
|
350
388
|
return { kind: 'no-history' };
|
|
351
389
|
if (typeof named.content !== 'string')
|
|
352
390
|
return { kind: 'transport-uncertainty' };
|
|
@@ -362,7 +400,7 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
362
400
|
typeof entry.created_at !== 'string') {
|
|
363
401
|
return { kind: 'transport-uncertainty' };
|
|
364
402
|
}
|
|
365
|
-
const binaryFile =
|
|
403
|
+
const binaryFile = binaryFileOf(entry);
|
|
366
404
|
if (binaryFile === null)
|
|
367
405
|
return { kind: 'transport-uncertainty' };
|
|
368
406
|
revisions.push({
|
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-ca231c2cbedb4",
|
|
4
4
|
"description": "Agents House Adapter for the MD Runtime",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"access": "public"
|
|
10
10
|
},
|
|
11
11
|
"engines": {
|
|
12
|
-
"node": ">=24.
|
|
12
|
+
"node": ">=24.22.1"
|
|
13
13
|
},
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
@@ -20,11 +20,15 @@
|
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
22
|
"dist",
|
|
23
|
-
"AGENTS.md",
|
|
24
23
|
"README.md",
|
|
25
24
|
"LICENSE"
|
|
26
25
|
],
|
|
27
26
|
"dependencies": {
|
|
28
|
-
"@agentshouse/mdruntime": "0.1.0-
|
|
27
|
+
"@agentshouse/mdruntime": "0.1.0-c08b314dc5105"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/agentshouse/core.git",
|
|
32
|
+
"directory": "mdruntime/packages/mdruntime-adapter"
|
|
29
33
|
}
|
|
30
34
|
}
|