@agentxm/client-core 0.21.0 → 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 (274) hide show
  1. package/dist/src/unstable/agent-capabilities/catalog.d.ts +56 -0
  2. package/dist/src/unstable/agent-capabilities/catalog.d.ts.map +1 -1
  3. package/dist/src/unstable/agent-capabilities/data/agents/claude-code.d.ts +14 -0
  4. package/dist/src/unstable/agent-capabilities/data/agents/claude-code.d.ts.map +1 -1
  5. package/dist/src/unstable/agent-capabilities/data/agents/claude-code.js +12 -0
  6. package/dist/src/unstable/agent-capabilities/data/agents/claude-code.js.map +1 -1
  7. package/dist/src/unstable/agent-capabilities/data/agents/codex.d.ts +14 -0
  8. package/dist/src/unstable/agent-capabilities/data/agents/codex.d.ts.map +1 -1
  9. package/dist/src/unstable/agent-capabilities/data/agents/codex.js +12 -0
  10. package/dist/src/unstable/agent-capabilities/data/agents/codex.js.map +1 -1
  11. package/dist/src/unstable/agent-capabilities/index.d.ts +1 -1
  12. package/dist/src/unstable/agent-capabilities/index.d.ts.map +1 -1
  13. package/dist/src/unstable/agent-capabilities/index.js +1 -1
  14. package/dist/src/unstable/agent-capabilities/index.js.map +1 -1
  15. package/dist/src/unstable/agent-capabilities/schema.d.ts +24 -1
  16. package/dist/src/unstable/agent-capabilities/schema.d.ts.map +1 -1
  17. package/dist/src/unstable/agent-capabilities/schema.js +20 -0
  18. package/dist/src/unstable/agent-capabilities/schema.js.map +1 -1
  19. package/dist/src/unstable/auth/auth-client.d.ts +32 -0
  20. package/dist/src/unstable/auth/auth-client.d.ts.map +1 -1
  21. package/dist/src/unstable/auth/auth-client.js +78 -0
  22. package/dist/src/unstable/auth/auth-client.js.map +1 -1
  23. package/dist/src/unstable/auth/index.d.ts +2 -1
  24. package/dist/src/unstable/auth/index.d.ts.map +1 -1
  25. package/dist/src/unstable/auth/index.js +1 -0
  26. package/dist/src/unstable/auth/index.js.map +1 -1
  27. package/dist/src/unstable/auth/loopback-login.d.ts.map +1 -1
  28. package/dist/src/unstable/auth/loopback-login.js +1 -0
  29. package/dist/src/unstable/auth/loopback-login.js.map +1 -1
  30. package/dist/src/unstable/auth/loopback-server.d.ts +1 -0
  31. package/dist/src/unstable/auth/loopback-server.d.ts.map +1 -1
  32. package/dist/src/unstable/auth/loopback-server.js +20 -5
  33. package/dist/src/unstable/auth/loopback-server.js.map +1 -1
  34. package/dist/src/unstable/auth/publish-authorization.d.ts +18 -0
  35. package/dist/src/unstable/auth/publish-authorization.d.ts.map +1 -0
  36. package/dist/src/unstable/auth/publish-authorization.js +83 -0
  37. package/dist/src/unstable/auth/publish-authorization.js.map +1 -0
  38. package/dist/src/unstable/branding/naming.d.ts +6 -0
  39. package/dist/src/unstable/branding/naming.d.ts.map +1 -1
  40. package/dist/src/unstable/branding/naming.js +9 -1
  41. package/dist/src/unstable/branding/naming.js.map +1 -1
  42. package/dist/src/unstable/capability-targeting/build-store.d.ts +34 -0
  43. package/dist/src/unstable/capability-targeting/build-store.d.ts.map +1 -0
  44. package/dist/src/unstable/capability-targeting/build-store.js +151 -0
  45. package/dist/src/unstable/capability-targeting/build-store.js.map +1 -0
  46. package/dist/src/unstable/capability-targeting/index.d.ts +6 -0
  47. package/dist/src/unstable/capability-targeting/index.d.ts.map +1 -0
  48. package/dist/src/unstable/capability-targeting/index.js +6 -0
  49. package/dist/src/unstable/capability-targeting/index.js.map +1 -0
  50. package/dist/src/unstable/capability-targeting/profile.d.ts +16 -0
  51. package/dist/src/unstable/capability-targeting/profile.d.ts.map +1 -0
  52. package/dist/src/unstable/capability-targeting/profile.js +104 -0
  53. package/dist/src/unstable/capability-targeting/profile.js.map +1 -0
  54. package/dist/src/unstable/capability-targeting/render.d.ts +27 -0
  55. package/dist/src/unstable/capability-targeting/render.d.ts.map +1 -0
  56. package/dist/src/unstable/capability-targeting/render.js +476 -0
  57. package/dist/src/unstable/capability-targeting/render.js.map +1 -0
  58. package/dist/src/unstable/capability-targeting/semantic-equivalence.d.ts +4 -0
  59. package/dist/src/unstable/capability-targeting/semantic-equivalence.d.ts.map +1 -0
  60. package/dist/src/unstable/capability-targeting/semantic-equivalence.js +29 -0
  61. package/dist/src/unstable/capability-targeting/semantic-equivalence.js.map +1 -0
  62. package/dist/src/unstable/cli-runtime/command-summary.d.ts +1 -1
  63. package/dist/src/unstable/cli-runtime/command-summary.d.ts.map +1 -1
  64. package/dist/src/unstable/cli-runtime/command-summary.js.map +1 -1
  65. package/dist/src/unstable/commands/manifest-schema.d.ts +3 -0
  66. package/dist/src/unstable/commands/manifest-schema.d.ts.map +1 -1
  67. package/dist/src/unstable/commands/operations/shared-command-helpers.d.ts +3 -0
  68. package/dist/src/unstable/commands/operations/shared-command-helpers.d.ts.map +1 -1
  69. package/dist/src/unstable/extension-types/catalog.d.ts +27 -0
  70. package/dist/src/unstable/extension-types/catalog.d.ts.map +1 -1
  71. package/dist/src/unstable/extension-types/catalog.js +17 -0
  72. package/dist/src/unstable/extension-types/catalog.js.map +1 -1
  73. package/dist/src/unstable/extension-types/derive.d.ts +4 -4
  74. package/dist/src/unstable/extension-types/derive.d.ts.map +1 -1
  75. package/dist/src/unstable/extension-types/derive.js.map +1 -1
  76. package/dist/src/unstable/extension-types/index.d.ts +1 -1
  77. package/dist/src/unstable/extension-types/index.d.ts.map +1 -1
  78. package/dist/src/unstable/extension-types/index.js +1 -1
  79. package/dist/src/unstable/extension-types/index.js.map +1 -1
  80. package/dist/src/unstable/extension-types/schema.d.ts +29 -9
  81. package/dist/src/unstable/extension-types/schema.d.ts.map +1 -1
  82. package/dist/src/unstable/extension-types/schema.js +10 -1
  83. package/dist/src/unstable/extension-types/schema.js.map +1 -1
  84. package/dist/src/unstable/extensions/common.d.ts +9 -6
  85. package/dist/src/unstable/extensions/common.d.ts.map +1 -1
  86. package/dist/src/unstable/extensions/common.js +28 -1
  87. package/dist/src/unstable/extensions/common.js.map +1 -1
  88. package/dist/src/unstable/extensions/installable-types.d.ts +4 -4
  89. package/dist/src/unstable/extensions/installable-types.d.ts.map +1 -1
  90. package/dist/src/unstable/extensions/operations.d.ts.map +1 -1
  91. package/dist/src/unstable/extensions/operations.js +2 -0
  92. package/dist/src/unstable/extensions/operations.js.map +1 -1
  93. package/dist/src/unstable/extensions/ref-base.d.ts +2 -0
  94. package/dist/src/unstable/extensions/ref-base.d.ts.map +1 -1
  95. package/dist/src/unstable/extensions/refs.d.ts +2 -1
  96. package/dist/src/unstable/extensions/refs.d.ts.map +1 -1
  97. package/dist/src/unstable/extensions/registry-source.d.ts +4 -4
  98. package/dist/src/unstable/files/manifest-schema.d.ts +3 -0
  99. package/dist/src/unstable/files/manifest-schema.d.ts.map +1 -1
  100. package/dist/src/unstable/hooks/manager.d.ts.map +1 -1
  101. package/dist/src/unstable/hooks/manager.js +97 -13
  102. package/dist/src/unstable/hooks/manager.js.map +1 -1
  103. package/dist/src/unstable/hooks/manifest-schema.d.ts +3 -0
  104. package/dist/src/unstable/hooks/manifest-schema.d.ts.map +1 -1
  105. package/dist/src/unstable/hooks/refs.d.ts +2 -0
  106. package/dist/src/unstable/hooks/refs.d.ts.map +1 -1
  107. package/dist/src/unstable/knowledge/index.d.ts +5 -0
  108. package/dist/src/unstable/knowledge/index.d.ts.map +1 -0
  109. package/dist/src/unstable/knowledge/index.js +4 -0
  110. package/dist/src/unstable/knowledge/index.js.map +1 -0
  111. package/dist/src/unstable/knowledge/manager.d.ts +20 -0
  112. package/dist/src/unstable/knowledge/manager.d.ts.map +1 -0
  113. package/dist/src/unstable/knowledge/manager.js +306 -0
  114. package/dist/src/unstable/knowledge/manager.js.map +1 -0
  115. package/dist/src/unstable/knowledge/manifest-schema.d.ts +54 -0
  116. package/dist/src/unstable/knowledge/manifest-schema.d.ts.map +1 -0
  117. package/dist/src/unstable/knowledge/manifest-schema.js +30 -0
  118. package/dist/src/unstable/knowledge/manifest-schema.js.map +1 -0
  119. package/dist/src/unstable/knowledge/okf.d.ts +31 -0
  120. package/dist/src/unstable/knowledge/okf.d.ts.map +1 -0
  121. package/dist/src/unstable/knowledge/okf.js +217 -0
  122. package/dist/src/unstable/knowledge/okf.js.map +1 -0
  123. package/dist/src/unstable/knowledge/refs.d.ts +15 -0
  124. package/dist/src/unstable/knowledge/refs.d.ts.map +1 -0
  125. package/dist/src/unstable/knowledge/refs.js +2 -0
  126. package/dist/src/unstable/knowledge/refs.js.map +1 -0
  127. package/dist/src/unstable/lint/catalog/skill/capability-targeting-metadata.d.ts +5 -0
  128. package/dist/src/unstable/lint/catalog/skill/capability-targeting-metadata.d.ts.map +1 -0
  129. package/dist/src/unstable/lint/catalog/skill/capability-targeting-metadata.js +71 -0
  130. package/dist/src/unstable/lint/catalog/skill/capability-targeting-metadata.js.map +1 -0
  131. package/dist/src/unstable/lint/catalog/skill/capability-targeting-structural.d.ts +8 -0
  132. package/dist/src/unstable/lint/catalog/skill/capability-targeting-structural.d.ts.map +1 -0
  133. package/dist/src/unstable/lint/catalog/skill/capability-targeting-structural.js +41 -0
  134. package/dist/src/unstable/lint/catalog/skill/capability-targeting-structural.js.map +1 -0
  135. package/dist/src/unstable/lint/catalog/skill.d.ts.map +1 -1
  136. package/dist/src/unstable/lint/catalog/skill.js +4 -0
  137. package/dist/src/unstable/lint/catalog/skill.js.map +1 -1
  138. package/dist/src/unstable/lint/publish.d.ts.map +1 -1
  139. package/dist/src/unstable/lint/publish.js +4 -0
  140. package/dist/src/unstable/lint/publish.js.map +1 -1
  141. package/dist/src/unstable/lockfile/index.d.ts +2 -2
  142. package/dist/src/unstable/lockfile/index.d.ts.map +1 -1
  143. package/dist/src/unstable/lockfile/index.js +1 -1
  144. package/dist/src/unstable/lockfile/index.js.map +1 -1
  145. package/dist/src/unstable/lockfile/lockfile.d.ts +528 -58
  146. package/dist/src/unstable/lockfile/lockfile.d.ts.map +1 -1
  147. package/dist/src/unstable/lockfile/schema.d.ts +651 -0
  148. package/dist/src/unstable/lockfile/schema.d.ts.map +1 -1
  149. package/dist/src/unstable/lockfile/schema.js +29 -0
  150. package/dist/src/unstable/lockfile/schema.js.map +1 -1
  151. package/dist/src/unstable/mcps/manifest-schema.d.ts +3 -0
  152. package/dist/src/unstable/mcps/manifest-schema.d.ts.map +1 -1
  153. package/dist/src/unstable/packs/manager.d.ts.map +1 -1
  154. package/dist/src/unstable/packs/manager.js +1 -0
  155. package/dist/src/unstable/packs/manager.js.map +1 -1
  156. package/dist/src/unstable/packs/reconciliation-adapter.d.ts.map +1 -1
  157. package/dist/src/unstable/packs/reconciliation-adapter.js +1 -0
  158. package/dist/src/unstable/packs/reconciliation-adapter.js.map +1 -1
  159. package/dist/src/unstable/publish/manifest-policy.d.ts +19 -1
  160. package/dist/src/unstable/publish/manifest-policy.d.ts.map +1 -1
  161. package/dist/src/unstable/registry/__generated__/registry-client.d.ts +728 -193
  162. package/dist/src/unstable/registry/__generated__/registry-client.d.ts.map +1 -1
  163. package/dist/src/unstable/registry/__generated__/registry-client.js +266 -82
  164. package/dist/src/unstable/registry/__generated__/registry-client.js.map +1 -1
  165. package/dist/src/unstable/registry/archive-cache.d.ts +51 -0
  166. package/dist/src/unstable/registry/archive-cache.d.ts.map +1 -0
  167. package/dist/src/unstable/registry/archive-cache.js +213 -0
  168. package/dist/src/unstable/registry/archive-cache.js.map +1 -0
  169. package/dist/src/unstable/registry/client.d.ts +10 -2
  170. package/dist/src/unstable/registry/client.d.ts.map +1 -1
  171. package/dist/src/unstable/registry/client.js +3 -1
  172. package/dist/src/unstable/registry/client.js.map +1 -1
  173. package/dist/src/unstable/registry/discover-schema.d.ts +4 -4
  174. package/dist/src/unstable/registry/index.d.ts +2 -0
  175. package/dist/src/unstable/registry/index.d.ts.map +1 -1
  176. package/dist/src/unstable/registry/index.js +1 -0
  177. package/dist/src/unstable/registry/index.js.map +1 -1
  178. package/dist/src/unstable/registry/local-client.d.ts.map +1 -1
  179. package/dist/src/unstable/registry/local-client.js +114 -47
  180. package/dist/src/unstable/registry/local-client.js.map +1 -1
  181. package/dist/src/unstable/registry/remote-client.d.ts +2 -1
  182. package/dist/src/unstable/registry/remote-client.d.ts.map +1 -1
  183. package/dist/src/unstable/registry/remote-client.js +46 -59
  184. package/dist/src/unstable/registry/remote-client.js.map +1 -1
  185. package/dist/src/unstable/registry/schema.d.ts +1 -1
  186. package/dist/src/unstable/rules/manifest-schema.d.ts +3 -0
  187. package/dist/src/unstable/rules/manifest-schema.d.ts.map +1 -1
  188. package/dist/src/unstable/settings/index.d.ts +2 -2
  189. package/dist/src/unstable/settings/index.d.ts.map +1 -1
  190. package/dist/src/unstable/settings/index.js +1 -1
  191. package/dist/src/unstable/settings/index.js.map +1 -1
  192. package/dist/src/unstable/settings/schema.d.ts +18 -0
  193. package/dist/src/unstable/settings/schema.d.ts.map +1 -1
  194. package/dist/src/unstable/settings/schema.js +31 -0
  195. package/dist/src/unstable/settings/schema.js.map +1 -1
  196. package/dist/src/unstable/skills/manager.d.ts.map +1 -1
  197. package/dist/src/unstable/skills/manager.js +67 -12
  198. package/dist/src/unstable/skills/manager.js.map +1 -1
  199. package/dist/src/unstable/skills/manifest-schema.d.ts +3 -0
  200. package/dist/src/unstable/skills/manifest-schema.d.ts.map +1 -1
  201. package/dist/src/unstable/skills/operations/enable.d.ts.map +1 -1
  202. package/dist/src/unstable/skills/operations/enable.js +56 -18
  203. package/dist/src/unstable/skills/operations/enable.js.map +1 -1
  204. package/dist/src/unstable/skills/operations/install.d.ts +6 -0
  205. package/dist/src/unstable/skills/operations/install.d.ts.map +1 -1
  206. package/dist/src/unstable/skills/operations/install.js +55 -7
  207. package/dist/src/unstable/skills/operations/install.js.map +1 -1
  208. package/dist/src/unstable/source-resolution/providers/convention-discovery.d.ts.map +1 -1
  209. package/dist/src/unstable/source-resolution/providers/convention-discovery.js +2 -0
  210. package/dist/src/unstable/source-resolution/providers/convention-discovery.js.map +1 -1
  211. package/dist/src/unstable/source-resolution/providers/registry/host-provider.d.ts.map +1 -1
  212. package/dist/src/unstable/source-resolution/providers/registry/host-provider.js +10 -0
  213. package/dist/src/unstable/source-resolution/providers/registry/host-provider.js.map +1 -1
  214. package/dist/src/unstable/sources/printer.d.ts +2 -2
  215. package/dist/src/unstable/sources/printer.d.ts.map +1 -1
  216. package/dist/src/unstable/sources/printer.js.map +1 -1
  217. package/dist/src/unstable/subagents/manager.d.ts.map +1 -1
  218. package/dist/src/unstable/subagents/manager.js +72 -2
  219. package/dist/src/unstable/subagents/manager.js.map +1 -1
  220. package/dist/src/unstable/subagents/manifest-schema.d.ts +3 -0
  221. package/dist/src/unstable/subagents/manifest-schema.d.ts.map +1 -1
  222. package/dist/src/unstable/workspace/configured-entry-resolution/index.d.ts +2 -2
  223. package/dist/src/unstable/workspace/configured-entry-resolution/index.d.ts.map +1 -1
  224. package/dist/src/unstable/workspace/configured-entry-resolution/index.js +1 -1
  225. package/dist/src/unstable/workspace/configured-entry-resolution/index.js.map +1 -1
  226. package/dist/src/unstable/workspace/configured-entry-resolution/resolve.d.ts +5 -0
  227. package/dist/src/unstable/workspace/configured-entry-resolution/resolve.d.ts.map +1 -1
  228. package/dist/src/unstable/workspace/configured-entry-resolution/resolve.js +59 -0
  229. package/dist/src/unstable/workspace/configured-entry-resolution/resolve.js.map +1 -1
  230. package/dist/src/unstable/workspace/configured-entry-resolution/types.d.ts +2 -0
  231. package/dist/src/unstable/workspace/configured-entry-resolution/types.d.ts.map +1 -1
  232. package/dist/src/unstable/workspace/configured-entry-resolution/types.js.map +1 -1
  233. package/dist/src/unstable/workspace/configured-entry-resolution/workspace-ref.d.ts +2 -1
  234. package/dist/src/unstable/workspace/configured-entry-resolution/workspace-ref.d.ts.map +1 -1
  235. package/dist/src/unstable/workspace/configured-entry-resolution/workspace-ref.js +15 -0
  236. package/dist/src/unstable/workspace/configured-entry-resolution/workspace-ref.js.map +1 -1
  237. package/dist/src/unstable/workspace/index.d.ts +2 -2
  238. package/dist/src/unstable/workspace/index.d.ts.map +1 -1
  239. package/dist/src/unstable/workspace/index.js +1 -1
  240. package/dist/src/unstable/workspace/index.js.map +1 -1
  241. package/dist/src/unstable/workspace/initialization.d.ts +24 -0
  242. package/dist/src/unstable/workspace/initialization.d.ts.map +1 -1
  243. package/dist/src/unstable/workspace/read-model/extensions/inventory.d.ts +2 -2
  244. package/dist/src/unstable/workspace/read-model-record-readers.d.ts.map +1 -1
  245. package/dist/src/unstable/workspace/read-model-record-readers.js +11 -0
  246. package/dist/src/unstable/workspace/read-model-record-readers.js.map +1 -1
  247. package/dist/src/unstable/workspace/reconciliation-types.d.ts +6 -2
  248. package/dist/src/unstable/workspace/reconciliation-types.d.ts.map +1 -1
  249. package/dist/src/unstable/workspace/reconciliation.d.ts.map +1 -1
  250. package/dist/src/unstable/workspace/reconciliation.js +13 -1
  251. package/dist/src/unstable/workspace/reconciliation.js.map +1 -1
  252. package/dist/src/unstable/workspace/service-interface.d.ts +23 -3
  253. package/dist/src/unstable/workspace/service-interface.d.ts.map +1 -1
  254. package/dist/src/unstable/workspace/service-interface.js.map +1 -1
  255. package/dist/src/unstable/workspace/service.d.ts +542 -61
  256. package/dist/src/unstable/workspace/service.d.ts.map +1 -1
  257. package/dist/src/unstable/workspace/service.js +108 -0
  258. package/dist/src/unstable/workspace/service.js.map +1 -1
  259. package/dist/src/unstable/workspace/test-stubs.d.ts.map +1 -1
  260. package/dist/src/unstable/workspace/test-stubs.js +10 -0
  261. package/dist/src/unstable/workspace/test-stubs.js.map +1 -1
  262. package/package.json +14 -6
  263. package/site-content/__generated__/schemas/axm-lock.schema.json +471 -1
  264. package/site-content/__generated__/schemas/axm-package-meta.schema.json +1 -1
  265. package/site-content/__generated__/schemas/command.schema.json +57 -0
  266. package/site-content/__generated__/schemas/files.schema.json +57 -0
  267. package/site-content/__generated__/schemas/hook.schema.json +57 -0
  268. package/site-content/__generated__/schemas/knowledge.schema.json +365 -0
  269. package/site-content/__generated__/schemas/mcp.schema.json +57 -0
  270. package/site-content/__generated__/schemas/pack.schema.json +1 -1
  271. package/site-content/__generated__/schemas/rule.schema.json +57 -0
  272. package/site-content/__generated__/schemas/settings.schema.json +55 -0
  273. package/site-content/__generated__/schemas/skill.schema.json +57 -0
  274. package/site-content/__generated__/schemas/subagent.schema.json +57 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Verified, content-addressed cache for registry ZIP archives.
