@agentshouse/mdruntime-adapter 0.1.0-cfdb3a66f1a92 → 0.1.0-cfe552b74bdf7
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 +3 -42
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +3 -332
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +278 -277
- 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 +14 -12
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +65 -50
- package/dist/history.d.ts +12 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +91 -0
- package/dist/house-model.d.ts +892 -0
- package/dist/house-model.d.ts.map +1 -0
- package/dist/house-model.js +482 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/model.d.ts +5 -3
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +10 -32
- package/dist/part.d.ts +14 -0
- package/dist/part.d.ts.map +1 -0
- package/dist/part.js +90 -0
- package/dist/read.d.ts +52 -43
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +247 -203
- package/dist/refusal.d.ts +0 -3
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +2 -6
- package/dist/room-stream.d.ts +19 -0
- package/dist/room-stream.d.ts.map +1 -0
- package/dist/room-stream.js +57 -0
- package/dist/room-types.d.ts +7 -0
- package/dist/room-types.d.ts.map +1 -0
- package/dist/room-types.js +125 -0
- package/dist/search.d.ts +5 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +47 -0
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +115 -130
- package/dist/stream.d.ts +12 -12
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +206 -158
- package/dist/transport.d.ts +81 -24
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +55 -11
- package/dist/upload.d.ts +12 -0
- package/dist/upload.d.ts.map +1 -0
- package/dist/upload.js +63 -0
- 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 +18 -2
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +110 -71
- package/package.json +8 -5
- package/AGENTS.md +0 -318
- package/dist/gather.d.ts +0 -4
- package/dist/gather.d.ts.map +0 -1
- package/dist/gather.js +0 -45
- 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.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,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/transport.js
CHANGED
|
@@ -1,13 +1,57 @@
|
|
|
1
|
-
export const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
export const HOUSE_RUNTIME_READS = {
|
|
2
|
+
acts: [
|
|
3
|
+
'account/push',
|
|
4
|
+
'agents/read',
|
|
5
|
+
'apps/features/set',
|
|
6
|
+
'apps/source/download',
|
|
7
|
+
'apps/source/top',
|
|
8
|
+
'batch',
|
|
9
|
+
'batch-upload',
|
|
10
|
+
'bootstrap',
|
|
11
|
+
'conversations/history',
|
|
12
|
+
'discover',
|
|
13
|
+
'files/attach',
|
|
14
|
+
'files/finish',
|
|
15
|
+
'files/get',
|
|
16
|
+
'revisions',
|
|
17
|
+
'search',
|
|
18
|
+
'sites/screenshot/read',
|
|
19
|
+
],
|
|
20
|
+
frames: [
|
|
21
|
+
'app-message',
|
|
22
|
+
'app-release',
|
|
23
|
+
'authority_changed',
|
|
24
|
+
'carried',
|
|
25
|
+
'caught_up',
|
|
26
|
+
'commands',
|
|
27
|
+
'conversation',
|
|
28
|
+
'conversation_deleted',
|
|
29
|
+
'conversations',
|
|
30
|
+
'deliveries',
|
|
31
|
+
'deployment',
|
|
32
|
+
'held',
|
|
33
|
+
'interactions',
|
|
34
|
+
'link',
|
|
35
|
+
'message',
|
|
36
|
+
'opening',
|
|
37
|
+
'options',
|
|
38
|
+
'part',
|
|
39
|
+
'process',
|
|
40
|
+
'received',
|
|
41
|
+
'signal',
|
|
42
|
+
'site',
|
|
43
|
+
'starting',
|
|
44
|
+
'subagents',
|
|
45
|
+
'tab-icon',
|
|
46
|
+
'turn',
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
export function houseDoorRoute(act) {
|
|
50
|
+
return `/door/${act}`;
|
|
51
|
+
}
|
|
52
|
+
export function houseSiteRoute(act) {
|
|
53
|
+
return `/_house/door/${act}`;
|
|
54
|
+
}
|
|
55
|
+
export const SITE_SUBMISSION = 'site/submission';
|
|
10
56
|
export const SITE_DOOR_SUBMIT = '/_house/door/submit';
|
|
11
|
-
export const DOOR_FILES_GET = '/door/files/get';
|
|
12
57
|
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,EAAkB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3F,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 { houseDoorRoute } 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(houseDoorRoute('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/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
|
@@ -10,18 +10,34 @@ export type ChangeMapping = {
|
|
|
10
10
|
rule: string;
|
|
11
11
|
};
|
|
12
12
|
export declare function houseChanges(batch: ChangeBatch, handle: string): ChangeMapping;
|
|
13
|
+
export declare function houseParts(saved: readonly {
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly parts: unknown;
|
|
16
|
+
}[], handle: string): ChangeMapping;
|
|
17
|
+
export declare function houseMove(batch: ChangeBatch, source: string, destination: string): ChangeMapping;
|
|
13
18
|
export type OperationHead = {
|
|
14
19
|
readonly operation_id: string;
|
|
20
|
+
readonly room_ref: string;
|
|
15
21
|
readonly app_ref?: string;
|
|
16
22
|
readonly release?: string;
|
|
17
23
|
};
|
|
18
|
-
export declare function operationHead(batch: ChangeBatch): OperationHead;
|
|
24
|
+
export declare function operationHead(batch: ChangeBatch, room: string): OperationHead;
|
|
19
25
|
export declare function batchPaths(changes: readonly HouseOperation[]): readonly string[];
|
|
20
26
|
export declare function deltaBody(changes: readonly HouseOperation[]): string;
|
|
21
27
|
export declare function deltaBytes(delta: string): number;
|
|
22
28
|
export declare function uploadable(inline: Readonly<Record<string, unknown>>, bytes: number, bounds: Pick<HouseBounds, 'max_inline_body_bytes' | 'max_upload_bytes'>): boolean;
|
|
23
29
|
export declare function deltaDigest(delta: string): Promise<string>;
|
|
24
|
-
export
|
|
30
|
+
export type MoveAuthorities = {
|
|
31
|
+
readonly source: {
|
|
32
|
+
readonly authority: string;
|
|
33
|
+
readonly handle: string;
|
|
34
|
+
};
|
|
35
|
+
readonly destination: {
|
|
36
|
+
readonly authority: string;
|
|
37
|
+
readonly handle: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export declare function mutationOutcome(status: number, body: unknown, locator: string, handle: string, move?: MoveAuthorities): Generator<number, MutationResult, void>;
|
|
25
41
|
export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
26
42
|
kind: 'unmapped';
|
|
27
43
|
}>): {
|
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, partsChanges, 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,16 +120,36 @@ export function houseChanges(batch, handle) {
|
|
|
120
120
|
}
|
|
121
121
|
return { kind: 'changes', changes };
|
|
122
122
|
}
|
|
123
|
-
export function
|
|
123
|
+
export function houseParts(saved, handle) {
|
|
124
|
+
return houseChanges({ id: '', baseRoomVersion: '', ...partsChanges(saved) }, handle);
|
|
125
|
+
}
|
|
126
|
+
export function houseMove(batch, source, destination) {
|
|
127
|
+
const changes = [];
|
|
128
|
+
for (const { path, to } of batch.between?.moves ?? []) {
|
|
129
|
+
const existence = priorExistence(batch, path);
|
|
130
|
+
if (existence === undefined)
|
|
131
|
+
return { kind: 'unmapped', path, rule: 'precondition-missing' };
|
|
132
|
+
if (!('base' in existence)) {
|
|
133
|
+
return { kind: 'unmapped', path, rule: 'presence-base-unrepresentable' };
|
|
134
|
+
}
|
|
135
|
+
changes.push({
|
|
136
|
+
op: 'rename',
|
|
137
|
+
path: nativePath(path, source),
|
|
138
|
+
to: nativePath(to, destination),
|
|
139
|
+
base: existence.base,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return { kind: 'changes', changes };
|
|
143
|
+
}
|
|
144
|
+
export function operationHead(batch, room) {
|
|
124
145
|
const writer = batch.writtenBy;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
: { operation_id: batch.id, app_ref: writer.app, release: writer.release };
|
|
146
|
+
const head = { operation_id: batch.id, room_ref: room };
|
|
147
|
+
return writer === undefined ? head : { ...head, app_ref: writer.app, release: writer.release };
|
|
128
148
|
}
|
|
129
149
|
export function batchPaths(changes) {
|
|
130
150
|
return [
|
|
131
151
|
...new Set(changes.flatMap((change) => change.op === 'rename' ? [String(change.path), String(change.to)] : [String(change.path)])),
|
|
132
|
-
]
|
|
152
|
+
];
|
|
133
153
|
}
|
|
134
154
|
export function deltaBody(changes) {
|
|
135
155
|
return JSON.stringify({ changes });
|
|
@@ -144,16 +164,19 @@ export function uploadable(inline, bytes, bounds) {
|
|
|
144
164
|
export function deltaDigest(delta) {
|
|
145
165
|
return sha256Hex(delta);
|
|
146
166
|
}
|
|
147
|
-
function material(value, handle) {
|
|
167
|
+
function* material(value, handle, within = () => true) {
|
|
148
168
|
if (!Array.isArray(value))
|
|
149
169
|
return null;
|
|
150
170
|
const held = [];
|
|
151
171
|
for (const entry of value) {
|
|
172
|
+
yield ROW_WEIGHT;
|
|
152
173
|
if (typeof entry !== 'object' || entry === null)
|
|
153
174
|
return null;
|
|
154
175
|
const file = entry;
|
|
155
176
|
if (typeof file.path !== 'string')
|
|
156
177
|
return null;
|
|
178
|
+
if (!within(file.path))
|
|
179
|
+
continue;
|
|
157
180
|
if (file.content !== null && typeof file.content !== 'string')
|
|
158
181
|
return null;
|
|
159
182
|
if (file.revision !== null && file.revision !== undefined && typeof file.revision !== 'string')
|
|
@@ -181,27 +204,74 @@ function material(value, handle) {
|
|
|
181
204
|
}
|
|
182
205
|
return held;
|
|
183
206
|
}
|
|
184
|
-
function affectedOf(held) {
|
|
207
|
+
function* affectedOf(held) {
|
|
185
208
|
const affected = {};
|
|
186
209
|
for (const entry of held) {
|
|
187
210
|
if (entry.content !== null)
|
|
188
211
|
affected[entry.path] = entry.content;
|
|
212
|
+
yield ROW_WEIGHT;
|
|
189
213
|
}
|
|
190
214
|
return affected;
|
|
191
215
|
}
|
|
192
|
-
|
|
216
|
+
function* acceptedOf(at, contents) {
|
|
217
|
+
const answer = answering();
|
|
218
|
+
for (const entry of contents) {
|
|
219
|
+
yield ROW_WEIGHT + (entry.content?.length ?? 0);
|
|
220
|
+
if (entry.revision === null) {
|
|
221
|
+
answer.removals.add(entry.path);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
if (entry.content !== null)
|
|
225
|
+
answer.documents.set(entry.path, entry.content);
|
|
226
|
+
if (entry.binary !== undefined)
|
|
227
|
+
answer.binaryFiles.set(entry.path, entry.binary);
|
|
228
|
+
revised(answer, entry.path, entry.revision);
|
|
229
|
+
if (entry.head !== undefined)
|
|
230
|
+
answer.changes.set(entry.path, entry.head);
|
|
231
|
+
}
|
|
232
|
+
const unbinaried = answer.binaryFiles.size === 0;
|
|
233
|
+
const { binaryFiles, ...room } = yield* answered(answer);
|
|
234
|
+
return { roomVersion: roomVersion(at), ...room, ...(unbinaried ? {} : { binaryFiles }) };
|
|
235
|
+
}
|
|
236
|
+
function* movedOutcome(held, move) {
|
|
237
|
+
const authorities = Array.isArray(held.authorities) ? held.authorities : [];
|
|
238
|
+
const at = (authority) => {
|
|
239
|
+
const entry = authorities.find((one) => typeof one === 'object' &&
|
|
240
|
+
one !== null &&
|
|
241
|
+
one.authority === authority);
|
|
242
|
+
return entry === undefined ? null : readPosition(entry);
|
|
243
|
+
};
|
|
244
|
+
const left = at(move.source.authority);
|
|
245
|
+
const arrived = at(move.destination.authority);
|
|
246
|
+
if (left === null || arrived === null)
|
|
247
|
+
return { kind: 'transport-uncertainty' };
|
|
248
|
+
const under = (handle) => (path) => path.startsWith(`/rooms/${handle}/`);
|
|
249
|
+
const leaving = yield* material(held.contents, move.source.handle, under(move.source.handle));
|
|
250
|
+
const arriving = yield* material(held.contents, move.destination.handle, under(move.destination.handle));
|
|
251
|
+
if (leaving === null || arriving === null)
|
|
252
|
+
return { kind: 'transport-uncertainty' };
|
|
253
|
+
return {
|
|
254
|
+
kind: 'accepted',
|
|
255
|
+
...(yield* acceptedOf(left, leaving)),
|
|
256
|
+
destination: yield* acceptedOf(arrived, arriving),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
export function* mutationOutcome(status, body, locator, handle, move) {
|
|
193
260
|
const refusal = doorRefusal(body);
|
|
194
261
|
if (refusal !== null && refusal.code === 'service_mode_write_halted') {
|
|
195
262
|
return { kind: 'write-halted' };
|
|
196
263
|
}
|
|
197
|
-
if (refusal !== null && refusal.code === 'expired')
|
|
198
|
-
return
|
|
264
|
+
if (refusal !== null && refusal.code === 'expired') {
|
|
265
|
+
return refusal.fields.restored === true
|
|
266
|
+
? { kind: 'expired', restored: true }
|
|
267
|
+
: { kind: 'expired' };
|
|
268
|
+
}
|
|
199
269
|
if (refusal !== null && refusal.code === 'edit_conflict') {
|
|
200
270
|
const { current, ...fields } = refusal.fields;
|
|
201
|
-
const held = material(current, handle) ?? [];
|
|
271
|
+
const held = (yield* material(current, handle)) ?? [];
|
|
202
272
|
return {
|
|
203
273
|
kind: 'conflicted',
|
|
204
|
-
affected: affectedOf(held),
|
|
274
|
+
affected: yield* affectedOf(held),
|
|
205
275
|
code: refusal.code,
|
|
206
276
|
fields,
|
|
207
277
|
retryable: refusal.retryable,
|
|
@@ -225,8 +295,9 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
225
295
|
}
|
|
226
296
|
if (classified !== null && classified.kind !== 'scoped-refusal')
|
|
227
297
|
return classified;
|
|
228
|
-
if (classified !== null && status === 403)
|
|
298
|
+
if (classified !== null && status === 403 && refusal?.code === 'operation_denied') {
|
|
229
299
|
return classified;
|
|
300
|
+
}
|
|
230
301
|
if (refusal !== null && status >= 400) {
|
|
231
302
|
return {
|
|
232
303
|
kind: 'rejected',
|
|
@@ -240,39 +311,15 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
240
311
|
return { kind: 'transport-uncertainty' };
|
|
241
312
|
}
|
|
242
313
|
const held = body;
|
|
314
|
+
if (move !== undefined)
|
|
315
|
+
return yield* movedOutcome(held, move);
|
|
243
316
|
const at = readPosition(held);
|
|
244
317
|
if (at === null)
|
|
245
318
|
return { kind: 'transport-uncertainty' };
|
|
246
|
-
const contents = material(held.contents, handle);
|
|
319
|
+
const contents = yield* material(held.contents, handle);
|
|
247
320
|
if (contents === null)
|
|
248
321
|
return { kind: 'transport-uncertainty' };
|
|
249
|
-
|
|
250
|
-
const revisions = {};
|
|
251
|
-
const changes = {};
|
|
252
|
-
const binaryFiles = {};
|
|
253
|
-
const removals = [];
|
|
254
|
-
for (const entry of contents) {
|
|
255
|
-
if (entry.revision === null) {
|
|
256
|
-
removals.push(entry.path);
|
|
257
|
-
continue;
|
|
258
|
-
}
|
|
259
|
-
if (entry.content !== null)
|
|
260
|
-
documents[entry.path] = entry.content;
|
|
261
|
-
if (entry.binary !== undefined)
|
|
262
|
-
binaryFiles[entry.path] = entry.binary;
|
|
263
|
-
revisions[entry.path] = entry.revision;
|
|
264
|
-
if (entry.head !== undefined)
|
|
265
|
-
changes[entry.path] = entry.head;
|
|
266
|
-
}
|
|
267
|
-
return {
|
|
268
|
-
kind: 'accepted',
|
|
269
|
-
roomVersion: roomVersion(at),
|
|
270
|
-
documents,
|
|
271
|
-
revisions,
|
|
272
|
-
changes,
|
|
273
|
-
removals: removals.sort(),
|
|
274
|
-
...(Object.keys(binaryFiles).length === 0 ? {} : { binaryFiles }),
|
|
275
|
-
};
|
|
322
|
+
return { kind: 'accepted', ...(yield* acceptedOf(at, contents)) };
|
|
276
323
|
}
|
|
277
324
|
export function rejectedMapping(mapping) {
|
|
278
325
|
return {
|
|
@@ -292,27 +339,29 @@ export function revisionBody(input) {
|
|
|
292
339
|
}
|
|
293
340
|
function revisionAuthor(entry) {
|
|
294
341
|
const user = entry.author_user;
|
|
342
|
+
const userName = entry.author_user_name;
|
|
295
343
|
const site = entry.author_site;
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
344
|
+
const siteName = entry.author_site_name;
|
|
345
|
+
const inbox = entry.author_inbox;
|
|
346
|
+
const inboxName = entry.author_inbox_name;
|
|
347
|
+
const app = entry.author_app;
|
|
348
|
+
const appName = entry.author_app_name;
|
|
349
|
+
const named = [site, siteName, inbox, inboxName, app, appName].filter((held) => held !== undefined);
|
|
350
|
+
if (typeof user === 'string' && typeof userName === 'string' && named.length === 0)
|
|
351
|
+
return { kind: 'user', id: user, name: userName };
|
|
352
|
+
if (user !== null || userName !== undefined || named.length !== 2)
|
|
353
|
+
return null;
|
|
354
|
+
if (typeof site === 'string' && typeof siteName === 'string') {
|
|
355
|
+
return { kind: 'site', id: site, name: siteName };
|
|
299
356
|
}
|
|
300
|
-
if (
|
|
301
|
-
return { kind: '
|
|
357
|
+
if (typeof inbox === 'string' && typeof inboxName === 'string') {
|
|
358
|
+
return { kind: 'inbox', id: inbox, name: inboxName };
|
|
359
|
+
}
|
|
360
|
+
if (typeof app === 'string' && typeof appName === 'string') {
|
|
361
|
+
return { kind: 'app', id: app, name: appName };
|
|
302
362
|
}
|
|
303
363
|
return null;
|
|
304
364
|
}
|
|
305
|
-
function historyBinary(entry) {
|
|
306
|
-
if (entry.file === undefined)
|
|
307
|
-
return undefined;
|
|
308
|
-
const { file, bytes, media_type: mediaType, sha256 } = entry;
|
|
309
|
-
if (typeof file !== 'string' ||
|
|
310
|
-
typeof bytes !== 'number' ||
|
|
311
|
-
typeof mediaType !== 'string' ||
|
|
312
|
-
typeof sha256 !== 'string')
|
|
313
|
-
return null;
|
|
314
|
-
return { fileRef: file, byteLength: bytes, mediaType, sha256 };
|
|
315
|
-
}
|
|
316
365
|
export function historyOutcome(status, body, locator, request) {
|
|
317
366
|
const classified = classifyDoor(status, body, locator);
|
|
318
367
|
if (classified !== null)
|
|
@@ -333,17 +382,7 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
333
382
|
const named = entries[0];
|
|
334
383
|
if (named === undefined)
|
|
335
384
|
return { kind: 'no-history' };
|
|
336
|
-
if (named.
|
|
337
|
-
return {
|
|
338
|
-
kind: 'scoped-refusal',
|
|
339
|
-
locator,
|
|
340
|
-
scope: 'content',
|
|
341
|
-
code: 'retained_history_unavailable',
|
|
342
|
-
fields: { path: request.path, revision: request.revision },
|
|
343
|
-
retryable: false,
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
if (typeof named.file === 'string')
|
|
385
|
+
if (typeof named.media_type === 'string')
|
|
347
386
|
return { kind: 'no-history' };
|
|
348
387
|
if (typeof named.content !== 'string')
|
|
349
388
|
return { kind: 'transport-uncertainty' };
|
|
@@ -359,7 +398,7 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
359
398
|
typeof entry.created_at !== 'string') {
|
|
360
399
|
return { kind: 'transport-uncertainty' };
|
|
361
400
|
}
|
|
362
|
-
const binaryFile =
|
|
401
|
+
const binaryFile = binaryFileOf(entry);
|
|
363
402
|
if (binaryFile === null)
|
|
364
403
|
return { kind: 'transport-uncertainty' };
|
|
365
404
|
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-cfe552b74bdf7",
|
|
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,12 +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/
|
|
29
|
-
|
|
27
|
+
"@agentshouse/mdruntime": "0.1.0-c20970f71a6a9"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/agentshouse/core.git",
|
|
32
|
+
"directory": "mdruntime/packages/mdruntime-adapter"
|
|
30
33
|
}
|
|
31
34
|
}
|