@schlenkr/ragents 0.1.19 → 0.1.20

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 (206) hide show
  1. package/apps/server/src/host-api.json +6 -2
  2. package/apps/server/src/host-api.ts +3 -2
  3. package/apps/server/src/host-web.ts +3 -0
  4. package/apps/server/src/plugin-support/actor-programs/contract.ts +0 -3
  5. package/apps/server/src/plugin-support/removed-layout.ts +94 -0
  6. package/apps/server/src/ragents/engine.ts +2 -1
  7. package/apps/server/src/title-compactor.ts +5 -7
  8. package/apps/web/dist/assets/highlighted-body-KPVGNVTW-k67VKdbw.js +1 -0
  9. package/apps/web/dist/assets/main-CVjIz7BS.js +674 -0
  10. package/apps/web/dist/help/guide-clients.html +22 -42
  11. package/apps/web/dist/help/guide-clients.md +24 -45
  12. package/apps/web/dist/help/guide-functions.html +1 -1
  13. package/apps/web/dist/help/guide-functions.md +1 -1
  14. package/apps/web/dist/help/guide-getting-started.html +14 -22
  15. package/apps/web/dist/help/guide-getting-started.md +17 -24
  16. package/apps/web/dist/help/guide-ideas.html +1 -1
  17. package/apps/web/dist/help/guide-ideas.md +1 -1
  18. package/apps/web/dist/help/guide-plugins.html +1 -1
  19. package/apps/web/dist/help/guide-plugins.md +1 -1
  20. package/apps/web/dist/help/guide-programs.html +1 -1
  21. package/apps/web/dist/help/guide-programs.md +1 -1
  22. package/apps/web/dist/help/index.html +12 -79
  23. package/apps/web/dist/help/mini-app.css +8 -502
  24. package/apps/web/dist/host-web.json +28 -23
  25. package/apps/web/dist/index.html +2 -3
  26. package/apps/web/dist/run-panel.html +3 -4
  27. package/apps/web/src/Overview.tsx +4 -143
  28. package/apps/web/src/PluginChat.tsx +22 -116
  29. package/apps/web/src/PluginRegistry.tsx +4 -9
  30. package/apps/web/src/RunPreparationChat.tsx +4 -1
  31. package/apps/web/src/host-modules.ts +2 -0
  32. package/apps/web/src/main.tsx +23 -3
  33. package/apps/web/src/panel/RunLine.tsx +5 -2
  34. package/apps/web/src/panel/RunsPage.tsx +6 -6
  35. package/apps/web/src/panel/StartPage.tsx +6 -5
  36. package/apps/web/src/panel/contract.ts +3 -0
  37. package/apps/web/src/panel/page-props.ts +2 -0
  38. package/apps/web/src/run-apps.ts +34 -0
  39. package/apps/web/src/run-overview.ts +0 -27
  40. package/apps/web/src/run-panel/PanelContributions.tsx +41 -0
  41. package/apps/web/src/run-panel/RunPanelApp.tsx +172 -91
  42. package/apps/web/src/run-panel/RunPanelMenu.tsx +4 -3
  43. package/apps/web/src/run-panel/RunPanelWorkspace.tsx +8 -2
  44. package/apps/web/src/run-panel/clipboard.ts +17 -14
  45. package/apps/web/src/run-panel/host-contract.ts +8 -9
  46. package/apps/web/src/run-panel/host.ts +5 -31
  47. package/apps/web/src/run-panel/input-bridge.ts +15 -7
  48. package/bundles/ragents.activity/ragents-bundle.json +2 -2
  49. package/bundles/ragents.actor-programs/prompt.hbs +4 -5
  50. package/bundles/ragents.actor-programs/ragents-bundle.json +4 -14
  51. package/bundles/ragents.actor-programs/server/index.js +2 -14
  52. package/bundles/ragents.actor-programs/server/index.js.map +2 -2
  53. package/bundles/ragents.actor-programs/web/classes.json +1 -1
  54. package/bundles/ragents.actor-programs/web/index.js +1 -3
  55. package/bundles/ragents.actor-programs/web/index.js.map +4 -4
  56. package/bundles/ragents.ask/ragents-bundle.json +2 -2
  57. package/bundles/ragents.browser/ragents-bundle.json +2 -2
  58. package/bundles/ragents.documents/ragents-bundle.json +2 -2
  59. package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
  60. package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
  61. package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
  62. package/bundles/ragents.model-relay/ragents-bundle.json +2 -2
  63. package/bundles/ragents.orchestration/ragents-bundle.json +15 -41
  64. package/bundles/ragents.orchestration/server/index.js +10 -249
  65. package/bundles/ragents.orchestration/server/index.js.map +4 -4
  66. package/bundles/ragents.orchestration/web/chunks/chunk-KU7O6MEX.js +2 -0
  67. package/bundles/ragents.orchestration/web/chunks/chunk-KU7O6MEX.js.map +7 -0
  68. package/bundles/ragents.orchestration/web/classes.json +1 -1
  69. package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
  70. package/bundles/ragents.orchestration/web/index.js +10 -18
  71. package/bundles/ragents.orchestration/web/index.js.map +4 -4
  72. package/bundles/ragents.overseer/ragents-bundle.json +3 -3
  73. package/bundles/ragents.overseer/server/index.js +0 -1
  74. package/bundles/ragents.overseer/server/index.js.map +2 -2
  75. package/bundles/ragents.processes/ragents-bundle.json +2 -2
  76. package/bundles/ragents.product/ragents-bundle.json +2 -2
  77. package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
  78. package/bundles/ragents.reference/ragents-bundle.json +3 -3
  79. package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +1 -1
  80. package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -2
  81. package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +6 -7
  82. package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +3 -3
  83. package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +3 -13
  84. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  85. package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +1 -6
  86. package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -15
  87. package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +1 -1
  88. package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  89. package/bundles/ragents.reference/run-scripts/quick-note/RUN.md +1 -1
  90. package/bundles/ragents.reference/run-scripts/quick-note/src/server.ts +1 -2
  91. package/bundles/ragents.reference/run-scripts/quick-note/tests/program.test.ts +0 -2
  92. package/bundles/ragents.reference/run-scripts/run-roster/RUN.md +2 -2
  93. package/bundles/ragents.reference/run-scripts/run-roster/src/server.ts +1 -2
  94. package/bundles/ragents.reference/run-scripts/run-roster/tests/program.test.ts +0 -2
  95. package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +1 -1
  96. package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  97. package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +1 -1
  98. package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +0 -1
  99. package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +1 -2
  100. package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +1 -1
  101. package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  102. package/bundles/ragents.todo/ragents-bundle.json +2 -2
  103. package/bundles/ragents.transcript/ragents-bundle.json +2 -2
  104. package/bundles/ragents.watch/ragents-bundle.json +2 -2
  105. package/bundles/ragents.workspace/ragents-bundle.json +2 -2
  106. package/package.json +8 -8
  107. package/packages/agent/dist/core/agent-settings.d.ts +1 -1
  108. package/packages/ai/dist/types.d.ts +2 -1
  109. package/packages/ragents/src/runtime/journal.ts +4 -0
  110. package/plugins/ragents.actor-programs/prompt.hbs +4 -5
  111. package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
  112. package/plugins/ragents.actor-programs/server/index.ts +0 -2
  113. package/plugins/ragents.actor-programs/server/runtime.ts +2 -10
  114. package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +5 -20
  115. package/plugins/ragents.actor-programs/web/AppsPanel.tsx +3 -79
  116. package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +0 -9
  117. package/plugins/ragents.actor-programs/web/api.ts +0 -20
  118. package/plugins/ragents.actor-programs/web/context.ts +0 -3
  119. package/plugins/ragents.actor-programs/web/index.tsx +0 -9
  120. package/plugins/ragents.orchestration/ragents-plugin.json +1 -2
  121. package/plugins/ragents.orchestration/server/index.ts +1 -11
  122. package/plugins/ragents.orchestration/web/ActorChat.tsx +1 -1
  123. package/plugins/ragents.orchestration/web/ActorChatControls.tsx +1 -1
  124. package/plugins/ragents.orchestration/web/FlowInspector.tsx +2 -4
  125. package/plugins/ragents.orchestration/web/InspectionPanel.tsx +21 -0
  126. package/plugins/ragents.orchestration/web/index.tsx +13 -9
  127. package/plugins/ragents.orchestration/web/program-slot.ts +0 -3
  128. package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +15 -36
  129. package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +76 -451
  130. package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +0 -27
  131. package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -40
  132. package/plugins/ragents.overseer/server/coordinator-prompt.ts +0 -1
  133. package/plugins/ragents.reference/examples.ts +1 -2
  134. package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +1 -1
  135. package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -2
  136. package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +6 -7
  137. package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +3 -3
  138. package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +3 -13
  139. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
  140. package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +1 -6
  141. package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -15
  142. package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +1 -1
  143. package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
  144. package/plugins/ragents.reference/run-scripts/quick-note/RUN.md +1 -1
  145. package/plugins/ragents.reference/run-scripts/quick-note/src/server.ts +1 -2
  146. package/plugins/ragents.reference/run-scripts/quick-note/tests/program.test.ts +0 -2
  147. package/plugins/ragents.reference/run-scripts/run-roster/RUN.md +2 -2
  148. package/plugins/ragents.reference/run-scripts/run-roster/src/server.ts +1 -2
  149. package/plugins/ragents.reference/run-scripts/run-roster/tests/program.test.ts +0 -2
  150. package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +1 -1
  151. package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
  152. package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +1 -1
  153. package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +0 -1
  154. package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +1 -2
  155. package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +1 -1
  156. package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
  157. package/plugins/ragents.reference/walkthroughs.ts +13 -14
  158. package/apps/web/dist/assets/highlighted-body-KPVGNVTW-BwD4uYEe.js +0 -1
  159. package/apps/web/dist/assets/main-KBrc5Q77.js +0 -11
  160. package/apps/web/dist/assets/mermaid-HWGCJPDP-CSCkaArr.js +0 -608
  161. package/apps/web/dist/assets/runPanel-BjG5NBKm.js +0 -26
  162. package/apps/web/src/App.tsx +0 -318
  163. package/apps/web/src/SessionList.tsx +0 -157
  164. package/apps/web/src/SurfaceShortcuts.tsx +0 -60
  165. package/apps/web/src/WorkspacePanel.tsx +0 -309
  166. package/apps/web/src/run-panel.tsx +0 -52
  167. package/bundles/ragents.orchestration/server/chunks/chunk-QS3WJ3D7.js +0 -11
  168. package/bundles/ragents.orchestration/server/chunks/chunk-QS3WJ3D7.js.map +0 -7
  169. package/bundles/ragents.orchestration/server/exports/server/contract.js +0 -9
  170. package/bundles/ragents.orchestration/server/exports/server/contract.js.map +0 -7
  171. package/bundles/ragents.orchestration/surface.hbs +0 -39
  172. package/bundles/ragents.orchestration/web/chunks/chunk-CFMJD5ZI.js +0 -2
  173. package/bundles/ragents.orchestration/web/chunks/chunk-CFMJD5ZI.js.map +0 -7
  174. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +0 -2
  175. package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js.map +0 -7
  176. package/bundles/ragents.orchestration/web/chunks/chunk-UCIMT2R4.js +0 -2
  177. package/bundles/ragents.orchestration/web/chunks/chunk-UCIMT2R4.js.map +0 -7
  178. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +0 -2
  179. package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +0 -7
  180. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +0 -2
  181. package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +0 -7
  182. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +0 -2
  183. package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +0 -7
  184. package/plugins/ragents.actor-programs/web/ExpandIcon.tsx +0 -5
  185. package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +0 -31
  186. package/plugins/ragents.orchestration/contract.ts +0 -51
  187. package/plugins/ragents.orchestration/server/contract.ts +0 -14
  188. package/plugins/ragents.orchestration/server/surface-tool.ts +0 -198
  189. package/plugins/ragents.orchestration/surface.hbs +0 -39
  190. package/plugins/ragents.orchestration/tiled-layout.ts +0 -55
  191. package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +0 -29
  192. package/plugins/ragents.orchestration/web/ActorShortcut.tsx +0 -74
  193. package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +0 -130
  194. package/plugins/ragents.orchestration/web/ActorTile.tsx +0 -23
  195. package/plugins/ragents.orchestration/web/Center.tsx +0 -133
  196. package/plugins/ragents.orchestration/web/SurfaceTiles.tsx +0 -47
  197. package/plugins/ragents.orchestration/web/TiledSurface.tsx +0 -280
  198. package/plugins/ragents.orchestration/web/actor-header-settings.ts +0 -41
  199. package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +0 -50
  200. package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +0 -47
  201. package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +0 -30
  202. package/plugins/ragents.orchestration/web/surface-entities.ts +0 -21
  203. package/plugins/ragents.orchestration/web/surface-view-settings.ts +0 -42
  204. package/plugins/ragents.orchestration/web/tile-docking.ts +0 -105
  205. package/plugins/ragents.orchestration/web/tiled-view-settings.ts +0 -74
  206. /package/apps/web/dist/assets/{mermaid-HWGCJPDP-BPn4aV2r.css → main-BPn4aV2r.css} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../plugins/ragents.actor-programs/server/index.ts", "../../../plugins/ragents.actor-programs/server/agent-tools.ts", "../../../plugins/ragents.actor-programs/server/methods.ts", "../../../plugins/ragents.actor-programs/server/routes.ts", "../../../plugins/ragents.actor-programs/server/runtime.ts", "../../../plugins/ragents.actor-programs/server/limits.ts", "../../../plugins/ragents.actor-programs/server/script-state.ts", "../../../plugins/ragents.actor-programs/server/capability-resolver.ts", "../../../plugins/ragents.actor-programs/server/controls-template.ts", "../../../plugins/ragents.actor-programs/server/templates.ts", "../../../plugins/ragents.actor-programs/server/test-report.ts", "../../../plugins/ragents.actor-programs/server/tool-contributor.ts", "../../../plugins/ragents.actor-programs/server/controls-tool.ts", "../../../plugins/ragents.actor-programs/server/prompts.ts", "../../../plugins/ragents.actor-programs/server/project-diagnostics.ts", "../../../plugins/ragents.actor-programs/server/access-projections.ts"],