3
+ *
4
+ * @experimental This API is unstable and may change without notice.
5
+ */
6
+ import * as os from "node:os";
7
+ import * as Config from "effect/Config";
8
+ import * as FileSystem from "effect/FileSystem";
9
+ import * as Path from "effect/Path";
10
+ import * as Effect from "effect/Effect";
11
+ import * as Option from "effect/Option";
12
+ import { makeAppError } from "../app-error/index.js";
13
+ import { computeIntegrity } from "../utils/index.js";
14
+ export const ARCHIVE_CACHE_MAX_BYTES = 2 * 1024 * 1024 * 1024;
15
+ export const ARCHIVE_CACHE_MAX_AGE_MILLIS = 90 * 24 * 60 * 60 * 1_000;
16
+ const cacheError = (detail, cause) => makeAppError({ code: "internal", detail, ...(cause === undefined ? {} : { cause }) });
17
+ const cacheFileName = (integrity) => {
18
+ if (!integrity.startsWith("sha512-") || integrity.length === "sha512-".length)
19
+ return undefined;
20
+ const base64Url = integrity
21
+ .slice("sha512-".length)
22
+ .replaceAll("+", "-")
23
+ .replaceAll("/", "_")
24
+ .replace(/=+$/, "");
25
+ return `${base64Url}.zip`;
26
+ };
27
+ const integrityFromFileName = (fileName) => {
28
+ if (!fileName.endsWith(".zip"))
29
+ return undefined;
30
+ const base64Url = fileName.slice(0, -".zip".length);
31
+ if (base64Url.length === 0 || !/^[A-Za-z0-9_-]+$/.test(base64Url))
32
+ return undefined;
33
+ const remainder = base64Url.length % 4;
34
+ const padding = remainder === 0 ? "" : "=".repeat(4 - remainder);
35
+ return `sha512-${base64Url.replaceAll("-", "+").replaceAll("_", "/")}${padding}`;
36
+ };
37
+ const nonEmpty = (value) => value === undefined || value.length === 0 ? undefined : value;
38
+ export const resolveArchiveCacheRootPure = (pathJoin, platform, homeDir, environment) => {
39
+ const overriddenHome = nonEmpty(environment.axmUserHome);
40
+ const home = overriddenHome ?? homeDir;
41
+ if (platform === "darwin") {
42
+ return pathJoin(home, "Library", "Caches", "axm", "archives");
43
+ }
44
+ if (platform === "win32") {
45
+ const cacheHome = overriddenHome === undefined
46
+ ? (nonEmpty(environment.localAppData) ?? pathJoin(home, "AppData", "Local"))
47
+ : pathJoin(home, "AppData", "Local");
48
+ return pathJoin(cacheHome, "axm", "cache", "archives");
49
+ }
50
+ const cacheHome = overriddenHome === undefined
51
+ ? (nonEmpty(environment.xdgCacheHome) ?? pathJoin(home, ".cache"))
52
+ : pathJoin(home, ".cache");
53
+ return pathJoin(cacheHome, "axm", "archives");
54
+ };
55
+ const archiveCacheEnvironmentConfig = Config.all({
56
+ axmUserHome: Config.option(Config.string("AXM_USER_HOME")),
57
+ localAppData: Config.option(Config.string("LOCALAPPDATA")),
58
+ xdgCacheHome: Config.option(Config.string("XDG_CACHE_HOME")),
59
+ });
60
+ export const makeArchiveCache = (fs, path, root, options = {}) => {
61
+ const maxBytes = options.maxBytes ?? ARCHIVE_CACHE_MAX_BYTES;
62
+ const maxAgeMillis = options.maxAgeMillis ?? ARCHIVE_CACHE_MAX_AGE_MILLIS;
63
+ const pathForIntegrity = (integrity) => {
64
+ const fileName = cacheFileName(integrity);
65
+ return fileName === undefined
66
+ ? Effect.fail(cacheError(`Unsupported archive integrity value: ${integrity}`))
67
+ : Effect.succeed(path.join(root, fileName));
68
+ };
69
+ const listEntries = () => Effect.gen(function* () {
70
+ const exists = yield* fs.exists(root).pipe(Effect.orElseSucceed(() => false));
71
+ if (!exists)
72
+ return [];
73
+ const names = yield* fs
74
+ .readDirectory(root)
75
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to inspect archive cache: ${root}`, cause)));
76
+ return yield* Effect.forEach(names.filter((name) => name.endsWith(".zip")), (name) => Effect.gen(function* () {
77
+ const entryPath = path.join(root, name);
78
+ const info = yield* fs
79
+ .stat(entryPath)
80
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to inspect cache entry: ${entryPath}`, cause)));
81
+ return {
82
+ path: entryPath,
83
+ integrity: integrityFromFileName(name),
84
+ size: Number(info.size),
85
+ accessedAt: Option.match(info.mtime, {
86
+ onNone: () => 0,
87
+ onSome: (mtime) => mtime.getTime(),
88
+ }),
89
+ };
90
+ }), { concurrency: 16 });
91
+ });
92
+ const removeEntry = (entryPath) => fs
93
+ .remove(entryPath)
94
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to remove cache entry: ${entryPath}`, cause)));
95
+ const prune = (now = Date.now()) => Effect.gen(function* () {
96
+ const entries = [...(yield* listEntries())].sort((a, b) => a.accessedAt - b.accessedAt);
97
+ const expired = entries.filter((entry) => now - entry.accessedAt > maxAgeMillis);
98
+ yield* Effect.forEach(expired, (entry) => removeEntry(entry.path), { concurrency: 8 });
99
+ const expiredPaths = new Set(expired.map((entry) => entry.path));
100
+ const retained = entries.filter((entry) => !expiredPaths.has(entry.path));
101
+ let retainedBytes = retained.reduce((total, entry) => total + entry.size, 0);
102
+ const removedForSize = [];
103
+ for (const entry of retained) {
104
+ if (retainedBytes <= maxBytes)
105
+ break;
106
+ yield* removeEntry(entry.path);
107
+ removedForSize.push(entry);
108
+ retainedBytes -= entry.size;
109
+ }
110
+ const removed = [...expired, ...removedForSize];
111
+ return {
112
+ removed: removed.length,
113
+ bytesFreed: removed.reduce((total, entry) => total + entry.size, 0),
114
+ remaining: entries.length - removed.length,
115
+ remainingBytes: retainedBytes,
116
+ };
117
+ });
118
+ const read = (integrity) => Effect.gen(function* () {
119
+ const entryPath = yield* pathForIntegrity(integrity);
120
+ const exists = yield* fs.exists(entryPath).pipe(Effect.orElseSucceed(() => false));
121
+ if (!exists)
122
+ return Option.none();
123
+ const archive = yield* fs
124
+ .readFile(entryPath)
125
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to read cache entry: ${entryPath}`, cause)));
126
+ const actualIntegrity = yield* computeIntegrity(archive);
127
+ if (actualIntegrity !== integrity) {
128
+ yield* removeEntry(entryPath);
129
+ return Option.none();
130
+ }
131
+ const now = new Date();
132
+ yield* fs.utimes(entryPath, now, now).pipe(Effect.ignore);
133
+ return Option.some(archive);
134
+ });
135
+ const write = (integrity, archive, writeOptions = {}) => Effect.gen(function* () {
136
+ const actualIntegrity = yield* computeIntegrity(archive);
137
+ if (actualIntegrity !== integrity) {
138
+ return yield* makeAppError({
139
+ code: "validation",
140
+ detail: "Downloaded registry archive did not match its published integrity.",
141
+ });
142
+ }
143
+ const entryPath = yield* pathForIntegrity(integrity);
144
+ yield* fs
145
+ .makeDirectory(root, { recursive: true })
146
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to create archive cache: ${root}`, cause)));
147
+ const tempPath = yield* fs
148
+ .makeTempFile({
149
+ directory: root,
150
+ prefix: ".archive-",
151
+ suffix: ".tmp",
152
+ })
153
+ .pipe(Effect.mapError((cause) => cacheError("Failed to create archive cache temp file", cause)));
154
+ const tempDirectory = path.dirname(tempPath);
155
+ yield* Effect.ensuring(Effect.gen(function* () {
156
+ yield* fs
157
+ .writeFile(tempPath, archive)
158
+ .pipe(Effect.mapError((cause) => cacheError("Failed to write archive cache temp file", cause)));
159
+ yield* fs.remove(entryPath).pipe(Effect.ignore);
160
+ yield* fs
161
+ .rename(tempPath, entryPath)
162
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to commit cache entry: ${entryPath}`, cause)));
163
+ }), fs.remove(tempDirectory, { recursive: true }).pipe(Effect.ignore));
164
+ if (writeOptions.prune !== false)
165
+ yield* prune();
166
+ });
167
+ const status = () => Effect.map(listEntries(), (entries) => ({
168
+ entries: entries.length,
169
+ bytes: entries.reduce((total, entry) => total + entry.size, 0),
170
+ maxBytes,
171
+ maxAgeDays: maxAgeMillis / (24 * 60 * 60 * 1_000),
172
+ }));
173
+ const verify = () => Effect.gen(function* () {
174
+ const entries = yield* listEntries();
175
+ const results = yield* Effect.forEach(entries, (entry) => Effect.gen(function* () {
176
+ if (entry.integrity === undefined) {
177
+ yield* removeEntry(entry.path);
178
+ return false;
179
+ }
180
+ const archive = yield* fs
181
+ .readFile(entry.path)
182
+ .pipe(Effect.mapError((cause) => cacheError(`Failed to read cache entry: ${entry.path}`, cause)));
183
+ const actualIntegrity = yield* computeIntegrity(archive);
184
+ if (actualIntegrity === entry.integrity)
185
+ return true;
186
+ yield* removeEntry(entry.path);
187
+ return false;
188
+ }), { concurrency: 8 });
189
+ const valid = results.filter(Boolean).length;
190
+ return {
191
+ checked: results.length,
192
+ valid,
193
+ corruptRemoved: results.length - valid,
194
+ };
195
+ });
196
+ return { read, write, status, verify, prune };
197
+ };
198
+ export const makeUserArchiveCache = () => Effect.gen(function* () {
199
+ const fs = yield* FileSystem.FileSystem;
200
+ const path = yield* Path.Path;
201
+ const environment = yield* Effect.orDie(archiveCacheEnvironmentConfig);
202
+ const axmUserHome = Option.getOrUndefined(environment.axmUserHome);
203
+ const localAppData = Option.getOrUndefined(environment.localAppData);
204
+ const xdgCacheHome = Option.getOrUndefined(environment.xdgCacheHome);
205
+ const cacheEnvironment = {
206
+ ...(axmUserHome === undefined ? {} : { axmUserHome }),
207
+ ...(localAppData === undefined ? {} : { localAppData }),
208
+ ...(xdgCacheHome === undefined ? {} : { xdgCacheHome }),
209
+ };
210
+ const root = resolveArchiveCacheRootPure(path.join, process.platform, os.homedir(), cacheEnvironment);
211
+ return makeArchiveCache(fs, path, root);
212
+ });
213
+ //# sourceMappingURL=archive-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-cache.js","sourceRoot":"","sources":["../../../../src/unstable/registry/archive-cache.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,8 @@ export interface PublishExtensionArgs {
89
89
  readonly version: Version;
