@agentshouse/mdruntime-adapter 0.1.0-alpha.17 → 0.1.0-alpha.19
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 +70 -18
- package/dist/write.d.ts.map +1 -1
- package/dist/write.js +9 -4
- package/dist/write.js.map +1 -1
- package/package.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -7,7 +7,7 @@ enforcement.
|
|
|
7
7
|
## The MD Runtime API
|
|
8
8
|
|
|
9
9
|
App code reaches the MD Runtime through the remote client. The surfaces are
|
|
10
|
-
Rooms, Slots, Query, Observe, Types, Draft, Save,
|
|
10
|
+
Rooms, Slots, Query, Observe, Types, Room Draft, Save, History, Call, Log,
|
|
11
11
|
storage loss, the reported persistence answer, deployment facts, Sync Status, reauthorization,
|
|
12
12
|
conversation, the chat draft, and Presentation State.
|
|
13
13
|
|
|
@@ -22,7 +22,7 @@ queued.
|
|
|
22
22
|
Slots answers each Slot the Provider declares, in its order, with its entries
|
|
23
23
|
in order, each a Room and its segment; a Room two Slots list is the same Room.
|
|
24
24
|
|
|
25
|
-
Rooms, Slots, Query, Observe, Types, Draft, and Save never touch the network.
|
|
25
|
+
Rooms, Slots, Query, Observe, Types, Room Draft, and Save never touch the network.
|
|
26
26
|
History and Call go to the Provider through the Adapter. Every member of the
|
|
27
27
|
client is asynchronous. Results are detached snapshots. Nothing in this
|
|
28
28
|
surface returns the authorization, performs a request the App's code
|
|
@@ -36,24 +36,76 @@ owns their boundary.
|
|
|
36
36
|
The in-memory Adapter at `@agentshouse/mdruntime/memory` is for tests and
|
|
37
37
|
ships in no bundle.
|
|
38
38
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
## Local Query rules
|
|
40
|
+
|
|
41
|
+
`query(q)` answers once from local state; `observe('query', q, listener)` hears
|
|
42
|
+
the whole result at once and again only when it changes. A query is data:
|
|
43
|
+
|
|
44
|
+
- **Filter.** `rooms` names Room locators and defaults to every Room. `types`
|
|
45
|
+
names MD Types, and `any` names the untyped Documents. `pathPrefix` is a
|
|
46
|
+
directory: `notes` keeps `notes/a.md` and not `notes2/a.md`.
|
|
47
|
+
- **Fields.** `where` names frontmatter fields, ANDs them, and nests `$and` and
|
|
48
|
+
`$or`. A bare value is equality; the operators are `$eq`, `$ne`, `$in`, `$nin`,
|
|
49
|
+
`$gt`, `$gte`, `$lt`, `$lte`, `$all`, `$size` and `$exists`. Equality on a list
|
|
50
|
+
asks whether it contains the value. Missing, null and empty differ:
|
|
51
|
+
`$exists: false` keeps a missing field, `null` an explicit null, `''` empty
|
|
52
|
+
text and `$size: 0` an empty list. A date compares in calendar order and never
|
|
53
|
+
with a date-time. A reference compares by the Room Path it resolves to.
|
|
54
|
+
Untyped frontmatter is plain values. There is no text containment or regular
|
|
55
|
+
expression.
|
|
56
|
+
- **Relations.** `hop: { field, types, where, pathPrefix }` keeps Documents whose
|
|
57
|
+
reference `field` points to a matching Document of the same Room.
|
|
58
|
+
`backlinks: { field, types, where, pathPrefix }` keeps Documents that a
|
|
59
|
+
matching Document of the same Room references. Each keeps a Document once.
|
|
60
|
+
- **Parts.** A Document query must `select`: `'all'`, or `fields`, `sections`,
|
|
61
|
+
`preamble`, `markdown` and `backlinks`, where `fields` and `sections` are
|
|
62
|
+
`'all'` or a list of names. Room, Path and MD Type always return, and an
|
|
63
|
+
unselected part is absent. Select only what a screen shows: a list that selects
|
|
64
|
+
the Markdown hears every edit of it.
|
|
65
|
+
- **Order and groups.** `orderBy` sorts by `room`, `path`, `type` or `{ field }`
|
|
66
|
+
with TanStack DB's own options, and ties end with Room, then Path. `groupBy` by
|
|
67
|
+
`room`, `type` or `{ field }` answers `{ groups: [{ key, count }] }`, counted
|
|
68
|
+
over every match and ordered by `count` or a key. `limit` bounds the Documents
|
|
69
|
+
or the groups.
|
|
70
|
+
- **Results and errors.** A result carries no Room Version: read freshness from
|
|
71
|
+
Rooms and Sync Status. An invalid query fails with `invalid-query`,
|
|
72
|
+
`unknown-type`, `unknown-field` or `wrong-kind`, naming where, and never
|
|
73
|
+
answers an empty result in its place.
|
|
74
|
+
|
|
75
|
+
## Room Draft, Save, and outcome rules
|
|
76
|
+
|
|
77
|
+
The MD Runtime owns one Room Draft per Room and Path, shared by every App and
|
|
78
|
+
tab. It is durable: it survives reload and navigation. A Room that Discovery
|
|
79
|
+
stops listing takes its Room Drafts, its queue and their outcomes with it.
|
|
80
|
+
Write a Room Draft with `roomDraft.write(room, path, revision, parts)`, naming
|
|
81
|
+
the revision you read, or `null` when there was none, and every part it should
|
|
82
|
+
now change: fields, sections and the preamble, or the whole Markdown, a
|
|
83
|
+
creation, a move, or a removal. A part new to the Room Draft names its base,
|
|
84
|
+
the value you showed when it was opened; the MD Runtime keeps a part's first
|
|
85
|
+
base. A write or a discard from an older revision is refused as `stale` with
|
|
86
|
+
the current Room Draft; read it and write again.
|
|
87
|
+
|
|
88
|
+
Save takes one Room and the Room Drafts of it to save, each with its revision,
|
|
89
|
+
validates locally, and on success appends one Change Batch to that Room's
|
|
90
|
+
queue and removes those Room Drafts. It is refused as `stale`, as
|
|
91
|
+
`changed-underneath` naming each part whose base no longer matches the visible
|
|
92
|
+
state, or by a local validation rule, and then creates nothing and leaves every
|
|
93
|
+
Room Draft in place. A directory move is a move part on each Document beneath
|
|
94
|
+
it, saved together.
|
|
46
95
|
|
|
47
96
|
Outcomes follow the Provider's answer. Accepted advances the confirmed
|
|
48
|
-
layer. Conflicted and Rejected
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
97
|
+
layer. Conflicted and Rejected, an expired outcome record, and a change that no
|
|
98
|
+
longer applies over the Room each leave the queue and return as Room Drafts on
|
|
99
|
+
the Documents they changed, marked with why: the Provider's structured refusal
|
|
100
|
+
code and fields as returned, not known to have applied, or withdrawn locally.
|
|
101
|
+
The rest of the queue keeps synchronizing, and Sync Status requires attention
|
|
102
|
+
until each returned Room Draft is saved again or discarded. `outcome` answers
|
|
103
|
+
the saved Change Batch's outcome, and `null` while it is Pending. Transport
|
|
104
|
+
failure and Provider unavailability keep work Pending and do not infer a
|
|
105
|
+
rejection. A refusal the Provider marks retryable stays Pending until the reset
|
|
106
|
+
it names; the MD Runtime retries the same Change Batch identity and payload and
|
|
107
|
+
never infers an outcome from transport uncertainty. The MD Runtime never
|
|
108
|
+
combines, reorders, or rebases.
|
|
57
109
|
|
|
58
110
|
## The neutrality rule
|
|
59
111
|
|
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,EAEV,WAAW,EACX,aAAa,EAEb,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAMhC,eAAO,MAAM,uBAAuB,QAAkB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,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;
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../src/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,aAAa,EAEb,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAMhC,eAAO,MAAM,uBAAuB,QAAkB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,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;AA2GrD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAQ1F;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,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1D;AAqCD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,cAAc,CAsDhB;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;;EAEjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1B;AAED,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,CAoDf"}
|
package/dist/write.js
CHANGED
|
@@ -26,7 +26,12 @@ function priorExistence(batch, path) {
|
|
|
26
26
|
kind: 'presence'
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
function
|
|
29
|
+
function created(change, path) {
|
|
30
|
+
if ('content' in change) return {
|
|
31
|
+
op: 'create',
|
|
32
|
+
path,
|
|
33
|
+
content: change.content
|
|
34
|
+
};
|
|
30
35
|
const { type, ...fields } = change.fields;
|
|
31
36
|
if (typeof type !== 'string' || type.length === 0) return null;
|
|
32
37
|
return {
|
|
@@ -89,11 +94,11 @@ function operationOf(batch, change, handle) {
|
|
|
89
94
|
if (priorAbsence(batch, change.path) === undefined) return {
|
|
90
95
|
rule: 'precondition-missing'
|
|
91
96
|
};
|
|
92
|
-
const
|
|
93
|
-
return
|
|
97
|
+
const operation = created(change, path);
|
|
98
|
+
return operation === null ? {
|
|
94
99
|
rule: 'type-missing'
|
|
95
100
|
} : {
|
|
96
|
-
operation
|
|
101
|
+
operation
|
|
97
102
|
};
|
|
98
103
|
}
|
|
99
104
|
const existence = priorExistence(batch, change.path);
|
package/dist/write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/write.ts"],"sourcesContent":["import type {\n Change,\n ChangeBatch,\n HistoryResult,\n HistoryRevision,\n MutationResult,\n Precondition,\n} from '@agentshouse/mdruntime';\nimport { sha256Hex, textBytes } from './digest.js';\nimport { nativePath, roomLocalPath } from './map.js';\nimport { classifyDoor, doorRefusal, scopedRefusal } from './refusal.js';\nimport { readPosition, roomVersion } from './version.js';\n\nexport const INLINE_BODY_LIMIT_BYTES = 4 * 1024 * 1024;\n\nexport const UPLOAD_LINE_BYTES = 37;\n\nexport const UPLOAD_BYTES_MAX = 32 * 1024 * 1024 - UPLOAD_LINE_BYTES;\n\nexport type HouseOperation = Readonly<Record<string, unknown>>;\n\nexport type ChangeMapping =\n | { kind: 'changes'; changes: readonly HouseOperation[] }\n | { kind: 'unmapped'; path: string; rule: string };\n\ntype Existence = { base: string } | { kind: 'presence' };\n\nfunction priorField(batch: ChangeBatch, path: string, name: string) {\n return batch.preconditions.find(\n (precondition): precondition is Extract<Precondition, { kind: 'field' }> =>\n precondition.kind === 'field' && precondition.path === path && precondition.name === name,\n );\n}\n\nfunction priorSection(batch: ChangeBatch, path: string, name: string) {\n return batch.preconditions.find(\n (precondition): precondition is Extract<Precondition, { kind: 'section' }> =>\n precondition.kind === 'section' && precondition.path === path && precondition.name === name,\n );\n}\n\nfunction priorPreamble(batch: ChangeBatch, path: string) {\n return batch.preconditions.find(\n (precondition): precondition is Extract<Precondition, { kind: 'preamble' }> =>\n precondition.kind === 'preamble' && precondition.path === path,\n );\n}\n\nfunction priorAbsence(batch: ChangeBatch, path: string) {\n return batch.preconditions.find(\n (precondition) => precondition.kind === 'absent' && precondition.path === path,\n );\n}\n\nfunction priorExistence(batch: ChangeBatch, path: string): Existence | undefined {\n const precondition = batch.preconditions.find(\n (held) => held.path === path && (held.kind === 'revision' || held.kind === 'present'),\n );\n if (precondition === undefined) return undefined;\n return precondition.kind === 'revision' ? { base: precondition.revision } : { kind: 'presence' };\n}\n\nfunction typedCreate(\n change: Extract<Change, { kind: 'create' }>,\n path: string,\n): HouseOperation | null {\n const { type, ...fields } = change.fields;\n if (typeof type !== 'string' || type.length === 0) return null;\n return { op: 'create_typed', path, type, fields, sections: change.sections };\n}\n\ntype MappedOperation = { operation: HouseOperation } | { rule: string };\n\nfunction operationOf(\n batch: ChangeBatch,\n change: Change,\n handle: string | undefined,\n): MappedOperation {\n const path = nativePath(change.path, handle);\n if (change.kind === 'field') {\n const prior = priorField(batch, change.path, change.name);\n if (prior === undefined) return { rule: 'precondition-missing' };\n return {\n operation: {\n op: 'set_field',\n path,\n field: change.name,\n value: change.value,\n ...(prior.value === undefined ? {} : { base: prior.value }),\n },\n };\n }\n if (change.kind === 'section') {\n const prior = priorSection(batch, change.path, change.name);\n if (prior === undefined) return { rule: 'precondition-missing' };\n return {\n operation: {\n op: 'replace_section',\n path,\n section: change.name,\n base: prior.value,\n content: change.value,\n },\n };\n }\n if (change.kind === 'preamble') {\n const prior = priorPreamble(batch, change.path);\n if (prior === undefined) return { rule: 'precondition-missing' };\n return {\n operation: { op: 'replace_preamble', path, base: prior.value, content: change.value },\n };\n }\n if (change.kind === 'create') {\n if (priorAbsence(batch, change.path) === undefined) return { rule: 'precondition-missing' };\n const created = typedCreate(change, path);\n return created === null ? { rule: 'type-missing' } : { operation: created };\n }\n const existence = priorExistence(batch, change.path);\n if (existence === undefined) return { rule: 'precondition-missing' };\n if (!('base' in existence)) return { rule: 'presence-base-unrepresentable' };\n if (change.kind === 'replace') {\n return { operation: { op: 'replace', path, base: existence.base, content: change.content } };\n }\n if (change.kind === 'move') {\n if (priorAbsence(batch, change.to) === undefined) return { rule: 'precondition-missing' };\n return {\n operation: { op: 'rename', path, to: nativePath(change.to, handle), base: existence.base },\n };\n }\n return { operation: { op: 'remove', path, base: existence.base } };\n}\n\nexport function houseChanges(batch: ChangeBatch, handle: string | undefined): ChangeMapping {\n const changes: HouseOperation[] = [];\n for (const change of batch.changes) {\n const mapped = operationOf(batch, change, handle);\n if ('rule' in mapped) return { kind: 'unmapped', path: change.path, rule: mapped.rule };\n changes.push(mapped.operation);\n }\n return { kind: 'changes', changes };\n}\n\nexport type OperationHead = {\n readonly operation_id: string;\n readonly app_ref?: string;\n readonly release?: string;\n};\n\nexport function operationHead(batch: ChangeBatch): OperationHead {\n const writer = batch.writtenBy;\n return writer === undefined\n ? { operation_id: batch.id }\n : { operation_id: batch.id, app_ref: writer.app, release: writer.release };\n}\n\nexport function batchPaths(changes: readonly HouseOperation[]): readonly string[] {\n return [\n ...new Set(\n changes.flatMap((change) =>\n change.op === 'rename' ? [String(change.path), String(change.to)] : [String(change.path)],\n ),\n ),\n ].sort();\n}\n\nexport function deltaBody(changes: readonly HouseOperation[]): string {\n return JSON.stringify({ changes });\n}\n\nexport function deltaBytes(delta: string): number {\n return textBytes(delta);\n}\n\nexport function uploadable(bytes: number): boolean {\n return bytes > INLINE_BODY_LIMIT_BYTES && bytes <= UPLOAD_BYTES_MAX;\n}\n\nexport function deltaDigest(delta: string): Promise<string> {\n return sha256Hex(delta);\n}\n\ntype Material = { path: string; content: string | null; revision: string | null };\n\nfunction material(value: unknown, handle: string | undefined): readonly Material[] | null {\n if (!Array.isArray(value)) return null;\n const held: Material[] = [];\n for (const entry of value) {\n if (typeof entry !== 'object' || entry === null) return null;\n const file = entry as Record<string, unknown>;\n if (typeof file.path !== 'string') return null;\n if (file.content !== null && typeof file.content !== 'string') return null;\n if (file.revision !== null && file.revision !== undefined && typeof file.revision !== 'string')\n return null;\n let path: string;\n try {\n path = roomLocalPath(file.path, handle);\n } catch {\n return null;\n }\n held.push({\n path,\n content: file.content,\n revision: typeof file.revision === 'string' ? file.revision : null,\n });\n }\n return held;\n}\n\nfunction affectedOf(held: readonly Material[]): Readonly<Record<string, string>> {\n const affected: Record<string, string> = {};\n for (const entry of held) {\n if (entry.content !== null) affected[entry.path] = entry.content;\n }\n return affected;\n}\n\nexport function mutationOutcome(\n status: number,\n body: unknown,\n locator: string,\n handle: string | undefined,\n): MutationResult {\n const refusal = doorRefusal(body);\n if (refusal !== null && refusal.code === 'rate_limited') {\n const reset = refusal.fields.retry_at;\n return {\n kind: 'retryable-refusal',\n code: refusal.code,\n fields: refusal.fields,\n ...(typeof reset === 'string' ? { reset } : {}),\n };\n }\n if (refusal !== null && refusal.code === 'operation_expired') return { kind: 'expired' };\n if (refusal !== null && refusal.code === 'edit_conflict') {\n const { current, ...fields } = refusal.fields;\n const held = material(current, handle) ?? [];\n return { kind: 'conflicted', affected: affectedOf(held), code: refusal.code, fields };\n }\n if (refusal !== null && status === 404) {\n return scopedRefusal(locator, 'undisclosed', refusal);\n }\n const classified = classifyDoor(status, body, locator);\n if (classified !== null && classified.kind !== 'scoped-refusal') {\n return classified.kind === 'beyond-horizon' ? { kind: 'expired' } : classified;\n }\n if (classified !== null && status === 403) return classified;\n if (refusal !== null && status >= 400) {\n return { kind: 'rejected', affected: {}, code: refusal.code, fields: refusal.fields };\n }\n if (status !== 200 || typeof body !== 'object' || body === null) {\n return { kind: 'transport-uncertainty' };\n }\n const held = body as Record<string, unknown>;\n const at = readPosition(held);\n if (at === null) return { kind: 'transport-uncertainty' };\n const contents = material(held.contents, handle);\n if (contents === null) return { kind: 'transport-uncertainty' };\n const documents: Record<string, string> = {};\n const revisions: Record<string, string> = {};\n const removals: string[] = [];\n for (const entry of contents) {\n if (entry.content === null || entry.revision === null) {\n removals.push(entry.path);\n continue;\n }\n documents[entry.path] = entry.content;\n revisions[entry.path] = entry.revision;\n }\n return {\n kind: 'accepted',\n roomVersion: roomVersion(at),\n documents,\n revisions,\n removals: removals.sort(),\n };\n}\n\nexport function rejectedMapping(mapping: Extract<ChangeMapping, { kind: 'unmapped' }>) {\n return {\n kind: 'rejected' as const,\n affected: {},\n code: mapping.rule,\n fields: { path: mapping.path },\n };\n}\n\nexport function revisionBody(input: {\n path: string;\n handle: string | undefined;\n revision?: string;\n pageToken?: string;\n}): Record<string, unknown> {\n return {\n path: nativePath(input.path, input.handle),\n ...(input.revision === undefined ? {} : { revision: input.revision }),\n ...(input.pageToken === undefined ? {} : { before: Number(input.pageToken) }),\n };\n}\n\nexport function historyOutcome(\n status: number,\n body: unknown,\n locator: string,\n request: { path: string; revision?: string },\n): HistoryResult {\n const classified = classifyDoor(status, body, locator);\n if (classified !== null) {\n return classified.kind === 'beyond-horizon' ? { kind: 'transport-uncertainty' } : classified;\n }\n if (status !== 200 || typeof body !== 'object' || body === null) {\n return { kind: 'transport-uncertainty' };\n }\n const held = body as Record<string, unknown>;\n if (!Array.isArray(held.revisions)) return { kind: 'transport-uncertainty' };\n const entries: Record<string, unknown>[] = [];\n for (const entry of held.revisions) {\n if (typeof entry !== 'object' || entry === null) return { kind: 'transport-uncertainty' };\n entries.push(entry as Record<string, unknown>);\n }\n if (request.revision !== undefined) {\n const named = entries[0];\n if (named === undefined) return { kind: 'no-history' };\n if (named.unavailable === true) {\n return {\n kind: 'scoped-refusal',\n locator,\n scope: 'content',\n code: 'retained_history_unavailable',\n fields: { path: request.path, revision: request.revision },\n };\n }\n if (typeof named.content !== 'string') return { kind: 'transport-uncertainty' };\n return { kind: 'revision', content: named.content };\n }\n if (entries.length === 0) return { kind: 'no-history' };\n const revisions: HistoryRevision[] = [];\n for (const entry of entries) {\n if (\n typeof entry.revision !== 'string' ||\n typeof entry.author_user !== 'string' ||\n typeof entry.created_at !== 'string'\n ) {\n return { kind: 'transport-uncertainty' };\n }\n revisions.push({\n revision: entry.revision,\n author: entry.author_user,\n time: entry.created_at,\n });\n }\n const next = held.next_before;\n return {\n kind: 'history',\n revisions,\n ...(typeof next === 'number' ? { pageToken: String(next) } : {}),\n };\n}\n"],"names":["sha256Hex","textBytes","nativePath","roomLocalPath","classifyDoor","doorRefusal","scopedRefusal","readPosition","roomVersion","INLINE_BODY_LIMIT_BYTES","UPLOAD_LINE_BYTES","UPLOAD_BYTES_MAX","priorField","batch","path","name","preconditions","find","precondition","kind","priorSection","priorPreamble","priorAbsence","priorExistence","held","undefined","base","revision","typedCreate","change","type","fields","length","op","sections","operationOf","handle","prior","rule","operation","field","value","section","content","created","existence","to","houseChanges","changes","mapped","push","operationHead","writer","writtenBy","operation_id","id","app_ref","app","release","batchPaths","Set","flatMap","String","sort","deltaBody","JSON","stringify","deltaBytes","delta","uploadable","bytes","deltaDigest","material","Array","isArray","entry","file","affectedOf","affected","mutationOutcome","status","body","locator","refusal","code","reset","retry_at","current","classified","at","contents","documents","revisions","removals","rejectedMapping","mapping","revisionBody","input","pageToken","before","Number","historyOutcome","request","entries","named","unavailable","scope","author_user","created_at","author","time","next","next_before"],"mappings":"AAQA,SAASA,SAAS,EAAEC,SAAS,QAAQ,cAAc;AACnD,SAASC,UAAU,EAAEC,aAAa,QAAQ,WAAW;AACrD,SAASC,YAAY,EAAEC,WAAW,EAAEC,aAAa,QAAQ,eAAe;AACxE,SAASC,YAAY,EAAEC,WAAW,QAAQ,eAAe;AAEzD,OAAO,MAAMC,0BAA0B,IAAI,OAAO,KAAK;AAEvD,OAAO,MAAMC,oBAAoB,GAAG;AAEpC,OAAO,MAAMC,mBAAmB,KAAK,OAAO,OAAOD,kBAAkB;AAUrE,SAASE,WAAWC,KAAkB,EAAEC,IAAY,EAAEC,IAAY;IAChE,OAAOF,MAAMG,aAAa,CAACC,IAAI,CAC7B,CAACC,eACCA,aAAaC,IAAI,KAAK,WAAWD,aAAaJ,IAAI,KAAKA,QAAQI,aAAaH,IAAI,KAAKA;AAE3F;AAEA,SAASK,aAAaP,KAAkB,EAAEC,IAAY,EAAEC,IAAY;IAClE,OAAOF,MAAMG,aAAa,CAACC,IAAI,CAC7B,CAACC,eACCA,aAAaC,IAAI,KAAK,aAAaD,aAAaJ,IAAI,KAAKA,QAAQI,aAAaH,IAAI,KAAKA;AAE7F;AAEA,SAASM,cAAcR,KAAkB,EAAEC,IAAY;IACrD,OAAOD,MAAMG,aAAa,CAACC,IAAI,CAC7B,CAACC,eACCA,aAAaC,IAAI,KAAK,cAAcD,aAAaJ,IAAI,KAAKA;AAEhE;AAEA,SAASQ,aAAaT,KAAkB,EAAEC,IAAY;IACpD,OAAOD,MAAMG,aAAa,CAACC,IAAI,CAC7B,CAACC,eAAiBA,aAAaC,IAAI,KAAK,YAAYD,aAAaJ,IAAI,KAAKA;AAE9E;AAEA,SAASS,eAAeV,KAAkB,EAAEC,IAAY;IACtD,MAAMI,eAAeL,MAAMG,aAAa,CAACC,IAAI,CAC3C,CAACO,OAASA,KAAKV,IAAI,KAAKA,QAASU,CAAAA,KAAKL,IAAI,KAAK,cAAcK,KAAKL,IAAI,KAAK,SAAQ;IAErF,IAAID,iBAAiBO,WAAW,OAAOA;IACvC,OAAOP,aAAaC,IAAI,KAAK,aAAa;QAAEO,MAAMR,aAAaS,QAAQ;IAAC,IAAI;QAAER,MAAM;IAAW;AACjG;AAEA,SAASS,YACPC,MAA2C,EAC3Cf,IAAY;IAEZ,MAAM,EAAEgB,IAAI,EAAE,GAAGC,QAAQ,GAAGF,OAAOE,MAAM;IACzC,IAAI,OAAOD,SAAS,YAAYA,KAAKE,MAAM,KAAK,GAAG,OAAO;IAC1D,OAAO;QAAEC,IAAI;QAAgBnB;QAAMgB;QAAMC;QAAQG,UAAUL,OAAOK,QAAQ;IAAC;AAC7E;AAIA,SAASC,YACPtB,KAAkB,EAClBgB,MAAc,EACdO,MAA0B;IAE1B,MAAMtB,OAAOZ,WAAW2B,OAAOf,IAAI,EAAEsB;IACrC,IAAIP,OAAOV,IAAI,KAAK,SAAS;QAC3B,MAAMkB,QAAQzB,WAAWC,OAAOgB,OAAOf,IAAI,EAAEe,OAAOd,IAAI;QACxD,IAAIsB,UAAUZ,WAAW,OAAO;YAAEa,MAAM;QAAuB;QAC/D,OAAO;YACLC,WAAW;gBACTN,IAAI;gBACJnB;gBACA0B,OAAOX,OAAOd,IAAI;gBAClB0B,OAAOZ,OAAOY,KAAK;gBACnB,GAAIJ,MAAMI,KAAK,KAAKhB,YAAY,CAAC,IAAI;oBAAEC,MAAMW,MAAMI,KAAK;gBAAC,CAAC;YAC5D;QACF;IACF;IACA,IAAIZ,OAAOV,IAAI,KAAK,WAAW;QAC7B,MAAMkB,QAAQjB,aAAaP,OAAOgB,OAAOf,IAAI,EAAEe,OAAOd,IAAI;QAC1D,IAAIsB,UAAUZ,WAAW,OAAO;YAAEa,MAAM;QAAuB;QAC/D,OAAO;YACLC,WAAW;gBACTN,IAAI;gBACJnB;gBACA4B,SAASb,OAAOd,IAAI;gBACpBW,MAAMW,MAAMI,KAAK;gBACjBE,SAASd,OAAOY,KAAK;YACvB;QACF;IACF;IACA,IAAIZ,OAAOV,IAAI,KAAK,YAAY;QAC9B,MAAMkB,QAAQhB,cAAcR,OAAOgB,OAAOf,IAAI;QAC9C,IAAIuB,UAAUZ,WAAW,OAAO;YAAEa,MAAM;QAAuB;QAC/D,OAAO;YACLC,WAAW;gBAAEN,IAAI;gBAAoBnB;gBAAMY,MAAMW,MAAMI,KAAK;gBAAEE,SAASd,OAAOY,KAAK;YAAC;QACtF;IACF;IACA,IAAIZ,OAAOV,IAAI,KAAK,UAAU;QAC5B,IAAIG,aAAaT,OAAOgB,OAAOf,IAAI,MAAMW,WAAW,OAAO;YAAEa,MAAM;QAAuB;QAC1F,MAAMM,UAAUhB,YAAYC,QAAQf;QACpC,OAAO8B,YAAY,OAAO;YAAEN,MAAM;QAAe,IAAI;YAAEC,WAAWK;QAAQ;IAC5E;IACA,MAAMC,YAAYtB,eAAeV,OAAOgB,OAAOf,IAAI;IACnD,IAAI+B,cAAcpB,WAAW,OAAO;QAAEa,MAAM;IAAuB;IACnE,IAAI,CAAE,CAAA,UAAUO,SAAQ,GAAI,OAAO;QAAEP,MAAM;IAAgC;IAC3E,IAAIT,OAAOV,IAAI,KAAK,WAAW;QAC7B,OAAO;YAAEoB,WAAW;gBAAEN,IAAI;gBAAWnB;gBAAMY,MAAMmB,UAAUnB,IAAI;gBAAEiB,SAASd,OAAOc,OAAO;YAAC;QAAE;IAC7F;IACA,IAAId,OAAOV,IAAI,KAAK,QAAQ;QAC1B,IAAIG,aAAaT,OAAOgB,OAAOiB,EAAE,MAAMrB,WAAW,OAAO;YAAEa,MAAM;QAAuB;QACxF,OAAO;YACLC,WAAW;gBAAEN,IAAI;gBAAUnB;gBAAMgC,IAAI5C,WAAW2B,OAAOiB,EAAE,EAAEV;gBAASV,MAAMmB,UAAUnB,IAAI;YAAC;QAC3F;IACF;IACA,OAAO;QAAEa,WAAW;YAAEN,IAAI;YAAUnB;YAAMY,MAAMmB,UAAUnB,IAAI;QAAC;IAAE;AACnE;AAEA,OAAO,SAASqB,aAAalC,KAAkB,EAAEuB,MAA0B;IACzE,MAAMY,UAA4B,EAAE;IACpC,KAAK,MAAMnB,UAAUhB,MAAMmC,OAAO,CAAE;QAClC,MAAMC,SAASd,YAAYtB,OAAOgB,QAAQO;QAC1C,IAAI,UAAUa,QAAQ,OAAO;YAAE9B,MAAM;YAAYL,MAAMe,OAAOf,IAAI;YAAEwB,MAAMW,OAAOX,IAAI;QAAC;QACtFU,QAAQE,IAAI,CAACD,OAAOV,SAAS;IAC/B;IACA,OAAO;QAAEpB,MAAM;QAAW6B;IAAQ;AACpC;AAQA,OAAO,SAASG,cAActC,KAAkB;IAC9C,MAAMuC,SAASvC,MAAMwC,SAAS;IAC9B,OAAOD,WAAW3B,YACd;QAAE6B,cAAczC,MAAM0C,EAAE;IAAC,IACzB;QAAED,cAAczC,MAAM0C,EAAE;QAAEC,SAASJ,OAAOK,GAAG;QAAEC,SAASN,OAAOM,OAAO;IAAC;AAC7E;AAEA,OAAO,SAASC,WAAWX,OAAkC;IAC3D,OAAO;WACF,IAAIY,IACLZ,QAAQa,OAAO,CAAC,CAAChC,SACfA,OAAOI,EAAE,KAAK,WAAW;gBAAC6B,OAAOjC,OAAOf,IAAI;gBAAGgD,OAAOjC,OAAOiB,EAAE;aAAE,GAAG;gBAACgB,OAAOjC,OAAOf,IAAI;aAAE;KAG9F,CAACiD,IAAI;AACR;AAEA,OAAO,SAASC,UAAUhB,OAAkC;IAC1D,OAAOiB,KAAKC,SAAS,CAAC;QAAElB;IAAQ;AAClC;AAEA,OAAO,SAASmB,WAAWC,KAAa;IACtC,OAAOnE,UAAUmE;AACnB;AAEA,OAAO,SAASC,WAAWC,KAAa;IACtC,OAAOA,QAAQ7D,2BAA2B6D,SAAS3D;AACrD;AAEA,OAAO,SAAS4D,YAAYH,KAAa;IACvC,OAAOpE,UAAUoE;AACnB;AAIA,SAASI,SAAS/B,KAAc,EAAEL,MAA0B;IAC1D,IAAI,CAACqC,MAAMC,OAAO,CAACjC,QAAQ,OAAO;IAClC,MAAMjB,OAAmB,EAAE;IAC3B,KAAK,MAAMmD,SAASlC,MAAO;QACzB,IAAI,OAAOkC,UAAU,YAAYA,UAAU,MAAM,OAAO;QACxD,MAAMC,OAAOD;QACb,IAAI,OAAOC,KAAK9D,IAAI,KAAK,UAAU,OAAO;QAC1C,IAAI8D,KAAKjC,OAAO,KAAK,QAAQ,OAAOiC,KAAKjC,OAAO,KAAK,UAAU,OAAO;QACtE,IAAIiC,KAAKjD,QAAQ,KAAK,QAAQiD,KAAKjD,QAAQ,KAAKF,aAAa,OAAOmD,KAAKjD,QAAQ,KAAK,UACpF,OAAO;QACT,IAAIb;QACJ,IAAI;YACFA,OAAOX,cAAcyE,KAAK9D,IAAI,EAAEsB;QAClC,EAAE,OAAM;YACN,OAAO;QACT;QACAZ,KAAK0B,IAAI,CAAC;YACRpC;YACA6B,SAASiC,KAAKjC,OAAO;YACrBhB,UAAU,OAAOiD,KAAKjD,QAAQ,KAAK,WAAWiD,KAAKjD,QAAQ,GAAG;QAChE;IACF;IACA,OAAOH;AACT;AAEA,SAASqD,WAAWrD,IAAyB;IAC3C,MAAMsD,WAAmC,CAAC;IAC1C,KAAK,MAAMH,SAASnD,KAAM;QACxB,IAAImD,MAAMhC,OAAO,KAAK,MAAMmC,QAAQ,CAACH,MAAM7D,IAAI,CAAC,GAAG6D,MAAMhC,OAAO;IAClE;IACA,OAAOmC;AACT;AAEA,OAAO,SAASC,gBACdC,MAAc,EACdC,IAAa,EACbC,OAAe,EACf9C,MAA0B;IAE1B,MAAM+C,UAAU9E,YAAY4E;IAC5B,IAAIE,YAAY,QAAQA,QAAQC,IAAI,KAAK,gBAAgB;QACvD,MAAMC,QAAQF,QAAQpD,MAAM,CAACuD,QAAQ;QACrC,OAAO;YACLnE,MAAM;YACNiE,MAAMD,QAAQC,IAAI;YAClBrD,QAAQoD,QAAQpD,MAAM;YACtB,GAAI,OAAOsD,UAAU,WAAW;gBAAEA;YAAM,IAAI,CAAC,CAAC;QAChD;IACF;IACA,IAAIF,YAAY,QAAQA,QAAQC,IAAI,KAAK,qBAAqB,OAAO;QAAEjE,MAAM;IAAU;IACvF,IAAIgE,YAAY,QAAQA,QAAQC,IAAI,KAAK,iBAAiB;QACxD,MAAM,EAAEG,OAAO,EAAE,GAAGxD,QAAQ,GAAGoD,QAAQpD,MAAM;QAC7C,MAAMP,OAAOgD,SAASe,SAASnD,WAAW,EAAE;QAC5C,OAAO;YAAEjB,MAAM;YAAc2D,UAAUD,WAAWrD;YAAO4D,MAAMD,QAAQC,IAAI;YAAErD;QAAO;IACtF;IACA,IAAIoD,YAAY,QAAQH,WAAW,KAAK;QACtC,OAAO1E,cAAc4E,SAAS,eAAeC;IAC/C;IACA,MAAMK,aAAapF,aAAa4E,QAAQC,MAAMC;IAC9C,IAAIM,eAAe,QAAQA,WAAWrE,IAAI,KAAK,kBAAkB;QAC/D,OAAOqE,WAAWrE,IAAI,KAAK,mBAAmB;YAAEA,MAAM;QAAU,IAAIqE;IACtE;IACA,IAAIA,eAAe,QAAQR,WAAW,KAAK,OAAOQ;IAClD,IAAIL,YAAY,QAAQH,UAAU,KAAK;QACrC,OAAO;YAAE7D,MAAM;YAAY2D,UAAU,CAAC;YAAGM,MAAMD,QAAQC,IAAI;YAAErD,QAAQoD,QAAQpD,MAAM;QAAC;IACtF;IACA,IAAIiD,WAAW,OAAO,OAAOC,SAAS,YAAYA,SAAS,MAAM;QAC/D,OAAO;YAAE9D,MAAM;QAAwB;IACzC;IACA,MAAMK,OAAOyD;IACb,MAAMQ,KAAKlF,aAAaiB;IACxB,IAAIiE,OAAO,MAAM,OAAO;QAAEtE,MAAM;IAAwB;IACxD,MAAMuE,WAAWlB,SAAShD,KAAKkE,QAAQ,EAAEtD;IACzC,IAAIsD,aAAa,MAAM,OAAO;QAAEvE,MAAM;IAAwB;IAC9D,MAAMwE,YAAoC,CAAC;IAC3C,MAAMC,YAAoC,CAAC;IAC3C,MAAMC,WAAqB,EAAE;IAC7B,KAAK,MAAMlB,SAASe,SAAU;QAC5B,IAAIf,MAAMhC,OAAO,KAAK,QAAQgC,MAAMhD,QAAQ,KAAK,MAAM;YACrDkE,SAAS3C,IAAI,CAACyB,MAAM7D,IAAI;YACxB;QACF;QACA6E,SAAS,CAAChB,MAAM7D,IAAI,CAAC,GAAG6D,MAAMhC,OAAO;QACrCiD,SAAS,CAACjB,MAAM7D,IAAI,CAAC,GAAG6D,MAAMhD,QAAQ;IACxC;IACA,OAAO;QACLR,MAAM;QACNX,aAAaA,YAAYiF;QACzBE;QACAC;QACAC,UAAUA,SAAS9B,IAAI;IACzB;AACF;AAEA,OAAO,SAAS+B,gBAAgBC,OAAqD;IACnF,OAAO;QACL5E,MAAM;QACN2D,UAAU,CAAC;QACXM,MAAMW,QAAQzD,IAAI;QAClBP,QAAQ;YAAEjB,MAAMiF,QAAQjF,IAAI;QAAC;IAC/B;AACF;AAEA,OAAO,SAASkF,aAAaC,KAK5B;IACC,OAAO;QACLnF,MAAMZ,WAAW+F,MAAMnF,IAAI,EAAEmF,MAAM7D,MAAM;QACzC,GAAI6D,MAAMtE,QAAQ,KAAKF,YAAY,CAAC,IAAI;YAAEE,UAAUsE,MAAMtE,QAAQ;QAAC,CAAC;QACpE,GAAIsE,MAAMC,SAAS,KAAKzE,YAAY,CAAC,IAAI;YAAE0E,QAAQC,OAAOH,MAAMC,SAAS;QAAE,CAAC;IAC9E;AACF;AAEA,OAAO,SAASG,eACdrB,MAAc,EACdC,IAAa,EACbC,OAAe,EACfoB,OAA4C;IAE5C,MAAMd,aAAapF,aAAa4E,QAAQC,MAAMC;IAC9C,IAAIM,eAAe,MAAM;QACvB,OAAOA,WAAWrE,IAAI,KAAK,mBAAmB;YAAEA,MAAM;QAAwB,IAAIqE;IACpF;IACA,IAAIR,WAAW,OAAO,OAAOC,SAAS,YAAYA,SAAS,MAAM;QAC/D,OAAO;YAAE9D,MAAM;QAAwB;IACzC;IACA,MAAMK,OAAOyD;IACb,IAAI,CAACR,MAAMC,OAAO,CAAClD,KAAKoE,SAAS,GAAG,OAAO;QAAEzE,MAAM;IAAwB;IAC3E,MAAMoF,UAAqC,EAAE;IAC7C,KAAK,MAAM5B,SAASnD,KAAKoE,SAAS,CAAE;QAClC,IAAI,OAAOjB,UAAU,YAAYA,UAAU,MAAM,OAAO;YAAExD,MAAM;QAAwB;QACxFoF,QAAQrD,IAAI,CAACyB;IACf;IACA,IAAI2B,QAAQ3E,QAAQ,KAAKF,WAAW;QAClC,MAAM+E,QAAQD,OAAO,CAAC,EAAE;QACxB,IAAIC,UAAU/E,WAAW,OAAO;YAAEN,MAAM;QAAa;QACrD,IAAIqF,MAAMC,WAAW,KAAK,MAAM;YAC9B,OAAO;gBACLtF,MAAM;gBACN+D;gBACAwB,OAAO;gBACPtB,MAAM;gBACNrD,QAAQ;oBAAEjB,MAAMwF,QAAQxF,IAAI;oBAAEa,UAAU2E,QAAQ3E,QAAQ;gBAAC;YAC3D;QACF;QACA,IAAI,OAAO6E,MAAM7D,OAAO,KAAK,UAAU,OAAO;YAAExB,MAAM;QAAwB;QAC9E,OAAO;YAAEA,MAAM;YAAYwB,SAAS6D,MAAM7D,OAAO;QAAC;IACpD;IACA,IAAI4D,QAAQvE,MAAM,KAAK,GAAG,OAAO;QAAEb,MAAM;IAAa;IACtD,MAAMyE,YAA+B,EAAE;IACvC,KAAK,MAAMjB,SAAS4B,QAAS;QAC3B,IACE,OAAO5B,MAAMhD,QAAQ,KAAK,YAC1B,OAAOgD,MAAMgC,WAAW,KAAK,YAC7B,OAAOhC,MAAMiC,UAAU,KAAK,UAC5B;YACA,OAAO;gBAAEzF,MAAM;YAAwB;QACzC;QACAyE,UAAU1C,IAAI,CAAC;YACbvB,UAAUgD,MAAMhD,QAAQ;YACxBkF,QAAQlC,MAAMgC,WAAW;YACzBG,MAAMnC,MAAMiC,UAAU;QACxB;IACF;IACA,MAAMG,OAAOvF,KAAKwF,WAAW;IAC7B,OAAO;QACL7F,MAAM;QACNyE;QACA,GAAI,OAAOmB,SAAS,WAAW;YAAEb,WAAWpC,OAAOiD;QAAM,IAAI,CAAC,CAAC;IACjE;AACF"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/write.ts"],"sourcesContent":["import type {\n Change,\n ChangeBatch,\n HistoryResult,\n HistoryRevision,\n MutationResult,\n Precondition,\n} from '@agentshouse/mdruntime';\nimport { sha256Hex, textBytes } from './digest.js';\nimport { nativePath, roomLocalPath } from './map.js';\nimport { classifyDoor, doorRefusal, scopedRefusal } from './refusal.js';\nimport { readPosition, roomVersion } from './version.js';\n\nexport const INLINE_BODY_LIMIT_BYTES = 4 * 1024 * 1024;\n\nexport const UPLOAD_LINE_BYTES = 37;\n\nexport const UPLOAD_BYTES_MAX = 32 * 1024 * 1024 - UPLOAD_LINE_BYTES;\n\nexport type HouseOperation = Readonly<Record<string, unknown>>;\n\nexport type ChangeMapping =\n | { kind: 'changes'; changes: readonly HouseOperation[] }\n | { kind: 'unmapped'; path: string; rule: string };\n\ntype Existence = { base: string } | { kind: 'presence' };\n\nfunction priorField(batch: ChangeBatch, path: string, name: string) {\n return batch.preconditions.find(\n (precondition): precondition is Extract<Precondition, { kind: 'field' }> =>\n precondition.kind === 'field' && precondition.path === path && precondition.name === name,\n );\n}\n\nfunction priorSection(batch: ChangeBatch, path: string, name: string) {\n return batch.preconditions.find(\n (precondition): precondition is Extract<Precondition, { kind: 'section' }> =>\n precondition.kind === 'section' && precondition.path === path && precondition.name === name,\n );\n}\n\nfunction priorPreamble(batch: ChangeBatch, path: string) {\n return batch.preconditions.find(\n (precondition): precondition is Extract<Precondition, { kind: 'preamble' }> =>\n precondition.kind === 'preamble' && precondition.path === path,\n );\n}\n\nfunction priorAbsence(batch: ChangeBatch, path: string) {\n return batch.preconditions.find(\n (precondition) => precondition.kind === 'absent' && precondition.path === path,\n );\n}\n\nfunction priorExistence(batch: ChangeBatch, path: string): Existence | undefined {\n const precondition = batch.preconditions.find(\n (held) => held.path === path && (held.kind === 'revision' || held.kind === 'present'),\n );\n if (precondition === undefined) return undefined;\n return precondition.kind === 'revision' ? { base: precondition.revision } : { kind: 'presence' };\n}\n\nfunction created(change: Extract<Change, { kind: 'create' }>, path: string): HouseOperation | null {\n if ('content' in change) return { op: 'create', path, content: change.content };\n const { type, ...fields } = change.fields;\n if (typeof type !== 'string' || type.length === 0) return null;\n return { op: 'create_typed', path, type, fields, sections: change.sections };\n}\n\ntype MappedOperation = { operation: HouseOperation } | { rule: string };\n\nfunction operationOf(\n batch: ChangeBatch,\n change: Change,\n handle: string | undefined,\n): MappedOperation {\n const path = nativePath(change.path, handle);\n if (change.kind === 'field') {\n const prior = priorField(batch, change.path, change.name);\n if (prior === undefined) return { rule: 'precondition-missing' };\n return {\n operation: {\n op: 'set_field',\n path,\n field: change.name,\n value: change.value,\n ...(prior.value === undefined ? {} : { base: prior.value }),\n },\n };\n }\n if (change.kind === 'section') {\n const prior = priorSection(batch, change.path, change.name);\n if (prior === undefined) return { rule: 'precondition-missing' };\n return {\n operation: {\n op: 'replace_section',\n path,\n section: change.name,\n base: prior.value,\n content: change.value,\n },\n };\n }\n if (change.kind === 'preamble') {\n const prior = priorPreamble(batch, change.path);\n if (prior === undefined) return { rule: 'precondition-missing' };\n return {\n operation: { op: 'replace_preamble', path, base: prior.value, content: change.value },\n };\n }\n if (change.kind === 'create') {\n if (priorAbsence(batch, change.path) === undefined) return { rule: 'precondition-missing' };\n const operation = created(change, path);\n return operation === null ? { rule: 'type-missing' } : { operation };\n }\n const existence = priorExistence(batch, change.path);\n if (existence === undefined) return { rule: 'precondition-missing' };\n if (!('base' in existence)) return { rule: 'presence-base-unrepresentable' };\n if (change.kind === 'replace') {\n return { operation: { op: 'replace', path, base: existence.base, content: change.content } };\n }\n if (change.kind === 'move') {\n if (priorAbsence(batch, change.to) === undefined) return { rule: 'precondition-missing' };\n return {\n operation: { op: 'rename', path, to: nativePath(change.to, handle), base: existence.base },\n };\n }\n return { operation: { op: 'remove', path, base: existence.base } };\n}\n\nexport function houseChanges(batch: ChangeBatch, handle: string | undefined): ChangeMapping {\n const changes: HouseOperation[] = [];\n for (const change of batch.changes) {\n const mapped = operationOf(batch, change, handle);\n if ('rule' in mapped) return { kind: 'unmapped', path: change.path, rule: mapped.rule };\n changes.push(mapped.operation);\n }\n return { kind: 'changes', changes };\n}\n\nexport type OperationHead = {\n readonly operation_id: string;\n readonly app_ref?: string;\n readonly release?: string;\n};\n\nexport function operationHead(batch: ChangeBatch): OperationHead {\n const writer = batch.writtenBy;\n return writer === undefined\n ? { operation_id: batch.id }\n : { operation_id: batch.id, app_ref: writer.app, release: writer.release };\n}\n\nexport function batchPaths(changes: readonly HouseOperation[]): readonly string[] {\n return [\n ...new Set(\n changes.flatMap((change) =>\n change.op === 'rename' ? [String(change.path), String(change.to)] : [String(change.path)],\n ),\n ),\n ].sort();\n}\n\nexport function deltaBody(changes: readonly HouseOperation[]): string {\n return JSON.stringify({ changes });\n}\n\nexport function deltaBytes(delta: string): number {\n return textBytes(delta);\n}\n\nexport function uploadable(bytes: number): boolean {\n return bytes > INLINE_BODY_LIMIT_BYTES && bytes <= UPLOAD_BYTES_MAX;\n}\n\nexport function deltaDigest(delta: string): Promise<string> {\n return sha256Hex(delta);\n}\n\ntype Material = { path: string; content: string | null; revision: string | null };\n\nfunction material(value: unknown, handle: string | undefined): readonly Material[] | null {\n if (!Array.isArray(value)) return null;\n const held: Material[] = [];\n for (const entry of value) {\n if (typeof entry !== 'object' || entry === null) return null;\n const file = entry as Record<string, unknown>;\n if (typeof file.path !== 'string') return null;\n if (file.content !== null && typeof file.content !== 'string') return null;\n if (file.revision !== null && file.revision !== undefined && typeof file.revision !== 'string')\n return null;\n let path: string;\n try {\n path = roomLocalPath(file.path, handle);\n } catch {\n return null;\n }\n held.push({\n path,\n content: file.content,\n revision: typeof file.revision === 'string' ? file.revision : null,\n });\n }\n return held;\n}\n\nfunction affectedOf(held: readonly Material[]): Readonly<Record<string, string>> {\n const affected: Record<string, string> = {};\n for (const entry of held) {\n if (entry.content !== null) affected[entry.path] = entry.content;\n }\n return affected;\n}\n\nexport function mutationOutcome(\n status: number,\n body: unknown,\n locator: string,\n handle: string | undefined,\n): MutationResult {\n const refusal = doorRefusal(body);\n if (refusal !== null && refusal.code === 'rate_limited') {\n const reset = refusal.fields.retry_at;\n return {\n kind: 'retryable-refusal',\n code: refusal.code,\n fields: refusal.fields,\n ...(typeof reset === 'string' ? { reset } : {}),\n };\n }\n if (refusal !== null && refusal.code === 'operation_expired') return { kind: 'expired' };\n if (refusal !== null && refusal.code === 'edit_conflict') {\n const { current, ...fields } = refusal.fields;\n const held = material(current, handle) ?? [];\n return { kind: 'conflicted', affected: affectedOf(held), code: refusal.code, fields };\n }\n if (refusal !== null && status === 404) {\n return scopedRefusal(locator, 'undisclosed', refusal);\n }\n const classified = classifyDoor(status, body, locator);\n if (classified !== null && classified.kind !== 'scoped-refusal') {\n return classified.kind === 'beyond-horizon' ? { kind: 'expired' } : classified;\n }\n if (classified !== null && status === 403) return classified;\n if (refusal !== null && status >= 400) {\n return { kind: 'rejected', affected: {}, code: refusal.code, fields: refusal.fields };\n }\n if (status !== 200 || typeof body !== 'object' || body === null) {\n return { kind: 'transport-uncertainty' };\n }\n const held = body as Record<string, unknown>;\n const at = readPosition(held);\n if (at === null) return { kind: 'transport-uncertainty' };\n const contents = material(held.contents, handle);\n if (contents === null) return { kind: 'transport-uncertainty' };\n const documents: Record<string, string> = {};\n const revisions: Record<string, string> = {};\n const removals: string[] = [];\n for (const entry of contents) {\n if (entry.content === null || entry.revision === null) {\n removals.push(entry.path);\n continue;\n }\n documents[entry.path] = entry.content;\n revisions[entry.path] = entry.revision;\n }\n return {\n kind: 'accepted',\n roomVersion: roomVersion(at),\n documents,\n revisions,\n removals: removals.sort(),\n };\n}\n\nexport function rejectedMapping(mapping: Extract<ChangeMapping, { kind: 'unmapped' }>) {\n return {\n kind: 'rejected' as const,\n affected: {},\n code: mapping.rule,\n fields: { path: mapping.path },\n };\n}\n\nexport function revisionBody(input: {\n path: string;\n handle: string | undefined;\n revision?: string;\n pageToken?: string;\n}): Record<string, unknown> {\n return {\n path: nativePath(input.path, input.handle),\n ...(input.revision === undefined ? {} : { revision: input.revision }),\n ...(input.pageToken === undefined ? {} : { before: Number(input.pageToken) }),\n };\n}\n\nexport function historyOutcome(\n status: number,\n body: unknown,\n locator: string,\n request: { path: string; revision?: string },\n): HistoryResult {\n const classified = classifyDoor(status, body, locator);\n if (classified !== null) {\n return classified.kind === 'beyond-horizon' ? { kind: 'transport-uncertainty' } : classified;\n }\n if (status !== 200 || typeof body !== 'object' || body === null) {\n return { kind: 'transport-uncertainty' };\n }\n const held = body as Record<string, unknown>;\n if (!Array.isArray(held.revisions)) return { kind: 'transport-uncertainty' };\n const entries: Record<string, unknown>[] = [];\n for (const entry of held.revisions) {\n if (typeof entry !== 'object' || entry === null) return { kind: 'transport-uncertainty' };\n entries.push(entry as Record<string, unknown>);\n }\n if (request.revision !== undefined) {\n const named = entries[0];\n if (named === undefined) return { kind: 'no-history' };\n if (named.unavailable === true) {\n return {\n kind: 'scoped-refusal',\n locator,\n scope: 'content',\n code: 'retained_history_unavailable',\n fields: { path: request.path, revision: request.revision },\n };\n }\n if (typeof named.content !== 'string') return { kind: 'transport-uncertainty' };\n return { kind: 'revision', content: named.content };\n }\n if (entries.length === 0) return { kind: 'no-history' };\n const revisions: HistoryRevision[] = [];\n for (const entry of entries) {\n if (\n typeof entry.revision !== 'string' ||\n typeof entry.author_user !== 'string' ||\n typeof entry.created_at !== 'string'\n ) {\n return { kind: 'transport-uncertainty' };\n }\n revisions.push({\n revision: entry.revision,\n author: entry.author_user,\n time: entry.created_at,\n });\n }\n const next = held.next_before;\n return {\n kind: 'history',\n revisions,\n ...(typeof next === 'number' ? { pageToken: String(next) } : {}),\n };\n}\n"],"names":["sha256Hex","textBytes","nativePath","roomLocalPath","classifyDoor","doorRefusal","scopedRefusal","readPosition","roomVersion","INLINE_BODY_LIMIT_BYTES","UPLOAD_LINE_BYTES","UPLOAD_BYTES_MAX","priorField","batch","path","name","preconditions","find","precondition","kind","priorSection","priorPreamble","priorAbsence","priorExistence","held","undefined","base","revision","created","change","op","content","type","fields","length","sections","operationOf","handle","prior","rule","operation","field","value","section","existence","to","houseChanges","changes","mapped","push","operationHead","writer","writtenBy","operation_id","id","app_ref","app","release","batchPaths","Set","flatMap","String","sort","deltaBody","JSON","stringify","deltaBytes","delta","uploadable","bytes","deltaDigest","material","Array","isArray","entry","file","affectedOf","affected","mutationOutcome","status","body","locator","refusal","code","reset","retry_at","current","classified","at","contents","documents","revisions","removals","rejectedMapping","mapping","revisionBody","input","pageToken","before","Number","historyOutcome","request","entries","named","unavailable","scope","author_user","created_at","author","time","next","next_before"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentshouse/mdruntime-adapter",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.19",
|
|
4
4
|
"description": "Agents House Adapter for the MD Runtime",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"url": "https://github.com/agentshouse/mdruntime/issues"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@agentshouse/mdmodel": "0.1.0-alpha.
|
|
37
|
-
"@agentshouse/mdruntime": "0.1.0-alpha.
|
|
36
|
+
"@agentshouse/mdmodel": "0.1.0-alpha.14",
|
|
37
|
+
"@agentshouse/mdruntime": "0.1.0-alpha.25"
|
|
38
38
|
}
|
|
39
39
|
}
|