@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,475 @@
1
+ /**
2
+ * Cross-Framework Operations
3
+ *
4
+ * Enables cross-framework linking and multi-project orchestration for
5
+ * polyglot process management (SDLC + Marketing + Agile coexistence).
6
+ *
7
+ * Features:
8
+ * - Link work items across frameworks
9
+ * - Bidirectional metadata updates
10
+ * - Work graph visualization (Mermaid)
11
+ * - Orphaned link detection
12
+ * - Archive and restore work items
13
+ * - List all work across frameworks
14
+ *
15
+ * @module src/plugin/cross-framework-ops
16
+ */
17
+ import * as fs from 'fs/promises';
18
+ import * as path from 'path';
19
+ /**
20
+ * Get inverse relationship type
21
+ */
22
+ export function getInverseRelationship(relationship) {
23
+ const inverses = {
24
+ 'promotes': 'promoted-by',
25
+ 'promoted-by': 'promotes',
26
+ 'implements': 'implemented-by',
27
+ 'implemented-by': 'implements',
28
+ 'blocks': 'blocked-by',
29
+ 'blocked-by': 'blocks',
30
+ 'depends-on': 'required-by',
31
+ 'required-by': 'depends-on',
32
+ 'relates-to': 'relates-to'
33
+ };
34
+ return inverses[relationship];
35
+ }
36
+ /**
37
+ * CrossFrameworkOps - Manage cross-framework work linking
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const ops = new CrossFrameworkOps('~/.local/share/ai-writing-guide');
42
+ *
43
+ * // Link SDLC project to marketing campaign
44
+ * await ops.linkWork('sdlc-complete', 'plugin-system', 'marketing-flow', 'plugin-launch', 'promotes');
45
+ *
46
+ * // List all links
47
+ * const links = await ops.listLinks('sdlc-complete', 'plugin-system');
48
+ *
49
+ * // Visualize work graph
50
+ * const mermaid = await ops.visualizeWorkGraph();
51
+ * ```
52
+ */
53
+ export class CrossFrameworkOps {
54
+ aiwgRoot;
55
+ registryPath;
56
+ constructor(aiwgRoot) {
57
+ this.aiwgRoot = aiwgRoot;
58
+ this.registryPath = path.join(aiwgRoot, 'registry.json');
59
+ }
60
+ /**
61
+ * Link two work items across frameworks
62
+ *
63
+ * @param sourceFramework - Source framework ID
64
+ * @param sourceId - Source work item ID
65
+ * @param targetFramework - Target framework ID
66
+ * @param targetId - Target work item ID
67
+ * @param relationship - Relationship type
68
+ * @returns Link result
69
+ */
70
+ async linkWork(sourceFramework, sourceId, targetFramework, targetId, relationship) {
71
+ const result = {
72
+ success: false,
73
+ source: { framework: sourceFramework, id: sourceId },
74
+ target: { framework: targetFramework, id: targetId },
75
+ relationship
76
+ };
77
+ try {
78
+ // Validate both frameworks exist
79
+ const sourceExists = await this.frameworkExists(sourceFramework);
80
+ const targetExists = await this.frameworkExists(targetFramework);
81
+ if (!sourceExists) {
82
+ result.error = `Source framework '${sourceFramework}' is not installed`;
83
+ return result;
84
+ }
85
+ if (!targetExists) {
86
+ result.error = `Target framework '${targetFramework}' is not installed`;
87
+ return result;
88
+ }
89
+ // Validate both work items exist
90
+ const sourceMetadata = await this.getWorkMetadata(sourceFramework, sourceId);
91
+ const targetMetadata = await this.getWorkMetadata(targetFramework, targetId);
92
+ if (!sourceMetadata) {
93
+ result.error = `Source work item '${sourceId}' not found in framework '${sourceFramework}'`;
94
+ return result;
95
+ }
96
+ if (!targetMetadata) {
97
+ result.error = `Target work item '${targetId}' not found in framework '${targetFramework}'`;
98
+ return result;
99
+ }
100
+ // Check if link already exists
101
+ const existingLink = sourceMetadata.linkedWork.find(l => l.framework === targetFramework && l.id === targetId);
102
+ if (existingLink) {
103
+ result.error = `Link already exists between ${sourceFramework}/${sourceId} and ${targetFramework}/${targetId}`;
104
+ return result;
105
+ }
106
+ // Add link to source
107
+ sourceMetadata.linkedWork.push({
108
+ framework: targetFramework,
109
+ id: targetId,
110
+ type: targetMetadata.type,
111
+ relationship,
112
+ linkedDate: new Date().toISOString()
113
+ });
114
+ sourceMetadata.updatedAt = new Date().toISOString();
115
+ // Add inverse link to target
116
+ const inverseRelationship = getInverseRelationship(relationship);
117
+ targetMetadata.linkedWork.push({
118
+ framework: sourceFramework,
119
+ id: sourceId,
120
+ type: sourceMetadata.type,
121
+ relationship: inverseRelationship,
122
+ linkedDate: new Date().toISOString()
123
+ });
124
+ targetMetadata.updatedAt = new Date().toISOString();
125
+ // Save both metadata files
126
+ await this.saveWorkMetadata(sourceFramework, sourceId, sourceMetadata);
127
+ await this.saveWorkMetadata(targetFramework, targetId, targetMetadata);
128
+ result.success = true;
129
+ }
130
+ catch (error) {
131
+ result.error = `Failed to link work items: ${error.message}`;
132
+ }
133
+ return result;
134
+ }
135
+ /**
136
+ * Remove link between two work items
137
+ *
138
+ * @param sourceFramework - Source framework ID
139
+ * @param sourceId - Source work item ID
140
+ * @param targetFramework - Target framework ID
141
+ * @param targetId - Target work item ID
142
+ * @returns Link result
143
+ */
144
+ async unlinkWork(sourceFramework, sourceId, targetFramework, targetId) {
145
+ const result = {
146
+ success: false,
147
+ source: { framework: sourceFramework, id: sourceId },
148
+ target: { framework: targetFramework, id: targetId },
149
+ relationship: 'relates-to'
150
+ };
151
+ try {
152
+ // Get metadata for both work items
153
+ const sourceMetadata = await this.getWorkMetadata(sourceFramework, sourceId);
154
+ const targetMetadata = await this.getWorkMetadata(targetFramework, targetId);
155
+ if (!sourceMetadata) {
156
+ result.error = `Source work item '${sourceId}' not found`;
157
+ return result;
158
+ }
159
+ // Remove link from source
160
+ const sourceIndex = sourceMetadata.linkedWork.findIndex(l => l.framework === targetFramework && l.id === targetId);
161
+ if (sourceIndex >= 0) {
162
+ result.relationship = sourceMetadata.linkedWork[sourceIndex].relationship;
163
+ sourceMetadata.linkedWork.splice(sourceIndex, 1);
164
+ sourceMetadata.updatedAt = new Date().toISOString();
165
+ await this.saveWorkMetadata(sourceFramework, sourceId, sourceMetadata);
166
+ }
167
+ // Remove inverse link from target (if target exists)
168
+ if (targetMetadata) {
169
+ const targetIndex = targetMetadata.linkedWork.findIndex(l => l.framework === sourceFramework && l.id === sourceId);
170
+ if (targetIndex >= 0) {
171
+ targetMetadata.linkedWork.splice(targetIndex, 1);
172
+ targetMetadata.updatedAt = new Date().toISOString();
173
+ await this.saveWorkMetadata(targetFramework, targetId, targetMetadata);
174
+ }
175
+ }
176
+ result.success = true;
177
+ }
178
+ catch (error) {
179
+ result.error = `Failed to unlink work items: ${error.message}`;
180
+ }
181
+ return result;
182
+ }
183
+ /**
184
+ * List all links for a work item
185
+ *
186
+ * @param frameworkId - Framework ID
187
+ * @param workId - Work item ID
188
+ * @returns Array of links
189
+ */
190
+ async listLinks(frameworkId, workId) {
191
+ const metadata = await this.getWorkMetadata(frameworkId, workId);
192
+ return metadata?.linkedWork || [];
193
+ }
194
+ /**
195
+ * List all work items across all frameworks
196
+ *
197
+ * @param frameworkId - Optional framework filter
198
+ * @returns Array of work summaries
199
+ */
200
+ async listAllWork(frameworkId) {
201
+ const summaries = [];
202
+ try {
203
+ const registry = await this.loadRegistry();
204
+ const frameworks = frameworkId
205
+ ? registry.plugins.filter(p => p.id === frameworkId && p.type === 'framework')
206
+ : registry.plugins.filter(p => p.type === 'framework');
207
+ for (const framework of frameworks) {
208
+ const projects = await this.getFrameworkProjects(framework.id, framework.path);
209
+ for (const project of projects) {
210
+ const metadata = await this.getWorkMetadata(framework.id, project);
211
+ if (metadata) {
212
+ summaries.push({
213
+ framework: framework.id,
214
+ id: project,
215
+ type: metadata.type,
216
+ status: metadata.status,
217
+ phase: metadata.phase,
218
+ linkCount: metadata.linkedWork.length
219
+ });
220
+ }
221
+ }
222
+ }
223
+ }
224
+ catch {
225
+ // Registry doesn't exist
226
+ }
227
+ return summaries;
228
+ }
229
+ /**
230
+ * Visualize work graph in Mermaid format
231
+ *
232
+ * @param frameworkId - Optional framework filter
233
+ * @returns Mermaid diagram string
234
+ */
235
+ async visualizeWorkGraph(frameworkId) {
236
+ const lines = ['graph TD'];
237
+ const allWork = await this.listAllWork(frameworkId);
238
+ const processed = new Set();
239
+ for (const work of allWork) {
240
+ const nodeId = `${work.framework}_${work.id}`.replace(/-/g, '_');
241
+ const label = `${work.framework}: ${work.id}<br/>${work.phase || work.status}`;
242
+ // Add node
243
+ if (!processed.has(nodeId)) {
244
+ lines.push(` ${nodeId}["${label}"]`);
245
+ processed.add(nodeId);
246
+ }
247
+ // Add links
248
+ const links = await this.listLinks(work.framework, work.id);
249
+ for (const link of links) {
250
+ const targetNodeId = `${link.framework}_${link.id}`.replace(/-/g, '_');
251
+ const edgeKey = `${nodeId}-${targetNodeId}`;
252
+ const reverseKey = `${targetNodeId}-${nodeId}`;
253
+ // Only add one direction to avoid duplicate edges
254
+ if (!processed.has(edgeKey) && !processed.has(reverseKey)) {
255
+ lines.push(` ${nodeId} -->|${link.relationship}| ${targetNodeId}`);
256
+ processed.add(edgeKey);
257
+ }
258
+ }
259
+ }
260
+ return lines.join('\n');
261
+ }
262
+ /**
263
+ * Detect orphaned links (links to non-existent work items)
264
+ *
265
+ * @returns Array of orphaned links
266
+ */
267
+ async detectOrphanedLinks() {
268
+ const orphaned = [];
269
+ const allWork = await this.listAllWork();
270
+ for (const work of allWork) {
271
+ const links = await this.listLinks(work.framework, work.id);
272
+ for (const link of links) {
273
+ const targetExists = await this.workExists(link.framework, link.id);
274
+ if (!targetExists) {
275
+ orphaned.push({
276
+ source: { framework: work.framework, id: work.id },
277
+ target: { framework: link.framework, id: link.id },
278
+ relationship: link.relationship
279
+ });
280
+ }
281
+ }
282
+ }
283
+ return orphaned;
284
+ }
285
+ /**
286
+ * Clean up orphaned links
287
+ *
288
+ * @returns Number of links removed
289
+ */
290
+ async cleanOrphanedLinks() {
291
+ const orphaned = await this.detectOrphanedLinks();
292
+ let cleaned = 0;
293
+ for (const link of orphaned) {
294
+ const metadata = await this.getWorkMetadata(link.source.framework, link.source.id);
295
+ if (metadata) {
296
+ const originalLength = metadata.linkedWork.length;
297
+ metadata.linkedWork = metadata.linkedWork.filter(l => !(l.framework === link.target.framework && l.id === link.target.id));
298
+ if (metadata.linkedWork.length < originalLength) {
299
+ metadata.updatedAt = new Date().toISOString();
300
+ await this.saveWorkMetadata(link.source.framework, link.source.id, metadata);
301
+ cleaned++;
302
+ }
303
+ }
304
+ }
305
+ return cleaned;
306
+ }
307
+ /**
308
+ * Archive a work item
309
+ *
310
+ * @param frameworkId - Framework ID
311
+ * @param workId - Work item ID
312
+ * @param _reason - Archive reason
313
+ * @returns Whether archive succeeded
314
+ */
315
+ async archiveWork(frameworkId, workId, _reason) {
316
+ const metadata = await this.getWorkMetadata(frameworkId, workId);
317
+ if (!metadata) {
318
+ return false;
319
+ }
320
+ metadata.status = 'archived';
321
+ metadata.updatedAt = new Date().toISOString();
322
+ // Move to archive directory
323
+ const framework = await this.getFrameworkInfo(frameworkId);
324
+ if (!framework) {
325
+ return false;
326
+ }
327
+ const sourcePath = path.join(this.aiwgRoot, framework.path, 'projects', workId);
328
+ const now = new Date();
329
+ const yearMonth = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}`;
330
+ const archivePath = path.join(this.aiwgRoot, framework.path, 'archive', yearMonth, workId);
331
+ try {
332
+ await fs.mkdir(path.dirname(archivePath), { recursive: true });
333
+ await this.moveDirectory(sourcePath, archivePath);
334
+ // Update metadata in archive location
335
+ await fs.writeFile(path.join(archivePath, 'metadata.json'), JSON.stringify(metadata, null, 2));
336
+ return true;
337
+ }
338
+ catch {
339
+ return false;
340
+ }
341
+ }
342
+ /**
343
+ * Check if a framework exists in the registry
344
+ */
345
+ async frameworkExists(frameworkId) {
346
+ try {
347
+ const registry = await this.loadRegistry();
348
+ return registry.plugins.some(p => p.id === frameworkId && p.type === 'framework');
349
+ }
350
+ catch {
351
+ return false;
352
+ }
353
+ }
354
+ /**
355
+ * Check if a work item exists
356
+ */
357
+ async workExists(frameworkId, workId) {
358
+ const metadata = await this.getWorkMetadata(frameworkId, workId);
359
+ return metadata !== null;
360
+ }
361
+ /**
362
+ * Get work item metadata
363
+ */
364
+ async getWorkMetadata(frameworkId, workId) {
365
+ const framework = await this.getFrameworkInfo(frameworkId);
366
+ if (!framework) {
367
+ return null;
368
+ }
369
+ const metadataPath = path.join(this.aiwgRoot, framework.path, 'projects', workId, 'metadata.json');
370
+ try {
371
+ const content = await fs.readFile(metadataPath, 'utf-8');
372
+ return JSON.parse(content);
373
+ }
374
+ catch {
375
+ // Create default metadata if project exists but no metadata
376
+ const projectPath = path.join(this.aiwgRoot, framework.path, 'projects', workId);
377
+ try {
378
+ await fs.stat(projectPath);
379
+ return {
380
+ framework: frameworkId,
381
+ id: workId,
382
+ type: 'project',
383
+ status: 'active',
384
+ createdAt: new Date().toISOString(),
385
+ updatedAt: new Date().toISOString(),
386
+ linkedWork: []
387
+ };
388
+ }
389
+ catch {
390
+ return null;
391
+ }
392
+ }
393
+ }
394
+ /**
395
+ * Save work item metadata
396
+ */
397
+ async saveWorkMetadata(frameworkId, workId, metadata) {
398
+ const framework = await this.getFrameworkInfo(frameworkId);
399
+ if (!framework) {
400
+ throw new Error(`Framework '${frameworkId}' not found`);
401
+ }
402
+ const projectPath = path.join(this.aiwgRoot, framework.path, 'projects', workId);
403
+ await fs.mkdir(projectPath, { recursive: true });
404
+ const metadataPath = path.join(projectPath, 'metadata.json');
405
+ await fs.writeFile(metadataPath, JSON.stringify(metadata, null, 2));
406
+ }
407
+ /**
408
+ * Get framework info from registry
409
+ */
410
+ async getFrameworkInfo(frameworkId) {
411
+ try {
412
+ const registry = await this.loadRegistry();
413
+ const framework = registry.plugins.find(p => p.id === frameworkId && p.type === 'framework');
414
+ return framework ? { id: framework.id, path: framework.path } : null;
415
+ }
416
+ catch {
417
+ return null;
418
+ }
419
+ }
420
+ /**
421
+ * Get all projects in a framework
422
+ */
423
+ async getFrameworkProjects(_frameworkId, frameworkPath) {
424
+ const projectsDir = path.join(this.aiwgRoot, frameworkPath, 'projects');
425
+ try {
426
+ const entries = await fs.readdir(projectsDir, { withFileTypes: true });
427
+ return entries
428
+ .filter(e => e.isDirectory())
429
+ .map(e => e.name);
430
+ }
431
+ catch {
432
+ return [];
433
+ }
434
+ }
435
+ /**
436
+ * Load registry file
437
+ */
438
+ async loadRegistry() {
439
+ const content = await fs.readFile(this.registryPath, 'utf-8');
440
+ return JSON.parse(content);
441
+ }
442
+ /**
443
+ * Move directory recursively
444
+ */
445
+ async moveDirectory(source, dest) {
446
+ await this.copyDirectory(source, dest);
447
+ await fs.rm(source, { recursive: true, force: true });
448
+ }
449
+ /**
450
+ * Copy directory recursively
451
+ */
452
+ async copyDirectory(source, dest) {
453
+ await fs.mkdir(dest, { recursive: true });
454
+ const entries = await fs.readdir(source, { withFileTypes: true });
455
+ for (const entry of entries) {
456
+ const srcPath = path.join(source, entry.name);
457
+ const destPath = path.join(dest, entry.name);
458
+ if (entry.isDirectory()) {
459
+ await this.copyDirectory(srcPath, destPath);
460
+ }
461
+ else {
462
+ await fs.copyFile(srcPath, destPath);
463
+ }
464
+ }
465
+ }
466
+ }
467
+ /**
468
+ * Create CrossFrameworkOps with default AIWG root
469
+ */
470
+ export function createCrossFrameworkOps() {
471
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
472
+ const aiwgRoot = path.join(homeDir, '.local', 'share', 'ai-writing-guide');
473
+ return new CrossFrameworkOps(aiwgRoot);
474
+ }
475
+ //# sourceMappingURL=cross-framework-ops.js.map