@skaile/workspaces 0.22.0-beta.2 → 0.22.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.
Files changed (99) hide show
  1. package/CHANGELOG.md +295 -0
  2. package/dist/{asset-feeds-2M6UKEJ7.js → asset-feeds-Y2CDCM3W.js} +8 -8
  3. package/dist/{asset-feeds-2M6UKEJ7.js.map → asset-feeds-Y2CDCM3W.js.map} +1 -1
  4. package/dist/asset-manager/index.js +6 -6
  5. package/dist/asset-manager/installer.js +5 -5
  6. package/dist/base-assets/connectors/deploy.js +6 -6
  7. package/dist/base-assets/connectors/devserver.js +6 -6
  8. package/dist/base-assets/connectors/flow/adapter.js +6 -6
  9. package/dist/base-assets/connectors/flow/run-flow.js +7 -7
  10. package/dist/base-assets/connectors/flow.js +6 -6
  11. package/dist/base-assets/connectors/git.js +6 -6
  12. package/dist/base-assets/connectors/gmail.js +6 -6
  13. package/dist/base-assets/connectors/googledrive.js +6 -6
  14. package/dist/base-assets/connectors/local.js +6 -6
  15. package/dist/base-assets/connectors/mattermost.js +6 -6
  16. package/dist/base-assets/connectors/memory.js +6 -6
  17. package/dist/base-assets/connectors/minio.js +6 -6
  18. package/dist/base-assets/connectors/postgres.js +6 -6
  19. package/dist/base-assets/connectors/s3.js +6 -6
  20. package/dist/base-assets/connectors/sharepoint.js +6 -6
  21. package/dist/base-assets/connectors/sqlite.js +6 -6
  22. package/dist/base-assets/connectors/static-server.js +6 -6
  23. package/dist/base-assets/connectors/tunnel.js +6 -6
  24. package/dist/base-assets/connectors/webdav.js +6 -6
  25. package/dist/base-assets/connectors/xstate-store.js +6 -6
  26. package/dist/base-assets/connectors/xstate.js +6 -6
  27. package/dist/{chunk-LDLZFYLR.js → chunk-2RYQERIT.js} +4 -4
  28. package/dist/{chunk-LDLZFYLR.js.map → chunk-2RYQERIT.js.map} +1 -1
  29. package/dist/{chunk-3KLWGHDE.js → chunk-53UNDY6K.js} +5 -5
  30. package/dist/{chunk-3KLWGHDE.js.map → chunk-53UNDY6K.js.map} +1 -1
  31. package/dist/{chunk-TWQPDBHB.js → chunk-7HSXUKNB.js} +6 -6
  32. package/dist/{chunk-TWQPDBHB.js.map → chunk-7HSXUKNB.js.map} +1 -1
  33. package/dist/{chunk-P4FYHEHW.js → chunk-ETMUGBHF.js} +3 -3
  34. package/dist/{chunk-P4FYHEHW.js.map → chunk-ETMUGBHF.js.map} +1 -1
  35. package/dist/{chunk-CEUHU3C4.js → chunk-JN2CUVSU.js} +3 -3
  36. package/dist/{chunk-CEUHU3C4.js.map → chunk-JN2CUVSU.js.map} +1 -1
  37. package/dist/{chunk-UBLTUFFI.js → chunk-K2HDYSAM.js} +4 -4
  38. package/dist/{chunk-UBLTUFFI.js.map → chunk-K2HDYSAM.js.map} +1 -1
  39. package/dist/{chunk-NQL3T75I.js → chunk-K7WPR77X.js} +21 -3
  40. package/dist/chunk-K7WPR77X.js.map +1 -0
  41. package/dist/{chunk-I5SGBFMM.js → chunk-MNAHNDUI.js} +3 -3
  42. package/dist/{chunk-I5SGBFMM.js.map → chunk-MNAHNDUI.js.map} +1 -1
  43. package/dist/{chunk-M5JDVO6D.js → chunk-NBJ5TOEC.js} +3 -3
  44. package/dist/{chunk-M5JDVO6D.js.map → chunk-NBJ5TOEC.js.map} +1 -1
  45. package/dist/{chunk-FIHVQFXB.js → chunk-NDD5VMN5.js} +2 -2
  46. package/dist/{chunk-FIHVQFXB.js.map → chunk-NDD5VMN5.js.map} +1 -1
  47. package/dist/{chunk-6SA2SIOU.js → chunk-OJN25VJO.js} +4 -4
  48. package/dist/{chunk-6SA2SIOU.js.map → chunk-OJN25VJO.js.map} +1 -1
  49. package/dist/{chunk-74GTZ4TJ.js → chunk-PFOXL4SH.js} +4 -4
  50. package/dist/{chunk-74GTZ4TJ.js.map → chunk-PFOXL4SH.js.map} +1 -1
  51. package/dist/{chunk-NICAMYPV.js → chunk-SKXCTV55.js} +8 -8
  52. package/dist/{chunk-NICAMYPV.js.map → chunk-SKXCTV55.js.map} +1 -1
  53. package/dist/{chunk-LDYPQVRU.js → chunk-V5TBKO5Q.js} +44 -11
  54. package/dist/chunk-V5TBKO5Q.js.map +1 -0
  55. package/dist/{chunk-FVZLCBSX.js → chunk-WH2EB2SF.js} +3 -3
  56. package/dist/{chunk-FVZLCBSX.js.map → chunk-WH2EB2SF.js.map} +1 -1
  57. package/dist/cli/index.js +41 -36
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/cli/src/commands/manage.d.ts +1 -1
  60. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  61. package/dist/connectors/config.js +5 -5
  62. package/dist/connectors/index.js +6 -6
  63. package/dist/core/index.js +4 -4
  64. package/dist/core/manifest.js +1 -1
  65. package/dist/core/runtime-assets.js +3 -3
  66. package/dist/core/src/index.d.ts +2 -2
  67. package/dist/core/src/index.d.ts.map +1 -1
  68. package/dist/core/src/manifest.d.ts +16 -0
  69. package/dist/core/src/manifest.d.ts.map +1 -1
  70. package/dist/core/src/repo-manager.d.ts.map +1 -1
  71. package/dist/core/src/walker.d.ts +4 -0
  72. package/dist/core/src/walker.d.ts.map +1 -1
  73. package/dist/core/src/workspace-config.d.ts +14 -0
  74. package/dist/core/src/workspace-config.d.ts.map +1 -1
  75. package/dist/core/workspace-config.js +2 -2
  76. package/dist/deploy/index.js +4 -4
  77. package/dist/discovery/index.js +2 -2
  78. package/dist/{ensure-sources-ALTI5PXR.js → ensure-sources-REWWBH2K.js} +8 -8
  79. package/dist/{ensure-sources-ALTI5PXR.js.map → ensure-sources-REWWBH2K.js.map} +1 -1
  80. package/dist/library/index.js +3 -3
  81. package/dist/{open-library-EEGG6RDN.js → open-library-CT4VVESU.js} +6 -6
  82. package/dist/{open-library-EEGG6RDN.js.map → open-library-CT4VVESU.js.map} +1 -1
  83. package/dist/{plugin-store-G277ZX3B.js → plugin-store-QS7TC5HY.js} +6 -6
  84. package/dist/{plugin-store-G277ZX3B.js.map → plugin-store-QS7TC5HY.js.map} +1 -1
  85. package/dist/runner/index.js +8 -8
  86. package/dist/sdk/asset-manager.js +6 -6
  87. package/dist/sdk/core.js +4 -4
  88. package/dist/sdk/index.js +8 -8
  89. package/dist/sdk/runner.js +8 -8
  90. package/dist/{setup-REX4I5NE.js → setup-F6DGKL7J.js} +6 -6
  91. package/dist/{setup-REX4I5NE.js.map → setup-F6DGKL7J.js.map} +1 -1
  92. package/dist/store-client-JP642EEI.js +14 -0
  93. package/dist/{store-client-IX3Y67NK.js.map → store-client-JP642EEI.js.map} +1 -1
  94. package/dist/tui/index.js +8 -8
  95. package/dist/workspace-plugin/index.js +1 -1
  96. package/package.json +1 -1
  97. package/dist/chunk-LDYPQVRU.js.map +0 -1
  98. package/dist/chunk-NQL3T75I.js.map +0 -1
  99. package/dist/store-client-IX3Y67NK.js +0 -14
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/store-client.ts"],"names":[],"mappings":"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","file":"chunk-FVZLCBSX.js","sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { globalSettingsPath, mapLegacyFields } from \"@skaile/workspaces/core\";\n\n/**\n * Connection configuration for the AI Asset Store API.\n *\n * @docLink cli/dev-guide#store-client\n */\nexport interface StoreConfig {\n url: string;\n jwt: string | null;\n refreshToken: string | null;\n}\n\n/**\n * Read store connection config from global user settings, falling back to\n * `SKAILE_STORE_URL` env var and the default store URL.\n *\n * @returns Populated {@link StoreConfig} with `url`, `jwt`, and `refreshToken`.\n * @docLink cli/dev-guide#store-client\n */\nexport function getStoreConfig(): StoreConfig {\n const settingsPath = globalSettingsPath();\n let settings: Record<string, any> = {};\n if (existsSync(settingsPath)) {\n try {\n settings = mapLegacyFields(JSON.parse(readFileSync(settingsPath, \"utf-8\")));\n } catch {\n settings = {};\n }\n }\n return {\n url: settings.storeUrl ?? process.env.SKAILE_STORE_URL ?? \"https://store.skaile.ai\",\n jwt: settings.storeJwt ?? null,\n refreshToken: settings.storeRefreshToken ?? null,\n };\n}\n\n/** Path to user-level settings */\nfunction userSettingsPath(): string {\n return join(homedir(), \".skaile\", \"settings.json\");\n}\n\n/**\n * Persist store authentication tokens to `~/.skaile/settings.json`.\n *\n * @param jwt - The JWT access token returned by the store login endpoint.\n * @param refreshToken - The refresh token for obtaining new JWTs.\n * @docLink cli/dev-guide#store-client\n */\nexport function saveStoreTokens(jwt: string, refreshToken: string): void {\n const settingsPath = userSettingsPath();\n const dir = join(settingsPath, \"..\");\n mkdirSync(dir, { recursive: true });\n\n let current: Record<string, any> = {};\n if (existsSync(settingsPath)) {\n try {\n current = JSON.parse(readFileSync(settingsPath, \"utf-8\"));\n } catch {\n current = {};\n }\n }\n\n current.storeJwt = jwt;\n current.storeRefreshToken = refreshToken;\n writeFileSync(settingsPath, JSON.stringify(current, null, 2), \"utf-8\");\n}\n\n/**\n * Remove store authentication tokens from `~/.skaile/settings.json`.\n *\n * @docLink cli/dev-guide#store-client\n */\nexport function clearStoreTokens(): void {\n const settingsPath = userSettingsPath();\n if (!existsSync(settingsPath)) return;\n\n try {\n const current = JSON.parse(readFileSync(settingsPath, \"utf-8\"));\n delete current.storeJwt;\n delete current.storeRefreshToken;\n writeFileSync(settingsPath, JSON.stringify(current, null, 2), \"utf-8\");\n } catch {\n // ignore\n }\n}\n\n/**\n * Make an authenticated HTTP request to the store REST API with a 1.5s timeout.\n *\n * @param config - Store connection config (URL + auth token).\n * @param path - API path (e.g. `/api/assets`).\n * @param opts - Optional method, body, query params, and extra headers.\n * @returns Parsed JSON response body.\n * @docLink cli/dev-guide#store-client\n */\nexport async function storeFetch<T = any>(\n config: StoreConfig,\n path: string,\n opts?: {\n method?: string;\n body?: unknown;\n params?: Record<string, string>;\n headers?: Record<string, string>;\n },\n): Promise<T> {\n let url = `${config.url}${path}`;\n if (opts?.params) {\n const sp = new URLSearchParams(opts.params);\n url += `?${sp}`;\n }\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...(opts?.headers ?? {}),\n };\n if (config.jwt) {\n headers.Authorization = `Bearer ${config.jwt}`;\n }\n\n const fetchOpts: RequestInit = {\n method: opts?.method ?? \"GET\",\n headers,\n };\n if (opts?.body) {\n fetchOpts.body = JSON.stringify(opts.body);\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 1_500);\n try {\n const res = await fetch(url, { ...fetchOpts, signal: controller.signal });\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));\n throw new Error((body as any).error ?? `Store API error: ${res.status}`);\n }\n return res.json() as Promise<T>;\n } finally {\n clearTimeout(timeout);\n }\n}\n\n/**\n * Return `true` if a JWT token is present in the provided (or default) store config.\n *\n * @param config - Optional pre-loaded config; if omitted, calls {@link getStoreConfig}.\n * @docLink cli/dev-guide#store-client\n */\nexport function isStoreAuthenticated(config?: StoreConfig): boolean {\n const c = config ?? getStoreConfig();\n return !!c.jwt;\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/store-client.ts"],"names":[],"mappings":";;;;;AAuBO,SAAS,cAAA,GAA8B;AAC5C,EAAA,MAAM,eAAe,kBAAA,EAAmB;AACxC,EAAA,IAAI,WAAgC,EAAC;AACrC,EAAA,IAAI,UAAA,CAAW,YAAY,CAAA,EAAG;AAC5B,IAAA,IAAI;AACF,MAAA,QAAA,GAAW,gBAAgB,IAAA,CAAK,KAAA,CAAM,aAAa,YAAA,EAAc,OAAO,CAAC,CAAC,CAAA;AAAA,IAC5E,CAAA,CAAA,MAAQ;AACN,MAAA,QAAA,GAAW,EAAC;AAAA,IACd;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,QAAA,CAAS,QAAA,IAAY,OAAA,CAAQ,IAAI,gBAAA,IAAoB,yBAAA;AAAA,IAC1D,GAAA,EAAK,SAAS,QAAA,IAAY,IAAA;AAAA,IAC1B,YAAA,EAAc,SAAS,iBAAA,IAAqB;AAAA,GAC9C;AACF;AAGA,SAAS,gBAAA,GAA2B;AAClC,EAAA,OAAO,IAAA,CAAK,OAAA,EAAQ,EAAG,SAAA,EAAW,eAAe,CAAA;AACnD;AASO,SAAS,eAAA,CAAgB,KAAa,YAAA,EAA4B;AACvE,EAAA,MAAM,eAAe,gBAAA,EAAiB;AACtC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,EAAc,IAAI,CAAA;AACnC,EAAA,SAAA,CAAU,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAElC,EAAA,IAAI,UAA+B,EAAC;AACpC,EAAA,IAAI,UAAA,CAAW,YAAY,CAAA,EAAG;AAC5B,IAAA,IAAI;AACF,MAAA,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,YAAA,EAAc,OAAO,CAAC,CAAA;AAAA,IAC1D,CAAA,CAAA,MAAQ;AACN,MAAA,OAAA,GAAU,EAAC;AAAA,IACb;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,QAAA,GAAW,GAAA;AACnB,EAAA,OAAA,CAAQ,iBAAA,GAAoB,YAAA;AAC5B,EAAA,aAAA,CAAc,cAAc,IAAA,CAAK,SAAA,CAAU,SAAS,IAAA,EAAM,CAAC,GAAG,OAAO,CAAA;AACvE;AAOO,SAAS,gBAAA,GAAyB;AACvC,EAAA,MAAM,eAAe,gBAAA,EAAiB;AACtC,EAAA,IAAI,CAAC,UAAA,CAAW,YAAY,CAAA,EAAG;AAE/B,EAAA,IAAI;AACF,IAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,YAAA,EAAc,OAAO,CAAC,CAAA;AAC9D,IAAA,OAAO,OAAA,CAAQ,QAAA;AACf,IAAA,OAAO,OAAA,CAAQ,iBAAA;AACf,IAAA,aAAA,CAAc,cAAc,IAAA,CAAK,SAAA,CAAU,SAAS,IAAA,EAAM,CAAC,GAAG,OAAO,CAAA;AAAA,EACvE,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;AAWA,eAAsB,UAAA,CACpB,MAAA,EACA,IAAA,EACA,IAAA,EAMY;AACZ,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,MAAA,CAAO,GAAG,GAAG,IAAI,CAAA,CAAA;AAC9B,EAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,IAAA,MAAM,EAAA,GAAK,IAAI,eAAA,CAAgB,IAAA,CAAK,MAAM,CAAA;AAC1C,IAAA,GAAA,IAAO,IAAI,EAAE,CAAA,CAAA;AAAA,EACf;AAEA,EAAA,MAAM,OAAA,GAAkC;AAAA,IACtC,cAAA,EAAgB,kBAAA;AAAA,IAChB,MAAA,EAAQ,kBAAA;AAAA,IACR,GAAI,IAAA,EAAM,OAAA,IAAW;AAAC,GACxB;AACA,EAAA,IAAI,OAAO,GAAA,EAAK;AACd,IAAA,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,EAC9C;AAEA,EAAA,MAAM,SAAA,GAAyB;AAAA,IAC7B,MAAA,EAAQ,MAAM,MAAA,IAAU,KAAA;AAAA,IACxB;AAAA,GACF;AACA,EAAA,IAAI,MAAM,IAAA,EAAM;AACd,IAAA,SAAA,CAAU,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AACvC,EAAA,MAAM,UAAU,UAAA,CAAW,MAAM,UAAA,CAAW,KAAA,IAAS,IAAK,CAAA;AAC1D,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAA,EAAK,EAAE,GAAG,SAAA,EAAW,MAAA,EAAQ,UAAA,CAAW,MAAA,EAAQ,CAAA;AACxE,IAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,MAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK,CAAE,KAAA,CAAM,OAAO,EAAE,KAAA,EAAO,CAAA,KAAA,EAAQ,GAAA,CAAI,MAAM,IAAG,CAAE,CAAA;AAC3E,MAAA,MAAM,IAAI,KAAA,CAAO,IAAA,CAAa,SAAS,CAAA,iBAAA,EAAoB,GAAA,CAAI,MAAM,CAAA,CAAE,CAAA;AAAA,IACzE;AACA,IAAA,OAAO,IAAI,IAAA,EAAK;AAAA,EAClB,CAAA,SAAE;AACA,IAAA,YAAA,CAAa,OAAO,CAAA;AAAA,EACtB;AACF;AAQO,SAAS,qBAAqB,MAAA,EAA+B;AAClE,EAAA,MAAM,CAAA,GAAI,UAAU,cAAA,EAAe;AACnC,EAAA,OAAO,CAAC,CAAC,CAAA,CAAE,GAAA;AACb","file":"chunk-WH2EB2SF.js","sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { globalSettingsPath, mapLegacyFields } from \"@skaile/workspaces/core\";\n\n/**\n * Connection configuration for the AI Asset Store API.\n *\n * @docLink cli/dev-guide#store-client\n */\nexport interface StoreConfig {\n url: string;\n jwt: string | null;\n refreshToken: string | null;\n}\n\n/**\n * Read store connection config from global user settings, falling back to\n * `SKAILE_STORE_URL` env var and the default store URL.\n *\n * @returns Populated {@link StoreConfig} with `url`, `jwt`, and `refreshToken`.\n * @docLink cli/dev-guide#store-client\n */\nexport function getStoreConfig(): StoreConfig {\n const settingsPath = globalSettingsPath();\n let settings: Record<string, any> = {};\n if (existsSync(settingsPath)) {\n try {\n settings = mapLegacyFields(JSON.parse(readFileSync(settingsPath, \"utf-8\")));\n } catch {\n settings = {};\n }\n }\n return {\n url: settings.storeUrl ?? process.env.SKAILE_STORE_URL ?? \"https://store.skaile.ai\",\n jwt: settings.storeJwt ?? null,\n refreshToken: settings.storeRefreshToken ?? null,\n };\n}\n\n/** Path to user-level settings */\nfunction userSettingsPath(): string {\n return join(homedir(), \".skaile\", \"settings.json\");\n}\n\n/**\n * Persist store authentication tokens to `~/.skaile/settings.json`.\n *\n * @param jwt - The JWT access token returned by the store login endpoint.\n * @param refreshToken - The refresh token for obtaining new JWTs.\n * @docLink cli/dev-guide#store-client\n */\nexport function saveStoreTokens(jwt: string, refreshToken: string): void {\n const settingsPath = userSettingsPath();\n const dir = join(settingsPath, \"..\");\n mkdirSync(dir, { recursive: true });\n\n let current: Record<string, any> = {};\n if (existsSync(settingsPath)) {\n try {\n current = JSON.parse(readFileSync(settingsPath, \"utf-8\"));\n } catch {\n current = {};\n }\n }\n\n current.storeJwt = jwt;\n current.storeRefreshToken = refreshToken;\n writeFileSync(settingsPath, JSON.stringify(current, null, 2), \"utf-8\");\n}\n\n/**\n * Remove store authentication tokens from `~/.skaile/settings.json`.\n *\n * @docLink cli/dev-guide#store-client\n */\nexport function clearStoreTokens(): void {\n const settingsPath = userSettingsPath();\n if (!existsSync(settingsPath)) return;\n\n try {\n const current = JSON.parse(readFileSync(settingsPath, \"utf-8\"));\n delete current.storeJwt;\n delete current.storeRefreshToken;\n writeFileSync(settingsPath, JSON.stringify(current, null, 2), \"utf-8\");\n } catch {\n // ignore\n }\n}\n\n/**\n * Make an authenticated HTTP request to the store REST API with a 1.5s timeout.\n *\n * @param config - Store connection config (URL + auth token).\n * @param path - API path (e.g. `/api/assets`).\n * @param opts - Optional method, body, query params, and extra headers.\n * @returns Parsed JSON response body.\n * @docLink cli/dev-guide#store-client\n */\nexport async function storeFetch<T = any>(\n config: StoreConfig,\n path: string,\n opts?: {\n method?: string;\n body?: unknown;\n params?: Record<string, string>;\n headers?: Record<string, string>;\n },\n): Promise<T> {\n let url = `${config.url}${path}`;\n if (opts?.params) {\n const sp = new URLSearchParams(opts.params);\n url += `?${sp}`;\n }\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...(opts?.headers ?? {}),\n };\n if (config.jwt) {\n headers.Authorization = `Bearer ${config.jwt}`;\n }\n\n const fetchOpts: RequestInit = {\n method: opts?.method ?? \"GET\",\n headers,\n };\n if (opts?.body) {\n fetchOpts.body = JSON.stringify(opts.body);\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 1_500);\n try {\n const res = await fetch(url, { ...fetchOpts, signal: controller.signal });\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));\n throw new Error((body as any).error ?? `Store API error: ${res.status}`);\n }\n return res.json() as Promise<T>;\n } finally {\n clearTimeout(timeout);\n }\n}\n\n/**\n * Return `true` if a JWT token is present in the provided (or default) store config.\n *\n * @param config - Optional pre-loaded config; if omitted, calls {@link getStoreConfig}.\n * @docLink cli/dev-guide#store-client\n */\nexport function isStoreAuthenticated(config?: StoreConfig): boolean {\n const c = config ?? getStoreConfig();\n return !!c.jwt;\n}\n"]}
package/dist/cli/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-UBLTUFFI.js';
2
+ import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-K2HDYSAM.js';
3
3
  import { logErr, S, logOk, colorRef, logInfo, logWarn, kindColorPad, kindColor, formatRelativeTime } from '../chunk-4NDWKA64.js';
