@skaile/workspaces 0.26.0 → 0.28.1
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 +65 -0
- package/dist/{asset-feeds-WMVTI7KW.js → asset-feeds-2V7LZIG7.js} +17 -10
- package/dist/asset-feeds-2V7LZIG7.js.map +1 -0
- package/dist/asset-manager/index.js +7 -7
- package/dist/asset-manager/installer.js +6 -6
- package/dist/bridge/drivers/claude-sdk.js +2 -2
- package/dist/bridge/drivers/codex.js +1 -1
- package/dist/bridge/drivers/continue.d.ts +2 -0
- package/dist/bridge/drivers/continue.js +103 -0
- package/dist/bridge/drivers/continue.js.map +1 -0
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.d.ts +2 -0
- package/dist/bridge/drivers/gemini.js +10 -0
- package/dist/bridge/drivers/gemini.js.map +1 -0
- package/dist/bridge/drivers/goose.d.ts +2 -0
- package/dist/bridge/drivers/goose.js +88 -0
- package/dist/bridge/drivers/goose.js.map +1 -0
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.d.ts +2 -0
- package/dist/bridge/drivers/opencode.js +99 -0
- package/dist/bridge/drivers/opencode.js.map +1 -0
- package/dist/bridge/drivers/qwen.d.ts +2 -0
- package/dist/bridge/drivers/qwen.js +57 -0
- package/dist/bridge/drivers/qwen.js.map +1 -0
- package/dist/bridge/index.js +3 -3
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts +136 -0
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -0
- package/dist/bridge/src/drivers/continue.d.ts +43 -0
- package/dist/bridge/src/drivers/continue.d.ts.map +1 -0
- package/dist/bridge/src/drivers/gemini.d.ts +55 -0
- package/dist/bridge/src/drivers/gemini.d.ts.map +1 -0
- package/dist/bridge/src/drivers/goose.d.ts +42 -0
- package/dist/bridge/src/drivers/goose.d.ts.map +1 -0
- package/dist/bridge/src/drivers/opencode.d.ts +43 -0
- package/dist/bridge/src/drivers/opencode.d.ts.map +1 -0
- package/dist/bridge/src/drivers/qwen.d.ts +39 -0
- package/dist/bridge/src/drivers/qwen.d.ts.map +1 -0
- package/dist/bridge/src/registry.d.ts.map +1 -1
- package/dist/{chunk-XGLGS5B4.js → chunk-2NOE4AGD.js} +3 -3
- package/dist/{chunk-XGLGS5B4.js.map → chunk-2NOE4AGD.js.map} +1 -1
- package/dist/{chunk-Z5DI7PDG.js → chunk-3QQSSRYN.js} +29 -5
- package/dist/chunk-3QQSSRYN.js.map +1 -0
- package/dist/chunk-5RBPPBEK.js +110 -0
- package/dist/chunk-5RBPPBEK.js.map +1 -0
- package/dist/chunk-5V5KZQIC.js +445 -0
- package/dist/chunk-5V5KZQIC.js.map +1 -0
- package/dist/{chunk-23M4XZQW.js → chunk-AKSR434V.js} +3 -3
- package/dist/{chunk-23M4XZQW.js.map → chunk-AKSR434V.js.map} +1 -1
- package/dist/{chunk-WD4LP66U.js → chunk-BSVLAHHH.js} +34 -17
- package/dist/chunk-BSVLAHHH.js.map +1 -0
- package/dist/{chunk-7OBGSR7O.js → chunk-BZ2JU7IP.js} +4 -4
- package/dist/{chunk-7OBGSR7O.js.map → chunk-BZ2JU7IP.js.map} +1 -1
- package/dist/{chunk-ZYDE52WE.js → chunk-DGM74UP4.js} +3 -3
- package/dist/{chunk-ZYDE52WE.js.map → chunk-DGM74UP4.js.map} +1 -1
- package/dist/{chunk-QHXS3YDV.js → chunk-FBVUGRTU.js} +5 -5
- package/dist/{chunk-QHXS3YDV.js.map → chunk-FBVUGRTU.js.map} +1 -1
- package/dist/{chunk-C32BRO2W.js → chunk-FWHOU3CX.js} +3 -3
- package/dist/{chunk-C32BRO2W.js.map → chunk-FWHOU3CX.js.map} +1 -1
- package/dist/{chunk-WSZAFRQL.js → chunk-GYPA2Q7F.js} +6 -5
- package/dist/chunk-GYPA2Q7F.js.map +1 -0
- package/dist/{chunk-KL2MQ6WI.js → chunk-M4KLIEIJ.js} +3 -3
- package/dist/{chunk-KL2MQ6WI.js.map → chunk-M4KLIEIJ.js.map} +1 -1
- package/dist/{chunk-RTAIGPTF.js → chunk-MIH45XPY.js} +100 -147
- package/dist/chunk-MIH45XPY.js.map +1 -0
- package/dist/{chunk-BKF3UFF4.js → chunk-SF4GWVR5.js} +4 -4
- package/dist/{chunk-BKF3UFF4.js.map → chunk-SF4GWVR5.js.map} +1 -1
- package/dist/{chunk-PY7AQRGH.js → chunk-U5L6F5NZ.js} +6 -6
- package/dist/{chunk-PY7AQRGH.js.map → chunk-U5L6F5NZ.js.map} +1 -1
- package/dist/{chunk-BQRRBGDE.js → chunk-UAW7VRAL.js} +2 -2
- package/dist/{chunk-BQRRBGDE.js.map → chunk-UAW7VRAL.js.map} +1 -1
- package/dist/{chunk-4SQ6Y6U7.js → chunk-UBCZVONU.js} +3 -3
- package/dist/{chunk-4SQ6Y6U7.js.map → chunk-UBCZVONU.js.map} +1 -1
- package/dist/{chunk-YRU4WB6Y.js → chunk-UIZKIUC6.js} +3 -3
- package/dist/{chunk-YRU4WB6Y.js.map → chunk-UIZKIUC6.js.map} +1 -1
- package/dist/{chunk-YDTW4GT6.js → chunk-XHBPQ7QP.js} +5 -5
- package/dist/{chunk-YDTW4GT6.js.map → chunk-XHBPQ7QP.js.map} +1 -1
- package/dist/chunk-Z3XXKR5E.js +88 -0
- package/dist/chunk-Z3XXKR5E.js.map +1 -0
- package/dist/{chunk-45H3UO2R.js → chunk-ZEKWHJBB.js} +52 -2
- package/dist/chunk-ZEKWHJBB.js.map +1 -0
- package/dist/cli/index.js +220 -117
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts +14 -1
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts +46 -23
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +10 -1
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +8 -8
- package/dist/core/index.js +5 -5
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/workspace-config.d.ts +10 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +5 -5
- package/dist/{ensure-sources-CVULUVH4.js → ensure-sources-BNSRO5G7.js} +11 -10
- package/dist/ensure-sources-BNSRO5G7.js.map +1 -0
- package/dist/factory-assets/connectors/deploy.js +8 -8
- package/dist/factory-assets/connectors/devserver.js +8 -8
- package/dist/factory-assets/connectors/flow/adapter.js +8 -8
- package/dist/factory-assets/connectors/flow/engine.js +5 -5
- package/dist/factory-assets/connectors/flow/run-flow.js +9 -9
- package/dist/factory-assets/connectors/flow.js +8 -8
- package/dist/factory-assets/connectors/git.js +8 -8
- package/dist/factory-assets/connectors/gmail.js +8 -8
- package/dist/factory-assets/connectors/googledrive.js +8 -8
- package/dist/factory-assets/connectors/local.js +8 -8
- package/dist/factory-assets/connectors/mattermost.js +8 -8
- package/dist/factory-assets/connectors/memory.js +8 -8
- package/dist/factory-assets/connectors/minio.js +8 -8
- package/dist/factory-assets/connectors/postgres.js +8 -8
- package/dist/factory-assets/connectors/s3.js +8 -8
- package/dist/factory-assets/connectors/sharepoint.js +8 -8
- package/dist/factory-assets/connectors/sqlite.js +8 -8
- package/dist/factory-assets/connectors/static-server.js +8 -8
- package/dist/factory-assets/connectors/tunnel.js +8 -8
- package/dist/factory-assets/connectors/webdav.js +8 -8
- package/dist/factory-assets/connectors/xstate-store.js +8 -8
- package/dist/factory-assets/connectors/xstate.js +8 -8
- package/dist/{flows-JZFJD5IN.js → flows-L3GHQD7F.js} +4 -4
- package/dist/{flows-JZFJD5IN.js.map → flows-L3GHQD7F.js.map} +1 -1
- package/dist/helpers-F4NZ66VD.js +4 -0
- package/dist/{helpers-LTN3HMD3.js.map → helpers-F4NZ66VD.js.map} +1 -1
- package/dist/library/index.js +8 -7
- package/dist/library/install.d.ts +2 -0
- package/dist/library/install.js +16 -0
- package/dist/library/install.js.map +1 -0
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/index.d.ts +3 -0
- package/dist/library/src/install/index.d.ts.map +1 -0
- package/dist/library/src/library.d.ts +20 -20
- package/dist/library/src/library.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +6 -6
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +1 -1
- package/dist/library/src/local/schema.d.ts +9 -9
- package/dist/library/src/local/schema.d.ts.map +1 -1
- package/dist/library/src/preset/apply.d.ts +9 -9
- package/dist/library/src/preset/apply.d.ts.map +1 -1
- package/dist/library/src/preset/resolve-item.d.ts +1 -1
- package/dist/library/src/workspace-config.d.ts +11 -8
- package/dist/library/src/workspace-config.d.ts.map +1 -1
- package/dist/{open-library-WYASW4BH.js → open-library-3VJY74LQ.js} +12 -11
- package/dist/{open-library-WYASW4BH.js.map → open-library-3VJY74LQ.js.map} +1 -1
- package/dist/{paths-BMW6JYW6.js → paths-CE66L3AL.js} +8 -8
- package/dist/{paths-BMW6JYW6.js.map → paths-CE66L3AL.js.map} +1 -1
- package/dist/{plugin-store-O5VR45CA.js → plugin-store-GL5VKYUA.js} +7 -7
- package/dist/{plugin-store-O5VR45CA.js.map → plugin-store-GL5VKYUA.js.map} +1 -1
- package/dist/runner/index.js +14 -14
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +7 -7
- package/dist/sdk/bridge.js +3 -3
- package/dist/sdk/core.js +5 -5
- package/dist/sdk/flow.js +5 -5
- package/dist/sdk/index.js +14 -14
- package/dist/sdk/runner.js +14 -14
- package/dist/{setup-YNLFR5GB.js → setup-4YMN2BDU.js} +10 -10
- package/dist/{setup-YNLFR5GB.js.map → setup-4YMN2BDU.js.map} +1 -1
- package/dist/{store-client-CENBEASX.js → store-client-BCP5LCAZ.js} +8 -8
- package/dist/{store-client-CENBEASX.js.map → store-client-BCP5LCAZ.js.map} +1 -1
- package/dist/tui/index.js +14 -14
- package/dist/workspace-plugin/adapters/mcp.js +3 -3
- package/dist/workspace-plugin/adapters/omp.js +3 -3
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +37 -1
- package/dist/asset-feeds-WMVTI7KW.js.map +0 -1
- package/dist/chunk-45H3UO2R.js.map +0 -1
- package/dist/chunk-RTAIGPTF.js.map +0 -1
- package/dist/chunk-WD4LP66U.js.map +0 -1
- package/dist/chunk-WSZAFRQL.js.map +0 -1
- package/dist/chunk-Z5DI7PDG.js.map +0 -1
- package/dist/ensure-sources-CVULUVH4.js.map +0 -1
- package/dist/helpers-LTN3HMD3.js +0 -4
package/dist/cli/index.js
CHANGED
|
@@ -1,52 +1,53 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-BZ2JU7IP.js';
|
|
3
|
+
import { logErr, S, logOk, colorRef, logInfo, logWarn, kindColorPad, kindColor, formatRelativeTime, fitWidth } from '../chunk-GYPA2Q7F.js';
|
|
4
|
+
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-2NOE4AGD.js';
|
|
5
|
+
import { AI_RESOURCES, aiResourceRoots } from '../chunk-UBCZVONU.js';
|
|
6
6
|
import { LocalSecretsProvider } from '../chunk-7GWYRVAX.js';
|
|
7
|
-
import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-
|
|
8
|
-
import '../chunk-R7FOF242.js';
|
|
7
|
+
import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-MIH45XPY.js';
|
|
9
8
|
import '../chunk-JIQLLZ65.js';
|
|
9
|
+
import '../chunk-Z3XXKR5E.js';
|
|
10
|
+
import '../chunk-R7FOF242.js';
|
|
10
11
|
import '../chunk-OKRUTSG7.js';
|
|
11
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
12
|
+
import { runFlow, resumeFlow } from '../chunk-FBVUGRTU.js';
|
|
12
13
|
import '../chunk-ZONCCO5N.js';
|
|
13
14
|
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-TV72ZJYN.js';
|
|
14
|
-
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-
|
|
15
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
15
|
+
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-BSVLAHHH.js';
|
|
16
|
+
import { buildClaudePluginFiles } from '../chunk-UAW7VRAL.js';
|
|
16
17
|
import '../chunk-X5YPJV4N.js';
|
|
17
|
-
import '../chunk-TDSRLMDB.js';
|
|
18
18
|
import '../chunk-O7SG5PC2.js';
|
|
19
19
|
import '../chunk-7QBNJTTQ.js';
|
|
20
20
|
import '../chunk-GTS2FODO.js';
|
|
21
21
|
import '../chunk-WQ7DE5UC.js';
|
|
22
22
|
import '../chunk-32NA4TVC.js';
|
|
23
23
|
import '../chunk-W3UDISS2.js';
|
|
24
|
-
import '../chunk-
|
|
24
|
+
import '../chunk-TDSRLMDB.js';
|
|
25
|
+
import '../chunk-AKSR434V.js';
|
|
26
|
+
import '../chunk-RRVQAE5D.js';
|
|
25
27
|
import '../chunk-BMQKMOQY.js';
|
|
26
28
|
import '../chunk-PAYAFNXG.js';
|
|
27
|
-
import '../chunk-
|
|
28
|
-
import '../chunk-45H3UO2R.js';
|
|
29
|
+
import '../chunk-ZEKWHJBB.js';
|
|
29
30
|
import '../chunk-LV2HPH3C.js';
|
|
30
|
-
import '../chunk-
|
|
31
|
-
import '../chunk-ZYDE52WE.js';
|
|
32
|
-
import '../chunk-QMONOHXT.js';
|
|
31
|
+
import '../chunk-XHBPQ7QP.js';
|
|
33
32
|
import '../chunk-OVRSNIKJ.js';
|
|
33
|
+
import '../chunk-DGM74UP4.js';
|
|
34
|
+
import '../chunk-QMONOHXT.js';
|
|
34
35
|
import '../chunk-6E6PKKAD.js';
|
|
35
36
|
import { loadFlow, loadAllFlows } from '../chunk-W7W66MDZ.js';
|
|
36
37
|
import '../chunk-DEYYRFQU.js';
|
|
37
38
|
import '../chunk-IFGTRL2I.js';
|
|
38
|
-
import { AssetManager } from '../chunk-
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-
|
|
41
|
-
import
|
|
42
|
-
import {
|
|
43
|
-
import '../chunk-C32BRO2W.js';
|
|
44
|
-
import { resolveAgentDir, resolveSkWorkspaceConfig, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-Z5DI7PDG.js';
|
|
39
|
+
import { AssetManager } from '../chunk-U5L6F5NZ.js';
|
|
40
|
+
import '../chunk-SF4GWVR5.js';
|
|
41
|
+
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-M4KLIEIJ.js';
|
|
42
|
+
import '../chunk-FWHOU3CX.js';
|
|
43
|
+
import { resolveAgentDir, resolveSkWorkspaceConfig, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-3QQSSRYN.js';
|
|
45
44
|
import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest } from '../chunk-IERB3UXJ.js';
|
|
46
45
|
import { parseFrontmatter } from '../chunk-2FS4FPZ7.js';
|
|
47
46
|
import { ASSET_KINDS, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-IEJ5IOC3.js';
|
|
48
47
|
import '../chunk-JKNWJ64A.js';
|
|
49
48
|
import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
|
|
49
|
+
import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
|
|
50
|
+
import { assetSearchDirs, detectDomains } from '../chunk-ZAP2BDHG.js';
|
|
50
51
|
import { openSqlite } from '../chunk-24UIWON4.js';
|
|
51
52
|
import '../chunk-KTBKW2FI.js';
|
|
52
53
|
import '../chunk-UQ6LFBPZ.js';
|
|
@@ -311,7 +312,7 @@ function makeSearchCommand() {
|
|
|
311
312
|
}
|
|
312
313
|
if (showStore) {
|
|
313
314
|
try {
|
|
314
|
-
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-
|
|
315
|
+
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-BCP5LCAZ.js');
|
|
315
316
|
const config = getStoreConfig2();
|
|
316
317
|
const params = {};
|
|
317
318
|
if (query) params.q = query;
|
|
@@ -473,7 +474,7 @@ function makeCatalogCommand() {
|
|
|
473
474
|
const cfg = resolveConfig({ projectDir });
|
|
474
475
|
const baseUrl = opts.url ?? cfg.catalog.url;
|
|
475
476
|
if (isLocalCatalogUrl(baseUrl)) {
|
|
476
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
477
|
+
const { resolveCatalogSource } = await import('../open-library-3VJY74LQ.js');
|
|
477
478
|
let resolved;
|
|
478
479
|
try {
|
|
479
480
|
resolved = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
@@ -1471,7 +1472,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
1471
1472
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
1472
1473
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
1473
1474
|
if (config.plugins && config.plugins.length > 0) {
|
|
1474
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
1475
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-GL5VKYUA.js');
|
|
1475
1476
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
1476
1477
|
for (const f of result.failed) logWarn(f.error);
|
|
1477
1478
|
}
|
|
@@ -1781,9 +1782,7 @@ function makeLibraryCommand() {
|
|
|
1781
1782
|
close();
|
|
1782
1783
|
}
|
|
1783
1784
|
});
|
|
1784
|
-
cmd.command("create <kind> <name>").description("Scaffold a new asset inside the default (or named) library").addOption(
|
|
1785
|
-
new Option("--kind <kind>", "Asset kind override").choices([...ASSET_KINDS])
|
|
1786
|
-
).option("--library <name>", "Target library (default: the default-marked one)").option("--dir <dir>", "Target directory inside the library (default: library root)").action(
|
|
1785
|
+
cmd.command("create <kind> <name>").description("Scaffold a new asset inside the default (or named) library").addOption(new Option("--kind <kind>", "Asset kind override").choices([...ASSET_KINDS])).option("--library <name>", "Target library (default: the default-marked one)").option("--dir <dir>", "Target directory inside the library (default: library root)").action(
|
|
1787
1786
|
async (kind, name, opts) => {
|
|
1788
1787
|
if (!ASSET_KINDS.includes(kind)) {
|
|
1789
1788
|
logErr(`Unknown asset kind "${kind}". Expected: ${ASSET_KINDS.join(", ")}.`);
|
|
@@ -1994,9 +1993,7 @@ async function printPerLibraryStatus(name, asJson) {
|
|
|
1994
1993
|
${S.heading(lib.name)}`);
|
|
1995
1994
|
console.log(` reachable: ${status4.reachable ? S.ok("yes") : S.err("no")}`);
|
|
1996
1995
|
if (status4.remoteChanges) {
|
|
1997
|
-
console.log(
|
|
1998
|
-
` behind/ahead: ${status4.remoteChanges.behind}/${status4.remoteChanges.ahead}`
|
|
1999
|
-
);
|
|
1996
|
+
console.log(` behind/ahead: ${status4.remoteChanges.behind}/${status4.remoteChanges.ahead}`);
|
|
2000
1997
|
}
|
|
2001
1998
|
const lc = status4.localChanges;
|
|
2002
1999
|
if (lc.added.length + lc.modified.length + lc.deleted.length > 0) {
|
|
@@ -2027,10 +2024,10 @@ async function printOverallStatus(projectDir, asJson) {
|
|
|
2027
2024
|
const resolvedProjectDir = path15.resolve(projectDir);
|
|
2028
2025
|
const hasWorkspaceConfig = existsSync(path15.join(resolvedProjectDir, "skaile.yaml"));
|
|
2029
2026
|
const hasLockFile = existsSync(path15.join(resolvedProjectDir, "skaile.lock.yaml"));
|
|
2030
|
-
let
|
|
2027
|
+
let assignments = [];
|
|
2031
2028
|
if (hasWorkspaceConfig) {
|
|
2032
2029
|
try {
|
|
2033
|
-
|
|
2030
|
+
assignments = await library.listAssignments(resolvedProjectDir);
|
|
2034
2031
|
} catch {
|
|
2035
2032
|
}
|
|
2036
2033
|
}
|
|
@@ -2043,7 +2040,7 @@ async function printOverallStatus(projectDir, asJson) {
|
|
|
2043
2040
|
libraries: libs.length,
|
|
2044
2041
|
assetDefinitions: defs.length,
|
|
2045
2042
|
instances: instances.length,
|
|
2046
|
-
|
|
2043
|
+
assignments: assignments.length,
|
|
2047
2044
|
secretsStrategy,
|
|
2048
2045
|
registeredKinds,
|
|
2049
2046
|
workspace: {
|
|
@@ -2083,15 +2080,13 @@ async function printOverallStatus(projectDir, asJson) {
|
|
|
2083
2080
|
const parts = [...byKind.entries()].sort((a, b) => b[1] - a[1]).map(([k, v]) => `${v} ${k}${v > 1 ? "s" : ""}`);
|
|
2084
2081
|
console.log(` ${S.dim(parts.join(", "))}`);
|
|
2085
2082
|
}
|
|
2086
|
-
console.log(
|
|
2087
|
-
` ${S.label("Registered kinds")} ${pc5.green(String(registeredKinds.length))}`
|
|
2088
|
-
);
|
|
2083
|
+
console.log(` ${S.label("Registered kinds")} ${pc5.green(String(registeredKinds.length))}`);
|
|
2089
2084
|
console.log(` ${S.dim(registeredKinds.join(", "))}`);
|
|
2090
2085
|
console.log(
|
|
2091
2086
|
` ${S.label("Instances")} ${instances.length === 0 ? S.dim("none") : pc5.green(String(instances.length))}`
|
|
2092
2087
|
);
|
|
2093
2088
|
console.log(
|
|
2094
|
-
` ${S.label("
|
|
2089
|
+
` ${S.label("Assignments")} ${assignments.length === 0 ? S.dim("none (this workspace)") : pc5.green(String(assignments.length))}`
|
|
2095
2090
|
);
|
|
2096
2091
|
const strategyColor = secretsStrategy === "unavailable" ? S.dim : pc5.green;
|
|
2097
2092
|
console.log(` ${S.label("Secrets strategy")} ${strategyColor(secretsStrategy)}`);
|
|
@@ -2231,6 +2226,14 @@ function makeLogsCommand() {
|
|
|
2231
2226
|
}
|
|
2232
2227
|
);
|
|
2233
2228
|
}
|
|
2229
|
+
var ORIGIN_META = {
|
|
2230
|
+
library: { icon: "\u{1F4DA}", label: "Library" },
|
|
2231
|
+
source: { icon: "\u{1F517}", label: "Sources" },
|
|
2232
|
+
store: { icon: "\u{1F4E6}", label: "Store" }
|
|
2233
|
+
};
|
|
2234
|
+
var ORIGIN_ORDER = ["library", "source", "store"];
|
|
2235
|
+
var srcKey = (origin, publisher) => `${origin}:${publisher}`;
|
|
2236
|
+
var repoKey = (origin, publisher, repo) => `${origin}:${publisher}:${repo}`;
|
|
2234
2237
|
var am;
|
|
2235
2238
|
var state = {
|
|
2236
2239
|
tab: "assets",
|
|
@@ -2241,39 +2244,61 @@ var state = {
|
|
|
2241
2244
|
visibleRows: [],
|
|
2242
2245
|
pendingAdds: /* @__PURE__ */ new Set(),
|
|
2243
2246
|
pendingRemoves: /* @__PURE__ */ new Set(),
|
|
2247
|
+
collapsedOrigins: /* @__PURE__ */ new Set(),
|
|
2244
2248
|
collapsedSources: /* @__PURE__ */ new Set(),
|
|
2245
2249
|
collapsedRepos: /* @__PURE__ */ new Set(),
|
|
2250
|
+
seenOrigins: /* @__PURE__ */ new Set(),
|
|
2251
|
+
originFilter: null,
|
|
2246
2252
|
message: "",
|
|
2247
2253
|
cols: 80,
|
|
2248
2254
|
awaitingExitConfirm: false
|
|
2249
2255
|
};
|
|
2250
|
-
function buildVisibleRows(rows, collapsedSources, collapsedRepos) {
|
|
2256
|
+
function buildVisibleRows(rows, collapsedOrigins, collapsedSources, collapsedRepos, originFilter = null) {
|
|
2251
2257
|
return rows.filter((row) => {
|
|
2258
|
+
const origin = rowOrigin(row);
|
|
2259
|
+
if (originFilter && origin !== originFilter) return false;
|
|
2260
|
+
if (row.type === "origin-header") return true;
|
|
2261
|
+
if (collapsedOrigins.has(origin)) return false;
|
|
2252
2262
|
if (row.type === "publisher-header") return true;
|
|
2253
2263
|
if (row.type === "repo-header") {
|
|
2254
|
-
return !collapsedSources.has(row.source);
|
|
2264
|
+
return !collapsedSources.has(srcKey(origin, row.source));
|
|
2255
2265
|
}
|
|
2256
|
-
const publisher = row
|
|
2257
|
-
if (collapsedSources.has(publisher)) return false;
|
|
2258
|
-
const repo = row
|
|
2259
|
-
return repo === "" || !collapsedRepos.has(
|
|
2266
|
+
const publisher = rowPublisher(row);
|
|
2267
|
+
if (collapsedSources.has(srcKey(origin, publisher))) return false;
|
|
2268
|
+
const repo = rowRepo(row);
|
|
2269
|
+
return repo === "" || !collapsedRepos.has(repoKey(origin, publisher, repo));
|
|
2260
2270
|
});
|
|
2261
2271
|
}
|
|
2262
|
-
function
|
|
2263
|
-
return rows.filter((r) => isAsset(r) &&
|
|
2272
|
+
function originAssetRefs(rows, origin) {
|
|
2273
|
+
return refsOf(rows.filter((r) => isAsset(r) && rowOrigin(r) === origin));
|
|
2264
2274
|
}
|
|
2265
|
-
function
|
|
2266
|
-
return rows.filter((r) => isAsset(r) &&
|
|
2275
|
+
function repoAssetRefs(rows, origin, publisher, repo) {
|
|
2276
|
+
return refsOf(rows.filter((r) => isAsset(r) && inRepo(r, origin, publisher, repo)));
|
|
2277
|
+
}
|
|
2278
|
+
function sourceAssetRefs(rows, origin, source) {
|
|
2279
|
+
return refsOf(rows.filter((r) => isAsset(r) && inSource(r, origin, source)));
|
|
2267
2280
|
}
|
|
2268
2281
|
function isAsset(r) {
|
|
2269
2282
|
return r.type === "asset";
|
|
2270
2283
|
}
|
|
2271
|
-
function
|
|
2272
|
-
return
|
|
2284
|
+
function rowOrigin(r) {
|
|
2285
|
+
return r.origin ?? "source";
|
|
2286
|
+
}
|
|
2287
|
+
function rowPublisher(r) {
|
|
2288
|
+
return r.entry?.publisher || "other";
|
|
2289
|
+
}
|
|
2290
|
+
function rowRepo(r) {
|
|
2291
|
+
return r.entry?.repo || "";
|
|
2292
|
+
}
|
|
2293
|
+
function refsOf(rows) {
|
|
2294
|
+
return rows.map((r) => assetRefOf(r)).filter((ref) => ref !== null);
|
|
2295
|
+
}
|
|
2296
|
+
function inSource(r, origin, source) {
|
|
2297
|
+
return rowOrigin(r) === origin && rowPublisher(r) === source;
|
|
2273
2298
|
}
|
|
2274
|
-
function inRepo(r, publisher, repo) {
|
|
2275
|
-
if (!inSource(r, publisher)) return false;
|
|
2276
|
-
return (r
|
|
2299
|
+
function inRepo(r, origin, publisher, repo) {
|
|
2300
|
+
if (!inSource(r, origin, publisher)) return false;
|
|
2301
|
+
return rowRepo(r) === repo;
|
|
2277
2302
|
}
|
|
2278
2303
|
function assetRefOf(r) {
|
|
2279
2304
|
if (!isAsset(r) || !r.entry?.publisher) return null;
|
|
@@ -2319,62 +2344,84 @@ function bulkSelection(refs, action3) {
|
|
|
2319
2344
|
for (const ref of refs) setSelection(ref, action3);
|
|
2320
2345
|
}
|
|
2321
2346
|
function actOnHeader(row, action3) {
|
|
2347
|
+
if (row.type === "origin-header") {
|
|
2348
|
+
bulkSelection(originAssetRefs(state.assetRows, rowOrigin(row)), action3);
|
|
2349
|
+
return true;
|
|
2350
|
+
}
|
|
2322
2351
|
if (row.type === "publisher-header") {
|
|
2323
|
-
bulkSelection(sourceAssetRefs(state.assetRows, row.source), action3);
|
|
2352
|
+
bulkSelection(sourceAssetRefs(state.assetRows, rowOrigin(row), row.source), action3);
|
|
2324
2353
|
return true;
|
|
2325
2354
|
}
|
|
2326
2355
|
if (row.type === "repo-header") {
|
|
2327
|
-
bulkSelection(repoAssetRefs(state.assetRows, row.source, row.repo), action3);
|
|
2356
|
+
bulkSelection(repoAssetRefs(state.assetRows, rowOrigin(row), row.source, row.repo), action3);
|
|
2328
2357
|
return true;
|
|
2329
2358
|
}
|
|
2330
2359
|
return false;
|
|
2331
2360
|
}
|
|
2332
2361
|
async function loadAssets() {
|
|
2333
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
2362
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-2V7LZIG7.js');
|
|
2334
2363
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
2335
2364
|
if (notes.length > 0) {
|
|
2336
2365
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
2337
2366
|
}
|
|
2338
2367
|
const installed = new Set(am.listDeployed().map((e) => `${e.kind}:${e.name}`));
|
|
2339
|
-
const
|
|
2340
|
-
for (const
|
|
2341
|
-
const publisher =
|
|
2342
|
-
const repo =
|
|
2368
|
+
const byOrigin = /* @__PURE__ */ new Map();
|
|
2369
|
+
for (const { origin, entry } of entries) {
|
|
2370
|
+
const publisher = entry.publisher || "other";
|
|
2371
|
+
const repo = entry.repo || "";
|
|
2372
|
+
if (!byOrigin.has(origin)) byOrigin.set(origin, /* @__PURE__ */ new Map());
|
|
2373
|
+
const byPublisher = byOrigin.get(origin);
|
|
2343
2374
|
if (!byPublisher.has(publisher)) byPublisher.set(publisher, /* @__PURE__ */ new Map());
|
|
2344
2375
|
const byRepo = byPublisher.get(publisher);
|
|
2345
2376
|
if (!byRepo.has(repo)) byRepo.set(repo, []);
|
|
2346
|
-
byRepo.get(repo).push(
|
|
2377
|
+
byRepo.get(repo).push(entry);
|
|
2347
2378
|
}
|
|
2348
2379
|
const rows = [];
|
|
2349
|
-
for (const
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
rows.push({ type: "
|
|
2353
|
-
const
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
);
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2380
|
+
for (const origin of ORIGIN_ORDER) {
|
|
2381
|
+
const byPublisher = byOrigin.get(origin);
|
|
2382
|
+
if (!byPublisher || byPublisher.size === 0) continue;
|
|
2383
|
+
rows.push({ type: "origin-header", origin });
|
|
2384
|
+
for (const [publisher, byRepo] of [...byPublisher.entries()].sort(
|
|
2385
|
+
(a, b) => a[0].localeCompare(b[0])
|
|
2386
|
+
)) {
|
|
2387
|
+
rows.push({ type: "publisher-header", origin, source: publisher });
|
|
2388
|
+
const pushAssets = (items) => {
|
|
2389
|
+
items.sort(
|
|
2390
|
+
(a, b) => a.kind !== b.kind ? a.kind.localeCompare(b.kind) : a.name.localeCompare(b.name)
|
|
2391
|
+
);
|
|
2392
|
+
for (const entry of items) {
|
|
2393
|
+
const ref = `${entry.kind}:${entry.name}`;
|
|
2394
|
+
rows.push({ type: "asset", origin, entry, installed: installed.has(ref) });
|
|
2395
|
+
}
|
|
2396
|
+
};
|
|
2397
|
+
const noRepo = byRepo.get("");
|
|
2398
|
+
if (noRepo) pushAssets(noRepo);
|
|
2399
|
+
for (const [repo, items] of [...byRepo.entries()].filter(([r]) => r !== "").sort((a, b) => a[0].localeCompare(b[0]))) {
|
|
2400
|
+
rows.push({ type: "repo-header", origin, source: publisher, repo });
|
|
2401
|
+
pushAssets(items);
|
|
2360
2402
|
}
|
|
2361
|
-
};
|
|
2362
|
-
const noRepo = byRepo.get("");
|
|
2363
|
-
if (noRepo) pushAssets(noRepo);
|
|
2364
|
-
for (const [repo, items] of [...byRepo.entries()].filter(([r]) => r !== "").sort((a, b) => a[0].localeCompare(b[0]))) {
|
|
2365
|
-
rows.push({ type: "repo-header", source: publisher, repo });
|
|
2366
|
-
pushAssets(items);
|
|
2367
2403
|
}
|
|
2368
2404
|
}
|
|
2369
2405
|
state.assetRows = rows;
|
|
2406
|
+
const presentOrigins = new Set(rows.filter((r) => r.type === "origin-header").map(rowOrigin));
|
|
2407
|
+
for (const o of presentOrigins) {
|
|
2408
|
+
if (!state.seenOrigins.has(o)) {
|
|
2409
|
+
if (o === "store") state.collapsedOrigins.add(o);
|
|
2410
|
+
state.seenOrigins.add(o);
|
|
2411
|
+
}
|
|
2412
|
+
}
|
|
2413
|
+
for (const o of state.collapsedOrigins) {
|
|
2414
|
+
if (!presentOrigins.has(o)) state.collapsedOrigins.delete(o);
|
|
2415
|
+
}
|
|
2416
|
+
if (state.originFilter && !presentOrigins.has(state.originFilter)) state.originFilter = null;
|
|
2370
2417
|
const newSources = new Set(
|
|
2371
|
-
rows.filter((r) => r.type === "publisher-header").map((r) => r.source)
|
|
2418
|
+
rows.filter((r) => r.type === "publisher-header").map((r) => srcKey(rowOrigin(r), r.source))
|
|
2372
2419
|
);
|
|
2373
2420
|
for (const s of state.collapsedSources) {
|
|
2374
2421
|
if (!newSources.has(s)) state.collapsedSources.delete(s);
|
|
2375
2422
|
}
|
|
2376
2423
|
const newRepoKeys = new Set(
|
|
2377
|
-
rows.filter((r) => r.type === "repo-header").map((r) =>
|
|
2424
|
+
rows.filter((r) => r.type === "repo-header").map((r) => repoKey(rowOrigin(r), r.source, r.repo))
|
|
2378
2425
|
);
|
|
2379
2426
|
for (const d of state.collapsedRepos) {
|
|
2380
2427
|
if (!newRepoKeys.has(d)) state.collapsedRepos.delete(d);
|
|
@@ -2385,7 +2432,7 @@ async function loadAssets() {
|
|
|
2385
2432
|
async function loadSourcesAndLibraries() {
|
|
2386
2433
|
try {
|
|
2387
2434
|
const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
|
|
2388
|
-
import('../open-library-
|
|
2435
|
+
import('../open-library-3VJY74LQ.js'),
|
|
2389
2436
|
import('../library/index.js')
|
|
2390
2437
|
]);
|
|
2391
2438
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -2423,8 +2470,10 @@ async function loadSourcesAndLibraries() {
|
|
|
2423
2470
|
function rebuildVisible() {
|
|
2424
2471
|
state.visibleRows = buildVisibleRows(
|
|
2425
2472
|
state.assetRows,
|
|
2473
|
+
state.collapsedOrigins,
|
|
2426
2474
|
state.collapsedSources,
|
|
2427
|
-
state.collapsedRepos
|
|
2475
|
+
state.collapsedRepos,
|
|
2476
|
+
state.originFilter
|
|
2428
2477
|
);
|
|
2429
2478
|
clampCursor();
|
|
2430
2479
|
}
|
|
@@ -2448,7 +2497,7 @@ var TABS = {
|
|
|
2448
2497
|
rowCount: () => state.visibleRows.length,
|
|
2449
2498
|
selectableCount: () => state.assetRows.filter(isAsset).length,
|
|
2450
2499
|
renderRow: (i, sel) => renderAssetRow(state.visibleRows[i], sel),
|
|
2451
|
-
footer: " \u2191\u2193/jk
|
|
2500
|
+
footer: " \u2191\u2193/jk nav \u2190/\u2192 collapse/expand [space/+/-] select [a/\u21B5] apply [i] info [1]lib [2]src [3]store [0]all Tab switch [q] quit"
|
|
2452
2501
|
},
|
|
2453
2502
|
sources: {
|
|
2454
2503
|
label: "Sources",
|
|
@@ -2532,24 +2581,38 @@ function renderHeaderLine(opts) {
|
|
|
2532
2581
|
return opts.selected ? pc5.bgWhite(pc5.black(`${line} `.padEnd(state.cols))) : line;
|
|
2533
2582
|
}
|
|
2534
2583
|
function renderAssetRow(row, selected) {
|
|
2535
|
-
if (row.type === "
|
|
2584
|
+
if (row.type === "origin-header") {
|
|
2585
|
+
const origin = rowOrigin(row);
|
|
2586
|
+
const meta = ORIGIN_META[origin];
|
|
2536
2587
|
return renderHeaderLine({
|
|
2537
2588
|
indent: " ",
|
|
2538
|
-
collapsed: state.
|
|
2539
|
-
match: (r) => isAsset(r) &&
|
|
2540
|
-
refs:
|
|
2589
|
+
collapsed: state.collapsedOrigins.has(origin),
|
|
2590
|
+
match: (r) => isAsset(r) && rowOrigin(r) === origin,
|
|
2591
|
+
refs: originAssetRefs(state.assetRows, origin),
|
|
2592
|
+
label: `${meta.icon} ${pc5.bold(pc5.cyan(meta.label))}`,
|
|
2593
|
+
selected
|
|
2594
|
+
});
|
|
2595
|
+
}
|
|
2596
|
+
if (row.type === "publisher-header") {
|
|
2597
|
+
const origin = rowOrigin(row);
|
|
2598
|
+
return renderHeaderLine({
|
|
2599
|
+
indent: " ".repeat(3),
|
|
2600
|
+
collapsed: state.collapsedSources.has(srcKey(origin, row.source)),
|
|
2601
|
+
match: (r) => isAsset(r) && inSource(r, origin, row.source),
|
|
2602
|
+
refs: sourceAssetRefs(state.assetRows, origin, row.source),
|
|
2541
2603
|
label: pc5.bold(pc5.cyan(row.source)),
|
|
2542
2604
|
selected
|
|
2543
2605
|
});
|
|
2544
2606
|
}
|
|
2545
2607
|
if (row.type === "repo-header") {
|
|
2608
|
+
const origin = rowOrigin(row);
|
|
2546
2609
|
const slug = row.repo;
|
|
2547
2610
|
const bare = slug.includes("/") ? slug.slice(slug.indexOf("/") + 1) : slug;
|
|
2548
2611
|
return renderHeaderLine({
|
|
2549
|
-
indent: " ".repeat(
|
|
2550
|
-
collapsed: state.collapsedRepos.has(
|
|
2551
|
-
match: (r) => isAsset(r) && inRepo(r, row.source, slug),
|
|
2552
|
-
refs: repoAssetRefs(state.assetRows, row.source, slug),
|
|
2612
|
+
indent: " ".repeat(5),
|
|
2613
|
+
collapsed: state.collapsedRepos.has(repoKey(origin, row.source, slug)),
|
|
2614
|
+
match: (r) => isAsset(r) && inRepo(r, origin, row.source, slug),
|
|
2615
|
+
refs: repoAssetRefs(state.assetRows, origin, row.source, slug),
|
|
2553
2616
|
label: pc5.bold(bare),
|
|
2554
2617
|
selected
|
|
2555
2618
|
});
|
|
@@ -2561,12 +2624,12 @@ function renderAssetRow(row, selected) {
|
|
|
2561
2624
|
else if (state.pendingRemoves.has(ref)) status4 = pc5.red("- ");
|
|
2562
2625
|
else if (row.installed) status4 = pc5.green("\u2713 ");
|
|
2563
2626
|
else status4 = pc5.dim("\xB7 ");
|
|
2564
|
-
const kind = kindColorPad(e.kind
|
|
2627
|
+
const kind = kindColorPad(e.kind);
|
|
2565
2628
|
const name = fitWidth(e.name, 30);
|
|
2566
2629
|
const badge = e.category ? `${pc5.dim("[")}${pc5.cyan(e.category)}${pc5.dim("]")} ` : "";
|
|
2567
2630
|
const badgeWidth = e.category ? e.category.length + 3 : 0;
|
|
2568
|
-
const desc = e.description?.slice(0, Math.max(0, state.cols -
|
|
2569
|
-
const indent = " ".repeat(e.repo ?
|
|
2631
|
+
const desc = e.description?.slice(0, Math.max(0, state.cols - 56 - badgeWidth)) ?? "";
|
|
2632
|
+
const indent = " ".repeat(e.repo ? 7 : 5);
|
|
2570
2633
|
const line = `${indent}${status4} ${kind} ${name} ${badge}${pc5.dim(desc)}`;
|
|
2571
2634
|
return selected ? pc5.inverse(line.padEnd(state.cols)) : line;
|
|
2572
2635
|
}
|
|
@@ -2587,7 +2650,8 @@ function render() {
|
|
|
2587
2650
|
const overhead = 5 + pendingLines + msgLines;
|
|
2588
2651
|
const maxRows = Math.max(5, (process.stdout.rows || 30) - overhead);
|
|
2589
2652
|
console.log();
|
|
2590
|
-
|
|
2653
|
+
const filterTag = state.tab === "assets" && state.originFilter ? ` ${pc5.bgYellow(pc5.black(` filter: ${ORIGIN_META[state.originFilter].label} `))} ${pc5.dim("[0] clear")}` : "";
|
|
2654
|
+
console.log(` ${pc5.bold("skaile manage")} ${renderTabs()}${filterTag}`);
|
|
2591
2655
|
console.log(` ${S.rule(state.cols - 4)}`);
|
|
2592
2656
|
const spec = TABS[state.tab];
|
|
2593
2657
|
const total = spec.rowCount();
|
|
@@ -2680,9 +2744,10 @@ async function showInfo() {
|
|
|
2680
2744
|
console.log();
|
|
2681
2745
|
console.log(` ${kindColor(e.kind)} ${pc5.bold(e.name)}`);
|
|
2682
2746
|
console.log(` ${S.rule(50)}`);
|
|
2747
|
+
console.log(` origin: ${pc5.dim(ORIGIN_META[rowOrigin(row)].label)}`);
|
|
2683
2748
|
if (e.version) console.log(` version: ${e.version}`);
|
|
2684
2749
|
if (e.description) console.log(` description: ${e.description}`);
|
|
2685
|
-
if (e.publisher) console.log(`
|
|
2750
|
+
if (e.publisher) console.log(` publisher: ${pc5.dim(e.publisher)}`);
|
|
2686
2751
|
console.log(` manifest: ${pc5.dim(e.source)}`);
|
|
2687
2752
|
console.log(` installed: ${row.installed ? pc5.green("yes") : pc5.red("no")}`);
|
|
2688
2753
|
if (e.requires.length) {
|
|
@@ -2703,14 +2768,31 @@ async function showInfo() {
|
|
|
2703
2768
|
process.stdin.once("data", onData);
|
|
2704
2769
|
});
|
|
2705
2770
|
}
|
|
2771
|
+
function setOriginFilter(origin) {
|
|
2772
|
+
if (origin === null || state.originFilter === origin) {
|
|
2773
|
+
state.originFilter = null;
|
|
2774
|
+
} else if (state.seenOrigins.has(origin)) {
|
|
2775
|
+
state.originFilter = origin;
|
|
2776
|
+
state.collapsedOrigins.delete(origin);
|
|
2777
|
+
} else {
|
|
2778
|
+
state.message = pc5.dim(`No ${ORIGIN_META[origin].label} assets to show.`);
|
|
2779
|
+
return;
|
|
2780
|
+
}
|
|
2781
|
+
state.cursor = 0;
|
|
2782
|
+
rebuildVisible();
|
|
2783
|
+
}
|
|
2706
2784
|
function expandUnderCursor() {
|
|
2707
2785
|
const row = state.visibleRows[state.cursor];
|
|
2708
2786
|
if (!row) return;
|
|
2709
|
-
|
|
2710
|
-
|
|
2787
|
+
const origin = rowOrigin(row);
|
|
2788
|
+
if (row.type === "origin-header" && state.collapsedOrigins.has(origin)) {
|
|
2789
|
+
state.collapsedOrigins.delete(origin);
|
|
2790
|
+
rebuildVisible();
|
|
2791
|
+
} else if (row.type === "publisher-header" && state.collapsedSources.has(srcKey(origin, row.source))) {
|
|
2792
|
+
state.collapsedSources.delete(srcKey(origin, row.source));
|
|
2711
2793
|
rebuildVisible();
|
|
2712
2794
|
} else if (row.type === "repo-header") {
|
|
2713
|
-
const dk =
|
|
2795
|
+
const dk = repoKey(origin, row.source, row.repo);
|
|
2714
2796
|
if (state.collapsedRepos.has(dk)) {
|
|
2715
2797
|
state.collapsedRepos.delete(dk);
|
|
2716
2798
|
rebuildVisible();
|
|
@@ -2720,15 +2802,31 @@ function expandUnderCursor() {
|
|
|
2720
2802
|
function collapseOrJumpUnderCursor() {
|
|
2721
2803
|
const row = state.visibleRows[state.cursor];
|
|
2722
2804
|
if (!row) return;
|
|
2805
|
+
const origin = rowOrigin(row);
|
|
2806
|
+
if (row.type === "origin-header") {
|
|
2807
|
+
if (!state.collapsedOrigins.has(origin)) {
|
|
2808
|
+
state.collapsedOrigins.add(origin);
|
|
2809
|
+
rebuildVisible();
|
|
2810
|
+
}
|
|
2811
|
+
return;
|
|
2812
|
+
}
|
|
2723
2813
|
if (row.type === "publisher-header") {
|
|
2724
|
-
|
|
2725
|
-
|
|
2814
|
+
const sk = srcKey(origin, row.source);
|
|
2815
|
+
if (!state.collapsedSources.has(sk)) {
|
|
2816
|
+
state.collapsedSources.add(sk);
|
|
2726
2817
|
rebuildVisible();
|
|
2818
|
+
} else {
|
|
2819
|
+
const idx2 = findLastIndex(
|
|
2820
|
+
state.visibleRows,
|
|
2821
|
+
state.cursor,
|
|
2822
|
+
(r) => r.type === "origin-header"
|
|
2823
|
+
);
|
|
2824
|
+
if (idx2 >= 0) state.cursor = idx2;
|
|
2727
2825
|
}
|
|
2728
2826
|
return;
|
|
2729
2827
|
}
|
|
2730
2828
|
if (row.type === "repo-header") {
|
|
2731
|
-
const dk =
|
|
2829
|
+
const dk = repoKey(origin, row.source, row.repo);
|
|
2732
2830
|
if (!state.collapsedRepos.has(dk)) {
|
|
2733
2831
|
state.collapsedRepos.add(dk);
|
|
2734
2832
|
rebuildVisible();
|
|
@@ -2745,7 +2843,7 @@ function collapseOrJumpUnderCursor() {
|
|
|
2745
2843
|
const idx = findLastIndex(
|
|
2746
2844
|
state.visibleRows,
|
|
2747
2845
|
state.cursor,
|
|
2748
|
-
(r) => r.type === "repo-header" || r.type === "publisher-header"
|
|
2846
|
+
(r) => r.type === "repo-header" || r.type === "publisher-header" || r.type === "origin-header"
|
|
2749
2847
|
);
|
|
2750
2848
|
if (idx >= 0) state.cursor = idx;
|
|
2751
2849
|
}
|
|
@@ -2846,7 +2944,12 @@ var KEYMAP = [
|
|
|
2846
2944
|
// Enter — apply on assets tab
|
|
2847
2945
|
{ keys: ["\r", "\n"], when: TAB_ASSETS, run: applyChanges },
|
|
2848
2946
|
// Info — assets only
|
|
2849
|
-
{ keys: ["i"], when: TAB_ASSETS, run: showInfo }
|
|
2947
|
+
{ keys: ["i"], when: TAB_ASSETS, run: showInfo },
|
|
2948
|
+
// Origin filter — assets only. 1/2/3 isolate one origin, 0 clears.
|
|
2949
|
+
{ keys: ["1"], when: TAB_ASSETS, run: () => setOriginFilter("library") },
|
|
2950
|
+
{ keys: ["2"], when: TAB_ASSETS, run: () => setOriginFilter("source") },
|
|
2951
|
+
{ keys: ["3"], when: TAB_ASSETS, run: () => setOriginFilter("store") },
|
|
2952
|
+
{ keys: ["0"], when: TAB_ASSETS, run: () => setOriginFilter(null) }
|
|
2850
2953
|
];
|
|
2851
2954
|
async function dispatchKey(key) {
|
|
2852
2955
|
for (const b of KEYMAP) {
|
|
@@ -3717,7 +3820,7 @@ function action2(fn) {
|
|
|
3717
3820
|
};
|
|
3718
3821
|
}
|
|
3719
3822
|
async function reconcileAndReport(projectDir, plugins) {
|
|
3720
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
3823
|
+
const { reconcilePlugins } = await import('../plugin-store-GL5VKYUA.js');
|
|
3721
3824
|
if (plugins.length === 0) {
|
|
3722
3825
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
3723
3826
|
return;
|
|
@@ -3733,7 +3836,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
3733
3836
|
async function runInstall2(spec, opts) {
|
|
3734
3837
|
const projectDir = path15__default.resolve(opts.projectDir);
|
|
3735
3838
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
3736
|
-
const { specName } = await import('../plugin-store-
|
|
3839
|
+
const { specName } = await import('../plugin-store-GL5VKYUA.js');
|
|
3737
3840
|
const yamlPath = path15__default.join(projectDir, "skaile.yaml");
|
|
3738
3841
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
3739
3842
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -3745,7 +3848,7 @@ async function runInstall2(spec, opts) {
|
|
|
3745
3848
|
async function runRemove(name, opts) {
|
|
3746
3849
|
const projectDir = path15__default.resolve(opts.projectDir);
|
|
3747
3850
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
3748
|
-
const { specName } = await import('../plugin-store-
|
|
3851
|
+
const { specName } = await import('../plugin-store-GL5VKYUA.js');
|
|
3749
3852
|
const yamlPath = path15__default.join(projectDir, "skaile.yaml");
|
|
3750
3853
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
3751
3854
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -3773,7 +3876,7 @@ async function runList(opts) {
|
|
|
3773
3876
|
const registry = createPluginRegistry();
|
|
3774
3877
|
if (declared.length > 0) {
|
|
3775
3878
|
try {
|
|
3776
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
3879
|
+
const { loadPlugins } = await import('../plugin-store-GL5VKYUA.js');
|
|
3777
3880
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
3778
3881
|
for (const f of result.failed) logWarn(f.error);
|
|
3779
3882
|
} catch (err) {
|
|
@@ -3984,7 +4087,7 @@ function makeInstallCommand() {
|
|
|
3984
4087
|
const spinner6 = p5.spinner();
|
|
3985
4088
|
spinner6.start(`Installing ${ref}`);
|
|
3986
4089
|
try {
|
|
3987
|
-
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-
|
|
4090
|
+
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-3VJY74LQ.js');
|
|
3988
4091
|
const catalog = await openCatalogSource2({ projectDir: path15__default.resolve(opts.projectDir) });
|
|
3989
4092
|
if (!supportsInstallManifest(catalog)) {
|
|
3990
4093
|
throw new Error(
|
|
@@ -4016,7 +4119,7 @@ function makeInstallCommand() {
|
|
|
4016
4119
|
}
|
|
4017
4120
|
const projectDir = path15__default.resolve(opts.projectDir);
|
|
4018
4121
|
try {
|
|
4019
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
4122
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-BNSRO5G7.js');
|
|
4020
4123
|
const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
|
|
4021
4124
|
if (hydrate.cloned.length > 0) {
|
|
4022
4125
|
logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
|
|
@@ -4451,12 +4554,12 @@ function makeServeCommand() {
|
|
|
4451
4554
|
);
|
|
4452
4555
|
}
|
|
4453
4556
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
4454
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
4557
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-F4NZ66VD.js');
|
|
4455
4558
|
try {
|
|
4456
4559
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
4457
4560
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
4458
4561
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
4459
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
4562
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-GL5VKYUA.js');
|
|
4460
4563
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
4461
4564
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
4462
4565
|
if (result.loaded.length > 0) {
|
|
@@ -4470,14 +4573,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
4470
4573
|
}
|
|
4471
4574
|
}
|
|
4472
4575
|
async function runCompileTest(opts) {
|
|
4473
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
4576
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-F4NZ66VD.js');
|
|
4474
4577
|
const { tmpdir } = await import('os');
|
|
4475
4578
|
const { dirname: dirname3, join: join5, resolve: resolve4 } = await import('path');
|
|
4476
4579
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
4477
4580
|
const { unlinkSync, existsSync: existsSync12 } = await import('fs');
|
|
4478
4581
|
const { spawn } = await import('child_process');
|
|
4479
4582
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
4480
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
4583
|
+
const { MONOREPO_ROOT } = await import('../paths-CE66L3AL.js');
|
|
4481
4584
|
if (MONOREPO_ROOT === null) {
|
|
4482
4585
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
4483
4586
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -6478,7 +6581,7 @@ program.command("init [project-dir]").description("Initialize a project director
|
|
|
6478
6581
|
);
|
|
6479
6582
|
}
|
|
6480
6583
|
try {
|
|
6481
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
6584
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-BNSRO5G7.js');
|
|
6482
6585
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
6483
6586
|
for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
|
|
6484
6587
|
if (hydrate.failed.length > 0) {
|
|
@@ -6504,7 +6607,7 @@ program.command("init [project-dir]").description("Initialize a project director
|
|
|
6504
6607
|
console.log();
|
|
6505
6608
|
});
|
|
6506
6609
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
6507
|
-
const { cmdSetup } = await import('../setup-
|
|
6610
|
+
const { cmdSetup } = await import('../setup-4YMN2BDU.js');
|
|
6508
6611
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
6509
6612
|
});
|
|
6510
6613
|
program.addCommand(makeInstallCommand());
|