@agentshouse/mdruntime-adapter 0.1.0-alpha.22 → 0.1.0-alpha.24
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 +5 -4
- package/dist/actions.js +1 -1
- package/dist/actions.js.map +1 -1
- package/dist/adapter.js +3 -3
- package/dist/adapter.js.map +1 -1
- package/dist/discovery.d.ts +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +4 -3
- package/dist/discovery.js.map +1 -1
- package/dist/read.d.ts +0 -2
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +2 -6
- package/dist/read.js.map +1 -1
- package/package.json +2 -2
package/AGENTS.md
CHANGED
|
@@ -51,7 +51,7 @@ the same object, so a component can tell what changed by identity. A query is
|
|
|
51
51
|
data:
|
|
52
52
|
|
|
53
53
|
- **Filter.** `rooms` names Room locators and defaults to every Room. `types`
|
|
54
|
-
names MD Types, and `any` names
|
|
54
|
+
names MD Types, and `any` names untyped Markdown Documents. `pathPrefix` is a
|
|
55
55
|
directory: `notes` keeps `notes/a.md` and not `notes2/a.md`.
|
|
56
56
|
- **Fields.** `where` names frontmatter fields, ANDs them, and nests `$and` and
|
|
57
57
|
`$or`. A bare value is equality; the operators are `$eq`, `$ne`, `$in`, `$nin`,
|
|
@@ -68,9 +68,10 @@ data:
|
|
|
68
68
|
matching Document of the same Room references. Each keeps a Document once.
|
|
69
69
|
- **Parts.** A Document query must `select`: `'all'`, or `fields`, `sections`,
|
|
70
70
|
`preamble`, `markdown` and `backlinks`, where `fields` and `sections` are
|
|
71
|
-
`'all'` or a list of names. Room
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
`'all'` or a list of names. Room and Path always return; a Markdown Document
|
|
72
|
+
also returns its MD Type. A non-Markdown Document or binary link target returns
|
|
73
|
+
only Room and Path. An unselected part is absent. Select only what a screen
|
|
74
|
+
shows: a list that selects the Markdown hears every edit of it.
|
|
74
75
|
- **Order and groups.** `orderBy` sorts by `room`, `path`, `type` or `{ field }`
|
|
75
76
|
with TanStack DB's own options, and ties end with Room, then Path. `groupBy` by
|
|
76
77
|
`room`, `type` or `{ field }` answers `{ groups: [{ key, count }] }`, counted
|
package/dist/actions.js
CHANGED
package/dist/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/actions.ts"],"sourcesContent":["import {\n changeBatchIdentity,\n type AcceptedMessage,\n type ActionDeclaration,\n type ActionRequest,\n type ActionResult,\n type ConversationCards,\n type ConversationHistoryPage,\n} from '@agentshouse/mdruntime';\nimport { doorRefusal } from './refusal.js';\nimport { PRIVATE_LOCATOR } from './transport.js';\nimport type { HouseDoorAnswer, HouseTransport } from './transport.js';\n\nconst HISTORY_PAGE = 100;\n\nconst OCTET_STREAM = 'application/octet-stream';\n\nconst CONVERSATION_ROUTES: ReadonlyMap<string, string> = new Map([\n ['conversation.create', '/door/conversations/create'],\n ['conversation.send', '/door/conversations/send'],\n ['conversation.answer', '/door/conversations/interaction/answer'],\n ['conversation.interrupt', '/door/conversations/interrupt'],\n ['conversation.kill', '/door/conversations/kill'],\n ['conversation.cancel', '/door/conversations/cancel'],\n ['conversation.delete', '/door/conversations/delete'],\n ['conversation.history', '/door/conversations/history'],\n]);\n\nexport const HOUSE_CONVERSATION_CARDS: ConversationCards = {\n locator: PRIVATE_LOCATOR,\n type: 'conversation',\n identity: 'conversation',\n agent: 'agent',\n};\n\nexport function declaredActions(routes: readonly string[]): readonly ActionDeclaration[] {\n const mapped = new Map(\n [...CONVERSATION_ROUTES].map(([name, route]) => [route.slice('/door/'.length), name]),\n );\n return routes.map((route) => ({\n name: mapped.get(route) ?? route,\n inputShape: {},\n resultKind: 'house',\n }));\n}\n\nexport function houseAction(\n transport: HouseTransport,\n request: ActionRequest,\n): Promise<ActionResult> {\n if (request.name === 'conversation.send') return sendAction(transport, request.input);\n if (request.name === 'conversation.history') return historyAction(transport, request.input);\n const route = routeOf(request.name);\n if (route === null) return Promise.resolve(malformed());\n return carry(transport, route, request.name, request.input);\n}\n\nfunction routeOf(name: string): string | null {\n const mapped = CONVERSATION_ROUTES.get(name);\n if (mapped !== undefined) return mapped;\n const parts = name.split('/');\n if (parts.some((part) => part === '.' || part === '..')) return null;\n try {\n return `/door/${parts.map(encodeURIComponent).join('/')}`;\n } catch {\n return null;\n }\n}\n\nfunction record(value: unknown): Record<string, unknown> {\n return typeof value === 'object' && value !== null ? (value as Record<string, unknown>) : {};\n}\n\nfunction text(value: unknown, name: string): string | undefined {\n const held = record(value)[name];\n return typeof held === 'string' ? held : undefined;\n}\n\nfunction operationId(input: unknown): string {\n return text(input, 'operation_id') ?? changeBatchIdentity();\n}\n\nfunction malformed(): ActionResult {\n return { kind: 'rejected', code: 'invalid_request', fields: {} };\n}\n\nfunction bodyOf(name: string, input: unknown): unknown {\n if (name === 'conversation.create') {\n return { agent_id: text(input, 'agent_id'), operation_id: operationId(input) };\n }\n if (\n name === 'conversation.interrupt' ||\n name === 'conversation.kill' ||\n name === 'conversation.delete'\n ) {\n return { conversation_id: text(input, 'conversation'), operation_id: operationId(input) };\n }\n if (name === 'conversation.cancel') {\n return {\n conversation_id: text(input, 'conversation'),\n message_id: text(input, 'turn'),\n operation_id: operationId(input),\n };\n }\n if (name === 'conversation.answer') {\n const nested = record(record(input).answer);\n return {\n conversation_id: text(input, 'conversation'),\n operation_id: operationId(input),\n interaction_id: text(nested, 'interaction_id'),\n revision: nested.revision,\n response: nested.response,\n };\n }\n return input;\n}\n\nfunction withTurn(body: unknown): unknown {\n const held = record(body);\n const turn = text(held, 'message_id');\n return turn === undefined ? body : { ...held, turn };\n}\n\nexport function actionOutcome(answer: HouseDoorAnswer, name: string): ActionResult {\n if (answer.status === 401) return { kind: 'revoked-authorization' };\n const refusal = doorRefusal(answer.body);\n if (refusal !== null) {\n return { kind: 'rejected', code: refusal.code, fields: refusal.fields };\n }\n if (answer.status === 404)\n return { kind: 'rejected', code: 'action-unimplemented', fields: { name } };\n if (answer.status === 0 || answer.status >= 400) return { kind: 'transport-uncertainty' };\n if (name === 'conversation.send') return { kind: 'action', result: withTurn(answer.body) };\n return { kind: 'action', result: answer.body };\n}\n\nasync function carry(\n transport: HouseTransport,\n route: string,\n name: string,\n input: unknown,\n): Promise<ActionResult> {\n const answer = await transport.door(route, bodyOf(name, input));\n return actionOutcome(answer, name);\n}\n\nfunction sendFile(entry: unknown): Record<string, unknown> | null {\n const file = record(entry);\n const name = text(file, 'name');\n const bytes = file.byteLength;\n const sha256 = text(file, 'contentHash');\n if (name === undefined || typeof bytes !== 'number' || sha256 === undefined) return null;\n const mediaType = text(file, 'mediaType');\n const width = file.width;\n const height = file.height;\n return {\n name,\n media_type: mediaType !== undefined && mediaType.length > 0 ? mediaType : OCTET_STREAM,\n bytes,\n sha256,\n ...(typeof width === 'number' && typeof height === 'number'\n ? { dimensions: { width, height } }\n : {}),\n };\n}\n\nfunction sendFiles(input: unknown): readonly Record<string, unknown>[] | null {\n const files = record(input).files;\n if (files === undefined) return [];\n if (!Array.isArray(files)) return null;\n const declared: Record<string, unknown>[] = [];\n for (const entry of files) {\n const file = sendFile(entry);\n if (file === null) return null;\n declared.push(file);\n }\n return declared;\n}\n\nfunction sendBody(input: unknown): Record<string, unknown> | null {\n const files = sendFiles(input);\n if (files === null) return null;\n const textValue = text(input, 'text');\n return {\n conversation_id: text(input, 'conversation'),\n operation_id: operationId(input),\n ...(textValue !== undefined && textValue.length > 0 ? { text: textValue } : {}),\n ...(files.length === 0 ? {} : { files }),\n };\n}\n\nasync function fileBytes(file: unknown): Promise<Uint8Array | null> {\n const blob = record(file).blob;\n if (blob === undefined || typeof blob !== 'object' || blob === null) return null;\n if (!('arrayBuffer' in blob) || typeof blob.arrayBuffer !== 'function') return null;\n return new Uint8Array(await (blob as Blob).arrayBuffer());\n}\n\nfunction uploadGrant(\n entry: unknown,\n): { method: 'POST'; operation: string; url: string } | 'absent' | null {\n if (!('upload' in record(entry))) return 'absent';\n const upload = record(record(entry).upload);\n if (upload.method !== 'POST') return null;\n if (typeof upload.operation !== 'string' || typeof upload.url !== 'string') return null;\n return { method: 'POST', operation: upload.operation, url: upload.url };\n}\n\nasync function uploadOriginals(\n transport: HouseTransport,\n input: unknown,\n result: unknown,\n): Promise<ActionResult | null> {\n const originals = record(result).originals;\n if (!Array.isArray(originals) || originals.length === 0) return null;\n const files = Array.isArray(record(input).files) ? (record(input).files as unknown[]) : [];\n for (const [index, entry] of originals.entries()) {\n const grant = uploadGrant(entry);\n if (grant === 'absent') continue;\n if (grant === null) return malformed();\n const bytes = index < files.length ? await fileBytes(files[index]) : null;\n if (bytes === null) {\n return { kind: 'rejected', code: 'conversation_original_descriptor_required', fields: {} };\n }\n const delivered = await transport.transfer({\n act: 'conversation_original_upload',\n method: 'POST',\n url: grant.url,\n body: bytes,\n operation: grant.operation,\n });\n if (delivered.status === 200) continue;\n return actionOutcome(delivered, 'conversation.send');\n }\n return null;\n}\n\nasync function sendAction(transport: HouseTransport, input: unknown): Promise<ActionResult> {\n const body = sendBody(input);\n if (body === null) return malformed();\n const answer = await transport.door('/door/conversations/send', body);\n const outcome = actionOutcome(answer, 'conversation.send');\n if (outcome.kind !== 'action') return outcome;\n const uploaded = await uploadOriginals(transport, input, outcome.result);\n if (uploaded !== null) return uploaded;\n return outcome;\n}\n\ntype HistoryCursor = { accepted_at: string; message_id: string };\n\nfunction historyCursor(value: unknown): HistoryCursor | null {\n const acceptedAt = text(value, 'accepted_at');\n const messageId = text(value, 'message_id');\n if (acceptedAt === undefined || messageId === undefined) return null;\n return { accepted_at: acceptedAt, message_id: messageId };\n}\n\nfunction position(cursor: HistoryCursor): string {\n return JSON.stringify({ accepted_at: cursor.accepted_at, message_id: cursor.message_id });\n}\n\nfunction positionCursor(value: string): HistoryCursor | null {\n try {\n return historyCursor(JSON.parse(value) as unknown);\n } catch {\n return null;\n }\n}\n\nexport function acceptedMessage(entry: unknown): AcceptedMessage | null {\n const cursor = historyCursor(entry);\n if (cursor === null) return null;\n return {\n identity: cursor.message_id,\n turn: cursor.message_id,\n position: position(cursor),\n text: text(entry, 'text') ?? '',\n message: structuredClone(entry),\n };\n}\n\nasync function historyAction(transport: HouseTransport, input: unknown): Promise<ActionResult> {\n const conversationId = text(input, 'conversation');\n if (conversationId === undefined) return malformed();\n const afterValue = text(input, 'after');\n const after = afterValue === undefined ? undefined : positionCursor(afterValue);\n if (after === null) return malformed();\n const answer = await transport.door('/door/conversations/history', {\n conversation_id: conversationId,\n ...(after === undefined ? {} : { after }),\n limit: HISTORY_PAGE,\n });\n const outcome = actionOutcome(answer, 'conversation.history');\n if (outcome.kind !== 'action') return outcome;\n const held = record(outcome.result);\n if (!Array.isArray(held.messages)) return { kind: 'transport-uncertainty' };\n const messages: AcceptedMessage[] = [];\n for (const entry of held.messages) {\n const message = acceptedMessage(entry);\n if (message === null) return { kind: 'transport-uncertainty' };\n messages.push(message);\n }\n const next = held.next === null || held.next === undefined ? undefined : historyCursor(held.next);\n if (next === null) return { kind: 'transport-uncertainty' };\n const page: ConversationHistoryPage = {\n messages,\n ...(next === undefined ? {} : { next: position(next) }),\n };\n return { kind: 'action', result: page };\n}\n"],"names":["changeBatchIdentity","doorRefusal","PRIVATE_LOCATOR","HISTORY_PAGE","OCTET_STREAM","CONVERSATION_ROUTES","Map","HOUSE_CONVERSATION_CARDS","locator","type","identity","agent","declaredActions","routes","mapped","map","name","route","slice","length","get","inputShape","resultKind","houseAction","transport","request","sendAction","input","historyAction","routeOf","Promise","resolve","malformed","carry","undefined","parts","split","some","part","encodeURIComponent","join","record","value","text","held","operationId","kind","code","fields","bodyOf","agent_id","operation_id","conversation_id","message_id","nested","answer","interaction_id","revision","response","withTurn","body","turn","actionOutcome","status","refusal","result","door","sendFile","entry","file","bytes","byteLength","sha256","mediaType","width","height","media_type","dimensions","sendFiles","files","Array","isArray","declared","push","sendBody","textValue","fileBytes","blob","arrayBuffer","Uint8Array","uploadGrant","upload","method","operation","url","uploadOriginals","originals","index","entries","grant","delivered","transfer","act","outcome","uploaded","historyCursor","acceptedAt","messageId","accepted_at","position","cursor","JSON","stringify","positionCursor","parse","acceptedMessage","message","structuredClone","conversationId","afterValue","after","limit","messages","next","page"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/actions.ts"],"sourcesContent":["import {\n changeBatchIdentity,\n type AcceptedMessage,\n type ActionDeclaration,\n type ActionRequest,\n type ActionResult,\n type ConversationCards,\n type ConversationHistoryPage,\n} from '@agentshouse/mdruntime';\nimport { doorRefusal } from './refusal.js';\nimport { PRIVATE_LOCATOR } from './transport.js';\nimport type { HouseDoorAnswer, HouseTransport } from './transport.js';\n\nconst HISTORY_PAGE = 100;\n\nconst OCTET_STREAM = 'application/octet-stream';\n\nconst CONVERSATION_ROUTES: ReadonlyMap<string, string> = new Map([\n ['conversation.create', '/door/conversations/create'],\n ['conversation.send', '/door/conversations/send'],\n ['conversation.answer', '/door/conversations/interaction/answer'],\n ['conversation.interrupt', '/door/conversations/interrupt'],\n ['conversation.kill', '/door/conversations/kill'],\n ['conversation.cancel', '/door/conversations/cancel'],\n ['conversation.delete', '/door/conversations/delete'],\n ['conversation.history', '/door/conversations/history'],\n]);\n\nexport const HOUSE_CONVERSATION_CARDS: ConversationCards = {\n locator: PRIVATE_LOCATOR,\n type: 'house-conversation',\n identity: 'conversation',\n agent: 'agent',\n};\n\nexport function declaredActions(routes: readonly string[]): readonly ActionDeclaration[] {\n const mapped = new Map(\n [...CONVERSATION_ROUTES].map(([name, route]) => [route.slice('/door/'.length), name]),\n );\n return routes.map((route) => ({\n name: mapped.get(route) ?? route,\n inputShape: {},\n resultKind: 'house',\n }));\n}\n\nexport function houseAction(\n transport: HouseTransport,\n request: ActionRequest,\n): Promise<ActionResult> {\n if (request.name === 'conversation.send') return sendAction(transport, request.input);\n if (request.name === 'conversation.history') return historyAction(transport, request.input);\n const route = routeOf(request.name);\n if (route === null) return Promise.resolve(malformed());\n return carry(transport, route, request.name, request.input);\n}\n\nfunction routeOf(name: string): string | null {\n const mapped = CONVERSATION_ROUTES.get(name);\n if (mapped !== undefined) return mapped;\n const parts = name.split('/');\n if (parts.some((part) => part === '.' || part === '..')) return null;\n try {\n return `/door/${parts.map(encodeURIComponent).join('/')}`;\n } catch {\n return null;\n }\n}\n\nfunction record(value: unknown): Record<string, unknown> {\n return typeof value === 'object' && value !== null ? (value as Record<string, unknown>) : {};\n}\n\nfunction text(value: unknown, name: string): string | undefined {\n const held = record(value)[name];\n return typeof held === 'string' ? held : undefined;\n}\n\nfunction operationId(input: unknown): string {\n return text(input, 'operation_id') ?? changeBatchIdentity();\n}\n\nfunction malformed(): ActionResult {\n return { kind: 'rejected', code: 'invalid_request', fields: {} };\n}\n\nfunction bodyOf(name: string, input: unknown): unknown {\n if (name === 'conversation.create') {\n return { agent_id: text(input, 'agent_id'), operation_id: operationId(input) };\n }\n if (\n name === 'conversation.interrupt' ||\n name === 'conversation.kill' ||\n name === 'conversation.delete'\n ) {\n return { conversation_id: text(input, 'conversation'), operation_id: operationId(input) };\n }\n if (name === 'conversation.cancel') {\n return {\n conversation_id: text(input, 'conversation'),\n message_id: text(input, 'turn'),\n operation_id: operationId(input),\n };\n }\n if (name === 'conversation.answer') {\n const nested = record(record(input).answer);\n return {\n conversation_id: text(input, 'conversation'),\n operation_id: operationId(input),\n interaction_id: text(nested, 'interaction_id'),\n revision: nested.revision,\n response: nested.response,\n };\n }\n return input;\n}\n\nfunction withTurn(body: unknown): unknown {\n const held = record(body);\n const turn = text(held, 'message_id');\n return turn === undefined ? body : { ...held, turn };\n}\n\nexport function actionOutcome(answer: HouseDoorAnswer, name: string): ActionResult {\n if (answer.status === 401) return { kind: 'revoked-authorization' };\n const refusal = doorRefusal(answer.body);\n if (refusal !== null) {\n return { kind: 'rejected', code: refusal.code, fields: refusal.fields };\n }\n if (answer.status === 404)\n return { kind: 'rejected', code: 'action-unimplemented', fields: { name } };\n if (answer.status === 0 || answer.status >= 400) return { kind: 'transport-uncertainty' };\n if (name === 'conversation.send') return { kind: 'action', result: withTurn(answer.body) };\n return { kind: 'action', result: answer.body };\n}\n\nasync function carry(\n transport: HouseTransport,\n route: string,\n name: string,\n input: unknown,\n): Promise<ActionResult> {\n const answer = await transport.door(route, bodyOf(name, input));\n return actionOutcome(answer, name);\n}\n\nfunction sendFile(entry: unknown): Record<string, unknown> | null {\n const file = record(entry);\n const name = text(file, 'name');\n const bytes = file.byteLength;\n const sha256 = text(file, 'contentHash');\n if (name === undefined || typeof bytes !== 'number' || sha256 === undefined) return null;\n const mediaType = text(file, 'mediaType');\n const width = file.width;\n const height = file.height;\n return {\n name,\n media_type: mediaType !== undefined && mediaType.length > 0 ? mediaType : OCTET_STREAM,\n bytes,\n sha256,\n ...(typeof width === 'number' && typeof height === 'number'\n ? { dimensions: { width, height } }\n : {}),\n };\n}\n\nfunction sendFiles(input: unknown): readonly Record<string, unknown>[] | null {\n const files = record(input).files;\n if (files === undefined) return [];\n if (!Array.isArray(files)) return null;\n const declared: Record<string, unknown>[] = [];\n for (const entry of files) {\n const file = sendFile(entry);\n if (file === null) return null;\n declared.push(file);\n }\n return declared;\n}\n\nfunction sendBody(input: unknown): Record<string, unknown> | null {\n const files = sendFiles(input);\n if (files === null) return null;\n const textValue = text(input, 'text');\n return {\n conversation_id: text(input, 'conversation'),\n operation_id: operationId(input),\n ...(textValue !== undefined && textValue.length > 0 ? { text: textValue } : {}),\n ...(files.length === 0 ? {} : { files }),\n };\n}\n\nasync function fileBytes(file: unknown): Promise<Uint8Array | null> {\n const blob = record(file).blob;\n if (blob === undefined || typeof blob !== 'object' || blob === null) return null;\n if (!('arrayBuffer' in blob) || typeof blob.arrayBuffer !== 'function') return null;\n return new Uint8Array(await (blob as Blob).arrayBuffer());\n}\n\nfunction uploadGrant(\n entry: unknown,\n): { method: 'POST'; operation: string; url: string } | 'absent' | null {\n if (!('upload' in record(entry))) return 'absent';\n const upload = record(record(entry).upload);\n if (upload.method !== 'POST') return null;\n if (typeof upload.operation !== 'string' || typeof upload.url !== 'string') return null;\n return { method: 'POST', operation: upload.operation, url: upload.url };\n}\n\nasync function uploadOriginals(\n transport: HouseTransport,\n input: unknown,\n result: unknown,\n): Promise<ActionResult | null> {\n const originals = record(result).originals;\n if (!Array.isArray(originals) || originals.length === 0) return null;\n const files = Array.isArray(record(input).files) ? (record(input).files as unknown[]) : [];\n for (const [index, entry] of originals.entries()) {\n const grant = uploadGrant(entry);\n if (grant === 'absent') continue;\n if (grant === null) return malformed();\n const bytes = index < files.length ? await fileBytes(files[index]) : null;\n if (bytes === null) {\n return { kind: 'rejected', code: 'conversation_original_descriptor_required', fields: {} };\n }\n const delivered = await transport.transfer({\n act: 'conversation_original_upload',\n method: 'POST',\n url: grant.url,\n body: bytes,\n operation: grant.operation,\n });\n if (delivered.status === 200) continue;\n return actionOutcome(delivered, 'conversation.send');\n }\n return null;\n}\n\nasync function sendAction(transport: HouseTransport, input: unknown): Promise<ActionResult> {\n const body = sendBody(input);\n if (body === null) return malformed();\n const answer = await transport.door('/door/conversations/send', body);\n const outcome = actionOutcome(answer, 'conversation.send');\n if (outcome.kind !== 'action') return outcome;\n const uploaded = await uploadOriginals(transport, input, outcome.result);\n if (uploaded !== null) return uploaded;\n return outcome;\n}\n\ntype HistoryCursor = { accepted_at: string; message_id: string };\n\nfunction historyCursor(value: unknown): HistoryCursor | null {\n const acceptedAt = text(value, 'accepted_at');\n const messageId = text(value, 'message_id');\n if (acceptedAt === undefined || messageId === undefined) return null;\n return { accepted_at: acceptedAt, message_id: messageId };\n}\n\nfunction position(cursor: HistoryCursor): string {\n return JSON.stringify({ accepted_at: cursor.accepted_at, message_id: cursor.message_id });\n}\n\nfunction positionCursor(value: string): HistoryCursor | null {\n try {\n return historyCursor(JSON.parse(value) as unknown);\n } catch {\n return null;\n }\n}\n\nexport function acceptedMessage(entry: unknown): AcceptedMessage | null {\n const cursor = historyCursor(entry);\n if (cursor === null) return null;\n return {\n identity: cursor.message_id,\n turn: cursor.message_id,\n position: position(cursor),\n text: text(entry, 'text') ?? '',\n message: structuredClone(entry),\n };\n}\n\nasync function historyAction(transport: HouseTransport, input: unknown): Promise<ActionResult> {\n const conversationId = text(input, 'conversation');\n if (conversationId === undefined) return malformed();\n const afterValue = text(input, 'after');\n const after = afterValue === undefined ? undefined : positionCursor(afterValue);\n if (after === null) return malformed();\n const answer = await transport.door('/door/conversations/history', {\n conversation_id: conversationId,\n ...(after === undefined ? {} : { after }),\n limit: HISTORY_PAGE,\n });\n const outcome = actionOutcome(answer, 'conversation.history');\n if (outcome.kind !== 'action') return outcome;\n const held = record(outcome.result);\n if (!Array.isArray(held.messages)) return { kind: 'transport-uncertainty' };\n const messages: AcceptedMessage[] = [];\n for (const entry of held.messages) {\n const message = acceptedMessage(entry);\n if (message === null) return { kind: 'transport-uncertainty' };\n messages.push(message);\n }\n const next = held.next === null || held.next === undefined ? undefined : historyCursor(held.next);\n if (next === null) return { kind: 'transport-uncertainty' };\n const page: ConversationHistoryPage = {\n messages,\n ...(next === undefined ? {} : { next: position(next) }),\n };\n return { kind: 'action', result: page };\n}\n"],"names":["changeBatchIdentity","doorRefusal","PRIVATE_LOCATOR","HISTORY_PAGE","OCTET_STREAM","CONVERSATION_ROUTES","Map","HOUSE_CONVERSATION_CARDS","locator","type","identity","agent","declaredActions","routes","mapped","map","name","route","slice","length","get","inputShape","resultKind","houseAction","transport","request","sendAction","input","historyAction","routeOf","Promise","resolve","malformed","carry","undefined","parts","split","some","part","encodeURIComponent","join","record","value","text","held","operationId","kind","code","fields","bodyOf","agent_id","operation_id","conversation_id","message_id","nested","answer","interaction_id","revision","response","withTurn","body","turn","actionOutcome","status","refusal","result","door","sendFile","entry","file","bytes","byteLength","sha256","mediaType","width","height","media_type","dimensions","sendFiles","files","Array","isArray","declared","push","sendBody","textValue","fileBytes","blob","arrayBuffer","Uint8Array","uploadGrant","upload","method","operation","url","uploadOriginals","originals","index","entries","grant","delivered","transfer","act","outcome","uploaded","historyCursor","acceptedAt","messageId","accepted_at","position","cursor","JSON","stringify","positionCursor","parse","acceptedMessage","message","structuredClone","conversationId","afterValue","after","limit","messages","next","page"],"mappings":"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"}
|
package/dist/adapter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DISCOVER_PREFIXES,
|
|
1
|
+
import { DISCOVER_PREFIXES, HOUSE_TYPES_ROOT, capabilities, discoveredRoom, locatorOf, mapDiscovery, parseDiscovery, providerSelection, trackedFrom } from './discovery.js';
|
|
2
2
|
import { MODEL_ABSENT, failedModel, heldModel, modelKey, modelShelf } from './model.js';
|
|
3
3
|
import { createSiteAdapter } from './site.js';
|
|
4
4
|
import { authorityRoot, bootstrapFrom, contentPrefixes, definitionsFrom, modelPrefix, parseEnumeration, parseEnvelope, parseGrant, refreshFrom } from './read.js';
|
|
@@ -43,7 +43,7 @@ export function createAgentsHouseAdapter(options) {
|
|
|
43
43
|
const privateEntry = entries.find((entry)=>entry.locator === PRIVATE_LOCATOR);
|
|
44
44
|
const prefixes = entries.map((entry)=>modelPrefix(entry, entry.modelRoot));
|
|
45
45
|
if (privateEntry !== undefined) {
|
|
46
|
-
prefixes.push(`${authorityRoot(undefined)}/${
|
|
46
|
+
prefixes.push(`${authorityRoot(undefined)}/${HOUSE_TYPES_ROOT}`);
|
|
47
47
|
}
|
|
48
48
|
const answer = await transport.door(DOOR_BOOTSTRAP, {
|
|
49
49
|
prefixes
|
|
@@ -55,7 +55,7 @@ export function createAgentsHouseAdapter(options) {
|
|
|
55
55
|
acquired.set(modelKey(entry.locator, 'collection'), await held(envelope, entry, entry.modelRoot, `${authorityRoot(entry.handle)}/${entry.modelRoot}`, failure));
|
|
56
56
|
}
|
|
57
57
|
if (privateEntry !== undefined) {
|
|
58
|
-
acquired.set(modelKey(privateEntry.locator, 'typed-selection'), await held(envelope, privateEntry,
|
|
58
|
+
acquired.set(modelKey(privateEntry.locator, 'typed-selection'), await held(envelope, privateEntry, HOUSE_TYPES_ROOT, `${authorityRoot(undefined)}/${HOUSE_TYPES_ROOT}`, failure));
|
|
59
59
|
}
|
|
60
60
|
return acquired;
|
|
61
61
|
}
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/adapter.ts"],"sourcesContent":["import type {\n ActionRequest,\n ActionResult,\n Adapter,\n Authorization,\n BootstrapRequest,\n BootstrapResult,\n DiscoverResult,\n DiscoveredRoom,\n HistoryRequest,\n HistoryResult,\n ModelRequest,\n ModelResult,\n MutationRequest,\n MutationResult,\n RefreshRequest,\n RefreshResult,\n} from '@agentshouse/mdruntime';\nimport {\n DISCOVER_PREFIXES,\n PROVIDER_SELECTION_MODEL_ROOT,\n capabilities,\n discoveredRoom,\n locatorOf,\n mapDiscovery,\n parseDiscovery,\n providerSelection,\n trackedFrom,\n type HouseAuthority,\n type TrackedAuthority,\n} from './discovery.js';\nimport {\n MODEL_ABSENT,\n failedModel,\n heldModel,\n modelKey,\n modelShelf,\n type HeldModel,\n} from './model.js';\nimport { createSiteAdapter } from './site.js';\nimport {\n authorityRoot,\n bootstrapFrom,\n contentPrefixes,\n definitionsFrom,\n modelPrefix,\n parseEnumeration,\n parseEnvelope,\n parseGrant,\n refreshFrom,\n} from './read.js';\nimport { houseAction } from './actions.js';\nimport { classifyDoor, discoveryFailure } from './refusal.js';\nimport { houseNotifications } from './stream.js';\nimport {\n DOOR_BATCH,\n DOOR_BATCH_UPLOAD,\n DOOR_BOOTSTRAP,\n DOOR_DISCOVER,\n DOOR_ENUMERATE,\n DOOR_REVISIONS,\n PRIVATE_LOCATOR,\n type HouseSiteTransport,\n type HouseTransport,\n} from './transport.js';\nimport {\n batchPaths,\n deltaBody,\n deltaBytes,\n deltaDigest,\n historyOutcome,\n houseChanges,\n mutationOutcome,\n operationHead,\n rejectedMapping,\n revisionBody,\n uploadable,\n type OperationHead,\n} from './write.js';\nimport { logPosition, presented } from './version.js';\n\nexport type AgentsHouseAdapterOptions =\n | {\n transport: HouseTransport;\n authorize(): Promise<Authorization>;\n }\n | { site: HouseSiteTransport };\n\nconst UNCERTAIN: MutationResult = { kind: 'transport-uncertainty' };\n\nconst RESOLVED_OUTCOMES: ReadonlySet<MutationResult['kind']> = new Set([\n 'accepted',\n 'conflicted',\n 'rejected',\n 'expired',\n]);\n\ntype Submission = { body: Record<string, unknown> } | { outcome: MutationResult };\n\nfunction lapsedGrant(outcome: MutationResult): boolean {\n return outcome.kind === 'rejected' && outcome.code === 'upload_unavailable';\n}\n\nfunction modelFailure(\n classified: ReturnType<typeof classifyDoor>,\n envelope: ReturnType<typeof parseEnvelope>,\n): ModelResult {\n if (classified === null) {\n return envelope === null ? { kind: 'transport-uncertainty' } : MODEL_ABSENT;\n }\n return failedModel(classified);\n}\n\nexport function createAgentsHouseAdapter(options: AgentsHouseAdapterOptions): Adapter {\n if ('site' in options) return createSiteAdapter(options.site);\n const transport = options.transport;\n const notifications = houseNotifications(transport, 'credential');\n const tracked = new Map<string, TrackedAuthority>();\n const models = modelShelf();\n const submissions = new Map<string, { sha256: string; body: Record<string, unknown> }>();\n\n function held(\n envelope: ReturnType<typeof parseEnvelope>,\n entry: TrackedAuthority,\n modelRoot: string,\n identity: string,\n failure: ModelResult,\n ): Promise<HeldModel> {\n return heldModel(\n envelope === null ? null : definitionsFrom(envelope, entry, modelRoot),\n identity,\n failure,\n );\n }\n\n async function acquireModels(\n entries: readonly TrackedAuthority[],\n ): Promise<Map<string, HeldModel>> {\n const acquired = new Map<string, HeldModel>();\n const privateEntry = entries.find((entry) => entry.locator === PRIVATE_LOCATOR);\n const prefixes = entries.map((entry) => modelPrefix(entry, entry.modelRoot));\n if (privateEntry !== undefined) {\n prefixes.push(`${authorityRoot(undefined)}/${PROVIDER_SELECTION_MODEL_ROOT}`);\n }\n const answer = await transport.door(DOOR_BOOTSTRAP, { prefixes });\n const classified = classifyDoor(answer.status, answer.body, PRIVATE_LOCATOR);\n const envelope = classified === null ? parseEnvelope(await bundled(answer.body)) : null;\n const failure: ModelResult = modelFailure(classified, envelope);\n for (const entry of entries) {\n acquired.set(\n modelKey(entry.locator, 'collection'),\n await held(\n envelope,\n entry,\n entry.modelRoot,\n `${authorityRoot(entry.handle)}/${entry.modelRoot}`,\n failure,\n ),\n );\n }\n if (privateEntry !== undefined) {\n acquired.set(\n modelKey(privateEntry.locator, 'typed-selection'),\n await held(\n envelope,\n privateEntry,\n PROVIDER_SELECTION_MODEL_ROOT,\n `${authorityRoot(undefined)}/${PROVIDER_SELECTION_MODEL_ROOT}`,\n failure,\n ),\n );\n }\n return acquired;\n }\n\n function roomOf(authority: HouseAuthority, acquired: Map<string, HeldModel>): DiscoveredRoom {\n const locator = locatorOf(authority);\n const key = modelKey(locator, 'collection');\n const collection = models.retain(key, acquired.get(key));\n if (authority.roomHandle !== null) {\n return discoveredRoom(authority, collection?.identity ?? null, undefined);\n }\n const selection = models.retain(\n modelKey(locator, 'typed-selection'),\n acquired.get(modelKey(locator, 'typed-selection')),\n );\n return discoveredRoom(\n authority,\n collection?.identity ?? null,\n providerSelection(selection?.identity ?? null),\n );\n }\n\n function authorityFor(locator: string): TrackedAuthority | undefined {\n return tracked.get(locator);\n }\n\n async function bundled(body: unknown): Promise<unknown> {\n const grant = parseGrant(body);\n if (grant === null) return body;\n if (grant.method !== 'GET') return null;\n const answer = await transport.transfer({\n act: 'working_copy_bundle',\n method: 'GET',\n url: grant.url,\n });\n return answer.status === 200 ? answer.body : null;\n }\n\n async function uploaded(\n head: OperationHead,\n changes: readonly Readonly<Record<string, unknown>>[],\n delta: string,\n bytes: number,\n entry: TrackedAuthority,\n ): Promise<Submission> {\n const paths = batchPaths(changes);\n const sha256 = await deltaDigest(delta);\n const retained = submissions.get(head.operation_id);\n if (\n retained !== undefined &&\n retained.sha256 === sha256 &&\n retained.body.app_ref === head.app_ref &&\n retained.body.release === head.release\n )\n return { body: retained.body };\n const minted = await transport.door(DOOR_BATCH_UPLOAD, { ...head, paths, bytes, sha256 });\n if (minted.status !== 200) {\n return { outcome: mutationOutcome(minted.status, minted.body, entry.locator, entry.handle) };\n }\n const grant = parseGrant(minted.body);\n if (grant === null || grant.method !== 'POST') return { outcome: UNCERTAIN };\n const delivered = await transport.transfer({\n act: 'authored_batch_upload',\n method: 'POST',\n url: grant.url,\n body: `${grant.operation}\\n${delta}`,\n });\n if (delivered.status !== 200) return { outcome: UNCERTAIN };\n const holding = parseGrant(delivered.body);\n if (holding === null) return { outcome: UNCERTAIN };\n const body = {\n ...head,\n paths,\n upload: { url: holding.url, operation: holding.operation, bytes, sha256 },\n };\n submissions.set(head.operation_id, { sha256, body });\n return { body };\n }\n\n async function submit(\n head: OperationHead,\n changes: readonly Readonly<Record<string, unknown>>[],\n delta: string,\n bytes: number,\n entry: TrackedAuthority,\n ): Promise<MutationResult> {\n const prepared: Submission = uploadable(bytes)\n ? await uploaded(head, changes, delta, bytes, entry)\n : { body: { ...head, changes } };\n if ('outcome' in prepared) return prepared.outcome;\n const answer = await transport.door(DOOR_BATCH, prepared.body);\n return mutationOutcome(answer.status, answer.body, entry.locator, entry.handle);\n }\n\n return {\n async authorize() {\n return options.authorize();\n },\n\n async model(_authorization: Authorization, request: ModelRequest): Promise<ModelResult> {\n return models.answer(request);\n },\n\n async discover(_authorization: Authorization): Promise<DiscoverResult> {\n const answer = await transport.door(DOOR_DISCOVER, { prefixes: [...DISCOVER_PREFIXES] });\n const classified = classifyDoor(answer.status, answer.body, PRIVATE_LOCATOR);\n if (classified !== null) return discoveryFailure(classified);\n const document = parseDiscovery(answer.body);\n if (document === null) return { kind: 'transport-uncertainty' };\n const entries = trackedFrom(document);\n tracked.clear();\n for (const entry of entries) tracked.set(entry.locator, entry);\n notifications.track(entries);\n const acquired = await acquireModels(entries);\n models.keep(entries.map((entry) => entry.locator));\n return mapDiscovery(\n document,\n document.authorities.map((authority) => roomOf(authority, acquired)),\n capabilities(document.actions),\n );\n },\n\n async bootstrap(\n _authorization: Authorization,\n request: BootstrapRequest,\n ): Promise<BootstrapResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n if (request.pageToken !== undefined) return { kind: 'transport-uncertainty' };\n const answer = await transport.door(DOOR_BOOTSTRAP, {\n prefixes: [...contentPrefixes(entry)],\n });\n const classified = classifyDoor(answer.status, answer.body, entry.locator);\n if (classified !== null) {\n return classified.kind === 'beyond-horizon'\n ? { kind: 'transport-uncertainty' }\n : classified;\n }\n const envelope = parseEnvelope(await bundled(answer.body));\n if (envelope === null) return { kind: 'transport-uncertainty' };\n return bootstrapFrom(envelope, entry);\n },\n\n async refresh(_authorization: Authorization, request: RefreshRequest): Promise<RefreshResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n if (request.pageToken !== undefined) return { kind: 'transport-uncertainty' };\n const from = logPosition(request.fromRoomVersion);\n if (from === null) return { kind: 'beyond-horizon' };\n const streamed = notifications.advance(entry, from);\n if (streamed !== null) return streamed;\n const answer = await transport.door(DOOR_ENUMERATE, {\n prefixes: [...contentPrefixes(entry)],\n positions: [presented(entry.authority, from)],\n });\n const classified = classifyDoor(answer.status, answer.body, entry.locator);\n if (classified !== null) return classified;\n const enumeration = parseEnumeration(answer.body, 'credential');\n if (enumeration === null) return { kind: 'transport-uncertainty' };\n return refreshFrom(enumeration, entry, request.fromRoomVersion);\n },\n\n async mutate(_authorization: Authorization, request: MutationRequest): Promise<MutationResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n const mapped = houseChanges(request.changeBatch, entry.handle);\n if (mapped.kind === 'unmapped') return rejectedMapping(mapped);\n const head = operationHead(request.changeBatch);\n const delta = deltaBody(mapped.changes);\n const bytes = deltaBytes(delta);\n const resent = submissions.has(head.operation_id);\n let outcome = await submit(head, mapped.changes, delta, bytes, entry);\n if (resent && lapsedGrant(outcome)) {\n submissions.delete(head.operation_id);\n outcome = await submit(head, mapped.changes, delta, bytes, entry);\n }\n if (RESOLVED_OUTCOMES.has(outcome.kind)) submissions.delete(head.operation_id);\n return outcome;\n },\n\n async history(_authorization: Authorization, request: HistoryRequest): Promise<HistoryResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n const answer = await transport.door(\n DOOR_REVISIONS,\n revisionBody({\n path: request.path,\n handle: entry.handle,\n ...(request.revision === undefined ? {} : { revision: request.revision }),\n ...(request.pageToken === undefined ? {} : { pageToken: request.pageToken }),\n }),\n );\n return historyOutcome(answer.status, answer.body, entry.locator, {\n path: request.path,\n ...(request.revision === undefined ? {} : { revision: request.revision }),\n });\n },\n\n async action(_authorization: Authorization, request: ActionRequest): Promise<ActionResult> {\n return houseAction(transport, request);\n },\n\n roomVersions: notifications,\n conversations: notifications.conversations,\n };\n}\n"],"names":["DISCOVER_PREFIXES","PROVIDER_SELECTION_MODEL_ROOT","capabilities","discoveredRoom","locatorOf","mapDiscovery","parseDiscovery","providerSelection","trackedFrom","MODEL_ABSENT","failedModel","heldModel","modelKey","modelShelf","createSiteAdapter","authorityRoot","bootstrapFrom","contentPrefixes","definitionsFrom","modelPrefix","parseEnumeration","parseEnvelope","parseGrant","refreshFrom","houseAction","classifyDoor","discoveryFailure","houseNotifications","DOOR_BATCH","DOOR_BATCH_UPLOAD","DOOR_BOOTSTRAP","DOOR_DISCOVER","DOOR_ENUMERATE","DOOR_REVISIONS","PRIVATE_LOCATOR","batchPaths","deltaBody","deltaBytes","deltaDigest","historyOutcome","houseChanges","mutationOutcome","operationHead","rejectedMapping","revisionBody","uploadable","logPosition","presented","UNCERTAIN","kind","RESOLVED_OUTCOMES","Set","lapsedGrant","outcome","code","modelFailure","classified","envelope","createAgentsHouseAdapter","options","site","transport","notifications","tracked","Map","models","submissions","held","entry","modelRoot","identity","failure","acquireModels","entries","acquired","privateEntry","find","locator","prefixes","map","undefined","push","answer","door","status","body","bundled","set","handle","roomOf","authority","key","collection","retain","get","roomHandle","selection","authorityFor","grant","method","transfer","act","url","uploaded","head","changes","delta","bytes","paths","sha256","retained","operation_id","app_ref","release","minted","delivered","operation","holding","upload","submit","prepared","authorize","model","_authorization","request","discover","document","clear","track","keep","authorities","actions","bootstrap","pageToken","refresh","from","fromRoomVersion","streamed","advance","positions","enumeration","mutate","mapped","changeBatch","resent","has","delete","history","path","revision","action","roomVersions","conversations"],"mappings":"AAkBA,SACEA,iBAAiB,EACjBC,6BAA6B,EAC7BC,YAAY,EACZC,cAAc,EACdC,SAAS,EACTC,YAAY,EACZC,cAAc,EACdC,iBAAiB,EACjBC,WAAW,QAGN,iBAAiB;AACxB,SACEC,YAAY,EACZC,WAAW,EACXC,SAAS,EACTC,QAAQ,EACRC,UAAU,QAEL,aAAa;AACpB,SAASC,iBAAiB,QAAQ,YAAY;AAC9C,SACEC,aAAa,EACbC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,WAAW,EACXC,gBAAgB,EAChBC,aAAa,EACbC,UAAU,EACVC,WAAW,QACN,YAAY;AACnB,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,YAAY,EAAEC,gBAAgB,QAAQ,eAAe;AAC9D,SAASC,kBAAkB,QAAQ,cAAc;AACjD,SACEC,UAAU,EACVC,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,eAAe,QAGV,iBAAiB;AACxB,SACEC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,cAAc,EACdC,YAAY,EACZC,eAAe,EACfC,aAAa,EACbC,eAAe,EACfC,YAAY,EACZC,UAAU,QAEL,aAAa;AACpB,SAASC,WAAW,EAAEC,SAAS,QAAQ,eAAe;AAStD,MAAMC,YAA4B;IAAEC,MAAM;AAAwB;AAElE,MAAMC,oBAAyD,IAAIC,IAAI;IACrE;IACA;IACA;IACA;CACD;AAID,SAASC,YAAYC,OAAuB;IAC1C,OAAOA,QAAQJ,IAAI,KAAK,cAAcI,QAAQC,IAAI,KAAK;AACzD;AAEA,SAASC,aACPC,UAA2C,EAC3CC,QAA0C;IAE1C,IAAID,eAAe,MAAM;QACvB,OAAOC,aAAa,OAAO;YAAER,MAAM;QAAwB,IAAIxC;IACjE;IACA,OAAOC,YAAY8C;AACrB;AAEA,OAAO,SAASE,yBAAyBC,OAAkC;IACzE,IAAI,UAAUA,SAAS,OAAO7C,kBAAkB6C,QAAQC,IAAI;IAC5D,MAAMC,YAAYF,QAAQE,SAAS;IACnC,MAAMC,gBAAgBnC,mBAAmBkC,WAAW;IACpD,MAAME,UAAU,IAAIC;IACpB,MAAMC,SAASpD;IACf,MAAMqD,cAAc,IAAIF;IAExB,SAASG,KACPV,QAA0C,EAC1CW,KAAuB,EACvBC,SAAiB,EACjBC,QAAgB,EAChBC,OAAoB;QAEpB,OAAO5D,UACL8C,aAAa,OAAO,OAAOvC,gBAAgBuC,UAAUW,OAAOC,YAC5DC,UACAC;IAEJ;IAEA,eAAeC,cACbC,OAAoC;QAEpC,MAAMC,WAAW,IAAIV;QACrB,MAAMW,eAAeF,QAAQG,IAAI,CAAC,CAACR,QAAUA,MAAMS,OAAO,KAAK3C;QAC/D,MAAM4C,WAAWL,QAAQM,GAAG,CAAC,CAACX,QAAUjD,YAAYiD,OAAOA,MAAMC,SAAS;QAC1E,IAAIM,iBAAiBK,WAAW;YAC9BF,SAASG,IAAI,CAAC,GAAGlE,cAAciE,WAAW,CAAC,EAAE/E,+BAA+B;QAC9E;QACA,MAAMiF,SAAS,MAAMrB,UAAUsB,IAAI,CAACrD,gBAAgB;YAAEgD;QAAS;QAC/D,MAAMtB,aAAa/B,aAAayD,OAAOE,MAAM,EAAEF,OAAOG,IAAI,EAAEnD;QAC5D,MAAMuB,WAAWD,eAAe,OAAOnC,cAAc,MAAMiE,QAAQJ,OAAOG,IAAI,KAAK;QACnF,MAAMd,UAAuBhB,aAAaC,YAAYC;QACtD,KAAK,MAAMW,SAASK,QAAS;YAC3BC,SAASa,GAAG,CACV3E,SAASwD,MAAMS,OAAO,EAAE,eACxB,MAAMV,KACJV,UACAW,OACAA,MAAMC,SAAS,EACf,GAAGtD,cAAcqD,MAAMoB,MAAM,EAAE,CAAC,EAAEpB,MAAMC,SAAS,EAAE,EACnDE;QAGN;QACA,IAAII,iBAAiBK,WAAW;YAC9BN,SAASa,GAAG,CACV3E,SAAS+D,aAAaE,OAAO,EAAE,oBAC/B,MAAMV,KACJV,UACAkB,cACA1E,+BACA,GAAGc,cAAciE,WAAW,CAAC,EAAE/E,+BAA+B,EAC9DsE;QAGN;QACA,OAAOG;IACT;IAEA,SAASe,OAAOC,SAAyB,EAAEhB,QAAgC;QACzE,MAAMG,UAAUzE,UAAUsF;QAC1B,MAAMC,MAAM/E,SAASiE,SAAS;QAC9B,MAAMe,aAAa3B,OAAO4B,MAAM,CAACF,KAAKjB,SAASoB,GAAG,CAACH;QACnD,IAAID,UAAUK,UAAU,KAAK,MAAM;YACjC,OAAO5F,eAAeuF,WAAWE,YAAYtB,YAAY,MAAMU;QACjE;QACA,MAAMgB,YAAY/B,OAAO4B,MAAM,CAC7BjF,SAASiE,SAAS,oBAClBH,SAASoB,GAAG,CAAClF,SAASiE,SAAS;QAEjC,OAAO1E,eACLuF,WACAE,YAAYtB,YAAY,MACxB/D,kBAAkByF,WAAW1B,YAAY;IAE7C;IAEA,SAAS2B,aAAapB,OAAe;QACnC,OAAOd,QAAQ+B,GAAG,CAACjB;IACrB;IAEA,eAAeS,QAAQD,IAAa;QAClC,MAAMa,QAAQ5E,WAAW+D;QACzB,IAAIa,UAAU,MAAM,OAAOb;QAC3B,IAAIa,MAAMC,MAAM,KAAK,OAAO,OAAO;QACnC,MAAMjB,SAAS,MAAMrB,UAAUuC,QAAQ,CAAC;YACtCC,KAAK;YACLF,QAAQ;YACRG,KAAKJ,MAAMI,GAAG;QAChB;QACA,OAAOpB,OAAOE,MAAM,KAAK,MAAMF,OAAOG,IAAI,GAAG;IAC/C;IAEA,eAAekB,SACbC,IAAmB,EACnBC,OAAqD,EACrDC,KAAa,EACbC,KAAa,EACbvC,KAAuB;QAEvB,MAAMwC,QAAQzE,WAAWsE;QACzB,MAAMI,SAAS,MAAMvE,YAAYoE;QACjC,MAAMI,WAAW5C,YAAY4B,GAAG,CAACU,KAAKO,YAAY;QAClD,IACED,aAAa9B,aACb8B,SAASD,MAAM,KAAKA,UACpBC,SAASzB,IAAI,CAAC2B,OAAO,KAAKR,KAAKQ,OAAO,IACtCF,SAASzB,IAAI,CAAC4B,OAAO,KAAKT,KAAKS,OAAO,EAEtC,OAAO;YAAE5B,MAAMyB,SAASzB,IAAI;QAAC;QAC/B,MAAM6B,SAAS,MAAMrD,UAAUsB,IAAI,CAACtD,mBAAmB;YAAE,GAAG2E,IAAI;YAAEI;YAAOD;YAAOE;QAAO;QACvF,IAAIK,OAAO9B,MAAM,KAAK,KAAK;YACzB,OAAO;gBAAE/B,SAASZ,gBAAgByE,OAAO9B,MAAM,EAAE8B,OAAO7B,IAAI,EAAEjB,MAAMS,OAAO,EAAET,MAAMoB,MAAM;YAAE;QAC7F;QACA,MAAMU,QAAQ5E,WAAW4F,OAAO7B,IAAI;QACpC,IAAIa,UAAU,QAAQA,MAAMC,MAAM,KAAK,QAAQ,OAAO;YAAE9C,SAASL;QAAU;QAC3E,MAAMmE,YAAY,MAAMtD,UAAUuC,QAAQ,CAAC;YACzCC,KAAK;YACLF,QAAQ;YACRG,KAAKJ,MAAMI,GAAG;YACdjB,MAAM,GAAGa,MAAMkB,SAAS,CAAC,EAAE,EAAEV,OAAO;QACtC;QACA,IAAIS,UAAU/B,MAAM,KAAK,KAAK,OAAO;YAAE/B,SAASL;QAAU;QAC1D,MAAMqE,UAAU/F,WAAW6F,UAAU9B,IAAI;QACzC,IAAIgC,YAAY,MAAM,OAAO;YAAEhE,SAASL;QAAU;QAClD,MAAMqC,OAAO;YACX,GAAGmB,IAAI;YACPI;YACAU,QAAQ;gBAAEhB,KAAKe,QAAQf,GAAG;gBAAEc,WAAWC,QAAQD,SAAS;gBAAET;gBAAOE;YAAO;QAC1E;QACA3C,YAAYqB,GAAG,CAACiB,KAAKO,YAAY,EAAE;YAAEF;YAAQxB;QAAK;QAClD,OAAO;YAAEA;QAAK;IAChB;IAEA,eAAekC,OACbf,IAAmB,EACnBC,OAAqD,EACrDC,KAAa,EACbC,KAAa,EACbvC,KAAuB;QAEvB,MAAMoD,WAAuB3E,WAAW8D,SACpC,MAAMJ,SAASC,MAAMC,SAASC,OAAOC,OAAOvC,SAC5C;YAAEiB,MAAM;gBAAE,GAAGmB,IAAI;gBAAEC;YAAQ;QAAE;QACjC,IAAI,aAAae,UAAU,OAAOA,SAASnE,OAAO;QAClD,MAAM6B,SAAS,MAAMrB,UAAUsB,IAAI,CAACvD,YAAY4F,SAASnC,IAAI;QAC7D,OAAO5C,gBAAgByC,OAAOE,MAAM,EAAEF,OAAOG,IAAI,EAAEjB,MAAMS,OAAO,EAAET,MAAMoB,MAAM;IAChF;IAEA,OAAO;QACL,MAAMiC;YACJ,OAAO9D,QAAQ8D,SAAS;QAC1B;QAEA,MAAMC,OAAMC,cAA6B,EAAEC,OAAqB;YAC9D,OAAO3D,OAAOiB,MAAM,CAAC0C;QACvB;QAEA,MAAMC,UAASF,cAA6B;YAC1C,MAAMzC,SAAS,MAAMrB,UAAUsB,IAAI,CAACpD,eAAe;gBAAE+C,UAAU;uBAAI9E;iBAAkB;YAAC;YACtF,MAAMwD,aAAa/B,aAAayD,OAAOE,MAAM,EAAEF,OAAOG,IAAI,EAAEnD;YAC5D,IAAIsB,eAAe,MAAM,OAAO9B,iBAAiB8B;YACjD,MAAMsE,WAAWxH,eAAe4E,OAAOG,IAAI;YAC3C,IAAIyC,aAAa,MAAM,OAAO;gBAAE7E,MAAM;YAAwB;YAC9D,MAAMwB,UAAUjE,YAAYsH;YAC5B/D,QAAQgE,KAAK;YACb,KAAK,MAAM3D,SAASK,QAASV,QAAQwB,GAAG,CAACnB,MAAMS,OAAO,EAAET;YACxDN,cAAckE,KAAK,CAACvD;YACpB,MAAMC,WAAW,MAAMF,cAAcC;YACrCR,OAAOgE,IAAI,CAACxD,QAAQM,GAAG,CAAC,CAACX,QAAUA,MAAMS,OAAO;YAChD,OAAOxE,aACLyH,UACAA,SAASI,WAAW,CAACnD,GAAG,CAAC,CAACW,YAAcD,OAAOC,WAAWhB,YAC1DxE,aAAa4H,SAASK,OAAO;QAEjC;QAEA,MAAMC,WACJT,cAA6B,EAC7BC,OAAyB;YAEzB,MAAMxD,QAAQ6B,aAAa2B,QAAQ/C,OAAO;YAC1C,IAAIT,UAAUY,WAAW,OAAO;gBAAE/B,MAAM;gBAAqB4B,SAAS+C,QAAQ/C,OAAO;YAAC;YACtF,IAAI+C,QAAQS,SAAS,KAAKrD,WAAW,OAAO;gBAAE/B,MAAM;YAAwB;YAC5E,MAAMiC,SAAS,MAAMrB,UAAUsB,IAAI,CAACrD,gBAAgB;gBAClDgD,UAAU;uBAAI7D,gBAAgBmD;iBAAO;YACvC;YACA,MAAMZ,aAAa/B,aAAayD,OAAOE,MAAM,EAAEF,OAAOG,IAAI,EAAEjB,MAAMS,OAAO;YACzE,IAAIrB,eAAe,MAAM;gBACvB,OAAOA,WAAWP,IAAI,KAAK,mBACvB;oBAAEA,MAAM;gBAAwB,IAChCO;YACN;YACA,MAAMC,WAAWpC,cAAc,MAAMiE,QAAQJ,OAAOG,IAAI;YACxD,IAAI5B,aAAa,MAAM,OAAO;gBAAER,MAAM;YAAwB;YAC9D,OAAOjC,cAAcyC,UAAUW;QACjC;QAEA,MAAMkE,SAAQX,cAA6B,EAAEC,OAAuB;YAClE,MAAMxD,QAAQ6B,aAAa2B,QAAQ/C,OAAO;YAC1C,IAAIT,UAAUY,WAAW,OAAO;gBAAE/B,MAAM;gBAAqB4B,SAAS+C,QAAQ/C,OAAO;YAAC;YACtF,IAAI+C,QAAQS,SAAS,KAAKrD,WAAW,OAAO;gBAAE/B,MAAM;YAAwB;YAC5E,MAAMsF,OAAOzF,YAAY8E,QAAQY,eAAe;YAChD,IAAID,SAAS,MAAM,OAAO;gBAAEtF,MAAM;YAAiB;YACnD,MAAMwF,WAAW3E,cAAc4E,OAAO,CAACtE,OAAOmE;YAC9C,IAAIE,aAAa,MAAM,OAAOA;YAC9B,MAAMvD,SAAS,MAAMrB,UAAUsB,IAAI,CAACnD,gBAAgB;gBAClD8C,UAAU;uBAAI7D,gBAAgBmD;iBAAO;gBACrCuE,WAAW;oBAAC5F,UAAUqB,MAAMsB,SAAS,EAAE6C;iBAAM;YAC/C;YACA,MAAM/E,aAAa/B,aAAayD,OAAOE,MAAM,EAAEF,OAAOG,IAAI,EAAEjB,MAAMS,OAAO;YACzE,IAAIrB,eAAe,MAAM,OAAOA;YAChC,MAAMoF,cAAcxH,iBAAiB8D,OAAOG,IAAI,EAAE;YAClD,IAAIuD,gBAAgB,MAAM,OAAO;gBAAE3F,MAAM;YAAwB;YACjE,OAAO1B,YAAYqH,aAAaxE,OAAOwD,QAAQY,eAAe;QAChE;QAEA,MAAMK,QAAOlB,cAA6B,EAAEC,OAAwB;YAClE,MAAMxD,QAAQ6B,aAAa2B,QAAQ/C,OAAO;YAC1C,IAAIT,UAAUY,WAAW,OAAO;gBAAE/B,MAAM;gBAAqB4B,SAAS+C,QAAQ/C,OAAO;YAAC;YACtF,MAAMiE,SAAStG,aAAaoF,QAAQmB,WAAW,EAAE3E,MAAMoB,MAAM;YAC7D,IAAIsD,OAAO7F,IAAI,KAAK,YAAY,OAAON,gBAAgBmG;YACvD,MAAMtC,OAAO9D,cAAckF,QAAQmB,WAAW;YAC9C,MAAMrC,QAAQtE,UAAU0G,OAAOrC,OAAO;YACtC,MAAME,QAAQtE,WAAWqE;YACzB,MAAMsC,SAAS9E,YAAY+E,GAAG,CAACzC,KAAKO,YAAY;YAChD,IAAI1D,UAAU,MAAMkE,OAAOf,MAAMsC,OAAOrC,OAAO,EAAEC,OAAOC,OAAOvC;YAC/D,IAAI4E,UAAU5F,YAAYC,UAAU;gBAClCa,YAAYgF,MAAM,CAAC1C,KAAKO,YAAY;gBACpC1D,UAAU,MAAMkE,OAAOf,MAAMsC,OAAOrC,OAAO,EAAEC,OAAOC,OAAOvC;YAC7D;YACA,IAAIlB,kBAAkB+F,GAAG,CAAC5F,QAAQJ,IAAI,GAAGiB,YAAYgF,MAAM,CAAC1C,KAAKO,YAAY;YAC7E,OAAO1D;QACT;QAEA,MAAM8F,SAAQxB,cAA6B,EAAEC,OAAuB;YAClE,MAAMxD,QAAQ6B,aAAa2B,QAAQ/C,OAAO;YAC1C,IAAIT,UAAUY,WAAW,OAAO;gBAAE/B,MAAM;gBAAqB4B,SAAS+C,QAAQ/C,OAAO;YAAC;YACtF,MAAMK,SAAS,MAAMrB,UAAUsB,IAAI,CACjClD,gBACAW,aAAa;gBACXwG,MAAMxB,QAAQwB,IAAI;gBAClB5D,QAAQpB,MAAMoB,MAAM;gBACpB,GAAIoC,QAAQyB,QAAQ,KAAKrE,YAAY,CAAC,IAAI;oBAAEqE,UAAUzB,QAAQyB,QAAQ;gBAAC,CAAC;gBACxE,GAAIzB,QAAQS,SAAS,KAAKrD,YAAY,CAAC,IAAI;oBAAEqD,WAAWT,QAAQS,SAAS;gBAAC,CAAC;YAC7E;YAEF,OAAO9F,eAAe2C,OAAOE,MAAM,EAAEF,OAAOG,IAAI,EAAEjB,MAAMS,OAAO,EAAE;gBAC/DuE,MAAMxB,QAAQwB,IAAI;gBAClB,GAAIxB,QAAQyB,QAAQ,KAAKrE,YAAY,CAAC,IAAI;oBAAEqE,UAAUzB,QAAQyB,QAAQ;gBAAC,CAAC;YAC1E;QACF;QAEA,MAAMC,QAAO3B,cAA6B,EAAEC,OAAsB;YAChE,OAAOpG,YAAYqC,WAAW+D;QAChC;QAEA2B,cAAczF;QACd0F,eAAe1F,cAAc0F,aAAa;IAC5C;AACF"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/adapter.ts"],"sourcesContent":["import type {\n ActionRequest,\n ActionResult,\n Adapter,\n Authorization,\n BootstrapRequest,\n BootstrapResult,\n DiscoverResult,\n DiscoveredRoom,\n HistoryRequest,\n HistoryResult,\n ModelRequest,\n ModelResult,\n MutationRequest,\n MutationResult,\n RefreshRequest,\n RefreshResult,\n} from '@agentshouse/mdruntime';\nimport {\n DISCOVER_PREFIXES,\n HOUSE_TYPES_ROOT,\n capabilities,\n discoveredRoom,\n locatorOf,\n mapDiscovery,\n parseDiscovery,\n providerSelection,\n trackedFrom,\n type HouseAuthority,\n type TrackedAuthority,\n} from './discovery.js';\nimport {\n MODEL_ABSENT,\n failedModel,\n heldModel,\n modelKey,\n modelShelf,\n type HeldModel,\n} from './model.js';\nimport { createSiteAdapter } from './site.js';\nimport {\n authorityRoot,\n bootstrapFrom,\n contentPrefixes,\n definitionsFrom,\n modelPrefix,\n parseEnumeration,\n parseEnvelope,\n parseGrant,\n refreshFrom,\n} from './read.js';\nimport { houseAction } from './actions.js';\nimport { classifyDoor, discoveryFailure } from './refusal.js';\nimport { houseNotifications } from './stream.js';\nimport {\n DOOR_BATCH,\n DOOR_BATCH_UPLOAD,\n DOOR_BOOTSTRAP,\n DOOR_DISCOVER,\n DOOR_ENUMERATE,\n DOOR_REVISIONS,\n PRIVATE_LOCATOR,\n type HouseSiteTransport,\n type HouseTransport,\n} from './transport.js';\nimport {\n batchPaths,\n deltaBody,\n deltaBytes,\n deltaDigest,\n historyOutcome,\n houseChanges,\n mutationOutcome,\n operationHead,\n rejectedMapping,\n revisionBody,\n uploadable,\n type OperationHead,\n} from './write.js';\nimport { logPosition, presented } from './version.js';\n\nexport type AgentsHouseAdapterOptions =\n | {\n transport: HouseTransport;\n authorize(): Promise<Authorization>;\n }\n | { site: HouseSiteTransport };\n\nconst UNCERTAIN: MutationResult = { kind: 'transport-uncertainty' };\n\nconst RESOLVED_OUTCOMES: ReadonlySet<MutationResult['kind']> = new Set([\n 'accepted',\n 'conflicted',\n 'rejected',\n 'expired',\n]);\n\ntype Submission = { body: Record<string, unknown> } | { outcome: MutationResult };\n\nfunction lapsedGrant(outcome: MutationResult): boolean {\n return outcome.kind === 'rejected' && outcome.code === 'upload_unavailable';\n}\n\nfunction modelFailure(\n classified: ReturnType<typeof classifyDoor>,\n envelope: ReturnType<typeof parseEnvelope>,\n): ModelResult {\n if (classified === null) {\n return envelope === null ? { kind: 'transport-uncertainty' } : MODEL_ABSENT;\n }\n return failedModel(classified);\n}\n\nexport function createAgentsHouseAdapter(options: AgentsHouseAdapterOptions): Adapter {\n if ('site' in options) return createSiteAdapter(options.site);\n const transport = options.transport;\n const notifications = houseNotifications(transport, 'credential');\n const tracked = new Map<string, TrackedAuthority>();\n const models = modelShelf();\n const submissions = new Map<string, { sha256: string; body: Record<string, unknown> }>();\n\n function held(\n envelope: ReturnType<typeof parseEnvelope>,\n entry: TrackedAuthority,\n modelRoot: string,\n identity: string,\n failure: ModelResult,\n ): Promise<HeldModel> {\n return heldModel(\n envelope === null ? null : definitionsFrom(envelope, entry, modelRoot),\n identity,\n failure,\n );\n }\n\n async function acquireModels(\n entries: readonly TrackedAuthority[],\n ): Promise<Map<string, HeldModel>> {\n const acquired = new Map<string, HeldModel>();\n const privateEntry = entries.find((entry) => entry.locator === PRIVATE_LOCATOR);\n const prefixes = entries.map((entry) => modelPrefix(entry, entry.modelRoot));\n if (privateEntry !== undefined) {\n prefixes.push(`${authorityRoot(undefined)}/${HOUSE_TYPES_ROOT}`);\n }\n const answer = await transport.door(DOOR_BOOTSTRAP, { prefixes });\n const classified = classifyDoor(answer.status, answer.body, PRIVATE_LOCATOR);\n const envelope = classified === null ? parseEnvelope(await bundled(answer.body)) : null;\n const failure: ModelResult = modelFailure(classified, envelope);\n for (const entry of entries) {\n acquired.set(\n modelKey(entry.locator, 'collection'),\n await held(\n envelope,\n entry,\n entry.modelRoot,\n `${authorityRoot(entry.handle)}/${entry.modelRoot}`,\n failure,\n ),\n );\n }\n if (privateEntry !== undefined) {\n acquired.set(\n modelKey(privateEntry.locator, 'typed-selection'),\n await held(\n envelope,\n privateEntry,\n HOUSE_TYPES_ROOT,\n `${authorityRoot(undefined)}/${HOUSE_TYPES_ROOT}`,\n failure,\n ),\n );\n }\n return acquired;\n }\n\n function roomOf(authority: HouseAuthority, acquired: Map<string, HeldModel>): DiscoveredRoom {\n const locator = locatorOf(authority);\n const key = modelKey(locator, 'collection');\n const collection = models.retain(key, acquired.get(key));\n if (authority.roomHandle !== null) {\n return discoveredRoom(authority, collection?.identity ?? null, undefined);\n }\n const selection = models.retain(\n modelKey(locator, 'typed-selection'),\n acquired.get(modelKey(locator, 'typed-selection')),\n );\n return discoveredRoom(\n authority,\n collection?.identity ?? null,\n providerSelection(selection?.identity ?? null),\n );\n }\n\n function authorityFor(locator: string): TrackedAuthority | undefined {\n return tracked.get(locator);\n }\n\n async function bundled(body: unknown): Promise<unknown> {\n const grant = parseGrant(body);\n if (grant === null) return body;\n if (grant.method !== 'GET') return null;\n const answer = await transport.transfer({\n act: 'working_copy_bundle',\n method: 'GET',\n url: grant.url,\n });\n return answer.status === 200 ? answer.body : null;\n }\n\n async function uploaded(\n head: OperationHead,\n changes: readonly Readonly<Record<string, unknown>>[],\n delta: string,\n bytes: number,\n entry: TrackedAuthority,\n ): Promise<Submission> {\n const paths = batchPaths(changes);\n const sha256 = await deltaDigest(delta);\n const retained = submissions.get(head.operation_id);\n if (\n retained !== undefined &&\n retained.sha256 === sha256 &&\n retained.body.app_ref === head.app_ref &&\n retained.body.release === head.release\n )\n return { body: retained.body };\n const minted = await transport.door(DOOR_BATCH_UPLOAD, { ...head, paths, bytes, sha256 });\n if (minted.status !== 200) {\n return { outcome: mutationOutcome(minted.status, minted.body, entry.locator, entry.handle) };\n }\n const grant = parseGrant(minted.body);\n if (grant === null || grant.method !== 'POST') return { outcome: UNCERTAIN };\n const delivered = await transport.transfer({\n act: 'authored_batch_upload',\n method: 'POST',\n url: grant.url,\n body: `${grant.operation}\\n${delta}`,\n });\n if (delivered.status !== 200) return { outcome: UNCERTAIN };\n const holding = parseGrant(delivered.body);\n if (holding === null) return { outcome: UNCERTAIN };\n const body = {\n ...head,\n paths,\n upload: { url: holding.url, operation: holding.operation, bytes, sha256 },\n };\n submissions.set(head.operation_id, { sha256, body });\n return { body };\n }\n\n async function submit(\n head: OperationHead,\n changes: readonly Readonly<Record<string, unknown>>[],\n delta: string,\n bytes: number,\n entry: TrackedAuthority,\n ): Promise<MutationResult> {\n const prepared: Submission = uploadable(bytes)\n ? await uploaded(head, changes, delta, bytes, entry)\n : { body: { ...head, changes } };\n if ('outcome' in prepared) return prepared.outcome;\n const answer = await transport.door(DOOR_BATCH, prepared.body);\n return mutationOutcome(answer.status, answer.body, entry.locator, entry.handle);\n }\n\n return {\n async authorize() {\n return options.authorize();\n },\n\n async model(_authorization: Authorization, request: ModelRequest): Promise<ModelResult> {\n return models.answer(request);\n },\n\n async discover(_authorization: Authorization): Promise<DiscoverResult> {\n const answer = await transport.door(DOOR_DISCOVER, { prefixes: [...DISCOVER_PREFIXES] });\n const classified = classifyDoor(answer.status, answer.body, PRIVATE_LOCATOR);\n if (classified !== null) return discoveryFailure(classified);\n const document = parseDiscovery(answer.body);\n if (document === null) return { kind: 'transport-uncertainty' };\n const entries = trackedFrom(document);\n tracked.clear();\n for (const entry of entries) tracked.set(entry.locator, entry);\n notifications.track(entries);\n const acquired = await acquireModels(entries);\n models.keep(entries.map((entry) => entry.locator));\n return mapDiscovery(\n document,\n document.authorities.map((authority) => roomOf(authority, acquired)),\n capabilities(document.actions),\n );\n },\n\n async bootstrap(\n _authorization: Authorization,\n request: BootstrapRequest,\n ): Promise<BootstrapResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n if (request.pageToken !== undefined) return { kind: 'transport-uncertainty' };\n const answer = await transport.door(DOOR_BOOTSTRAP, {\n prefixes: [...contentPrefixes(entry)],\n });\n const classified = classifyDoor(answer.status, answer.body, entry.locator);\n if (classified !== null) {\n return classified.kind === 'beyond-horizon'\n ? { kind: 'transport-uncertainty' }\n : classified;\n }\n const envelope = parseEnvelope(await bundled(answer.body));\n if (envelope === null) return { kind: 'transport-uncertainty' };\n return bootstrapFrom(envelope, entry);\n },\n\n async refresh(_authorization: Authorization, request: RefreshRequest): Promise<RefreshResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n if (request.pageToken !== undefined) return { kind: 'transport-uncertainty' };\n const from = logPosition(request.fromRoomVersion);\n if (from === null) return { kind: 'beyond-horizon' };\n const streamed = notifications.advance(entry, from);\n if (streamed !== null) return streamed;\n const answer = await transport.door(DOOR_ENUMERATE, {\n prefixes: [...contentPrefixes(entry)],\n positions: [presented(entry.authority, from)],\n });\n const classified = classifyDoor(answer.status, answer.body, entry.locator);\n if (classified !== null) return classified;\n const enumeration = parseEnumeration(answer.body, 'credential');\n if (enumeration === null) return { kind: 'transport-uncertainty' };\n return refreshFrom(enumeration, entry, request.fromRoomVersion);\n },\n\n async mutate(_authorization: Authorization, request: MutationRequest): Promise<MutationResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n const mapped = houseChanges(request.changeBatch, entry.handle);\n if (mapped.kind === 'unmapped') return rejectedMapping(mapped);\n const head = operationHead(request.changeBatch);\n const delta = deltaBody(mapped.changes);\n const bytes = deltaBytes(delta);\n const resent = submissions.has(head.operation_id);\n let outcome = await submit(head, mapped.changes, delta, bytes, entry);\n if (resent && lapsedGrant(outcome)) {\n submissions.delete(head.operation_id);\n outcome = await submit(head, mapped.changes, delta, bytes, entry);\n }\n if (RESOLVED_OUTCOMES.has(outcome.kind)) submissions.delete(head.operation_id);\n return outcome;\n },\n\n async history(_authorization: Authorization, request: HistoryRequest): Promise<HistoryResult> {\n const entry = authorityFor(request.locator);\n if (entry === undefined) return { kind: 'room-not-readable', locator: request.locator };\n const answer = await transport.door(\n DOOR_REVISIONS,\n revisionBody({\n path: request.path,\n handle: entry.handle,\n ...(request.revision === undefined ? {} : { revision: request.revision }),\n ...(request.pageToken === undefined ? {} : { pageToken: request.pageToken }),\n }),\n );\n return historyOutcome(answer.status, answer.body, entry.locator, {\n path: request.path,\n ...(request.revision === undefined ? {} : { revision: request.revision }),\n });\n },\n\n async action(_authorization: Authorization, request: ActionRequest): Promise<ActionResult> {\n return houseAction(transport, request);\n },\n\n roomVersions: notifications,\n conversations: notifications.conversations,\n };\n}\n"],"names":["DISCOVER_PREFIXES","HOUSE_TYPES_ROOT","capabilities","discoveredRoom","locatorOf","mapDiscovery","parseDiscovery","providerSelection","trackedFrom","MODEL_ABSENT","failedModel","heldModel","modelKey","modelShelf","createSiteAdapter","authorityRoot","bootstrapFrom","contentPrefixes","definitionsFrom","modelPrefix","parseEnumeration","parseEnvelope","parseGrant","refreshFrom","houseAction","classifyDoor","discoveryFailure","houseNotifications","DOOR_BATCH","DOOR_BATCH_UPLOAD","DOOR_BOOTSTRAP","DOOR_DISCOVER","DOOR_ENUMERATE","DOOR_REVISIONS","PRIVATE_LOCATOR","batchPaths","deltaBody","deltaBytes","deltaDigest","historyOutcome","houseChanges","mutationOutcome","operationHead","rejectedMapping","revisionBody","uploadable","logPosition","presented","UNCERTAIN","kind","RESOLVED_OUTCOMES","Set","lapsedGrant","outcome","code","modelFailure","classified","envelope","createAgentsHouseAdapter","options","site","transport","notifications","tracked","Map","models","submissions","held","entry","modelRoot","identity","failure","acquireModels","entries","acquired","privateEntry","find","locator","prefixes","map","undefined","push","answer","door","status","body","bundled","set","handle","roomOf","authority","key","collection","retain","get","roomHandle","selection","authorityFor","grant","method","transfer","act","url","uploaded","head","changes","delta","bytes","paths","sha256","retained","operation_id","app_ref","release","minted","delivered","operation","holding","upload","submit","prepared","authorize","model","_authorization","request","discover","document","clear","track","keep","authorities","actions","bootstrap","pageToken","refresh","from","fromRoomVersion","streamed","advance","positions","enumeration","mutate","mapped","changeBatch","resent","has","delete","history","path","revision","action","roomVersions","conversations"],"mappings":"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"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const PROVIDER_ACTIONS = "provider-actions";
|
|
|
7
7
|
export declare const MOVE_REFERENCE_REWRITES = "move-reference-rewrites";
|
|
8
8
|
export declare const DISCOVER_PREFIXES: readonly string[];
|
|
9
9
|
export declare const PROVIDER_SELECTION_ROOTS: readonly string[];
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const HOUSE_TYPES_ROOT = "house/types";
|
|
11
11
|
export type HouseBounds = {
|
|
12
12
|
max_authored_file_bytes: number;
|
|
13
13
|
max_batch_operations: number;
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3E,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,eAAO,MAAM,iBAAiB,yBAAyB,CAAC;AAExD,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAEvE,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAU,CAAC;AAE1D,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/discovery.js
CHANGED
|
@@ -11,9 +11,10 @@ export const DISCOVER_PREFIXES = [
|
|
|
11
11
|
];
|
|
12
12
|
export const PROVIDER_SELECTION_ROOTS = [
|
|
13
13
|
'agents',
|
|
14
|
-
'house'
|
|
14
|
+
'house',
|
|
15
|
+
'settings/apps'
|
|
15
16
|
];
|
|
16
|
-
export const
|
|
17
|
+
export const HOUSE_TYPES_ROOT = 'house/types';
|
|
17
18
|
const BOUND_KEYS = [
|
|
18
19
|
'max_authored_file_bytes',
|
|
19
20
|
'max_batch_operations',
|
|
@@ -209,7 +210,7 @@ export function trackedFrom(document) {
|
|
|
209
210
|
modelRoot: authority.modelRoot,
|
|
210
211
|
modelRoots: authority.roomHandle === null ? [
|
|
211
212
|
authority.modelRoot,
|
|
212
|
-
|
|
213
|
+
HOUSE_TYPES_ROOT
|
|
213
214
|
] : [
|
|
214
215
|
authority.modelRoot
|
|
215
216
|
],
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/discovery.ts"],"sourcesContent":["import type {\n Capability,\n DiscoveredRoom,\n Discovery,\n ProviderLimit,\n Retention,\n TypedSelection,\n} from '@agentshouse/mdruntime';\nimport { declaredActions, HOUSE_CONVERSATION_CARDS } from './actions.js';\nimport { PRIVATE_LOCATOR } from './transport.js';\nimport { readPosition, roomVersion, type LogPosition } from './version.js';\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const MD_MODEL_IDENTITY = '@agentshouse/mdmodel';\n\nexport const ROOM_VERSION_NOTIFICATIONS = 'room-version-notifications';\n\nexport const PROVIDER_ACTIONS = 'provider-actions';\n\nexport const MOVE_REFERENCE_REWRITES = 'move-reference-rewrites';\n\nexport const DISCOVER_PREFIXES: readonly string[] = ['/'];\n\nexport const PROVIDER_SELECTION_ROOTS: readonly string[] = ['agents', 'house'];\n\nexport const PROVIDER_SELECTION_MODEL_ROOT = 'house/settings/model';\n\nexport type HouseBounds = {\n max_authored_file_bytes: number;\n max_batch_operations: number;\n max_path_length: number;\n max_path_depth: number;\n max_mount_files: number;\n max_mount_bytes: number;\n change_retention_seconds: number;\n operation_retention_seconds: number;\n};\n\nexport type HouseOperations = {\n read: readonly string[];\n sync: readonly string[];\n write: readonly string[];\n delete: readonly string[];\n};\n\nexport type HouseAuthority = LogPosition & {\n roomRef: string;\n roomHandle: string | null;\n name: string;\n collectionRoot: string;\n modelRoot: string;\n managedReplication: 'admitted' | 'unavailable';\n protectedPaths: readonly string[];\n operations: HouseOperations;\n};\n\nexport type HouseDiscoveryDocument = {\n bounds: HouseBounds;\n mdModelVersion: string;\n authorities: readonly HouseAuthority[];\n actions: readonly string[];\n};\n\nexport type TrackedAuthority = LogPosition & {\n locator: string;\n authority: string;\n handle: string | undefined;\n collectionRoot: string;\n modelRoot: string;\n modelRoots: readonly string[];\n};\n\nexport type HouseSiteEntry = {\n roomRef: string;\n segment: string;\n};\n\nexport type HouseSiteSlot = {\n slot: string;\n entries: readonly HouseSiteEntry[];\n};\n\nexport type HouseSiteAuthority = LogPosition & {\n roomRef: string;\n roomHandle: string;\n collectionRoot: string;\n modelRoot: string;\n};\n\nexport type HouseSiteDiscovery = {\n bounds: HouseBounds;\n mdModelVersion: string;\n slots: readonly HouseSiteSlot[];\n authorities: readonly HouseSiteAuthority[];\n};\n\nexport type SiteTracked = TrackedAuthority & { handle: string };\n\nconst BOUND_KEYS: readonly (keyof HouseBounds)[] = [\n 'max_authored_file_bytes',\n 'max_batch_operations',\n 'max_path_length',\n 'max_path_depth',\n 'max_mount_files',\n 'max_mount_bytes',\n 'change_retention_seconds',\n 'operation_retention_seconds',\n];\n\nconst OPERATION_KEYS: readonly (keyof HouseOperations)[] = ['read', 'sync', 'write', 'delete'];\n\nfunction stringList(value: unknown): readonly string[] | null {\n if (!Array.isArray(value)) return null;\n return value.every((entry) => typeof entry === 'string') ? (value as string[]) : null;\n}\n\nfunction parseBounds(value: unknown): HouseBounds | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n const bounds: Partial<HouseBounds> = {};\n for (const key of BOUND_KEYS) {\n const amount = held[key];\n if (typeof amount !== 'number' || !Number.isFinite(amount)) return null;\n bounds[key] = amount;\n }\n return bounds as HouseBounds;\n}\n\nfunction parseOperations(value: unknown): HouseOperations | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n const operations: Partial<Record<keyof HouseOperations, readonly string[]>> = {};\n for (const key of OPERATION_KEYS) {\n const scopes = stringList(held[key]);\n if (scopes === null) return null;\n operations[key] = scopes;\n }\n return operations as HouseOperations;\n}\n\nfunction parseAuthority(value: unknown): HouseAuthority | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (held.kind !== 'room') return null;\n if (typeof held.name !== 'string' || held.name.length === 0) return null;\n if (typeof held.collection_root !== 'string' || typeof held.model_root !== 'string') return null;\n if (held.managed_replication !== 'admitted' && held.managed_replication !== 'unavailable') {\n return null;\n }\n const at = readPosition(held);\n const protectedPaths = stringList(held.protected_paths);\n const operations = parseOperations(held.operations);\n if (at === null || protectedPaths === null || operations === null) return null;\n if (typeof held.room_ref !== 'string' || held.room_ref.length === 0) return null;\n if (\n held.room_handle !== null &&\n (typeof held.room_handle !== 'string' || held.room_handle.length === 0)\n )\n return null;\n return {\n roomRef: held.room_ref,\n roomHandle: held.room_handle,\n name: held.name,\n collectionRoot: held.collection_root,\n modelRoot: held.model_root,\n managedReplication: held.managed_replication,\n protectedPaths,\n operations,\n ...at,\n };\n}\n\nexport function parseDiscovery(body: unknown): HouseDiscoveryDocument | null {\n if (typeof body !== 'object' || body === null) return null;\n const held = body as Record<string, unknown>;\n const bounds = parseBounds(held.bounds);\n if (bounds === null) return null;\n if (typeof held.md_model_version !== 'string' || held.md_model_version.length === 0) return null;\n const actions = stringList(held.actions);\n if (\n actions === null ||\n new Set(actions).size !== actions.length ||\n actions.some((name) => name.length === 0)\n )\n return null;\n if (!Array.isArray(held.authorities)) return null;\n const authorities: HouseAuthority[] = [];\n for (const entry of held.authorities) {\n const authority = parseAuthority(entry);\n if (authority === null) return null;\n authorities.push(authority);\n }\n return { bounds, mdModelVersion: held.md_model_version, authorities, actions };\n}\n\nfunction parseSiteEntry(value: unknown): HouseSiteEntry | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.room_ref !== 'string' || held.room_ref.length === 0) return null;\n if (typeof held.segment !== 'string' || held.segment.length === 0) return null;\n return { roomRef: held.room_ref, segment: held.segment };\n}\n\nfunction parseSiteSlot(value: unknown): HouseSiteSlot | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.slot !== 'string' || held.slot.length === 0) return null;\n if (!Array.isArray(held.entries)) return null;\n const entries: HouseSiteEntry[] = [];\n for (const entry of held.entries) {\n const parsed = parseSiteEntry(entry);\n if (parsed === null) return null;\n entries.push(parsed);\n }\n return { slot: held.slot, entries };\n}\n\nfunction parseSiteAuthority(value: unknown): HouseSiteAuthority | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (held.kind !== 'room') return null;\n if (typeof held.room_ref !== 'string' || held.room_ref.length === 0) return null;\n if (typeof held.room_handle !== 'string' || held.room_handle.length === 0) return null;\n if (typeof held.collection_root !== 'string' || typeof held.model_root !== 'string') return null;\n const at = readPosition(held);\n if (at === null) return null;\n return {\n roomRef: held.room_ref,\n roomHandle: held.room_handle,\n collectionRoot: held.collection_root,\n modelRoot: held.model_root,\n ...at,\n };\n}\n\nexport function parseSiteDiscovery(body: unknown): HouseSiteDiscovery | null {\n if (typeof body !== 'object' || body === null) return null;\n const held = body as Record<string, unknown>;\n const bounds = parseBounds(held.bounds);\n if (bounds === null) return null;\n if (typeof held.md_model_version !== 'string' || held.md_model_version.length === 0) return null;\n if (!Array.isArray(held.slots) || !Array.isArray(held.authorities)) return null;\n const slots: HouseSiteSlot[] = [];\n for (const entry of held.slots) {\n const slot = parseSiteSlot(entry);\n if (slot === null) return null;\n slots.push(slot);\n }\n const authorities: HouseSiteAuthority[] = [];\n for (const entry of held.authorities) {\n const authority = parseSiteAuthority(entry);\n if (authority === null) return null;\n authorities.push(authority);\n }\n return { bounds, mdModelVersion: held.md_model_version, slots, authorities };\n}\n\nexport function siteTracked(document: HouseSiteDiscovery): SiteTracked[] {\n return document.authorities.map((authority) => ({\n locator: authority.roomRef,\n authority: authority.roomRef,\n handle: authority.roomHandle,\n collectionRoot: authority.collectionRoot,\n modelRoot: authority.modelRoot,\n modelRoots: [authority.modelRoot],\n position: authority.position,\n logEpoch: authority.logEpoch,\n }));\n}\n\nexport function siteSlots(document: HouseSiteDiscovery): Discovery['slots'] {\n return document.slots.map(({ slot, entries }) => ({\n slot,\n entries: entries.map(({ roomRef, segment }) => ({ locator: roomRef, segment })),\n }));\n}\n\nexport function locatorOf(authority: HouseAuthority): string {\n return authority.roomHandle ?? PRIVATE_LOCATOR;\n}\n\nexport function trackedFrom(document: HouseDiscoveryDocument): TrackedAuthority[] {\n return document.authorities.map((authority) => ({\n locator: locatorOf(authority),\n authority: authority.roomRef,\n handle: authority.roomHandle ?? undefined,\n collectionRoot: authority.collectionRoot,\n modelRoot: authority.modelRoot,\n modelRoots:\n authority.roomHandle === null\n ? [authority.modelRoot, PROVIDER_SELECTION_MODEL_ROOT]\n : [authority.modelRoot],\n position: authority.position,\n logEpoch: authority.logEpoch,\n }));\n}\n\nexport function providerLimits(bounds: HouseBounds): readonly ProviderLimit[] {\n return [\n { name: 'document-size', value: bounds.max_authored_file_bytes },\n { name: 'change-batch-operations', value: bounds.max_batch_operations },\n { name: 'path-length', value: bounds.max_path_length },\n { name: 'path-depth', value: bounds.max_path_depth },\n { name: 'write-rate' },\n { name: 'content-ceiling' },\n ];\n}\n\nexport function declaredRetention(bounds: HouseBounds): Retention {\n return {\n history: { kind: 'no-declared-time-bound' },\n outcome: bounds.operation_retention_seconds,\n refreshHorizon: bounds.change_retention_seconds,\n };\n}\n\nexport function capabilities(actions: readonly string[]): readonly Capability[] {\n return [\n { name: ROOM_VERSION_NOTIFICATIONS },\n {\n name: PROVIDER_ACTIONS,\n actions: declaredActions(actions),\n conversationCards: HOUSE_CONVERSATION_CARDS,\n },\n { name: MOVE_REFERENCE_REWRITES },\n ];\n}\n\nexport function siteCapabilities(): readonly Capability[] {\n return [\n { name: ROOM_VERSION_NOTIFICATIONS },\n { name: PROVIDER_ACTIONS, actions: [{ name: 'submit', inputShape: {}, resultKind: 'house' }] },\n ];\n}\n\nexport function providerSelection(attachedModel: TypedSelection['attachedModel']): TypedSelection {\n return { roots: [...PROVIDER_SELECTION_ROOTS], attachedModel };\n}\n\nexport function discoveredRoom(\n authority: HouseAuthority,\n attachedModel: DiscoveredRoom['attachedModel'],\n typedSelection: TypedSelection | undefined,\n): DiscoveredRoom {\n return {\n name: authority.name,\n locator: locatorOf(authority),\n collectionRoot: authority.collectionRoot,\n roomVersion: roomVersion(authority),\n operations: {\n read: [...authority.operations.read],\n sync: [...authority.operations.sync],\n write: [...authority.operations.write],\n delete: [...authority.operations.delete],\n },\n replica: { selection: locatorOf(authority), admission: authority.managedReplication },\n attachedModel,\n ...(typedSelection === undefined ? {} : { typedSelection }),\n providerOwnedPaths: [...authority.protectedPaths],\n };\n}\n\nexport function mapDiscovery(\n document: Pick<HouseDiscoveryDocument, 'bounds' | 'mdModelVersion'>,\n rooms: readonly DiscoveredRoom[],\n declared: readonly Capability[],\n): Discovery {\n return {\n kind: 'discovery',\n supportedVersions: [ROOM_CONTRACT_VERSION],\n mdModel: { identity: MD_MODEL_IDENTITY, version: document.mdModelVersion },\n rooms,\n capabilities: declared,\n providerLimits: providerLimits(document.bounds),\n retention: declaredRetention(document.bounds),\n };\n}\n"],"names":["declaredActions","HOUSE_CONVERSATION_CARDS","PRIVATE_LOCATOR","readPosition","roomVersion","ROOM_CONTRACT_VERSION","MD_MODEL_IDENTITY","ROOM_VERSION_NOTIFICATIONS","PROVIDER_ACTIONS","MOVE_REFERENCE_REWRITES","DISCOVER_PREFIXES","PROVIDER_SELECTION_ROOTS","PROVIDER_SELECTION_MODEL_ROOT","BOUND_KEYS","OPERATION_KEYS","stringList","value","Array","isArray","every","entry","parseBounds","held","bounds","key","amount","Number","isFinite","parseOperations","operations","scopes","parseAuthority","kind","name","length","collection_root","model_root","managed_replication","at","protectedPaths","protected_paths","room_ref","room_handle","roomRef","roomHandle","collectionRoot","modelRoot","managedReplication","parseDiscovery","body","md_model_version","actions","Set","size","some","authorities","authority","push","mdModelVersion","parseSiteEntry","segment","parseSiteSlot","slot","entries","parsed","parseSiteAuthority","parseSiteDiscovery","slots","siteTracked","document","map","locator","handle","modelRoots","position","logEpoch","siteSlots","locatorOf","trackedFrom","undefined","providerLimits","max_authored_file_bytes","max_batch_operations","max_path_length","max_path_depth","declaredRetention","history","outcome","operation_retention_seconds","refreshHorizon","change_retention_seconds","capabilities","conversationCards","siteCapabilities","inputShape","resultKind","providerSelection","attachedModel","roots","discoveredRoom","typedSelection","read","sync","write","delete","replica","selection","admission","providerOwnedPaths","mapDiscovery","rooms","declared","supportedVersions","mdModel","identity","version","retention"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/discovery.ts"],"sourcesContent":["import type {\n Capability,\n DiscoveredRoom,\n Discovery,\n ProviderLimit,\n Retention,\n TypedSelection,\n} from '@agentshouse/mdruntime';\nimport { declaredActions, HOUSE_CONVERSATION_CARDS } from './actions.js';\nimport { PRIVATE_LOCATOR } from './transport.js';\nimport { readPosition, roomVersion, type LogPosition } from './version.js';\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const MD_MODEL_IDENTITY = '@agentshouse/mdmodel';\n\nexport const ROOM_VERSION_NOTIFICATIONS = 'room-version-notifications';\n\nexport const PROVIDER_ACTIONS = 'provider-actions';\n\nexport const MOVE_REFERENCE_REWRITES = 'move-reference-rewrites';\n\nexport const DISCOVER_PREFIXES: readonly string[] = ['/'];\n\nexport const PROVIDER_SELECTION_ROOTS: readonly string[] = ['agents', 'house', 'settings/apps'];\n\nexport const HOUSE_TYPES_ROOT = 'house/types';\n\nexport type HouseBounds = {\n max_authored_file_bytes: number;\n max_batch_operations: number;\n max_path_length: number;\n max_path_depth: number;\n max_mount_files: number;\n max_mount_bytes: number;\n change_retention_seconds: number;\n operation_retention_seconds: number;\n};\n\nexport type HouseOperations = {\n read: readonly string[];\n sync: readonly string[];\n write: readonly string[];\n delete: readonly string[];\n};\n\nexport type HouseAuthority = LogPosition & {\n roomRef: string;\n roomHandle: string | null;\n name: string;\n collectionRoot: string;\n modelRoot: string;\n managedReplication: 'admitted' | 'unavailable';\n protectedPaths: readonly string[];\n operations: HouseOperations;\n};\n\nexport type HouseDiscoveryDocument = {\n bounds: HouseBounds;\n mdModelVersion: string;\n authorities: readonly HouseAuthority[];\n actions: readonly string[];\n};\n\nexport type TrackedAuthority = LogPosition & {\n locator: string;\n authority: string;\n handle: string | undefined;\n collectionRoot: string;\n modelRoot: string;\n modelRoots: readonly string[];\n};\n\nexport type HouseSiteEntry = {\n roomRef: string;\n segment: string;\n};\n\nexport type HouseSiteSlot = {\n slot: string;\n entries: readonly HouseSiteEntry[];\n};\n\nexport type HouseSiteAuthority = LogPosition & {\n roomRef: string;\n roomHandle: string;\n collectionRoot: string;\n modelRoot: string;\n};\n\nexport type HouseSiteDiscovery = {\n bounds: HouseBounds;\n mdModelVersion: string;\n slots: readonly HouseSiteSlot[];\n authorities: readonly HouseSiteAuthority[];\n};\n\nexport type SiteTracked = TrackedAuthority & { handle: string };\n\nconst BOUND_KEYS: readonly (keyof HouseBounds)[] = [\n 'max_authored_file_bytes',\n 'max_batch_operations',\n 'max_path_length',\n 'max_path_depth',\n 'max_mount_files',\n 'max_mount_bytes',\n 'change_retention_seconds',\n 'operation_retention_seconds',\n];\n\nconst OPERATION_KEYS: readonly (keyof HouseOperations)[] = ['read', 'sync', 'write', 'delete'];\n\nfunction stringList(value: unknown): readonly string[] | null {\n if (!Array.isArray(value)) return null;\n return value.every((entry) => typeof entry === 'string') ? (value as string[]) : null;\n}\n\nfunction parseBounds(value: unknown): HouseBounds | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n const bounds: Partial<HouseBounds> = {};\n for (const key of BOUND_KEYS) {\n const amount = held[key];\n if (typeof amount !== 'number' || !Number.isFinite(amount)) return null;\n bounds[key] = amount;\n }\n return bounds as HouseBounds;\n}\n\nfunction parseOperations(value: unknown): HouseOperations | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n const operations: Partial<Record<keyof HouseOperations, readonly string[]>> = {};\n for (const key of OPERATION_KEYS) {\n const scopes = stringList(held[key]);\n if (scopes === null) return null;\n operations[key] = scopes;\n }\n return operations as HouseOperations;\n}\n\nfunction parseAuthority(value: unknown): HouseAuthority | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (held.kind !== 'room') return null;\n if (typeof held.name !== 'string' || held.name.length === 0) return null;\n if (typeof held.collection_root !== 'string' || typeof held.model_root !== 'string') return null;\n if (held.managed_replication !== 'admitted' && held.managed_replication !== 'unavailable') {\n return null;\n }\n const at = readPosition(held);\n const protectedPaths = stringList(held.protected_paths);\n const operations = parseOperations(held.operations);\n if (at === null || protectedPaths === null || operations === null) return null;\n if (typeof held.room_ref !== 'string' || held.room_ref.length === 0) return null;\n if (\n held.room_handle !== null &&\n (typeof held.room_handle !== 'string' || held.room_handle.length === 0)\n )\n return null;\n return {\n roomRef: held.room_ref,\n roomHandle: held.room_handle,\n name: held.name,\n collectionRoot: held.collection_root,\n modelRoot: held.model_root,\n managedReplication: held.managed_replication,\n protectedPaths,\n operations,\n ...at,\n };\n}\n\nexport function parseDiscovery(body: unknown): HouseDiscoveryDocument | null {\n if (typeof body !== 'object' || body === null) return null;\n const held = body as Record<string, unknown>;\n const bounds = parseBounds(held.bounds);\n if (bounds === null) return null;\n if (typeof held.md_model_version !== 'string' || held.md_model_version.length === 0) return null;\n const actions = stringList(held.actions);\n if (\n actions === null ||\n new Set(actions).size !== actions.length ||\n actions.some((name) => name.length === 0)\n )\n return null;\n if (!Array.isArray(held.authorities)) return null;\n const authorities: HouseAuthority[] = [];\n for (const entry of held.authorities) {\n const authority = parseAuthority(entry);\n if (authority === null) return null;\n authorities.push(authority);\n }\n return { bounds, mdModelVersion: held.md_model_version, authorities, actions };\n}\n\nfunction parseSiteEntry(value: unknown): HouseSiteEntry | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.room_ref !== 'string' || held.room_ref.length === 0) return null;\n if (typeof held.segment !== 'string' || held.segment.length === 0) return null;\n return { roomRef: held.room_ref, segment: held.segment };\n}\n\nfunction parseSiteSlot(value: unknown): HouseSiteSlot | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.slot !== 'string' || held.slot.length === 0) return null;\n if (!Array.isArray(held.entries)) return null;\n const entries: HouseSiteEntry[] = [];\n for (const entry of held.entries) {\n const parsed = parseSiteEntry(entry);\n if (parsed === null) return null;\n entries.push(parsed);\n }\n return { slot: held.slot, entries };\n}\n\nfunction parseSiteAuthority(value: unknown): HouseSiteAuthority | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (held.kind !== 'room') return null;\n if (typeof held.room_ref !== 'string' || held.room_ref.length === 0) return null;\n if (typeof held.room_handle !== 'string' || held.room_handle.length === 0) return null;\n if (typeof held.collection_root !== 'string' || typeof held.model_root !== 'string') return null;\n const at = readPosition(held);\n if (at === null) return null;\n return {\n roomRef: held.room_ref,\n roomHandle: held.room_handle,\n collectionRoot: held.collection_root,\n modelRoot: held.model_root,\n ...at,\n };\n}\n\nexport function parseSiteDiscovery(body: unknown): HouseSiteDiscovery | null {\n if (typeof body !== 'object' || body === null) return null;\n const held = body as Record<string, unknown>;\n const bounds = parseBounds(held.bounds);\n if (bounds === null) return null;\n if (typeof held.md_model_version !== 'string' || held.md_model_version.length === 0) return null;\n if (!Array.isArray(held.slots) || !Array.isArray(held.authorities)) return null;\n const slots: HouseSiteSlot[] = [];\n for (const entry of held.slots) {\n const slot = parseSiteSlot(entry);\n if (slot === null) return null;\n slots.push(slot);\n }\n const authorities: HouseSiteAuthority[] = [];\n for (const entry of held.authorities) {\n const authority = parseSiteAuthority(entry);\n if (authority === null) return null;\n authorities.push(authority);\n }\n return { bounds, mdModelVersion: held.md_model_version, slots, authorities };\n}\n\nexport function siteTracked(document: HouseSiteDiscovery): SiteTracked[] {\n return document.authorities.map((authority) => ({\n locator: authority.roomRef,\n authority: authority.roomRef,\n handle: authority.roomHandle,\n collectionRoot: authority.collectionRoot,\n modelRoot: authority.modelRoot,\n modelRoots: [authority.modelRoot],\n position: authority.position,\n logEpoch: authority.logEpoch,\n }));\n}\n\nexport function siteSlots(document: HouseSiteDiscovery): Discovery['slots'] {\n return document.slots.map(({ slot, entries }) => ({\n slot,\n entries: entries.map(({ roomRef, segment }) => ({ locator: roomRef, segment })),\n }));\n}\n\nexport function locatorOf(authority: HouseAuthority): string {\n return authority.roomHandle ?? PRIVATE_LOCATOR;\n}\n\nexport function trackedFrom(document: HouseDiscoveryDocument): TrackedAuthority[] {\n return document.authorities.map((authority) => ({\n locator: locatorOf(authority),\n authority: authority.roomRef,\n handle: authority.roomHandle ?? undefined,\n collectionRoot: authority.collectionRoot,\n modelRoot: authority.modelRoot,\n modelRoots:\n authority.roomHandle === null\n ? [authority.modelRoot, HOUSE_TYPES_ROOT]\n : [authority.modelRoot],\n position: authority.position,\n logEpoch: authority.logEpoch,\n }));\n}\n\nexport function providerLimits(bounds: HouseBounds): readonly ProviderLimit[] {\n return [\n { name: 'document-size', value: bounds.max_authored_file_bytes },\n { name: 'change-batch-operations', value: bounds.max_batch_operations },\n { name: 'path-length', value: bounds.max_path_length },\n { name: 'path-depth', value: bounds.max_path_depth },\n { name: 'write-rate' },\n { name: 'content-ceiling' },\n ];\n}\n\nexport function declaredRetention(bounds: HouseBounds): Retention {\n return {\n history: { kind: 'no-declared-time-bound' },\n outcome: bounds.operation_retention_seconds,\n refreshHorizon: bounds.change_retention_seconds,\n };\n}\n\nexport function capabilities(actions: readonly string[]): readonly Capability[] {\n return [\n { name: ROOM_VERSION_NOTIFICATIONS },\n {\n name: PROVIDER_ACTIONS,\n actions: declaredActions(actions),\n conversationCards: HOUSE_CONVERSATION_CARDS,\n },\n { name: MOVE_REFERENCE_REWRITES },\n ];\n}\n\nexport function siteCapabilities(): readonly Capability[] {\n return [\n { name: ROOM_VERSION_NOTIFICATIONS },\n { name: PROVIDER_ACTIONS, actions: [{ name: 'submit', inputShape: {}, resultKind: 'house' }] },\n ];\n}\n\nexport function providerSelection(attachedModel: TypedSelection['attachedModel']): TypedSelection {\n return { roots: [...PROVIDER_SELECTION_ROOTS], attachedModel };\n}\n\nexport function discoveredRoom(\n authority: HouseAuthority,\n attachedModel: DiscoveredRoom['attachedModel'],\n typedSelection: TypedSelection | undefined,\n): DiscoveredRoom {\n return {\n name: authority.name,\n locator: locatorOf(authority),\n collectionRoot: authority.collectionRoot,\n roomVersion: roomVersion(authority),\n operations: {\n read: [...authority.operations.read],\n sync: [...authority.operations.sync],\n write: [...authority.operations.write],\n delete: [...authority.operations.delete],\n },\n replica: { selection: locatorOf(authority), admission: authority.managedReplication },\n attachedModel,\n ...(typedSelection === undefined ? {} : { typedSelection }),\n providerOwnedPaths: [...authority.protectedPaths],\n };\n}\n\nexport function mapDiscovery(\n document: Pick<HouseDiscoveryDocument, 'bounds' | 'mdModelVersion'>,\n rooms: readonly DiscoveredRoom[],\n declared: readonly Capability[],\n): Discovery {\n return {\n kind: 'discovery',\n supportedVersions: [ROOM_CONTRACT_VERSION],\n mdModel: { identity: MD_MODEL_IDENTITY, version: document.mdModelVersion },\n rooms,\n capabilities: declared,\n providerLimits: providerLimits(document.bounds),\n retention: declaredRetention(document.bounds),\n };\n}\n"],"names":["declaredActions","HOUSE_CONVERSATION_CARDS","PRIVATE_LOCATOR","readPosition","roomVersion","ROOM_CONTRACT_VERSION","MD_MODEL_IDENTITY","ROOM_VERSION_NOTIFICATIONS","PROVIDER_ACTIONS","MOVE_REFERENCE_REWRITES","DISCOVER_PREFIXES","PROVIDER_SELECTION_ROOTS","HOUSE_TYPES_ROOT","BOUND_KEYS","OPERATION_KEYS","stringList","value","Array","isArray","every","entry","parseBounds","held","bounds","key","amount","Number","isFinite","parseOperations","operations","scopes","parseAuthority","kind","name","length","collection_root","model_root","managed_replication","at","protectedPaths","protected_paths","room_ref","room_handle","roomRef","roomHandle","collectionRoot","modelRoot","managedReplication","parseDiscovery","body","md_model_version","actions","Set","size","some","authorities","authority","push","mdModelVersion","parseSiteEntry","segment","parseSiteSlot","slot","entries","parsed","parseSiteAuthority","parseSiteDiscovery","slots","siteTracked","document","map","locator","handle","modelRoots","position","logEpoch","siteSlots","locatorOf","trackedFrom","undefined","providerLimits","max_authored_file_bytes","max_batch_operations","max_path_length","max_path_depth","declaredRetention","history","outcome","operation_retention_seconds","refreshHorizon","change_retention_seconds","capabilities","conversationCards","siteCapabilities","inputShape","resultKind","providerSelection","attachedModel","roots","discoveredRoom","typedSelection","read","sync","write","delete","replica","selection","admission","providerOwnedPaths","mapDiscovery","rooms","declared","supportedVersions","mdModel","identity","version","retention"],"mappings":"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"}
|
package/dist/read.d.ts
CHANGED
|
@@ -63,8 +63,6 @@ export type HouseDefinitions = {
|
|
|
63
63
|
definitions: Readonly<Record<string, string>>;
|
|
64
64
|
versions: readonly string[];
|
|
65
65
|
};
|
|
66
|
-
export declare const MODEL_DEFINITION_ADDRESS = "types";
|
|
67
|
-
export declare function definitionAddress(path: string): string;
|
|
68
66
|
export declare function definitionsFrom(envelope: HouseEnvelope, tracked: TrackedAuthority, modelRoot: string): HouseDefinitions | null;
|
|
69
67
|
export declare function definitionsOf(scope: HouseScope, modelRoot: string): HouseDefinitions | null;
|
|
70
68
|
export declare function refreshFrom(enumeration: HouseEnumeration, tracked: TrackedAuthority, fromRoomVersion: string): RefreshResult;
|
package/dist/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;KACjC,CAAC,EAAE,CAAC;CACN,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEhE;AAED,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAK3E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAK5E;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAS3D;AAmDD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAUjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAEnE;AA2BD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAmBxF;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAC5C,UAAU,CA0BZ;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAElF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGxE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAIjG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,GAAG,aAAa,CAmBvF;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"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"}
|
package/dist/read.js
CHANGED
|
@@ -254,10 +254,6 @@ export function bootstrapOf(scope, tracked) {
|
|
|
254
254
|
binaryTargets: binaryTargets.sort()
|
|
255
255
|
};
|
|
256
256
|
}
|
|
257
|
-
export const MODEL_DEFINITION_ADDRESS = 'types';
|
|
258
|
-
export function definitionAddress(path) {
|
|
259
|
-
return `${MODEL_DEFINITION_ADDRESS}/${path.slice(path.lastIndexOf('/') + 1)}`;
|
|
260
|
-
}
|
|
261
257
|
export function definitionsFrom(envelope, tracked, modelRoot) {
|
|
262
258
|
const scope = envelope.scopes.find((entry)=>matchesScope(entry, tracked));
|
|
263
259
|
if (scope === undefined) return null;
|
|
@@ -273,8 +269,8 @@ export function definitionsOf(scope, modelRoot) {
|
|
|
273
269
|
for (const file of scope.files){
|
|
274
270
|
if (!withinRoot(file.path, modelRoot)) continue;
|
|
275
271
|
const content = contents.get(file.path);
|
|
276
|
-
const address =
|
|
277
|
-
if (content === undefined
|
|
272
|
+
const address = file.path;
|
|
273
|
+
if (content === undefined) return null;
|
|
278
274
|
definitions[address] = content;
|
|
279
275
|
versions.push(`${file.path} ${file.version}`);
|
|
280
276
|
}
|
package/dist/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/read.ts"],"sourcesContent":["import type { BootstrapPage, BootstrapResult, RefreshResult } from '@agentshouse/mdruntime';\nimport { PROVIDER_SELECTION_ROOTS, type TrackedAuthority } from './discovery.js';\nimport type { HouseMode } from './transport.js';\nimport { readPosition, roomVersion, type LogPosition } from './version.js';\n\nexport type HouseManifestFile = {\n path: string;\n revision: string | undefined;\n version: string;\n};\n\nexport type HouseContent = {\n path: string;\n content: string;\n};\n\nexport type HouseScope = LogPosition & {\n anchor: string;\n files: readonly HouseManifestFile[];\n contents: readonly HouseContent[];\n};\n\nexport type HouseEnvelope = {\n scopes: readonly HouseScope[];\n};\n\nexport type HouseGrant = {\n method: 'GET' | 'POST';\n operation: string;\n url: string;\n};\n\nexport type HouseChange =\n | { path: string; removed: true }\n | { path: string; content: string; revision: string | undefined; version: string }\n | { path: string; reference: { revision: string } };\n\nexport type HouseEnumeration = {\n authorities: readonly (LogPosition & {\n authority: string;\n changes: readonly HouseChange[];\n })[];\n};\n\nexport function authorityRoot(handle: string | undefined): string {\n return handle === undefined ? '/private' : `/rooms/${handle}`;\n}\n\nexport const ROOM_README = 'ROOM.md';\n\nexport function selectionRoots(tracked: TrackedAuthority): readonly string[] {\n if (tracked.handle === undefined) {\n return [tracked.collectionRoot, ...PROVIDER_SELECTION_ROOTS];\n }\n return [ROOM_README, tracked.collectionRoot];\n}\n\nexport function contentPrefixes(tracked: TrackedAuthority): readonly string[] {\n const root = authorityRoot(tracked.handle);\n return selectionRoots(tracked)\n .filter((entry) => entry !== ROOM_README)\n .map((entry) => `${root}/${entry}`);\n}\n\nexport function modelPrefix(tracked: TrackedAuthority, modelRoot: string): string {\n return `${authorityRoot(tracked.handle)}/${modelRoot}`;\n}\n\nexport function parseGrant(body: unknown): HouseGrant | null {\n if (typeof body !== 'object' || body === null) return null;\n if (!('transfer' in body) || typeof body.transfer !== 'object' || body.transfer === null) {\n return null;\n }\n const transfer = body.transfer as Record<string, unknown>;\n if (transfer.method !== 'GET' && transfer.method !== 'POST') return null;\n if (typeof transfer.operation !== 'string' || typeof transfer.url !== 'string') return null;\n return { method: transfer.method, operation: transfer.operation, url: transfer.url };\n}\n\nfunction parseFile(value: unknown, mode: HouseMode): HouseManifestFile | null {\n if (typeof value !== 'object' || value === null) return null;\n const file = value as Record<string, unknown>;\n if (typeof file.path !== 'string') return null;\n if (mode === 'site') {\n if (typeof file.sha256 !== 'string') return null;\n return { path: file.path, revision: undefined, version: file.sha256 };\n }\n if (typeof file.revision !== 'string') return null;\n return { path: file.path, revision: file.revision, version: file.revision };\n}\n\nfunction parseScope(value: unknown, mode: HouseMode): HouseScope | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.manifest !== 'object' || held.manifest === null) return null;\n if (!Array.isArray(held.contents)) return null;\n const manifest = held.manifest as Record<string, unknown>;\n if (manifest.scope !== 'room') return null;\n const at = readPosition(manifest);\n if (typeof manifest.anchor !== 'string' || manifest.anchor.length === 0 || at === null)\n return null;\n if (\n manifest.room_handle !== null &&\n (typeof manifest.room_handle !== 'string' || manifest.room_handle.length === 0)\n )\n return null;\n if (!Array.isArray(manifest.files)) return null;\n const files: HouseManifestFile[] = [];\n for (const entry of manifest.files) {\n const file = parseFile(entry, mode);\n if (file === null) return null;\n files.push(file);\n }\n const contents: HouseContent[] = [];\n for (const entry of held.contents) {\n if (typeof entry !== 'object' || entry === null) return null;\n const content = entry as Record<string, unknown>;\n if (typeof content.path !== 'string' || typeof content.content !== 'string') return null;\n contents.push({ path: content.path, content: content.content });\n }\n return {\n anchor: manifest.anchor,\n ...at,\n files,\n contents,\n };\n}\n\nexport function parseEnvelope(body: unknown): HouseEnvelope | null {\n if (typeof body !== 'object' || body === null) return null;\n if (!('scopes' in body) || !Array.isArray(body.scopes)) return null;\n const scopes: HouseScope[] = [];\n for (const entry of body.scopes) {\n const scope = parseScope(entry, 'credential');\n if (scope === null) return null;\n scopes.push(scope);\n }\n return { scopes };\n}\n\nexport function parseSiteBootstrap(body: unknown): HouseScope | null {\n return parseScope(body, 'site');\n}\n\nfunction parseChange(value: unknown, mode: HouseMode): HouseChange | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.path !== 'string') return null;\n if (held.removed === true) return { path: held.path, removed: true };\n if (mode === 'site') {\n if (typeof held.content !== 'string' || typeof held.sha256 !== 'string') return null;\n return { path: held.path, content: held.content, revision: undefined, version: held.sha256 };\n }\n if (typeof held.content === 'string' && typeof held.revision === 'string') {\n return {\n path: held.path,\n content: held.content,\n revision: held.revision,\n version: held.revision,\n };\n }\n if (typeof held.reference === 'object' && held.reference !== null) {\n const reference = held.reference as Record<string, unknown>;\n if (typeof reference.revision !== 'string') return null;\n return { path: held.path, reference: { revision: reference.revision } };\n }\n return null;\n}\n\nexport function parseEnumeration(body: unknown, mode: HouseMode): HouseEnumeration | null {\n if (typeof body !== 'object' || body === null) return null;\n if (!('authorities' in body) || !Array.isArray(body.authorities)) return null;\n const authorities: HouseEnumeration['authorities'][number][] = [];\n for (const entry of body.authorities) {\n if (typeof entry !== 'object' || entry === null) return null;\n const held = entry as Record<string, unknown>;\n const at = readPosition(held);\n if (typeof held.authority !== 'string' || at === null) return null;\n if (!Array.isArray(held.changes)) return null;\n const changes: HouseChange[] = [];\n for (const change of held.changes) {\n const mapped = parseChange(change, mode);\n if (mapped === null) return null;\n changes.push(mapped);\n }\n authorities.push({ authority: held.authority, ...at, changes });\n }\n return { authorities };\n}\n\nexport function advancedScope(\n scope: HouseScope,\n view: HouseEnumeration['authorities'][number],\n): HouseScope {\n const files = new Map(scope.files.map((file) => [file.path, file]));\n const contents = new Map(scope.contents.map((entry) => [entry.path, entry.content]));\n for (const change of view.changes) {\n files.delete(change.path);\n contents.delete(change.path);\n if ('removed' in change) continue;\n if ('content' in change) {\n files.set(change.path, {\n path: change.path,\n revision: change.revision,\n version: change.version,\n });\n contents.set(change.path, change.content);\n continue;\n }\n const { revision } = change.reference;\n files.set(change.path, { path: change.path, revision, version: revision });\n }\n return {\n ...scope,\n position: view.position,\n logEpoch: view.logEpoch,\n files: [...files.values()],\n contents: [...contents].map(([path, content]) => ({ path, content })),\n };\n}\n\nexport function matchesScope(scope: HouseScope, tracked: TrackedAuthority): boolean {\n return scope.anchor === tracked.authority;\n}\n\nexport function withinRoot(path: string, root: string): boolean {\n return path === root || path.startsWith(`${root}/`);\n}\n\nexport function selects(tracked: TrackedAuthority, path: string): boolean {\n if (tracked.modelRoots.some((root) => withinRoot(path, root))) return false;\n return selectionRoots(tracked).some((root) => withinRoot(path, root));\n}\n\nexport function bootstrapFrom(envelope: HouseEnvelope, tracked: TrackedAuthority): BootstrapResult {\n const scope = envelope.scopes.find((entry) => matchesScope(entry, tracked));\n if (scope === undefined) return { kind: 'room-not-readable', locator: tracked.locator };\n return bootstrapOf(scope, tracked);\n}\n\nexport function bootstrapOf(scope: HouseScope, tracked: TrackedAuthority): BootstrapPage {\n const contents = new Map(scope.contents.map((entry) => [entry.path, entry.content]));\n const documents: Record<string, string> = {};\n const revisions: Record<string, string> = {};\n const binaryTargets: string[] = [];\n for (const file of scope.files) {\n if (!selects(tracked, file.path)) continue;\n if (file.revision !== undefined) revisions[file.path] = file.revision;\n const content = contents.get(file.path);\n if (content === undefined) binaryTargets.push(file.path);\n else documents[file.path] = content;\n }\n return {\n kind: 'bootstrap',\n roomVersion: roomVersion(scope),\n documents,\n revisions,\n binaryTargets: binaryTargets.sort(),\n };\n}\n\nexport type HouseDefinitions = {\n definitions: Readonly<Record<string, string>>;\n versions: readonly string[];\n};\n\nexport const MODEL_DEFINITION_ADDRESS = 'types';\n\nexport function definitionAddress(path: string): string {\n return `${MODEL_DEFINITION_ADDRESS}/${path.slice(path.lastIndexOf('/') + 1)}`;\n}\n\nexport function definitionsFrom(\n envelope: HouseEnvelope,\n tracked: TrackedAuthority,\n modelRoot: string,\n): HouseDefinitions | null {\n const scope = envelope.scopes.find((entry) => matchesScope(entry, tracked));\n if (scope === undefined) return null;\n return definitionsOf(scope, modelRoot);\n}\n\nexport function definitionsOf(scope: HouseScope, modelRoot: string): HouseDefinitions | null {\n const contents = new Map(scope.contents.map((entry) => [entry.path, entry.content]));\n const definitions: Record<string, string> = {};\n const versions: string[] = [];\n for (const file of scope.files) {\n if (!withinRoot(file.path, modelRoot)) continue;\n const content = contents.get(file.path);\n const address = definitionAddress(file.path);\n if (content === undefined || Object.hasOwn(definitions, address)) return null;\n definitions[address] = content;\n versions.push(`${file.path} ${file.version}`);\n }\n return { definitions, versions: versions.sort() };\n}\n\nexport function refreshFrom(\n enumeration: HouseEnumeration,\n tracked: TrackedAuthority,\n fromRoomVersion: string,\n): RefreshResult {\n const view = enumeration.authorities.find((entry) => entry.authority === tracked.authority);\n if (view === undefined) return { kind: 'room-not-readable', locator: tracked.locator };\n if (roomVersion(view) === fromRoomVersion) return { kind: 'still-current' };\n const documents: Record<string, string> = {};\n const revisions: Record<string, string> = {};\n const binaryTargets: string[] = [];\n const removals: string[] = [];\n for (const change of view.changes) {\n if (!selects(tracked, change.path)) continue;\n if ('removed' in change) {\n removals.push(change.path);\n continue;\n }\n if ('content' in change) {\n documents[change.path] = change.content;\n if (change.revision !== undefined) revisions[change.path] = change.revision;\n continue;\n }\n binaryTargets.push(change.path);\n revisions[change.path] = change.reference.revision;\n }\n return {\n kind: 'net-advancement',\n roomVersion: roomVersion(view),\n documents,\n revisions,\n binaryTargets: binaryTargets.sort(),\n removals: removals.sort(),\n };\n}\n"],"names":["PROVIDER_SELECTION_ROOTS","readPosition","roomVersion","authorityRoot","handle","undefined","ROOM_README","selectionRoots","tracked","collectionRoot","contentPrefixes","root","filter","entry","map","modelPrefix","modelRoot","parseGrant","body","transfer","method","operation","url","parseFile","value","mode","file","path","sha256","revision","version","parseScope","held","manifest","Array","isArray","contents","scope","at","anchor","length","room_handle","files","push","content","parseEnvelope","scopes","parseSiteBootstrap","parseChange","removed","reference","parseEnumeration","authorities","authority","changes","change","mapped","advancedScope","view","Map","delete","set","position","logEpoch","values","matchesScope","withinRoot","startsWith","selects","modelRoots","some","bootstrapFrom","envelope","find","kind","locator","bootstrapOf","documents","revisions","binaryTargets","get","sort","MODEL_DEFINITION_ADDRESS","definitionAddress","slice","lastIndexOf","definitionsFrom","definitionsOf","definitions","versions","address","Object","hasOwn","refreshFrom","enumeration","fromRoomVersion","removals"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime-adapter/src/read.ts"],"sourcesContent":["import type { BootstrapPage, BootstrapResult, RefreshResult } from '@agentshouse/mdruntime';\nimport { PROVIDER_SELECTION_ROOTS, type TrackedAuthority } from './discovery.js';\nimport type { HouseMode } from './transport.js';\nimport { readPosition, roomVersion, type LogPosition } from './version.js';\n\nexport type HouseManifestFile = {\n path: string;\n revision: string | undefined;\n version: string;\n};\n\nexport type HouseContent = {\n path: string;\n content: string;\n};\n\nexport type HouseScope = LogPosition & {\n anchor: string;\n files: readonly HouseManifestFile[];\n contents: readonly HouseContent[];\n};\n\nexport type HouseEnvelope = {\n scopes: readonly HouseScope[];\n};\n\nexport type HouseGrant = {\n method: 'GET' | 'POST';\n operation: string;\n url: string;\n};\n\nexport type HouseChange =\n | { path: string; removed: true }\n | { path: string; content: string; revision: string | undefined; version: string }\n | { path: string; reference: { revision: string } };\n\nexport type HouseEnumeration = {\n authorities: readonly (LogPosition & {\n authority: string;\n changes: readonly HouseChange[];\n })[];\n};\n\nexport function authorityRoot(handle: string | undefined): string {\n return handle === undefined ? '/private' : `/rooms/${handle}`;\n}\n\nexport const ROOM_README = 'ROOM.md';\n\nexport function selectionRoots(tracked: TrackedAuthority): readonly string[] {\n if (tracked.handle === undefined) {\n return [tracked.collectionRoot, ...PROVIDER_SELECTION_ROOTS];\n }\n return [ROOM_README, tracked.collectionRoot];\n}\n\nexport function contentPrefixes(tracked: TrackedAuthority): readonly string[] {\n const root = authorityRoot(tracked.handle);\n return selectionRoots(tracked)\n .filter((entry) => entry !== ROOM_README)\n .map((entry) => `${root}/${entry}`);\n}\n\nexport function modelPrefix(tracked: TrackedAuthority, modelRoot: string): string {\n return `${authorityRoot(tracked.handle)}/${modelRoot}`;\n}\n\nexport function parseGrant(body: unknown): HouseGrant | null {\n if (typeof body !== 'object' || body === null) return null;\n if (!('transfer' in body) || typeof body.transfer !== 'object' || body.transfer === null) {\n return null;\n }\n const transfer = body.transfer as Record<string, unknown>;\n if (transfer.method !== 'GET' && transfer.method !== 'POST') return null;\n if (typeof transfer.operation !== 'string' || typeof transfer.url !== 'string') return null;\n return { method: transfer.method, operation: transfer.operation, url: transfer.url };\n}\n\nfunction parseFile(value: unknown, mode: HouseMode): HouseManifestFile | null {\n if (typeof value !== 'object' || value === null) return null;\n const file = value as Record<string, unknown>;\n if (typeof file.path !== 'string') return null;\n if (mode === 'site') {\n if (typeof file.sha256 !== 'string') return null;\n return { path: file.path, revision: undefined, version: file.sha256 };\n }\n if (typeof file.revision !== 'string') return null;\n return { path: file.path, revision: file.revision, version: file.revision };\n}\n\nfunction parseScope(value: unknown, mode: HouseMode): HouseScope | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.manifest !== 'object' || held.manifest === null) return null;\n if (!Array.isArray(held.contents)) return null;\n const manifest = held.manifest as Record<string, unknown>;\n if (manifest.scope !== 'room') return null;\n const at = readPosition(manifest);\n if (typeof manifest.anchor !== 'string' || manifest.anchor.length === 0 || at === null)\n return null;\n if (\n manifest.room_handle !== null &&\n (typeof manifest.room_handle !== 'string' || manifest.room_handle.length === 0)\n )\n return null;\n if (!Array.isArray(manifest.files)) return null;\n const files: HouseManifestFile[] = [];\n for (const entry of manifest.files) {\n const file = parseFile(entry, mode);\n if (file === null) return null;\n files.push(file);\n }\n const contents: HouseContent[] = [];\n for (const entry of held.contents) {\n if (typeof entry !== 'object' || entry === null) return null;\n const content = entry as Record<string, unknown>;\n if (typeof content.path !== 'string' || typeof content.content !== 'string') return null;\n contents.push({ path: content.path, content: content.content });\n }\n return {\n anchor: manifest.anchor,\n ...at,\n files,\n contents,\n };\n}\n\nexport function parseEnvelope(body: unknown): HouseEnvelope | null {\n if (typeof body !== 'object' || body === null) return null;\n if (!('scopes' in body) || !Array.isArray(body.scopes)) return null;\n const scopes: HouseScope[] = [];\n for (const entry of body.scopes) {\n const scope = parseScope(entry, 'credential');\n if (scope === null) return null;\n scopes.push(scope);\n }\n return { scopes };\n}\n\nexport function parseSiteBootstrap(body: unknown): HouseScope | null {\n return parseScope(body, 'site');\n}\n\nfunction parseChange(value: unknown, mode: HouseMode): HouseChange | null {\n if (typeof value !== 'object' || value === null) return null;\n const held = value as Record<string, unknown>;\n if (typeof held.path !== 'string') return null;\n if (held.removed === true) return { path: held.path, removed: true };\n if (mode === 'site') {\n if (typeof held.content !== 'string' || typeof held.sha256 !== 'string') return null;\n return { path: held.path, content: held.content, revision: undefined, version: held.sha256 };\n }\n if (typeof held.content === 'string' && typeof held.revision === 'string') {\n return {\n path: held.path,\n content: held.content,\n revision: held.revision,\n version: held.revision,\n };\n }\n if (typeof held.reference === 'object' && held.reference !== null) {\n const reference = held.reference as Record<string, unknown>;\n if (typeof reference.revision !== 'string') return null;\n return { path: held.path, reference: { revision: reference.revision } };\n }\n return null;\n}\n\nexport function parseEnumeration(body: unknown, mode: HouseMode): HouseEnumeration | null {\n if (typeof body !== 'object' || body === null) return null;\n if (!('authorities' in body) || !Array.isArray(body.authorities)) return null;\n const authorities: HouseEnumeration['authorities'][number][] = [];\n for (const entry of body.authorities) {\n if (typeof entry !== 'object' || entry === null) return null;\n const held = entry as Record<string, unknown>;\n const at = readPosition(held);\n if (typeof held.authority !== 'string' || at === null) return null;\n if (!Array.isArray(held.changes)) return null;\n const changes: HouseChange[] = [];\n for (const change of held.changes) {\n const mapped = parseChange(change, mode);\n if (mapped === null) return null;\n changes.push(mapped);\n }\n authorities.push({ authority: held.authority, ...at, changes });\n }\n return { authorities };\n}\n\nexport function advancedScope(\n scope: HouseScope,\n view: HouseEnumeration['authorities'][number],\n): HouseScope {\n const files = new Map(scope.files.map((file) => [file.path, file]));\n const contents = new Map(scope.contents.map((entry) => [entry.path, entry.content]));\n for (const change of view.changes) {\n files.delete(change.path);\n contents.delete(change.path);\n if ('removed' in change) continue;\n if ('content' in change) {\n files.set(change.path, {\n path: change.path,\n revision: change.revision,\n version: change.version,\n });\n contents.set(change.path, change.content);\n continue;\n }\n const { revision } = change.reference;\n files.set(change.path, { path: change.path, revision, version: revision });\n }\n return {\n ...scope,\n position: view.position,\n logEpoch: view.logEpoch,\n files: [...files.values()],\n contents: [...contents].map(([path, content]) => ({ path, content })),\n };\n}\n\nexport function matchesScope(scope: HouseScope, tracked: TrackedAuthority): boolean {\n return scope.anchor === tracked.authority;\n}\n\nexport function withinRoot(path: string, root: string): boolean {\n return path === root || path.startsWith(`${root}/`);\n}\n\nexport function selects(tracked: TrackedAuthority, path: string): boolean {\n if (tracked.modelRoots.some((root) => withinRoot(path, root))) return false;\n return selectionRoots(tracked).some((root) => withinRoot(path, root));\n}\n\nexport function bootstrapFrom(envelope: HouseEnvelope, tracked: TrackedAuthority): BootstrapResult {\n const scope = envelope.scopes.find((entry) => matchesScope(entry, tracked));\n if (scope === undefined) return { kind: 'room-not-readable', locator: tracked.locator };\n return bootstrapOf(scope, tracked);\n}\n\nexport function bootstrapOf(scope: HouseScope, tracked: TrackedAuthority): BootstrapPage {\n const contents = new Map(scope.contents.map((entry) => [entry.path, entry.content]));\n const documents: Record<string, string> = {};\n const revisions: Record<string, string> = {};\n const binaryTargets: string[] = [];\n for (const file of scope.files) {\n if (!selects(tracked, file.path)) continue;\n if (file.revision !== undefined) revisions[file.path] = file.revision;\n const content = contents.get(file.path);\n if (content === undefined) binaryTargets.push(file.path);\n else documents[file.path] = content;\n }\n return {\n kind: 'bootstrap',\n roomVersion: roomVersion(scope),\n documents,\n revisions,\n binaryTargets: binaryTargets.sort(),\n };\n}\n\nexport type HouseDefinitions = {\n definitions: Readonly<Record<string, string>>;\n versions: readonly string[];\n};\n\nexport function definitionsFrom(\n envelope: HouseEnvelope,\n tracked: TrackedAuthority,\n modelRoot: string,\n): HouseDefinitions | null {\n const scope = envelope.scopes.find((entry) => matchesScope(entry, tracked));\n if (scope === undefined) return null;\n return definitionsOf(scope, modelRoot);\n}\n\nexport function definitionsOf(scope: HouseScope, modelRoot: string): HouseDefinitions | null {\n const contents = new Map(scope.contents.map((entry) => [entry.path, entry.content]));\n const definitions: Record<string, string> = {};\n const versions: string[] = [];\n for (const file of scope.files) {\n if (!withinRoot(file.path, modelRoot)) continue;\n const content = contents.get(file.path);\n const address = file.path;\n if (content === undefined) return null;\n definitions[address] = content;\n versions.push(`${file.path} ${file.version}`);\n }\n return { definitions, versions: versions.sort() };\n}\n\nexport function refreshFrom(\n enumeration: HouseEnumeration,\n tracked: TrackedAuthority,\n fromRoomVersion: string,\n): RefreshResult {\n const view = enumeration.authorities.find((entry) => entry.authority === tracked.authority);\n if (view === undefined) return { kind: 'room-not-readable', locator: tracked.locator };\n if (roomVersion(view) === fromRoomVersion) return { kind: 'still-current' };\n const documents: Record<string, string> = {};\n const revisions: Record<string, string> = {};\n const binaryTargets: string[] = [];\n const removals: string[] = [];\n for (const change of view.changes) {\n if (!selects(tracked, change.path)) continue;\n if ('removed' in change) {\n removals.push(change.path);\n continue;\n }\n if ('content' in change) {\n documents[change.path] = change.content;\n if (change.revision !== undefined) revisions[change.path] = change.revision;\n continue;\n }\n binaryTargets.push(change.path);\n revisions[change.path] = change.reference.revision;\n }\n return {\n kind: 'net-advancement',\n roomVersion: roomVersion(view),\n documents,\n revisions,\n binaryTargets: binaryTargets.sort(),\n removals: removals.sort(),\n };\n}\n"],"names":["PROVIDER_SELECTION_ROOTS","readPosition","roomVersion","authorityRoot","handle","undefined","ROOM_README","selectionRoots","tracked","collectionRoot","contentPrefixes","root","filter","entry","map","modelPrefix","modelRoot","parseGrant","body","transfer","method","operation","url","parseFile","value","mode","file","path","sha256","revision","version","parseScope","held","manifest","Array","isArray","contents","scope","at","anchor","length","room_handle","files","push","content","parseEnvelope","scopes","parseSiteBootstrap","parseChange","removed","reference","parseEnumeration","authorities","authority","changes","change","mapped","advancedScope","view","Map","delete","set","position","logEpoch","values","matchesScope","withinRoot","startsWith","selects","modelRoots","some","bootstrapFrom","envelope","find","kind","locator","bootstrapOf","documents","revisions","binaryTargets","get","sort","definitionsFrom","definitionsOf","definitions","versions","address","refreshFrom","enumeration","fromRoomVersion","removals"],"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.24",
|
|
4
4
|
"description": "Agents House Adapter for the MD Runtime",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -34,6 +34,6 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@agentshouse/mdmodel": "0.1.0-alpha.15",
|
|
37
|
-
"@agentshouse/mdruntime": "0.1.0-alpha.
|
|
37
|
+
"@agentshouse/mdruntime": "0.1.0-alpha.30"
|
|
38
38
|
}
|
|
39
39
|
}
|