@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17

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 (466) hide show
  1. package/README.md +21 -1
  2. package/bin/aiwg.mjs +349 -0
  3. package/dist/src/a2a/agent-card.js +145 -0
  4. package/dist/src/a2a/client.js +411 -0
  5. package/dist/src/a2a/hitl-cli.js +171 -0
  6. package/dist/src/a2a/hitl-driver.js +370 -0
  7. package/dist/src/a2a/hitl.js +181 -0
  8. package/dist/src/a2a/http.js +193 -0
  9. package/dist/src/a2a/jcs.js +128 -0
  10. package/dist/src/a2a/jws.js +187 -0
  11. package/dist/src/a2a/types.js +24 -0
  12. package/dist/src/a2a/webhook.js +240 -0
  13. package/dist/src/activity-log/cli.js +348 -0
  14. package/dist/src/activity-log/parser.js +81 -0
  15. package/dist/src/activity-log/types.js +50 -0
  16. package/dist/src/agents/agent-deployer.js +367 -0
  17. package/dist/src/agents/agent-packager.js +271 -0
  18. package/dist/src/agents/agent-validator.js +271 -0
  19. package/dist/src/agents/grounding/knowledge-base.js +161 -0
  20. package/dist/src/agents/grounding/types.js +12 -0
  21. package/dist/src/agents/index.js +10 -0
  22. package/dist/src/agents/packaged-agent-inventory.js +75 -0
  23. package/dist/src/agents/types.js +7 -0
  24. package/dist/src/api/index.d.ts +10 -0
  25. package/dist/src/api/index.js +10 -0
  26. package/dist/src/artifacts/address-parser.js +73 -0
  27. package/dist/src/artifacts/audit/cli.js +183 -0
  28. package/dist/src/artifacts/audit/drift.js +122 -0
  29. package/dist/src/artifacts/audit/types.js +12 -0
  30. package/dist/src/artifacts/backends/graphology-backend.js +160 -0
  31. package/dist/src/artifacts/backends/json-backend.js +129 -0
  32. package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
  33. package/dist/src/artifacts/browser-export.js +622 -0
  34. package/dist/src/artifacts/capability-resolver.js +94 -0
  35. package/dist/src/artifacts/checksum-manifest.js +91 -0
  36. package/dist/src/artifacts/citation-parser.js +162 -0
  37. package/dist/src/artifacts/cli.js +1462 -0
  38. package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
  39. package/dist/src/artifacts/corpus-tools/cli.js +393 -0
  40. package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
  41. package/dist/src/artifacts/corpus-tools/curator.js +186 -0
  42. package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
  43. package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
  44. package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
  45. package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
  46. package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
  47. package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
  48. package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
  49. package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
  50. package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
  51. package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
  52. package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
  53. package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
  54. package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
  55. package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
  56. package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
  57. package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
  58. package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
  59. package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
  60. package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
  61. package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
  62. package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
  63. package/dist/src/artifacts/corpus-views/build.js +126 -0
  64. package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
  65. package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
  66. package/dist/src/artifacts/corpus-views/renderers.js +353 -0
  67. package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
  68. package/dist/src/artifacts/dep-graph.js +173 -0
  69. package/dist/src/artifacts/discover-facets.js +375 -0
  70. package/dist/src/artifacts/embedding-index.js +354 -0
  71. package/dist/src/artifacts/enrichment/cli.js +240 -0
  72. package/dist/src/artifacts/enrichment/prompt.js +47 -0
  73. package/dist/src/artifacts/enrichment/store.js +90 -0
  74. package/dist/src/artifacts/enrichment/types.js +12 -0
  75. package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
  76. package/dist/src/artifacts/fortemi-core-sync.js +251 -0
  77. package/dist/src/artifacts/fortemi-shard-export.js +44 -0
  78. package/dist/src/artifacts/fulltext.js +108 -0
  79. package/dist/src/artifacts/graph-backend.js +51 -0
  80. package/dist/src/artifacts/graph-query.js +247 -0
  81. package/dist/src/artifacts/hybrid-query.js +225 -0
  82. package/dist/src/artifacts/index-builder.js +1089 -0
  83. package/dist/src/artifacts/index-reader.js +112 -0
  84. package/dist/src/artifacts/index-status.js +193 -0
  85. package/dist/src/artifacts/legacy-index-migration.js +169 -0
  86. package/dist/src/artifacts/move.js +154 -0
  87. package/dist/src/artifacts/operational-state.js +239 -0
  88. package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
  89. package/dist/src/artifacts/query-engine.js +1955 -0
  90. package/dist/src/artifacts/source-graph.js +529 -0
  91. package/dist/src/artifacts/stats.js +169 -0
  92. package/dist/src/artifacts/types.js +606 -0
  93. package/dist/src/artifacts/views/cli.js +293 -0
  94. package/dist/src/artifacts/views/definition.js +170 -0
  95. package/dist/src/artifacts/views/store.js +149 -0
  96. package/dist/src/artifacts/views/types.js +8 -0
  97. package/dist/src/artifacts/watcher.js +255 -0
  98. package/dist/src/catalog/builtin-models.json +636 -0
  99. package/dist/src/catalog/cli.js +228 -0
  100. package/dist/src/catalog/cli.mjs +289 -0
  101. package/dist/src/catalog/index.js +15 -0
  102. package/dist/src/catalog/loader.js +217 -0
  103. package/dist/src/catalog/loader.mjs +251 -0
  104. package/dist/src/catalog/sources.json +41 -0
  105. package/dist/src/catalog/types.js +8 -0
  106. package/dist/src/channel/manager.mjs +504 -0
  107. package/dist/src/cli/agent-spawn.js +178 -0
  108. package/dist/src/cli/cli-extension-loader.js +245 -0
  109. package/dist/src/cli/command-log.js +275 -0
  110. package/dist/src/cli/config-loader.js +232 -0
  111. package/dist/src/cli/env.js +82 -0
  112. package/dist/src/cli/errors.js +150 -0
  113. package/dist/src/cli/find-package-root.js +40 -0
  114. package/dist/src/cli/git-hooks.js +250 -0
  115. package/dist/src/cli/handlers/agentcard.js +206 -0
  116. package/dist/src/cli/handlers/artifacts.js +76 -0
  117. package/dist/src/cli/handlers/best-practices-audit.js +280 -0
  118. package/dist/src/cli/handlers/cockpit.js +137 -0
  119. package/dist/src/cli/handlers/command-log.js +37 -0
  120. package/dist/src/cli/handlers/daemon.js +59 -0
  121. package/dist/src/cli/handlers/diagnose.js +300 -0
  122. package/dist/src/cli/handlers/execution-mode.js +105 -0
  123. package/dist/src/cli/handlers/feedback.js +341 -0
  124. package/dist/src/cli/handlers/help.js +147 -0
  125. package/dist/src/cli/handlers/index.js +302 -0
  126. package/dist/src/cli/handlers/init.js +179 -0
  127. package/dist/src/cli/handlers/install.js +129 -0
  128. package/dist/src/cli/handlers/issues.js +46 -0
  129. package/dist/src/cli/handlers/lint.js +42 -0
  130. package/dist/src/cli/handlers/local-executor.js +315 -0
  131. package/dist/src/cli/handlers/marketplace.js +168 -0
  132. package/dist/src/cli/handlers/mc.js +1010 -0
  133. package/dist/src/cli/handlers/models.js +352 -0
  134. package/dist/src/cli/handlers/packages.js +155 -0
  135. package/dist/src/cli/handlers/ralph-launcher.js +717 -0
  136. package/dist/src/cli/handlers/ralph.js +575 -0
  137. package/dist/src/cli/handlers/refresh.js +432 -0
  138. package/dist/src/cli/handlers/regenerate.js +336 -0
  139. package/dist/src/cli/handlers/repo-access.js +109 -0
  140. package/dist/src/cli/handlers/run.js +165 -0
  141. package/dist/src/cli/handlers/runtime-info.js +301 -0
  142. package/dist/src/cli/handlers/sandbox.js +197 -0
  143. package/dist/src/cli/handlers/scaffolding.js +149 -0
  144. package/dist/src/cli/handlers/script-runner.js +121 -0
  145. package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
  146. package/dist/src/cli/handlers/serve.js +1835 -0
  147. package/dist/src/cli/handlers/session.js +348 -0
  148. package/dist/src/cli/handlers/setup.js +440 -0
  149. package/dist/src/cli/handlers/skill-lint.js +367 -0
  150. package/dist/src/cli/handlers/skill-usage.js +74 -0
  151. package/dist/src/cli/handlers/steward.js +567 -0
  152. package/dist/src/cli/handlers/subcommands.js +1702 -0
  153. package/dist/src/cli/handlers/team.js +337 -0
  154. package/dist/src/cli/handlers/types.js +11 -0
  155. package/dist/src/cli/handlers/use.js +2772 -0
  156. package/dist/src/cli/handlers/utilities.js +703 -0
  157. package/dist/src/cli/handlers/version.js +134 -0
  158. package/dist/src/cli/handlers/workspace-context.js +93 -0
  159. package/dist/src/cli/handlers/workspace.js +126 -0
  160. package/dist/src/cli/help-generator.js +178 -0
  161. package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
  162. package/dist/src/cli/hooks/executor.js +96 -0
  163. package/dist/src/cli/hooks/index.js +15 -0
  164. package/dist/src/cli/hooks/registry.js +143 -0
  165. package/dist/src/cli/hooks/types.js +13 -0
  166. package/dist/src/cli/log.js +492 -0
  167. package/dist/src/cli/project-isolation/detect.js +70 -0
  168. package/dist/src/cli/project-isolation/index.js +7 -0
  169. package/dist/src/cli/project-isolation/signals.js +17 -0
  170. package/dist/src/cli/project-isolation/warning.js +102 -0
  171. package/dist/src/cli/prompt-utils.js +155 -0
  172. package/dist/src/cli/provider-deployment-plan.js +126 -0
  173. package/dist/src/cli/provider-resolution.js +119 -0
  174. package/dist/src/cli/router.js +305 -0
  175. package/dist/src/cli/scope-resolver.js +392 -0
  176. package/dist/src/cli/skill-usage.js +616 -0
  177. package/dist/src/cli/ui.js +224 -0
  178. package/dist/src/cli/watch-service.js +203 -0
  179. package/dist/src/cli/workflow-orchestrator.js +478 -0
  180. package/dist/src/cli/workspace-signals.js +321 -0
  181. package/dist/src/community/footer.js +14 -0
  182. package/dist/src/community/links.js +123 -0
  183. package/dist/src/community/milestones.js +46 -0
  184. package/dist/src/community/nudge-policy.js +93 -0
  185. package/dist/src/config/aiwg-config.js +883 -0
  186. package/dist/src/config/cli.js +703 -0
  187. package/dist/src/config/gitignore.js +156 -0
  188. package/dist/src/config/project-artifacts.js +76 -0
  189. package/dist/src/config/user-config.js +428 -0
  190. package/dist/src/config/user-registry.js +127 -0
  191. package/dist/src/config/workspace.js +276 -0
  192. package/dist/src/contributors/detect.js +39 -0
  193. package/dist/src/contributors/discover.js +172 -0
  194. package/dist/src/contributors/heuristic.js +186 -0
  195. package/dist/src/contributors/index.js +11 -0
  196. package/dist/src/contributors/types.js +13 -0
  197. package/dist/src/contributors/validation.js +116 -0
  198. package/dist/src/data/community.schema.json +43 -0
  199. package/dist/src/data/community.yaml +16 -0
  200. package/dist/src/extensions/capability-index.js +270 -0
  201. package/dist/src/extensions/claude-hooks-installer.js +268 -0
  202. package/dist/src/extensions/commands/definitions.js +3485 -0
  203. package/dist/src/extensions/deployment-registration.js +463 -0
  204. package/dist/src/extensions/index.js +22 -0
  205. package/dist/src/extensions/loader.js +132 -0
  206. package/dist/src/extensions/managed-marker.js +100 -0
  207. package/dist/src/extensions/manifest.js +196 -0
  208. package/dist/src/extensions/project-local-activity.js +114 -0
  209. package/dist/src/extensions/project-local-discovery.js +261 -0
  210. package/dist/src/extensions/project-local-doctor.js +281 -0
  211. package/dist/src/extensions/project-local-gitignore.js +176 -0
  212. package/dist/src/extensions/project-local-paths.js +121 -0
  213. package/dist/src/extensions/project-local-promote.js +218 -0
  214. package/dist/src/extensions/project-local-remove.js +373 -0
  215. package/dist/src/extensions/project-local-scaffold.js +252 -0
  216. package/dist/src/extensions/project-quickref.js +291 -0
  217. package/dist/src/extensions/registry.js +368 -0
  218. package/dist/src/extensions/shadow-resolver.js +271 -0
  219. package/dist/src/extensions/types.js +86 -0
  220. package/dist/src/extensions/upstream-registry.js +195 -0
  221. package/dist/src/extensions/validation.js +631 -0
  222. package/dist/src/features/catalog.js +88 -0
  223. package/dist/src/features/cli.js +197 -0
  224. package/dist/src/features/installer.js +57 -0
  225. package/dist/src/features/paths.js +14 -0
  226. package/dist/src/features/runtime.js +21 -0
  227. package/dist/src/features/status.js +134 -0
  228. package/dist/src/hooks/laziness-detection.js +532 -0
  229. package/dist/src/intake/git-history-analyzer.js +486 -0
  230. package/dist/src/intake/index.js +9 -0
  231. package/dist/src/issues/cli.js +327 -0
  232. package/dist/src/issues/index.js +5 -0
  233. package/dist/src/issues/live.js +154 -0
  234. package/dist/src/issues/local.js +666 -0
  235. package/dist/src/issues/sync.js +143 -0
  236. package/dist/src/issues/types.js +2 -0
  237. package/dist/src/issues/workflows.js +164 -0
  238. package/dist/src/kb/cli.js +173 -0
  239. package/dist/src/lint/cli.js +171 -0
  240. package/dist/src/lint/loader.js +225 -0
  241. package/dist/src/lint/reporters.js +141 -0
  242. package/dist/src/lint/runner.js +364 -0
  243. package/dist/src/lint/types.js +10 -0
  244. package/dist/src/marketplace/cache.js +110 -0
  245. package/dist/src/marketplace/identifier.js +63 -0
  246. package/dist/src/marketplace/registry.js +36 -0
  247. package/dist/src/marketplace/sources/clawhub.js +53 -0
  248. package/dist/src/marketplace/sources/git.js +45 -0
  249. package/dist/src/marketplace/types.js +9 -0
  250. package/dist/src/mcp/adapters/codex-runtime.js +224 -0
  251. package/dist/src/mcp/cli.mjs +1197 -0
  252. package/dist/src/mcp/elicitation.mjs +149 -0
  253. package/dist/src/mcp/helpers.mjs +287 -0
  254. package/dist/src/mcp/index.mjs +11 -0
  255. package/dist/src/mcp/profiles.js +263 -0
  256. package/dist/src/mcp/profiles.mjs +360 -0
  257. package/dist/src/mcp/registry.js +376 -0
  258. package/dist/src/mcp/registry.mjs +387 -0
  259. package/dist/src/mcp/server.mjs +633 -0
  260. package/dist/src/mcp/test-simple.mjs +271 -0
  261. package/dist/src/mcp/tools/command-run.mjs +101 -0
  262. package/dist/src/mcp/tools/discovery.mjs +291 -0
  263. package/dist/src/mcp/tools/interaction.mjs +87 -0
  264. package/dist/src/mcp/tools/orchestration.mjs +320 -0
  265. package/dist/src/mcp/tools/subsystems.mjs +640 -0
  266. package/dist/src/memory/cli.js +166 -0
  267. package/dist/src/memory/project-registry.js +282 -0
  268. package/dist/src/metrics/artifact-metrics.js +184 -0
  269. package/dist/src/metrics/context-budget.js +174 -0
  270. package/dist/src/metrics/token-counter.js +133 -0
  271. package/dist/src/models/config-loader.js +228 -0
  272. package/dist/src/models/index.js +22 -0
  273. package/dist/src/models/model-capabilities.v1.json +120 -0
  274. package/dist/src/models/model-catalog.v1.json +96 -0
  275. package/dist/src/models/model-discovery.js +521 -0
  276. package/dist/src/models/provider-models.js +73 -0
  277. package/dist/src/models/provider-policy.js +273 -0
  278. package/dist/src/models/resolver.js +245 -0
  279. package/dist/src/models/router.js +70 -0
  280. package/dist/src/models/types.js +8 -0
  281. package/dist/src/models/wrapper-deployment.js +178 -0
  282. package/dist/src/models/wrapper-route.js +54 -0
  283. package/dist/src/ops/cli.js +268 -0
  284. package/dist/src/ops/registry.js +623 -0
  285. package/dist/src/packages/adapters/clawhub.js +113 -0
  286. package/dist/src/packages/adapters/git.js +153 -0
  287. package/dist/src/packages/adapters/gitea.js +93 -0
  288. package/dist/src/packages/adapters/github.js +69 -0
  289. package/dist/src/packages/adapters/local-cache.js +89 -0
  290. package/dist/src/packages/package-registry.js +143 -0
  291. package/dist/src/packages/registry.js +238 -0
  292. package/dist/src/packages/types.js +11 -0
  293. package/dist/src/plugin/cross-framework-ops.js +475 -0
  294. package/dist/src/plugin/framework-config-loader.js +235 -0
  295. package/dist/src/plugin/framework-detector.js +186 -0
  296. package/dist/src/plugin/framework-isolator.js +341 -0
  297. package/dist/src/plugin/framework-migration.js +371 -0
  298. package/dist/src/plugin/metadata-validator.js +906 -0
  299. package/dist/src/plugin/plugin-installer.js +436 -0
  300. package/dist/src/plugin/plugin-status.js +369 -0
  301. package/dist/src/plugin/plugin-uninstaller.js +473 -0
  302. package/dist/src/plugin/registry-validator.js +344 -0
  303. package/dist/src/plugin/skill-command-translator.js +415 -0
  304. package/dist/src/plugin/workspace-creator.js +189 -0
  305. package/dist/src/plugin/workspace-migrator.js +821 -0
  306. package/dist/src/policy/authorization.js +390 -0
  307. package/dist/src/policy/repo-access.js +215 -0
  308. package/dist/src/provenance/cli.js +16 -0
  309. package/dist/src/providers/capability-matrix.js +300 -0
  310. package/dist/src/providers/capability-matrix.yaml +514 -0
  311. package/dist/src/providers/provider-definitions.js +977 -0
  312. package/dist/src/providers/provider-definitions.mjs +159 -0
  313. package/dist/src/providers/provider-inventory.js +169 -0
  314. package/dist/src/quality/feedback-ab.js +174 -0
  315. package/dist/src/quality/feedback-collector.js +176 -0
  316. package/dist/src/quality/feedback-tracker.js +123 -0
  317. package/dist/src/quality/patterns/adr.json +24 -0
  318. package/dist/src/quality/patterns/sad.json +24 -0
  319. package/dist/src/quality/patterns/test-plan.json +24 -0
  320. package/dist/src/quality/patterns/use-case.json +24 -0
  321. package/dist/src/quality/scoring.js +157 -0
  322. package/dist/src/reflections/cli.js +15 -0
  323. package/dist/src/release/plan.js +139 -0
  324. package/dist/src/research/cache/manager.js +227 -0
  325. package/dist/src/research/clients/arxiv.js +156 -0
  326. package/dist/src/research/clients/base.js +197 -0
  327. package/dist/src/research/clients/crossref.js +112 -0
  328. package/dist/src/research/clients/semantic-scholar.js +126 -0
  329. package/dist/src/research/clients/unpaywall.js +87 -0
  330. package/dist/src/research/index.js +14 -0
  331. package/dist/src/research/query-cli.js +336 -0
  332. package/dist/src/research/services/acquisition.js +313 -0
  333. package/dist/src/research/services/archival.js +225 -0
  334. package/dist/src/research/services/citation.js +279 -0
  335. package/dist/src/research/services/discovery.js +243 -0
  336. package/dist/src/research/services/documentation.js +269 -0
  337. package/dist/src/research/services/index.js +14 -0
  338. package/dist/src/research/services/provenance.js +279 -0
  339. package/dist/src/research/services/quality.js +370 -0
  340. package/dist/src/research/services/types.js +7 -0
  341. package/dist/src/research/storage-cli.js +20 -0
  342. package/dist/src/research/types.js +47 -0
  343. package/dist/src/resources/index.d.ts +2 -0
  344. package/dist/src/resources/index.js +2 -0
  345. package/dist/src/resources/web-release.d.ts +89 -0
  346. package/dist/src/resources/web-release.js +882 -0
  347. package/dist/src/rlm/cache/cli.js +162 -0
  348. package/dist/src/rlm/cache/hash.js +35 -0
  349. package/dist/src/rlm/cache/store.js +170 -0
  350. package/dist/src/rlm/cache/types.js +8 -0
  351. package/dist/src/rlm/cli.js +650 -0
  352. package/dist/src/serve/a2a-terminal-observer.js +120 -0
  353. package/dist/src/serve/agent-router.js +205 -0
  354. package/dist/src/serve/dispatch-router.js +171 -0
  355. package/dist/src/serve/executor-registry.js +715 -0
  356. package/dist/src/serve/mission-conductor.js +177 -0
  357. package/dist/src/serve/orchestrator-adapter.js +113 -0
  358. package/dist/src/serve/orchestrator-override.js +94 -0
  359. package/dist/src/serve/orchestrator-pty.js +133 -0
  360. package/dist/src/serve/pty-bridge.js +799 -0
  361. package/dist/src/serve/sandbox-registry.js +832 -0
  362. package/dist/src/serve/screen-reader.js +228 -0
  363. package/dist/src/serve/stack-adapters.js +68 -0
  364. package/dist/src/serve/telemetry.js +143 -0
  365. package/dist/src/skills/adapters/clawhub.js +250 -0
  366. package/dist/src/skills/adapters/local.js +335 -0
  367. package/dist/src/skills/adapters/openclaw.js +316 -0
  368. package/dist/src/skills/cli.js +334 -0
  369. package/dist/src/skills/registry.js +117 -0
  370. package/dist/src/skills/run.js +259 -0
  371. package/dist/src/skills/runtime.js +94 -0
  372. package/dist/src/skills/types.js +10 -0
  373. package/dist/src/smiths/agentsmith/demo.js +116 -0
  374. package/dist/src/smiths/agentsmith/examples.js +300 -0
  375. package/dist/src/smiths/agentsmith/generator.js +503 -0
  376. package/dist/src/smiths/agentsmith/index.js +11 -0
  377. package/dist/src/smiths/agentsmith/types.js +8 -0
  378. package/dist/src/smiths/commandsmith/example.js +220 -0
  379. package/dist/src/smiths/commandsmith/generator.js +288 -0
  380. package/dist/src/smiths/commandsmith/index.js +41 -0
  381. package/dist/src/smiths/commandsmith/templates.js +296 -0
  382. package/dist/src/smiths/commandsmith/types.js +7 -0
  383. package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
  384. package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
  385. package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
  386. package/dist/src/smiths/context-pipeline/discovery.js +187 -0
  387. package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
  388. package/dist/src/smiths/context-pipeline/finalization.js +147 -0
  389. package/dist/src/smiths/context-pipeline/generator.js +477 -0
  390. package/dist/src/smiths/context-pipeline/index.js +30 -0
  391. package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
  392. package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
  393. package/dist/src/smiths/context-pipeline/overflow.js +212 -0
  394. package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
  395. package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
  396. package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
  397. package/dist/src/smiths/context-pipeline/types.js +23 -0
  398. package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
  399. package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
  400. package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
  401. package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
  402. package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
  403. package/dist/src/smiths/hook-bridge/index.js +79 -0
  404. package/dist/src/smiths/hook-bridge/loader.js +116 -0
  405. package/dist/src/smiths/hook-bridge/shim.js +89 -0
  406. package/dist/src/smiths/hook-bridge/types.js +31 -0
  407. package/dist/src/smiths/index.js +39 -0
  408. package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
  409. package/dist/src/smiths/mcpsmith/example.js +119 -0
  410. package/dist/src/smiths/mcpsmith/generator.js +236 -0
  411. package/dist/src/smiths/mcpsmith/index.js +17 -0
  412. package/dist/src/smiths/mcpsmith/types.js +10 -0
  413. package/dist/src/smiths/platform-paths.js +101 -0
  414. package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
  415. package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
  416. package/dist/src/smiths/skillsmith/demo.js +83 -0
  417. package/dist/src/smiths/skillsmith/examples.js +161 -0
  418. package/dist/src/smiths/skillsmith/generator.js +316 -0
  419. package/dist/src/smiths/skillsmith/index.js +12 -0
  420. package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
  421. package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
  422. package/dist/src/smiths/skillsmith/types.js +9 -0
  423. package/dist/src/smiths/toolsmith/index.js +10 -0
  424. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
  425. package/dist/src/smiths/toolsmith/types.js +8 -0
  426. package/dist/src/storage/backends/fortemi.js +227 -0
  427. package/dist/src/storage/backends/fs.js +134 -0
  428. package/dist/src/storage/backends/logseq.js +309 -0
  429. package/dist/src/storage/backends/obsidian.js +233 -0
  430. package/dist/src/storage/cli.js +468 -0
  431. package/dist/src/storage/config.js +272 -0
  432. package/dist/src/storage/index.js +108 -0
  433. package/dist/src/storage/subsystem-cli.js +201 -0
  434. package/dist/src/storage/types.js +33 -0
  435. package/dist/src/testing/corpus/corpus-builder.js +383 -0
  436. package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
  437. package/dist/src/testing/corpus/index.js +10 -0
  438. package/dist/src/testing/fixtures/index.js +9 -0
  439. package/dist/src/testing/fixtures/test-data-factory.js +472 -0
  440. package/dist/src/testing/generators/index.js +11 -0
  441. package/dist/src/testing/generators/test-case-generator.js +393 -0
  442. package/dist/src/testing/generators/test-code-generator.js +384 -0
  443. package/dist/src/testing/generators/use-case-parser.js +325 -0
  444. package/dist/src/testing/index.js +11 -0
  445. package/dist/src/tracker/capability-protocol.js +118 -0
  446. package/dist/src/update/checker.mjs +396 -0
  447. package/dist/src/update/notifier.mjs +235 -0
  448. package/dist/src/writing/content-diversifier.js +804 -0
  449. package/dist/src/writing/example-generator.js +959 -0
  450. package/dist/src/writing/example-templates.js +99 -0
  451. package/dist/src/writing/pattern-library.js +486 -0
  452. package/dist/src/writing/patterns/banned-phrases.json +4413 -0
  453. package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
  454. package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
  455. package/dist/src/writing/patterns/hedging-language.json +2096 -0
  456. package/dist/src/writing/patterns/transition-words.json +1285 -0
  457. package/dist/src/writing/patterns/weak-verbs.json +1112 -0
  458. package/dist/src/writing/prompt-optimizer.js +660 -0
  459. package/dist/src/writing/prompt-templates.js +583 -0
  460. package/dist/src/writing/scoring-config-loader.js +168 -0
  461. package/dist/src/writing/validation-engine.js +595 -0
  462. package/dist/src/writing/validation-rules.js +380 -0
  463. package/dist/src/writing/voice-analyzer.js +439 -0
  464. package/dist/src/writing/voice-calibration.js +661 -0
  465. package/dist/src/writing/voice-profiles.json +588 -0
  466. package/package.json +64 -9
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Acquisition service for downloading and validating research papers
3
+ *
4
+ * @module research/services/acquisition
5
+ */
6
+ import { promises as fs } from 'fs';
7
+ import { join, dirname } from 'path';
8
+ import { createHash } from 'crypto';
9
+ import { UnpaywallClient } from '../clients/unpaywall.js';
10
+ /**
11
+ * Acquisition service for downloading research papers
12
+ */
13
+ export class AcquisitionService {
14
+ unpaywall;
15
+ downloadDir;
16
+ downloadTimeout;
17
+ constructor(config = {}) {
18
+ this.unpaywall = config.unpaywall || new UnpaywallClient({ email: config.email });
19
+ this.downloadDir = config.downloadDir || '.aiwg/research/sources';
20
+ this.downloadTimeout = config.downloadTimeout || 300000; // 5 minutes
21
+ }
22
+ /**
23
+ * Acquire a paper (download + metadata extraction)
24
+ */
25
+ async acquire(paper) {
26
+ // Determine PDF URL
27
+ let pdfUrl = paper.pdfUrl;
28
+ if (!pdfUrl && paper.doi) {
29
+ // Try to get open access PDF from Unpaywall
30
+ const oaUrl = await this.unpaywall.checkOpenAccess(paper.doi);
31
+ if (oaUrl) {
32
+ pdfUrl = oaUrl;
33
+ }
34
+ }
35
+ if (!pdfUrl) {
36
+ throw new Error(`No PDF URL available for paper: ${paper.id}`);
37
+ }
38
+ // Download PDF
39
+ const filename = this.generateFilename(paper);
40
+ const filePath = join(this.downloadDir, filename);
41
+ await this.ensureDir(dirname(filePath));
42
+ await this.downloadFile(pdfUrl, filePath);
43
+ // Compute checksum
44
+ const checksum = await this.computeChecksum(filePath);
45
+ // Get file size
46
+ const stats = await fs.stat(filePath);
47
+ const sizeBytes = stats.size;
48
+ // Get next REF-XXX ID
49
+ const refId = await this.assignRefId();
50
+ // Validate FAIR compliance
51
+ const fairScore = await this.validateFAIR({
52
+ paper,
53
+ filePath,
54
+ checksum,
55
+ refId,
56
+ acquiredAt: new Date().toISOString(),
57
+ sizeBytes,
58
+ });
59
+ const source = {
60
+ paper,
61
+ filePath,
62
+ checksum,
63
+ refId,
64
+ acquiredAt: new Date().toISOString(),
65
+ sizeBytes,
66
+ fairScore,
67
+ };
68
+ return source;
69
+ }
70
+ /**
71
+ * Compute SHA-256 checksum of a file
72
+ */
73
+ async computeChecksum(filePath) {
74
+ const content = await fs.readFile(filePath);
75
+ const hash = createHash('sha256');
76
+ hash.update(content);
77
+ return hash.digest('hex');
78
+ }
79
+ /**
80
+ * Assign next REF-XXX identifier
81
+ */
82
+ async assignRefId(existingRefs) {
83
+ let refs = existingRefs;
84
+ // If not provided, scan sources directory
85
+ if (!refs) {
86
+ refs = await this.scanExistingRefs();
87
+ }
88
+ // Extract numbers from REF-XXX format
89
+ const refNumbers = refs
90
+ .filter((ref) => /^REF-\d{3}$/.test(ref))
91
+ .map((ref) => parseInt(ref.substring(4), 10))
92
+ .filter((n) => !isNaN(n));
93
+ // Find next available number
94
+ const maxNumber = refNumbers.length > 0 ? Math.max(...refNumbers) : 0;
95
+ const nextNumber = maxNumber + 1;
96
+ // Format as REF-XXX with zero padding
97
+ return `REF-${String(nextNumber).padStart(3, '0')}`;
98
+ }
99
+ /**
100
+ * Validate FAIR compliance
101
+ */
102
+ async validateFAIR(source) {
103
+ const findable = this.assessFindable(source);
104
+ const accessible = this.assessAccessible(source);
105
+ const interoperable = this.assessInteroperable(source);
106
+ const reusable = this.assessReusable(source);
107
+ const overall = (findable.score +
108
+ accessible.score +
109
+ interoperable.score +
110
+ reusable.score) / 4;
111
+ const notes = [];
112
+ if (findable.score < 1.0) {
113
+ notes.push('Findability can be improved by adding more metadata');
114
+ }
115
+ if (accessible.score < 1.0) {
116
+ notes.push('Accessibility requires proper file permissions');
117
+ }
118
+ if (interoperable.score < 1.0) {
119
+ notes.push('Interoperability requires standard metadata format');
120
+ }
121
+ if (reusable.score < 1.0) {
122
+ notes.push('Reusability requires license information');
123
+ }
124
+ return {
125
+ overall,
126
+ findable,
127
+ accessible,
128
+ interoperable,
129
+ reusable,
130
+ notes,
131
+ };
132
+ }
133
+ /**
134
+ * Assess Findable dimension
135
+ */
136
+ assessFindable(source) {
137
+ const criteria = [
138
+ {
139
+ id: 'F1',
140
+ description: 'Assigned globally unique identifier (REF-XXX)',
141
+ met: !!source.refId && /^REF-\d{3}$/.test(source.refId),
142
+ },
143
+ {
144
+ id: 'F2',
145
+ description: 'Data described with rich metadata',
146
+ met: !!source.paper.title && source.paper.authors.length > 0,
147
+ },
148
+ {
149
+ id: 'F3',
150
+ description: 'Metadata includes identifier',
151
+ met: !!(source.paper.doi || source.paper.arxivId),
152
+ },
153
+ {
154
+ id: 'F4',
155
+ description: 'Indexed in searchable resource',
156
+ met: true, // Assumed for papers from APIs
157
+ },
158
+ ];
159
+ const metCount = criteria.filter((c) => c.met).length;
160
+ const score = metCount / criteria.length;
161
+ return { score, criteria };
162
+ }
163
+ /**
164
+ * Assess Accessible dimension
165
+ */
166
+ assessAccessible(source) {
167
+ const criteria = [
168
+ {
169
+ id: 'A1',
170
+ description: 'Retrievable by identifier using standard protocol',
171
+ met: !!source.filePath,
172
+ },
173
+ {
174
+ id: 'A2',
175
+ description: 'Metadata accessible even when data unavailable',
176
+ met: true, // Paper metadata stored separately
177
+ },
178
+ ];
179
+ const metCount = criteria.filter((c) => c.met).length;
180
+ const score = metCount / criteria.length;
181
+ return { score, criteria };
182
+ }
183
+ /**
184
+ * Assess Interoperable dimension
185
+ */
186
+ assessInteroperable(source) {
187
+ const criteria = [
188
+ {
189
+ id: 'I1',
190
+ description: 'Uses formal, accessible knowledge representation',
191
+ met: true, // JSON metadata
192
+ },
193
+ {
194
+ id: 'I2',
195
+ description: 'Uses FAIR-compliant vocabularies',
196
+ met: true, // Standard paper metadata fields
197
+ },
198
+ {
199
+ id: 'I3',
200
+ description: 'Includes qualified references to other data',
201
+ met: !!(source.paper.doi || source.paper.arxivId),
202
+ },
203
+ ];
204
+ const metCount = criteria.filter((c) => c.met).length;
205
+ const score = metCount / criteria.length;
206
+ return { score, criteria };
207
+ }
208
+ /**
209
+ * Assess Reusable dimension
210
+ */
211
+ assessReusable(source) {
212
+ const criteria = [
213
+ {
214
+ id: 'R1',
215
+ description: 'Described with accurate metadata',
216
+ met: !!source.paper.abstract,
217
+ },
218
+ {
219
+ id: 'R2',
220
+ description: 'Detailed provenance',
221
+ met: !!source.acquiredAt && !!source.paper.source,
222
+ },
223
+ {
224
+ id: 'R3',
225
+ description: 'Meets community standards',
226
+ met: true, // Academic paper from recognized source
227
+ },
228
+ ];
229
+ const metCount = criteria.filter((c) => c.met).length;
230
+ const score = metCount / criteria.length;
231
+ return { score, criteria };
232
+ }
233
+ /**
234
+ * Download file from URL
235
+ */
236
+ async downloadFile(url, destination) {
237
+ const controller = new AbortController();
238
+ const timeoutId = setTimeout(() => controller.abort(), this.downloadTimeout);
239
+ try {
240
+ const response = await fetch(url, {
241
+ signal: controller.signal,
242
+ });
243
+ clearTimeout(timeoutId);
244
+ if (!response.ok) {
245
+ throw new Error(`Download failed: ${response.status}`);
246
+ }
247
+ const buffer = await response.arrayBuffer();
248
+ await fs.writeFile(destination, Buffer.from(buffer));
249
+ }
250
+ catch (error) {
251
+ clearTimeout(timeoutId);
252
+ if (error instanceof Error && error.name === 'AbortError') {
253
+ throw new Error(`Download timeout after ${this.downloadTimeout}ms`);
254
+ }
255
+ throw error;
256
+ }
257
+ }
258
+ /**
259
+ * Generate filename for paper
260
+ */
261
+ generateFilename(paper) {
262
+ // Use first author's last name if available
263
+ let authorPart = 'unknown';
264
+ if (paper.authors.length > 0) {
265
+ const firstName = paper.authors[0].name;
266
+ const parts = firstName.split(' ');
267
+ authorPart = parts[parts.length - 1].toLowerCase();
268
+ }
269
+ // Use year
270
+ const yearPart = paper.year || 'unknown';
271
+ // Create slug from title (first 3 words)
272
+ const titleWords = paper.title
273
+ .toLowerCase()
274
+ .replace(/[^\w\s]/g, '')
275
+ .split(/\s+/)
276
+ .slice(0, 3)
277
+ .join('-');
278
+ return `${authorPart}-${yearPart}-${titleWords}.pdf`;
279
+ }
280
+ /**
281
+ * Scan existing REF-XXX identifiers
282
+ */
283
+ async scanExistingRefs() {
284
+ const refs = [];
285
+ try {
286
+ const files = await fs.readdir(this.downloadDir);
287
+ for (const file of files) {
288
+ if (file.startsWith('REF-') && file.endsWith('.pdf')) {
289
+ const refId = file.substring(0, 7); // REF-XXX
290
+ refs.push(refId);
291
+ }
292
+ }
293
+ }
294
+ catch (error) {
295
+ // Directory doesn't exist yet
296
+ }
297
+ return refs;
298
+ }
299
+ /**
300
+ * Ensure directory exists
301
+ */
302
+ async ensureDir(dir) {
303
+ try {
304
+ await fs.mkdir(dir, { recursive: true });
305
+ }
306
+ catch (error) {
307
+ if (error.code !== 'EEXIST') {
308
+ throw error;
309
+ }
310
+ }
311
+ }
312
+ }
313
+ //# sourceMappingURL=acquisition.js.map
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Archival service for OAIS-compliant packaging
3
+ *
4
+ * @module research/services/archival
5
+ */
6
+ import { promises as fs } from 'fs';
7
+ import { join, dirname } from 'path';
8
+ import { createHash } from 'crypto';
9
+ /**
10
+ * Archival service for OAIS package management
11
+ */
12
+ export class ArchivalService {
13
+ archiveDir;
14
+ formatVersion;
15
+ constructor(config = {}) {
16
+ this.archiveDir = config.archiveDir || '.aiwg/research/archives';
17
+ this.formatVersion = config.formatVersion || '1.0';
18
+ }
19
+ /**
20
+ * Create OAIS archive package
21
+ */
22
+ async createPackage(sources, type) {
23
+ const id = this.generatePackageId(type);
24
+ const packagePath = join(this.archiveDir, type.toLowerCase(), id);
25
+ // Create package directory
26
+ await this.ensureDir(packagePath);
27
+ // Create subdirectories
28
+ await this.ensureDir(join(packagePath, 'data'));
29
+ await this.ensureDir(join(packagePath, 'metadata'));
30
+ // Copy source files and metadata
31
+ const refIds = [];
32
+ const manifestEntries = [];
33
+ for (const source of sources) {
34
+ refIds.push(source.refId);
35
+ // Copy PDF to package
36
+ const destPath = join(packagePath, 'data', `${source.refId}.pdf`);
37
+ await fs.copyFile(source.filePath, destPath);
38
+ // Create metadata file
39
+ const metadataPath = join(packagePath, 'metadata', `${source.refId}.json`);
40
+ await fs.writeFile(metadataPath, JSON.stringify({
41
+ paper: source.paper,
42
+ refId: source.refId,
43
+ acquiredAt: source.acquiredAt,
44
+ originalChecksum: source.checksum,
45
+ }, null, 2), 'utf-8');
46
+ manifestEntries.push({
47
+ refId: source.refId,
48
+ originalPath: source.filePath,
49
+ packagePath: destPath,
50
+ checksum: source.checksum,
51
+ sizeBytes: source.sizeBytes,
52
+ });
53
+ }
54
+ // Create manifest
55
+ const manifestPath = join(packagePath, 'manifest.json');
56
+ const manifest = {
57
+ packageId: id,
58
+ packageType: type,
59
+ formatVersion: this.formatVersion,
60
+ createdAt: new Date().toISOString(),
61
+ sourceCount: sources.length,
62
+ entries: manifestEntries,
63
+ };
64
+ await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2), 'utf-8');
65
+ // Calculate total size
66
+ let totalSize = 0;
67
+ for (const entry of manifestEntries) {
68
+ totalSize += entry.sizeBytes;
69
+ }
70
+ // Compute package checksum
71
+ const packageChecksum = await this.computeDirectoryChecksum(packagePath);
72
+ const archivePackage = {
73
+ type,
74
+ id,
75
+ path: packagePath,
76
+ createdAt: new Date().toISOString(),
77
+ sources: refIds,
78
+ manifestPath,
79
+ sizeBytes: totalSize,
80
+ packageChecksum,
81
+ };
82
+ return archivePackage;
83
+ }
84
+ /**
85
+ * Verify integrity of archive package
86
+ */
87
+ async verifyIntegrity(packagePath) {
88
+ const manifestPath = join(packagePath, 'manifest.json');
89
+ // Load manifest
90
+ let manifest;
91
+ try {
92
+ const data = await fs.readFile(manifestPath, 'utf-8');
93
+ manifest = JSON.parse(data);
94
+ }
95
+ catch (error) {
96
+ return {
97
+ valid: false,
98
+ verifiedAt: new Date().toISOString(),
99
+ files: [],
100
+ missingFiles: [],
101
+ extraFiles: [],
102
+ summary: 'Failed to load manifest',
103
+ };
104
+ }
105
+ const fileResults = [];
106
+ const missingFiles = [];
107
+ const expectedFiles = new Set();
108
+ // Verify each file in manifest
109
+ for (const entry of manifest.entries) {
110
+ expectedFiles.add(entry.packagePath);
111
+ try {
112
+ const actualChecksum = await this.computeChecksum(entry.packagePath);
113
+ const valid = actualChecksum === entry.checksum;
114
+ fileResults.push({
115
+ path: entry.packagePath,
116
+ expectedChecksum: entry.checksum,
117
+ actualChecksum,
118
+ valid,
119
+ });
120
+ }
121
+ catch (error) {
122
+ missingFiles.push(entry.packagePath);
123
+ fileResults.push({
124
+ path: entry.packagePath,
125
+ expectedChecksum: entry.checksum,
126
+ actualChecksum: '',
127
+ valid: false,
128
+ });
129
+ }
130
+ }
131
+ // Check for extra files
132
+ const actualFiles = await this.listFilesRecursive(join(packagePath, 'data'));
133
+ const extraFiles = actualFiles.filter((f) => !expectedFiles.has(f));
134
+ const allValid = fileResults.every((f) => f.valid) &&
135
+ missingFiles.length === 0 &&
136
+ extraFiles.length === 0;
137
+ const summary = allValid
138
+ ? 'Package integrity verified'
139
+ : `Integrity check failed: ${fileResults.filter((f) => !f.valid).length} invalid, ${missingFiles.length} missing, ${extraFiles.length} extra`;
140
+ return {
141
+ valid: allValid,
142
+ verifiedAt: new Date().toISOString(),
143
+ files: fileResults,
144
+ missingFiles,
145
+ extraFiles,
146
+ summary,
147
+ };
148
+ }
149
+ /**
150
+ * Export reproducibility package for workflow
151
+ */
152
+ async exportReproducibilityPackage(workflowId) {
153
+ const exportPath = join(this.archiveDir, 'reproducibility', `${workflowId}-${Date.now()}.zip`);
154
+ await this.ensureDir(dirname(exportPath));
155
+ // Create a simple marker file (full implementation would create ZIP)
156
+ await fs.writeFile(exportPath.replace('.zip', '.txt'), `Reproducibility package for workflow ${workflowId}\nCreated: ${new Date().toISOString()}`, 'utf-8');
157
+ return exportPath;
158
+ }
159
+ /**
160
+ * Compute checksum of file
161
+ */
162
+ async computeChecksum(filePath) {
163
+ const content = await fs.readFile(filePath);
164
+ const hash = createHash('sha256');
165
+ hash.update(content);
166
+ return hash.digest('hex');
167
+ }
168
+ /**
169
+ * Compute checksum of directory contents
170
+ */
171
+ async computeDirectoryChecksum(dirPath) {
172
+ const files = await this.listFilesRecursive(dirPath);
173
+ files.sort(); // Ensure consistent ordering
174
+ const hash = createHash('sha256');
175
+ for (const file of files) {
176
+ const content = await fs.readFile(file);
177
+ hash.update(content);
178
+ }
179
+ return hash.digest('hex');
180
+ }
181
+ /**
182
+ * List all files recursively
183
+ */
184
+ async listFilesRecursive(dirPath) {
185
+ const files = [];
186
+ try {
187
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
188
+ for (const entry of entries) {
189
+ const fullPath = join(dirPath, entry.name);
190
+ if (entry.isDirectory()) {
191
+ const subFiles = await this.listFilesRecursive(fullPath);
192
+ files.push(...subFiles);
193
+ }
194
+ else {
195
+ files.push(fullPath);
196
+ }
197
+ }
198
+ }
199
+ catch (error) {
200
+ // Directory doesn't exist
201
+ }
202
+ return files;
203
+ }
204
+ /**
205
+ * Generate package ID
206
+ */
207
+ generatePackageId(type) {
208
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
209
+ return `${type.toLowerCase()}-${timestamp}`;
210
+ }
211
+ /**
212
+ * Ensure directory exists
213
+ */
214
+ async ensureDir(dir) {
215
+ try {
216
+ await fs.mkdir(dir, { recursive: true });
217
+ }
218
+ catch (error) {
219
+ if (error.code !== 'EEXIST') {
220
+ throw error;
221
+ }
222
+ }
223
+ }
224
+ }
225
+ //# sourceMappingURL=archival.js.map