@skaile/workspaces 0.13.0 → 0.15.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 (146) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/asset-manager/index.js +4 -4
  3. package/dist/asset-manager/installer.js +3 -3
  4. package/dist/base-assets/connectors/deploy.js +4 -4
  5. package/dist/base-assets/connectors/devserver.js +4 -4
  6. package/dist/base-assets/connectors/flow/adapter.js +4 -4
  7. package/dist/base-assets/connectors/flow/run-flow.js +5 -5
  8. package/dist/base-assets/connectors/flow.js +4 -4
  9. package/dist/base-assets/connectors/git.js +4 -4
  10. package/dist/base-assets/connectors/gmail.js +4 -4
  11. package/dist/base-assets/connectors/googledrive/driver.d.ts +47 -0
  12. package/dist/base-assets/connectors/googledrive/driver.d.ts.map +1 -0
  13. package/dist/base-assets/connectors/googledrive.js +20 -0
  14. package/dist/base-assets/connectors/googledrive.js.map +1 -0
  15. package/dist/base-assets/connectors/local.js +4 -4
  16. package/dist/base-assets/connectors/mattermost.js +4 -4
  17. package/dist/base-assets/connectors/memory.js +4 -4
  18. package/dist/base-assets/connectors/minio.js +4 -4
  19. package/dist/base-assets/connectors/postgres.js +4 -4
  20. package/dist/base-assets/connectors/redis.js +4 -4
  21. package/dist/base-assets/connectors/s3.js +4 -4
  22. package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +1 -1
  23. package/dist/base-assets/connectors/sharepoint.js +4 -4
  24. package/dist/base-assets/connectors/sqlite.js +4 -4
  25. package/dist/base-assets/connectors/static-server.js +4 -4
  26. package/dist/base-assets/connectors/tunnel.js +4 -4
  27. package/dist/base-assets/connectors/webdav/driver.d.ts.map +1 -1
  28. package/dist/base-assets/connectors/webdav.js +4 -4
  29. package/dist/base-assets/connectors/xstate-store.js +4 -4
  30. package/dist/base-assets/connectors/xstate.js +4 -4
  31. package/dist/base-assets/connectors/yjs.js +4 -4
  32. package/dist/{chunk-42OQF7UU.js → chunk-2NIOMFSQ.js} +305 -225
  33. package/dist/chunk-2NIOMFSQ.js.map +1 -0
  34. package/dist/{chunk-DZG3JD4Y.js → chunk-4GEVGRWB.js} +3 -3
  35. package/dist/{chunk-DZG3JD4Y.js.map → chunk-4GEVGRWB.js.map} +1 -1
  36. package/dist/{chunk-VAJB2UJ5.js → chunk-6EN5IJ2Y.js} +13 -13
  37. package/dist/chunk-6EN5IJ2Y.js.map +1 -0
  38. package/dist/{chunk-QG4X77V3.js → chunk-7R4WLTZW.js} +4 -4
  39. package/dist/{chunk-QG4X77V3.js.map → chunk-7R4WLTZW.js.map} +1 -1
  40. package/dist/{chunk-GN6IYVJN.js → chunk-G7O7WDXX.js} +2 -2
  41. package/dist/{chunk-GN6IYVJN.js.map → chunk-G7O7WDXX.js.map} +1 -1
  42. package/dist/{chunk-EAJKY27M.js → chunk-HSOEX3TA.js} +250 -92
  43. package/dist/chunk-HSOEX3TA.js.map +1 -0
  44. package/dist/chunk-QAVZOJCV.js +72 -0
  45. package/dist/chunk-QAVZOJCV.js.map +1 -0
  46. package/dist/{chunk-CYRCPFZ2.js → chunk-SO43XRWF.js} +3 -3
  47. package/dist/{chunk-CYRCPFZ2.js.map → chunk-SO43XRWF.js.map} +1 -1
  48. package/dist/{chunk-4DDQKKWX.js → chunk-Z24KPZKU.js} +20 -13
  49. package/dist/chunk-Z24KPZKU.js.map +1 -0
  50. package/dist/cli/index.js +685 -527
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/cli/src/commands/asset-cmd.d.ts +4 -1
  53. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  54. package/dist/cli/src/commands/library-cmd.d.ts +6 -4
  55. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  56. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  57. package/dist/cli/src/commands/project.d.ts +2 -2
  58. package/dist/cli/src/commands/source-manifest.d.ts +19 -0
  59. package/dist/cli/src/commands/source-manifest.d.ts.map +1 -0
  60. package/dist/cli/src/commands/source.d.ts +6 -2
  61. package/dist/cli/src/commands/source.d.ts.map +1 -1
  62. package/dist/cli/src/commands/store.d.ts.map +1 -1
  63. package/dist/cli/src/open-library.d.ts +18 -18
  64. package/dist/cli/src/open-library.d.ts.map +1 -1
  65. package/dist/connectors/config.js +2 -2
  66. package/dist/connectors/index.js +4 -4
  67. package/dist/connectors/rclone-config.js +1 -1
  68. package/dist/connectors/src/connector-registry.d.ts.map +1 -1
  69. package/dist/connectors/src/fleet-utils.d.ts +35 -0
  70. package/dist/connectors/src/fleet-utils.d.ts.map +1 -0
  71. package/dist/connectors/src/index.d.ts +2 -1
  72. package/dist/connectors/src/index.d.ts.map +1 -1
  73. package/dist/connectors/src/rclone-config/googledrive.d.ts +59 -0
  74. package/dist/connectors/src/rclone-config/googledrive.d.ts.map +1 -0
  75. package/dist/connectors/src/rclone-config/index.d.ts +1 -0
  76. package/dist/connectors/src/rclone-config/index.d.ts.map +1 -1
  77. package/dist/connectors/src/rclone-config/onedrive.d.ts +1 -0
  78. package/dist/connectors/src/rclone-config/onedrive.d.ts.map +1 -1
  79. package/dist/connectors/src/rclone-config/sanitize.d.ts +9 -0
  80. package/dist/connectors/src/rclone-config/sanitize.d.ts.map +1 -0
  81. package/dist/connectors/src/rclone-config/webdav.d.ts +1 -0
  82. package/dist/connectors/src/rclone-config/webdav.d.ts.map +1 -1
  83. package/dist/core/index.js +2 -2
  84. package/dist/library/index.js +1 -1
  85. package/dist/library/src/config.d.ts +12 -3
  86. package/dist/library/src/config.d.ts.map +1 -1
  87. package/dist/library/src/index.d.ts +7 -8
  88. package/dist/library/src/index.d.ts.map +1 -1
  89. package/dist/library/src/library.d.ts +24 -77
  90. package/dist/library/src/library.d.ts.map +1 -1
  91. package/dist/library/src/local/db.d.ts +3 -2
  92. package/dist/library/src/local/db.d.ts.map +1 -1
  93. package/dist/library/src/local/{user-library-manager.d.ts → library-manager.d.ts} +15 -16
  94. package/dist/library/src/local/library-manager.d.ts.map +1 -0
  95. package/dist/library/src/local/library.d.ts +27 -23
  96. package/dist/library/src/local/library.d.ts.map +1 -1
  97. package/dist/library/src/local/local-catalog-source.d.ts +5 -5
  98. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  99. package/dist/library/src/local/sidecar-paths.d.ts +3 -3
  100. package/dist/library/src/local/store-paths.d.ts +42 -0
  101. package/dist/library/src/local/store-paths.d.ts.map +1 -0
  102. package/dist/library/src/preset/apply.d.ts +2 -2
  103. package/dist/library/src/preset/apply.d.ts.map +1 -1
  104. package/dist/library/src/preset/placeholders.d.ts +3 -3
  105. package/dist/library/src/preset/placeholders.d.ts.map +1 -1
  106. package/dist/library/src/preset/resolve-item.d.ts +3 -3
  107. package/dist/library/src/preset/resolve-item.d.ts.map +1 -1
  108. package/dist/library/src/sync/driver.d.ts +6 -6
  109. package/dist/library/src/sync/driver.d.ts.map +1 -1
  110. package/dist/library/src/sync/git-driver.d.ts +6 -6
  111. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  112. package/dist/library/src/sync/local-driver.d.ts +6 -6
  113. package/dist/library/src/sync/local-driver.d.ts.map +1 -1
  114. package/dist/library/src/user-library.d.ts +12 -17
  115. package/dist/library/src/user-library.d.ts.map +1 -1
  116. package/dist/{open-library-S6FK4N4S.js → open-library-XD7QYLMW.js} +4 -4
  117. package/dist/{open-library-S6FK4N4S.js.map → open-library-XD7QYLMW.js.map} +1 -1
  118. package/dist/runner/index.js +8 -8
  119. package/dist/runner/src/composition/resolve.d.ts +3 -3
  120. package/dist/runner/src/composition/resolve.d.ts.map +1 -1
  121. package/dist/sdk/asset-manager.js +4 -4
  122. package/dist/sdk/core.js +2 -2
  123. package/dist/sdk/index.js +9 -9
  124. package/dist/sdk/runner.js +8 -8
  125. package/dist/{setup-BQEST4RD.js → setup-WZFCLQ2J.js} +4 -4
  126. package/dist/{setup-BQEST4RD.js.map → setup-WZFCLQ2J.js.map} +1 -1
  127. package/dist/{store-client-CB6CYFXB.js → store-client-BM3IBDPT.js} +4 -4
  128. package/dist/{store-client-CB6CYFXB.js.map → store-client-BM3IBDPT.js.map} +1 -1
  129. package/dist/tui/index.js +8 -8
  130. package/dist/types/src/install-manifest.d.ts +1 -1
  131. package/dist/workspace-plugin/adapters/mcp.js +2 -2
  132. package/dist/workspace-plugin/index.js +1 -1
  133. package/package.json +7 -1
  134. package/dist/chunk-42OQF7UU.js.map +0 -1
  135. package/dist/chunk-4DDQKKWX.js.map +0 -1
  136. package/dist/chunk-EAJKY27M.js.map +0 -1
  137. package/dist/chunk-GCRKAFH7.js +0 -40
  138. package/dist/chunk-GCRKAFH7.js.map +0 -1
  139. package/dist/chunk-VAJB2UJ5.js.map +0 -1
  140. package/dist/cli/src/commands/library-status.d.ts +0 -19
  141. package/dist/cli/src/commands/library-status.d.ts.map +0 -1
  142. package/dist/cli/src/commands/source-sidecar.d.ts +0 -6
  143. package/dist/cli/src/commands/source-sidecar.d.ts.map +0 -1
  144. package/dist/library/src/local/user-library-manager.d.ts.map +0 -1
  145. package/dist/library/src/sync/store-driver.d.ts +0 -21
  146. package/dist/library/src/sync/store-driver.d.ts.map +0 -1
