xcoder-dna 0.0.0-stage → 1.3.1

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 (390) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -2
  3. package/dist/agents/ai-chat-debate.d.ts +36 -0
  4. package/dist/agents/ai-chat-debate.js +300 -0
  5. package/dist/agents/ai-chat-report-writer.d.ts +7 -0
  6. package/dist/agents/ai-chat-report-writer.js +100 -0
  7. package/dist/agents/duplicate-detector.d.ts +41 -0
  8. package/dist/agents/duplicate-detector.js +65 -0
  9. package/dist/agents/genesis-agent.d.ts +61 -0
  10. package/dist/agents/genesis-agent.js +340 -0
  11. package/dist/agents/samurai-agent.d.ts +53 -0
  12. package/dist/agents/samurai-agent.js +279 -0
  13. package/dist/agents/sub-agent.d.ts +56 -0
  14. package/dist/agents/sub-agent.js +353 -0
  15. package/dist/backlog/backlog-requirement-validator.d.ts +10 -0
  16. package/dist/backlog/backlog-requirement-validator.js +60 -0
  17. package/dist/backlog/backlog-store.d.ts +29 -0
  18. package/dist/backlog/backlog-store.js +148 -0
  19. package/dist/backlog/po-agent.d.ts +16 -0
  20. package/dist/backlog/po-agent.js +121 -0
  21. package/dist/backlog/types.d.ts +25 -0
  22. package/dist/backlog/types.js +4 -0
  23. package/dist/bench/run.d.ts +11 -0
  24. package/dist/bench/run.js +185 -0
  25. package/dist/bench/types.d.ts +50 -0
  26. package/dist/bench/types.js +1 -0
  27. package/dist/cli/swarm.d.ts +10 -0
  28. package/dist/cli/swarm.js +100 -0
  29. package/dist/cli/task.d.ts +14 -0
  30. package/dist/cli/task.js +121 -0
  31. package/dist/cli/wbc-arg.d.ts +6 -0
  32. package/dist/cli/wbc-arg.js +40 -0
  33. package/dist/cli/wbc.d.ts +45 -0
  34. package/dist/cli/wbc.js +98 -0
  35. package/dist/commands/license.d.ts +9 -0
  36. package/dist/commands/license.js +140 -0
  37. package/dist/commands/release.d.ts +44 -0
  38. package/dist/commands/release.js +180 -0
  39. package/dist/commands/test.d.ts +50 -0
  40. package/dist/commands/test.js +385 -0
  41. package/dist/config/loadConfig.d.ts +82 -0
  42. package/dist/config/loadConfig.js +240 -0
  43. package/dist/config/secure-mode.d.ts +29 -0
  44. package/dist/config/secure-mode.js +63 -0
  45. package/dist/config/user-config.d.ts +39 -0
  46. package/dist/config/user-config.js +202 -0
  47. package/dist/engine/reasoning-engine.d.ts +21 -0
  48. package/dist/engine/reasoning-engine.js +59 -0
  49. package/dist/events/bus.d.ts +22 -0
  50. package/dist/events/bus.js +18 -0
  51. package/dist/index.d.ts +79 -0
  52. package/dist/index.js +77 -0
  53. package/dist/indexing/ignoreRules.d.ts +1 -0
  54. package/dist/indexing/ignoreRules.js +53 -0
  55. package/dist/instance-swarm/instance-swarm-orchestrator.d.ts +57 -0
  56. package/dist/instance-swarm/instance-swarm-orchestrator.js +204 -0
  57. package/dist/instance-swarm/protocol-name-resolver.d.ts +23 -0
  58. package/dist/instance-swarm/protocol-name-resolver.js +64 -0
  59. package/dist/license/gate.d.ts +31 -0
  60. package/dist/license/gate.js +188 -0
  61. package/dist/license/http-client.d.ts +43 -0
  62. package/dist/license/http-client.js +195 -0
  63. package/dist/license/manager.d.ts +39 -0
  64. package/dist/license/manager.js +175 -0
  65. package/dist/license/receipt.d.ts +27 -0
  66. package/dist/license/receipt.js +108 -0
  67. package/dist/license/state-codec.d.ts +72 -0
  68. package/dist/license/state-codec.js +218 -0
  69. package/dist/license/state-paths.d.ts +17 -0
  70. package/dist/license/state-paths.js +64 -0
  71. package/dist/license/store.d.ts +44 -0
  72. package/dist/license/store.js +223 -0
  73. package/dist/license/trust-anchor.d.ts +24 -0
  74. package/dist/license/trust-anchor.js +74 -0
  75. package/dist/license/types.d.ts +34 -0
  76. package/dist/license/types.js +19 -0
  77. package/dist/llm/budget.d.ts +23 -0
  78. package/dist/llm/budget.js +58 -0
  79. package/dist/llm/client.d.ts +53 -0
  80. package/dist/llm/client.js +122 -0
  81. package/dist/llm/factory.d.ts +14 -0
  82. package/dist/llm/factory.js +32 -0
  83. package/dist/orchestrator/defect-logger.d.ts +31 -0
  84. package/dist/orchestrator/defect-logger.js +101 -0
  85. package/dist/orchestrator/defect-manager.d.ts +118 -0
  86. package/dist/orchestrator/defect-manager.js +338 -0
  87. package/dist/orchestrator/defect-migration.d.ts +14 -0
  88. package/dist/orchestrator/defect-migration.js +174 -0
  89. package/dist/orchestrator/defect-store.d.ts +48 -0
  90. package/dist/orchestrator/defect-store.js +76 -0
  91. package/dist/orchestrator/healing.d.ts +14 -0
  92. package/dist/orchestrator/healing.js +11 -0
  93. package/dist/orchestrator/interactive-steering.d.ts +64 -0
  94. package/dist/orchestrator/interactive-steering.js +107 -0
  95. package/dist/orchestrator/interrupt-handler.d.ts +30 -0
  96. package/dist/orchestrator/interrupt-handler.js +70 -0
  97. package/dist/orchestrator/lesson-manager.d.ts +25 -0
  98. package/dist/orchestrator/lesson-manager.js +122 -0
  99. package/dist/orchestrator/progress-summary.d.ts +15 -0
  100. package/dist/orchestrator/progress-summary.js +106 -0
  101. package/dist/orchestrator/reasoning-score.d.ts +49 -0
  102. package/dist/orchestrator/reasoning-score.js +117 -0
  103. package/dist/orchestrator/swarm.d.ts +36 -0
  104. package/dist/orchestrator/swarm.js +77 -0
  105. package/dist/orchestrator/task-factory.d.ts +15 -0
  106. package/dist/orchestrator/task-factory.js +176 -0
  107. package/dist/orchestrator/validation-gate.d.ts +23 -0
  108. package/dist/orchestrator/validation-gate.js +155 -0
  109. package/dist/protocol/react-contract.d.ts +136 -0
  110. package/dist/protocol/react-contract.js +698 -0
  111. package/dist/protocol/wks-protocol-manager.d.ts +22 -0
  112. package/dist/protocol/wks-protocol-manager.js +72 -0
  113. package/dist/sdlc-runtime/conversation-runner.d.ts +8 -0
  114. package/dist/sdlc-runtime/conversation-runner.js +64 -0
  115. package/dist/sdlc-runtime/dag-utils.d.ts +15 -0
  116. package/dist/sdlc-runtime/dag-utils.js +67 -0
  117. package/dist/sdlc-runtime/defect-integration.d.ts +7 -0
  118. package/dist/sdlc-runtime/defect-integration.js +99 -0
  119. package/dist/sdlc-runtime/execution-loop.d.ts +38 -0
  120. package/dist/sdlc-runtime/execution-loop.js +274 -0
  121. package/dist/sdlc-runtime/lesson-recorder.d.ts +9 -0
  122. package/dist/sdlc-runtime/lesson-recorder.js +27 -0
  123. package/dist/sdlc-runtime/plan-initializer.d.ts +47 -0
  124. package/dist/sdlc-runtime/plan-initializer.js +135 -0
  125. package/dist/sdlc-runtime/progress-persister.d.ts +10 -0
  126. package/dist/sdlc-runtime/progress-persister.js +34 -0
  127. package/dist/sdlc-runtime/protocol-loader.d.ts +10 -0
  128. package/dist/sdlc-runtime/protocol-loader.js +21 -0
  129. package/dist/sdlc-runtime/reporting.d.ts +24 -0
  130. package/dist/sdlc-runtime/reporting.js +68 -0
  131. package/dist/sdlc-runtime/sdlc-orchestrator.d.ts +59 -0
  132. package/dist/sdlc-runtime/sdlc-orchestrator.js +170 -0
  133. package/dist/sdlc-runtime/sdlc-skill.d.ts +44 -0
  134. package/dist/sdlc-runtime/sdlc-skill.js +148 -0
  135. package/dist/sdlc-runtime/steering-handler.d.ts +14 -0
  136. package/dist/sdlc-runtime/steering-handler.js +51 -0
  137. package/dist/sdlc-runtime/trace-recorder.d.ts +10 -0
  138. package/dist/sdlc-runtime/trace-recorder.js +7 -0
  139. package/dist/security/index.d.ts +16 -0
  140. package/dist/security/index.js +12 -0
  141. package/dist/security/input-screen.d.ts +30 -0
  142. package/dist/security/input-screen.js +75 -0
  143. package/dist/security/tool-call-guard.d.ts +16 -0
  144. package/dist/security/tool-call-guard.js +163 -0
  145. package/dist/security/untrusted-content.d.ts +34 -0
  146. package/dist/security/untrusted-content.js +63 -0
  147. package/dist/skills/advanced-dfir/SKILL.md +85 -0
  148. package/dist/skills/advanced-pentest-lab/SKILL.md +88 -0
  149. package/dist/skills/analyst/SKILL.md +55 -0
  150. package/dist/skills/architect/SKILL.md +54 -0
  151. package/dist/skills/aws/SKILL.md +92 -0
  152. package/dist/skills/azure/SKILL.md +90 -0
  153. package/dist/skills/bylaw-context.d.ts +45 -0
  154. package/dist/skills/bylaw-context.js +61 -0
  155. package/dist/skills/bylaw-review.d.ts +20 -0
  156. package/dist/skills/bylaw-review.js +101 -0
  157. package/dist/skills/conversation/SKILL.md +29 -0
  158. package/dist/skills/design-patterns/SKILL.md +190 -0
  159. package/dist/skills/devops/SKILL.md +55 -0
  160. package/dist/skills/directives.d.ts +20 -0
  161. package/dist/skills/directives.js +313 -0
  162. package/dist/skills/docker/SKILL.md +76 -0
  163. package/dist/skills/docker-expert/SKILL.md +56 -0
  164. package/dist/skills/enterprise-systems-analyst/SKILL.md +83 -0
  165. package/dist/skills/enterprise-systems-analyst/references/crm.md +41 -0
  166. package/dist/skills/enterprise-systems-analyst/references/erp.md +40 -0
  167. package/dist/skills/enterprise-systems-analyst/references/financial-systems.md +35 -0
  168. package/dist/skills/enterprise-systems-analyst/references/hcm.md +38 -0
  169. package/dist/skills/enterprise-systems-analyst/references/mrp.md +37 -0
  170. package/dist/skills/enterprise-systems-analyst/references/scm.md +32 -0
  171. package/dist/skills/ethical-hacking-methodology/SKILL.md +119 -0
  172. package/dist/skills/externalSkillLoader.d.ts +25 -0
  173. package/dist/skills/externalSkillLoader.js +65 -0
  174. package/dist/skills/externalSkillRegistry.d.ts +33 -0
  175. package/dist/skills/externalSkillRegistry.js +94 -0
  176. package/dist/skills/filesystem-management/SKILL.md +61 -0
  177. package/dist/skills/first-run-seed.d.ts +26 -0
  178. package/dist/skills/first-run-seed.js +75 -0
  179. package/dist/skills/git-vcs/SKILL.md +84 -0
  180. package/dist/skills/kafka/SKILL.md +89 -0
  181. package/dist/skills/kubernetes/SKILL.md +93 -0
  182. package/dist/skills/kubernetes-expert/SKILL.md +54 -0
  183. package/dist/skills/openshift/SKILL.md +93 -0
  184. package/dist/skills/pentester/SKILL.md +59 -0
  185. package/dist/skills/performance-tester/SKILL.md +57 -0
  186. package/dist/skills/playwright-ui-tester/SKILL.md +67 -0
  187. package/dist/skills/programmer/SKILL.md +58 -0
  188. package/dist/skills/project-scaffolding/SKILL.md +133 -0
  189. package/dist/skills/qa-engineer/SKILL.md +91 -0
  190. package/dist/skills/rca/SKILL.md +58 -0
  191. package/dist/skills/redhat/SKILL.md +92 -0
  192. package/dist/skills/rosa/SKILL.md +80 -0
  193. package/dist/skills/scrum-framework/SKILL.md +74 -0
  194. package/dist/skills/scrum-framework/references/artifacts_and_quality.md +79 -0
  195. package/dist/skills/scrum-framework/references/roles_and_events.md +105 -0
  196. package/dist/skills/scrum-master-agent/SKILL.md +74 -0
  197. package/dist/skills/scrum-master-agent/references/behaviors.md +56 -0
  198. package/dist/skills/sdlc-skill.d.ts +1 -0
  199. package/dist/skills/sdlc-skill.js +4 -0
  200. package/dist/skills/secops/SKILL.md +52 -0
  201. package/dist/skills/secure-architect.bylaws.d.ts +68 -0
  202. package/dist/skills/secure-architect.bylaws.js +525 -0
  203. package/dist/skills/seed-skills.d.ts +48 -0
  204. package/dist/skills/seed-skills.js +213 -0
  205. package/dist/skills/skill-authoring/SKILL.md +123 -0
  206. package/dist/skills/skill-header.d.ts +51 -0
  207. package/dist/skills/skill-header.js +163 -0
  208. package/dist/skills/skill-path-guard.d.ts +41 -0
  209. package/dist/skills/skill-path-guard.js +95 -0
  210. package/dist/skills/skillRouter.d.ts +51 -0
  211. package/dist/skills/skillRouter.js +90 -0
  212. package/dist/skills/skills-root.d.ts +64 -0
  213. package/dist/skills/skills-root.js +168 -0
  214. package/dist/skills/software-architect/SKILL.md +77 -0
  215. package/dist/skills/software-engineer/SKILL.md +74 -0
  216. package/dist/skills/solid-principles/SKILL.md +94 -0
  217. package/dist/skills/task-planning/SKILL.md +115 -0
  218. package/dist/skills/tester/SKILL.md +54 -0
  219. package/dist/skills/ubuntu/SKILL.md +87 -0
  220. package/dist/skills/ui-ux-design/SKILL.md +114 -0
  221. package/dist/skills/workspace-context/SKILL.md +103 -0
  222. package/dist/sprint/controller.d.ts +37 -0
  223. package/dist/sprint/controller.js +220 -0
  224. package/dist/sprint/dag-builder.d.ts +14 -0
  225. package/dist/sprint/dag-builder.js +105 -0
  226. package/dist/sprint/reporter.d.ts +11 -0
  227. package/dist/sprint/reporter.js +97 -0
  228. package/dist/sprint/state-store.d.ts +10 -0
  229. package/dist/sprint/state-store.js +71 -0
  230. package/dist/sprint/types.d.ts +24 -0
  231. package/dist/sprint/types.js +4 -0
  232. package/dist/store/file-version-store.d.ts +24 -0
  233. package/dist/store/file-version-store.js +73 -0
  234. package/dist/store/task-store.d.ts +90 -0
  235. package/dist/store/task-store.js +166 -0
  236. package/dist/task-ingest/architect-detailer.d.ts +43 -0
  237. package/dist/task-ingest/architect-detailer.js +141 -0
  238. package/dist/task-ingest/detail-schema.d.ts +9 -0
  239. package/dist/task-ingest/detail-schema.js +195 -0
  240. package/dist/task-ingest/detailed-run.d.ts +36 -0
  241. package/dist/task-ingest/detailed-run.js +108 -0
  242. package/dist/task-ingest/extract-id.d.ts +9 -0
  243. package/dist/task-ingest/extract-id.js +24 -0
  244. package/dist/task-ingest/index.d.ts +23 -0
  245. package/dist/task-ingest/index.js +14 -0
  246. package/dist/task-ingest/ingest.d.ts +45 -0
  247. package/dist/task-ingest/ingest.js +163 -0
  248. package/dist/task-ingest/list-ingested.d.ts +13 -0
  249. package/dist/task-ingest/list-ingested.js +30 -0
  250. package/dist/task-ingest/pending-filter.d.ts +30 -0
  251. package/dist/task-ingest/pending-filter.js +59 -0
  252. package/dist/task-ingest/scanner.d.ts +56 -0
  253. package/dist/task-ingest/scanner.js +216 -0
  254. package/dist/task-ingest/source-reader.d.ts +25 -0
  255. package/dist/task-ingest/source-reader.js +93 -0
  256. package/dist/task-ingest/spec-builder.d.ts +34 -0
  257. package/dist/task-ingest/spec-builder.js +89 -0
  258. package/dist/task-ingest/wbs-extract.d.ts +50 -0
  259. package/dist/task-ingest/wbs-extract.js +226 -0
  260. package/dist/task-ingest/wbs-parser.d.ts +36 -0
  261. package/dist/task-ingest/wbs-parser.js +170 -0
  262. package/dist/tools/apiTestTool.d.ts +37 -0
  263. package/dist/tools/apiTestTool.js +128 -0
  264. package/dist/tools/ast-tools.d.ts +183 -0
  265. package/dist/tools/ast-tools.js +853 -0
  266. package/dist/tools/browse-tool.d.ts +105 -0
  267. package/dist/tools/browse-tool.js +394 -0
  268. package/dist/tools/credential.d.ts +17 -0
  269. package/dist/tools/credential.js +32 -0
  270. package/dist/tools/dependency-graph.d.ts +23 -0
  271. package/dist/tools/dependency-graph.js +164 -0
  272. package/dist/tools/edit-tool.d.ts +34 -0
  273. package/dist/tools/edit-tool.js +95 -0
  274. package/dist/tools/file-header-manager.d.ts +27 -0
  275. package/dist/tools/file-header-manager.js +153 -0
  276. package/dist/tools/fs-tools.d.ts +154 -0
  277. package/dist/tools/fs-tools.js +337 -0
  278. package/dist/tools/git-tools.d.ts +79 -0
  279. package/dist/tools/git-tools.js +348 -0
  280. package/dist/tools/github-tool.d.ts +48 -0
  281. package/dist/tools/github-tool.js +147 -0
  282. package/dist/tools/globTool.d.ts +20 -0
  283. package/dist/tools/globTool.js +34 -0
  284. package/dist/tools/grepTool.d.ts +19 -0
  285. package/dist/tools/grepTool.js +44 -0
  286. package/dist/tools/index-freshness.d.ts +58 -0
  287. package/dist/tools/index-freshness.js +190 -0
  288. package/dist/tools/index-glob.d.ts +48 -0
  289. package/dist/tools/index-glob.js +175 -0
  290. package/dist/tools/load-skill-tool.d.ts +15 -0
  291. package/dist/tools/load-skill-tool.js +114 -0
  292. package/dist/tools/patch-tools.d.ts +58 -0
  293. package/dist/tools/patch-tools.js +153 -0
  294. package/dist/tools/playwright-tool.d.ts +66 -0
  295. package/dist/tools/playwright-tool.js +121 -0
  296. package/dist/tools/project-detect.d.ts +20 -0
  297. package/dist/tools/project-detect.js +87 -0
  298. package/dist/tools/prompt-guidance.d.ts +22 -0
  299. package/dist/tools/prompt-guidance.js +23 -0
  300. package/dist/tools/scheduleTool.d.ts +19 -0
  301. package/dist/tools/scheduleTool.js +181 -0
  302. package/dist/tools/search-tools.d.ts +27 -0
  303. package/dist/tools/search-tools.js +78 -0
  304. package/dist/tools/sed-tool.d.ts +66 -0
  305. package/dist/tools/sed-tool.js +402 -0
  306. package/dist/tools/shell-result.d.ts +11 -0
  307. package/dist/tools/shell-result.js +1 -0
  308. package/dist/tools/shell-tool.d.ts +45 -0
  309. package/dist/tools/shell-tool.js +141 -0
  310. package/dist/tools/siteCrawlerTool.d.ts +32 -0
  311. package/dist/tools/siteCrawlerTool.js +205 -0
  312. package/dist/tools/tool-registry.d.ts +67 -0
  313. package/dist/tools/tool-registry.js +596 -0
  314. package/dist/tools/validate-tool.d.ts +23 -0
  315. package/dist/tools/validate-tool.js +201 -0
  316. package/dist/tools/workspace-index.d.ts +46 -0
  317. package/dist/tools/workspace-index.js +173 -0
  318. package/dist/types.d.ts +222 -0
  319. package/dist/types.js +7 -0
  320. package/dist/updater/index.d.ts +14 -0
  321. package/dist/updater/index.js +120 -0
  322. package/dist/util/banner.d.ts +25 -0
  323. package/dist/util/banner.js +140 -0
  324. package/dist/util/command-suggester.d.ts +6 -0
  325. package/dist/util/command-suggester.js +25 -0
  326. package/dist/util/confirm-interrupt.d.ts +10 -0
  327. package/dist/util/confirm-interrupt.js +31 -0
  328. package/dist/util/continue-trigger.d.ts +11 -0
  329. package/dist/util/continue-trigger.js +20 -0
  330. package/dist/util/env-info.d.ts +18 -0
  331. package/dist/util/env-info.js +37 -0
  332. package/dist/util/file-access-log.d.ts +35 -0
  333. package/dist/util/file-access-log.js +140 -0
  334. package/dist/util/footer-manager.d.ts +124 -0
  335. package/dist/util/footer-manager.js +195 -0
  336. package/dist/util/footer-renderer.d.ts +67 -0
  337. package/dist/util/footer-renderer.js +319 -0
  338. package/dist/util/footer-state.d.ts +34 -0
  339. package/dist/util/footer-state.js +18 -0
  340. package/dist/util/footer-text.d.ts +51 -0
  341. package/dist/util/footer-text.js +74 -0
  342. package/dist/util/ids.d.ts +1 -0
  343. package/dist/util/ids.js +4 -0
  344. package/dist/util/levenshtein.d.ts +6 -0
  345. package/dist/util/levenshtein.js +34 -0
  346. package/dist/util/logger.d.ts +10 -0
  347. package/dist/util/logger.js +41 -0
  348. package/dist/util/logs.d.ts +26 -0
  349. package/dist/util/logs.js +88 -0
  350. package/dist/util/output-handler.d.ts +89 -0
  351. package/dist/util/output-handler.js +193 -0
  352. package/dist/util/output-interceptor.d.ts +18 -0
  353. package/dist/util/output-interceptor.js +49 -0
  354. package/dist/util/output-paths.d.ts +43 -0
  355. package/dist/util/output-paths.js +121 -0
  356. package/dist/util/package-json.d.ts +6 -0
  357. package/dist/util/package-json.js +36 -0
  358. package/dist/util/process-kill.d.ts +27 -0
  359. package/dist/util/process-kill.js +148 -0
  360. package/dist/util/protocol-error-logger.d.ts +33 -0
  361. package/dist/util/protocol-error-logger.js +73 -0
  362. package/dist/util/redact.d.ts +25 -0
  363. package/dist/util/redact.js +103 -0
  364. package/dist/util/scroll-region-guard.d.ts +33 -0
  365. package/dist/util/scroll-region-guard.js +63 -0
  366. package/dist/util/spinner.d.ts +15 -0
  367. package/dist/util/spinner.js +49 -0
  368. package/dist/util/terminal-output.d.ts +34 -0
  369. package/dist/util/terminal-output.js +1 -0
  370. package/dist/util/terminal-silent.d.ts +6 -0
  371. package/dist/util/terminal-silent.js +20 -0
  372. package/dist/util/terminal.d.ts +56 -0
  373. package/dist/util/terminal.js +124 -0
  374. package/dist/util/text-sanitize.d.ts +8 -0
  375. package/dist/util/text-sanitize.js +45 -0
  376. package/dist/util/thinking-spinner.d.ts +27 -0
  377. package/dist/util/thinking-spinner.js +189 -0
  378. package/dist/util/tool-error-logger.d.ts +33 -0
  379. package/dist/util/tool-error-logger.js +77 -0
  380. package/dist/util/tty.d.ts +13 -0
  381. package/dist/util/tty.js +16 -0
  382. package/dist/util/xcoder-paths.d.ts +56 -0
  383. package/dist/util/xcoder-paths.js +63 -0
  384. package/dist/version.d.ts +2 -0
  385. package/dist/version.js +4 -0
  386. package/dist/worker-agent/to-subtask-node.d.ts +35 -0
  387. package/dist/worker-agent/to-subtask-node.js +41 -0
  388. package/dist/worker-agent/worker-orchestrator.d.ts +104 -0
  389. package/dist/worker-agent/worker-orchestrator.js +201 -0
  390. package/package.json +38 -3