4
- import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-FVZLCBSX.js';
4
+ import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-WH2EB2SF.js';
5
5
  import { AI_RESOURCES } from '../chunk-2M3XTMOL.js';
6
6
  import { LocalSecretsProvider } from '../chunk-JDX54X4Y.js';
7
- import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-I5SGBFMM.js';
7
+ import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-MNAHNDUI.js';
8
8
  import '../chunk-R7FOF242.js';
9
- import '../chunk-CEUHU3C4.js';
9
+ import '../chunk-JN2CUVSU.js';
10
10
  import '../chunk-OKRUTSG7.js';
11
- import { runFlow, resumeFlow } from '../chunk-3KLWGHDE.js';
11
+ import { runFlow, resumeFlow } from '../chunk-53UNDY6K.js';
12
12
  import '../chunk-GCJXPUHG.js';
13
13
  import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-IPUYL6TD.js';
14
- import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-NICAMYPV.js';
15
- import { buildClaudePluginFiles } from '../chunk-FIHVQFXB.js';
14
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-SKXCTV55.js';
15
+ import { buildClaudePluginFiles } from '../chunk-NDD5VMN5.js';
16
16
  import '../chunk-X5YPJV4N.js';
17
17
  import '../chunk-O7SG5PC2.js';
18
18
  import '../chunk-7QBNJTTQ.js';