90
90
  readonly archive: Uint8Array;
91
91
  readonly metadata: VersionEntry;
92
+ /** Ephemeral exact publish capability. Never persisted by the registry client. */
93
+ readonly accessToken?: string;
92
94
  }
93
95
  export type ExtensionVisibility = "public" | "private";
94
96
  export interface UpdateExtensionVisibilityArgs {
@@ -217,12 +219,18 @@ export interface RegistryLibraryMember {
217
219
  readonly extensionOwner: Handle;
218
220
  readonly extensionType: ExtensionType;
219
221
  readonly extensionName: ExtensionName;
222
+ readonly resolvedVersion: Version;
220
223
  readonly addedAt: string;
224
+ readonly publishedAt: string | null;
221
225
  }
222
226
  export interface RegistryLibraryDetail {
223
- readonly library: RegistryLibrary;
227
+ readonly libraryId: string;
228
+ readonly reference: string;
229
+ readonly name: ExtensionName;
230
+ readonly updatedAt: string;
231
+ readonly membershipDigest: string;
232
+ readonly viewerRelative: true;
224
233
  readonly members: ReadonlyArray<RegistryLibraryMember>;
225
- readonly hiddenMemberCount: number;
226
234
  }
227
235
  /**
228
236
  * Client interface for interacting with a registry.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/unstable/registry/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/unstable/registry/client.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import * as Path from "effect/Path";
14
14
  import * as Effect from "effect/Effect";
15
15
  import * as Option from "effect/Option";
16
16
  import { stripFileProtocol } from "../utils/index.js";
17
+ import { makeUserArchiveCache } from "./archive-cache.js";
17
18
  import { createLocalRegistryClient } from "./local-client.js";
18
19
  import { createRemoteRegistryClient } from "./remote-client.js";
19
20
  // -----------------------------------------------------------------------------
@@ -36,7 +37,8 @@ export const createRegistryClient = (location) => Effect.gen(function* () {
36
37
  onNone: () => HttpClient.HttpClient.pipe(Effect.provide(FetchHttpClient.layer)),
37
38
  onSome: (client) => Effect.succeed(client),
38
39
  });
39
- return createRemoteRegistryClient(location, httpClient);
40
+ const archiveCache = yield* makeUserArchiveCache();
41
+ return createRemoteRegistryClient(location, httpClient, archiveCache);
40
42
  }
41
43
  const localPath = location.startsWith("file://") ? stripFileProtocol(location) : location;
42
44
  const fs = yield* FileSystem.FileSystem;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/unstable/registry/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAexC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAoUhE,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtE,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YACxD,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/E,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3C,CAAC,CAAC;QACH,OAAO,0BAA0B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1F,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,OAAO,yBAAyB,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/unstable/registry/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAexC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AA4UhE,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtE,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YACxD,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/E,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACnD,OAAO,0BAA0B,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1F,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,OAAO,yBAAyB,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
@@ -6,7 +6,7 @@
6
6
  import * as Schema from "effect/Schema";
7
7
  export declare const DiscoveryResolvedExtensionSchema: Schema.Struct<{
8
8
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
9
- readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "packs"]>;
9
+ readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "knowledge", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "knowledge", "packs"]>;
10
10
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
11
11
  readonly installVersion: Schema.brand<Schema.String, "Version">;
12
12
  }>;
@@ -16,7 +16,7 @@ export declare const DiscoveryExtensionResultSchema: Schema.Struct<{
16
16
  readonly resolved: Schema.Boolean;
17
17
  readonly extension: Schema.optional<Schema.Struct<{
18
18
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
19
- readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "packs"]>;
19
+ readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "knowledge", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "knowledge", "packs"]>;
20
20
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
21
21
  readonly installVersion: Schema.brand<Schema.String, "Version">;
22
22
  }>>;
@@ -34,7 +34,7 @@ export declare const DiscoveryPackageResultSchema: Schema.Struct<{
34
34
  readonly resolved: Schema.Boolean;
35
35
  readonly extension: Schema.optional<Schema.Struct<{
36
36
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
37
- readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "packs"]>;
37
+ readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "knowledge", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "knowledge", "packs"]>;
38
38
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
39
39
  readonly installVersion: Schema.brand<Schema.String, "Version">;
40
40
  }>>;
@@ -54,7 +54,7 @@ export declare const DiscoverPackagesResponseSchema: Schema.Struct<{
54
54
  readonly resolved: Schema.Boolean;
55
55
  readonly extension: Schema.optional<Schema.Struct<{
56
56
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
57
- readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "packs"]>;
57
+ readonly type: Schema.Literals<readonly ["skill", "command", "mcp-server", "subagent", "files", "rule", "hook", "knowledge", "pack", "skills", "commands", "mcps", "subagents", "files", "rules", "hooks", "knowledge", "packs"]>;
58
58
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
59
59
  readonly installVersion: Schema.brand<Schema.String, "Version">;
60
60
  }>>;
@@ -15,6 +15,8 @@ export type { RegistryClient, RegistryExtensionManifest, DiscoverPackageInput, D
15
15
  export { createRegistryClient } from "./client.js";
16
16
  export { createLocalRegistryClient } from "./local-client.js";
17
17
  export { createRemoteRegistryClient } from "./remote-client.js";
18
+ export type { ArchiveCache, ArchiveCacheOptions, ArchiveCachePruneResult, ArchiveCacheStatus, ArchiveCacheVerifyResult, } from "./archive-cache.js";
19
+ export { ARCHIVE_CACHE_MAX_AGE_MILLIS, ARCHIVE_CACHE_MAX_BYTES, makeArchiveCache, makeUserArchiveCache, } from "./archive-cache.js";
18
20
  export type { ExtensionMaintainer, ExtensionMaintainerTarget, RegistryExtensionReference, RegistryExtensionVersionReference, RegistryLifecycleCallOptions, YankCategory, } from "./admin-client.js";
19
21
  export { clearExtensionMaintainer, getExtensionMaintainer, setExtensionMaintainer, yankExtensionVersion, yankAvailableExtensionVersions, unyankExtensionVersion, deprecateExtension, undeprecateExtension, } from "./admin-client.js";
20
22
  export { buildNetworkSuggestions, buildNetworkDiagnosis, isRegistryClientError, isHttpClientError, isSchemaError, mapNetworkError, mapSchemaError, mapUnexpectedStatusError, } from "./error-mapping.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/unstable/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGlG,YAAY,EACV,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,iCAAiC,EACjC,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/unstable/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGlG,YAAY,EACV,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,iCAAiC,EACjC,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -14,6 +14,7 @@ export { createRegistryClient } from "./client.js";
14
14
  export { createLocalRegistryClient } from "./local-client.js";
15
15
  // Remote client
16
16
  export { createRemoteRegistryClient } from "./remote-client.js";
17
+ export { ARCHIVE_CACHE_MAX_AGE_MILLIS, ARCHIVE_CACHE_MAX_BYTES, makeArchiveCache, makeUserArchiveCache, } from "./archive-cache.js";
17
18
  export { clearExtensionMaintainer, getExtensionMaintainer, setExtensionMaintainer, yankExtensionVersion, yankAvailableExtensionVersions, unyankExtensionVersion, deprecateExtension, undeprecateExtension, } from "./admin-client.js";
18
19
  // Error mapping helpers
19
20
  export { buildNetworkSuggestions, buildNetworkDiagnosis, isRegistryClientError, isHttpClientError, isSchemaError, mapNetworkError, mapSchemaError, mapUnexpectedStatusError, } from "./error-mapping.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/unstable/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AASlG,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AA2B9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAe;AACf,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,gBAAgB;AAChB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAUhE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,iCAAiC,EACjC,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/unstable/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AASlG,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,sBAAsB,CAAC;AA2B9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,eAAe;AACf,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,gBAAgB;AAChB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAShE,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,cAAc,EACd,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,iCAAiC,EACjC,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../../../../src/unstable/registry/local-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AAYzC,OAAO,KAAK,EACV,cAAc,EAQf,MAAM,aAAa,CAAC;AA2NrB;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,MAAM,EACpB,IAAI,UAAU,CAAC,UAAU,EACzB,MAAM,IAAI,CAAC,IAAI,KACd,cAgYD,CAAC"}
1
+ {"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../../../../src/unstable/registry/local-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AAczC,OAAO,KAAK,EACV,cAAc,EAQf,MAAM,aAAa,CAAC;AAuRrB;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,GACpC,cAAc,MAAM,EACpB,IAAI,UAAU,CAAC,UAAU,EACzB,MAAM,IAAI,CAAC,IAAI,KACd,cA8aD,CAAC"}
@@ -8,9 +8,11 @@
8
8
  * @packageDocumentation
9
9
  */
10
10
  import * as Array from "effect/Array";
11
+ import * as Duration from "effect/Duration";
11
12
  import * as Effect from "effect/Effect";
12
13
  import * as Option from "effect/Option";
13
14
  import * as Schema from "effect/Schema";
15
+ import * as Semaphore from "effect/Semaphore";
14
16
  import { errPublishConflict, errRegistryPublishRejected, makeAppError, } from "../app-error/index.js";
15
17
  import { toAuthor } from "../extensions/index.js";
16
18
  import { isExtensionTypePlural, parseExtensionFqnParts, toExtensionTypePlural, } from "../extensions/common.js";
@@ -21,6 +23,9 @@ import { extensionDir, pluralizeType, resolveVersionEntry, selectVersion } from
21
23
  const decodeExtensionIndexFromJsonString = Schema.decodeUnknownEffect(Schema.fromJsonString(ExtensionIndexSchema));
22
24
  const encodeExtensionIndexToJsonString = Schema.encodeSync(Schema.fromJsonString(ExtensionIndexSchema));
23
25
  const encodePackageUrl = Schema.encodeSync(PackageUrlSchema);
26
+ const PUBLISH_LOCK_RETRY_DELAY = Duration.millis(25);
27
+ const PUBLISH_LOCK_STALE_MILLIS = Duration.toMillis(Duration.minutes(5));
28
+ const publishLockSemaphores = new Map();
24
29
  // -----------------------------------------------------------------------------
25
30
  // Helpers
26
31
  // -----------------------------------------------------------------------------
@@ -36,6 +41,43 @@ const readExtensionIndex = (fs, idxPath) => Effect.gen(function* () {
36
41
  cause: e,
37
42
  })));
