@skaile/workspaces 6.14.0 → 6.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/dist/agent-file-refresh-76NNFB4W.js +89 -0
- package/dist/agent-file-refresh-76NNFB4W.js.map +1 -0
- package/dist/ai-sdk.js +8 -7
- package/dist/ai-sdk.js.map +1 -1
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-DOG5FK7T.js → asset-feeds-ON7FYHHF.js} +25 -23
- package/dist/asset-feeds-ON7FYHHF.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +8 -7
- package/dist/asset-manager/history.js +7 -6
- package/dist/asset-manager/index.js +17 -15
- package/dist/asset-manager/installer.js +16 -9
- package/dist/asset-manager/renderers.js +8 -8
- package/dist/asset-manager/src/add-remove/add.d.ts +134 -0
- package/dist/asset-manager/src/add-remove/add.d.ts.map +1 -0
- package/dist/asset-manager/src/add-remove/remove.d.ts +329 -0
- package/dist/asset-manager/src/add-remove/remove.d.ts.map +1 -0
- package/dist/asset-manager/src/agent-render.d.ts +116 -0
- package/dist/asset-manager/src/agent-render.d.ts.map +1 -0
- package/dist/asset-manager/src/composed-blocks.d.ts +40 -0
- package/dist/asset-manager/src/composed-blocks.d.ts.map +1 -0
- package/dist/asset-manager/src/config/core.d.ts +297 -0
- package/dist/asset-manager/src/config/core.d.ts.map +1 -0
- package/dist/asset-manager/src/config/edit.d.ts +161 -0
- package/dist/asset-manager/src/config/edit.d.ts.map +1 -0
- package/dist/asset-manager/src/index.d.ts +31 -2961
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install/clone-commit-fetcher.d.ts +11 -0
- package/dist/asset-manager/src/install/clone-commit-fetcher.d.ts.map +1 -0
- package/dist/asset-manager/src/install/install.d.ts +151 -0
- package/dist/asset-manager/src/install/install.d.ts.map +1 -0
- package/dist/asset-manager/src/install/restore.d.ts +76 -0
- package/dist/asset-manager/src/install/restore.d.ts.map +1 -0
- package/dist/asset-manager/src/install-agent.d.ts +52 -4
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts +70 -2
- package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +54 -4
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/lock/copies.d.ts +156 -0
- package/dist/asset-manager/src/lock/copies.d.ts.map +1 -0
- package/dist/asset-manager/src/lock/library.d.ts +261 -0
- package/dist/asset-manager/src/lock/library.d.ts.map +1 -0
- package/dist/asset-manager/src/mcp-render.d.ts +86 -0
- package/dist/asset-manager/src/mcp-render.d.ts.map +1 -0
- package/dist/asset-manager/src/omp-sweep.d.ts +25 -0
- package/dist/asset-manager/src/omp-sweep.d.ts.map +1 -0
- package/dist/asset-manager/src/read/diff.d.ts +109 -0
- package/dist/asset-manager/src/read/diff.d.ts.map +1 -0
- package/dist/asset-manager/src/read/doctor.d.ts +116 -0
- package/dist/asset-manager/src/read/doctor.d.ts.map +1 -0
- package/dist/asset-manager/src/read/gaps.d.ts +120 -0
- package/dist/asset-manager/src/read/gaps.d.ts.map +1 -0
- package/dist/asset-manager/src/read/graph.d.ts +69 -0
- package/dist/asset-manager/src/read/graph.d.ts.map +1 -0
- package/dist/asset-manager/src/read/outdated.d.ts +152 -0
- package/dist/asset-manager/src/read/outdated.d.ts.map +1 -0
- package/dist/asset-manager/src/read/state.d.ts +265 -0
- package/dist/asset-manager/src/read/state.d.ts.map +1 -0
- package/dist/asset-manager/src/renderers.d.ts +11 -1
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/asset-manager/src/resolve/guards.d.ts +167 -0
- package/dist/asset-manager/src/resolve/guards.d.ts.map +1 -0
- package/dist/asset-manager/src/resolve/scan.d.ts +222 -0
- package/dist/asset-manager/src/resolve/scan.d.ts.map +1 -0
- package/dist/asset-manager/src/resolve/stores.d.ts +176 -0
- package/dist/asset-manager/src/resolve/stores.d.ts.map +1 -0
- package/dist/asset-manager/src/shared/files.d.ts +42 -0
- package/dist/asset-manager/src/shared/files.d.ts.map +1 -0
- package/dist/asset-manager/src/shared/library-hooks.d.ts +16 -0
- package/dist/asset-manager/src/shared/library-hooks.d.ts.map +1 -0
- package/dist/asset-manager/src/shared/library.d.ts +96 -0
- package/dist/asset-manager/src/shared/library.d.ts.map +1 -0
- package/dist/asset-manager/src/shared/refs.d.ts +101 -0
- package/dist/asset-manager/src/shared/refs.d.ts.map +1 -0
- package/dist/asset-manager/src/shared/types.d.ts +399 -0
- package/dist/asset-manager/src/shared/types.d.ts.map +1 -0
- package/dist/bridge/harnesses/claude-sdk.js +13 -19
- package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
- package/dist/bridge/harnesses/codex.js +10 -10
- package/dist/bridge/harnesses/continue.js +12 -16
- package/dist/bridge/harnesses/continue.js.map +1 -1
- package/dist/bridge/harnesses/echo.js +5 -10
- package/dist/bridge/harnesses/echo.js.map +1 -1
- package/dist/bridge/harnesses/gemini.js +5 -5
- package/dist/bridge/harnesses/goose.js +13 -17
- package/dist/bridge/harnesses/goose.js.map +1 -1
- package/dist/bridge/harnesses/omp.js +7 -13
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +13 -17
- package/dist/bridge/harnesses/opencode.js.map +1 -1
- package/dist/bridge/harnesses/qwen.js +6 -11
- package/dist/bridge/harnesses/qwen.js.map +1 -1
- package/dist/bridge/index.js +18 -18
- package/dist/bridge/src/codex/managed-harness.d.ts.map +1 -1
- package/dist/bridge/src/driver-contract.d.ts +72 -0
- package/dist/bridge/src/driver-contract.d.ts.map +1 -0
- package/dist/bridge/src/harness-model-check.d.ts +1 -1
- package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/_subprocess-cli.d.ts +8 -0
- package/dist/bridge/src/harnesses/_subprocess-cli.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/codex.d.ts +2 -0
- package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/continue.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/echo.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/gemini.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/goose.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/opencode.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/qwen.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +2 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/preflight.d.ts +114 -0
- package/dist/bridge/src/preflight.d.ts.map +1 -0
- package/dist/bridge/src/registry.d.ts +12 -0
- package/dist/bridge/src/registry.d.ts.map +1 -1
- package/dist/{chunk-7UBCUKJO.js → chunk-2JUCWMIS.js} +8808 -8337
- package/dist/chunk-2JUCWMIS.js.map +1 -0
- package/dist/{chunk-VS6XC5JE.js → chunk-2MTRRK37.js} +3 -3
- package/dist/{chunk-VS6XC5JE.js.map → chunk-2MTRRK37.js.map} +1 -1
- package/dist/chunk-2PJYJPDE.js +3 -0
- package/dist/chunk-2PJYJPDE.js.map +1 -0
- package/dist/{chunk-ZQL6HGTW.js → chunk-2SSG5B24.js} +4 -4
- package/dist/{chunk-ZQL6HGTW.js.map → chunk-2SSG5B24.js.map} +1 -1
- package/dist/{chunk-WDG5IVEA.js → chunk-2ZDZJ7XQ.js} +3 -3
- package/dist/{chunk-WDG5IVEA.js.map → chunk-2ZDZJ7XQ.js.map} +1 -1
- package/dist/{chunk-V2VDTQ7A.js → chunk-3A7JUOY2.js} +3 -3
- package/dist/{chunk-V2VDTQ7A.js.map → chunk-3A7JUOY2.js.map} +1 -1
- package/dist/chunk-3LAJJURV.js +26 -0
- package/dist/chunk-3LAJJURV.js.map +1 -0
- package/dist/{chunk-X66KSHZF.js → chunk-3UYKT62L.js} +5 -5
- package/dist/{chunk-X66KSHZF.js.map → chunk-3UYKT62L.js.map} +1 -1
- package/dist/{chunk-J3FJTH3V.js → chunk-4X5WXQV7.js} +4 -4
- package/dist/{chunk-J3FJTH3V.js.map → chunk-4X5WXQV7.js.map} +1 -1
- package/dist/chunk-4ZNKEDYH.js +887 -0
- package/dist/chunk-4ZNKEDYH.js.map +1 -0
- package/dist/{chunk-DYH3VSPU.js → chunk-65SOXO7I.js} +20 -14
- package/dist/chunk-65SOXO7I.js.map +1 -0
- package/dist/{chunk-MVUXBWNW.js → chunk-6HTN2UIJ.js} +3 -3
- package/dist/{chunk-MVUXBWNW.js.map → chunk-6HTN2UIJ.js.map} +1 -1
- package/dist/{chunk-4SSTREBO.js → chunk-6KV34G6A.js} +8 -8
- package/dist/{chunk-4SSTREBO.js.map → chunk-6KV34G6A.js.map} +1 -1
- package/dist/{chunk-YNQRVTXH.js → chunk-6M44OQKH.js} +40 -44
- package/dist/chunk-6M44OQKH.js.map +1 -0
- package/dist/{chunk-B6W5DCH5.js → chunk-72DYHOO2.js} +24 -25
- package/dist/chunk-72DYHOO2.js.map +1 -0
- package/dist/{chunk-RRAXV5LE.js → chunk-7IW5E6LB.js} +43 -48
- package/dist/chunk-7IW5E6LB.js.map +1 -0
- package/dist/{chunk-BNLXZXZN.js → chunk-BRAOB37W.js} +97 -47
- package/dist/chunk-BRAOB37W.js.map +1 -0
- package/dist/{chunk-ZLDAPZIX.js → chunk-BTMSHGN3.js} +4 -4
- package/dist/{chunk-ZLDAPZIX.js.map → chunk-BTMSHGN3.js.map} +1 -1
- package/dist/{chunk-7K73MCI6.js → chunk-CU5WY6HN.js} +3 -3
- package/dist/{chunk-7K73MCI6.js.map → chunk-CU5WY6HN.js.map} +1 -1
- package/dist/{chunk-G2ZWIYZR.js → chunk-DFFJKGCW.js} +3 -3
- package/dist/{chunk-G2ZWIYZR.js.map → chunk-DFFJKGCW.js.map} +1 -1
- package/dist/{chunk-CG63XGVV.js → chunk-EGKCKWWE.js} +3 -3
- package/dist/{chunk-CG63XGVV.js.map → chunk-EGKCKWWE.js.map} +1 -1
- package/dist/{chunk-CJO3XKO7.js → chunk-ETGC2MEM.js} +4 -4
- package/dist/{chunk-CJO3XKO7.js.map → chunk-ETGC2MEM.js.map} +1 -1
- package/dist/{chunk-CFRHYD4C.js → chunk-FPG36VC4.js} +8 -13
- package/dist/chunk-FPG36VC4.js.map +1 -0
- package/dist/{chunk-SBAUZ7XH.js → chunk-H3PY5DFL.js} +4 -4
- package/dist/{chunk-SBAUZ7XH.js.map → chunk-H3PY5DFL.js.map} +1 -1
- package/dist/{chunk-7HRZACI4.js → chunk-HW4BDJPC.js} +17 -6
- package/dist/chunk-HW4BDJPC.js.map +1 -0
- package/dist/{chunk-GJT2Q5XD.js → chunk-HXST2IYJ.js} +3 -3
- package/dist/{chunk-GJT2Q5XD.js.map → chunk-HXST2IYJ.js.map} +1 -1
- package/dist/{chunk-7VBD5XUM.js → chunk-IG4YQ7ER.js} +32 -90
- package/dist/chunk-IG4YQ7ER.js.map +1 -0
- package/dist/{chunk-DWPQBMCY.js → chunk-JPV4WE5L.js} +2 -2
- package/dist/{chunk-DWPQBMCY.js.map → chunk-JPV4WE5L.js.map} +1 -1
- package/dist/{chunk-OC3AIMZH.js → chunk-KDRA6FYE.js} +120 -211
- package/dist/chunk-KDRA6FYE.js.map +1 -0
- package/dist/{chunk-KOI7QFDH.js → chunk-M7XIYHWB.js} +3 -3
- package/dist/{chunk-KOI7QFDH.js.map → chunk-M7XIYHWB.js.map} +1 -1
- package/dist/{chunk-7LJUK5JK.js → chunk-MG6QD7GE.js} +201 -43
- package/dist/chunk-MG6QD7GE.js.map +1 -0
- package/dist/{chunk-XHLRMUMO.js → chunk-NAQXDTF3.js} +3 -3
- package/dist/{chunk-XHLRMUMO.js.map → chunk-NAQXDTF3.js.map} +1 -1
- package/dist/{chunk-YJAKSCCN.js → chunk-NJ6UCY2B.js} +3 -3
- package/dist/{chunk-YJAKSCCN.js.map → chunk-NJ6UCY2B.js.map} +1 -1
- package/dist/{chunk-OKPITFE3.js → chunk-NNJQQYHY.js} +2 -2
- package/dist/{chunk-OKPITFE3.js.map → chunk-NNJQQYHY.js.map} +1 -1
- package/dist/{chunk-QNHW26AT.js → chunk-OD4N5O7V.js} +4 -4
- package/dist/{chunk-QNHW26AT.js.map → chunk-OD4N5O7V.js.map} +1 -1
- package/dist/{chunk-F7WMHDTV.js → chunk-P6FJDT35.js} +27 -7
- package/dist/chunk-P6FJDT35.js.map +1 -0
- package/dist/{chunk-IOXFT5D7.js → chunk-PD42JZWI.js} +3 -3
- package/dist/{chunk-IOXFT5D7.js.map → chunk-PD42JZWI.js.map} +1 -1
- package/dist/{chunk-MS2IXLTC.js → chunk-PMXTBWFD.js} +27 -7
- package/dist/chunk-PMXTBWFD.js.map +1 -0
- package/dist/{chunk-NAAFRZTA.js → chunk-PPSSDUN6.js} +3 -3
- package/dist/{chunk-NAAFRZTA.js.map → chunk-PPSSDUN6.js.map} +1 -1
- package/dist/{chunk-LMUNQYJQ.js → chunk-PRB67LCK.js} +127 -18
- package/dist/chunk-PRB67LCK.js.map +1 -0
- package/dist/{chunk-RLV3FF4I.js → chunk-QUIK7L3Z.js} +11 -11
- package/dist/{chunk-RLV3FF4I.js.map → chunk-QUIK7L3Z.js.map} +1 -1
- package/dist/{chunk-DRUAQ7IY.js → chunk-QUPZKTF3.js} +9 -8
- package/dist/chunk-QUPZKTF3.js.map +1 -0
- package/dist/{chunk-7FXOOUOC.js → chunk-RPRMD7XV.js} +27 -11
- package/dist/chunk-RPRMD7XV.js.map +1 -0
- package/dist/{chunk-3BRBTQ6M.js → chunk-S3UOZBGE.js} +20 -3
- package/dist/chunk-S3UOZBGE.js.map +1 -0
- package/dist/{chunk-LQWOU7S2.js → chunk-SFBLZOV5.js} +3 -3
- package/dist/{chunk-LQWOU7S2.js.map → chunk-SFBLZOV5.js.map} +1 -1
- package/dist/{chunk-EB2LKPI6.js → chunk-SMFZ5YGN.js} +4 -4
- package/dist/{chunk-EB2LKPI6.js.map → chunk-SMFZ5YGN.js.map} +1 -1
- package/dist/{chunk-243Z3BNB.js → chunk-SX54OQQT.js} +4 -4
- package/dist/{chunk-243Z3BNB.js.map → chunk-SX54OQQT.js.map} +1 -1
- package/dist/{chunk-2PVYDAFN.js → chunk-T65N4CIZ.js} +3 -3
- package/dist/{chunk-2PVYDAFN.js.map → chunk-T65N4CIZ.js.map} +1 -1
- package/dist/{chunk-QBLS7X3Z.js → chunk-TVRL3IPZ.js} +3 -3
- package/dist/{chunk-QBLS7X3Z.js.map → chunk-TVRL3IPZ.js.map} +1 -1
- package/dist/{chunk-2URJ7W5X.js → chunk-TW5AP6IF.js} +5 -5
- package/dist/{chunk-2URJ7W5X.js.map → chunk-TW5AP6IF.js.map} +1 -1
- package/dist/{chunk-F6LDWA2N.js → chunk-TYK752MU.js} +3 -3
- package/dist/{chunk-F6LDWA2N.js.map → chunk-TYK752MU.js.map} +1 -1
- package/dist/{chunk-HPQ2WDYC.js → chunk-U2WPJHRA.js} +5 -5
- package/dist/{chunk-HPQ2WDYC.js.map → chunk-U2WPJHRA.js.map} +1 -1
- package/dist/{chunk-MEU2HHGV.js → chunk-U7P22GEB.js} +386 -46
- package/dist/chunk-U7P22GEB.js.map +1 -0
- package/dist/{chunk-6ISJMEDX.js → chunk-VFEZUSB6.js} +4 -4
- package/dist/{chunk-6ISJMEDX.js.map → chunk-VFEZUSB6.js.map} +1 -1
- package/dist/{chunk-5FO4U3OL.js → chunk-WW22FS74.js} +75 -67
- package/dist/chunk-WW22FS74.js.map +1 -0
- package/dist/{chunk-WCUT3EQR.js → chunk-Z23I2JA6.js} +7 -7
- package/dist/{chunk-WCUT3EQR.js.map → chunk-Z23I2JA6.js.map} +1 -1
- package/dist/{chunk-VKGNMXGZ.js → chunk-Z7HLX4V2.js} +4 -4
- package/dist/{chunk-VKGNMXGZ.js.map → chunk-Z7HLX4V2.js.map} +1 -1
- package/dist/{chunk-LZCX2TCZ.js → chunk-ZII54C3E.js} +355 -1075
- package/dist/chunk-ZII54C3E.js.map +1 -0
- package/dist/{chunk-CVUMZTNO.js → chunk-ZQPBYLCS.js} +4 -4
- package/dist/{chunk-CVUMZTNO.js.map → chunk-ZQPBYLCS.js.map} +1 -1
- package/dist/{claude-code-LFAOJ3UQ.js → claude-code-VL6UM7BZ.js} +4 -4
- package/dist/{claude-code-LFAOJ3UQ.js.map → claude-code-VL6UM7BZ.js.map} +1 -1
- package/dist/cli/index.js +494 -301
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-file-refresh.d.ts +25 -0
- package/dist/cli/src/agent-file-refresh.d.ts.map +1 -0
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +9 -2
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/harness.d.ts +1 -1
- package/dist/cli/src/commands/harness.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +5 -7
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/preset-export.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +27 -48
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +6 -9
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts +6 -0
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/config-checks.d.ts.map +1 -1
- package/dist/cli/src/harness-error.d.ts +11 -9
- package/dist/cli/src/harness-error.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +48 -74
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +22 -22
- package/dist/{connectors-KPF4UUDS.js → connectors-7EPJRVLJ.js} +25 -25
- package/dist/{connectors-KPF4UUDS.js.map → connectors-7EPJRVLJ.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +7 -6
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +3 -3
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/agent-prompt-sections.d.ts +96 -4
- package/dist/core/src/agent-prompt-sections.d.ts.map +1 -1
- package/dist/core/src/check-asset.d.ts +115 -0
- package/dist/core/src/check-asset.d.ts.map +1 -0
- package/dist/core/src/harness-model.d.ts +20 -0
- package/dist/core/src/harness-model.d.ts.map +1 -0
- package/dist/core/src/index.d.ts +10 -6
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +12 -10
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +42 -11
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +17 -0
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-identity.d.ts +41 -0
- package/dist/core/src/repo-identity.d.ts.map +1 -0
- package/dist/core/src/repo-manager.d.ts +3 -9
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +7 -6
- package/dist/deploy/index.js.map +1 -1
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/{ensure-sources-FOMEGCQ5.js → ensure-sources-CI3JQJST.js} +32 -30
- package/dist/ensure-sources-CI3JQJST.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +22 -22
- package/dist/factory-assets/connectors/deploy.js +22 -22
- package/dist/factory-assets/connectors/devserver.js +22 -22
- package/dist/factory-assets/connectors/flow/adapter.js +22 -22
- package/dist/factory-assets/connectors/flow/engine.js +8 -7
- package/dist/factory-assets/connectors/flow/run-flow.js +24 -24
- package/dist/factory-assets/connectors/flow.js +22 -22
- package/dist/factory-assets/connectors/git.js +22 -22
- package/dist/factory-assets/connectors/gmail.js +22 -22
- package/dist/factory-assets/connectors/googledrive.js +22 -22
- package/dist/factory-assets/connectors/local.js +22 -22
- package/dist/factory-assets/connectors/mattermost.js +22 -22
- package/dist/factory-assets/connectors/memory.js +22 -22
- package/dist/factory-assets/connectors/minio.js +22 -22
- package/dist/factory-assets/connectors/postgres.js +22 -22
- package/dist/factory-assets/connectors/s3.js +22 -22
- package/dist/factory-assets/connectors/sharepoint.js +22 -22
- package/dist/factory-assets/connectors/sqlite.js +22 -22
- package/dist/factory-assets/connectors/static-server.js +22 -22
- package/dist/factory-assets/connectors/tunnel.js +22 -22
- package/dist/factory-assets/connectors/webdav.js +22 -22
- package/dist/factory-assets/connectors/xstate-store.js +22 -22
- package/dist/factory-assets/connectors/xstate.js +22 -22
- package/dist/{flows-J64L5MGJ.js → flows-6XQAYQS4.js} +12 -11
- package/dist/{flows-J64L5MGJ.js.map → flows-6XQAYQS4.js.map} +1 -1
- package/dist/{helpers-ZJ67FO3Z.js → helpers-26MR5QPO.js} +32 -30
- package/dist/{helpers-ZJ67FO3Z.js.map → helpers-26MR5QPO.js.map} +1 -1
- package/dist/library/index.js +10 -10
- package/dist/library/install.js +4 -4
- package/dist/library/src/index.d.ts +1 -1
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/schema.d.ts +19 -0
- package/dist/library/src/local/schema.d.ts.map +1 -1
- package/dist/library/src/user-library.d.ts +18 -0
- package/dist/library/src/user-library.d.ts.map +1 -1
- package/dist/{library-publish-RGVXGTY4.js → library-publish-F3AKF66O.js} +74 -68
- package/dist/library-publish-F3AKF66O.js.map +1 -0
- package/dist/model-endpoint/index.js +10 -9
- package/dist/{open-library-I5JHL37T.js → open-library-FVV6GG4I.js} +35 -33
- package/dist/{open-library-I5JHL37T.js.map → open-library-FVV6GG4I.js.map} +1 -1
- package/dist/{open-registry-4HNCWOCN.js → open-registry-VX2BVMS5.js} +16 -16
- package/dist/{open-registry-4HNCWOCN.js.map → open-registry-VX2BVMS5.js.map} +1 -1
- package/dist/{paths-PXBWY532.js → paths-PIWSSUUG.js} +10 -9
- package/dist/{paths-PXBWY532.js.map → paths-PIWSSUUG.js.map} +1 -1
- package/dist/{plugin-store-ZC3EGZ3D.js → plugin-store-MVTW6G7J.js} +10 -9
- package/dist/{plugin-store-ZC3EGZ3D.js.map → plugin-store-MVTW6G7J.js.map} +1 -1
- package/dist/{project-K5JWPIJ6.js → project-GFQP4TW6.js} +50 -48
- package/dist/{project-K5JWPIJ6.js.map → project-GFQP4TW6.js.map} +1 -1
- package/dist/resolver/index.js +8 -7
- package/dist/runner/composition-content.d.ts +2 -0
- package/dist/runner/composition-content.js +29 -0
- package/dist/runner/composition-content.js.map +1 -0
- package/dist/runner/index.js +40 -39
- package/dist/runner/src/compaction/prompt.d.ts.map +1 -1
- package/dist/runner/src/composition/content-entry.d.ts +15 -0
- package/dist/runner/src/composition/content-entry.d.ts.map +1 -0
- package/dist/runner/src/composition/content-source.d.ts +7 -0
- package/dist/runner/src/composition/content-source.d.ts.map +1 -1
- package/dist/runner/src/composition/dry-run.d.ts +5 -1
- package/dist/runner/src/composition/dry-run.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +1 -1
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/prompt-sections.d.ts +47 -20
- package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
- package/dist/runner/src/context-usage/compose.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +3 -8
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/work-practices.d.ts +9 -0
- package/dist/runner/src/work-practices.d.ts.map +1 -0
- package/dist/sdk/asset-manager.js +17 -15
- package/dist/sdk/bridge.js +18 -18
- package/dist/sdk/core.js +7 -6
- package/dist/sdk/flow.js +8 -7
- package/dist/sdk/index.js +40 -39
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +8 -7
- package/dist/sdk/runner.js +40 -39
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/transport/ws/server.js +8 -7
- package/dist/sdk/transport/ws.js +8 -7
- package/dist/sdk/transport.js +8 -7
- package/dist/sdk/types.js +1 -1
- package/dist/serve-preflight-XJS5OZML.js +138 -0
- package/dist/serve-preflight-XJS5OZML.js.map +1 -0
- package/dist/session/index.js +2 -2
- package/dist/{setup-RXTNGML5.js → setup-BFEBJLYF.js} +33 -31
- package/dist/setup-BFEBJLYF.js.map +1 -0
- package/dist/{skills-5D4KDVPJ.js → skills-OCG7B5CL.js} +13 -12
- package/dist/{skills-5D4KDVPJ.js.map → skills-OCG7B5CL.js.map} +1 -1
- package/dist/source-P6JPZYWP.js +93 -0
- package/dist/{source-2LP5W3ST.js.map → source-P6JPZYWP.js.map} +1 -1
- package/dist/{source-manifest-publish-EZNCTSQF.js → source-manifest-publish-XBFHEURV.js} +54 -52
- package/dist/source-manifest-publish-XBFHEURV.js.map +1 -0
- package/dist/transport/index.js +8 -7
- package/dist/transport/ws/server.js +8 -7
- package/dist/transport/ws.js +8 -7
- package/dist/tui/index.js +40 -39
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/src/context-usage.d.ts +1 -1
- package/dist/types/src/events.d.ts +3 -2
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/runtime.d.ts +6 -0
- package/dist/types/src/runtime.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +29 -29
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +7 -1
- package/dist/asset-feeds-DOG5FK7T.js.map +0 -1
- package/dist/chunk-3BRBTQ6M.js.map +0 -1
- package/dist/chunk-5FO4U3OL.js.map +0 -1
- package/dist/chunk-7FXOOUOC.js.map +0 -1
- package/dist/chunk-7HRZACI4.js.map +0 -1
- package/dist/chunk-7LJUK5JK.js.map +0 -1
- package/dist/chunk-7UBCUKJO.js.map +0 -1
- package/dist/chunk-7VBD5XUM.js.map +0 -1
- package/dist/chunk-A7TM4PZZ.js +0 -110
- package/dist/chunk-A7TM4PZZ.js.map +0 -1
- package/dist/chunk-B6W5DCH5.js.map +0 -1
- package/dist/chunk-BNLXZXZN.js.map +0 -1
- package/dist/chunk-CFRHYD4C.js.map +0 -1
- package/dist/chunk-DRUAQ7IY.js.map +0 -1
- package/dist/chunk-DYH3VSPU.js.map +0 -1
- package/dist/chunk-F7WMHDTV.js.map +0 -1
- package/dist/chunk-LMUNQYJQ.js.map +0 -1
- package/dist/chunk-LZCX2TCZ.js.map +0 -1
- package/dist/chunk-MEU2HHGV.js.map +0 -1
- package/dist/chunk-MS2IXLTC.js.map +0 -1
- package/dist/chunk-OC3AIMZH.js.map +0 -1
- package/dist/chunk-RRAXV5LE.js.map +0 -1
- package/dist/chunk-YNQRVTXH.js.map +0 -1
- package/dist/cli/src/commands/harness-preflight.d.ts +0 -40
- package/dist/cli/src/commands/harness-preflight.d.ts.map +0 -1
- package/dist/ensure-sources-FOMEGCQ5.js.map +0 -1
- package/dist/library-publish-RGVXGTY4.js.map +0 -1
- package/dist/serve-preflight-L6VVCDM5.js +0 -61
- package/dist/serve-preflight-L6VVCDM5.js.map +0 -1
- package/dist/setup-RXTNGML5.js.map +0 -1
- package/dist/source-2LP5W3ST.js +0 -91
- package/dist/source-manifest-publish-EZNCTSQF.js.map +0 -1
package/dist/sdk/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../sdk/src/agent-session.ts","../../sdk/src/transport.ts","../../sdk/src/local-runtime.ts","../../sdk/src/workspace.ts","../../sdk/src/factory.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * AgentSession — stateful wrapper over any IAgentRuntime-compatible object.\n *\n * Provides:\n * - AgentEvent → OutputLine conversion with streaming text accumulation\n * - State machine: starting → idle ↔ active ↔ waiting → stopped\n * - Circular output buffer (500 lines, see {@link MAX_OUTPUT_LINES})\n * - send() routes to prompt() or reply() based on current state\n * - stop() disposes the runtime and fires optional cleanup\n * - onChange callback for reactive UIs (React forceUpdate, EventEmitter, etc.)\n *\n * Works with LocalRuntime (in-process) and AgentClient (remote/WebSocket).\n * Extend to add identity fields (id, name, profileName…):\n *\n * class MySession extends AgentSession {\n * constructor(readonly id: string, runtime: LocalRuntime | AgentClient) {\n * super(runtime);\n * }\n * }\n *\n * @docLink packages/sdk/concepts#agent-session\n */\n\nimport { AskSlots } from \"../../types/src/ask-slots.js\";\nimport type { AgentEvent } from \"@skaile/workspaces/types\";\nimport type { OutputLine, SessionState } from \"./types.js\";\n\n/**\n * Maximum number of {@link OutputLine} entries retained in {@link AgentSession.output}.\n *\n * When the buffer exceeds this limit the oldest lines are dropped from the front,\n * keeping memory use bounded for long-running sessions.\n *\n * @docLink packages/sdk/concepts#agent-session\n */\nexport const MAX_OUTPUT_LINES = 500;\n\ninterface MinimalRuntime {\n prompt(message: string): Promise<void>;\n reply(answer: string): Promise<void>;\n abort(): Promise<void>;\n dispose(): Promise<void>;\n onEvent(handler: (e: AgentEvent) => void): void;\n offEvent(handler: (e: AgentEvent) => void): void;\n}\n\nexport class AgentSession {\n state: SessionState = \"starting\";\n readonly output: OutputLine[] = [];\n onChange?: () => void;\n\n /** The parked multi-question ask; null when no question waits for an answer. */\n private ask: AskSlots | null = null;\n\n /** Pointer to the streaming text line being accumulated in-place. */\n private currentTextLine: (OutputLine & { type: \"text\" }) | null = null;\n /** Registered in constructor so we can offEvent on stop. */\n private readonly eventHandler: (e: AgentEvent) => void;\n /** Optional cleanup hook registered by the factory (temp dir removal, etc.). */\n private cleanupFn?: () => void;\n\n constructor(protected readonly runtime: MinimalRuntime) {\n this.eventHandler = (e) => this.handleEvent(e);\n runtime.onEvent(this.eventHandler);\n }\n\n // ── Commands ──────────────────────────────────────────────────────────────\n\n /** Send a user message. Routes to reply() or prompt() based on state. */\n send(text: string): void {\n if (this.state === \"stopped\" || this.state === \"starting\") return;\n this.appendLine({ type: \"user\", content: text });\n if (this.state === \"waiting\") {\n // A multi-question ask stays parked until every sub-question has an answer.\n // `reply()` carries no question name, so each answer fills the oldest open one.\n const complete = this.ask === null || this.ask.answer().complete;\n if (complete) {\n this.ask = null;\n this.state = \"active\";\n }\n void this.runtime.reply(text);\n } else {\n // A prompt abandons any unanswered question.\n this.ask = null;\n this.state = \"active\";\n void this.runtime.prompt(text);\n }\n }\n\n /** Stop the session and dispose the runtime. */\n stop(): void {\n if (this.state === \"stopped\") return;\n this.ask = null;\n this.state = \"stopped\";\n this.runtime.offEvent(this.eventHandler);\n void this.runtime.dispose();\n this.appendLine({ type: \"system\", message: \"Session stopped.\" });\n this.notify();\n this.cleanupFn?.();\n }\n\n /** Register a cleanup function called when the session stops. Used by the factory. */\n _registerCleanup(fn: () => void): void {\n this.cleanupFn = fn;\n }\n\n // ── Event → OutputLine ────────────────────────────────────────────────────\n\n protected handleEvent(event: AgentEvent): void {\n switch (event.type) {\n case \"text\":\n this.handleTextEvent(event);\n break;\n case \"text_retract\":\n this.handleTextRetractEvent(event.content);\n break;\n case \"tool_call\":\n this.handleToolCallEvent(event);\n break;\n case \"question\":\n this.handleQuestionEvent(event);\n break;\n case \"error\":\n this.handleErrorEvent(event);\n break;\n case \"status\":\n this.handleStatusEvent(event);\n break;\n case \"subagent\":\n this.handleSubagentEvent(event);\n break;\n case \"finished\":\n this.handleFinishedEvent();\n break;\n case \"state_changed\":\n this.handleStateChangedEvent(event);\n break;\n }\n\n this.notify();\n }\n\n private handleTextEvent(event: AgentEvent): void {\n const content = \"content\" in event ? String(event.content) : \"\";\n if (this.currentTextLine) {\n this.currentTextLine.content += content;\n } else {\n const line: OutputLine & { type: \"text\" } = { type: \"text\", content };\n this.output.push(line);\n this.currentTextLine = line;\n this.trimOutput();\n }\n this.markActive();\n }\n\n /**\n * Cut an abandoned attempt's fragment off the open text line, dropping the\n * line when nothing is left. A sealed line or a mismatched tail stays as is.\n */\n private handleTextRetractEvent(content: string): void {\n const line = this.currentTextLine;\n if (!line || !content || !line.content.endsWith(content)) return;\n line.content = line.content.slice(0, line.content.length - content.length);\n if (line.content.length === 0) {\n const index = this.output.indexOf(line);\n if (index !== -1) this.output.splice(index, 1);\n this.currentTextLine = null;\n }\n }\n\n private handleToolCallEvent(event: AgentEvent): void {\n this.sealText();\n const name =\n \"name\" in event ? String(event.name) : \"tool\" in event ? String(event.tool) : \"tool\";\n this.appendLine({ type: \"tool\", name });\n this.markActive();\n }\n\n private handleQuestionEvent(event: AgentEvent): void {\n this.sealText();\n const e = event as Record<string, unknown>;\n const text =\n \"question\" in e\n ? String(e.question)\n : \"text\" in e\n ? String(e.text)\n : \"The agent has a question.\";\n this.appendLine({ type: \"question\", text });\n // One event arrives per sub-question; they share an ask until it is answered.\n const requestId = typeof e.requestId === \"string\" ? e.requestId : undefined;\n this.ask ??= new AskSlots();\n this.ask.add(text, requestId);\n this.state = \"waiting\";\n }\n\n private handleErrorEvent(event: AgentEvent): void {\n this.sealText();\n const message = \"message\" in event ? String(event.message) : \"An error occurred.\";\n this.appendLine({ type: \"error\", message });\n if (\"fatal\" in event && event.fatal) this.ask = null;\n this.state = \"idle\";\n }\n\n private handleStatusEvent(event: AgentEvent): void {\n const phase = \"phase\" in event ? String(event.phase) : \"\";\n if (phase === \"thinking\" && this.currentTextLine !== null) return;\n if (phase) this.appendLine({ type: \"status\", phase });\n }\n\n private handleSubagentEvent(event: AgentEvent): void {\n this.sealText();\n const e = event as Record<string, unknown>;\n const name = \"name\" in e ? String(e.name) : \"unknown\";\n const status = \"status\" in e ? (String(e.status) as \"started\" | \"finished\") : \"started\";\n const description = \"description\" in e ? String(e.description) : \"\";\n this.appendLine({ type: \"subagent\", name, status, description });\n if (status === \"started\") {\n this.markActive();\n }\n }\n\n private handleFinishedEvent(): void {\n this.sealText();\n this.appendLine({ type: \"separator\" });\n this.ask = null;\n this.state = \"idle\";\n }\n\n private handleStateChangedEvent(event: AgentEvent): void {\n if (\"state\" in event && (event as Record<string, unknown>).state === \"stopped\") {\n this.sealText();\n this.appendLine({ type: \"system\", message: \"Agent stopped.\" });\n this.ask = null;\n this.state = \"stopped\";\n }\n }\n\n /**\n * The agent is working. Not while an ask is parked: the harness keeps the turn\n * paused until every sub-question has an answer, and follows the question\n * events with tool activity for the same block.\n */\n private markActive(): void {\n if (this.ask !== null && this.state === \"waiting\") return;\n this.state = \"active\";\n }\n\n // ── Internals ─────────────────────────────────────────────────────────────\n\n protected appendLine(line: OutputLine): void {\n this.output.push(line);\n this.trimOutput();\n }\n\n protected notify(): void {\n this.onChange?.();\n }\n\n private sealText(): void {\n this.currentTextLine = null;\n }\n\n private trimOutput(): void {\n while (this.output.length > MAX_OUTPUT_LINES) {\n this.output.shift();\n }\n }\n}\n","/**\n * InProcessTransport — ServerTransport that runs entirely in-process.\n *\n * Used internally by {@link LocalRuntime}. Also exported for consumers building\n * custom integrations that need direct transport access without WebSocket overhead.\n *\n * Runner side (startAgentServer):\n * onCommand(handler) — registers the runner's command handler\n * send(event) — delivers AgentEvents to onEvent subscribers\n *\n * Application side:\n * inject(command) — sends a command to the agent (deferred to avoid re-entrancy)\n * onEvent(handler) — subscribes to AgentEvents; returns unsubscribe fn\n *\n * @docLink packages/sdk/concepts#in-process-transport\n */\n\nimport type { AgentCommand, AgentEvent, ServerTransport } from \"@skaile/workspaces/types\";\n\nexport class InProcessTransport implements ServerTransport {\n private readonly commandHandlers = new Set<(cmd: AgentCommand) => void>();\n private readonly eventHandlers = new Set<(event: AgentEvent) => void>();\n // Commands injected before any handler is registered are buffered here and\n // flushed on the first onCommand() — without this they iterate an empty set\n // and are silently lost (e.g. a prompt sent during start()'s wiring window).\n private readonly pendingCommands: AgentCommand[] = [];\n\n // ── ServerTransport ───────────────────────────────────────────────────────\n\n // In-process: no socket to open or tear down — both are no-ops so serve()\n // can drive any transport's lifecycle without an instanceof check.\n async listen(): Promise<void> {}\n\n async close(): Promise<void> {}\n\n send(event: AgentEvent): void {\n for (const h of this.eventHandlers) h(event);\n }\n\n onCommand(handler: (cmd: AgentCommand) => void): () => void {\n const wasEmpty = this.commandHandlers.size === 0;\n this.commandHandlers.add(handler);\n if (wasEmpty && this.pendingCommands.length > 0) {\n const buffered = this.pendingCommands.splice(0);\n for (const cmd of buffered) {\n void Promise.resolve().then(() => handler(cmd));\n }\n }\n return () => this.commandHandlers.delete(handler);\n }\n\n onConnect(_handler: () => void): () => void {\n return () => {};\n }\n\n onDisconnect(_handler: () => void): () => void {\n return () => {};\n }\n\n /** True once a command handler is wired (i.e. the runner has started). */\n get connected(): boolean {\n return this.commandHandlers.size > 0;\n }\n\n // ── Application API ───────────────────────────────────────────────────────\n\n /**\n * Send a command into the agent runner. Deferred to avoid re-entrancy.\n * Commands injected before a handler is registered are buffered and\n * flushed when the runner wires its handler, so none are dropped.\n */\n inject(command: AgentCommand): void {\n if (this.commandHandlers.size === 0) {\n this.pendingCommands.push(command);\n return;\n }\n for (const h of this.commandHandlers) {\n void Promise.resolve().then(() => h(command));\n }\n }\n\n /** Subscribe to AgentEvents. Returns an unsubscribe function. */\n onEvent(handler: (event: AgentEvent) => void): () => void {\n this.eventHandlers.add(handler);\n return () => this.eventHandlers.delete(handler);\n }\n}\n","/**\n * LocalRuntime — IAgentRuntime implementation that runs the agent in the same process.\n *\n * Mirror image of AgentClient: same interface, no WebSocket.\n * Uses InProcessTransport + startAgentServer() internally.\n *\n * Usage:\n * const runtime = new LocalRuntime();\n * runtime.onEvent(e => console.log(e));\n * await runtime.start({ projectDir: \"/path/to/workspace\" });\n * await runtime.prompt(\"Hello\");\n * await runtime.dispose();\n *\n * @docLink packages/sdk/concepts#local-runtime\n */\n\nimport { startAgentServer } from \"@skaile/workspaces/runner\";\nimport type { AgentEvent, IAgentRuntime } from \"@skaile/workspaces/types\";\nimport { InProcessTransport } from \"./transport.js\";\n\n/**\n * Options passed to {@link LocalRuntime.start}.\n *\n * `projectDir` is the only required field — it points to the workspace directory\n * containing `skaile.yaml`. All other fields override the manifest's agent configuration.\n *\n * @docLink packages/sdk/concepts#local-runtime\n */\nexport interface LocalRuntimeStartOptions {\n projectDir: string;\n agentDir?: string;\n harness?: string;\n model?: string;\n provider?: string;\n onLog?: (line: string) => void;\n}\n\nexport class LocalRuntime implements Omit<IAgentRuntime, \"start\" | \"configure\"> {\n private readonly transport = new InProcessTransport();\n private readonly handlers = new Set<(e: AgentEvent) => void>();\n private started = false;\n private resolveReady!: () => void;\n private readonly readyPromise = new Promise<void>((resolve) => {\n this.resolveReady = resolve;\n });\n\n constructor() {\n this.transport.onEvent((e) => {\n for (const h of this.handlers) h(e);\n });\n }\n\n /**\n * Start the agent server. Resolves when the runner is wired and ready\n * to accept commands. Must be called before prompt() / reply().\n */\n async start(opts: LocalRuntimeStartOptions): Promise<void> {\n if (this.started) return;\n this.started = true;\n await startAgentServer({\n projectDir: opts.projectDir,\n agentDir: opts.agentDir,\n harness: opts.harness,\n model: opts.model,\n provider: opts.provider,\n transport: this.transport,\n onLog: opts.onLog,\n // The embedder owns stdout; log records go to the project's log db and to `onLog`.\n stdout: false,\n });\n this.resolveReady();\n }\n\n /**\n * Resolves once the runner is wired and accepting commands. Await this\n * before issuing commands that expect a reply (e.g. debug queries) so a\n * pre-start command isn't buffered indefinitely. Never rejects.\n */\n whenReady(): Promise<void> {\n return this.readyPromise;\n }\n\n async prompt(message: string): Promise<void> {\n this.transport.inject({ type: \"prompt\", prompt: message });\n }\n\n async reply(answer: string): Promise<void> {\n this.transport.inject({ type: \"reply\", answer });\n }\n\n async abort(): Promise<void> {\n this.transport.inject({ type: \"cancel\" });\n }\n\n async dispose(): Promise<void> {\n this.transport.inject({ type: \"shutdown\" });\n }\n\n onEvent(handler: (e: AgentEvent) => void): void {\n this.handlers.add(handler);\n }\n\n offEvent(handler: (e: AgentEvent) => void): void {\n this.handlers.delete(handler);\n }\n\n get isRunning(): boolean {\n return this.transport.connected;\n }\n}\n","/**\n * Workspace utilities — prepare session directories and write skaile.yaml.\n */\n\nimport { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { stringify } from \"yaml\";\nimport type { CreateAgentSessionOptions } from \"./types.js\";\n\n/**\n * Prepare a workspace directory for a session. Returns the path and cleanup fn.\n *\n * If `opts.workspaceDir` is set, that directory is created (if needed) and returned\n * with no cleanup. Otherwise a unique temporary directory (`skaile-sdk-*` under the\n * OS temp dir) is created via `mkdtempSync`; the cleanup function removes it on\n * session stop unless `keepWorkspace` is true.\n *\n * @param opts - Session creation options providing `workspaceDir` and `keepWorkspace`.\n * @returns An object with the resolved `dir` path and an optional `cleanup` function.\n * @docLink packages/sdk/concepts#workspace-helpers\n */\nexport function prepareWorkspace(opts: CreateAgentSessionOptions): {\n dir: string;\n cleanup: (() => void) | undefined;\n} {\n if (opts.workspaceDir) {\n mkdirSync(opts.workspaceDir, { recursive: true });\n return { dir: opts.workspaceDir, cleanup: undefined };\n }\n\n // mkdtemp yields an unpredictable, collision-free name (vs. a guessable\n // timestamp path) — avoids cross-session clobbering and symlink races in /tmp.\n const dir = mkdtempSync(join(tmpdir(), \"skaile-sdk-\"));\n\n const cleanup = opts.keepWorkspace\n ? undefined\n : () => rmSync(dir, { recursive: true, force: true });\n\n return { dir, cleanup };\n}\n\n/**\n * Write skaile.yaml from inline {@link CreateAgentSessionOptions}.\n *\n * Only writes if `agent`, `mounts`, or `connectors` are provided and no `skaile.yaml`\n * already exists in `dir` (existing config takes precedence). Connector `adapter` fields\n * are mapped to the `driver` field expected by the core runtime.\n *\n * @param dir - Absolute path to the workspace directory.\n * @param opts - Session options containing agent config, mounts, and connectors to serialize.\n * @docLink packages/sdk/concepts#workspace-helpers\n */\nexport function writeSkaileYaml(dir: string, opts: CreateAgentSessionOptions): void {\n if (!opts.agent && !opts.mounts?.length && !opts.connectors?.length) return;\n const dest = join(dir, \"skaile.yaml\");\n if (existsSync(dest)) return; // existing config wins\n\n const cfg: Record<string, unknown> = {\n name: \"sdk-session\",\n };\n\n if (opts.agent) {\n cfg[\"agent-config\"] = {\n default: {\n ...(opts.agent.harness && { harness: opts.agent.harness }),\n ...(opts.agent.provider && { provider: opts.agent.provider }),\n ...(opts.agent.model && { model: opts.agent.model }),\n },\n };\n\n if (opts.agent.maxTurns !== undefined || opts.agent.permissionMode !== undefined) {\n cfg.agent = {\n permissions: {\n ...(opts.agent.maxTurns !== undefined && { max_turns: opts.agent.maxTurns }),\n ...(opts.agent.permissionMode !== undefined && {\n permission_mode: opts.agent.permissionMode,\n }),\n },\n };\n }\n }\n\n if (opts.mounts?.length) {\n cfg.mounts = opts.mounts;\n }\n\n if (opts.connectors?.length) {\n // Map SDK field names to core's ConnectorDeclaration field names:\n // SDK uses `adapter` → core expects `driver`\n cfg.connectors = opts.connectors.map((c) => ({\n id: c.id,\n driver: c.adapter,\n ...(c.access && { access: c.access }),\n ...(c.auth && { auth: c.auth }),\n ...(c.options && { options: c.options }),\n }));\n }\n\n writeFileSync(dest, stringify(cfg));\n}\n","/**\n * createAgentSession() — universal factory for agent sessions.\n *\n * Handles workspace preparation, skaile.yaml writing, runtime selection,\n * startup, and cleanup registration. Returns a ready-to-use {@link AgentSession}.\n *\n * For multi-session managers (forge-tui) or bots (forge-mattermost) that need\n * custom session subclasses, use LocalRuntime directly:\n *\n * const runtime = new LocalRuntime();\n * await runtime.start({ projectDir: dir, agentDir });\n * const session = new MySession(id, name, runtime);\n *\n * @docLink packages/sdk/concepts#create-agent-session\n */\n\nimport { AgentClient } from \"@skaile/workspaces/client\";\nimport { WebSocketClientTransport } from \"@skaile/workspaces/transport/ws/client\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { LocalRuntime } from \"./local-runtime.js\";\nimport type { CreateAgentSessionOptions } from \"./types.js\";\nimport { prepareWorkspace, writeSkaileYaml } from \"./workspace.js\";\n\nexport async function createAgentSession(\n opts: CreateAgentSessionOptions = {},\n): Promise<AgentSession> {\n const { dir, cleanup } = prepareWorkspace(opts);\n writeSkaileYaml(dir, opts);\n\n const mode = opts.mode ?? { type: \"local\" };\n let runtime: LocalRuntime | AgentClient;\n\n if (mode.type === \"local\") {\n const r = new LocalRuntime();\n await r.start({ projectDir: dir, agentDir: opts.agentDir });\n runtime = r;\n } else {\n const transport = new WebSocketClientTransport({ url: mode.url });\n await transport.connect();\n runtime = new AgentClient(transport);\n }\n\n const session = new AgentSession(runtime);\n session.state = \"idle\";\n\n if (cleanup) {\n session._registerCleanup(cleanup);\n }\n\n if (opts.initialPrompt?.trim()) {\n session.send(opts.initialPrompt.trim());\n }\n\n return session;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../sdk/src/agent-session.ts","../../sdk/src/transport.ts","../../sdk/src/local-runtime.ts","../../sdk/src/workspace.ts","../../sdk/src/factory.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * AgentSession — stateful wrapper over any IAgentRuntime-compatible object.\n *\n * Provides:\n * - AgentEvent → OutputLine conversion with streaming text accumulation\n * - State machine: starting → idle ↔ active ↔ waiting → stopped\n * - Circular output buffer (500 lines, see {@link MAX_OUTPUT_LINES})\n * - send() routes to prompt() or reply() based on current state\n * - stop() disposes the runtime and fires optional cleanup\n * - onChange callback for reactive UIs (React forceUpdate, EventEmitter, etc.)\n *\n * Works with LocalRuntime (in-process) and AgentClient (remote/WebSocket).\n * Extend to add identity fields (id, name, profileName…):\n *\n * class MySession extends AgentSession {\n * constructor(readonly id: string, runtime: LocalRuntime | AgentClient) {\n * super(runtime);\n * }\n * }\n *\n * @docLink packages/sdk/concepts#agent-session\n */\n\nimport { AskSlots } from \"../../types/src/ask-slots.js\";\nimport type { AgentEvent } from \"@skaile/workspaces/types\";\nimport type { OutputLine, SessionState } from \"./types.js\";\n\n/**\n * Maximum number of {@link OutputLine} entries retained in {@link AgentSession.output}.\n *\n * When the buffer exceeds this limit the oldest lines are dropped from the front,\n * keeping memory use bounded for long-running sessions.\n *\n * @docLink packages/sdk/concepts#agent-session\n */\nexport const MAX_OUTPUT_LINES = 500;\n\ninterface MinimalRuntime {\n prompt(message: string): Promise<void>;\n reply(answer: string): Promise<void>;\n abort(): Promise<void>;\n dispose(): Promise<void>;\n onEvent(handler: (e: AgentEvent) => void): void;\n offEvent(handler: (e: AgentEvent) => void): void;\n}\n\nexport class AgentSession {\n state: SessionState = \"starting\";\n readonly output: OutputLine[] = [];\n onChange?: () => void;\n\n /** The parked multi-question ask; null when no question waits for an answer. */\n private ask: AskSlots | null = null;\n\n /** Pointer to the streaming text line being accumulated in-place. */\n private currentTextLine: (OutputLine & { type: \"text\" }) | null = null;\n /** Registered in constructor so we can offEvent on stop. */\n private readonly eventHandler: (e: AgentEvent) => void;\n /** Optional cleanup hook registered by the factory (temp dir removal, etc.). */\n private cleanupFn?: () => void;\n\n constructor(protected readonly runtime: MinimalRuntime) {\n this.eventHandler = (e) => this.handleEvent(e);\n runtime.onEvent(this.eventHandler);\n }\n\n // ── Commands ──────────────────────────────────────────────────────────────\n\n /** Send a user message. Routes to reply() or prompt() based on state. */\n send(text: string): void {\n if (this.state === \"stopped\" || this.state === \"starting\") return;\n this.appendLine({ type: \"user\", content: text });\n if (this.state === \"waiting\") {\n // A multi-question ask stays parked until every sub-question has an answer.\n // `reply()` carries no question name, so each answer fills the oldest open one.\n const complete = this.ask === null || this.ask.answer().complete;\n if (complete) {\n this.ask = null;\n this.state = \"active\";\n }\n void this.runtime.reply(text);\n } else {\n // A prompt abandons any unanswered question.\n this.ask = null;\n this.state = \"active\";\n void this.runtime.prompt(text);\n }\n }\n\n /** Stop the session and dispose the runtime. */\n stop(): void {\n if (this.state === \"stopped\") return;\n this.ask = null;\n this.state = \"stopped\";\n this.runtime.offEvent(this.eventHandler);\n void this.runtime.dispose();\n this.appendLine({ type: \"system\", message: \"Session stopped.\" });\n this.notify();\n this.cleanupFn?.();\n }\n\n /** Register a cleanup function called when the session stops. Used by the factory. */\n _registerCleanup(fn: () => void): void {\n this.cleanupFn = fn;\n }\n\n // ── Event → OutputLine ────────────────────────────────────────────────────\n\n protected handleEvent(event: AgentEvent): void {\n switch (event.type) {\n case \"text\":\n this.handleTextEvent(event);\n break;\n case \"text_retract\":\n this.handleTextRetractEvent(event.content);\n break;\n case \"tool_call\":\n this.handleToolCallEvent(event);\n break;\n case \"question\":\n this.handleQuestionEvent(event);\n break;\n case \"error\":\n this.handleErrorEvent(event);\n break;\n case \"status\":\n this.handleStatusEvent(event);\n break;\n case \"subagent\":\n this.handleSubagentEvent(event);\n break;\n case \"finished\":\n this.handleFinishedEvent();\n break;\n case \"state_changed\":\n this.handleStateChangedEvent(event);\n break;\n }\n\n this.notify();\n }\n\n private handleTextEvent(event: AgentEvent): void {\n const content = \"content\" in event ? String(event.content) : \"\";\n if (this.currentTextLine) {\n this.currentTextLine.content += content;\n } else {\n const line: OutputLine & { type: \"text\" } = { type: \"text\", content };\n this.output.push(line);\n this.currentTextLine = line;\n this.trimOutput();\n }\n this.markActive();\n }\n\n /**\n * Cut an abandoned attempt's fragment off the open text line, dropping the\n * line when nothing is left. A sealed line or a mismatched tail stays as is.\n */\n private handleTextRetractEvent(content: string): void {\n const line = this.currentTextLine;\n if (!line || !content || !line.content.endsWith(content)) return;\n line.content = line.content.slice(0, line.content.length - content.length);\n if (line.content.length === 0) {\n const index = this.output.indexOf(line);\n if (index !== -1) this.output.splice(index, 1);\n this.currentTextLine = null;\n }\n }\n\n private handleToolCallEvent(event: AgentEvent): void {\n this.sealText();\n const name =\n \"name\" in event ? String(event.name) : \"tool\" in event ? String(event.tool) : \"tool\";\n this.appendLine({ type: \"tool\", name });\n this.markActive();\n }\n\n private handleQuestionEvent(event: AgentEvent): void {\n this.sealText();\n const e = event as Record<string, unknown>;\n const text =\n \"question\" in e\n ? String(e.question)\n : \"text\" in e\n ? String(e.text)\n : \"The agent has a question.\";\n this.appendLine({ type: \"question\", text });\n // One event arrives per sub-question; they share an ask until it is answered.\n const requestId = typeof e.requestId === \"string\" ? e.requestId : undefined;\n this.ask ??= new AskSlots();\n this.ask.add(text, requestId);\n this.state = \"waiting\";\n }\n\n private handleErrorEvent(event: AgentEvent): void {\n this.sealText();\n const message = \"message\" in event ? String(event.message) : \"An error occurred.\";\n this.appendLine({ type: \"error\", message });\n if (\"fatal\" in event && event.fatal) this.ask = null;\n this.state = \"idle\";\n }\n\n private handleStatusEvent(event: AgentEvent): void {\n const phase = \"phase\" in event ? String(event.phase) : \"\";\n if (phase === \"thinking\" && this.currentTextLine !== null) return;\n if (phase) this.appendLine({ type: \"status\", phase });\n }\n\n private handleSubagentEvent(event: AgentEvent): void {\n this.sealText();\n const e = event as Record<string, unknown>;\n const name = \"name\" in e ? String(e.name) : \"unknown\";\n const status = \"status\" in e ? (String(e.status) as \"started\" | \"finished\") : \"started\";\n const description = \"description\" in e ? String(e.description) : \"\";\n this.appendLine({ type: \"subagent\", name, status, description });\n if (status === \"started\") {\n this.markActive();\n }\n }\n\n private handleFinishedEvent(): void {\n this.sealText();\n this.appendLine({ type: \"separator\" });\n this.ask = null;\n this.state = \"idle\";\n }\n\n private handleStateChangedEvent(event: AgentEvent): void {\n if (\"state\" in event && (event as Record<string, unknown>).state === \"stopped\") {\n this.sealText();\n this.appendLine({ type: \"system\", message: \"Agent stopped.\" });\n this.ask = null;\n this.state = \"stopped\";\n }\n }\n\n /**\n * The agent is working. Not while an ask is parked: the harness keeps the turn\n * paused until every sub-question has an answer, and follows the question\n * events with tool activity for the same block.\n */\n private markActive(): void {\n if (this.ask !== null && this.state === \"waiting\") return;\n this.state = \"active\";\n }\n\n // ── Internals ─────────────────────────────────────────────────────────────\n\n protected appendLine(line: OutputLine): void {\n this.output.push(line);\n this.trimOutput();\n }\n\n protected notify(): void {\n this.onChange?.();\n }\n\n private sealText(): void {\n this.currentTextLine = null;\n }\n\n private trimOutput(): void {\n while (this.output.length > MAX_OUTPUT_LINES) {\n this.output.shift();\n }\n }\n}\n","/**\n * InProcessTransport — ServerTransport that runs entirely in-process.\n *\n * Used internally by {@link LocalRuntime}. Also exported for consumers building\n * custom integrations that need direct transport access without WebSocket overhead.\n *\n * Runner side (startAgentServer):\n * onCommand(handler) — registers the runner's command handler\n * send(event) — delivers AgentEvents to onEvent subscribers\n *\n * Application side:\n * inject(command) — sends a command to the agent (deferred to avoid re-entrancy)\n * onEvent(handler) — subscribes to AgentEvents; returns unsubscribe fn\n *\n * @docLink packages/sdk/concepts#in-process-transport\n */\n\nimport type { AgentCommand, AgentEvent, ServerTransport } from \"@skaile/workspaces/types\";\n\nexport class InProcessTransport implements ServerTransport {\n private readonly commandHandlers = new Set<(cmd: AgentCommand) => void>();\n private readonly eventHandlers = new Set<(event: AgentEvent) => void>();\n // Commands injected before any handler is registered are buffered here and\n // flushed on the first onCommand() — without this they iterate an empty set\n // and are silently lost (e.g. a prompt sent during start()'s wiring window).\n private readonly pendingCommands: AgentCommand[] = [];\n\n // ── ServerTransport ───────────────────────────────────────────────────────\n\n // In-process: no socket to open or tear down — both are no-ops so serve()\n // can drive any transport's lifecycle without an instanceof check.\n async listen(): Promise<void> {}\n\n async close(): Promise<void> {}\n\n send(event: AgentEvent): void {\n for (const h of this.eventHandlers) h(event);\n }\n\n onCommand(handler: (cmd: AgentCommand) => void): () => void {\n const wasEmpty = this.commandHandlers.size === 0;\n this.commandHandlers.add(handler);\n if (wasEmpty && this.pendingCommands.length > 0) {\n const buffered = this.pendingCommands.splice(0);\n for (const cmd of buffered) {\n void Promise.resolve().then(() => handler(cmd));\n }\n }\n return () => this.commandHandlers.delete(handler);\n }\n\n onConnect(_handler: () => void): () => void {\n return () => {};\n }\n\n onDisconnect(_handler: () => void): () => void {\n return () => {};\n }\n\n /** True once a command handler is wired (i.e. the runner has started). */\n get connected(): boolean {\n return this.commandHandlers.size > 0;\n }\n\n // ── Application API ───────────────────────────────────────────────────────\n\n /**\n * Send a command into the agent runner. Deferred to avoid re-entrancy.\n * Commands injected before a handler is registered are buffered and\n * flushed when the runner wires its handler, so none are dropped.\n */\n inject(command: AgentCommand): void {\n if (this.commandHandlers.size === 0) {\n this.pendingCommands.push(command);\n return;\n }\n for (const h of this.commandHandlers) {\n void Promise.resolve().then(() => h(command));\n }\n }\n\n /** Subscribe to AgentEvents. Returns an unsubscribe function. */\n onEvent(handler: (event: AgentEvent) => void): () => void {\n this.eventHandlers.add(handler);\n return () => this.eventHandlers.delete(handler);\n }\n}\n","/**\n * LocalRuntime — IAgentRuntime implementation that runs the agent in the same process.\n *\n * Mirror image of AgentClient: same interface, no WebSocket.\n * Uses InProcessTransport + startAgentServer() internally.\n *\n * Usage:\n * const runtime = new LocalRuntime();\n * runtime.onEvent(e => console.log(e));\n * await runtime.start({ projectDir: \"/path/to/workspace\" });\n * await runtime.prompt(\"Hello\");\n * await runtime.dispose();\n *\n * @docLink packages/sdk/concepts#local-runtime\n */\n\nimport { startAgentServer } from \"@skaile/workspaces/runner\";\nimport type { AgentEvent, IAgentRuntime } from \"@skaile/workspaces/types\";\nimport { InProcessTransport } from \"./transport.js\";\n\n/**\n * Options passed to {@link LocalRuntime.start}.\n *\n * `projectDir` is the only required field — it points to the workspace directory\n * containing `skaile.yaml`. All other fields override the manifest's agent configuration.\n *\n * @docLink packages/sdk/concepts#local-runtime\n */\nexport interface LocalRuntimeStartOptions {\n projectDir: string;\n agentDir?: string;\n harness?: string;\n model?: string;\n provider?: string;\n onLog?: (line: string) => void;\n}\n\nexport class LocalRuntime implements Omit<IAgentRuntime, \"start\" | \"configure\"> {\n private readonly transport = new InProcessTransport();\n private readonly handlers = new Set<(e: AgentEvent) => void>();\n private started = false;\n private resolveReady!: () => void;\n private readonly readyPromise = new Promise<void>((resolve) => {\n this.resolveReady = resolve;\n });\n\n constructor() {\n this.transport.onEvent((e) => {\n for (const h of this.handlers) h(e);\n });\n }\n\n /**\n * Start the agent server. Resolves when the runner is wired and ready\n * to accept commands. Must be called before prompt() / reply().\n */\n async start(opts: LocalRuntimeStartOptions): Promise<void> {\n if (this.started) return;\n this.started = true;\n await startAgentServer({\n projectDir: opts.projectDir,\n agentDir: opts.agentDir,\n harness: opts.harness,\n model: opts.model,\n provider: opts.provider,\n transport: this.transport,\n onLog: opts.onLog,\n // The embedder owns stdout; log records go to the project's log db and to `onLog`.\n stdout: false,\n });\n this.resolveReady();\n }\n\n /**\n * Resolves once the runner is wired and accepting commands. Await this\n * before issuing commands that expect a reply (e.g. debug queries) so a\n * pre-start command isn't buffered indefinitely. Never rejects.\n */\n whenReady(): Promise<void> {\n return this.readyPromise;\n }\n\n async prompt(message: string): Promise<void> {\n this.transport.inject({ type: \"prompt\", prompt: message });\n }\n\n async reply(answer: string): Promise<void> {\n this.transport.inject({ type: \"reply\", answer });\n }\n\n async abort(): Promise<void> {\n this.transport.inject({ type: \"cancel\" });\n }\n\n async dispose(): Promise<void> {\n this.transport.inject({ type: \"shutdown\" });\n }\n\n onEvent(handler: (e: AgentEvent) => void): void {\n this.handlers.add(handler);\n }\n\n offEvent(handler: (e: AgentEvent) => void): void {\n this.handlers.delete(handler);\n }\n\n get isRunning(): boolean {\n return this.transport.connected;\n }\n}\n","/**\n * Workspace utilities — prepare session directories and write skaile.yaml.\n */\n\nimport { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { stringify } from \"yaml\";\nimport type { CreateAgentSessionOptions } from \"./types.js\";\n\n/**\n * Prepare a workspace directory for a session. Returns the path and cleanup fn.\n *\n * If `opts.workspaceDir` is set, that directory is created (if needed) and returned\n * with no cleanup. Otherwise a unique temporary directory (`skaile-sdk-*` under the\n * OS temp dir) is created via `mkdtempSync`; the cleanup function removes it on\n * session stop unless `keepWorkspace` is true.\n *\n * @param opts - Session creation options providing `workspaceDir` and `keepWorkspace`.\n * @returns An object with the resolved `dir` path and an optional `cleanup` function.\n * @docLink packages/sdk/concepts#workspace-helpers\n */\nexport function prepareWorkspace(opts: CreateAgentSessionOptions): {\n dir: string;\n cleanup: (() => void) | undefined;\n} {\n if (opts.workspaceDir) {\n mkdirSync(opts.workspaceDir, { recursive: true });\n return { dir: opts.workspaceDir, cleanup: undefined };\n }\n\n // mkdtemp yields an unpredictable, collision-free name (vs. a guessable\n // timestamp path) — avoids cross-session clobbering and symlink races in /tmp.\n const dir = mkdtempSync(join(tmpdir(), \"skaile-sdk-\"));\n\n const cleanup = opts.keepWorkspace\n ? undefined\n : () => rmSync(dir, { recursive: true, force: true });\n\n return { dir, cleanup };\n}\n\n/**\n * Write skaile.yaml from inline {@link CreateAgentSessionOptions}.\n *\n * Only writes if `agent`, `mounts`, or `connectors` are provided and no `skaile.yaml`\n * already exists in `dir` (existing config takes precedence). Connector `adapter` fields\n * are mapped to the `driver` field expected by the core runtime.\n *\n * @param dir - Absolute path to the workspace directory.\n * @param opts - Session options containing agent config, mounts, and connectors to serialize.\n * @docLink packages/sdk/concepts#workspace-helpers\n */\nexport function writeSkaileYaml(dir: string, opts: CreateAgentSessionOptions): void {\n if (!opts.agent && !opts.mounts?.length && !opts.connectors?.length) return;\n const dest = join(dir, \"skaile.yaml\");\n if (existsSync(dest)) return; // existing config wins\n\n const cfg: Record<string, unknown> = {\n name: \"sdk-session\",\n };\n\n if (opts.agent) {\n cfg[\"agent-config\"] = {\n default: {\n ...(opts.agent.harness && { harness: opts.agent.harness }),\n ...(opts.agent.provider && { provider: opts.agent.provider }),\n ...(opts.agent.model && { model: opts.agent.model }),\n },\n };\n\n if (opts.agent.maxTurns !== undefined || opts.agent.permissionMode !== undefined) {\n cfg.agent = {\n permissions: {\n ...(opts.agent.maxTurns !== undefined && { max_turns: opts.agent.maxTurns }),\n ...(opts.agent.permissionMode !== undefined && {\n permission_mode: opts.agent.permissionMode,\n }),\n },\n };\n }\n }\n\n if (opts.mounts?.length) {\n cfg.mounts = opts.mounts;\n }\n\n if (opts.connectors?.length) {\n // Map SDK field names to core's ConnectorDeclaration field names:\n // SDK uses `adapter` → core expects `driver`\n cfg.connectors = opts.connectors.map((c) => ({\n id: c.id,\n driver: c.adapter,\n ...(c.access && { access: c.access }),\n ...(c.auth && { auth: c.auth }),\n ...(c.options && { options: c.options }),\n }));\n }\n\n writeFileSync(dest, stringify(cfg));\n}\n","/**\n * createAgentSession() — universal factory for agent sessions.\n *\n * Handles workspace preparation, skaile.yaml writing, runtime selection,\n * startup, and cleanup registration. Returns a ready-to-use {@link AgentSession}.\n *\n * For multi-session managers (forge-tui) or bots (forge-mattermost) that need\n * custom session subclasses, use LocalRuntime directly:\n *\n * const runtime = new LocalRuntime();\n * await runtime.start({ projectDir: dir, agentDir });\n * const session = new MySession(id, name, runtime);\n *\n * @docLink packages/sdk/concepts#create-agent-session\n */\n\nimport { AgentClient } from \"@skaile/workspaces/client\";\nimport { WebSocketClientTransport } from \"@skaile/workspaces/transport/ws/client\";\nimport { AgentSession } from \"./agent-session.js\";\nimport { LocalRuntime } from \"./local-runtime.js\";\nimport type { CreateAgentSessionOptions } from \"./types.js\";\nimport { prepareWorkspace, writeSkaileYaml } from \"./workspace.js\";\n\nexport async function createAgentSession(\n opts: CreateAgentSessionOptions = {},\n): Promise<AgentSession> {\n const { dir, cleanup } = prepareWorkspace(opts);\n writeSkaileYaml(dir, opts);\n\n const mode = opts.mode ?? { type: \"local\" };\n let runtime: LocalRuntime | AgentClient;\n\n if (mode.type === \"local\") {\n const r = new LocalRuntime();\n await r.start({ projectDir: dir, agentDir: opts.agentDir });\n runtime = r;\n } else {\n const transport = new WebSocketClientTransport({ url: mode.url });\n await transport.connect();\n runtime = new AgentClient(transport);\n }\n\n const session = new AgentSession(runtime);\n session.state = \"idle\";\n\n if (cleanup) {\n session._registerCleanup(cleanup);\n }\n\n if (opts.initialPrompt?.trim()) {\n session.send(opts.initialPrompt.trim());\n }\n\n return session;\n}\n"]}
|
package/dist/sdk/resolver.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
export { buildRequiresPreamble, parseCompactionDirectives, parseSkillFrontmatter, parseSkillRequirements, validateConnectorRequirements, validateFlowVersions, validateRequirements } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { buildRequiresPreamble, parseCompactionDirectives, parseSkillFrontmatter, parseSkillRequirements, validateConnectorRequirements, validateFlowVersions, validateRequirements } from '../chunk-M7XIYHWB.js';
|
|
2
|
+
import '../chunk-U7P22GEB.js';
|
|
3
3
|
import '../chunk-4GY63JU6.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-ETGC2MEM.js';
|
|
5
5
|
import '../chunk-5KRMNUL4.js';
|
|
6
6
|
import '../chunk-C5HFK34M.js';
|
|
7
7
|
import '../chunk-MWXYN6NY.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-BRAOB37W.js';
|
|
9
9
|
import '../chunk-L5VSIPQD.js';
|
|
10
10
|
import '../chunk-VTETQCR6.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-PMXTBWFD.js';
|
|
12
|
+
import '../chunk-2MTRRK37.js';
|
|
13
13
|
import '../chunk-RVRB27AN.js';
|
|
14
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-HW4BDJPC.js';
|
|
15
|
+
import '../chunk-LCXQ4LVP.js';
|
|
15
16
|
import '../chunk-VSX2G7LA.js';
|
|
16
17
|
import '../chunk-RXGPFAMN.js';
|
|
17
18
|
import '../chunk-RZL4TOK3.js';
|
package/dist/sdk/runner.js
CHANGED
|
@@ -1,74 +1,75 @@
|
|
|
1
|
-
export { AgentRunError, CLAUDE_CODE_CREDENTIALS_KEY,
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
1
|
+
export { AgentRunError, CLAUDE_CODE_CREDENTIALS_KEY, CONNECTOR_MUTATE_NOT_READY, CapabilityRegistry, DEFAULT_CAPABILITY_CALL_TIMEOUT_MS, DEFAULT_COALESCE_MS, DEFAULT_FLOW_MUTATE_CONNECTOR_WAIT_MS, DEFAULT_MAX_FINISHED_TREES, DEFAULT_RUN_LIMITS, MOUNT_LIST_MAX_DEPTH, MOUNT_LIST_MAX_ENTRIES, MOUNT_READ_DEADLINE_FACTOR, MOUNT_READ_MAX_CHUNK_BYTES, MOUNT_STAT_BUDGET_MS, MOUNT_STAT_MAX_ENTRIES, MOUNT_TREE_OP_DEADLINE_FACTOR, MOUNT_WRITE_MAX_CHUNK_BYTES, MarkdownStreamer, PreInitRingSink, ResourceOperationError, SESSION_ROOT_WRITABLE_DIRS, SESSION_ROOT_WRITABLE_FILES, WRITE_RANGE_PARTIAL_TTL_MS, WS_AUTH_TOKEN_ENV, WS_AUTH_TOKEN_FILE_ENV, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildCompositionRunSnapshot, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, canonicalJson, capabilityLogInstance, capabilitySignatureInputs, clearPreInitRingSink, clearSession, compositionRunSnapshotPath, computeCapabilitySignature, computeDirectoryTotals, computeRevisionHash, connectorRefreshKind, createAgentSession, createFinalTextFallback, createFlowConnectorReadiness, createInMemoryRunStore, createManagedCodexSubpromptHarness, createRunController, createSessionStimulusBus, defineCapability, deleteSession, describeComposition, dispatchResourceRequest, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureClaudeSettingsDisablesConnectors, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, flowStartNeedsHarnessRestart, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, handleSessionRootResourceRequest, harnessActiveAfterTurnEnd, hasNonTerminalFlow, hashAgentFiles, hostOpResumeStimulus, installPreInitRingSink, instanceForSession, instanceSessionOverrides, isSessionRootPathAllowed, listSessions, loadAgentManifest, loadCompositionRunSnapshot, loadManagedCodexHostConfig, loadSession, loadSessionById, logConnectorReport, manifestModelForHarness, mcpAuthSecretKey, newSession, nulTailPaddingLength, pickChatFlowTarget, pickFlowToolTarget, pickRepointedManager, planFlowMutate, prepareCodexTools, reconcilePendingDecisions, reconnectedRunNeedsAgentTurn, recreateKeepingLiveFlows, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, rejectPendingCapabilityCallsOnDisconnect, resetRunnerLogStore, resolveAgentInstance, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveInstanceAgentDir, resolveSessionId, restoredRunHasWorkToResume, runAgentChat, saveCompositionRunSnapshot, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, takeRunnerWsAuthToken, toActiveFlowTarget, touchSession, unresolvedCredentialNotices, validateInputResponse, verifyConventionItems, writeClaudeCodeCredentialsFile, writeRangeChunk, writeRangePartialPath } from '../chunk-ZII54C3E.js';
|
|
2
|
+
import '../chunk-NNJQQYHY.js';
|
|
3
|
+
import '../chunk-Z23I2JA6.js';
|
|
4
|
+
import '../chunk-TVRL3IPZ.js';
|
|
5
|
+
import '../chunk-PD42JZWI.js';
|
|
6
6
|
import '../chunk-WYZXSJBK.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-SMFZ5YGN.js';
|
|
8
|
+
import '../chunk-3A7JUOY2.js';
|
|
9
9
|
import '../chunk-KW37WNXY.js';
|
|
10
10
|
import '../chunk-3MWQKQUB.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-3UYKT62L.js';
|
|
12
12
|
import '../chunk-O7SG5PC2.js';
|
|
13
13
|
import '../chunk-7QBNJTTQ.js';
|
|
14
14
|
import '../chunk-O2SYFJWP.js';
|
|
15
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-CU5WY6HN.js';
|
|
16
16
|
import '../chunk-32NA4TVC.js';
|
|
17
17
|
export { assembleSystemPrompt, buildCapabilitiesPromptSection, buildLinkedPeersPromptSection } from '../chunk-W3UDISS2.js';
|
|
18
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-6KV34G6A.js';
|
|
19
19
|
import '../chunk-4R6DROGN.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
23
|
-
import '../chunk-
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-
|
|
26
|
-
import '../chunk-
|
|
27
|
-
import '../chunk-
|
|
28
|
-
import '../chunk-
|
|
20
|
+
import '../chunk-M7XIYHWB.js';
|
|
21
|
+
import '../chunk-SFBLZOV5.js';
|
|
22
|
+
import '../chunk-QUIK7L3Z.js';
|
|
23
|
+
import '../chunk-6HTN2UIJ.js';
|
|
24
|
+
import '../chunk-H3PY5DFL.js';
|
|
25
|
+
import '../chunk-PRB67LCK.js';
|
|
26
|
+
import '../chunk-2SSG5B24.js';
|
|
27
|
+
import '../chunk-OD4N5O7V.js';
|
|
28
|
+
import '../chunk-72DYHOO2.js';
|
|
29
29
|
import '../chunk-5KSGZP3E.js';
|
|
30
30
|
import '../chunk-7EKQDY2T.js';
|
|
31
|
-
import '../chunk-
|
|
31
|
+
import '../chunk-HXST2IYJ.js';
|
|
32
32
|
import '../chunk-U7EZ2WSC.js';
|
|
33
|
-
import '../chunk-
|
|
33
|
+
import '../chunk-VFEZUSB6.js';
|
|
34
34
|
import '../chunk-NBAGV6L2.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-PPSSDUN6.js';
|
|
36
36
|
import '../chunk-YKD2MYLU.js';
|
|
37
37
|
import '../chunk-5DE3DGVR.js';
|
|
38
38
|
import '../chunk-7DN6JKP2.js';
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import '../chunk-
|
|
39
|
+
import '../chunk-NAQXDTF3.js';
|
|
40
|
+
import '../chunk-S3UOZBGE.js';
|
|
41
41
|
import '../chunk-G5SUWZEU.js';
|
|
42
|
-
import '../chunk-
|
|
42
|
+
import '../chunk-EGKCKWWE.js';
|
|
43
43
|
import '../chunk-6UP2EDFN.js';
|
|
44
44
|
import '../chunk-IFGTRL2I.js';
|
|
45
|
-
import '../chunk-
|
|
45
|
+
import '../chunk-2ZDZJ7XQ.js';
|
|
46
46
|
import '../chunk-WD3L5QSU.js';
|
|
47
47
|
import '../chunk-7RGTAEG6.js';
|
|
48
|
-
import '../chunk-
|
|
49
|
-
import '../chunk-7FXOOUOC.js';
|
|
50
|
-
import '../chunk-DRUAQ7IY.js';
|
|
51
|
-
import '../chunk-CVUMZTNO.js';
|
|
52
|
-
import '../chunk-F3D25RGM.js';
|
|
53
|
-
import '../chunk-3TXEJN4W.js';
|
|
48
|
+
import '../chunk-JPV4WE5L.js';
|
|
54
49
|
import '../chunk-ISHJITXJ.js';
|
|
55
50
|
import '../chunk-LNFKL23K.js';
|
|
56
51
|
import '../chunk-JRN5QF4C.js';
|
|
57
52
|
import '../chunk-NUELZWCF.js';
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
export { COMPILE_MANIFEST_FILENAME, CompileManifestEntrySchema, CompositionError, UnknownCompositionKindError, agentPromptInput, assembleRunnerAgent, buildRunnerAgentSections, compileComposition, createCompositionContentSource, hashContent, isCompilePinCurrent, isCompositionError, isEmptyKnowledgeIndex, loadCompileManifest, loadCompileManifestFromDir, loadKnowledgeDir, nativeAgentFilePath, readNativeAgentFile, resolveBinding, resolveMixin, stripFrontmatter } from '../chunk-4ZNKEDYH.js';
|
|
54
|
+
import '../chunk-RPRMD7XV.js';
|
|
55
|
+
import '../chunk-QUPZKTF3.js';
|
|
56
|
+
import '../chunk-ZQPBYLCS.js';
|
|
57
|
+
import '../chunk-F3D25RGM.js';
|
|
58
|
+
import '../chunk-3TXEJN4W.js';
|
|
59
|
+
export { globalSettingsPath, loadSettings, mapLegacyFields, modelForHarness, projectSettingsPath, resolveSettings, saveSettings } from '../chunk-U7P22GEB.js';
|
|
60
60
|
import '../chunk-4GY63JU6.js';
|
|
61
|
-
import '../chunk-
|
|
61
|
+
import '../chunk-ETGC2MEM.js';
|
|
62
62
|
import '../chunk-5KRMNUL4.js';
|
|
63
63
|
export { HARNESS_DEFAULTS, resolveHarnessPaths } from '../chunk-C5HFK34M.js';
|
|
64
64
|
import '../chunk-MWXYN6NY.js';
|
|
65
|
-
import '../chunk-
|
|
65
|
+
import '../chunk-BRAOB37W.js';
|
|
66
66
|
import '../chunk-L5VSIPQD.js';
|
|
67
67
|
export { HARNESS_TARGETS, SUPPORTED_HARNESSES } from '../chunk-VTETQCR6.js';
|
|
68
|
-
import '../chunk-
|
|
69
|
-
import '../chunk-
|
|
68
|
+
import '../chunk-PMXTBWFD.js';
|
|
69
|
+
import '../chunk-2MTRRK37.js';
|
|
70
70
|
import '../chunk-RVRB27AN.js';
|
|
71
|
-
import '../chunk-
|
|
71
|
+
import '../chunk-HW4BDJPC.js';
|
|
72
|
+
import '../chunk-LCXQ4LVP.js';
|
|
72
73
|
import '../chunk-VSX2G7LA.js';
|
|
73
74
|
import '../chunk-RXGPFAMN.js';
|
|
74
75
|
import '../chunk-RZL4TOK3.js';
|
package/dist/sdk/session.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { BoundedSubscriberTransport, DEFAULT_SUBSCRIBER_BUFFER_LIMITS, SessionDispatcher, SubscriberBufferOverflowError, UNSIZED_EVENT, approxEventSize, isAddressedByKind, isAgentAddressed, isMentioned, parseMentions } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { BoundedSubscriberTransport, DEFAULT_SUBSCRIBER_BUFFER_LIMITS, SessionDispatcher, SubscriberBufferOverflowError, UNSIZED_EVENT, approxEventSize, isAddressedByKind, isAgentAddressed, isMentioned, parseMentions } from '../chunk-DFFJKGCW.js';
|
|
2
|
+
import '../chunk-JPV4WE5L.js';
|
|
3
3
|
import '../chunk-NSBPE2FW.js';
|
|
4
4
|
//# sourceMappingURL=session.js.map
|
|
5
5
|
//# sourceMappingURL=session.js.map
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
export { WebSocketServerTransport } from '../../../chunk-
|
|
1
|
+
export { WebSocketServerTransport } from '../../../chunk-CU5WY6HN.js';
|
|
2
2
|
import '../../../chunk-32NA4TVC.js';
|
|
3
|
-
export { needsWildcardProbe } from '../../../chunk-
|
|
3
|
+
export { needsWildcardProbe } from '../../../chunk-U7P22GEB.js';
|
|
4
4
|
import '../../../chunk-4GY63JU6.js';
|
|
5
|
-
import '../../../chunk-
|
|
5
|
+
import '../../../chunk-ETGC2MEM.js';
|
|
6
6
|
import '../../../chunk-5KRMNUL4.js';
|
|
7
7
|
import '../../../chunk-C5HFK34M.js';
|
|
8
8
|
import '../../../chunk-MWXYN6NY.js';
|
|
9
|
-
import '../../../chunk-
|
|
9
|
+
import '../../../chunk-BRAOB37W.js';
|
|
10
10
|
import '../../../chunk-L5VSIPQD.js';
|
|
11
11
|
import '../../../chunk-VTETQCR6.js';
|
|
12
|
-
import '../../../chunk-
|
|
13
|
-
import '../../../chunk-
|
|
12
|
+
import '../../../chunk-PMXTBWFD.js';
|
|
13
|
+
import '../../../chunk-2MTRRK37.js';
|
|
14
14
|
import '../../../chunk-RVRB27AN.js';
|
|
15
|
-
import '../../../chunk-
|
|
15
|
+
import '../../../chunk-HW4BDJPC.js';
|
|
16
|
+
import '../../../chunk-LCXQ4LVP.js';
|
|
16
17
|
import '../../../chunk-VSX2G7LA.js';
|
|
17
18
|
import '../../../chunk-RXGPFAMN.js';
|
|
18
19
|
import '../../../chunk-RZL4TOK3.js';
|
package/dist/sdk/transport/ws.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import '../../chunk-7QBNJTTQ.js';
|
|
2
2
|
export { WebSocketClientTransport } from '../../chunk-O2SYFJWP.js';
|
|
3
|
-
export { WebSocketServerTransport } from '../../chunk-
|
|
3
|
+
export { WebSocketServerTransport } from '../../chunk-CU5WY6HN.js';
|
|
4
4
|
export { BEARER_SUBPROTOCOL_PREFIX, decodeBearerFromHeader, encodeBearerSubprotocol, tokensEqual } from '../../chunk-32NA4TVC.js';
|
|
5
|
-
import '../../chunk-
|
|
5
|
+
import '../../chunk-U7P22GEB.js';
|
|
6
6
|
import '../../chunk-4GY63JU6.js';
|
|
7
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-ETGC2MEM.js';
|
|
8
8
|
import '../../chunk-5KRMNUL4.js';
|
|
9
9
|
import '../../chunk-C5HFK34M.js';
|
|
10
10
|
import '../../chunk-MWXYN6NY.js';
|
|
11
|
-
import '../../chunk-
|
|
11
|
+
import '../../chunk-BRAOB37W.js';
|
|
12
12
|
import '../../chunk-L5VSIPQD.js';
|
|
13
13
|
import '../../chunk-VTETQCR6.js';
|
|
14
|
-
import '../../chunk-
|
|
15
|
-
import '../../chunk-
|
|
14
|
+
import '../../chunk-PMXTBWFD.js';
|
|
15
|
+
import '../../chunk-2MTRRK37.js';
|
|
16
16
|
import '../../chunk-RVRB27AN.js';
|
|
17
|
-
import '../../chunk-
|
|
17
|
+
import '../../chunk-HW4BDJPC.js';
|
|
18
|
+
import '../../chunk-LCXQ4LVP.js';
|
|
18
19
|
import '../../chunk-VSX2G7LA.js';
|
|
19
20
|
import '../../chunk-RXGPFAMN.js';
|
|
20
21
|
import '../../chunk-RZL4TOK3.js';
|
package/dist/sdk/transport.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import '../chunk-O7SG5PC2.js';
|
|
2
2
|
import '../chunk-7QBNJTTQ.js';
|
|
3
3
|
export { WebSocketClientTransport } from '../chunk-O2SYFJWP.js';
|
|
4
|
-
export { WebSocketServerTransport } from '../chunk-
|
|
4
|
+
export { WebSocketServerTransport } from '../chunk-CU5WY6HN.js';
|
|
5
5
|
import '../chunk-32NA4TVC.js';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-U7P22GEB.js';
|
|
7
7
|
import '../chunk-4GY63JU6.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-ETGC2MEM.js';
|
|
9
9
|
import '../chunk-5KRMNUL4.js';
|
|
10
10
|
import '../chunk-C5HFK34M.js';
|
|
11
11
|
import '../chunk-MWXYN6NY.js';
|
|
12
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-BRAOB37W.js';
|
|
13
13
|
import '../chunk-L5VSIPQD.js';
|
|
14
14
|
import '../chunk-VTETQCR6.js';
|
|
15
|
-
import '../chunk-
|
|
16
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-PMXTBWFD.js';
|
|
16
|
+
import '../chunk-2MTRRK37.js';
|
|
17
17
|
import '../chunk-RVRB27AN.js';
|
|
18
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-HW4BDJPC.js';
|
|
19
|
+
import '../chunk-LCXQ4LVP.js';
|
|
19
20
|
import '../chunk-VSX2G7LA.js';
|
|
20
21
|
import '../chunk-RXGPFAMN.js';
|
|
21
22
|
import '../chunk-RZL4TOK3.js';
|
package/dist/sdk/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AGENT_RUN_STATUSES, CONNECTOR_ERROR_KINDS, MENTION_GROUPS, PLATFORM_BLOCKS_RUNTIME_FEATURE, PROTOCOL_VERSION, PROTOCOL_VERSION_STRING, QUICK_REACTIONS, RANGED_WRITE_MIN_PROTOCOL, SESSION_ROOT_CONNECTOR_ID, TERMINAL_AGENT_RUN_STATUSES, TOOL_ACTIVITY_LABEL_DESCRIPTION, TOOL_ACTIVITY_LABEL_MAX_CHARS, TOOL_ACTIVITY_LABEL_PARAM, TOOL_ACTIVITY_PROMPT_SECTION, TURN_IDS_MAX_COUNT, TURN_IDS_RUNTIME_FEATURE, TURN_ID_MAX_LENGTH, TURN_VISIBILITY_EVENT_TYPES, TURN_VISIBILITY_RUNTIME_FEATURE, declaresActivityLabel, deliveryClassOf, formatVersion, isRenderCapability, isUserInvokable, parseVersion, stripActivityLabel, withActivityLabelDefs, withActivityLabelJsonSchema, withActivityLabelShape } from '../chunk-
|
|
1
|
+
export { AGENT_RUN_STATUSES, CONNECTOR_ERROR_KINDS, MENTION_GROUPS, PLATFORM_BLOCKS_RUNTIME_FEATURE, PROTOCOL_VERSION, PROTOCOL_VERSION_STRING, QUICK_REACTIONS, RANGED_WRITE_MIN_PROTOCOL, SESSION_ROOT_CONNECTOR_ID, TERMINAL_AGENT_RUN_STATUSES, TOOL_ACTIVITY_LABEL_DESCRIPTION, TOOL_ACTIVITY_LABEL_MAX_CHARS, TOOL_ACTIVITY_LABEL_PARAM, TOOL_ACTIVITY_PROMPT_SECTION, TURN_IDS_MAX_COUNT, TURN_IDS_RUNTIME_FEATURE, TURN_ID_MAX_LENGTH, TURN_VISIBILITY_EVENT_TYPES, TURN_VISIBILITY_RUNTIME_FEATURE, declaresActivityLabel, deliveryClassOf, formatVersion, isRenderCapability, isUserInvokable, parseVersion, stripActivityLabel, withActivityLabelDefs, withActivityLabelJsonSchema, withActivityLabelShape } from '../chunk-JPV4WE5L.js';
|
|
2
2
|
import '../chunk-NSBPE2FW.js';
|
|
3
3
|
//# sourceMappingURL=types.js.map
|
|
4
4
|
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { loadRegistryView } from './chunk-TW5AP6IF.js';
|
|
2
|
+
import { instanceRefProblem, agentDefinitionProblem, connectorMountPathChecks, logWarn, connectorErrorLines, unknownConnectorDriverErrors } from './chunk-WW22FS74.js';
|
|
3
|
+
import './chunk-T65N4CIZ.js';
|
|
4
|
+
import './chunk-PRB67LCK.js';
|
|
5
|
+
import './chunk-2SSG5B24.js';
|
|
6
|
+
import './chunk-OD4N5O7V.js';
|
|
7
|
+
import './chunk-72DYHOO2.js';
|
|
8
|
+
import './chunk-5KSGZP3E.js';
|
|
9
|
+
import './chunk-7EKQDY2T.js';
|
|
10
|
+
import './chunk-HXST2IYJ.js';
|
|
11
|
+
import './chunk-U7EZ2WSC.js';
|
|
12
|
+
import './chunk-VFEZUSB6.js';
|
|
13
|
+
import './chunk-NBAGV6L2.js';
|
|
14
|
+
import './chunk-PPSSDUN6.js';
|
|
15
|
+
import './chunk-YKD2MYLU.js';
|
|
16
|
+
import './chunk-5DE3DGVR.js';
|
|
17
|
+
import './chunk-7DN6JKP2.js';
|
|
18
|
+
import './chunk-NAQXDTF3.js';
|
|
19
|
+
import './chunk-S3UOZBGE.js';
|
|
20
|
+
import './chunk-G5SUWZEU.js';
|
|
21
|
+
import './chunk-EGKCKWWE.js';
|
|
22
|
+
import './chunk-6UP2EDFN.js';
|
|
23
|
+
import './chunk-JPV4WE5L.js';
|
|
24
|
+
import './chunk-2JUCWMIS.js';
|
|
25
|
+
import './chunk-ISHJITXJ.js';
|
|
26
|
+
import './chunk-LNFKL23K.js';
|
|
27
|
+
import './chunk-JRN5QF4C.js';
|
|
28
|
+
import './chunk-NUELZWCF.js';
|
|
29
|
+
import './chunk-MG6QD7GE.js';
|
|
30
|
+
import './chunk-2PJYJPDE.js';
|
|
31
|
+
import './chunk-PKE3PXOK.js';
|
|
32
|
+
import './chunk-4ZNKEDYH.js';
|
|
33
|
+
import './chunk-RPRMD7XV.js';
|
|
34
|
+
import './chunk-QUPZKTF3.js';
|
|
35
|
+
import './chunk-ZQPBYLCS.js';
|
|
36
|
+
import './chunk-F3D25RGM.js';
|
|
37
|
+
import './chunk-3TXEJN4W.js';
|
|
38
|
+
import './chunk-LKBRBVVS.js';
|
|
39
|
+
import './chunk-UQ6LFBPZ.js';
|
|
40
|
+
import './chunk-IG4YQ7ER.js';
|
|
41
|
+
import { resolveSettings } from './chunk-U7P22GEB.js';
|
|
42
|
+
import './chunk-4GY63JU6.js';
|
|
43
|
+
import './chunk-ETGC2MEM.js';
|
|
44
|
+
import './chunk-5KRMNUL4.js';
|
|
45
|
+
import { DEFAULT_HARNESS_ID } from './chunk-C5HFK34M.js';
|
|
46
|
+
import './chunk-MWXYN6NY.js';
|
|
47
|
+
import { resolveSkWorkspaceConfig, primaryAgentRef, loadSkWorkspaceConfig, SKAILE_YAML_DEFAULT } from './chunk-BRAOB37W.js';
|
|
48
|
+
import './chunk-L5VSIPQD.js';
|
|
49
|
+
import './chunk-VTETQCR6.js';
|
|
50
|
+
import './chunk-PMXTBWFD.js';
|
|
51
|
+
import './chunk-2MTRRK37.js';
|
|
52
|
+
import './chunk-RVRB27AN.js';
|
|
53
|
+
import './chunk-HW4BDJPC.js';
|
|
54
|
+
import './chunk-LCXQ4LVP.js';
|
|
55
|
+
import './chunk-VSX2G7LA.js';
|
|
56
|
+
import { registryEntries } from './chunk-RXGPFAMN.js';
|
|
57
|
+
import './chunk-RZL4TOK3.js';
|
|
58
|
+
import './chunk-C3CAXQMA.js';
|
|
59
|
+
import './chunk-BOFL7GIF.js';
|
|
60
|
+
import './chunk-NSBPE2FW.js';
|
|
61
|
+
import { statSync } from 'fs';
|
|
62
|
+
|
|
63
|
+
async function checkModelEndpointPeer(projectDir, flag, probe) {
|
|
64
|
+
const enabled = flag?.enabled ?? resolveSkWorkspaceConfig(projectDir).model_endpoint?.enabled === true;
|
|
65
|
+
if (!enabled) return null;
|
|
66
|
+
const check = probe ?? (await import('./model-endpoint/index.js')).checkPiAiInstalled;
|
|
67
|
+
return check(projectDir);
|
|
68
|
+
}
|
|
69
|
+
function resolveServeProvider(projectDir, provider, providers, registry = () => loadRegistryView({ projectDir }).merged) {
|
|
70
|
+
const id = provider?.trim();
|
|
71
|
+
if (!id) return { providers };
|
|
72
|
+
if (providers.length > 0 && !providers.includes(id)) {
|
|
73
|
+
return {
|
|
74
|
+
problem: `--provider '${id}' is not in --providers (${providers.join(", ")}). Use one of the two flags.`
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const secretsProvider = resolveSkWorkspaceConfig(projectDir).secrets?.provider;
|
|
78
|
+
if (!secretsProvider || secretsProvider === "env") {
|
|
79
|
+
const known = registryEntries(registry()).map(([entryId]) => entryId);
|
|
80
|
+
if (!known.includes(id)) {
|
|
81
|
+
return {
|
|
82
|
+
problem: known.length > 0 ? `--provider: '${id}' is not an AI provider entry. Defined: ${known.join(", ")}. Run: skaile providers list` : `--provider: '${id}' is not an AI provider entry; none is defined. Run: skaile providers add`
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { providers: providers.length > 0 ? providers : [id] };
|
|
87
|
+
}
|
|
88
|
+
function checkServeProjectDir(projectDir) {
|
|
89
|
+
try {
|
|
90
|
+
if (statSync(projectDir).isDirectory()) return null;
|
|
91
|
+
} catch {
|
|
92
|
+
}
|
|
93
|
+
return `--project-dir: '${projectDir}' is not a directory`;
|
|
94
|
+
}
|
|
95
|
+
function serveAgentRef(projectDir) {
|
|
96
|
+
const config = resolveSkWorkspaceConfig(projectDir);
|
|
97
|
+
const definition = primaryAgentRef(config);
|
|
98
|
+
return {
|
|
99
|
+
...definition ? { definition } : {},
|
|
100
|
+
instances: Object.fromEntries(
|
|
101
|
+
Object.entries(config.agent?.instances ?? {}).map(([id, instance]) => [id, instance.ref])
|
|
102
|
+
)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
var agentRefLookups = {
|
|
106
|
+
definition: agentDefinitionProblem,
|
|
107
|
+
instance: instanceRefProblem
|
|
108
|
+
};
|
|
109
|
+
function servesLocalRegistry(projectDir) {
|
|
110
|
+
const secretsProvider = resolveSkWorkspaceConfig(projectDir).secrets?.provider;
|
|
111
|
+
return !secretsProvider || secretsProvider === "env";
|
|
112
|
+
}
|
|
113
|
+
async function checkServeConnectors(projectDir) {
|
|
114
|
+
const file = loadSkWorkspaceConfig(projectDir);
|
|
115
|
+
const connectors = file?.config.connectors ?? [];
|
|
116
|
+
const mounts = connectorMountPathChecks(projectDir, SKAILE_YAML_DEFAULT, connectors);
|
|
117
|
+
for (const line of mounts.warnings) logWarn(line);
|
|
118
|
+
const lines = [
|
|
119
|
+
...connectorErrorLines(file?.diagnostics ?? [], SKAILE_YAML_DEFAULT),
|
|
120
|
+
...mounts.errors,
|
|
121
|
+
...await unknownConnectorDriverErrors(projectDir, SKAILE_YAML_DEFAULT, connectors)
|
|
122
|
+
];
|
|
123
|
+
return lines.length > 0 ? lines.join("\n") : null;
|
|
124
|
+
}
|
|
125
|
+
async function resolveServeStart(projectDir, overrides) {
|
|
126
|
+
const settings = await resolveSettings(projectDir, {
|
|
127
|
+
...overrides.harness ? { harness: overrides.harness } : {},
|
|
128
|
+
...overrides.model ? { model: overrides.model } : {}
|
|
129
|
+
});
|
|
130
|
+
return {
|
|
131
|
+
harness: settings.harness ?? DEFAULT_HARNESS_ID,
|
|
132
|
+
model: overrides.model ? settings.model : void 0
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export { agentRefLookups, checkModelEndpointPeer, checkServeConnectors, checkServeProjectDir, resolveServeProvider, resolveServeStart, serveAgentRef, servesLocalRegistry };
|
|
137
|
+
//# sourceMappingURL=serve-preflight-XJS5OZML.js.map
|
|
138
|
+
//# sourceMappingURL=serve-preflight-XJS5OZML.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../cli/src/commands/serve-preflight.ts"],"names":[],"mappings":"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","file":"serve-preflight-XJS5OZML.js","sourcesContent":["/**\n * Start-up checks for `skaile serve`: fail with one actionable line before the\n * runner reports ready, instead of on the first prompt.\n */\n\nimport { statSync } from \"node:fs\";\nimport type { AgentRefLookups, PreflightAgentRef } from \"@skaile/workspaces/bridge\";\nimport {\n type MergedAIProviderRegistry,\n registryEntries,\n} from \"@skaile/workspaces/core/provider-registry\";\nimport { loadRegistryView } from \"./providers.ts\";\nimport {\n DEFAULT_HARNESS_ID,\n loadSkWorkspaceConfig,\n primaryAgentRef,\n resolveSettings,\n resolveSkWorkspaceConfig,\n SKAILE_YAML_DEFAULT,\n} from \"@skaile/workspaces/core\";\nimport {\n connectorErrorLines,\n connectorMountPathChecks,\n unknownConnectorDriverErrors,\n} from \"../config-checks.ts\";\nimport { logWarn } from \"../helpers.ts\";\nimport { agentDefinitionProblem, instanceRefProblem } from \"./validate-instances.ts\";\n\n/**\n * Check that the model endpoint can load pi-ai, when `skaile serve` will start the\n * endpoint (`--model-endpoint`, or `model_endpoint.enabled` in skaile.yaml). Without\n * this the endpoint printed its ready line and answered every request with a 500.\n *\n * @param projectDir - Project the server serves.\n * @param flag - Parsed `--model-endpoint`, when given.\n * @param probe - Replaceable pi-ai check, for tests.\n * @returns The one-line problem (both places looked in, the install command), or `null`.\n */\nexport async function checkModelEndpointPeer(\n projectDir: string,\n flag: { enabled?: boolean } | undefined,\n probe?: (projectDir: string) => Promise<string | null>,\n): Promise<string | null> {\n const enabled =\n flag?.enabled ?? resolveSkWorkspaceConfig(projectDir).model_endpoint?.enabled === true;\n if (!enabled) return null;\n const check = probe ?? (await import(\"@skaile/workspaces/model-endpoint\")).checkPiAiInstalled;\n return check(projectDir);\n}\n\n/**\n * Resolve `--provider <name>`: it picks one AI provider registry entry, the way\n * `--providers <ids>` picks several. The session then holds that entry only.\n *\n * Fails, with one line, when the entry is not in the local registry\n * (`providers.yml` and the layers above it) or when `--providers` is given\n * too and does not list it. The registry check is skipped when the registry\n * comes from the host (`secrets.provider` other than `env`): the platform\n * sends its entries at `session_init`, after the server is up.\n *\n * @param projectDir - Project the server serves.\n * @param provider - `--provider`, when given.\n * @param providers - Ids of `--providers`, when given.\n * @param registry - Replaceable registry loader, for tests.\n * @returns The entry ids the session keeps, or the one-line problem.\n */\nexport function resolveServeProvider(\n projectDir: string,\n provider: string | undefined,\n providers: readonly string[],\n registry: () => MergedAIProviderRegistry = () => loadRegistryView({ projectDir }).merged,\n): { providers: readonly string[] } | { problem: string } {\n const id = provider?.trim();\n if (!id) return { providers };\n if (providers.length > 0 && !providers.includes(id)) {\n return {\n problem: `--provider '${id}' is not in --providers (${providers.join(\", \")}). Use one of the two flags.`,\n };\n }\n const secretsProvider = resolveSkWorkspaceConfig(projectDir).secrets?.provider;\n if (!secretsProvider || secretsProvider === \"env\") {\n const known = registryEntries(registry()).map(([entryId]) => entryId);\n if (!known.includes(id)) {\n return {\n problem:\n known.length > 0\n ? `--provider: '${id}' is not an AI provider entry. Defined: ${known.join(\", \")}. Run: skaile providers list`\n : `--provider: '${id}' is not an AI provider entry; none is defined. Run: skaile providers add`,\n };\n }\n }\n return { providers: providers.length > 0 ? providers : [id] };\n}\n\n/**\n * Check that `--project-dir` is an existing directory, before `serve` creates anything in it. A\n * missing folder used to fail with a raw `ENOENT` stack from the log store (p1732). A symlink to\n * a directory passes; a relative path is read from the current directory.\n *\n * @param projectDir - The `--project-dir` value as typed.\n * @returns The one-line problem, or `null` when the directory exists.\n */\nexport function checkServeProjectDir(projectDir: string): string | null {\n try {\n if (statSync(projectDir).isDirectory()) return null;\n } catch {\n // missing, a dangling link or unreadable: the same line\n }\n return `--project-dir: '${projectDir}' is not a directory`;\n}\n\n/**\n * The agent refs `skaile serve` resolves before it is ready: `agent.definition` and the `ref` of\n * every `agents:` instance in the project's `skaile.yaml`, for `preflight`. Without them `serve`\n * died with a raw `AgentRefResolutionError` stack for the definition and started with no word\n * for an instance it could not resolve.\n *\n * @param projectDir - Project the server serves.\n */\nexport function serveAgentRef(projectDir: string): PreflightAgentRef {\n const config = resolveSkWorkspaceConfig(projectDir);\n const definition = primaryAgentRef(config);\n return {\n ...(definition ? { definition } : {}),\n instances: Object.fromEntries(\n Object.entries(config.agent?.instances ?? {}).map(([id, instance]) => [id, instance.ref]),\n ),\n };\n}\n\n/**\n * How `preflight` resolves an agent ref: the `agent_ref_unresolved` rule `validate` applies, so\n * both print the same line (p1733).\n */\nexport const agentRefLookups: AgentRefLookups = {\n definition: agentDefinitionProblem,\n instance: instanceRefProblem,\n};\n\n/**\n * Whether the AI provider registry of this server is the local one. With `secrets.provider` other\n * than `env` the platform delivers its registry layer at `session_init`, after the server is up\n * (p1332), so the local registry cannot refuse a model.\n *\n * @param projectDir - Project the server serves.\n */\nexport function servesLocalRegistry(projectDir: string): boolean {\n const secretsProvider = resolveSkWorkspaceConfig(projectDir).secrets?.provider;\n return !secretsProvider || secretsProvider === \"env\";\n}\n\n/**\n * Check that the connectors `skaile.yaml` declares are ones the runner can mount: every\n * connector error `validate` gives (no `driver`, no `id`, a duplicate `id`, an `access` that is\n * neither `read-only` nor `read-write`, a `local` `mountPath` that is missing or reaches outside\n * the project through a symlink, a `driver` nothing provides). `serve` stops on exactly those and\n * prints the same lines. What `validate` only warns about (a `mountPath` outside the project) is\n * warned about too.\n *\n * @param projectDir - Project the server serves.\n * @returns One line per error, joined by newlines, or `null` when every connector is fine.\n */\nexport async function checkServeConnectors(projectDir: string): Promise<string | null> {\n const file = loadSkWorkspaceConfig(projectDir);\n const connectors = file?.config.connectors ?? [];\n const mounts = connectorMountPathChecks(projectDir, SKAILE_YAML_DEFAULT, connectors);\n for (const line of mounts.warnings) logWarn(line);\n const lines = [\n ...connectorErrorLines(file?.diagnostics ?? [], SKAILE_YAML_DEFAULT),\n ...mounts.errors,\n ...(await unknownConnectorDriverErrors(projectDir, SKAILE_YAML_DEFAULT, connectors)),\n ];\n return lines.length > 0 ? lines.join(\"\\n\") : null;\n}\n\n/**\n * The harness and the model `serve` hands to `preflight`. `--harness` overrides the harness of\n * `skaile.yaml`. Only an explicit `--model` is returned: a model from `skaile.yaml` may be served\n * by a provider the platform sends at `session_init`, so it is not judged before ready.\n */\nexport async function resolveServeStart(\n projectDir: string,\n overrides: { harness?: string; model?: string },\n): Promise<{ harness: string; model: string | undefined }> {\n const settings = await resolveSettings(projectDir, {\n ...(overrides.harness ? { harness: overrides.harness } : {}),\n ...(overrides.model ? { model: overrides.model } : {}),\n });\n return {\n harness: settings.harness ?? DEFAULT_HARNESS_ID,\n model: overrides.model ? settings.model : undefined,\n };\n}\n"]}
|
package/dist/session/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { BoundedSubscriberTransport, DEFAULT_SUBSCRIBER_BUFFER_LIMITS, SessionDispatcher, SubscriberBufferOverflowError, UNSIZED_EVENT, approxEventSize, isAddressedByKind, isAgentAddressed, isMentioned, parseMentions } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { BoundedSubscriberTransport, DEFAULT_SUBSCRIBER_BUFFER_LIMITS, SessionDispatcher, SubscriberBufferOverflowError, UNSIZED_EVENT, approxEventSize, isAddressedByKind, isAgentAddressed, isMentioned, parseMentions } from '../chunk-DFFJKGCW.js';
|
|
2
|
+
import '../chunk-JPV4WE5L.js';
|
|
3
3
|
import '../chunk-NSBPE2FW.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|