@@ -27,23 +27,23 @@ import '../chunk-KOVLSBXK.js';
27
27
  import '../chunk-RRVQAE5D.js';
28
28
  import '../chunk-6VTG73UY.js';
29
29
  import '../chunk-LV2HPH3C.js';
30
- import '../chunk-6SA2SIOU.js';
31
- import '../chunk-M5JDVO6D.js';
30
+ import '../chunk-OJN25VJO.js';
31
+ import '../chunk-NBJ5TOEC.js';
32
32
  import '../chunk-6MB7CRME.js';
33
33
  import '../chunk-QAVZOJCV.js';
34
34
  import '../chunk-6E6PKKAD.js';
35
35
  import { loadAllFlows } from '../chunk-ICS76R4T.js';
36
36
  import '../chunk-GZWJGNNN.js';
37
37
  import '../chunk-FVTV7M76.js';
38
- import { AssetManager } from '../chunk-TWQPDBHB.js';
39
- import '../chunk-LDLZFYLR.js';
40
- import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-P4FYHEHW.js';
38
+ import { AssetManager } from '../chunk-7HSXUKNB.js';
39
+ import '../chunk-2RYQERIT.js';
40
+ import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-ETMUGBHF.js';
41
41
  import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
42
42
  import '../chunk-KLNL7QHN.js';
