@detergent-software/atk 3.0.0-dev.2 → 3.0.0-dev.21

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 (301) hide show
  1. package/README.md +361 -0
  2. package/build/commands/audit.d.ts.map +1 -1
  3. package/build/commands/audit.js +79 -37
  4. package/build/commands/audit.js.map +1 -1
  5. package/build/commands/browse.d.ts.map +1 -1
  6. package/build/commands/browse.js +119 -154
  7. package/build/commands/browse.js.map +1 -1
  8. package/build/commands/cache.d.ts.map +1 -1
  9. package/build/commands/cache.js +13 -15
  10. package/build/commands/cache.js.map +1 -1
  11. package/build/commands/config.d.ts +1 -1
  12. package/build/commands/config.d.ts.map +1 -1
  13. package/build/commands/config.js +7 -3
  14. package/build/commands/config.js.map +1 -1
  15. package/build/commands/diff.d.ts.map +1 -1
  16. package/build/commands/diff.js +4 -117
  17. package/build/commands/diff.js.map +1 -1
  18. package/build/commands/freeze.d.ts +1 -2
  19. package/build/commands/freeze.d.ts.map +1 -1
  20. package/build/commands/freeze.js +17 -37
  21. package/build/commands/freeze.js.map +1 -1
  22. package/build/commands/info.d.ts +1 -2
  23. package/build/commands/info.d.ts.map +1 -1
  24. package/build/commands/info.js +36 -35
  25. package/build/commands/info.js.map +1 -1
  26. package/build/commands/init.d.ts.map +1 -1
  27. package/build/commands/init.js +39 -405
  28. package/build/commands/init.js.map +1 -1
  29. package/build/commands/install.d.ts.map +1 -1
  30. package/build/commands/install.js +49 -34
  31. package/build/commands/install.js.map +1 -1
  32. package/build/commands/list.d.ts +2 -2
  33. package/build/commands/list.d.ts.map +1 -1
  34. package/build/commands/list.js +138 -27
  35. package/build/commands/list.js.map +1 -1
  36. package/build/commands/outdated.d.ts.map +1 -1
  37. package/build/commands/outdated.js +20 -10
  38. package/build/commands/outdated.js.map +1 -1
  39. package/build/commands/pin.d.ts +1 -2
  40. package/build/commands/pin.d.ts.map +1 -1
  41. package/build/commands/pin.js +44 -47
  42. package/build/commands/pin.js.map +1 -1
  43. package/build/commands/prune.d.ts.map +1 -1
  44. package/build/commands/prune.js +76 -151
  45. package/build/commands/prune.js.map +1 -1
  46. package/build/commands/publish.d.ts +3 -1
  47. package/build/commands/publish.d.ts.map +1 -1
  48. package/build/commands/publish.js +67 -390
  49. package/build/commands/publish.js.map +1 -1
  50. package/build/commands/search.d.ts.map +1 -1
  51. package/build/commands/search.js +14 -19
  52. package/build/commands/search.js.map +1 -1
  53. package/build/commands/setup.d.ts +1 -1
  54. package/build/commands/setup.d.ts.map +1 -1
  55. package/build/commands/setup.js +48 -253
  56. package/build/commands/setup.js.map +1 -1
  57. package/build/commands/sync.d.ts.map +1 -1
  58. package/build/commands/sync.js +43 -169
  59. package/build/commands/sync.js.map +1 -1
  60. package/build/commands/thaw.d.ts +1 -2
  61. package/build/commands/thaw.d.ts.map +1 -1
  62. package/build/commands/thaw.js +19 -37
  63. package/build/commands/thaw.js.map +1 -1
  64. package/build/commands/uninstall.d.ts.map +1 -1
  65. package/build/commands/uninstall.js +106 -221
  66. package/build/commands/uninstall.js.map +1 -1
  67. package/build/commands/unpin.d.ts +1 -2
  68. package/build/commands/unpin.d.ts.map +1 -1
  69. package/build/commands/unpin.js +23 -38
  70. package/build/commands/unpin.js.map +1 -1
  71. package/build/commands/update.d.ts.map +1 -1
  72. package/build/commands/update.js +37 -25
  73. package/build/commands/update.js.map +1 -1
  74. package/build/commands/why.d.ts +1 -1
  75. package/build/commands/why.d.ts.map +1 -1
  76. package/build/commands/why.js +14 -6
  77. package/build/commands/why.js.map +1 -1
  78. package/build/components/AssetDetail.d.ts +1 -3
  79. package/build/components/AssetDetail.d.ts.map +1 -1
  80. package/build/components/AssetDetail.js +24 -21
  81. package/build/components/AssetDetail.js.map +1 -1
  82. package/build/components/AssetTable.d.ts +5 -2
  83. package/build/components/AssetTable.d.ts.map +1 -1
  84. package/build/components/AssetTable.js +37 -40
  85. package/build/components/AssetTable.js.map +1 -1
  86. package/build/components/BrowseExpandedBundle.d.ts +7 -0
  87. package/build/components/BrowseExpandedBundle.d.ts.map +1 -1
  88. package/build/components/BrowseExpandedBundle.js +19 -0
  89. package/build/components/BrowseExpandedBundle.js.map +1 -1
  90. package/build/components/BrowseExpandedRow.d.ts +4 -1
  91. package/build/components/BrowseExpandedRow.d.ts.map +1 -1
  92. package/build/components/BrowseExpandedRow.js +24 -3
  93. package/build/components/BrowseExpandedRow.js.map +1 -1
  94. package/build/components/BrowseList.d.ts +3 -1
  95. package/build/components/BrowseList.d.ts.map +1 -1
  96. package/build/components/BrowseList.js +52 -42
  97. package/build/components/BrowseList.js.map +1 -1
  98. package/build/components/DiffView.d.ts +0 -2
  99. package/build/components/DiffView.d.ts.map +1 -1
  100. package/build/components/DiffView.js +11 -5
  101. package/build/components/DiffView.js.map +1 -1
  102. package/build/components/DryRunBanner.d.ts +3 -3
  103. package/build/components/DryRunBanner.d.ts.map +1 -1
  104. package/build/components/DryRunBanner.js +2 -2
  105. package/build/components/DryRunBanner.js.map +1 -1
  106. package/build/components/FilterBar.d.ts +10 -3
  107. package/build/components/FilterBar.d.ts.map +1 -1
  108. package/build/components/FilterBar.js +4 -4
  109. package/build/components/FilterBar.js.map +1 -1
  110. package/build/components/FrozenSkippedHint.d.ts +11 -0
  111. package/build/components/FrozenSkippedHint.d.ts.map +1 -0
  112. package/build/components/FrozenSkippedHint.js +12 -0
  113. package/build/components/FrozenSkippedHint.js.map +1 -0
  114. package/build/components/HelpBar.d.ts.map +1 -1
  115. package/build/components/HelpBar.js +3 -3
  116. package/build/components/HelpBar.js.map +1 -1
  117. package/build/components/InitSuccess.d.ts +5 -0
  118. package/build/components/InitSuccess.d.ts.map +1 -0
  119. package/build/components/InitSuccess.js +20 -0
  120. package/build/components/InitSuccess.js.map +1 -0
  121. package/build/components/InstallSummary.d.ts +3 -3
  122. package/build/components/InstallSummary.d.ts.map +1 -1
  123. package/build/components/InstallSummary.js +2 -2
  124. package/build/components/InstallSummary.js.map +1 -1
  125. package/build/components/Link.d.ts +7 -0
  126. package/build/components/Link.d.ts.map +1 -0
  127. package/build/components/Link.js +6 -0
  128. package/build/components/Link.js.map +1 -0
  129. package/build/components/ListActionBar.d.ts +11 -0
  130. package/build/components/ListActionBar.d.ts.map +1 -0
  131. package/build/components/ListActionBar.js +30 -0
  132. package/build/components/ListActionBar.js.map +1 -0
  133. package/build/components/ListBrowseList.d.ts +27 -0
  134. package/build/components/ListBrowseList.d.ts.map +1 -0
  135. package/build/components/ListBrowseList.js +57 -0
  136. package/build/components/ListBrowseList.js.map +1 -0
  137. package/build/components/ListExpandedRow.d.ts +38 -0
  138. package/build/components/ListExpandedRow.d.ts.map +1 -0
  139. package/build/components/ListExpandedRow.js +46 -0
  140. package/build/components/ListExpandedRow.js.map +1 -0
  141. package/build/components/ListHelpBar.d.ts +19 -0
  142. package/build/components/ListHelpBar.d.ts.map +1 -0
  143. package/build/components/ListHelpBar.js +11 -0
  144. package/build/components/ListHelpBar.js.map +1 -0
  145. package/build/components/OrphanListItem.d.ts +15 -0
  146. package/build/components/OrphanListItem.d.ts.map +1 -0
  147. package/build/components/OrphanListItem.js +6 -0
  148. package/build/components/OrphanListItem.js.map +1 -0
  149. package/build/components/PromptField.d.ts +19 -0
  150. package/build/components/PromptField.d.ts.map +1 -0
  151. package/build/components/PromptField.js +7 -0
  152. package/build/components/PromptField.js.map +1 -0
  153. package/build/components/StatusBadge.d.ts +1 -1
  154. package/build/components/StatusBadge.d.ts.map +1 -1
  155. package/build/components/StatusBadge.js +4 -0
  156. package/build/components/StatusBadge.js.map +1 -1
  157. package/build/components/SyncAllInSync.d.ts +14 -0
  158. package/build/components/SyncAllInSync.d.ts.map +1 -0
  159. package/build/components/SyncAllInSync.js +10 -0
  160. package/build/components/SyncAllInSync.js.map +1 -0
  161. package/build/components/SyncDriftedList.d.ts +24 -0
  162. package/build/components/SyncDriftedList.d.ts.map +1 -0
  163. package/build/components/SyncDriftedList.js +17 -0
  164. package/build/components/SyncDriftedList.js.map +1 -0
  165. package/build/components/SyncNoAssets.d.ts +12 -0
  166. package/build/components/SyncNoAssets.d.ts.map +1 -0
  167. package/build/components/SyncNoAssets.js +9 -0
  168. package/build/components/SyncNoAssets.js.map +1 -0
  169. package/build/components/index.d.ts +14 -2
  170. package/build/components/index.d.ts.map +1 -1
  171. package/build/components/index.js +14 -2
  172. package/build/components/index.js.map +1 -1
  173. package/build/hooks/useBrowseState.d.ts +41 -1
  174. package/build/hooks/useBrowseState.d.ts.map +1 -1
  175. package/build/hooks/useBrowseState.js +142 -12
  176. package/build/hooks/useBrowseState.js.map +1 -1
  177. package/build/hooks/useConfirmation.d.ts +18 -0
  178. package/build/hooks/useConfirmation.d.ts.map +1 -0
  179. package/build/hooks/useConfirmation.js +56 -0
  180. package/build/hooks/useConfirmation.js.map +1 -0
  181. package/build/hooks/useInitState.d.ts +72 -0
  182. package/build/hooks/useInitState.d.ts.map +1 -0
  183. package/build/hooks/useInitState.js +372 -0
  184. package/build/hooks/useInitState.js.map +1 -0
  185. package/build/hooks/useListActions.d.ts +15 -0
  186. package/build/hooks/useListActions.d.ts.map +1 -0
  187. package/build/hooks/useListActions.js +155 -0
  188. package/build/hooks/useListActions.js.map +1 -0
  189. package/build/hooks/useListState.d.ts +151 -0
  190. package/build/hooks/useListState.d.ts.map +1 -0
  191. package/build/hooks/useListState.js +448 -0
  192. package/build/hooks/useListState.js.map +1 -0
  193. package/build/hooks/usePruneState.d.ts +76 -0
  194. package/build/hooks/usePruneState.d.ts.map +1 -0
  195. package/build/hooks/usePruneState.js +246 -0
  196. package/build/hooks/usePruneState.js.map +1 -0
  197. package/build/hooks/usePublishState.d.ts +115 -0
  198. package/build/hooks/usePublishState.d.ts.map +1 -0
  199. package/build/hooks/usePublishState.js +673 -0
  200. package/build/hooks/usePublishState.js.map +1 -0
  201. package/build/hooks/useSetupState.d.ts +57 -0
  202. package/build/hooks/useSetupState.d.ts.map +1 -0
  203. package/build/hooks/useSetupState.js +236 -0
  204. package/build/hooks/useSetupState.js.map +1 -0
  205. package/build/hooks/useUninstallState.d.ts +102 -0
  206. package/build/hooks/useUninstallState.d.ts.map +1 -0
  207. package/build/hooks/useUninstallState.js +342 -0
  208. package/build/hooks/useUninstallState.js.map +1 -0
  209. package/build/lib/adapter.d.ts +21 -0
  210. package/build/lib/adapter.d.ts.map +1 -1
  211. package/build/lib/adapter.js +59 -1
  212. package/build/lib/adapter.js.map +1 -1
  213. package/build/lib/checksum.d.ts +39 -0
  214. package/build/lib/checksum.d.ts.map +1 -1
  215. package/build/lib/checksum.js +101 -13
  216. package/build/lib/checksum.js.map +1 -1
  217. package/build/lib/config.d.ts +38 -18
  218. package/build/lib/config.d.ts.map +1 -1
  219. package/build/lib/config.js +107 -55
  220. package/build/lib/config.js.map +1 -1
  221. package/build/lib/detector.d.ts +2 -11
  222. package/build/lib/detector.d.ts.map +1 -1
  223. package/build/lib/detector.js +2 -64
  224. package/build/lib/detector.js.map +1 -1
  225. package/build/lib/diagnostics.d.ts +7 -0
  226. package/build/lib/diagnostics.d.ts.map +1 -1
  227. package/build/lib/diagnostics.js +54 -34
  228. package/build/lib/diagnostics.js.map +1 -1
  229. package/build/lib/diff-command.d.ts +40 -0
  230. package/build/lib/diff-command.d.ts.map +1 -0
  231. package/build/lib/diff-command.js +145 -0
  232. package/build/lib/diff-command.js.map +1 -0
  233. package/build/lib/diff.d.ts +7 -0
  234. package/build/lib/diff.d.ts.map +1 -1
  235. package/build/lib/diff.js +15 -10
  236. package/build/lib/diff.js.map +1 -1
  237. package/build/lib/format.d.ts +6 -0
  238. package/build/lib/format.d.ts.map +1 -0
  239. package/build/lib/format.js +18 -0
  240. package/build/lib/format.js.map +1 -0
  241. package/build/lib/github.d.ts +8 -0
  242. package/build/lib/github.d.ts.map +1 -1
  243. package/build/lib/github.js +9 -0
  244. package/build/lib/github.js.map +1 -1
  245. package/build/lib/gitignore.d.ts +17 -0
  246. package/build/lib/gitignore.d.ts.map +1 -1
  247. package/build/lib/gitignore.js +17 -1
  248. package/build/lib/gitignore.js.map +1 -1
  249. package/build/lib/installer.d.ts +1 -0
  250. package/build/lib/installer.d.ts.map +1 -1
  251. package/build/lib/installer.js +7 -7
  252. package/build/lib/installer.js.map +1 -1
  253. package/build/lib/lockfile.d.ts +19 -17
  254. package/build/lib/lockfile.d.ts.map +1 -1
  255. package/build/lib/lockfile.js +43 -67
  256. package/build/lib/lockfile.js.map +1 -1
  257. package/build/lib/publisher.d.ts +35 -0
  258. package/build/lib/publisher.d.ts.map +1 -1
  259. package/build/lib/publisher.js +210 -16
  260. package/build/lib/publisher.js.map +1 -1
  261. package/build/lib/registry.d.ts +20 -5
  262. package/build/lib/registry.d.ts.map +1 -1
  263. package/build/lib/registry.js +41 -30
  264. package/build/lib/registry.js.map +1 -1
  265. package/build/lib/schemas/config.d.ts +31 -3
  266. package/build/lib/schemas/config.d.ts.map +1 -1
  267. package/build/lib/schemas/config.js +21 -2
  268. package/build/lib/schemas/config.js.map +1 -1
  269. package/build/lib/schemas/index.d.ts +1 -1
  270. package/build/lib/schemas/index.d.ts.map +1 -1
  271. package/build/lib/schemas/index.js +1 -1
  272. package/build/lib/schemas/index.js.map +1 -1
  273. package/build/lib/schemas/lockfile.d.ts +18 -2
  274. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  275. package/build/lib/schemas/lockfile.js +10 -1
  276. package/build/lib/schemas/lockfile.js.map +1 -1
  277. package/build/lib/search.d.ts +15 -1
  278. package/build/lib/search.d.ts.map +1 -1
  279. package/build/lib/search.js +65 -65
  280. package/build/lib/search.js.map +1 -1
  281. package/build/lib/setup.d.ts +28 -0
  282. package/build/lib/setup.d.ts.map +1 -0
  283. package/build/lib/setup.js +98 -0
  284. package/build/lib/setup.js.map +1 -0
  285. package/build/lib/sync.d.ts +109 -0
  286. package/build/lib/sync.d.ts.map +1 -0
  287. package/build/lib/sync.js +221 -0
  288. package/build/lib/sync.js.map +1 -0
  289. package/build/lib/tool-resolver.d.ts +29 -6
  290. package/build/lib/tool-resolver.d.ts.map +1 -1
  291. package/build/lib/tool-resolver.js +54 -15
  292. package/build/lib/tool-resolver.js.map +1 -1
  293. package/build/lib/updater.d.ts +7 -4
  294. package/build/lib/updater.d.ts.map +1 -1
  295. package/build/lib/updater.js +12 -7
  296. package/build/lib/updater.js.map +1 -1
  297. package/build/lib/version.js +1 -1
  298. package/build/lib/version.js.map +1 -1
  299. package/package.json +79 -65
  300. package/tool-adapters/claude-code.json +1 -1
  301. package/tool-adapters/copilot-cli.json +1 -1
