@skaile/workspaces 1.15.1 → 2.0.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 +271 -0
- package/dist/{asset-feeds-MWEMXMZA.js → asset-feeds-7VQVISDI.js} +25 -24
- package/dist/asset-feeds-7VQVISDI.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +13 -1
- package/dist/asset-manager/index.js +10 -9
- package/dist/asset-manager/installer.js +7 -6
- package/dist/asset-manager/src/catalog-deployer.d.ts +70 -5
- package/dist/asset-manager/src/catalog-deployer.d.ts.map +1 -1
- package/dist/asset-manager/src/index.d.ts +22 -17
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +108 -56
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +3 -2
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +4 -3
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +3 -2
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +5 -4
- package/dist/bridge/drivers/goose.js +4 -3
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +3 -2
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +4 -3
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +5 -4
- package/dist/bridge/drivers/qwen.js.map +1 -1
- package/dist/bridge/index.js +4 -3
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/scrub-transcript.d.ts +21 -1
- package/dist/bridge/src/drivers/scrub-transcript.d.ts.map +1 -1
- package/dist/{chunk-344DEXZS.js → chunk-35ELAMQ5.js} +4 -4
- package/dist/{chunk-344DEXZS.js.map → chunk-35ELAMQ5.js.map} +1 -1
- package/dist/{chunk-73HV7RV3.js → chunk-6FJH63NN.js} +4 -4
- package/dist/{chunk-73HV7RV3.js.map → chunk-6FJH63NN.js.map} +1 -1
- package/dist/{chunk-ISA7R7PK.js → chunk-72EOJJOM.js} +82 -38
- package/dist/chunk-72EOJJOM.js.map +1 -0
- package/dist/chunk-7GOCNYUV.js +300 -0
- package/dist/chunk-7GOCNYUV.js.map +1 -0
- package/dist/{chunk-TFIFNDT2.js → chunk-A5OYCQGT.js} +4 -4
- package/dist/{chunk-TFIFNDT2.js.map → chunk-A5OYCQGT.js.map} +1 -1
- package/dist/{chunk-KY5NY7LB.js → chunk-BCTU4TN7.js} +11 -11
- package/dist/chunk-BCTU4TN7.js.map +1 -0
- package/dist/chunk-BEAIJRVF.js +159 -0
- package/dist/chunk-BEAIJRVF.js.map +1 -0
- package/dist/chunk-BK3WL3QK.js +10 -0
- package/dist/chunk-BK3WL3QK.js.map +1 -0
- package/dist/{chunk-BI2NKPA4.js → chunk-CA5CWLGN.js} +3 -2
- package/dist/chunk-CA5CWLGN.js.map +1 -0
- package/dist/{chunk-2TSSCHCQ.js → chunk-CKVIN4H3.js} +5 -5
- package/dist/{chunk-2TSSCHCQ.js.map → chunk-CKVIN4H3.js.map} +1 -1
- package/dist/{chunk-GXC3TYMQ.js → chunk-CZZRDYT4.js} +70 -32
- package/dist/chunk-CZZRDYT4.js.map +1 -0
- package/dist/{chunk-MNKUZUN2.js → chunk-DRXDEL3A.js} +3 -3
- package/dist/{chunk-MNKUZUN2.js.map → chunk-DRXDEL3A.js.map} +1 -1
- package/dist/{chunk-Z6NGK5YC.js → chunk-DY2AK577.js} +3 -3
- package/dist/{chunk-Z6NGK5YC.js.map → chunk-DY2AK577.js.map} +1 -1
- package/dist/chunk-DYMWJAL4.js +552 -0
- package/dist/chunk-DYMWJAL4.js.map +1 -0
- package/dist/{chunk-ACXLKNIM.js → chunk-E7HKNQTH.js} +10 -4
- package/dist/chunk-E7HKNQTH.js.map +1 -0
- package/dist/{chunk-O5VCUU6D.js → chunk-KUZEIKZH.js} +4 -4
- package/dist/{chunk-O5VCUU6D.js.map → chunk-KUZEIKZH.js.map} +1 -1
- package/dist/{chunk-RADBQ5XJ.js → chunk-KYLWY3A7.js} +10 -10
- package/dist/{chunk-RADBQ5XJ.js.map → chunk-KYLWY3A7.js.map} +1 -1
- package/dist/{chunk-2BQBWWFX.js → chunk-LBZP2IYG.js} +6 -6
- package/dist/chunk-LBZP2IYG.js.map +1 -0
- package/dist/{chunk-MZV6WCF3.js → chunk-MAN7AGQJ.js} +3 -3
- package/dist/{chunk-MZV6WCF3.js.map → chunk-MAN7AGQJ.js.map} +1 -1
- package/dist/{chunk-7J7LQP6T.js → chunk-MMD2KQ3A.js} +31 -19
- package/dist/chunk-MMD2KQ3A.js.map +1 -0
- package/dist/{chunk-NRXVS7E4.js → chunk-NYCJ7B27.js} +19 -11
- package/dist/chunk-NYCJ7B27.js.map +1 -0
- package/dist/{chunk-ACWCVB5Q.js → chunk-ORZW7MMO.js} +3 -3
- package/dist/{chunk-ACWCVB5Q.js.map → chunk-ORZW7MMO.js.map} +1 -1
- package/dist/{chunk-M5GJT3D7.js → chunk-OYX22NJL.js} +3 -3
- package/dist/{chunk-M5GJT3D7.js.map → chunk-OYX22NJL.js.map} +1 -1
- package/dist/{chunk-MJEUK6VJ.js → chunk-QIQTYN7F.js} +3 -3
- package/dist/{chunk-MJEUK6VJ.js.map → chunk-QIQTYN7F.js.map} +1 -1
- package/dist/{chunk-2IJFUAZB.js → chunk-RK3HU3H3.js} +123 -18
- package/dist/chunk-RK3HU3H3.js.map +1 -0
- package/dist/{chunk-5NZ56R63.js → chunk-ST3DLLNZ.js} +18 -6
- package/dist/chunk-ST3DLLNZ.js.map +1 -0
- package/dist/{chunk-MTM6C7IS.js → chunk-SVL4EZJT.js} +463 -251
- package/dist/chunk-SVL4EZJT.js.map +1 -0
- package/dist/{chunk-JB35MVBN.js → chunk-U5POE4BA.js} +4 -298
- package/dist/chunk-U5POE4BA.js.map +1 -0
- package/dist/{chunk-DB264AVQ.js → chunk-UAQVFATZ.js} +8 -8
- package/dist/{chunk-DB264AVQ.js.map → chunk-UAQVFATZ.js.map} +1 -1
- package/dist/{chunk-DPUZJI45.js → chunk-UVW3R6S7.js} +72 -37
- package/dist/chunk-UVW3R6S7.js.map +1 -0
- package/dist/{chunk-STQOPWPS.js → chunk-VCU4NPUS.js} +4 -4
- package/dist/{chunk-STQOPWPS.js.map → chunk-VCU4NPUS.js.map} +1 -1
- package/dist/{chunk-MB6563TL.js → chunk-WCWXDW22.js} +3 -3
- package/dist/{chunk-MB6563TL.js.map → chunk-WCWXDW22.js.map} +1 -1
- package/dist/{chunk-EKGB4ZWR.js → chunk-WZPADAE7.js} +255 -136
- package/dist/chunk-WZPADAE7.js.map +1 -0
- package/dist/{chunk-SRWIVMJI.js → chunk-Y3JVBJ3Y.js} +5 -5
- package/dist/{chunk-SRWIVMJI.js.map → chunk-Y3JVBJ3Y.js.map} +1 -1
- package/dist/{chunk-3EBFDMZC.js → chunk-Y662DNQQ.js} +14 -3
- package/dist/chunk-Y662DNQQ.js.map +1 -0
- package/dist/cli/index.js +348 -128
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts +2 -2
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +51 -2
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/connector.d.ts +1 -1
- package/dist/cli/src/commands/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/logs.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts +30 -3
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +5 -2
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/connectors/config.js +7 -6
- package/dist/connectors/index.js +9 -8
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/watcher.d.ts.map +1 -1
- package/dist/connectors/src/worktree.d.ts +20 -2
- package/dist/connectors/src/worktree.d.ts.map +1 -1
- package/dist/core/index.js +6 -5
- package/dist/core/logging.js +2 -1
- package/dist/core/manifest.js +2 -1
- package/dist/core/runtime-assets.js +4 -3
- package/dist/core/src/fs-deadline.d.ts +84 -0
- package/dist/core/src/fs-deadline.d.ts.map +1 -0
- package/dist/core/src/index.d.ts +4 -3
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +142 -18
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +2 -2
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/subprocess.d.ts +33 -1
- package/dist/core/src/subprocess.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +1 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +9 -2
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +3 -2
- package/dist/deploy/index.js +12 -7
- package/dist/deploy/index.js.map +1 -1
- package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
- package/dist/discovery/index.js +3 -2
- package/dist/{ensure-sources-QGL44IRI.js → ensure-sources-JLVHHZI2.js} +13 -12
- package/dist/ensure-sources-JLVHHZI2.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +9 -8
- package/dist/factory-assets/connectors/deploy/CONNECTOR.md +19 -0
- package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/deploy.js +9 -8
- package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/devserver.js +9 -8
- package/dist/factory-assets/connectors/flow/CONNECTOR.md +3 -1
- package/dist/factory-assets/connectors/flow/adapter.d.ts +2 -1
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +9 -8
- package/dist/factory-assets/connectors/flow/engine.js +6 -5
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +9 -2
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/prompt-fragments.js +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +11 -10
- package/dist/factory-assets/connectors/flow.js +9 -8
- package/dist/factory-assets/connectors/git/driver.d.ts +12 -1
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +9 -8
- package/dist/factory-assets/connectors/gmail.js +9 -8
- package/dist/factory-assets/connectors/googledrive.js +9 -8
- package/dist/factory-assets/connectors/local/driver.d.ts +25 -1
- package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/local.js +9 -8
- package/dist/factory-assets/connectors/mattermost.js +9 -8
- package/dist/factory-assets/connectors/memory.js +9 -8
- package/dist/factory-assets/connectors/minio.js +9 -8
- package/dist/factory-assets/connectors/postgres.js +9 -8
- package/dist/factory-assets/connectors/s3/driver.d.ts +15 -0
- package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/s3.js +9 -8
- package/dist/factory-assets/connectors/sharepoint.js +9 -8
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts +8 -1
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/sqlite.js +9 -8
- package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/static-server.js +9 -8
- package/dist/factory-assets/connectors/tunnel.js +9 -8
- package/dist/factory-assets/connectors/webdav.js +9 -8
- package/dist/factory-assets/connectors/xstate/adapter.d.ts +6 -0
- package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/xstate-store.js +9 -8
- package/dist/factory-assets/connectors/xstate.js +9 -8
- package/dist/flows-LV5WYJ2I.js +20 -0
- package/dist/{flows-FHWBCLXF.js.map → flows-LV5WYJ2I.js.map} +1 -1
- package/dist/{helpers-FMWODXTW.js → helpers-PJ3CPUUL.js} +13 -12
- package/dist/{helpers-FMWODXTW.js.map → helpers-PJ3CPUUL.js.map} +1 -1
- package/dist/library/index.js +8 -7
- package/dist/library/install.js +6 -5
- package/dist/{library-publish-7YDHQGBN.js → library-publish-HVZRCE3C.js} +16 -15
- package/dist/library-publish-HVZRCE3C.js.map +1 -0
- package/dist/{open-library-O6T3ELPK.js → open-library-RMI2FTQ4.js} +14 -13
- package/dist/{open-library-O6T3ELPK.js.map → open-library-RMI2FTQ4.js.map} +1 -1
- package/dist/{paths-5QJJBAND.js → paths-JSVTQAVW.js} +11 -10
- package/dist/{paths-5QJJBAND.js.map → paths-JSVTQAVW.js.map} +1 -1
- package/dist/plugin-registry/src/deploy-helpers.d.ts +1 -1
- package/dist/{plugin-store-ZBJZ7F6D.js → plugin-store-7TVJB2TS.js} +8 -7
- package/dist/plugin-store-7TVJB2TS.js.map +1 -0
- package/dist/{project-HAMLHLD5.js → project-P636MSYT.js} +14 -13
- package/dist/{project-HAMLHLD5.js.map → project-P636MSYT.js.map} +1 -1
- package/dist/resolver/index.js +13 -1
- package/dist/resolver/src/types.d.ts +7 -0
- package/dist/resolver/src/types.d.ts.map +1 -1
- package/dist/resolver/src/validator.d.ts +8 -1
- package/dist/resolver/src/validator.d.ts.map +1 -1
- package/dist/runner/index.js +14 -13
- package/dist/runner/src/external-mcp.d.ts +1 -1
- package/dist/runner/src/external-mcp.d.ts.map +1 -1
- package/dist/runner/src/mcp-prompt.d.ts +7 -3
- package/dist/runner/src/mcp-prompt.d.ts.map +1 -1
- package/dist/runner/src/mcp-runtime-handlers.d.ts +12 -0
- package/dist/runner/src/mcp-runtime-handlers.d.ts.map +1 -1
- package/dist/runner/src/mixin-resolver.d.ts.map +1 -1
- package/dist/runner/src/recipe-resolver.d.ts +20 -6
- package/dist/runner/src/recipe-resolver.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts +43 -0
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/resources.d.ts +12 -5
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +5 -5
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +9 -0
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +5 -0
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
- package/dist/runner/src/workspace-migration.d.ts +37 -3
- package/dist/runner/src/workspace-migration.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +10 -9
- package/dist/sdk/bridge.js +4 -3
- package/dist/sdk/core.js +6 -5
- package/dist/sdk/flow.js +6 -5
- package/dist/sdk/index.js +14 -13
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +13 -1
- package/dist/sdk/runner.js +14 -13
- package/dist/sdk/session.js +1 -1
- package/dist/sdk/store.js +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/src/dispatcher.d.ts.map +1 -1
- package/dist/{setup-WJPNUE32.js → setup-OYW3W3XK.js} +10 -9
- package/dist/setup-OYW3W3XK.js.map +1 -0
- package/dist/skills-QY5PHBD3.js +20 -0
- package/dist/{skills-BMI6H7HI.js.map → skills-QY5PHBD3.js.map} +1 -1
- package/dist/{source-ITDH4367.js → source-63CHWDC2.js} +15 -14
- package/dist/{source-ITDH4367.js.map → source-63CHWDC2.js.map} +1 -1
- package/dist/{source-manifest-publish-RMHC7R6M.js → source-manifest-publish-DLASGDK5.js} +17 -16
- package/dist/source-manifest-publish-DLASGDK5.js.map +1 -0
- package/dist/store/index.js +1 -1
- package/dist/store/src/store.d.ts +9 -0
- package/dist/store/src/store.d.ts.map +1 -1
- package/dist/tui/index.js +14 -13
- package/dist/tui/index.js.map +1 -1
- package/dist/validator-RN64BKFW.js +5 -0
- package/dist/{validator-VF5M764T.js.map → validator-RN64BKFW.js.map} +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +18 -5
- package/dist/workspace-plugin/adapters/mcp.js.map +1 -1
- package/dist/workspace-plugin/adapters/omp.js +10 -10
- package/dist/workspace-plugin/index.js +3 -2
- package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
- package/dist/workspace-plugin/src/utils/ai-assets.d.ts +11 -6
- package/dist/workspace-plugin/src/utils/ai-assets.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/asset-feeds-MWEMXMZA.js.map +0 -1
- package/dist/chunk-2BQBWWFX.js.map +0 -1
- package/dist/chunk-2IJFUAZB.js.map +0 -1
- package/dist/chunk-3EBFDMZC.js.map +0 -1
- package/dist/chunk-5NZ56R63.js.map +0 -1
- package/dist/chunk-7J7LQP6T.js.map +0 -1
- package/dist/chunk-ACXLKNIM.js.map +0 -1
- package/dist/chunk-BI2NKPA4.js.map +0 -1
- package/dist/chunk-BQCGFPHW.js +0 -345
- package/dist/chunk-BQCGFPHW.js.map +0 -1
- package/dist/chunk-DPUZJI45.js.map +0 -1
- package/dist/chunk-EKGB4ZWR.js.map +0 -1
- package/dist/chunk-GXC3TYMQ.js.map +0 -1
- package/dist/chunk-ISA7R7PK.js.map +0 -1
- package/dist/chunk-JB35MVBN.js.map +0 -1
- package/dist/chunk-KY5NY7LB.js.map +0 -1
- package/dist/chunk-LV2HPH3C.js +0 -73
- package/dist/chunk-LV2HPH3C.js.map +0 -1
- package/dist/chunk-MTM6C7IS.js.map +0 -1
- package/dist/chunk-NRXVS7E4.js.map +0 -1
- package/dist/chunk-XCBG2KDC.js +0 -23
- package/dist/chunk-XCBG2KDC.js.map +0 -1
- package/dist/ensure-sources-QGL44IRI.js.map +0 -1
- package/dist/flows-FHWBCLXF.js +0 -7
- package/dist/library-publish-7YDHQGBN.js.map +0 -1
- package/dist/plugin-store-ZBJZ7F6D.js.map +0 -1
- package/dist/setup-WJPNUE32.js.map +0 -1
- package/dist/skills-BMI6H7HI.js +0 -7
- package/dist/source-manifest-publish-RMHC7R6M.js.map +0 -1
- package/dist/validator-VF5M764T.js +0 -5
|
@@ -83,6 +83,64 @@ export interface DeployResult {
|
|
|
83
83
|
/** Error messages for entries that could not be deployed. */
|
|
84
84
|
errors: string[];
|
|
85
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Env override for the workspace-mount path(s), comma-separated.
|
|
88
|
+
*
|
|
89
|
+
* Set it when the runner binds the mount somewhere other than
|
|
90
|
+
* {@link DEFAULT_WORKSPACE_MOUNT_DIR}; set it to the empty string to disable
|
|
91
|
+
* the guard entirely (single-machine dev, where nothing is a network mount).
|
|
92
|
+
*/
|
|
93
|
+
export declare const WORKSPACE_MOUNT_ENV_VAR = "SKAILE_WORKSPACE_MOUNT_DIR";
|
|
94
|
+
/**
|
|
95
|
+
* Resolve the directories treated as network mounts.
|
|
96
|
+
*
|
|
97
|
+
* Read per call rather than cached: the runner mutates `process.env` while
|
|
98
|
+
* wiring a session, so a module-load snapshot would pin a pre-configuration
|
|
99
|
+
* value.
|
|
100
|
+
*
|
|
101
|
+
* @returns Absolute mount paths; empty when the guard is disabled.
|
|
102
|
+
* @docLink packages/asset-manager/concepts#catalog-deployer
|
|
103
|
+
*/
|
|
104
|
+
export declare function workspaceMountDirs(): string[];
|
|
105
|
+
/**
|
|
106
|
+
* Is `candidate` at, or inside, one of the known workspace mount paths?
|
|
107
|
+
*
|
|
108
|
+
* Pure path arithmetic — deliberately no filesystem access, because the whole
|
|
109
|
+
* point is to decide *before* touching a path that might be unresponsive.
|
|
110
|
+
*
|
|
111
|
+
* @param candidate - Path to test.
|
|
112
|
+
* @param mountDirs - Mount roots; defaults to {@link workspaceMountDirs}.
|
|
113
|
+
* @docLink packages/asset-manager/concepts#catalog-deployer
|
|
114
|
+
*/
|
|
115
|
+
export declare function isUnderWorkspaceMount(candidate: string, mountDirs?: string[]): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Walk upward from `startDir` looking for an `ai-assets/` directory.
|
|
118
|
+
*
|
|
119
|
+
* Two properties matter beyond "find the folder":
|
|
120
|
+
*
|
|
121
|
+
* 1. **Never synchronous.** The walk probes up to six directories; any one of
|
|
122
|
+
* them can be on a FUSE mount, and the former `existsSync` chain blocked the
|
|
123
|
+
* event loop on the first unresponsive probe. Each probe is now awaited and
|
|
124
|
+
* deadline-bounded, so a wedged mount costs one skipped candidate.
|
|
125
|
+
* 2. **Never resolves onto a mount.** A hit under the workspace mount is
|
|
126
|
+
* skipped with a warning rather than returned: accepting it would wire every
|
|
127
|
+
* later skill deploy — a recursive copy — to a remote filesystem. The walk
|
|
128
|
+
* continues upward, so a legitimate `ai-assets/` in a parent still wins.
|
|
129
|
+
*
|
|
130
|
+
* Only a **directory** counts. An `ai-assets` file would otherwise be returned
|
|
131
|
+
* as a root and every later `join(root, source_path)` would fail with ENOTDIR.
|
|
132
|
+
*
|
|
133
|
+
* @param startDir - Directory to start from (typically the project dir).
|
|
134
|
+
* @param opts - `levels` caps the upward walk; `mountDirs` overrides the mount
|
|
135
|
+
* roots (defaults to {@link workspaceMountDirs}).
|
|
136
|
+
* @returns Absolute path to the `ai-assets/` directory, or `null` if none is
|
|
137
|
+
* reachable within `levels`.
|
|
138
|
+
* @docLink packages/asset-manager/concepts#catalog-deployer
|
|
139
|
+
*/
|
|
140
|
+
export declare function findAiAssetsRoot(startDir: string, opts?: {
|
|
141
|
+
levels?: number;
|
|
142
|
+
mountDirs?: string[];
|
|
143
|
+
}): Promise<string | null>;
|
|
86
144
|
/**
|
|
87
145
|
* Deploy a single catalog entry to the session skills directory.
|
|
88
146
|
*
|
|
@@ -92,24 +150,31 @@ export interface DeployResult {
|
|
|
92
150
|
*
|
|
93
151
|
* Only `skill` entries are deployable; other kinds return an error.
|
|
94
152
|
*
|
|
153
|
+
* **Async by necessity.** This runs from the `session_init` command handler
|
|
154
|
+
* with the WebSocket live, and both `assetsRoot` and `skillsDir` can sit on a
|
|
155
|
+
* network mount. The former `cpSync`/`rmSync` pair parked the event loop for
|
|
156
|
+
* the whole copy; every call is now awaited and deadline-bounded, so an
|
|
157
|
+
* unresponsive mount fails one deployment instead of the session.
|
|
158
|
+
*
|
|
95
159
|
* @param entry - Compiled catalog entry to deploy.
|
|
96
160
|
* @param options - Deployment target and optional context.
|
|
97
161
|
* @returns `{ success: true }` on success, `{ success: false, error }` on failure.
|
|
98
162
|
* @docLink packages/asset-manager/concepts#catalog-deployer
|
|
99
163
|
*/
|
|
100
|
-
export declare function deployCatalogEntry(entry: CatalogEntryCompiled, options: DeployFromCatalogOptions): {
|
|
164
|
+
export declare function deployCatalogEntry(entry: CatalogEntryCompiled, options: DeployFromCatalogOptions): Promise<{
|
|
101
165
|
success: boolean;
|
|
102
166
|
error?: string;
|
|
103
|
-
}
|
|
167
|
+
}>;
|
|
104
168
|
/**
|
|
105
169
|
* Remove a deployed skill directory from the session skills directory.
|
|
106
170
|
*
|
|
107
171
|
* @param name - Skill name (directory basename under `skillsDir`).
|
|
108
172
|
* @param skillsDir - Absolute path to the session skills directory.
|
|
109
|
-
* @returns `true` if the skill was found and removed; `false` if it was not
|
|
173
|
+
* @returns `true` if the skill was found and removed; `false` if it was not
|
|
174
|
+
* deployed, or if the directory could not be reached within the deadline.
|
|
110
175
|
* @docLink packages/asset-manager/concepts#catalog-deployer
|
|
111
176
|
*/
|
|
112
|
-
export declare function undeployCatalogEntry(name: string, skillsDir: string): boolean
|
|
177
|
+
export declare function undeployCatalogEntry(name: string, skillsDir: string): Promise<boolean>;
|
|
113
178
|
/**
|
|
114
179
|
* Deploy multiple catalog entries in a single batch operation.
|
|
115
180
|
*
|
|
@@ -122,7 +187,7 @@ export declare function undeployCatalogEntry(name: string, skillsDir: string): b
|
|
|
122
187
|
* @returns Aggregated {@link DeployResult} with deployed, skipped, and error lists.
|
|
123
188
|
* @docLink packages/asset-manager/concepts#catalog-deployer
|
|
124
189
|
*/
|
|
125
|
-
export declare function deployAll(entries: CatalogEntryCompiled[], options: DeployFromCatalogOptions): DeployResult
|
|
190
|
+
export declare function deployAll(entries: CatalogEntryCompiled[], options: DeployFromCatalogOptions): Promise<DeployResult>;
|
|
126
191
|
/**
|
|
127
192
|
* Resolve a flow's skill dependencies from the full catalog entry list.
|
|
128
193
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-deployer.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/catalog-deployer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"catalog-deployer.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/catalog-deployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,10 +20,12 @@ import type { HistoryEntry } from "./history.js";
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function normalizeRepoUrl(url: string): string;
|
|
22
22
|
/**
|
|
23
|
-
* Asset kinds that are never
|
|
24
|
-
* resolve to their members, mcp-servers are wired at session startup,
|
|
25
|
-
* mixin kinds are resolved at session creation.
|
|
26
|
-
*
|
|
23
|
+
* Asset kinds that are never **copied into a driver target dir** as files —
|
|
24
|
+
* bundles resolve to their members, mcp-servers are wired at session startup,
|
|
25
|
+
* and the mixin kinds are resolved at session creation. Mirrors the skip set in
|
|
26
|
+
* `deployAll`, and says nothing about whether store bytes are fetched:
|
|
27
|
+
* `mcp-server` IS staged into the store cache (see `stageStoreAssets`), because
|
|
28
|
+
* its wiring reads a real `MCP.md` off disk.
|
|
27
29
|
*/
|
|
28
30
|
export declare const NON_DEPLOYABLE_KINDS: Set<string>;
|
|
29
31
|
/**
|
|
@@ -462,9 +464,10 @@ export declare class AssetManager {
|
|
|
462
464
|
*/
|
|
463
465
|
private buildCatalogEntries;
|
|
464
466
|
/**
|
|
465
|
-
* Fetch + SHA-verify the bytes of every store-resolved
|
|
466
|
-
* into `.skaile/cache/store/`, reusing the same verified-fetch
|
|
467
|
-
* pointer-only `library.install` uses (`installFromManifest` flat
|
|
467
|
+
* Fetch + SHA-verify the bytes of every store-resolved candidate that needs
|
|
468
|
+
* bytes on disk into `.skaile/cache/store/`, reusing the same verified-fetch
|
|
469
|
+
* path the pointer-only `library.install` uses (`installFromManifest` flat
|
|
470
|
+
* mode). That is the deployable kinds plus `mcp-server` — see the skip guard.
|
|
468
471
|
*
|
|
469
472
|
* @returns Map of candidate key → staged primary-manifest path.
|
|
470
473
|
*/
|
|
@@ -665,7 +668,7 @@ export declare class AssetManager {
|
|
|
665
668
|
* Omit to return all kinds.
|
|
666
669
|
* @returns Array of matching {@link CatalogEntry} objects from all accessible repositories.
|
|
667
670
|
*/
|
|
668
|
-
search(query?: string, kind?: string): CatalogEntry[]
|
|
671
|
+
search(query?: string, kind?: string): Promise<CatalogEntry[]>;
|
|
669
672
|
/**
|
|
670
673
|
* On-disk root + config slug for every declared (and the implicit factory)
|
|
671
674
|
* source that has a local clone. Companion to {@link search}: callers that
|
|
@@ -687,7 +690,7 @@ export declare class AssetManager {
|
|
|
687
690
|
* @param ref - Asset ref in `kind:name`, `kind:@publisher/name`, or `repo/kind:name` form.
|
|
688
691
|
* @returns The matching {@link CatalogEntry}, or `null` when not found.
|
|
689
692
|
*/
|
|
690
|
-
info(ref: string): CatalogEntry | null
|
|
693
|
+
info(ref: string): Promise<CatalogEntry | null>;
|
|
691
694
|
/**
|
|
692
695
|
* List all assets currently deployed in the workspace (or global cache).
|
|
693
696
|
*
|
|
@@ -704,8 +707,10 @@ export declare class AssetManager {
|
|
|
704
707
|
*
|
|
705
708
|
* - `declared` — in `skaile.yaml`, not yet resolved into the lock.
|
|
706
709
|
* - `installed` — declared + locked, and (for deployable kinds) materialized on
|
|
707
|
-
* disk.
|
|
708
|
-
*
|
|
710
|
+
* disk. An `mcp-server` is instead checked against the declarations the runner
|
|
711
|
+
* would actually wire (store-staged or materialized `MCP.md`); the remaining
|
|
712
|
+
* non-deployable kinds ({@link NON_DEPLOYABLE_KINDS}) count as installed once
|
|
713
|
+
* locked — they are resolved at session start with no on-disk footprint here.
|
|
709
714
|
* - `drift` — declared + locked but the deployed files are missing on disk.
|
|
710
715
|
* - `invalid` — the `dependencies:` entry isn't a parseable canonical ref. Only
|
|
711
716
|
* surfaced in the unfiltered listing (a `kind` filter can't classify it).
|
|
@@ -718,7 +723,7 @@ export declare class AssetManager {
|
|
|
718
723
|
* @throws {MissingManifestError} when the project has no `skaile.yaml`.
|
|
719
724
|
* @throws {Error} with a `migrate-skaile-manifest` hint on legacy `repositories:` / `ai_resources:` keys.
|
|
720
725
|
*/
|
|
721
|
-
listDeclared(kind?: string): DeclaredAsset[]
|
|
726
|
+
listDeclared(kind?: string): Promise<DeclaredAsset[]>;
|
|
722
727
|
/**
|
|
723
728
|
* Per-backend reconciliation of the **global** declared deps
|
|
724
729
|
* (`~/.skaile/skaile.yaml`) against each global backend's deploy dir. The
|
|
@@ -787,7 +792,7 @@ export declare class AssetManager {
|
|
|
787
792
|
* @returns Unified diff string, or `null` when there are no differences or the
|
|
788
793
|
* asset is not deployed/resolvable.
|
|
789
794
|
*/
|
|
790
|
-
diff(ref: string): string | null
|
|
795
|
+
diff(ref: string): Promise<string | null>;
|
|
791
796
|
/**
|
|
792
797
|
* Resolve all declared dependencies and write (or overwrite) `skaile.lock.yaml`.
|
|
793
798
|
*
|
|
@@ -807,7 +812,7 @@ export declare class AssetManager {
|
|
|
807
812
|
* @returns Absolute path to the patch working directory.
|
|
808
813
|
* @throws When the asset cannot be found in the catalog.
|
|
809
814
|
*/
|
|
810
|
-
patch(ref: string): string
|
|
815
|
+
patch(ref: string): Promise<string>;
|
|
811
816
|
/**
|
|
812
817
|
* Generate a `.patch` file from changes made in the patch working directory.
|
|
813
818
|
*
|
|
@@ -818,7 +823,7 @@ export declare class AssetManager {
|
|
|
818
823
|
* @returns Absolute path to the generated `.patch` file.
|
|
819
824
|
* @throws When the patch working directory does not exist or no differences are found.
|
|
820
825
|
*/
|
|
821
|
-
patchCommit(ref: string): string
|
|
826
|
+
patchCommit(ref: string): Promise<string>;
|
|
822
827
|
/**
|
|
823
828
|
* Apply the committed patch file to the repository clone and open a contribution branch.
|
|
824
829
|
*
|
|
@@ -828,7 +833,7 @@ export declare class AssetManager {
|
|
|
828
833
|
* @param ref - Asset ref in `kind:name` form.
|
|
829
834
|
* @throws When the asset is not found, has no repository, or the patch file is missing.
|
|
830
835
|
*/
|
|
831
|
-
patchSubmit(ref: string): void
|
|
836
|
+
patchSubmit(ref: string): Promise<void>;
|
|
832
837
|
/**
|
|
833
838
|
* Delete the patch working directory and patch file for an asset.
|
|
834
839
|
*
|
|
@@ -844,7 +849,7 @@ export declare class AssetManager {
|
|
|
844
849
|
*
|
|
845
850
|
* @returns Array of {@link DepIssue} objects. An empty array means the workspace is healthy.
|
|
846
851
|
*/
|
|
847
|
-
doctor(): DepIssue[]
|
|
852
|
+
doctor(): Promise<DepIssue[]>;
|
|
848
853
|
/**
|
|
849
854
|
* Create a minimal asset scaffold directory (delegates to {@link createScaffold}).
|
|
850
855
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,OAAO,KAAK,EAEV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,QAAQ,EAQR,YAAY,EACb,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,29 @@ import { SUPPORTED_CLOUDS, buildClaudeCloudEnv } from '../../chunk-ISQWMBKD.js';
|
|
|
2
2
|
import { dispatchCapability } from '../../chunk-RRVQAE5D.js';
|
|
3
3
|
import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
|
|
4
4
|
import { AuthError, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable, AccountUnavailableError } from '../../chunk-GAH4YRCI.js';
|
|
5
|
-
import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-
|
|
5
|
+
import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-ORZW7MMO.js';
|
|
6
6
|
import '../../chunk-6E6PKKAD.js';
|
|
7
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-ST3DLLNZ.js';
|
|
8
|
+
import '../../chunk-K5GBV4SA.js';
|
|
9
|
+
import '../../chunk-ZAP2BDHG.js';
|
|
10
|
+
import '../../chunk-MMD2KQ3A.js';
|
|
11
|
+
import '../../chunk-72EOJJOM.js';
|
|
12
|
+
import '../../chunk-P4VHQA4N.js';
|
|
13
|
+
import { fsDeadlineMs, withFsDeadline, tryWithFsDeadline } from '../../chunk-DYMWJAL4.js';
|
|
14
|
+
import '../../chunk-GEEW6SY2.js';
|
|
15
|
+
import '../../chunk-F3HNW354.js';
|
|
16
|
+
import '../../chunk-MENCWIHW.js';
|
|
17
|
+
import '../../chunk-U5POE4BA.js';
|
|
18
|
+
import '../../chunk-7GOCNYUV.js';
|
|
8
19
|
import '../../chunk-NSBPE2FW.js';
|
|
9
20
|
import { spawnSync } from 'child_process';
|
|
10
|
-
import { existsSync,
|
|
21
|
+
import { existsSync, createReadStream, createWriteStream } from 'fs';
|
|
11
22
|
import { createRequire } from 'module';
|
|
12
23
|
import { homedir } from 'os';
|
|
13
24
|
import { join } from 'path';
|
|
14
25
|
import * as zNS from 'zod';
|
|
26
|
+
import { readdir, stat, rename, unlink } from 'fs/promises';
|
|
27
|
+
import { pipeline } from 'stream/promises';
|
|
15
28
|
|
|
16
29
|
// bridge/src/drivers/sanitize-assistant-text.ts
|
|
17
30
|
var NS = "(?:[a-z][a-z0-9]*:)?";
|
|
@@ -168,27 +181,65 @@ function scrubBlock(block, counters) {
|
|
|
168
181
|
}
|
|
169
182
|
return block;
|
|
170
183
|
}
|
|
171
|
-
function locateTranscript(configDir, sessionId) {
|
|
184
|
+
async function locateTranscript(configDir, sessionId, timeoutMs) {
|
|
172
185
|
const projectsDir = join(configDir, "projects");
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return null;
|
|
181
|
-
}
|
|
186
|
+
const entries = await tryWithFsDeadline(
|
|
187
|
+
`readdir ${projectsDir}`,
|
|
188
|
+
() => readdir(projectsDir),
|
|
189
|
+
null,
|
|
190
|
+
timeoutMs
|
|
191
|
+
);
|
|
192
|
+
if (!entries) return null;
|
|
182
193
|
for (const entry of entries) {
|
|
183
194
|
const candidate = join(projectsDir, entry, `${sessionId}.jsonl`);
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
195
|
+
const found = await tryWithFsDeadline(
|
|
196
|
+
`stat ${candidate}`,
|
|
197
|
+
async () => (await stat(candidate)).isFile(),
|
|
198
|
+
false,
|
|
199
|
+
timeoutMs
|
|
200
|
+
);
|
|
201
|
+
if (found) return candidate;
|
|
187
202
|
}
|
|
188
203
|
return null;
|
|
189
204
|
}
|
|
190
|
-
function
|
|
205
|
+
async function* streamLines(filePath) {
|
|
206
|
+
const stream = createReadStream(filePath, { encoding: "utf8" });
|
|
207
|
+
let pending = "";
|
|
208
|
+
try {
|
|
209
|
+
for await (const chunk of stream) {
|
|
210
|
+
pending += chunk;
|
|
211
|
+
let idx = pending.indexOf("\n");
|
|
212
|
+
while (idx !== -1) {
|
|
213
|
+
yield pending.slice(0, idx);
|
|
214
|
+
pending = pending.slice(idx + 1);
|
|
215
|
+
idx = pending.indexOf("\n");
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
yield pending;
|
|
219
|
+
} finally {
|
|
220
|
+
stream.destroy();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
function repairLine(line, counters) {
|
|
224
|
+
if (line.trim() === "") return line;
|
|
225
|
+
const eol = line.endsWith("\r") ? "\r" : "";
|
|
226
|
+
const body = eol === "" ? line : line.slice(0, -1);
|
|
227
|
+
let entry;
|
|
228
|
+
try {
|
|
229
|
+
entry = JSON.parse(body);
|
|
230
|
+
} catch {
|
|
231
|
+
return line;
|
|
232
|
+
}
|
|
233
|
+
const content = entry.message?.content;
|
|
234
|
+
if (!Array.isArray(content)) return line;
|
|
235
|
+
const before = totalChanges(counters);
|
|
236
|
+
const scrubbed = content.map((block) => scrubBlock(block, counters));
|
|
237
|
+
if (totalChanges(counters) === before) return line;
|
|
238
|
+
return `${JSON.stringify({ ...entry, message: { ...entry.message, content: scrubbed } })}${eol}`;
|
|
239
|
+
}
|
|
240
|
+
async function scrubPoisonedTranscript(opts) {
|
|
191
241
|
const { configDir, sessionId, log } = opts;
|
|
242
|
+
const timeoutMs = fsDeadlineMs();
|
|
192
243
|
const result = {
|
|
193
244
|
filePath: null,
|
|
194
245
|
corrected: 0,
|
|
@@ -196,15 +247,21 @@ function scrubPoisonedTranscript(opts) {
|
|
|
196
247
|
cacheStripped: 0,
|
|
197
248
|
changed: false
|
|
198
249
|
};
|
|
199
|
-
const filePath = locateTranscript(configDir, sessionId);
|
|
250
|
+
const filePath = await locateTranscript(configDir, sessionId, timeoutMs);
|
|
200
251
|
if (!filePath) {
|
|
201
252
|
log?.warn("scrub-transcript: no transcript found", { configDir, sessionId });
|
|
202
253
|
return result;
|
|
203
254
|
}
|
|
204
255
|
result.filePath = filePath;
|
|
205
|
-
|
|
256
|
+
const counters = { corrected: 0, stubbed: 0, cacheStripped: 0 };
|
|
206
257
|
try {
|
|
207
|
-
|
|
258
|
+
await withFsDeadline(
|
|
259
|
+
`scan transcript ${filePath}`,
|
|
260
|
+
async () => {
|
|
261
|
+
for await (const line of streamLines(filePath)) repairLine(line, counters);
|
|
262
|
+
},
|
|
263
|
+
timeoutMs
|
|
264
|
+
);
|
|
208
265
|
} catch (err) {
|
|
209
266
|
log?.warn("scrub-transcript: failed to read transcript", {
|
|
210
267
|
filePath,
|
|
@@ -212,46 +269,39 @@ function scrubPoisonedTranscript(opts) {
|
|
|
212
269
|
});
|
|
213
270
|
return result;
|
|
214
271
|
}
|
|
215
|
-
const counters = { corrected: 0, stubbed: 0, cacheStripped: 0 };
|
|
216
|
-
const lines = raw.split("\n");
|
|
217
|
-
let dirty = false;
|
|
218
|
-
const repaired = lines.map((line) => {
|
|
219
|
-
if (line.trim() === "") {
|
|
220
|
-
return line;
|
|
221
|
-
}
|
|
222
|
-
let entry;
|
|
223
|
-
try {
|
|
224
|
-
entry = JSON.parse(line);
|
|
225
|
-
} catch {
|
|
226
|
-
return line;
|
|
227
|
-
}
|
|
228
|
-
const content = entry.message?.content;
|
|
229
|
-
if (!Array.isArray(content)) {
|
|
230
|
-
return line;
|
|
231
|
-
}
|
|
232
|
-
const before = totalChanges(counters);
|
|
233
|
-
const scrubbed = content.map((block) => scrubBlock(block, counters));
|
|
234
|
-
if (totalChanges(counters) === before) {
|
|
235
|
-
return line;
|
|
236
|
-
}
|
|
237
|
-
dirty = true;
|
|
238
|
-
return JSON.stringify({ ...entry, message: { ...entry.message, content: scrubbed } });
|
|
239
|
-
});
|
|
240
272
|
result.corrected = counters.corrected;
|
|
241
273
|
result.stubbed = counters.stubbed;
|
|
242
274
|
result.cacheStripped = counters.cacheStripped;
|
|
243
|
-
if (
|
|
275
|
+
if (totalChanges(counters) === 0) {
|
|
244
276
|
return result;
|
|
245
277
|
}
|
|
246
278
|
const tmpPath = `${filePath}.scrub-tmp`;
|
|
247
279
|
try {
|
|
248
|
-
|
|
249
|
-
|
|
280
|
+
await withFsDeadline(
|
|
281
|
+
`rewrite transcript ${filePath}`,
|
|
282
|
+
async () => {
|
|
283
|
+
const discard = { corrected: 0, stubbed: 0, cacheStripped: 0 };
|
|
284
|
+
await pipeline(
|
|
285
|
+
(async function* () {
|
|
286
|
+
let first = true;
|
|
287
|
+
for await (const line of streamLines(filePath)) {
|
|
288
|
+
yield first ? repairLine(line, discard) : `
|
|
289
|
+
${repairLine(line, discard)}`;
|
|
290
|
+
first = false;
|
|
291
|
+
}
|
|
292
|
+
})(),
|
|
293
|
+
createWriteStream(tmpPath, { encoding: "utf8" })
|
|
294
|
+
);
|
|
295
|
+
await rename(tmpPath, filePath);
|
|
296
|
+
},
|
|
297
|
+
timeoutMs
|
|
298
|
+
);
|
|
250
299
|
} catch (err) {
|
|
251
300
|
log?.warn("scrub-transcript: failed to rewrite transcript", {
|
|
252
301
|
filePath,
|
|
253
302
|
error: err instanceof Error ? err.message : String(err)
|
|
254
303
|
});
|
|
304
|
+
await tryWithFsDeadline(`unlink ${tmpPath}`, () => unlink(tmpPath), void 0, timeoutMs);
|
|
255
305
|
return result;
|
|
256
306
|
}
|
|
257
307
|
result.changed = true;
|
|
@@ -515,7 +565,7 @@ var ClaudeSdkDriver = class extends AgentDriver {
|
|
|
515
565
|
const isPoisonedHistory = !_budget.poison && /invalid_request_error/i.test(errMsg) && /media[_ ]?type|could not process image|image exceeds|cache_control/i.test(errMsg);
|
|
516
566
|
const poisonSessionId = this.config.resumeSessionId || this.sessionId;
|
|
517
567
|
if (isPoisonedHistory && poisonSessionId) {
|
|
518
|
-
if (this.attemptPoisonScrubRetry(poisonSessionId)) {
|
|
568
|
+
if (await this.attemptPoisonScrubRetry(poisonSessionId)) {
|
|
519
569
|
retrying = true;
|
|
520
570
|
return this.runPrompt(message, { ..._budget, poison: true });
|
|
521
571
|
}
|
|
@@ -638,8 +688,8 @@ var ClaudeSdkDriver = class extends AgentDriver {
|
|
|
638
688
|
* to recurse — this only performs the scrub + state mutation, never control
|
|
639
689
|
* flow.
|
|
640
690
|
*/
|
|
641
|
-
attemptPoisonScrubRetry(poisonSessionId) {
|
|
642
|
-
const scrub = scrubPoisonedTranscript({
|
|
691
|
+
async attemptPoisonScrubRetry(poisonSessionId) {
|
|
692
|
+
const scrub = await scrubPoisonedTranscript({
|
|
643
693
|
configDir: this.resolveClaudeConfigDir(),
|
|
644
694
|
sessionId: poisonSessionId,
|
|
645
695
|
log: this.log
|
|
@@ -754,13 +804,13 @@ var ClaudeSdkDriver = class extends AgentDriver {
|
|
|
754
804
|
* clean transcript is left byte-for-byte untouched. The reactive path remains
|
|
755
805
|
* the safety net for poison introduced mid-turn within the current lifetime.
|
|
756
806
|
*/
|
|
757
|
-
preventivelyScrubTranscript() {
|
|
807
|
+
async preventivelyScrubTranscript() {
|
|
758
808
|
const sessionId = this.config.resumeSessionId || this.sessionId;
|
|
759
809
|
if (!sessionId) {
|
|
760
810
|
return;
|
|
761
811
|
}
|
|
762
812
|
try {
|
|
763
|
-
const scrub = scrubPoisonedTranscript({
|
|
813
|
+
const scrub = await scrubPoisonedTranscript({
|
|
764
814
|
configDir: this.resolveClaudeConfigDir(),
|
|
765
815
|
sessionId,
|
|
766
816
|
log: this.log
|
|
@@ -795,7 +845,7 @@ var ClaudeSdkDriver = class extends AgentDriver {
|
|
|
795
845
|
}
|
|
796
846
|
async startQuery(message) {
|
|
797
847
|
this.abortController = new AbortController();
|
|
798
|
-
this.preventivelyScrubTranscript();
|
|
848
|
+
await this.preventivelyScrubTranscript();
|
|
799
849
|
const cloud = this.resolveCloud();
|
|
800
850
|
const apiKey = cloud === "default" ? this.config.apiKeys?.anthropic || this.config.env?.ANTHROPIC_API_KEY || process.env.ANTHROPIC_API_KEY : void 0;
|
|
801
851
|
this.usingOauthCredential = cloud === "default" && !apiKey;
|
|
@@ -896,7 +946,9 @@ var ClaudeSdkDriver = class extends AgentDriver {
|
|
|
896
946
|
};
|
|
897
947
|
if (apiKey) queryArgs.apiKey = apiKey;
|
|
898
948
|
this.query = query(queryArgs);
|
|
899
|
-
this.consumeMessages()
|
|
949
|
+
this.consumeMessages().catch((err) => {
|
|
950
|
+
this.log.error("message loop terminated unexpectedly", err);
|
|
951
|
+
});
|
|
900
952
|
}
|
|
901
953
|
getSlashCommands() {
|
|
902
954
|
return this.cachedCommands;
|
|
@@ -1073,7 +1125,7 @@ var ClaudeSdkDriver = class extends AgentDriver {
|
|
|
1073
1125
|
* If it ends unexpectedly, query is nulled so the next prompt() restarts.
|
|
1074
1126
|
*/
|
|
1075
1127
|
async consumeMessages() {
|
|
1076
|
-
this.fetchSlashCommands();
|
|
1128
|
+
void this.fetchSlashCommands();
|
|
1077
1129
|
try {
|
|
1078
1130
|
for await (const msg of this.query) {
|
|
1079
1131
|
if (this.abortController?.signal.aborted) break;
|