43
- import '../chunk-74GTZ4TJ.js';
44
- import { resolveSkWorkspaceConfig, resolveAgentDir, decodeSkaileYaml, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-LDYPQVRU.js';
45
- import { parseFrontmatter } from '../chunk-NQL3T75I.js';
46
- import { ASSET_KINDS } from '../chunk-VUCPJBAG.js';
43
+ import '../chunk-PFOXL4SH.js';
44
+ import { resolveSkWorkspaceConfig, resolveAgentDir, decodeSkaileYaml, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-V5TBKO5Q.js';
45
+ import { parseFrontmatter } from '../chunk-K7WPR77X.js';
46
+ import { ASSET_KINDS, assetRefToStr } from '../chunk-VUCPJBAG.js';
47
47
  import '../chunk-JKNWJ64A.js';
48
48
  import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
49
49
  import { openSqlite } from '../chunk-24UIWON4.js';
@@ -310,7 +310,7 @@ function makeSearchCommand() {
310
310
  }
311
311
  if (showStore) {
312
312
  try {
313
- const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-IX3Y67NK.js');
313
+ const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-JP642EEI.js');
314
314
  const config = getStoreConfig2();
315
315
  const params = {};
316
316
  if (query) params.q = query;
@@ -472,7 +472,7 @@ function makeCatalogCommand() {
472
472
  const cfg = resolveConfig({ projectDir });
473
473
  const baseUrl = opts.url ?? cfg.catalog.url;
474
474
  if (isLocalCatalogUrl(baseUrl)) {
475
- const { resolveCatalogSource } = await import('../open-library-EEGG6RDN.js');
475
+ const { resolveCatalogSource } = await import('../open-library-CT4VVESU.js');
476
476
  let resolved;
477
477
  try {
478
478
  resolved = await resolveCatalogSource({ projectDir: opts.projectDir });
@@ -1433,7 +1433,7 @@ async function ensureTargetsRegistered(projectDir) {
1433
1433
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
1434
1434
  const config = resolveSkWorkspaceConfig2(projectDir);
1435
1435
  if (config.plugins && config.plugins.length > 0) {
1436
- const { ensurePluginsLoaded } = await import('../plugin-store-G277ZX3B.js');
1436
+ const { ensurePluginsLoaded } = await import('../plugin-store-QS7TC5HY.js');
1437
1437
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
1438
1438
  for (const f of result.failed) logWarn(f.error);
1439
1439
  }
@@ -2222,10 +2222,10 @@ function buildVisibleRows(rows, collapsedSources, collapsedRepos) {
2222
2222
  });
2223
2223
  }
2224
2224
  function repoAssetRefs(rows, publisher, repo) {
2225
- return rows.filter((r) => isAsset(r) && inRepo(r, publisher, repo)).map((r) => assetRefOf(r));
2225
+ return rows.filter((r) => isAsset(r) && inRepo(r, publisher, repo)).map((r) => assetRefOf(r)).filter((ref) => ref !== null);
2226
2226
  }
2227
2227
  function sourceAssetRefs(rows, source) {
2228
- return rows.filter((r) => isAsset(r) && inSource(r, source)).map((r) => assetRefOf(r));
2228
+ return rows.filter((r) => isAsset(r) && inSource(r, source)).map((r) => assetRefOf(r)).filter((ref) => ref !== null);
2229
2229
  }
2230
2230
  function isAsset(r) {
2231
2231
  return r.type === "asset";
@@ -2238,8 +2238,12 @@ function inRepo(r, publisher, repo) {
2238
2238
  return (r.entry?.repo || "") === repo;
2239
2239
  }
2240
2240
  function assetRefOf(r) {
2241
- if (!isAsset(r) || !r.entry) return null;
2242
- return `${r.entry.kind}:${r.entry.name}`;
2241
+ if (!isAsset(r) || !r.entry?.publisher) return null;
2242
+ return assetRefToStr({
2243
+ kind: r.entry.kind,
2244
+ name: r.entry.name,
2245
+ publisher: r.entry.publisher
2246
+ });
2243
2247
  }
2244
2248
  function findAssetRow(ref) {
2245
2249
  return state.assetRows.find((r) => isAsset(r) && assetRefOf(r) === ref);
@@ -2288,7 +2292,7 @@ function actOnHeader(row, action3) {
2288
2292
  return false;
2289
2293
  }
2290
2294
  async function loadAssets() {
2291
- const { gatherAssetFeeds } = await import('../asset-feeds-2M6UKEJ7.js');
2295
+ const { gatherAssetFeeds } = await import('../asset-feeds-Y2CDCM3W.js');
2292
2296
  const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
2293
2297
  if (notes.length > 0) {
2294
2298
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -2343,7 +2347,7 @@ async function loadAssets() {
2343
2347
  async function loadSourcesAndLibraries() {
2344
2348
  try {
2345
2349
  const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
2346
- import('../open-library-EEGG6RDN.js'),
2350
+ import('../open-library-CT4VVESU.js'),
2347
2351
  import('../library/index.js')
2348
2352
  ]);
2349
2353
  const { manager, library, close } = await openLibraryManager2();
@@ -2513,7 +2517,7 @@ function renderAssetRow(row, selected) {
2513
2517
  });
2514
2518
  }
2515
2519
  const e = row.entry;
2516
- const ref = assetRefOf(row);
2520
+ const ref = assetRefOf(row) ?? "";
2517
2521
  let status4;
2518
2522
  if (state.pendingAdds.has(ref)) status4 = pc5.blue("+ ");
2519
2523
  else if (state.pendingRemoves.has(ref)) status4 = pc5.red("- ");
@@ -2522,7 +2526,8 @@ function renderAssetRow(row, selected) {
2522
2526
  const kind = kindColorPad(e.kind, 8);
2523
2527
  const name = e.name.padEnd(30);
2524
2528
  const badge = e.category ? `${pc5.dim("[")}${pc5.cyan(e.category)}${pc5.dim("]")} ` : "";
2525
- const desc = e.description?.slice(0, state.cols - 52) ?? "";
2529
+ const badgeWidth = e.category ? e.category.length + 3 : 0;
2530
+ const desc = e.description?.slice(0, Math.max(0, state.cols - 52 - badgeWidth)) ?? "";
2526
2531
  const indent = " ".repeat(e.repo ? 5 : 3);
2527
2532
  const line = `${indent}${status4} ${kind} ${name} ${badge}${pc5.dim(desc)}`;
2528
2533
  return selected ? pc5.inverse(line.padEnd(state.cols)) : line;
@@ -3674,7 +3679,7 @@ function action2(fn) {
3674
3679
  };
3675
3680
  }
3676
3681
  async function reconcileAndReport(projectDir, plugins) {
3677
- const { reconcilePlugins } = await import('../plugin-store-G277ZX3B.js');
3682
+ const { reconcilePlugins } = await import('../plugin-store-QS7TC5HY.js');
3678
3683
  if (plugins.length === 0) {
3679
3684
  logInfo("No plugins declared \u2014 nothing to reconcile.");
3680
3685
  return;
@@ -3690,7 +3695,7 @@ async function reconcileAndReport(projectDir, plugins) {
3690
3695
  async function runInstall2(spec, opts) {
3691
3696
  const projectDir = path14__default.resolve(opts.projectDir);
3692
3697
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3693
- const { specName } = await import('../plugin-store-G277ZX3B.js');
3698
+ const { specName } = await import('../plugin-store-QS7TC5HY.js');
3694
3699
  const yamlPath = path14__default.join(projectDir, "skaile.yaml");
3695
3700
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3696
3701
  const replaced = editor.addPlugin(spec, specName);
@@ -3702,7 +3707,7 @@ async function runInstall2(spec, opts) {
3702
3707
  async function runRemove(name, opts) {
3703
3708
  const projectDir = path14__default.resolve(opts.projectDir);
3704
3709
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3705
- const { specName } = await import('../plugin-store-G277ZX3B.js');
3710
+ const { specName } = await import('../plugin-store-QS7TC5HY.js');
3706
3711
  const yamlPath = path14__default.join(projectDir, "skaile.yaml");
3707
3712
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3708
3713
  const removed = editor.removePlugin(name, specName);
@@ -3730,7 +3735,7 @@ async function runList(opts) {
3730
3735
  const registry = createPluginRegistry();
3731
3736
  if (declared.length > 0) {
3732
3737
  try {
3733
- const { loadPlugins } = await import('../plugin-store-G277ZX3B.js');
3738
+ const { loadPlugins } = await import('../plugin-store-QS7TC5HY.js');
3734
3739
  const result = await loadPlugins(projectDir, declared, registry);
3735
3740
  for (const f of result.failed) logWarn(f.error);
3736
3741
  } catch (err) {
@@ -3933,7 +3938,7 @@ function makeInstallCommand() {
3933
3938
  const spinner6 = p5.spinner();
3934
3939
  spinner6.start(`Installing ${ref}`);
3935
3940
  try {
3936
- const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-EEGG6RDN.js');
3941
+ const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-CT4VVESU.js');
3937
3942
  const catalog = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
3938
3943
  if (!supportsInstallManifest(catalog)) {
3939
3944
  throw new Error(
@@ -3965,7 +3970,7 @@ function makeInstallCommand() {
3965
3970
  }
3966
3971
  const projectDir = path14__default.resolve(opts.projectDir);
3967
3972
  try {
3968
- const { ensureSourcesCloned } = await import('../ensure-sources-ALTI5PXR.js');
3973
+ const { ensureSourcesCloned } = await import('../ensure-sources-REWWBH2K.js');
3969
3974
  const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
3970
3975
  if (hydrate.cloned.length > 0) {
3971
3976
  logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
@@ -4423,7 +4428,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
4423
4428
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
4424
4429
  const config = resolveSkWorkspaceConfig2(projectDir);
4425
4430
  if (!config.plugins || config.plugins.length === 0) return;
4426
- const { ensurePluginsLoaded } = await import('../plugin-store-G277ZX3B.js');
4431
+ const { ensurePluginsLoaded } = await import('../plugin-store-QS7TC5HY.js');
4427
4432
  const { pluginRegistry } = await import('../plugin-registry/index.js');
4428
4433
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
4429
4434
  if (result.loaded.length > 0) {
@@ -6332,7 +6337,7 @@ program.command("init [project-dir]").description("Initialize a project director
6332
6337
  );
6333
6338
  }
6334
6339
  try {
6335
- const { ensureSourcesCloned } = await import('../ensure-sources-ALTI5PXR.js');
6340
+ const { ensureSourcesCloned } = await import('../ensure-sources-REWWBH2K.js');
6336
6341
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
6337
6342
  for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
6338
6343
  if (hydrate.failed.length > 0) {
@@ -6358,7 +6363,7 @@ program.command("init [project-dir]").description("Initialize a project director
6358
6363
  console.log();
6359
6364
  });
6360
6365
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
6361
- const { cmdSetup } = await import('../setup-REX4I5NE.js');
6366
+ const { cmdSetup } = await import('../setup-F6DGKL7J.js');
6362
6367
  await cmdSetup([], { projectDir: process.cwd() });
6363
6368
  });
6364
6369
  program.addCommand(makeInstallCommand());