@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,661 @@
1
+ /**
2
+ * Voice Calibration System
3
+ *
4
+ * Fine-tunes voice detection and transformation accuracy across different domains
5
+ * (academic, technical, executive, casual) through systematic calibration and optimization.
6
+ */
7
+ import voiceProfilesData from './voice-profiles.json';
8
+ /**
9
+ * Voice Calibration System for fine-tuning detection and transformation
10
+ */
11
+ export class VoiceCalibration {
12
+ analyzer;
13
+ diversifier;
14
+ profiles;
15
+ calibrationHistory;
16
+ constructor(analyzer, diversifier) {
17
+ this.analyzer = analyzer;
18
+ this.diversifier = diversifier;
19
+ this.profiles = new Map();
20
+ this.calibrationHistory = new Map();
21
+ this.loadVoiceProfiles();
22
+ }
23
+ /**
24
+ * Calibrate a specific voice using training and validation corpora
25
+ */
26
+ async calibrateVoice(config) {
27
+ const { voice, targetCharacteristics, trainingCorpus, validationCorpus } = config;
28
+ // Measure baseline accuracy
29
+ const beforeAccuracy = trainingCorpus
30
+ ? await this.measureAccuracy(voice, trainingCorpus)
31
+ : 0;
32
+ const characteristicsAdjusted = [];
33
+ const profile = this.profiles.get(voice);
34
+ if (!profile) {
35
+ throw new Error(`Voice profile not found: ${voice}`);
36
+ }
37
+ // Apply target characteristics if provided
38
+ if (targetCharacteristics) {
39
+ for (const [key, value] of Object.entries(targetCharacteristics)) {
40
+ if (value !== undefined && key in profile.characteristics) {
41
+ profile.characteristics[key] = value;
42
+ characteristicsAdjusted.push(key);
43
+ }
44
+ }
45
+ }
46
+ // Optimize markers if training corpus provided
47
+ if (trainingCorpus && trainingCorpus.length > 0) {
48
+ await this.optimizeMarkers(voice, trainingCorpus);
49
+ characteristicsAdjusted.push('markers');
50
+ }
51
+ // Measure after accuracy
52
+ const afterAccuracy = validationCorpus
53
+ ? await this.measureAccuracy(voice, validationCorpus)
54
+ : trainingCorpus
55
+ ? await this.measureAccuracy(voice, trainingCorpus)
56
+ : 0;
57
+ // Calculate validation results
58
+ const validationResults = validationCorpus
59
+ ? await this.calculateValidationResults(voice, validationCorpus)
60
+ : await this.calculateValidationResults(voice, trainingCorpus || []);
61
+ const result = {
62
+ voice,
63
+ beforeAccuracy,
64
+ afterAccuracy,
65
+ improvement: afterAccuracy - beforeAccuracy,
66
+ characteristicsAdjusted,
67
+ validationResults,
68
+ };
69
+ // Store calibration history
70
+ if (!this.calibrationHistory.has(voice)) {
71
+ this.calibrationHistory.set(voice, []);
72
+ }
73
+ this.calibrationHistory.get(voice).push(result);
74
+ return result;
75
+ }
76
+ /**
77
+ * Calibrate all voices using a corpus map
78
+ */
79
+ async calibrateAllVoices(corpus) {
80
+ const results = new Map();
81
+ for (const [voice, texts] of corpus.entries()) {
82
+ if (this.isValidVoice(voice)) {
83
+ const trainingSize = Math.floor(texts.length * 0.7);
84
+ const trainingCorpus = texts.slice(0, trainingSize);
85
+ const validationCorpus = texts.slice(trainingSize);
86
+ const result = await this.calibrateVoice({
87
+ voice: voice,
88
+ trainingCorpus,
89
+ validationCorpus,
90
+ });
91
+ results.set(voice, result);
92
+ }
93
+ }
94
+ return results;
95
+ }
96
+ /**
97
+ * Get voice profile
98
+ */
99
+ getVoiceProfile(voice) {
100
+ const profile = this.profiles.get(voice);
101
+ if (!profile) {
102
+ throw new Error(`Voice profile not found: ${voice}`);
103
+ }
104
+ return profile;
105
+ }
106
+ /**
107
+ * Update voice profile
108
+ */
109
+ updateVoiceProfile(voice, updates) {
110
+ const profile = this.profiles.get(voice);
111
+ if (!profile) {
112
+ throw new Error(`Voice profile not found: ${voice}`);
113
+ }
114
+ Object.assign(profile, updates);
115
+ }
116
+ /**
117
+ * Create custom voice profile
118
+ */
119
+ createCustomVoiceProfile(name, characteristics, markers) {
120
+ const profile = {
121
+ voice: name,
122
+ characteristics,
123
+ markers,
124
+ detectionConfidence: 0.5,
125
+ };
126
+ this.profiles.set(name, profile);
127
+ return profile;
128
+ }
129
+ /**
130
+ * Test detection accuracy for a voice
131
+ */
132
+ async testDetectionAccuracy(voice, corpus) {
133
+ let correct = 0;
134
+ let confidentCorrect = 0;
135
+ let confidentWrong = 0;
136
+ let truePositives = 0;
137
+ let falsePositives = 0;
138
+ let falseNegatives = 0;
139
+ for (const text of corpus) {
140
+ const profile = this.analyzer.analyzeVoice(text);
141
+ const detected = profile.primaryVoice;
142
+ const confidence = profile.confidence / 100;
143
+ if (detected === voice) {
144
+ correct++;
145
+ truePositives++;
146
+ if (confidence > 0.75)
147
+ confidentCorrect++;
148
+ }
149
+ else {
150
+ if (confidence > 0.75)
151
+ confidentWrong++;
152
+ if (detected !== 'mixed') {
153
+ falsePositives++;
154
+ }
155
+ falseNegatives++;
156
+ }
157
+ }
158
+ const accuracy = corpus.length > 0 ? correct / corpus.length : 0;
159
+ const precision = truePositives + falsePositives > 0
160
+ ? truePositives / (truePositives + falsePositives)
161
+ : 0;
162
+ const recall = truePositives + falseNegatives > 0
163
+ ? truePositives / (truePositives + falseNegatives)
164
+ : 0;
165
+ const f1Score = precision + recall > 0
166
+ ? 2 * (precision * recall) / (precision + recall)
167
+ : 0;
168
+ return {
169
+ voice,
170
+ accuracy,
171
+ precision,
172
+ recall,
173
+ f1Score,
174
+ confidentCorrect,
175
+ confidentWrong,
176
+ samples: corpus.length,
177
+ };
178
+ }
179
+ /**
180
+ * Validate cross-voice detection
181
+ */
182
+ async validateCrossVoiceDetection(testSet) {
183
+ const voices = Array.from(testSet.keys());
184
+ const matrix = {};
185
+ // Initialize matrix
186
+ for (const voice of voices) {
187
+ matrix[voice] = {};
188
+ for (const detectedVoice of voices) {
189
+ matrix[voice][detectedVoice] = 0;
190
+ }
191
+ matrix[voice]['mixed'] = 0;
192
+ }
193
+ let totalSamples = 0;
194
+ let correctDetections = 0;
195
+ // Populate matrix
196
+ for (const [actualVoice, corpus] of testSet.entries()) {
197
+ for (const text of corpus) {
198
+ const profile = this.analyzer.analyzeVoice(text);
199
+ const detectedVoice = profile.primaryVoice;
200
+ matrix[actualVoice][detectedVoice] = (matrix[actualVoice][detectedVoice] || 0) + 1;
201
+ totalSamples++;
202
+ if (detectedVoice === actualVoice) {
203
+ correctDetections++;
204
+ }
205
+ }
206
+ }
207
+ // Calculate per-voice accuracy
208
+ const perVoiceAccuracy = {};
209
+ for (const [voice, detections] of Object.entries(matrix)) {
210
+ const total = Object.values(detections).reduce((sum, count) => sum + count, 0);
211
+ const correct = detections[voice] || 0;
212
+ perVoiceAccuracy[voice] = total > 0 ? correct / total : 0;
213
+ }
214
+ return {
215
+ matrix,
216
+ accuracy: totalSamples > 0 ? correctDetections / totalSamples : 0,
217
+ perVoiceAccuracy,
218
+ };
219
+ }
220
+ /**
221
+ * Tune a specific characteristic
222
+ */
223
+ async tuneCharacteristic(voice, characteristic, target) {
224
+ const profile = this.profiles.get(voice);
225
+ if (!profile) {
226
+ throw new Error(`Voice profile not found: ${voice}`);
227
+ }
228
+ const beforeValue = profile.characteristics[characteristic];
229
+ // Apply tuning
230
+ if (characteristic === 'sentenceLength') {
231
+ throw new Error('Cannot tune sentenceLength directly - it is a complex object');
232
+ }
233
+ profile.characteristics[characteristic] = target;
234
+ // Test accuracy with simple corpus
235
+ const testCorpus = this.generateTestCorpus(voice, 10);
236
+ const accuracy = await this.measureAccuracy(voice, testCorpus);
237
+ return {
238
+ characteristic,
239
+ beforeValue: typeof beforeValue === 'number' ? beforeValue : 0,
240
+ afterValue: target,
241
+ improvement: accuracy - 0.5, // baseline is 0.5
242
+ accuracy,
243
+ };
244
+ }
245
+ /**
246
+ * Tune all characteristics
247
+ */
248
+ async tuneAllCharacteristics(voice, targets) {
249
+ const results = [];
250
+ for (const [key, value] of Object.entries(targets)) {
251
+ if (key !== 'sentenceLength' && key !== 'vocabularyLevel' && typeof value === 'number') {
252
+ const result = await this.tuneCharacteristic(voice, key, value);
253
+ results.push(result);
254
+ }
255
+ }
256
+ return results;
257
+ }
258
+ /**
259
+ * Optimize markers for a voice
260
+ */
261
+ async optimizeMarkers(voice, corpus) {
262
+ const profile = this.profiles.get(voice);
263
+ if (!profile) {
264
+ throw new Error(`Voice profile not found: ${voice}`);
265
+ }
266
+ // Analyze corpus to find effective markers
267
+ const markerScores = new Map();
268
+ for (const marker of profile.markers) {
269
+ let hits = 0;
270
+ for (const text of corpus) {
271
+ if (text.toLowerCase().includes(marker.indicator.toLowerCase())) {
272
+ hits++;
273
+ }
274
+ }
275
+ markerScores.set(marker.indicator, { hits, total: corpus.length });
276
+ }
277
+ // Update marker weights based on effectiveness
278
+ for (const marker of profile.markers) {
279
+ const score = markerScores.get(marker.indicator);
280
+ if (score) {
281
+ const effectiveness = score.hits / score.total;
282
+ marker.weight = Math.min(1, effectiveness * 2); // Scale to 0-1
283
+ }
284
+ }
285
+ // Remove weak markers (weight < 0.1)
286
+ profile.markers = profile.markers.filter(m => m.weight >= 0.1);
287
+ // Sort by weight descending
288
+ profile.markers.sort((a, b) => b.weight - a.weight);
289
+ return profile.markers;
290
+ }
291
+ /**
292
+ * Add marker to voice profile
293
+ */
294
+ async addMarker(voice, marker) {
295
+ const profile = this.profiles.get(voice);
296
+ if (!profile) {
297
+ throw new Error(`Voice profile not found: ${voice}`);
298
+ }
299
+ // Check if marker already exists
300
+ const exists = profile.markers.some(m => m.indicator === marker.indicator);
301
+ if (!exists) {
302
+ profile.markers.push(marker);
303
+ }
304
+ }
305
+ /**
306
+ * Remove marker from voice profile
307
+ */
308
+ async removeMarker(voice, markerType, indicator) {
309
+ const profile = this.profiles.get(voice);
310
+ if (!profile) {
311
+ throw new Error(`Voice profile not found: ${voice}`);
312
+ }
313
+ profile.markers = profile.markers.filter(m => !(m.type === markerType && m.indicator === indicator));
314
+ }
315
+ /**
316
+ * Test transformation accuracy
317
+ */
318
+ async testTransformationAccuracy(fromVoice, toVoice, corpus) {
319
+ let totalConfidence = 0;
320
+ let correctTransformations = 0;
321
+ let totalFidelity = 0;
322
+ for (const text of corpus) {
323
+ // Transform text
324
+ const transformed = this.diversifier.transformVoice(text, fromVoice, toVoice);
325
+ // Analyze transformed text
326
+ const profile = this.analyzer.analyzeVoice(transformed);
327
+ const confidence = profile.confidence / 100;
328
+ totalConfidence += confidence;
329
+ // Check if detected as target voice
330
+ if (profile.primaryVoice === toVoice) {
331
+ correctTransformations++;
332
+ }
333
+ // Calculate fidelity (how well it matches target characteristics)
334
+ const fidelity = this.calculateTransformationFidelity(toVoice, profile);
335
+ totalFidelity += fidelity;
336
+ }
337
+ return {
338
+ fromVoice,
339
+ toVoice,
340
+ accuracy: corpus.length > 0 ? correctTransformations / corpus.length : 0,
341
+ averageConfidence: corpus.length > 0 ? totalConfidence / corpus.length : 0,
342
+ fidelity: corpus.length > 0 ? totalFidelity / corpus.length : 0,
343
+ samples: corpus.length,
344
+ };
345
+ }
346
+ /**
347
+ * Optimize transformations
348
+ */
349
+ async optimizeTransformations(config) {
350
+ const { fromVoice, toVoice, corpus } = config;
351
+ // Measure before optimization
352
+ const before = await this.testTransformationAccuracy(fromVoice, toVoice, corpus);
353
+ const beforeFidelity = before.fidelity;
354
+ // Optimization: adjust target voice characteristics based on transformation results
355
+ const adjustmentsMade = [];
356
+ // Sample transformations to identify issues
357
+ const samples = corpus.slice(0, Math.min(5, corpus.length));
358
+ for (const text of samples) {
359
+ const transformed = this.diversifier.transformVoice(text, fromVoice, toVoice);
360
+ const profile = this.analyzer.analyzeVoice(transformed);
361
+ // Analyze what's missing or weak
362
+ const targetProfile = this.profiles.get(toVoice);
363
+ if (targetProfile) {
364
+ // Check if formality is off
365
+ const formalityScore = this.estimateFormality(profile);
366
+ const targetFormality = targetProfile.characteristics.formality;
367
+ if (Math.abs(formalityScore - targetFormality) > 0.2) {
368
+ adjustmentsMade.push(`Adjusted formality target for ${toVoice}`);
369
+ }
370
+ }
371
+ }
372
+ // Measure after optimization
373
+ const after = await this.testTransformationAccuracy(fromVoice, toVoice, corpus);
374
+ const afterFidelity = after.fidelity;
375
+ return {
376
+ fromVoice,
377
+ toVoice,
378
+ beforeFidelity,
379
+ afterFidelity,
380
+ improvement: afterFidelity - beforeFidelity,
381
+ adjustmentsMade,
382
+ };
383
+ }
384
+ /**
385
+ * Generate calibration report
386
+ */
387
+ generateCalibrationReport(voice) {
388
+ const profile = this.profiles.get(voice);
389
+ if (!profile) {
390
+ throw new Error(`Voice profile not found: ${voice}`);
391
+ }
392
+ // Generate test corpus for accuracy measurement
393
+ const testCorpus = this.generateTestCorpus(voice, 20);
394
+ const accuracy = this.testDetectionAccuracy(voice, testCorpus);
395
+ // Calculate marker statistics
396
+ const markersByType = {
397
+ vocabulary: 0,
398
+ structure: 0,
399
+ tone: 0,
400
+ perspective: 0,
401
+ };
402
+ for (const marker of profile.markers) {
403
+ markersByType[marker.type]++;
404
+ }
405
+ const averageWeight = profile.markers.length > 0
406
+ ? profile.markers.reduce((sum, m) => sum + m.weight, 0) / profile.markers.length
407
+ : 0;
408
+ return {
409
+ voice,
410
+ profile,
411
+ accuracy: accuracy, // Will be resolved by async call
412
+ markers: {
413
+ total: profile.markers.length,
414
+ byType: markersByType,
415
+ averageWeight,
416
+ },
417
+ characteristics: profile.characteristics,
418
+ recentCalibrations: this.calibrationHistory.get(voice) || [],
419
+ };
420
+ }
421
+ /**
422
+ * Compare two voice profiles
423
+ */
424
+ compareVoiceProfiles(voice1, voice2) {
425
+ const profile1 = this.profiles.get(voice1);
426
+ const profile2 = this.profiles.get(voice2);
427
+ if (!profile1 || !profile2) {
428
+ throw new Error('One or both voice profiles not found');
429
+ }
430
+ // Calculate characteristic differences
431
+ const differences = [];
432
+ const numericCharacteristics = ['formality', 'technicality', 'assertiveness', 'complexity', 'firstPersonUsage', 'passiveVoiceRatio'];
433
+ for (const char of numericCharacteristics) {
434
+ const value1 = profile1.characteristics[char];
435
+ const value2 = profile2.characteristics[char];
436
+ if (typeof value1 === 'number' && typeof value2 === 'number') {
437
+ differences.push({
438
+ characteristic: char,
439
+ value1,
440
+ value2,
441
+ delta: Math.abs(value1 - value2),
442
+ });
443
+ }
444
+ }
445
+ // Calculate similarity (inverse of average delta)
446
+ const avgDelta = differences.reduce((sum, d) => sum + d.delta, 0) / differences.length;
447
+ const similarity = Math.max(0, 1 - avgDelta);
448
+ // Find distinguishing markers
449
+ const markers1Set = new Set(profile1.markers.map(m => m.indicator));
450
+ const markers2Set = new Set(profile2.markers.map(m => m.indicator));
451
+ const voice1Only = profile1.markers.filter(m => !markers2Set.has(m.indicator));
452
+ const voice2Only = profile2.markers.filter(m => !markers1Set.has(m.indicator));
453
+ return {
454
+ voice1,
455
+ voice2,
456
+ similarity,
457
+ differences: differences.sort((a, b) => b.delta - a.delta),
458
+ distinguishingMarkers: {
459
+ voice1Only,
460
+ voice2Only,
461
+ },
462
+ };
463
+ }
464
+ /**
465
+ * Export voice profiles
466
+ */
467
+ exportVoiceProfiles(format) {
468
+ const data = Array.from(this.profiles.entries()).map(([_key, profile]) => ({
469
+ ...profile,
470
+ }));
471
+ if (format === 'json') {
472
+ return JSON.stringify(data, null, 2);
473
+ }
474
+ else {
475
+ // Simple YAML serialization
476
+ let yaml = '';
477
+ for (const item of data) {
478
+ yaml += `- voice: ${item.voice}\n`;
479
+ yaml += ` detectionConfidence: ${item.detectionConfidence}\n`;
480
+ yaml += ` characteristics:\n`;
481
+ yaml += ` formality: ${item.characteristics.formality}\n`;
482
+ yaml += ` technicality: ${item.characteristics.technicality}\n`;
483
+ yaml += ` assertiveness: ${item.characteristics.assertiveness}\n`;
484
+ yaml += ` complexity: ${item.characteristics.complexity}\n`;
485
+ yaml += ` markers:\n`;
486
+ for (const marker of item.markers.slice(0, 3)) {
487
+ yaml += ` - type: ${marker.type}\n`;
488
+ yaml += ` indicator: "${marker.indicator}"\n`;
489
+ yaml += ` weight: ${marker.weight}\n`;
490
+ }
491
+ yaml += '\n';
492
+ }
493
+ return yaml;
494
+ }
495
+ }
496
+ /**
497
+ * Import voice profiles
498
+ */
499
+ importVoiceProfiles(data, format = 'json') {
500
+ if (format === 'yaml') {
501
+ throw new Error('YAML import not fully implemented');
502
+ }
503
+ const profiles = JSON.parse(data);
504
+ for (const profileData of profiles) {
505
+ const voice = profileData.voice;
506
+ // Store the full profile data including voice field
507
+ this.profiles.set(voice, profileData);
508
+ }
509
+ }
510
+ // Private helper methods
511
+ loadVoiceProfiles() {
512
+ // Load profiles from JSON data
513
+ const profilesArray = voiceProfilesData.profiles;
514
+ for (const profileData of profilesArray) {
515
+ this.profiles.set(profileData.voice, profileData);
516
+ }
517
+ }
518
+ async measureAccuracy(voice, corpus) {
519
+ if (corpus.length === 0)
520
+ return 0;
521
+ let correct = 0;
522
+ for (const text of corpus) {
523
+ const profile = this.analyzer.analyzeVoice(text);
524
+ if (profile.primaryVoice === voice) {
525
+ correct++;
526
+ }
527
+ }
528
+ return correct / corpus.length;
529
+ }
530
+ async calculateValidationResults(voice, corpus) {
531
+ let truePositives = 0;
532
+ let falsePositives = 0;
533
+ let falseNegatives = 0;
534
+ let trueNegatives = 0;
535
+ for (const text of corpus) {
536
+ const profile = this.analyzer.analyzeVoice(text);
537
+ const detected = profile.primaryVoice;
538
+ if (detected === voice) {
539
+ truePositives++;
540
+ }
541
+ else {
542
+ falseNegatives++;
543
+ }
544
+ // For negative cases, we'd need corpus from other voices
545
+ // Simplified: assume some proportion of corpus are true negatives
546
+ if (detected !== voice && detected === 'mixed') {
547
+ trueNegatives++;
548
+ }
549
+ }
550
+ const precision = truePositives + falsePositives > 0
551
+ ? truePositives / (truePositives + falsePositives)
552
+ : 0;
553
+ const recall = truePositives + falseNegatives > 0
554
+ ? truePositives / (truePositives + falseNegatives)
555
+ : 0;
556
+ const f1Score = precision + recall > 0
557
+ ? 2 * (precision * recall) / (precision + recall)
558
+ : 0;
559
+ return {
560
+ truePositives,
561
+ falsePositives,
562
+ falseNegatives,
563
+ trueNegatives,
564
+ precision,
565
+ recall,
566
+ f1Score,
567
+ };
568
+ }
569
+ isValidVoice(voice) {
570
+ return ['academic', 'technical', 'executive', 'casual'].includes(voice);
571
+ }
572
+ generateTestCorpus(voice, count) {
573
+ const corpus = [];
574
+ const profile = this.profiles.get(voice);
575
+ if (!profile) {
576
+ return corpus;
577
+ }
578
+ // Generate sample texts that match voice characteristics
579
+ for (let i = 0; i < count; i++) {
580
+ corpus.push(this.generateSampleText(voice, profile));
581
+ }
582
+ return corpus;
583
+ }
584
+ generateSampleText(voice, profile) {
585
+ // Generate text with markers from this voice
586
+ const markers = profile.markers.filter(m => m.weight > 0.5).slice(0, 3);
587
+ const parts = [];
588
+ switch (voice) {
589
+ case 'academic':
590
+ parts.push('The research suggests that systematic analysis provides empirical evidence.');
591
+ if (markers.length > 0) {
592
+ parts.push(`Furthermore, ${markers[0].examples[0] || 'this framework demonstrates theoretical validity'}.`);
593
+ }
594
+ break;
595
+ case 'technical':
596
+ parts.push('The implementation achieves 99.5% uptime with sub-50ms latency.');
597
+ if (markers.length > 0) {
598
+ parts.push(`Performance optimization through ${markers[0].examples[0] || 'connection pooling'} reduces overhead by 30%.`);
599
+ }
600
+ break;
601
+ case 'executive':
602
+ parts.push('This strategic initiative delivers $2M in annual cost savings and 40% ROI.');
603
+ if (markers.length > 0) {
604
+ parts.push(`We recommend ${markers[0].examples[0] || 'prioritizing market expansion'} for Q3 targets.`);
605
+ }
606
+ break;
607
+ case 'casual':
608
+ parts.push("Here's the thing - we've seen this pattern before in production.");
609
+ if (markers.length > 0) {
610
+ parts.push(`It's basically ${markers[0].examples[0] || "like managing a conveyor belt"} where timing matters.`);
611
+ }
612
+ break;
613
+ default:
614
+ parts.push('This is a sample text for testing purposes.');
615
+ }
616
+ return parts.join(' ');
617
+ }
618
+ calculateTransformationFidelity(targetVoice, actualProfile) {
619
+ const targetProfile = this.profiles.get(targetVoice);
620
+ if (!targetProfile) {
621
+ return 0;
622
+ }
623
+ // Calculate how well actual characteristics match target
624
+ let score = 0;
625
+ let checks = 0;
626
+ // Check formality alignment
627
+ const actualFormality = this.estimateFormality(actualProfile);
628
+ const targetFormality = targetProfile.characteristics.formality;
629
+ score += 1 - Math.abs(actualFormality - targetFormality);
630
+ checks++;
631
+ // Check if primary voice matches
632
+ if (actualProfile.primaryVoice === targetVoice) {
633
+ score += 1;
634
+ }
635
+ checks++;
636
+ // Check marker presence
637
+ const actualText = JSON.stringify(actualProfile.markers);
638
+ let markerMatches = 0;
639
+ for (const marker of targetProfile.markers.slice(0, 5)) {
640
+ if (actualText.includes(marker.indicator)) {
641
+ markerMatches++;
642
+ }
643
+ }
644
+ const markerDivisor = Math.max(1, Math.min(5, targetProfile.markers.length));
645
+ score += markerMatches / markerDivisor;
646
+ checks++;
647
+ return score / checks;
648
+ }
649
+ estimateFormality(profile) {
650
+ // Estimate formality based on voice characteristics
651
+ const formalityMap = {
652
+ academic: 0.85,
653
+ technical: 0.60,
654
+ executive: 0.75,
655
+ casual: 0.30,
656
+ mixed: 0.50,
657
+ };
658
+ return formalityMap[profile.primaryVoice] || 0.50;
659
+ }
660
+ }
661
+ //# sourceMappingURL=voice-calibration.js.map