@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,269 @@
1
+ /**
2
+ * Documentation service for generating structured paper summaries
3
+ *
4
+ * @module research/services/documentation
5
+ */
6
+ /**
7
+ * Documentation service for generating summaries and notes
8
+ */
9
+ export class DocumentationService {
10
+ constructor(_config = {}) {
11
+ // Config values will be used when stub methods are fully implemented
12
+ }
13
+ /**
14
+ * Generate structured summary from paper
15
+ * Note: Full implementation would use LLM or PDF parsing
16
+ */
17
+ async summarize(_paperPath) {
18
+ // Stub implementation - full version would parse PDF
19
+ return {
20
+ refId: 'REF-XXX',
21
+ oneSentence: 'Paper summary to be generated from PDF content',
22
+ contributions: [
23
+ 'Contribution 1 (extracted from paper)',
24
+ 'Contribution 2 (extracted from paper)',
25
+ 'Contribution 3 (extracted from paper)',
26
+ ],
27
+ methodology: 'Methodology description extracted from paper',
28
+ findings: [
29
+ 'Finding 1 with metrics',
30
+ 'Finding 2 with metrics',
31
+ 'Finding 3 with metrics',
32
+ ],
33
+ limitations: [
34
+ 'Limitation 1 acknowledged by authors',
35
+ 'Limitation 2 identified',
36
+ ],
37
+ aiwgRelevance: {
38
+ applicability: 'direct',
39
+ componentsAffected: ['agents', 'workflows'],
40
+ implementationPriority: 'round-2',
41
+ },
42
+ };
43
+ }
44
+ /**
45
+ * Extract claims from paper
46
+ * Note: Full implementation would use NLP/LLM
47
+ */
48
+ async extractClaims(_paperPath) {
49
+ // Stub implementation - full version would use NLP
50
+ return [
51
+ {
52
+ id: 'claim-001',
53
+ statement: 'Example claim extracted from paper',
54
+ type: 'empirical',
55
+ evidence: [
56
+ {
57
+ sourceRefId: 'REF-XXX',
58
+ pageNumbers: '5-6',
59
+ quote: 'Direct quote supporting claim',
60
+ context: 'Context around the claim',
61
+ },
62
+ ],
63
+ confidence: 'high',
64
+ tags: ['tag1', 'tag2'],
65
+ },
66
+ ];
67
+ }
68
+ /**
69
+ * Generate Zettelkasten literature note
70
+ */
71
+ async generateNote(paper, summary) {
72
+ const authors = paper.authors.map((a) => a.name).join(', ');
73
+ const note = `# ${summary.refId}: ${paper.title}
74
+
75
+ **Authors:** ${authors}
76
+ **Year:** ${paper.year}
77
+ **Source:** ${paper.venue || 'Unknown'}
78
+ **DOI:** ${paper.doi || 'N/A'}
79
+ **arXiv:** ${paper.arxivId || 'N/A'}
80
+
81
+ ## Summary
82
+
83
+ ${summary.oneSentence}
84
+
85
+ ## Key Contributions
86
+
87
+ ${summary.contributions.map((c) => `- ${c}`).join('\n')}
88
+
89
+ ## Methodology
90
+
91
+ ${summary.methodology}
92
+
93
+ ## Main Findings
94
+
95
+ ${summary.findings.map((f) => `- ${f}`).join('\n')}
96
+
97
+ ## Limitations
98
+
99
+ ${summary.limitations.map((l) => `- ${l}`).join('\n')}
100
+
101
+ ## AIWG Relevance
102
+
103
+ **Applicability:** ${summary.aiwgRelevance.applicability}
104
+
105
+ **Components Affected:**
106
+ ${summary.aiwgRelevance.componentsAffected.map((c) => `- ${c}`).join('\n')}
107
+
108
+ **Implementation Priority:** ${summary.aiwgRelevance.implementationPriority}
109
+
110
+ ## References
111
+
112
+ - Source: ${paper.source}
113
+ - Retrieved: ${paper.retrievedAt}
114
+ ${paper.pdfUrl ? `- PDF: ${paper.pdfUrl}` : ''}
115
+
116
+ ## Citations
117
+
118
+ To cite this paper:
119
+
120
+ \`\`\`
121
+ ${this.generateCitation(paper)}
122
+ \`\`\`
123
+
124
+ ## Notes
125
+
126
+ [Add personal notes and connections here]
127
+
128
+ ## Tags
129
+
130
+ #research #${summary.refId.toLowerCase()} ${summary.aiwgRelevance.componentsAffected.map((c) => `#${c}`).join(' ')}
131
+ `;
132
+ return note;
133
+ }
134
+ /**
135
+ * Assess GRADE quality level
136
+ */
137
+ async assessGRADE(source) {
138
+ const paper = source.paper;
139
+ // Determine starting quality based on study type
140
+ const startingQuality = this.determineStartingQuality(paper);
141
+ const ratingUp = [];
142
+ const ratingDown = [];
143
+ // Factors that could increase quality
144
+ if (paper.citationCount && paper.citationCount > 100) {
145
+ ratingUp.push({
146
+ factor: 'Large citation count',
147
+ description: `Highly cited (${paper.citationCount} citations) indicates impact`,
148
+ });
149
+ }
150
+ // Factors that could decrease quality
151
+ if (paper.type === 'preprint') {
152
+ ratingDown.push({
153
+ factor: 'Non-peer-reviewed',
154
+ description: 'Preprint not yet peer reviewed',
155
+ });
156
+ }
157
+ if (!paper.abstract) {
158
+ ratingDown.push({
159
+ factor: 'Missing abstract',
160
+ description: 'Incomplete metadata reduces confidence',
161
+ });
162
+ }
163
+ // Calculate final level
164
+ let level = startingQuality;
165
+ // Adjust based on factors (simplified)
166
+ if (ratingDown.length > ratingUp.length) {
167
+ level = this.downgradeLevel(level);
168
+ }
169
+ else if (ratingUp.length > 0 && ratingDown.length === 0) {
170
+ level = this.upgradeLevel(level);
171
+ }
172
+ const justification = this.buildJustification(startingQuality, level, ratingUp, ratingDown);
173
+ return {
174
+ level,
175
+ startingQuality,
176
+ ratingUp,
177
+ ratingDown,
178
+ justification,
179
+ };
180
+ }
181
+ /**
182
+ * Determine starting GRADE quality based on publication type
183
+ */
184
+ determineStartingQuality(paper) {
185
+ if (paper.type === 'journal') {
186
+ return 'HIGH';
187
+ }
188
+ if (paper.type === 'conference') {
189
+ return 'HIGH';
190
+ }
191
+ if (paper.type === 'preprint') {
192
+ return 'MODERATE';
193
+ }
194
+ if (paper.type === 'thesis') {
195
+ return 'MODERATE';
196
+ }
197
+ return 'LOW';
198
+ }
199
+ /**
200
+ * Downgrade GRADE level
201
+ */
202
+ downgradeLevel(level) {
203
+ const levels = ['HIGH', 'MODERATE', 'LOW', 'VERY_LOW'];
204
+ const index = levels.indexOf(level);
205
+ if (index < levels.length - 1) {
206
+ return levels[index + 1];
207
+ }
208
+ return level;
209
+ }
210
+ /**
211
+ * Upgrade GRADE level
212
+ */
213
+ upgradeLevel(level) {
214
+ const levels = ['HIGH', 'MODERATE', 'LOW', 'VERY_LOW'];
215
+ const index = levels.indexOf(level);
216
+ if (index > 0) {
217
+ return levels[index - 1];
218
+ }
219
+ return level;
220
+ }
221
+ /**
222
+ * Build GRADE justification text
223
+ */
224
+ buildJustification(startingQuality, finalLevel, ratingUp, ratingDown) {
225
+ let text = `Starting quality: ${startingQuality} (based on publication type). `;
226
+ if (ratingUp.length > 0) {
227
+ text += `Quality increased due to: ${ratingUp.map((r) => r.factor).join(', ')}. `;
228
+ }
229
+ if (ratingDown.length > 0) {
230
+ text += `Quality decreased due to: ${ratingDown.map((r) => r.factor).join(', ')}. `;
231
+ }
232
+ text += `Final assessment: ${finalLevel}.`;
233
+ return text;
234
+ }
235
+ /**
236
+ * Generate citation in APA format
237
+ */
238
+ generateCitation(paper) {
239
+ const authors = this.formatAuthorsAPA(paper.authors.map((a) => a.name));
240
+ const year = paper.year || 'n.d.';
241
+ const title = paper.title;
242
+ const venue = paper.venue || '';
243
+ const doi = paper.doi ? `https://doi.org/${paper.doi}` : '';
244
+ let citation = `${authors} (${year}). ${title}.`;
245
+ if (venue) {
246
+ citation += ` ${venue}.`;
247
+ }
248
+ if (doi) {
249
+ citation += ` ${doi}`;
250
+ }
251
+ return citation;
252
+ }
253
+ /**
254
+ * Format authors in APA style
255
+ */
256
+ formatAuthorsAPA(authors) {
257
+ if (authors.length === 0)
258
+ return 'Unknown';
259
+ if (authors.length === 1)
260
+ return authors[0];
261
+ if (authors.length === 2)
262
+ return `${authors[0]} & ${authors[1]}`;
263
+ // More than 2 authors
264
+ const lastAuthor = authors[authors.length - 1];
265
+ const otherAuthors = authors.slice(0, -1).join(', ');
266
+ return `${otherAuthors}, & ${lastAuthor}`;
267
+ }
268
+ }
269
+ //# sourceMappingURL=documentation.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Research Framework Services
3
+ *
4
+ * @module research/services
5
+ */
6
+ export * from './types.js';
7
+ export * from './discovery.js';
8
+ export * from './acquisition.js';
9
+ export * from './documentation.js';
10
+ export * from './citation.js';
11
+ export * from './quality.js';
12
+ export * from './archival.js';
13
+ export * from './provenance.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Provenance service for W3C PROV tracking
3
+ *
4
+ * @module research/services/provenance
5
+ */
6
+ import { promises as fs } from 'fs';
7
+ import { join } from 'path';
8
+ /**
9
+ * Provenance service for W3C PROV-compliant tracking
10
+ */
11
+ export class ProvenanceService {
12
+ recordsDir;
13
+ autoPersist;
14
+ records;
15
+ constructor(config = {}) {
16
+ this.recordsDir = config.recordsDir || '.aiwg/research/provenance/records';
17
+ this.autoPersist = config.autoPersist !== false;
18
+ this.records = new Map();
19
+ }
20
+ /**
21
+ * Record a provenance activity
22
+ */
23
+ async recordActivity(activity) {
24
+ const recordId = this.generateRecordId();
25
+ const timestamp = new Date().toISOString();
26
+ // Create entity for each output
27
+ const entities = activity.outputs.map((outputId) => ({
28
+ id: outputId,
29
+ type: 'artifact',
30
+ attributes: {},
31
+ }));
32
+ // For simplicity, use first output as primary entity
33
+ const primaryEntity = entities[0] || {
34
+ id: 'unknown',
35
+ type: 'artifact',
36
+ attributes: {},
37
+ };
38
+ const record = {
39
+ id: recordId,
40
+ timestamp,
41
+ entity: primaryEntity,
42
+ activity: {
43
+ id: this.generateActivityId(activity.type),
44
+ type: activity.type,
45
+ startedAt: timestamp,
46
+ endedAt: timestamp,
47
+ attributes: {
48
+ description: activity.description,
49
+ ...activity.metadata,
50
+ },
51
+ },
52
+ agent: {
53
+ id: activity.agentId,
54
+ type: 'software_agent',
55
+ attributes: {},
56
+ },
57
+ relationships: {
58
+ wasGeneratedBy: this.generateActivityId(activity.type),
59
+ wasDerivedFrom: activity.inputs,
60
+ wasAttributedTo: activity.agentId,
61
+ wasAssociatedWith: activity.agentId,
62
+ },
63
+ };
64
+ // Store in memory
65
+ this.records.set(recordId, record);
66
+ // Persist if enabled
67
+ if (this.autoPersist) {
68
+ await this.persistRecord(record);
69
+ }
70
+ return record;
71
+ }
72
+ /**
73
+ * Query lineage (provenance chain) for an entity
74
+ */
75
+ async queryLineage(entityId) {
76
+ const activities = [];
77
+ const sources = [];
78
+ const derived = [];
79
+ // Search through records
80
+ for (const record of this.records.values()) {
81
+ // Check if this record involves the entity
82
+ if (record.entity.id === entityId ||
83
+ record.relationships.wasDerivedFrom?.includes(entityId)) {
84
+ // Reconstruct activity
85
+ const activity = {
86
+ type: record.activity.type,
87
+ description: String(record.activity.attributes.description || ''),
88
+ agentId: record.agent.id,
89
+ inputs: record.relationships.wasDerivedFrom || [],
90
+ outputs: [record.entity.id],
91
+ metadata: record.activity.attributes,
92
+ };
93
+ activities.push({
94
+ activity,
95
+ timestamp: record.timestamp,
96
+ agent: record.agent.id,
97
+ });
98
+ // Track sources and derived
99
+ if (record.relationships.wasDerivedFrom &&
100
+ record.relationships.wasDerivedFrom.length === 0) {
101
+ sources.push(record.entity.id);
102
+ }
103
+ if (record.relationships.wasDerivedFrom?.includes(entityId)) {
104
+ derived.push(record.entity.id);
105
+ }
106
+ }
107
+ }
108
+ return {
109
+ entityId,
110
+ activities,
111
+ sources,
112
+ derived,
113
+ };
114
+ }
115
+ /**
116
+ * Validate provenance chain integrity
117
+ */
118
+ async validateChain(chainId) {
119
+ // Load chain
120
+ const chain = await this.queryLineage(chainId);
121
+ // Check that all activities are connected
122
+ const allInputs = new Set();
123
+ const allOutputs = new Set();
124
+ for (const { activity } of chain.activities) {
125
+ activity.inputs.forEach((input) => allInputs.add(input));
126
+ activity.outputs.forEach((output) => allOutputs.add(output));
127
+ }
128
+ // All inputs (except sources) should be outputs of other activities
129
+ for (const input of allInputs) {
130
+ if (!chain.sources.includes(input) && !allOutputs.has(input)) {
131
+ return false; // Broken chain
132
+ }
133
+ }
134
+ return true;
135
+ }
136
+ /**
137
+ * Export provenance in specified format
138
+ */
139
+ async exportPROV(format) {
140
+ if (format === 'json') {
141
+ return this.exportJSON();
142
+ }
143
+ else if (format === 'turtle') {
144
+ return this.exportTurtle();
145
+ }
146
+ throw new Error(`Unsupported format: ${format}`);
147
+ }
148
+ /**
149
+ * Export as PROV-JSON
150
+ */
151
+ exportJSON() {
152
+ const provDoc = {
153
+ prefix: {
154
+ prov: 'http://www.w3.org/ns/prov#',
155
+ aiwg: 'urn:aiwg:',
156
+ },
157
+ entity: {},
158
+ activity: {},
159
+ agent: {},
160
+ wasGeneratedBy: {},
161
+ wasDerivedFrom: {},
162
+ wasAttributedTo: {},
163
+ wasAssociatedWith: {},
164
+ };
165
+ for (const record of this.records.values()) {
166
+ // Add entity
167
+ provDoc.entity[record.entity.id] = record.entity.attributes;
168
+ // Add activity
169
+ provDoc.activity[record.activity.id] = {
170
+ 'prov:startedAtTime': record.activity.startedAt,
171
+ 'prov:endedAtTime': record.activity.endedAt,
172
+ ...record.activity.attributes,
173
+ };
174
+ // Add agent
175
+ provDoc.agent[record.agent.id] = record.agent.attributes;
176
+ // Add relationships
177
+ if (record.relationships.wasGeneratedBy) {
178
+ provDoc.wasGeneratedBy[record.entity.id] = {
179
+ 'prov:entity': record.entity.id,
180
+ 'prov:activity': record.relationships.wasGeneratedBy,
181
+ };
182
+ }
183
+ if (record.relationships.wasDerivedFrom) {
184
+ for (const source of record.relationships.wasDerivedFrom) {
185
+ provDoc.wasDerivedFrom[`${record.entity.id}-${source}`] = {
186
+ 'prov:generatedEntity': record.entity.id,
187
+ 'prov:usedEntity': source,
188
+ };
189
+ }
190
+ }
191
+ if (record.relationships.wasAttributedTo) {
192
+ provDoc.wasAttributedTo[record.entity.id] = {
193
+ 'prov:entity': record.entity.id,
194
+ 'prov:agent': record.relationships.wasAttributedTo,
195
+ };
196
+ }
197
+ if (record.relationships.wasAssociatedWith) {
198
+ provDoc.wasAssociatedWith[record.activity.id] = {
199
+ 'prov:activity': record.activity.id,
200
+ 'prov:agent': record.relationships.wasAssociatedWith,
201
+ };
202
+ }
203
+ }
204
+ return JSON.stringify(provDoc, null, 2);
205
+ }
206
+ /**
207
+ * Export as PROV-Turtle (simplified)
208
+ */
209
+ exportTurtle() {
210
+ const lines = [
211
+ '@prefix prov: <http://www.w3.org/ns/prov#> .',
212
+ '@prefix aiwg: <urn:aiwg:> .',
213
+ '',
214
+ ];
215
+ for (const record of this.records.values()) {
216
+ // Entity
217
+ lines.push(`aiwg:${record.entity.id} a prov:Entity .`);
218
+ // Activity
219
+ lines.push(`aiwg:${record.activity.id} a prov:Activity ;`);
220
+ lines.push(` prov:startedAtTime "${record.activity.startedAt}"^^xsd:dateTime ;`);
221
+ lines.push(` prov:endedAtTime "${record.activity.endedAt}"^^xsd:dateTime .`);
222
+ // Agent
223
+ lines.push(`aiwg:${record.agent.id} a prov:Agent .`);
224
+ // Relationships
225
+ if (record.relationships.wasGeneratedBy) {
226
+ lines.push(`aiwg:${record.entity.id} prov:wasGeneratedBy aiwg:${record.relationships.wasGeneratedBy} .`);
227
+ }
228
+ if (record.relationships.wasDerivedFrom) {
229
+ for (const source of record.relationships.wasDerivedFrom) {
230
+ lines.push(`aiwg:${record.entity.id} prov:wasDerivedFrom aiwg:${source} .`);
231
+ }
232
+ }
233
+ if (record.relationships.wasAttributedTo) {
234
+ lines.push(`aiwg:${record.entity.id} prov:wasAttributedTo aiwg:${record.relationships.wasAttributedTo} .`);
235
+ }
236
+ if (record.relationships.wasAssociatedWith) {
237
+ lines.push(`aiwg:${record.activity.id} prov:wasAssociatedWith aiwg:${record.relationships.wasAssociatedWith} .`);
238
+ }
239
+ lines.push('');
240
+ }
241
+ return lines.join('\n');
242
+ }
243
+ /**
244
+ * Persist record to disk
245
+ */
246
+ async persistRecord(record) {
247
+ const filename = `${record.id}.json`;
248
+ const filepath = join(this.recordsDir, filename);
249
+ // Ensure directory exists
250
+ await this.ensureDir(this.recordsDir);
251
+ await fs.writeFile(filepath, JSON.stringify(record, null, 2), 'utf-8');
252
+ }
253
+ /**
254
+ * Generate record ID
255
+ */
256
+ generateRecordId() {
257
+ return `prov-${Date.now()}-${Math.random().toString(36).substring(7)}`;
258
+ }
259
+ /**
260
+ * Generate activity ID
261
+ */
262
+ generateActivityId(type) {
263
+ return `activity-${type}-${Date.now()}`;
264
+ }
265
+ /**
266
+ * Ensure directory exists
267
+ */
268
+ async ensureDir(dir) {
269
+ try {
270
+ await fs.mkdir(dir, { recursive: true });
271
+ }
272
+ catch (error) {
273
+ if (error.code !== 'EEXIST') {
274
+ throw error;
275
+ }
276
+ }
277
+ }
278
+ }
279
+ //# sourceMappingURL=provenance.js.map