@agimon-ai/po-author 0.0.0-alpha.80 → 0.0.0-alpha.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -17,6 +17,14 @@ Catalog tokens rotate whenever capabilities change. Document-backed tools remain
17
17
  Unsent annotations belong to their document and leave the canvas once a send is accepted; the dock's request log keeps the request for the open document. Messages typed in an Author file tab carry `Author document: <path> (canvas <alias>)` as referenced context. Slash commands are sent unchanged.
18
18
  The package declares session API, cockpit client, and web hub entries. Each canvas has an isolated ownership lease and catalog token; stale bindings and cross-canvas tokens are rejected. Without the host session API socket and token, catalog operations fail as unavailable.
19
19
 
20
+ ## Native feedback grid
21
+
22
+ During Autonomous Voice, a supported native client can display an A1-H8 feedback grid over visible images, canonical text lines, or measured structured fragments. Text targets use exact UTF-16 source ranges; structured targets use actual fragment IDs. Native HTML stays semantic/offline. HTML, PDF, video, source editors, and unsaved edits have no grid authority.
23
+
24
+ A native `author_describe_grid` result has `feedbackOnly: true`. Use its `geometryToken`, `generation` as `expectedGeneration`, and `sourceSha256` as `expectedSourceSha256` with `author_resolve_grid_cell` or `author_add_grid_note`. Only add-note takes an `instruction`. These tools cannot edit, crop, save, or apply document changes. Client generations and capture `version: 1` are not server revisions.
25
+
26
+ Targeting stops while hidden, backgrounded, obscured by a sheet or keyboard, or busy. Source and layout changes invalidate old targets. Each grid call rechecks the server alias, path, and source digest; that digest proves bytes read, not future freshness. Describe again after stale targets and reopen changed sources. Older hosts without visibility, sheet, or random-identity support keep ordinary Author functionality but do not expose a grid. Sending notes remains queue-only, without composer or navigation side effects.
27
+
20
28
  ## Code mode
21
29
 
22
30
  When code mode is installed, the session also exposes generic Author-only `webmcp.describe(input?)` and `webmcp.call(input)`. Direct Author tools stay unchanged. Author mode must be active when either method is called.
