@agentshouse/mdruntime 0.1.0-c69ca0e865e0b → 0.1.0-c6fd2cbbff187
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 +275 -275
- package/dist/acquisition.d.ts +14 -0
- package/dist/acquisition.d.ts.map +1 -0
- package/dist/acquisition.js +24 -0
- package/dist/adapter.d.ts +50 -9
- package/dist/adapter.d.ts.map +1 -1
- package/dist/bootstrap.d.ts +3 -2
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +26 -4
- package/dist/change-set.d.ts +2 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +36 -10
- package/dist/chat/acts.d.ts +3 -4
- package/dist/chat/acts.d.ts.map +1 -1
- package/dist/chat/acts.js +10 -10
- package/dist/chat/earlier.d.ts +10 -0
- package/dist/chat/earlier.d.ts.map +1 -0
- package/dist/chat/earlier.js +54 -0
- package/dist/chat/kit.d.ts +2 -1
- package/dist/chat/kit.d.ts.map +1 -1
- package/dist/chat/kit.js +3 -3
- package/dist/chat/list.d.ts +2 -1
- package/dist/chat/list.d.ts.map +1 -1
- package/dist/chat/list.js +42 -5
- package/dist/chat/message.d.ts.map +1 -1
- package/dist/chat/message.js +2 -2
- package/dist/chat/messages.d.ts +1 -0
- package/dist/chat/messages.d.ts.map +1 -1
- package/dist/chat/messages.js +4 -0
- package/dist/chat/provider.d.ts +1 -1
- package/dist/chat/provider.d.ts.map +1 -1
- package/dist/chat/provider.js +59 -69
- package/dist/chat/question.d.ts +1 -1
- package/dist/chat/question.d.ts.map +1 -1
- package/dist/chat/question.js +7 -18
- package/dist/chat/ready.d.ts +1 -0
- package/dist/chat/ready.d.ts.map +1 -1
- package/dist/chat/ready.js +2 -2
- package/dist/chat/style.js +1 -1
- package/dist/client.d.ts +14 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -6
- package/dist/collection.d.ts +17 -3
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +230 -19
- package/dist/connection.d.ts +27 -8
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1567 -362
- package/dist/conversation.d.ts +19 -7
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +438 -152
- package/dist/durability.d.ts +7 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/entry.d.ts +2 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +3 -3
- package/dist/fence.d.ts +6 -0
- package/dist/fence.d.ts.map +1 -0
- package/dist/fence.js +10 -0
- package/dist/host.d.ts +17 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +90 -9
- package/dist/identity.d.ts +2 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +6 -0
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/memory.d.ts +9 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +36 -7
- package/dist/model.d.ts +4 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +10 -1
- package/dist/observation.d.ts +7 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +29 -12
- package/dist/outcome.d.ts +12 -2
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +4 -0
- package/dist/overlay.d.ts +2 -0
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +58 -55
- package/dist/query.d.ts +56 -4
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +36 -7
- package/dist/reach.d.ts +6 -3
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +20 -5
- package/dist/react.d.ts +7 -4
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +6 -4
- package/dist/read-side.d.ts +13 -6
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +419 -92
- package/dist/readiness.d.ts +53 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +33 -0
- package/dist/reads.d.ts +11 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +98 -0
- package/dist/recovery.d.ts +25 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +197 -0
- package/dist/refresh.d.ts +4 -4
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +17 -10
- package/dist/replica.d.ts +6 -2
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +76 -23
- package/dist/room-draft.d.ts +13 -1
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +2 -2
- package/dist/rows.d.ts +6 -13
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +10 -13
- package/dist/save.d.ts +6 -0
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +53 -14
- package/dist/search.d.ts +49 -6
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +192 -47
- package/dist/seed.d.ts +16 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +75 -0
- package/dist/shared.d.ts +11 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +368 -0
- package/dist/status.d.ts +4 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/store.d.ts +56 -11
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +311 -84
- package/dist/turn.d.ts +7 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +45 -0
- package/dist/windows.d.ts +19 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +83 -0
- package/dist/wire.d.ts +144 -32
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +50 -31
- package/package.json +2 -2
package/dist/durability.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import type { Persistence } from './readiness.js';
|
|
2
|
+
export type StorageEstimate = {
|
|
3
|
+
readonly usage: number;
|
|
4
|
+
readonly quota: number;
|
|
5
|
+
};
|
|
1
6
|
export type RuntimeShell = {
|
|
2
|
-
|
|
7
|
+
persistence: Persistence;
|
|
3
8
|
generation: string | null;
|
|
4
9
|
keepGeneration(value: string): void | Promise<void>;
|
|
5
10
|
dropGeneration(): void | Promise<void>;
|
|
11
|
+
estimate?(): Promise<StorageEstimate | null>;
|
|
6
12
|
};
|
|
7
13
|
export declare function detectStorageLoss(stored: string | null, reported: string | null): string | null;
|
|
8
14
|
export declare function nextGeneration(stored: string | null, reported: string | null): string;
|
package/dist/durability.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durability.d.ts","sourceRoot":"","sources":["../src/durability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"durability.d.ts","sourceRoot":"","sources":["../src/durability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC9C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAG/F;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGrF"}
|
package/dist/entry.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type QueryRows } from './query.js';
|
|
2
2
|
export { QueryError } from './query.js';
|
|
3
3
|
export type EntryRoom = {
|
|
4
4
|
locator: string;
|
|
@@ -11,7 +11,7 @@ export declare function boundQuery(template: unknown, args: EntryArguments): unk
|
|
|
11
11
|
export declare function entryParameters(template: unknown): readonly string[];
|
|
12
12
|
export declare function entryRefusal(template: unknown): string | null;
|
|
13
13
|
export type EntryScope = {
|
|
14
|
-
results(queries: Readonly<Record<string, unknown>>): Promise<Record<string,
|
|
14
|
+
results(queries: Readonly<Record<string, unknown>>): Promise<Record<string, QueryRows>>;
|
|
15
15
|
};
|
|
16
16
|
export declare function entryScope(rooms: readonly EntryRoom[]): EntryScope;
|
|
17
17
|
//# sourceMappingURL=entry.d.ts.map
|
package/dist/entry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,SAAS,EAEf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AA0D7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAE3E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAMpE;AAkCD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7D;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACzF,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,CAsDlE"}
|
package/dist/entry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { attachedModel } from './attached-model.js';
|
|
2
|
-
import { collectionOf,
|
|
2
|
+
import { collectionOf, passingFrontmatter } from './collection.js';
|
|
3
3
|
import { NO_MODEL } from './model.js';
|
|
4
4
|
import { invalid, planOf, plain, QueryError, } from './query.js';
|
|
5
5
|
import { createReadSide } from './read-side.js';
|
|
@@ -131,7 +131,7 @@ export function entryScope(rooms) {
|
|
|
131
131
|
locator: room.locator,
|
|
132
132
|
path,
|
|
133
133
|
before: [],
|
|
134
|
-
after: rowsOf(room.locator, path,
|
|
134
|
+
after: rowsOf(room.locator, path, passingFrontmatter(collection, path) ?? null, composition, null, null, null),
|
|
135
135
|
}));
|
|
136
136
|
});
|
|
137
137
|
readSide.apply({
|
|
@@ -148,7 +148,7 @@ export function entryScope(rooms) {
|
|
|
148
148
|
async results(queries) {
|
|
149
149
|
const results = {};
|
|
150
150
|
for (const [name, query] of Object.entries(queries)) {
|
|
151
|
-
results[name] = await readSide.query(planOf(query, planned));
|
|
151
|
+
results[name] = (await readSide.query(planOf(query, planned), () => null)).rows;
|
|
152
152
|
}
|
|
153
153
|
return results;
|
|
154
154
|
},
|
package/dist/fence.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fence.d.ts","sourceRoot":"","sources":["../src/fence.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;;IAG9C,YAAY,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,EAG/C;IAEQ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAE5C;CACF"}
|
package/dist/fence.js
ADDED
package/dist/host.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type MdRuntimeOptions } from './connection.js';
|
|
2
|
+
import type { RuntimeDemand } from './acquisition.js';
|
|
2
3
|
import type { PortReach } from './reach.js';
|
|
4
|
+
import type { CapacityCause, CodeAvailability, Persistence, Readiness, SearchObligation } from './readiness.js';
|
|
5
|
+
import type { EntrySeed } from './seed.js';
|
|
3
6
|
import { type RuntimePort } from './wire.js';
|
|
4
7
|
export type MdRuntimeHostOptions = MdRuntimeOptions & {
|
|
5
8
|
deploymentFacts?: unknown;
|
|
@@ -7,14 +10,26 @@ export type MdRuntimeHostOptions = MdRuntimeOptions & {
|
|
|
7
10
|
export type AttachedPort = {
|
|
8
11
|
detach(): void;
|
|
9
12
|
narrow(reach: PortReach): void;
|
|
13
|
+
readiness(deliver: (readiness: Readiness) => void): () => void;
|
|
14
|
+
answered(queries: readonly unknown[], done: () => void): void;
|
|
15
|
+
code(code: CodeAvailability, capacity: CapacityCause | null): void;
|
|
16
|
+
search(search: SearchObligation): void;
|
|
10
17
|
};
|
|
11
18
|
export type MdRuntimeHost = {
|
|
12
|
-
attach(port: RuntimePort, app: string, release?: string, reach?: PortReach): AttachedPort;
|
|
19
|
+
attach(port: RuntimePort, app: string, release?: string, reach?: PortReach, code?: CodeAvailability, search?: SearchObligation): AttachedPort;
|
|
20
|
+
acquire(demand: RuntimeDemand): void;
|
|
21
|
+
seed(entry: EntrySeed): void;
|
|
22
|
+
persisted(answer: Persistence): void;
|
|
13
23
|
endAuthorization(holder?: string): Promise<void>;
|
|
24
|
+
lose(locators: readonly string[]): Promise<void>;
|
|
14
25
|
stop(): Promise<void>;
|
|
15
26
|
};
|
|
16
27
|
export declare function serveMdRuntime(options: MdRuntimeHostOptions): MdRuntimeHost;
|
|
28
|
+
export type { RuntimeDemand } from './acquisition.js';
|
|
29
|
+
export { entrySeedOf, type EntrySeed } from './seed.js';
|
|
17
30
|
export type { PortReach, ReachedDocument } from './reach.js';
|
|
18
|
-
export {
|
|
31
|
+
export type { CapacityCause, CodeAvailability, Persistence, SearchObligation, } from './readiness.js';
|
|
32
|
+
export { createRecovery, retryDelay, type Attempt, type Attempted, type AttemptOptions, type Recovery, type RecoveryOptions, } from './recovery.js';
|
|
33
|
+
export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, openDatabase, STORE_SCHEMA, } from './store.js';
|
|
19
34
|
export type { RuntimePort } from './wire.js';
|
|
20
35
|
//# sourceMappingURL=host.d.ts.map
|
package/dist/host.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,EAGtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAGL,KAAK,WAAW,EAOjB,MAAM,WAAW,CAAC;AAInB,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,gBAAgB,GACxB,YAAY,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AA6GF,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAyK3E;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/host.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { composeRuntime, } from './connection.js';
|
|
2
|
+
import { queryKey } from './query.js';
|
|
2
3
|
import { described } from './failure.js';
|
|
3
4
|
import { removeRuntimeStore } from './store.js';
|
|
4
|
-
import { AUTHORIZATION_ENDED, request,
|
|
5
|
+
import { AUTHORIZATION_ENDED, request, WIRE, } from './wire.js';
|
|
5
6
|
const NARROWED = new Set(['within', 'whole']);
|
|
6
7
|
function answered(md, app, writtenBy, member, input) {
|
|
7
8
|
switch (member) {
|
|
@@ -19,6 +20,8 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
19
20
|
return md.history(input[0], input[1], input[2]);
|
|
20
21
|
case 'binaryFile.read':
|
|
21
22
|
return md.binaryFile.read(input[0], input[1], input[2]);
|
|
23
|
+
case 'binaryFile.link':
|
|
24
|
+
return md.binaryFile.link(input[0], input[1], input[2]);
|
|
22
25
|
case 'binaryFile.readReference':
|
|
23
26
|
return md.binaryFile.readReference(input[0]);
|
|
24
27
|
case 'call':
|
|
@@ -29,6 +32,8 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
29
32
|
return md.log();
|
|
30
33
|
case 'persistence':
|
|
31
34
|
return md.persistence();
|
|
35
|
+
case 'retry':
|
|
36
|
+
return md.retry();
|
|
32
37
|
case 'reauthorize':
|
|
33
38
|
return md.reauthorize();
|
|
34
39
|
case 'roomDraft.list':
|
|
@@ -43,6 +48,8 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
43
48
|
return md.presentation.read(app);
|
|
44
49
|
case 'presentation.write':
|
|
45
50
|
return md.presentation.write(app, input[0]);
|
|
51
|
+
case 'presentation.edit':
|
|
52
|
+
return md.presentation.edit(app, input[0]);
|
|
46
53
|
case 'conversation.list':
|
|
47
54
|
return md.conversation.list();
|
|
48
55
|
case 'conversation.read':
|
|
@@ -50,7 +57,7 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
50
57
|
case 'conversation.create':
|
|
51
58
|
return md.conversation.create(input[0]);
|
|
52
59
|
case 'conversation.send':
|
|
53
|
-
return md.conversation.send(input[0]);
|
|
60
|
+
return md.conversation.send(input[0], input[1], input[2]);
|
|
54
61
|
case 'conversation.answer':
|
|
55
62
|
return md.conversation.answer(input[0], input[1]);
|
|
56
63
|
case 'conversation.interrupt':
|
|
@@ -67,6 +74,14 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
67
74
|
return md.chatDraft.discard(input[0]);
|
|
68
75
|
}
|
|
69
76
|
}
|
|
77
|
+
function answeredResult(value) {
|
|
78
|
+
return typeof value === 'object' && value !== null && !('pending' in value);
|
|
79
|
+
}
|
|
80
|
+
function answeredMessage(value) {
|
|
81
|
+
if (typeof value !== 'object' || value === null)
|
|
82
|
+
return false;
|
|
83
|
+
return !('result' in value) || answeredResult(value.result);
|
|
84
|
+
}
|
|
70
85
|
export function serveMdRuntime(options) {
|
|
71
86
|
const deploymentFacts = structuredClone(options.deploymentFacts);
|
|
72
87
|
const closing = new AbortController();
|
|
@@ -84,13 +99,25 @@ export function serveMdRuntime(options) {
|
|
|
84
99
|
deliver(structuredClone(deploymentFacts));
|
|
85
100
|
return () => { };
|
|
86
101
|
};
|
|
87
|
-
function attach(port, app, release, reach) {
|
|
102
|
+
function attach(port, app, release, reach, code = 'stored', search = 'unused') {
|
|
88
103
|
if (!authorized)
|
|
89
104
|
throw new Error(AUTHORIZATION_ENDED);
|
|
90
105
|
const writtenBy = release === undefined ? undefined : { app, release };
|
|
91
|
-
|
|
106
|
+
let facts = { target: app, code, capacity: null, search };
|
|
107
|
+
const view = runtime.within(reach ?? null, facts);
|
|
92
108
|
const observations = new Map();
|
|
109
|
+
const followed = new Set();
|
|
110
|
+
const answeredKeys = new Set();
|
|
111
|
+
let awaited = null;
|
|
93
112
|
let serving = true;
|
|
113
|
+
const answeredQuery = (query) => {
|
|
114
|
+
answeredKeys.add(queryKey(query));
|
|
115
|
+
if (awaited === null || !awaited.keys.every((key) => answeredKeys.has(key)))
|
|
116
|
+
return;
|
|
117
|
+
const { done } = awaited;
|
|
118
|
+
awaited = null;
|
|
119
|
+
done();
|
|
120
|
+
};
|
|
94
121
|
const send = (message) => {
|
|
95
122
|
port.postMessage(message);
|
|
96
123
|
};
|
|
@@ -101,6 +128,8 @@ export function serveMdRuntime(options) {
|
|
|
101
128
|
for (const end of observations.values())
|
|
102
129
|
end();
|
|
103
130
|
observations.clear();
|
|
131
|
+
for (const end of [...followed])
|
|
132
|
+
end();
|
|
104
133
|
attachments.delete(detach);
|
|
105
134
|
};
|
|
106
135
|
const observe = (id, topic, input) => {
|
|
@@ -110,10 +139,12 @@ export function serveMdRuntime(options) {
|
|
|
110
139
|
return;
|
|
111
140
|
send(resolved ? { kind: 'event', id, value } : { kind: 'result', id, value });
|
|
112
141
|
resolved = true;
|
|
142
|
+
if (topic === 'query' && answeredMessage(value))
|
|
143
|
+
answeredQuery(input[0]);
|
|
113
144
|
};
|
|
114
145
|
observations.set(id, topic === 'deployment-facts'
|
|
115
146
|
? watchFacts(deliver)
|
|
116
|
-
: (NARROWED.has(
|
|
147
|
+
: (NARROWED.has(WIRE.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
|
|
117
148
|
};
|
|
118
149
|
const serve = async (message) => {
|
|
119
150
|
if (message.kind === 'hello')
|
|
@@ -131,9 +162,12 @@ export function serveMdRuntime(options) {
|
|
|
131
162
|
observe(message.id, message.topic, message.input);
|
|
132
163
|
return;
|
|
133
164
|
}
|
|
134
|
-
const value = await answered(NARROWED.has(
|
|
135
|
-
if (serving)
|
|
136
|
-
|
|
165
|
+
const value = await answered(NARROWED.has(WIRE.members[message.member].reach) ? view.md : md, app, writtenBy, message.member, message.input);
|
|
166
|
+
if (!serving)
|
|
167
|
+
return;
|
|
168
|
+
send({ kind: 'result', id: message.id, value });
|
|
169
|
+
if (message.member === 'query' && answeredResult(value))
|
|
170
|
+
answeredQuery(message.input[0]);
|
|
137
171
|
}
|
|
138
172
|
catch (error) {
|
|
139
173
|
if (serving)
|
|
@@ -157,10 +191,52 @@ export function serveMdRuntime(options) {
|
|
|
157
191
|
if (serving)
|
|
158
192
|
view.narrow(next);
|
|
159
193
|
},
|
|
194
|
+
code(next, capacity) {
|
|
195
|
+
if (!serving)
|
|
196
|
+
return;
|
|
197
|
+
facts = { ...facts, code: next, capacity };
|
|
198
|
+
view.facts(facts);
|
|
199
|
+
},
|
|
200
|
+
search(next) {
|
|
201
|
+
if (!serving)
|
|
202
|
+
return;
|
|
203
|
+
facts = { ...facts, search: next };
|
|
204
|
+
view.facts(facts);
|
|
205
|
+
},
|
|
206
|
+
answered(queries, done) {
|
|
207
|
+
const keys = queries.map(queryKey);
|
|
208
|
+
if (keys.every((key) => answeredKeys.has(key)))
|
|
209
|
+
done();
|
|
210
|
+
else
|
|
211
|
+
awaited = { keys, done };
|
|
212
|
+
},
|
|
213
|
+
readiness(deliver) {
|
|
214
|
+
if (!serving)
|
|
215
|
+
return () => { };
|
|
216
|
+
const stop = view.watch('readiness', [], (value) => {
|
|
217
|
+
if (serving)
|
|
218
|
+
deliver(value);
|
|
219
|
+
});
|
|
220
|
+
const end = () => {
|
|
221
|
+
followed.delete(end);
|
|
222
|
+
stop();
|
|
223
|
+
};
|
|
224
|
+
followed.add(end);
|
|
225
|
+
return end;
|
|
226
|
+
},
|
|
160
227
|
};
|
|
161
228
|
}
|
|
162
229
|
return {
|
|
163
230
|
attach,
|
|
231
|
+
acquire(demand) {
|
|
232
|
+
runtime.acquire(demand);
|
|
233
|
+
},
|
|
234
|
+
seed(entry) {
|
|
235
|
+
runtime.seed(entry);
|
|
236
|
+
},
|
|
237
|
+
persisted(answer) {
|
|
238
|
+
runtime.persisted(answer);
|
|
239
|
+
},
|
|
164
240
|
async endAuthorization(holder) {
|
|
165
241
|
authorized = false;
|
|
166
242
|
for (const [detach, send] of [...attachments]) {
|
|
@@ -171,9 +247,14 @@ export function serveMdRuntime(options) {
|
|
|
171
247
|
if (!(await removeRuntimeStore(holder)))
|
|
172
248
|
await options.shell.dropGeneration();
|
|
173
249
|
},
|
|
250
|
+
lose(locators) {
|
|
251
|
+
return runtime.lose(locators);
|
|
252
|
+
},
|
|
174
253
|
stop() {
|
|
175
254
|
return runtime.stop();
|
|
176
255
|
},
|
|
177
256
|
};
|
|
178
257
|
}
|
|
179
|
-
export {
|
|
258
|
+
export { entrySeedOf } from './seed.js';
|
|
259
|
+
export { createRecovery, retryDelay, } from './recovery.js';
|
|
260
|
+
export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, openDatabase, STORE_SCHEMA, } from './store.js';
|
package/dist/identity.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare function changeBatchIdentity(at?: number): string;
|
|
2
|
+
export declare function identityTime(identity: string): number;
|
|
2
3
|
export declare function roomDraftRevision(): string;
|
|
3
4
|
export declare function chatDraftRevision(): string;
|
|
4
5
|
export declare function transferIdentity(): string;
|
|
6
|
+
export declare function indexGeneration(): string;
|
|
5
7
|
export declare function binaryLocalId(): string;
|
|
6
8
|
//# sourceMappingURL=identity.d.ts.map
|
package/dist/identity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/identity.js
CHANGED
|
@@ -10,6 +10,9 @@ export function changeBatchIdentity(at = Date.now()) {
|
|
|
10
10
|
const hex = [...bytes].map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
11
11
|
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
12
12
|
}
|
|
13
|
+
export function identityTime(identity) {
|
|
14
|
+
return Number.parseInt(identity.replaceAll('-', '').slice(0, 12), 16);
|
|
15
|
+
}
|
|
13
16
|
function randomIdentity() {
|
|
14
17
|
const bytes = new Uint8Array(16);
|
|
15
18
|
crypto.getRandomValues(bytes);
|
|
@@ -24,6 +27,9 @@ export function chatDraftRevision() {
|
|
|
24
27
|
export function transferIdentity() {
|
|
25
28
|
return randomIdentity();
|
|
26
29
|
}
|
|
30
|
+
export function indexGeneration() {
|
|
31
|
+
return randomIdentity();
|
|
32
|
+
}
|
|
27
33
|
export function binaryLocalId() {
|
|
28
34
|
return randomIdentity();
|
|
29
35
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
export type { AcceptedMessage, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BinaryFile, BinaryRequest, BinaryResult, ReferrerScope, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ChangeAuthor, ContractUnavailable, ConversationAction, ConversationAgents, ConversationEvent, ConversationHistories, ConversationHistoryPage, ConversationHistoryRequest, ConversationMessage, ConversationStream, DiscoverResult, DiscoveredRoom, Discovery, HistoryAuthor, HistoryRequest, HistoryResult, HistoryRetention, HistoryRevision, HeldRoom, ListedConversation, MdModelIdentity, Member, MutationRequest, MutationResult, PageToken, ProviderLimit, ProviderRefusal, RefreshPage, RefreshRequest, RefreshResult, Retention, RetryableRefusal, RevokedAuthorization, RoomModels, RoomNotReadable, RoomStream, RoomStreamEvent, RoomVersionAt, ServiceMode, ServiceModeSignal, TransportUncertainty, TurnContext, TurnOperation, TypedSelection, } from './adapter.js';
|
|
1
|
+
export type { AcquiredDemand, AcceptedMessage, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BinaryFile, BinaryLinkResult, BinaryRequest, BinaryResult, ReferrerScope, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ChangeAuthor, ContractUnavailable, ConversationAction, ConversationAgents, ConversationEvent, ConversationHistories, ConversationHistoryPage, ConversationHistoryRequest, ConversationMessage, ConversationStream, DiscoverResult, DiscoveredRoom, Discovery, HistoryAuthor, HistoryRequest, HistoryResult, HistoryRetention, HistoryRevision, HeldContent, HeldRoom, KeptReceipt, ListedConversation, MdModelIdentity, Member, MutationRequest, MutationResult, PageToken, ProviderLimit, ProviderRefusal, RefreshPage, RefreshRequest, RefreshResult, Retention, RetryableRefusal, RevokedAuthorization, RoomModels, RoomNotReadable, RoomStream, RoomStreamEvent, RoomVersionAt, ServiceMode, ServiceModeSignal, StreamReceipts, TransportUncertainty, TurnContext, TurnOperation, TypedSelection, } from './adapter.js';
|
|
2
2
|
export type { Change, ChangeBatch, Precondition, WrittenBy } from './change.js';
|
|
3
3
|
export type { ChatDraft, ChatDraftSurface, ConversationAgent, ConversationEntry, ConversationOptions, ConversationState, ConversationSurface, ConversationView, RunningTurn, } from './conversation.js';
|
|
4
4
|
export type { ChatDraftFile, FileDeclaration } from './file.js';
|
|
5
5
|
export type { AppRoom, AppTypedSelection, BinaryFileSurface, ConnectionRefusal, ConnectionRefusalCode, HistoryQuery, MdRuntime, MdRuntimeOptions, PresentationSurface, RoomDraftSurface, RoomSchemas, SavedRoomDraft, SaveResult, } from './connection.js';
|
|
6
6
|
export type { Observation } from './observation.js';
|
|
7
|
-
export type { BinaryAnswer, CallResult, Failure, HistoryAnswer, QueueEntry, Submission, } from './outcome.js';
|
|
7
|
+
export type { BinaryAnswer, BinaryLinkAnswer, CallResult, Failure, HistoryAnswer, Offline, QueueEntry, Submission, } from './outcome.js';
|
|
8
8
|
export type { BinaryFileRecord, BinaryReference } from './binary.js';
|
|
9
9
|
export type { RuntimeError } from './failure.js';
|
|
10
|
-
export type { ChangedPart, FieldValue, ReturnReason, RoomDraft, RoomDraftCreation, RoomDraftParts, RoomDraftWrite, } from './room-draft.js';
|
|
10
|
+
export type { ChangedPart, FieldValue, ReturnReason, RoomDraft, RoomDraftCreation, RoomDraftParts, RoomDraftWrite, TextParts, } from './room-draft.js';
|
|
11
11
|
export type { SaveRefusal } from './save.js';
|
|
12
|
-
export type { DocumentHit, DocumentPart, MessageHit, SearchRequest, SearchResult, } from './search.js';
|
|
12
|
+
export type { DocumentHit, DocumentPart, MessageHit, PendingConversation, SearchCoverage, SearchHits, SearchPending, SearchRequest, SearchResult, SearchUndeclared, } from './search.js';
|
|
13
13
|
export { departure } from './change.js';
|
|
14
|
+
export { partsAfter } from './room-draft.js';
|
|
15
|
+
export { SESSION_STARTED } from './conversation.js';
|
|
14
16
|
export { changeBatchIdentity } from './identity.js';
|
|
15
17
|
export { attempts, identities, intentOf, type Answered, type Attempt, type Attempts, type Identities, } from './attempt.js';
|
|
16
18
|
export { expectedList, expecting, type ExpectedOf, type Expecting } from './expectation.js';
|
|
17
|
-
export type { RuntimeShell } from './durability.js';
|
|
19
|
+
export type { RuntimeShell, StorageEstimate } from './durability.js';
|
|
20
|
+
export type { CapacityCause, CodeAvailability, ConnectionAvailability, ConversationCoverage, Durability, HouseOutcome, Persistence, Readiness, ReadinessStatus, RefusedRoom, RoomCoverage, RoomPreparation, SearchObligation, TargetCoverage, } from './readiness.js';
|
|
18
21
|
export type { AttentionEntry, SyncStatus } from './status.js';
|
|
19
|
-
export type { Backlink, Direction, DocumentQuery, DocumentResult, Filter, GroupQuery, GroupResult, Key, LocalQuery, OrderOptions, Predicate, QueryDocument, QueryGroup, QueryResult, Related, Select, Value, Where, } from './query.js';
|
|
22
|
+
export type { Awaits, Backlink, CoveredRoom, Direction, DocumentQuery, DocumentResult, Filter, GroupQuery, GroupResult, Key, LocalQuery, OrderOptions, PendingResult, PendingRoom, Predicate, QueryCoverage, QueryDocument, QueryGroup, QueryResult, QueryRows, Related, Select, Value, Where, } from './query.js';
|
|
20
23
|
export type { MdType, ModelIdentity, ModelSnapshot, ModelState, ModelResult, TypesResult, ValidationReceipt, } from './model.js';
|
|
21
24
|
export type { OperationScopes, ReplicaAdmission, ScopedRefusal } from './adapter.js';
|
|
22
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EACV,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,UAAU,EACV,OAAO,EACP,aAAa,EACb,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EACV,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,aAAa,EACb,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EACV,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,cAAc,EACd,MAAM,EACN,UAAU,EACV,WAAW,EACX,GAAG,EACH,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { departure } from './change.js';
|
|
2
|
+
export { partsAfter } from './room-draft.js';
|
|
3
|
+
export { SESSION_STARTED } from './conversation.js';
|
|
2
4
|
export { changeBatchIdentity } from './identity.js';
|
|
3
5
|
export { attempts, identities, intentOf, } from './attempt.js';
|
|
4
6
|
export { expectedList, expecting } from './expectation.js';
|
package/dist/memory.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ModelResult } from './model.js';
|
|
2
|
-
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type ListedConversation, type Member, type ProviderLimit, type Retention, type ServiceMode } from './adapter.js';
|
|
2
|
+
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type ListedConversation, type Member, type ProviderLimit, type Retention, type AcquiredDemand, type ServiceMode } from './adapter.js';
|
|
3
3
|
export type MemoryRoom = DiscoveredRoom & {
|
|
4
4
|
model?: ModelResult;
|
|
5
5
|
selectionModel?: ModelResult;
|
|
6
6
|
documents?: Readonly<Record<string, string>>;
|
|
7
7
|
revisions?: Readonly<Record<string, string>>;
|
|
8
|
+
fileIds?: Readonly<Record<string, string>>;
|
|
8
9
|
changes?: Readonly<Record<string, HeadChange>>;
|
|
9
10
|
binaryFiles?: Readonly<Record<string, BinaryFile>>;
|
|
10
11
|
blobs?: Readonly<Record<string, Blob>>;
|
|
@@ -25,21 +26,27 @@ export type MemoryAdapterOptions = {
|
|
|
25
26
|
retention?: Retention;
|
|
26
27
|
member?: Member;
|
|
27
28
|
unopened?: boolean;
|
|
29
|
+
exhaustiveDiscovery?: true;
|
|
28
30
|
};
|
|
29
31
|
export type MemoryAdapter = Adapter & {
|
|
30
32
|
setRooms(rooms: readonly MemoryRoom[]): void;
|
|
31
33
|
setConversations(conversations: readonly MemoryConversation[]): void;
|
|
32
34
|
script(operation: keyof Adapter, answer: unknown): void;
|
|
33
35
|
open(): void;
|
|
34
|
-
close(
|
|
36
|
+
close(closing?: {
|
|
37
|
+
revoked?: boolean;
|
|
38
|
+
lost?: boolean;
|
|
39
|
+
}): void;
|
|
35
40
|
expire(locators: readonly string[]): void;
|
|
36
41
|
notifyRoomVersion(notification: {
|
|
37
42
|
locator: string;
|
|
38
43
|
roomVersion: string;
|
|
39
44
|
}): void;
|
|
45
|
+
notifyAuthorityChanged(): void;
|
|
40
46
|
notifyConversation(event: ConversationEvent): void;
|
|
41
47
|
notifyServiceMode(mode: ServiceMode): void;
|
|
42
48
|
heldRooms(): readonly string[];
|
|
49
|
+
heldDemand(): AcquiredDemand | null;
|
|
43
50
|
replicatedConversations(): readonly string[];
|
|
44
51
|
};
|
|
45
52
|
export declare function createMemoryAdapter(options?: MemoryAdapterOptions): MemoryAdapter;
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,OAAO,EAEZ,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sameChange } from './overlay.js';
|
|
2
2
|
const FIXTURE_RETENTION = {
|
|
3
3
|
history: { kind: 'duration', seconds: 1 },
|
|
4
|
-
outcome:
|
|
4
|
+
outcome: 604_800,
|
|
5
5
|
refreshHorizon: 1,
|
|
6
6
|
};
|
|
7
7
|
function declaredRetention(value) {
|
|
@@ -55,8 +55,10 @@ export function createMemoryAdapter(options = {}) {
|
|
|
55
55
|
const scripted = new Map();
|
|
56
56
|
const unsealed = new Map();
|
|
57
57
|
const sealed = new Set();
|
|
58
|
+
const sentTurns = new Map();
|
|
58
59
|
const historyPageSize = options.historyPageSize;
|
|
59
60
|
let held = [];
|
|
61
|
+
let heldDemand = null;
|
|
60
62
|
let expiring = [];
|
|
61
63
|
let replicated = [];
|
|
62
64
|
let issued = 0;
|
|
@@ -121,6 +123,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
121
123
|
...(opening ? { models: modelsOf(room) } : {}),
|
|
122
124
|
documents: named(room.documents ?? {}, taken),
|
|
123
125
|
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
126
|
+
...(room.fileIds === undefined
|
|
127
|
+
? {}
|
|
128
|
+
: { fileIds: named(room.fileIds, [...taken, ...targets]) }),
|
|
124
129
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
125
130
|
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
126
131
|
...(next < paths.length ? { pageToken: taken.at(-1) } : {}),
|
|
@@ -132,6 +137,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
132
137
|
const currentTargets = new Set(Object.keys(room.binaryFiles ?? {}));
|
|
133
138
|
const previousTargets = new Set(Object.keys(from.binaryFiles ?? {}));
|
|
134
139
|
const headMoved = (path) => room.revisions?.[path] !== from.revisions?.[path] ||
|
|
140
|
+
room.fileIds?.[path] !== from.fileIds?.[path] ||
|
|
135
141
|
!sameChange(room.changes?.[path], from.changes?.[path]);
|
|
136
142
|
const changed = Object.keys(current)
|
|
137
143
|
.filter((path) => current[path] !== previous[path] || headMoved(path))
|
|
@@ -153,6 +159,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
153
159
|
...(models === undefined ? {} : { models }),
|
|
154
160
|
documents: named(current, taken),
|
|
155
161
|
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
162
|
+
...(room.fileIds === undefined
|
|
163
|
+
? {}
|
|
164
|
+
: { fileIds: named(room.fileIds, [...taken, ...targets]) }),
|
|
156
165
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
157
166
|
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
158
167
|
removals: opening
|
|
@@ -220,9 +229,15 @@ export function createMemoryAdapter(options = {}) {
|
|
|
220
229
|
if (outcome !== undefined)
|
|
221
230
|
return outcome;
|
|
222
231
|
if (name === 'conversation.send') {
|
|
232
|
+
const operation = typeof input.operation_id === 'string' ? input.operation_id : null;
|
|
233
|
+
const answered = operation === null ? undefined : sentTurns.get(operation);
|
|
234
|
+
if (answered !== undefined)
|
|
235
|
+
return { kind: 'action', result: { turn: answered } };
|
|
223
236
|
issued += 1;
|
|
224
237
|
const turn = `turn-${issued}`;
|
|
225
238
|
unsealed.set(turn, named);
|
|
239
|
+
if (operation !== null)
|
|
240
|
+
sentTurns.set(operation, turn);
|
|
226
241
|
return { kind: 'action', result: { turn } };
|
|
227
242
|
}
|
|
228
243
|
if (name === 'conversation.cancel') {
|
|
@@ -253,6 +268,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
253
268
|
};
|
|
254
269
|
}
|
|
255
270
|
return {
|
|
271
|
+
...(options.exhaustiveDiscovery === undefined ? {} : { exhaustiveDiscovery: true }),
|
|
256
272
|
setRooms(next) {
|
|
257
273
|
rooms = [...next];
|
|
258
274
|
retain(rooms);
|
|
@@ -265,9 +281,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
265
281
|
for (const observer of observers)
|
|
266
282
|
observer({ kind: 'opened' });
|
|
267
283
|
},
|
|
268
|
-
close(revoked = false) {
|
|
284
|
+
close({ revoked = false, lost = !revoked } = {}) {
|
|
269
285
|
for (const observer of observers)
|
|
270
|
-
observer({ kind: 'closed', revoked });
|
|
286
|
+
observer({ kind: 'closed', revoked, lost });
|
|
271
287
|
},
|
|
272
288
|
expire(locators) {
|
|
273
289
|
expiring = [...locators];
|
|
@@ -276,6 +292,10 @@ export function createMemoryAdapter(options = {}) {
|
|
|
276
292
|
for (const observer of observers)
|
|
277
293
|
observer({ kind: 'room-version', locator, roomVersion });
|
|
278
294
|
},
|
|
295
|
+
notifyAuthorityChanged() {
|
|
296
|
+
for (const observer of observers)
|
|
297
|
+
observer({ kind: 'authority-changed' });
|
|
298
|
+
},
|
|
279
299
|
notifyConversation(event) {
|
|
280
300
|
if (event.kind === 'accepted-message') {
|
|
281
301
|
sealed.add(event.message.turn);
|
|
@@ -291,6 +311,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
291
311
|
heldRooms() {
|
|
292
312
|
return held;
|
|
293
313
|
},
|
|
314
|
+
heldDemand() {
|
|
315
|
+
return heldDemand;
|
|
316
|
+
},
|
|
294
317
|
replicatedConversations() {
|
|
295
318
|
return replicated;
|
|
296
319
|
},
|
|
@@ -314,8 +337,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
314
337
|
},
|
|
315
338
|
},
|
|
316
339
|
roomStream: {
|
|
317
|
-
hold(asked) {
|
|
340
|
+
hold(asked, demand) {
|
|
318
341
|
held = asked.map((room) => room.locator);
|
|
342
|
+
heldDemand = demand;
|
|
319
343
|
const expired = expiring.filter((locator) => held.includes(locator));
|
|
320
344
|
expiring = [];
|
|
321
345
|
const moved = asked.flatMap((room) => {
|
|
@@ -336,17 +360,19 @@ export function createMemoryAdapter(options = {}) {
|
|
|
336
360
|
},
|
|
337
361
|
reopen() {
|
|
338
362
|
queueMicrotask(() => {
|
|
339
|
-
for (const observer of observers)
|
|
340
|
-
observer({ kind: 'closed', revoked: false });
|
|
363
|
+
for (const observer of observers) {
|
|
364
|
+
observer({ kind: 'closed', revoked: false, lost: false });
|
|
365
|
+
}
|
|
341
366
|
});
|
|
342
367
|
},
|
|
368
|
+
published() { },
|
|
343
369
|
observe(notify) {
|
|
344
370
|
observers.add(notify);
|
|
345
371
|
queueMicrotask(() => {
|
|
346
372
|
if (!observers.has(notify))
|
|
347
373
|
return;
|
|
348
374
|
if (options.unopened === true) {
|
|
349
|
-
notify({ kind: 'closed', revoked: false });
|
|
375
|
+
notify({ kind: 'closed', revoked: false, lost: true });
|
|
350
376
|
return;
|
|
351
377
|
}
|
|
352
378
|
announceList();
|
|
@@ -457,6 +483,9 @@ export function createMemoryAdapter(options = {}) {
|
|
|
457
483
|
: { kind: 'binary', blob };
|
|
458
484
|
}, request);
|
|
459
485
|
},
|
|
486
|
+
async link(_authorization, request) {
|
|
487
|
+
return resolveScript(scripts.link, () => ({ kind: 'rejected', code: 'unscripted-link', fields: {}, retryable: false }), request);
|
|
488
|
+
},
|
|
460
489
|
referrerScope(referrer) {
|
|
461
490
|
if (typeof referrer !== 'object' || referrer === null)
|
|
462
491
|
return null;
|