@@ -9,8 +9,36 @@ export declare const ConfigSchema: z.ZodObject<{
9
9
  }, z.core.$strip>;
10
10
  export type Config = z.infer<typeof ConfigSchema>;
11
11
  export declare const DEFAULT_CONFIG: Config;
12
- export declare const ProjectConfigSchema: z.ZodObject<{
13
- tool: z.ZodString;
12
+ declare const ProjectConfigBase: z.ZodObject<{
13
+ frozenAssets: z.ZodOptional<z.ZodArray<z.ZodObject<{
14
+ name: z.ZodString;
15
+ org: z.ZodOptional<z.ZodString>;
16
+ type: z.ZodEnum<{
17
+ skill: "skill";
18
+ agent: "agent";
19
+ rule: "rule";
20
+ hook: "hook";
21
+ "memory-template": "memory-template";
22
+ "mcp-config": "mcp-config";
23
+ }>;
24
+ }, z.core.$strip>>>;
25
+ tools: z.ZodArray<z.ZodString>;
14
26
  }, z.core.$strip>;
15
- export type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
27
+ export declare const ProjectConfigSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
28
+ frozenAssets: z.ZodOptional<z.ZodArray<z.ZodObject<{
29
+ name: z.ZodString;
30
+ org: z.ZodOptional<z.ZodString>;
31
+ type: z.ZodEnum<{
32
+ skill: "skill";
33
+ agent: "agent";
34
+ rule: "rule";
35
+ hook: "hook";
36
+ "memory-template": "memory-template";
37
+ "mcp-config": "mcp-config";
38
+ }>;
39
+ }, z.core.$strip>>>;
40
+ tools: z.ZodArray<z.ZodString>;
41
+ }, z.core.$strip>>;
42
+ export type ProjectConfig = z.infer<typeof ProjectConfigBase>;
43
+ export {};
16
44
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;iBAOvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,MAE5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;iBAOvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,MAE5B,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;iBAYrB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;kBAYX,CAAC;AACtB,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { AssetType } from './manifest.js';
2
3
  export const ConfigSchema = z.object({
3
4
  cacheDir: z.string().optional().describe('Override cache directory (defaults to ~/.atk/cache/)'),
4
5
  cacheTtlMinutes: z.number().optional().describe('Cache TTL in minutes for registry data'),
@@ -10,7 +11,25 @@ export const ConfigSchema = z.object({
10
11
  export const DEFAULT_CONFIG = {
11
12
  cacheTtlMinutes: 5,
12
13
  };
13
- export const ProjectConfigSchema = z.object({
14
- tool: z.string().describe('Tool this project is configured for'),
14
+ const ProjectConfigBase = z.object({
15
+ frozenAssets: z
16
+ .array(z.object({
17
+ name: z.string().describe('Asset name'),
18
+ org: z.string().optional().describe('Organization scope for the asset'),
19
+ type: AssetType.describe('Asset type'),
20
+ }))
21
+ .optional()
22
+ .describe('Assets frozen to prevent sync and update from overwriting local modifications'),
23
+ tools: z.array(z.string()).min(1).describe('Tools this project is configured for'),
15
24
  });
25
+ export const ProjectConfigSchema = z.preprocess((val) => {
26
+ if (val && typeof val === 'object' && 'tool' in val) {
27
+ const obj = val;
28
+ if (typeof obj.tool === 'string') {
29
+ const { tool, ...rest } = obj;
30
+ return { ...rest, tools: [tool] };
31
+ }
32
+ }
33
+ return val;
34
+ }, ProjectConfigBase);
16
35
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAChG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACzF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAChG,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACtF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;IAClH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CAC/F,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;CACjE,CAAC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAChG,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IACzF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IAChG,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACtF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;IAClH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CAC/F,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,eAAe,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,YAAY,EAAE,CAAC;SACZ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACvE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;KACvC,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,+EAA+E,CAAC;IAC5F,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;IACtD,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,GAA8B,CAAC;QAE3C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;YAE9B,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,iBAAiB,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { type Adapter, AdapterSchema, PlacementConfig } from './adapter.js';
2
2
  export { type Bundle, BundleAssetRef, BundleSchema } from './bundle.js';
3
3
  export { type Config, ConfigSchema, DEFAULT_CONFIG, type ProjectConfig, ProjectConfigSchema } from './config.js';
4
- export { InstalledAsset, InstalledFile, type Lockfile, LockfileSchema } from './lockfile.js';
4
+ export { ConfigEntry, InstalledAsset, InstalledFile, type Lockfile, LockfileSchema } from './lockfile.js';
5
5
  export { AssetDependency, AssetType, type Manifest, ManifestSchema, SecurityBlock, ToolCompatibility, } from './manifest.js';
6
6
  export { DeprecatedEntry, type Registry, RegistryAsset, type RegistryAssetVersion, RegistryAssetVersionSchema, RegistryAssetVersionsMapSchema, RegistryBundle, RegistrySchema, } from './registry.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,KAAK,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,SAAS,EACT,KAAK,QAAQ,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,aAAa,EACb,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,KAAK,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE1G,OAAO,EACL,eAAe,EACf,SAAS,EACT,KAAK,QAAQ,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,aAAa,EACb,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,8BAA8B,EAC9B,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { AdapterSchema, PlacementConfig } from './adapter.js';
2
2
  export { BundleAssetRef, BundleSchema } from './bundle.js';
3
3
  export { ConfigSchema, DEFAULT_CONFIG, ProjectConfigSchema } from './config.js';
4
- export { InstalledAsset, InstalledFile, LockfileSchema } from './lockfile.js';
4
+ export { ConfigEntry, InstalledAsset, InstalledFile, LockfileSchema } from './lockfile.js';
5
5
  export { AssetDependency, AssetType, ManifestSchema, SecurityBlock, ToolCompatibility, } from './manifest.js';
6
6
  export { DeprecatedEntry, RegistryAsset, RegistryAssetVersionSchema, RegistryAssetVersionsMapSchema, RegistryBundle, RegistrySchema, } from './registry.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAe,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAe,YAAY,EAAE,cAAc,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,SAAS,EAET,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EAEf,aAAa,EAEb,0BAA0B,EAC1B,8BAA8B,EAC9B,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAe,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAe,YAAY,EAAE,cAAc,EAAsB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAE1G,OAAO,EACL,eAAe,EACf,SAAS,EAET,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EAEf,aAAa,EAEb,0BAA0B,EAC1B,8BAA8B,EAC9B,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC"}
@@ -4,11 +4,22 @@ export declare const InstalledFile: z.ZodObject<{
4
4
  sourcePath: z.ZodString;
5
5
  }, z.core.$strip>;
6
6
  export type InstalledFile = z.infer<typeof InstalledFile>;
7
+ export declare const ConfigEntry: z.ZodObject<{
8
+ checksum: z.ZodString;
9
+ file: z.ZodString;
10
+ key: z.ZodString;
11
+ }, z.core.$strip>;
12
+ export type ConfigEntry = z.infer<typeof ConfigEntry>;
7
13
  export declare const InstalledAsset: z.ZodObject<{
8
14
  bundleOrigin: z.ZodOptional<z.ZodObject<{
9
15
  name: z.ZodString;
10
16
  version: z.ZodString;
11
17
  }, z.core.$strip>>;
18
+ configEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
19
+ checksum: z.ZodString;
20
+ file: z.ZodString;
21
+ key: z.ZodString;
22
+ }, z.core.$strip>>>;
12
23
  dependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
13
24
  name: z.ZodString;
14
25
  org: z.ZodOptional<z.ZodString>;
@@ -22,11 +33,11 @@ export declare const InstalledAsset: z.ZodObject<{
22
33
  }>;
23
34
  version: z.ZodOptional<z.ZodString>;
24
35
  }, z.core.$strip>>>;
36
+ description: z.ZodOptional<z.ZodString>;
25
37
  files: z.ZodArray<z.ZodObject<{
26
38
  checksum: z.ZodString;
27
39
  sourcePath: z.ZodString;
28
40
  }, z.core.$strip>>;
29
- frozen: z.ZodOptional<z.ZodBoolean>;
30
41
  installedAt: z.ZodString;
31
42
  installReason: z.ZodOptional<z.ZodEnum<{
32
43
  dependency: "dependency";
@@ -53,6 +64,11 @@ export declare const LockfileSchema: z.ZodObject<{
53
64
  name: z.ZodString;
54
65
  version: z.ZodString;
55
66
  }, z.core.$strip>>;
67
+ configEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
68
+ checksum: z.ZodString;
69
+ file: z.ZodString;
70
+ key: z.ZodString;
71
+ }, z.core.$strip>>>;
56
72
  dependencies: z.ZodOptional<z.ZodArray<z.ZodObject<{
57
73
  name: z.ZodString;
58
74
  org: z.ZodOptional<z.ZodString>;
@@ -66,11 +82,11 @@ export declare const LockfileSchema: z.ZodObject<{
66
82
  }>;
67
83
  version: z.ZodOptional<z.ZodString>;
68
84
  }, z.core.$strip>>>;
85
+ description: z.ZodOptional<z.ZodString>;
69
86
  files: z.ZodArray<z.ZodObject<{
70
87
  checksum: z.ZodString;
71
88
  sourcePath: z.ZodString;
72
89
  }, z.core.$strip>>;
73
- frozen: z.ZodOptional<z.ZodBoolean>;
74
90
  installedAt: z.ZodString;
75
91
  installReason: z.ZodOptional<z.ZodEnum<{
76
92
  dependency: "dependency";
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgCzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,WAAW;;;;iBAItB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoCzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -4,6 +4,11 @@ export const InstalledFile = z.object({
4
4
  checksum: z.string().describe('SHA-256 checksum of the file contents'),
5
5
  sourcePath: z.string().describe('Original path within the asset directory'),
6
6
  });
7
+ export const ConfigEntry = z.object({
8
+ checksum: z.string().describe('SHA-256 hex digest of the config entry value'),
9
+ file: z.string().describe('Project-relative POSIX path to the config file'),
10
+ key: z.string().describe('Dot-path key within the config file (e.g. hooks.my-hook)'),
11
+ });
7
12
  export const InstalledAsset = z.object({
8
13
  bundleOrigin: z
9
14
  .object({
@@ -12,6 +17,10 @@ export const InstalledAsset = z.object({
12
17
  })
13
18
  .optional()
14
19
  .describe('Bundle that triggered this asset installation'),
20
+ configEntries: z
21
+ .array(ConfigEntry)
22
+ .optional()
23
+ .describe('Config file entries registered by this asset'),
15
24
  dependencies: z
16
25
  .array(z.object({
17
26
  name: z.string().describe('Dependency asset name'),
@@ -21,8 +30,8 @@ export const InstalledAsset = z.object({
21
30
  }))
22
31
  .optional()
23
32
  .describe('Assets this asset depends on'),
33
+ description: z.string().optional().describe('Short description of the asset'),
24
34
  files: z.array(InstalledFile).describe('Files placed by this asset'),
25
- frozen: z.boolean().optional().describe('If true, sync and update will not overwrite this asset'),
26
35
  installedAt: z.string().describe('ISO timestamp of installation'),
27
36
  installReason: z
28
37
  .enum(['direct', 'dependency'])
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../../src/lib/schemas/lockfile.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { AssetType } from './schemas/manifest.js';
2
1
  import type { Registry, RegistryAsset, RegistryBundle } from './schemas/registry.js';
2
+ import { AssetType } from './schemas/manifest.js';
3
3
  export interface SearchOptions {
4
4
  org?: string;
5
5
  query: string;
@@ -16,6 +16,20 @@ export type SearchResult = {
16
16
  kind: 'bundle';
17
17
  score: number;
18
18
  };
19
+ /**
20
+ * Parse and validate a type filter string.
21
+ * Returns 'bundle' for the bundle type, or a validated AssetType.
22
+ * Throws an Error if the type string is not recognized.
23
+ */
24
+ export declare function parseTypeFilter(type: string): 'bundle' | AssetType;
25
+ /**
26
+ * Score an item (asset or bundle) against search terms.
27
+ * Higher score = better match.
28
+ *
29
+ * Accepts pre-lowercased name, description, and author strings,
30
+ * the raw tags array, the search terms, and the full query string.
31
+ */
32
+ export declare function scoreItem(name: string, description: string, author: string, tags: string[], terms: string[], fullQuery: string): number;
19
33
  /**
20
34
  * Search the registry for assets and bundles matching a query.
21
35
  * Returns results sorted by relevance score (highest first).
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIrF,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE,CAoDzF"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CASlE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CAsCR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE,CAqDzF"}
@@ -1,4 +1,62 @@
1
1
  import { filterVisibleAssets } from './registry.js';
2
+ import { AssetType } from './schemas/manifest.js';
3
+ /**
4
+ * Parse and validate a type filter string.
5
+ * Returns 'bundle' for the bundle type, or a validated AssetType.
6
+ * Throws an Error if the type string is not recognized.
7
+ */
8
+ export function parseTypeFilter(type) {
9
+ if (type === 'bundle') {
10
+ return 'bundle';
11
+ }
12
+ const result = AssetType.safeParse(type);
13
+ if (!result.success) {
14
+ throw new Error(`Invalid type '${type}'. Valid types are: ${AssetType.options.join(', ')}, bundle`);
15
+ }
16
+ return result.data;
17
+ }
18
+ /**
19
+ * Score an item (asset or bundle) against search terms.
20
+ * Higher score = better match.
21
+ *
22
+ * Accepts pre-lowercased name, description, and author strings,
23
+ * the raw tags array, the search terms, and the full query string.
24
+ */
25
+ export function scoreItem(name, description, author, tags, terms, fullQuery) {
26
+ let score = 0;
27
+ // Exact name match — highest weight
28
+ if (name === fullQuery) {
29
+ score += 100;
30
+ }
31
+ // Name contains the full query
32
+ else if (name.includes(fullQuery)) {
33
+ score += 50;
34
+ }
35
+ // Description contains the full query
36
+ if (description.includes(fullQuery)) {
37
+ score += 20;
38
+ }
39
+ // Per-term matching
40
+ for (const term of terms) {
41
+ // Name contains term
42
+ if (name.includes(term)) {
43
+ score += 10;
44
+ }
45
+ // Description contains term
46
+ if (description.includes(term)) {
47
+ score += 5;
48
+ }
49
+ // Tag exact match
50
+ if (tags.some((t) => t.toLowerCase() === term)) {
51
+ score += 8;
52
+ }
53
+ // Author matches
54
+ if (author.includes(term)) {
55
+ score += 3;
56
+ }
57
+ }
58
+ return score;
59
+ }
2
60
  /**
3
61
  * Search the registry for assets and bundles matching a query.
4
62
  * Returns results sorted by relevance score (highest first).
@@ -18,7 +76,9 @@ export function searchRegistry(registry, options) {
18
76
  if (tag && !asset.tags.some((t) => t.toLowerCase() === tag.toLowerCase()))
19
77
  continue;
20
78
  const latestVersion = asset.versions[asset.latest];
21
- if (tool && !(latestVersion?.tools.includes(tool) ?? false))
79
+ if (!latestVersion)
80
+ continue;
81
+ if (tool && !latestVersion.tools.includes(tool))
22
82
  continue;
23
83
  let score = scoreAsset(asset, queryTerms, queryLower);
24
84
  // Org-scoped assets get a small scoring bonus when org is active
@@ -53,83 +113,23 @@ export function searchRegistry(registry, options) {
53
113
  }
54
114
  /**
55
115
  * Score an asset against search terms.
56
- * Higher score = better match.
116
+ * Thin wrapper that extracts fields from the asset and delegates to scoreItem.
57
117
  */
58
118
  function scoreAsset(asset, terms, fullQuery) {
59
- let score = 0;
60
119
  const nameLower = asset.name.toLowerCase();
61
120
  const latestVersion = asset.versions[asset.latest];
62
121
  const descLower = (latestVersion?.description ?? '').toLowerCase();
63
122
  const authorLower = (latestVersion?.author ?? '').toLowerCase();
64
- // Exact name match highest weight
65
- if (nameLower === fullQuery) {
66
- score += 100;
67
- }
68
- // Name contains the full query
69
- else if (nameLower.includes(fullQuery)) {
70
- score += 50;
71
- }
72
- // Description contains the full query
73
- if (descLower.includes(fullQuery)) {
74
- score += 20;
75
- }
76
- // Per-term matching
77
- for (const term of terms) {
78
- // Name contains term
79
- if (nameLower.includes(term)) {
80
- score += 10;
81
- }
82
- // Description contains term
83
- if (descLower.includes(term)) {
84
- score += 5;
85
- }
86
- // Tag exact match
87
- if (asset.tags.some((t) => t.toLowerCase() === term)) {
88
- score += 8;
89
- }
90
- // Author matches
91
- if (authorLower.includes(term)) {
92
- score += 3;
93
- }
94
- }
95
- return score;
123
+ return scoreItem(nameLower, descLower, authorLower, asset.tags, terms, fullQuery);
96
124
  }
97
125
  /**
98
126
  * Score a bundle against search terms.
99
- * Mirrors scoreAsset() but operates on flat RegistryBundle fields.
127
+ * Thin wrapper that extracts fields from the bundle and delegates to scoreItem.
100
128
  */
101
129
  function scoreBundle(bundle, terms, fullQuery) {
102
- let score = 0;
103
130
  const nameLower = bundle.name.toLowerCase();
104
131
  const descLower = bundle.description.toLowerCase();
105
132
  const authorLower = bundle.author.toLowerCase();
106
- // Exact name match highest weight
107
- if (nameLower === fullQuery) {
108
- score += 100;
109
- }
110
- // Name contains the full query
111
- else if (nameLower.includes(fullQuery)) {
112
- score += 50;
113
- }
114
- // Description contains the full query
115
- if (descLower.includes(fullQuery)) {
116
- score += 20;
117
- }
118
- // Per-term matching
119
- for (const term of terms) {
120
- if (nameLower.includes(term)) {
121
- score += 10;
122
- }
123
- if (descLower.includes(term)) {
124
- score += 5;
125
- }
126
- if (bundle.tags.some((t) => t.toLowerCase() === term)) {
127
- score += 8;
128
- }
129
- if (authorLower.includes(term)) {
130
- score += 3;
131
- }
132
- }
133
- return score;
133
+ return scoreItem(nameLower, descLower, authorLower, bundle.tags, terms, fullQuery);
134
134
  }
135
135
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/lib/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Regex for valid org identifiers. Must start with a letter, then letters,
3
+ * digits, or hyphens. Matches the constraint in the manifest schema.
4
+ */
5
+ export declare const ORG_PATTERN: RegExp;
6
+ export interface SetupCreationOptions {
7
+ orgLocked: boolean;
8
+ orgValue: string;
9
+ projectDir: string;
10
+ selectedTools: string[];
11
+ }
12
+ export interface SetupCreationResult {
13
+ actions: SummaryAction[];
14
+ warnings: string[];
15
+ }
16
+ export interface SummaryAction {
17
+ detail?: string;
18
+ label: string;
19
+ }
20
+ /**
21
+ * Perform the setup creation step: write project config, write/update the
22
+ * lockfile, and ensure gitignore entries are present for the selected tools.
23
+ *
24
+ * This is the extracted business logic from the `useSetupState` creating
25
+ * effect, made independently testable without React rendering overhead.
26
+ */
27
+ export declare function performSetupCreation(options: SetupCreationOptions): Promise<SetupCreationResult>;
28
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,eAAO,MAAM,WAAW,QAA4B,CAAC;AAMrD,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiFtG"}
@@ -0,0 +1,98 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { loadAdapter } from './adapter.js';
3
+ import { saveProjectConfig } from './config.js';
4
+ import { ensureGitignoreEntries, ensureGitignorePatterns } from './gitignore.js';
5
+ import { getLockfilePath, readLockfile, writeLockfile } from './lockfile.js';
6
+ // ---------------------------------------------------------------------------
7
+ // Constants
8
+ // ---------------------------------------------------------------------------
9
+ /**
10
+ * Regex for valid org identifiers. Must start with a letter, then letters,
11
+ * digits, or hyphens. Matches the constraint in the manifest schema.
12
+ */
13
+ export const ORG_PATTERN = /^[a-zA-Z][a-zA-Z0-9-]*$/;
14
+ // ---------------------------------------------------------------------------
15
+ // Main function
16
+ // ---------------------------------------------------------------------------
17
+ /**
18
+ * Perform the setup creation step: write project config, write/update the
19
+ * lockfile, and ensure gitignore entries are present for the selected tools.
20
+ *
21
+ * This is the extracted business logic from the `useSetupState` creating
22
+ * effect, made independently testable without React rendering overhead.
23
+ */
24
+ export async function performSetupCreation(options) {
25
+ const { orgLocked, orgValue, projectDir, selectedTools } = options;
26
+ const actions = [];
27
+ const warnings = [];
28
+ const resolvedOrg = orgLocked ? orgValue.trim() : orgValue.trim() || undefined;
29
+ // Validate org format when non-empty
30
+ if (resolvedOrg !== undefined && !ORG_PATTERN.test(resolvedOrg)) {
31
+ throw new Error(`Invalid org "${resolvedOrg}": must start with a letter and contain only letters, digits, or hyphens.`);
32
+ }
33
+ // 1. Write .atkrc.json with { tools: [...] }
34
+ await saveProjectConfig(projectDir, { tools: selectedTools });
35
+ actions.push({ detail: `tools: ${selectedTools.join(', ')}`, label: 'Wrote .atkrc.json' });
36
+ // 2. Write/update .atk-lock.json
37
+ const lockfilePath = getLockfilePath(projectDir);
38
+ if (existsSync(lockfilePath)) {
39
+ // Preserve existing assets and org
40
+ const existing = await readLockfile(projectDir);
41
+ // Only update org if it's not already set and we have a new one
42
+ const updatedLockfile = {
43
+ ...existing,
44
+ lockVersion: 1,
45
+ ...(resolvedOrg !== undefined && !existing.org ? { org: resolvedOrg } : {}),
46
+ };
47
+ await writeLockfile(projectDir, updatedLockfile);
48
+ actions.push({
49
+ detail: `${(existing.assets ?? []).length} existing asset(s) preserved`,
50
+ label: 'Updated .atk-lock.json',
51
+ });
52
+ }
53
+ else {
54
+ await writeLockfile(projectDir, {
55
+ assets: [],
56
+ lockVersion: 1,
57
+ ...(resolvedOrg !== undefined ? { org: resolvedOrg } : {}),
58
+ });
59
+ actions.push({
60
+ detail: resolvedOrg ? `org: ${resolvedOrg}` : 'no org',
61
+ label: 'Created .atk-lock.json',
62
+ });
63
+ }
64
+ // 3. Ensure .atkrc.json is in .gitignore via the adapters' gitignore entries
65
+ const allAdded = [];
66
+ let anyAdapterLoaded = false;
67
+ for (const tool of selectedTools) {
68
+ try {
69
+ const adapter = await loadAdapter(tool);
70
+ anyAdapterLoaded = true;
71
+ const { added } = await ensureGitignoreEntries(projectDir, adapter);
72
+ allAdded.push(...added);
73
+ }
74
+ catch (err) {
75
+ // Individual adapter load failure is non-fatal; record warning and continue
76
+ const message = err instanceof Error ? err.message : String(err);
77
+ warnings.push(`Failed to load adapter for "${tool}": ${message}`);
78
+ }
79
+ }
80
+ if (!anyAdapterLoaded) {
81
+ // If no adapters could be loaded, manually ensure critical files are gitignored
82
+ try {
83
+ const { added } = await ensureGitignorePatterns(projectDir, ['.atkrc.json', '.atk-lock.json.lock']);
84
+ allAdded.push(...added);
85
+ }
86
+ catch (err) {
87
+ const message = err instanceof Error ? err.message : String(err);
88
+ warnings.push(`Failed to update .gitignore: ${message}`);
89
+ }
90
+ }
91
+ if (allAdded.length > 0) {
92
+ // Deduplicate entries
93
+ const uniqueAdded = [...new Set(allAdded)];
94
+ actions.push({ detail: uniqueAdded.join(', '), label: 'Updated .gitignore' });
95
+ }
96
+ return { actions, warnings };
97
+ }
98
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}