4
- "sourcesContent": ["import path from \"node:path\";\nimport type { PluginHost, RAgentsPlugin } from \"@ragents/engine\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { runtimeProviderToken, runGuardToken } from \"@ragents/host/ragents/host-services.js\";\nimport { askServiceToken } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nimport { surfacePlacementToken } from \"@ragents/plugins/ragents.orchestration/server/contract.js\";\nimport { agentToolsFrom } from \"./agent-tools.js\";\nimport { createActorProgramMethods } from \"./methods.js\";\nimport { createMiniAppFrameRoutes, miniAppsApiPrefix } from \"./routes.js\";\nimport { ActorProgramRuntime } from \"./runtime.js\";\nimport { actorProgramManagementToolNames, actorProgramToolsAvailable, createActorProgramToolContributors } from \"./tool-contributor.js\";\nimport { createControlsToolContributor } from \"./controls-tool.js\";\nimport { actorProgramSummary } from \"./prompts.js\";\nimport { sandboxServicesToken } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { actorProgramsToken } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { createProjectDiagnostics } from \"./project-diagnostics.js\";\nimport { actorProgramAccessProjections } from \"./access-projections.js\";\nconst actorProgramsPlugin = (pluginHost: PluginHost): RAgentsPlugin => ({\n manifest: { id: \"ragents.actor-programs\" },\n register: (host) => {\n const runtime = new ActorProgramRuntime({\n runtime: host.service(runtimeProviderToken), agentToolsFor: agentToolsFrom(pluginHost), askService: () => host.service(askServiceToken), reservedToolNames: () => pluginHost.tools.describe().map((entry) => entry.name),\n serverProcessContextFor: (runId) => host.service(sandboxServicesToken).serverProcessContextFor(runId),\n operations: { operation: (id) => host.operation(id), invoke: (id, context, input) => host.invokeOperation(id, context, input), list: () => pluginHost.operations.describe() },\n directoryFor: (runId) => host.storage.session(runId, \"programs\"),\n scriptSources: (entryId, name) => {\n const script = pluginHost.startEntries.scriptPackage(entryId);\n return !script ? undefined : script.handle === name ? script.files : script.programs.find((program) => program.name === name)?.files;\n },\n sharedPackage: (name) => pluginHost.actorPackages.get(name),\n placeView: (context, runId, entity) => { host.service(surfacePlacementToken).place(context, runId, { entity }); },\n });\n host.provide(actorProgramsToken, runtime);\n const diagnostics = createProjectDiagnostics({\n workspaceFor: (runId) => runtime.workspaceDirectory(runId), check: (runId, name, actorId, signal) => runtime.check(runId, name, actorId, signal),\n applies: (runId, actorId) => {\n const view = host.service(runtimeProviderToken)().view(runId);\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return !!actor && actor.kind !== \"human\" && actorProgramToolsAvailable(actor, view) && (actor.toolNames === null || actor.toolNames.some((name) => (actorProgramManagementToolNames as readonly string[]).includes(name)));\n },\n });\n host.agentRuntime(diagnostics.contribution);\n host.clientConfig({ routePrefix: miniAppsApiPrefix });\n host.methods(...createActorProgramMethods({ ensureSession: host.service(runGuardToken), runtime }));\n host.http(...createMiniAppFrameRoutes({ ensureSession: host.service(runGuardToken), runtime }));\n host.lifecycle({ id: \"ragents.actor-programs.lifecycle\",\n initialize: () => host.service(sandboxServicesToken).registerWorkspaceRoot({ id: \"ragents.actor-programs\", alias: \"@actors\", environmentVariable: \"RAGENTS_ACTORS_DIR\", directoryFor: (runId) => runtime.workspaceDirectory(runId), ownershipDirectoryFor: async (runId) => path.dirname(await runtime.workspaceDirectory(runId)) }),\n prepareSession: ({ runId }) => runtime.prepareSession(runId), stopSession: ({ runId, signal }) => runtime.stopSession(runId, signal),\n deleteSession: async ({ runId }) => { diagnostics.forget(runId); await runtime.deleteSession(runId); }, shutdown: () => runtime.shutdown(),\n });\n host.prompts(actorProgramSummary);\n host.accessProjections(...actorProgramAccessProjections);\n host.functions(createControlsToolContributor(), ...createActorProgramToolContributors(runtime, diagnostics));\n },\n});\nexport const plugin: PluginModule = { requires: [\"ragents.orchestration\", \"ragents.ask\"], create: actorProgramsPlugin };\n", "import { ToolRegistry, type RunFunction, type ExecutableActor, type PluginHost } from \"@ragents/engine\";\nimport { runtimeProviderToken, runWorkspaceProviderToken } from \"@ragents/host/ragents/host-services.js\";\n\nexport const agentToolsFrom = (host: PluginHost) =>\n async (runId: string, actorId: string, provisional?: ExecutableActor): Promise<readonly RunFunction[]> => {\n const runtime = host.service(runtimeProviderToken)();\n const view = runtime.view(runId);\n const actor = provisional ?? view.actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\") {\n throw new Error(`${actorId} does not denote an active agent in this run.`);\n }\n const registry = new ToolRegistry();\n host.tools.entries().forEach((contributor) => registry.register(contributor));\n const workspace = await host.service(runWorkspaceProviderToken)(runId);\n const tools = await registry.resolve({\n runId,\n actorId,\n turnId: null,\n actor,\n view: provisional ? {...view,actors:[...view.actors,provisional]} : view,\n workspace: workspace.cwd,\n });\n if (actor.toolNames === null) return tools;\n const availableNames = new Set(tools.map((tool) => tool.name));\n const unknown = actor.toolNames.filter((name) => !availableNames.has(name));\n if (unknown.length > 0) {\n throw new Error(`Actor ${actorId} requires unknown tools: ${unknown.join(\", \")}.`);\n }\n const selected = new Set(actor.toolNames);\n return tools.filter((tool) => selected.has(tool.name));\n };\n", "import { DomainError, implement, type MethodContribution } from \"@ragents/engine\";\nimport { actorProgramContracts } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nconst MAX_INPUT_BYTES = 64 * 1024;\n\nexport interface ActorProgramMethodOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\nconst failed = (cause: unknown, code: string, status: number): DomainError => cause instanceof DomainError\n ? cause\n : new DomainError(code, cause instanceof Error ? cause.message : String(cause), status);\n\nconst guarded = <T>(code: string, status: number, work: () => T): T => {\n try {\n return work();\n } catch (cause) {\n throw failed(cause, code, status);\n }\n};\n\nconst checkedInput = (input: unknown): unknown => {\n if (Buffer.byteLength(JSON.stringify(input ?? null), \"utf8\") > MAX_INPUT_BYTES)\n throw new DomainError(\"input-too-large\", `The action input is larger than ${MAX_INPUT_BYTES} bytes.`, 413);\n return input;\n};\n\nexport const createActorProgramMethods = (options: ActorProgramMethodOptions): MethodContribution[] => {\n const session = (runId: string, code: string, status: number): void =>\n guarded(code, status, () => options.ensureSession(runId));\n return [\n implement(actorProgramContracts.apps, ({ runId }, { access }) => {\n session(runId, \"run-unavailable\", 400);\n return {\n apps: options.runtime.apps(runId),\n tools: access.can(\"runs.inspect\") ? options.runtime.runLocalTools(runId) : [],\n };\n }),\n implement(actorProgramContracts.source, async ({ runId, moduleId }) => {\n session(runId, \"run-unavailable\", 404);\n try {\n return await options.runtime.moduleSource(runId, moduleId);\n } catch (cause) {\n throw failed(cause, \"actor-program-unknown\", 404);\n }\n }),\n implement(actorProgramContracts.action, ({ runId, appId, revision, actionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"action-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startInvocation(runId, appId, revision, actionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.invocation, ({ runId, appId, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, appId, invocationId));\n }),\n implement(actorProgramContracts.function, ({ runId, actorHandle, revision, functionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"function-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startFunctionInvocation(runId, actorHandle, revision, functionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.functionInvocation, ({ runId, actorHandle, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, actorHandle, invocationId));\n }),\n ];\n};\n", "import { randomBytes } from \"node:crypto\";\nimport type { HttpRouteContribution } from \"@ragents/engine\";\nimport { guardedJsonRoute } from \"@ragents/host/plugin-support/http.js\";\nimport { browserInputRuntime, browserRuntimeStyles } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nexport const miniAppsApiPrefix = \"/api/plugins/ragents.actor-programs\";\n\nconst framePattern = new RegExp(`^${miniAppsApiPrefix.replaceAll(\".\", \"\\\\.\")}\\/runs\\/([A-Za-z0-9_-]{1,64})\\/apps\\/([a-z][a-z0-9_-]{0,129})\\/frame$`);\n\nconst escapeForwarder = `\n window.addEventListener(\"keydown\", (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n queueMicrotask(() => {\n if (!event.defaultPrevented) parent.postMessage({ type: \"ragents.app.escape\", version: 1, token: bridgeToken, keyboard: ragentsInputBridge.keyboardMessage(event, \"keydown\") }, \"*\");\n });\n });`;\n\nconst themeReceiver = `\n const applyHostTheme = (theme) => {\n if (theme !== \"light\" && theme !== \"dark\") throw new Error(\"The host theme must be light or dark.\");\n document.documentElement.dataset.theme = theme;\n };`;\n\n// The ancestors cover the browser and the VS Code webviews (desktop: vscode-file and vscode-cdn.net, older versions: vscode-webview).\nexport const frameContentSecurityPolicy = (nonce: string): string =>\n `sandbox allow-scripts allow-forms allow-downloads; default-src 'none'; script-src 'nonce-${nonce}'; style-src 'nonce-${nonce}'; img-src 'self' data: blob:; font-src data:; connect-src 'none'; media-src 'self' data: blob:; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self' https://*.vscode-cdn.net vscode-file: vscode-webview:`;\n\nconst escapedScript = (source: string): string => source.replace(/<\\/script/gi, \"<\\\\/script\");\n\nconst typedBridgeSdk = (nonce: string, styles: string): string => `<script nonce=\"${nonce}\">\n${escapedScript(browserInputRuntime)}\nglobalThis.__ragentsAppContext = (() => {\n document.documentElement.dataset.uiSurface = \"mini-app\";\n document.documentElement.dataset.miniAppFrame = \"true\";\n const style = document.createElement(\"style\");\n style.setAttribute(\"nonce\", ${JSON.stringify(nonce)});\n style.textContent = atob(${JSON.stringify(Buffer.from(styles, \"utf8\").toString(\"base64\"))});\n document.head.prepend(style);\n const pending = new Map();\n const listeners = new Set();\n const chats = new Map();\n const freeze = (value) => {\n if (value && typeof value === \"object\") {\n Object.values(value).forEach(freeze);\n Object.freeze(value);\n }\n return value;\n };\n const bridgeToken = new URLSearchParams(location.hash.slice(1)).get(\"ragentsBridge\");\n ${escapeForwarder}\n ${themeReceiver}\n const channel = new MessageChannel();\n const port = channel.port1;\n let currentState = freeze({});\n let currentApp = null;\n let readyResolve;\n const ready = new Promise((resolve) => { readyResolve = resolve; });\n const terminal = new Set([\"succeeded\", \"failed\", \"cancelled\"]);\n const requestId = () => crypto.randomUUID().replaceAll(\"-\", \"\");\n const stateValue = (value) => value && typeof value === \"object\" && value.values && typeof value.values === \"object\"\n ? freeze(structuredClone(value.values))\n : freeze({});\n const settle = (message) => {\n const id = message.requestId || message.invocation?.requestId;\n const waiter = id ? pending.get(id) : undefined;\n if (!waiter || !terminal.has(message.invocation.status)) return;\n pending.delete(id);\n if (message.invocation.status === \"succeeded\") waiter.resolve(message.invocation.result);\n else waiter.reject(new Error(message.invocation.error || \"The app action was not completed.\"));\n };\n port.onmessage = ({ data }) => {\n if (data?.version !== 1) return;\n if (data.type === \"ragents.app.ready\") {\n applyHostTheme(data.theme);\n if (data.hostInput === true) {\n const disposeInput = ragentsInputBridge.installFrameInputBridge(window, port);\n window.addEventListener(\"pagehide\", disposeInput, { once: true });\n }\n currentApp = data.app;\n currentState = stateValue(data.state);\n listeners.forEach((listener) => listener(currentState));\n readyResolve();\n port.postMessage({ type: \"ragents.app.connected\", version: 1 });\n } else if (data.type === \"ragents.app.theme\") {\n applyHostTheme(data.theme);\n } else if (data.type === \"ragents.app.state\") {\n currentState = stateValue(data.state);\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.resolve(currentState);\n }\n listeners.forEach((listener) => listener(currentState));\n } else if (data.type === \"ragents.app.invocation\") {\n settle(data);\n } else if (data.type === \"ragents.app.chat-state\") {\n const entry = chats.get(data.actor);\n if (entry) {\n entry.snapshot = freeze(data.snapshot);\n entry.listeners.forEach((listener) => listener());\n }\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.chat-ack\") {\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.error\") {\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.reject(new Error(data.message));\n }\n }\n };\n port.start();\n const send = async (message) => {\n await ready;\n return new Promise((resolve, reject) => {\n pending.set(message.requestId, { resolve, reject });\n port.postMessage(message);\n });\n };\n if (/^[a-f0-9]{32}$/.test(bridgeToken || \"\")) {\n parent.postMessage(\n { type: \"ragents.app.frame-ready\", version: 1, token: bridgeToken },\n \"*\",\n [channel.port2],\n );\n }\n return Object.freeze({\n get actor() { if (!currentApp) throw new Error(\"The actor view is not ready yet.\"); return Object.freeze({id:currentApp.actorId,handle:currentApp.actorHandle}); },\n ready: ready.then(() => undefined),\n run: Object.freeze({ id: \"current\" }),\n principal: Object.freeze({ id: \"operator\", kind: \"operator\" }),\n state: Object.freeze({\n read: () => currentState,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n }),\n chat: Object.freeze({\n read: (actor) => chats.get(actor)?.snapshot,\n subscribe: (actor, listener) => {\n let entry = chats.get(actor);\n if (!entry) {\n entry = { listeners: new Set(), snapshot: undefined, started: false };\n chats.set(actor, entry);\n ready.then(() => {\n if (chats.get(actor) !== entry) return;\n entry.started = true;\n send({ type: \"ragents.app.chat-watch\", version: 1, requestId: requestId(), actor })\n .catch((error) => {\n if (chats.get(actor) !== entry) return;\n entry.snapshot = freeze({ messages: [], running: false, error: error.message });\n entry.listeners.forEach((notify) => notify());\n });\n });\n }\n entry.listeners.add(listener);\n return () => {\n entry.listeners.delete(listener);\n if (entry.listeners.size > 0 || chats.get(actor) !== entry) return;\n chats.delete(actor);\n if (entry.started) {\n port.postMessage({ type: \"ragents.app.chat-unwatch\", version: 1, requestId: requestId(), actor });\n }\n };\n },\n send: (actor, text, attachments) => send({ type: \"ragents.app.chat-send\", version: 1, requestId: requestId(), actor, text, attachments }),\n }),\n capabilities: Object.freeze({\n list: () => (currentApp?.actions ?? []).map((action) => action.id),\n call: async (actionId, input = {}) => {\n await ready;\n if (!(currentApp?.actions ?? []).some((action) => action.id === actionId)) {\n throw new Error(\"The requested app action is not installed.\");\n }\n return send({\n type: \"ragents.app.invoke\",\n version: 1,\n requestId: requestId(),\n actionId,\n input,\n });\n },\n }),\n });\n})();\n</script>`;\n\nexport const frameHtml = (\n frame: ReturnType<ActorProgramRuntime[\"frame\"]>,\n nonce: string,\n): string => {\n const head = /<head(?:\\s[^>]*)?>/i;\n if (!head.test(frame.html)) throw new Error(\"The installed app has no valid head.\");\n const client = `<script nonce=\"${nonce}\" type=\"module\">await globalThis.__ragentsAppContext.ready;${escapedScript(frame.clientJavaScript)}</script>`;\n return frame.html.replace(head, (value) => `${value}${typedBridgeSdk(nonce, `${browserRuntimeStyles}\\n${frame.styles}`)}${client}`);\n};\n\nexport interface MiniAppFrameOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\n/** The plugin's only delivery route: the HTML of the mini-app frame; everything else is methods. */\nexport const createMiniAppFrameRoutes = (options: MiniAppFrameOptions): HttpRouteContribution[] => [\n {\n id: \"ragents.actor-programs.frame\",\n isApiPath: (pathname) => pathname.startsWith(miniAppsApiPrefix),\n matches: (request, url) => request.method === \"GET\" && framePattern.test(url.pathname),\n handle: async ({ request, response, url }) => {\n const match = url.pathname.match(framePattern);\n if (!match) throw new Error(\"Invalid app route.\");\n const [, runId, appId] = match;\n await guardedJsonRoute({\n request,\n response,\n ensureSession: () => options.ensureSession(runId!),\n errorStatus: 404,\n handle: () => {\n const revision = url.searchParams.get(\"revision\") ?? \"\";\n const nonce = randomBytes(18).toString(\"base64\");\n const frame = options.runtime.frame(runId!, appId!, revision);\n const content = Buffer.from(frameHtml(frame, nonce), \"utf8\");\n response.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Security-Policy\": frameContentSecurityPolicy(nonce),\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Content-Length\": content.byteLength,\n \"Referrer-Policy\": \"no-referrer\",\n \"X-Content-Type-Options\": \"nosniff\",\n });\n response.end(content);\n },\n });\n },\n },\n];\n", "import { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, readdir, readFile, realpath, rm, writeFile } from \"node:fs/promises\";\nimport { lstatSync, readFileSync, renameSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport { Type, type TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport { actorByHandle, actorDescriptionMaxLength, agentTools, assertJsonValue, canonicalHash, defineRunFunction, defineToolAvailability, emptyUsage, handleKey, inheritedGrants, runCapabilityContractHash, scriptInputOf, schemaComplaints, type Actor, type ActorProgramExecutor, type RunFunction, type CommandContext, type ExecutableActor, type JsonValue, type Orchestration, type PluginContext, type RunCapabilityDescriptor, type RunView, type TurnRequest, type TurnResult, } from \"@ragents/engine\";\nimport { ACTOR_PROGRAMS_STATE_ID, ACTOR_INVOCATIONS_STATE_ID, ACTOR_SCRIPT_STATE_ID, ACTOR_STATE_ID, resolveActorView, type ActorDataState, type ActorFunctionDefinition, type ActorFunctionInvocation, type ActorPackageOrigin, type ActorProgramDefinition, type ActorProgramIdentity, type ActorProgramState, type ActorScriptDelivery, type ActorScriptPackage, type ActorScriptState, type ActorViewListing, } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActivatedActorProgram, ActorProgramSource, ActorProgramsService, RunScriptSources, RunScriptStartInput } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { jsonValue, jsonBytes, MAX_INVOCATIONS_STATE_BYTES } from \"./limits.js\";\nimport { agentResultText, finishesOf, MAX_OPEN_STARTS, scriptResultContent, scriptStateOf, type ScriptFinish } from \"./script-state.js\";\nimport { agentCapabilityBinding, operatorCapabilityBinding } from \"./capability-resolver.js\";\nimport type { ActorOperationPort } from \"./operations.js\";\nimport { compileClientProject, installClientSdk } from \"@ragents/host/plugin-support/actor-programs/client-compiler.js\";\nimport { compileAppBackend, installServerSdk, packageIdentity, prepareAppProject, prepareAppWorkspace, projectSourceFiles, readAppPackage, typecheckServerProject, type AppContract } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { syncWorkspaceOwnership } from \"@ragents/host/plugin-support/workspace-ownership.js\";\nimport { runManagedProcess, sandboxedLaunch, type WorkspaceProcessContext } from \"@ragents/workspace-executor\";\nimport { runModuleTemplates, templateById, templateFiles } from \"./templates.js\";\nimport { createTestReport, testReporterArgument } from \"./test-report.js\";\nimport { FRAME_BODY_CLASS, FRAME_DOCUMENT_CLASS, FRAME_ROOT_CLASS } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport { buildTailwind } from \"@ragents/host/plugin-support/actor-programs/tailwind.js\";\nimport type { AskService } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nconst NAME = /^[a-z][a-z0-9-]{0,63}$/;\nconst errorText = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst maxShownComplaints = 10;\nconst maxComplaintLength = 240;\n/** A failed check names the count and the first complaints; `lines` keeps all of them for actor_program_diagnostics. */\nconst checkFailure = (title: string, lines: readonly string[], fallback: string): Error => {\n const all = [...new Set(lines.map((line) => line.trim()).filter((line) => line !== \"\"))];\n if (all.length === 0)\n return new Error(fallback);\n const shown = all.slice(0, maxShownComplaints).map((line) => line.length > maxComplaintLength ? `${line.slice(0, maxComplaintLength - 3)}...` : line);\n const omitted = all.length - shown.length;\n return Object.assign(new Error([\n `${title}: ${all.length} errors.`,\n ...shown,\n ...(omitted > 0 ? [`... and ${omitted} more; all with actor_program_diagnostics.`] : []),\n ].join(\"\\n\")), { lines: all });\n};\nconst actorDescriptionOf = (text: string | undefined): string | undefined => {\n const line = (text ?? \"\").replace(/\\s+/g, \" \").trim();\n return line.length <= actorDescriptionMaxLength ? line || undefined : `${line.slice(0, actorDescriptionMaxLength - 3).trimEnd()}...`;\n};\nconst exposed = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"Published function of an active actor in the run.\" }, () => true);\nconst objectSchema = { type: \"object\", additionalProperties: true };\nconst checked = (schema: object, value: unknown, label: string): JsonValue => {\n const result = jsonValue(value, label);\n if (!Value.Check(schema as TSchema, result))\n throw new Error(`${label}: ${schemaComplaints(schema as TSchema, result)}`);\n return result;\n};\nconst safePath = (name: string): string => {\n if (!name || path.isAbsolute(name) || name.includes(\"\\\\\") || name.includes(\"\\0\") || name.split(\"/\").some((part) => !part || part === \".\" || part === \"..\"))\n throw new Error(`Invalid package path ${name}.`);\n return name;\n};\nconst inside = async (directory: string, relative: string): Promise<string> => {\n const root = await realpath(directory);\n const file = await realpath(path.join(root, safePath(relative)));\n if (!file.startsWith(`${root}${path.sep}`))\n throw new Error(`Package path ${relative} is outside the package.`);\n const stat = await lstat(file);\n if (!stat.isFile() || stat.size > 2000000)\n throw new Error(`Invalid or too large package file ${relative}.`);\n return readFile(file, \"utf8\");\n};\nconst occupied = (file: string): boolean => {\n try {\n lstatSync(file);\n return true;\n }\n catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\")\n return false;\n throw error;\n }\n};\nconst packageExists = (name: string): Error => new Error(`The package ${name} already exists.`);\n// Check and rename synchronously one after the other, because rename silently replaces an empty target folder.\nconst commitPackage = (staged: string, directory: string, name: string): void => {\n if (occupied(directory))\n throw packageExists(name);\n try {\n renameSync(staged, directory);\n }\n catch (error) {\n if ([\"EEXIST\", \"ENOTEMPTY\", \"ENOTDIR\"].includes((error as NodeJS.ErrnoException).code ?? \"\"))\n throw packageExists(name);\n throw error;\n }\n};\nconst sameSources = async (directory: string, files: readonly ActorProgramSource[]): Promise<boolean> =>\n packageIdentity(await projectSourceFiles(directory)) === packageIdentity(files);\nconst sameOrigin = (left: ActorPackageOrigin, right: ActorPackageOrigin): boolean =>\n left.kind === \"script\" ? right.kind === \"script\" && left.entryId === right.entryId : right.kind === \"shared\" && left.pluginId === right.pluginId;\nconst originText = (origin: ActorPackageOrigin | undefined): string =>\n !origin ? \"that no run script installed\" : origin.kind === \"script\" ? `from the run script ${origin.entryId}` : `shared by ${origin.pluginId}`;\n/** A package the host installs for a run script, with the origin it records. */\ninterface OriginPackage { name: string; files: readonly ActorProgramSource[]; origin: ActorPackageOrigin }\n/** What a claim wrote for a name and what it replaced; a release restores only a record nobody changed since. */\ninterface Claim { name: string; claimed: ActorScriptPackage; previous: ActorScriptPackage | undefined }\n/** A name reserved by a shared package that the run holds for something else. */\nconst foreignShared = (name: string, pluginId: string, record: ActorScriptPackage | undefined): Error => {\n const holder = !record ? \"that the host did not install\" : sameOrigin(record.origin, { kind: \"shared\", pluginId }) ? \"that was changed in the run\" : originText(record.origin);\n return new Error(`${name} is the shared actor package of ${pluginId}, but this run has a package ${name} ${holder}; the host neither uses nor replaces it. Remove or rename that package.`);\n};\nconst descriptor = (tool: RunFunction): RunCapabilityDescriptor => ({ id: tool.name, label: tool.label, description: tool.description, schema: tool.schema, resultSchema: tool.resultSchema });\ninterface BackendBinding {\n id: string;\n kind: \"tool\" | \"app-action\" | \"input\";\n principal: {\n id: string;\n kind: \"agent\" | \"script\" | \"operator\";\n };\n output?: string[];\n descriptorsFor: (capabilityIds: readonly string[]) => readonly RunCapabilityDescriptor[];\n call: (name: string, input: JsonValue, index: number) => Promise<JsonValue>;\n}\ninterface CapabilityContract {\n capabilityIds: string[];\n capabilityContractHash: string;\n}\ninterface InvocationState {\n version: 1;\n invocations: ActorFunctionInvocation[];\n requestIds: string[];\n}\ninterface CompiledProgram {\n directory: string;\n files: ActorProgramSource[];\n definition: ActorProgramDefinition;\n backendJavaScript?: string;\n frameStyles: string;\n clients: {\n file: string;\n javaScript: string;\n }[];\n createActor: boolean;\n}\nexport interface ActorProgramRuntimeOptions {\n runtime: () => Orchestration;\n agentToolsFor: (runId: string, actorId: string, provisional?: ExecutableActor) => Promise<readonly RunFunction[]>;\n askService: () => AskService;\n reservedToolNames: () => readonly string[];\n /** Programs, tests, and builds run on the server, even with a workspace on a workstation. */\n serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;\n operations: ActorOperationPort;\n directoryFor: (runId: string) => string;\n scriptSources: (entryId: string, name: string) => readonly ActorProgramSource[] | undefined;\n /** A shared actor package of the profile, by name. */\n sharedPackage: (name: string) => { pluginId: string; files: readonly ActorProgramSource[] } | undefined;\n /** Places a surface entity next to the run's layout unless the layout already shows it. */\n placeView: (context: CommandContext, runId: string, entity: string) => void;\n}\ntype Recognized = { start: JsonValue } | { result: JsonValue };\nexport class ActorProgramRuntime implements ActorProgramsService, ActorProgramExecutor {\n readonly #options: ActorProgramRuntimeOptions;\n readonly #queues = new Map<string, Promise<void>>();\n readonly #active = new Map<string, {\n runId: string;\n actorId: string;\n controller: AbortController;\n completed: Promise<unknown>;\n }>();\n readonly #installing = new Set<string>();\n readonly #creating = new Set<string>();\n readonly #staged = new Set<string>();\n readonly #removing = new Set<string>();\n readonly #knownRuns = new Set<string>();\n readonly #recovered = new Set<string>();\n readonly #packageLocks = new Map<string, Promise<void>>();\n readonly #identities = new Map<string, string>();\n readonly #epochs = new Map<string, number>();\n readonly #stopping = new Set<string>();\n #shuttingDown = false;\n constructor(options: ActorProgramRuntimeOptions) { this.#options = options; }\n runtime(): Orchestration { return this.#options.runtime(); }\n view(runId: string): RunView { return this.runtime().view(runId); }\n ownerId(runId: string): string { return this.runtime().state(runId).ownerId; }\n operatorContext(runId: string, label = \"operation\"): CommandContext { return { actorId: this.ownerId(runId), commandId: `actor-program:${label}:${randomUUID()}` }; }\n programsOf(view: RunView): ActorProgramDefinition[] {\n return view.pluginStates.flatMap((entry) => {\n if (entry.pluginId !== ACTOR_PROGRAMS_STATE_ID || entry.scope.kind !== \"actor\")\n return [];\n const state = entry.state as unknown as ActorProgramState;\n const actorId = entry.scope.actorId;\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return state.program && actor && actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\" ? [state.program] : [];\n });\n }\n programs(runId: string): ActorProgramDefinition[] { return this.runtime().listRuns().some(run => run.id === runId) ? this.programsOf(this.view(runId)) : []; }\n actor(runId: string, actorId: string): ExecutableActor {\n const actor = this.view(runId).actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\")\n throw new Error(\"The actor is not active.\");\n if (this.#removing.has(`${runId}\\0${actorId}`))\n throw new Error(\"The actor package is being removed.\");\n return actor;\n }\n resolveActor(runId: string, callerId: string, reference: string): ExecutableActor {\n const actors = this.view(runId).actors;\n const found = reference === \"self\" ? actors.find((candidate) => candidate.id === callerId) : actorByHandle(actors, reference);\n if (!found)\n throw new Error(`Actor ${reference} is unknown.`);\n return this.actor(runId, found.id);\n }\n data(runId: string, actorId: string): ActorDataState {\n const view = this.view(runId);\n const entry = view.pluginStates.find((item) => item.pluginId === ACTOR_STATE_ID && item.scope.kind === \"actor\" && item.scope.actorId === actorId);\n const revision = this.runtime().events(runId).filter((event) => (event.type === \"plugin.state-replaced\" || event.type === \"plugin.state-patched\") && event.payload.pluginId === ACTOR_STATE_ID && event.payload.scope.kind === \"actor\" && event.payload.scope.actorId === actorId).at(-1)?.sequence ?? 0;\n return { version: 1, revision, values: (entry?.state ?? {}) as Record<string, unknown> };\n }\n #writeProgram(context: CommandContext, runId: string, actorId: string, program: ActorProgramDefinition | null): void {\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_PROGRAMS_STATE_ID, scope: { kind: \"actor\", actorId }, state: jsonValue({ version: 1, program }, \"Actor program\") });\n }\n /** Which run script installed which package, and the inputs the host queued for programs to recognize. */\n #script(runId: string): ActorScriptState {\n return scriptStateOf(this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === \"run\")?.state);\n }\n /** Keeps only deliveries whose input is still queued or being processed, and `keep`, whose input follows right after this write. */\n #writeScript(runId: string, state: ActorScriptState, keep?: string): void {\n const live = this.#liveCommands(runId, new Set(state.deliveries.map((delivery) => delivery.actorId)));\n const deliveries = state.deliveries.filter((delivery) => delivery.commandId === keep || live.has(delivery.commandId));\n this.runtime().replacePluginState(this.operatorContext(runId, \"script\"), runId, { pluginId: ACTOR_SCRIPT_STATE_ID, scope: { kind: \"run\" }, state: jsonValue({ ...state, deliveries }, \"Run script state\") });\n }\n /** The commands that queued inputs of these actors which are pending or belong to a running turn. */\n #liveCommands(runId: string, actorIds: ReadonlySet<string>): Set<string> {\n const view = this.view(runId);\n const running = new Set(view.turns.filter((turn) => turn.status === \"running\").map((turn) => turn.id));\n const sequences = new Set(view.inputs.filter((input) => actorIds.has(input.actorId)\n && (input.lifecycle.kind === \"pending\" || input.lifecycle.kind === \"claimed\" && running.has(input.lifecycle.turnId))).map((input) => input.sequence));\n const commands = new Set<string>();\n if (sequences.size === 0)\n return commands;\n const oldest = Math.min(...sequences);\n for (const event of this.runtime().recentEvents(runId)) {\n if (event.sequence < oldest)\n break;\n if (sequences.has(event.sequence))\n commands.add(event.commandId);\n }\n return commands;\n }\n #commandOf(runId: string, sequence: number): string | undefined {\n for (const event of this.runtime().recentEvents(runId)) {\n if (event.sequence === sequence)\n return event.commandId;\n if (event.sequence < sequence)\n return undefined;\n }\n return undefined;\n }\n async #writeSources(directory: string, files: readonly ActorProgramSource[]): Promise<void> {\n for (const source of files) {\n const file = path.join(directory, safePath(source.path));\n if (source.path.split(\"/\").includes(\"node_modules\"))\n throw new Error(\"Package sources must not overwrite dependencies.\");\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content, { flag: \"wx\" });\n }\n }\n #originSources(name: string, origin: ActorPackageOrigin): readonly ActorProgramSource[] | undefined {\n if (origin.kind === \"script\")\n return this.#options.scriptSources(origin.entryId, name);\n const shared = this.#options.sharedPackage(name);\n return shared?.pluginId === origin.pluginId ? shared.files : undefined;\n }\n /** The identity of the sources the program was built from; a build never changes, so it is read once. */\n #identityOf(program: ActorProgramDefinition): string {\n const known = this.#identities.get(program.directory);\n if (known !== undefined)\n return known;\n const identity = packageIdentity(JSON.parse(readFileSync(path.join(program.directory, \"sources.json\"), \"utf8\")) as ActorProgramSource[]);\n this.#identities.set(program.directory, identity);\n return identity;\n }\n /** A package still built from what its origin installed reloads from the origin's current sources; one changed in the run keeps its own. */\n #refresh(runId: string, program: ActorProgramDefinition, signal: AbortSignal): Promise<void> {\n return this.#withPackages(runId, [program.name], () => this.#reload(runId, program, signal));\n }\n async #reload(runId: string, program: ActorProgramDefinition, signal: AbortSignal): Promise<void> {\n const record = this.#script(runId).packages[program.name];\n const files = record && this.#identityOf(program) === record.identity ? this.#originSources(program.name, record.origin) : undefined;\n if (record && files) {\n const state = this.#script(runId);\n this.#writeScript(runId, { ...state, packages: { ...state.packages, [program.name]: { ...state.packages[program.name]!, identity: packageIdentity(files) } } });\n const directory = path.join(await this.workspaceDirectory(runId), program.name);\n for (const entry of await readdir(directory))\n if (entry !== \"node_modules\")\n await rm(path.join(directory, entry), { recursive: true, force: true });\n await this.#writeSources(directory, files);\n }\n try {\n await this.#activate(this.operatorContext(runId, \"refresh\"), runId, program.name, false, signal);\n }\n catch (error) {\n throw new Error(`The capability contract of ${program.name} has changed and the reactivation failed: ${errorText(error)}`);\n }\n }\n async #bound<T extends CapabilityContract>(runId: string, actorId: string, revision: string | undefined, signal: AbortSignal, contractOf: (program: ActorProgramDefinition) => T, descriptorsFor: BackendBinding[\"descriptorsFor\"]): Promise<{ program: ActorProgramDefinition; contract: T; descriptors: readonly RunCapabilityDescriptor[] }> {\n const current = () => {\n const program = this.programs(runId).find((entry) => entry.actorId === actorId);\n if (!program)\n throw new Error(\"The actor has no active program.\");\n return program;\n };\n const bind = (program: ActorProgramDefinition) => {\n const contract = contractOf(program);\n const descriptors = descriptorsFor(contract.capabilityIds);\n return { program, contract, descriptors, drifted: runCapabilityContractHash(descriptors) !== contract.capabilityContractHash };\n };\n const program = current();\n if (revision !== undefined && program.revision !== revision)\n throw new Error(\"The actor package was replaced.\");\n const bound = bind(program);\n if (!bound.drifted)\n return bound;\n await this.#refresh(runId, program, signal);\n const refreshed = bind(current());\n if (refreshed.drifted)\n throw new Error(`The capability contract of ${program.name} still differs after the reactivation.`);\n return refreshed;\n }\n async #acquire(key: string): Promise<() => void> {\n const previous = this.#packageLocks.get(key) ?? Promise.resolve();\n const released = Promise.withResolvers<void>();\n const held = previous.then(() => released.promise);\n this.#packageLocks.set(key, held);\n await previous;\n return () => {\n released.resolve();\n if (this.#packageLocks.get(key) === held)\n this.#packageLocks.delete(key);\n };\n }\n /** One exclusion per run and package name for creating, activating, installing and ensuring; callers wait instead of failing. */\n async #withPackages<T>(runId: string, names: readonly string[], work: () => Promise<T>): Promise<T> {\n const releases: (() => void)[] = [];\n try {\n for (const name of [...new Set(names)].sort())\n releases.push(await this.#acquire(`${runId}\\0${name}`));\n return await work();\n }\n finally {\n for (const release of releases.reverse())\n release();\n }\n }\n async workspaceDirectory(runId: string): Promise<string> { this.#knownRuns.add(runId); return prepareAppWorkspace(path.join(this.#options.directoryFor(runId), \"actor-workspace\")); }\n templates() { return runModuleTemplates.map(({ id, title, description }) => ({ id, title, description })); }\n async #create<T>(runId: string, name: string, build: (directory: string) => Promise<T>): Promise<{ directory: string; built: T }> {\n this.#assertName(name);\n const actors = await this.workspaceDirectory(runId);\n const directory = path.join(actors, name);\n const key = `${runId}\\0${name}`;\n if (this.#creating.has(key))\n throw new Error(`The package ${name} is being created.`);\n if (occupied(directory))\n throw packageExists(name);\n this.#creating.add(key);\n const staging = path.join(path.dirname(actors), \".staging\");\n const staged = path.join(staging, `${name}-${randomUUID()}`);\n this.#staged.add(staged);\n try {\n await mkdir(staging, { recursive: true });\n for (const entry of await readdir(staging))\n if (!this.#staged.has(path.join(staging, entry)))\n await rm(path.join(staging, entry), { recursive: true, force: true });\n await mkdir(staged);\n const built = await build(staged);\n commitPackage(staged, directory, name);\n return { directory, built };\n }\n finally {\n this.#creating.delete(key);\n this.#staged.delete(staged);\n await rm(staged, { recursive: true, force: true });\n }\n }\n scaffold(runId: string, name: string, templateId: string) {\n return this.#withPackages(runId, [name], () => this.#scaffold(runId, name, templateId));\n }\n async #scaffold(runId: string, name: string, templateId: string) {\n const sources = Object.entries(templateFiles(templateById(templateId), name)).map(([file, content]) => ({ path: file, content }));\n const { built: files } = await this.#create(runId, name, async (directory) => {\n await this.#writeSources(directory, sources);\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor }) : undefined;\n await installClientSdk(directory, { stateSchema: backend?.contract.state ?? objectSchema, actions: Object.entries(backend?.contract.functions ?? {}).map(([id, fn]) => ({ id, inputSchema: fn.input, resultSchema: fn.output })) });\n return (await projectSourceFiles(directory)).map((file) => file.path);\n });\n return { name, directory: `@actors/${name}`, files };\n }\n importPackage(context: CommandContext, runId: string, name: string, files: readonly ActorProgramSource[], signal?: AbortSignal): Promise<ActivatedActorProgram> {\n return this.#withPackages(runId, [name], () => this.#import(context, runId, name, files, signal));\n }\n async #import(context: CommandContext, runId: string, name: string, files: readonly ActorProgramSource[], signal?: AbortSignal): Promise<ActivatedActorProgram> {\n const { directory } = await this.#create(runId, name, (staged) => this.#writeSources(staged, files));\n try {\n await this.#activate(context, runId, name, true, signal);\n return this.#activated(runId, name);\n }\n catch (error) {\n await rm(directory, { recursive: true, force: true });\n throw error;\n }\n }\n #activated(runId: string, name: string): ActivatedActorProgram {\n const program = this.#program(runId, name);\n return { name, actorId: program.actorId, actorHandle: program.actorHandle, views: program.views.length };\n }\n installScript(context: CommandContext, runId: string, script: RunScriptSources, signal?: AbortSignal): Promise<ActivatedActorProgram> {\n return this.#withPackages(runId, [script.handle, ...script.programs.map((program) => program.name), ...script.sharedPrograms], () => this.#install(context, runId, script, signal));\n }\n async #install(context: CommandContext, runId: string, script: RunScriptSources, signal?: AbortSignal): Promise<ActivatedActorProgram> {\n const root = await this.workspaceDirectory(runId);\n const before = this.#script(runId).packages;\n const own: ActorPackageOrigin = { kind: \"script\", entryId: script.entryId };\n const programs: OriginPackage[] = [\n ...script.programs.map((program) => ({ ...program, origin: own })),\n ...script.sharedPrograms.map((name) => {\n const shared = this.#options.sharedPackage(name);\n if (!shared)\n throw new Error(`The run script ${script.entryId} needs the shared actor package ${name}, which no plugin of this profile provides.`);\n return { name, files: shared.files, origin: { kind: \"shared\", pluginId: shared.pluginId } as const };\n }),\n ];\n const present = await this.#presentPrograms(root, script.entryId, programs, before);\n const reuse = this.#reusesScript(runId, root, script, before);\n const missing = programs.filter((program) => !present.has(program.name));\n const claims = this.#claim(runId, [...missing, ...(reuse ? [] : [{ name: script.handle, files: script.files, origin: own }])]);\n const copied: string[] = [];\n try {\n for (const program of missing) {\n signal?.throwIfAborted();\n await this.#create(runId, program.name, (staged) => this.#writeSources(staged, program.files));\n copied.push(program.name);\n }\n return reuse ? await this.#restartScript(context, runId, script.handle, signal) : await this.#import(context, runId, script.handle, script.files, signal);\n }\n catch (error) {\n for (const name of copied)\n await rm(path.join(root, name), { recursive: true, force: true });\n try {\n this.#release(runId, claims);\n }\n catch (release) {\n throw new Error(`${errorText(error)} The ownership record could not be removed again (${errorText(release)}); it names no package and the next start replaces it.`);\n }\n throw error;\n }\n }\n /** Ownership is recorded before anything is created, so no package the host installs exists without its origin. */\n #claim(runId: string, packages: readonly OriginPackage[]): readonly Claim[] {\n const state = this.#script(runId);\n const claims = packages.map((entry): Claim => {\n const previous = state.packages[entry.name];\n return { name: entry.name, previous, claimed: { origin: entry.origin, identity: packageIdentity(entry.files), count: previous && sameOrigin(previous.origin, entry.origin) ? previous.count : 0, open: [] } };\n });\n if (claims.length > 0)\n this.#writeScript(runId, { ...state, packages: { ...state.packages, ...Object.fromEntries(claims.map((claim) => [claim.name, claim.claimed])) } });\n return claims;\n }\n /** Compare and swap: a record someone changed since the claim stays as it is. */\n #release(runId: string, claims: readonly Claim[]): void {\n const state = this.#script(runId);\n const released = claims.filter((claim) => isDeepStrictEqual(state.packages[claim.name], claim.claimed));\n if (released.length === 0)\n return;\n const names = new Set(released.map((claim) => claim.name));\n const kept = Object.entries(state.packages).filter(([name]) => !names.has(name));\n const restored = released.flatMap((claim) => claim.previous ? [[claim.name, claim.previous] as const] : []);\n this.#writeScript(runId, { ...state, packages: Object.fromEntries([...kept, ...restored]) });\n }\n /** Whether the host installed this shared package from this plugin and nobody changed it since. */\n #hostShared(record: ActorScriptPackage | undefined, pluginId: string, identity: string): boolean {\n return record !== undefined && sameOrigin(record.origin, { kind: \"shared\", pluginId }) && record.identity === identity;\n }\n /** The names already in the run that the start keeps; a different package, or one under a shared name the host did not install, is an error before anything is copied. */\n async #presentPrograms(root: string, entryId: string, programs: readonly OriginPackage[], packages: Readonly<Record<string, ActorScriptPackage>>): Promise<ReadonlySet<string>> {\n const present = await Promise.all(programs.map(async (program) => {\n const directory = path.join(root, program.name);\n if (!occupied(directory))\n return false;\n if (program.origin.kind === \"shared\") {\n if (this.#hostShared(packages[program.name], program.origin.pluginId, packageIdentity(await projectSourceFiles(directory))))\n return true;\n throw foreignShared(program.name, program.origin.pluginId, packages[program.name]);\n }\n if (await sameSources(directory, program.files))\n return true;\n throw new Error(`The run script ${entryId} bundles the program ${program.name}, but this run already has a different package ${program.name} ${originText(packages[program.name]?.origin)}.`);\n }));\n return new Set(programs.filter((_, index) => present[index]).map((program) => program.name));\n }\n /** A recorded origin without actor and folder is left over from a failed start, whichever template it names, and counts as not installed. */\n #reusesScript(runId: string, root: string, script: RunScriptSources, packages: Readonly<Record<string, ActorScriptPackage>>): boolean {\n const holder = this.view(runId).actors.find((actor) => actor.handle === script.handle);\n const exists = occupied(path.join(root, script.handle));\n if (!holder && !exists)\n return false;\n const origin = packages[script.handle]?.origin;\n if (origin !== undefined && !sameOrigin(origin, { kind: \"script\", entryId: script.entryId }))\n throw new Error(`The package ${script.handle} in this run ${origin.kind === \"script\" ? `comes from the run script ${origin.entryId}` : `is the shared package of ${origin.pluginId}`}, not from the run script ${script.entryId}.`);\n if (origin !== undefined && exists && (!holder || holder.kind === \"script\"))\n return true;\n throw new Error(holder\n ? `Handle @${script.handle} already belongs to ${holder.displayName} in this run, not to the run script ${script.entryId}.`\n : `The package ${script.handle} already exists in this run and was not installed by the run script ${script.entryId}.`);\n }\n async #restartScript(context: CommandContext, runId: string, handle: string, signal?: AbortSignal): Promise<ActivatedActorProgram> {\n const view = this.view(runId);\n const holder = view.actors.find((actor) => actor.handle === handle);\n const state = holder && view.pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" && entry.scope.actorId === holder.id)?.state as unknown as ActorProgramState | undefined;\n if (!holder || !state?.program)\n await this.#activate(context, runId, handle, true, signal);\n else if (holder.kind !== \"human\" && holder.lifecycle.kind === \"stopped\")\n this.runtime().restartActor(context, runId, holder.id, \"Run script started again\");\n return this.#activated(runId, handle);\n }\n enqueueStart(context: CommandContext, runId: string, handle: string, start: RunScriptStartInput): { count: number } {\n const program = this.#program(runId, handle);\n const recorded = this.#script(runId).packages[handle];\n if (!recorded)\n throw new Error(`The package ${handle} was not installed by a run script.`);\n const view = program.views[0];\n if (start.embedded && view)\n this.#options.placeView(this.operatorContext(runId, \"place\"), runId, `app:${view.id}`);\n const state = this.#script(runId);\n const record = state.packages[handle]!;\n const count = record.count + 1;\n const delivery: ActorScriptDelivery = { commandId: context.commandId, actorId: program.actorId, kind: \"start\", name: handle, count, embedded: start.embedded, startedBy: start.startedBy };\n this.#writeScript(runId, { ...state, packages: { ...state.packages, [handle]: { ...record, count } }, deliveries: [...state.deliveries, delivery] }, context.commandId);\n try {\n this.runtime().enqueueInput(context, runId, { actorId: program.actorId, content: start.content });\n }\n catch (error) {\n const current = this.#script(runId);\n this.#writeScript(runId, { ...current, packages: { ...current.packages, [handle]: { ...current.packages[handle]!, count: record.count } },\n deliveries: current.deliveries.filter((entry) => entry.commandId !== context.commandId) });\n throw error;\n }\n return { count };\n }\n /** A start or result the host queued for this actor, recognized by the command that queued the input; it is consumed here. */\n #recognize(runId: string, actorId: string, input: { sequence: number; content: string }): Recognized | undefined {\n const state = this.#script(runId);\n if (!state.deliveries.some((delivery) => delivery.actorId === actorId))\n return undefined;\n const commandId = this.#commandOf(runId, input.sequence);\n const delivery = state.deliveries.find((entry) => entry.commandId === commandId && entry.actorId === actorId);\n if (!delivery)\n return undefined;\n const deliveries = state.deliveries.filter((entry) => entry !== delivery);\n if (delivery.kind === \"result\") {\n this.#writeScript(runId, { ...state, deliveries });\n return { result: JSON.parse(input.content) as JsonValue };\n }\n const record = state.packages[delivery.name];\n const packages = record ? { ...state.packages, [delivery.name]: { ...record, open: [...record.open, { count: delivery.count, startedBy: delivery.startedBy }].slice(-MAX_OPEN_STARTS) } } : state.packages;\n this.#writeScript(runId, { ...state, packages, deliveries });\n const { input: value, options } = JSON.parse(input.content) as { input: JsonValue; options: Record<string, JsonValue> };\n return { start: { input: value, options, embedded: delivery.embedded, startedBy: delivery.startedBy, count: delivery.count } };\n }\n /** Checked before the state commits: every finish ends a different open start of this package. */\n #finishesOf(runId: string, program: ActorProgramDefinition, value: unknown): readonly ScriptFinish[] {\n const finishes = finishesOf(value);\n const open = new Set(this.#script(runId).packages[program.name]?.open.map((entry) => entry.count) ?? []);\n for (const [index, finish] of finishes.entries()) {\n if (!open.has(finish.start) || finishes.findIndex((other) => other.start === finish.start) !== index)\n throw new Error(`finish: start ${finish.start} of @${program.actorHandle} is not open; it was finished already, never reached the program, or is older than the last ${MAX_OPEN_STARTS} open starts.`);\n }\n return finishes;\n }\n #deliverResults(request: TurnRequest<\"script\">, program: ActorProgramDefinition, finishes: readonly ScriptFinish[]): void {\n if (finishes.length === 0)\n return;\n const state = this.#script(request.runId);\n const record = state.packages[program.name]!;\n const finished = new Set(finishes.map((finish) => finish.start));\n const starters = new Map(record.open.map((entry) => [entry.count, entry.startedBy]));\n this.#writeScript(request.runId, { ...state, packages: { ...state.packages, [program.name]: { ...record, open: record.open.filter((entry) => !finished.has(entry.count)) } } });\n for (const finish of finishes)\n this.#deliverResult(request, program, finish, starters.get(finish.start)!);\n }\n /** The owner reads the summary in the chat, an LLM gets a short message, a TypeScript actor a result it recognizes. */\n #deliverResult(request: TurnRequest<\"script\">, program: ActorProgramDefinition, finish: ScriptFinish, startedBy: string): void {\n const starter = this.view(request.runId).actors.find((actor) => actor.id === startedBy);\n if (!starter || starter.kind === \"human\") {\n request.emit({ kind: \"runtime\", text: finish.summary ?? `Start ${finish.start} finished.` });\n return;\n }\n const commandId = `run-script-result:${request.turnId}:${program.name}:${finish.start}`;\n try {\n if (starter.kind === \"script\") {\n const state = this.#script(request.runId);\n this.#writeScript(request.runId, { ...state, deliveries: [...state.deliveries, { commandId, actorId: starter.id, kind: \"result\" }] }, commandId);\n }\n this.runtime().enqueueInput({ actorId: this.ownerId(request.runId), commandId }, request.runId, {\n actorId: starter.id, presentation: \"background\",\n content: starter.kind === \"agent\" ? agentResultText(program.actorHandle, finish) : scriptResultContent(program.actorHandle, finish),\n });\n }\n catch (error) {\n request.emit({ kind: \"runtime\", text: `The result of start ${finish.start} did not reach @${starter.handle}: ${errorText(error)}` });\n }\n }\n isScriptActor(runId: string, actorId: string): boolean {\n return this.runtime().select(runId, (state) => {\n const actor = state.actors.get(actorId);\n if (!actor || actor.kind !== \"script\")\n return false;\n const script = [...state.pluginStates.values()].find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === \"run\");\n return Object.hasOwn(scriptStateOf(script?.state).packages, actor.handle);\n });\n }\n programOf(runId: string, actorId: string): ActorProgramIdentity | undefined {\n const program = this.programs(runId).find((entry) => entry.actorId === actorId);\n if (!program)\n return undefined;\n const record = this.#script(runId).packages[program.name];\n const origin = record && this.#identityOf(program) === record.identity ? record.origin : { kind: \"run\" as const, installedBy: program.installedBy };\n return { name: program.name, actorId, revision: program.revision, origin };\n }\n /** Makes a package active once, whatever state it is in; under a shared name only the package the host installed from that plugin, unchanged. */\n ensure(context: CommandContext, runId: string, name: string, signal?: AbortSignal): Promise<{ actorId: string; handle: string; status: \"active\" | \"restarted\" | \"activated\" | \"installed\" }> {\n this.#assertName(name);\n return this.#withPackages(runId, [name], () => this.#ensure(context, runId, name, signal));\n }\n async #ensure(context: CommandContext, runId: string, name: string, signal?: AbortSignal) {\n const outcome = (status: \"active\" | \"restarted\" | \"activated\" | \"installed\") => {\n const program = this.#program(runId, name);\n return { actorId: program.actorId, handle: program.actorHandle, status };\n };\n const shared = this.#options.sharedPackage(name);\n const record = this.#script(runId).packages[name];\n const assertShared = (identity: () => string): void => {\n if (shared && !this.#hostShared(record, shared.pluginId, identity()))\n throw foreignShared(name, shared.pluginId, record);\n };\n const active = this.programs(runId).find((program) => program.name === name);\n if (active) {\n assertShared(() => this.#identityOf(active));\n return outcome(\"active\");\n }\n const view = this.view(runId);\n const stopped = view.pluginStates.flatMap((entry) => {\n const program = entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" ? (entry.state as unknown as ActorProgramState).program : null;\n const actor = program?.name === name ? view.actors.find((candidate) => candidate.id === program.actorId) : undefined;\n return program && actor && actor.kind !== \"human\" && actor.lifecycle.kind === \"stopped\" ? [{ program, actor }] : [];\n })[0];\n if (stopped) {\n assertShared(() => this.#identityOf(stopped.program));\n this.runtime().restartActor(context, runId, stopped.actor.id, \"Actor program ensured\");\n return outcome(\"restarted\");\n }\n const root = await this.workspaceDirectory(runId);\n if (occupied(path.join(root, name))) {\n const identity = packageIdentity(await projectSourceFiles(path.join(root, name)));\n assertShared(() => identity);\n await this.#activate(context, runId, name, true, signal);\n return outcome(\"activated\");\n }\n if (!shared)\n throw new Error(`The package ${name} is neither in this run nor a shared actor package of this profile.`);\n const claims = this.#claim(runId, [{ name, files: shared.files, origin: { kind: \"shared\", pluginId: shared.pluginId } }]);\n try {\n await this.#import(context, runId, name, shared.files, signal);\n }\n catch (error) {\n this.#release(runId, claims);\n throw error;\n }\n return outcome(\"installed\");\n }\n async check(runId: string, name: string, callerId: string, signal?: AbortSignal, reference?: string): Promise<CompiledProgram> {\n this.#assertName(name);\n const directory = path.join(await this.workspaceDirectory(runId), name);\n if ((await lstat(directory)).isSymbolicLink())\n throw new Error(\"Actor packages must not be symlinks.\");\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const previous = this.programs(runId).find((program) => program.name === name);\n const owner = reference ? this.resolveActor(runId, callerId, reference) : previous ? this.actor(runId, previous.actorId) : !pkg.backend ? this.actor(runId, callerId) : undefined;\n if (previous && owner?.id !== previous.actorId)\n throw new Error(\"An activated package cannot move to another actor.\");\n const caller = this.view(runId).actors.find((candidate) => candidate.id === callerId);\n if (!caller)\n throw new Error(\"Calling actor is missing.\");\n const provisional: ExecutableActor = owner ?? {\n id: \"pending\", handle: name, displayName: pkg.title, kind: \"script\", grants: inheritedGrants(caller),\n createdAt: new Date().toISOString(), createdBy: callerId, description: actorDescriptionOf(pkg.description) ?? null, execution: { driver: { kind: \"script\", config: {} }, workspacePath: null, turnTimeoutMs: null }, lifecycle: { kind: \"idle\", since: new Date().toISOString() }, usage: emptyUsage(), toolNames: null, openedToolNames: [],\n };\n const available = (await this.#options.agentToolsFor(runId, provisional.id, owner ? undefined : provisional)).map(descriptor);\n for (const operation of this.#options.operations.list())\n if (operation.operator !== \"unavailable\" && !available.some((entry) => entry.id === operation.id))\n available.push(operation);\n await installServerSdk(directory, available);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor, signal }) : undefined;\n const contract: AppContract = backend?.contract ?? { state: objectSchema, functions: {} };\n if (contract.input && owner?.kind === \"agent\")\n throw new Error(\"An LLM actor processes inputs with its agent driver; onInput is only allowed for TypeScript actors.\");\n if (contract.state.type !== \"object\")\n throw new Error(\"Actor state must be an object schema.\");\n const state = owner ? this.data(runId, owner.id).values : {};\n checked(contract.state, state, \"Actor state\");\n const actorId = owner?.id ?? \"pending\";\n const actorHandle = owner?.handle ?? name;\n const functions: ActorFunctionDefinition[] = Object.entries(contract.functions).map(([id, fn]) => {\n if (!/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(id))\n throw new Error(`Invalid function name ${id}.`);\n if (fn.tool && !/^[a-z][a-z0-9_]{0,63}$/.test(fn.tool.name))\n throw new Error(`Invalid tool name ${fn.tool.name}.`);\n const capabilities = fn.capabilities ?? [];\n const selected = capabilities.map((name) => {\n const entry = available.find((item) => item.id === name);\n if (!entry)\n throw new Error(`Capability ${name} is not available.`);\n return entry;\n });\n return { id, label: fn.label, description: fn.description ?? fn.label, inputSchema: fn.input, resultSchema: fn.output, capabilityIds: capabilities, capabilityContractHash: runCapabilityContractHash(selected), confirmation: fn.confirmation ?? null,\n ...(fn.tool ? { tool: { name: fn.tool.name, targets: fn.tool.targets ? fn.tool.targets.map((target) => target === \"self\" ? actorId : this.resolveActor(runId, callerId, target).id) : null, card: fn.tool.card ?? true } } : {}) };\n });\n const inputCapabilities = contract.input?.capabilities ?? [];\n const inputDescriptors = inputCapabilities.map((id) => {\n const found = available.find((entry) => entry.id === id);\n if (!found)\n throw new Error(`Input capability ${id} is not available.`);\n return found;\n });\n await installClientSdk(directory, { stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n const hasServerFiles = pkg.backend || (await projectSourceFiles(directory)).some((file) => /^tests\\/.*\\.tsx?$/.test(file.path));\n const serverErrors = hasServerFiles ? typecheckServerProject(directory, pkg.backend) : [];\n if (serverErrors.length)\n throw checkFailure(`Typecheck of ${name}`, serverErrors, `The typecheck of ${name} failed without a message.`);\n const clients: CompiledProgram[\"clients\"] = [];\n const views: ActorProgramDefinition[\"views\"] = [];\n for (const view of pkg.views ?? []) {\n const client = await compileClientProject({ directory, entryPoint: view.client, stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n if (!client.valid)\n throw checkFailure(`Client build of ${view.client}`,\n client.diagnostics.filter((item) => item.category === \"error\").map((item) =>\n `${item.fileName ?? view.client}${item.start ? `:${item.start.line}:${item.start.column}` : \"\"} ${item.message.replace(/\\s*\\n\\s*/g, \" \")}`),\n `The client build of ${view.client} failed without a message.`);\n const styles = view.styles ? await inside(directory, view.styles) : \"\";\n if (/@import\\b|url\\s*\\(\\s*[\"']?\\s*(?:https?:|\\/\\/)/i.test(styles))\n throw new Error(\"View CSS must not load external resources.\");\n const clientFile = `view-${view.id}.mjs`;\n clients.push({ file: clientFile, javaScript: client.javaScript });\n views.push({ id: `${name}--${view.id}`, key: view.id, title: view.title ?? pkg.title, visible: previous?.views.find((item) => item.key === view.id)?.visible ?? true,\n placements: [{ kind: \"canvas\", anchorActorId: actorId }], html: `<!doctype html><html class=\"${FRAME_DOCUMENT_CLASS}\"><head><meta charset=\"utf-8\"></head><body class=\"${FRAME_BODY_CLASS}\"><div id=\"root\" class=\"${FRAME_ROOT_CLASS}\"></div></body></html>`, styles, clientFile });\n }\n const viewSources = [...new Set((pkg.views ?? []).map((view) => path.dirname(path.resolve(directory, view.client))))];\n const frameStyles = viewSources.length > 0 ? await buildTailwind(viewSources) : \"\";\n const files = await projectSourceFiles(directory);\n const revision = canonicalHash({ files, backend: backend?.javaScript ?? null, clients });\n const definition: ActorProgramDefinition = { name, title: pkg.title, description: pkg.description ?? \"\", actorId, actorHandle, revision, installedBy: previous?.installedBy ?? callerId,\n directory: path.join(this.#options.directoryFor(runId), \"actor-builds\", name, revision), sourceDirectory: directory,\n ...(backend ? { backendFile: \"server.mjs\" } : {}), stateSchema: contract.state, stylesFile: \"frame.css\", functions, views,\n ...(contract.input ? { input: { capabilityIds: inputCapabilities, capabilityContractHash: runCapabilityContractHash(inputDescriptors) } } : {}) };\n return { directory, files, definition, clients, frameStyles, createActor: !owner, ...(backend ? { backendJavaScript: backend.javaScript } : {}) };\n }\n activate(context: CommandContext, runId: string, name: string, signal?: AbortSignal, reference?: string) {\n return this.#withPackages(runId, [name], () => this.#activate(context, runId, name, true, signal, reference));\n }\n async #activate(context: CommandContext, runId: string, name: string, idle: boolean, signal?: AbortSignal, reference?: string) {\n const key = `${runId}\\0${name}`;\n if (this.#installing.has(key))\n throw new Error(`Package ${name} is already being activated.`);\n const epoch = this.invocationPermit(runId);\n this.#installing.add(key);\n const original = this.programs(runId).find((item) => item.name === name);\n let compiled: CompiledProgram | undefined;\n let published = false;\n try {\n compiled = await this.check(runId, name, context.actorId, signal, reference);\n const definition = compiled.definition;\n const tests = compiled.files.filter((file) => /^tests\\/.*\\.test\\.tsx?$/.test(file.path));\n if (tests.length) {\n const processContext = await this.#options.serverProcessContextFor(runId);\n const report = await createTestReport(compiled.directory);\n let stderr = \"\";\n const launch = await sandboxedLaunch(processContext, { command: process.execPath, args: [\"--import\", \"tsx\", \"--test\", testReporterArgument, ...tests.map((file) => file.path)] });\n const result = await runManagedProcess({ command: launch.command, args: [...launch.args], cwd: compiled.directory,\n env: processContext.env, uid: processContext.uid, gid: processContext.gid, label: `Tests ${name}`, signal, timeoutMs: 60000,\n onStdout: (chunk) => report.stdout(chunk.toString()), onStderr: (chunk) => { stderr = (stderr + chunk.toString()).slice(-12000); } });\n if (result.code !== 0 || result.timedOut)\n throw new Error(report.report(name, { code: result.code, timedOut: result.timedOut, stderr }));\n }\n if (canonicalHash(compiled.files) !== canonicalHash(await projectSourceFiles(compiled.directory)))\n throw new Error(\"Package files were changed during the check; activate again.\");\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped during the activation.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"The package was changed in the meantime.\");\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n const names = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (names.has(fn.tool.name))\n throw new Error(`Tool name ${fn.tool.name} is already taken.`);\n names.add(fn.tool.name);\n }\n const occupied = this.programs(runId).find((program) => program.actorId === definition.actorId && program.name !== name);\n if (occupied)\n throw new Error(`Actor @${definition.actorHandle} already owns the package ${occupied.name}. Add functions or views there.`);\n await mkdir(definition.directory, { recursive: true });\n for (const source of compiled.files) {\n const file = path.join(definition.directory, safePath(source.path));\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content);\n }\n await prepareAppProject(definition.directory);\n if (compiled.backendJavaScript !== undefined)\n await writeFile(path.join(definition.directory, \"server.mjs\"), compiled.backendJavaScript);\n for (const client of compiled.clients)\n await writeFile(path.join(definition.directory, client.file), client.javaScript);\n await writeFile(path.join(definition.directory, definition.stylesFile), compiled.frameStyles);\n await writeFile(path.join(definition.directory, \"sources.json\"), JSON.stringify(compiled.files));\n await syncWorkspaceOwnership(definition.directory, await this.#options.serverProcessContextFor(runId));\n signal?.throwIfAborted();\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped during the activation.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"The package was changed in the meantime.\");\n if (!compiled.createActor) {\n this.actor(runId, definition.actorId);\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n checked(definition.stateSchema, this.data(runId, definition.actorId).values, \"Actor state\");\n if (this.programs(runId).some((item) => item.actorId === definition.actorId && item.name !== name))\n throw new Error(\"The actor now owns another package.\");\n }\n const currentNames = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (currentNames.has(fn.tool.name))\n throw new Error(`Tool name ${fn.tool.name} has been taken in the meantime.`);\n currentNames.add(fn.tool.name);\n }\n jsonValue({ version: 1, program: definition }, \"Actor program\");\n if (compiled.createActor) {\n const actors = this.view(runId).actors;\n const caller = actors.find((actor) => actor.id === context.actorId)!;\n const holder = actors.find((actor) => actor.handle === name);\n if (holder?.kind === \"script\" && holder.lifecycle.kind === \"stopped\") {\n checked(definition.stateSchema, this.data(runId, holder.id).values, \"Actor state\");\n this.runtime().restartActor(context, runId, holder.id, \"Actor package activated again\");\n }\n else if (holder)\n throw new Error(`Handle @${name} already belongs to the ${holder.kind !== \"human\" && holder.lifecycle.kind === \"stopped\" ? \"stopped\" : \"active\"} actor ${holder.displayName}; only a stopped TypeScript actor is restarted on activation. Choose another package name.`);\n else\n this.runtime().createScriptActor(context, runId, { handle: name, displayName: definition.title, description: actorDescriptionOf(definition.description), grants: inheritedGrants(caller), toolNames: null });\n const actor = this.resolveActor(runId, context.actorId, `@${name}`);\n definition.actorId = actor.id;\n definition.actorHandle = actor.handle;\n for (const view of definition.views)\n for (const placement of view.placements)\n placement.anchorActorId = actor.id;\n for (const fn of definition.functions)\n if (fn.tool?.targets)\n fn.tool.targets = fn.tool.targets.map((target) => target === \"pending\" ? actor.id : target);\n }\n signal?.throwIfAborted();\n this.#writeProgram(context, runId, definition.actorId, definition);\n published = true;\n if (original && original.revision !== definition.revision)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(original));\n return { name, actor: `@${definition.actorHandle}`, views: definition.views.length, active: true as const };\n }\n finally {\n this.#installing.delete(key);\n if (!published && compiled && compiled.definition.revision !== original?.revision)\n await rm(compiled.definition.directory, { recursive: true, force: true });\n }\n }\n list(runId: string) { return this.programs(runId).map((program) => ({ name: program.name, actor: `@${program.actorHandle}`, functions: program.functions.map((fn) => fn.id), views: program.views.map((view) => ({ name: view.key, title: view.title, visible: view.visible })) })); }\n async remove(context: CommandContext, runId: string, name: string) {\n const packageName = this.#program(runId, name).name;\n return this.#withPackages(runId, [packageName], () => this.#remove(context, runId, packageName, name));\n }\n async #remove(context: CommandContext, runId: string, packageName: string, name: string) {\n const program = this.#program(runId, packageName);\n this.#assertIdle(runId, program.actorId);\n if (this.#installing.has(`${runId}\\0${packageName}`))\n throw new Error(\"The package is being activated.\");\n const actor = this.actor(runId, program.actorId);\n const key = `${runId}\\0${program.actorId}`;\n this.#removing.add(key);\n try {\n await this.stopActor(runId, program.actorId);\n this.#writeProgram(context, runId, program.actorId, null);\n if (actor.kind === \"script\")\n this.runtime().stopActor(context, runId, program.actorId, \"Actor package removed\");\n await rm(program.directory, { recursive: true, force: true });\n }\n finally {\n this.#removing.delete(key);\n }\n return { removed: name };\n }\n setVisibility(context: CommandContext, runId: string, reference: string, visible: boolean) {\n const { program, view } = resolveActorView(this.programs(runId), reference);\n this.#writeProgram(context, runId, program.actorId, { ...program, views: program.views.map((item) => item.id === view.id ? { ...item, visible } : item) });\n return { view: `${program.name}/${view.key}`, visible };\n }\n apps(runId: string): ActorViewListing[] {\n return this.programs(runId).flatMap((program) => program.views.map((view) => ({ id: view.id, actorId: program.actorId, actorHandle: program.actorHandle, title: view.title, description: program.description, revision: program.revision,\n actions: program.functions.map(({ id, label, description, confirmation }) => ({ id, label, description, confirmation })), placements: view.placements, visible: view.visible, state: this.data(runId, program.actorId), invocations: this.#invocations(runId).invocations.filter((invocation) => invocation.actorId === program.actorId && invocation.revision === program.revision) })));\n }\n runLocalTools(runId: string) {\n if (!this.runtime().listRuns().some(run => run.id === runId))\n return [];\n const view = this.view(runId);\n return this.programs(runId).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [{ moduleId: program.name, name: fn.tool.name, description: fn.description, card: fn.tool.card, actorId: program.actorId, actorHandle: program.actorHandle, functionId: fn.id, revision: program.revision, sourceHash: program.revision, installedBy: program.installedBy,\n parameters: Object.entries((fn.inputSchema as {\n properties?: Record<string, {\n type?: string;\n description?: string;\n }>;\n }).properties ?? {}).map(([name, schema]) => ({ name, type: [\"string\", \"number\", \"integer\", \"boolean\"].includes(schema.type ?? \"\") ? schema.type ?? \"json\" : \"json\", description: schema.description ?? name, required: ((fn.inputSchema as {\n required?: string[];\n }).required ?? []).includes(name) })),\n targets: (fn.tool.targets ?? view.actors.filter((actor) => actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\").map((actor) => actor.id)).map((actorId) => ({ actorId, handle: view.actors.find((actor) => actor.id === actorId)?.handle ?? null })) }] : []));\n }\n async moduleSource(runId: string, reference: string) { const program = this.#program(runId, reference); return { files: JSON.parse(await readFile(path.join(program.directory, \"sources.json\"), \"utf8\")) as ActorProgramSource[] }; }\n frame(runId: string, viewId: string, revision: string) {\n const program = this.#program(runId, viewId);\n const view = program.views.find((item) => item.id === viewId);\n if (!view || program.revision !== revision)\n throw new Error(\"The view was replaced or removed.\");\n if (!program.stylesFile)\n throw new Error(\"The program comes from an older activation without a stylesheet file. Please activate again.\");\n const frameStyles = readFileSync(path.join(program.directory, program.stylesFile), \"utf8\");\n return { ...view, styles: `${frameStyles}\\n${view.styles}`, platformVersion: 2 as const, clientJavaScript: readFileSync(path.join(program.directory, view.clientFile), \"utf8\") };\n }\n installedTools(context: PluginContext): RunFunction[] {\n return this.programsOf(context.view).flatMap((program) => program.functions.flatMap((fn) => !fn.tool || (fn.tool.targets && !fn.tool.targets.includes(context.actorId)) ? [] : [defineRunFunction({\n name: fn.tool.name, label: fn.label, description: fn.description, schema: fn.inputSchema as TSchema, resultSchema: fn.resultSchema as TSchema, available: exposed, executionMode: \"sequential\",\n run: async (scope, id, input) => {\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(context.actor, scope.availableFunctions(), capabilityIds, new Set()).descriptors;\n return this.#executeFunction(context.runId, program, fn, input, { id, kind: \"tool\", principal: { id: context.actorId, kind: context.actor.kind === \"script\" ? \"script\" : \"agent\" }, descriptorsFor, call: (name, value, index) => scope.invokeFunction(`${id}:capability:${index}`, name, value) }, scope.signal ?? new AbortController().signal);\n },\n })]));\n }\n async #serial<T>(runId: string, actorId: string, signal: AbortSignal, execute: () => Promise<T>): Promise<T> {\n const permit = this.invocationPermit(runId);\n const key = `${runId}\\0${actorId}`;\n const previous = this.#queues.get(key) ?? Promise.resolve();\n const operation = previous.then(() => { signal.throwIfAborted(); if (permit !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped before the function started.\"); this.actor(runId, actorId); return execute(); });\n const queued = operation.then(() => undefined, () => undefined);\n this.#queues.set(key, queued);\n try {\n return await operation;\n }\n finally {\n if (this.#queues.get(key) === queued)\n this.#queues.delete(key);\n }\n }\n async #backend(runId: string, program: ActorProgramDefinition, input: unknown, binding: BackendBinding, descriptors: readonly RunCapabilityDescriptor[], signal: AbortSignal): Promise<{\n result: unknown;\n logs: string[];\n state: JsonValue;\n initial: ActorDataState;\n }> {\n if (!program.backendFile)\n throw new Error(\"The actor has no TypeScript backend.\");\n const current = this.#program(runId, program.name);\n if (current.revision !== program.revision)\n throw new Error(\"The actor package was replaced.\");\n const logs: string[] = [];\n let calls = 0;\n const initial = this.data(runId, program.actorId);\n const result = await this.runtime().nativeTypeScriptExecutor.execute({\n program: { entry: program.backendFile, files: [{ fileName: program.backendFile, text: await readFile(path.join(program.directory, program.backendFile), \"utf8\") }], exportName: \"handle\" },\n instanceId: this.#instance(program), cwd: program.directory, input, state: initial.values,\n std: { now: new Date().toISOString(), idPrefix: binding.id }, context: { runId, actor: { id: program.actorId, handle: program.actorHandle }, invocationId: binding.id, invocationKind: binding.kind, principal: binding.principal, capabilities: descriptors },\n }, { signal, log: (value) => { if (logs.length < 100)\n logs.push((typeof value === \"string\" ? value : JSON.stringify(value)).slice(0, 2000)); }, call: async (name, value) => {\n const capability = descriptors.find((entry) => entry.id === name);\n if (!capability)\n throw new Error(`Capability ${name} is not declared.`);\n if (++calls > 64)\n throw new Error(\"A call may run at most 64 capabilities.\");\n if (program.functions.some((fn) => fn.tool?.name === name))\n throw new Error(\"An actor function must not call itself through a tool; use a shared TypeScript function.\");\n checked(capability.schema, value, `Input ${name}`);\n const output = await binding.call(name, value, calls);\n return checked(capability.resultSchema, output, `Result ${name}`);\n } });\n signal.throwIfAborted();\n this.actor(runId, program.actorId);\n const state = checked(program.stateSchema, result.state, \"Actor state\");\n return { result: result.result, logs, state, initial };\n }\n #commitState(runId: string, actorId: string, state: JsonValue, initial: ActorDataState): void {\n if (canonicalHash(state) === canonicalHash(initial.values))\n return;\n if (this.data(runId, actorId).revision !== initial.revision)\n throw new Error(\"The actor state was changed during the call. Call again.\");\n this.runtime().replaceActorState(this.operatorContext(runId), runId, actorId, state);\n }\n #executeFunction(runId: string, bound: ActorProgramDefinition, declared: ActorFunctionDefinition, input: unknown, binding: BackendBinding, signal: AbortSignal): Promise<JsonValue> {\n const functionOf = (program: ActorProgramDefinition): ActorFunctionDefinition => {\n const fn = program.functions.find((entry) => entry.id === declared.id);\n if (!fn)\n throw new Error(\"The function is not declared.\");\n return fn;\n };\n return this.#serial(runId, bound.actorId, signal, async () => {\n const { program, contract: fn, descriptors } = await this.#bound(runId, bound.actorId, bound.revision, signal, functionOf, binding.descriptorsFor);\n const value = checked(fn.inputSchema, input, `Input ${fn.id}`);\n const result = await this.#backend(runId, program, { kind: \"function\", functionId: fn.id, input: value }, binding, descriptors, signal);\n const output = checked(fn.resultSchema, result.result, `Result ${fn.id}`);\n this.#commitState(runId, program.actorId, result.state, result.initial);\n binding.output?.push(...result.logs);\n return output;\n });\n }\n async runInput(request: TurnRequest<\"script\">, signal: AbortSignal): Promise<TurnResult> {\n this.#knownRuns.add(request.runId);\n try {\n const inputOf = (program: ActorProgramDefinition) => {\n if (!program.input)\n throw new Error(\"This TypeScript actor has no onInput handler.\");\n return program.input;\n };\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(this.actor(request.runId, request.agentId), request.tools, capabilityIds, new Set()).descriptors;\n await this.#serial(request.runId, request.agentId, signal, async () => {\n const { program, descriptors } = await this.#bound(request.runId, request.agentId, undefined, signal, inputOf, descriptorsFor);\n const binding: BackendBinding = { id: request.turnId, kind: \"input\", principal: { id: request.agentId, kind: \"script\" }, descriptorsFor, call: (name, input, index) => request.invoke(`${request.turnId}:capability:${index}`, name, input) };\n const recognized = this.#recognize(request.runId, request.agentId, request.input);\n const result = await this.#backend(request.runId, program, { kind: \"input\", input: scriptInputOf(request.input), ...recognized }, binding, descriptors, signal);\n const finishes = this.#finishesOf(request.runId, program, result.result);\n this.#commitState(request.runId, request.agentId, result.state, result.initial);\n this.#deliverResults(request, program, finishes);\n for (const text of result.logs)\n request.emit({ kind: \"runtime\", text });\n });\n return { failure: null, usage: emptyUsage() };\n }\n catch (error) {\n return { failure: errorText(error), usage: emptyUsage() };\n }\n }\n invocationPermit(runId: string): number { if (this.#shuttingDown || this.#stopping.has(runId))\n throw new Error(\"The run is being stopped.\"); return this.#epochs.get(runId) ?? 0; }\n startInvocation(runId: string, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.#program(runId, viewId);\n if (!program.views.some((view) => view.id === viewId))\n throw new Error(\"The view is unknown.\");\n return this.#start(runId, program, viewId, revision, functionId, requestId, input, permit);\n }\n startFunctionInvocation(runId: string, actorHandle: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.programs(runId).find((entry) => entry.actorHandle === handleKey(actorHandle));\n if (!program)\n throw new Error(\"The actor publishes no program.\");\n return this.#start(runId, program, program.name, revision, functionId, requestId, input, permit);\n }\n #start(runId: string, program: ActorProgramDefinition, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit: number): ActorFunctionInvocation {\n this.#knownRuns.add(runId);\n if (permit !== this.invocationPermit(runId))\n throw new Error(\"The run has been stopped in the meantime.\");\n if (program.revision !== revision)\n throw new Error(\"The actor package was replaced. Refresh the view.\");\n const fn = program.functions.find((entry) => entry.id === functionId);\n if (!fn)\n throw new Error(\"The function is not declared.\");\n const state = this.#invocations(runId);\n const prior = state.invocations.find((entry) => entry.requestId === requestId);\n if (prior) {\n if (prior.actorId !== program.actorId || prior.actionId !== functionId || prior.revision !== revision || canonicalHash(prior.input) !== canonicalHash(input))\n throw new Error(\"The request ID was already used for another call.\");\n return prior;\n }\n if (!requestId || requestId.length > 200 || state.requestIds.includes(requestId))\n throw new Error(\"Invalid or already processed request ID.\");\n if (state.requestIds.length >= 10000)\n throw new Error(\"The run has reached its call limit.\");\n if ([...this.#active.values()].filter((entry) => entry.runId === runId).length >= 8)\n throw new Error(\"Eight actor functions are already running.\");\n checked(fn.inputSchema, input, \"Function input\");\n const invocation: ActorFunctionInvocation = { id: randomUUID(), requestId, actorId: program.actorId, actorHandle: program.actorHandle, appId: viewId, revision, actionId: functionId, input, output: [], createdAt: new Date().toISOString(), status: \"queued\" };\n this.#replaceInvocation(runId, invocation, true);\n const controller = new AbortController();\n const completed = Promise.resolve().then(async () => {\n const started = { ...invocation, status: \"running\" as const, startedAt: new Date().toISOString() };\n this.#replaceInvocation(runId, started);\n try {\n if (fn.confirmation && !await this.#confirm(runId, invocation, fn.confirmation, controller.signal))\n throw new Error(\"The function was not confirmed.\");\n const descriptorsFor = (capabilityIds: readonly string[]) => operatorCapabilityBinding(this.ownerId(runId), this.#options.operations.list(), capabilityIds).descriptors;\n const output: string[] = [];\n const result = await this.#executeFunction(runId, program, fn, input, { output, id: invocation.id, kind: \"app-action\", principal: { id: this.ownerId(runId), kind: \"operator\" }, descriptorsFor, call: async (name, value, index) => {\n const operation = this.#options.operations.operation(name)!;\n const id = `${invocation.id}:capability:${index}`;\n const confirmation = operation.operator === \"confirm\" ? await this.#confirm(runId, invocation, `Run ${operation.label}?`, controller.signal, value) : true;\n if (!confirmation)\n throw new Error(\"The action was not confirmed.\");\n return this.#options.operations.invoke(name, { runId, invocationId: id, principal: { kind: \"operator\", actorId: this.ownerId(runId) }, signal: controller.signal, ...(operation.operator === \"confirm\" ? { operatorConfirmation: { operationId: name, invocationId: id, inputHash: canonicalHash(value) } } : {}) }, value);\n } }, controller.signal);\n this.#replaceInvocation(runId, { ...started, status: \"succeeded\", result, output, finishedAt: new Date().toISOString() });\n }\n catch (error) {\n this.#replaceInvocation(runId, { ...started, status: controller.signal.aborted ? \"cancelled\" : \"failed\", error: errorText(error).slice(0, 8000), finishedAt: new Date().toISOString() });\n }\n }).finally(() => this.#active.delete(invocation.id));\n this.#active.set(invocation.id, { runId, actorId: program.actorId, controller, completed });\n return invocation;\n }\n invocation(runId: string, reference: string, id: string): ActorFunctionInvocation {\n const invocation = this.#invocations(runId).invocations.find((entry) => entry.id === id && (entry.appId === reference || entry.actorHandle === reference));\n if (!invocation)\n throw new Error(\"The function call is unknown.\");\n return invocation;\n }\n #invocations(runId: string): InvocationState { return (this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_INVOCATIONS_STATE_ID && entry.scope.kind === \"run\")?.state as unknown as InvocationState) ?? { version: 1, invocations: [], requestIds: [] }; }\n #replaceInvocation(runId: string, invocation: ActorFunctionInvocation, remember = false): void {\n const current = this.#invocations(runId);\n const entries = [...current.invocations.filter((entry) => entry.id !== invocation.id), invocation];\n const active = entries.filter((entry) => entry.status === \"queued\" || entry.status === \"running\");\n const finished = entries.filter((entry) => entry.status !== \"queued\" && entry.status !== \"running\").slice(-20);\n const state: InvocationState = { version: 1, invocations: [...active, ...finished], requestIds: remember ? [...current.requestIds, invocation.requestId] : current.requestIds };\n while (jsonBytes(state) > MAX_INVOCATIONS_STATE_BYTES && finished.length) {\n finished.shift();\n state.invocations = [...active, ...finished];\n }\n assertJsonValue(state, \"Actor calls\");\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_INVOCATIONS_STATE_ID, scope: { kind: \"run\" }, state });\n }\n async #confirm(runId: string, invocation: ActorFunctionInvocation, question: string, signal: AbortSignal, input = invocation.input): Promise<boolean> {\n const answer = await this.#options.askService().ask({ runId, agentId: this.ownerId(runId), turnId: null, commandId: `actor-confirm:${randomUUID()}` }, { question: `${question}\\nInput: ${JSON.stringify(input).slice(0, 500)}`, options: [\"Run\", \"Cancel\"], multi: false, description: `Function ${invocation.actionId} of @${invocation.actorHandle}`, parameters: { source: ACTOR_PROGRAMS_STATE_ID, invocationId: invocation.id } }, signal);\n return answer === \"Run\";\n }\n #program(runId: string, reference: string): ActorProgramDefinition {\n const program = this.programs(runId).find((entry) => entry.name === reference || entry.views.some((view) => view.id === reference));\n if (!program)\n throw new Error(`Actor package ${reference} is not active.`);\n return program;\n }\n #instance(program: ActorProgramDefinition): string { return `actor:${program.actorId}:${program.revision}`; }\n #assertName(name: string): void { if (!NAME.test(name))\n throw new Error(\"Package names begin with a lowercase letter and contain at most 64 lowercase letters, digits, or hyphens.\"); }\n #assertIdle(runId: string, actorId: string): void { if (this.#queues.has(`${runId}\\0${actorId}`) || [...this.#active.values()].some((entry) => entry.runId === runId && entry.actorId === actorId))\n throw new Error(\"The actor still has running functions or inputs.\"); }\n async stopActor(runId: string, actorId: string): Promise<void> {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId && entry.actorId === actorId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Actor stopped.\")));\n const state = this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" && entry.scope.actorId === actorId)?.state as unknown as ActorProgramState | undefined;\n if (state?.program)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(state.program));\n await Promise.allSettled(active.map((entry) => entry.completed));\n }\n async stopRun(runId: string): Promise<void> {\n this.#epochs.set(runId, (this.#epochs.get(runId) ?? 0) + 1);\n this.#stopping.add(runId);\n try {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Run stopped.\")));\n await this.runtime().nativeTypeScriptExecutor.stopRun(runId);\n await Promise.allSettled([...active.map((entry) => entry.completed), ...[...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue)]);\n }\n finally {\n this.#stopping.delete(runId);\n }\n }\n waitForRunSettlement(runId: string): Promise<void> { return Promise.allSettled([...this.#active.values()].filter((entry) => entry.runId === runId).map((entry) => entry.completed).concat([...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue))).then(() => undefined); }\n /** Once per run and server process: calls a previous process left open are cancelled, calls of this process keep running. */\n async prepareSession(runId: string): Promise<void> {\n this.#knownRuns.add(runId);\n if (this.#recovered.has(runId) || !this.runtime().listRuns().some(run => run.id === runId))\n return;\n this.#recovered.add(runId);\n for (const invocation of this.#invocations(runId).invocations)\n if ((invocation.status === \"queued\" || invocation.status === \"running\") && !this.#active.has(invocation.id))\n this.#replaceInvocation(runId, { ...invocation, status: \"cancelled\", error: \"The server was stopped during the call.\", finishedAt: new Date().toISOString() });\n }\n async stopSession(runId: string, _signal?: AbortSignal): Promise<void> { await this.stopRun(runId); }\n async disposeRun(runId: string): Promise<void> { await this.stopRun(runId); }\n async deleteSession(runId: string): Promise<void> {\n await this.stopRun(runId);\n this.#recovered.delete(runId);\n for (const directory of this.#identities.keys())\n if (directory.startsWith(`${this.#options.directoryFor(runId)}${path.sep}`))\n this.#identities.delete(directory);\n await rm(this.#options.directoryFor(runId), { recursive: true, force: true });\n }\n async shutdown(): Promise<void> { this.#shuttingDown = true; await Promise.allSettled([...this.#knownRuns].map((runId) => this.stopRun(runId))); }\n}\n", "import { assertJsonValue, type JsonValue } from \"@ragents/engine\";\n\nconst MAX_JSON_BYTES = 250_000;\nconst MAX_JSON_DEPTH = 24;\nconst MAX_JSON_KEY_LENGTH = 256;\nexport const MAX_INVOCATIONS_STATE_BYTES = 8 * 1024 * 1024;\n\nexport const jsonBytes = (value: unknown): number => Buffer.byteLength(JSON.stringify(value), \"utf8\");\n\nexport const jsonValue = <T>(value: T, label: string): T & JsonValue => {\n assertJsonValue(value, label);\n const text = JSON.stringify(value);\n if (Buffer.byteLength(text, \"utf8\") > MAX_JSON_BYTES)\n throw new Error(`${label} is larger than ${MAX_JSON_BYTES} bytes.`);\n const pending: Array<{ value: unknown; depth: number }> = [{ value, depth: 0 }];\n while (pending.length > 0) {\n const current = pending.pop()!;\n if (current.depth > MAX_JSON_DEPTH)\n throw new Error(`${label} is nested deeper than ${MAX_JSON_DEPTH} levels.`);\n if (Array.isArray(current.value)) {\n current.value.forEach((entry) => pending.push({ value: entry, depth: current.depth + 1 }));\n continue;\n }\n if (current.value && typeof current.value === \"object\") {\n Object.entries(current.value).forEach(([key, entry]) => {\n if (key.length > MAX_JSON_KEY_LENGTH)\n throw new Error(`${label} contains a key with more than ${MAX_JSON_KEY_LENGTH} characters.`);\n pending.push({ value: entry, depth: current.depth + 1 });\n });\n }\n }\n return value;\n};\n", "import type { JsonValue } from \"@ragents/engine\";\nimport type { ActorScriptState } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\n\nexport const MAX_OPEN_STARTS = 50;\nconst MAX_RESULT_CHARACTERS = 32_000;\nconst MAX_SUMMARY_LENGTH = 1_000;\nconst SHOWN_RESULT_CHARACTERS = 4_000;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst isOrigin = (value: unknown): boolean =>\n isRecord(value) && (value.kind === \"script\" && typeof value.entryId === \"string\" || value.kind === \"shared\" && typeof value.pluginId === \"string\");\n\n/** An older or unknown shape counts as empty, and so does a package record of an older shape: such packages have no recorded origin. */\nexport const scriptStateOf = (value: unknown): ActorScriptState => {\n if (!isRecord(value) || value.version !== 2 || !isRecord(value.packages) || !Array.isArray(value.deliveries))\n return { version: 2, packages: {}, deliveries: [] };\n const packages = Object.entries(value.packages).filter(([, entry]) => isRecord(entry) && isOrigin(entry.origin) && typeof entry.identity === \"string\");\n return { ...value as unknown as ActorScriptState, packages: Object.fromEntries(packages) as ActorScriptState[\"packages\"] };\n};\n\nexport interface ScriptFinish {\n readonly start: number;\n readonly result: JsonValue;\n readonly summary?: string;\n}\n\n/** What a program's turn handler returned through context.finish; a handler built before finish returns nothing. */\nexport const finishesOf = (value: unknown): readonly ScriptFinish[] => {\n if (value === undefined || value === null) return [];\n if (!isRecord(value) || !Array.isArray(value.finishes)) throw new Error(\"The program returned an invalid finish list.\");\n return value.finishes.map((entry): ScriptFinish => {\n if (!isRecord(entry) || !Number.isInteger(entry.start) || (entry.start as number) < 1) throw new Error(\"finish needs the count of an open start.\");\n const result = (entry.result ?? null) as JsonValue;\n if (JSON.stringify(result).length > MAX_RESULT_CHARACTERS) throw new Error(`The result of finish is larger than ${MAX_RESULT_CHARACTERS} characters as JSON.`);\n if (entry.summary !== undefined && (typeof entry.summary !== \"string\" || entry.summary.length > MAX_SUMMARY_LENGTH)) {\n throw new Error(`The summary of finish must be a text of at most ${MAX_SUMMARY_LENGTH} characters.`);\n }\n return { start: entry.start as number, result, ...(typeof entry.summary === \"string\" ? { summary: entry.summary } : {}) };\n });\n};\n\n/** The result as a short message for an LLM starter: summary line, then the compact result. */\nexport const agentResultText = (handle: string, finish: ScriptFinish): string => {\n const headline = `Run script @${handle} finished start ${finish.start}${finish.summary ? `: ${finish.summary}` : \".\"}`;\n if (finish.result === null) return headline;\n const json = JSON.stringify(finish.result);\n const shown = json.length > SHOWN_RESULT_CHARACTERS ? `${json.slice(0, SHOWN_RESULT_CHARACTERS)}... (shortened, ${json.length} characters)` : json;\n return `${headline}\\nResult: ${shown}`;\n};\n\n/** The result for a TypeScript starter: onResult gets it parsed, onInput as this JSON. */\nexport const scriptResultContent = (handle: string, finish: ScriptFinish): string =>\n JSON.stringify({ handle, count: finish.start, result: finish.result, ...(finish.summary !== undefined ? { summary: finish.summary } : {}) });\n", "import {\n runCapabilityBindingHash,\n runCapabilityContractHash,\n type Actor,\n type RunFunction,\n type RunCapabilityDescriptor,\n} from \"@ragents/engine\";\n\nimport type { OperationDescriptorPort } from \"./operations.js\";\n\nexport interface ResolvedCapabilityBinding {\n descriptors: readonly RunCapabilityDescriptor[];\n descriptorContractHash: string;\n bindingContractHash: string;\n}\n\nconst descriptorOf = (capability: {\n id: string;\n label: string;\n description: string;\n schema: RunCapabilityDescriptor[\"schema\"];\n resultSchema: RunCapabilityDescriptor[\"resultSchema\"];\n}): RunCapabilityDescriptor => ({\n id: capability.id,\n label: capability.label,\n description: capability.description,\n schema: capability.schema,\n resultSchema: capability.resultSchema,\n});\n\nconst selected = <T>(\n available: readonly T[],\n capabilityIds: readonly string[],\n idOf: (value: T) => string,\n unavailable: (id: string, names: string) => Error,\n): T[] => {\n const byId = new Map(available.map((value) => [idOf(value), value]));\n return capabilityIds.map((id) => {\n const value = byId.get(id);\n if (!value) throw unavailable(id, [...byId.keys()].sort().join(\", \") || \"none\");\n return value;\n });\n};\n\nexport const operatorCapabilityBinding = (\n actorId: string,\n operations: readonly OperationDescriptorPort[],\n capabilityIds: readonly string[],\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n operations.filter((operation) => operation.operator !== \"unavailable\"),\n capabilityIds,\n (operation) => operation.id,\n (id, names) => new Error(`Capability ${id} is not available to the operator. Available: ${names}.`),\n );\n const descriptors = resolved.map(descriptorOf);\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actorId, kind: \"operator\" },\n capabilities: descriptors,\n policies: resolved.map((operation) => ({ id: operation.id, policy: operation.operator })),\n }),\n };\n};\n\nexport const agentCapabilityBinding = (\n actor: Actor,\n tools: readonly RunFunction[],\n capabilityIds: readonly string[],\n blockedNames: ReadonlySet<string>,\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n tools.filter((tool) => !blockedNames.has(tool.name)),\n capabilityIds,\n (tool) => tool.name,\n (id, names) => new Error(\n `Capability ${id} is not available to @${actor.handle}. Available: ${names}.`,\n ),\n );\n const descriptors = resolved.map((tool) => descriptorOf({ ...tool, id: tool.name }));\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actor.id, kind: actor.kind === \"script\" ? \"script\" : \"agent\", grants: actor.grants },\n capabilities: descriptors,\n policies: descriptors.map((descriptor) => ({ id: descriptor.id, policy: \"agent\" })),\n }),\n };\n};\n", "import type { ActorProgramTemplate } from \"./templates\";\n\nexport const controlsTemplate: ActorProgramTemplate = {\n id: \"controls\",\n title: \"Try UI controls\",\n description: \"Local demo with form, table, files, tasks, flow diagram, SVG connections, messages, document, and diff without function calls.\",\n ragents: {\n title: \"Try UI controls\",\n description: \"A local demo of the available mini-app controls. Values and files stay in this view.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\ntype Row = { id: string; name: string; count: number };\nconst rows: Row[] = [\n { id: \"analysis\", name: \"Analysis\", count: 12 },\n { id: \"review\", name: \"Review\", count: 4 },\n { id: \"notes\", name: \"Documentation\", count: 8 },\n];\n\nconst App = () => {\n const [values, setValues] = React.useState<FormValues>({ title: \"Review results\", notes: \"\", count: 3, mode: \"review\", approved: false });\n const [selected, setSelected] = React.useState<string[]>([]);\n const [files, setFiles] = React.useState<File[]>([]);\n const [result, setResult] = React.useState(\"No form values applied yet.\");\n const [messages, setMessages] = React.useState<Parameters<typeof UI.MessageList>[0][\"messages\"]>([\n { key: \"editorial\", sender: \"Editorial\", text: \"The notice should stay **short and clear**.\" },\n { key: \"review\", sender: \"Text review\", text: \"Opening hours and the repair notice are kept.\" },\n ]);\n const [done, setDone] = React.useState(false);\n return <UI.AppLayout title=\"Try UI controls\" description=\"Local demo: no agents, uploads, or server actions. Values and file selection stay only in this view and are reset on reload.\">\n <UI.Stack gap=\"large\">\n <UI.Form title=\"Form\" fields={[\n { id: \"title\", label: \"Task\", type: \"text\", placeholder: \"What should be worked on?\", required: true },\n { id: \"notes\", label: \"Notes\", type: \"textarea\", rows: 3, placeholder: \"What should be taken into account while working on it?\", hint: \"Multi-line text stays aligned in the form.\" },\n { id: \"count\", label: \"Count\", type: \"number\", placeholder: \"Number of results\", hint: \"1 to 10 results.\", required: true, min: 1, max: 10 },\n { id: \"mode\", label: \"Mode\", type: \"select\", options: [{ value: \"review\", label: \"Review\" }, { value: \"draft\", label: \"Draft\" }] },\n { id: \"approved\", label: \"Selection confirmed\", type: \"checkbox\", required: true },\n ]} values={values} onChange={setValues} onSubmit={async (next) => { setResult(JSON.stringify(next, null, 2)); }} submitLabel=\"Show values locally\" />\n <UI.Stack gap=\"small\">\n <UI.DataTable<Row> title=\"Data table\" rows={rows} rowKey={(row) => row.id} filterable\n selectedKeys={selected} onSelectionChange={setSelected}\n columns={[{ id: \"name\", label: \"Work\", value: (row) => row.name, sortable: true }, { id: \"count\", label: \"Results\", value: (row) => row.count, sortable: true }]}\n actions={[{ id: \"select\", label: \"Select\", onClick: (row) => { setSelected([row.id]); } }]} />\n <p aria-live=\"polite\">{selected.length} rows selected</p>\n </UI.Stack>\n <UI.FilePicker label=\"Local file selection\" files={files} onChange={setFiles} maxFiles={5} maxBytes={10 * 1024 * 1024} />\n <UI.Stack gap=\"small\">\n <UI.TaskProgress title=\"Example tasks\" tasks={[\n { id: \"read\", label: \"Read documents\", status: \"done\" },\n { id: \"review\", label: \"Review results\", status: done ? \"done\" : \"pending\", description: \"Local example status, no running actor.\" },\n ]} />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setDone((current) => !current)}>Toggle example status</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>Flow diagram</h2>\n <p>The diagram gets its state from the same data as the task list.</p>\n <UI.FlowDiagram label={done ? \"Intake, review done, result ready\" : \"Intake, review running, result pending\"}\n nodes={[\n { id: \"input\", label: \"Intake\", detail: \"Documents are available\", status: \"done\", kind: \"service\" },\n { id: \"check\", label: \"Review\", detail: done ? \"Review completed\" : \"Documents are being reviewed\", status: done ? \"done\" : \"active\", kind: \"agent\" },\n { id: \"result\", label: \"Result\", detail: done ? \"Result ready\" : \"Waiting for the review\", status: done ? \"done\" : \"pending\", kind: \"actor\" },\n ]}\n edges={[{ source: \"input\", target: \"check\" }, { source: \"check\", target: \"result\" }]} />\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>SVG connections</h2>\n <p>SvgEdge draws the edges. Nodes, labels, and positions are in the code of this view.</p>\n <svg viewBox=\"0 0 360 160\" role=\"img\" aria-label={done ? \"Intake done, review completed, result ready\" : \"Intake done, review running, result open\"}\n className=\"block h-auto w-full text-[13px]\">\n <UI.SvgEdge d=\"M112 42 L144 42\" tone={done ? \"success\" : \"warning\"} active={!done} />\n <UI.SvgEdge d=\"M252 42 C320 42 320 118 252 118\" arrow={done ? \"end\" : \"none\"} tone={done ? \"success\" : \"neutral\"} lineStyle={done ? \"solid\" : \"dashed\"} />\n <UI.SvgEdge d=\"M144 118 C64 118 64 96 64 72\" arrow=\"both\" tone=\"accent\" />\n {[{ x: 8, y: 12, label: \"Intake\", status: \"Done\" },\n { x: 148, y: 12, label: \"Review\", status: done ? \"Done\" : \"Running\" },\n { x: 148, y: 88, label: \"Result\", status: done ? \"Ready\" : \"Open\" }].map((node) => <g key={node.label}>\n <rect x={node.x} y={node.y} width=\"104\" height=\"56\" rx=\"8\" className=\"fill-background stroke-border-strong\" />\n <text x={node.x + 52} y={node.y + 23} textAnchor=\"middle\" className=\"fill-foreground font-semibold\">{node.label}</text>\n <text x={node.x + 52} y={node.y + 42} textAnchor=\"middle\" className=\"fill-muted-foreground text-[11px]\">{node.status}</text>\n </g>)}\n </svg>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <UI.MessageList messages={messages} label=\"Local editorial notes\" />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setMessages((current) => [...current, {\n key: \"note-\" + current.length, sender: current.length % 2 ? \"Text review\" : \"Editorial\",\n text: \"Local example note \" + (current.length - 1) + \": This message was just added.\",\n }])}>Add local message</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.DocumentViewer title=\"Local form result\" format=\"text\" content={result} />\n <UI.DiffViewer title=\"Example change\" patch={\"--- a/result.txt\\\\n+++ b/result.txt\\\\n@@ -1 +1 @@\\\\n-Status: open\\\\n+Status: reviewed\"} />\n </UI.Stack>\n </UI.AppLayout>;\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n", "import type { AppPackage } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { controlsTemplate } from \"./controls-template\";\n\nexport interface ActorProgramTemplate {\n id: string;\n title: string;\n description: string;\n ragents: AppPackage;\n files: Readonly<Record<string, string>> & { readonly \"package.json\"?: never };\n}\n\nconst blank: ActorProgramTemplate = {\n id: \"blank\",\n title: \"Blank mini-app\",\n description: \"A pure React view on the existing actor without an additional server function.\",\n ragents: {\n title: \"My view\",\n description: \"A small interface of the existing actor.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\nconst App = () => (\n <UI.AppLayout title=\"My view\">\n <UI.Stack><p>Ready for your content.</p></UI.Stack>\n </UI.AppLayout>\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst chat: ActorProgramTemplate = {\n id: \"chat\",\n title: \"Actor chat\",\n description: \"Reusable chat with history and optional input to the actor of this view.\",\n ragents: {\n title: \"Actor chat\",\n description: \"Shows the conversation with an actor and sends it user input.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\nimport { context } from \"@ragents/client\";\n\nconst App = () => (\n <UI.Chat actor={\"@\" + context.actor.handle} className=\"h-full\" showInput placeholder=\"Message to the actor\" />\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst textAnalysis: ActorProgramTemplate = {\n id: \"text-analysis\",\n title: \"Text analysis\",\n description: \"A TypeScript actor analyzes texts with its own function, state, and React view.\",\n ragents: {\n title: \"Text analysis\",\n description: \"Counts characters, words, and lines and remembers the number of analyses.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [result, setResult] = React.useState(\"Ready\");\n\n const analyse = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"analyse\", { text: String(next.text ?? \"\") });\n setResult([\n \\`Characters: \\${answer.characters}\\`,\n \\`Words: \\${answer.words}\\`,\n \\`Lines: \\${answer.lines}\\`,\n ].join(\"\\\\n\"));\n };\n\n return (\n <UI.AppLayout title=\"Text analysis\" description={<>Analyses: {state.analyses ?? 0}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"Text\", type: \"textarea\", rows: 6, placeholder: \"Enter text\" },\n ]} values={values} onChange={setValues} onSubmit={analyse} submitLabel=\"Analyze\" />\n <UI.Stack><pre aria-live=\"polite\" className=\"min-h-[90px] overflow-auto rounded-md border border-border bg-muted p-2.5 font-mono whitespace-pre-wrap\">{result}</pre></UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ analyses: Type.Optional(Type.Integer({\"minimum\": 0})) }, {\"additionalProperties\": false}),\n functions: {\n analyse: {\n label: \"Analyze text\",\n description: \"Counts words, characters, and lines without external effects.\",\n tool: { name: \"analyse_text\" },\n input: Type.Object({ text: Type.String({\"description\": \"The text to analyze.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), characters: Type.Integer({\"minimum\": 0}), words: Type.Integer({\"minimum\": 0}), lines: Type.Integer({\"minimum\": 0}), analyses: Type.Integer({\"minimum\": 1}) }, {\"additionalProperties\": false}),\n capabilities: [],\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n analyse: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const analyses = (state.analyses ?? 0) + 1;\n context.state.replace({ analyses });\n\n return {\n text,\n characters: text.length,\n words: text ? text.split(/\\\\s+/).length : 0,\n lines: text ? text.split(/\\\\r?\\\\n/).length : 0,\n analyses,\n };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"counts words, lines, and further analyses\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.analyse({\"text\": \" Hello world\\\\nNew line \"}, context), {\"text\": \"Hello world\\\\nNew line\", \"characters\": 20, \"words\": 4, \"lines\": 2, \"analyses\": 1});\n assert.deepEqual(await program.functions.analyse({\"text\": \"\"}, context), {\"text\": \"\", \"characters\": 0, \"words\": 0, \"lines\": 0, \"analyses\": 2});\n assert.deepEqual(context.state.read(), {\"analyses\": 2});\n});\n`,\n },\n};\n\nconst headlessCounter: ActorProgramTemplate = {\n id: \"headless-counter\",\n title: \"Counter without interface\",\n description: \"A TypeScript actor counts inputs in its state and offers the same work as a function.\",\n ragents: {\n title: \"Counter\",\n description: \"Collects incoming texts without model calls or interface.\",\n backend: \"src/server.ts\",\n },\n files: {\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nconst state = Type.Object({\n texts: Type.Optional(Type.Array(Type.String())),\n count: Type.Optional(Type.Integer({ minimum: 0 })),\n}, { additionalProperties: false });\n\nexport const contract = {\n state,\n functions: {\n record: {\n label: \"Count text\",\n input: Type.Object({ text: Type.String() }, { additionalProperties: false }),\n output: Type.Object({ count: Type.Integer(), texts: Type.Array(Type.String()) }, { additionalProperties: false }),\n tool: { name: \"record_text\" },\n },\n inspect: {\n label: \"Read counter\",\n input: Type.Object({}, { additionalProperties: false }),\n output: state,\n tool: { name: \"read_counter\" },\n },\n },\n input: { capabilities: [] },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport type { Static } from \"typebox\";\nimport { contract } from \"./contract.ts\";\n\nconst record = (state: Static<typeof contract.state>, text: string) => {\n const texts = [...(state.texts ?? []), text];\n return { texts, count: texts.length };\n};\n\nexport default defineActor(contract, {\n functions: {\n record: (input, context) => {\n const result = record(context.state.read(), input.text);\n context.state.replace(result);\n return result;\n },\n inspect: (_input, context) => context.state.read(),\n },\n onInput: (input, context) => {\n context.state.replace(record(context.state.read(), input.content));\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"inputs and functions share the same counter\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n for (const content of [\"one\", \"two\", \"three\"]) {\n await program.onInput!({ id: content, content, artifactIds: [], sourceEventIds: [], subscriptionId: null, event: null }, context);\n }\n assert.deepEqual(await program.functions.inspect({}, context), { texts: [\"one\", \"two\", \"three\"], count: 3 });\n assert.deepEqual(await program.functions.record({ text: \"four\" }, context), { texts: [\"one\", \"two\", \"three\", \"four\"], count: 4 });\n assert.deepEqual(context.state.read(), { texts: [\"one\", \"two\", \"three\", \"four\"], count: 4 });\n});\n`,\n },\n};\n\nconst sharedList: ActorProgramTemplate = {\n id: \"shared-list\",\n title: \"Shared list of an actor\",\n description: \"An actor owns a function and a React view for the same list state.\",\n ragents: {\n title: \"Shared list\",\n description: \"Collects texts from the app and from an agent tool in a shared list.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [status, setStatus] = React.useState(\"Ready\");\n const entries = state.entries ?? [];\n\n const append = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"append\", { text: String(next.text ?? \"\") });\n setValues({ text: \"\" });\n setStatus(\\`Added: \\${answer.text}\\`);\n };\n\n return (\n <UI.AppLayout title=\"Shared list\" description={<>{entries.length} {entries.length === 1 ? \"item\" : \"items\"}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"New item\", type: \"textarea\", placeholder: \"Enter text\" },\n ]} values={values} onChange={setValues} onSubmit={append} submitLabel=\"Add\" />\n <UI.Stack>\n <p className=\"text-muted-foreground\" role=\"status\">{status}</p>\n <ul className=\"border-t border-border\">\n {entries.map((entry, index) => <li className=\"min-h-[31px] border-b border-border-soft py-1.5 [overflow-wrap:anywhere]\" key={index}>{entry}</li>)}\n </ul>\n </UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ entries: Type.Optional(Type.Array(Type.String())) }, {\"additionalProperties\": false}),\n functions: {\n append: {\n label: \"Add entry\",\n description: \"Appends the entered text to the shared list.\",\n input: Type.Object({ text: Type.String({\"description\": \"The text for the new list entry.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), entries: Type.Array(Type.String()) }, {\"additionalProperties\": false}),\n capabilities: [],\n tool: { name: \"append_to_list\", card: true },\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n append: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const entries = [...(state.entries ?? []), text];\n context.state.replace({ entries });\n return { text, entries };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"adds entries without losing existing entries\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.append({\"text\": \" First entry \"}, context), {\"text\": \"First entry\", \"entries\": [\"First entry\"]});\n assert.deepEqual(await program.functions.append({\"text\": \"Second entry\"}, context), {\"text\": \"Second entry\", \"entries\": [\"First entry\", \"Second entry\"]});\n assert.deepEqual(context.state.read(), {\"entries\": [\"First entry\", \"Second entry\"]});\n});\n`,\n },\n};\n\nexport const runModuleTemplates = [blank, chat, controlsTemplate, textAnalysis, headlessCounter, sharedList] as const;\n\nexport const templateFiles = (template: ActorProgramTemplate, name: string): Readonly<Record<string, string>> => ({\n \"package.json\": `${JSON.stringify({ name, private: true, type: \"module\", ragents: template.ragents }, null, 2)}\\n`,\n ...template.files,\n});\n\nexport const templateById = (id: string): ActorProgramTemplate => {\n const template = runModuleTemplates.find((candidate) => candidate.id === id);\n if (!template) throw new Error(`Unknown actor program template ${id}. Valid: ${runModuleTemplates.map((entry) => entry.id).join(\", \")}.`);\n return template;\n};\n", "import { realpath } from \"node:fs/promises\";\n\n/** A node:test reporter that writes one JSON line per passed test, failed test and stderr line of a test file. */\nconst reporterSource = `\nimport { inspect } from \"node:util\";\nconst shown = (value) => inspect(value, { depth: 4, breakLength: Infinity, maxArrayLength: 20, maxStringLength: 200 }).slice(0, 300);\nexport default async function* (source) {\n for await (const { type, data } of source) {\n if (type === \"test:pass\" && data.details?.type !== \"suite\") yield JSON.stringify({ kind: \"pass\" }) + \"\\\\n\";\n if (type === \"test:fail\" && data.details?.type !== \"suite\" && data.details?.error?.failureType !== \"subtestsFailed\") {\n const error = data.details.error;\n const cause = error.cause instanceof Error ? error.cause : error;\n const assertion = cause.code === \"ERR_ASSERTION\";\n yield JSON.stringify({ kind: \"fail\", name: data.name, file: data.file ?? null, line: data.line ?? null, column: data.column ?? null,\n message: String(cause.message), generated: cause.generatedMessage === true, stack: String(cause.stack ?? \"\"),\n ...(assertion ? { expected: shown(cause.expected), actual: shown(cause.actual) } : {}) }) + \"\\\\n\";\n }\n if (type === \"test:stderr\") yield JSON.stringify({ kind: \"stderr\", file: data.file ?? null, message: String(data.message) }) + \"\\\\n\";\n }\n}\n`;\n\nexport const testReporterArgument = `--test-reporter=data:text/javascript,${encodeURIComponent(reporterSource)}`;\n\ntype TestRecord =\n | { kind: \"pass\" }\n | { kind: \"fail\"; name: string; file: string | null; line: number | null; column: number | null; message: string; generated: boolean; stack: string; expected?: string; actual?: string }\n | { kind: \"stderr\"; file: string | null; message: string };\n\nconst maxDetailed = 10;\nconst frameLine = /^\\s+at /;\n\n/** The lines of an error output that name the error, without stack frames, code excerpts and the Node version. */\nconst errorLines = (lines: readonly string[]): string[] => {\n const meaningful = lines.map((line) => line.trimEnd()).filter((line) => line.trim() !== \"\" && !frameLine.test(line) && !/^Node\\.js v\\d/.test(line) && !/^\\s*\\^+$/.test(line));\n const named = meaningful.filter((line) => /^[A-Za-z]*Error\\b/.test(line));\n return (named.length > 0 ? named : meaningful.slice(-5)).slice(0, 5);\n};\n\n/** Collects the reporter lines of a test run and turns them into a short failure report: counts, and per failed test its name, message, expected and actual values and its place in the program. */\nexport const createTestReport = async (directory: string) => {\n const roots = [...new Set([directory, await realpath(directory)])].sort((left, right) => right.length - left.length);\n const relative = (text: string): string => roots.reduce((result, root) => result.replaceAll(`file://${root}/`, \"\").replaceAll(`${root}/`, \"\"), text);\n const failures: Extract<TestRecord, { kind: \"fail\" }>[] = [];\n const stderrByFile = new Map<string, string[]>();\n const unparsed: string[] = [];\n let passed = 0;\n let failed = 0;\n let pending = \"\";\n\n const record = (line: string): void => {\n if (line.trim() === \"\") return;\n let parsed: TestRecord;\n try {\n parsed = JSON.parse(line) as TestRecord;\n } catch {\n unparsed.push(line);\n return;\n }\n if (parsed.kind === \"pass\") passed += 1;\n if (parsed.kind === \"fail\") {\n failed += 1;\n if (failures.length < maxDetailed) failures.push(parsed);\n }\n if (parsed.kind === \"stderr\") {\n const lines = stderrByFile.get(parsed.file ?? \"\") ?? [];\n stderrByFile.set(parsed.file ?? \"\", [...lines, ...parsed.message.split(\"\\n\")].slice(-50));\n }\n };\n\n const placeOf = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const frame = failure.stack.split(\"\\n\").filter((line) => frameLine.test(line)).map(relative)\n .map((line) => /\\(?([^\\s()]+:\\d+:\\d+)\\)?\\s*$/.exec(line)?.[1])\n .find((place) => place !== undefined && !place.startsWith(\"/\") && !place.startsWith(\"node:\") && !place.includes(\"node_modules/\"));\n const declared = failure.file === null ? failure.name : `${relative(failure.file)}${failure.line === null ? \"\" : `:${failure.line}:${failure.column ?? 1}`}`;\n return frame ?? declared;\n };\n\n const describe = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const fileOutput = failure.message === \"test failed\" && failure.file !== null ? stderrByFile.get(failure.file) ?? stderrByFile.get(relative(failure.file)) : undefined;\n const message = fileOutput ? errorLines(fileOutput).join(\"; \") : failure.generated ? failure.message.split(\"\\n\")[0]!.replace(/:$/, \"\") : failure.message.trim().slice(0, 500);\n const values = failure.expected === undefined || failure.expected === failure.actual ? \"\" : ` - expected ${failure.expected}, actual ${failure.actual}`;\n return `- ${failure.name} (${placeOf(failure)}): ${relative(message)}${relative(values)}`;\n };\n\n return {\n stdout: (chunk: string): void => {\n const lines = (pending + chunk).split(\"\\n\");\n pending = lines.pop() ?? \"\";\n lines.forEach(record);\n },\n report: (name: string, outcome: { code: number | null; timedOut: boolean; stderr: string }): string => {\n record(pending);\n pending = \"\";\n const summary = outcome.timedOut\n ? `Tests for ${name} canceled after a timeout: ${passed} passed, ${failed} failed.`\n : `Tests for ${name} failed: ${passed} passed, ${failed} failed.`;\n const details = failures.map(describe);\n const more = failed > failures.length ? [`... and ${failed - failures.length} more`] : [];\n const withoutResult = failed === 0\n ? [`The test run ended${outcome.code === null ? \"\" : ` with code ${outcome.code}`} without a failed test:`, ...errorLines([...unparsed, ...outcome.stderr.split(\"\\n\")]).map(relative)]\n : [];\n return [summary, ...details, ...more, ...withoutResult].join(\"\\n\");\n },\n };\n};\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, holdsUsable, type RunFunction, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\nimport type { createProjectDiagnostics } from \"./project-diagnostics.js\";\nconst metadata = [\n { name: \"actor_program_create\", label: \"Create Actor Program\", description: \"Create a private TypeScript package with fixed libraries.\", longDescription: \"Edit files under @actors/name using workspace tools.\" },\n { name: \"actor_program_activate\", label: \"Activate Actor Program\", description: \"Typecheck, build and test a package, then activate its functions and optional views.\", longDescription: \"actor self or @handle attaches to an existing actor; omitted creates a TypeScript actor for a backend, or attaches static views to self.\" },\n { name: \"actor_program_list\", label: \"List Actor Programs\", description: \"List active actor packages, functions and views.\" },\n { name: \"actor_program_remove\", label: \"Remove Actor Program\", description: \"Detach functions and views and stop the backend.\", longDescription: \"A TypeScript actor is stopped; an LLM actor retains its agent behavior.\" },\n { name: \"actor_view_set_visibility\", label: \"Show or hide Actor View\", description: \"Set surface visibility by package-name/view-key or @handle/view-key.\", longDescription: \"Use names you chose; the server resolves the view ID. A unique view title also works.\" },\n { name: \"actor_program_diagnostics\", label: \"Actor Program Diagnostics\", description: \"Read the last project diagnostics.\", longDescription: \"Changed errors are automatically supplied before the next model request.\" },\n { name: \"actor_program_ensure\", label: \"Ensure Actor Program\", description: \"Make a package active once: return it when active, restart its stopped actor, activate it when installed, or install a shared package of the profile.\", longDescription: \"Safe to call on every start: an active package is returned unchanged and not rebuilt. status names what happened. actor_program_activate instead rebuilds and reactivates.\" },\n] as const;\nexport const actorProgramManagementToolNames = metadata.map((entry) => entry.name);\nexport const actorProgramToolsAvailable = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"For executable actors with agent.spawn and plugin.state.write.\" }, actor => actor.kind !== \"human\" && holdsUsable(actor, \"agent.spawn\") && holdsUsable(actor, \"plugin.state.write\"));\nconst name = Type.String({ pattern: \"^[a-z][a-z0-9-]{0,63}$\" });\ntype Diagnostics = Pick<ReturnType<typeof createProjectDiagnostics>, \"latest\">;\nconst managementTools = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): RunFunction[] => [\n defineRunFunction({ ...metadata[0], schema: Type.Object({ name, template: Type.Union(runtime.templates().map((entry) => Type.Literal(entry.id, { description: entry.description }))) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), directory: Type.String(), files: Type.Array(Type.String()) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => runtime.scaffold(scope.caller.runId, input.name, input.template) }),\n defineRunFunction({ ...metadata[1], schema: Type.Object({ name, actor: Type.Optional(Type.String()) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), actor: Type.String(), views: Type.Number(), active: Type.Literal(true) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.activate(scope.context(id), scope.caller.runId, input.name, scope.signal, input.actor) }),\n defineRunFunction({ ...metadata[2], schema: Type.Object({}, { additionalProperties: false }), resultSchema: Type.Array(Type.Object({ name: Type.String(), actor: Type.String(), functions: Type.Array(Type.String()), views: Type.Array(Type.Object({ name: Type.String(), title: Type.String(), visible: Type.Boolean() })) })), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope) => runtime.list(scope.caller.runId) }),\n defineRunFunction({ ...metadata[3], schema: Type.Object({ name }, { additionalProperties: false }), resultSchema: Type.Object({ removed: Type.String() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.remove(scope.context(id), scope.caller.runId, input.name) }),\n defineRunFunction({ ...metadata[4], schema: Type.Object({ view: Type.String({ minLength: 1, description: \"package-name/view-key or @handle/view-key of an activated view, without the surface entity prefix app:. No generated IDs needed.\" }), visible: Type.Boolean() }, { additionalProperties: false }), resultSchema: Type.Object({ view: Type.String(), visible: Type.Boolean() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.setVisibility(scope.context(id), scope.caller.runId, input.view, input.visible) }),\n defineRunFunction({ ...metadata[5], schema: Type.Object({ name: Type.Optional(name) }, { additionalProperties: false }), resultSchema: Type.String(), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => diagnostics.latest(scope.caller.runId, scope.caller.actorId, input.name) }),\n defineRunFunction({ ...metadata[6], schema: Type.Object({ name }, { additionalProperties: false }), resultSchema: Type.Object({ actorId: Type.String(), handle: Type.String(), status: Type.Union([Type.Literal(\"active\"), Type.Literal(\"restarted\"), Type.Literal(\"activated\"), Type.Literal(\"installed\")]) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.ensure(scope.context(id), scope.caller.runId, input.name, scope.signal) }),\n];\nexport const createActorProgramToolContributors = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): readonly ToolContributor[] => [\n { name: \"ragents.actor-programs.management\", descriptors: metadata.map((item) => toolDescriptorFrom(item, actorProgramToolsAvailable)), tools: () => managementTools(runtime, diagnostics) },\n { name: \"ragents.actor-programs.functions\", descriptors: [], dynamic: true, tools: (context) => runtime.installedTools(context) },\n];\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport { readClientUiComponentNames, readClientUiComponentContracts } from \"@ragents/host/plugin-support/actor-programs/client-contracts.js\";\nimport { actorProgramGuide } from \"./prompts.js\";\n\nconst available = defineToolAvailability({ availability: \"always\", availabilityDetail: \"Typed UI reference of the installed actor program plugin.\" }, () => true);\nconst metadata = {\n name: \"actor_program_controls\",\n label: \"Look up actor program guide and controls\",\n description: \"Read Mini-App control contracts or the actor-program authoring guide.\",\n longDescription: \"With topic: guide, explain the TypeScript package workflow through actor_program_activate. Otherwise list control names, or select one component (for example Form) for only its TypeScript props and supporting types. Import controls from @ragents/client/ui and use these exact props.\",\n};\n\nexport const describeClientControls = (component?: string) => {\n const components = readClientUiComponentNames();\n if (component === undefined) return { components };\n if (!components.includes(component)) throw new Error(`Unknown control ${component}. Valid: ${components.join(\", \")}`);\n return { files: readClientUiComponentContracts(component) };\n};\n\nexport const createControlsToolContributor = (): ToolContributor => ({\n name: \"ragents.actor-programs.controls\",\n descriptors: [toolDescriptorFrom(metadata, available)],\n tools: () => [defineRunFunction({\n ...metadata,\n available,\n schema: Type.Object({\n topic: Type.Optional(Type.Union([Type.Literal(\"controls\"), Type.Literal(\"guide\")], { description: \"Default controls: query component names or types. Guide: read the short package workflow without component.\" })),\n component: Type.Optional(Type.String({ minLength: 1, description: \"Optional control name from the catalog, without UI. prefix. Only valid when topic is controls or omitted.\" })),\n }, { additionalProperties: false }),\n resultSchema: Type.Union([\n Type.Object({ guide: Type.String() }, { additionalProperties: false }),\n Type.Object({ components: Type.Array(Type.String()) }, { additionalProperties: false }),\n Type.Object({ files: Type.Record(Type.String(), Type.String()) }, { additionalProperties: false }),\n ]),\n run: async (_scope, _call, input) => {\n if (input.topic === \"guide\") {\n if (input.component !== undefined) throw new Error(\"component is only allowed with topic: controls or without topic; for topic: guide, omit component.\");\n return { guide: await actorProgramGuide.render({}) };\n }\n return describeClientControls(input.component);\n },\n })],\n});\n", "import { pluginAsset } from \"@ragents/host/plugin-support/plugin-folder.js\";\nimport { boundToTools, handlebarsPrompt } from \"@ragents/host/plugin-support/prompt.js\";\n\nconst buildingTools = [\n \"actor_program_create\",\n \"actor_program_activate\",\n \"actor_program_diagnostics\",\n \"actor_program_list\",\n \"actor_program_remove\",\n \"actor_view_set_visibility\",\n] as const;\n\nexport const actorProgramGuide = handlebarsPrompt(\n \"ragents.actor-programs.prompt\", 750, pluginAsset(\"ragents.actor-programs\", \"prompt.hbs\"),\n);\n\nexport const actorProgramSummary = boundToTools(\n { ...handlebarsPrompt(\"ragents.actor-programs.summary\", 749, pluginAsset(\"ragents.actor-programs\", \"summary.hbs\")), delivery: \"initial\" },\n \"actor_program_controls\",\n ...buildingTools,\n);\n", "import { createHash } from \"node:crypto\";\nimport { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { AgentContribution, JsonValue } from \"@ragents/engine\";\nimport { projectSourceFiles } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\n\nconst entryType = \"ragents.actor-programs.project-diagnostics\";\nconst maxDeltaLines = 8;\nconst maxLineLength = 240;\n\ninterface ProgramDiagnostics {\n fingerprint: string;\n errors: string[];\n}\n\nexport interface ProjectDiagnosticsSnapshot {\n version: 1;\n programs: Record<string, ProgramDiagnostics>;\n}\n\nexport interface ProjectDiagnosticsOptions {\n workspaceFor: (runId: string) => string | Promise<string>;\n check: (runId: string, programName: string, actorId: string, signal?: AbortSignal) => Promise<unknown>;\n applies?: (runId: string, actorId: string) => boolean;\n}\n\nconst messageOf = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst fingerprintOf = (value: unknown): string => createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\");\nconst errorLines = (error: unknown): string[] => {\n const complete = error instanceof Error ? (error as { lines?: unknown }).lines : undefined;\n if (Array.isArray(complete) && complete.every((line) => typeof line === \"string\")) return [...new Set(complete as string[])];\n const lines = messageOf(error).split(\"\\n\").map((line) => line.trim()).filter(Boolean);\n const issues = lines.filter((line) => !/^(Build failed with \\d+ errors?:|.*(?:Typecheck|Diagnostics).*:)$/i.test(line));\n return [...new Set(issues.length ? issues : lines)];\n};\nconst allErrors = (snapshot: ProjectDiagnosticsSnapshot): string[] => Object.entries(snapshot.programs)\n .sort(([left], [right]) => left.localeCompare(right))\n .flatMap(([programName, program]) => program.errors.map((error) => `${programName}: ${error}`));\nconst isSnapshot = (value: unknown): value is ProjectDiagnosticsSnapshot => {\n if (value === null || typeof value !== \"object\") return false;\n const snapshot = value as ProjectDiagnosticsSnapshot;\n return snapshot.version === 1 && snapshot.programs !== null && typeof snapshot.programs === \"object\"\n && Object.values(snapshot.programs).every((program) => program && typeof program.fingerprint === \"string\"\n && Array.isArray(program.errors) && program.errors.every((error) => typeof error === \"string\"));\n};\n\nexport const createProjectDiagnostics = (options: ProjectDiagnosticsOptions) => {\n const snapshots = new Map<string, Map<string, ProjectDiagnosticsSnapshot>>();\n const remember = (runId: string, actorId: string, snapshot: ProjectDiagnosticsSnapshot): void => {\n const agents = snapshots.get(runId) ?? new Map<string, ProjectDiagnosticsSnapshot>();\n agents.set(actorId, snapshot);\n snapshots.set(runId, agents);\n };\n const contribution: AgentContribution = {\n id: entryType,\n beforeModelCall: async ({ runId, agentId }, call) => {\n if (options.applies?.(runId, agentId) === false) return undefined;\n call.signal?.throwIfAborted();\n const previous: ProjectDiagnosticsSnapshot = isSnapshot(call.kept) ? call.kept : { version: 1, programs: {} };\n const next: ProjectDiagnosticsSnapshot = { version: 1, programs: {} };\n let changed = false;\n try {\n const directory = await options.workspaceFor(runId);\n const entries = await readdir(directory, { withFileTypes: true }).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return [];\n throw error;\n });\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n if (!entry.isDirectory() && !entry.isSymbolicLink()) continue;\n call.signal?.throwIfAborted();\n let fingerprint: string;\n let errors: string[] = [];\n try {\n if (entry.isSymbolicLink()) throw new Error(\"Actor projects must not be symlinks.\");\n fingerprint = fingerprintOf(await projectSourceFiles(path.join(directory, entry.name)));\n } catch (error) {\n errors = errorLines(error);\n fingerprint = fingerprintOf({ errors });\n }\n const prior = previous.programs[entry.name];\n if (prior?.fingerprint === fingerprint) {\n next.programs[entry.name] = prior;\n continue;\n }\n changed = true;\n if (errors.length === 0) {\n try { await options.check(runId, entry.name, agentId, call.signal); }\n catch (error) {\n call.signal?.throwIfAborted();\n errors = errorLines(error);\n }\n }\n next.programs[entry.name] = { fingerprint, errors };\n }\n } catch (error) {\n call.signal?.throwIfAborted();\n const errors = errorLines(error);\n Object.assign(next.programs, previous.programs);\n next.programs[\"(Workspace)\"] = { fingerprint: fingerprintOf({ errors }), errors };\n }\n if (JSON.stringify(Object.keys(previous.programs).sort()) !== JSON.stringify(Object.keys(next.programs).sort())) changed = true;\n if (JSON.stringify(previous) !== JSON.stringify(next)) changed = true;\n call.signal?.throwIfAborted();\n remember(runId, agentId, next);\n if (!changed) return undefined;\n call.keep(next as unknown as JsonValue);\n const before = new Set(allErrors(previous));\n const after = new Set(allErrors(next));\n const added = [...after].filter((error) => !before.has(error));\n const resolved = [...before].filter((error) => !after.has(error));\n const changes = [...added.map((error) => `New: ${error}`), ...resolved.map((error) => `Fixed: ${error}`)];\n const lines = changes.slice(0, maxDeltaLines).map((line) => line.length > maxLineLength ? `${line.slice(0, maxLineLength - 3)}...` : line);\n const omitted = changes.length - lines.length;\n return [\n `Actor program project check (TypeScript and build): ${after.size} errors in ${Object.keys(next.programs).length} projects; ${added.length} new, ${resolved.length} fixed.`,\n ...lines,\n ...(omitted > 0 ? [`${omitted} more changes. Complete last state: actor_program_diagnostics.`] : []),\n ].join(\"\\n\");\n },\n };\n return {\n contribution,\n latest(runId: string, actorId: string, programName?: string): string {\n const snapshot = snapshots.get(runId)?.get(actorId);\n if (!snapshot) return \"No actor program project state checked for this agent yet.\";\n const programs = Object.entries(snapshot.programs).filter(([id]) => programName === undefined || id === programName);\n if (programs.length === 0) return programName ? `No checked project state for ${programName}.` : \"No actor program projects exist.\";\n return programs.sort(([left], [right]) => left.localeCompare(right)).map(([id, program]) =>\n [`${id}: ${program.errors.length} errors`, ...program.errors].join(\"\\n\")).join(\"\\n\\n\");\n },\n forget(runId: string): void { snapshots.delete(runId); },\n };\n};\n", "import type { AccessProjectionContribution, JsonValue } from \"@ragents/engine\";\nimport { ACTOR_INVOCATIONS_STATE_ID, ACTOR_PROGRAMS_STATE_ID } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\n\nconst record = (value: JsonValue | undefined): Record<string, JsonValue | undefined> | undefined =>\n value !== null && typeof value === \"object\" && !Array.isArray(value) ? value : undefined;\n\n/** Without runs.inspect, only the name, actor, and views of a program remain; sources, functions, and directories are missing. */\nconst visibleProgram = (state: JsonValue): JsonValue => {\n const program = record(record(state)?.program);\n if (!program) return state;\n const views = Array.isArray(program.views) ? program.views.map((value) => {\n const view = record(value);\n return view ? { id: view.id, key: view.key, title: view.title, visible: view.visible, placements: view.placements } : value;\n }) : [];\n return {\n version: 1,\n program: {\n name: program.name,\n title: program.title,\n actorId: program.actorId,\n actorHandle: program.actorHandle,\n revision: program.revision,\n views,\n },\n };\n};\n\nexport const actorProgramAccessProjections: readonly AccessProjectionContribution[] = [\n { id: ACTOR_PROGRAMS_STATE_ID, state: (entry) => visibleProgram(entry.state), chatEvent: () => undefined },\n { id: ACTOR_INVOCATIONS_STATE_ID, state: (entry) => ({ version: 1, revision: entry.updatedAt }), chatEvent: () => undefined },\n];\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import path from \"node:path\";\nimport type { PluginHost, RAgentsPlugin } from \"@ragents/engine\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { runtimeProviderToken, runGuardToken } from \"@ragents/host/ragents/host-services.js\";\nimport { askServiceToken } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nimport { agentToolsFrom } from \"./agent-tools.js\";\nimport { createActorProgramMethods } from \"./methods.js\";\nimport { createMiniAppFrameRoutes, miniAppsApiPrefix } from \"./routes.js\";\nimport { ActorProgramRuntime } from \"./runtime.js\";\nimport { actorProgramManagementToolNames, actorProgramToolsAvailable, createActorProgramToolContributors } from \"./tool-contributor.js\";\nimport { createControlsToolContributor } from \"./controls-tool.js\";\nimport { actorProgramSummary } from \"./prompts.js\";\nimport { sandboxServicesToken } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { actorProgramsToken } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { createProjectDiagnostics } from \"./project-diagnostics.js\";\nimport { actorProgramAccessProjections } from \"./access-projections.js\";\nconst actorProgramsPlugin = (pluginHost: PluginHost): RAgentsPlugin => ({\n manifest: { id: \"ragents.actor-programs\" },\n register: (host) => {\n const runtime = new ActorProgramRuntime({\n runtime: host.service(runtimeProviderToken), agentToolsFor: agentToolsFrom(pluginHost), askService: () => host.service(askServiceToken), reservedToolNames: () => pluginHost.tools.describe().map((entry) => entry.name),\n serverProcessContextFor: (runId) => host.service(sandboxServicesToken).serverProcessContextFor(runId),\n operations: { operation: (id) => host.operation(id), invoke: (id, context, input) => host.invokeOperation(id, context, input), list: () => pluginHost.operations.describe() },\n directoryFor: (runId) => host.storage.session(runId, \"programs\"),\n scriptSources: (entryId, name) => {\n const script = pluginHost.startEntries.scriptPackage(entryId);\n return !script ? undefined : script.handle === name ? script.files : script.programs.find((program) => program.name === name)?.files;\n },\n sharedPackage: (name) => pluginHost.actorPackages.get(name),\n });\n host.provide(actorProgramsToken, runtime);\n const diagnostics = createProjectDiagnostics({\n workspaceFor: (runId) => runtime.workspaceDirectory(runId), check: (runId, name, actorId, signal) => runtime.check(runId, name, actorId, signal),\n applies: (runId, actorId) => {\n const view = host.service(runtimeProviderToken)().view(runId);\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return !!actor && actor.kind !== \"human\" && actorProgramToolsAvailable(actor, view) && (actor.toolNames === null || actor.toolNames.some((name) => (actorProgramManagementToolNames as readonly string[]).includes(name)));\n },\n });\n host.agentRuntime(diagnostics.contribution);\n host.clientConfig({ routePrefix: miniAppsApiPrefix });\n host.methods(...createActorProgramMethods({ ensureSession: host.service(runGuardToken), runtime }));\n host.http(...createMiniAppFrameRoutes({ ensureSession: host.service(runGuardToken), runtime }));\n host.lifecycle({ id: \"ragents.actor-programs.lifecycle\",\n initialize: () => host.service(sandboxServicesToken).registerWorkspaceRoot({ id: \"ragents.actor-programs\", alias: \"@actors\", environmentVariable: \"RAGENTS_ACTORS_DIR\", directoryFor: (runId) => runtime.workspaceDirectory(runId), ownershipDirectoryFor: async (runId) => path.dirname(await runtime.workspaceDirectory(runId)) }),\n prepareSession: ({ runId }) => runtime.prepareSession(runId), stopSession: ({ runId, signal }) => runtime.stopSession(runId, signal),\n deleteSession: async ({ runId }) => { diagnostics.forget(runId); await runtime.deleteSession(runId); }, shutdown: () => runtime.shutdown(),\n });\n host.prompts(actorProgramSummary);\n host.accessProjections(...actorProgramAccessProjections);\n host.functions(createControlsToolContributor(), ...createActorProgramToolContributors(runtime, diagnostics));\n },\n});\nexport const plugin: PluginModule = { requires: [\"ragents.orchestration\", \"ragents.ask\"], create: actorProgramsPlugin };\n", "import { ToolRegistry, type RunFunction, type ExecutableActor, type PluginHost } from \"@ragents/engine\";\nimport { runtimeProviderToken, runWorkspaceProviderToken } from \"@ragents/host/ragents/host-services.js\";\n\nexport const agentToolsFrom = (host: PluginHost) =>\n async (runId: string, actorId: string, provisional?: ExecutableActor): Promise<readonly RunFunction[]> => {\n const runtime = host.service(runtimeProviderToken)();\n const view = runtime.view(runId);\n const actor = provisional ?? view.actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\") {\n throw new Error(`${actorId} does not denote an active agent in this run.`);\n }\n const registry = new ToolRegistry();\n host.tools.entries().forEach((contributor) => registry.register(contributor));\n const workspace = await host.service(runWorkspaceProviderToken)(runId);\n const tools = await registry.resolve({\n runId,\n actorId,\n turnId: null,\n actor,\n view: provisional ? {...view,actors:[...view.actors,provisional]} : view,\n workspace: workspace.cwd,\n });\n if (actor.toolNames === null) return tools;\n const availableNames = new Set(tools.map((tool) => tool.name));\n const unknown = actor.toolNames.filter((name) => !availableNames.has(name));\n if (unknown.length > 0) {\n throw new Error(`Actor ${actorId} requires unknown tools: ${unknown.join(\", \")}.`);\n }\n const selected = new Set(actor.toolNames);\n return tools.filter((tool) => selected.has(tool.name));\n };\n", "import { DomainError, implement, type MethodContribution } from \"@ragents/engine\";\nimport { actorProgramContracts } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nconst MAX_INPUT_BYTES = 64 * 1024;\n\nexport interface ActorProgramMethodOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\nconst failed = (cause: unknown, code: string, status: number): DomainError => cause instanceof DomainError\n ? cause\n : new DomainError(code, cause instanceof Error ? cause.message : String(cause), status);\n\nconst guarded = <T>(code: string, status: number, work: () => T): T => {\n try {\n return work();\n } catch (cause) {\n throw failed(cause, code, status);\n }\n};\n\nconst checkedInput = (input: unknown): unknown => {\n if (Buffer.byteLength(JSON.stringify(input ?? null), \"utf8\") > MAX_INPUT_BYTES)\n throw new DomainError(\"input-too-large\", `The action input is larger than ${MAX_INPUT_BYTES} bytes.`, 413);\n return input;\n};\n\nexport const createActorProgramMethods = (options: ActorProgramMethodOptions): MethodContribution[] => {\n const session = (runId: string, code: string, status: number): void =>\n guarded(code, status, () => options.ensureSession(runId));\n return [\n implement(actorProgramContracts.apps, ({ runId }, { access }) => {\n session(runId, \"run-unavailable\", 400);\n return {\n apps: options.runtime.apps(runId),\n tools: access.can(\"runs.inspect\") ? options.runtime.runLocalTools(runId) : [],\n };\n }),\n implement(actorProgramContracts.source, async ({ runId, moduleId }) => {\n session(runId, \"run-unavailable\", 404);\n try {\n return await options.runtime.moduleSource(runId, moduleId);\n } catch (cause) {\n throw failed(cause, \"actor-program-unknown\", 404);\n }\n }),\n implement(actorProgramContracts.action, ({ runId, appId, revision, actionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"action-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startInvocation(runId, appId, revision, actionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.invocation, ({ runId, appId, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, appId, invocationId));\n }),\n implement(actorProgramContracts.function, ({ runId, actorHandle, revision, functionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"function-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startFunctionInvocation(runId, actorHandle, revision, functionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.functionInvocation, ({ runId, actorHandle, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, actorHandle, invocationId));\n }),\n ];\n};\n", "import { randomBytes } from \"node:crypto\";\nimport type { HttpRouteContribution } from \"@ragents/engine\";\nimport { guardedJsonRoute } from \"@ragents/host/plugin-support/http.js\";\nimport { browserInputRuntime, browserRuntimeStyles } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nexport const miniAppsApiPrefix = \"/api/plugins/ragents.actor-programs\";\n\nconst framePattern = new RegExp(`^${miniAppsApiPrefix.replaceAll(\".\", \"\\\\.\")}\\/runs\\/([A-Za-z0-9_-]{1,64})\\/apps\\/([a-z][a-z0-9_-]{0,129})\\/frame$`);\n\nconst escapeForwarder = `\n window.addEventListener(\"keydown\", (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n queueMicrotask(() => {\n if (!event.defaultPrevented) parent.postMessage({ type: \"ragents.app.escape\", version: 1, token: bridgeToken, keyboard: ragentsInputBridge.keyboardMessage(event, \"keydown\") }, \"*\");\n });\n });`;\n\nconst themeReceiver = `\n const applyHostTheme = (theme) => {\n if (theme !== \"light\" && theme !== \"dark\") throw new Error(\"The host theme must be light or dark.\");\n document.documentElement.dataset.theme = theme;\n };`;\n\n// The ancestors cover the browser and the VS Code webviews (desktop: vscode-file and vscode-cdn.net, older versions: vscode-webview).\nexport const frameContentSecurityPolicy = (nonce: string): string =>\n `sandbox allow-scripts allow-forms allow-downloads; default-src 'none'; script-src 'nonce-${nonce}'; style-src 'nonce-${nonce}'; img-src 'self' data: blob:; font-src data:; connect-src 'none'; media-src 'self' data: blob:; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self' https://*.vscode-cdn.net vscode-file: vscode-webview:`;\n\nconst escapedScript = (source: string): string => source.replace(/<\\/script/gi, \"<\\\\/script\");\n\nconst typedBridgeSdk = (nonce: string, styles: string): string => `<script nonce=\"${nonce}\">\n${escapedScript(browserInputRuntime)}\nglobalThis.__ragentsAppContext = (() => {\n document.documentElement.dataset.uiSurface = \"mini-app\";\n document.documentElement.dataset.miniAppFrame = \"true\";\n const style = document.createElement(\"style\");\n style.setAttribute(\"nonce\", ${JSON.stringify(nonce)});\n style.textContent = atob(${JSON.stringify(Buffer.from(styles, \"utf8\").toString(\"base64\"))});\n document.head.prepend(style);\n const pending = new Map();\n const listeners = new Set();\n const chats = new Map();\n const freeze = (value) => {\n if (value && typeof value === \"object\") {\n Object.values(value).forEach(freeze);\n Object.freeze(value);\n }\n return value;\n };\n const bridgeToken = new URLSearchParams(location.hash.slice(1)).get(\"ragentsBridge\");\n ${escapeForwarder}\n ${themeReceiver}\n const channel = new MessageChannel();\n const port = channel.port1;\n let currentState = freeze({});\n let currentApp = null;\n let readyResolve;\n const ready = new Promise((resolve) => { readyResolve = resolve; });\n const terminal = new Set([\"succeeded\", \"failed\", \"cancelled\"]);\n const requestId = () => crypto.randomUUID().replaceAll(\"-\", \"\");\n const stateValue = (value) => value && typeof value === \"object\" && value.values && typeof value.values === \"object\"\n ? freeze(structuredClone(value.values))\n : freeze({});\n const settle = (message) => {\n const id = message.requestId || message.invocation?.requestId;\n const waiter = id ? pending.get(id) : undefined;\n if (!waiter || !terminal.has(message.invocation.status)) return;\n pending.delete(id);\n if (message.invocation.status === \"succeeded\") waiter.resolve(message.invocation.result);\n else waiter.reject(new Error(message.invocation.error || \"The app action was not completed.\"));\n };\n port.onmessage = ({ data }) => {\n if (data?.version !== 1) return;\n if (data.type === \"ragents.app.ready\") {\n applyHostTheme(data.theme);\n if (data.hostInput === true) {\n const disposeInput = ragentsInputBridge.installFrameInputBridge(window, port);\n window.addEventListener(\"pagehide\", disposeInput, { once: true });\n }\n currentApp = data.app;\n currentState = stateValue(data.state);\n listeners.forEach((listener) => listener(currentState));\n readyResolve();\n port.postMessage({ type: \"ragents.app.connected\", version: 1 });\n } else if (data.type === \"ragents.app.theme\") {\n applyHostTheme(data.theme);\n } else if (data.type === \"ragents.app.state\") {\n currentState = stateValue(data.state);\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.resolve(currentState);\n }\n listeners.forEach((listener) => listener(currentState));\n } else if (data.type === \"ragents.app.invocation\") {\n settle(data);\n } else if (data.type === \"ragents.app.chat-state\") {\n const entry = chats.get(data.actor);\n if (entry) {\n entry.snapshot = freeze(data.snapshot);\n entry.listeners.forEach((listener) => listener());\n }\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.chat-ack\") {\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.error\") {\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.reject(new Error(data.message));\n }\n }\n };\n port.start();\n const send = async (message) => {\n await ready;\n return new Promise((resolve, reject) => {\n pending.set(message.requestId, { resolve, reject });\n port.postMessage(message);\n });\n };\n if (/^[a-f0-9]{32}$/.test(bridgeToken || \"\")) {\n parent.postMessage(\n { type: \"ragents.app.frame-ready\", version: 1, token: bridgeToken },\n \"*\",\n [channel.port2],\n );\n }\n return Object.freeze({\n get actor() { if (!currentApp) throw new Error(\"The actor view is not ready yet.\"); return Object.freeze({id:currentApp.actorId,handle:currentApp.actorHandle}); },\n ready: ready.then(() => undefined),\n run: Object.freeze({ id: \"current\" }),\n principal: Object.freeze({ id: \"operator\", kind: \"operator\" }),\n state: Object.freeze({\n read: () => currentState,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n }),\n chat: Object.freeze({\n read: (actor) => chats.get(actor)?.snapshot,\n subscribe: (actor, listener) => {\n let entry = chats.get(actor);\n if (!entry) {\n entry = { listeners: new Set(), snapshot: undefined, started: false };\n chats.set(actor, entry);\n ready.then(() => {\n if (chats.get(actor) !== entry) return;\n entry.started = true;\n send({ type: \"ragents.app.chat-watch\", version: 1, requestId: requestId(), actor })\n .catch((error) => {\n if (chats.get(actor) !== entry) return;\n entry.snapshot = freeze({ messages: [], running: false, error: error.message });\n entry.listeners.forEach((notify) => notify());\n });\n });\n }\n entry.listeners.add(listener);\n return () => {\n entry.listeners.delete(listener);\n if (entry.listeners.size > 0 || chats.get(actor) !== entry) return;\n chats.delete(actor);\n if (entry.started) {\n port.postMessage({ type: \"ragents.app.chat-unwatch\", version: 1, requestId: requestId(), actor });\n }\n };\n },\n send: (actor, text, attachments) => send({ type: \"ragents.app.chat-send\", version: 1, requestId: requestId(), actor, text, attachments }),\n }),\n capabilities: Object.freeze({\n list: () => (currentApp?.actions ?? []).map((action) => action.id),\n call: async (actionId, input = {}) => {\n await ready;\n if (!(currentApp?.actions ?? []).some((action) => action.id === actionId)) {\n throw new Error(\"The requested app action is not installed.\");\n }\n return send({\n type: \"ragents.app.invoke\",\n version: 1,\n requestId: requestId(),\n actionId,\n input,\n });\n },\n }),\n });\n})();\n</script>`;\n\nexport const frameHtml = (\n frame: ReturnType<ActorProgramRuntime[\"frame\"]>,\n nonce: string,\n): string => {\n const head = /<head(?:\\s[^>]*)?>/i;\n if (!head.test(frame.html)) throw new Error(\"The installed app has no valid head.\");\n const client = `<script nonce=\"${nonce}\" type=\"module\">await globalThis.__ragentsAppContext.ready;${escapedScript(frame.clientJavaScript)}</script>`;\n return frame.html.replace(head, (value) => `${value}${typedBridgeSdk(nonce, `${browserRuntimeStyles}\\n${frame.styles}`)}${client}`);\n};\n\nexport interface MiniAppFrameOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\n/** The plugin's only delivery route: the HTML of the mini-app frame; everything else is methods. */\nexport const createMiniAppFrameRoutes = (options: MiniAppFrameOptions): HttpRouteContribution[] => [\n {\n id: \"ragents.actor-programs.frame\",\n isApiPath: (pathname) => pathname.startsWith(miniAppsApiPrefix),\n matches: (request, url) => request.method === \"GET\" && framePattern.test(url.pathname),\n handle: async ({ request, response, url }) => {\n const match = url.pathname.match(framePattern);\n if (!match) throw new Error(\"Invalid app route.\");\n const [, runId, appId] = match;\n await guardedJsonRoute({\n request,\n response,\n ensureSession: () => options.ensureSession(runId!),\n errorStatus: 404,\n handle: () => {\n const revision = url.searchParams.get(\"revision\") ?? \"\";\n const nonce = randomBytes(18).toString(\"base64\");\n const frame = options.runtime.frame(runId!, appId!, revision);\n const content = Buffer.from(frameHtml(frame, nonce), \"utf8\");\n response.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Security-Policy\": frameContentSecurityPolicy(nonce),\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Content-Length\": content.byteLength,\n \"Referrer-Policy\": \"no-referrer\",\n \"X-Content-Type-Options\": \"nosniff\",\n });\n response.end(content);\n },\n });\n },\n },\n];\n", "import { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, readdir, readFile, realpath, rm, writeFile } from \"node:fs/promises\";\nimport { lstatSync, readFileSync, renameSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport { Type, type TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport { actorByHandle, actorDescriptionMaxLength, agentTools, assertJsonValue, canonicalHash, defineRunFunction, defineToolAvailability, emptyUsage, handleKey, inheritedGrants, runCapabilityContractHash, scriptInputOf, schemaComplaints, type Actor, type ActorProgramExecutor, type RunFunction, type CommandContext, type ExecutableActor, type JsonValue, type Orchestration, type PluginContext, type RunCapabilityDescriptor, type RunView, type TurnRequest, type TurnResult, } from \"@ragents/engine\";\nimport { ACTOR_PROGRAMS_STATE_ID, ACTOR_INVOCATIONS_STATE_ID, ACTOR_SCRIPT_STATE_ID, ACTOR_STATE_ID, resolveActorView, type ActorDataState, type ActorFunctionDefinition, type ActorFunctionInvocation, type ActorPackageOrigin, type ActorProgramDefinition, type ActorProgramIdentity, type ActorProgramState, type ActorScriptDelivery, type ActorScriptPackage, type ActorScriptState, type ActorViewListing, } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActivatedActorProgram, ActorProgramSource, ActorProgramsService, RunScriptSources, RunScriptStartInput } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { jsonValue, jsonBytes, MAX_INVOCATIONS_STATE_BYTES } from \"./limits.js\";\nimport { agentResultText, finishesOf, MAX_OPEN_STARTS, scriptResultContent, scriptStateOf, type ScriptFinish } from \"./script-state.js\";\nimport { agentCapabilityBinding, operatorCapabilityBinding } from \"./capability-resolver.js\";\nimport type { ActorOperationPort } from \"./operations.js\";\nimport { compileClientProject, installClientSdk } from \"@ragents/host/plugin-support/actor-programs/client-compiler.js\";\nimport { compileAppBackend, installServerSdk, packageIdentity, prepareAppProject, prepareAppWorkspace, projectSourceFiles, readAppPackage, typecheckServerProject, type AppContract } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { syncWorkspaceOwnership } from \"@ragents/host/plugin-support/workspace-ownership.js\";\nimport { runManagedProcess, sandboxedLaunch, type WorkspaceProcessContext } from \"@ragents/workspace-executor\";\nimport { runModuleTemplates, templateById, templateFiles } from \"./templates.js\";\nimport { createTestReport, testReporterArgument } from \"./test-report.js\";\nimport { FRAME_BODY_CLASS, FRAME_DOCUMENT_CLASS, FRAME_ROOT_CLASS } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport { buildTailwind } from \"@ragents/host/plugin-support/actor-programs/tailwind.js\";\nimport type { AskService } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nconst NAME = /^[a-z][a-z0-9-]{0,63}$/;\nconst errorText = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst maxShownComplaints = 10;\nconst maxComplaintLength = 240;\n/** A failed check names the count and the first complaints; `lines` keeps all of them for actor_program_diagnostics. */\nconst checkFailure = (title: string, lines: readonly string[], fallback: string): Error => {\n const all = [...new Set(lines.map((line) => line.trim()).filter((line) => line !== \"\"))];\n if (all.length === 0)\n return new Error(fallback);\n const shown = all.slice(0, maxShownComplaints).map((line) => line.length > maxComplaintLength ? `${line.slice(0, maxComplaintLength - 3)}...` : line);\n const omitted = all.length - shown.length;\n return Object.assign(new Error([\n `${title}: ${all.length} errors.`,\n ...shown,\n ...(omitted > 0 ? [`... and ${omitted} more; all with actor_program_diagnostics.`] : []),\n ].join(\"\\n\")), { lines: all });\n};\nconst actorDescriptionOf = (text: string | undefined): string | undefined => {\n const line = (text ?? \"\").replace(/\\s+/g, \" \").trim();\n return line.length <= actorDescriptionMaxLength ? line || undefined : `${line.slice(0, actorDescriptionMaxLength - 3).trimEnd()}...`;\n};\nconst exposed = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"Published function of an active actor in the run.\" }, () => true);\nconst objectSchema = { type: \"object\", additionalProperties: true };\nconst checked = (schema: object, value: unknown, label: string): JsonValue => {\n const result = jsonValue(value, label);\n if (!Value.Check(schema as TSchema, result))\n throw new Error(`${label}: ${schemaComplaints(schema as TSchema, result)}`);\n return result;\n};\nconst safePath = (name: string): string => {\n if (!name || path.isAbsolute(name) || name.includes(\"\\\\\") || name.includes(\"\\0\") || name.split(\"/\").some((part) => !part || part === \".\" || part === \"..\"))\n throw new Error(`Invalid package path ${name}.`);\n return name;\n};\nconst inside = async (directory: string, relative: string): Promise<string> => {\n const root = await realpath(directory);\n const file = await realpath(path.join(root, safePath(relative)));\n if (!file.startsWith(`${root}${path.sep}`))\n throw new Error(`Package path ${relative} is outside the package.`);\n const stat = await lstat(file);\n if (!stat.isFile() || stat.size > 2000000)\n throw new Error(`Invalid or too large package file ${relative}.`);\n return readFile(file, \"utf8\");\n};\nconst occupied = (file: string): boolean => {\n try {\n lstatSync(file);\n return true;\n }\n catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\")\n return false;\n throw error;\n }\n};\nconst packageExists = (name: string): Error => new Error(`The package ${name} already exists.`);\n// Check and rename synchronously one after the other, because rename silently replaces an empty target folder.\nconst commitPackage = (staged: string, directory: string, name: string): void => {\n if (occupied(directory))\n throw packageExists(name);\n try {\n renameSync(staged, directory);\n }\n catch (error) {\n if ([\"EEXIST\", \"ENOTEMPTY\", \"ENOTDIR\"].includes((error as NodeJS.ErrnoException).code ?? \"\"))\n throw packageExists(name);\n throw error;\n }\n};\nconst sameSources = async (directory: string, files: readonly ActorProgramSource[]): Promise<boolean> =>\n packageIdentity(await projectSourceFiles(directory)) === packageIdentity(files);\nconst sameOrigin = (left: ActorPackageOrigin, right: ActorPackageOrigin): boolean =>\n left.kind === \"script\" ? right.kind === \"script\" && left.entryId === right.entryId : right.kind === \"shared\" && left.pluginId === right.pluginId;\nconst originText = (origin: ActorPackageOrigin | undefined): string =>\n !origin ? \"that no run script installed\" : origin.kind === \"script\" ? `from the run script ${origin.entryId}` : `shared by ${origin.pluginId}`;\n/** A package the host installs for a run script, with the origin it records. */\ninterface OriginPackage { name: string; files: readonly ActorProgramSource[]; origin: ActorPackageOrigin }\n/** What a claim wrote for a name and what it replaced; a release restores only a record nobody changed since. */\ninterface Claim { name: string; claimed: ActorScriptPackage; previous: ActorScriptPackage | undefined }\n/** A name reserved by a shared package that the run holds for something else. */\nconst foreignShared = (name: string, pluginId: string, record: ActorScriptPackage | undefined): Error => {\n const holder = !record ? \"that the host did not install\" : sameOrigin(record.origin, { kind: \"shared\", pluginId }) ? \"that was changed in the run\" : originText(record.origin);\n return new Error(`${name} is the shared actor package of ${pluginId}, but this run has a package ${name} ${holder}; the host neither uses nor replaces it. Remove or rename that package.`);\n};\nconst descriptor = (tool: RunFunction): RunCapabilityDescriptor => ({ id: tool.name, label: tool.label, description: tool.description, schema: tool.schema, resultSchema: tool.resultSchema });\ninterface BackendBinding {\n id: string;\n kind: \"tool\" | \"app-action\" | \"input\";\n principal: {\n id: string;\n kind: \"agent\" | \"script\" | \"operator\";\n };\n output?: string[];\n descriptorsFor: (capabilityIds: readonly string[]) => readonly RunCapabilityDescriptor[];\n call: (name: string, input: JsonValue, index: number) => Promise<JsonValue>;\n}\ninterface CapabilityContract {\n capabilityIds: string[];\n capabilityContractHash: string;\n}\ninterface InvocationState {\n version: 1;\n invocations: ActorFunctionInvocation[];\n requestIds: string[];\n}\ninterface CompiledProgram {\n directory: string;\n files: ActorProgramSource[];\n definition: ActorProgramDefinition;\n backendJavaScript?: string;\n frameStyles: string;\n clients: {\n file: string;\n javaScript: string;\n }[];\n createActor: boolean;\n}\nexport interface ActorProgramRuntimeOptions {\n runtime: () => Orchestration;\n agentToolsFor: (runId: string, actorId: string, provisional?: ExecutableActor) => Promise<readonly RunFunction[]>;\n askService: () => AskService;\n reservedToolNames: () => readonly string[];\n /** Programs, tests, and builds run on the server, even with a workspace on a workstation. */\n serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;\n operations: ActorOperationPort;\n directoryFor: (runId: string) => string;\n scriptSources: (entryId: string, name: string) => readonly ActorProgramSource[] | undefined;\n /** A shared actor package of the profile, by name. */\n sharedPackage: (name: string) => { pluginId: string; files: readonly ActorProgramSource[] } | undefined;\n}\ntype Recognized = { start: JsonValue } | { result: JsonValue };\nexport class ActorProgramRuntime implements ActorProgramsService, ActorProgramExecutor {\n readonly #options: ActorProgramRuntimeOptions;\n readonly #queues = new Map<string, Promise<void>>();\n readonly #active = new Map<string, {\n runId: string;\n actorId: string;\n controller: AbortController;\n completed: Promise<unknown>;\n }>();\n readonly #installing = new Set<string>();\n readonly #creating = new Set<string>();\n readonly #staged = new Set<string>();\n readonly #removing = new Set<string>();\n readonly #knownRuns = new Set<string>();\n readonly #recovered = new Set<string>();\n readonly #packageLocks = new Map<string, Promise<void>>();\n readonly #identities = new Map<string, string>();\n readonly #epochs = new Map<string, number>();\n readonly #stopping = new Set<string>();\n #shuttingDown = false;\n constructor(options: ActorProgramRuntimeOptions) { this.#options = options; }\n runtime(): Orchestration { return this.#options.runtime(); }\n view(runId: string): RunView { return this.runtime().view(runId); }\n ownerId(runId: string): string { return this.runtime().state(runId).ownerId; }\n operatorContext(runId: string, label = \"operation\"): CommandContext { return { actorId: this.ownerId(runId), commandId: `actor-program:${label}:${randomUUID()}` }; }\n programsOf(view: RunView): ActorProgramDefinition[] {\n return view.pluginStates.flatMap((entry) => {\n if (entry.pluginId !== ACTOR_PROGRAMS_STATE_ID || entry.scope.kind !== \"actor\")\n return [];\n const state = entry.state as unknown as ActorProgramState;\n const actorId = entry.scope.actorId;\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return state.program && actor && actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\" ? [state.program] : [];\n });\n }\n programs(runId: string): ActorProgramDefinition[] { return this.runtime().listRuns().some(run => run.id === runId) ? this.programsOf(this.view(runId)) : []; }\n actor(runId: string, actorId: string): ExecutableActor {\n const actor = this.view(runId).actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\")\n throw new Error(\"The actor is not active.\");\n if (this.#removing.has(`${runId}\\0${actorId}`))\n throw new Error(\"The actor package is being removed.\");\n return actor;\n }\n resolveActor(runId: string, callerId: string, reference: string): ExecutableActor {\n const actors = this.view(runId).actors;\n const found = reference === \"self\" ? actors.find((candidate) => candidate.id === callerId) : actorByHandle(actors, reference);\n if (!found)\n throw new Error(`Actor ${reference} is unknown.`);\n return this.actor(runId, found.id);\n }\n data(runId: string, actorId: string): ActorDataState {\n const view = this.view(runId);\n const entry = view.pluginStates.find((item) => item.pluginId === ACTOR_STATE_ID && item.scope.kind === \"actor\" && item.scope.actorId === actorId);\n const revision = this.runtime().events(runId).filter((event) => (event.type === \"plugin.state-replaced\" || event.type === \"plugin.state-patched\") && event.payload.pluginId === ACTOR_STATE_ID && event.payload.scope.kind === \"actor\" && event.payload.scope.actorId === actorId).at(-1)?.sequence ?? 0;\n return { version: 1, revision, values: (entry?.state ?? {}) as Record<string, unknown> };\n }\n #writeProgram(context: CommandContext, runId: string, actorId: string, program: ActorProgramDefinition | null): void {\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_PROGRAMS_STATE_ID, scope: { kind: \"actor\", actorId }, state: jsonValue({ version: 1, program }, \"Actor program\") });\n }\n /** Which run script installed which package, and the inputs the host queued for programs to recognize. */\n #script(runId: string): ActorScriptState {\n return scriptStateOf(this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === \"run\")?.state);\n }\n /** Keeps only deliveries whose input is still queued or being processed, and `keep`, whose input follows right after this write. */\n #writeScript(runId: string, state: ActorScriptState, keep?: string): void {\n const live = this.#liveCommands(runId, new Set(state.deliveries.map((delivery) => delivery.actorId)));\n const deliveries = state.deliveries.filter((delivery) => delivery.commandId === keep || live.has(delivery.commandId));\n this.runtime().replacePluginState(this.operatorContext(runId, \"script\"), runId, { pluginId: ACTOR_SCRIPT_STATE_ID, scope: { kind: \"run\" }, state: jsonValue({ ...state, deliveries }, \"Run script state\") });\n }\n /** The commands that queued inputs of these actors which are pending or belong to a running turn. */\n #liveCommands(runId: string, actorIds: ReadonlySet<string>): Set<string> {\n const view = this.view(runId);\n const running = new Set(view.turns.filter((turn) => turn.status === \"running\").map((turn) => turn.id));\n const sequences = new Set(view.inputs.filter((input) => actorIds.has(input.actorId)\n && (input.lifecycle.kind === \"pending\" || input.lifecycle.kind === \"claimed\" && running.has(input.lifecycle.turnId))).map((input) => input.sequence));\n const commands = new Set<string>();\n if (sequences.size === 0)\n return commands;\n const oldest = Math.min(...sequences);\n for (const event of this.runtime().recentEvents(runId)) {\n if (event.sequence < oldest)\n break;\n if (sequences.has(event.sequence))\n commands.add(event.commandId);\n }\n return commands;\n }\n #commandOf(runId: string, sequence: number): string | undefined {\n for (const event of this.runtime().recentEvents(runId)) {\n if (event.sequence === sequence)\n return event.commandId;\n if (event.sequence < sequence)\n return undefined;\n }\n return undefined;\n }\n async #writeSources(directory: string, files: readonly ActorProgramSource[]): Promise<void> {\n for (const source of files) {\n const file = path.join(directory, safePath(source.path));\n if (source.path.split(\"/\").includes(\"node_modules\"))\n throw new Error(\"Package sources must not overwrite dependencies.\");\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content, { flag: \"wx\" });\n }\n }\n #originSources(name: string, origin: ActorPackageOrigin): readonly ActorProgramSource[] | undefined {\n if (origin.kind === \"script\")\n return this.#options.scriptSources(origin.entryId, name);\n const shared = this.#options.sharedPackage(name);\n return shared?.pluginId === origin.pluginId ? shared.files : undefined;\n }\n /** The identity of the sources the program was built from; a build never changes, so it is read once. */\n #identityOf(program: ActorProgramDefinition): string {\n const known = this.#identities.get(program.directory);\n if (known !== undefined)\n return known;\n const identity = packageIdentity(JSON.parse(readFileSync(path.join(program.directory, \"sources.json\"), \"utf8\")) as ActorProgramSource[]);\n this.#identities.set(program.directory, identity);\n return identity;\n }\n /** A package still built from what its origin installed reloads from the origin's current sources; one changed in the run keeps its own. */\n #refresh(runId: string, program: ActorProgramDefinition, signal: AbortSignal): Promise<void> {\n return this.#withPackages(runId, [program.name], () => this.#reload(runId, program, signal));\n }\n async #reload(runId: string, program: ActorProgramDefinition, signal: AbortSignal): Promise<void> {\n const record = this.#script(runId).packages[program.name];\n const files = record && this.#identityOf(program) === record.identity ? this.#originSources(program.name, record.origin) : undefined;\n if (record && files) {\n const state = this.#script(runId);\n this.#writeScript(runId, { ...state, packages: { ...state.packages, [program.name]: { ...state.packages[program.name]!, identity: packageIdentity(files) } } });\n const directory = path.join(await this.workspaceDirectory(runId), program.name);\n for (const entry of await readdir(directory))\n if (entry !== \"node_modules\")\n await rm(path.join(directory, entry), { recursive: true, force: true });\n await this.#writeSources(directory, files);\n }\n try {\n await this.#activate(this.operatorContext(runId, \"refresh\"), runId, program.name, false, signal);\n }\n catch (error) {\n throw new Error(`The capability contract of ${program.name} has changed and the reactivation failed: ${errorText(error)}`);\n }\n }\n async #bound<T extends CapabilityContract>(runId: string, actorId: string, revision: string | undefined, signal: AbortSignal, contractOf: (program: ActorProgramDefinition) => T, descriptorsFor: BackendBinding[\"descriptorsFor\"]): Promise<{ program: ActorProgramDefinition; contract: T; descriptors: readonly RunCapabilityDescriptor[] }> {\n const current = () => {\n const program = this.programs(runId).find((entry) => entry.actorId === actorId);\n if (!program)\n throw new Error(\"The actor has no active program.\");\n return program;\n };\n const bind = (program: ActorProgramDefinition) => {\n const contract = contractOf(program);\n const descriptors = descriptorsFor(contract.capabilityIds);\n return { program, contract, descriptors, drifted: runCapabilityContractHash(descriptors) !== contract.capabilityContractHash };\n };\n const program = current();\n if (revision !== undefined && program.revision !== revision)\n throw new Error(\"The actor package was replaced.\");\n const bound = bind(program);\n if (!bound.drifted)\n return bound;\n await this.#refresh(runId, program, signal);\n const refreshed = bind(current());\n if (refreshed.drifted)\n throw new Error(`The capability contract of ${program.name} still differs after the reactivation.`);\n return refreshed;\n }\n async #acquire(key: string): Promise<() => void> {\n const previous = this.#packageLocks.get(key) ?? Promise.resolve();\n const released = Promise.withResolvers<void>();\n const held = previous.then(() => released.promise);\n this.#packageLocks.set(key, held);\n await previous;\n return () => {\n released.resolve();\n if (this.#packageLocks.get(key) === held)\n this.#packageLocks.delete(key);\n };\n }\n /** One exclusion per run and package name for creating, activating, installing and ensuring; callers wait instead of failing. */\n async #withPackages<T>(runId: string, names: readonly string[], work: () => Promise<T>): Promise<T> {\n const releases: (() => void)[] = [];\n try {\n for (const name of [...new Set(names)].sort())\n releases.push(await this.#acquire(`${runId}\\0${name}`));\n return await work();\n }\n finally {\n for (const release of releases.reverse())\n release();\n }\n }\n async workspaceDirectory(runId: string): Promise<string> { this.#knownRuns.add(runId); return prepareAppWorkspace(path.join(this.#options.directoryFor(runId), \"actor-workspace\")); }\n templates() { return runModuleTemplates.map(({ id, title, description }) => ({ id, title, description })); }\n async #create<T>(runId: string, name: string, build: (directory: string) => Promise<T>): Promise<{ directory: string; built: T }> {\n this.#assertName(name);\n const actors = await this.workspaceDirectory(runId);\n const directory = path.join(actors, name);\n const key = `${runId}\\0${name}`;\n if (this.#creating.has(key))\n throw new Error(`The package ${name} is being created.`);\n if (occupied(directory))\n throw packageExists(name);\n this.#creating.add(key);\n const staging = path.join(path.dirname(actors), \".staging\");\n const staged = path.join(staging, `${name}-${randomUUID()}`);\n this.#staged.add(staged);\n try {\n await mkdir(staging, { recursive: true });\n for (const entry of await readdir(staging))\n if (!this.#staged.has(path.join(staging, entry)))\n await rm(path.join(staging, entry), { recursive: true, force: true });\n await mkdir(staged);\n const built = await build(staged);\n commitPackage(staged, directory, name);\n return { directory, built };\n }\n finally {\n this.#creating.delete(key);\n this.#staged.delete(staged);\n await rm(staged, { recursive: true, force: true });\n }\n }\n scaffold(runId: string, name: string, templateId: string) {\n return this.#withPackages(runId, [name], () => this.#scaffold(runId, name, templateId));\n }\n async #scaffold(runId: string, name: string, templateId: string) {\n const sources = Object.entries(templateFiles(templateById(templateId), name)).map(([file, content]) => ({ path: file, content }));\n const { built: files } = await this.#create(runId, name, async (directory) => {\n await this.#writeSources(directory, sources);\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor }) : undefined;\n await installClientSdk(directory, { stateSchema: backend?.contract.state ?? objectSchema, actions: Object.entries(backend?.contract.functions ?? {}).map(([id, fn]) => ({ id, inputSchema: fn.input, resultSchema: fn.output })) });\n return (await projectSourceFiles(directory)).map((file) => file.path);\n });\n return { name, directory: `@actors/${name}`, files };\n }\n importPackage(context: CommandContext, runId: string, name: string, files: readonly ActorProgramSource[], signal?: AbortSignal): Promise<ActivatedActorProgram> {\n return this.#withPackages(runId, [name], () => this.#import(context, runId, name, files, signal));\n }\n async #import(context: CommandContext, runId: string, name: string, files: readonly ActorProgramSource[], signal?: AbortSignal): Promise<ActivatedActorProgram> {\n const { directory } = await this.#create(runId, name, (staged) => this.#writeSources(staged, files));\n try {\n await this.#activate(context, runId, name, true, signal);\n return this.#activated(runId, name);\n }\n catch (error) {\n await rm(directory, { recursive: true, force: true });\n throw error;\n }\n }\n #activated(runId: string, name: string): ActivatedActorProgram {\n const program = this.#program(runId, name);\n return { name, actorId: program.actorId, actorHandle: program.actorHandle, views: program.views.length };\n }\n installScript(context: CommandContext, runId: string, script: RunScriptSources, signal?: AbortSignal): Promise<ActivatedActorProgram> {\n return this.#withPackages(runId, [script.handle, ...script.programs.map((program) => program.name), ...script.sharedPrograms], () => this.#install(context, runId, script, signal));\n }\n async #install(context: CommandContext, runId: string, script: RunScriptSources, signal?: AbortSignal): Promise<ActivatedActorProgram> {\n const root = await this.workspaceDirectory(runId);\n const before = this.#script(runId).packages;\n const own: ActorPackageOrigin = { kind: \"script\", entryId: script.entryId };\n const programs: OriginPackage[] = [\n ...script.programs.map((program) => ({ ...program, origin: own })),\n ...script.sharedPrograms.map((name) => {\n const shared = this.#options.sharedPackage(name);\n if (!shared)\n throw new Error(`The run script ${script.entryId} needs the shared actor package ${name}, which no plugin of this profile provides.`);\n return { name, files: shared.files, origin: { kind: \"shared\", pluginId: shared.pluginId } as const };\n }),\n ];\n const present = await this.#presentPrograms(root, script.entryId, programs, before);\n const reuse = this.#reusesScript(runId, root, script, before);\n const missing = programs.filter((program) => !present.has(program.name));\n const claims = this.#claim(runId, [...missing, ...(reuse ? [] : [{ name: script.handle, files: script.files, origin: own }])]);\n const copied: string[] = [];\n try {\n for (const program of missing) {\n signal?.throwIfAborted();\n await this.#create(runId, program.name, (staged) => this.#writeSources(staged, program.files));\n copied.push(program.name);\n }\n return reuse ? await this.#restartScript(context, runId, script.handle, signal) : await this.#import(context, runId, script.handle, script.files, signal);\n }\n catch (error) {\n for (const name of copied)\n await rm(path.join(root, name), { recursive: true, force: true });\n try {\n this.#release(runId, claims);\n }\n catch (release) {\n throw new Error(`${errorText(error)} The ownership record could not be removed again (${errorText(release)}); it names no package and the next start replaces it.`);\n }\n throw error;\n }\n }\n /** Ownership is recorded before anything is created, so no package the host installs exists without its origin. */\n #claim(runId: string, packages: readonly OriginPackage[]): readonly Claim[] {\n const state = this.#script(runId);\n const claims = packages.map((entry): Claim => {\n const previous = state.packages[entry.name];\n return { name: entry.name, previous, claimed: { origin: entry.origin, identity: packageIdentity(entry.files), count: previous && sameOrigin(previous.origin, entry.origin) ? previous.count : 0, open: [] } };\n });\n if (claims.length > 0)\n this.#writeScript(runId, { ...state, packages: { ...state.packages, ...Object.fromEntries(claims.map((claim) => [claim.name, claim.claimed])) } });\n return claims;\n }\n /** Compare and swap: a record someone changed since the claim stays as it is. */\n #release(runId: string, claims: readonly Claim[]): void {\n const state = this.#script(runId);\n const released = claims.filter((claim) => isDeepStrictEqual(state.packages[claim.name], claim.claimed));\n if (released.length === 0)\n return;\n const names = new Set(released.map((claim) => claim.name));\n const kept = Object.entries(state.packages).filter(([name]) => !names.has(name));\n const restored = released.flatMap((claim) => claim.previous ? [[claim.name, claim.previous] as const] : []);\n this.#writeScript(runId, { ...state, packages: Object.fromEntries([...kept, ...restored]) });\n }\n /** Whether the host installed this shared package from this plugin and nobody changed it since. */\n #hostShared(record: ActorScriptPackage | undefined, pluginId: string, identity: string): boolean {\n return record !== undefined && sameOrigin(record.origin, { kind: \"shared\", pluginId }) && record.identity === identity;\n }\n /** The names already in the run that the start keeps; a different package, or one under a shared name the host did not install, is an error before anything is copied. */\n async #presentPrograms(root: string, entryId: string, programs: readonly OriginPackage[], packages: Readonly<Record<string, ActorScriptPackage>>): Promise<ReadonlySet<string>> {\n const present = await Promise.all(programs.map(async (program) => {\n const directory = path.join(root, program.name);\n if (!occupied(directory))\n return false;\n if (program.origin.kind === \"shared\") {\n if (this.#hostShared(packages[program.name], program.origin.pluginId, packageIdentity(await projectSourceFiles(directory))))\n return true;\n throw foreignShared(program.name, program.origin.pluginId, packages[program.name]);\n }\n if (await sameSources(directory, program.files))\n return true;\n throw new Error(`The run script ${entryId} bundles the program ${program.name}, but this run already has a different package ${program.name} ${originText(packages[program.name]?.origin)}.`);\n }));\n return new Set(programs.filter((_, index) => present[index]).map((program) => program.name));\n }\n /** A recorded origin without actor and folder is left over from a failed start, whichever template it names, and counts as not installed. */\n #reusesScript(runId: string, root: string, script: RunScriptSources, packages: Readonly<Record<string, ActorScriptPackage>>): boolean {\n const holder = this.view(runId).actors.find((actor) => actor.handle === script.handle);\n const exists = occupied(path.join(root, script.handle));\n if (!holder && !exists)\n return false;\n const origin = packages[script.handle]?.origin;\n if (origin !== undefined && !sameOrigin(origin, { kind: \"script\", entryId: script.entryId }))\n throw new Error(`The package ${script.handle} in this run ${origin.kind === \"script\" ? `comes from the run script ${origin.entryId}` : `is the shared package of ${origin.pluginId}`}, not from the run script ${script.entryId}.`);\n if (origin !== undefined && exists && (!holder || holder.kind === \"script\"))\n return true;\n throw new Error(holder\n ? `Handle @${script.handle} already belongs to ${holder.displayName} in this run, not to the run script ${script.entryId}.`\n : `The package ${script.handle} already exists in this run and was not installed by the run script ${script.entryId}.`);\n }\n async #restartScript(context: CommandContext, runId: string, handle: string, signal?: AbortSignal): Promise<ActivatedActorProgram> {\n const view = this.view(runId);\n const holder = view.actors.find((actor) => actor.handle === handle);\n const state = holder && view.pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" && entry.scope.actorId === holder.id)?.state as unknown as ActorProgramState | undefined;\n if (!holder || !state?.program)\n await this.#activate(context, runId, handle, true, signal);\n else if (holder.kind !== \"human\" && holder.lifecycle.kind === \"stopped\")\n this.runtime().restartActor(context, runId, holder.id, \"Run script started again\");\n return this.#activated(runId, handle);\n }\n enqueueStart(context: CommandContext, runId: string, handle: string, start: RunScriptStartInput): { count: number } {\n const program = this.#program(runId, handle);\n const recorded = this.#script(runId).packages[handle];\n if (!recorded)\n throw new Error(`The package ${handle} was not installed by a run script.`);\n const state = this.#script(runId);\n const record = state.packages[handle]!;\n const count = record.count + 1;\n const delivery: ActorScriptDelivery = { commandId: context.commandId, actorId: program.actorId, kind: \"start\", name: handle, count, embedded: start.embedded, startedBy: start.startedBy };\n this.#writeScript(runId, { ...state, packages: { ...state.packages, [handle]: { ...record, count } }, deliveries: [...state.deliveries, delivery] }, context.commandId);\n try {\n this.runtime().enqueueInput(context, runId, { actorId: program.actorId, content: start.content });\n }\n catch (error) {\n const current = this.#script(runId);\n this.#writeScript(runId, { ...current, packages: { ...current.packages, [handle]: { ...current.packages[handle]!, count: record.count } },\n deliveries: current.deliveries.filter((entry) => entry.commandId !== context.commandId) });\n throw error;\n }\n return { count };\n }\n /** A start or result the host queued for this actor, recognized by the command that queued the input; it is consumed here. */\n #recognize(runId: string, actorId: string, input: { sequence: number; content: string }): Recognized | undefined {\n const state = this.#script(runId);\n if (!state.deliveries.some((delivery) => delivery.actorId === actorId))\n return undefined;\n const commandId = this.#commandOf(runId, input.sequence);\n const delivery = state.deliveries.find((entry) => entry.commandId === commandId && entry.actorId === actorId);\n if (!delivery)\n return undefined;\n const deliveries = state.deliveries.filter((entry) => entry !== delivery);\n if (delivery.kind === \"result\") {\n this.#writeScript(runId, { ...state, deliveries });\n return { result: JSON.parse(input.content) as JsonValue };\n }\n const record = state.packages[delivery.name];\n const packages = record ? { ...state.packages, [delivery.name]: { ...record, open: [...record.open, { count: delivery.count, startedBy: delivery.startedBy }].slice(-MAX_OPEN_STARTS) } } : state.packages;\n this.#writeScript(runId, { ...state, packages, deliveries });\n const { input: value, options } = JSON.parse(input.content) as { input: JsonValue; options: Record<string, JsonValue> };\n return { start: { input: value, options, embedded: delivery.embedded, startedBy: delivery.startedBy, count: delivery.count } };\n }\n /** Checked before the state commits: every finish ends a different open start of this package. */\n #finishesOf(runId: string, program: ActorProgramDefinition, value: unknown): readonly ScriptFinish[] {\n const finishes = finishesOf(value);\n const open = new Set(this.#script(runId).packages[program.name]?.open.map((entry) => entry.count) ?? []);\n for (const [index, finish] of finishes.entries()) {\n if (!open.has(finish.start) || finishes.findIndex((other) => other.start === finish.start) !== index)\n throw new Error(`finish: start ${finish.start} of @${program.actorHandle} is not open; it was finished already, never reached the program, or is older than the last ${MAX_OPEN_STARTS} open starts.`);\n }\n return finishes;\n }\n #deliverResults(request: TurnRequest<\"script\">, program: ActorProgramDefinition, finishes: readonly ScriptFinish[]): void {\n if (finishes.length === 0)\n return;\n const state = this.#script(request.runId);\n const record = state.packages[program.name]!;\n const finished = new Set(finishes.map((finish) => finish.start));\n const starters = new Map(record.open.map((entry) => [entry.count, entry.startedBy]));\n this.#writeScript(request.runId, { ...state, packages: { ...state.packages, [program.name]: { ...record, open: record.open.filter((entry) => !finished.has(entry.count)) } } });\n for (const finish of finishes)\n this.#deliverResult(request, program, finish, starters.get(finish.start)!);\n }\n /** The owner reads the summary in the chat, an LLM gets a short message, a TypeScript actor a result it recognizes. */\n #deliverResult(request: TurnRequest<\"script\">, program: ActorProgramDefinition, finish: ScriptFinish, startedBy: string): void {\n const starter = this.view(request.runId).actors.find((actor) => actor.id === startedBy);\n if (!starter || starter.kind === \"human\") {\n request.emit({ kind: \"runtime\", text: finish.summary ?? `Start ${finish.start} finished.` });\n return;\n }\n const commandId = `run-script-result:${request.turnId}:${program.name}:${finish.start}`;\n try {\n if (starter.kind === \"script\") {\n const state = this.#script(request.runId);\n this.#writeScript(request.runId, { ...state, deliveries: [...state.deliveries, { commandId, actorId: starter.id, kind: \"result\" }] }, commandId);\n }\n this.runtime().enqueueInput({ actorId: this.ownerId(request.runId), commandId }, request.runId, {\n actorId: starter.id, presentation: \"background\",\n content: starter.kind === \"agent\" ? agentResultText(program.actorHandle, finish) : scriptResultContent(program.actorHandle, finish),\n });\n }\n catch (error) {\n request.emit({ kind: \"runtime\", text: `The result of start ${finish.start} did not reach @${starter.handle}: ${errorText(error)}` });\n }\n }\n isScriptActor(runId: string, actorId: string): boolean {\n return this.runtime().select(runId, (state) => {\n const actor = state.actors.get(actorId);\n if (!actor || actor.kind !== \"script\")\n return false;\n const script = [...state.pluginStates.values()].find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === \"run\");\n return Object.hasOwn(scriptStateOf(script?.state).packages, actor.handle);\n });\n }\n programOf(runId: string, actorId: string): ActorProgramIdentity | undefined {\n const program = this.programs(runId).find((entry) => entry.actorId === actorId);\n if (!program)\n return undefined;\n const record = this.#script(runId).packages[program.name];\n const origin = record && this.#identityOf(program) === record.identity ? record.origin : { kind: \"run\" as const, installedBy: program.installedBy };\n return { name: program.name, actorId, revision: program.revision, origin };\n }\n /** Makes a package active once, whatever state it is in; under a shared name only the package the host installed from that plugin, unchanged. */\n ensure(context: CommandContext, runId: string, name: string, signal?: AbortSignal): Promise<{ actorId: string; handle: string; status: \"active\" | \"restarted\" | \"activated\" | \"installed\" }> {\n this.#assertName(name);\n return this.#withPackages(runId, [name], () => this.#ensure(context, runId, name, signal));\n }\n async #ensure(context: CommandContext, runId: string, name: string, signal?: AbortSignal) {\n const outcome = (status: \"active\" | \"restarted\" | \"activated\" | \"installed\") => {\n const program = this.#program(runId, name);\n return { actorId: program.actorId, handle: program.actorHandle, status };\n };\n const shared = this.#options.sharedPackage(name);\n const record = this.#script(runId).packages[name];\n const assertShared = (identity: () => string): void => {\n if (shared && !this.#hostShared(record, shared.pluginId, identity()))\n throw foreignShared(name, shared.pluginId, record);\n };\n const active = this.programs(runId).find((program) => program.name === name);\n if (active) {\n assertShared(() => this.#identityOf(active));\n return outcome(\"active\");\n }\n const view = this.view(runId);\n const stopped = view.pluginStates.flatMap((entry) => {\n const program = entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" ? (entry.state as unknown as ActorProgramState).program : null;\n const actor = program?.name === name ? view.actors.find((candidate) => candidate.id === program.actorId) : undefined;\n return program && actor && actor.kind !== \"human\" && actor.lifecycle.kind === \"stopped\" ? [{ program, actor }] : [];\n })[0];\n if (stopped) {\n assertShared(() => this.#identityOf(stopped.program));\n this.runtime().restartActor(context, runId, stopped.actor.id, \"Actor program ensured\");\n return outcome(\"restarted\");\n }\n const root = await this.workspaceDirectory(runId);\n if (occupied(path.join(root, name))) {\n const identity = packageIdentity(await projectSourceFiles(path.join(root, name)));\n assertShared(() => identity);\n await this.#activate(context, runId, name, true, signal);\n return outcome(\"activated\");\n }\n if (!shared)\n throw new Error(`The package ${name} is neither in this run nor a shared actor package of this profile.`);\n const claims = this.#claim(runId, [{ name, files: shared.files, origin: { kind: \"shared\", pluginId: shared.pluginId } }]);\n try {\n await this.#import(context, runId, name, shared.files, signal);\n }\n catch (error) {\n this.#release(runId, claims);\n throw error;\n }\n return outcome(\"installed\");\n }\n async check(runId: string, name: string, callerId: string, signal?: AbortSignal, reference?: string): Promise<CompiledProgram> {\n this.#assertName(name);\n const directory = path.join(await this.workspaceDirectory(runId), name);\n if ((await lstat(directory)).isSymbolicLink())\n throw new Error(\"Actor packages must not be symlinks.\");\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const previous = this.programs(runId).find((program) => program.name === name);\n const owner = reference ? this.resolveActor(runId, callerId, reference) : previous ? this.actor(runId, previous.actorId) : !pkg.backend ? this.actor(runId, callerId) : undefined;\n if (previous && owner?.id !== previous.actorId)\n throw new Error(\"An activated package cannot move to another actor.\");\n const caller = this.view(runId).actors.find((candidate) => candidate.id === callerId);\n if (!caller)\n throw new Error(\"Calling actor is missing.\");\n const provisional: ExecutableActor = owner ?? {\n id: \"pending\", handle: name, displayName: pkg.title, kind: \"script\", grants: inheritedGrants(caller),\n createdAt: new Date().toISOString(), createdBy: callerId, description: actorDescriptionOf(pkg.description) ?? null, execution: { driver: { kind: \"script\", config: {} }, workspacePath: null, turnTimeoutMs: null }, lifecycle: { kind: \"idle\", since: new Date().toISOString() }, usage: emptyUsage(), toolNames: null, openedToolNames: [],\n };\n const available = (await this.#options.agentToolsFor(runId, provisional.id, owner ? undefined : provisional)).map(descriptor);\n for (const operation of this.#options.operations.list())\n if (operation.operator !== \"unavailable\" && !available.some((entry) => entry.id === operation.id))\n available.push(operation);\n await installServerSdk(directory, available);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor, signal }) : undefined;\n const contract: AppContract = backend?.contract ?? { state: objectSchema, functions: {} };\n if (contract.input && owner?.kind === \"agent\")\n throw new Error(\"An LLM actor processes inputs with its agent driver; onInput is only allowed for TypeScript actors.\");\n if (contract.state.type !== \"object\")\n throw new Error(\"Actor state must be an object schema.\");\n const state = owner ? this.data(runId, owner.id).values : {};\n checked(contract.state, state, \"Actor state\");\n const actorId = owner?.id ?? \"pending\";\n const actorHandle = owner?.handle ?? name;\n const functions: ActorFunctionDefinition[] = Object.entries(contract.functions).map(([id, fn]) => {\n if (!/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(id))\n throw new Error(`Invalid function name ${id}.`);\n if (fn.tool && !/^[a-z][a-z0-9_]{0,63}$/.test(fn.tool.name))\n throw new Error(`Invalid tool name ${fn.tool.name}.`);\n const capabilities = fn.capabilities ?? [];\n const selected = capabilities.map((name) => {\n const entry = available.find((item) => item.id === name);\n if (!entry)\n throw new Error(`Capability ${name} is not available.`);\n return entry;\n });\n return { id, label: fn.label, description: fn.description ?? fn.label, inputSchema: fn.input, resultSchema: fn.output, capabilityIds: capabilities, capabilityContractHash: runCapabilityContractHash(selected), confirmation: fn.confirmation ?? null,\n ...(fn.tool ? { tool: { name: fn.tool.name, targets: fn.tool.targets ? fn.tool.targets.map((target) => target === \"self\" ? actorId : this.resolveActor(runId, callerId, target).id) : null, card: fn.tool.card ?? true } } : {}) };\n });\n const inputCapabilities = contract.input?.capabilities ?? [];\n const inputDescriptors = inputCapabilities.map((id) => {\n const found = available.find((entry) => entry.id === id);\n if (!found)\n throw new Error(`Input capability ${id} is not available.`);\n return found;\n });\n await installClientSdk(directory, { stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n const hasServerFiles = pkg.backend || (await projectSourceFiles(directory)).some((file) => /^tests\\/.*\\.tsx?$/.test(file.path));\n const serverErrors = hasServerFiles ? typecheckServerProject(directory, pkg.backend) : [];\n if (serverErrors.length)\n throw checkFailure(`Typecheck of ${name}`, serverErrors, `The typecheck of ${name} failed without a message.`);\n const clients: CompiledProgram[\"clients\"] = [];\n const views: ActorProgramDefinition[\"views\"] = [];\n for (const view of pkg.views ?? []) {\n const client = await compileClientProject({ directory, entryPoint: view.client, stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n if (!client.valid)\n throw checkFailure(`Client build of ${view.client}`,\n client.diagnostics.filter((item) => item.category === \"error\").map((item) =>\n `${item.fileName ?? view.client}${item.start ? `:${item.start.line}:${item.start.column}` : \"\"} ${item.message.replace(/\\s*\\n\\s*/g, \" \")}`),\n `The client build of ${view.client} failed without a message.`);\n const styles = view.styles ? await inside(directory, view.styles) : \"\";\n if (/@import\\b|url\\s*\\(\\s*[\"']?\\s*(?:https?:|\\/\\/)/i.test(styles))\n throw new Error(\"View CSS must not load external resources.\");\n const clientFile = `view-${view.id}.mjs`;\n clients.push({ file: clientFile, javaScript: client.javaScript });\n views.push({ id: `${name}--${view.id}`, key: view.id, title: view.title ?? pkg.title, visible: previous?.views.find((item) => item.key === view.id)?.visible ?? true,\n html: `<!doctype html><html class=\"${FRAME_DOCUMENT_CLASS}\"><head><meta charset=\"utf-8\"></head><body class=\"${FRAME_BODY_CLASS}\"><div id=\"root\" class=\"${FRAME_ROOT_CLASS}\"></div></body></html>`, styles, clientFile });\n }\n const viewSources = [...new Set((pkg.views ?? []).map((view) => path.dirname(path.resolve(directory, view.client))))];\n const frameStyles = viewSources.length > 0 ? await buildTailwind(viewSources) : \"\";\n const files = await projectSourceFiles(directory);\n const revision = canonicalHash({ files, backend: backend?.javaScript ?? null, clients });\n const definition: ActorProgramDefinition = { name, title: pkg.title, description: pkg.description ?? \"\", actorId, actorHandle, revision, installedBy: previous?.installedBy ?? callerId,\n directory: path.join(this.#options.directoryFor(runId), \"actor-builds\", name, revision), sourceDirectory: directory,\n ...(backend ? { backendFile: \"server.mjs\" } : {}), stateSchema: contract.state, stylesFile: \"frame.css\", functions, views,\n ...(contract.input ? { input: { capabilityIds: inputCapabilities, capabilityContractHash: runCapabilityContractHash(inputDescriptors) } } : {}) };\n return { directory, files, definition, clients, frameStyles, createActor: !owner, ...(backend ? { backendJavaScript: backend.javaScript } : {}) };\n }\n activate(context: CommandContext, runId: string, name: string, signal?: AbortSignal, reference?: string) {\n return this.#withPackages(runId, [name], () => this.#activate(context, runId, name, true, signal, reference));\n }\n async #activate(context: CommandContext, runId: string, name: string, idle: boolean, signal?: AbortSignal, reference?: string) {\n const key = `${runId}\\0${name}`;\n if (this.#installing.has(key))\n throw new Error(`Package ${name} is already being activated.`);\n const epoch = this.invocationPermit(runId);\n this.#installing.add(key);\n const original = this.programs(runId).find((item) => item.name === name);\n let compiled: CompiledProgram | undefined;\n let published = false;\n try {\n compiled = await this.check(runId, name, context.actorId, signal, reference);\n const definition = compiled.definition;\n const tests = compiled.files.filter((file) => /^tests\\/.*\\.test\\.tsx?$/.test(file.path));\n if (tests.length) {\n const processContext = await this.#options.serverProcessContextFor(runId);\n const report = await createTestReport(compiled.directory);\n let stderr = \"\";\n const launch = await sandboxedLaunch(processContext, { command: process.execPath, args: [\"--import\", \"tsx\", \"--test\", testReporterArgument, ...tests.map((file) => file.path)] });\n const result = await runManagedProcess({ command: launch.command, args: [...launch.args], cwd: compiled.directory,\n env: processContext.env, uid: processContext.uid, gid: processContext.gid, label: `Tests ${name}`, signal, timeoutMs: 60000,\n onStdout: (chunk) => report.stdout(chunk.toString()), onStderr: (chunk) => { stderr = (stderr + chunk.toString()).slice(-12000); } });\n if (result.code !== 0 || result.timedOut)\n throw new Error(report.report(name, { code: result.code, timedOut: result.timedOut, stderr }));\n }\n if (canonicalHash(compiled.files) !== canonicalHash(await projectSourceFiles(compiled.directory)))\n throw new Error(\"Package files were changed during the check; activate again.\");\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped during the activation.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"The package was changed in the meantime.\");\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n const names = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (names.has(fn.tool.name))\n throw new Error(`Tool name ${fn.tool.name} is already taken.`);\n names.add(fn.tool.name);\n }\n const occupied = this.programs(runId).find((program) => program.actorId === definition.actorId && program.name !== name);\n if (occupied)\n throw new Error(`Actor @${definition.actorHandle} already owns the package ${occupied.name}. Add functions or views there.`);\n await mkdir(definition.directory, { recursive: true });\n for (const source of compiled.files) {\n const file = path.join(definition.directory, safePath(source.path));\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content);\n }\n await prepareAppProject(definition.directory);\n if (compiled.backendJavaScript !== undefined)\n await writeFile(path.join(definition.directory, \"server.mjs\"), compiled.backendJavaScript);\n for (const client of compiled.clients)\n await writeFile(path.join(definition.directory, client.file), client.javaScript);\n await writeFile(path.join(definition.directory, definition.stylesFile), compiled.frameStyles);\n await writeFile(path.join(definition.directory, \"sources.json\"), JSON.stringify(compiled.files));\n await syncWorkspaceOwnership(definition.directory, await this.#options.serverProcessContextFor(runId));\n signal?.throwIfAborted();\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped during the activation.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"The package was changed in the meantime.\");\n if (!compiled.createActor) {\n this.actor(runId, definition.actorId);\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n checked(definition.stateSchema, this.data(runId, definition.actorId).values, \"Actor state\");\n if (this.programs(runId).some((item) => item.actorId === definition.actorId && item.name !== name))\n throw new Error(\"The actor now owns another package.\");\n }\n const currentNames = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (currentNames.has(fn.tool.name))\n throw new Error(`Tool name ${fn.tool.name} has been taken in the meantime.`);\n currentNames.add(fn.tool.name);\n }\n jsonValue({ version: 1, program: definition }, \"Actor program\");\n if (compiled.createActor) {\n const actors = this.view(runId).actors;\n const caller = actors.find((actor) => actor.id === context.actorId)!;\n const holder = actors.find((actor) => actor.handle === name);\n if (holder?.kind === \"script\" && holder.lifecycle.kind === \"stopped\") {\n checked(definition.stateSchema, this.data(runId, holder.id).values, \"Actor state\");\n this.runtime().restartActor(context, runId, holder.id, \"Actor package activated again\");\n }\n else if (holder)\n throw new Error(`Handle @${name} already belongs to the ${holder.kind !== \"human\" && holder.lifecycle.kind === \"stopped\" ? \"stopped\" : \"active\"} actor ${holder.displayName}; only a stopped TypeScript actor is restarted on activation. Choose another package name.`);\n else\n this.runtime().createScriptActor(context, runId, { handle: name, displayName: definition.title, description: actorDescriptionOf(definition.description), grants: inheritedGrants(caller), toolNames: null });\n const actor = this.resolveActor(runId, context.actorId, `@${name}`);\n definition.actorId = actor.id;\n definition.actorHandle = actor.handle;\n for (const fn of definition.functions)\n if (fn.tool?.targets)\n fn.tool.targets = fn.tool.targets.map((target) => target === \"pending\" ? actor.id : target);\n }\n signal?.throwIfAborted();\n this.#writeProgram(context, runId, definition.actorId, definition);\n published = true;\n if (original && original.revision !== definition.revision)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(original));\n return { name, actor: `@${definition.actorHandle}`, views: definition.views.length, active: true as const };\n }\n finally {\n this.#installing.delete(key);\n if (!published && compiled && compiled.definition.revision !== original?.revision)\n await rm(compiled.definition.directory, { recursive: true, force: true });\n }\n }\n list(runId: string) { return this.programs(runId).map((program) => ({ name: program.name, actor: `@${program.actorHandle}`, functions: program.functions.map((fn) => fn.id), views: program.views.map((view) => ({ name: view.key, title: view.title, visible: view.visible })) })); }\n async remove(context: CommandContext, runId: string, name: string) {\n const packageName = this.#program(runId, name).name;\n return this.#withPackages(runId, [packageName], () => this.#remove(context, runId, packageName, name));\n }\n async #remove(context: CommandContext, runId: string, packageName: string, name: string) {\n const program = this.#program(runId, packageName);\n this.#assertIdle(runId, program.actorId);\n if (this.#installing.has(`${runId}\\0${packageName}`))\n throw new Error(\"The package is being activated.\");\n const actor = this.actor(runId, program.actorId);\n const key = `${runId}\\0${program.actorId}`;\n this.#removing.add(key);\n try {\n await this.stopActor(runId, program.actorId);\n this.#writeProgram(context, runId, program.actorId, null);\n if (actor.kind === \"script\")\n this.runtime().stopActor(context, runId, program.actorId, \"Actor package removed\");\n await rm(program.directory, { recursive: true, force: true });\n }\n finally {\n this.#removing.delete(key);\n }\n return { removed: name };\n }\n setVisibility(context: CommandContext, runId: string, reference: string, visible: boolean) {\n const { program, view } = resolveActorView(this.programs(runId), reference);\n this.#writeProgram(context, runId, program.actorId, { ...program, views: program.views.map((item) => item.id === view.id ? { ...item, visible } : item) });\n return { view: `${program.name}/${view.key}`, visible };\n }\n apps(runId: string): ActorViewListing[] {\n return this.programs(runId).flatMap((program) => program.views.map((view) => ({ id: view.id, actorId: program.actorId, actorHandle: program.actorHandle, title: view.title, description: program.description, revision: program.revision,\n actions: program.functions.map(({ id, label, description, confirmation }) => ({ id, label, description, confirmation })), visible: view.visible, state: this.data(runId, program.actorId), invocations: this.#invocations(runId).invocations.filter((invocation) => invocation.actorId === program.actorId && invocation.revision === program.revision) })));\n }\n runLocalTools(runId: string) {\n if (!this.runtime().listRuns().some(run => run.id === runId))\n return [];\n const view = this.view(runId);\n return this.programs(runId).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [{ moduleId: program.name, name: fn.tool.name, description: fn.description, card: fn.tool.card, actorId: program.actorId, actorHandle: program.actorHandle, functionId: fn.id, revision: program.revision, sourceHash: program.revision, installedBy: program.installedBy,\n parameters: Object.entries((fn.inputSchema as {\n properties?: Record<string, {\n type?: string;\n description?: string;\n }>;\n }).properties ?? {}).map(([name, schema]) => ({ name, type: [\"string\", \"number\", \"integer\", \"boolean\"].includes(schema.type ?? \"\") ? schema.type ?? \"json\" : \"json\", description: schema.description ?? name, required: ((fn.inputSchema as {\n required?: string[];\n }).required ?? []).includes(name) })),\n targets: (fn.tool.targets ?? view.actors.filter((actor) => actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\").map((actor) => actor.id)).map((actorId) => ({ actorId, handle: view.actors.find((actor) => actor.id === actorId)?.handle ?? null })) }] : []));\n }\n async moduleSource(runId: string, reference: string) { const program = this.#program(runId, reference); return { files: JSON.parse(await readFile(path.join(program.directory, \"sources.json\"), \"utf8\")) as ActorProgramSource[] }; }\n frame(runId: string, viewId: string, revision: string) {\n const program = this.#program(runId, viewId);\n const view = program.views.find((item) => item.id === viewId);\n if (!view || program.revision !== revision)\n throw new Error(\"The view was replaced or removed.\");\n if (!program.stylesFile)\n throw new Error(\"The program comes from an older activation without a stylesheet file. Please activate again.\");\n const frameStyles = readFileSync(path.join(program.directory, program.stylesFile), \"utf8\");\n return { ...view, styles: `${frameStyles}\\n${view.styles}`, platformVersion: 2 as const, clientJavaScript: readFileSync(path.join(program.directory, view.clientFile), \"utf8\") };\n }\n installedTools(context: PluginContext): RunFunction[] {\n return this.programsOf(context.view).flatMap((program) => program.functions.flatMap((fn) => !fn.tool || (fn.tool.targets && !fn.tool.targets.includes(context.actorId)) ? [] : [defineRunFunction({\n name: fn.tool.name, label: fn.label, description: fn.description, schema: fn.inputSchema as TSchema, resultSchema: fn.resultSchema as TSchema, available: exposed, executionMode: \"sequential\",\n run: async (scope, id, input) => {\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(context.actor, scope.availableFunctions(), capabilityIds, new Set()).descriptors;\n return this.#executeFunction(context.runId, program, fn, input, { id, kind: \"tool\", principal: { id: context.actorId, kind: context.actor.kind === \"script\" ? \"script\" : \"agent\" }, descriptorsFor, call: (name, value, index) => scope.invokeFunction(`${id}:capability:${index}`, name, value) }, scope.signal ?? new AbortController().signal);\n },\n })]));\n }\n async #serial<T>(runId: string, actorId: string, signal: AbortSignal, execute: () => Promise<T>): Promise<T> {\n const permit = this.invocationPermit(runId);\n const key = `${runId}\\0${actorId}`;\n const previous = this.#queues.get(key) ?? Promise.resolve();\n const operation = previous.then(() => { signal.throwIfAborted(); if (permit !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped before the function started.\"); this.actor(runId, actorId); return execute(); });\n const queued = operation.then(() => undefined, () => undefined);\n this.#queues.set(key, queued);\n try {\n return await operation;\n }\n finally {\n if (this.#queues.get(key) === queued)\n this.#queues.delete(key);\n }\n }\n async #backend(runId: string, program: ActorProgramDefinition, input: unknown, binding: BackendBinding, descriptors: readonly RunCapabilityDescriptor[], signal: AbortSignal): Promise<{\n result: unknown;\n logs: string[];\n state: JsonValue;\n initial: ActorDataState;\n }> {\n if (!program.backendFile)\n throw new Error(\"The actor has no TypeScript backend.\");\n const current = this.#program(runId, program.name);\n if (current.revision !== program.revision)\n throw new Error(\"The actor package was replaced.\");\n const logs: string[] = [];\n let calls = 0;\n const initial = this.data(runId, program.actorId);\n const result = await this.runtime().nativeTypeScriptExecutor.execute({\n program: { entry: program.backendFile, files: [{ fileName: program.backendFile, text: await readFile(path.join(program.directory, program.backendFile), \"utf8\") }], exportName: \"handle\" },\n instanceId: this.#instance(program), cwd: program.directory, input, state: initial.values,\n std: { now: new Date().toISOString(), idPrefix: binding.id }, context: { runId, actor: { id: program.actorId, handle: program.actorHandle }, invocationId: binding.id, invocationKind: binding.kind, principal: binding.principal, capabilities: descriptors },\n }, { signal, log: (value) => { if (logs.length < 100)\n logs.push((typeof value === \"string\" ? value : JSON.stringify(value)).slice(0, 2000)); }, call: async (name, value) => {\n const capability = descriptors.find((entry) => entry.id === name);\n if (!capability)\n throw new Error(`Capability ${name} is not declared.`);\n if (++calls > 64)\n throw new Error(\"A call may run at most 64 capabilities.\");\n if (program.functions.some((fn) => fn.tool?.name === name))\n throw new Error(\"An actor function must not call itself through a tool; use a shared TypeScript function.\");\n checked(capability.schema, value, `Input ${name}`);\n const output = await binding.call(name, value, calls);\n return checked(capability.resultSchema, output, `Result ${name}`);\n } });\n signal.throwIfAborted();\n this.actor(runId, program.actorId);\n const state = checked(program.stateSchema, result.state, \"Actor state\");\n return { result: result.result, logs, state, initial };\n }\n #commitState(runId: string, actorId: string, state: JsonValue, initial: ActorDataState): void {\n if (canonicalHash(state) === canonicalHash(initial.values))\n return;\n if (this.data(runId, actorId).revision !== initial.revision)\n throw new Error(\"The actor state was changed during the call. Call again.\");\n this.runtime().replaceActorState(this.operatorContext(runId), runId, actorId, state);\n }\n #executeFunction(runId: string, bound: ActorProgramDefinition, declared: ActorFunctionDefinition, input: unknown, binding: BackendBinding, signal: AbortSignal): Promise<JsonValue> {\n const functionOf = (program: ActorProgramDefinition): ActorFunctionDefinition => {\n const fn = program.functions.find((entry) => entry.id === declared.id);\n if (!fn)\n throw new Error(\"The function is not declared.\");\n return fn;\n };\n return this.#serial(runId, bound.actorId, signal, async () => {\n const { program, contract: fn, descriptors } = await this.#bound(runId, bound.actorId, bound.revision, signal, functionOf, binding.descriptorsFor);\n const value = checked(fn.inputSchema, input, `Input ${fn.id}`);\n const result = await this.#backend(runId, program, { kind: \"function\", functionId: fn.id, input: value }, binding, descriptors, signal);\n const output = checked(fn.resultSchema, result.result, `Result ${fn.id}`);\n this.#commitState(runId, program.actorId, result.state, result.initial);\n binding.output?.push(...result.logs);\n return output;\n });\n }\n async runInput(request: TurnRequest<\"script\">, signal: AbortSignal): Promise<TurnResult> {\n this.#knownRuns.add(request.runId);\n try {\n const inputOf = (program: ActorProgramDefinition) => {\n if (!program.input)\n throw new Error(\"This TypeScript actor has no onInput handler.\");\n return program.input;\n };\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(this.actor(request.runId, request.agentId), request.tools, capabilityIds, new Set()).descriptors;\n await this.#serial(request.runId, request.agentId, signal, async () => {\n const { program, descriptors } = await this.#bound(request.runId, request.agentId, undefined, signal, inputOf, descriptorsFor);\n const binding: BackendBinding = { id: request.turnId, kind: \"input\", principal: { id: request.agentId, kind: \"script\" }, descriptorsFor, call: (name, input, index) => request.invoke(`${request.turnId}:capability:${index}`, name, input) };\n const recognized = this.#recognize(request.runId, request.agentId, request.input);\n const result = await this.#backend(request.runId, program, { kind: \"input\", input: scriptInputOf(request.input), ...recognized }, binding, descriptors, signal);\n const finishes = this.#finishesOf(request.runId, program, result.result);\n this.#commitState(request.runId, request.agentId, result.state, result.initial);\n this.#deliverResults(request, program, finishes);\n for (const text of result.logs)\n request.emit({ kind: \"runtime\", text });\n });\n return { failure: null, usage: emptyUsage() };\n }\n catch (error) {\n return { failure: errorText(error), usage: emptyUsage() };\n }\n }\n invocationPermit(runId: string): number { if (this.#shuttingDown || this.#stopping.has(runId))\n throw new Error(\"The run is being stopped.\"); return this.#epochs.get(runId) ?? 0; }\n startInvocation(runId: string, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.#program(runId, viewId);\n if (!program.views.some((view) => view.id === viewId))\n throw new Error(\"The view is unknown.\");\n return this.#start(runId, program, viewId, revision, functionId, requestId, input, permit);\n }\n startFunctionInvocation(runId: string, actorHandle: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.programs(runId).find((entry) => entry.actorHandle === handleKey(actorHandle));\n if (!program)\n throw new Error(\"The actor publishes no program.\");\n return this.#start(runId, program, program.name, revision, functionId, requestId, input, permit);\n }\n #start(runId: string, program: ActorProgramDefinition, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit: number): ActorFunctionInvocation {\n this.#knownRuns.add(runId);\n if (permit !== this.invocationPermit(runId))\n throw new Error(\"The run has been stopped in the meantime.\");\n if (program.revision !== revision)\n throw new Error(\"The actor package was replaced. Refresh the view.\");\n const fn = program.functions.find((entry) => entry.id === functionId);\n if (!fn)\n throw new Error(\"The function is not declared.\");\n const state = this.#invocations(runId);\n const prior = state.invocations.find((entry) => entry.requestId === requestId);\n if (prior) {\n if (prior.actorId !== program.actorId || prior.actionId !== functionId || prior.revision !== revision || canonicalHash(prior.input) !== canonicalHash(input))\n throw new Error(\"The request ID was already used for another call.\");\n return prior;\n }\n if (!requestId || requestId.length > 200 || state.requestIds.includes(requestId))\n throw new Error(\"Invalid or already processed request ID.\");\n if (state.requestIds.length >= 10000)\n throw new Error(\"The run has reached its call limit.\");\n if ([...this.#active.values()].filter((entry) => entry.runId === runId).length >= 8)\n throw new Error(\"Eight actor functions are already running.\");\n checked(fn.inputSchema, input, \"Function input\");\n const invocation: ActorFunctionInvocation = { id: randomUUID(), requestId, actorId: program.actorId, actorHandle: program.actorHandle, appId: viewId, revision, actionId: functionId, input, output: [], createdAt: new Date().toISOString(), status: \"queued\" };\n this.#replaceInvocation(runId, invocation, true);\n const controller = new AbortController();\n const completed = Promise.resolve().then(async () => {\n const started = { ...invocation, status: \"running\" as const, startedAt: new Date().toISOString() };\n this.#replaceInvocation(runId, started);\n try {\n if (fn.confirmation && !await this.#confirm(runId, invocation, fn.confirmation, controller.signal))\n throw new Error(\"The function was not confirmed.\");\n const descriptorsFor = (capabilityIds: readonly string[]) => operatorCapabilityBinding(this.ownerId(runId), this.#options.operations.list(), capabilityIds).descriptors;\n const output: string[] = [];\n const result = await this.#executeFunction(runId, program, fn, input, { output, id: invocation.id, kind: \"app-action\", principal: { id: this.ownerId(runId), kind: \"operator\" }, descriptorsFor, call: async (name, value, index) => {\n const operation = this.#options.operations.operation(name)!;\n const id = `${invocation.id}:capability:${index}`;\n const confirmation = operation.operator === \"confirm\" ? await this.#confirm(runId, invocation, `Run ${operation.label}?`, controller.signal, value) : true;\n if (!confirmation)\n throw new Error(\"The action was not confirmed.\");\n return this.#options.operations.invoke(name, { runId, invocationId: id, principal: { kind: \"operator\", actorId: this.ownerId(runId) }, signal: controller.signal, ...(operation.operator === \"confirm\" ? { operatorConfirmation: { operationId: name, invocationId: id, inputHash: canonicalHash(value) } } : {}) }, value);\n } }, controller.signal);\n this.#replaceInvocation(runId, { ...started, status: \"succeeded\", result, output, finishedAt: new Date().toISOString() });\n }\n catch (error) {\n this.#replaceInvocation(runId, { ...started, status: controller.signal.aborted ? \"cancelled\" : \"failed\", error: errorText(error).slice(0, 8000), finishedAt: new Date().toISOString() });\n }\n }).finally(() => this.#active.delete(invocation.id));\n this.#active.set(invocation.id, { runId, actorId: program.actorId, controller, completed });\n return invocation;\n }\n invocation(runId: string, reference: string, id: string): ActorFunctionInvocation {\n const invocation = this.#invocations(runId).invocations.find((entry) => entry.id === id && (entry.appId === reference || entry.actorHandle === reference));\n if (!invocation)\n throw new Error(\"The function call is unknown.\");\n return invocation;\n }\n #invocations(runId: string): InvocationState { return (this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_INVOCATIONS_STATE_ID && entry.scope.kind === \"run\")?.state as unknown as InvocationState) ?? { version: 1, invocations: [], requestIds: [] }; }\n #replaceInvocation(runId: string, invocation: ActorFunctionInvocation, remember = false): void {\n const current = this.#invocations(runId);\n const entries = [...current.invocations.filter((entry) => entry.id !== invocation.id), invocation];\n const active = entries.filter((entry) => entry.status === \"queued\" || entry.status === \"running\");\n const finished = entries.filter((entry) => entry.status !== \"queued\" && entry.status !== \"running\").slice(-20);\n const state: InvocationState = { version: 1, invocations: [...active, ...finished], requestIds: remember ? [...current.requestIds, invocation.requestId] : current.requestIds };\n while (jsonBytes(state) > MAX_INVOCATIONS_STATE_BYTES && finished.length) {\n finished.shift();\n state.invocations = [...active, ...finished];\n }\n assertJsonValue(state, \"Actor calls\");\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_INVOCATIONS_STATE_ID, scope: { kind: \"run\" }, state });\n }\n async #confirm(runId: string, invocation: ActorFunctionInvocation, question: string, signal: AbortSignal, input = invocation.input): Promise<boolean> {\n const answer = await this.#options.askService().ask({ runId, agentId: this.ownerId(runId), turnId: null, commandId: `actor-confirm:${randomUUID()}` }, { question: `${question}\\nInput: ${JSON.stringify(input).slice(0, 500)}`, options: [\"Run\", \"Cancel\"], multi: false, description: `Function ${invocation.actionId} of @${invocation.actorHandle}`, parameters: { source: ACTOR_PROGRAMS_STATE_ID, invocationId: invocation.id } }, signal);\n return answer === \"Run\";\n }\n #program(runId: string, reference: string): ActorProgramDefinition {\n const program = this.programs(runId).find((entry) => entry.name === reference || entry.views.some((view) => view.id === reference));\n if (!program)\n throw new Error(`Actor package ${reference} is not active.`);\n return program;\n }\n #instance(program: ActorProgramDefinition): string { return `actor:${program.actorId}:${program.revision}`; }\n #assertName(name: string): void { if (!NAME.test(name))\n throw new Error(\"Package names begin with a lowercase letter and contain at most 64 lowercase letters, digits, or hyphens.\"); }\n #assertIdle(runId: string, actorId: string): void { if (this.#queues.has(`${runId}\\0${actorId}`) || [...this.#active.values()].some((entry) => entry.runId === runId && entry.actorId === actorId))\n throw new Error(\"The actor still has running functions or inputs.\"); }\n async stopActor(runId: string, actorId: string): Promise<void> {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId && entry.actorId === actorId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Actor stopped.\")));\n const state = this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" && entry.scope.actorId === actorId)?.state as unknown as ActorProgramState | undefined;\n if (state?.program)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(state.program));\n await Promise.allSettled(active.map((entry) => entry.completed));\n }\n async stopRun(runId: string): Promise<void> {\n this.#epochs.set(runId, (this.#epochs.get(runId) ?? 0) + 1);\n this.#stopping.add(runId);\n try {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Run stopped.\")));\n await this.runtime().nativeTypeScriptExecutor.stopRun(runId);\n await Promise.allSettled([...active.map((entry) => entry.completed), ...[...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue)]);\n }\n finally {\n this.#stopping.delete(runId);\n }\n }\n waitForRunSettlement(runId: string): Promise<void> { return Promise.allSettled([...this.#active.values()].filter((entry) => entry.runId === runId).map((entry) => entry.completed).concat([...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue))).then(() => undefined); }\n /** Once per run and server process: calls a previous process left open are cancelled, calls of this process keep running. */\n async prepareSession(runId: string): Promise<void> {\n this.#knownRuns.add(runId);\n if (this.#recovered.has(runId) || !this.runtime().listRuns().some(run => run.id === runId))\n return;\n this.#recovered.add(runId);\n for (const invocation of this.#invocations(runId).invocations)\n if ((invocation.status === \"queued\" || invocation.status === \"running\") && !this.#active.has(invocation.id))\n this.#replaceInvocation(runId, { ...invocation, status: \"cancelled\", error: \"The server was stopped during the call.\", finishedAt: new Date().toISOString() });\n }\n async stopSession(runId: string, _signal?: AbortSignal): Promise<void> { await this.stopRun(runId); }\n async disposeRun(runId: string): Promise<void> { await this.stopRun(runId); }\n async deleteSession(runId: string): Promise<void> {\n await this.stopRun(runId);\n this.#recovered.delete(runId);\n for (const directory of this.#identities.keys())\n if (directory.startsWith(`${this.#options.directoryFor(runId)}${path.sep}`))\n this.#identities.delete(directory);\n await rm(this.#options.directoryFor(runId), { recursive: true, force: true });\n }\n async shutdown(): Promise<void> { this.#shuttingDown = true; await Promise.allSettled([...this.#knownRuns].map((runId) => this.stopRun(runId))); }\n}\n", "import { assertJsonValue, type JsonValue } from \"@ragents/engine\";\n\nconst MAX_JSON_BYTES = 250_000;\nconst MAX_JSON_DEPTH = 24;\nconst MAX_JSON_KEY_LENGTH = 256;\nexport const MAX_INVOCATIONS_STATE_BYTES = 8 * 1024 * 1024;\n\nexport const jsonBytes = (value: unknown): number => Buffer.byteLength(JSON.stringify(value), \"utf8\");\n\nexport const jsonValue = <T>(value: T, label: string): T & JsonValue => {\n assertJsonValue(value, label);\n const text = JSON.stringify(value);\n if (Buffer.byteLength(text, \"utf8\") > MAX_JSON_BYTES)\n throw new Error(`${label} is larger than ${MAX_JSON_BYTES} bytes.`);\n const pending: Array<{ value: unknown; depth: number }> = [{ value, depth: 0 }];\n while (pending.length > 0) {\n const current = pending.pop()!;\n if (current.depth > MAX_JSON_DEPTH)\n throw new Error(`${label} is nested deeper than ${MAX_JSON_DEPTH} levels.`);\n if (Array.isArray(current.value)) {\n current.value.forEach((entry) => pending.push({ value: entry, depth: current.depth + 1 }));\n continue;\n }\n if (current.value && typeof current.value === \"object\") {\n Object.entries(current.value).forEach(([key, entry]) => {\n if (key.length > MAX_JSON_KEY_LENGTH)\n throw new Error(`${label} contains a key with more than ${MAX_JSON_KEY_LENGTH} characters.`);\n pending.push({ value: entry, depth: current.depth + 1 });\n });\n }\n }\n return value;\n};\n", "import type { JsonValue } from \"@ragents/engine\";\nimport type { ActorScriptState } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\n\nexport const MAX_OPEN_STARTS = 50;\nconst MAX_RESULT_CHARACTERS = 32_000;\nconst MAX_SUMMARY_LENGTH = 1_000;\nconst SHOWN_RESULT_CHARACTERS = 4_000;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst isOrigin = (value: unknown): boolean =>\n isRecord(value) && (value.kind === \"script\" && typeof value.entryId === \"string\" || value.kind === \"shared\" && typeof value.pluginId === \"string\");\n\n/** An older or unknown shape counts as empty, and so does a package record of an older shape: such packages have no recorded origin. */\nexport const scriptStateOf = (value: unknown): ActorScriptState => {\n if (!isRecord(value) || value.version !== 2 || !isRecord(value.packages) || !Array.isArray(value.deliveries))\n return { version: 2, packages: {}, deliveries: [] };\n const packages = Object.entries(value.packages).filter(([, entry]) => isRecord(entry) && isOrigin(entry.origin) && typeof entry.identity === \"string\");\n return { ...value as unknown as ActorScriptState, packages: Object.fromEntries(packages) as ActorScriptState[\"packages\"] };\n};\n\nexport interface ScriptFinish {\n readonly start: number;\n readonly result: JsonValue;\n readonly summary?: string;\n}\n\n/** What a program's turn handler returned through context.finish; a handler built before finish returns nothing. */\nexport const finishesOf = (value: unknown): readonly ScriptFinish[] => {\n if (value === undefined || value === null) return [];\n if (!isRecord(value) || !Array.isArray(value.finishes)) throw new Error(\"The program returned an invalid finish list.\");\n return value.finishes.map((entry): ScriptFinish => {\n if (!isRecord(entry) || !Number.isInteger(entry.start) || (entry.start as number) < 1) throw new Error(\"finish needs the count of an open start.\");\n const result = (entry.result ?? null) as JsonValue;\n if (JSON.stringify(result).length > MAX_RESULT_CHARACTERS) throw new Error(`The result of finish is larger than ${MAX_RESULT_CHARACTERS} characters as JSON.`);\n if (entry.summary !== undefined && (typeof entry.summary !== \"string\" || entry.summary.length > MAX_SUMMARY_LENGTH)) {\n throw new Error(`The summary of finish must be a text of at most ${MAX_SUMMARY_LENGTH} characters.`);\n }\n return { start: entry.start as number, result, ...(typeof entry.summary === \"string\" ? { summary: entry.summary } : {}) };\n });\n};\n\n/** The result as a short message for an LLM starter: summary line, then the compact result. */\nexport const agentResultText = (handle: string, finish: ScriptFinish): string => {\n const headline = `Run script @${handle} finished start ${finish.start}${finish.summary ? `: ${finish.summary}` : \".\"}`;\n if (finish.result === null) return headline;\n const json = JSON.stringify(finish.result);\n const shown = json.length > SHOWN_RESULT_CHARACTERS ? `${json.slice(0, SHOWN_RESULT_CHARACTERS)}... (shortened, ${json.length} characters)` : json;\n return `${headline}\\nResult: ${shown}`;\n};\n\n/** The result for a TypeScript starter: onResult gets it parsed, onInput as this JSON. */\nexport const scriptResultContent = (handle: string, finish: ScriptFinish): string =>\n JSON.stringify({ handle, count: finish.start, result: finish.result, ...(finish.summary !== undefined ? { summary: finish.summary } : {}) });\n", "import {\n runCapabilityBindingHash,\n runCapabilityContractHash,\n type Actor,\n type RunFunction,\n type RunCapabilityDescriptor,\n} from \"@ragents/engine\";\n\nimport type { OperationDescriptorPort } from \"./operations.js\";\n\nexport interface ResolvedCapabilityBinding {\n descriptors: readonly RunCapabilityDescriptor[];\n descriptorContractHash: string;\n bindingContractHash: string;\n}\n\nconst descriptorOf = (capability: {\n id: string;\n label: string;\n description: string;\n schema: RunCapabilityDescriptor[\"schema\"];\n resultSchema: RunCapabilityDescriptor[\"resultSchema\"];\n}): RunCapabilityDescriptor => ({\n id: capability.id,\n label: capability.label,\n description: capability.description,\n schema: capability.schema,\n resultSchema: capability.resultSchema,\n});\n\nconst selected = <T>(\n available: readonly T[],\n capabilityIds: readonly string[],\n idOf: (value: T) => string,\n unavailable: (id: string, names: string) => Error,\n): T[] => {\n const byId = new Map(available.map((value) => [idOf(value), value]));\n return capabilityIds.map((id) => {\n const value = byId.get(id);\n if (!value) throw unavailable(id, [...byId.keys()].sort().join(\", \") || \"none\");\n return value;\n });\n};\n\nexport const operatorCapabilityBinding = (\n actorId: string,\n operations: readonly OperationDescriptorPort[],\n capabilityIds: readonly string[],\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n operations.filter((operation) => operation.operator !== \"unavailable\"),\n capabilityIds,\n (operation) => operation.id,\n (id, names) => new Error(`Capability ${id} is not available to the operator. Available: ${names}.`),\n );\n const descriptors = resolved.map(descriptorOf);\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actorId, kind: \"operator\" },\n capabilities: descriptors,\n policies: resolved.map((operation) => ({ id: operation.id, policy: operation.operator })),\n }),\n };\n};\n\nexport const agentCapabilityBinding = (\n actor: Actor,\n tools: readonly RunFunction[],\n capabilityIds: readonly string[],\n blockedNames: ReadonlySet<string>,\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n tools.filter((tool) => !blockedNames.has(tool.name)),\n capabilityIds,\n (tool) => tool.name,\n (id, names) => new Error(\n `Capability ${id} is not available to @${actor.handle}. Available: ${names}.`,\n ),\n );\n const descriptors = resolved.map((tool) => descriptorOf({ ...tool, id: tool.name }));\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actor.id, kind: actor.kind === \"script\" ? \"script\" : \"agent\", grants: actor.grants },\n capabilities: descriptors,\n policies: descriptors.map((descriptor) => ({ id: descriptor.id, policy: \"agent\" })),\n }),\n };\n};\n", "import type { ActorProgramTemplate } from \"./templates\";\n\nexport const controlsTemplate: ActorProgramTemplate = {\n id: \"controls\",\n title: \"Try UI controls\",\n description: \"Local demo with form, table, files, tasks, flow diagram, SVG connections, messages, document, and diff without function calls.\",\n ragents: {\n title: \"Try UI controls\",\n description: \"A local demo of the available mini-app controls. Values and files stay in this view.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\ntype Row = { id: string; name: string; count: number };\nconst rows: Row[] = [\n { id: \"analysis\", name: \"Analysis\", count: 12 },\n { id: \"review\", name: \"Review\", count: 4 },\n { id: \"notes\", name: \"Documentation\", count: 8 },\n];\n\nconst App = () => {\n const [values, setValues] = React.useState<FormValues>({ title: \"Review results\", notes: \"\", count: 3, mode: \"review\", approved: false });\n const [selected, setSelected] = React.useState<string[]>([]);\n const [files, setFiles] = React.useState<File[]>([]);\n const [result, setResult] = React.useState(\"No form values applied yet.\");\n const [messages, setMessages] = React.useState<Parameters<typeof UI.MessageList>[0][\"messages\"]>([\n { key: \"editorial\", sender: \"Editorial\", text: \"The notice should stay **short and clear**.\" },\n { key: \"review\", sender: \"Text review\", text: \"Opening hours and the repair notice are kept.\" },\n ]);\n const [done, setDone] = React.useState(false);\n return <UI.AppLayout title=\"Try UI controls\" description=\"Local demo: no agents, uploads, or server actions. Values and file selection stay only in this view and are reset on reload.\">\n <UI.Stack gap=\"large\">\n <UI.Form title=\"Form\" fields={[\n { id: \"title\", label: \"Task\", type: \"text\", placeholder: \"What should be worked on?\", required: true },\n { id: \"notes\", label: \"Notes\", type: \"textarea\", rows: 3, placeholder: \"What should be taken into account while working on it?\", hint: \"Multi-line text stays aligned in the form.\" },\n { id: \"count\", label: \"Count\", type: \"number\", placeholder: \"Number of results\", hint: \"1 to 10 results.\", required: true, min: 1, max: 10 },\n { id: \"mode\", label: \"Mode\", type: \"select\", options: [{ value: \"review\", label: \"Review\" }, { value: \"draft\", label: \"Draft\" }] },\n { id: \"approved\", label: \"Selection confirmed\", type: \"checkbox\", required: true },\n ]} values={values} onChange={setValues} onSubmit={async (next) => { setResult(JSON.stringify(next, null, 2)); }} submitLabel=\"Show values locally\" />\n <UI.Stack gap=\"small\">\n <UI.DataTable<Row> title=\"Data table\" rows={rows} rowKey={(row) => row.id} filterable\n selectedKeys={selected} onSelectionChange={setSelected}\n columns={[{ id: \"name\", label: \"Work\", value: (row) => row.name, sortable: true }, { id: \"count\", label: \"Results\", value: (row) => row.count, sortable: true }]}\n actions={[{ id: \"select\", label: \"Select\", onClick: (row) => { setSelected([row.id]); } }]} />\n <p aria-live=\"polite\">{selected.length} rows selected</p>\n </UI.Stack>\n <UI.FilePicker label=\"Local file selection\" files={files} onChange={setFiles} maxFiles={5} maxBytes={10 * 1024 * 1024} />\n <UI.Stack gap=\"small\">\n <UI.TaskProgress title=\"Example tasks\" tasks={[\n { id: \"read\", label: \"Read documents\", status: \"done\" },\n { id: \"review\", label: \"Review results\", status: done ? \"done\" : \"pending\", description: \"Local example status, no running actor.\" },\n ]} />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setDone((current) => !current)}>Toggle example status</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>Flow diagram</h2>\n <p>The diagram gets its state from the same data as the task list.</p>\n <UI.FlowDiagram label={done ? \"Intake, review done, result ready\" : \"Intake, review running, result pending\"}\n nodes={[\n { id: \"input\", label: \"Intake\", detail: \"Documents are available\", status: \"done\", kind: \"service\" },\n { id: \"check\", label: \"Review\", detail: done ? \"Review completed\" : \"Documents are being reviewed\", status: done ? \"done\" : \"active\", kind: \"agent\" },\n { id: \"result\", label: \"Result\", detail: done ? \"Result ready\" : \"Waiting for the review\", status: done ? \"done\" : \"pending\", kind: \"actor\" },\n ]}\n edges={[{ source: \"input\", target: \"check\" }, { source: \"check\", target: \"result\" }]} />\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>SVG connections</h2>\n <p>SvgEdge draws the edges. Nodes, labels, and positions are in the code of this view.</p>\n <svg viewBox=\"0 0 360 160\" role=\"img\" aria-label={done ? \"Intake done, review completed, result ready\" : \"Intake done, review running, result open\"}\n className=\"block h-auto w-full text-[13px]\">\n <UI.SvgEdge d=\"M112 42 L144 42\" tone={done ? \"success\" : \"warning\"} active={!done} />\n <UI.SvgEdge d=\"M252 42 C320 42 320 118 252 118\" arrow={done ? \"end\" : \"none\"} tone={done ? \"success\" : \"neutral\"} lineStyle={done ? \"solid\" : \"dashed\"} />\n <UI.SvgEdge d=\"M144 118 C64 118 64 96 64 72\" arrow=\"both\" tone=\"accent\" />\n {[{ x: 8, y: 12, label: \"Intake\", status: \"Done\" },\n { x: 148, y: 12, label: \"Review\", status: done ? \"Done\" : \"Running\" },\n { x: 148, y: 88, label: \"Result\", status: done ? \"Ready\" : \"Open\" }].map((node) => <g key={node.label}>\n <rect x={node.x} y={node.y} width=\"104\" height=\"56\" rx=\"8\" className=\"fill-background stroke-border-strong\" />\n <text x={node.x + 52} y={node.y + 23} textAnchor=\"middle\" className=\"fill-foreground font-semibold\">{node.label}</text>\n <text x={node.x + 52} y={node.y + 42} textAnchor=\"middle\" className=\"fill-muted-foreground text-[11px]\">{node.status}</text>\n </g>)}\n </svg>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <UI.MessageList messages={messages} label=\"Local editorial notes\" />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setMessages((current) => [...current, {\n key: \"note-\" + current.length, sender: current.length % 2 ? \"Text review\" : \"Editorial\",\n text: \"Local example note \" + (current.length - 1) + \": This message was just added.\",\n }])}>Add local message</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.DocumentViewer title=\"Local form result\" format=\"text\" content={result} />\n <UI.DiffViewer title=\"Example change\" patch={\"--- a/result.txt\\\\n+++ b/result.txt\\\\n@@ -1 +1 @@\\\\n-Status: open\\\\n+Status: reviewed\"} />\n </UI.Stack>\n </UI.AppLayout>;\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n", "import type { AppPackage } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { controlsTemplate } from \"./controls-template\";\n\nexport interface ActorProgramTemplate {\n id: string;\n title: string;\n description: string;\n ragents: AppPackage;\n files: Readonly<Record<string, string>> & { readonly \"package.json\"?: never };\n}\n\nconst blank: ActorProgramTemplate = {\n id: \"blank\",\n title: \"Blank mini-app\",\n description: \"A pure React view on the existing actor without an additional server function.\",\n ragents: {\n title: \"My view\",\n description: \"A small interface of the existing actor.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\nconst App = () => (\n <UI.AppLayout title=\"My view\">\n <UI.Stack><p>Ready for your content.</p></UI.Stack>\n </UI.AppLayout>\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst chat: ActorProgramTemplate = {\n id: \"chat\",\n title: \"Actor chat\",\n description: \"Reusable chat with history and optional input to the actor of this view.\",\n ragents: {\n title: \"Actor chat\",\n description: \"Shows the conversation with an actor and sends it user input.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\nimport { context } from \"@ragents/client\";\n\nconst App = () => (\n <UI.Chat actor={\"@\" + context.actor.handle} className=\"h-full\" showInput placeholder=\"Message to the actor\" />\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst textAnalysis: ActorProgramTemplate = {\n id: \"text-analysis\",\n title: \"Text analysis\",\n description: \"A TypeScript actor analyzes texts with its own function, state, and React view.\",\n ragents: {\n title: \"Text analysis\",\n description: \"Counts characters, words, and lines and remembers the number of analyses.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [result, setResult] = React.useState(\"Ready\");\n\n const analyse = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"analyse\", { text: String(next.text ?? \"\") });\n setResult([\n \\`Characters: \\${answer.characters}\\`,\n \\`Words: \\${answer.words}\\`,\n \\`Lines: \\${answer.lines}\\`,\n ].join(\"\\\\n\"));\n };\n\n return (\n <UI.AppLayout title=\"Text analysis\" description={<>Analyses: {state.analyses ?? 0}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"Text\", type: \"textarea\", rows: 6, placeholder: \"Enter text\" },\n ]} values={values} onChange={setValues} onSubmit={analyse} submitLabel=\"Analyze\" />\n <UI.Stack><pre aria-live=\"polite\" className=\"min-h-[90px] overflow-auto rounded-md border border-border bg-muted p-2.5 font-mono whitespace-pre-wrap\">{result}</pre></UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ analyses: Type.Optional(Type.Integer({\"minimum\": 0})) }, {\"additionalProperties\": false}),\n functions: {\n analyse: {\n label: \"Analyze text\",\n description: \"Counts words, characters, and lines without external effects.\",\n tool: { name: \"analyse_text\" },\n input: Type.Object({ text: Type.String({\"description\": \"The text to analyze.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), characters: Type.Integer({\"minimum\": 0}), words: Type.Integer({\"minimum\": 0}), lines: Type.Integer({\"minimum\": 0}), analyses: Type.Integer({\"minimum\": 1}) }, {\"additionalProperties\": false}),\n capabilities: [],\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n analyse: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const analyses = (state.analyses ?? 0) + 1;\n context.state.replace({ analyses });\n\n return {\n text,\n characters: text.length,\n words: text ? text.split(/\\\\s+/).length : 0,\n lines: text ? text.split(/\\\\r?\\\\n/).length : 0,\n analyses,\n };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"counts words, lines, and further analyses\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.analyse({\"text\": \" Hello world\\\\nNew line \"}, context), {\"text\": \"Hello world\\\\nNew line\", \"characters\": 20, \"words\": 4, \"lines\": 2, \"analyses\": 1});\n assert.deepEqual(await program.functions.analyse({\"text\": \"\"}, context), {\"text\": \"\", \"characters\": 0, \"words\": 0, \"lines\": 0, \"analyses\": 2});\n assert.deepEqual(context.state.read(), {\"analyses\": 2});\n});\n`,\n },\n};\n\nconst headlessCounter: ActorProgramTemplate = {\n id: \"headless-counter\",\n title: \"Counter without interface\",\n description: \"A TypeScript actor counts inputs in its state and offers the same work as a function.\",\n ragents: {\n title: \"Counter\",\n description: \"Collects incoming texts without model calls or interface.\",\n backend: \"src/server.ts\",\n },\n files: {\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nconst state = Type.Object({\n texts: Type.Optional(Type.Array(Type.String())),\n count: Type.Optional(Type.Integer({ minimum: 0 })),\n}, { additionalProperties: false });\n\nexport const contract = {\n state,\n functions: {\n record: {\n label: \"Count text\",\n input: Type.Object({ text: Type.String() }, { additionalProperties: false }),\n output: Type.Object({ count: Type.Integer(), texts: Type.Array(Type.String()) }, { additionalProperties: false }),\n tool: { name: \"record_text\" },\n },\n inspect: {\n label: \"Read counter\",\n input: Type.Object({}, { additionalProperties: false }),\n output: state,\n tool: { name: \"read_counter\" },\n },\n },\n input: { capabilities: [] },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport type { Static } from \"typebox\";\nimport { contract } from \"./contract.ts\";\n\nconst record = (state: Static<typeof contract.state>, text: string) => {\n const texts = [...(state.texts ?? []), text];\n return { texts, count: texts.length };\n};\n\nexport default defineActor(contract, {\n functions: {\n record: (input, context) => {\n const result = record(context.state.read(), input.text);\n context.state.replace(result);\n return result;\n },\n inspect: (_input, context) => context.state.read(),\n },\n onInput: (input, context) => {\n context.state.replace(record(context.state.read(), input.content));\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"inputs and functions share the same counter\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n for (const content of [\"one\", \"two\", \"three\"]) {\n await program.onInput!({ id: content, content, artifactIds: [], sourceEventIds: [], subscriptionId: null, event: null }, context);\n }\n assert.deepEqual(await program.functions.inspect({}, context), { texts: [\"one\", \"two\", \"three\"], count: 3 });\n assert.deepEqual(await program.functions.record({ text: \"four\" }, context), { texts: [\"one\", \"two\", \"three\", \"four\"], count: 4 });\n assert.deepEqual(context.state.read(), { texts: [\"one\", \"two\", \"three\", \"four\"], count: 4 });\n});\n`,\n },\n};\n\nconst sharedList: ActorProgramTemplate = {\n id: \"shared-list\",\n title: \"Shared list of an actor\",\n description: \"An actor owns a function and a React view for the same list state.\",\n ragents: {\n title: \"Shared list\",\n description: \"Collects texts from the app and from an agent tool in a shared list.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [status, setStatus] = React.useState(\"Ready\");\n const entries = state.entries ?? [];\n\n const append = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"append\", { text: String(next.text ?? \"\") });\n setValues({ text: \"\" });\n setStatus(\\`Added: \\${answer.text}\\`);\n };\n\n return (\n <UI.AppLayout title=\"Shared list\" description={<>{entries.length} {entries.length === 1 ? \"item\" : \"items\"}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"New item\", type: \"textarea\", placeholder: \"Enter text\" },\n ]} values={values} onChange={setValues} onSubmit={append} submitLabel=\"Add\" />\n <UI.Stack>\n <p className=\"text-muted-foreground\" role=\"status\">{status}</p>\n <ul className=\"border-t border-border\">\n {entries.map((entry, index) => <li className=\"min-h-[31px] border-b border-border-soft py-1.5 [overflow-wrap:anywhere]\" key={index}>{entry}</li>)}\n </ul>\n </UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ entries: Type.Optional(Type.Array(Type.String())) }, {\"additionalProperties\": false}),\n functions: {\n append: {\n label: \"Add entry\",\n description: \"Appends the entered text to the shared list.\",\n input: Type.Object({ text: Type.String({\"description\": \"The text for the new list entry.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), entries: Type.Array(Type.String()) }, {\"additionalProperties\": false}),\n capabilities: [],\n tool: { name: \"append_to_list\", card: true },\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n append: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const entries = [...(state.entries ?? []), text];\n context.state.replace({ entries });\n return { text, entries };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"adds entries without losing existing entries\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.append({\"text\": \" First entry \"}, context), {\"text\": \"First entry\", \"entries\": [\"First entry\"]});\n assert.deepEqual(await program.functions.append({\"text\": \"Second entry\"}, context), {\"text\": \"Second entry\", \"entries\": [\"First entry\", \"Second entry\"]});\n assert.deepEqual(context.state.read(), {\"entries\": [\"First entry\", \"Second entry\"]});\n});\n`,\n },\n};\n\nexport const runModuleTemplates = [blank, chat, controlsTemplate, textAnalysis, headlessCounter, sharedList] as const;\n\nexport const templateFiles = (template: ActorProgramTemplate, name: string): Readonly<Record<string, string>> => ({\n \"package.json\": `${JSON.stringify({ name, private: true, type: \"module\", ragents: template.ragents }, null, 2)}\\n`,\n ...template.files,\n});\n\nexport const templateById = (id: string): ActorProgramTemplate => {\n const template = runModuleTemplates.find((candidate) => candidate.id === id);\n if (!template) throw new Error(`Unknown actor program template ${id}. Valid: ${runModuleTemplates.map((entry) => entry.id).join(\", \")}.`);\n return template;\n};\n", "import { realpath } from \"node:fs/promises\";\n\n/** A node:test reporter that writes one JSON line per passed test, failed test and stderr line of a test file. */\nconst reporterSource = `\nimport { inspect } from \"node:util\";\nconst shown = (value) => inspect(value, { depth: 4, breakLength: Infinity, maxArrayLength: 20, maxStringLength: 200 }).slice(0, 300);\nexport default async function* (source) {\n for await (const { type, data } of source) {\n if (type === \"test:pass\" && data.details?.type !== \"suite\") yield JSON.stringify({ kind: \"pass\" }) + \"\\\\n\";\n if (type === \"test:fail\" && data.details?.type !== \"suite\" && data.details?.error?.failureType !== \"subtestsFailed\") {\n const error = data.details.error;\n const cause = error.cause instanceof Error ? error.cause : error;\n const assertion = cause.code === \"ERR_ASSERTION\";\n yield JSON.stringify({ kind: \"fail\", name: data.name, file: data.file ?? null, line: data.line ?? null, column: data.column ?? null,\n message: String(cause.message), generated: cause.generatedMessage === true, stack: String(cause.stack ?? \"\"),\n ...(assertion ? { expected: shown(cause.expected), actual: shown(cause.actual) } : {}) }) + \"\\\\n\";\n }\n if (type === \"test:stderr\") yield JSON.stringify({ kind: \"stderr\", file: data.file ?? null, message: String(data.message) }) + \"\\\\n\";\n }\n}\n`;\n\nexport const testReporterArgument = `--test-reporter=data:text/javascript,${encodeURIComponent(reporterSource)}`;\n\ntype TestRecord =\n | { kind: \"pass\" }\n | { kind: \"fail\"; name: string; file: string | null; line: number | null; column: number | null; message: string; generated: boolean; stack: string; expected?: string; actual?: string }\n | { kind: \"stderr\"; file: string | null; message: string };\n\nconst maxDetailed = 10;\nconst frameLine = /^\\s+at /;\n\n/** The lines of an error output that name the error, without stack frames, code excerpts and the Node version. */\nconst errorLines = (lines: readonly string[]): string[] => {\n const meaningful = lines.map((line) => line.trimEnd()).filter((line) => line.trim() !== \"\" && !frameLine.test(line) && !/^Node\\.js v\\d/.test(line) && !/^\\s*\\^+$/.test(line));\n const named = meaningful.filter((line) => /^[A-Za-z]*Error\\b/.test(line));\n return (named.length > 0 ? named : meaningful.slice(-5)).slice(0, 5);\n};\n\n/** Collects the reporter lines of a test run and turns them into a short failure report: counts, and per failed test its name, message, expected and actual values and its place in the program. */\nexport const createTestReport = async (directory: string) => {\n const roots = [...new Set([directory, await realpath(directory)])].sort((left, right) => right.length - left.length);\n const relative = (text: string): string => roots.reduce((result, root) => result.replaceAll(`file://${root}/`, \"\").replaceAll(`${root}/`, \"\"), text);\n const failures: Extract<TestRecord, { kind: \"fail\" }>[] = [];\n const stderrByFile = new Map<string, string[]>();\n const unparsed: string[] = [];\n let passed = 0;\n let failed = 0;\n let pending = \"\";\n\n const record = (line: string): void => {\n if (line.trim() === \"\") return;\n let parsed: TestRecord;\n try {\n parsed = JSON.parse(line) as TestRecord;\n } catch {\n unparsed.push(line);\n return;\n }\n if (parsed.kind === \"pass\") passed += 1;\n if (parsed.kind === \"fail\") {\n failed += 1;\n if (failures.length < maxDetailed) failures.push(parsed);\n }\n if (parsed.kind === \"stderr\") {\n const lines = stderrByFile.get(parsed.file ?? \"\") ?? [];\n stderrByFile.set(parsed.file ?? \"\", [...lines, ...parsed.message.split(\"\\n\")].slice(-50));\n }\n };\n\n const placeOf = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const frame = failure.stack.split(\"\\n\").filter((line) => frameLine.test(line)).map(relative)\n .map((line) => /\\(?([^\\s()]+:\\d+:\\d+)\\)?\\s*$/.exec(line)?.[1])\n .find((place) => place !== undefined && !place.startsWith(\"/\") && !place.startsWith(\"node:\") && !place.includes(\"node_modules/\"));\n const declared = failure.file === null ? failure.name : `${relative(failure.file)}${failure.line === null ? \"\" : `:${failure.line}:${failure.column ?? 1}`}`;\n return frame ?? declared;\n };\n\n const describe = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const fileOutput = failure.message === \"test failed\" && failure.file !== null ? stderrByFile.get(failure.file) ?? stderrByFile.get(relative(failure.file)) : undefined;\n const message = fileOutput ? errorLines(fileOutput).join(\"; \") : failure.generated ? failure.message.split(\"\\n\")[0]!.replace(/:$/, \"\") : failure.message.trim().slice(0, 500);\n const values = failure.expected === undefined || failure.expected === failure.actual ? \"\" : ` - expected ${failure.expected}, actual ${failure.actual}`;\n return `- ${failure.name} (${placeOf(failure)}): ${relative(message)}${relative(values)}`;\n };\n\n return {\n stdout: (chunk: string): void => {\n const lines = (pending + chunk).split(\"\\n\");\n pending = lines.pop() ?? \"\";\n lines.forEach(record);\n },\n report: (name: string, outcome: { code: number | null; timedOut: boolean; stderr: string }): string => {\n record(pending);\n pending = \"\";\n const summary = outcome.timedOut\n ? `Tests for ${name} canceled after a timeout: ${passed} passed, ${failed} failed.`\n : `Tests for ${name} failed: ${passed} passed, ${failed} failed.`;\n const details = failures.map(describe);\n const more = failed > failures.length ? [`... and ${failed - failures.length} more`] : [];\n const withoutResult = failed === 0\n ? [`The test run ended${outcome.code === null ? \"\" : ` with code ${outcome.code}`} without a failed test:`, ...errorLines([...unparsed, ...outcome.stderr.split(\"\\n\")]).map(relative)]\n : [];\n return [summary, ...details, ...more, ...withoutResult].join(\"\\n\");\n },\n };\n};\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, holdsUsable, type RunFunction, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\nimport type { createProjectDiagnostics } from \"./project-diagnostics.js\";\nconst metadata = [\n { name: \"actor_program_create\", label: \"Create Actor Program\", description: \"Create a private TypeScript package with fixed libraries.\", longDescription: \"Edit files under @actors/name using workspace tools.\" },\n { name: \"actor_program_activate\", label: \"Activate Actor Program\", description: \"Typecheck, build and test a package, then activate its functions and optional views.\", longDescription: \"actor self or @handle attaches to an existing actor; omitted creates a TypeScript actor for a backend, or attaches static views to self.\" },\n { name: \"actor_program_list\", label: \"List Actor Programs\", description: \"List active actor packages, functions and views.\" },\n { name: \"actor_program_remove\", label: \"Remove Actor Program\", description: \"Detach functions and views and stop the backend.\", longDescription: \"A TypeScript actor is stopped; an LLM actor retains its agent behavior.\" },\n { name: \"actor_view_set_visibility\", label: \"Show or hide Actor View\", description: \"Set surface visibility by package-name/view-key or @handle/view-key.\", longDescription: \"Use names you chose; the server resolves the view ID. A unique view title also works.\" },\n { name: \"actor_program_diagnostics\", label: \"Actor Program Diagnostics\", description: \"Read the last project diagnostics.\", longDescription: \"Changed errors are automatically supplied before the next model request.\" },\n { name: \"actor_program_ensure\", label: \"Ensure Actor Program\", description: \"Make a package active once: return it when active, restart its stopped actor, activate it when installed, or install a shared package of the profile.\", longDescription: \"Safe to call on every start: an active package is returned unchanged and not rebuilt. status names what happened. actor_program_activate instead rebuilds and reactivates.\" },\n] as const;\nexport const actorProgramManagementToolNames = metadata.map((entry) => entry.name);\nexport const actorProgramToolsAvailable = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"For executable actors with agent.spawn and plugin.state.write.\" }, actor => actor.kind !== \"human\" && holdsUsable(actor, \"agent.spawn\") && holdsUsable(actor, \"plugin.state.write\"));\nconst name = Type.String({ pattern: \"^[a-z][a-z0-9-]{0,63}$\" });\ntype Diagnostics = Pick<ReturnType<typeof createProjectDiagnostics>, \"latest\">;\nconst managementTools = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): RunFunction[] => [\n defineRunFunction({ ...metadata[0], schema: Type.Object({ name, template: Type.Union(runtime.templates().map((entry) => Type.Literal(entry.id, { description: entry.description }))) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), directory: Type.String(), files: Type.Array(Type.String()) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => runtime.scaffold(scope.caller.runId, input.name, input.template) }),\n defineRunFunction({ ...metadata[1], schema: Type.Object({ name, actor: Type.Optional(Type.String()) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), actor: Type.String(), views: Type.Number(), active: Type.Literal(true) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.activate(scope.context(id), scope.caller.runId, input.name, scope.signal, input.actor) }),\n defineRunFunction({ ...metadata[2], schema: Type.Object({}, { additionalProperties: false }), resultSchema: Type.Array(Type.Object({ name: Type.String(), actor: Type.String(), functions: Type.Array(Type.String()), views: Type.Array(Type.Object({ name: Type.String(), title: Type.String(), visible: Type.Boolean() })) })), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope) => runtime.list(scope.caller.runId) }),\n defineRunFunction({ ...metadata[3], schema: Type.Object({ name }, { additionalProperties: false }), resultSchema: Type.Object({ removed: Type.String() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.remove(scope.context(id), scope.caller.runId, input.name) }),\n defineRunFunction({ ...metadata[4], schema: Type.Object({ view: Type.String({ minLength: 1, description: \"package-name/view-key or @handle/view-key of an activated view, without the surface entity prefix app:. No generated IDs needed.\" }), visible: Type.Boolean() }, { additionalProperties: false }), resultSchema: Type.Object({ view: Type.String(), visible: Type.Boolean() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.setVisibility(scope.context(id), scope.caller.runId, input.view, input.visible) }),\n defineRunFunction({ ...metadata[5], schema: Type.Object({ name: Type.Optional(name) }, { additionalProperties: false }), resultSchema: Type.String(), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => diagnostics.latest(scope.caller.runId, scope.caller.actorId, input.name) }),\n defineRunFunction({ ...metadata[6], schema: Type.Object({ name }, { additionalProperties: false }), resultSchema: Type.Object({ actorId: Type.String(), handle: Type.String(), status: Type.Union([Type.Literal(\"active\"), Type.Literal(\"restarted\"), Type.Literal(\"activated\"), Type.Literal(\"installed\")]) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.ensure(scope.context(id), scope.caller.runId, input.name, scope.signal) }),\n];\nexport const createActorProgramToolContributors = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): readonly ToolContributor[] => [\n { name: \"ragents.actor-programs.management\", descriptors: metadata.map((item) => toolDescriptorFrom(item, actorProgramToolsAvailable)), tools: () => managementTools(runtime, diagnostics) },\n { name: \"ragents.actor-programs.functions\", descriptors: [], dynamic: true, tools: (context) => runtime.installedTools(context) },\n];\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport { readClientUiComponentNames, readClientUiComponentContracts } from \"@ragents/host/plugin-support/actor-programs/client-contracts.js\";\nimport { actorProgramGuide } from \"./prompts.js\";\n\nconst available = defineToolAvailability({ availability: \"always\", availabilityDetail: \"Typed UI reference of the installed actor program plugin.\" }, () => true);\nconst metadata = {\n name: \"actor_program_controls\",\n label: \"Look up actor program guide and controls\",\n description: \"Read Mini-App control contracts or the actor-program authoring guide.\",\n longDescription: \"With topic: guide, explain the TypeScript package workflow through actor_program_activate. Otherwise list control names, or select one component (for example Form) for only its TypeScript props and supporting types. Import controls from @ragents/client/ui and use these exact props.\",\n};\n\nexport const describeClientControls = (component?: string) => {\n const components = readClientUiComponentNames();\n if (component === undefined) return { components };\n if (!components.includes(component)) throw new Error(`Unknown control ${component}. Valid: ${components.join(\", \")}`);\n return { files: readClientUiComponentContracts(component) };\n};\n\nexport const createControlsToolContributor = (): ToolContributor => ({\n name: \"ragents.actor-programs.controls\",\n descriptors: [toolDescriptorFrom(metadata, available)],\n tools: () => [defineRunFunction({\n ...metadata,\n available,\n schema: Type.Object({\n topic: Type.Optional(Type.Union([Type.Literal(\"controls\"), Type.Literal(\"guide\")], { description: \"Default controls: query component names or types. Guide: read the short package workflow without component.\" })),\n component: Type.Optional(Type.String({ minLength: 1, description: \"Optional control name from the catalog, without UI. prefix. Only valid when topic is controls or omitted.\" })),\n }, { additionalProperties: false }),\n resultSchema: Type.Union([\n Type.Object({ guide: Type.String() }, { additionalProperties: false }),\n Type.Object({ components: Type.Array(Type.String()) }, { additionalProperties: false }),\n Type.Object({ files: Type.Record(Type.String(), Type.String()) }, { additionalProperties: false }),\n ]),\n run: async (_scope, _call, input) => {\n if (input.topic === \"guide\") {\n if (input.component !== undefined) throw new Error(\"component is only allowed with topic: controls or without topic; for topic: guide, omit component.\");\n return { guide: await actorProgramGuide.render({}) };\n }\n return describeClientControls(input.component);\n },\n })],\n});\n", "import { pluginAsset } from \"@ragents/host/plugin-support/plugin-folder.js\";\nimport { boundToTools, handlebarsPrompt } from \"@ragents/host/plugin-support/prompt.js\";\n\nconst buildingTools = [\n \"actor_program_create\",\n \"actor_program_activate\",\n \"actor_program_diagnostics\",\n \"actor_program_list\",\n \"actor_program_remove\",\n \"actor_view_set_visibility\",\n] as const;\n\nexport const actorProgramGuide = handlebarsPrompt(\n \"ragents.actor-programs.prompt\", 750, pluginAsset(\"ragents.actor-programs\", \"prompt.hbs\"),\n);\n\nexport const actorProgramSummary = boundToTools(\n { ...handlebarsPrompt(\"ragents.actor-programs.summary\", 749, pluginAsset(\"ragents.actor-programs\", \"summary.hbs\")), delivery: \"initial\" },\n \"actor_program_controls\",\n ...buildingTools,\n);\n", "import { createHash } from \"node:crypto\";\nimport { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { AgentContribution, JsonValue } from \"@ragents/engine\";\nimport { projectSourceFiles } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\n\nconst entryType = \"ragents.actor-programs.project-diagnostics\";\nconst maxDeltaLines = 8;\nconst maxLineLength = 240;\n\ninterface ProgramDiagnostics {\n fingerprint: string;\n errors: string[];\n}\n\nexport interface ProjectDiagnosticsSnapshot {\n version: 1;\n programs: Record<string, ProgramDiagnostics>;\n}\n\nexport interface ProjectDiagnosticsOptions {\n workspaceFor: (runId: string) => string | Promise<string>;\n check: (runId: string, programName: string, actorId: string, signal?: AbortSignal) => Promise<unknown>;\n applies?: (runId: string, actorId: string) => boolean;\n}\n\nconst messageOf = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst fingerprintOf = (value: unknown): string => createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\");\nconst errorLines = (error: unknown): string[] => {\n const complete = error instanceof Error ? (error as { lines?: unknown }).lines : undefined;\n if (Array.isArray(complete) && complete.every((line) => typeof line === \"string\")) return [...new Set(complete as string[])];\n const lines = messageOf(error).split(\"\\n\").map((line) => line.trim()).filter(Boolean);\n const issues = lines.filter((line) => !/^(Build failed with \\d+ errors?:|.*(?:Typecheck|Diagnostics).*:)$/i.test(line));\n return [...new Set(issues.length ? issues : lines)];\n};\nconst allErrors = (snapshot: ProjectDiagnosticsSnapshot): string[] => Object.entries(snapshot.programs)\n .sort(([left], [right]) => left.localeCompare(right))\n .flatMap(([programName, program]) => program.errors.map((error) => `${programName}: ${error}`));\nconst isSnapshot = (value: unknown): value is ProjectDiagnosticsSnapshot => {\n if (value === null || typeof value !== \"object\") return false;\n const snapshot = value as ProjectDiagnosticsSnapshot;\n return snapshot.version === 1 && snapshot.programs !== null && typeof snapshot.programs === \"object\"\n && Object.values(snapshot.programs).every((program) => program && typeof program.fingerprint === \"string\"\n && Array.isArray(program.errors) && program.errors.every((error) => typeof error === \"string\"));\n};\n\nexport const createProjectDiagnostics = (options: ProjectDiagnosticsOptions) => {\n const snapshots = new Map<string, Map<string, ProjectDiagnosticsSnapshot>>();\n const remember = (runId: string, actorId: string, snapshot: ProjectDiagnosticsSnapshot): void => {\n const agents = snapshots.get(runId) ?? new Map<string, ProjectDiagnosticsSnapshot>();\n agents.set(actorId, snapshot);\n snapshots.set(runId, agents);\n };\n const contribution: AgentContribution = {\n id: entryType,\n beforeModelCall: async ({ runId, agentId }, call) => {\n if (options.applies?.(runId, agentId) === false) return undefined;\n call.signal?.throwIfAborted();\n const previous: ProjectDiagnosticsSnapshot = isSnapshot(call.kept) ? call.kept : { version: 1, programs: {} };\n const next: ProjectDiagnosticsSnapshot = { version: 1, programs: {} };\n let changed = false;\n try {\n const directory = await options.workspaceFor(runId);\n const entries = await readdir(directory, { withFileTypes: true }).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return [];\n throw error;\n });\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n if (!entry.isDirectory() && !entry.isSymbolicLink()) continue;\n call.signal?.throwIfAborted();\n let fingerprint: string;\n let errors: string[] = [];\n try {\n if (entry.isSymbolicLink()) throw new Error(\"Actor projects must not be symlinks.\");\n fingerprint = fingerprintOf(await projectSourceFiles(path.join(directory, entry.name)));\n } catch (error) {\n errors = errorLines(error);\n fingerprint = fingerprintOf({ errors });\n }\n const prior = previous.programs[entry.name];\n if (prior?.fingerprint === fingerprint) {\n next.programs[entry.name] = prior;\n continue;\n }\n changed = true;\n if (errors.length === 0) {\n try { await options.check(runId, entry.name, agentId, call.signal); }\n catch (error) {\n call.signal?.throwIfAborted();\n errors = errorLines(error);\n }\n }\n next.programs[entry.name] = { fingerprint, errors };\n }\n } catch (error) {\n call.signal?.throwIfAborted();\n const errors = errorLines(error);\n Object.assign(next.programs, previous.programs);\n next.programs[\"(Workspace)\"] = { fingerprint: fingerprintOf({ errors }), errors };\n }\n if (JSON.stringify(Object.keys(previous.programs).sort()) !== JSON.stringify(Object.keys(next.programs).sort())) changed = true;\n if (JSON.stringify(previous) !== JSON.stringify(next)) changed = true;\n call.signal?.throwIfAborted();\n remember(runId, agentId, next);\n if (!changed) return undefined;\n call.keep(next as unknown as JsonValue);\n const before = new Set(allErrors(previous));\n const after = new Set(allErrors(next));\n const added = [...after].filter((error) => !before.has(error));\n const resolved = [...before].filter((error) => !after.has(error));\n const changes = [...added.map((error) => `New: ${error}`), ...resolved.map((error) => `Fixed: ${error}`)];\n const lines = changes.slice(0, maxDeltaLines).map((line) => line.length > maxLineLength ? `${line.slice(0, maxLineLength - 3)}...` : line);\n const omitted = changes.length - lines.length;\n return [\n `Actor program project check (TypeScript and build): ${after.size} errors in ${Object.keys(next.programs).length} projects; ${added.length} new, ${resolved.length} fixed.`,\n ...lines,\n ...(omitted > 0 ? [`${omitted} more changes. Complete last state: actor_program_diagnostics.`] : []),\n ].join(\"\\n\");\n },\n };\n return {\n contribution,\n latest(runId: string, actorId: string, programName?: string): string {\n const snapshot = snapshots.get(runId)?.get(actorId);\n if (!snapshot) return \"No actor program project state checked for this agent yet.\";\n const programs = Object.entries(snapshot.programs).filter(([id]) => programName === undefined || id === programName);\n if (programs.length === 0) return programName ? `No checked project state for ${programName}.` : \"No actor program projects exist.\";\n return programs.sort(([left], [right]) => left.localeCompare(right)).map(([id, program]) =>\n [`${id}: ${program.errors.length} errors`, ...program.errors].join(\"\\n\")).join(\"\\n\\n\");\n },\n forget(runId: string): void { snapshots.delete(runId); },\n };\n};\n", "import type { AccessProjectionContribution, JsonValue } from \"@ragents/engine\";\nimport { ACTOR_INVOCATIONS_STATE_ID, ACTOR_PROGRAMS_STATE_ID } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\n\nconst record = (value: JsonValue | undefined): Record<string, JsonValue | undefined> | undefined =>\n value !== null && typeof value === \"object\" && !Array.isArray(value) ? value : undefined;\n\n/** Without runs.inspect, only the name, actor, and views of a program remain; sources, functions, and directories are missing. */\nconst visibleProgram = (state: JsonValue): JsonValue => {\n const program = record(record(state)?.program);\n if (!program) return state;\n const views = Array.isArray(program.views) ? program.views.map((value) => {\n const view = record(value);\n return view ? { id: view.id, key: view.key, title: view.title, visible: view.visible } : value;\n }) : [];\n return {\n version: 1,\n program: {\n name: program.name,\n title: program.title,\n actorId: program.actorId,\n actorHandle: program.actorHandle,\n revision: program.revision,\n views,\n },\n };\n};\n\nexport const actorProgramAccessProjections: readonly AccessProjectionContribution[] = [\n { id: ACTOR_PROGRAMS_STATE_ID, state: (entry) => visibleProgram(entry.state), chatEvent: () => undefined },\n { id: ACTOR_INVOCATIONS_STATE_ID, state: (entry) => ({ version: 1, revision: entry.updatedAt }), chatEvent: () => undefined },\n];\n"],
5
+ "mappings": "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",
6
6
  "names": ["path", "runtimeProviderToken", "name", "selected", "realpath", "assertJsonValue", "runCapabilityContractHash", "available", "descriptor", "name", "failed", "record", "name", "name", "realpath", "record", "program", "runCapabilityContractHash", "delivery", "available", "selected", "occupied", "actor", "assertJsonValue", "defineRunFunction", "defineToolAvailability", "Type", "defineRunFunction", "defineToolAvailability", "toolDescriptorFrom", "defineToolAvailability", "metadata", "toolDescriptorFrom", "defineRunFunction", "Type", "readdir", "path", "projectSourceFiles", "errorLines", "ACTOR_INVOCATIONS_STATE_ID", "ACTOR_PROGRAMS_STATE_ID", "runtimeProviderToken", "name", "path"]
7
7
  }