@skaile/workspaces 5.2.0 → 5.4.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 +72 -0
- package/README.md +9 -2
- package/dist/{asset-feeds-WDIB3E6H.js → asset-feeds-3MVRNS5U.js} +12 -12
- package/dist/{asset-feeds-WDIB3E6H.js.map → asset-feeds-3MVRNS5U.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +9 -9
- package/dist/asset-manager/index.js +13 -13
- package/dist/asset-manager/installer.js +9 -9
- package/dist/asset-manager/src/index.d.ts +22 -3
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +9 -1
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +11 -11
- package/dist/bridge/drivers/codex.js +10 -10
- package/dist/bridge/drivers/continue.js +12 -12
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +5 -5
- package/dist/bridge/drivers/goose.js +12 -12
- package/dist/bridge/drivers/omp.js +2 -2
- package/dist/bridge/drivers/opencode.js +12 -12
- package/dist/bridge/drivers/qwen.js +5 -5
- package/dist/bridge/index.js +12 -12
- package/dist/{chunk-WMEPS6S4.js → chunk-2XXAVTTO.js} +3 -3
- package/dist/{chunk-WMEPS6S4.js.map → chunk-2XXAVTTO.js.map} +1 -1
- package/dist/{chunk-KGGT6MUM.js → chunk-37DN45RR.js} +19 -7
- package/dist/chunk-37DN45RR.js.map +1 -0
- package/dist/chunk-5NH3U6N5.js +15 -0
- package/dist/{chunk-BZXR6SW5.js.map → chunk-5NH3U6N5.js.map} +1 -1
- package/dist/{chunk-P2EM6FNQ.js → chunk-6IGFSUTE.js} +23 -36
- package/dist/chunk-6IGFSUTE.js.map +1 -0
- package/dist/{chunk-EOGNW74K.js → chunk-7KITVWXK.js} +25 -23
- package/dist/chunk-7KITVWXK.js.map +1 -0
- package/dist/{chunk-S6KNDUAU.js → chunk-A67BHJCH.js} +5 -5
- package/dist/{chunk-S6KNDUAU.js.map → chunk-A67BHJCH.js.map} +1 -1
- package/dist/{chunk-3E2TIPBZ.js → chunk-AE42DHSH.js} +2 -2
- package/dist/{chunk-3E2TIPBZ.js.map → chunk-AE42DHSH.js.map} +1 -1
- package/dist/{chunk-L257BENF.js → chunk-BATL2CWI.js} +128 -32
- package/dist/chunk-BATL2CWI.js.map +1 -0
- package/dist/{chunk-2MEMXBLC.js → chunk-BHUHGLNS.js} +5 -5
- package/dist/{chunk-2MEMXBLC.js.map → chunk-BHUHGLNS.js.map} +1 -1
- package/dist/{chunk-XIYXBHLN.js → chunk-DTV7HL5R.js} +2 -2
- package/dist/{chunk-XIYXBHLN.js.map → chunk-DTV7HL5R.js.map} +1 -1
- package/dist/{chunk-BJQUSAGB.js → chunk-GCYD4EGY.js} +4 -4
- package/dist/{chunk-BJQUSAGB.js.map → chunk-GCYD4EGY.js.map} +1 -1
- package/dist/{chunk-EB6OPURC.js → chunk-HTKZ4AOW.js} +3 -3
- package/dist/{chunk-EB6OPURC.js.map → chunk-HTKZ4AOW.js.map} +1 -1
- package/dist/{chunk-OFNXRI4L.js → chunk-IDUGP4V7.js} +3 -3
- package/dist/{chunk-OFNXRI4L.js.map → chunk-IDUGP4V7.js.map} +1 -1
- package/dist/{chunk-ANWHAGM7.js → chunk-JAJG4G5E.js} +3 -3
- package/dist/{chunk-ANWHAGM7.js.map → chunk-JAJG4G5E.js.map} +1 -1
- package/dist/{chunk-PU5VY7KF.js → chunk-JCATNLY3.js} +4 -4
- package/dist/{chunk-PU5VY7KF.js.map → chunk-JCATNLY3.js.map} +1 -1
- package/dist/{chunk-77GKEZ2R.js → chunk-JEA32KB6.js} +3 -3
- package/dist/{chunk-77GKEZ2R.js.map → chunk-JEA32KB6.js.map} +1 -1
- package/dist/{chunk-7Y43UXKA.js → chunk-JELTQ4H7.js} +3 -3
- package/dist/{chunk-7Y43UXKA.js.map → chunk-JELTQ4H7.js.map} +1 -1
- package/dist/{chunk-R3QW7CA5.js → chunk-JF26V3BC.js} +7 -7
- package/dist/chunk-JF26V3BC.js.map +1 -0
- package/dist/{chunk-XOTJVCJB.js → chunk-JKWU6ULI.js} +3 -3
- package/dist/{chunk-XOTJVCJB.js.map → chunk-JKWU6ULI.js.map} +1 -1
- package/dist/{chunk-ARUJBGAH.js → chunk-KXTO7HON.js} +3 -3
- package/dist/{chunk-ARUJBGAH.js.map → chunk-KXTO7HON.js.map} +1 -1
- package/dist/{chunk-2QZG5VJQ.js → chunk-LAI7X6I2.js} +3 -3
- package/dist/{chunk-2QZG5VJQ.js.map → chunk-LAI7X6I2.js.map} +1 -1
- package/dist/{chunk-YANDJSMN.js → chunk-LFMX2UEF.js} +3 -3
- package/dist/{chunk-YANDJSMN.js.map → chunk-LFMX2UEF.js.map} +1 -1
- package/dist/{chunk-BUNBKRJZ.js → chunk-LUBS5DXY.js} +3 -3
- package/dist/{chunk-BUNBKRJZ.js.map → chunk-LUBS5DXY.js.map} +1 -1
- package/dist/{chunk-TLKM4M47.js → chunk-MFHKHXDE.js} +6 -3
- package/dist/chunk-MFHKHXDE.js.map +1 -0
- package/dist/chunk-NESV47MF.js +20 -0
- package/dist/chunk-NESV47MF.js.map +1 -0
- package/dist/{chunk-6OWIEFZ2.js → chunk-OANSNVCP.js} +5 -5
- package/dist/{chunk-6OWIEFZ2.js.map → chunk-OANSNVCP.js.map} +1 -1
- package/dist/{chunk-MGHUSFYQ.js → chunk-ONWTPXVU.js} +8 -8
- package/dist/{chunk-MGHUSFYQ.js.map → chunk-ONWTPXVU.js.map} +1 -1
- package/dist/{chunk-DD3OZLRD.js → chunk-OXE5A6H6.js} +3 -3
- package/dist/{chunk-DD3OZLRD.js.map → chunk-OXE5A6H6.js.map} +1 -1
- package/dist/{chunk-BIMEKYOE.js → chunk-QEXEHXX5.js} +15 -18
- package/dist/chunk-QEXEHXX5.js.map +1 -0
- package/dist/{chunk-TVJBJLXR.js → chunk-QK756IRJ.js} +13 -13
- package/dist/{chunk-TVJBJLXR.js.map → chunk-QK756IRJ.js.map} +1 -1
- package/dist/{chunk-UDBN3LZU.js → chunk-RD6GE4HU.js} +4 -4
- package/dist/{chunk-UDBN3LZU.js.map → chunk-RD6GE4HU.js.map} +1 -1
- package/dist/{chunk-IOUIC2ZD.js → chunk-SQBPE66C.js} +8 -8
- package/dist/{chunk-IOUIC2ZD.js.map → chunk-SQBPE66C.js.map} +1 -1
- package/dist/{chunk-YRF5CYHR.js → chunk-SR4RFKHM.js} +36 -5
- package/dist/chunk-SR4RFKHM.js.map +1 -0
- package/dist/{chunk-BWOLP6KQ.js → chunk-U6ORGQHZ.js} +3 -3
- package/dist/{chunk-BWOLP6KQ.js.map → chunk-U6ORGQHZ.js.map} +1 -1
- package/dist/{chunk-RXPC4KBW.js → chunk-UAAAERXI.js} +3 -3
- package/dist/{chunk-RXPC4KBW.js.map → chunk-UAAAERXI.js.map} +1 -1
- package/dist/chunk-UKDFOOEG.js +22 -0
- package/dist/chunk-UKDFOOEG.js.map +1 -0
- package/dist/{chunk-6ZCVROWW.js → chunk-UNRZCQD4.js} +6 -6
- package/dist/{chunk-6ZCVROWW.js.map → chunk-UNRZCQD4.js.map} +1 -1
- package/dist/{chunk-ZSFTCMZL.js → chunk-VETH6MDG.js} +19 -19
- package/dist/{chunk-ZSFTCMZL.js.map → chunk-VETH6MDG.js.map} +1 -1
- package/dist/{chunk-4YE7OYTB.js → chunk-VKSA2CDJ.js} +5 -6
- package/dist/chunk-VKSA2CDJ.js.map +1 -0
- package/dist/{chunk-OABIGSUY.js → chunk-WX74MVNA.js} +2 -2
- package/dist/chunk-WX74MVNA.js.map +1 -0
- package/dist/{chunk-U6K3I3AX.js → chunk-XGIS325V.js} +3 -3
- package/dist/{chunk-U6K3I3AX.js.map → chunk-XGIS325V.js.map} +1 -1
- package/dist/{chunk-FJTC5YFO.js → chunk-XMQAV6T3.js} +3 -3
- package/dist/{chunk-FJTC5YFO.js.map → chunk-XMQAV6T3.js.map} +1 -1
- package/dist/{chunk-B4J4RGNY.js → chunk-Y5OCUOXF.js} +34 -19
- package/dist/chunk-Y5OCUOXF.js.map +1 -0
- package/dist/{chunk-LZ5RH6LD.js → chunk-Y7UBRRKG.js} +89 -128
- package/dist/chunk-Y7UBRRKG.js.map +1 -0
- package/dist/{chunk-PHKFFJ4I.js → chunk-ZIYYMR6Y.js} +3 -3
- package/dist/{chunk-PHKFFJ4I.js.map → chunk-ZIYYMR6Y.js.map} +1 -1
- package/dist/{chunk-JPR7EPIM.js → chunk-ZUZ5LLZ2.js} +4 -4
- package/dist/{chunk-JPR7EPIM.js.map → chunk-ZUZ5LLZ2.js.map} +1 -1
- package/dist/cli/index.js +796 -583
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +33 -3
- package/dist/cli/src/commands/catalog.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 +57 -1
- 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/npx.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts +3 -1
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/skailify-lib.d.ts +3 -2
- package/dist/cli/src/commands/skailify-lib.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/setup.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +21 -0
- package/dist/cli/src/skill-checks.d.ts.map +1 -0
- package/dist/cli/src/spinner.d.ts +24 -0
- package/dist/cli/src/spinner.d.ts.map +1 -0
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +15 -15
- package/dist/{connectors-GUN4MRWR.js → connectors-OB3OAZTK.js} +18 -18
- package/dist/{connectors-GUN4MRWR.js.map → connectors-OB3OAZTK.js.map} +1 -1
- package/dist/core/index.js +8 -8
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +6 -6
- package/dist/core/src/asset-roots.d.ts +8 -0
- package/dist/core/src/asset-roots.d.ts.map +1 -1
- package/dist/core/src/cache-paths.d.ts +6 -0
- package/dist/core/src/cache-paths.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +2 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +7 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +26 -2
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/store.js +2 -2
- package/dist/core/workspace-config.js +5 -5
- package/dist/deploy/index.js +8 -8
- package/dist/discovery/index.js +4 -4
- package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
- package/dist/discovery/src/discover.d.ts.map +1 -1
- package/dist/discovery/src/hash.d.ts +45 -23
- package/dist/discovery/src/hash.d.ts.map +1 -1
- package/dist/discovery/src/index.d.ts +2 -0
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/parse-manifest.d.ts +27 -0
- package/dist/discovery/src/parse-manifest.d.ts.map +1 -0
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-VCPA762L.js → ensure-sources-Z3KKLEM6.js} +16 -16
- package/dist/{ensure-sources-VCPA762L.js.map → ensure-sources-Z3KKLEM6.js.map} +1 -1
- package/dist/factory-assets/README.md +2 -2
- package/dist/factory-assets/connectors/box.js +15 -15
- package/dist/factory-assets/connectors/deploy.js +15 -15
- package/dist/factory-assets/connectors/devserver.js +15 -15
- package/dist/factory-assets/connectors/flow/adapter.js +15 -15
- package/dist/factory-assets/connectors/flow/engine.js +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.js +17 -17
- package/dist/factory-assets/connectors/flow.js +15 -15
- package/dist/factory-assets/connectors/git.js +15 -15
- package/dist/factory-assets/connectors/gmail.js +15 -15
- package/dist/factory-assets/connectors/googledrive.js +15 -15
- package/dist/factory-assets/connectors/local.js +15 -15
- package/dist/factory-assets/connectors/mattermost.js +15 -15
- package/dist/factory-assets/connectors/memory.js +15 -15
- package/dist/factory-assets/connectors/minio.js +15 -15
- package/dist/factory-assets/connectors/postgres.js +15 -15
- package/dist/factory-assets/connectors/s3.js +15 -15
- package/dist/factory-assets/connectors/sharepoint.js +15 -15
- package/dist/factory-assets/connectors/sqlite.js +15 -15
- package/dist/factory-assets/connectors/static-server.js +15 -15
- package/dist/factory-assets/connectors/tunnel.js +15 -15
- package/dist/factory-assets/connectors/webdav.js +15 -15
- package/dist/factory-assets/connectors/xstate-store.js +15 -15
- package/dist/factory-assets/connectors/xstate.js +15 -15
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +17 -15
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +20 -17
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +82 -71
- package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +17 -11
- package/dist/factory-assets/skills/skailify/SKILL.md +8 -4
- package/dist/{flows-BOB5YA5R.js → flows-DTADYIXH.js} +13 -13
- package/dist/{flows-BOB5YA5R.js.map → flows-DTADYIXH.js.map} +1 -1
- package/dist/{helpers-ZGK4R5MZ.js → helpers-F2RFRT5D.js} +16 -16
- package/dist/{helpers-ZGK4R5MZ.js.map → helpers-F2RFRT5D.js.map} +1 -1
- package/dist/library/index.js +11 -11
- package/dist/library/install.js +3 -2
- package/dist/library/src/config.d.ts +5 -4
- package/dist/library/src/config.d.ts.map +1 -1
- package/dist/library/src/index.d.ts +1 -1
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
- package/dist/library/src/local/install-library-asset.d.ts +3 -2
- package/dist/library/src/local/install-library-asset.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts +6 -0
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts +8 -0
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-RIP6NBYA.js → library-publish-62RFU74A.js} +47 -26
- package/dist/library-publish-62RFU74A.js.map +1 -0
- package/dist/{open-library-4IJTBVTR.js → open-library-NVG3CZUO.js} +19 -19
- package/dist/{open-library-4IJTBVTR.js.map → open-library-NVG3CZUO.js.map} +1 -1
- package/dist/open-registry-IYH6W6CN.js +32 -0
- package/dist/{open-registry-G5DI4RPU.js.map → open-registry-IYH6W6CN.js.map} +1 -1
- package/dist/paths-STQO4FYF.js +22 -0
- package/dist/{paths-L5XLUC3D.js.map → paths-STQO4FYF.js.map} +1 -1
- package/dist/{plugin-store-QENDYZ63.js → plugin-store-2DTEIJTG.js} +10 -10
- package/dist/{plugin-store-QENDYZ63.js.map → plugin-store-2DTEIJTG.js.map} +1 -1
- package/dist/{project-4INCIIZI.js → project-44LM6SRV.js} +18 -17
- package/dist/{project-4INCIIZI.js.map → project-44LM6SRV.js.map} +1 -1
- package/dist/resolver/index.js +9 -9
- package/dist/runner/index.js +25 -25
- package/dist/sdk/asset-manager.js +13 -13
- package/dist/sdk/bridge.js +12 -12
- package/dist/sdk/core.js +8 -8
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +25 -25
- package/dist/sdk/resolver.js +9 -9
- package/dist/sdk/runner.js +25 -25
- package/dist/secrets/index.js +2 -2
- package/dist/{setup-RG4PJJUW.js → setup-4BV5ZWOZ.js} +24 -23
- package/dist/setup-4BV5ZWOZ.js.map +1 -0
- package/dist/skills-M7OU3WMP.js +26 -0
- package/dist/{skills-CL45F7AG.js.map → skills-M7OU3WMP.js.map} +1 -1
- package/dist/{source-LJOI5AXU.js → source-HTT6CXUP.js} +20 -20
- package/dist/{source-LJOI5AXU.js.map → source-HTT6CXUP.js.map} +1 -1
- package/dist/{source-manifest-publish-QEJML4VS.js → source-manifest-publish-CPXUX3CL.js} +22 -22
- package/dist/{source-manifest-publish-QEJML4VS.js.map → source-manifest-publish-CPXUX3CL.js.map} +1 -1
- package/dist/tui/index.js +25 -25
- package/dist/workspace-plugin/adapters/mcp.js +22 -22
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4YE7OYTB.js.map +0 -1
- package/dist/chunk-B4J4RGNY.js.map +0 -1
- package/dist/chunk-BIMEKYOE.js.map +0 -1
- package/dist/chunk-BZXR6SW5.js +0 -15
- package/dist/chunk-EOGNW74K.js.map +0 -1
- package/dist/chunk-KGGT6MUM.js.map +0 -1
- package/dist/chunk-L257BENF.js.map +0 -1
- package/dist/chunk-LZ5RH6LD.js.map +0 -1
- package/dist/chunk-OABIGSUY.js.map +0 -1
- package/dist/chunk-P2EM6FNQ.js.map +0 -1
- package/dist/chunk-R3QW7CA5.js.map +0 -1
- package/dist/chunk-TLKM4M47.js.map +0 -1
- package/dist/chunk-YRF5CYHR.js.map +0 -1
- package/dist/library-publish-RIP6NBYA.js.map +0 -1
- package/dist/open-registry-G5DI4RPU.js +0 -32
- package/dist/paths-L5XLUC3D.js +0 -22
- package/dist/setup-RG4PJJUW.js.map +0 -1
- package/dist/skills-CL45F7AG.js +0 -26
package/dist/tui/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { createAgentSession } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
import { createAgentSession } from '../chunk-VETH6MDG.js';
|
|
2
|
+
import '../chunk-DTV7HL5R.js';
|
|
3
|
+
import '../chunk-BHUHGLNS.js';
|
|
4
|
+
import '../chunk-XMQAV6T3.js';
|
|
5
5
|
import '../chunk-R6O6YWU7.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-GCYD4EGY.js';
|
|
7
|
+
import '../chunk-JELTQ4H7.js';
|
|
8
8
|
import '../chunk-4ZTPYIBE.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-OXE5A6H6.js';
|
|
10
10
|
import '../chunk-X5YPJV4N.js';
|
|
11
11
|
import '../chunk-O7SG5PC2.js';
|
|
12
12
|
import '../chunk-7QBNJTTQ.js';
|
|
@@ -15,45 +15,45 @@ import '../chunk-5LKOAX7I.js';
|
|
|
15
15
|
import '../chunk-32NA4TVC.js';
|
|
16
16
|
import '../chunk-W3UDISS2.js';
|
|
17
17
|
import '../chunk-HCYS7GFP.js';
|
|
18
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-SQBPE66C.js';
|
|
19
19
|
import '../chunk-4R6DROGN.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
20
|
+
import '../chunk-JAJG4G5E.js';
|
|
21
|
+
import '../chunk-JKWU6ULI.js';
|
|
22
22
|
import '../chunk-CT6NQSA4.js';
|
|
23
|
-
import '../chunk-
|
|
23
|
+
import '../chunk-ONWTPXVU.js';
|
|
24
24
|
import '../chunk-QMWMSZQ4.js';
|
|
25
|
-
import { loadConnectorDeclarations } from '../chunk-
|
|
26
|
-
import '../chunk-
|
|
27
|
-
import '../chunk-
|
|
25
|
+
import { loadConnectorDeclarations } from '../chunk-RD6GE4HU.js';
|
|
26
|
+
import '../chunk-IDUGP4V7.js';
|
|
27
|
+
import '../chunk-LAI7X6I2.js';
|
|
28
28
|
import '../chunk-EINLFFP6.js';
|
|
29
29
|
import '../chunk-LOO5CB5M.js';
|
|
30
30
|
import '../chunk-BNUZEYC3.js';
|
|
31
|
-
import '../chunk-
|
|
31
|
+
import '../chunk-LUBS5DXY.js';
|
|
32
32
|
import '../chunk-XBSQ4KMC.js';
|
|
33
33
|
import '../chunk-YROR332M.js';
|
|
34
|
-
import '../chunk-
|
|
34
|
+
import '../chunk-AE42DHSH.js';
|
|
35
35
|
import '../chunk-6E6PKKAD.js';
|
|
36
36
|
import '../chunk-IFGTRL2I.js';
|
|
37
|
-
import '../chunk-
|
|
37
|
+
import '../chunk-UAAAERXI.js';
|
|
38
38
|
import '../chunk-37FTLYFP.js';
|
|
39
39
|
import '../chunk-QZLWJETK.js';
|
|
40
40
|
import '../chunk-XUUYAS3Z.js';
|
|
41
41
|
import '../chunk-NFGRW3L7.js';
|
|
42
42
|
import '../chunk-QCI6D7E4.js';
|
|
43
43
|
import '../chunk-K2K7OF4P.js';
|
|
44
|
-
import { resolveSettings } from '../chunk-
|
|
44
|
+
import { resolveSettings } from '../chunk-QEXEHXX5.js';
|
|
45
45
|
import '../chunk-4GY63JU6.js';
|
|
46
|
-
import '../chunk-
|
|
47
|
-
import '../chunk-
|
|
46
|
+
import '../chunk-JCATNLY3.js';
|
|
47
|
+
import '../chunk-XGIS325V.js';
|
|
48
48
|
import { DEFAULT_DRIVER_ID } from '../chunk-5BEFNLOR.js';
|
|
49
49
|
import '../chunk-A2ULN3KX.js';
|
|
50
|
-
import { resolveAgentDir } from '../chunk-
|
|
51
|
-
import '../chunk-
|
|
50
|
+
import { resolveAgentDir } from '../chunk-6IGFSUTE.js';
|
|
51
|
+
import '../chunk-MFHKHXDE.js';
|
|
52
52
|
import '../chunk-TOSHZX4C.js';
|
|
53
|
-
import '../chunk-
|
|
53
|
+
import '../chunk-SR4RFKHM.js';
|
|
54
54
|
import '../chunk-RVRB27AN.js';
|
|
55
|
-
import '../chunk-
|
|
56
|
-
import '../chunk-
|
|
55
|
+
import '../chunk-LFMX2UEF.js';
|
|
56
|
+
import '../chunk-WX74MVNA.js';
|
|
57
57
|
import '../chunk-ICSCSM5D.js';
|
|
58
58
|
import '../chunk-JMKB7IB4.js';
|
|
59
59
|
import '../chunk-MJHSLODD.js';
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-BHUHGLNS.js';
|
|
2
|
+
import '../../chunk-XMQAV6T3.js';
|
|
3
3
|
import '../../chunk-R6O6YWU7.js';
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
4
|
+
import '../../chunk-GCYD4EGY.js';
|
|
5
|
+
import '../../chunk-JELTQ4H7.js';
|
|
6
6
|
import '../../chunk-4ZTPYIBE.js';
|
|
7
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-OXE5A6H6.js';
|
|
8
8
|
import '../../chunk-X5YPJV4N.js';
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-
|
|
11
|
-
import '../../chunk-
|
|
9
|
+
import '../../chunk-JAJG4G5E.js';
|
|
10
|
+
import '../../chunk-JKWU6ULI.js';
|
|
11
|
+
import '../../chunk-ONWTPXVU.js';
|
|
12
12
|
import '../../chunk-QMWMSZQ4.js';
|
|
13
|
-
import '../../chunk-
|
|
14
|
-
import '../../chunk-
|
|
15
|
-
import '../../chunk-
|
|
13
|
+
import '../../chunk-RD6GE4HU.js';
|
|
14
|
+
import '../../chunk-IDUGP4V7.js';
|
|
15
|
+
import '../../chunk-LAI7X6I2.js';
|
|
16
16
|
import '../../chunk-EINLFFP6.js';
|
|
17
17
|
import '../../chunk-LOO5CB5M.js';
|
|
18
18
|
import '../../chunk-BNUZEYC3.js';
|
|
19
|
-
import '../../chunk-
|
|
19
|
+
import '../../chunk-LUBS5DXY.js';
|
|
20
20
|
import '../../chunk-XBSQ4KMC.js';
|
|
21
21
|
import '../../chunk-YROR332M.js';
|
|
22
|
-
import '../../chunk-
|
|
22
|
+
import '../../chunk-AE42DHSH.js';
|
|
23
23
|
import '../../chunk-6E6PKKAD.js';
|
|
24
24
|
import '../../chunk-IFGTRL2I.js';
|
|
25
|
-
import '../../chunk-
|
|
25
|
+
import '../../chunk-UAAAERXI.js';
|
|
26
26
|
import '../../chunk-37FTLYFP.js';
|
|
27
27
|
import '../../chunk-QZLWJETK.js';
|
|
28
28
|
import '../../chunk-XUUYAS3Z.js';
|
|
29
29
|
import '../../chunk-NFGRW3L7.js';
|
|
30
30
|
import '../../chunk-QCI6D7E4.js';
|
|
31
31
|
import '../../chunk-K2K7OF4P.js';
|
|
32
|
-
import '../../chunk-
|
|
32
|
+
import '../../chunk-QEXEHXX5.js';
|
|
33
33
|
import '../../chunk-4GY63JU6.js';
|
|
34
|
-
import '../../chunk-
|
|
35
|
-
import '../../chunk-
|
|
34
|
+
import '../../chunk-JCATNLY3.js';
|
|
35
|
+
import '../../chunk-XGIS325V.js';
|
|
36
36
|
import '../../chunk-5BEFNLOR.js';
|
|
37
37
|
import '../../chunk-A2ULN3KX.js';
|
|
38
|
-
import '../../chunk-
|
|
39
|
-
import '../../chunk-
|
|
38
|
+
import '../../chunk-6IGFSUTE.js';
|
|
39
|
+
import '../../chunk-MFHKHXDE.js';
|
|
40
40
|
import '../../chunk-TOSHZX4C.js';
|
|
41
|
-
import '../../chunk-
|
|
41
|
+
import '../../chunk-SR4RFKHM.js';
|
|
42
42
|
import '../../chunk-RVRB27AN.js';
|
|
43
|
-
import '../../chunk-
|
|
44
|
-
import '../../chunk-
|
|
43
|
+
import '../../chunk-LFMX2UEF.js';
|
|
44
|
+
import '../../chunk-WX74MVNA.js';
|
|
45
45
|
import '../../chunk-ICSCSM5D.js';
|
|
46
46
|
import '../../chunk-JMKB7IB4.js';
|
|
47
47
|
import '../../chunk-MJHSLODD.js';
|
|
@@ -57,7 +57,7 @@ function buildOmpToolSet(plugin) {
|
|
|
57
57
|
description: "List all mounts declared in skaile.yaml with their mount status.",
|
|
58
58
|
parameters: {},
|
|
59
59
|
handler: async () => {
|
|
60
|
-
const { mountList } = await import('../../connectors-
|
|
60
|
+
const { mountList } = await import('../../connectors-OB3OAZTK.js');
|
|
61
61
|
return (await mountList(plugin.connectorManager)).content[0].text;
|
|
62
62
|
}
|
|
63
63
|
},
|
|
@@ -66,7 +66,7 @@ function buildOmpToolSet(plugin) {
|
|
|
66
66
|
description: "Sync a mount (pull latest from remote).",
|
|
67
67
|
parameters: { mount_id: { type: "string" } },
|
|
68
68
|
handler: async ({ mount_id }) => {
|
|
69
|
-
const { mountSync } = await import('../../connectors-
|
|
69
|
+
const { mountSync } = await import('../../connectors-OB3OAZTK.js');
|
|
70
70
|
return (await mountSync(plugin.connectorManager, mount_id)).content[0].text;
|
|
71
71
|
}
|
|
72
72
|
},
|
|
@@ -75,7 +75,7 @@ function buildOmpToolSet(plugin) {
|
|
|
75
75
|
description: "List all available flow definitions from ai-assets.",
|
|
76
76
|
parameters: {},
|
|
77
77
|
handler: async () => {
|
|
78
|
-
const { flowList } = await import('../../flows-
|
|
78
|
+
const { flowList } = await import('../../flows-DTADYIXH.js');
|
|
79
79
|
return (await flowList(plugin.projectDir)).content[0].text;
|
|
80
80
|
}
|
|
81
81
|
},
|
|
@@ -84,7 +84,7 @@ function buildOmpToolSet(plugin) {
|
|
|
84
84
|
description: "List past flow run sessions for this workspace.",
|
|
85
85
|
parameters: {},
|
|
86
86
|
handler: async () => {
|
|
87
|
-
const { flowListSessions } = await import('../../flows-
|
|
87
|
+
const { flowListSessions } = await import('../../flows-DTADYIXH.js');
|
|
88
88
|
return (await flowListSessions(plugin.projectDir)).content[0].text;
|
|
89
89
|
}
|
|
90
90
|
},
|
|
@@ -93,7 +93,7 @@ function buildOmpToolSet(plugin) {
|
|
|
93
93
|
description: "List all skills in the ai-assets catalog.",
|
|
94
94
|
parameters: {},
|
|
95
95
|
handler: async () => {
|
|
96
|
-
const { skillList } = await import('../../skills-
|
|
96
|
+
const { skillList } = await import('../../skills-M7OU3WMP.js');
|
|
97
97
|
return (await skillList(plugin.projectDir)).content[0].text;
|
|
98
98
|
}
|
|
99
99
|
},
|
|
@@ -102,7 +102,7 @@ function buildOmpToolSet(plugin) {
|
|
|
102
102
|
description: "Search skills by name, description, or keywords.",
|
|
103
103
|
parameters: { query: { type: "string" } },
|
|
104
104
|
handler: async ({ query }) => {
|
|
105
|
-
const { skillSearch } = await import('../../skills-
|
|
105
|
+
const { skillSearch } = await import('../../skills-M7OU3WMP.js');
|
|
106
106
|
return (await skillSearch(plugin.projectDir, query)).content[0].text;
|
|
107
107
|
}
|
|
108
108
|
},
|
|
@@ -111,7 +111,7 @@ function buildOmpToolSet(plugin) {
|
|
|
111
111
|
description: "Show the full SKILL.md content for a skill.",
|
|
112
112
|
parameters: { skill_id: { type: "string" } },
|
|
113
113
|
handler: async ({ skill_id }) => {
|
|
114
|
-
const { skillShow } = await import('../../skills-
|
|
114
|
+
const { skillShow } = await import('../../skills-M7OU3WMP.js');
|
|
115
115
|
return (await skillShow(plugin.projectDir, skill_id)).content[0].text;
|
|
116
116
|
}
|
|
117
117
|
},
|
|
@@ -120,7 +120,7 @@ function buildOmpToolSet(plugin) {
|
|
|
120
120
|
description: "List connectors declared in skaile.yaml as {connected, failed, notice?}. A host-managed mount in `connected` carries `health` {status: ok|stale|failed, errorClass, checkedAt}; if it is not ok, tell the user and do not write to it. `failed` holds connectors that did not connect this session, with the failure reason \u2014 their mount paths are dead directories, not synced workspaces.",
|
|
121
121
|
parameters: {},
|
|
122
122
|
handler: async () => {
|
|
123
|
-
const { connectorList } = await import('../../connectors-
|
|
123
|
+
const { connectorList } = await import('../../connectors-OB3OAZTK.js');
|
|
124
124
|
return (await connectorList(plugin.connectorManager)).content[0].text;
|
|
125
125
|
}
|
|
126
126
|
},
|
|
@@ -129,7 +129,7 @@ function buildOmpToolSet(plugin) {
|
|
|
129
129
|
description: "Read content from a connector by path.",
|
|
130
130
|
parameters: { connector_id: { type: "string" }, path: { type: "string" } },
|
|
131
131
|
handler: async ({ connector_id, path }) => {
|
|
132
|
-
const { connectorRead } = await import('../../connectors-
|
|
132
|
+
const { connectorRead } = await import('../../connectors-OB3OAZTK.js');
|
|
133
133
|
return (await connectorRead(plugin.connectorManager, connector_id, path)).content[0].text;
|
|
134
134
|
}
|
|
135
135
|
},
|
|
@@ -146,7 +146,7 @@ function buildOmpToolSet(plugin) {
|
|
|
146
146
|
operation,
|
|
147
147
|
args
|
|
148
148
|
}) => {
|
|
149
|
-
const { connectorExec } = await import('../../connectors-
|
|
149
|
+
const { connectorExec } = await import('../../connectors-OB3OAZTK.js');
|
|
150
150
|
return (await connectorExec(plugin.connectorManager, connector_id, operation, args ?? {})).content[0].text;
|
|
151
151
|
}
|
|
152
152
|
},
|
|
@@ -202,7 +202,7 @@ async function handleSlashCommand(plugin, group, args) {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
async function handleFlowCommand(plugin, sub, rest) {
|
|
205
|
-
const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-
|
|
205
|
+
const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-DTADYIXH.js');
|
|
206
206
|
if (!sub || sub === "list") return (await flowList(plugin.projectDir)).content[0].text;
|
|
207
207
|
if (sub === "show" && rest[0])
|
|
208
208
|
return (await flowShow(plugin.projectDir, rest[0])).content[0].text;
|
|
@@ -212,7 +212,7 @@ async function handleFlowCommand(plugin, sub, rest) {
|
|
|
212
212
|
return "Usage: /flow list | show <id> | sessions | session <runId>";
|
|
213
213
|
}
|
|
214
214
|
async function handleConnectorCommand(plugin, sub, rest) {
|
|
215
|
-
const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import('../../connectors-
|
|
215
|
+
const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import('../../connectors-OB3OAZTK.js');
|
|
216
216
|
if (!sub || sub === "list") return (await connectorList(plugin.connectorManager)).content[0].text;
|
|
217
217
|
if (sub === "read" && rest[0] && rest[1])
|
|
218
218
|
return (await connectorRead(plugin.connectorManager, rest[0], rest[1])).content[0].text;
|
|
@@ -231,7 +231,7 @@ async function handleConnectorCommand(plugin, sub, rest) {
|
|
|
231
231
|
return "Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>";
|
|
232
232
|
}
|
|
233
233
|
async function handleSkillCommand(plugin, sub, rest) {
|
|
234
|
-
const { skillList, skillShow, skillSearch } = await import('../../skills-
|
|
234
|
+
const { skillList, skillShow, skillSearch } = await import('../../skills-M7OU3WMP.js');
|
|
235
235
|
if (sub === "run" && rest[0])
|
|
236
236
|
return (await skillShow(plugin.projectDir, rest[0])).content[0].text;
|
|
237
237
|
if (!sub || sub === "list") return (await skillList(plugin.projectDir)).content[0].text;
|
|
@@ -242,7 +242,7 @@ async function handleSkillCommand(plugin, sub, rest) {
|
|
|
242
242
|
return "Usage: /skill list | show <id> | search <query> | run <id>";
|
|
243
243
|
}
|
|
244
244
|
async function handleMountsCommand(plugin, sub, rest) {
|
|
245
|
-
const { mountList, mountSync, mountStatus } = await import('../../connectors-
|
|
245
|
+
const { mountList, mountSync, mountStatus } = await import('../../connectors-OB3OAZTK.js');
|
|
246
246
|
if (!sub || sub === "list") return (await mountList(plugin.connectorManager)).content[0].text;
|
|
247
247
|
if (sub === "sync" && rest[0])
|
|
248
248
|
return (await mountSync(plugin.connectorManager, rest[0])).content[0].text;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-
|
|
1
|
+
export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-DTV7HL5R.js';
|
|
2
2
|
export { err, ok, okJson } from '../chunk-X5YPJV4N.js';
|
|
3
3
|
import '../chunk-5BEFNLOR.js';
|
|
4
4
|
import '../chunk-JMKB7IB4.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skaile/workspaces",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"description": "Skaile workspaces runtime — types, core, bridge, runner, store, connectors, and supporting layers as one publishable package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "bun@1.3.9",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../library/src/install/install-from-manifest.ts"],"names":[],"mappings":"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","file":"chunk-4YE7OYTB.js","sourcesContent":["/**\n * Pointer-only install path.\n *\n * Given an {@link InstallManifest} (the Pointer Triple the Catalog hands\n * clients), this:\n *\n * 1. fetches the asset bytes directly from the upstream repo at the pinned\n * commit (via an injectable fetcher, default {@link fetchAssetFilesFromGitHub});\n * 2. verifies EVERY per-file SHA256 against `manifest.files[].sha256`;\n * 3. verifies the composite SHA256 rollup over the sorted\n * `<path>:<sha256>\\n` lines against `manifest.sha256`;\n * 4. writes the verified bytes under `<libraryRoot>/@<publisher>/<name>/<version>`.\n *\n * Any hash mismatch is a hard failure — bytes are not written if per-file\n * verification fails, and the composite check is the second gate.\n *\n * @docLink packages/library/concepts#install\n */\n\nimport { createHash } from \"node:crypto\";\nimport { mkdir, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join, resolve, sep } from \"node:path\";\nimport type { InstallManifest } from \"@skaile/workspaces/types\";\n// Narrow module, not the `core` barrel: the barrel's chunks carry `import.meta`,\n// which breaks consumers that transpile this entry to CommonJS.\nimport { parseAssetRef } from \"../../../core/src/models.js\";\n\n/**\n * Validate a single manifest-supplied file path against path traversal.\n *\n * `manifest.files[].path` comes off the network — the attacker controls the\n * entire manifest (and therefore every hash in it), so hash verification can\n * NEVER mitigate a malicious *destination*. A path like\n * `../../../../home/user/.bashrc` or an absolute path would escape\n * `installPath` and yield an arbitrary file write. Every path is checked\n * BEFORE any fetch or write happens; the first bad path aborts the entire\n * install with a hard throw.\n *\n * A path is rejected if ANY of:\n * - it is empty;\n * - it is absolute (`path.isAbsolute`) or has a leading slash;\n * - it contains a `..` segment;\n * - `path.resolve(installPath, p)` is not `installPath` itself and does not\n * start with `installPath + path.sep` (escapes the install dir).\n *\n * @throws An error matching `/unsafe path in manifest/` on the first bad path.\n */\nexport function assertSafeManifestPath(installPath: string, p: string): void {\n const bad = (): never => {\n throw new Error(`unsafe path in manifest: ${p}`);\n };\n if (!p || p.length === 0) bad();\n if (isAbsolute(p) || p.startsWith(\"/\") || p.startsWith(\"\\\\\")) bad();\n const segments = p.split(/[/\\\\]/);\n if (segments.some((s) => s === \"..\")) bad();\n const resolved = resolve(installPath, p);\n if (resolved !== installPath && !resolved.startsWith(installPath + sep)) bad();\n}\n\n/**\n * Validate one component (publisher / name / version) of the attacker-controlled\n * `manifest.ref`.\n *\n * `installPath` is built by joining these components onto `libraryRoot`. A\n * component containing a path separator or a `..` / leading-dot segment would\n * let `installPath` itself escape `libraryRoot` — yielding an arbitrary file\n * write AND, via the pre-write `rm(installPath, { recursive })`, an arbitrary\n * recursive delete. The per-file `assertSafeManifestPath` guard cannot catch\n * this: it only validates each `f.path` *relative to* `installPath`, never\n * `installPath` itself. Components must be plain identifier-like strings.\n *\n * @throws An error matching `/unsafe ref/` on a bad component.\n */\nfunction assertSafeRefComponent(kind: string, value: string): void {\n // Reject empty, leading-dot (covers `.` and `..`), path separators, and\n // ASCII control characters (NUL et al.) — fails a malformed segment fast\n // with a domain-specific error rather than a raw EINVAL deeper in.\n const hasControlChar = [...value].some((c) => c.charCodeAt(0) < 0x20);\n if (!value || value.startsWith(\".\") || /[/\\\\]/.test(value) || hasControlChar) {\n throw new Error(`unsafe ref ${kind} component in manifest: '${value}'`);\n }\n}\n\n/**\n * Longest common **directory** prefix across manifest paths, compared by whole\n * slash-delimited segments (never raw-string — so `app/` and `app-data/` never\n * collide). Each path's basename is excluded, so the result is always a\n * directory prefix and every path keeps a non-empty remainder after stripping.\n *\n * Used by flat mode to reproduce the platform pointer-installer's asset-rooting:\n * the store persists repo-root-relative paths (e.g. `skaile-platform/mcpo/xls/MCP.md`)\n * but the runner scans `.skaile/assets/<kind>/<name>/` for immediate-child files,\n * so this prefix is stripped from the WRITE path while the fetch keeps the full\n * repo path. Returns `''` when there is no common directory (a no-op strip).\n */\nexport function longestCommonDirPrefix(paths: readonly string[]): string {\n if (paths.length === 0) return \"\";\n const dirSegments = paths.map((p) => p.split(\"/\").slice(0, -1));\n let common = dirSegments[0]!;\n for (let i = 1; i < dirSegments.length && common.length > 0; i++) {\n const segs = dirSegments[i]!;\n let n = 0;\n while (n < common.length && n < segs.length && common[n] === segs[n]) n++;\n common = common.slice(0, n);\n }\n return common.join(\"/\");\n}\n\n/**\n * Fetcher signature — fetches `{ path → Buffer }` for the requested paths at\n * a pinned upstream commit. {@link fetchAssetFilesFromGitHub} is the default\n * production implementation; tests inject a mock.\n */\nexport type AssetFetcher = (opts: {\n url: string;\n commitSha: string;\n paths: string[];\n}) => Promise<Record<string, Buffer>>;\n\n/**\n * Options for {@link installFromManifest}.\n */\nexport interface InstallOpts {\n /** The pointer-only install manifest from the Catalog. */\n manifest: InstallManifest;\n /** Filesystem root the asset is installed under (ref-derived mode). */\n libraryRoot: string;\n /**\n * Pluggable fetcher so tests can inject mock data. Defaults to\n * {@link fetchAssetFilesFromGitHub} in production.\n */\n fetcher?: AssetFetcher;\n /**\n * Flat-layout mode. When set, install-core reproduces the platform\n * pointer-installer's behavior: it ignores `libraryRoot`/ref-derivation, does\n * NOT parse `manifest.ref` and does NOT verify the composite sha256, strips\n * the longest-common-dir prefix from each path, per-file sha256-verifies, and\n * writes the stripped paths as immediate children of `targetDir` (what the\n * runner's `.skaile/assets/<kind>/<name>/` scan requires). `installPath` is\n * `targetDir`. Absent → unchanged ref-derived `@<pub>/name/version/<path>`\n * layout with composite verify.\n */\n targetDir?: string;\n}\n\n/**\n * Result of a successful {@link installFromManifest} call.\n */\nexport interface InstallResult {\n /** Absolute path the asset files were written to. */\n installPath: string;\n}\n\n/**\n * Fetch, verify, and write an asset's files per its {@link InstallManifest}.\n *\n * @throws An error matching `/hash mismatch/i` if any per-file SHA256 differs.\n * @throws An error matching `/composite hash mismatch/i` if the rollup differs.\n * @throws An error if the ref is malformed or the fetcher omits a file.\n */\nexport async function installFromManifest(opts: InstallOpts): Promise<InstallResult> {\n const { manifest, libraryRoot } = opts;\n const fetcher =\n opts.fetcher ?? (await import(\"./source-fetch-github.js\")).fetchAssetFilesFromGitHub;\n\n // Flat mode: reproduce the platform pointer-installer's asset-rooted layout.\n // No ref parse, no composite verify — the platform store may not satisfy a\n // ref-grammar or composite, and the runner only needs immediate-child files.\n if (opts.targetDir !== undefined) {\n return installFlat(manifest, opts.targetDir, fetcher);\n }\n\n // 1. Parse ref into install path: `skill:@x/git#1.0.0` → `<root>/@x/git/1.0.0`.\n // Done first so the C1 path-traversal guard can resolve against installPath\n // BEFORE any network fetch happens. The ref is attacker-controlled, so each\n // segment is further validated as a safe path component (H1) after parsing.\n // `parseAssetRef` is the single canonical grammar (`kind:@publisher/name#version`);\n // the legacy trailing-`@version` shape was removed in core and is rejected here.\n let parsed: ReturnType<typeof parseAssetRef>;\n try {\n parsed = parseAssetRef(manifest.ref);\n } catch (e) {\n throw new Error(`invalid ref: ${manifest.ref}: ${e instanceof Error ? e.message : String(e)}`);\n }\n const publisher = parsed.publisher;\n const name = parsed.name;\n const version = parsed.pin;\n if (!publisher) throw new Error(`invalid ref: ${manifest.ref} (missing publisher)`);\n if (!version) throw new Error(`invalid ref: ${manifest.ref} (missing version pin)`);\n assertSafeRefComponent(\"publisher\", publisher);\n assertSafeRefComponent(\"name\", name);\n assertSafeRefComponent(\"version\", version);\n const root = resolve(libraryRoot);\n const installPath = resolve(join(root, `@${publisher}`, name, version));\n // Defense in depth: even with the segment guards above, assert the built\n // installPath stays strictly inside libraryRoot before any write or `rm`.\n if (installPath !== root && !installPath.startsWith(root + sep)) {\n throw new Error(`unsafe install path: ref '${manifest.ref}' resolves outside the library root`);\n }\n\n // 2. [C1] Validate EVERY manifest path against traversal BEFORE fetching.\n // The attacker controls the manifest (and thus all hashes) — hashes verify\n // content, never destination. Reject the whole install on the first bad path.\n for (const f of manifest.files) {\n assertSafeManifestPath(installPath, f.path);\n }\n\n // 3. Fetch all files at the pinned commit.\n const paths = manifest.files.map((f) => f.path);\n const bytes = await fetcher({\n url: manifest.source.url,\n commitSha: manifest.source.commitSha,\n paths,\n });\n\n // 4. Verify per-file SHA256 — hard fail before writing anything. The path\n // key used to read from the fetcher result is re-guarded as defense in depth.\n for (const f of manifest.files) {\n assertSafeManifestPath(installPath, f.path);\n const buf = bytes[f.path];\n if (!buf) throw new Error(`fetcher returned no bytes for ${f.path}`);\n const actual = createHash(\"sha256\").update(buf).digest(\"hex\");\n if (actual !== f.sha256) {\n throw new Error(`hash mismatch for ${f.path}: expected ${f.sha256}, got ${actual}`);\n }\n }\n\n // 5. Verify composite SHA256 over the sorted `<path>:<sha256>\\n` lines.\n const sortedLines = manifest.files\n .slice()\n .sort((a, b) => a.path.localeCompare(b.path))\n .map((e) => `${e.path}:${e.sha256}\\n`)\n .join(\"\");\n const actualComposite = createHash(\"sha256\").update(sortedLines, \"utf-8\").digest(\"hex\");\n if (actualComposite !== manifest.sha256) {\n throw new Error(`composite hash mismatch: expected ${manifest.sha256}, got ${actualComposite}`);\n }\n\n // 6. [M1] Write all verified files. A failed install must leave NO partial\n // directory: any prior `installPath` is removed first (clean overwrite), and\n // a mid-loop write failure removes the partially-written tree before\n // rethrowing.\n await rm(installPath, { recursive: true, force: true });\n try {\n for (const f of manifest.files) {\n const target = join(installPath, f.path);\n await mkdir(dirname(target), { recursive: true });\n await writeFile(target, bytes[f.path]!);\n }\n } catch (e) {\n await rm(installPath, { recursive: true, force: true }).catch(() => {});\n throw e;\n }\n\n return { installPath };\n}\n\n/**\n * Flat-layout install — the platform pointer-installer's behavior, made canonical\n * in install-core. Validates every path, fetches with the FULL repo paths, per-file\n * sha256-verifies, then strips the longest-common-dir prefix and writes each file\n * as `join(targetDir, path.slice(assetRoot.length + 1))` — immediate children of\n * `targetDir`. No ref parse, no composite check.\n */\nasync function installFlat(\n manifest: InstallManifest,\n targetDir: string,\n fetcher: AssetFetcher,\n): Promise<InstallResult> {\n const target = resolve(targetDir);\n\n // Gate every path before any fetch — the attacker controls the whole manifest.\n for (const f of manifest.files) {\n assertSafeManifestPath(target, f.path);\n }\n\n // Fetch keys off the FULL repo path (matches the upstream tree).\n const paths = manifest.files.map((f) => f.path);\n const bytes = await fetcher({\n url: manifest.source.url,\n commitSha: manifest.source.commitSha,\n paths,\n });\n\n // Strip the asset-root dir prefix from the WRITE path only — the fetch above\n // still keyed off the full repo path. Stripping removes leading whole segments\n // (never the basename), so a non-empty remainder always survives.\n const assetRoot = longestCommonDirPrefix(paths);\n\n for (const f of manifest.files) {\n const buf = bytes[f.path];\n if (!buf) throw new Error(`fetcher returned no bytes for ${f.path}`);\n const actual = createHash(\"sha256\").update(buf).digest(\"hex\");\n if (actual !== f.sha256) {\n throw new Error(`hash mismatch for ${f.path}: expected ${f.sha256}, got ${actual}`);\n }\n const relPath = assetRoot ? f.path.slice(assetRoot.length + 1) : f.path;\n // Re-guard the post-strip destination — it is what we actually write.\n assertSafeManifestPath(target, relPath);\n const dest = join(target, relPath);\n await mkdir(dirname(dest), { recursive: true });\n await writeFile(dest, buf);\n }\n\n return { installPath: target };\n}\n"]}
|