38
43
  });
44
+ const removeBestEffort = (fs, filePath) => fs.remove(filePath).pipe(Effect.ignore);
45
+ const inProcessPublishSemaphoreFor = (lockPath) => {
46
+ const existing = publishLockSemaphores.get(lockPath);
47
+ if (existing !== undefined)
48
+ return existing;
49
+ const created = Semaphore.makeUnsafe(1);
50
+ publishLockSemaphores.set(lockPath, created);
51
+ return created;
52
+ };
53
+ const acquirePublishLock = (fs, lockPath) => Effect.gen(function* () {
54
+ const result = yield* fs
55
+ .writeFileString(lockPath, `${new Date().toISOString()}\n`, { flag: "wx" })
56
+ .pipe(Effect.result);
57
+ if (result._tag === "Success")
58
+ return;
59
+ if (result.failure.reason._tag !== "AlreadyExists") {
60
+ return yield* makeAppError({
61
+ code: "internal",
62
+ detail: `Failed to acquire local registry publish lock: ${lockPath}`,
63
+ cause: result.failure,
64
+ });
65
+ }
66
+ const info = yield* fs.stat(lockPath).pipe(Effect.option);
67
+ if (Option.isSome(info) &&
68
+ Option.isSome(info.value.mtime) &&
69
+ Date.now() - info.value.mtime.value.getTime() > PUBLISH_LOCK_STALE_MILLIS) {
70
+ yield* removeBestEffort(fs, lockPath);
71
+ }
72
+ else {
73
+ yield* Effect.sleep(PUBLISH_LOCK_RETRY_DELAY);
74
+ }
75
+ return yield* acquirePublishLock(fs, lockPath);
76
+ });
77
+ const withPublishLock = (fs, lockPath, effect) => inProcessPublishSemaphoreFor(lockPath).withPermits(1)(Effect.scoped(Effect.gen(function* () {
78
+ yield* Effect.acquireRelease(acquirePublishLock(fs, lockPath), () => removeBestEffort(fs, lockPath));
79
+ return yield* effect;
80
+ })));
39
81
  const indexToManifest = (index, versionRange) => {
40
82
  const selectedVersion = resolveVersionEntry(index.versions, versionRange);
41
83
  if (Option.isNone(selectedVersion))
@@ -298,55 +340,80 @@ export const createLocalRegistryClient = (registryRoot, fs, path) => ({
298
340
  })));