@@ -0,0 +1,61 @@
1
+ import { EventEmitter } from 'events';
2
+ export interface GenesisOrchestratorOptions {
3
+ /** One or more skill labels injected into the system prompt. */
4
+ skills?: string[];
5
+ /** Agent identity string — used as `agentName` in the prompt. */
6
+ agentName?: string;
7
+ /** The high-level directive / role description block. */
8
+ directive?: string;
9
+ /** LLM client configuration (unchanged semantics). */
10
+ llmOptions?: {
11
+ model?: string;
12
+ maxTokens?: number;
13
+ };
14
+ /** If true, enable record_lesson tool and inject .xcoder/lesson.md context. */
15
+ lessonLearned?: boolean;
16
+ /** Pre-loaded lesson content (avoids re-reading .xcoder/lesson.md). */
17
+ lessonContext?: string;
18
+ }
19
+ export type OrchestratorState = 'IDLE' | 'THINKING' | 'EXECUTING_TOOL' | 'PAUSED' | 'COMPLETED' | 'FAILED';
20
+ export declare class GenesisReActOrchestrator extends EventEmitter {
21
+ private llm;
22
+ private opts;
23
+ private state;
24
+ private transcript;
25
+ private workspaceRoot;
26
+ private currentAbortController;
27
+ private interruptPending;
28
+ private cachedSystemPrompt?;
29
+ constructor(opts?: GenesisOrchestratorOptions);
30
+ getState(): OrchestratorState;
31
+ /**
32
+ * Triggers a non-blocking interrupt request. Aborts running operations immediately.
33
+ */
34
+ triggerInterrupt(): void;
35
+ /**
36
+ * Injects manual user steering into the transcript and resumes execution.
37
+ */
38
+ injectUserInput(userInput: string): void;
39
+ /**
40
+ * Builds the system prompt once, on first run call. Uses shared
41
+ * infrastructure: workspace index, project detection, environment info,
42
+ * tool manifest, and optionally external skills.
43
+ */
44
+ private buildSystemPrompt;
45
+ /**
46
+ * Runs the ReAct Orchestration Loop
47
+ */
48
+ run(initialTask: string): Promise<string>;
49
+ private performReasoningStep;
50
+ private handleInterruptPause;
51
+ private setState;
52
+ }
53
+ export declare class XcoderCLIController {
54
+ private orchestrator;
55
+ constructor(orchestrator: GenesisReActOrchestrator);
56
+ private setupEvents;
57
+ private setupKeypressHandler;
58
+ private disableRawMode;
59
+ private promptForInput;
60
+ start(task: string): Promise<void>;
61
+ }
@@ -0,0 +1,340 @@
1
+ // xcoder:version 2 | xcoder:task task-c49600 | xcoder:updated 2026-08-13T13:52:23.536Z | xcoder:subtask code-st-6d79ef
2
+ import * as readline from 'readline';
3
+ import { EventEmitter } from 'events';
4
+ import { createLlmClient } from "../llm/factory.js";
5
+ import { buildAgentSystemPrompt, parseReactMessage } from "../protocol/react-contract.js";
6
+ import { buildToolManifest, dispatchTool } from "../tools/tool-registry.js";
7
+ import { getOrBuildIndex } from "../tools/workspace-index.js";
8
+ import { detectProjectCommands } from "../tools/project-detect.js";
9
+ import { getEnvironmentInfo } from "../util/env-info.js";
10
+ import { isExternalSkillsEnabled, getExternalSkills } from "../skills/externalSkillLoader.js";
11
+ import { confirmInterrupt } from "../util/confirm-interrupt.js";
12
+ import { FooterManager } from "../util/footer-manager.js";
13
+ // ============================================================================
14
+ // ReAct Orchestrator Engine using LlmClient
15
+ // ============================================================================
16
+ export class GenesisReActOrchestrator extends EventEmitter {
17
+ llm;
18
+ opts;
19
+ state = 'IDLE';
20
+ transcript = [];
21
+ workspaceRoot;
22
+ currentAbortController = null;
23
+ interruptPending = false;
24
+ cachedSystemPrompt;
25
+ constructor(opts = {}) {
26
+ super();
27
+ this.opts = {
28
+ skills: [],
29
+ agentName: 'repl-agent',
30
+ directive: '',
31
+ lessonLearned: false,
32
+ ...opts,
33
+ llmOptions: opts.llmOptions ?? {},
34
+ };
35
+ this.llm = createLlmClient("orchestrator", this.opts.llmOptions);
36
+ this.workspaceRoot = process.cwd();
37
+ }
38
+ getState() {
39
+ return this.state;
40
+ }
41
+ /**
42
+ * Triggers a non-blocking interrupt request. Aborts running operations immediately.
43
+ */
44
+ triggerInterrupt() {
45
+ if (this.state === 'IDLE' || this.state === 'COMPLETED' || this.state === 'PAUSED') {
46
+ return;
47
+ }
48
+ this.interruptPending = true;
49
+ this.emit('interrupt:requested');
50
+ if (this.currentAbortController) {
51
+ this.currentAbortController.abort();
52
+ }
53
+ }
54
+ /**
55
+ * Injects manual user steering into the transcript and resumes execution.
56
+ */
57
+ injectUserInput(userInput) {
58
+ this.transcript.push({
59
+ role: 'user',
60
+ content: `[USER MANUAL INTERRUPT]: The user paused execution and provided this guidance: "${userInput}". Adjust your strategy accordingly.`,
61
+ });
62
+ this.interruptPending = false;
63
+ this.emit('input:injected', userInput);
64
+ }
65
+ /**
66
+ * Builds the system prompt once, on first run call. Uses shared
67
+ * infrastructure: workspace index, project detection, environment info,
68
+ * tool manifest, and optionally external skills.
69
+ */
70
+ async buildSystemPrompt() {
71
+ if (this.cachedSystemPrompt)
72
+ return this.cachedSystemPrompt;
73
+ const index = await getOrBuildIndex(this.workspaceRoot);
74
+ const detectedCommands = await detectProjectCommands(this.workspaceRoot, index);
75
+ const environment = getEnvironmentInfo();
76
+ let skills = this.opts.skills ?? [];
77
+ if (isExternalSkillsEnabled()) {
78
+ skills = [...skills, ...getExternalSkills()];
79
+ }
80
+ this.cachedSystemPrompt = buildAgentSystemPrompt({
81
+ agentName: this.opts.agentName ?? 'repl-agent',
82
+ roleDescription: this.opts.directive ?? '',
83
+ directive: this.opts.directive ?? '',
84
+ skills,
85
+ tools: buildToolManifest({ lessonLearned: this.opts.lessonLearned ?? false }),
86
+ environment,
87
+ detectedCommands,
88
+ goal: '(ad-hoc interactive task)',
89
+ lessonContext: this.opts.lessonContext,
90
+ isStandalone: true,
91
+ });
92
+ return this.cachedSystemPrompt;
93
+ }
94
+ /**
95
+ * Runs the ReAct Orchestration Loop
96
+ */
97
+ async run(initialTask) {
98
+ // Build system prompt before entering the loop.
99
+ try {
100
+ await this.buildSystemPrompt();
101
+ }
102
+ catch (err) {
103
+ this.setState('FAILED');
104
+ throw new Error(`Failed to build system prompt: ${err.message}`);
105
+ }
106
+ this.transcript.push({ role: 'user', content: initialTask });
107
+ while (this.state !== 'COMPLETED' && this.state !== 'FAILED') {
108
+ // 1. Check for manual interrupt
109
+ if (this.interruptPending) {
110
+ await this.handleInterruptPause();
111
+ }
112
+ // 2. THINKING PHASE (LLM Completion Call)
113
+ this.setState('THINKING');
114
+ this.currentAbortController = new AbortController();
115
+ let step;
116
+ try {
117
+ step = await this.performReasoningStep(this.currentAbortController.signal);
118
+ }
119
+ catch (err) {
120
+ if (err.name === 'AbortError' || this.interruptPending) {
121
+ await this.handleInterruptPause();
122
+ continue;
123
+ }
124
+ this.setState('FAILED');
125
+ throw err;
126
+ }
127
+ finally {
128
+ this.currentAbortController = null;
129
+ }
130
+ this.emit('thought', step.thought);
131
+ if (step.final_answer) {
132
+ this.setState('COMPLETED');
133
+ this.transcript.push({ role: 'assistant', content: step.final_answer.summary });
134
+ return step.final_answer.summary;
135
+ }
136
+ // 3. EXECUTING TOOL PHASE
137
+ if (step.action) {
138
+ const toolName = step.action.tool;
139
+ const toolInput = step.action.input;
140
+ // Append Assistant's intended action to transcript
141
+ this.transcript.push({
142
+ role: 'assistant',
143
+ content: `Thought: ${step.thought}\nAction: ${JSON.stringify(step.action)}`,
144
+ });
145
+ this.setState('EXECUTING_TOOL');
146
+ this.emit('action:start', step.action);
147
+ this.currentAbortController = new AbortController();
148
+ let observation;
149
+ try {
150
+ const result = await Promise.race([
151
+ dispatchTool(this.workspaceRoot, toolName, toolInput),
152
+ new Promise((_, reject) => {
153
+ this.currentAbortController.signal.addEventListener('abort', () => {
154
+ reject(new DOMException('Tool execution cancelled by user.', 'AbortError'));
155
+ });
156
+ }),
157
+ ]);
158
+ observation = result.ok
159
+ ? JSON.stringify(result.output)
160
+ : `Tool Error: ${typeof result.output === 'object' ? result.output?.error ?? 'unknown' : result.output}`;
161
+ }
162
+ catch (err) {
163
+ if (err.name === 'AbortError' || this.interruptPending) {
164
+ await this.handleInterruptPause();
165
+ continue;
166
+ }
167
+ observation = `Tool Error: ${err.message}`;
168
+ }
169
+ finally {
170
+ this.currentAbortController = null;
171
+ }
172
+ this.emit('action:end', toolName, observation);
173
+ // Append tool result as observation for the LLM's next turn
174
+ this.transcript.push({
175
+ role: 'user',
176
+ content: `Observation: ${observation}`,
177
+ });
178
+ }
179
+ }
180
+ throw new Error('ReAct orchestration loop terminated unexpectedly.');
181
+ }
182
+ async performReasoningStep(signal) {
183
+ const completionPromise = this.llm.complete(this.cachedSystemPrompt, this.transcript);
184
+ const completion = await Promise.race([
185
+ completionPromise,
186
+ new Promise((_, reject) => {
187
+ signal.addEventListener('abort', () => {
188
+ reject(new DOMException('LLM completion aborted by user interrupt.', 'AbortError'));
189
+ });
190
+ }),
191
+ ]);
192
+ const parsed = parseReactMessage(completion.text);
193
+ if (!parsed.ok) {
194
+ this.transcript.push({
195
+ role: 'user',
196
+ content: `protocol_error: ${parsed.error}`,
197
+ });
198
+ return { thought: parsed.error, action: null, final_answer: null };
199
+ }
200
+ return parsed.message;
201
+ }
202
+ async handleInterruptPause() {
203
+ this.setState('PAUSED');
204
+ this.emit('paused');
205
+ await new Promise((resolve) => {
206
+ const onInjected = () => {
207
+ this.removeListener('input:injected', onInjected);
208
+ resolve();
209
+ };
210
+ this.on('input:injected', onInjected);
211
+ });
212
+ }
213
+ setState(newState) {
214
+ this.state = newState;
215
+ this.emit('state:change', newState);
216
+ }
217
+ }
218
+ // ============================================================================
219
+ // Interactive CLI Controller
220
+ // ============================================================================
221
+ export class XcoderCLIController {
222
+ orchestrator;
223
+ constructor(orchestrator) {
224
+ this.orchestrator = orchestrator;
225
+ this.setupEvents();
226
+ }
227
+ setupEvents() {
228
+ this.orchestrator.on('thought', (thought) => {
229
+ console.log(`\n\x1b[35m[Thought]:\x1b[0m ${thought}`);
230
+ });
231
+ this.orchestrator.on('action:start', (action) => {
232
+ console.log(`\x1b[33m[Action]:\x1b[0m Running ${action.tool} with args: ${JSON.stringify(action.input)}`);
233
+ });
234
+ this.orchestrator.on('action:end', (_name, observation) => {
235
+ console.log(`\x1b[34m[Observation]:\x1b[0m ${observation}`);
236
+ });
237
+ this.orchestrator.on('interrupt:requested', () => {
238
+ console.log('\n\x1b[31m[!] Interrupt received. Halting operation...\x1b[0m');
239
+ });
240
+ this.orchestrator.on('paused', async () => {
241
+ await this.promptForInput();
242
+ });
243
+ }
244
+ setupKeypressHandler() {
245
+ // Non-TTY environments (piped stdin, CI, Docker, SEA binary) cannot
246
+ // support raw-mode keypress listeners. Return a no-op cleanup.
247
+ if (!process.stdin.isTTY) {
248
+ return () => { };
249
+ }
250
+ readline.emitKeypressEvents(process.stdin);
251
+ process.stdin.setRawMode(true);
252
+ const onKeypress = async (_str, key) => {
253
+ if (key.ctrl && key.name === 'c') {
254
+ this.disableRawMode();
255
+ console.log('\nProcess terminated.');
256
+ process.exit(0);
257
+ }
258
+ if (this.orchestrator.getState() !== 'PAUSED' &&
259
+ this.orchestrator.getState() !== 'COMPLETED' &&
260
+ (key.name === 'i' || key.name === 'return')) {
261
+ try {
262
+ // Disable raw mode so confirmInterrupt can read cooked input.
263
+ this.disableRawMode();
264
+ FooterManager.instance()?.hide();
265
+ const confirmed = await confirmInterrupt();
266
+ FooterManager.instance()?.show();
267
+ if (confirmed) {
268
+ this.orchestrator.triggerInterrupt();
269
+ }
270
+ }
271
+ catch {
272
+ // If the confirmation prompt itself fails, default to not interrupting.
273
+ }
274
+ finally {
275
+ // Re-enable raw mode for subsequent keypresses.
276
+ if (process.stdin.isTTY) {
277
+ process.stdin.setRawMode(true);
278
+ }
279
+ }
280
+ }
281
+ };
282
+ process.stdin.on('keypress', onKeypress);
283
+ return () => {
284
+ process.stdin.removeListener('keypress', onKeypress);
285
+ this.disableRawMode();
286
+ };
287
+ }
288
+ disableRawMode() {
289
+ if (process.stdin.isTTY) {
290
+ process.stdin.setRawMode(false);
291
+ }
292
+ }
293
+ async promptForInput() {
294
+ this.disableRawMode();
295
+ const rl = readline.createInterface({
296
+ input: process.stdin,
297
+ output: process.stdout,
298
+ });
299
+ return new Promise((resolve) => {
300
+ rl.question('\n\x1b[36m[XCODER INTERRUPT] Enter steering instructions:\x1b[0m ', (answer) => {
301
+ rl.close();
302
+ if (process.stdin.isTTY) {
303
+ process.stdin.setRawMode(true);
304
+ }
305
+ this.orchestrator.injectUserInput(answer.trim());
306
+ resolve();
307
+ });
308
+ });
309
+ }
310
+ async start(task) {
311
+ const cleanupKeyboard = this.setupKeypressHandler();
312
+ console.log(`\x1b[32m=== Xcoder SDLC Agent Orchestration Active ===\x1b[0m`);
313
+ console.log(`\x1b[90mPress \x1b[33m'i'\x1b[90m or \x1b[33m[Enter]\x1b[90m at any time to interrupt and send input.\x1b[0m\n`);
314
+ try {
315
+ const result = await this.orchestrator.run(task);
316
+ console.log(`\n\x1b[32m=== Result ===\x1b[0m\n${result}`);
317
+ }
318
+ catch (err) {
319
+ console.error(`\n\x1b[31m[Orchestrator Execution Failed]:\x1b[0m`, err.message);
320
+ }
321
+ finally {
322
+ cleanupKeyboard();
323
+ }
324
+ }
325
+ }
326
+ // ============================================================================
327
+ // Execution Example
328
+ // ============================================================================
329
+ async function main() {
330
+ const orchestrator = new GenesisReActOrchestrator({
331
+ agentName: 'repl-agent',
332
+ directive: 'You are the Xcoder SDLC ReAct Agent. Follow the response contract exactly.',
333
+ skills: [
334
+ 'Interactive problem-solving',
335
+ 'Tool-based exploration and execution',
336
+ ],
337
+ });
338
+ const cli = new XcoderCLIController(orchestrator);
339
+ await cli.start('Analyze repository structure and find bugs.');
340
+ }
@@ -0,0 +1,53 @@
1
+ import type { RaoStep, TokenUsage } from "../types.js";
2
+ import { LlmClient } from "../llm/client.js";
3
+ export interface SamuraiAgentOptions {
4
+ workspaceRoot: string;
5
+ llm: LlmClient;
6
+ maxIterations?: number;
7
+ model?: string;
8
+ /** Optional additional context injected into the system prompt (e.g. package.json contents). */
9
+ packageJsonContext?: string | null;
10
+ /** When true, writes protocol_error parse failures to protocol_error.log via logProtocolError(). Mirrors SubAgentOptions.protocolErrorLog. */
11
+ protocolErrorLog?: boolean;
12
+ /** When true, register record_lesson tool and inject lesson context. */
13
+ lessonLearned?: boolean;
14
+ /** Pre-loaded lesson content (avoid re-reading per run). */
15
+ lessonContext?: string;
16
+ }
17
+ export interface SamuraiResult {
18
+ summary: string;
19
+ deliverable: unknown;
20
+ filesTouched: string[];
21
+ raoTrace: RaoStep[];
22
+ tokenUsage: TokenUsage;
23
+ iterations: number;
24
+ crashed?: boolean;
25
+ stuckLoop?: boolean;
26
+ }
27
+ /**
28
+ * A standalone single-agent ReAct loop. Loads all registered tools, runs a
29
+ * conversation loop against the LLM, dispatches tool calls through the shared
30
+ * tool registry, and returns a result (or keeps looping in chat mode).
31
+ * Not coupled to SubtaskNode, TaskSpec, or the orchestrator.
32
+ */
33
+ export declare class SamuraiAgent {
34
+ private opts;
35
+ constructor(opts: SamuraiAgentOptions);
36
+ private buildPrompt;
37
+ private loop;
38
+ /**
39
+ * Run a single agent invocation for a given goal. Returns when the agent
40
+ * calls final_answer or exhausts iterations.
41
+ */
42
+ runOnce(goal: string, opts?: {
43
+ onStep?: (step: RaoStep) => void;
44
+ onTokens?: (cumulative: TokenUsage) => void;
45
+ }): Promise<SamuraiResult>;
46
+ /**
47
+ * Start an interactive REPL session. Reads lines from stdin, runs the agent
48
+ * loop per turn, and prints the result. The system prompt is built once
49
+ * and reused across turns; the transcript accumulates the full conversation
50
+ * (not cleared between user lines).
51
+ */
52
+ runChat(onChunk?: (text: string) => void): Promise<void>;
53
+ }