@detergent-software/atk 0.12.1-dev.2

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 (314) hide show
  1. package/build/cli.d.ts +3 -0
  2. package/build/cli.d.ts.map +1 -0
  3. package/build/cli.js +35 -0
  4. package/build/cli.js.map +1 -0
  5. package/build/commands/_app.d.ts +3 -0
  6. package/build/commands/_app.d.ts.map +1 -0
  7. package/build/commands/_app.js +12 -0
  8. package/build/commands/_app.js.map +1 -0
  9. package/build/commands/audit.d.ts +12 -0
  10. package/build/commands/audit.d.ts.map +1 -0
  11. package/build/commands/audit.js +78 -0
  12. package/build/commands/audit.js.map +1 -0
  13. package/build/commands/browse.d.ts +15 -0
  14. package/build/commands/browse.d.ts.map +1 -0
  15. package/build/commands/browse.js +284 -0
  16. package/build/commands/browse.js.map +1 -0
  17. package/build/commands/cache.d.ts +13 -0
  18. package/build/commands/cache.d.ts.map +1 -0
  19. package/build/commands/cache.js +67 -0
  20. package/build/commands/cache.js.map +1 -0
  21. package/build/commands/config.d.ts +13 -0
  22. package/build/commands/config.d.ts.map +1 -0
  23. package/build/commands/config.js +62 -0
  24. package/build/commands/config.js.map +1 -0
  25. package/build/commands/diff.d.ts +16 -0
  26. package/build/commands/diff.d.ts.map +1 -0
  27. package/build/commands/diff.js +158 -0
  28. package/build/commands/diff.js.map +1 -0
  29. package/build/commands/doctor.d.ts +11 -0
  30. package/build/commands/doctor.d.ts.map +1 -0
  31. package/build/commands/doctor.js +30 -0
  32. package/build/commands/doctor.js.map +1 -0
  33. package/build/commands/index.d.ts +3 -0
  34. package/build/commands/index.d.ts.map +1 -0
  35. package/build/commands/index.js +30 -0
  36. package/build/commands/index.js.map +1 -0
  37. package/build/commands/info.d.ts +25 -0
  38. package/build/commands/info.d.ts.map +1 -0
  39. package/build/commands/info.js +198 -0
  40. package/build/commands/info.js.map +1 -0
  41. package/build/commands/init.d.ts +17 -0
  42. package/build/commands/init.d.ts.map +1 -0
  43. package/build/commands/init.js +504 -0
  44. package/build/commands/init.js.map +1 -0
  45. package/build/commands/install.d.ts +18 -0
  46. package/build/commands/install.d.ts.map +1 -0
  47. package/build/commands/install.js +186 -0
  48. package/build/commands/install.js.map +1 -0
  49. package/build/commands/list.d.ts +20 -0
  50. package/build/commands/list.d.ts.map +1 -0
  51. package/build/commands/list.js +61 -0
  52. package/build/commands/list.js.map +1 -0
  53. package/build/commands/outdated.d.ts +21 -0
  54. package/build/commands/outdated.d.ts.map +1 -0
  55. package/build/commands/outdated.js +81 -0
  56. package/build/commands/outdated.js.map +1 -0
  57. package/build/commands/pin.d.ts +22 -0
  58. package/build/commands/pin.d.ts.map +1 -0
  59. package/build/commands/pin.js +94 -0
  60. package/build/commands/pin.js.map +1 -0
  61. package/build/commands/prune.d.ts +14 -0
  62. package/build/commands/prune.d.ts.map +1 -0
  63. package/build/commands/prune.js +203 -0
  64. package/build/commands/prune.js.map +1 -0
  65. package/build/commands/publish.d.ts +14 -0
  66. package/build/commands/publish.d.ts.map +1 -0
  67. package/build/commands/publish.js +345 -0
  68. package/build/commands/publish.js.map +1 -0
  69. package/build/commands/search.d.ts +16 -0
  70. package/build/commands/search.d.ts.map +1 -0
  71. package/build/commands/search.js +80 -0
  72. package/build/commands/search.js.map +1 -0
  73. package/build/commands/sync.d.ts +15 -0
  74. package/build/commands/sync.d.ts.map +1 -0
  75. package/build/commands/sync.js +209 -0
  76. package/build/commands/sync.js.map +1 -0
  77. package/build/commands/uninstall.d.ts +18 -0
  78. package/build/commands/uninstall.d.ts.map +1 -0
  79. package/build/commands/uninstall.js +304 -0
  80. package/build/commands/uninstall.js.map +1 -0
  81. package/build/commands/unpin.d.ts +22 -0
  82. package/build/commands/unpin.d.ts.map +1 -0
  83. package/build/commands/unpin.js +79 -0
  84. package/build/commands/unpin.js.map +1 -0
  85. package/build/commands/update.d.ts +17 -0
  86. package/build/commands/update.d.ts.map +1 -0
  87. package/build/commands/update.js +151 -0
  88. package/build/commands/update.js.map +1 -0
  89. package/build/commands/why.d.ts +23 -0
  90. package/build/commands/why.d.ts.map +1 -0
  91. package/build/commands/why.js +108 -0
  92. package/build/commands/why.js.map +1 -0
  93. package/build/components/AssetDetail.d.ts +32 -0
  94. package/build/components/AssetDetail.d.ts.map +1 -0
  95. package/build/components/AssetDetail.js +45 -0
  96. package/build/components/AssetDetail.js.map +1 -0
  97. package/build/components/AssetTable.d.ts +25 -0
  98. package/build/components/AssetTable.d.ts.map +1 -0
  99. package/build/components/AssetTable.js +96 -0
  100. package/build/components/AssetTable.js.map +1 -0
  101. package/build/components/BrowseExpandedBundle.d.ts +26 -0
  102. package/build/components/BrowseExpandedBundle.d.ts.map +1 -0
  103. package/build/components/BrowseExpandedBundle.js +59 -0
  104. package/build/components/BrowseExpandedBundle.js.map +1 -0
  105. package/build/components/BrowseExpandedRow.d.ts +14 -0
  106. package/build/components/BrowseExpandedRow.d.ts.map +1 -0
  107. package/build/components/BrowseExpandedRow.js +9 -0
  108. package/build/components/BrowseExpandedRow.js.map +1 -0
  109. package/build/components/BrowseList.d.ts +26 -0
  110. package/build/components/BrowseList.d.ts.map +1 -0
  111. package/build/components/BrowseList.js +101 -0
  112. package/build/components/BrowseList.js.map +1 -0
  113. package/build/components/BundleDetail.d.ts +7 -0
  114. package/build/components/BundleDetail.d.ts.map +1 -0
  115. package/build/components/BundleDetail.js +12 -0
  116. package/build/components/BundleDetail.js.map +1 -0
  117. package/build/components/DependencyTree.d.ts +19 -0
  118. package/build/components/DependencyTree.d.ts.map +1 -0
  119. package/build/components/DependencyTree.js +21 -0
  120. package/build/components/DependencyTree.js.map +1 -0
  121. package/build/components/DiagnosticList.d.ts +19 -0
  122. package/build/components/DiagnosticList.d.ts.map +1 -0
  123. package/build/components/DiagnosticList.js +17 -0
  124. package/build/components/DiagnosticList.js.map +1 -0
  125. package/build/components/DiffView.d.ts +30 -0
  126. package/build/components/DiffView.d.ts.map +1 -0
  127. package/build/components/DiffView.js +32 -0
  128. package/build/components/DiffView.js.map +1 -0
  129. package/build/components/DryRunBanner.d.ts +11 -0
  130. package/build/components/DryRunBanner.d.ts.map +1 -0
  131. package/build/components/DryRunBanner.js +6 -0
  132. package/build/components/DryRunBanner.js.map +1 -0
  133. package/build/components/Field.d.ts +12 -0
  134. package/build/components/Field.d.ts.map +1 -0
  135. package/build/components/Field.js +9 -0
  136. package/build/components/Field.js.map +1 -0
  137. package/build/components/FilterBar.d.ts +18 -0
  138. package/build/components/FilterBar.d.ts.map +1 -0
  139. package/build/components/FilterBar.js +21 -0
  140. package/build/components/FilterBar.js.map +1 -0
  141. package/build/components/Header.d.ts +13 -0
  142. package/build/components/Header.d.ts.map +1 -0
  143. package/build/components/Header.js +20 -0
  144. package/build/components/Header.js.map +1 -0
  145. package/build/components/HelpBar.d.ts +11 -0
  146. package/build/components/HelpBar.d.ts.map +1 -0
  147. package/build/components/HelpBar.js +9 -0
  148. package/build/components/HelpBar.js.map +1 -0
  149. package/build/components/InstallConfirmBar.d.ts +9 -0
  150. package/build/components/InstallConfirmBar.d.ts.map +1 -0
  151. package/build/components/InstallConfirmBar.js +23 -0
  152. package/build/components/InstallConfirmBar.js.map +1 -0
  153. package/build/components/InstallSummary.d.ts +29 -0
  154. package/build/components/InstallSummary.d.ts.map +1 -0
  155. package/build/components/InstallSummary.js +12 -0
  156. package/build/components/InstallSummary.js.map +1 -0
  157. package/build/components/SectionDivider.d.ts +5 -0
  158. package/build/components/SectionDivider.d.ts.map +1 -0
  159. package/build/components/SectionDivider.js +11 -0
  160. package/build/components/SectionDivider.js.map +1 -0
  161. package/build/components/Spinner.d.ts +13 -0
  162. package/build/components/Spinner.d.ts.map +1 -0
  163. package/build/components/Spinner.js +11 -0
  164. package/build/components/Spinner.js.map +1 -0
  165. package/build/components/StatusBadge.d.ts +23 -0
  166. package/build/components/StatusBadge.d.ts.map +1 -0
  167. package/build/components/StatusBadge.js +43 -0
  168. package/build/components/StatusBadge.js.map +1 -0
  169. package/build/components/index.d.ts +20 -0
  170. package/build/components/index.d.ts.map +1 -0
  171. package/build/components/index.js +20 -0
  172. package/build/components/index.js.map +1 -0
  173. package/build/hooks/useBrowseState.d.ts +122 -0
  174. package/build/hooks/useBrowseState.d.ts.map +1 -0
  175. package/build/hooks/useBrowseState.js +315 -0
  176. package/build/hooks/useBrowseState.js.map +1 -0
  177. package/build/hooks/useCommand.d.ts +23 -0
  178. package/build/hooks/useCommand.d.ts.map +1 -0
  179. package/build/hooks/useCommand.js +43 -0
  180. package/build/hooks/useCommand.js.map +1 -0
  181. package/build/lib/adapter.d.ts +40 -0
  182. package/build/lib/adapter.d.ts.map +1 -0
  183. package/build/lib/adapter.js +112 -0
  184. package/build/lib/adapter.js.map +1 -0
  185. package/build/lib/auth.d.ts +31 -0
  186. package/build/lib/auth.d.ts.map +1 -0
  187. package/build/lib/auth.js +101 -0
  188. package/build/lib/auth.js.map +1 -0
  189. package/build/lib/breakpoints.d.ts +3 -0
  190. package/build/lib/breakpoints.d.ts.map +1 -0
  191. package/build/lib/breakpoints.js +8 -0
  192. package/build/lib/breakpoints.js.map +1 -0
  193. package/build/lib/checksum.d.ts +31 -0
  194. package/build/lib/checksum.d.ts.map +1 -0
  195. package/build/lib/checksum.js +78 -0
  196. package/build/lib/checksum.js.map +1 -0
  197. package/build/lib/config.d.ts +42 -0
  198. package/build/lib/config.d.ts.map +1 -0
  199. package/build/lib/config.js +123 -0
  200. package/build/lib/config.js.map +1 -0
  201. package/build/lib/detector.d.ts +35 -0
  202. package/build/lib/detector.d.ts.map +1 -0
  203. package/build/lib/detector.js +125 -0
  204. package/build/lib/detector.js.map +1 -0
  205. package/build/lib/diagnostics.d.ts +10 -0
  206. package/build/lib/diagnostics.d.ts.map +1 -0
  207. package/build/lib/diagnostics.js +195 -0
  208. package/build/lib/diagnostics.js.map +1 -0
  209. package/build/lib/diff.d.ts +34 -0
  210. package/build/lib/diff.d.ts.map +1 -0
  211. package/build/lib/diff.js +78 -0
  212. package/build/lib/diff.js.map +1 -0
  213. package/build/lib/fetch-retry.d.ts +43 -0
  214. package/build/lib/fetch-retry.d.ts.map +1 -0
  215. package/build/lib/fetch-retry.js +137 -0
  216. package/build/lib/fetch-retry.js.map +1 -0
  217. package/build/lib/github.d.ts +57 -0
  218. package/build/lib/github.d.ts.map +1 -0
  219. package/build/lib/github.js +96 -0
  220. package/build/lib/github.js.map +1 -0
  221. package/build/lib/gitignore.d.ts +37 -0
  222. package/build/lib/gitignore.d.ts.map +1 -0
  223. package/build/lib/gitignore.js +142 -0
  224. package/build/lib/gitignore.js.map +1 -0
  225. package/build/lib/init.d.ts +100 -0
  226. package/build/lib/init.d.ts.map +1 -0
  227. package/build/lib/init.js +295 -0
  228. package/build/lib/init.js.map +1 -0
  229. package/build/lib/installer.d.ts +50 -0
  230. package/build/lib/installer.d.ts.map +1 -0
  231. package/build/lib/installer.js +435 -0
  232. package/build/lib/installer.js.map +1 -0
  233. package/build/lib/lockfile.d.ts +170 -0
  234. package/build/lib/lockfile.d.ts.map +1 -0
  235. package/build/lib/lockfile.js +437 -0
  236. package/build/lib/lockfile.js.map +1 -0
  237. package/build/lib/markdown.d.ts +9 -0
  238. package/build/lib/markdown.d.ts.map +1 -0
  239. package/build/lib/markdown.js +67 -0
  240. package/build/lib/markdown.js.map +1 -0
  241. package/build/lib/parse-json.d.ts +34 -0
  242. package/build/lib/parse-json.d.ts.map +1 -0
  243. package/build/lib/parse-json.js +52 -0
  244. package/build/lib/parse-json.js.map +1 -0
  245. package/build/lib/paths.d.ts +28 -0
  246. package/build/lib/paths.d.ts.map +1 -0
  247. package/build/lib/paths.js +68 -0
  248. package/build/lib/paths.js.map +1 -0
  249. package/build/lib/publisher.d.ts +49 -0
  250. package/build/lib/publisher.d.ts.map +1 -0
  251. package/build/lib/publisher.js +388 -0
  252. package/build/lib/publisher.js.map +1 -0
  253. package/build/lib/registry.d.ts +97 -0
  254. package/build/lib/registry.d.ts.map +1 -0
  255. package/build/lib/registry.js +248 -0
  256. package/build/lib/registry.js.map +1 -0
  257. package/build/lib/resolver.d.ts +50 -0
  258. package/build/lib/resolver.d.ts.map +1 -0
  259. package/build/lib/resolver.js +110 -0
  260. package/build/lib/resolver.js.map +1 -0
  261. package/build/lib/schemas/adapter.d.ts +33 -0
  262. package/build/lib/schemas/adapter.d.ts.map +1 -0
  263. package/build/lib/schemas/adapter.js +27 -0
  264. package/build/lib/schemas/adapter.js.map +1 -0
  265. package/build/lib/schemas/bundle.d.ts +38 -0
  266. package/build/lib/schemas/bundle.d.ts.map +1 -0
  267. package/build/lib/schemas/bundle.js +19 -0
  268. package/build/lib/schemas/bundle.js.map +1 -0
  269. package/build/lib/schemas/config.d.ts +12 -0
  270. package/build/lib/schemas/config.d.ts.map +1 -0
  271. package/build/lib/schemas/config.js +14 -0
  272. package/build/lib/schemas/config.js.map +1 -0
  273. package/build/lib/schemas/index.d.ts +7 -0
  274. package/build/lib/schemas/index.d.ts.map +1 -0
  275. package/build/lib/schemas/index.js +7 -0
  276. package/build/lib/schemas/index.js.map +1 -0
  277. package/build/lib/schemas/lockfile.d.ts +102 -0
  278. package/build/lib/schemas/lockfile.d.ts.map +1 -0
  279. package/build/lib/schemas/lockfile.js +50 -0
  280. package/build/lib/schemas/lockfile.js.map +1 -0
  281. package/build/lib/schemas/manifest.d.ts +91 -0
  282. package/build/lib/schemas/manifest.d.ts.map +1 -0
  283. package/build/lib/schemas/manifest.js +42 -0
  284. package/build/lib/schemas/manifest.js.map +1 -0
  285. package/build/lib/schemas/registry.d.ts +225 -0
  286. package/build/lib/schemas/registry.d.ts.map +1 -0
  287. package/build/lib/schemas/registry.js +59 -0
  288. package/build/lib/schemas/registry.js.map +1 -0
  289. package/build/lib/search.d.ts +23 -0
  290. package/build/lib/search.d.ts.map +1 -0
  291. package/build/lib/search.js +139 -0
  292. package/build/lib/search.js.map +1 -0
  293. package/build/lib/tool-resolver.d.ts +12 -0
  294. package/build/lib/tool-resolver.d.ts.map +1 -0
  295. package/build/lib/tool-resolver.js +24 -0
  296. package/build/lib/tool-resolver.js.map +1 -0
  297. package/build/lib/uninstaller.d.ts +109 -0
  298. package/build/lib/uninstaller.d.ts.map +1 -0
  299. package/build/lib/uninstaller.js +368 -0
  300. package/build/lib/uninstaller.js.map +1 -0
  301. package/build/lib/updater.d.ts +68 -0
  302. package/build/lib/updater.d.ts.map +1 -0
  303. package/build/lib/updater.js +230 -0
  304. package/build/lib/updater.js.map +1 -0
  305. package/build/lib/version.d.ts +13 -0
  306. package/build/lib/version.d.ts.map +1 -0
  307. package/build/lib/version.js +30 -0
  308. package/build/lib/version.js.map +1 -0
  309. package/build/windows-esm-loader.d.ts +15 -0
  310. package/build/windows-esm-loader.d.ts.map +1 -0
  311. package/build/windows-esm-loader.js +11 -0
  312. package/build/windows-esm-loader.js.map +1 -0
  313. package/package.json +67 -0
  314. package/tool-adapters/claude-code.json +34 -0