299
341
  const indexPath = path.join(dir, "index.json");
300
342
  const archivePath = path.join(dir, `${args.version}.zip`);
301
- // Check for existing index
302
- const indexExists = yield* fs.exists(indexPath).pipe(Effect.orElseSucceed(() => false));
303
- if (indexExists) {
304
- // Read existing index
305
- const content = yield* fs.readFileString(indexPath).pipe(Effect.mapError((e) => errRegistryPublishRejected({
306
- message: `Registry index could not be read: ${indexPath}`,
307
- cause: e,
308
- })));
309
- const existingIndex = yield* decodeExtensionIndexFromJsonString(content).pipe(Effect.mapError((e) => errRegistryPublishRejected({
310
- message: "Registry index schema is invalid",
311
- cause: e,
312
- })));
313
- const existingVersion = existingIndex.versions.find((v) => v.version === args.version);
314
- if (existingVersion) {
315
- return yield* errPublishConflict({ version: args.version });
316
- }
317
- // Prepend new version entry
318
- const updatedIndex = {
319
- ...existingIndex,
320
- versions: [args.metadata, ...existingIndex.versions],
321
- };
322
- yield* fs
323
- .writeFileString(indexPath, `${encodeExtensionIndexToJsonString(updatedIndex)}\n`)
324
- .pipe(Effect.mapError((e) => errRegistryPublishRejected({
325
- message: `Registry index could not be written: ${indexPath}`,
326
- cause: e,
343
+ const lockPath = path.join(dir, ".publish.lock");
344
+ return yield* withPublishLock(fs, lockPath, Effect.gen(function* () {
345
+ const indexExists = yield* fs.exists(indexPath).pipe(Effect.orElseSucceed(() => false));
346
+ const nextIndex = indexExists
347
+ ? yield* Effect.gen(function* () {
348
+ const content = yield* fs.readFileString(indexPath).pipe(Effect.mapError((cause) => errRegistryPublishRejected({
349
+ message: `Registry index could not be read: ${indexPath}`,
350
+ cause,
351
+ })));
352
+ const existingIndex = yield* decodeExtensionIndexFromJsonString(content).pipe(Effect.mapError((cause) => errRegistryPublishRejected({
353
+ message: "Registry index schema is invalid",
354
+ cause,
355
+ })));
356
+ if (existingIndex.versions.some((version) => version.version === args.version)) {
357
+ return yield* errPublishConflict({ version: args.version });
358
+ }
359
+ return {
360
+ ...existingIndex,
361
+ versions: [args.metadata, ...existingIndex.versions],
362
+ };
363
+ })
364
+ : {
365
+ name: args.name,
366
+ owner,
367
+ type: args.type,
368
+ versions: [args.metadata],
369
+ };
370
+ const archiveTempPath = yield* fs
371
+ .makeTempFile({
372
+ directory: dir,
373
+ prefix: `.${args.version}.archive-`,
374
+ suffix: ".tmp",
375
+ })
376
+ .pipe(Effect.mapError((cause) => errRegistryPublishRejected({
377
+ message: "Registry archive temp file could not be created",
378
+ cause,
327
379
  })));
328
- }
329
- else {
330
- // Create new index
331
- const newIndex = {
332
- name: args.name,
333
- owner,
334
- type: args.type,
335
- versions: [args.metadata],
336
- };
337
- yield* fs
338
- .writeFileString(indexPath, `${encodeExtensionIndexToJsonString(newIndex)}\n`)
339
- .pipe(Effect.mapError((e) => errRegistryPublishRejected({
340
- message: `Registry index could not be written: ${indexPath}`,
341
- cause: e,
380
+ const archiveTempDir = path.dirname(archiveTempPath);
381
+ yield* Effect.ensuring(Effect.gen(function* () {
382
+ yield* fs.writeFile(archiveTempPath, args.archive).pipe(Effect.mapError((cause) => errRegistryPublishRejected({
383
+ message: `Registry archive temp file could not be written: ${archiveTempPath}`,
384
+ cause,
385
+ })));
386
+ yield* removeBestEffort(fs, archivePath);
387
+ yield* fs.rename(archiveTempPath, archivePath).pipe(Effect.mapError((cause) => errRegistryPublishRejected({
388
+ message: `Registry archive could not be committed: ${archivePath}`,
389
+ cause,
390
+ })));
391
+ }), fs.remove(archiveTempDir, { recursive: true }).pipe(Effect.ignore));
392
+ const indexTempPath = yield* fs
393
+ .makeTempFile({
394
+ directory: dir,
395
+ prefix: ".index-",
396
+ suffix: ".tmp",
397
+ })
398
+ .pipe(Effect.mapError((cause) => errRegistryPublishRejected({
399
+ message: "Registry index temp file could not be created",
400
+ cause,
342
401
  })));
343
- }
344
- // Write archive
345
- yield* fs.writeFile(archivePath, args.archive).pipe(Effect.mapError((e) => errRegistryPublishRejected({
346
- message: `Registry archive could not be written: ${archivePath}`,
347
- cause: e,
348
- })));
349
- return { published: true };
402
+ const indexTempDir = path.dirname(indexTempPath);
403
+ yield* Effect.ensuring(Effect.gen(function* () {
404
+ yield* fs
405
+ .writeFileString(indexTempPath, `${encodeExtensionIndexToJsonString(nextIndex)}\n`)
406
+ .pipe(Effect.mapError((cause) => errRegistryPublishRejected({
407
+ message: `Registry index temp file could not be written: ${indexTempPath}`,
408
+ cause,
409
+ })));
410
+ yield* fs.rename(indexTempPath, indexPath).pipe(Effect.mapError((cause) => errRegistryPublishRejected({
411
+ message: `Registry index could not be committed: ${indexPath}`,
412
+ cause,
413
+ })));
414
+ }), fs.remove(indexTempDir, { recursive: true }).pipe(Effect.ignore));
415
+ return { published: true };
416
+ }));
350
417
  }),
351
418
  updateExtensionVisibility: (args) => Effect.gen(function* () {
352
419
  const dir = extensionDir(registryRoot, args.owner, args.type, args.name, path.join);