@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.18

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 (467) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -1
  3. package/bin/aiwg.mjs +349 -0
  4. package/dist/src/a2a/agent-card.js +145 -0
  5. package/dist/src/a2a/client.js +411 -0
  6. package/dist/src/a2a/hitl-cli.js +171 -0
  7. package/dist/src/a2a/hitl-driver.js +370 -0
  8. package/dist/src/a2a/hitl.js +181 -0
  9. package/dist/src/a2a/http.js +193 -0
  10. package/dist/src/a2a/jcs.js +128 -0
  11. package/dist/src/a2a/jws.js +187 -0
  12. package/dist/src/a2a/types.js +24 -0
  13. package/dist/src/a2a/webhook.js +240 -0
  14. package/dist/src/activity-log/cli.js +348 -0
  15. package/dist/src/activity-log/parser.js +81 -0
  16. package/dist/src/activity-log/types.js +50 -0
  17. package/dist/src/agents/agent-deployer.js +367 -0
  18. package/dist/src/agents/agent-packager.js +271 -0
  19. package/dist/src/agents/agent-validator.js +271 -0
  20. package/dist/src/agents/grounding/knowledge-base.js +161 -0
  21. package/dist/src/agents/grounding/types.js +12 -0
  22. package/dist/src/agents/index.js +10 -0
  23. package/dist/src/agents/packaged-agent-inventory.js +75 -0
  24. package/dist/src/agents/types.js +7 -0
  25. package/dist/src/api/index.d.ts +10 -0
  26. package/dist/src/api/index.js +10 -0
  27. package/dist/src/artifacts/address-parser.js +73 -0
  28. package/dist/src/artifacts/audit/cli.js +183 -0
  29. package/dist/src/artifacts/audit/drift.js +122 -0
  30. package/dist/src/artifacts/audit/types.js +12 -0
  31. package/dist/src/artifacts/backends/graphology-backend.js +160 -0
  32. package/dist/src/artifacts/backends/json-backend.js +129 -0
  33. package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
  34. package/dist/src/artifacts/browser-export.js +622 -0
  35. package/dist/src/artifacts/capability-resolver.js +94 -0
  36. package/dist/src/artifacts/checksum-manifest.js +91 -0
  37. package/dist/src/artifacts/citation-parser.js +162 -0
  38. package/dist/src/artifacts/cli.js +1486 -0
  39. package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
  40. package/dist/src/artifacts/corpus-tools/cli.js +393 -0
  41. package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
  42. package/dist/src/artifacts/corpus-tools/curator.js +186 -0
  43. package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
  44. package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
  45. package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
  46. package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
  47. package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
  48. package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
  49. package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
  50. package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
  51. package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
  52. package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
  53. package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
  54. package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
  55. package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
  56. package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
  57. package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
  58. package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
  59. package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
  60. package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
  61. package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
  62. package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
  63. package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
  64. package/dist/src/artifacts/corpus-views/build.js +126 -0
  65. package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
  66. package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
  67. package/dist/src/artifacts/corpus-views/renderers.js +353 -0
  68. package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
  69. package/dist/src/artifacts/dep-graph.js +173 -0
  70. package/dist/src/artifacts/discover-facets.js +375 -0
  71. package/dist/src/artifacts/embedding-index.js +354 -0
  72. package/dist/src/artifacts/enrichment/cli.js +240 -0
  73. package/dist/src/artifacts/enrichment/prompt.js +47 -0
  74. package/dist/src/artifacts/enrichment/store.js +90 -0
  75. package/dist/src/artifacts/enrichment/types.js +12 -0
  76. package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
  77. package/dist/src/artifacts/fortemi-core-sync.js +251 -0
  78. package/dist/src/artifacts/fortemi-shard-export.js +44 -0
  79. package/dist/src/artifacts/fulltext.js +108 -0
  80. package/dist/src/artifacts/graph-backend.js +51 -0
  81. package/dist/src/artifacts/graph-query.js +247 -0
  82. package/dist/src/artifacts/hybrid-query.js +225 -0
  83. package/dist/src/artifacts/index-builder.js +1089 -0
  84. package/dist/src/artifacts/index-reader.js +112 -0
  85. package/dist/src/artifacts/index-status.js +193 -0
  86. package/dist/src/artifacts/legacy-index-migration.js +169 -0
  87. package/dist/src/artifacts/move.js +154 -0
  88. package/dist/src/artifacts/operational-state.js +239 -0
  89. package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
  90. package/dist/src/artifacts/query-engine.js +1955 -0
  91. package/dist/src/artifacts/source-graph.js +529 -0
  92. package/dist/src/artifacts/stats.js +169 -0
  93. package/dist/src/artifacts/types.js +606 -0
  94. package/dist/src/artifacts/views/cli.js +293 -0
  95. package/dist/src/artifacts/views/definition.js +170 -0
  96. package/dist/src/artifacts/views/store.js +149 -0
  97. package/dist/src/artifacts/views/types.js +8 -0
  98. package/dist/src/artifacts/watcher.js +255 -0
  99. package/dist/src/catalog/builtin-models.json +636 -0
  100. package/dist/src/catalog/cli.js +228 -0
  101. package/dist/src/catalog/cli.mjs +289 -0
  102. package/dist/src/catalog/index.js +15 -0
  103. package/dist/src/catalog/loader.js +217 -0
  104. package/dist/src/catalog/loader.mjs +251 -0
  105. package/dist/src/catalog/sources.json +41 -0
  106. package/dist/src/catalog/types.js +8 -0
  107. package/dist/src/channel/manager.mjs +504 -0
  108. package/dist/src/cli/agent-spawn.js +178 -0
  109. package/dist/src/cli/cli-extension-loader.js +245 -0
  110. package/dist/src/cli/command-log.js +275 -0
  111. package/dist/src/cli/config-loader.js +232 -0
  112. package/dist/src/cli/env.js +82 -0
  113. package/dist/src/cli/errors.js +150 -0
  114. package/dist/src/cli/find-package-root.js +40 -0
  115. package/dist/src/cli/git-hooks.js +250 -0
  116. package/dist/src/cli/handlers/agentcard.js +206 -0
  117. package/dist/src/cli/handlers/artifacts.js +76 -0
  118. package/dist/src/cli/handlers/best-practices-audit.js +280 -0
  119. package/dist/src/cli/handlers/cockpit.js +137 -0
  120. package/dist/src/cli/handlers/command-log.js +37 -0
  121. package/dist/src/cli/handlers/daemon.js +59 -0
  122. package/dist/src/cli/handlers/diagnose.js +300 -0
  123. package/dist/src/cli/handlers/execution-mode.js +105 -0
  124. package/dist/src/cli/handlers/feedback.js +341 -0
  125. package/dist/src/cli/handlers/help.js +147 -0
  126. package/dist/src/cli/handlers/index.js +302 -0
  127. package/dist/src/cli/handlers/init.js +179 -0
  128. package/dist/src/cli/handlers/install.js +129 -0
  129. package/dist/src/cli/handlers/issues.js +46 -0
  130. package/dist/src/cli/handlers/lint.js +42 -0
  131. package/dist/src/cli/handlers/local-executor.js +315 -0
  132. package/dist/src/cli/handlers/marketplace.js +168 -0
  133. package/dist/src/cli/handlers/mc.js +1010 -0
  134. package/dist/src/cli/handlers/models.js +352 -0
  135. package/dist/src/cli/handlers/packages.js +155 -0
  136. package/dist/src/cli/handlers/ralph-launcher.js +717 -0
  137. package/dist/src/cli/handlers/ralph.js +575 -0
  138. package/dist/src/cli/handlers/refresh.js +432 -0
  139. package/dist/src/cli/handlers/regenerate.js +336 -0
  140. package/dist/src/cli/handlers/repo-access.js +109 -0
  141. package/dist/src/cli/handlers/run.js +165 -0
  142. package/dist/src/cli/handlers/runtime-info.js +301 -0
  143. package/dist/src/cli/handlers/sandbox.js +197 -0
  144. package/dist/src/cli/handlers/scaffolding.js +149 -0
  145. package/dist/src/cli/handlers/script-runner.js +121 -0
  146. package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
  147. package/dist/src/cli/handlers/serve.js +1835 -0
  148. package/dist/src/cli/handlers/session.js +348 -0
  149. package/dist/src/cli/handlers/setup.js +440 -0
  150. package/dist/src/cli/handlers/skill-lint.js +367 -0
  151. package/dist/src/cli/handlers/skill-usage.js +74 -0
  152. package/dist/src/cli/handlers/steward.js +567 -0
  153. package/dist/src/cli/handlers/subcommands.js +1702 -0
  154. package/dist/src/cli/handlers/team.js +337 -0
  155. package/dist/src/cli/handlers/types.js +11 -0
  156. package/dist/src/cli/handlers/use.js +2772 -0
  157. package/dist/src/cli/handlers/utilities.js +703 -0
  158. package/dist/src/cli/handlers/version.js +134 -0
  159. package/dist/src/cli/handlers/workspace-context.js +93 -0
  160. package/dist/src/cli/handlers/workspace.js +126 -0
  161. package/dist/src/cli/help-generator.js +178 -0
  162. package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
  163. package/dist/src/cli/hooks/executor.js +96 -0
  164. package/dist/src/cli/hooks/index.js +15 -0
  165. package/dist/src/cli/hooks/registry.js +143 -0
  166. package/dist/src/cli/hooks/types.js +13 -0
  167. package/dist/src/cli/log.js +492 -0
  168. package/dist/src/cli/project-isolation/detect.js +70 -0
  169. package/dist/src/cli/project-isolation/index.js +7 -0
  170. package/dist/src/cli/project-isolation/signals.js +17 -0
  171. package/dist/src/cli/project-isolation/warning.js +102 -0
  172. package/dist/src/cli/prompt-utils.js +155 -0
  173. package/dist/src/cli/provider-deployment-plan.js +126 -0
  174. package/dist/src/cli/provider-resolution.js +119 -0
  175. package/dist/src/cli/router.js +305 -0
  176. package/dist/src/cli/scope-resolver.js +392 -0
  177. package/dist/src/cli/skill-usage.js +616 -0
  178. package/dist/src/cli/ui.js +224 -0
  179. package/dist/src/cli/watch-service.js +203 -0
  180. package/dist/src/cli/workflow-orchestrator.js +478 -0
  181. package/dist/src/cli/workspace-signals.js +321 -0
  182. package/dist/src/community/footer.js +14 -0
  183. package/dist/src/community/links.js +123 -0
  184. package/dist/src/community/milestones.js +46 -0
  185. package/dist/src/community/nudge-policy.js +93 -0
  186. package/dist/src/config/aiwg-config.js +883 -0
  187. package/dist/src/config/cli.js +703 -0
  188. package/dist/src/config/gitignore.js +156 -0
  189. package/dist/src/config/project-artifacts.js +76 -0
  190. package/dist/src/config/user-config.js +428 -0
  191. package/dist/src/config/user-registry.js +127 -0
  192. package/dist/src/config/workspace.js +276 -0
  193. package/dist/src/contributors/detect.js +39 -0
  194. package/dist/src/contributors/discover.js +172 -0
  195. package/dist/src/contributors/heuristic.js +186 -0
  196. package/dist/src/contributors/index.js +11 -0
  197. package/dist/src/contributors/types.js +13 -0
  198. package/dist/src/contributors/validation.js +116 -0
  199. package/dist/src/data/community.schema.json +43 -0
  200. package/dist/src/data/community.yaml +16 -0
  201. package/dist/src/extensions/capability-index.js +270 -0
  202. package/dist/src/extensions/claude-hooks-installer.js +268 -0
  203. package/dist/src/extensions/commands/definitions.js +3485 -0
  204. package/dist/src/extensions/deployment-registration.js +463 -0
  205. package/dist/src/extensions/index.js +22 -0
  206. package/dist/src/extensions/loader.js +132 -0
  207. package/dist/src/extensions/managed-marker.js +100 -0
  208. package/dist/src/extensions/manifest.js +196 -0
  209. package/dist/src/extensions/project-local-activity.js +114 -0
  210. package/dist/src/extensions/project-local-discovery.js +261 -0
  211. package/dist/src/extensions/project-local-doctor.js +281 -0
  212. package/dist/src/extensions/project-local-gitignore.js +176 -0
  213. package/dist/src/extensions/project-local-paths.js +121 -0
  214. package/dist/src/extensions/project-local-promote.js +218 -0
  215. package/dist/src/extensions/project-local-remove.js +373 -0
  216. package/dist/src/extensions/project-local-scaffold.js +252 -0
  217. package/dist/src/extensions/project-quickref.js +291 -0
  218. package/dist/src/extensions/registry.js +368 -0
  219. package/dist/src/extensions/shadow-resolver.js +271 -0
  220. package/dist/src/extensions/types.js +86 -0
  221. package/dist/src/extensions/upstream-registry.js +195 -0
  222. package/dist/src/extensions/validation.js +631 -0
  223. package/dist/src/features/catalog.js +88 -0
  224. package/dist/src/features/cli.js +197 -0
  225. package/dist/src/features/installer.js +57 -0
  226. package/dist/src/features/paths.js +14 -0
  227. package/dist/src/features/runtime.js +21 -0
  228. package/dist/src/features/status.js +134 -0
  229. package/dist/src/hooks/laziness-detection.js +532 -0
  230. package/dist/src/intake/git-history-analyzer.js +486 -0
  231. package/dist/src/intake/index.js +9 -0
  232. package/dist/src/issues/cli.js +327 -0
  233. package/dist/src/issues/index.js +5 -0
  234. package/dist/src/issues/live.js +154 -0
  235. package/dist/src/issues/local.js +666 -0
  236. package/dist/src/issues/sync.js +143 -0
  237. package/dist/src/issues/types.js +2 -0
  238. package/dist/src/issues/workflows.js +164 -0
  239. package/dist/src/kb/cli.js +173 -0
  240. package/dist/src/lint/cli.js +171 -0
  241. package/dist/src/lint/loader.js +225 -0
  242. package/dist/src/lint/reporters.js +141 -0
  243. package/dist/src/lint/runner.js +364 -0
  244. package/dist/src/lint/types.js +10 -0
  245. package/dist/src/marketplace/cache.js +110 -0
  246. package/dist/src/marketplace/identifier.js +63 -0
  247. package/dist/src/marketplace/registry.js +36 -0
  248. package/dist/src/marketplace/sources/clawhub.js +53 -0
  249. package/dist/src/marketplace/sources/git.js +45 -0
  250. package/dist/src/marketplace/types.js +9 -0
  251. package/dist/src/mcp/adapters/codex-runtime.js +224 -0
  252. package/dist/src/mcp/cli.mjs +1197 -0
  253. package/dist/src/mcp/elicitation.mjs +149 -0
  254. package/dist/src/mcp/helpers.mjs +287 -0
  255. package/dist/src/mcp/index.mjs +11 -0
  256. package/dist/src/mcp/profiles.js +263 -0
  257. package/dist/src/mcp/profiles.mjs +360 -0
  258. package/dist/src/mcp/registry.js +376 -0
  259. package/dist/src/mcp/registry.mjs +387 -0
  260. package/dist/src/mcp/server.mjs +633 -0
  261. package/dist/src/mcp/test-simple.mjs +271 -0
  262. package/dist/src/mcp/tools/command-run.mjs +101 -0
  263. package/dist/src/mcp/tools/discovery.mjs +291 -0
  264. package/dist/src/mcp/tools/interaction.mjs +87 -0
  265. package/dist/src/mcp/tools/orchestration.mjs +320 -0
  266. package/dist/src/mcp/tools/subsystems.mjs +640 -0
  267. package/dist/src/memory/cli.js +166 -0
  268. package/dist/src/memory/project-registry.js +282 -0
  269. package/dist/src/metrics/artifact-metrics.js +184 -0
  270. package/dist/src/metrics/context-budget.js +174 -0
  271. package/dist/src/metrics/token-counter.js +133 -0
  272. package/dist/src/models/config-loader.js +228 -0
  273. package/dist/src/models/index.js +22 -0
  274. package/dist/src/models/model-capabilities.v1.json +120 -0
  275. package/dist/src/models/model-catalog.v1.json +96 -0
  276. package/dist/src/models/model-discovery.js +521 -0
  277. package/dist/src/models/provider-models.js +73 -0
  278. package/dist/src/models/provider-policy.js +273 -0
  279. package/dist/src/models/resolver.js +245 -0
  280. package/dist/src/models/router.js +70 -0
  281. package/dist/src/models/types.js +8 -0
  282. package/dist/src/models/wrapper-deployment.js +178 -0
  283. package/dist/src/models/wrapper-route.js +54 -0
  284. package/dist/src/ops/cli.js +268 -0
  285. package/dist/src/ops/registry.js +623 -0
  286. package/dist/src/packages/adapters/clawhub.js +113 -0
  287. package/dist/src/packages/adapters/git.js +153 -0
  288. package/dist/src/packages/adapters/gitea.js +93 -0
  289. package/dist/src/packages/adapters/github.js +69 -0
  290. package/dist/src/packages/adapters/local-cache.js +89 -0
  291. package/dist/src/packages/package-registry.js +143 -0
  292. package/dist/src/packages/registry.js +238 -0
  293. package/dist/src/packages/types.js +11 -0
  294. package/dist/src/plugin/cross-framework-ops.js +475 -0
  295. package/dist/src/plugin/framework-config-loader.js +235 -0
  296. package/dist/src/plugin/framework-detector.js +186 -0
  297. package/dist/src/plugin/framework-isolator.js +341 -0
  298. package/dist/src/plugin/framework-migration.js +371 -0
  299. package/dist/src/plugin/metadata-validator.js +906 -0
  300. package/dist/src/plugin/plugin-installer.js +436 -0
  301. package/dist/src/plugin/plugin-status.js +369 -0
  302. package/dist/src/plugin/plugin-uninstaller.js +473 -0
  303. package/dist/src/plugin/registry-validator.js +344 -0
  304. package/dist/src/plugin/skill-command-translator.js +415 -0
  305. package/dist/src/plugin/workspace-creator.js +189 -0
  306. package/dist/src/plugin/workspace-migrator.js +821 -0
  307. package/dist/src/policy/authorization.js +390 -0
  308. package/dist/src/policy/repo-access.js +215 -0
  309. package/dist/src/provenance/cli.js +16 -0
  310. package/dist/src/providers/capability-matrix.js +300 -0
  311. package/dist/src/providers/capability-matrix.yaml +514 -0
  312. package/dist/src/providers/provider-definitions.js +977 -0
  313. package/dist/src/providers/provider-definitions.mjs +159 -0
  314. package/dist/src/providers/provider-inventory.js +169 -0
  315. package/dist/src/quality/feedback-ab.js +174 -0
  316. package/dist/src/quality/feedback-collector.js +176 -0
  317. package/dist/src/quality/feedback-tracker.js +123 -0
  318. package/dist/src/quality/patterns/adr.json +24 -0
  319. package/dist/src/quality/patterns/sad.json +24 -0
  320. package/dist/src/quality/patterns/test-plan.json +24 -0
  321. package/dist/src/quality/patterns/use-case.json +24 -0
  322. package/dist/src/quality/scoring.js +157 -0
  323. package/dist/src/reflections/cli.js +15 -0
  324. package/dist/src/release/plan.js +139 -0
  325. package/dist/src/research/cache/manager.js +227 -0
  326. package/dist/src/research/clients/arxiv.js +156 -0
  327. package/dist/src/research/clients/base.js +197 -0
  328. package/dist/src/research/clients/crossref.js +112 -0
  329. package/dist/src/research/clients/semantic-scholar.js +126 -0
  330. package/dist/src/research/clients/unpaywall.js +87 -0
  331. package/dist/src/research/index.js +14 -0
  332. package/dist/src/research/query-cli.js +336 -0
  333. package/dist/src/research/services/acquisition.js +313 -0
  334. package/dist/src/research/services/archival.js +225 -0
  335. package/dist/src/research/services/citation.js +279 -0
  336. package/dist/src/research/services/discovery.js +243 -0
  337. package/dist/src/research/services/documentation.js +269 -0
  338. package/dist/src/research/services/index.js +14 -0
  339. package/dist/src/research/services/provenance.js +279 -0
  340. package/dist/src/research/services/quality.js +370 -0
  341. package/dist/src/research/services/types.js +7 -0
  342. package/dist/src/research/storage-cli.js +20 -0
  343. package/dist/src/research/types.js +47 -0
  344. package/dist/src/resources/index.d.ts +2 -0
  345. package/dist/src/resources/index.js +2 -0
  346. package/dist/src/resources/web-release.d.ts +89 -0
  347. package/dist/src/resources/web-release.js +886 -0
  348. package/dist/src/rlm/cache/cli.js +162 -0
  349. package/dist/src/rlm/cache/hash.js +35 -0
  350. package/dist/src/rlm/cache/store.js +170 -0
  351. package/dist/src/rlm/cache/types.js +8 -0
  352. package/dist/src/rlm/cli.js +650 -0
  353. package/dist/src/serve/a2a-terminal-observer.js +120 -0
  354. package/dist/src/serve/agent-router.js +205 -0
  355. package/dist/src/serve/dispatch-router.js +171 -0
  356. package/dist/src/serve/executor-registry.js +715 -0
  357. package/dist/src/serve/mission-conductor.js +177 -0
  358. package/dist/src/serve/orchestrator-adapter.js +113 -0
  359. package/dist/src/serve/orchestrator-override.js +94 -0
  360. package/dist/src/serve/orchestrator-pty.js +133 -0
  361. package/dist/src/serve/pty-bridge.js +799 -0
  362. package/dist/src/serve/sandbox-registry.js +832 -0
  363. package/dist/src/serve/screen-reader.js +228 -0
  364. package/dist/src/serve/stack-adapters.js +68 -0
  365. package/dist/src/serve/telemetry.js +143 -0
  366. package/dist/src/skills/adapters/clawhub.js +250 -0
  367. package/dist/src/skills/adapters/local.js +335 -0
  368. package/dist/src/skills/adapters/openclaw.js +316 -0
  369. package/dist/src/skills/cli.js +334 -0
  370. package/dist/src/skills/registry.js +117 -0
  371. package/dist/src/skills/run.js +259 -0
  372. package/dist/src/skills/runtime.js +94 -0
  373. package/dist/src/skills/types.js +10 -0
  374. package/dist/src/smiths/agentsmith/demo.js +116 -0
  375. package/dist/src/smiths/agentsmith/examples.js +300 -0
  376. package/dist/src/smiths/agentsmith/generator.js +503 -0
  377. package/dist/src/smiths/agentsmith/index.js +11 -0
  378. package/dist/src/smiths/agentsmith/types.js +8 -0
  379. package/dist/src/smiths/commandsmith/example.js +220 -0
  380. package/dist/src/smiths/commandsmith/generator.js +288 -0
  381. package/dist/src/smiths/commandsmith/index.js +41 -0
  382. package/dist/src/smiths/commandsmith/templates.js +296 -0
  383. package/dist/src/smiths/commandsmith/types.js +7 -0
  384. package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
  385. package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
  386. package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
  387. package/dist/src/smiths/context-pipeline/discovery.js +187 -0
  388. package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
  389. package/dist/src/smiths/context-pipeline/finalization.js +147 -0
  390. package/dist/src/smiths/context-pipeline/generator.js +477 -0
  391. package/dist/src/smiths/context-pipeline/index.js +30 -0
  392. package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
  393. package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
  394. package/dist/src/smiths/context-pipeline/overflow.js +212 -0
  395. package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
  396. package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
  397. package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
  398. package/dist/src/smiths/context-pipeline/types.js +23 -0
  399. package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
  400. package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
  401. package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
  402. package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
  403. package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
  404. package/dist/src/smiths/hook-bridge/index.js +79 -0
  405. package/dist/src/smiths/hook-bridge/loader.js +116 -0
  406. package/dist/src/smiths/hook-bridge/shim.js +89 -0
  407. package/dist/src/smiths/hook-bridge/types.js +31 -0
  408. package/dist/src/smiths/index.js +39 -0
  409. package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
  410. package/dist/src/smiths/mcpsmith/example.js +119 -0
  411. package/dist/src/smiths/mcpsmith/generator.js +236 -0
  412. package/dist/src/smiths/mcpsmith/index.js +17 -0
  413. package/dist/src/smiths/mcpsmith/types.js +10 -0
  414. package/dist/src/smiths/platform-paths.js +101 -0
  415. package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
  416. package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
  417. package/dist/src/smiths/skillsmith/demo.js +83 -0
  418. package/dist/src/smiths/skillsmith/examples.js +161 -0
  419. package/dist/src/smiths/skillsmith/generator.js +316 -0
  420. package/dist/src/smiths/skillsmith/index.js +12 -0
  421. package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
  422. package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
  423. package/dist/src/smiths/skillsmith/types.js +9 -0
  424. package/dist/src/smiths/toolsmith/index.js +10 -0
  425. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
  426. package/dist/src/smiths/toolsmith/types.js +8 -0
  427. package/dist/src/storage/backends/fortemi.js +227 -0
  428. package/dist/src/storage/backends/fs.js +134 -0
  429. package/dist/src/storage/backends/logseq.js +309 -0
  430. package/dist/src/storage/backends/obsidian.js +233 -0
  431. package/dist/src/storage/cli.js +468 -0
  432. package/dist/src/storage/config.js +272 -0
  433. package/dist/src/storage/index.js +108 -0
  434. package/dist/src/storage/subsystem-cli.js +201 -0
  435. package/dist/src/storage/types.js +33 -0
  436. package/dist/src/testing/corpus/corpus-builder.js +383 -0
  437. package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
  438. package/dist/src/testing/corpus/index.js +10 -0
  439. package/dist/src/testing/fixtures/index.js +9 -0
  440. package/dist/src/testing/fixtures/test-data-factory.js +472 -0
  441. package/dist/src/testing/generators/index.js +11 -0
  442. package/dist/src/testing/generators/test-case-generator.js +393 -0
  443. package/dist/src/testing/generators/test-code-generator.js +384 -0
  444. package/dist/src/testing/generators/use-case-parser.js +325 -0
  445. package/dist/src/testing/index.js +11 -0
  446. package/dist/src/tracker/capability-protocol.js +118 -0
  447. package/dist/src/update/checker.mjs +396 -0
  448. package/dist/src/update/notifier.mjs +235 -0
  449. package/dist/src/writing/content-diversifier.js +804 -0
  450. package/dist/src/writing/example-generator.js +959 -0
  451. package/dist/src/writing/example-templates.js +99 -0
  452. package/dist/src/writing/pattern-library.js +486 -0
  453. package/dist/src/writing/patterns/banned-phrases.json +4413 -0
  454. package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
  455. package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
  456. package/dist/src/writing/patterns/hedging-language.json +2096 -0
  457. package/dist/src/writing/patterns/transition-words.json +1285 -0
  458. package/dist/src/writing/patterns/weak-verbs.json +1112 -0
  459. package/dist/src/writing/prompt-optimizer.js +660 -0
  460. package/dist/src/writing/prompt-templates.js +583 -0
  461. package/dist/src/writing/scoring-config-loader.js +168 -0
  462. package/dist/src/writing/validation-engine.js +595 -0
  463. package/dist/src/writing/validation-rules.js +380 -0
  464. package/dist/src/writing/voice-analyzer.js +439 -0
  465. package/dist/src/writing/voice-calibration.js +661 -0
  466. package/dist/src/writing/voice-profiles.json +588 -0
  467. package/package.json +65 -9
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Example Templates
3
+ *
4
+ * Pre-defined topic templates for example generation.
5
+ * Provides structured patterns for common technical topics.
6
+ */
7
+ export const TOPIC_TEMPLATES = [
8
+ {
9
+ topic: 'caching',
10
+ category: 'performance',
11
+ beforeTemplates: [
12
+ 'It is important to note that caching plays a crucial role in modern applications. When delving into caching strategies, one must consider various aspects. At the end of the day, comprehensive caching is absolutely essential.',
13
+ ],
14
+ afterHints: [
15
+ 'Add specific cache types (Redis, Memcached)',
16
+ 'Include hit/miss ratios and latency improvements',
17
+ 'Mention eviction policies (LRU, LFU)',
18
+ 'Acknowledge cache invalidation challenges',
19
+ ],
20
+ },
21
+ {
22
+ topic: 'authentication',
23
+ category: 'security',
24
+ beforeTemplates: [
25
+ 'Authentication is a comprehensive solution for securing applications. It is worth noting that this cutting-edge approach leverages state-of-the-art techniques. Various aspects should be carefully considered.',
26
+ ],
27
+ afterHints: [
28
+ 'Specify OAuth 2.0, JWT, or specific protocols',
29
+ 'Mention security trade-offs (session vs stateless)',
30
+ 'Include token expiration times',
31
+ 'Acknowledge MFA complexity',
32
+ ],
33
+ },
34
+ {
35
+ topic: 'database optimization',
36
+ category: 'performance',
37
+ beforeTemplates: [
38
+ 'Database optimization involves several key considerations. Firstly, schema design must be carefully planned. Secondly, indexing requires attention. Thirdly, query optimization is essential. Finally, monitoring should be comprehensive.',
39
+ ],
40
+ afterHints: [
41
+ 'Name specific databases (PostgreSQL, MySQL)',
42
+ 'Include query execution times',
43
+ 'Mention index types (B-tree, GiST)',
44
+ 'Acknowledge n+1 query problems',
45
+ ],
46
+ },
47
+ {
48
+ topic: 'microservices',
49
+ category: 'architecture',
50
+ beforeTemplates: [
51
+ 'One should consider microservices carefully. It must be noted that proper implementation may help to achieve desired results. The system can serve to improve scalability significantly.',
52
+ ],
53
+ afterHints: [
54
+ 'Mention service mesh (Istio, Linkerd)',
55
+ 'Include deployment complexity trade-offs',
56
+ 'Specify communication patterns (REST, gRPC)',
57
+ 'Acknowledge distributed tracing challenges',
58
+ ],
59
+ },
60
+ {
61
+ topic: 'API design',
62
+ category: 'design',
63
+ beforeTemplates: [
64
+ 'API design is important. Moreover, it provides benefits. Furthermore, it should be considered. Additionally, proper implementation is crucial.',
65
+ ],
66
+ afterHints: [
67
+ 'Specify REST, GraphQL, or gRPC',
68
+ 'Include versioning strategies',
69
+ 'Mention rate limiting specifics',
70
+ 'Acknowledge backward compatibility pain points',
71
+ ],
72
+ },
73
+ ];
74
+ /**
75
+ * Get template by topic name
76
+ */
77
+ export function getTemplateByTopic(topic) {
78
+ return TOPIC_TEMPLATES.find(t => t.topic.toLowerCase() === topic.toLowerCase());
79
+ }
80
+ /**
81
+ * Get templates by category
82
+ */
83
+ export function getTemplatesByCategory(category) {
84
+ return TOPIC_TEMPLATES.filter(t => t.category.toLowerCase() === category.toLowerCase());
85
+ }
86
+ /**
87
+ * Get all topic names
88
+ */
89
+ export function getAllTopics() {
90
+ return TOPIC_TEMPLATES.map(t => t.topic);
91
+ }
92
+ /**
93
+ * Get all categories
94
+ */
95
+ export function getAllCategories() {
96
+ const categories = TOPIC_TEMPLATES.map(t => t.category);
97
+ return Array.from(new Set(categories));
98
+ }
99
+ //# sourceMappingURL=example-templates.js.map
@@ -0,0 +1,486 @@
1
+ /**
2
+ * Pattern Library
3
+ *
4
+ * Comprehensive, categorized database of AI writing patterns with detection algorithms,
5
+ * severity levels, and replacement suggestions.
6
+ */
7
+ import { readFile } from 'fs/promises';
8
+ import { join, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ import { existsSync } from 'fs';
11
+ import * as yaml from 'yaml';
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ /**
15
+ * Pattern Library - Comprehensive AI pattern detection database
16
+ */
17
+ export class PatternLibrary {
18
+ patterns = [];
19
+ patternsByCategory = new Map();
20
+ patternsBySeverity = new Map();
21
+ patternsById = new Map();
22
+ initialized = false;
23
+ constructor() {
24
+ // Patterns loaded on first use (lazy loading)
25
+ }
26
+ /**
27
+ * Initialize the library by loading all patterns
28
+ */
29
+ async initialize() {
30
+ if (this.initialized) {
31
+ return;
32
+ }
33
+ const patternsDir = join(__dirname, 'patterns');
34
+ const patternFiles = [
35
+ 'banned-phrases.json',
36
+ 'formulaic-structures.json',
37
+ 'hedging-language.json',
38
+ 'weak-verbs.json',
39
+ 'generic-adjectives.json',
40
+ 'transition-words.json'
41
+ ];
42
+ for (const file of patternFiles) {
43
+ const filePath = join(patternsDir, file);
44
+ if (existsSync(filePath)) {
45
+ const content = await readFile(filePath, 'utf-8');
46
+ const filePatterns = JSON.parse(content);
47
+ // Convert string patterns to RegExp
48
+ for (const pattern of filePatterns) {
49
+ if (typeof pattern.pattern === 'string') {
50
+ pattern.pattern = this.createRegExpFromPattern(pattern.pattern);
51
+ }
52
+ this.addPattern(pattern);
53
+ }
54
+ }
55
+ }
56
+ this.initialized = true;
57
+ }
58
+ /**
59
+ * Get all patterns
60
+ */
61
+ getAllPatterns() {
62
+ return [...this.patterns];
63
+ }
64
+ /**
65
+ * Get pattern by ID
66
+ */
67
+ getPatternById(id) {
68
+ return this.patternsById.get(id);
69
+ }
70
+ /**
71
+ * Get patterns by category
72
+ */
73
+ getPatternsByCategory(category) {
74
+ return this.patternsByCategory.get(category) || [];
75
+ }
76
+ /**
77
+ * Get patterns by severity
78
+ */
79
+ getPatternsBySeverity(severity) {
80
+ return this.patternsBySeverity.get(severity) || [];
81
+ }
82
+ /**
83
+ * Get patterns by domain
84
+ */
85
+ getPatternsByDomain(domain) {
86
+ return this.patterns.filter(p => !p.domains || p.domains.length === 0 || p.domains.includes(domain));
87
+ }
88
+ /**
89
+ * Detect all patterns in text
90
+ */
91
+ detectPatterns(text) {
92
+ const matches = [];
93
+ for (const pattern of this.patterns) {
94
+ const patternMatches = this.findPatternMatches(text, pattern);
95
+ matches.push(...patternMatches);
96
+ }
97
+ return matches;
98
+ }
99
+ /**
100
+ * Detect patterns by category
101
+ */
102
+ detectPatternsByCategory(text, category) {
103
+ const categoryPatterns = this.getPatternsByCategory(category);
104
+ const matches = [];
105
+ for (const pattern of categoryPatterns) {
106
+ const patternMatches = this.findPatternMatches(text, pattern);
107
+ matches.push(...patternMatches);
108
+ }
109
+ return matches;
110
+ }
111
+ /**
112
+ * Detect only critical patterns
113
+ */
114
+ detectCriticalPatterns(text) {
115
+ const criticalPatterns = this.getPatternsBySeverity('critical');
116
+ const matches = [];
117
+ for (const pattern of criticalPatterns) {
118
+ const patternMatches = this.findPatternMatches(text, pattern);
119
+ matches.push(...patternMatches);
120
+ }
121
+ return matches;
122
+ }
123
+ /**
124
+ * Get pattern count
125
+ */
126
+ getPatternCount() {
127
+ return this.patterns.length;
128
+ }
129
+ /**
130
+ * Get pattern count by category
131
+ */
132
+ getPatternCountByCategory() {
133
+ const counts = new Map();
134
+ for (const [category, patterns] of this.patternsByCategory) {
135
+ counts.set(category, patterns.length);
136
+ }
137
+ return counts;
138
+ }
139
+ /**
140
+ * Get pattern count by severity
141
+ */
142
+ getPatternCountBySeverity() {
143
+ const counts = new Map();
144
+ for (const [severity, patterns] of this.patternsBySeverity) {
145
+ counts.set(severity, patterns.length);
146
+ }
147
+ return counts;
148
+ }
149
+ /**
150
+ * Add a new pattern
151
+ */
152
+ addPattern(pattern) {
153
+ // Check for duplicate ID
154
+ if (this.patternsById.has(pattern.id)) {
155
+ throw new Error(`Pattern with ID "${pattern.id}" already exists`);
156
+ }
157
+ this.patterns.push(pattern);
158
+ this.patternsById.set(pattern.id, pattern);
159
+ // Add to category index
160
+ if (!this.patternsByCategory.has(pattern.category)) {
161
+ this.patternsByCategory.set(pattern.category, []);
162
+ }
163
+ this.patternsByCategory.get(pattern.category).push(pattern);
164
+ // Add to severity index
165
+ if (!this.patternsBySeverity.has(pattern.severity)) {
166
+ this.patternsBySeverity.set(pattern.severity, []);
167
+ }
168
+ this.patternsBySeverity.get(pattern.severity).push(pattern);
169
+ }
170
+ /**
171
+ * Remove a pattern by ID
172
+ */
173
+ removePattern(id) {
174
+ const pattern = this.patternsById.get(id);
175
+ if (!pattern) {
176
+ return;
177
+ }
178
+ // Remove from main array
179
+ const index = this.patterns.findIndex(p => p.id === id);
180
+ if (index !== -1) {
181
+ this.patterns.splice(index, 1);
182
+ }
183
+ // Remove from indices
184
+ this.patternsById.delete(id);
185
+ const categoryPatterns = this.patternsByCategory.get(pattern.category);
186
+ if (categoryPatterns) {
187
+ const catIndex = categoryPatterns.findIndex(p => p.id === id);
188
+ if (catIndex !== -1) {
189
+ categoryPatterns.splice(catIndex, 1);
190
+ }
191
+ }
192
+ const severityPatterns = this.patternsBySeverity.get(pattern.severity);
193
+ if (severityPatterns) {
194
+ const sevIndex = severityPatterns.findIndex(p => p.id === id);
195
+ if (sevIndex !== -1) {
196
+ severityPatterns.splice(sevIndex, 1);
197
+ }
198
+ }
199
+ }
200
+ /**
201
+ * Update a pattern
202
+ */
203
+ updatePattern(id, updates) {
204
+ const pattern = this.patternsById.get(id);
205
+ if (!pattern) {
206
+ throw new Error(`Pattern with ID "${id}" not found`);
207
+ }
208
+ // If category or severity changes, need to update indices
209
+ if (updates.category && updates.category !== pattern.category) {
210
+ // Remove from old category
211
+ const oldCategoryPatterns = this.patternsByCategory.get(pattern.category);
212
+ if (oldCategoryPatterns) {
213
+ const index = oldCategoryPatterns.findIndex(p => p.id === id);
214
+ if (index !== -1) {
215
+ oldCategoryPatterns.splice(index, 1);
216
+ }
217
+ }
218
+ // Add to new category
219
+ if (!this.patternsByCategory.has(updates.category)) {
220
+ this.patternsByCategory.set(updates.category, []);
221
+ }
222
+ this.patternsByCategory.get(updates.category).push(pattern);
223
+ }
224
+ if (updates.severity && updates.severity !== pattern.severity) {
225
+ // Remove from old severity
226
+ const oldSeverityPatterns = this.patternsBySeverity.get(pattern.severity);
227
+ if (oldSeverityPatterns) {
228
+ const index = oldSeverityPatterns.findIndex(p => p.id === id);
229
+ if (index !== -1) {
230
+ oldSeverityPatterns.splice(index, 1);
231
+ }
232
+ }
233
+ // Add to new severity
234
+ if (!this.patternsBySeverity.has(updates.severity)) {
235
+ this.patternsBySeverity.set(updates.severity, []);
236
+ }
237
+ this.patternsBySeverity.get(updates.severity).push(pattern);
238
+ }
239
+ // Apply updates
240
+ Object.assign(pattern, updates);
241
+ }
242
+ /**
243
+ * Search patterns by query string
244
+ */
245
+ searchPatterns(query) {
246
+ const lowerQuery = query.toLowerCase();
247
+ return this.patterns.filter(pattern => {
248
+ return (pattern.id.toLowerCase().includes(lowerQuery) ||
249
+ pattern.category.toLowerCase().includes(lowerQuery) ||
250
+ (pattern.subcategory && pattern.subcategory.toLowerCase().includes(lowerQuery)) ||
251
+ (pattern.context && pattern.context.toLowerCase().includes(lowerQuery)) ||
252
+ pattern.examples.some(ex => ex.toLowerCase().includes(lowerQuery)) ||
253
+ (pattern.replacements && pattern.replacements.some(r => r.toLowerCase().includes(lowerQuery))));
254
+ });
255
+ }
256
+ /**
257
+ * Filter patterns by criteria
258
+ */
259
+ filterPatterns(filter) {
260
+ let filtered = [...this.patterns];
261
+ if (filter.categories && filter.categories.length > 0) {
262
+ filtered = filtered.filter(p => filter.categories.includes(p.category));
263
+ }
264
+ if (filter.severities && filter.severities.length > 0) {
265
+ filtered = filtered.filter(p => filter.severities.includes(p.severity));
266
+ }
267
+ if (filter.domains && filter.domains.length > 0) {
268
+ filtered = filtered.filter(p => !p.domains || p.domains.length === 0 ||
269
+ p.domains.some(d => filter.domains.includes(d)));
270
+ }
271
+ if (filter.minConfidence !== undefined) {
272
+ filtered = filtered.filter(p => p.confidence >= filter.minConfidence);
273
+ }
274
+ if (filter.maxConfidence !== undefined) {
275
+ filtered = filtered.filter(p => p.confidence <= filter.maxConfidence);
276
+ }
277
+ if (filter.frequencies && filter.frequencies.length > 0) {
278
+ filtered = filtered.filter(p => filter.frequencies.includes(p.frequency));
279
+ }
280
+ if (filter.subcategories && filter.subcategories.length > 0) {
281
+ filtered = filtered.filter(p => p.subcategory && filter.subcategories.includes(p.subcategory));
282
+ }
283
+ return filtered;
284
+ }
285
+ /**
286
+ * Export patterns in various formats
287
+ */
288
+ exportPatterns(format) {
289
+ switch (format) {
290
+ case 'json':
291
+ return JSON.stringify(this.patterns, null, 2);
292
+ case 'yaml':
293
+ return yaml.stringify(this.patterns);
294
+ case 'markdown':
295
+ return this.exportAsMarkdown();
296
+ default:
297
+ throw new Error(`Unsupported export format: ${format}`);
298
+ }
299
+ }
300
+ /**
301
+ * Import patterns from JSON or YAML
302
+ */
303
+ importPatterns(data, format) {
304
+ let patterns;
305
+ if (format === 'json') {
306
+ patterns = JSON.parse(data);
307
+ }
308
+ else if (format === 'yaml') {
309
+ patterns = yaml.parse(data);
310
+ }
311
+ else {
312
+ throw new Error(`Unsupported import format: ${format}`);
313
+ }
314
+ for (const pattern of patterns) {
315
+ // Convert string patterns to RegExp
316
+ if (typeof pattern.pattern === 'string') {
317
+ pattern.pattern = this.createRegExpFromPattern(pattern.pattern);
318
+ }
319
+ // Skip duplicates
320
+ if (!this.patternsById.has(pattern.id)) {
321
+ this.addPattern(pattern);
322
+ }
323
+ }
324
+ }
325
+ /**
326
+ * Analyze text for AI patterns
327
+ */
328
+ analyzeText(text) {
329
+ const matches = this.detectPatterns(text);
330
+ const wordCount = text.split(/\s+/).filter(w => w.length > 0).length;
331
+ const matchesByCategory = new Map();
332
+ const matchesBySeverity = new Map();
333
+ const uniquePatternIds = new Set();
334
+ let totalConfidence = 0;
335
+ for (const match of matches) {
336
+ // Count by category
337
+ const catCount = matchesByCategory.get(match.pattern.category) || 0;
338
+ matchesByCategory.set(match.pattern.category, catCount + 1);
339
+ // Count by severity
340
+ const sevCount = matchesBySeverity.get(match.severity) || 0;
341
+ matchesBySeverity.set(match.severity, sevCount + 1);
342
+ // Track unique patterns
343
+ uniquePatternIds.add(match.pattern.id);
344
+ // Sum confidence
345
+ totalConfidence += match.pattern.confidence;
346
+ }
347
+ const criticalMatches = matches.filter(m => m.severity === 'critical');
348
+ const highPriorityMatches = matches.filter(m => m.severity === 'critical' || m.severity === 'high');
349
+ return {
350
+ totalMatches: matches.length,
351
+ matchesByCategory,
352
+ matchesBySeverity,
353
+ uniquePatterns: uniquePatternIds.size,
354
+ averageConfidence: matches.length > 0 ? totalConfidence / matches.length : 0,
355
+ criticalMatches,
356
+ highPriorityMatches,
357
+ wordCount,
358
+ patternDensity: wordCount > 0 ? (matches.length / wordCount) * 100 : 0
359
+ };
360
+ }
361
+ /**
362
+ * Compare two texts for pattern changes
363
+ */
364
+ compareTexts(text1, text2) {
365
+ const matches1 = this.detectPatterns(text1);
366
+ const matches2 = this.detectPatterns(text2);
367
+ // Calculate improvement
368
+ const improvement = matches1.length > 0
369
+ ? ((matches1.length - matches2.length) / matches1.length) * 100
370
+ : 0;
371
+ // Find pattern differences
372
+ const patterns1 = new Set(matches1.map(m => m.pattern.id));
373
+ const patterns2 = new Set(matches2.map(m => m.pattern.id));
374
+ const addedPatterns = matches2.filter(m => !patterns1.has(m.pattern.id));
375
+ const removedPatterns = matches1.filter(m => !patterns2.has(m.pattern.id));
376
+ const persistentPatterns = matches2.filter(m => patterns1.has(m.pattern.id));
377
+ return {
378
+ text1Matches: matches1.length,
379
+ text2Matches: matches2.length,
380
+ improvement,
381
+ addedPatterns,
382
+ removedPatterns,
383
+ persistentPatterns
384
+ };
385
+ }
386
+ // Private helper methods
387
+ /**
388
+ * Find all matches of a pattern in text
389
+ */
390
+ findPatternMatches(text, pattern) {
391
+ const matches = [];
392
+ const regex = pattern.pattern;
393
+ // Reset regex state
394
+ regex.lastIndex = 0;
395
+ let match;
396
+ while ((match = regex.exec(text)) !== null) {
397
+ const start = match.index;
398
+ const end = start + match[0].length;
399
+ // Extract context (50 chars before and after)
400
+ const contextStart = Math.max(0, start - 50);
401
+ const contextEnd = Math.min(text.length, end + 50);
402
+ const context = text.substring(contextStart, contextEnd);
403
+ matches.push({
404
+ pattern,
405
+ match: match[0],
406
+ position: { start, end },
407
+ context,
408
+ severity: pattern.severity
409
+ });
410
+ // Prevent infinite loop on zero-width matches
411
+ if (match[0].length === 0) {
412
+ regex.lastIndex++;
413
+ }
414
+ }
415
+ return matches;
416
+ }
417
+ /**
418
+ * Create RegExp from pattern string
419
+ */
420
+ createRegExpFromPattern(patternStr) {
421
+ // Check if pattern starts with ^ (line start anchor)
422
+ const isLineStart = patternStr.startsWith('^');
423
+ // Handle special pattern syntax
424
+ if (patternStr.includes('\\b')) {
425
+ // Already has word boundaries
426
+ return new RegExp(patternStr, 'gi');
427
+ }
428
+ else if (isLineStart) {
429
+ // Line start patterns don't need word boundaries
430
+ return new RegExp(patternStr, 'gm');
431
+ }
432
+ else {
433
+ // Add word boundaries for phrase matching
434
+ const escaped = patternStr.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
435
+ // Check if pattern ends in punctuation - if so, don't add trailing word boundary
436
+ const endsWithPunctuation = /[,.:;!?]$/.test(patternStr);
437
+ const startBoundary = '\\b';
438
+ const endBoundary = endsWithPunctuation ? '' : '\\b';
439
+ return new RegExp(`${startBoundary}${escaped}${endBoundary}`, 'gi');
440
+ }
441
+ }
442
+ /**
443
+ * Export patterns as markdown documentation
444
+ */
445
+ exportAsMarkdown() {
446
+ const lines = [];
447
+ lines.push('# AI Writing Patterns Library\n');
448
+ lines.push(`Total Patterns: ${this.patterns.length}\n`);
449
+ // Group by category
450
+ const categories = Array.from(this.patternsByCategory.keys()).sort();
451
+ for (const category of categories) {
452
+ const categoryPatterns = this.patternsByCategory.get(category);
453
+ lines.push(`## ${category} (${categoryPatterns.length} patterns)\n`);
454
+ // Group by subcategory
455
+ const subcategories = new Map();
456
+ for (const pattern of categoryPatterns) {
457
+ const subcat = pattern.subcategory || 'General';
458
+ if (!subcategories.has(subcat)) {
459
+ subcategories.set(subcat, []);
460
+ }
461
+ subcategories.get(subcat).push(pattern);
462
+ }
463
+ for (const [subcat, patterns] of subcategories) {
464
+ lines.push(`### ${subcat}\n`);
465
+ for (const pattern of patterns) {
466
+ lines.push(`**${pattern.id}** (${pattern.severity}, confidence: ${pattern.confidence})`);
467
+ lines.push(`- Pattern: \`${pattern.pattern}\``);
468
+ lines.push(`- Context: ${pattern.context}`);
469
+ lines.push(`- Examples:`);
470
+ for (const example of pattern.examples.slice(0, 2)) {
471
+ lines.push(` - "${example}"`);
472
+ }
473
+ if (pattern.replacements && pattern.replacements.length > 0) {
474
+ lines.push(`- Replacements:`);
475
+ for (const replacement of pattern.replacements.slice(0, 2)) {
476
+ lines.push(` - ${replacement}`);
477
+ }
478
+ }
479
+ lines.push('');
480
+ }
481
+ }
482
+ }
483
+ return lines.join('\n');
484
+ }
485
+ }
486
+ //# sourceMappingURL=pattern-library.js.map