@@ -0,0 +1,96 @@
1
+ import { fetchWithRetry } from './fetch-retry.js';
2
+ import { isPreRelease } from './version.js';
3
+ export const DEFAULT_REGISTRY_REPO = 'EmergentSoftware/agentic-toolkit';
4
+ export const DEFAULT_REGISTRY_BRANCH = 'main';
5
+ export const DEFAULT_REGISTRY_BRANCH_DEV = 'develop';
6
+ /**
7
+ * Determine the effective registry branch based on explicit override or pre-release detection.
8
+ * Pre-release builds (e.g., 0.4.0-dev.5) default to the develop branch.
9
+ */
10
+ export function getEffectiveBranch(registryBranch) {
11
+ return registryBranch ?? (isPreRelease() ? DEFAULT_REGISTRY_BRANCH_DEV : DEFAULT_REGISTRY_BRANCH);
12
+ }
13
+ /** GitHub API version used for all API requests. */
14
+ export const GITHUB_API_VERSION = '2022-11-28';
15
+ /** Accept header value for standard JSON responses from GitHub API. */
16
+ export const GITHUB_ACCEPT_JSON = 'application/vnd.github+json';
17
+ /** Accept header value for raw file content responses from GitHub API. */
18
+ export const GITHUB_ACCEPT_RAW = 'application/vnd.github.raw+json';
19
+ /**
20
+ * Build a GitHub Contents API URL for a file or directory in the registry repo.
21
+ */
22
+ export function buildGitHubContentsUrl(path, branch) {
23
+ const ref = branch ?? DEFAULT_REGISTRY_BRANCH;
24
+ return `https://api.github.com/repos/${DEFAULT_REGISTRY_REPO}/contents/${path}?ref=${ref}`;
25
+ }
26
+ /**
27
+ * Build standard GitHub API request headers.
28
+ *
29
+ * @param token - GitHub authentication token (Bearer)
30
+ * @param accept - Accept header value; defaults to GITHUB_ACCEPT_JSON
31
+ * @returns HeadersInit with Accept, Authorization, and X-GitHub-Api-Version
32
+ */
33
+ export function buildGitHubHeaders(token, accept) {
34
+ return {
35
+ Accept: accept ?? GITHUB_ACCEPT_JSON,
36
+ Authorization: `Bearer ${token}`,
37
+ 'X-GitHub-Api-Version': GITHUB_API_VERSION,
38
+ };
39
+ }
40
+ /**
41
+ * Fetch raw file content from the GitHub Contents API.
42
+ *
43
+ * @param token - GitHub authentication token
44
+ * @param path - Repository-relative file path (e.g. "assets/skills/my-skill/1.0.0/skill.md")
45
+ * @param branch - Optional branch override; defaults to the registry default branch
46
+ */
47
+ export async function fetchFileContent(token, path, branch) {
48
+ const url = buildGitHubContentsUrl(path, branch);
49
+ const response = await fetchWithRetry(url, {
50
+ headers: buildGitHubHeaders(token, GITHUB_ACCEPT_RAW),
51
+ });
52
+ if (!response.ok) {
53
+ throw new Error(httpErrorMessage(response.status, `file ${path}`));
54
+ }
55
+ return response.text();
56
+ }
57
+ /**
58
+ * Return a user-friendly error message for common GitHub API HTTP status codes.
59
+ */
60
+ export function httpErrorMessage(status, resource) {
61
+ switch (status) {
62
+ case 401:
63
+ case 403:
64
+ return 'Authentication failed. Check your GitHub token or run `gh auth login`.';
65
+ case 404:
66
+ return `File not found at ${resource}.`;
67
+ case 429:
68
+ return 'GitHub API rate limit exceeded. Try again later.';
69
+ default:
70
+ return `Failed to fetch ${resource}: HTTP ${status}`;
71
+ }
72
+ }
73
+ /**
74
+ * List installable files in an asset's versioned directory on GitHub.
75
+ * Filters out directories, `manifest.json`, and `README.md`.
76
+ *
77
+ * @param token - GitHub authentication token
78
+ * @param asset - Object with `name` and `type` identifying the asset
79
+ * @param version - Semver version string
80
+ * @param branch - Optional branch override
81
+ */
82
+ export async function listAssetDirectoryFiles(token, asset, version, branch) {
83
+ const assetDir = `assets/${asset.type}s/${asset.name}/${version}`;
84
+ const url = buildGitHubContentsUrl(assetDir, branch);
85
+ const response = await fetchWithRetry(url, {
86
+ headers: buildGitHubHeaders(token),
87
+ });
88
+ if (!response.ok) {
89
+ throw new Error(httpErrorMessage(response.status, 'asset file list'));
90
+ }
91
+ const contents = (await response.json());
92
+ return contents
93
+ .filter((item) => item.type === 'file' && item.name !== 'manifest.json' && item.name !== 'README.md')
94
+ .map((item) => ({ name: item.name, path: item.path }));
95
+ }
96
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { Adapter } from './schemas/adapter.js';
2
+ /**
3
+ * Ensure that all required gitignore entries for an adapter's placements
4
+ * are present in the project's `.gitignore` file.
5
+ *
6
+ * - Reads `.gitignore` from `projectDir` (creates it if missing)
7
+ * - Determines which placement path patterns should be gitignored
8
+ * - Checks which patterns are already present
9
+ * - Appends missing entries under a `# ATK managed assets` comment header
10
+ *
11
+ * Returns which entries were added vs already present.
12
+ */
13
+ export declare function ensureGitignoreEntries(projectDir: string, adapter: Adapter): Promise<{
14
+ added: string[];
15
+ alreadyPresent: string[];
16
+ }>;
17
+ /**
18
+ * Extract gitignore patterns from an adapter's placements.
19
+ *
20
+ * Includes directory-based placements where assets are placed into dedicated
21
+ * per-asset paths (identified by `{name}` in the path template).
22
+ *
23
+ * Excludes:
24
+ * - `fileless` placements (e.g., mcp-config) — no files are placed on disk
25
+ * - Shared-file placements without `{name}` in the path (e.g., memory-template
26
+ * targeting `.claude/CLAUDE.md`) — these target user-managed files that should
27
+ * not be gitignored
28
+ */
29
+ export declare function getGitignorePatterns(adapter: Adapter): string[];
30
+ /**
31
+ * Check if a gitignore pattern (or its equivalent) is already present
32
+ * in the gitignore content.
33
+ *
34
+ * Handles minor variations such as trailing slashes and leading slashes.
35
+ */
36
+ export declare function isEntryPresent(gitignoreContent: string, pattern: string): boolean;
37
+ //# sourceMappingURL=gitignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6DxD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CA+B/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAYjF"}
@@ -0,0 +1,142 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ const ATK_HEADER = '# ATK managed assets';
5
+ /**
6
+ * Ensure that all required gitignore entries for an adapter's placements
7
+ * are present in the project's `.gitignore` file.
8
+ *
9
+ * - Reads `.gitignore` from `projectDir` (creates it if missing)
10
+ * - Determines which placement path patterns should be gitignored
11
+ * - Checks which patterns are already present
12
+ * - Appends missing entries under a `# ATK managed assets` comment header
13
+ *
14
+ * Returns which entries were added vs already present.
15
+ */
16
+ export async function ensureGitignoreEntries(projectDir, adapter) {
17
+ const gitignorePath = join(projectDir, '.gitignore');
18
+ const patterns = getGitignorePatterns(adapter);
19
+ if (patterns.length === 0) {
20
+ return { added: [], alreadyPresent: [] };
21
+ }
22
+ // Read existing content or start with empty string
23
+ let content = '';
24
+ if (existsSync(gitignorePath)) {
25
+ content = await readFile(gitignorePath, 'utf-8');
26
+ }
27
+ const added = [];
28
+ const alreadyPresent = [];
29
+ for (const pattern of patterns) {
30
+ if (isEntryPresent(content, pattern)) {
31
+ alreadyPresent.push(pattern);
32
+ }
33
+ else {
34
+ added.push(pattern);
35
+ }
36
+ }
37
+ if (added.length === 0) {
38
+ return { added, alreadyPresent };
39
+ }
40
+ // Build the new entries block
41
+ const newEntries = added.join('\n');
42
+ // Determine whether the ATK header already exists in the file
43
+ const hasHeader = content.includes(ATK_HEADER);
44
+ let updatedContent;
45
+ if (hasHeader) {
46
+ // Append new entries after the existing ATK section.
47
+ // Find the header and insert after the last contiguous non-empty line
48
+ // following it (i.e., at the end of the ATK block).
49
+ const lines = content.split('\n');
50
+ const headerIndex = lines.findIndex((line) => line.trim() === ATK_HEADER);
51
+ let insertIndex = headerIndex + 1;
52
+ // Walk past existing entries in the ATK block
53
+ while (insertIndex < lines.length && lines[insertIndex].trim() !== '' && !lines[insertIndex].startsWith('#')) {
54
+ insertIndex++;
55
+ }
56
+ lines.splice(insertIndex, 0, newEntries);
57
+ updatedContent = lines.join('\n');
58
+ }
59
+ else {
60
+ // Append a new ATK section at the end of the file
61
+ const separator = content.length > 0 && !content.endsWith('\n') ? '\n\n' : content.length > 0 ? '\n' : '';
62
+ updatedContent = `${content}${separator}${ATK_HEADER}\n${newEntries}\n`;
63
+ }
64
+ await writeFile(gitignorePath, updatedContent, 'utf-8');
65
+ return { added, alreadyPresent };
66
+ }
67
+ /**
68
+ * Extract gitignore patterns from an adapter's placements.
69
+ *
70
+ * Includes directory-based placements where assets are placed into dedicated
71
+ * per-asset paths (identified by `{name}` in the path template).
72
+ *
73
+ * Excludes:
74
+ * - `fileless` placements (e.g., mcp-config) — no files are placed on disk
75
+ * - Shared-file placements without `{name}` in the path (e.g., memory-template
76
+ * targeting `.claude/CLAUDE.md`) — these target user-managed files that should
77
+ * not be gitignored
78
+ */
79
+ export function getGitignorePatterns(adapter) {
80
+ const patterns = [];
81
+ for (const placement of Object.values(adapter.placements ?? {})) {
82
+ if (!placement)
83
+ continue;
84
+ // Skip fileless placements (e.g., mcp-config)
85
+ if (placement.fileless)
86
+ continue;
87
+ // Skip shared-file placements that don't have a per-asset path template.
88
+ // These target shared config files (e.g., .claude/CLAUDE.md) that may
89
+ // contain user-managed content and should not be gitignored.
90
+ if (!placement.path.includes('{name}'))
91
+ continue;
92
+ // Extract the directory portion before the {name} template variable.
93
+ // For ".claude/skills/{name}/" → ".claude/skills/"
94
+ // For ".claude/agents/{name}.md" → ".claude/agents/"
95
+ const nameIndex = placement.path.indexOf('{name}');
96
+ const dirPath = placement.path.slice(0, nameIndex);
97
+ if (dirPath.length === 0)
98
+ continue;
99
+ // Normalize to forward slashes for gitignore compatibility
100
+ const normalized = dirPath.split('\\').join('/');
101
+ if (!patterns.includes(normalized)) {
102
+ patterns.push(normalized);
103
+ }
104
+ }
105
+ return patterns.sort();
106
+ }
107
+ /**
108
+ * Check if a gitignore pattern (or its equivalent) is already present
109
+ * in the gitignore content.
110
+ *
111
+ * Handles minor variations such as trailing slashes and leading slashes.
112
+ */
113
+ export function isEntryPresent(gitignoreContent, pattern) {
114
+ const lines = gitignoreContent.split('\n').map((line) => line.trim());
115
+ // Normalize the target pattern for comparison
116
+ const normalized = normalizePattern(pattern);
117
+ return lines.some((line) => {
118
+ // Skip comments and empty lines
119
+ if (line === '' || line.startsWith('#'))
120
+ return false;
121
+ return normalizePattern(line) === normalized;
122
+ });
123
+ }
124
+ /**
125
+ * Normalize a gitignore pattern for comparison.
126
+ * Strips leading `/`, trailing whitespace, and normalizes trailing slashes.
127
+ */
128
+ function normalizePattern(pattern) {
129
+ let normalized = pattern.trim();
130
+ // Normalize path separators first so trailing `\` becomes `/`
131
+ normalized = normalized.split('\\').join('/');
132
+ // Remove leading slash (gitignore treats `/foo` and `foo` similarly for root patterns)
133
+ if (normalized.startsWith('/')) {
134
+ normalized = normalized.slice(1);
135
+ }
136
+ // Remove trailing slash for comparison (`.claude/skills/` === `.claude/skills`)
137
+ if (normalized.endsWith('/')) {
138
+ normalized = normalized.slice(0, -1);
139
+ }
140
+ return normalized;
141
+ }
142
+ //# sourceMappingURL=gitignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/lib/gitignore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { Lockfile } from './schemas/lockfile.js';
2
+ import type { Registry } from './schemas/registry.js';
3
+ export declare const SCHEMA_BASE_URL = "https://raw.githubusercontent.com/EmergentSoftware/agentic-toolkit/main/schemas";
4
+ export declare const INIT_TYPES: readonly ["skill", "agent", "rule", "hook", "memory-template", "mcp-config", "bundle"];
5
+ export interface InitOptions {
6
+ /** Author name. */
7
+ author: string;
8
+ /** Assets to include in a bundle (only used when type is 'bundle'). */
9
+ bundleAssets?: string[];
10
+ /** Short description. */
11
+ description: string;
12
+ /** Fork from an existing installed asset. */
13
+ from?: string;
14
+ /** Asset name (kebab-case). */
15
+ name: string;
16
+ /** Skip registry name availability check. */
17
+ offline: boolean;
18
+ /** Comma-separated tags. */
19
+ tags: string[];
20
+ /** Compatible tool identifiers. */
21
+ tools: string[];
22
+ /** Init type (asset type or 'bundle'). */
23
+ type: InitType;
24
+ }
25
+ export interface InitResult {
26
+ /** List of files created (relative to outputDir). */
27
+ filesCreated: string[];
28
+ /** Asset name. */
29
+ name: string;
30
+ /** Absolute path to the created directory. */
31
+ outputDir: string;
32
+ /** Init type. */
33
+ type: InitType;
34
+ }
35
+ export type InitType = (typeof INIT_TYPES)[number];
36
+ /**
37
+ * Check if a name+type combination already exists in the registry.
38
+ * Checks both the assets and bundles sections.
39
+ */
40
+ export declare function checkNameAvailability(name: string, type: InitType, registry: Registry): {
41
+ available: boolean;
42
+ existingVersion?: string;
43
+ };
44
+ /**
45
+ * Detect which tools support the given asset type by checking all loaded adapters.
46
+ * For 'bundle' type, returns an empty array (bundles are not placed by adapters).
47
+ */
48
+ export declare function detectCompatibleTools(assetType: InitType): Promise<string[]>;
49
+ /**
50
+ * Look up an installed asset in the lockfile and read its files from disk.
51
+ * Returns the manifest data and file contents for pre-filling a new scaffold.
52
+ * Returns undefined if the asset is not found in the lockfile.
53
+ */
54
+ export declare function forkFromInstalled(fromName: string, lockfile: Lockfile, projectDir: string): Promise<undefined | {
55
+ files: Map<string, string>;
56
+ manifest: Record<string, unknown>;
57
+ }>;
58
+ /**
59
+ * Generate minimal stub content for an asset entrypoint file.
60
+ * Returns an empty string for types that have no entrypoint (mcp-config, bundle).
61
+ */
62
+ export declare function generateEntrypointContent(type: InitType, name: string, description: string): string;
63
+ /**
64
+ * Generate a manifest JSON object for the given init options.
65
+ * Produces a manifest.json structure for assets or bundle.json structure for bundles.
66
+ */
67
+ export declare function generateManifest(options: InitOptions): Record<string, unknown>;
68
+ /**
69
+ * Generate README.md content for an asset.
70
+ * Includes type-specific sections for hooks and MCP configs.
71
+ */
72
+ export declare function generateReadmeContent(type: InitType, name: string, description: string): string;
73
+ /**
74
+ * Get the entrypoint filename for a given asset type and name.
75
+ * Returns undefined for fileless types (mcp-config) and bundles.
76
+ */
77
+ export declare function getEntrypointName(type: InitType, name: string): string | undefined;
78
+ /**
79
+ * Attempt to read the git user.name config value.
80
+ * Returns undefined if git is not available or the value is not set.
81
+ */
82
+ export declare function getGitUserName(): Promise<string | undefined>;
83
+ /**
84
+ * Scaffold a new asset or bundle directory with manifest and starter files.
85
+ *
86
+ * Creates `${outputBaseDir}/${options.name}/` with:
87
+ * - manifest.json (or bundle.json for bundle type)
88
+ * - Entrypoint file (if applicable)
89
+ * - README.md
90
+ */
91
+ export declare function scaffoldAsset(options: InitOptions, outputBaseDir: string): Promise<InitResult>;
92
+ /**
93
+ * Validate an asset name is in kebab-case format.
94
+ * Rules: lowercase letters, numbers, and hyphens; must start with a letter; min 2 chars.
95
+ */
96
+ export declare function validateAssetName(name: string): {
97
+ error?: string;
98
+ valid: boolean;
99
+ };
100
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/lib/init.ts"],"names":[],"mappings":"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"}