@agentshouse/mdruntime-adapter 0.1.0-cc63dd043d0e2 → 0.1.0-cc710a8825617
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 +270 -183
- package/README.md +3 -3
- package/dist/actions.d.ts +63 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +154 -138
- package/dist/adapter.d.ts +1 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +325 -166
- package/dist/discovery.d.ts +6 -12
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +32 -36
- package/dist/gather.d.ts +1 -0
- package/dist/gather.d.ts.map +1 -1
- package/dist/gather.js +11 -6
- package/dist/handed.d.ts +15 -0
- package/dist/handed.d.ts.map +1 -0
- package/dist/handed.js +38 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/model.d.ts +7 -18
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +60 -39
- package/dist/read.d.ts +35 -7
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +164 -86
- package/dist/referrer.d.ts +7 -0
- package/dist/referrer.d.ts.map +1 -0
- package/dist/referrer.js +35 -0
- package/dist/refusal.d.ts +5 -9
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +31 -17
- package/dist/site.d.ts +1 -1
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +191 -107
- package/dist/stream.d.ts +10 -4
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js +391 -47
- package/dist/transport.d.ts +79 -11
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +3 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +10 -1
- package/dist/write.d.ts +2 -1
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +96 -14
- package/package.json +3 -4
- package/dist/links.d.ts +0 -12
- package/dist/links.d.ts.map +0 -1
- package/dist/links.js +0 -66
package/dist/transport.d.ts
CHANGED
|
@@ -9,28 +9,35 @@ 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' | 'conversation_file_upload' | 'binary_stage';
|
|
21
|
+
export type HouseByteBody = string | ArrayBuffer | Uint8Array | Blob;
|
|
22
|
+
export type HouseBytesAnswer = {
|
|
23
|
+
status: number;
|
|
24
|
+
blob: Blob | null;
|
|
25
|
+
};
|
|
21
26
|
export type HouseByteTransfer = {
|
|
22
27
|
act: HouseByteAct;
|
|
23
|
-
method: 'GET' | 'POST';
|
|
24
28
|
url: string;
|
|
25
|
-
|
|
26
|
-
body?: HouseByteBody;
|
|
29
|
+
body: HouseByteBody;
|
|
27
30
|
operation?: string;
|
|
28
31
|
};
|
|
29
32
|
export type HouseStreamEntry = {
|
|
30
33
|
path: string;
|
|
31
|
-
kind: 'edited' | 'removed';
|
|
34
|
+
kind: 'edited' | 'removed' | 'piece';
|
|
32
35
|
revision?: string;
|
|
36
|
+
sha256?: string;
|
|
33
37
|
text?: string;
|
|
38
|
+
file?: string;
|
|
39
|
+
bytes?: number;
|
|
40
|
+
media_type?: string;
|
|
34
41
|
author?: {
|
|
35
42
|
user: string;
|
|
36
43
|
name: string;
|
|
@@ -39,17 +46,40 @@ export type HouseStreamEntry = {
|
|
|
39
46
|
name: string;
|
|
40
47
|
};
|
|
41
48
|
created_at?: string;
|
|
49
|
+
continued?: true;
|
|
42
50
|
};
|
|
43
51
|
type LiveFact<K extends ConversationEvent['kind']> = Extract<ConversationEvent, {
|
|
44
52
|
kind: K;
|
|
45
53
|
}>;
|
|
54
|
+
export type HouseListedConversation = {
|
|
55
|
+
conversation_id: string;
|
|
56
|
+
agent_id: string;
|
|
57
|
+
name: string;
|
|
58
|
+
created_at: string;
|
|
59
|
+
finished_at: string | null;
|
|
60
|
+
outcome: string | null;
|
|
61
|
+
};
|
|
46
62
|
export type HouseStreamFrame = {
|
|
47
|
-
type: '
|
|
63
|
+
type: 'part';
|
|
48
64
|
authority: string;
|
|
65
|
+
carry: string;
|
|
66
|
+
index: number;
|
|
67
|
+
after: string;
|
|
68
|
+
from: string;
|
|
69
|
+
target: string;
|
|
70
|
+
handled: number;
|
|
71
|
+
entries: readonly HouseStreamEntry[];
|
|
72
|
+
} | {
|
|
73
|
+
type: 'carried';
|
|
74
|
+
authority: string;
|
|
75
|
+
carry: string;
|
|
76
|
+
parts: number;
|
|
49
77
|
after: string;
|
|
50
78
|
position: string;
|
|
51
79
|
log_epoch: string;
|
|
52
|
-
|
|
80
|
+
} | {
|
|
81
|
+
type: 'opening';
|
|
82
|
+
expired: readonly string[];
|
|
53
83
|
} | ({
|
|
54
84
|
type: 'turn';
|
|
55
85
|
conversation_id: string;
|
|
@@ -74,13 +104,49 @@ export type HouseStreamFrame = {
|
|
|
74
104
|
type: 'options';
|
|
75
105
|
conversation_id: string;
|
|
76
106
|
options: LiveFact<'options'>['options'];
|
|
107
|
+
} | {
|
|
108
|
+
type: 'conversations';
|
|
109
|
+
conversations: readonly HouseListedConversation[];
|
|
110
|
+
} | {
|
|
111
|
+
type: 'conversation';
|
|
112
|
+
conversation: HouseListedConversation;
|
|
113
|
+
} | {
|
|
114
|
+
type: 'conversation_deleted';
|
|
115
|
+
conversation_id: string;
|
|
77
116
|
} | {
|
|
78
117
|
type: 'signal';
|
|
79
118
|
service_mode: string;
|
|
80
119
|
};
|
|
120
|
+
export type HouseHeldCarry = {
|
|
121
|
+
id: string;
|
|
122
|
+
parts: number;
|
|
123
|
+
from: string;
|
|
124
|
+
target: string;
|
|
125
|
+
handled: number;
|
|
126
|
+
piece?: {
|
|
127
|
+
sha256: string;
|
|
128
|
+
offset: number;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
export type HouseHeldRoom = {
|
|
132
|
+
authority: string;
|
|
133
|
+
position: string;
|
|
134
|
+
log_epoch: string;
|
|
135
|
+
carry?: HouseHeldCarry;
|
|
136
|
+
};
|
|
137
|
+
export type HouseDemand = {
|
|
138
|
+
rooms: readonly string[];
|
|
139
|
+
conversations: boolean;
|
|
140
|
+
};
|
|
141
|
+
export type HouseOpening = {
|
|
142
|
+
hold(rooms: readonly HouseHeldRoom[], runtime: string, demand: HouseDemand | null): void;
|
|
143
|
+
received(authority: string, carry: string, index: number): void;
|
|
144
|
+
close(): void;
|
|
145
|
+
};
|
|
81
146
|
export type HouseStream = {
|
|
82
147
|
observe(receive: (frame: HouseStreamFrame) => void): () => void;
|
|
83
|
-
opened(notify: () => void): () => void;
|
|
148
|
+
opened(notify: (opening: HouseOpening) => void): () => void;
|
|
149
|
+
closed(notify: (revoked: boolean) => void): () => void;
|
|
84
150
|
};
|
|
85
151
|
export type HouseDoor = {
|
|
86
152
|
door(route: string, body: unknown): Promise<HouseDoorAnswer>;
|
|
@@ -88,10 +154,12 @@ export type HouseDoor = {
|
|
|
88
154
|
};
|
|
89
155
|
export type HouseTransport = HouseDoor & {
|
|
90
156
|
transfer(request: HouseByteTransfer): Promise<HouseDoorAnswer>;
|
|
157
|
+
download(url: string): Promise<HouseBytesAnswer>;
|
|
91
158
|
};
|
|
92
159
|
export type HouseSiteTransport = HouseDoor & {
|
|
93
160
|
online(): boolean;
|
|
94
161
|
read(route: string): Promise<HouseDoorAnswer>;
|
|
162
|
+
download(route: string): Promise<HouseBytesAnswer>;
|
|
95
163
|
};
|
|
96
164
|
export {};
|
|
97
165
|
//# 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,5 +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;
|
|
16
|
+
export declare function followsVersion(roomVersion: string, next: string): boolean;
|
|
15
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;
|
|
@@ -32,3 +32,12 @@ export function reachedVersion(roomVersion, target, currentEpoch) {
|
|
|
32
32
|
return BigInt(held.position) >= BigInt(wanted.position);
|
|
33
33
|
return held.logEpoch === currentEpoch;
|
|
34
34
|
}
|
|
35
|
+
export function followsVersion(roomVersion, next) {
|
|
36
|
+
const held = logPosition(roomVersion);
|
|
37
|
+
const following = logPosition(next);
|
|
38
|
+
if (held === null || following === null || held.logEpoch !== following.logEpoch)
|
|
39
|
+
return false;
|
|
40
|
+
if (!DECIMAL.test(held.position) || !DECIMAL.test(following.position))
|
|
41
|
+
return false;
|
|
42
|
+
return BigInt(following.position) === BigInt(held.position) + 1n;
|
|
43
|
+
}
|
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 = {
|
|
@@ -31,6 +31,7 @@ export declare function rejectedMapping(mapping: Extract<ChangeMapping, {
|
|
|
31
31
|
fields: {
|
|
32
32
|
path: string;
|
|
33
33
|
};
|
|
34
|
+
retryable: boolean;
|
|
34
35
|
};
|
|
35
36
|
export declare function revisionBody(input: {
|
|
36
37
|
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":"AAAA,OAAO,EAIL,KAAK,WAAW,EAEhB,KAAK,aAAa,EAElB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOlD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/D,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAwHrD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAQ9E;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAK/D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,MAAM,EAAE,CAQhF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAEpE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,uBAAuB,GAAG,kBAAkB,CAAC,GACtE,OAAO,CAKT;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1D;AAiDD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,cAAc,CAmFhB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;IAEjF,IAAI,EAAE,UAAU;IAChB,QAAQ;IACR,IAAI;IACJ,MAAM;QAAI,IAAI;;IACd,SAAS;EAEZ;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1B;AA4BD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,aAAa,CAyDf"}
|
package/dist/write.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { departure, } from '@agentshouse/mdruntime';
|
|
2
|
+
import { binaryFileOf, headChange, identities } from './read.js';
|
|
1
3
|
import { sha256Hex, textBytes } from './digest.js';
|
|
2
4
|
import { nativePath, roomLocalPath } from './map.js';
|
|
3
5
|
import { classifyDoor, doorRefusal, scopedRefusal } from './refusal.js';
|
|
@@ -72,6 +74,25 @@ function operationOf(batch, change, handle) {
|
|
|
72
74
|
const operation = created(change, path);
|
|
73
75
|
return operation === null ? { rule: 'type-missing' } : { operation };
|
|
74
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
|
+
}
|
|
75
96
|
const existence = priorExistence(batch, change.path);
|
|
76
97
|
if (existence === undefined)
|
|
77
98
|
return { rule: 'precondition-missing' };
|
|
@@ -137,6 +158,12 @@ function material(value, handle) {
|
|
|
137
158
|
return null;
|
|
138
159
|
if (file.revision !== null && file.revision !== undefined && typeof file.revision !== 'string')
|
|
139
160
|
return null;
|
|
161
|
+
const binary = binaryFileOf(file);
|
|
162
|
+
if (binary === null)
|
|
163
|
+
return null;
|
|
164
|
+
const head = headChange(file);
|
|
165
|
+
if (head === null)
|
|
166
|
+
return null;
|
|
140
167
|
let path;
|
|
141
168
|
try {
|
|
142
169
|
path = roomLocalPath(file.path, handle);
|
|
@@ -148,6 +175,8 @@ function material(value, handle) {
|
|
|
148
175
|
path,
|
|
149
176
|
content: file.content,
|
|
150
177
|
revision: typeof file.revision === 'string' ? file.revision : null,
|
|
178
|
+
...(binary === undefined ? {} : { binary }),
|
|
179
|
+
...(head === undefined ? {} : { head }),
|
|
151
180
|
});
|
|
152
181
|
}
|
|
153
182
|
return held;
|
|
@@ -165,12 +194,21 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
165
194
|
if (refusal !== null && refusal.code === 'service_mode_write_halted') {
|
|
166
195
|
return { kind: 'write-halted' };
|
|
167
196
|
}
|
|
168
|
-
if (refusal !== null && refusal.code === '
|
|
169
|
-
return
|
|
197
|
+
if (refusal !== null && refusal.code === 'expired') {
|
|
198
|
+
return refusal.fields.restored === true
|
|
199
|
+
? { kind: 'expired', restored: true }
|
|
200
|
+
: { kind: 'expired' };
|
|
201
|
+
}
|
|
170
202
|
if (refusal !== null && refusal.code === 'edit_conflict') {
|
|
171
203
|
const { current, ...fields } = refusal.fields;
|
|
172
204
|
const held = material(current, handle) ?? [];
|
|
173
|
-
return {
|
|
205
|
+
return {
|
|
206
|
+
kind: 'conflicted',
|
|
207
|
+
affected: affectedOf(held),
|
|
208
|
+
code: refusal.code,
|
|
209
|
+
fields,
|
|
210
|
+
retryable: refusal.retryable,
|
|
211
|
+
};
|
|
174
212
|
}
|
|
175
213
|
if (refusal !== null && status === 404) {
|
|
176
214
|
return scopedRefusal(locator, 'undisclosed', refusal);
|
|
@@ -180,15 +218,26 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
180
218
|
if (refusal?.retryable === true &&
|
|
181
219
|
typeof reset === 'string' &&
|
|
182
220
|
classified?.kind === 'transport-uncertainty') {
|
|
183
|
-
return {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
221
|
+
return {
|
|
222
|
+
kind: 'retryable-refusal',
|
|
223
|
+
code: refusal.code,
|
|
224
|
+
fields: refusal.fields,
|
|
225
|
+
retryable: true,
|
|
226
|
+
reset,
|
|
227
|
+
};
|
|
187
228
|
}
|
|
229
|
+
if (classified !== null && classified.kind !== 'scoped-refusal')
|
|
230
|
+
return classified;
|
|
188
231
|
if (classified !== null && status === 403)
|
|
189
232
|
return classified;
|
|
190
233
|
if (refusal !== null && status >= 400) {
|
|
191
|
-
return {
|
|
234
|
+
return {
|
|
235
|
+
kind: 'rejected',
|
|
236
|
+
affected: {},
|
|
237
|
+
code: refusal.code,
|
|
238
|
+
fields: refusal.fields,
|
|
239
|
+
retryable: refusal.retryable,
|
|
240
|
+
};
|
|
192
241
|
}
|
|
193
242
|
if (status !== 200 || typeof body !== 'object' || body === null) {
|
|
194
243
|
return { kind: 'transport-uncertainty' };
|
|
@@ -202,21 +251,31 @@ export function mutationOutcome(status, body, locator, handle) {
|
|
|
202
251
|
return { kind: 'transport-uncertainty' };
|
|
203
252
|
const documents = {};
|
|
204
253
|
const revisions = {};
|
|
254
|
+
const changes = {};
|
|
255
|
+
const binaryFiles = {};
|
|
205
256
|
const removals = [];
|
|
206
257
|
for (const entry of contents) {
|
|
207
|
-
if (entry.
|
|
258
|
+
if (entry.revision === null) {
|
|
208
259
|
removals.push(entry.path);
|
|
209
260
|
continue;
|
|
210
261
|
}
|
|
211
|
-
|
|
262
|
+
if (entry.content !== null)
|
|
263
|
+
documents[entry.path] = entry.content;
|
|
264
|
+
if (entry.binary !== undefined)
|
|
265
|
+
binaryFiles[entry.path] = entry.binary;
|
|
212
266
|
revisions[entry.path] = entry.revision;
|
|
267
|
+
if (entry.head !== undefined)
|
|
268
|
+
changes[entry.path] = entry.head;
|
|
213
269
|
}
|
|
214
270
|
return {
|
|
215
271
|
kind: 'accepted',
|
|
216
272
|
roomVersion: roomVersion(at),
|
|
217
273
|
documents,
|
|
218
274
|
revisions,
|
|
275
|
+
...identities(revisions),
|
|
276
|
+
changes,
|
|
219
277
|
removals: removals.sort(),
|
|
278
|
+
...(Object.keys(binaryFiles).length === 0 ? {} : { binaryFiles }),
|
|
220
279
|
};
|
|
221
280
|
}
|
|
222
281
|
export function rejectedMapping(mapping) {
|
|
@@ -225,6 +284,7 @@ export function rejectedMapping(mapping) {
|
|
|
225
284
|
affected: {},
|
|
226
285
|
code: mapping.rule,
|
|
227
286
|
fields: { path: mapping.path },
|
|
287
|
+
retryable: false,
|
|
228
288
|
};
|
|
229
289
|
}
|
|
230
290
|
export function revisionBody(input) {
|
|
@@ -246,11 +306,21 @@ function revisionAuthor(entry) {
|
|
|
246
306
|
}
|
|
247
307
|
return null;
|
|
248
308
|
}
|
|
309
|
+
function historyBinary(entry) {
|
|
310
|
+
if (entry.file === undefined)
|
|
311
|
+
return undefined;
|
|
312
|
+
const { file, bytes, media_type: mediaType, sha256 } = entry;
|
|
313
|
+
if (typeof file !== 'string' ||
|
|
314
|
+
typeof bytes !== 'number' ||
|
|
315
|
+
typeof mediaType !== 'string' ||
|
|
316
|
+
typeof sha256 !== 'string')
|
|
317
|
+
return null;
|
|
318
|
+
return { fileRef: file, byteLength: bytes, mediaType, sha256 };
|
|
319
|
+
}
|
|
249
320
|
export function historyOutcome(status, body, locator, request) {
|
|
250
321
|
const classified = classifyDoor(status, body, locator);
|
|
251
|
-
if (classified !== null)
|
|
252
|
-
return classified
|
|
253
|
-
}
|
|
322
|
+
if (classified !== null)
|
|
323
|
+
return classified;
|
|
254
324
|
if (status !== 200 || typeof body !== 'object' || body === null) {
|
|
255
325
|
return { kind: 'transport-uncertainty' };
|
|
256
326
|
}
|
|
@@ -274,8 +344,11 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
274
344
|
scope: 'content',
|
|
275
345
|
code: 'retained_history_unavailable',
|
|
276
346
|
fields: { path: request.path, revision: request.revision },
|
|
347
|
+
retryable: false,
|
|
277
348
|
};
|
|
278
349
|
}
|
|
350
|
+
if (typeof named.file === 'string')
|
|
351
|
+
return { kind: 'no-history' };
|
|
279
352
|
if (typeof named.content !== 'string')
|
|
280
353
|
return { kind: 'transport-uncertainty' };
|
|
281
354
|
return { kind: 'revision', content: named.content };
|
|
@@ -290,12 +363,21 @@ export function historyOutcome(status, body, locator, request) {
|
|
|
290
363
|
typeof entry.created_at !== 'string') {
|
|
291
364
|
return { kind: 'transport-uncertainty' };
|
|
292
365
|
}
|
|
293
|
-
|
|
366
|
+
const binaryFile = historyBinary(entry);
|
|
367
|
+
if (binaryFile === null)
|
|
368
|
+
return { kind: 'transport-uncertainty' };
|
|
369
|
+
revisions.push({
|
|
370
|
+
revision: entry.revision,
|
|
371
|
+
author,
|
|
372
|
+
time: entry.created_at,
|
|
373
|
+
...(binaryFile === undefined ? {} : { binaryFile }),
|
|
374
|
+
});
|
|
294
375
|
}
|
|
295
376
|
const next = held.next_before;
|
|
296
377
|
return {
|
|
297
378
|
kind: 'history',
|
|
298
379
|
revisions,
|
|
299
380
|
...(typeof next === 'number' ? { pageToken: String(next) } : {}),
|
|
381
|
+
...(held.deleted === true ? { deleted: true } : {}),
|
|
300
382
|
};
|
|
301
383
|
}
|
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-cc710a8825617",
|
|
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-cc7bd7a53214e"
|
|
28
|
+
"@agentshouse/mdruntime": "0.1.0-c5d09b1c896fb"
|
|
30
29
|
}
|
|
31
30
|
}
|
package/dist/links.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { HouseScope, HouseView } from './read.js';
|
|
2
|
-
import type { StreamedAdvancement } from './stream.js';
|
|
3
|
-
export type RoomLinks = {
|
|
4
|
-
roomVersion: string;
|
|
5
|
-
handed: ReadonlySet<string>;
|
|
6
|
-
paths: ReadonlyMap<string, ReadonlySet<string>>;
|
|
7
|
-
revisions: ReadonlyMap<string, string>;
|
|
8
|
-
};
|
|
9
|
-
export declare function scopeLinks(scope: HouseScope): RoomLinks;
|
|
10
|
-
export declare function enumeratedLinks(view: HouseView, earlier: RoomLinks | undefined): RoomLinks;
|
|
11
|
-
export declare function streamedLinks(held: RoomLinks, advanced: StreamedAdvancement): RoomLinks | null;
|
|
12
|
-
//# sourceMappingURL=links.d.ts.map
|
package/dist/links.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOvD,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAYF,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAWvD;AAOD,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAgB1F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAoB9F"}
|
package/dist/links.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { roomVersion } from './version.js';
|
|
2
|
-
const ATTACHMENT_REFERENCE = /at_[1-9a-hjkmnp-tv-z][0-9a-hjkmnp-tv-z]*\.[0-9a-hjkmnp-tv-z]/g;
|
|
3
|
-
const NONE = new Set();
|
|
4
|
-
function linkedBy(text) {
|
|
5
|
-
if (text === null)
|
|
6
|
-
return NONE;
|
|
7
|
-
const references = new Set(Array.from(text.matchAll(ATTACHMENT_REFERENCE), ([found]) => found));
|
|
8
|
-
return references.size === 0 ? NONE : references;
|
|
9
|
-
}
|
|
10
|
-
function handedOf(attachments) {
|
|
11
|
-
return new Set((attachments ?? []).map((attachment) => attachment.reference));
|
|
12
|
-
}
|
|
13
|
-
export function scopeLinks(scope) {
|
|
14
|
-
return {
|
|
15
|
-
roomVersion: roomVersion(scope),
|
|
16
|
-
handed: handedOf(scope.attachments),
|
|
17
|
-
paths: new Map(scope.contents.map(({ path, content }) => [path, linkedBy(content)])),
|
|
18
|
-
revisions: new Map(scope.files.flatMap(({ path, revision }) => revision === undefined ? [] : [[path, revision]])),
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function revised(revisions, path, revision) {
|
|
22
|
-
if (revision === undefined)
|
|
23
|
-
revisions.delete(path);
|
|
24
|
-
else
|
|
25
|
-
revisions.set(path, revision);
|
|
26
|
-
}
|
|
27
|
-
export function enumeratedLinks(view, earlier) {
|
|
28
|
-
const paths = new Map(earlier?.paths);
|
|
29
|
-
const revisions = new Map(earlier?.revisions);
|
|
30
|
-
for (const change of view.changes) {
|
|
31
|
-
paths.set(change.path, linkedBy('content' in change ? change.content : null));
|
|
32
|
-
revised(revisions, change.path, 'removed' in change
|
|
33
|
-
? undefined
|
|
34
|
-
: 'reference' in change
|
|
35
|
-
? change.reference.revision
|
|
36
|
-
: change.revision);
|
|
37
|
-
}
|
|
38
|
-
return { roomVersion: roomVersion(view), handed: handedOf(view.attachments), paths, revisions };
|
|
39
|
-
}
|
|
40
|
-
export function streamedLinks(held, advanced) {
|
|
41
|
-
const paths = new Map(held.paths);
|
|
42
|
-
const revisions = new Map(held.revisions);
|
|
43
|
-
const dropped = new Set();
|
|
44
|
-
for (const entry of advanced.entries) {
|
|
45
|
-
revised(revisions, entry.path, entry.kind === 'removed' ? undefined : entry.revision);
|
|
46
|
-
const text = entry.kind === 'removed' ? null : entry.text;
|
|
47
|
-
if (text === undefined)
|
|
48
|
-
return null;
|
|
49
|
-
const linked = linkedBy(text);
|
|
50
|
-
for (const reference of linked)
|
|
51
|
-
if (!held.handed.has(reference))
|
|
52
|
-
return null;
|
|
53
|
-
for (const reference of paths.get(entry.path) ?? held.handed) {
|
|
54
|
-
if (held.handed.has(reference) && !linked.has(reference))
|
|
55
|
-
dropped.add(reference);
|
|
56
|
-
}
|
|
57
|
-
paths.set(entry.path, linked);
|
|
58
|
-
}
|
|
59
|
-
for (const references of paths.values()) {
|
|
60
|
-
for (const reference of references)
|
|
61
|
-
dropped.delete(reference);
|
|
62
|
-
}
|
|
63
|
-
if (dropped.size > 0)
|
|
64
|
-
return null;
|
|
65
|
-
return { roomVersion: advanced.page.roomVersion, handed: held.handed, paths, revisions };
|
|
66
|
-
}
|