@skaile/workspaces 1.1.0 → 1.3.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 +52 -0
- package/dist/{asset-feeds-NIAABO6U.js → asset-feeds-NEZKG6YS.js} +9 -9
- package/dist/{asset-feeds-NIAABO6U.js.map → asset-feeds-NEZKG6YS.js.map} +1 -1
- package/dist/asset-manager/index.js +7 -7
- package/dist/asset-manager/installer.js +6 -6
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/bridge/drivers/claude-sdk.js +40 -5
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +1 -1
- package/dist/bridge/drivers/continue.js +2 -2
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +3 -3
- package/dist/bridge/drivers/goose.js +2 -2
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.js +2 -2
- package/dist/bridge/drivers/qwen.js +3 -3
- package/dist/bridge/index.js +3 -2
- package/dist/bridge/src/cloud.d.ts +89 -0
- package/dist/bridge/src/cloud.d.ts.map +1 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts +12 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +31 -0
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-7X53KHQ4.js → chunk-4OVPB7SI.js} +4 -2
- package/dist/chunk-4OVPB7SI.js.map +1 -0
- package/dist/{chunk-SHOKXRL4.js → chunk-5XS3BFJS.js} +8 -4
- package/dist/chunk-5XS3BFJS.js.map +1 -0
- package/dist/{chunk-EE4NL25D.js → chunk-7CNIRF42.js} +111 -45
- package/dist/chunk-7CNIRF42.js.map +1 -0
- package/dist/{chunk-MG6UIS7G.js → chunk-AZAS3FKN.js} +6 -3
- package/dist/chunk-AZAS3FKN.js.map +1 -0
- package/dist/{chunk-BCJL2UNH.js → chunk-BDUANIAR.js} +3 -3
- package/dist/{chunk-BCJL2UNH.js.map → chunk-BDUANIAR.js.map} +1 -1
- package/dist/{chunk-KVZ6XKVN.js → chunk-BZMTR5WW.js} +3 -3
- package/dist/{chunk-KVZ6XKVN.js.map → chunk-BZMTR5WW.js.map} +1 -1
- package/dist/{chunk-INUQVXUE.js → chunk-ETYDLXI5.js} +2 -2
- package/dist/{chunk-INUQVXUE.js.map → chunk-ETYDLXI5.js.map} +1 -1
- package/dist/{chunk-CU5Z7GH3.js → chunk-GB4SEEK4.js} +13 -5
- package/dist/chunk-GB4SEEK4.js.map +1 -0
- package/dist/chunk-ISQWMBKD.js +74 -0
- package/dist/chunk-ISQWMBKD.js.map +1 -0
- package/dist/{chunk-ZUE2PIJ5.js → chunk-JQMIG7D3.js} +3 -3
- package/dist/{chunk-ZUE2PIJ5.js.map → chunk-JQMIG7D3.js.map} +1 -1
- package/dist/{chunk-UY5Q2NZH.js → chunk-K5SD7FSF.js} +3 -3
- package/dist/{chunk-UY5Q2NZH.js.map → chunk-K5SD7FSF.js.map} +1 -1
- package/dist/{chunk-L3SLC3S4.js → chunk-OBSSORCE.js} +6 -6
- package/dist/{chunk-L3SLC3S4.js.map → chunk-OBSSORCE.js.map} +1 -1
- package/dist/{chunk-5AGARSQT.js → chunk-OUWNTFDG.js} +31 -3
- package/dist/chunk-OUWNTFDG.js.map +1 -0
- package/dist/{chunk-VYIK5IE5.js → chunk-P3MJYPZE.js} +24 -5
- package/dist/chunk-P3MJYPZE.js.map +1 -0
- package/dist/{chunk-B4IOSXRZ.js → chunk-PSMW5HLX.js} +19 -8
- package/dist/chunk-PSMW5HLX.js.map +1 -0
- package/dist/{chunk-U5J77IIZ.js → chunk-QK5JDAFF.js} +4 -4
- package/dist/{chunk-U5J77IIZ.js.map → chunk-QK5JDAFF.js.map} +1 -1
- package/dist/{chunk-DMHVL5MC.js → chunk-RHMQPLIK.js} +5 -5
- package/dist/{chunk-DMHVL5MC.js.map → chunk-RHMQPLIK.js.map} +1 -1
- package/dist/{chunk-52XHXSBN.js → chunk-RJ3HUSBC.js} +3 -3
- package/dist/{chunk-52XHXSBN.js.map → chunk-RJ3HUSBC.js.map} +1 -1
- package/dist/{chunk-Z4EJOBEL.js → chunk-RYRJEVQ4.js} +7 -7
- package/dist/{chunk-Z4EJOBEL.js.map → chunk-RYRJEVQ4.js.map} +1 -1
- package/dist/{chunk-QVE3ILCY.js → chunk-SUOGVHGJ.js} +2 -2
- package/dist/chunk-SUOGVHGJ.js.map +1 -0
- package/dist/{chunk-BM37QD6U.js → chunk-TJRWGMD2.js} +3 -3
- package/dist/{chunk-BM37QD6U.js.map → chunk-TJRWGMD2.js.map} +1 -1
- package/dist/{chunk-35TLBMHX.js → chunk-WFEPI5LA.js} +5 -5
- package/dist/{chunk-35TLBMHX.js.map → chunk-WFEPI5LA.js.map} +1 -1
- package/dist/{chunk-OIGYDVCM.js → chunk-XBG2YDQQ.js} +3 -3
- package/dist/{chunk-OIGYDVCM.js.map → chunk-XBG2YDQQ.js.map} +1 -1
- package/dist/{chunk-WRBF34YE.js → chunk-XKARS6EE.js} +3 -3
- package/dist/{chunk-WRBF34YE.js.map → chunk-XKARS6EE.js.map} +1 -1
- package/dist/{chunk-YI5OZ7QO.js → chunk-YOPSHV7V.js} +2 -2
- package/dist/{chunk-YI5OZ7QO.js.map → chunk-YOPSHV7V.js.map} +1 -1
- package/dist/{chunk-G2X3THJV.js → chunk-YXEPZ7LP.js} +5 -5
- package/dist/{chunk-G2X3THJV.js.map → chunk-YXEPZ7LP.js.map} +1 -1
- package/dist/cli/index.js +104 -62
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +20 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +9 -0
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +10 -0
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/connectors/config.js +4 -4
- package/dist/connectors/index.js +5 -5
- package/dist/core/index.js +3 -3
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/index.d.ts +2 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/settings.d.ts +18 -0
- package/dist/core/src/settings.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +45 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +3 -3
- package/dist/discovery/index.js +2 -2
- package/dist/{ensure-sources-MJYHZ77Y.js → ensure-sources-4BAJGJRK.js} +10 -10
- package/dist/{ensure-sources-MJYHZ77Y.js.map → ensure-sources-4BAJGJRK.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +5 -5
- package/dist/factory-assets/connectors/deploy.js +5 -5
- package/dist/factory-assets/connectors/devserver.js +5 -5
- package/dist/factory-assets/connectors/flow/adapter.js +5 -5
- package/dist/factory-assets/connectors/flow/engine.js +3 -3
- package/dist/factory-assets/connectors/flow/run-flow.js +6 -6
- package/dist/factory-assets/connectors/flow.js +5 -5
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +5 -5
- package/dist/factory-assets/connectors/gmail.js +5 -5
- package/dist/factory-assets/connectors/googledrive.js +5 -5
- package/dist/factory-assets/connectors/local.js +5 -5
- package/dist/factory-assets/connectors/mattermost.js +5 -5
- package/dist/factory-assets/connectors/memory.js +5 -5
- package/dist/factory-assets/connectors/minio.js +5 -5
- package/dist/factory-assets/connectors/postgres.js +5 -5
- package/dist/factory-assets/connectors/s3.js +5 -5
- package/dist/factory-assets/connectors/sharepoint.js +5 -5
- package/dist/factory-assets/connectors/sqlite.js +5 -5
- package/dist/factory-assets/connectors/static-server.js +5 -5
- package/dist/factory-assets/connectors/tunnel.js +5 -5
- package/dist/factory-assets/connectors/webdav.js +5 -5
- package/dist/factory-assets/connectors/xstate-store.js +5 -5
- package/dist/factory-assets/connectors/xstate.js +5 -5
- package/dist/{flows-4Z74KY2H.js → flows-UFCOGAAM.js} +3 -3
- package/dist/{flows-4Z74KY2H.js.map → flows-UFCOGAAM.js.map} +1 -1
- package/dist/helpers-2OL4FRFB.js +22 -0
- package/dist/{helpers-7KOVCMHW.js.map → helpers-2OL4FRFB.js.map} +1 -1
- package/dist/library/index.js +6 -6
- package/dist/library/install.js +3 -3
- package/dist/{open-library-PGTL332T.js → open-library-RPV2LIKL.js} +13 -13
- package/dist/{open-library-PGTL332T.js.map → open-library-RPV2LIKL.js.map} +1 -1
- package/dist/{paths-S7QNXYMB.js → paths-ML33B5SB.js} +6 -6
- package/dist/{paths-S7QNXYMB.js.map → paths-ML33B5SB.js.map} +1 -1
- package/dist/{plugin-store-3DAVGKHN.js → plugin-store-G4HKWCTU.js} +5 -5
- package/dist/{plugin-store-3DAVGKHN.js.map → plugin-store-G4HKWCTU.js.map} +1 -1
- package/dist/plugins/src/catalog-source.d.ts +7 -0
- package/dist/plugins/src/catalog-source.d.ts.map +1 -1
- package/dist/runner/index.js +10 -9
- package/dist/runner/src/cloud-bundle.d.ts +36 -0
- package/dist/runner/src/cloud-bundle.d.ts.map +1 -0
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +32 -0
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +7 -7
- package/dist/sdk/bridge.js +3 -2
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/flow.js +3 -3
- package/dist/sdk/index.js +10 -9
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runner.js +10 -9
- package/dist/sdk/store.js +1 -1
- package/dist/{setup-WBGDT2WY.js → setup-WS6PF6JQ.js} +8 -7
- package/dist/setup-WS6PF6JQ.js.map +1 -0
- package/dist/{source-FJXRQ2NU.js → source-22U5NOY4.js} +14 -14
- package/dist/{source-FJXRQ2NU.js.map → source-22U5NOY4.js.map} +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/src/store.d.ts.map +1 -1
- package/dist/{store-client-YGDN4L2G.js → store-client-YLMBH5MF.js} +6 -6
- package/dist/{store-client-YGDN4L2G.js.map → store-client-YLMBH5MF.js.map} +1 -1
- package/dist/tui/index.js +10 -9
- package/dist/tui/index.js.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent.d.ts +47 -8
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +1 -1
- package/dist/workspace-plugin/adapters/omp.js +3 -3
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-5AGARSQT.js.map +0 -1
- package/dist/chunk-7X53KHQ4.js.map +0 -1
- package/dist/chunk-B4IOSXRZ.js.map +0 -1
- package/dist/chunk-CU5Z7GH3.js.map +0 -1
- package/dist/chunk-EE4NL25D.js.map +0 -1
- package/dist/chunk-MG6UIS7G.js.map +0 -1
- package/dist/chunk-QVE3ILCY.js.map +0 -1
- package/dist/chunk-SHOKXRL4.js.map +0 -1
- package/dist/chunk-VYIK5IE5.js.map +0 -1
- package/dist/helpers-7KOVCMHW.js +0 -22
- package/dist/setup-WBGDT2WY.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { makeSourceCommand, syncProjectSources } from '../chunk-
|
|
3
|
-
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-
|
|
4
|
-
import { logErr, S, logOk, logInfo, colorRef, logWarn,
|
|
5
|
-
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-
|
|
6
|
-
import { AI_RESOURCES, aiResourceRoots } from '../chunk-
|
|
2
|
+
import { makeSourceCommand, syncProjectSources } from '../chunk-RYRJEVQ4.js';
|
|
3
|
+
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-RHMQPLIK.js';
|
|
4
|
+
import { logErr, S, logOk, logInfo, colorRef, logWarn, kindColorPad, kindColor, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, fitWidth, formatSoftDepRemovePreview, formatSoftDepAddPreview } from '../chunk-5XS3BFJS.js';
|
|
5
|
+
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-JQMIG7D3.js';
|
|
6
|
+
import { AI_RESOURCES, aiResourceRoots } from '../chunk-XBG2YDQQ.js';
|
|
7
7
|
import { LocalSecretsProvider } from '../chunk-6BEGKO2Q.js';
|
|
8
|
-
import { resolveLibraryDir } from '../chunk-
|
|
9
|
-
import '../chunk-
|
|
8
|
+
import { resolveLibraryDir } from '../chunk-P3MJYPZE.js';
|
|
9
|
+
import '../chunk-BZMTR5WW.js';
|
|
10
10
|
import '../chunk-UKJMQZV6.js';
|
|
11
11
|
import '../chunk-R7FOF242.js';
|
|
12
12
|
import '../chunk-JXT46QFC.js';
|
|
13
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
13
|
+
import { runFlow, resumeFlow } from '../chunk-YXEPZ7LP.js';
|
|
14
14
|
import '../chunk-4R6DROGN.js';
|
|
15
15
|
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-GXC3TYMQ.js';
|
|
16
|
-
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-
|
|
17
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
16
|
+
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-7CNIRF42.js';
|
|
17
|
+
import { buildClaudePluginFiles } from '../chunk-ETYDLXI5.js';
|
|
18
18
|
import '../chunk-X5YPJV4N.js';
|
|
19
19
|
import '../chunk-O7SG5PC2.js';
|
|
20
20
|
import '../chunk-7QBNJTTQ.js';
|
|
@@ -23,23 +23,24 @@ import '../chunk-WQ7DE5UC.js';
|
|
|
23
23
|
import '../chunk-32NA4TVC.js';
|
|
24
24
|
import '../chunk-W3UDISS2.js';
|
|
25
25
|
import '../chunk-EVZKWY5J.js';
|
|
26
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-K5SD7FSF.js';
|
|
27
|
+
import '../chunk-ISQWMBKD.js';
|
|
27
28
|
import '../chunk-BMQKMOQY.js';
|
|
28
29
|
import '../chunk-GAH4YRCI.js';
|
|
29
30
|
import '../chunk-RRVQAE5D.js';
|
|
30
|
-
import '../chunk-
|
|
31
|
+
import '../chunk-SUOGVHGJ.js';
|
|
31
32
|
import '../chunk-LV2HPH3C.js';
|
|
32
|
-
import '../chunk-
|
|
33
|
-
import '../chunk-
|
|
33
|
+
import '../chunk-PSMW5HLX.js';
|
|
34
|
+
import '../chunk-BDUANIAR.js';
|
|
34
35
|
import '../chunk-6E6PKKAD.js';
|
|
35
36
|
import { loadFlow, loadAllFlows } from '../chunk-SKADPHAM.js';
|
|
36
37
|
import '../chunk-DEYYRFQU.js';
|
|
37
38
|
import '../chunk-IFGTRL2I.js';
|
|
38
|
-
import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError } from '../chunk-
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor, checkAgentSkillConformance } from '../chunk-
|
|
41
|
-
import '../chunk-
|
|
42
|
-
import { globalCacheRoot, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, resolveSkWorkspaceConfig } from '../chunk-
|
|
39
|
+
import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError } from '../chunk-OBSSORCE.js';
|
|
40
|
+
import '../chunk-WFEPI5LA.js';
|
|
41
|
+
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor, checkAgentSkillConformance } from '../chunk-AZAS3FKN.js';
|
|
42
|
+
import '../chunk-TJRWGMD2.js';
|
|
43
|
+
import { globalCacheRoot, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, resolveSkWorkspaceConfig } from '../chunk-OUWNTFDG.js';
|
|
43
44
|
import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest, loadSkPublishManifest, saveSkPublishManifest } from '../chunk-DZCK7GRW.js';
|
|
44
45
|
import { parseFrontmatter } from '../chunk-BQCGFPHW.js';
|
|
45
46
|
import { parseAssetRef, ASSET_KINDS, isValidAssetName, slugifyAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-GEEW6SY2.js';
|
|
@@ -50,8 +51,8 @@ import { assetSearchDirs, detectDomains } from '../chunk-ZAP2BDHG.js';
|
|
|
50
51
|
import { openSqlite } from '../chunk-JB35MVBN.js';
|
|
51
52
|
import '../chunk-KTBKW2FI.js';
|
|
52
53
|
import '../chunk-UQ6LFBPZ.js';
|
|
53
|
-
import '../chunk-
|
|
54
|
-
import '../chunk-
|
|
54
|
+
import '../chunk-XKARS6EE.js';
|
|
55
|
+
import '../chunk-GB4SEEK4.js';
|
|
55
56
|
import '../chunk-CGYEHQOX.js';
|
|
56
57
|
import '../chunk-NSBPE2FW.js';
|
|
57
58
|
import * as fs12 from 'fs';
|
|
@@ -92,7 +93,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
|
92
93
|
const projectDir = path14__default.resolve(opts.projectDir);
|
|
93
94
|
let entries = new AssetManager({ projectDir }).search(query, kind);
|
|
94
95
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
95
|
-
const { autoSyncForSearch } = await import('../source-
|
|
96
|
+
const { autoSyncForSearch } = await import('../source-22U5NOY4.js');
|
|
96
97
|
if (await autoSyncForSearch(projectDir)) {
|
|
97
98
|
entries = new AssetManager({ projectDir }).search(query, kind);
|
|
98
99
|
}
|
|
@@ -145,7 +146,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
145
146
|
return;
|
|
146
147
|
}
|
|
147
148
|
try {
|
|
148
|
-
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-
|
|
149
|
+
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-YLMBH5MF.js');
|
|
149
150
|
const config = getStoreConfig2();
|
|
150
151
|
const params = {};
|
|
151
152
|
if (query) params.q = query;
|
|
@@ -190,30 +191,54 @@ function parseBackendFilter(raw) {
|
|
|
190
191
|
return out.length > 0 ? out : void 0;
|
|
191
192
|
}
|
|
192
193
|
async function promptSoftDepAdds(am2, ref, io) {
|
|
194
|
+
if (io.noSoftDeps) return;
|
|
193
195
|
const edges = await am2.reportSoftDeps([ref]);
|
|
194
196
|
if (edges.length === 0) return;
|
|
195
|
-
|
|
197
|
+
const addEdge = async (toRef) => {
|
|
198
|
+
try {
|
|
199
|
+
for (const a of await am2.add(toRef, { link: io.link })) io.onAdded(a);
|
|
200
|
+
} catch (err) {
|
|
201
|
+
io.onError(`Failed to add ${toRef}: ${err}`);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
if (io.withSoftDeps) {
|
|
196
205
|
for (const edge of edges) {
|
|
197
|
-
|
|
198
|
-
io.
|
|
199
|
-
`${bareSoftDepName(edge.from)} references ${bareSoftDepName(edge.to)} (soft dependency)${hint}`
|
|
200
|
-
);
|
|
206
|
+
if (edge.toRef) await addEdge(edge.toRef);
|
|
207
|
+
else io.onError(`Cannot auto-add ${bareSoftDepName(edge.to)} \u2014 no resolvable ref.`);
|
|
201
208
|
}
|
|
202
209
|
return;
|
|
203
210
|
}
|
|
211
|
+
if (!io.isTTY) {
|
|
212
|
+
for (const edge of edges) io.onHint(formatSoftDepHint(edge));
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
204
215
|
for (const edge of edges) {
|
|
205
216
|
if (!edge.toRef) continue;
|
|
206
217
|
const yes = await io.confirm(
|
|
207
218
|
`${bareSoftDepName(edge.from)} references ${bareSoftDepName(edge.to)} (soft dependency) \u2014 also add it?`
|
|
208
219
|
);
|
|
209
220
|
if (io.isCancel(yes)) break;
|
|
210
|
-
if (yes === true)
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
221
|
+
if (yes === true) await addEdge(edge.toRef);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async function promptSoftDepRemovals(am2, ref, io) {
|
|
225
|
+
if (io.noSoftDeps) return;
|
|
226
|
+
const orphans = (await am2.orphanedSoftDepsAfterRemoving([ref])).filter((o) => o.targetRef);
|
|
227
|
+
if (orphans.length === 0) return;
|
|
228
|
+
if (!io.isTTY) {
|
|
229
|
+
for (const o of orphans) {
|
|
230
|
+
io.onHint(
|
|
231
|
+
`${bareSoftDepName(o.target)} is now an orphaned soft dependency of ${ref} \u2014 run \`skaile remove ${o.targetRef}\` to remove it.`
|
|
232
|
+
);
|
|
216
233
|
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
for (const o of orphans) {
|
|
237
|
+
const yes = await io.confirm(
|
|
238
|
+
`${bareSoftDepName(o.target)} is a soft dependency of ${ref} and is no longer referenced by any installed asset \u2014 also remove it?`
|
|
239
|
+
);
|
|
240
|
+
if (io.isCancel(yes)) break;
|
|
241
|
+
if (yes === true && am2.remove(o.targetRef)) io.onRemoved(`Removed ${o.targetRef}`);
|
|
217
242
|
}
|
|
218
243
|
}
|
|
219
244
|
function makeAddCommand() {
|
|
@@ -223,7 +248,14 @@ function makeAddCommand() {
|
|
|
223
248
|
).option("--target <agent>", "Driver target", "claude-code").option(
|
|
224
249
|
"--link",
|
|
225
250
|
"symlink local-path assets instead of copying (dev loop; machine-local, not for committing)"
|
|
226
|
-
).
|
|
251
|
+
).option(
|
|
252
|
+
"--with-soft-deps",
|
|
253
|
+
"also add the asset's report-only soft (body-link) deps, without prompting"
|
|
254
|
+
).option("--no-soft-deps", "skip the soft-dep prompt entirely (don't add, don't report)").action(async (ref, opts) => {
|
|
255
|
+
if (opts.withSoftDeps && opts.softDeps === false) {
|
|
256
|
+
logErr("--with-soft-deps and --no-soft-deps are mutually exclusive.");
|
|
257
|
+
process.exit(1);
|
|
258
|
+
}
|
|
227
259
|
const backends = parseBackendFilter(opts.backend);
|
|
228
260
|
const am2 = new AssetManager({
|
|
229
261
|
projectDir: path14__default.resolve(opts.projectDir),
|
|
@@ -239,6 +271,8 @@ function makeAddCommand() {
|
|
|
239
271
|
await promptSoftDepAdds(am2, ref, {
|
|
240
272
|
isTTY: !!process.stdin.isTTY,
|
|
241
273
|
link: opts.link,
|
|
274
|
+
withSoftDeps: opts.withSoftDeps,
|
|
275
|
+
noSoftDeps: opts.softDeps === false,
|
|
242
276
|
confirm: (message) => p6.confirm({ message, initialValue: false }),
|
|
243
277
|
isCancel: p6.isCancel,
|
|
244
278
|
onAdded: logOk,
|
|
@@ -264,7 +298,7 @@ function makeRemoveCommand() {
|
|
|
264
298
|
return new Command("remove").description("Remove from skaile.yaml + undeploy").argument("<ref>", "Asset reference (kind:name)").option("--project-dir <path>", "Project directory", process.cwd()).option("--global", "Remove from ~/.skaile/skaile.yaml + undeploy from every global backend").option(
|
|
265
299
|
"--backend <ids>",
|
|
266
300
|
"Comma-separated global backends to undeploy from (default: all resolved); implies --global"
|
|
267
|
-
).option("--target <agent>", "Driver target", "claude-code").action(async (ref, opts) => {
|
|
301
|
+
).option("--target <agent>", "Driver target", "claude-code").option("--no-soft-deps", "skip the orphaned-soft-dep prompt (don't remove, don't report)").action(async (ref, opts) => {
|
|
268
302
|
const backends = parseBackendFilter(opts.backend);
|
|
269
303
|
const am2 = new AssetManager({
|
|
270
304
|
projectDir: path14__default.resolve(opts.projectDir),
|
|
@@ -278,16 +312,14 @@ function makeRemoveCommand() {
|
|
|
278
312
|
return;
|
|
279
313
|
}
|
|
280
314
|
logOk(`Removed ${ref}`);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
if (yes === true && am2.remove(orphan.targetRef)) logOk(`Removed ${orphan.targetRef}`);
|
|
290
|
-
}
|
|
315
|
+
await promptSoftDepRemovals(am2, ref, {
|
|
316
|
+
isTTY: !!process.stdin.isTTY,
|
|
317
|
+
noSoftDeps: opts.softDeps === false,
|
|
318
|
+
confirm: (message) => p6.confirm({ message, initialValue: false }),
|
|
319
|
+
isCancel: p6.isCancel,
|
|
320
|
+
onRemoved: logOk,
|
|
321
|
+
onHint: (line) => logInfo(S.dim(line))
|
|
322
|
+
});
|
|
291
323
|
});
|
|
292
324
|
}
|
|
293
325
|
function stateLabel(s) {
|
|
@@ -974,7 +1006,7 @@ function makeCatalogCommand() {
|
|
|
974
1006
|
return catalog;
|
|
975
1007
|
}
|
|
976
1008
|
async function runLocalCatalogTest(projectDir) {
|
|
977
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1009
|
+
const { resolveCatalogSource } = await import('../open-library-RPV2LIKL.js');
|
|
978
1010
|
let resolved;
|
|
979
1011
|
try {
|
|
980
1012
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -1964,7 +1996,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
1964
1996
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
1965
1997
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
1966
1998
|
if (config.plugins && config.plugins.length > 0) {
|
|
1967
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
1999
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-G4HKWCTU.js');
|
|
1968
2000
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
1969
2001
|
for (const f of result.failed) logWarn(f.error);
|
|
1970
2002
|
}
|
|
@@ -3680,7 +3712,7 @@ async function previewSoftDepsUnderCursor() {
|
|
|
3680
3712
|
}
|
|
3681
3713
|
async function loadAssets() {
|
|
3682
3714
|
softDepPreviewCache.clear();
|
|
3683
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
3715
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-NEZKG6YS.js');
|
|
3684
3716
|
const { entries, domains, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
3685
3717
|
if (notes.length > 0) {
|
|
3686
3718
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -3847,7 +3879,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
3847
3879
|
async function loadSourcesAndLibraries() {
|
|
3848
3880
|
try {
|
|
3849
3881
|
const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir }, { getGlobalCacheDir: getGlobalCacheDir2 }] = await Promise.all([
|
|
3850
|
-
import('../open-library-
|
|
3882
|
+
import('../open-library-RPV2LIKL.js'),
|
|
3851
3883
|
import('../library/index.js'),
|
|
3852
3884
|
import('../core/index.js')
|
|
3853
3885
|
]);
|
|
@@ -4933,7 +4965,7 @@ function action2(fn) {
|
|
|
4933
4965
|
};
|
|
4934
4966
|
}
|
|
4935
4967
|
async function reconcileAndReport(projectDir, plugins) {
|
|
4936
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
4968
|
+
const { reconcilePlugins } = await import('../plugin-store-G4HKWCTU.js');
|
|
4937
4969
|
if (plugins.length === 0) {
|
|
4938
4970
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
4939
4971
|
return;
|
|
@@ -4949,7 +4981,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
4949
4981
|
async function runInstall2(spec, opts) {
|
|
4950
4982
|
const projectDir = path14__default.resolve(opts.projectDir);
|
|
4951
4983
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
4952
|
-
const { specName } = await import('../plugin-store-
|
|
4984
|
+
const { specName } = await import('../plugin-store-G4HKWCTU.js');
|
|
4953
4985
|
const yamlPath = path14__default.join(projectDir, "skaile.yaml");
|
|
4954
4986
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
4955
4987
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -4961,7 +4993,7 @@ async function runInstall2(spec, opts) {
|
|
|
4961
4993
|
async function runRemove(name, opts) {
|
|
4962
4994
|
const projectDir = path14__default.resolve(opts.projectDir);
|
|
4963
4995
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
4964
|
-
const { specName } = await import('../plugin-store-
|
|
4996
|
+
const { specName } = await import('../plugin-store-G4HKWCTU.js');
|
|
4965
4997
|
const yamlPath = path14__default.join(projectDir, "skaile.yaml");
|
|
4966
4998
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
4967
4999
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -4989,7 +5021,7 @@ async function runList(opts) {
|
|
|
4989
5021
|
const registry = createPluginRegistry();
|
|
4990
5022
|
if (declared.length > 0) {
|
|
4991
5023
|
try {
|
|
4992
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
5024
|
+
const { loadPlugins } = await import('../plugin-store-G4HKWCTU.js');
|
|
4993
5025
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
4994
5026
|
for (const f of result.failed) logWarn(f.error);
|
|
4995
5027
|
} catch (err) {
|
|
@@ -5243,7 +5275,7 @@ async function runRefInstall(ref, opts) {
|
|
|
5243
5275
|
const spinner5 = p6.spinner();
|
|
5244
5276
|
spinner5.start(`Installing ${ref}`);
|
|
5245
5277
|
try {
|
|
5246
|
-
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-
|
|
5278
|
+
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-RPV2LIKL.js');
|
|
5247
5279
|
const catalog = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
|
|
5248
5280
|
if (!supportsInstallManifest(catalog)) {
|
|
5249
5281
|
throw new Error(
|
|
@@ -5280,7 +5312,7 @@ async function runYamlInstall(opts) {
|
|
|
5280
5312
|
return;
|
|
5281
5313
|
}
|
|
5282
5314
|
try {
|
|
5283
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
5315
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-4BAJGJRK.js');
|
|
5284
5316
|
const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
|
|
5285
5317
|
if (hydrate.cloned.length > 0) {
|
|
5286
5318
|
logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
|
|
@@ -5316,12 +5348,22 @@ async function runYamlInstall(opts) {
|
|
|
5316
5348
|
if (result.lockWritten) {
|
|
5317
5349
|
logInfo(`Lock file written: ${S.dim("skaile.lock.yaml")}`);
|
|
5318
5350
|
}
|
|
5351
|
+
if (!opts.locked) await reportInstalledSoftDeps(am2);
|
|
5319
5352
|
} catch (err) {
|
|
5320
5353
|
spinner5.stop("Failed");
|
|
5321
5354
|
logErr(String(err));
|
|
5322
5355
|
process.exit(1);
|
|
5323
5356
|
}
|
|
5324
5357
|
}
|
|
5358
|
+
async function reportInstalledSoftDeps(am2, onHint = (l) => logInfo(S.dim(l))) {
|
|
5359
|
+
try {
|
|
5360
|
+
const declared = am2.listDeclared().map((d) => d.ref);
|
|
5361
|
+
if (declared.length === 0) return;
|
|
5362
|
+
const edges = await am2.reportSoftDeps(declared);
|
|
5363
|
+
for (const edge of edges) onHint(formatSoftDepHint(edge));
|
|
5364
|
+
} catch {
|
|
5365
|
+
}
|
|
5366
|
+
}
|
|
5325
5367
|
async function runGlobalInstall(opts, backends) {
|
|
5326
5368
|
const am2 = new AssetManager({
|
|
5327
5369
|
projectDir: path14__default.resolve(opts.projectDir),
|
|
@@ -5744,12 +5786,12 @@ function makeServeCommand() {
|
|
|
5744
5786
|
);
|
|
5745
5787
|
}
|
|
5746
5788
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
5747
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
5789
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-2OL4FRFB.js');
|
|
5748
5790
|
try {
|
|
5749
5791
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
5750
5792
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
5751
5793
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
5752
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
5794
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-G4HKWCTU.js');
|
|
5753
5795
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
5754
5796
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
5755
5797
|
if (result.loaded.length > 0) {
|
|
@@ -5763,14 +5805,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
5763
5805
|
}
|
|
5764
5806
|
}
|
|
5765
5807
|
async function runCompileTest(opts) {
|
|
5766
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
5808
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-2OL4FRFB.js');
|
|
5767
5809
|
const { tmpdir } = await import('os');
|
|
5768
5810
|
const { dirname: dirname4, join: join5, resolve: resolve5 } = await import('path');
|
|
5769
5811
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
5770
5812
|
const { unlinkSync, existsSync: existsSync13 } = await import('fs');
|
|
5771
5813
|
const { spawn } = await import('child_process');
|
|
5772
5814
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
5773
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
5815
|
+
const { MONOREPO_ROOT } = await import('../paths-ML33B5SB.js');
|
|
5774
5816
|
if (MONOREPO_ROOT === null) {
|
|
5775
5817
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
5776
5818
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -7676,7 +7718,7 @@ async function bootstrapUserConfig() {
|
|
|
7676
7718
|
}
|
|
7677
7719
|
async function hydrateInitSources(resolved, created) {
|
|
7678
7720
|
try {
|
|
7679
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
7721
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-4BAJGJRK.js');
|
|
7680
7722
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
7681
7723
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
7682
7724
|
if (hydrate.failed.length > 0) {
|
|
@@ -7712,7 +7754,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
7712
7754
|
console.log();
|
|
7713
7755
|
}
|
|
7714
7756
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
7715
|
-
const { cmdSetup } = await import('../setup-
|
|
7757
|
+
const { cmdSetup } = await import('../setup-WS6PF6JQ.js');
|
|
7716
7758
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
7717
7759
|
});
|
|
7718
7760
|
program.addCommand(makeInstallCommand());
|