@exponential_app/engine 0.0.0-stage → 0.1.1

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.
Files changed (85) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +35 -2
  4. package/dist/capabilities.js +29 -0
  5. package/dist/capabilities.js.map +9 -0
  6. package/dist/chunks/index-3nf9f7pv.js +315 -0
  7. package/dist/chunks/index-3nf9f7pv.js.map +10 -0
  8. package/dist/chunks/index-3rgr16n2.js +443 -0
  9. package/dist/chunks/index-3rgr16n2.js.map +9 -0
  10. package/dist/chunks/index-79swfbsm.js +366 -0
  11. package/dist/chunks/index-79swfbsm.js.map +10 -0
  12. package/dist/chunks/index-knntt4cb.js +259 -0
  13. package/dist/chunks/index-knntt4cb.js.map +10 -0
  14. package/dist/chunks/index-m2845dn6.js +72 -0
  15. package/dist/chunks/index-m2845dn6.js.map +10 -0
  16. package/dist/chunks/index-pqpnz4ns.js +2213 -0
  17. package/dist/chunks/index-pqpnz4ns.js.map +9 -0
  18. package/dist/chunks/index-q4zws02e.js +2301 -0
  19. package/dist/chunks/index-q4zws02e.js.map +10 -0
  20. package/dist/chunks/index-s3xjr701.js +170 -0
  21. package/dist/chunks/index-s3xjr701.js.map +10 -0
  22. package/dist/chunks/index-sk8b0dh4.js +126 -0
  23. package/dist/chunks/index-sk8b0dh4.js.map +10 -0
  24. package/dist/chunks/index-tvsykgcv.js +3015 -0
  25. package/dist/chunks/index-tvsykgcv.js.map +19 -0
  26. package/dist/chunks/index-v0m7r4y3.js +6869 -0
  27. package/dist/chunks/index-v0m7r4y3.js.map +13 -0
  28. package/dist/consent.js +24 -0
  29. package/dist/consent.js.map +9 -0
  30. package/dist/index.js +654 -0
  31. package/dist/index.js.map +12 -0
  32. package/dist/lifecycle.js +11 -0
  33. package/dist/lifecycle.js.map +9 -0
  34. package/dist/outbox.js +27 -0
  35. package/dist/outbox.js.map +9 -0
  36. package/dist/pdf.js +15 -0
  37. package/dist/pdf.js.map +9 -0
  38. package/dist/providers.js +26 -0
  39. package/dist/providers.js.map +9 -0
  40. package/dist/runner.js +24 -0
  41. package/dist/runner.js.map +9 -0
  42. package/dist/tools.js +38 -0
  43. package/dist/tools.js.map +9 -0
  44. package/dist/types/domain-contract/src/app-records.d.ts +3148 -0
  45. package/dist/types/domain-contract/src/app-share.d.ts +222 -0
  46. package/dist/types/domain-contract/src/apps.d.ts +612 -0
  47. package/dist/types/eengine/fixtures/providers.json +55 -0
  48. package/dist/types/eengine/src/broker.d.ts +80 -0
  49. package/dist/types/eengine/src/capabilities.d.ts +88 -0
  50. package/dist/types/eengine/src/consent.d.ts +50 -0
  51. package/dist/types/eengine/src/index.d.ts +12 -0
  52. package/dist/types/eengine/src/instance.d.ts +131 -0
  53. package/dist/types/eengine/src/lifecycle.d.ts +64 -0
  54. package/dist/types/eengine/src/outbox.d.ts +3 -0
  55. package/dist/types/eengine/src/pdf.d.ts +36 -0
  56. package/dist/types/eengine/src/providers.d.ts +38 -0
  57. package/dist/types/eengine/src/runner.d.ts +82 -0
  58. package/dist/types/eengine/src/stores.d.ts +125 -0
  59. package/dist/types/eengine/src/synced.d.ts +59 -0
  60. package/dist/types/eengine/src/tools.d.ts +79 -0
  61. package/dist/types/eengine/src/web/index.d.ts +20 -0
  62. package/dist/types/eengine/src/web/mcp.d.ts +27 -0
  63. package/dist/types/eengine/src/web/platform.d.ts +91 -0
  64. package/dist/types/eengine/src/web/stores.d.ts +125 -0
  65. package/dist/types/emcp/fixtures/automations.json +521 -0
  66. package/dist/types/emcp/fixtures/hub.json +498 -0
  67. package/dist/types/emcp/src/access.d.ts +55 -0
  68. package/dist/types/emcp/src/audit.d.ts +22 -0
  69. package/dist/types/emcp/src/automations.d.ts +111 -0
  70. package/dist/types/emcp/src/exposes.d.ts +242 -0
  71. package/dist/types/emcp/src/hub.d.ts +63 -0
  72. package/dist/types/emcp/src/index.d.ts +7 -0
  73. package/dist/types/emcp/src/pure.d.ts +11 -0
  74. package/dist/types/emcp/src/upstream.d.ts +288 -0
  75. package/dist/types/emcp/src/vault.d.ts +34 -0
  76. package/dist/web/index.js +791 -0
  77. package/dist/web/index.js.map +13 -0
  78. package/fixtures/bundle.json +1165 -0
  79. package/fixtures/capabilities.json +434 -0
  80. package/fixtures/consent.json +146 -0
  81. package/fixtures/lifecycle.json +125 -0
  82. package/fixtures/outbox.json +22 -0
  83. package/fixtures/providers.json +55 -0
  84. package/fixtures/runner.json +2167 -0
  85. package/package.json +92 -4
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/eengine/src/broker.ts", "../../../packages/eengine/src/instance.ts", "../../../packages/eengine/src/synced.ts"],
4
+ "sourcesContent": [
5
+ "// VAPP-269: the capability runtime, the twin of the crate's `capability.rs`.\n// ONE `Broker` per app instance answers app UI calls (`photos_pick`) and\n// agent calls (`photos__pick`) the same way: the package's manifest is the\n// ceiling, the person's consent next (the host paints the sheet and answers\n// through `answer`), then one audit row. Grants persist in the Vault and\n// change ONLY through `setGrant` with `consentUi` after a gesture.\n//\n// USER ACTIVATION (the web): `call` and `answer` reach the native provider\n// without awaiting anything but microtasks (the grants live in memory, the\n// Vault write runs after), so a picker opens inside the click's task.\n\nimport type { HubOutcome } from \"@exp/emcp\"\n\nimport { brokerAuditRow, brokerDecide, type BrokerAuditRow, type BrokerCall, type BrokerVerdict, type CallFrom, type Grants, type GrantValue, type ManifestEntry } from \"./capabilities\"\nimport { consentAnswer, consentSheet, grantsRecord, grantWrite, manageSheet, type ConsentAnswer, type GrantVia, type SurfaceComponent } from \"./consent\"\nimport { bridgeCall, type BlobStore, type McpCallResult, type NativeCapability } from \"./tools\"\n\n/** A refusal or a failure (eCore's shape: a code + a message). */\nexport interface Failure {\n code: string\n message: string\n}\n\n/** Where secrets live (Keychain, Keystore, libsecret; the web: IndexedDB). */\nexport interface Vault {\n read(key: string): Promise<string | null>\n write(key: string, value: string): Promise<void>\n delete(key: string): Promise<void>\n}\n\n/** Where the broker's audit rows go. */\nexport interface CallAudit {\n record(row: BrokerAuditRow): void\n}\n\n/** The ask sheet the person answers (consent.json `consentSheet`): a genUI surface. */\nexport interface ConsentSheet {\n scope: string\n components: SurfaceComponent[]\n data: Record<string, unknown>\n}\n\n/** What a brokered call answers. */\nexport type BrokerAnswer =\n | { result: McpCallResult }\n /** The person decides first: paint the sheet, then `answer`. */\n | { ask: BrokerVerdict; sheet: ConsentSheet }\n /** `code` = `UNKNOWN_TOOL` for unknown, else `FORBIDDEN`; `message` = the reason. */\n | { refused: Failure }\n\nexport interface BrokerSetup {\n appId: string\n appName: string\n signer: string\n manifest: readonly ManifestEntry[]\n grants: Grants\n capabilities: readonly NativeCapability[]\n vault: Vault\n /** The app's files: what capabilities read (`fileId`) and store. */\n blobs: BlobStore\n /** The package's screen names (a notification's tap opens one). */\n screens: readonly string[]\n audit?: CallAudit | null\n}\n\nconst refused = (verdict: BrokerVerdict): BrokerAnswer => ({ refused: { code: verdict.verdict === `unknown` ? `UNKNOWN_TOOL` : `FORBIDDEN`, message: verdict.reason ?? `` } })\n\n/** One app instance's broker. */\nexport class Broker {\n private grantsNow: Grants\n private foreground = false\n /** The last grants write (tests and a closing page await it). */\n persisted: Promise<void> = Promise.resolve()\n\n constructor(private readonly setup: BrokerSetup) {\n this.grantsNow = { ...setup.grants }\n }\n\n get appId(): string {\n return this.setup.appId\n }\n\n get manifest(): readonly ManifestEntry[] {\n return this.setup.manifest\n }\n\n get capabilities(): readonly NativeCapability[] {\n return this.setup.capabilities\n }\n\n grants(): Grants {\n return { ...this.grantsNow }\n }\n\n /** The lifecycle tells the broker whether a sheet may show. */\n setForeground(foreground: boolean): void {\n this.foreground = foreground\n }\n\n private provided(): string[] {\n return this.setup.capabilities.map((c) => c.name)\n }\n\n private record(client: string | null, call: BrokerCall, verdict: BrokerVerdict, outcome: HubOutcome | null): void {\n this.setup.audit?.record(brokerAuditRow({ appId: this.setup.appId, client, call, verdict, outcome }))\n }\n\n private async run(client: string | null, call: BrokerCall, verdict: BrokerVerdict): Promise<BrokerAnswer> {\n const capability = this.setup.capabilities.find((c) => c.name === verdict.capability)\n if (!capability || !verdict.tool) {\n this.record(client, call, verdict, `unreachable`)\n return { refused: { code: `FORBIDDEN`, message: `unavailable` } }\n }\n const { result, outcome } = await bridgeCall({\n tool: `${capability.name}_${verdict.tool}`,\n arguments: call.arguments ?? {},\n context: { app: this.setup.appId, screens: this.setup.screens },\n blobs: this.setup.blobs,\n native: (tool, args) => capability.call(tool.slice(tool.indexOf(`_`) + 1), args),\n })\n this.record(client, call, verdict, outcome)\n return { result }\n }\n\n /** One call from app UI (`client` = null) or an agent run (`client` = its run id). */\n call(from: CallFrom, client: string | null, name: string, args: unknown): Promise<BrokerAnswer> {\n const call: BrokerCall = { from, name, arguments: args }\n const verdict = brokerDecide({ manifest: this.setup.manifest, grants: this.grantsNow, provided: this.provided(), foreground: this.foreground, call })\n if (verdict.verdict === `call`) return this.run(client, call, verdict)\n if (verdict.verdict === `ask`) {\n const entry = this.setup.manifest.find((m) => m.id === verdict.scope) ?? { id: verdict.scope ?? ``, why: `` }\n const { components, data } = consentSheet(this.setup.appName, entry)\n return Promise.resolve({ ask: verdict, sheet: { scope: entry.id, components, data } })\n }\n this.record(client, call, verdict, null)\n return Promise.resolve(refused(verdict))\n }\n\n /** The person's answer to the sheet for `verdict` (an Ask): store it per\n * consent.json, then run or refuse the call. The answer is the gesture. */\n answer(from: CallFrom, client: string | null, name: string, args: unknown, verdict: BrokerVerdict, answer: ConsentAnswer): Promise<BrokerAnswer> {\n const call: BrokerCall = { from, name, arguments: args }\n if (!verdict.scope) return Promise.resolve(refused(verdict))\n const next = consentAnswer(this.grantsNow, verdict.scope, answer)\n this.grantsNow = next.grants\n this.persist(next.grants)\n const decided: BrokerVerdict = { ...verdict, verdict: next.verdict, reason: next.reason }\n if (next.verdict === `call`) return this.run(client, call, decided)\n this.record(client, call, decided, null)\n return Promise.resolve(refused(decided))\n }\n\n /** Change a grant (the Permissions sheet's Switch). Only the ConsentUi\n * after a gesture; `value` null = revoke. Answers consent.json's refusal, or null. */\n setGrant(via: GrantVia, gesture: boolean, scope: string, value: GrantValue | null): string | null {\n const next = grantWrite(this.setup.manifest, this.grantsNow, { via, gesture, scope, value })\n if (next.refused) return next.refused\n this.grantsNow = next.grants\n this.persist(next.grants)\n return null\n }\n\n /** The Permissions sheet (consent.json `manageSheet`). */\n permissionsSheet(): SurfaceComponent[] {\n return manageSheet(this.setup.manifest, this.grantsNow)\n }\n\n private persist(grants: Grants): void {\n const { key, value } = grantsRecord(this.setup.appId, this.setup.signer, this.setup.manifest, grants)\n // A failed write only means the person is asked again next launch.\n this.persisted = this.persisted.then(() => this.setup.vault.write(key, value)).catch(() => {})\n }\n}\n",
6
+ "// VAPP-269: an `AppInstance`, one running app over a host's providers, the\n// twin of the crate's `instance.rs`: load and verify its package file,\n// drive its lifecycle (lifecycle.json) and carry out the effects, resolve\n// `records:<kind>` sources with genUI's one records query, dispatch\n// `records_*`, `app_navigate` and capability calls (the broker, the E5\n// bridge), and keep O1's outbox when the host has a sync provider\n// (outbox.json: direct writes otherwise).\n\nimport {\n kindComputed,\n kindRefs,\n kindTransitions,\n navigateTarget,\n packageScreens,\n parseRecordsSource,\n parseSource,\n recordPolicy,\n recordsValue,\n bridgePackage,\n validatePackage,\n verifyPackageFile,\n type PackageIssue,\n type RecordOp,\n type RecordRow,\n type RecordsValue,\n} from \"@exponential_app/eui/host\"\n\nimport { Broker, type BrokerAnswer, type CallAudit, type ConsentSheet, type Failure, type Vault } from \"./broker\"\nimport type { BrokerVerdict, Grants, GrantValue, ManifestEntry } from \"./capabilities\"\nimport { grantsOnPackage, grantsRecord, type ConsentAnswer, type GrantVia, type SurfaceComponent } from \"./consent\"\nimport { lifecycleStep, STOPPED, type LifecycleEffect, type LifecycleEvent, type LifecycleState } from \"./lifecycle\"\nimport { outboxFlush, outboxMode, outboxOutcome, outboxPrune, outboxRequest, outboxRows, outboxWrites, type OutboxCall, type OutboxEntry, type OutboxResult, type OutboxWrite } from \"./outbox\"\nimport { engineRecordRefusal, engineViewer, type EngineIdentity, type NetworkPolicy } from \"./providers\"\nimport type { EngineRecordStore, WriteBatch } from \"./stores\"\nimport type { BlobStore, NativeCapability } from \"./tools\"\n\nexport type Presentation = `replace` | `push` | `sheet`\n\n/** Maps screens to windows (desktop), nav stacks and sheets (phones), the page (the web). */\nexport interface WindowHost {\n open(app: string, screen: string, params: Record<string, string>, how: Presentation): void\n}\n\n/** An optional transport to an authority; absent = the store is the authority, no outbox. */\nexport interface SyncTransport {\n push(app: string, call: OutboxCall, input: Record<string, unknown>): Promise<OutboxResult>\n /** `push` with the server's answer, for a call that awaits its own entry. */\n send?(app: string, call: OutboxCall, input: Record<string, unknown>): Promise<Pushed>\n}\n\n/** One replay as a transport answers it. */\nexport interface Pushed {\n result: OutboxResult\n answer?: unknown\n message?: string\n invalid?: boolean\n}\n\n/** What a host hands the Engine (providers.json; no telemetry or update key: none exists). */\nexport interface EngineHostConfig {\n host: { kind: string; platform: string; formFactor: string; locale: string }\n storage: EngineRecordStore\n blobs: BlobStore\n identity: EngineIdentity\n vault: Vault\n window: WindowHost\n /** ISO 8601 UTC with milliseconds (tests pin it). */\n clock?: () => string\n network: NetworkPolicy\n sync?: SyncTransport | null\n capabilities: readonly NativeCapability[]\n audit?: CallAudit | null\n newId?: () => string\n}\n\n/** Why a package could not load: `signature` (signed, does not verify) or `invalid` (genUI refuses it). */\nexport class LoadError extends Error {\n constructor(\n readonly kind: `signature` | `invalid`,\n readonly issues: PackageIssue[],\n ) {\n super(`${kind}: ${issues.map((i) => `${i.path || `/`} ${i.message}`).join(`; `)}`)\n this.name = `LoadError`\n }\n}\n\n/** What a host function call answers. */\nexport type CallResult =\n | { value: unknown }\n /** The person decides first: paint the sheet, then `answerConsent` with the same call. */\n | { ask: BrokerVerdict; sheet: ConsentSheet }\n /** Refused (the failed-action toast's reason). */\n | { refused: Failure }\n\n/** Where the instance keeps its last screen (lifecycle.json `persist`). */\nexport const screenKey = (app: string): string => `eengine/screen/${app}`\n\ntype Pkg = Record<string, unknown> & { id?: unknown; name?: unknown; records?: unknown; capabilities?: unknown; screens?: unknown }\n\nconst isObject = (v: unknown): v is Record<string, unknown> => !!v && typeof v === `object` && !Array.isArray(v)\n\n/** The package a file carries (`package`), or the value itself when it is a bare package. */\nexport const packageOf = (file: unknown): unknown => (isObject(file) && isObject(file.package) ? file.package : file)\n\n/** VAPP-271: app UI reads a capability's answer as its `structuredContent`\n * (an action step's `results.<name>`); an `isError` result is the call's\n * refusal, its text the toast. */\nconst brokered = (answer: BrokerAnswer): CallResult => {\n if (!(`result` in answer)) return answer\n const { result } = answer\n if (result.isError) return { refused: { code: `failed`, message: result.content[0]?.text ?? `failed` } }\n return { value: result.structuredContent ?? null }\n}\n\nconst failure = (code: string, error: unknown): Failure =>\n isObject(error) && typeof error.code === `string` && typeof error.message === `string` ? { code: error.code, message: error.message } : { code, message: error instanceof Error ? error.message : String(error) }\n\nconst parseLast = (stored: string | null): { screen: string; params: Record<string, unknown> } | null => {\n if (!stored) return null\n try {\n const v = JSON.parse(stored)\n return isObject(v) && typeof v.screen === `string` && isObject(v.params) ? { screen: v.screen, params: v.params } : null\n } catch {\n return null\n }\n}\n\n/** One running app. */\nexport class AppInstance {\n private stateNow: LifecycleState = STOPPED\n private outboxNow: OutboxEntry[] = []\n private lastScreen: string | null\n\n private constructor(\n private readonly config: EngineHostConfig,\n readonly pkg: Pkg,\n readonly appId: string,\n readonly signer: string | null,\n readonly broker: Broker,\n lastScreen: string | null,\n ) {\n this.lastScreen = lastScreen\n }\n\n /** Load a package file (or a bare package): verify its signature when it\n * carries one, validate the package, reconcile its grants. */\n static async load(config: EngineHostConfig, file: unknown): Promise<AppInstance> {\n const verification = await verifyPackageFile(file)\n if (verification.status === `invalid`) throw new LoadError(`signature`, verification.issues)\n // Round 9 §12: format 5 through the bridge while ACCEPT_V09 holds.\n const pkg = bridgePackage(packageOf(file))\n const issues = validatePackage(pkg)\n if (issues.length) throw new LoadError(`invalid`, issues)\n const p = pkg as Pkg\n const appId = typeof p.id === `string` ? p.id : ``\n const signer = verification.status === `valid` ? verification.author.key : null\n const manifest: ManifestEntry[] = Array.isArray(p.capabilities) ? (p.capabilities as ManifestEntry[]) : []\n const key = grantsRecord(appId, signer ?? ``, manifest, {}).key\n const [storedGrants, lastScreen] = await Promise.all([config.vault.read(key).catch(() => null), config.vault.read(screenKey(appId)).catch(() => null)])\n const broker = new Broker({\n appId,\n appName: typeof p.name === `string` ? p.name : appId,\n signer: signer ?? ``,\n manifest,\n grants: grantsOnPackage(storedGrants, signer ?? ``, manifest),\n capabilities: config.capabilities,\n vault: config.vault,\n blobs: config.blobs,\n screens: packageScreens(p).map((s) => s.template),\n audit: config.audit ?? null,\n })\n return new AppInstance(config, p, appId, signer, broker, lastScreen)\n }\n\n get manifest(): readonly ManifestEntry[] {\n return this.broker.manifest\n }\n\n grants(): Grants {\n return this.broker.grants()\n }\n\n get state(): LifecycleState {\n return this.stateNow\n }\n\n /** The outbox entries still pending or acked (queue mode). */\n get outbox(): readonly OutboxEntry[] {\n return this.outboxNow\n }\n\n get mode(): `queue` | `direct` {\n return outboxMode(!!this.config.sync)\n }\n\n private me(): string {\n return engineViewer(this.config.identity).id ?? ``\n }\n\n private now(): string {\n return this.config.clock?.() ?? new Date().toISOString()\n }\n\n /** The person answered the sheet of an Ask for this call (the answer is the gesture). */\n async answerConsent(name: string, args: unknown, verdict: BrokerVerdict, answer: ConsentAnswer): Promise<CallResult> {\n return brokered(await this.broker.answer(`ui`, null, name, args, verdict, answer))\n }\n\n /** The Permissions sheet's Switch: only the ConsentUi, after a gesture. Answers the refusal, or null. */\n setGrant(via: GrantVia, gesture: boolean, scope: string, value: GrantValue | null): string | null {\n return this.broker.setGrant(via, gesture, scope, value)\n }\n\n /** The Permissions sheet (a genUI surface). */\n permissionsSheet(): SurfaceComponent[] {\n return this.broker.permissionsSheet()\n }\n\n /** One lifecycle event: the next state, with its effects carried out\n * (open → the WindowHost, persist → the Vault, flush → the outbox).\n * Answers the effects (sources and automations are the host's). */\n async event(event: LifecycleEvent): Promise<LifecycleEffect[]> {\n const { state, effects } = lifecycleStep(this.stateNow, event, { pkg: { id: this.appId, screens: this.pkg.screens }, lastScreen: parseLast(this.lastScreen) })\n this.stateNow = state\n this.broker.setForeground(state.phase === `foreground`)\n for (const effect of effects) {\n if (effect.effect === `open`) this.config.window.open(this.appId, effect.screen, effect.params, `replace`)\n else if (effect.effect === `persist`) {\n this.lastScreen = JSON.stringify({ screen: effect.screen, params: effect.params })\n await this.config.vault.write(screenKey(this.appId), this.lastScreen).catch(() => {})\n } else if (effect.effect === `flush`) await this.flush()\n }\n return effects\n }\n\n /** A `records:<kind>?…` source's value (genUI's records query over the\n * store's rows with the outbox laid over them); undefined = not a records source. */\n async recordsValue(source: string): Promise<RecordsValue | null | undefined> {\n const parsed = parseSource(source)\n const query = parsed ? parseRecordsSource(parsed) : null\n if (!query) return undefined\n if (query.app !== null) return null\n let rows: RecordRow[] = await this.config.storage.rows(this.appId)\n if (this.outboxNow.length) rows = outboxRows(rows, this.outboxNow, this.me())\n const records = this.pkg.records\n const def = query.from && isObject(records) ? records[query.from] : undefined\n const viewer = engineViewer(this.config.identity)\n return recordsValue(rows, query, {\n me: viewer.id,\n now: this.now(),\n names: {},\n computed: kindComputed(records, query.from),\n refs: kindRefs(records, query.from),\n transitions: kindTransitions(def),\n role: viewer.role,\n })\n }\n\n /** Called with every change to the app's rows (re-resolve the bound sources). */\n subscribe(on: () => void): () => void {\n return this.config.storage.subscribe(this.appId, () => on())\n }\n\n /** A host function call from the app's UI: `records_upsert` /\n * `records_delete` / `records_batch`, `app_navigate`, or a capability\n * (`<capability>.<tool>`, through the broker). `newIds` = the client ids of\n * its creates, in order. */\n async call(name: string, args: unknown, newIds: readonly string[] = []): Promise<CallResult> {\n const a = isObject(args) ? args : {}\n switch (name) {\n case `records_upsert`:\n return this.write(`upsert`, a, newIds)\n case `records_delete`:\n return this.write(`delete`, a, newIds)\n case `records_batch`:\n return this.write(`batch`, a, newIds)\n case `app_navigate`: {\n const target = navigateTarget(this.pkg, args)\n if (`error` in target) return { refused: { code: `BAD_REQUEST`, message: target.error } }\n this.config.window.open(this.appId, target.screen, target.params, `replace`)\n this.stateNow = { ...this.stateNow, screen: target.screen, params: target.params }\n return { value: null }\n }\n default:\n return brokered(await this.broker.call(`ui`, null, name, args))\n }\n }\n\n /** The kind policy check for a write, as the identity sees it. */\n private async refusal(writes: OutboxWrite[]): Promise<string | null> {\n const rows = await this.config.storage.rows(this.appId).catch(() => [] as RecordRow[])\n const records = isObject(this.pkg.records) ? this.pkg.records : {}\n for (const w of writes) {\n const row = rows.find((r) => r.id === w.id)\n const op: RecordOp = w.op\n const kind = w.op === `delete` ? row?.kind : w.kind\n const policy = recordPolicy(kind ? records[kind] : undefined)\n const refusal = engineRecordRefusal(this.config.identity, policy, op, w.op === `create` ? null : row ? { authorId: row.authorId ?? null, createdBy: row.createdBy } : null)\n if (refusal) return refusal\n }\n return null\n }\n\n private async write(call: OutboxCall, args: Record<string, unknown>, newIds: readonly string[]): Promise<CallResult> {\n const writes = outboxWrites(call, args, newIds)\n const refusal = await this.refusal(writes)\n if (refusal) return { refused: { code: `FORBIDDEN`, message: refusal } }\n const entry: OutboxEntry = { writeId: this.config.newId?.() ?? crypto.randomUUID(), appId: this.appId, call, writes, at: this.now(), state: `pending` }\n const answer = call === `upsert` ? { id: writes[0]?.id } : call === `delete` ? null : { ids: writes.map((w) => w.id) }\n if (this.mode === `direct`) {\n try {\n await this.config.storage.write(this.appId, batchOf(entry), this.me())\n return { value: answer }\n } catch (error) {\n return { refused: failure(`STORE`, error) }\n }\n }\n this.outboxNow = [...this.outboxNow, entry]\n if (this.stateNow.phase === `foreground`) await this.flush()\n return { value: answer }\n }\n\n /** Flush the outbox through the sync provider (FIFO, a retry stops it). */\n async flush(): Promise<void> {\n const sync = this.config.sync\n if (!sync) return\n const results: Record<string, OutboxResult> = {}\n for (const entry of this.outboxNow.filter((e) => e.state === `pending`)) {\n const { call, input } = outboxRequest(entry)\n const result = await sync.push(this.appId, call, input).catch((): OutboxResult => ({ transport: true }))\n results[entry.writeId] = result\n if (outboxOutcome(entry, result) === `retry`) break\n }\n if (!Object.keys(results).length) return\n const now = this.now()\n const after = outboxFlush(this.outboxNow, results, now).after\n // Acked entries keep overlaying until the store reflects them (outboxPrune).\n const rows = await this.config.storage.rows(this.appId).catch(() => [] as RecordRow[])\n this.outboxNow = outboxPrune(after, rows, now)\n }\n}\n\n/** An outbox entry as one store batch. */\nexport function batchOf(entry: OutboxEntry): WriteBatch {\n return {\n writeId: entry.writeId,\n writes: entry.writes.map((w) => (w.op === `delete` ? { op: `delete`, id: w.id } : { op: `upsert`, id: w.id, kind: w.kind, data: w.data, create: w.op === `create` })),\n at: entry.at,\n }\n}\n\n/** How many client ids a call's creates take (the runner generates them). */\nexport function createsOf(name: string, args: unknown): number {\n if (!isObject(args)) return 0\n if (name === `records_upsert`) return typeof args.id === `string` ? 0 : 1\n if (name === `records_batch` && Array.isArray(args.writes)) return args.writes.filter((w) => isObject(w) && w.op !== `delete` && typeof w.id !== `string`).length\n return 0\n}\n",
7
+ "// VAPP-272: the twin of the crate's `synced::SyncedRecordStore`: one account's\n// outbox across its apps over a host's `OutboxLog` and transport, and the\n// synced rows the host feeds in. `fixtures/outbox.json` `syncedCases` is the\n// contract. The web stays online-only and does not run it; the twin keeps the\n// fixture replayed in both languages.\n\nimport type { RecordRow } from \"@exponential_app/eui/host\"\n\nimport type { Pushed, SyncTransport } from \"./instance\"\nimport { outboxOutcome, outboxPendingLabel, outboxPrune, outboxRequest, outboxRows, outboxVerb, type OutboxCall, type OutboxEntry } from \"./outbox\"\n\n/** Where an account's entries persist, oldest first. */\nexport interface OutboxLog {\n entries(): Promise<OutboxEntry[]>\n push(entry: OutboxEntry): Promise<void>\n ack(writeId: string, at: string): Promise<void>\n remove(writeIds: string[]): Promise<void>\n}\n\nexport interface SyncedListener {\n changed?(): void\n /** A replay nobody awaits was refused: the failed-action toast. */\n refused?(entry: OutboxEntry, verb: string, pushed: Pushed): void\n}\n\n/** A host call's answer: its entry's first outcome, or queued (answer from the entry). */\nexport type Submitted = { done: unknown } | { refused: { message: string | null; invalid: boolean } } | { queued: true }\n\nexport class SyncedRecordStore {\n private flushing: Promise<void> | null = null\n private again = false\n private readonly awaited = new Set<string>()\n private readonly outcomes = new Map<string, Submitted>()\n private readonly synced = new Map<string, RecordRow[]>()\n\n private constructor(\n private readonly log: OutboxLog,\n private readonly transport: SyncTransport,\n private readonly now: () => string,\n private readonly listener: SyncedListener | null,\n private queue: OutboxEntry[],\n ) {}\n\n /** Reads the log once: a restart picks the queue up where it stopped. */\n static async open(log: OutboxLog, transport: SyncTransport, now: () => string, listener: SyncedListener | null = null): Promise<SyncedRecordStore> {\n return new SyncedRecordStore(log, transport, now, listener, await log.entries())\n }\n\n entries(): OutboxEntry[] {\n return [...this.queue]\n }\n\n pendingLabel(app: string): string | null {\n return outboxPendingLabel(this.queue, app)\n }\n\n rows(app: string): RecordRow[] {\n return this.synced.get(app) ?? []\n }\n\n visibleRows(app: string, me: string | null): RecordRow[] {\n const entries = this.queue.filter((e) => e.appId === app)\n return entries.length === 0 ? this.rows(app) : (outboxRows(this.rows(app) as never, entries, me) as unknown as RecordRow[])\n }\n\n /** Persist a call's entry; alone and online it replays now and answers\n * its first outcome, otherwise queued with nothing sent. */\n async submit(entry: OutboxEntry, online: boolean): Promise<Submitted> {\n await this.log.push(entry)\n const awaits = online && !this.queue.some((e) => e.state === `pending`)\n if (awaits) this.awaited.add(entry.writeId)\n this.queue.push(entry)\n this.listener?.changed?.()\n if (!awaits) return { queued: true }\n await this.flush()\n if (this.flushing) await this.flushing\n this.awaited.delete(entry.writeId)\n const outcome = this.outcomes.get(entry.writeId)\n this.outcomes.delete(entry.writeId)\n return outcome ?? { queued: true }\n }\n\n /** One flusher at a time: a call while one runs asks for another pass. */\n async flush(): Promise<void> {\n if (this.flushing) {\n this.again = true\n return\n }\n this.flushing = this.drain().finally(() => {\n this.flushing = null\n })\n await this.flushing\n }\n\n private async drain(): Promise<void> {\n for (;;) {\n const entry = this.queue.find((e) => e.state === `pending`)\n const stop = entry ? await this.replay(entry) : true\n if (!stop) continue\n const pending = this.queue.some((e) => e.state === `pending`)\n const go = this.again && pending\n this.again = false\n if (!go) return\n }\n }\n\n private async replay(entry: OutboxEntry): Promise<boolean> {\n const { call, input } = outboxRequest(entry)\n const pushed = await this.send(entry.appId, call, input)\n const outcome = outboxOutcome(entry, pushed.result)\n let answer: Submitted = { queued: true }\n if (outcome === `done`) {\n const at = this.now()\n await this.log.ack(entry.writeId, at)\n this.queue = this.queue.map((e) => (e.writeId === entry.writeId ? { ...e, state: `acked`, ackedAt: at } : e))\n answer = { done: pushed.answer ?? null }\n } else if (outcome === `dropped` || outcome === `refused`) {\n await this.log.remove([entry.writeId])\n this.queue = this.queue.filter((e) => e.writeId !== entry.writeId)\n if (outcome === `refused`) answer = { refused: { message: pushed.message ?? null, invalid: pushed.invalid ?? false } }\n }\n if (this.awaited.delete(entry.writeId)) this.outcomes.set(entry.writeId, answer)\n else if (outcome === `refused`) this.listener?.refused?.(entry, outboxVerb(entry), pushed)\n if (outcome === `done`) await this.prune()\n this.listener?.changed?.()\n return outcome === `retry`\n }\n\n private send(app: string, call: OutboxCall, input: Record<string, unknown>): Promise<Pushed> {\n if (this.transport.send) return this.transport.send(app, call, input)\n return this.transport.push(app, call, input).then((result) => ({ result }))\n }\n\n /** Feed `app`'s synced rows in: acked entries they reflect leave. */\n async setRows(app: string, rows: RecordRow[]): Promise<void> {\n this.synced.set(app, rows)\n await this.prune()\n }\n\n /** Drop acked entries reflected or past the grace. An app whose rows were\n * never fed in keeps its entries (an empty cache reads as every delete\n * reflected). */\n async prune(): Promise<void> {\n const now = this.now()\n const gone: string[] = []\n for (const app of new Set(this.queue.filter((e) => e.state !== `pending`).map((e) => e.appId))) {\n const rows = this.synced.get(app)\n if (!rows) continue\n const entries = this.queue.filter((e) => e.appId === app)\n const kept = new Set(outboxPrune(entries, rows as never, now).map((e) => e.writeId))\n gone.push(...entries.filter((e) => !kept.has(e.writeId)).map((e) => e.writeId))\n }\n if (gone.length === 0) return\n await this.log.remove(gone)\n this.queue = this.queue.filter((e) => !gone.includes(e.writeId))\n this.listener?.changed?.()\n }\n}\n"
8
+ ],
9
+ "mappings": "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",
10
+ "debugId": "4B8F99E4043BD1B764756E2164756E21",
11
+ "names": []
12
+ }
@@ -0,0 +1,11 @@
1
+ import {
2
+ STOPPED2,
3
+ lifecycleStep2
4
+ } from "./chunks/index-m2845dn6.js";
5
+ export {
6
+ STOPPED2 as STOPPED,
7
+ lifecycleStep2 as lifecycleStep
8
+ };
9
+
10
+ //# debugId=955508557E6A53D264756E2164756E21
11
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "955508557E6A53D264756E2164756E21",
8
+ "names": []
9
+ }
package/dist/outbox.js ADDED
@@ -0,0 +1,27 @@
1
+ import {
2
+ outboxWrites2,
3
+ outboxRequest2,
4
+ outboxRows2,
5
+ outboxOutcome2,
6
+ outboxVerb2,
7
+ outboxFlush2,
8
+ outboxReflected2,
9
+ outboxPrune2,
10
+ outboxPendingLabel2,
11
+ outboxMode2
12
+ } from "./chunks/index-v0m7r4y3.js";
13
+ export {
14
+ outboxFlush2 as outboxFlush,
15
+ outboxMode2 as outboxMode,
16
+ outboxOutcome2 as outboxOutcome,
17
+ outboxPendingLabel2 as outboxPendingLabel,
18
+ outboxPrune2 as outboxPrune,
19
+ outboxReflected2 as outboxReflected,
20
+ outboxRequest2 as outboxRequest,
21
+ outboxRows2 as outboxRows,
22
+ outboxVerb2 as outboxVerb,
23
+ outboxWrites2 as outboxWrites
24
+ };
25
+
26
+ //# debugId=8976AFB03DE36DC164756E2164756E21
27
+ //# sourceMappingURL=outbox.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "8976AFB03DE36DC164756E2164756E21",
8
+ "names": []
9
+ }
package/dist/pdf.js ADDED
@@ -0,0 +1,15 @@
1
+ import {
2
+ wrapLines2,
3
+ pdfNumber2,
4
+ pdfImage2,
5
+ renderPdf2
6
+ } from "./chunks/index-3nf9f7pv.js";
7
+ export {
8
+ pdfImage2 as pdfImage,
9
+ pdfNumber2 as pdfNumber,
10
+ renderPdf2 as renderPdf,
11
+ wrapLines2 as wrapLines
12
+ };
13
+
14
+ //# debugId=17B1C0D8E0B4B30F64756E2164756E21
15
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "17B1C0D8E0B4B30F64756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,26 @@
1
+ import {
2
+ PROVIDER_KEYS2,
3
+ FORBIDDEN_HOST_KEYS2,
4
+ NETWORK_POLICIES2,
5
+ IDENTITY_KINDS2,
6
+ AGENT_PROVIDERS2,
7
+ validateHostConfig2,
8
+ engineViewer2,
9
+ engineRecordRefusal2,
10
+ networkAllows2
11
+ } from "./chunks/index-sk8b0dh4.js";
12
+ import"./chunks/index-tvsykgcv.js";
13
+ export {
14
+ AGENT_PROVIDERS2 as AGENT_PROVIDERS,
15
+ FORBIDDEN_HOST_KEYS2 as FORBIDDEN_HOST_KEYS,
16
+ IDENTITY_KINDS2 as IDENTITY_KINDS,
17
+ NETWORK_POLICIES2 as NETWORK_POLICIES,
18
+ PROVIDER_KEYS2 as PROVIDER_KEYS,
19
+ engineRecordRefusal2 as engineRecordRefusal,
20
+ engineViewer2 as engineViewer,
21
+ networkAllows2 as networkAllows,
22
+ validateHostConfig2 as validateHostConfig
23
+ };
24
+
25
+ //# debugId=5F5960744E47C28664756E2164756E21
26
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "5F5960744E47C28664756E2164756E21",
8
+ "names": []
9
+ }
package/dist/runner.js ADDED
@@ -0,0 +1,24 @@
1
+ import {
2
+ RUNNER_COPY2,
3
+ RUNNER_BUNDLE2,
4
+ RUNNER_SHELL2,
5
+ runnerConfig2,
6
+ runnerHasPermissions2,
7
+ runnerPackage2,
8
+ runnerFailure2,
9
+ runnerToast2
10
+ } from "./chunks/index-q4zws02e.js";
11
+ import"./chunks/index-tvsykgcv.js";
12
+ export {
13
+ RUNNER_BUNDLE2 as RUNNER_BUNDLE,
14
+ RUNNER_COPY2 as RUNNER_COPY,
15
+ RUNNER_SHELL2 as RUNNER_SHELL,
16
+ runnerConfig2 as runnerConfig,
17
+ runnerFailure2 as runnerFailure,
18
+ runnerHasPermissions2 as runnerHasPermissions,
19
+ runnerPackage2 as runnerPackage,
20
+ runnerToast2 as runnerToast
21
+ };
22
+
23
+ //# debugId=9EEBA8423C6A966964756E2164756E21
24
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "9EEBA8423C6A966964756E2164756E21",
8
+ "names": []
9
+ }
package/dist/tools.js ADDED
@@ -0,0 +1,38 @@
1
+ import {
2
+ CAPABILITY_TOOLS2,
3
+ MIME_BY_EXTENSION2,
4
+ toolDef2,
5
+ nativeCaller2,
6
+ schemaViolation2,
7
+ validateToolArguments2,
8
+ base64Encode2,
9
+ base64Decode2,
10
+ sniffMime2,
11
+ mimeFor2,
12
+ newNotificationId2,
13
+ toolResult2,
14
+ toolError2,
15
+ bridgeCall2,
16
+ pdfFileName2
17
+ } from "./chunks/index-79swfbsm.js";
18
+ import"./chunks/index-3nf9f7pv.js";
19
+ export {
20
+ CAPABILITY_TOOLS2 as CAPABILITY_TOOLS,
21
+ MIME_BY_EXTENSION2 as MIME_BY_EXTENSION,
22
+ base64Decode2 as base64Decode,
23
+ base64Encode2 as base64Encode,
24
+ bridgeCall2 as bridgeCall,
25
+ mimeFor2 as mimeFor,
26
+ nativeCaller2 as nativeCaller,
27
+ newNotificationId2 as newNotificationId,
28
+ pdfFileName2 as pdfFileName,
29
+ schemaViolation2 as schemaViolation,
30
+ sniffMime2 as sniffMime,
31
+ toolDef2 as toolDef,
32
+ toolError2 as toolError,
33
+ toolResult2 as toolResult,
34
+ validateToolArguments2 as validateToolArguments
35
+ };
36
+
37
+ //# debugId=5ADEEF88343C964E64756E2164756E21
38
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "5ADEEF88343C964E64756E2164756E21",
8
+ "names": []
9
+ }