@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,486 @@
1
+ /**
2
+ * Git History Analyzer
3
+ *
4
+ * Analyzes Git repository history to extract project metadata including
5
+ * velocity metrics, team composition, and project maturity for automated intake.
6
+ *
7
+ * @module src/intake/git-history-analyzer
8
+ * @implements @.aiwg/requirements/use-cases/UC-003-generate-intake-from-codebase.md
9
+ * @architecture @.aiwg/architecture/software-architecture-doc.md - Section 5.2 Intake Coordinator
10
+ * @tests @test/unit/intake/git-history-analyzer.test.ts
11
+ * @command @.claude/commands/intake-from-codebase.md
12
+ * @agent @agentic/code/frameworks/sdlc-complete/agents/intake-coordinator.md
13
+ */
14
+ import { exec } from 'child_process';
15
+ import { promisify } from 'util';
16
+ import { existsSync } from 'fs';
17
+ import { join } from 'path';
18
+ const execAsync = promisify(exec);
19
+ const DEFAULT_OPTIONS = {
20
+ maxCommits: 10000,
21
+ sinceMonths: 12,
22
+ includeAllBranches: false,
23
+ excludeAuthors: [],
24
+ excludePatterns: []
25
+ };
26
+ /**
27
+ * Git History Analyzer
28
+ *
29
+ * Extracts project metadata from Git commit history for automated intake generation.
30
+ */
31
+ export class GitHistoryAnalyzer {
32
+ repoPath;
33
+ options;
34
+ constructor(repoPath, options = {}) {
35
+ this.repoPath = repoPath;
36
+ this.options = { ...DEFAULT_OPTIONS, ...options };
37
+ }
38
+ /**
39
+ * Run comprehensive Git history analysis
40
+ */
41
+ async analyze() {
42
+ const startTime = Date.now();
43
+ // Validate repository
44
+ await this.validateRepository();
45
+ // Gather data in parallel where possible
46
+ const [commits, repository, branches] = await Promise.all([
47
+ this.getCommitHistory(),
48
+ this.getRepositoryMetadata(),
49
+ this.getBranches()
50
+ ]);
51
+ // Calculate derived metrics
52
+ const velocity = this.calculateVelocity(commits);
53
+ const maturity = this.classifyMaturity(commits, repository);
54
+ const team = this.extractTeamInfo(commits);
55
+ // Update repository with branch info
56
+ repository.branches = branches;
57
+ const analysisTimeMs = Date.now() - startTime;
58
+ return {
59
+ repository,
60
+ velocity,
61
+ maturity,
62
+ team,
63
+ commits: commits.slice(0, 100), // Return only last 100 commits
64
+ analysisTimeMs,
65
+ analyzedAt: new Date().toISOString()
66
+ };
67
+ }
68
+ /**
69
+ * Validate that the path is a Git repository
70
+ */
71
+ async validateRepository() {
72
+ const gitDir = join(this.repoPath, '.git');
73
+ if (!existsSync(gitDir)) {
74
+ throw new Error(`Not a Git repository: ${this.repoPath}`);
75
+ }
76
+ // Check Git is available
77
+ try {
78
+ await this.executeGitCommand('--version');
79
+ }
80
+ catch {
81
+ throw new Error('Git is not installed or not in PATH');
82
+ }
83
+ }
84
+ /**
85
+ * Execute a Git command in the repository
86
+ */
87
+ async executeGitCommand(args) {
88
+ try {
89
+ const { stdout, stderr } = await execAsync(`git ${args}`, {
90
+ cwd: this.repoPath,
91
+ maxBuffer: 50 * 1024 * 1024 // 50MB buffer for large repos
92
+ });
93
+ if (stderr && !stderr.includes('warning:')) {
94
+ console.warn('Git warning:', stderr);
95
+ }
96
+ return stdout.trim();
97
+ }
98
+ catch (error) {
99
+ const err = error;
100
+ throw new Error(`Git command failed: ${err.message}${err.stderr ? ` (${err.stderr})` : ''}`);
101
+ }
102
+ }
103
+ /**
104
+ * Get commit history from Git log
105
+ */
106
+ async getCommitHistory() {
107
+ const sinceDate = new Date();
108
+ sinceDate.setMonth(sinceDate.getMonth() - this.options.sinceMonths);
109
+ const sinceStr = sinceDate.toISOString().split('T')[0];
110
+ const branchFlag = this.options.includeAllBranches ? '--all' : '';
111
+ const format = '%H|%an|%ae|%at|%s';
112
+ const output = await this.executeGitCommand(`log ${branchFlag} --since="${sinceStr}" --pretty=format:"${format}" -n ${this.options.maxCommits}`);
113
+ if (!output) {
114
+ return [];
115
+ }
116
+ return this.parseCommitLog(output);
117
+ }
118
+ /**
119
+ * Parse Git log output into CommitInfo objects
120
+ */
121
+ parseCommitLog(logOutput) {
122
+ const commits = [];
123
+ const lines = logOutput.split('\n').filter(line => line.trim());
124
+ for (const line of lines) {
125
+ const parts = line.split('|');
126
+ if (parts.length < 5)
127
+ continue;
128
+ const [hash, author, email, timestampStr, ...messageParts] = parts;
129
+ const timestamp = parseInt(timestampStr, 10);
130
+ const message = messageParts.join('|');
131
+ // Apply exclusion filters
132
+ if (this.options.excludeAuthors.includes(author))
133
+ continue;
134
+ if (this.options.excludePatterns.some(p => p.test(message)))
135
+ continue;
136
+ commits.push({
137
+ hash,
138
+ author,
139
+ email,
140
+ timestamp,
141
+ message,
142
+ date: new Date(timestamp * 1000)
143
+ });
144
+ }
145
+ return commits;
146
+ }
147
+ /**
148
+ * Get repository metadata
149
+ */
150
+ async getRepositoryMetadata() {
151
+ // Get first commit date
152
+ const firstCommitTimestamp = await this.executeGitCommand('log --reverse --pretty=format:"%at" | head -1').catch(() => '');
153
+ // Get last commit date
154
+ const lastCommitTimestamp = await this.executeGitCommand('log -1 --pretty=format:"%at"').catch(() => '');
155
+ // Get total commit count
156
+ const commitCountStr = await this.executeGitCommand('rev-list --count HEAD').catch(() => '0');
157
+ // Get default branch
158
+ const defaultBranch = await this.executeGitCommand('symbolic-ref --short HEAD').catch(() => 'main');
159
+ // Get remote URL
160
+ const remoteUrl = await this.executeGitCommand('remote get-url origin').catch(() => '');
161
+ // Extract repo name from path or remote
162
+ const name = this.extractRepoName(this.repoPath, remoteUrl);
163
+ return {
164
+ path: this.repoPath,
165
+ name,
166
+ firstCommitDate: firstCommitTimestamp
167
+ ? new Date(parseInt(firstCommitTimestamp, 10) * 1000)
168
+ : new Date(),
169
+ lastCommitDate: lastCommitTimestamp
170
+ ? new Date(parseInt(lastCommitTimestamp, 10) * 1000)
171
+ : new Date(),
172
+ totalCommits: parseInt(commitCountStr, 10) || 0,
173
+ branches: [],
174
+ defaultBranch,
175
+ hasRemote: !!remoteUrl,
176
+ remoteUrl: remoteUrl || undefined
177
+ };
178
+ }
179
+ /**
180
+ * Get branch information
181
+ */
182
+ async getBranches() {
183
+ const output = await this.executeGitCommand('for-each-ref --format="%(refname:short)|%(committerdate:unix)|%(objectname:short)" refs/heads/').catch(() => '');
184
+ if (!output) {
185
+ return [];
186
+ }
187
+ const defaultBranch = await this.executeGitCommand('symbolic-ref --short HEAD').catch(() => 'main');
188
+ const branches = [];
189
+ const lines = output.split('\n').filter(l => l.trim());
190
+ for (const line of lines) {
191
+ const [name, timestampStr] = line.split('|');
192
+ if (!name)
193
+ continue;
194
+ const commitCount = parseInt(await this.executeGitCommand(`rev-list --count ${name}`).catch(() => '0'), 10);
195
+ branches.push({
196
+ name,
197
+ isDefault: name === defaultBranch,
198
+ commitCount,
199
+ lastActivity: new Date(parseInt(timestampStr, 10) * 1000)
200
+ });
201
+ }
202
+ return branches.sort((a, b) => b.lastActivity.getTime() - a.lastActivity.getTime());
203
+ }
204
+ /**
205
+ * Calculate velocity metrics from commit history
206
+ */
207
+ calculateVelocity(commits) {
208
+ if (commits.length === 0) {
209
+ return {
210
+ commitsPerDay: 0,
211
+ commitsPerWeek: 0,
212
+ commitsPerMonth: 0,
213
+ activeDaysRatio: 0,
214
+ teamVelocity: 0,
215
+ averageCommitsPerAuthor: 0,
216
+ peakDay: '',
217
+ peakWeekCommits: 0
218
+ };
219
+ }
220
+ // Sort commits by date
221
+ const sortedCommits = [...commits].sort((a, b) => a.timestamp - b.timestamp);
222
+ const firstCommit = sortedCommits[0];
223
+ const lastCommit = sortedCommits[sortedCommits.length - 1];
224
+ // Calculate time range
225
+ const msPerDay = 24 * 60 * 60 * 1000;
226
+ const totalDays = Math.max(1, (lastCommit.timestamp - firstCommit.timestamp) * 1000 / msPerDay);
227
+ const totalWeeks = Math.max(1, totalDays / 7);
228
+ const totalMonths = Math.max(1, totalDays / 30);
229
+ // Count active days
230
+ const activeDays = new Set(commits.map(c => new Date(c.timestamp * 1000).toISOString().split('T')[0]));
231
+ // Count commits by day and week
232
+ const commitsByDay = new Map();
233
+ const commitsByWeek = new Map();
234
+ for (const commit of commits) {
235
+ const date = new Date(commit.timestamp * 1000);
236
+ const dayKey = date.toISOString().split('T')[0];
237
+ const weekKey = this.getWeekKey(date);
238
+ commitsByDay.set(dayKey, (commitsByDay.get(dayKey) || 0) + 1);
239
+ commitsByWeek.set(weekKey, (commitsByWeek.get(weekKey) || 0) + 1);
240
+ }
241
+ // Find peak day and week
242
+ let peakDay = '';
243
+ let peakDayCommits = 0;
244
+ commitsByDay.forEach((count, day) => {
245
+ if (count > peakDayCommits) {
246
+ peakDayCommits = count;
247
+ peakDay = day;
248
+ }
249
+ });
250
+ let peakWeekCommits = 0;
251
+ commitsByWeek.forEach((count) => {
252
+ if (count > peakWeekCommits) {
253
+ peakWeekCommits = count;
254
+ }
255
+ });
256
+ // Count unique authors
257
+ const uniqueAuthors = new Set(commits.map(c => c.author)).size;
258
+ return {
259
+ commitsPerDay: commits.length / totalDays,
260
+ commitsPerWeek: commits.length / totalWeeks,
261
+ commitsPerMonth: commits.length / totalMonths,
262
+ activeDaysRatio: activeDays.size / totalDays,
263
+ teamVelocity: uniqueAuthors > 0 ? commits.length / totalDays / uniqueAuthors : 0,
264
+ averageCommitsPerAuthor: uniqueAuthors > 0 ? commits.length / uniqueAuthors : 0,
265
+ peakDay,
266
+ peakWeekCommits
267
+ };
268
+ }
269
+ /**
270
+ * Classify project maturity based on age and activity
271
+ */
272
+ classifyMaturity(commits, repository) {
273
+ const now = new Date();
274
+ const ageMs = now.getTime() - repository.firstCommitDate.getTime();
275
+ const ageMonths = ageMs / (30 * 24 * 60 * 60 * 1000);
276
+ const totalCommits = repository.totalCommits;
277
+ const indicators = [];
278
+ let level;
279
+ let confidence = 0.8;
280
+ // Classify based on age and commit count
281
+ if (ageMonths < 3 && totalCommits < 50) {
282
+ level = 'nascent';
283
+ indicators.push(`Project age: ${ageMonths.toFixed(1)} months`);
284
+ indicators.push(`Total commits: ${totalCommits}`);
285
+ indicators.push('Early development phase');
286
+ }
287
+ else if (ageMonths < 6 || totalCommits < 200) {
288
+ level = 'mvp';
289
+ indicators.push(`Project age: ${ageMonths.toFixed(1)} months`);
290
+ indicators.push(`Total commits: ${totalCommits}`);
291
+ indicators.push('MVP/prototype phase');
292
+ // Adjust confidence if mixed signals
293
+ if (ageMonths >= 6 && totalCommits < 200) {
294
+ confidence = 0.6;
295
+ indicators.push('Low activity for age - may be maintenance mode');
296
+ }
297
+ }
298
+ else if (ageMonths < 12 || totalCommits < 1000) {
299
+ level = 'production';
300
+ indicators.push(`Project age: ${ageMonths.toFixed(1)} months`);
301
+ indicators.push(`Total commits: ${totalCommits}`);
302
+ indicators.push('Active production development');
303
+ }
304
+ else {
305
+ level = 'mature';
306
+ indicators.push(`Project age: ${ageMonths.toFixed(1)} months`);
307
+ indicators.push(`Total commits: ${totalCommits}`);
308
+ indicators.push('Mature project with established history');
309
+ }
310
+ // Additional indicators
311
+ if (commits.length > 0) {
312
+ const recentCommits = commits.filter(c => {
313
+ const commitAge = (now.getTime() - c.date.getTime()) / (30 * 24 * 60 * 60 * 1000);
314
+ return commitAge < 1;
315
+ });
316
+ if (recentCommits.length === 0) {
317
+ indicators.push('No commits in last 30 days - may be maintenance mode');
318
+ confidence *= 0.9;
319
+ }
320
+ else if (recentCommits.length > 10) {
321
+ indicators.push('Active development in last 30 days');
322
+ }
323
+ }
324
+ return {
325
+ level,
326
+ ageMonths,
327
+ totalCommits,
328
+ confidence,
329
+ indicators
330
+ };
331
+ }
332
+ /**
333
+ * Extract team information from commits
334
+ */
335
+ extractTeamInfo(commits) {
336
+ const authorMap = new Map();
337
+ const now = new Date();
338
+ const threeMonthsAgo = new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000);
339
+ for (const commit of commits) {
340
+ const key = commit.email;
341
+ const existing = authorMap.get(key);
342
+ if (existing) {
343
+ existing.commitCount++;
344
+ if (commit.date < existing.firstCommit) {
345
+ existing.firstCommit = commit.date;
346
+ }
347
+ if (commit.date > existing.lastCommit) {
348
+ existing.lastCommit = commit.date;
349
+ }
350
+ }
351
+ else {
352
+ authorMap.set(key, {
353
+ name: commit.author,
354
+ email: commit.email,
355
+ commitCount: 1,
356
+ firstCommit: commit.date,
357
+ lastCommit: commit.date,
358
+ activeDays: 0
359
+ });
360
+ }
361
+ }
362
+ // Calculate active days per author
363
+ const authorDays = new Map();
364
+ for (const commit of commits) {
365
+ const key = commit.email;
366
+ const dayKey = commit.date.toISOString().split('T')[0];
367
+ if (!authorDays.has(key)) {
368
+ authorDays.set(key, new Set());
369
+ }
370
+ authorDays.get(key).add(dayKey);
371
+ }
372
+ authorDays.forEach((days, email) => {
373
+ const author = authorMap.get(email);
374
+ if (author) {
375
+ author.activeDays = days.size;
376
+ }
377
+ });
378
+ // Sort authors by commit count
379
+ const sortedAuthors = Array.from(authorMap.values())
380
+ .sort((a, b) => b.commitCount - a.commitCount);
381
+ // Count active authors (committed in last 3 months)
382
+ const activeAuthors = sortedAuthors.filter(a => a.lastCommit >= threeMonthsAgo);
383
+ // Create distribution map
384
+ const authorDistribution = new Map();
385
+ sortedAuthors.forEach(a => authorDistribution.set(a.name, a.commitCount));
386
+ // Determine team size category
387
+ let teamSize;
388
+ const totalAuthors = sortedAuthors.length;
389
+ if (totalAuthors <= 1) {
390
+ teamSize = 'solo';
391
+ }
392
+ else if (totalAuthors <= 5) {
393
+ teamSize = 'small';
394
+ }
395
+ else if (totalAuthors <= 15) {
396
+ teamSize = 'medium';
397
+ }
398
+ else {
399
+ teamSize = 'large';
400
+ }
401
+ return {
402
+ totalAuthors,
403
+ activeAuthors: activeAuthors.length,
404
+ topContributors: sortedAuthors.slice(0, 10),
405
+ authorDistribution,
406
+ issoloProject: totalAuthors <= 1,
407
+ teamSize
408
+ };
409
+ }
410
+ /**
411
+ * Get author statistics using git shortlog
412
+ */
413
+ async getAuthorStats() {
414
+ const sinceDate = new Date();
415
+ sinceDate.setMonth(sinceDate.getMonth() - this.options.sinceMonths);
416
+ const sinceStr = sinceDate.toISOString().split('T')[0];
417
+ const output = await this.executeGitCommand(`shortlog -sne --since="${sinceStr}"`).catch(() => '');
418
+ if (!output) {
419
+ return [];
420
+ }
421
+ const stats = [];
422
+ const lines = output.split('\n').filter(l => l.trim());
423
+ for (const line of lines) {
424
+ const match = line.match(/^\s*(\d+)\s+(.+)\s+<(.+)>$/);
425
+ if (match) {
426
+ stats.push({
427
+ name: match[2].trim(),
428
+ email: match[3].trim(),
429
+ commitCount: parseInt(match[1], 10),
430
+ firstCommit: new Date(),
431
+ lastCommit: new Date(),
432
+ activeDays: 0
433
+ });
434
+ }
435
+ }
436
+ return stats;
437
+ }
438
+ /**
439
+ * Helper to get week key for a date
440
+ */
441
+ getWeekKey(date) {
442
+ const startOfYear = new Date(date.getFullYear(), 0, 1);
443
+ const days = Math.floor((date.getTime() - startOfYear.getTime()) / (24 * 60 * 60 * 1000));
444
+ const weekNumber = Math.ceil((days + 1) / 7);
445
+ return `${date.getFullYear()}-W${weekNumber.toString().padStart(2, '0')}`;
446
+ }
447
+ /**
448
+ * Extract repository name from path or remote URL
449
+ */
450
+ extractRepoName(path, remoteUrl) {
451
+ // Try to extract from remote URL first
452
+ if (remoteUrl) {
453
+ const match = remoteUrl.match(/\/([^\/]+?)(\.git)?$/);
454
+ if (match) {
455
+ return match[1];
456
+ }
457
+ }
458
+ // Fall back to directory name
459
+ const parts = path.replace(/\\/g, '/').split('/').filter(p => p);
460
+ return parts[parts.length - 1] || 'unknown';
461
+ }
462
+ }
463
+ /**
464
+ * Quick analysis function for simple use cases
465
+ */
466
+ export async function analyzeGitHistory(repoPath, options) {
467
+ const analyzer = new GitHistoryAnalyzer(repoPath, options);
468
+ return analyzer.analyze();
469
+ }
470
+ /**
471
+ * Get project maturity classification
472
+ */
473
+ export async function getProjectMaturity(repoPath) {
474
+ const analyzer = new GitHistoryAnalyzer(repoPath, { maxCommits: 1000 });
475
+ const result = await analyzer.analyze();
476
+ return result.maturity;
477
+ }
478
+ /**
479
+ * Get team composition from Git history
480
+ */
481
+ export async function getTeamComposition(repoPath) {
482
+ const analyzer = new GitHistoryAnalyzer(repoPath, { sinceMonths: 12 });
483
+ const result = await analyzer.analyze();
484
+ return result.team;
485
+ }
486
+ //# sourceMappingURL=git-history-analyzer.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Intake Module
3
+ *
4
+ * Tools for automated codebase analysis and intake generation.
5
+ *
6
+ * @module src/intake
7
+ */
8
+ export * from './git-history-analyzer.js';
9
+ //# sourceMappingURL=index.js.map