@@ -1,40 +0,0 @@
1
- // connectors/src/rclone-config/onedrive.ts
2
- function renderOneDriveConfig(opts) {
3
- const tokenObj = {
4
- access_token: opts.accessToken,
5
- token_type: "Bearer"
6
- };
7
- if (opts.refreshToken) tokenObj.refresh_token = opts.refreshToken;
8
- if (opts.expiresAtMs != null) {
9
- tokenObj.expiry = new Date(opts.expiresAtMs).toISOString();
10
- }
11
- const lines = [];
12
- lines.push(`[${opts.remoteName}]`);
13
- lines.push("type = onedrive");
14
- lines.push(`drive_id = ${opts.driveId}`);
15
- lines.push(`drive_type = ${opts.driveType ?? "business"}`);
16
- lines.push(`token = ${JSON.stringify(tokenObj)}`);
17
- if (opts.clientId) lines.push(`client_id = ${opts.clientId}`);
18
- if (opts.clientSecret) lines.push(`client_secret = ${opts.clientSecret}`);
19
- if (opts.tenantId) lines.push(`tenant = ${opts.tenantId}`);
20
- lines.push("");
21
- return lines.join("\n");
22
- }
23
-
24
- // connectors/src/rclone-config/webdav.ts
25
- function renderWebDAVConfig(opts) {
26
- const lines = [];
27
- lines.push(`[${opts.remoteName}]`);
28
- lines.push("type = webdav");
29
- lines.push(`url = ${opts.url}`);
30
- lines.push(`vendor = ${opts.vendor}`);
31
- if (opts.username) lines.push(`user = ${opts.username}`);
32
- if (opts.obscuredPassword) lines.push(`pass = ${opts.obscuredPassword}`);
33
- if (opts.bearerToken) lines.push(`bearer_token = ${opts.bearerToken}`);
34
- lines.push("");
35
- return lines.join("\n");
36
- }
37
-
38
- export { renderOneDriveConfig, renderWebDAVConfig };
39
- //# sourceMappingURL=chunk-GCRKAFH7.js.map
40
- //# sourceMappingURL=chunk-GCRKAFH7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../connectors/src/rclone-config/onedrive.ts","../connectors/src/rclone-config/webdav.ts"],"names":[],"mappings":";AA+CO,SAAS,qBAAqB,IAAA,EAA2C;AAC9E,EAAA,MAAM,QAAA,GAAmC;AAAA,IACvC,cAAc,IAAA,CAAK,WAAA;AAAA,IACnB,UAAA,EAAY;AAAA,GACd;AACA,EAAA,IAAI,IAAA,CAAK,YAAA,EAAc,QAAA,CAAS,aAAA,GAAgB,IAAA,CAAK,YAAA;AACrD,EAAA,IAAI,IAAA,CAAK,eAAe,IAAA,EAAM;AAC5B,IAAA,QAAA,CAAS,SAAS,IAAI,IAAA,CAAK,IAAA,CAAK,WAAW,EAAE,WAAA,EAAY;AAAA,EAC3D;AAEA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAI,IAAA,CAAK,UAAU,CAAA,CAAA,CAAG,CAAA;AACjC,EAAA,KAAA,CAAM,KAAK,iBAAiB,CAAA;AAC5B,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,WAAA,EAAc,IAAA,CAAK,OAAO,CAAA,CAAE,CAAA;AACvC,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,aAAA,EAAgB,IAAA,CAAK,SAAA,IAAa,UAAU,CAAA,CAAE,CAAA;AACzD,EAAA,KAAA,CAAM,KAAK,CAAA,QAAA,EAAW,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA,CAAE,CAAA;AAChD,EAAA,IAAI,KAAK,QAAA,EAAU,KAAA,CAAM,KAAK,CAAA,YAAA,EAAe,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAC5D,EAAA,IAAI,KAAK,YAAA,EAAc,KAAA,CAAM,KAAK,CAAA,gBAAA,EAAmB,IAAA,CAAK,YAAY,CAAA,CAAE,CAAA;AACxE,EAAA,IAAI,KAAK,QAAA,EAAU,KAAA,CAAM,KAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AACzD,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;;;AClBO,SAAS,mBAAmB,IAAA,EAAyC;AAC1E,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,EAAI,IAAA,CAAK,UAAU,CAAA,CAAA,CAAG,CAAA;AACjC,EAAA,KAAA,CAAM,KAAK,eAAe,CAAA;AAC1B,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,MAAA,EAAS,IAAA,CAAK,GAAG,CAAA,CAAE,CAAA;AAC9B,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,MAAM,CAAA,CAAE,CAAA;AACpC,EAAA,IAAI,KAAK,QAAA,EAAU,KAAA,CAAM,KAAK,CAAA,OAAA,EAAU,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AACvD,EAAA,IAAI,KAAK,gBAAA,EAAkB,KAAA,CAAM,KAAK,CAAA,OAAA,EAAU,IAAA,CAAK,gBAAgB,CAAA,CAAE,CAAA;AACvE,EAAA,IAAI,KAAK,WAAA,EAAa,KAAA,CAAM,KAAK,CAAA,eAAA,EAAkB,IAAA,CAAK,WAAW,CAAA,CAAE,CAAA;AACrE,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB","file":"chunk-GCRKAFH7.js","sourcesContent":["/**\n * Render an rclone INI config snippet for a single OneDrive/SharePoint remote.\n *\n * Pure helper — no IO, no logging — so it can be unit-tested by string compare.\n * The output is the full text for one `[<remoteName>]` section using rclone's\n * `onedrive` backend. The OAuth `token` field is a single-line JSON literal as\n * rclone expects.\n *\n * Lives in `@skaile/workspaces/connectors/rclone-config` so both consumers can\n * reach it: the in-container `sharepoint` mount driver\n * (`ai-assets-skaile/mounts/sharepoint/driver.ts`) and the platform-side\n * `RcloneFleetService` (`platform/backend/libs/session/`) which renders the\n * same INI on the host before spawning a shared rclone process.\n */\n\n/**\n * Options for `renderOneDriveConfig`. Carries OAuth token, drive ID, and optional tenant/client credentials.\n * @docLink packages/connectors/api-reference#render-one-drive-config-options\n */\nexport interface RenderOneDriveConfigOptions {\n /** The rclone remote section name (e.g. `skaile-sharepoint`). */\n remoteName: string;\n /** Current OAuth access token. */\n accessToken: string;\n /** Long-lived refresh token (embedded in the rclone `token` JSON field). */\n refreshToken?: string | null;\n /** Expiry of the access token as a Unix timestamp in milliseconds. */\n expiresAtMs?: number | null;\n /** Azure tenant ID for MSAL authentication. */\n tenantId?: string | null;\n /** OAuth client (application) ID. */\n clientId?: string | null;\n /** OAuth client secret. */\n clientSecret?: string | null;\n /** OneDrive drive ID (required by the rclone `onedrive` backend). */\n driveId: string;\n /** Drive type. Defaults to `\"business\"`. */\n driveType?: \"business\" | \"personal\" | \"documentLibrary\";\n}\n\n/**\n * Render an rclone INI config section for a OneDrive / SharePoint remote. Pure — no IO, no side effects.\n * The `token` field is serialised as a single-line JSON literal as rclone expects.\n * @param opts - Remote name, OAuth token, drive ID, and optional tenant/client credentials.\n * @returns Full INI text for one `[<remoteName>]` rclone section.\n * @docLink packages/connectors/api-reference#render-one-drive-config\n */\nexport function renderOneDriveConfig(opts: RenderOneDriveConfigOptions): string {\n const tokenObj: Record<string, string> = {\n access_token: opts.accessToken,\n token_type: \"Bearer\",\n };\n if (opts.refreshToken) tokenObj.refresh_token = opts.refreshToken;\n if (opts.expiresAtMs != null) {\n tokenObj.expiry = new Date(opts.expiresAtMs).toISOString();\n }\n\n const lines: string[] = [];\n lines.push(`[${opts.remoteName}]`);\n lines.push(\"type = onedrive\");\n lines.push(`drive_id = ${opts.driveId}`);\n lines.push(`drive_type = ${opts.driveType ?? \"business\"}`);\n lines.push(`token = ${JSON.stringify(tokenObj)}`);\n if (opts.clientId) lines.push(`client_id = ${opts.clientId}`);\n if (opts.clientSecret) lines.push(`client_secret = ${opts.clientSecret}`);\n if (opts.tenantId) lines.push(`tenant = ${opts.tenantId}`);\n lines.push(\"\");\n return lines.join(\"\\n\");\n}\n","/**\n * Render an rclone INI config snippet for a single WebDAV remote.\n *\n * Pure helper -- no IO, no logging -- so it can be unit-tested by string compare.\n * The output is the full text for one `[<remoteName>]` section using rclone's\n * `webdav` backend.\n *\n * NOTE: rclone's `pass` field is not plaintext; it must already be passed\n * through `rclone obscure` by the caller. See the driver's `obscurePassword`\n * helper for the spawn that produces it.\n *\n * Lives in `@skaile/workspaces/connectors/rclone-config` so both consumers can\n * reach it: the in-container `webdav` mount driver\n * (`ai-assets-skaile/mounts/webdav/driver.ts`) and the platform-side\n * `RcloneFleetService` (`platform/backend/libs/session/`) which renders the\n * same INI on the host before spawning a shared rclone process.\n */\n\n/**\n * Supported WebDAV vendor identifiers for the rclone `webdav` backend.\n * @docLink packages/connectors/api-reference#web-dav-vendor\n */\nexport type WebDAVVendor = \"nextcloud\" | \"owncloud\" | \"sharepoint\" | \"fastmail\" | \"other\";\n\n/**\n * Options for `renderWebDAVConfig`. Carries remote name, URL, vendor, and credentials.\n * @docLink packages/connectors/api-reference#render-web-dav-config-options\n */\nexport interface RenderWebDAVConfigOptions {\n /** The rclone remote section name (e.g. `skaile-docs`). */\n remoteName: string;\n /** Base URL of the WebDAV server. */\n url: string;\n /** WebDAV vendor; drives rclone's `vendor =` field. */\n vendor: WebDAVVendor;\n /** Basic-auth username. */\n username?: string | null;\n /** Already passed through `rclone obscure`. */\n obscuredPassword?: string | null;\n /** OAuth bearer token (used instead of basic-auth for SharePoint). */\n bearerToken?: string | null;\n}\n\n/**\n * Render an rclone INI config section for a WebDAV remote. Pure — no IO, no side effects.\n * The `obscuredPassword` field must already have been processed through `rclone obscure`.\n * @param opts - Remote name, URL, vendor, and credentials.\n * @returns Full INI text for one `[<remoteName>]` rclone section.\n * @docLink packages/connectors/api-reference#render-web-dav-config\n */\nexport function renderWebDAVConfig(opts: RenderWebDAVConfigOptions): string {\n const lines: string[] = [];\n lines.push(`[${opts.remoteName}]`);\n lines.push(\"type = webdav\");\n lines.push(`url = ${opts.url}`);\n lines.push(`vendor = ${opts.vendor}`);\n if (opts.username) lines.push(`user = ${opts.username}`);\n if (opts.obscuredPassword) lines.push(`pass = ${opts.obscuredPassword}`);\n if (opts.bearerToken) lines.push(`bearer_token = ${opts.bearerToken}`);\n lines.push(\"\");\n return lines.join(\"\\n\");\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../cli/src/open-registry.ts","../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-VAJB2UJ5.js","sourcesContent":["/**\n * open-registry.ts — shared helper to create a full AssetKindRegistry.\n *\n * Bootstraps the registry with all built-in providers (9 core + preset)\n * from @skaile/discovery, plus the extension kind providers (flow from\n * @skaile/workspaces/base-assets/connectors/flow/engine, knowledge from @skaile/library).\n *\n * This is the single registration point for the CLI. All code paths\n * that need a registry (source sync, lib-status, etc.) should use this.\n */\n\nimport { flowKindProvider } from \"@skaile/workspaces/base-assets/connectors/flow/engine\";\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\n/**\n * Create a fully-configured AssetKindRegistry with all known providers.\n *\n * Registers:\n * - 9 core kinds (skill, agent, connector, mount, mcp-server, contract, prompt, persona, ruleset)\n * - preset (composition entity)\n * - flow (extension, from @skaile/workspaces/base-assets/connectors/flow/engine)\n * - knowledge (extension, from @skaile/library)\n *\n * @returns An unfrozen registry (auto-freezes on first read)\n */\nexport function createFullRegistry(): AssetKindRegistry {\n const registry = createDefaultRegistry();\n registry.register(flowKindProvider);\n registry.register(knowledgeKindProvider);\n return registry;\n}\n","/**\n * open-library.ts — shared helpers to open the LocalLibrary and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalLibrary instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local source registered via `skaile source add`.\n */\n\nimport { logErr } from \"./helpers.ts\";\nimport { createFullRegistry } from \"./open-registry.ts\";\n\n/**\n * Open the LocalLibrary with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalLibrary` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalLibrary } = await import(\"@skaile/workspaces/library\");\n return new LocalLibrary({ kindRegistry: createFullRegistry() });\n } catch (err) {\n logErr(`Could not open LocalLibrary: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new Error(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n \"or set `catalog.url: https://skaile.store` in ~/.skaile/config.yaml.\",\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalLibrary` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalLibrary}, picks the most recently\n * registered local source whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that source. Throws if no usable local\n * source is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalLibrary` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local source is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type SourceRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local sources after the filter.\n const usable = sources\n .filter(\n (s): s is SourceRow & { path: string } =>\n s.type === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n if (usable.length === 0) {\n throw new Error(\n \"catalog.url is set to 'local' but no local source is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added source whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n const head = usable[0];\n throw new Error(\n `catalog.url is set to 'local' but every registered local source has a missing path on disk. ` +\n `Most recent: ${head.path} (source ${head.id}). ` +\n `Re-register with \\`skaile source add <existing-path>\\` or run \\`skaile source list\\` to inspect.`,\n );\n }\n\n const source = new LocalCatalogSource(\n library,\n present.id,\n present.path,\n createFullRegistry(),\n );\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the UserLibraryManager bound to the active LocalLibrary.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalLibrary).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openUserLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").UserLibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalLibrary;\n close: () => void;\n}> {\n const { UserLibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new UserLibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
@@ -1,19 +0,0 @@
1
- /**
2
- * skaile status — show Library state for the current workspace.
3
- *
4
- * Prints: subscriptions, sources, cached assets, secrets strategy.
5
- * This is the "am I set up?" command for the asset store.
6
- */
7
- import { Command } from "commander";
8
- /**
9
- * Creates the `skaile lib-status` command.
10
- *
11
- * Prints a health summary of the local Library: registered sources, cached
12
- * asset definitions, configured instances, workspace subscriptions, and the
13
- * current secrets key strategy. Supports `--json` output.
14
- *
15
- * @returns Configured {@link Command} ready for `program.addCommand()`.
16
- * @docLink cli/commands/misc#library-status
17
- */
18
- export declare function makeLibraryStatusCommand(): Command;
19
- //# sourceMappingURL=library-status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"library-status.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/library-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAgJlD"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Source sidecar — removed in the 2026-05-13 Libraries redesign.
3
- */
4
- import { Command } from "commander";
5
- export declare function makeSourceSidecarCommand(): Command;
6
- //# sourceMappingURL=source-sidecar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-sidecar.d.ts","sourceRoot":"","sources":["../../../../cli/src/commands/source-sidecar.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,wBAAgB,wBAAwB,IAAI,OAAO,CAUlD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"user-library-manager.d.ts","sourceRoot":"","sources":["../../../../library/src/local/user-library-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI3D,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA2BjD,qBAAa,kBAAkB;IAKjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;gBAErB,GAAG,EAAE,YAAY;IAE9C,mDAAmD;IACnD,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB;IAW/C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAkCxD,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAMvC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAazD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMtD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAmBhF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYlD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASpF;;;;OAIG;IACG,qBAAqB,CACzB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CA2BvD"}
@@ -1,21 +0,0 @@
1
- /**
2
- * StoreSyncDriver — MVP stub for `backend: 'store'`.
3
- *
4
- * status/pull are real (catalog refresh delegated to RemoteCatalogSource).
5
- * push/propose are always rejected.
6
- * publish exits with a "not yet wired" sync error so the CLI can present a
7
- * clean upgrade path when the store write path lands.
8
- *
9
- * @docLink packages/library/concepts#sync-driver
10
- */
11
- import { type UserLibrary, type SyncStatus, type PullResult, type PushResult, type PullOpts, type PushOpts, type ProposeOpts, type ProposeResult, type PublishOpts, type PublishResult, type AssetRef } from "../user-library.js";
12
- import type { LibrarySyncDriver } from "./driver.js";
13
- export declare class StoreSyncDriver implements LibrarySyncDriver {
14
- readonly backend: "store";
15
- status(_lib: UserLibrary): Promise<SyncStatus>;
16
- pull(_lib: UserLibrary, _opts?: PullOpts): Promise<PullResult>;
17
- push(_lib: UserLibrary, _opts?: PushOpts): Promise<PushResult>;
18
- propose(_lib: UserLibrary, _opts: ProposeOpts): Promise<ProposeResult>;
19
- publish(_lib: UserLibrary, _refs: AssetRef[], _opts: PublishOpts): Promise<PublishResult>;
20
- }
21
- //# sourceMappingURL=store-driver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store-driver.d.ts","sourceRoot":"","sources":["../../../../library/src/sync/store-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAU;IAE9B,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ9C,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAM9D,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9D,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAItE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAMhG"}