@@ -278,6 +278,11 @@ const apiContracts = (0, _agimon_ai_po_core_apiContracts.defineApiContract)({
278
278
  }), typebox.Type.Union([typebox.Type.Object({
279
279
  path: S,
280
280
  byteLength: N,
281
+ sourceSha256: O(typebox.Type.String({
282
+ minLength: 64,
283
+ maxLength: 64,
284
+ pattern: "^[a-f0-9]{64}$"
285
+ })),
281
286
  alias: AuthorAliasSchema,
282
287
  status: values([
283
288
  "opening",
@@ -1 +1 @@
1
- {"version":3,"file":"apiContracts.cjs","names":["Type","Type","jsonApiResponses","defineApiContract"],"sources":["../src/schemas/authorFacade.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import type { PoApiScope } from '@agimon-ai/po-core/packageApi';\nimport { definePoPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { type Static, Type } from 'typebox';\n\nconst AuthorCapabilityNameSchema = Type.String({\n minLength: 1,\n maxLength: 30,\n pattern: '^[a-z][a-z0-9_]*$',\n});\n\nexport const AuthorAliasSchema = Type.String({ minLength: 1, maxLength: 64, pattern: '^[a-z][a-z0-9_-]{0,63}$' });\n\n/** Lists canvases or the capabilities of one named canvas. */\nexport const AuthorDescribeToolsInputSchema = Type.Object(\n { alias: Type.Optional(AuthorAliasSchema) },\n { additionalProperties: false },\n);\nexport type AuthorDescribeToolsInput = Static<typeof AuthorDescribeToolsInputSchema>;\n\n/** Invokes one capability exposed by the current Author viewport. */\nexport const AuthorUseToolsInputSchema = Type.Object(\n {\n alias: Type.Optional(AuthorAliasSchema),\n catalogToken: Type.String({ minLength: 1, maxLength: 256 }),\n name: AuthorCapabilityNameSchema,\n arguments: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n);\nexport type AuthorUseToolsInput = Static<typeof AuthorUseToolsInputSchema>;\n\nconst AuthorBridgeBase = {\n alias: AuthorAliasSchema,\n generation: Type.Number({ minimum: 0 }),\n};\n\n/** Browser-to-server lease messages, validated before Author sees the payload. */\nexport const AuthorBridgeMessageSchema = Type.Union([\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('register') }, { additionalProperties: false }),\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('release') }, { additionalProperties: false }),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('catalog'),\n ownerToken: Type.String({ minLength: 1 }),\n tools: Type.Array(\n Type.Object(\n {\n name: Type.String({ minLength: 1 }),\n label: Type.String(),\n description: Type.String(),\n inputSchema: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n ),\n ),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('result'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n result: Type.Unknown(),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('cancelled'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n]);\n\nexport const AuthorBridgeInputSchema = Type.Object(\n { sessionId: Type.String({ minLength: 1 }), message: AuthorBridgeMessageSchema },\n { additionalProperties: false },\n);\n\nexport function authorBridgeMethod(scope: Extract<PoApiScope, 'global' | 'workspace'>) {\n return definePoPluginMethod({\n service: 'author.bridge',\n method: 'send',\n scope,\n direction: 'client-to-server',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n });\n}\n","import { defineApiContract, jsonApiResponses, type PoHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport {\n AuthorAliasSchema,\n AuthorBridgeMessageSchema,\n AuthorBridgeInputSchema,\n AuthorUseToolsInputSchema,\n} from './authorFacade';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst Json = Type.Unknown({\n description: 'Runtime author capability value, validated against the capability catalog inputSchema.',\n});\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Capability = Type.Object({ name: S, label: S, description: S, inputSchema: Type.Record(S, Json) });\nconst Accepted = Type.Object({\n alias: AuthorAliasSchema,\n kind: Type.Literal('accepted'),\n generation: N,\n ownerToken: S,\n catalogToken: O(S),\n leaseMs: N,\n});\nconst Identity = { alias: AuthorAliasSchema, generation: N, ownerToken: S, catalogToken: S, requestId: S };\nconst Request = Type.Object({ kind: Type.Literal('request'), ...Identity, name: S, arguments: Type.Record(S, Json) });\nconst Cancel = Type.Object({ kind: Type.Literal('cancel'), ...Identity });\nexport const AuthorHubMessageSchema = Type.Union([\n Accepted,\n Request,\n Cancel,\n Type.Object({ alias: AuthorAliasSchema, kind: Type.Literal('rejected'), reason: S }),\n]);\nconst Binding = { alias: AuthorAliasSchema, bindingId: S, generation: Type.Integer({ minimum: 0 }) };\nconst Owner = { ...Binding, ownerToken: S };\nconst ResultIdentity = { ...Owner, catalogToken: S, requestId: S };\nconst Format = values(['markdown-slides', 'csv', 'pptx', 'xlsx']);\nconst Manifest = Type.Object({\n format: Format,\n sourceDigest: S,\n byteLength: N,\n fragmentCount: N,\n metadata: Type.Record(S, Type.Union([S, N, B])),\n});\nconst Operation = { fragmentId: S, replacement: S };\nconst Log = Type.Array(Type.Object({ ...Operation, previous: S }));\nconst Document = {\n path: S,\n format: Format,\n operations: O(Type.Array(Type.Object(Operation), { maxItems: 100000 })),\n csvDialect: O(\n Type.Object({\n delimiter: O(values([',', ';', '\\t', '|'])),\n quote: O(values(['\"', \"'\"])),\n recordDelimiter: O(values(['\\n', '\\r\\n'])),\n }),\n ),\n};\nconst ParsedDocument = Type.Object({\n manifest: Manifest,\n fragments: Type.Array(\n Type.Object({ id: S, kind: values(['slide', 'cell', 'text-run']), text: S, readOnly: O(B), location: S }),\n ),\n renderModel: Type.Object({ format: Format, blocks: Type.Array(Type.Object({ id: S, text: S, readOnly: B })) }),\n});\nconst post = (id: string, path: string, schema: object, output: object): PoHttpContract => ({\n id,\n scope: 'session',\n basePath: 'author',\n path,\n method: 'POST',\n authentication: 'owner',\n description: `Author ${id}.`,\n body: { required: true, contentType: 'application/json', schema },\n responses: jsonApiResponses(output),\n});\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: ['Author capability catalogs supply input JSON Schemas and arbitrary JSON results at runtime.'],\n http: [\n {\n id: 'author.state',\n scope: 'session',\n basePath: 'author',\n path: '/state',\n method: 'GET',\n authentication: 'owner',\n description: 'Read author activation.',\n responses: jsonApiResponses(\n Type.Object({\n sessionId: Type.Union([S, Type.Null()]),\n activation: values(['inactive', 'active']),\n capabilityCount: N,\n }),\n ),\n },\n post('bridge.register', '/bridge/register', Type.Object(Binding), Accepted),\n post('bridge.catalog', '/bridge/catalog', Type.Object({ ...Owner, tools: Type.Array(Capability) }), Accepted),\n post('bridge.next', '/bridge/next', Type.Object(Owner), Type.Union([Request, Cancel])),\n post(\n 'bridge.result',\n '/bridge/result',\n Type.Object({ ...ResultIdentity, result: Json }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.cancelled',\n '/bridge/cancelled',\n Type.Object(ResultIdentity),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.disconnect',\n '/bridge/disconnect',\n Type.Object(Binding),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.close',\n '/bridge/close',\n Type.Object({ alias: AuthorAliasSchema }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n {\n id: 'bridge.describe',\n scope: 'session',\n basePath: 'author',\n path: '/bridge/describe',\n method: 'GET',\n authentication: 'owner',\n description: 'Read runtime author capabilities.',\n responses: jsonApiResponses(\n Type.Object({\n catalogToken: S,\n tools: Type.Array(Capability),\n canvases: Type.Array(Type.Object({ alias: S, path: S, status: values(['opening', 'ready', 'unavailable']) })),\n }),\n ),\n },\n post(\n 'bridge.invoke',\n '/bridge/invoke',\n AuthorUseToolsInputSchema,\n Type.Object({ alias: AuthorAliasSchema, catalogToken: S, name: S, result: Json }),\n ),\n post(\n 'documents.open',\n '/documents/open',\n Type.Object({ ...Document, format: O(Format), alias: O(AuthorAliasSchema) }),\n Type.Union([\n Type.Object({\n path: S,\n byteLength: N,\n alias: AuthorAliasSchema,\n status: values(['opening', 'ready', 'unavailable']),\n reused: B,\n }),\n ParsedDocument,\n ]),\n ),\n post(\n 'documents.preflight',\n '/documents/preflight',\n Type.Object(Document),\n Type.Object({\n accepted: B,\n digest: S,\n sourceDigest: S,\n operations: Log,\n issues: Type.Array(Type.Object({ code: S, message: S, fragmentId: O(S) })),\n }),\n ),\n post(\n 'documents.serialize',\n '/documents/serialize',\n Type.Object({ ...Document, preflightDigest: S }),\n Type.Object({ bytes: S, encoding: Type.Literal('base64'), manifest: Manifest, operationLog: Log }),\n ),\n ],\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'author.send',\n scope,\n service: 'author.bridge',\n member: 'send',\n kind: 'method',\n direction: 'client-to-server',\n description: 'Scoped author bridge method invoked through po.hub.',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n },\n {\n id: 'author.browser',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Browser author channel payload.',\n input: AuthorBridgeMessageSchema,\n },\n {\n id: 'author.hub',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Hub author channel payload.',\n input: AuthorHubMessageSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":";;;;;;;;AAIA,MAAM,6BAA6BA,QAAAA,KAAK,OAAO;CAC7C,WAAW;CACX,WAAW;CACX,SAAS;AACX,CAAC;AAED,MAAa,oBAAoBA,QAAAA,KAAK,OAAO;CAAE,WAAW;CAAG,WAAW;CAAI,SAAS;AAA0B,CAAC;AAGlEA,QAAAA,KAAK,OACjD,EAAE,OAAOA,QAAAA,KAAK,SAAS,iBAAiB,EAAE,GAC1C,EAAE,sBAAsB,MAAM,CAChC;;AAIA,MAAa,4BAA4BA,QAAAA,KAAK,OAC5C;CACE,OAAOA,QAAAA,KAAK,SAAS,iBAAiB;CACtC,cAAcA,QAAAA,KAAK,OAAO;EAAE,WAAW;EAAG,WAAW;CAAI,CAAC;CAC1D,MAAM;CACN,WAAWA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,QAAQ,CAAC;AACtD,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAM,mBAAmB;CACvB,OAAO;CACP,YAAYA,QAAAA,KAAK,OAAO,EAAE,SAAS,EAAE,CAAC;AACxC;;AAGA,MAAa,4BAA4BA,QAAAA,KAAK,MAAM;CAClDA,QAAAA,KAAK,OAAO;EAAE,GAAG;EAAkB,MAAMA,QAAAA,KAAK,QAAQ,UAAU;CAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;CACpGA,QAAAA,KAAK,OAAO;EAAE,GAAG;EAAkB,MAAMA,QAAAA,KAAK,QAAQ,SAAS;CAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;CACnGA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,SAAS;EAC5B,YAAYA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACxC,OAAOA,QAAAA,KAAK,MACVA,QAAAA,KAAK,OACH;GACE,MAAMA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;GAClC,OAAOA,QAAAA,KAAK,OAAO;GACnB,aAAaA,QAAAA,KAAK,OAAO;GACzB,aAAaA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,QAAQ,CAAC;EACxD,GACA,EAAE,sBAAsB,MAAM,CAChC,CACF;CACF,GACA,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;EAC3B,YAAYA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACxC,cAAcA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EAC1C,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACvC,QAAQA,QAAAA,KAAK,QAAQ;CACvB,GACA,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,WAAW;EAC9B,YAAYA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACxC,cAAcA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EAC1C,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CACzC,GACA,EAAE,sBAAsB,MAAM,CAChC;AACF,CAAC;AAED,MAAa,0BAA0BA,QAAAA,KAAK,OAC1C;CAAE,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CAAG,SAAS;AAA0B,GAC/E,EAAE,sBAAsB,MAAM,CAChC;;;AC3EA,MAAM,IAAIC,QAAAA,KAAK,OAAO;AACtB,MAAM,IAAIA,QAAAA,KAAK,OAAO;AACtB,MAAM,IAAIA,QAAAA,KAAK,QAAQ;AACvB,MAAM,IAAIA,QAAAA,KAAK;AACf,MAAM,OAAOA,QAAAA,KAAK,QAAQ,EACxB,aAAa,yFACf,CAAC;AACD,MAAM,UAA4B,UAAeA,QAAAA,KAAK,MAAM,MAAM,KAAK,SAASA,QAAAA,KAAK,QAAQ,IAAI,CAAC,CAAC;AACnG,MAAM,aAAaA,QAAAA,KAAK,OAAO;CAAE,MAAM;CAAG,OAAO;CAAG,aAAa;CAAG,aAAaA,QAAAA,KAAK,OAAO,GAAG,IAAI;AAAE,CAAC;AACvG,MAAM,WAAWA,QAAAA,KAAK,OAAO;CAC3B,OAAO;CACP,MAAMA,QAAAA,KAAK,QAAQ,UAAU;CAC7B,YAAY;CACZ,YAAY;CACZ,cAAc,EAAE,CAAC;CACjB,SAAS;AACX,CAAC;AACD,MAAM,WAAW;CAAE,OAAO;CAAmB,YAAY;CAAG,YAAY;CAAG,cAAc;CAAG,WAAW;AAAE;AACzG,MAAM,UAAUA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,QAAQ,SAAS;CAAG,GAAG;CAAU,MAAM;CAAG,WAAWA,QAAAA,KAAK,OAAO,GAAG,IAAI;AAAE,CAAC;AACpH,MAAM,SAASA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;CAAG,GAAG;AAAS,CAAC;AACxE,MAAa,yBAAyBA,QAAAA,KAAK,MAAM;CAC/C;CACA;CACA;CACAA,QAAAA,KAAK,OAAO;EAAE,OAAO;EAAmB,MAAMA,QAAAA,KAAK,QAAQ,UAAU;EAAG,QAAQ;CAAE,CAAC;AACrF,CAAC;AACD,MAAM,UAAU;CAAE,OAAO;CAAmB,WAAW;CAAG,YAAYA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AAAE;AACnG,MAAM,QAAQ;CAAE,GAAG;CAAS,YAAY;AAAE;AAC1C,MAAM,iBAAiB;CAAE,GAAG;CAAO,cAAc;CAAG,WAAW;AAAE;AACjE,MAAM,SAAS,OAAO;CAAC;CAAmB;CAAO;CAAQ;AAAM,CAAC;AAChE,MAAM,WAAWA,QAAAA,KAAK,OAAO;CAC3B,QAAQ;CACR,cAAc;CACd,YAAY;CACZ,eAAe;CACf,UAAUA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,MAAM;EAAC;EAAG;EAAG;CAAC,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,YAAY;CAAE,YAAY;CAAG,aAAa;AAAE;AAClD,MAAM,MAAMA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;CAAE,GAAG;CAAW,UAAU;AAAE,CAAC,CAAC;AACjE,MAAM,WAAW;CACf,MAAM;CACN,QAAQ;CACR,YAAY,EAAEA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO,SAAS,GAAG,EAAE,UAAU,IAAO,CAAC,CAAC;CACtE,YAAY,EACVA,QAAAA,KAAK,OAAO;EACV,WAAW,EAAE,OAAO;GAAC;GAAK;GAAK;GAAM;EAAG,CAAC,CAAC;EAC1C,OAAO,EAAE,OAAO,CAAC,MAAK,GAAG,CAAC,CAAC;EAC3B,iBAAiB,EAAE,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;CAC3C,CAAC,CACH;AACF;AACA,MAAM,iBAAiBA,QAAAA,KAAK,OAAO;CACjC,UAAU;CACV,WAAWA,QAAAA,KAAK,MACdA,QAAAA,KAAK,OAAO;EAAE,IAAI;EAAG,MAAM,OAAO;GAAC;GAAS;GAAQ;EAAU,CAAC;EAAG,MAAM;EAAG,UAAU,EAAE,CAAC;EAAG,UAAU;CAAE,CAAC,CAC1G;CACA,aAAaA,QAAAA,KAAK,OAAO;EAAE,QAAQ;EAAQ,QAAQA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,IAAI;GAAG,MAAM;GAAG,UAAU;EAAE,CAAC,CAAC;CAAE,CAAC;AAC/G,CAAC;AACD,MAAM,QAAQ,IAAY,MAAc,QAAgB,YAAoC;CAC1F;CACA,OAAO;CACP,UAAU;CACV;CACA,QAAQ;CACR,gBAAgB;CAChB,aAAa,UAAU,GAAG;CAC1B,MAAM;EAAE,UAAU;EAAM,aAAa;EAAoB;CAAO;CAChE,YAAA,GAAWC,gCAAAA,iBAAAA,CAAiB,MAAM;AACpC;AACA,MAAa,gBAAA,GAAeC,gCAAAA,kBAAAA,CAAkB;CAC5C,SAAS;CACT,SAAS,CAAC,6FAA6F;CACvG,MAAM;EACJ;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAA,GAAWD,gCAAAA,iBAAAA,CACTD,QAAAA,KAAK,OAAO;IACV,WAAWA,QAAAA,KAAK,MAAM,CAAC,GAAGA,QAAAA,KAAK,KAAK,CAAC,CAAC;IACtC,YAAY,OAAO,CAAC,YAAY,QAAQ,CAAC;IACzC,iBAAiB;GACnB,CAAC,CACH;EACF;EACA,KAAK,mBAAmB,oBAAoBA,QAAAA,KAAK,OAAO,OAAO,GAAG,QAAQ;EAC1E,KAAK,kBAAkB,mBAAmBA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAO,OAAOA,QAAAA,KAAK,MAAM,UAAU;EAAE,CAAC,GAAG,QAAQ;EAC5G,KAAK,eAAe,gBAAgBA,QAAAA,KAAK,OAAO,KAAK,GAAGA,QAAAA,KAAK,MAAM,CAAC,SAAS,MAAM,CAAC,CAAC;EACrF,KACE,iBACA,kBACAA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAgB,QAAQ;EAAK,CAAC,GAC/CA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA,KACE,oBACA,qBACAA,QAAAA,KAAK,OAAO,cAAc,GAC1BA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA,KACE,qBACA,sBACAA,QAAAA,KAAK,OAAO,OAAO,GACnBA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA,KACE,gBACA,iBACAA,QAAAA,KAAK,OAAO,EAAE,OAAO,kBAAkB,CAAC,GACxCA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAA,GAAWC,gCAAAA,iBAAAA,CACTD,QAAAA,KAAK,OAAO;IACV,cAAc;IACd,OAAOA,QAAAA,KAAK,MAAM,UAAU;IAC5B,UAAUA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;KAAE,OAAO;KAAG,MAAM;KAAG,QAAQ,OAAO;MAAC;MAAW;MAAS;KAAa,CAAC;IAAE,CAAC,CAAC;GAC9G,CAAC,CACH;EACF;EACA,KACE,iBACA,kBACA,2BACAA,QAAAA,KAAK,OAAO;GAAE,OAAO;GAAmB,cAAc;GAAG,MAAM;GAAG,QAAQ;EAAK,CAAC,CAClF;EACA,KACE,kBACA,mBACAA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAU,QAAQ,EAAE,MAAM;GAAG,OAAO,EAAE,iBAAiB;EAAE,CAAC,GAC3EA,QAAAA,KAAK,MAAM,CACTA,QAAAA,KAAK,OAAO;GACV,MAAM;GACN,YAAY;GACZ,OAAO;GACP,QAAQ,OAAO;IAAC;IAAW;IAAS;GAAa,CAAC;GAClD,QAAQ;EACV,CAAC,GACD,cACF,CAAC,CACH;EACA,KACE,uBACA,wBACAA,QAAAA,KAAK,OAAO,QAAQ,GACpBA,QAAAA,KAAK,OAAO;GACV,UAAU;GACV,QAAQ;GACR,cAAc;GACd,YAAY;GACZ,QAAQA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;IAAE,MAAM;IAAG,SAAS;IAAG,YAAY,EAAE,CAAC;GAAE,CAAC,CAAC;EAC3E,CAAC,CACH;EACA,KACE,uBACA,wBACAA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAU,iBAAiB;EAAE,CAAC,GAC/CA,QAAAA,KAAK,OAAO;GAAE,OAAO;GAAG,UAAUA,QAAAA,KAAK,QAAQ,QAAQ;GAAG,UAAU;GAAU,cAAc;EAAI,CAAC,CACnG;CACF;CACA,SAAU,CAAC,UAAU,WAAW,CAAC,CAAW,SAAS,UAAU;EAC7D;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;GACP,QAAQA,QAAAA,KAAK,OAAO,CAAC,GAAG,EAAE,sBAAsB,MAAM,CAAC;EACzD;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;CACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"apiContracts.cjs","names":["Type","Type","jsonApiResponses","defineApiContract"],"sources":["../src/schemas/authorFacade.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import type { PoApiScope } from '@agimon-ai/po-core/packageApi';\nimport { definePoPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { type Static, Type } from 'typebox';\n\nconst AuthorCapabilityNameSchema = Type.String({\n minLength: 1,\n maxLength: 30,\n pattern: '^[a-z][a-z0-9_]*$',\n});\n\nexport const AuthorAliasSchema = Type.String({ minLength: 1, maxLength: 64, pattern: '^[a-z][a-z0-9_-]{0,63}$' });\n\n/** Lists canvases or the capabilities of one named canvas. */\nexport const AuthorDescribeToolsInputSchema = Type.Object(\n { alias: Type.Optional(AuthorAliasSchema) },\n { additionalProperties: false },\n);\nexport type AuthorDescribeToolsInput = Static<typeof AuthorDescribeToolsInputSchema>;\n\n/** Invokes one capability exposed by the current Author viewport. */\nexport const AuthorUseToolsInputSchema = Type.Object(\n {\n alias: Type.Optional(AuthorAliasSchema),\n catalogToken: Type.String({ minLength: 1, maxLength: 256 }),\n name: AuthorCapabilityNameSchema,\n arguments: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n);\nexport type AuthorUseToolsInput = Static<typeof AuthorUseToolsInputSchema>;\n\nconst AuthorBridgeBase = {\n alias: AuthorAliasSchema,\n generation: Type.Number({ minimum: 0 }),\n};\n\n/** Browser-to-server lease messages, validated before Author sees the payload. */\nexport const AuthorBridgeMessageSchema = Type.Union([\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('register') }, { additionalProperties: false }),\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('release') }, { additionalProperties: false }),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('catalog'),\n ownerToken: Type.String({ minLength: 1 }),\n tools: Type.Array(\n Type.Object(\n {\n name: Type.String({ minLength: 1 }),\n label: Type.String(),\n description: Type.String(),\n inputSchema: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n ),\n ),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('result'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n result: Type.Unknown(),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('cancelled'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n]);\n\nexport const AuthorBridgeInputSchema = Type.Object(\n { sessionId: Type.String({ minLength: 1 }), message: AuthorBridgeMessageSchema },\n { additionalProperties: false },\n);\n\nexport function authorBridgeMethod(scope: Extract<PoApiScope, 'global' | 'workspace'>) {\n return definePoPluginMethod({\n service: 'author.bridge',\n method: 'send',\n scope,\n direction: 'client-to-server',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n });\n}\n","import { defineApiContract, jsonApiResponses, type PoHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport {\n AuthorAliasSchema,\n AuthorBridgeMessageSchema,\n AuthorBridgeInputSchema,\n AuthorUseToolsInputSchema,\n} from './authorFacade';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst Json = Type.Unknown({\n description: 'Runtime author capability value, validated against the capability catalog inputSchema.',\n});\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Capability = Type.Object({ name: S, label: S, description: S, inputSchema: Type.Record(S, Json) });\nconst Accepted = Type.Object({\n alias: AuthorAliasSchema,\n kind: Type.Literal('accepted'),\n generation: N,\n ownerToken: S,\n catalogToken: O(S),\n leaseMs: N,\n});\nconst Identity = { alias: AuthorAliasSchema, generation: N, ownerToken: S, catalogToken: S, requestId: S };\nconst Request = Type.Object({ kind: Type.Literal('request'), ...Identity, name: S, arguments: Type.Record(S, Json) });\nconst Cancel = Type.Object({ kind: Type.Literal('cancel'), ...Identity });\nexport const AuthorHubMessageSchema = Type.Union([\n Accepted,\n Request,\n Cancel,\n Type.Object({ alias: AuthorAliasSchema, kind: Type.Literal('rejected'), reason: S }),\n]);\nconst Binding = { alias: AuthorAliasSchema, bindingId: S, generation: Type.Integer({ minimum: 0 }) };\nconst Owner = { ...Binding, ownerToken: S };\nconst ResultIdentity = { ...Owner, catalogToken: S, requestId: S };\nconst Format = values(['markdown-slides', 'csv', 'pptx', 'xlsx']);\nconst Manifest = Type.Object({\n format: Format,\n sourceDigest: S,\n byteLength: N,\n fragmentCount: N,\n metadata: Type.Record(S, Type.Union([S, N, B])),\n});\nconst Operation = { fragmentId: S, replacement: S };\nconst Log = Type.Array(Type.Object({ ...Operation, previous: S }));\nconst Document = {\n path: S,\n format: Format,\n operations: O(Type.Array(Type.Object(Operation), { maxItems: 100000 })),\n csvDialect: O(\n Type.Object({\n delimiter: O(values([',', ';', '\\t', '|'])),\n quote: O(values(['\"', \"'\"])),\n recordDelimiter: O(values(['\\n', '\\r\\n'])),\n }),\n ),\n};\nconst ParsedDocument = Type.Object({\n manifest: Manifest,\n fragments: Type.Array(\n Type.Object({ id: S, kind: values(['slide', 'cell', 'text-run']), text: S, readOnly: O(B), location: S }),\n ),\n renderModel: Type.Object({ format: Format, blocks: Type.Array(Type.Object({ id: S, text: S, readOnly: B })) }),\n});\nconst post = (id: string, path: string, schema: object, output: object): PoHttpContract => ({\n id,\n scope: 'session',\n basePath: 'author',\n path,\n method: 'POST',\n authentication: 'owner',\n description: `Author ${id}.`,\n body: { required: true, contentType: 'application/json', schema },\n responses: jsonApiResponses(output),\n});\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: ['Author capability catalogs supply input JSON Schemas and arbitrary JSON results at runtime.'],\n http: [\n {\n id: 'author.state',\n scope: 'session',\n basePath: 'author',\n path: '/state',\n method: 'GET',\n authentication: 'owner',\n description: 'Read author activation.',\n responses: jsonApiResponses(\n Type.Object({\n sessionId: Type.Union([S, Type.Null()]),\n activation: values(['inactive', 'active']),\n capabilityCount: N,\n }),\n ),\n },\n post('bridge.register', '/bridge/register', Type.Object(Binding), Accepted),\n post('bridge.catalog', '/bridge/catalog', Type.Object({ ...Owner, tools: Type.Array(Capability) }), Accepted),\n post('bridge.next', '/bridge/next', Type.Object(Owner), Type.Union([Request, Cancel])),\n post(\n 'bridge.result',\n '/bridge/result',\n Type.Object({ ...ResultIdentity, result: Json }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.cancelled',\n '/bridge/cancelled',\n Type.Object(ResultIdentity),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.disconnect',\n '/bridge/disconnect',\n Type.Object(Binding),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.close',\n '/bridge/close',\n Type.Object({ alias: AuthorAliasSchema }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n {\n id: 'bridge.describe',\n scope: 'session',\n basePath: 'author',\n path: '/bridge/describe',\n method: 'GET',\n authentication: 'owner',\n description: 'Read runtime author capabilities.',\n responses: jsonApiResponses(\n Type.Object({\n catalogToken: S,\n tools: Type.Array(Capability),\n canvases: Type.Array(Type.Object({ alias: S, path: S, status: values(['opening', 'ready', 'unavailable']) })),\n }),\n ),\n },\n post(\n 'bridge.invoke',\n '/bridge/invoke',\n AuthorUseToolsInputSchema,\n Type.Object({ alias: AuthorAliasSchema, catalogToken: S, name: S, result: Json }),\n ),\n post(\n 'documents.open',\n '/documents/open',\n Type.Object({ ...Document, format: O(Format), alias: O(AuthorAliasSchema) }),\n Type.Union([\n Type.Object({\n path: S,\n byteLength: N,\n sourceSha256: O(Type.String({ minLength: 64, maxLength: 64, pattern: '^[a-f0-9]{64}$' })),\n alias: AuthorAliasSchema,\n status: values(['opening', 'ready', 'unavailable']),\n reused: B,\n }),\n ParsedDocument,\n ]),\n ),\n post(\n 'documents.preflight',\n '/documents/preflight',\n Type.Object(Document),\n Type.Object({\n accepted: B,\n digest: S,\n sourceDigest: S,\n operations: Log,\n issues: Type.Array(Type.Object({ code: S, message: S, fragmentId: O(S) })),\n }),\n ),\n post(\n 'documents.serialize',\n '/documents/serialize',\n Type.Object({ ...Document, preflightDigest: S }),\n Type.Object({ bytes: S, encoding: Type.Literal('base64'), manifest: Manifest, operationLog: Log }),\n ),\n ],\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'author.send',\n scope,\n service: 'author.bridge',\n member: 'send',\n kind: 'method',\n direction: 'client-to-server',\n description: 'Scoped author bridge method invoked through po.hub.',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n },\n {\n id: 'author.browser',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Browser author channel payload.',\n input: AuthorBridgeMessageSchema,\n },\n {\n id: 'author.hub',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Hub author channel payload.',\n input: AuthorHubMessageSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":";;;;;;;;AAIA,MAAM,6BAA6BA,QAAAA,KAAK,OAAO;CAC7C,WAAW;CACX,WAAW;CACX,SAAS;AACX,CAAC;AAED,MAAa,oBAAoBA,QAAAA,KAAK,OAAO;CAAE,WAAW;CAAG,WAAW;CAAI,SAAS;AAA0B,CAAC;AAGlEA,QAAAA,KAAK,OACjD,EAAE,OAAOA,QAAAA,KAAK,SAAS,iBAAiB,EAAE,GAC1C,EAAE,sBAAsB,MAAM,CAChC;;AAIA,MAAa,4BAA4BA,QAAAA,KAAK,OAC5C;CACE,OAAOA,QAAAA,KAAK,SAAS,iBAAiB;CACtC,cAAcA,QAAAA,KAAK,OAAO;EAAE,WAAW;EAAG,WAAW;CAAI,CAAC;CAC1D,MAAM;CACN,WAAWA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,QAAQ,CAAC;AACtD,GACA,EAAE,sBAAsB,MAAM,CAChC;AAGA,MAAM,mBAAmB;CACvB,OAAO;CACP,YAAYA,QAAAA,KAAK,OAAO,EAAE,SAAS,EAAE,CAAC;AACxC;;AAGA,MAAa,4BAA4BA,QAAAA,KAAK,MAAM;CAClDA,QAAAA,KAAK,OAAO;EAAE,GAAG;EAAkB,MAAMA,QAAAA,KAAK,QAAQ,UAAU;CAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;CACpGA,QAAAA,KAAK,OAAO;EAAE,GAAG;EAAkB,MAAMA,QAAAA,KAAK,QAAQ,SAAS;CAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;CACnGA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,SAAS;EAC5B,YAAYA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACxC,OAAOA,QAAAA,KAAK,MACVA,QAAAA,KAAK,OACH;GACE,MAAMA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;GAClC,OAAOA,QAAAA,KAAK,OAAO;GACnB,aAAaA,QAAAA,KAAK,OAAO;GACzB,aAAaA,QAAAA,KAAK,OAAOA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,QAAQ,CAAC;EACxD,GACA,EAAE,sBAAsB,MAAM,CAChC,CACF;CACF,GACA,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;EAC3B,YAAYA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACxC,cAAcA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EAC1C,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACvC,QAAQA,QAAAA,KAAK,QAAQ;CACvB,GACA,EAAE,sBAAsB,MAAM,CAChC;CACAA,QAAAA,KAAK,OACH;EACE,GAAG;EACH,MAAMA,QAAAA,KAAK,QAAQ,WAAW;EAC9B,YAAYA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EACxC,cAAcA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;EAC1C,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CACzC,GACA,EAAE,sBAAsB,MAAM,CAChC;AACF,CAAC;AAED,MAAa,0BAA0BA,QAAAA,KAAK,OAC1C;CAAE,WAAWA,QAAAA,KAAK,OAAO,EAAE,WAAW,EAAE,CAAC;CAAG,SAAS;AAA0B,GAC/E,EAAE,sBAAsB,MAAM,CAChC;;;AC3EA,MAAM,IAAIC,QAAAA,KAAK,OAAO;AACtB,MAAM,IAAIA,QAAAA,KAAK,OAAO;AACtB,MAAM,IAAIA,QAAAA,KAAK,QAAQ;AACvB,MAAM,IAAIA,QAAAA,KAAK;AACf,MAAM,OAAOA,QAAAA,KAAK,QAAQ,EACxB,aAAa,yFACf,CAAC;AACD,MAAM,UAA4B,UAAeA,QAAAA,KAAK,MAAM,MAAM,KAAK,SAASA,QAAAA,KAAK,QAAQ,IAAI,CAAC,CAAC;AACnG,MAAM,aAAaA,QAAAA,KAAK,OAAO;CAAE,MAAM;CAAG,OAAO;CAAG,aAAa;CAAG,aAAaA,QAAAA,KAAK,OAAO,GAAG,IAAI;AAAE,CAAC;AACvG,MAAM,WAAWA,QAAAA,KAAK,OAAO;CAC3B,OAAO;CACP,MAAMA,QAAAA,KAAK,QAAQ,UAAU;CAC7B,YAAY;CACZ,YAAY;CACZ,cAAc,EAAE,CAAC;CACjB,SAAS;AACX,CAAC;AACD,MAAM,WAAW;CAAE,OAAO;CAAmB,YAAY;CAAG,YAAY;CAAG,cAAc;CAAG,WAAW;AAAE;AACzG,MAAM,UAAUA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,QAAQ,SAAS;CAAG,GAAG;CAAU,MAAM;CAAG,WAAWA,QAAAA,KAAK,OAAO,GAAG,IAAI;AAAE,CAAC;AACpH,MAAM,SAASA,QAAAA,KAAK,OAAO;CAAE,MAAMA,QAAAA,KAAK,QAAQ,QAAQ;CAAG,GAAG;AAAS,CAAC;AACxE,MAAa,yBAAyBA,QAAAA,KAAK,MAAM;CAC/C;CACA;CACA;CACAA,QAAAA,KAAK,OAAO;EAAE,OAAO;EAAmB,MAAMA,QAAAA,KAAK,QAAQ,UAAU;EAAG,QAAQ;CAAE,CAAC;AACrF,CAAC;AACD,MAAM,UAAU;CAAE,OAAO;CAAmB,WAAW;CAAG,YAAYA,QAAAA,KAAK,QAAQ,EAAE,SAAS,EAAE,CAAC;AAAE;AACnG,MAAM,QAAQ;CAAE,GAAG;CAAS,YAAY;AAAE;AAC1C,MAAM,iBAAiB;CAAE,GAAG;CAAO,cAAc;CAAG,WAAW;AAAE;AACjE,MAAM,SAAS,OAAO;CAAC;CAAmB;CAAO;CAAQ;AAAM,CAAC;AAChE,MAAM,WAAWA,QAAAA,KAAK,OAAO;CAC3B,QAAQ;CACR,cAAc;CACd,YAAY;CACZ,eAAe;CACf,UAAUA,QAAAA,KAAK,OAAO,GAAGA,QAAAA,KAAK,MAAM;EAAC;EAAG;EAAG;CAAC,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,YAAY;CAAE,YAAY;CAAG,aAAa;AAAE;AAClD,MAAM,MAAMA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;CAAE,GAAG;CAAW,UAAU;AAAE,CAAC,CAAC;AACjE,MAAM,WAAW;CACf,MAAM;CACN,QAAQ;CACR,YAAY,EAAEA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO,SAAS,GAAG,EAAE,UAAU,IAAO,CAAC,CAAC;CACtE,YAAY,EACVA,QAAAA,KAAK,OAAO;EACV,WAAW,EAAE,OAAO;GAAC;GAAK;GAAK;GAAM;EAAG,CAAC,CAAC;EAC1C,OAAO,EAAE,OAAO,CAAC,MAAK,GAAG,CAAC,CAAC;EAC3B,iBAAiB,EAAE,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;CAC3C,CAAC,CACH;AACF;AACA,MAAM,iBAAiBA,QAAAA,KAAK,OAAO;CACjC,UAAU;CACV,WAAWA,QAAAA,KAAK,MACdA,QAAAA,KAAK,OAAO;EAAE,IAAI;EAAG,MAAM,OAAO;GAAC;GAAS;GAAQ;EAAU,CAAC;EAAG,MAAM;EAAG,UAAU,EAAE,CAAC;EAAG,UAAU;CAAE,CAAC,CAC1G;CACA,aAAaA,QAAAA,KAAK,OAAO;EAAE,QAAQ;EAAQ,QAAQA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;GAAE,IAAI;GAAG,MAAM;GAAG,UAAU;EAAE,CAAC,CAAC;CAAE,CAAC;AAC/G,CAAC;AACD,MAAM,QAAQ,IAAY,MAAc,QAAgB,YAAoC;CAC1F;CACA,OAAO;CACP,UAAU;CACV;CACA,QAAQ;CACR,gBAAgB;CAChB,aAAa,UAAU,GAAG;CAC1B,MAAM;EAAE,UAAU;EAAM,aAAa;EAAoB;CAAO;CAChE,YAAA,GAAWC,gCAAAA,iBAAAA,CAAiB,MAAM;AACpC;AACA,MAAa,gBAAA,GAAeC,gCAAAA,kBAAAA,CAAkB;CAC5C,SAAS;CACT,SAAS,CAAC,6FAA6F;CACvG,MAAM;EACJ;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAA,GAAWD,gCAAAA,iBAAAA,CACTD,QAAAA,KAAK,OAAO;IACV,WAAWA,QAAAA,KAAK,MAAM,CAAC,GAAGA,QAAAA,KAAK,KAAK,CAAC,CAAC;IACtC,YAAY,OAAO,CAAC,YAAY,QAAQ,CAAC;IACzC,iBAAiB;GACnB,CAAC,CACH;EACF;EACA,KAAK,mBAAmB,oBAAoBA,QAAAA,KAAK,OAAO,OAAO,GAAG,QAAQ;EAC1E,KAAK,kBAAkB,mBAAmBA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAO,OAAOA,QAAAA,KAAK,MAAM,UAAU;EAAE,CAAC,GAAG,QAAQ;EAC5G,KAAK,eAAe,gBAAgBA,QAAAA,KAAK,OAAO,KAAK,GAAGA,QAAAA,KAAK,MAAM,CAAC,SAAS,MAAM,CAAC,CAAC;EACrF,KACE,iBACA,kBACAA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAgB,QAAQ;EAAK,CAAC,GAC/CA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA,KACE,oBACA,qBACAA,QAAAA,KAAK,OAAO,cAAc,GAC1BA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA,KACE,qBACA,sBACAA,QAAAA,KAAK,OAAO,OAAO,GACnBA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA,KACE,gBACA,iBACAA,QAAAA,KAAK,OAAO,EAAE,OAAO,kBAAkB,CAAC,GACxCA,QAAAA,KAAK,OAAO,EAAE,UAAUA,QAAAA,KAAK,QAAQ,IAAI,EAAE,CAAC,CAC9C;EACA;GACE,IAAI;GACJ,OAAO;GACP,UAAU;GACV,MAAM;GACN,QAAQ;GACR,gBAAgB;GAChB,aAAa;GACb,YAAA,GAAWC,gCAAAA,iBAAAA,CACTD,QAAAA,KAAK,OAAO;IACV,cAAc;IACd,OAAOA,QAAAA,KAAK,MAAM,UAAU;IAC5B,UAAUA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;KAAE,OAAO;KAAG,MAAM;KAAG,QAAQ,OAAO;MAAC;MAAW;MAAS;KAAa,CAAC;IAAE,CAAC,CAAC;GAC9G,CAAC,CACH;EACF;EACA,KACE,iBACA,kBACA,2BACAA,QAAAA,KAAK,OAAO;GAAE,OAAO;GAAmB,cAAc;GAAG,MAAM;GAAG,QAAQ;EAAK,CAAC,CAClF;EACA,KACE,kBACA,mBACAA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAU,QAAQ,EAAE,MAAM;GAAG,OAAO,EAAE,iBAAiB;EAAE,CAAC,GAC3EA,QAAAA,KAAK,MAAM,CACTA,QAAAA,KAAK,OAAO;GACV,MAAM;GACN,YAAY;GACZ,cAAc,EAAEA,QAAAA,KAAK,OAAO;IAAE,WAAW;IAAI,WAAW;IAAI,SAAS;GAAiB,CAAC,CAAC;GACxF,OAAO;GACP,QAAQ,OAAO;IAAC;IAAW;IAAS;GAAa,CAAC;GAClD,QAAQ;EACV,CAAC,GACD,cACF,CAAC,CACH;EACA,KACE,uBACA,wBACAA,QAAAA,KAAK,OAAO,QAAQ,GACpBA,QAAAA,KAAK,OAAO;GACV,UAAU;GACV,QAAQ;GACR,cAAc;GACd,YAAY;GACZ,QAAQA,QAAAA,KAAK,MAAMA,QAAAA,KAAK,OAAO;IAAE,MAAM;IAAG,SAAS;IAAG,YAAY,EAAE,CAAC;GAAE,CAAC,CAAC;EAC3E,CAAC,CACH;EACA,KACE,uBACA,wBACAA,QAAAA,KAAK,OAAO;GAAE,GAAG;GAAU,iBAAiB;EAAE,CAAC,GAC/CA,QAAAA,KAAK,OAAO;GAAE,OAAO;GAAG,UAAUA,QAAAA,KAAK,QAAQ,QAAQ;GAAG,UAAU;GAAU,cAAc;EAAI,CAAC,CACnG;CACF;CACA,SAAU,CAAC,UAAU,WAAW,CAAC,CAAW,SAAS,UAAU;EAC7D;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;GACP,QAAQA,QAAAA,KAAK,OAAO,CAAC,GAAG,EAAE,sBAAsB,MAAM,CAAC;EACzD;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;EACA;GACE,IAAI;GACJ;GACA,SAAS;GACT,QAAQ;GACR,MAAM;GACN,WAAW;GACX,aAAa;GACb,OAAO;EACT;CACF,CAAC;AACH,CAAC"}
@@ -274,6 +274,11 @@ const apiContracts = defineApiContract({
274
274
  }), Type.Union([Type.Object({
275
275
  path: S,
276
276
  byteLength: N,
277
+ sourceSha256: O(Type.String({
278
+ minLength: 64,
279
+ maxLength: 64,
280
+ pattern: "^[a-f0-9]{64}$"
281
+ })),
277
282
  alias: AuthorAliasSchema,
278
283
  status: values([
279
284
  "opening",
@@ -1 +1 @@
1
- {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/authorFacade.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import type { PoApiScope } from '@agimon-ai/po-core/packageApi';\nimport { definePoPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { type Static, Type } from 'typebox';\n\nconst AuthorCapabilityNameSchema = Type.String({\n minLength: 1,\n maxLength: 30,\n pattern: '^[a-z][a-z0-9_]*$',\n});\n\nexport const AuthorAliasSchema = Type.String({ minLength: 1, maxLength: 64, pattern: '^[a-z][a-z0-9_-]{0,63}$' });\n\n/** Lists canvases or the capabilities of one named canvas. */\nexport const AuthorDescribeToolsInputSchema = Type.Object(\n { alias: Type.Optional(AuthorAliasSchema) },\n { additionalProperties: false },\n);\nexport type AuthorDescribeToolsInput = Static<typeof AuthorDescribeToolsInputSchema>;\n\n/** Invokes one capability exposed by the current Author viewport. */\nexport const AuthorUseToolsInputSchema = Type.Object(\n {\n alias: Type.Optional(AuthorAliasSchema),\n catalogToken: Type.String({ minLength: 1, maxLength: 256 }),\n name: AuthorCapabilityNameSchema,\n arguments: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n);\nexport type AuthorUseToolsInput = Static<typeof AuthorUseToolsInputSchema>;\n\nconst AuthorBridgeBase = {\n alias: AuthorAliasSchema,\n generation: Type.Number({ minimum: 0 }),\n};\n\n/** Browser-to-server lease messages, validated before Author sees the payload. */\nexport const AuthorBridgeMessageSchema = Type.Union([\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('register') }, { additionalProperties: false }),\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('release') }, { additionalProperties: false }),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('catalog'),\n ownerToken: Type.String({ minLength: 1 }),\n tools: Type.Array(\n Type.Object(\n {\n name: Type.String({ minLength: 1 }),\n label: Type.String(),\n description: Type.String(),\n inputSchema: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n ),\n ),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('result'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n result: Type.Unknown(),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('cancelled'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n]);\n\nexport const AuthorBridgeInputSchema = Type.Object(\n { sessionId: Type.String({ minLength: 1 }), message: AuthorBridgeMessageSchema },\n { additionalProperties: false },\n);\n\nexport function authorBridgeMethod(scope: Extract<PoApiScope, 'global' | 'workspace'>) {\n return definePoPluginMethod({\n service: 'author.bridge',\n method: 'send',\n scope,\n direction: 'client-to-server',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n });\n}\n","import { defineApiContract, jsonApiResponses, type PoHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport {\n AuthorAliasSchema,\n AuthorBridgeMessageSchema,\n AuthorBridgeInputSchema,\n AuthorUseToolsInputSchema,\n} from './authorFacade';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst Json = Type.Unknown({\n description: 'Runtime author capability value, validated against the capability catalog inputSchema.',\n});\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Capability = Type.Object({ name: S, label: S, description: S, inputSchema: Type.Record(S, Json) });\nconst Accepted = Type.Object({\n alias: AuthorAliasSchema,\n kind: Type.Literal('accepted'),\n generation: N,\n ownerToken: S,\n catalogToken: O(S),\n leaseMs: N,\n});\nconst Identity = { alias: AuthorAliasSchema, generation: N, ownerToken: S, catalogToken: S, requestId: S };\nconst Request = Type.Object({ kind: Type.Literal('request'), ...Identity, name: S, arguments: Type.Record(S, Json) });\nconst Cancel = Type.Object({ kind: Type.Literal('cancel'), ...Identity });\nexport const AuthorHubMessageSchema = Type.Union([\n Accepted,\n Request,\n Cancel,\n Type.Object({ alias: AuthorAliasSchema, kind: Type.Literal('rejected'), reason: S }),\n]);\nconst Binding = { alias: AuthorAliasSchema, bindingId: S, generation: Type.Integer({ minimum: 0 }) };\nconst Owner = { ...Binding, ownerToken: S };\nconst ResultIdentity = { ...Owner, catalogToken: S, requestId: S };\nconst Format = values(['markdown-slides', 'csv', 'pptx', 'xlsx']);\nconst Manifest = Type.Object({\n format: Format,\n sourceDigest: S,\n byteLength: N,\n fragmentCount: N,\n metadata: Type.Record(S, Type.Union([S, N, B])),\n});\nconst Operation = { fragmentId: S, replacement: S };\nconst Log = Type.Array(Type.Object({ ...Operation, previous: S }));\nconst Document = {\n path: S,\n format: Format,\n operations: O(Type.Array(Type.Object(Operation), { maxItems: 100000 })),\n csvDialect: O(\n Type.Object({\n delimiter: O(values([',', ';', '\\t', '|'])),\n quote: O(values(['\"', \"'\"])),\n recordDelimiter: O(values(['\\n', '\\r\\n'])),\n }),\n ),\n};\nconst ParsedDocument = Type.Object({\n manifest: Manifest,\n fragments: Type.Array(\n Type.Object({ id: S, kind: values(['slide', 'cell', 'text-run']), text: S, readOnly: O(B), location: S }),\n ),\n renderModel: Type.Object({ format: Format, blocks: Type.Array(Type.Object({ id: S, text: S, readOnly: B })) }),\n});\nconst post = (id: string, path: string, schema: object, output: object): PoHttpContract => ({\n id,\n scope: 'session',\n basePath: 'author',\n path,\n method: 'POST',\n authentication: 'owner',\n description: `Author ${id}.`,\n body: { required: true, contentType: 'application/json', schema },\n responses: jsonApiResponses(output),\n});\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: ['Author capability catalogs supply input JSON Schemas and arbitrary JSON results at runtime.'],\n http: [\n {\n id: 'author.state',\n scope: 'session',\n basePath: 'author',\n path: '/state',\n method: 'GET',\n authentication: 'owner',\n description: 'Read author activation.',\n responses: jsonApiResponses(\n Type.Object({\n sessionId: Type.Union([S, Type.Null()]),\n activation: values(['inactive', 'active']),\n capabilityCount: N,\n }),\n ),\n },\n post('bridge.register', '/bridge/register', Type.Object(Binding), Accepted),\n post('bridge.catalog', '/bridge/catalog', Type.Object({ ...Owner, tools: Type.Array(Capability) }), Accepted),\n post('bridge.next', '/bridge/next', Type.Object(Owner), Type.Union([Request, Cancel])),\n post(\n 'bridge.result',\n '/bridge/result',\n Type.Object({ ...ResultIdentity, result: Json }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.cancelled',\n '/bridge/cancelled',\n Type.Object(ResultIdentity),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.disconnect',\n '/bridge/disconnect',\n Type.Object(Binding),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.close',\n '/bridge/close',\n Type.Object({ alias: AuthorAliasSchema }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n {\n id: 'bridge.describe',\n scope: 'session',\n basePath: 'author',\n path: '/bridge/describe',\n method: 'GET',\n authentication: 'owner',\n description: 'Read runtime author capabilities.',\n responses: jsonApiResponses(\n Type.Object({\n catalogToken: S,\n tools: Type.Array(Capability),\n canvases: Type.Array(Type.Object({ alias: S, path: S, status: values(['opening', 'ready', 'unavailable']) })),\n }),\n ),\n },\n post(\n 'bridge.invoke',\n '/bridge/invoke',\n AuthorUseToolsInputSchema,\n Type.Object({ alias: AuthorAliasSchema, catalogToken: S, name: S, result: Json }),\n ),\n post(\n 'documents.open',\n '/documents/open',\n Type.Object({ ...Document, format: O(Format), alias: O(AuthorAliasSchema) }),\n Type.Union([\n Type.Object({\n path: S,\n byteLength: N,\n alias: AuthorAliasSchema,\n status: values(['opening', 'ready', 'unavailable']),\n reused: B,\n }),\n ParsedDocument,\n ]),\n ),\n post(\n 'documents.preflight',\n '/documents/preflight',\n Type.Object(Document),\n Type.Object({\n accepted: B,\n digest: S,\n sourceDigest: S,\n operations: Log,\n issues: Type.Array(Type.Object({ code: S, message: S, fragmentId: O(S) })),\n }),\n ),\n post(\n 'documents.serialize',\n '/documents/serialize',\n Type.Object({ ...Document, preflightDigest: S }),\n Type.Object({ bytes: S, encoding: Type.Literal('base64'), manifest: Manifest, operationLog: Log }),\n ),\n ],\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'author.send',\n scope,\n service: 'author.bridge',\n member: 'send',\n kind: 'method',\n direction: 'client-to-server',\n description: 'Scoped author bridge method invoked through po.hub.',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n },\n {\n id: 'author.browser',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Browser author channel payload.',\n input: AuthorBridgeMessageSchema,\n },\n {\n id: 'author.hub',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Hub author channel payload.',\n input: AuthorHubMessageSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}
1
+ {"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/authorFacade.ts","../src/schemas/apiContracts.ts"],"sourcesContent":["import type { PoApiScope } from '@agimon-ai/po-core/packageApi';\nimport { definePoPluginMethod } from '@agimon-ai/po-core/pluginProtocol';\nimport { type Static, Type } from 'typebox';\n\nconst AuthorCapabilityNameSchema = Type.String({\n minLength: 1,\n maxLength: 30,\n pattern: '^[a-z][a-z0-9_]*$',\n});\n\nexport const AuthorAliasSchema = Type.String({ minLength: 1, maxLength: 64, pattern: '^[a-z][a-z0-9_-]{0,63}$' });\n\n/** Lists canvases or the capabilities of one named canvas. */\nexport const AuthorDescribeToolsInputSchema = Type.Object(\n { alias: Type.Optional(AuthorAliasSchema) },\n { additionalProperties: false },\n);\nexport type AuthorDescribeToolsInput = Static<typeof AuthorDescribeToolsInputSchema>;\n\n/** Invokes one capability exposed by the current Author viewport. */\nexport const AuthorUseToolsInputSchema = Type.Object(\n {\n alias: Type.Optional(AuthorAliasSchema),\n catalogToken: Type.String({ minLength: 1, maxLength: 256 }),\n name: AuthorCapabilityNameSchema,\n arguments: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n);\nexport type AuthorUseToolsInput = Static<typeof AuthorUseToolsInputSchema>;\n\nconst AuthorBridgeBase = {\n alias: AuthorAliasSchema,\n generation: Type.Number({ minimum: 0 }),\n};\n\n/** Browser-to-server lease messages, validated before Author sees the payload. */\nexport const AuthorBridgeMessageSchema = Type.Union([\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('register') }, { additionalProperties: false }),\n Type.Object({ ...AuthorBridgeBase, kind: Type.Literal('release') }, { additionalProperties: false }),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('catalog'),\n ownerToken: Type.String({ minLength: 1 }),\n tools: Type.Array(\n Type.Object(\n {\n name: Type.String({ minLength: 1 }),\n label: Type.String(),\n description: Type.String(),\n inputSchema: Type.Record(Type.String(), Type.Unknown()),\n },\n { additionalProperties: false },\n ),\n ),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('result'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n result: Type.Unknown(),\n },\n { additionalProperties: false },\n ),\n Type.Object(\n {\n ...AuthorBridgeBase,\n kind: Type.Literal('cancelled'),\n ownerToken: Type.String({ minLength: 1 }),\n catalogToken: Type.String({ minLength: 1 }),\n requestId: Type.String({ minLength: 1 }),\n },\n { additionalProperties: false },\n ),\n]);\n\nexport const AuthorBridgeInputSchema = Type.Object(\n { sessionId: Type.String({ minLength: 1 }), message: AuthorBridgeMessageSchema },\n { additionalProperties: false },\n);\n\nexport function authorBridgeMethod(scope: Extract<PoApiScope, 'global' | 'workspace'>) {\n return definePoPluginMethod({\n service: 'author.bridge',\n method: 'send',\n scope,\n direction: 'client-to-server',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n });\n}\n","import { defineApiContract, jsonApiResponses, type PoHttpContract } from '@agimon-ai/po-core/apiContracts';\nimport { Type } from 'typebox';\n\nimport {\n AuthorAliasSchema,\n AuthorBridgeMessageSchema,\n AuthorBridgeInputSchema,\n AuthorUseToolsInputSchema,\n} from './authorFacade';\n\nconst S = Type.String();\nconst N = Type.Number();\nconst B = Type.Boolean();\nconst O = Type.Optional;\nconst Json = Type.Unknown({\n description: 'Runtime author capability value, validated against the capability catalog inputSchema.',\n});\nconst values = <T extends string>(items: T[]) => Type.Union(items.map((item) => Type.Literal(item)));\nconst Capability = Type.Object({ name: S, label: S, description: S, inputSchema: Type.Record(S, Json) });\nconst Accepted = Type.Object({\n alias: AuthorAliasSchema,\n kind: Type.Literal('accepted'),\n generation: N,\n ownerToken: S,\n catalogToken: O(S),\n leaseMs: N,\n});\nconst Identity = { alias: AuthorAliasSchema, generation: N, ownerToken: S, catalogToken: S, requestId: S };\nconst Request = Type.Object({ kind: Type.Literal('request'), ...Identity, name: S, arguments: Type.Record(S, Json) });\nconst Cancel = Type.Object({ kind: Type.Literal('cancel'), ...Identity });\nexport const AuthorHubMessageSchema = Type.Union([\n Accepted,\n Request,\n Cancel,\n Type.Object({ alias: AuthorAliasSchema, kind: Type.Literal('rejected'), reason: S }),\n]);\nconst Binding = { alias: AuthorAliasSchema, bindingId: S, generation: Type.Integer({ minimum: 0 }) };\nconst Owner = { ...Binding, ownerToken: S };\nconst ResultIdentity = { ...Owner, catalogToken: S, requestId: S };\nconst Format = values(['markdown-slides', 'csv', 'pptx', 'xlsx']);\nconst Manifest = Type.Object({\n format: Format,\n sourceDigest: S,\n byteLength: N,\n fragmentCount: N,\n metadata: Type.Record(S, Type.Union([S, N, B])),\n});\nconst Operation = { fragmentId: S, replacement: S };\nconst Log = Type.Array(Type.Object({ ...Operation, previous: S }));\nconst Document = {\n path: S,\n format: Format,\n operations: O(Type.Array(Type.Object(Operation), { maxItems: 100000 })),\n csvDialect: O(\n Type.Object({\n delimiter: O(values([',', ';', '\\t', '|'])),\n quote: O(values(['\"', \"'\"])),\n recordDelimiter: O(values(['\\n', '\\r\\n'])),\n }),\n ),\n};\nconst ParsedDocument = Type.Object({\n manifest: Manifest,\n fragments: Type.Array(\n Type.Object({ id: S, kind: values(['slide', 'cell', 'text-run']), text: S, readOnly: O(B), location: S }),\n ),\n renderModel: Type.Object({ format: Format, blocks: Type.Array(Type.Object({ id: S, text: S, readOnly: B })) }),\n});\nconst post = (id: string, path: string, schema: object, output: object): PoHttpContract => ({\n id,\n scope: 'session',\n basePath: 'author',\n path,\n method: 'POST',\n authentication: 'owner',\n description: `Author ${id}.`,\n body: { required: true, contentType: 'application/json', schema },\n responses: jsonApiResponses(output),\n});\nexport const apiContracts = defineApiContract({\n version: 1,\n dynamic: ['Author capability catalogs supply input JSON Schemas and arbitrary JSON results at runtime.'],\n http: [\n {\n id: 'author.state',\n scope: 'session',\n basePath: 'author',\n path: '/state',\n method: 'GET',\n authentication: 'owner',\n description: 'Read author activation.',\n responses: jsonApiResponses(\n Type.Object({\n sessionId: Type.Union([S, Type.Null()]),\n activation: values(['inactive', 'active']),\n capabilityCount: N,\n }),\n ),\n },\n post('bridge.register', '/bridge/register', Type.Object(Binding), Accepted),\n post('bridge.catalog', '/bridge/catalog', Type.Object({ ...Owner, tools: Type.Array(Capability) }), Accepted),\n post('bridge.next', '/bridge/next', Type.Object(Owner), Type.Union([Request, Cancel])),\n post(\n 'bridge.result',\n '/bridge/result',\n Type.Object({ ...ResultIdentity, result: Json }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.cancelled',\n '/bridge/cancelled',\n Type.Object(ResultIdentity),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.disconnect',\n '/bridge/disconnect',\n Type.Object(Binding),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n post(\n 'bridge.close',\n '/bridge/close',\n Type.Object({ alias: AuthorAliasSchema }),\n Type.Object({ accepted: Type.Literal(true) }),\n ),\n {\n id: 'bridge.describe',\n scope: 'session',\n basePath: 'author',\n path: '/bridge/describe',\n method: 'GET',\n authentication: 'owner',\n description: 'Read runtime author capabilities.',\n responses: jsonApiResponses(\n Type.Object({\n catalogToken: S,\n tools: Type.Array(Capability),\n canvases: Type.Array(Type.Object({ alias: S, path: S, status: values(['opening', 'ready', 'unavailable']) })),\n }),\n ),\n },\n post(\n 'bridge.invoke',\n '/bridge/invoke',\n AuthorUseToolsInputSchema,\n Type.Object({ alias: AuthorAliasSchema, catalogToken: S, name: S, result: Json }),\n ),\n post(\n 'documents.open',\n '/documents/open',\n Type.Object({ ...Document, format: O(Format), alias: O(AuthorAliasSchema) }),\n Type.Union([\n Type.Object({\n path: S,\n byteLength: N,\n sourceSha256: O(Type.String({ minLength: 64, maxLength: 64, pattern: '^[a-f0-9]{64}$' })),\n alias: AuthorAliasSchema,\n status: values(['opening', 'ready', 'unavailable']),\n reused: B,\n }),\n ParsedDocument,\n ]),\n ),\n post(\n 'documents.preflight',\n '/documents/preflight',\n Type.Object(Document),\n Type.Object({\n accepted: B,\n digest: S,\n sourceDigest: S,\n operations: Log,\n issues: Type.Array(Type.Object({ code: S, message: S, fragmentId: O(S) })),\n }),\n ),\n post(\n 'documents.serialize',\n '/documents/serialize',\n Type.Object({ ...Document, preflightDigest: S }),\n Type.Object({ bytes: S, encoding: Type.Literal('base64'), manifest: Manifest, operationLog: Log }),\n ),\n ],\n sockets: (['global', 'workspace'] as const).flatMap((scope) => [\n {\n id: 'author.send',\n scope,\n service: 'author.bridge',\n member: 'send',\n kind: 'method',\n direction: 'client-to-server',\n description: 'Scoped author bridge method invoked through po.hub.',\n input: AuthorBridgeInputSchema,\n output: Type.Object({}, { additionalProperties: false }),\n },\n {\n id: 'author.browser',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'client-to-server',\n description: 'Browser author channel payload.',\n input: AuthorBridgeMessageSchema,\n },\n {\n id: 'author.hub',\n scope,\n service: 'po.hub',\n member: 'author_webmcp',\n kind: 'channel',\n direction: 'server-to-client',\n description: 'Hub author channel payload.',\n input: AuthorHubMessageSchema,\n },\n ]),\n});\nexport default apiContracts;\n"],"mappings":"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"}