@christianmaf80/agentic-workflow 1.24.0-beta.3 → 1.25.0-beta.3

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 (215) hide show
  1. package/README.es.md +13 -57
  2. package/README.md +14 -56
  3. package/bin/cli.js +22 -29
  4. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/acceptance.md +0 -6
  5. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/agent-scores.md +0 -6
  6. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/agent-tasks/1-dev-agent-scaffold.md +0 -6
  7. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/agent-tasks/2-dev-agent-manifest-command.md +0 -6
  8. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/agent-tasks/3-dev-agent-marketplace-evidence.md +0 -6
  9. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/agent-tasks/4-qa-agent-verify-build.md +0 -6
  10. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/analysis.md +0 -6
  11. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/architect/review.md +0 -6
  12. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/metrics.md +0 -6
  13. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/plan.md +0 -6
  14. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/researcher/research.md +0 -6
  15. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/results-acceptance.md +0 -6
  16. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/task.md +0 -6
  17. package/dist/agent/artifacts/1-scaffold-extension-vscode-agentinc/verification.md +0 -6
  18. package/dist/agent/artifacts/11-refinement-capas-constitution/analysis.md +24 -0
  19. package/dist/agent/artifacts/11-refinement-capas-constitution/roadmap-audit.md +34 -0
  20. package/dist/agent/artifacts/11-refinement-capas-constitution/task.md +58 -0
  21. package/dist/agent/artifacts/12-npm-workspaces/acceptance.md +78 -0
  22. package/dist/agent/artifacts/12-npm-workspaces/analysis.md +179 -0
  23. package/dist/agent/artifacts/12-npm-workspaces/plan.md +237 -0
  24. package/dist/agent/artifacts/12-npm-workspaces/researcher/research.md +186 -0
  25. package/dist/agent/artifacts/12-npm-workspaces/task.md +126 -0
  26. package/dist/agent/artifacts/13-implement-custom-chat-with-a2ui/acceptance.md +75 -0
  27. package/dist/agent/artifacts/13-implement-custom-chat-with-a2ui/researcher/research.md +121 -0
  28. package/dist/agent/artifacts/13-implement-custom-chat-with-a2ui/task.md +104 -0
  29. package/dist/agent/artifacts/14-re-implement-setup-config-d1/acceptance.md +75 -0
  30. package/dist/agent/artifacts/14-re-implement-setup-config-d1/architect/analysis.md +90 -0
  31. package/dist/agent/artifacts/14-re-implement-setup-config-d1/planner/implementation_plan.md +44 -0
  32. package/dist/agent/artifacts/14-re-implement-setup-config-d1/researcher/research.md +113 -0
  33. package/dist/agent/artifacts/14-re-implement-setup-config-d1/task.md +107 -0
  34. package/dist/agent/artifacts/14-re-implement-setup-config-d1/verification/walkthrough.md +37 -0
  35. package/dist/agent/artifacts/14-re-implement-setup-config-d1/verifier/walkthrough.md +0 -0
  36. package/dist/agent/artifacts/2-scaffold-vscode-chat-ai-panel/acceptance.md +0 -6
  37. package/dist/agent/artifacts/2-scaffold-vscode-chat-ai-panel/task.md +0 -6
  38. package/dist/agent/artifacts/3-new-vscode-agentic-activitybar-chat/acceptance.md +0 -6
  39. package/dist/agent/artifacts/3-new-vscode-agentic-activitybar-chat/task.md +0 -6
  40. package/dist/agent/artifacts/4-copiar-estructura-agentic-cliente/acceptance.md +0 -6
  41. package/dist/agent/artifacts/4-copiar-estructura-agentic-cliente/architect/implementation.md +0 -6
  42. package/dist/agent/artifacts/5-reestructurar-src-para-extension-vscode/acceptance.md +0 -6
  43. package/dist/agent/artifacts/5-reestructurar-src-para-extension-vscode/agent-tasks/1-dev-agent-reestructurar-carpetas.md +1 -1
  44. package/dist/agent/artifacts/5-reestructurar-src-para-extension-vscode/task.md +0 -6
  45. package/dist/agent/artifacts/6-release-beta-11/task.md +0 -6
  46. package/dist/agent/artifacts/7-extension-vscode-webview/acceptance.md +70 -0
  47. package/dist/agent/artifacts/7-extension-vscode-webview/agent-scores.md +24 -0
  48. package/dist/agent/artifacts/7-extension-vscode-webview/agent-tasks/1-vscode-specialist-scaffold-extension.md +99 -0
  49. package/dist/agent/artifacts/7-extension-vscode-webview/agent-tasks/2-vscode-specialist-update-manifest.md +101 -0
  50. package/dist/agent/artifacts/7-extension-vscode-webview/agent-tasks/3-vscode-specialist-webview-provider.md +96 -0
  51. package/dist/agent/artifacts/7-extension-vscode-webview/agent-tasks/4-vscode-specialist-activitybar-icon.md +95 -0
  52. package/dist/agent/artifacts/7-extension-vscode-webview/agent-tasks/5-qa-agent-manual-verify.md +97 -0
  53. package/dist/agent/artifacts/7-extension-vscode-webview/analysis.md +195 -0
  54. package/dist/agent/artifacts/7-extension-vscode-webview/architect/review.md +124 -0
  55. package/dist/agent/artifacts/7-extension-vscode-webview/changelog.md +9 -0
  56. package/dist/agent/artifacts/7-extension-vscode-webview/metrics.md +43 -0
  57. package/dist/agent/artifacts/7-extension-vscode-webview/plan.md +181 -0
  58. package/dist/agent/artifacts/7-extension-vscode-webview/researcher/research.md +118 -0
  59. package/dist/agent/artifacts/7-extension-vscode-webview/results-acceptance.md +146 -0
  60. package/dist/agent/artifacts/7-extension-vscode-webview/task.md +119 -0
  61. package/dist/agent/artifacts/7-extension-vscode-webview/verification.md +81 -0
  62. package/dist/agent/artifacts/8-create-agentic-runtime-cli-first-as-the-single-execution-engine/task.md +126 -0
  63. package/dist/agent/artifacts/candidate/acceptance.md +23 -0
  64. package/dist/agent/artifacts/candidate/brief.md +39 -0
  65. package/dist/agent/artifacts/candidate/init.md +3 -9
  66. package/dist/agent/artifacts/candidate/task.md +4 -71
  67. package/dist/agent/artifacts/task-20260128-reorganize-structure/acceptance.md +0 -6
  68. package/dist/agent/artifacts/task-20260128-reorganize-structure/brief.md +1 -1
  69. package/dist/agent/artifacts/task-20260128-reorganize-structure/closure.md +3 -3
  70. package/dist/agent/artifacts/task-20260128-reorganize-structure/implementation.md +2 -2
  71. package/dist/agent/artifacts/task-20260128-reorganize-structure/task.md +0 -6
  72. package/dist/agent/artifacts/task-20260130-chatkit-mainview/acceptance.md +65 -0
  73. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-scores.md +26 -0
  74. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/1-neo-agent-deps-chatkit.md +108 -0
  75. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/15-vscode-specialist-views-router.md +89 -0
  76. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/1b-vscode-specialist-review-deps.md +106 -0
  77. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/2-neo-agent-local-server.md +111 -0
  78. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/22-vscode-specialist-external-js.md +84 -0
  79. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/23-qa-agent-coverage-tests.md +85 -0
  80. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/24-vscode-specialist-class-refactor.md +84 -0
  81. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/25-vscode-specialist-external-html.md +88 -0
  82. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/26-vscode-specialist-template-js-html.md +110 -0
  83. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/27-vscode-specialist-fix-loading-setup.md +110 -0
  84. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/28-vscode-specialist-webview-debug-setup.md +107 -0
  85. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/29-vscode-specialist-webview-logging.md +109 -0
  86. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/3-neo-agent-webview-ui.md +107 -0
  87. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/30-vscode-specialist-csp-source.md +88 -0
  88. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/31-vscode-specialist-logging-prefix.md +83 -0
  89. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/32-vscode-specialist-logging-visibility.md +85 -0
  90. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/33-vscode-specialist-lit-setup.md +85 -0
  91. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/34-vscode-specialist-core-lit-base.md +89 -0
  92. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/35-vscode-specialist-lit-decorators-ts.md +88 -0
  93. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/36-vscode-specialist-lit-module-start.md +85 -0
  94. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/37-vscode-specialist-lit-ready-state.md +86 -0
  95. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/4-qa-agent-verification.md +106 -0
  96. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/5-vscode-specialist-api-key-ui.md +107 -0
  97. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/6-vscode-specialist-refactor-protocol.md +108 -0
  98. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/7-qa-agent-unit-tests.md +104 -0
  99. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-10-vscode-specialist-api-key-handshake.md +84 -0
  100. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-11-vscode-specialist-api-key-button-style.md +83 -0
  101. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-12-vscode-specialist-key-gate-view.md +84 -0
  102. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-13-vscode-specialist-status-timeout.md +83 -0
  103. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-14-vscode-specialist-init-flow.md +84 -0
  104. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-16-vscode-specialist-view-context.md +87 -0
  105. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-17-vscode-specialist-clear-key-command.md +85 -0
  106. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-18-vscode-specialist-context-sync.md +84 -0
  107. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-19-vscode-specialist-setup-visible.md +88 -0
  108. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-20-vscode-specialist-loading-state.md +83 -0
  109. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-21-vscode-specialist-loading-label.md +84 -0
  110. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-8-vscode-specialist-api-key-detect.md +89 -0
  111. package/dist/agent/artifacts/task-20260130-chatkit-mainview/agent-tasks/fix-9-vscode-specialist-api-key-state.md +84 -0
  112. package/dist/agent/artifacts/task-20260130-chatkit-mainview/analysis.md +156 -0
  113. package/dist/agent/artifacts/task-20260130-chatkit-mainview/architect/review.md +141 -0
  114. package/dist/agent/artifacts/task-20260130-chatkit-mainview/changelog.md +30 -0
  115. package/dist/agent/artifacts/task-20260130-chatkit-mainview/metrics.md +43 -0
  116. package/dist/agent/artifacts/task-20260130-chatkit-mainview/plan.md +151 -0
  117. package/dist/agent/artifacts/task-20260130-chatkit-mainview/research.md +115 -0
  118. package/dist/agent/artifacts/task-20260130-chatkit-mainview/results-acceptance.md +171 -0
  119. package/dist/agent/artifacts/task-20260130-chatkit-mainview/verification.md +87 -0
  120. package/dist/agent/artifacts/task-20260130-fix-mainview-provider/acceptance.md +64 -0
  121. package/dist/agent/artifacts/task-20260130-fix-mainview-provider/architect/implementation.md +30 -0
  122. package/dist/agent/artifacts/task-20260130-fix-mainview-provider/brief.md +102 -0
  123. package/dist/agent/artifacts/task-20260130-fix-mainview-provider/closure.md +95 -0
  124. package/dist/agent/artifacts/task-20260130-rol-vscode/acceptance.md +68 -0
  125. package/dist/agent/artifacts/task-20260130-rol-vscode/architect/implementation.md +33 -0
  126. package/dist/agent/artifacts/task-20260130-rol-vscode/brief.md +104 -0
  127. package/dist/agent/artifacts/task-20260130-rol-vscode/closure.md +100 -0
  128. package/dist/agent/artifacts/task-beta-release/acceptance.md +23 -0
  129. package/dist/agent/artifacts/task-beta-release/brief.md +39 -0
  130. package/dist/agent/artifacts/task-beta-release/closure.md +29 -0
  131. package/dist/agent/artifacts/task-beta-release/init.md +26 -0
  132. package/dist/agent/artifacts/task-beta-release/task.md +64 -0
  133. package/dist/agent/index.md +69 -30
  134. package/dist/agent/rules/constitution/agents-behavior.md +110 -100
  135. package/dist/agent/rules/constitution/backend.md +27 -0
  136. package/dist/agent/rules/constitution/background.md +30 -0
  137. package/dist/agent/rules/constitution/clean-code.md +5 -6
  138. package/dist/agent/rules/constitution/modular-architecture.md +66 -0
  139. package/dist/agent/rules/constitution/view.md +41 -0
  140. package/dist/agent/rules/constitution/vscode-extensions.md +32 -0
  141. package/dist/agent/rules/roles/architect.md +1 -2
  142. package/dist/agent/rules/roles/backend.md +21 -0
  143. package/dist/agent/rules/roles/background.md +20 -0
  144. package/dist/agent/rules/roles/devops.md +20 -0
  145. package/dist/agent/rules/roles/engine.md +26 -0
  146. package/dist/agent/rules/roles/neo.md +12 -13
  147. package/dist/agent/rules/roles/researcher.md +2 -2
  148. package/dist/agent/rules/roles/view.md +22 -0
  149. package/dist/agent/rules/roles/vscode-specialist.md +24 -0
  150. package/dist/agent/templates/acceptance.md +19 -25
  151. package/dist/agent/templates/agent-task.md +39 -39
  152. package/dist/agent/templates/analysis.md +92 -92
  153. package/dist/agent/templates/brief.md +43 -43
  154. package/dist/agent/templates/changelog.md +8 -8
  155. package/dist/agent/templates/closure.md +29 -29
  156. package/dist/agent/templates/coding/coding-integration-report.md +102 -0
  157. package/dist/agent/templates/coding/coding-layer-report.md +78 -0
  158. package/dist/agent/templates/init.md +0 -6
  159. package/dist/agent/templates/planning.md +73 -73
  160. package/dist/agent/templates/research.md +43 -43
  161. package/dist/agent/templates/results-acceptance.md +94 -94
  162. package/dist/agent/templates/review.md +59 -59
  163. package/dist/agent/templates/subtask-implementation.md +29 -29
  164. package/dist/agent/templates/supplemental-report.md +0 -6
  165. package/dist/agent/templates/task-metrics.md +14 -14
  166. package/dist/agent/templates/task.md +15 -15
  167. package/dist/agent/templates/todo-item.md +23 -23
  168. package/dist/agent/workflows/coding/coding-backend.md +147 -0
  169. package/dist/agent/workflows/coding/coding-background.md +149 -0
  170. package/dist/agent/workflows/coding/coding-integration.md +174 -0
  171. package/dist/agent/workflows/coding/coding-view.md +151 -0
  172. package/dist/agent/workflows/init.md +83 -90
  173. package/dist/agent/workflows/scaffold-module.md +38 -0
  174. package/dist/agent/workflows/tasklifecycle-long/phase-0-acceptance-criteria.md +124 -134
  175. package/dist/agent/workflows/tasklifecycle-long/phase-1-research.md +103 -97
  176. package/dist/agent/workflows/tasklifecycle-long/phase-2-analysis.md +107 -102
  177. package/dist/agent/workflows/tasklifecycle-long/phase-3-planning.md +125 -120
  178. package/dist/agent/workflows/tasklifecycle-long/phase-4-implementation.md +118 -118
  179. package/dist/agent/workflows/tasklifecycle-long/phase-5-verification.md +105 -101
  180. package/dist/agent/workflows/tasklifecycle-long/phase-6-results-acceptance.md +82 -78
  181. package/dist/agent/workflows/tasklifecycle-long/phase-7-evaluation.md +84 -75
  182. package/dist/agent/workflows/tasklifecycle-long/phase-8-commit-push.md +94 -89
  183. package/dist/agent/workflows/tasklifecycle-short/short-phase-1-brief.md +78 -71
  184. package/dist/agent/workflows/tasklifecycle-short/short-phase-2-implementation.md +79 -71
  185. package/dist/agent/workflows/tasklifecycle-short/short-phase-3-closure.md +73 -66
  186. package/dist/cli/commands/create.js +4 -29
  187. package/dist/cli/commands/create.js.map +1 -1
  188. package/dist/cli/commands/mcp.js +0 -6
  189. package/dist/cli/commands/mcp.js.map +1 -1
  190. package/dist/runtime/engine/engine.js +29 -57
  191. package/dist/runtime/engine/engine.js.map +1 -1
  192. package/dist/runtime/engine/service.js +1 -38
  193. package/dist/runtime/engine/service.js.map +1 -1
  194. package/dist/runtime/engine/task-loader.js +1 -1
  195. package/dist/runtime/engine/task-loader.js.map +1 -1
  196. package/dist/runtime/engine/workflow-loader.js +17 -25
  197. package/dist/runtime/engine/workflow-loader.js.map +1 -1
  198. package/dist/runtime/mcp/server.js +38 -277
  199. package/dist/runtime/mcp/server.js.map +1 -1
  200. package/package.json +69 -7
  201. package/dist/agent/artifacts/index.md +0 -25
  202. package/dist/agent/rules/constitution/index.md +0 -26
  203. package/dist/agent/rules/constitution/runtime-integration.md +0 -101
  204. package/dist/agent/rules/index.md +0 -70
  205. package/dist/agent/rules/roles/index.md +0 -44
  206. package/dist/agent/templates/index.md +0 -42
  207. package/dist/agent/workflows/index.md +0 -30
  208. package/dist/agent/workflows/tasklifecycle-long/index.md +0 -172
  209. package/dist/agent/workflows/tasklifecycle-short/index.md +0 -70
  210. package/dist/cli/commands/register-mcp.js +0 -116
  211. package/dist/cli/commands/register-mcp.js.map +0 -1
  212. package/dist/runtime/engine/logger.js +0 -74
  213. package/dist/runtime/engine/logger.js.map +0 -1
  214. package/dist/runtime/mcp/check-tools.js +0 -66
  215. package/dist/runtime/mcp/check-tools.js.map +0 -1
@@ -3,7 +3,6 @@ import path from 'node:path';
3
3
  import { RuntimeEmitter } from './emitter.js';
4
4
  import { RuntimeEngine } from './engine.js';
5
5
  import { StateStore } from './state-store.js';
6
- import { Logger } from './logger.js';
7
6
  import { loadTask, resolveWorkflowsRoot } from './task-loader.js';
8
7
  import { resolvePhaseWorkflow } from './workflow-loader.js';
9
8
  export async function runRuntime(options) {
@@ -37,16 +36,7 @@ export async function runRuntime(options) {
37
36
  });
38
37
  const store = new StateStore(statePath);
39
38
  const engine = new RuntimeEngine({ emitter, stateStore: store });
40
- Logger.info('Service', 'Runtime starting execution', { runId, taskPath, agent: options.agent });
41
- try {
42
- const result = await engine.run(state, workflow);
43
- Logger.info('Service', 'Runtime execution finished', { runId, status: result.status });
44
- return result;
45
- }
46
- catch (error) {
47
- Logger.error('Service', 'Runtime execution failed', { runId, error: String(error) });
48
- throw error;
49
- }
39
+ return engine.run(state, workflow);
50
40
  }
51
41
  export async function resumeRuntime(options) {
52
42
  const taskPath = path.resolve(options.taskPath);
@@ -74,33 +64,6 @@ export async function resumeRuntime(options) {
74
64
  const engine = new RuntimeEngine({ emitter, stateStore: store });
75
65
  return engine.run(state, workflow);
76
66
  }
77
- export async function stepRuntime(options) {
78
- const taskPath = path.resolve(options.taskPath);
79
- const task = await loadTask(taskPath);
80
- ensureOwner(task.owner, options.agent);
81
- const statePath = resolveStatePath(taskPath, options.statePath);
82
- const store = new StateStore(statePath);
83
- const state = await store.load();
84
- if (!state) {
85
- throw new Error('No persisted state found to resume.');
86
- }
87
- if (state.taskPath !== taskPath) {
88
- throw new Error('State does not match the provided task path.');
89
- }
90
- const workflowsRoot = resolveWorkflowsRoot(path.dirname(taskPath));
91
- const mapping = await resolvePhaseWorkflow(workflowsRoot, state.phase);
92
- if (!mapping) {
93
- throw new Error(`No workflow mapping found for phase ${state.phase}.`);
94
- }
95
- const workflow = { id: mapping.phaseId, path: mapping.workflowPath };
96
- const emitter = new RuntimeEmitter({
97
- eventsPath: options.eventsPath,
98
- stdout: options.stdoutEvents ?? true
99
- });
100
- const engine = new RuntimeEngine({ emitter, stateStore: store });
101
- Logger.info('Service', 'Runtime stepping execution', { runId: state.runId, taskId: task.id });
102
- return engine.step(state, workflow);
103
- }
104
67
  function resolveStatePath(taskPath, override) {
105
68
  if (override) {
106
69
  return path.resolve(override);
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/runtime/engine/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/runtime/engine/service.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export async function loadTask(taskPath) {
9
9
  const task = yaml.task ?? {};
10
10
  const id = task.id ?? meta.id ?? '';
11
11
  const title = task.title ?? meta.title ?? '';
12
- const phase = task.phase?.current ?? meta.phase?.current ?? meta['phase.current'] ?? '';
12
+ const phase = task.phase?.current ?? '';
13
13
  const owner = meta.owner ?? extractOwner(raw) ?? '';
14
14
  if (!id || !title || !phase || !owner) {
15
15
  throw new Error('Task file missing required fields (id/title/owner/phase.current).');
@@ -1 +1 @@
1
- {"version":3,"file":"task-loader.js","sourceRoot":"","sources":["../../../src/runtime/engine/task-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-loader.js","sourceRoot":"","sources":["../../../src/runtime/engine/task-loader.ts"],"names":[],"mappings":"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"}
@@ -33,39 +33,31 @@ export async function loadWorkflows(workflowsRoot) {
33
33
  return workflows;
34
34
  }
35
35
  export async function resolvePhaseWorkflow(workflowsRoot, phaseId) {
36
- const strategies = ['tasklifecycle-long', 'tasklifecycle-short'];
37
- for (const strategy of strategies) {
38
- try {
39
- const indexPath = path.join(workflowsRoot, strategy, 'index.md');
40
- const raw = await fs.readFile(indexPath, 'utf-8');
41
- const { data } = matter(raw);
42
- const phases = extractPhases(data, strategy) ?? extractPhases(extractYamlBlock(raw), strategy);
43
- if (phases && typeof phases === 'object') {
44
- for (const phaseKey of Object.keys(phases)) {
45
- const phase = phases[phaseKey];
46
- if (phase?.id === phaseId && typeof phase.workflow === 'string') {
47
- const workflowPath = resolveWorkflowPath(workflowsRoot, phase.workflow);
48
- return {
49
- phaseId,
50
- workflowPath
51
- };
52
- }
53
- }
54
- }
55
- }
56
- catch (error) {
57
- // Index for strategy might not exist or be unreadable, skip
58
- continue;
36
+ const indexPath = path.join(workflowsRoot, 'tasklifecycle-long', 'index.md');
37
+ const raw = await fs.readFile(indexPath, 'utf-8');
38
+ const { data } = matter(raw);
39
+ const phases = extractPhases(data) ?? extractPhases(extractYamlBlock(raw));
40
+ if (!phases || typeof phases !== 'object') {
41
+ return null;
42
+ }
43
+ for (const phaseKey of Object.keys(phases)) {
44
+ const phase = phases[phaseKey];
45
+ if (phase?.id === phaseId && typeof phase.workflow === 'string') {
46
+ const workflowPath = resolveWorkflowPath(workflowsRoot, phase.workflow);
47
+ return {
48
+ phaseId,
49
+ workflowPath
50
+ };
59
51
  }
60
52
  }
61
53
  return null;
62
54
  }
63
- function extractPhases(source, strategy) {
55
+ function extractPhases(source) {
64
56
  if (!source || typeof source !== 'object') {
65
57
  return null;
66
58
  }
67
59
  const aliases = source.aliases;
68
- const phases = aliases?.[strategy]?.phases;
60
+ const phases = aliases?.['tasklifecycle-long']?.phases;
69
61
  return phases && typeof phases === 'object' ? phases : null;
70
62
  }
71
63
  function extractYamlBlock(markdown) {
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-loader.js","sourceRoot":"","sources":["../../../src/runtime/engine/workflow-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-loader.js","sourceRoot":"","sources":["../../../src/runtime/engine/workflow-loader.ts"],"names":[],"mappings":"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"}
@@ -5,82 +5,8 @@ import matter from 'gray-matter';
5
5
  import { RuntimeEmitter } from '../engine/emitter.js';
6
6
  import { loadWorkflows } from '../engine/workflow-loader.js';
7
7
  import { loadTask, resolveWorkflowsRoot } from '../engine/task-loader.js';
8
- import { runRuntime, resumeRuntime, stepRuntime } from '../engine/service.js';
9
- import { Logger } from '../engine/logger.js';
10
- const MCP_TOOLS = [
11
- {
12
- name: 'runtime_run',
13
- description: 'Start a new workflow runtime execution',
14
- inputSchema: {
15
- type: 'object',
16
- properties: {
17
- taskPath: { type: 'string', description: 'Path to task.md file' },
18
- agent: { type: 'string', description: 'Agent identifier' }
19
- },
20
- required: ['taskPath', 'agent']
21
- }
22
- },
23
- {
24
- name: 'runtime_chat',
25
- description: 'Send a chat message to the runtime',
26
- inputSchema: {
27
- type: 'object',
28
- properties: {
29
- message: { type: 'string', description: 'Chat message content' },
30
- role: { type: 'string', description: 'Message role (user/assistant)' }
31
- },
32
- required: ['message']
33
- }
34
- },
35
- {
36
- name: 'runtime_list_workflows',
37
- description: 'List available workflows',
38
- inputSchema: {
39
- type: 'object',
40
- properties: {
41
- workflowsRoot: { type: 'string', description: 'Path to workflows directory' }
42
- },
43
- required: ['workflowsRoot']
44
- }
45
- },
46
- {
47
- name: 'runtime_validate_gate',
48
- description: 'Validate a workflow gate',
49
- inputSchema: {
50
- type: 'object',
51
- properties: {
52
- taskPath: { type: 'string' },
53
- agent: { type: 'string' },
54
- expectedPhase: { type: 'string' }
55
- },
56
- required: ['taskPath', 'agent']
57
- }
58
- },
59
- {
60
- name: 'runtime_advance_phase',
61
- description: 'Advance to the next workflow phase',
62
- inputSchema: {
63
- type: 'object',
64
- properties: {
65
- taskPath: { type: 'string' },
66
- agent: { type: 'string' }
67
- },
68
- required: ['taskPath', 'agent']
69
- }
70
- },
71
- {
72
- name: 'debug_read_logs',
73
- description: 'Read runtime debug logs',
74
- inputSchema: {
75
- type: 'object',
76
- properties: {
77
- limit: { type: 'number', description: 'Max logs to return' }
78
- }
79
- }
80
- }
81
- ];
8
+ import { runRuntime, resumeRuntime } from '../engine/service.js';
82
9
  export async function startRuntimeMcpServer() {
83
- Logger.info('MCP', 'Server started via stdio transport. Waiting for JSON-RPC messages...');
84
10
  const rl = readline.createInterface({ input: process.stdin, crlfDelay: Infinity });
85
11
  for await (const line of rl) {
86
12
  const trimmed = line.trim();
@@ -94,36 +20,21 @@ async function handleRequest(line) {
94
20
  let request;
95
21
  try {
96
22
  request = JSON.parse(line);
97
- Logger.debug('MCP', 'Received request', { id: request.id, method: request.method });
98
23
  }
99
24
  catch (error) {
100
- writeResponse({ jsonrpc: '2.0', id: 'unknown', error: { code: -32700, message: 'Invalid JSON request.' } });
101
- return;
102
- }
103
- // Notifications (no id) don't require a response
104
- if (request.id === undefined || request.id === null) {
105
- Logger.debug('MCP', 'Received notification, no response needed', { method: request.method });
25
+ writeResponse({ id: 'unknown', error: { message: 'Invalid JSON request.' } });
106
26
  return;
107
27
  }
108
28
  try {
109
29
  const result = await dispatchRequest(request);
110
- writeResponse({ jsonrpc: '2.0', id: request.id, result });
30
+ writeResponse({ id: request.id, result });
111
31
  }
112
32
  catch (error) {
113
- Logger.error('MCP', `Request failed: ${request.method}`, { id: request.id, error: formatError(error) });
114
- writeResponse({ jsonrpc: '2.0', id: request.id, error: { code: -32603, message: formatError(error) } });
33
+ writeResponse({ id: request.id, error: { message: formatError(error) } });
115
34
  }
116
35
  }
117
36
  async function dispatchRequest(request) {
118
37
  switch (request.method) {
119
- // MCP Standard Protocol
120
- case 'initialize':
121
- return handleInitialize();
122
- case 'tools/list':
123
- return handleToolsList();
124
- case 'tools/call':
125
- return handleToolsCall(request.params ?? {});
126
- // Runtime-specific methods (via tools/call)
127
38
  case 'runtime.run':
128
39
  return handleRun(request.params ?? {});
129
40
  case 'runtime.resume':
@@ -140,58 +51,15 @@ async function dispatchRequest(request) {
140
51
  return handleEmitEvent(request.params ?? {});
141
52
  case 'runtime.chat':
142
53
  return handleChat(request.params ?? {});
143
- case 'runtime.next_step':
144
- return handleNextStep(request.params ?? {});
145
- case 'runtime.complete_step':
146
- return handleCompleteStep(request.params ?? {});
147
- case 'debug_read_logs':
148
- return handleDebugReadLogs(request.params ?? {});
149
54
  default:
150
55
  throw new Error(`Unknown method: ${request.method}`);
151
56
  }
152
57
  }
153
- function handleInitialize() {
154
- return {
155
- protocolVersion: '2024-11-05',
156
- capabilities: {
157
- tools: {}
158
- },
159
- serverInfo: {
160
- name: 'agentic-workflow',
161
- version: '1.0.0'
162
- }
163
- };
164
- }
165
- function handleToolsList() {
166
- return { tools: MCP_TOOLS };
167
- }
168
- async function handleToolsCall(params) {
169
- const toolName = ensureString(params.name, 'name');
170
- const args = (params.arguments ?? {});
171
- switch (toolName) {
172
- case 'runtime_run':
173
- return handleRun(args);
174
- case 'runtime_chat':
175
- return handleChat(args);
176
- case 'runtime_list_workflows':
177
- return handleListWorkflows(args);
178
- case 'runtime_validate_gate':
179
- return handleValidateGate(args);
180
- case 'runtime_advance_phase':
181
- return handleAdvancePhase(args);
182
- case 'debug_read_logs':
183
- return handleDebugReadLogs(args);
184
- default:
185
- Logger.error('MCP', `Unknown tool called: ${toolName}`);
186
- throw new Error(`Unknown tool: ${toolName}`);
187
- }
188
- }
189
58
  async function handleRun(params) {
190
59
  const taskPath = ensureString(params.taskPath, 'taskPath');
191
60
  const agent = ensureString(params.agent, 'agent');
192
61
  const statePath = getOptionalString(params.statePath);
193
62
  const eventsPath = getOptionalString(params.eventsPath);
194
- Logger.info('MCP', `Tool called: runtime_run`, { taskPath, agent });
195
63
  const result = await runRuntime({
196
64
  taskPath,
197
65
  agent,
@@ -199,14 +67,7 @@ async function handleRun(params) {
199
67
  eventsPath,
200
68
  stdoutEvents: false
201
69
  });
202
- return {
203
- content: [
204
- {
205
- type: 'text',
206
- text: JSON.stringify({ status: 'ok', runId: result.runId, phase: result.phase })
207
- }
208
- ]
209
- };
70
+ return { status: 'ok', runId: result.runId, phase: result.phase };
210
71
  }
211
72
  async function handleResume(params) {
212
73
  const taskPath = ensureString(params.taskPath, 'taskPath');
@@ -222,92 +83,32 @@ async function handleResume(params) {
222
83
  });
223
84
  return { status: 'ok', runId: result.runId, phase: result.phase };
224
85
  }
225
- async function handleNextStep(params) {
226
- const taskPath = ensureString(params.taskPath, 'taskPath');
227
- const agent = ensureString(params.agent, 'agent');
228
- const statePath = getOptionalString(params.statePath);
229
- const eventsPath = getOptionalString(params.eventsPath);
230
- const result = await stepRuntime({
231
- taskPath,
232
- agent,
233
- statePath,
234
- eventsPath,
235
- stdoutEvents: false
236
- });
237
- return { status: 'ok', runId: result.runId, phase: result.phase, step: result.steps.find(s => s.status === 'completed' || s.status === 'failed') };
238
- }
239
- async function handleCompleteStep(params) {
240
- return { status: 'ok', message: 'Step completion acknowledged (logic pending specific requirement).' };
241
- }
242
86
  async function handleGetState(params) {
243
87
  const statePath = ensureString(params.statePath, 'statePath');
244
- const rawState = await fs.readFile(path.resolve(statePath), 'utf-8');
245
- const state = JSON.parse(rawState);
246
- // Enrich with task content
247
- let taskContent = '';
248
- try {
249
- if (state.taskPath) {
250
- taskContent = await fs.readFile(state.taskPath, 'utf-8');
251
- }
252
- }
253
- catch (e) {
254
- // Ignore if task file not found
255
- }
256
- return { ...state, taskContent };
88
+ const raw = await fs.readFile(path.resolve(statePath), 'utf-8');
89
+ return JSON.parse(raw);
257
90
  }
258
91
  async function handleListWorkflows(params) {
259
92
  const workflowsRoot = ensureString(params.workflowsRoot, 'workflowsRoot');
260
- Logger.info('MCP', `Tool called: runtime_list_workflows`, { workflowsRoot });
261
- const workflows = await loadWorkflows(workflowsRoot);
262
- return {
263
- content: [
264
- {
265
- type: 'text',
266
- text: JSON.stringify(workflows)
267
- }
268
- ]
269
- };
93
+ return loadWorkflows(workflowsRoot);
270
94
  }
271
95
  async function handleValidateGate(params) {
272
96
  const taskPath = ensureString(params.taskPath, 'taskPath');
273
97
  const agent = ensureString(params.agent, 'agent');
274
98
  const expectedPhase = getOptionalString(params.expectedPhase);
275
- Logger.info('MCP', `Tool called: runtime_validate_gate`, { taskPath, agent, expectedPhase });
276
99
  const task = await loadTask(taskPath);
277
100
  if (task.owner !== agent) {
278
- return {
279
- content: [
280
- {
281
- type: 'text',
282
- text: JSON.stringify({ valid: false, reason: 'Agent mismatch.' })
283
- }
284
- ]
285
- };
101
+ return { valid: false, reason: 'Agent mismatch.' };
286
102
  }
287
103
  if (expectedPhase && task.phase !== expectedPhase) {
288
- return {
289
- content: [
290
- {
291
- type: 'text',
292
- text: JSON.stringify({ valid: false, reason: `Phase mismatch. Current: ${task.phase}.` })
293
- }
294
- ]
295
- };
104
+ return { valid: false, reason: `Phase mismatch. Current: ${task.phase}.` };
296
105
  }
297
- return {
298
- content: [
299
- {
300
- type: 'text',
301
- text: JSON.stringify({ valid: true })
302
- }
303
- ]
304
- };
106
+ return { valid: true };
305
107
  }
306
108
  async function handleAdvancePhase(params) {
307
109
  const taskPath = ensureString(params.taskPath, 'taskPath');
308
110
  const agent = ensureString(params.agent, 'agent');
309
111
  const eventsPath = getOptionalString(params.eventsPath);
310
- Logger.info('MCP', `Tool called: runtime_advance_phase`, { taskPath, agent });
311
112
  const task = await loadTask(taskPath);
312
113
  if (task.owner !== agent) {
313
114
  throw new Error('Agent mismatch.');
@@ -323,14 +124,7 @@ async function handleAdvancePhase(params) {
323
124
  phase: nextPhase,
324
125
  payload: { previousPhase: task.phase }
325
126
  });
326
- return {
327
- content: [
328
- {
329
- type: 'text',
330
- text: JSON.stringify({ status: 'ok', previousPhase: task.phase, currentPhase: nextPhase, updatedAt: updated.updatedAt })
331
- }
332
- ]
333
- };
127
+ return { status: 'ok', previousPhase: task.phase, currentPhase: nextPhase, updatedAt: updated.updatedAt };
334
128
  }
335
129
  async function handleEmitEvent(params) {
336
130
  const eventsPath = getOptionalString(params.eventsPath);
@@ -346,7 +140,6 @@ async function handleChat(params) {
346
140
  const eventsPath = getOptionalString(params.eventsPath);
347
141
  const message = ensureString(params.message, 'message');
348
142
  const role = getOptionalString(params.role) ?? 'user';
349
- Logger.info('Runtime', `Chat message received from ${role}`, { message });
350
143
  const emitter = new RuntimeEmitter({ eventsPath, stdout: false });
351
144
  await emitter.emit({
352
145
  type: 'chat_message',
@@ -354,26 +147,7 @@ async function handleChat(params) {
354
147
  runId: 'chat',
355
148
  payload: { role, content: message }
356
149
  });
357
- return {
358
- content: [
359
- {
360
- type: 'text',
361
- text: JSON.stringify({ status: 'ok' })
362
- }
363
- ]
364
- };
365
- }
366
- async function handleDebugReadLogs(params) {
367
- const limit = typeof params.limit === 'number' ? params.limit : 100;
368
- const logs = Logger.getInstance().getLogs(limit);
369
- return {
370
- content: [
371
- {
372
- type: 'text',
373
- text: JSON.stringify(logs, null, 2)
374
- }
375
- ]
376
- };
150
+ return { status: 'ok' };
377
151
  }
378
152
  function ensureString(value, name) {
379
153
  if (typeof value !== 'string' || value.length === 0) {
@@ -385,51 +159,38 @@ function getOptionalString(value) {
385
159
  return typeof value === 'string' && value.length > 0 ? value : undefined;
386
160
  }
387
161
  function writeResponse(response) {
388
- Logger.debug('MCP', 'Sending response', { id: response.id, error: !!response.error });
389
162
  process.stdout.write(`${JSON.stringify(response)}\n`);
390
163
  }
391
164
  function formatError(error) {
392
165
  return error instanceof Error ? error.message : String(error);
393
166
  }
394
167
  async function resolveNextPhase(workflowsRoot, currentPhase) {
395
- const strategies = ['tasklifecycle-long', 'tasklifecycle-short'];
396
- for (const strategy of strategies) {
397
- try {
398
- const indexPath = path.join(workflowsRoot, strategy, 'index.md');
399
- const raw = await fs.readFile(indexPath, 'utf-8');
400
- const match = raw.match(/```yaml\n([\s\S]*?)```/);
401
- if (!match) {
402
- continue;
403
- }
404
- const yaml = match[1];
405
- const data = matter(`---\n${yaml}\n---`).data;
406
- const phases = data.aliases?.[strategy]?.phases;
407
- if (!phases || typeof phases !== 'object') {
408
- continue;
409
- }
410
- const phaseIds = Object.entries(phases)
411
- .sort(([a], [b]) => {
412
- const aNum = parseInt(a.split('_').pop() ?? '0', 10);
413
- const bNum = parseInt(b.split('_').pop() ?? '0', 10);
414
- return aNum - bNum;
415
- })
416
- .map(([, value]) => {
417
- const id = value.id;
418
- if (!id) {
419
- throw new Error('Phase entry missing id.');
420
- }
421
- return id;
422
- });
423
- const index = phaseIds.indexOf(currentPhase);
424
- if (index !== -1 && index < phaseIds.length - 1) {
425
- return phaseIds[index + 1];
426
- }
427
- }
428
- catch (error) {
429
- continue;
430
- }
168
+ const indexPath = path.join(workflowsRoot, 'tasklifecycle-long', 'index.md');
169
+ const raw = await fs.readFile(indexPath, 'utf-8');
170
+ const match = raw.match(/```yaml\n([\s\S]*?)```/);
171
+ if (!match) {
172
+ throw new Error('Missing workflow index YAML block.');
173
+ }
174
+ const yaml = match[1];
175
+ const data = matter(`---\n${yaml}\n---`).data;
176
+ const phases = data.aliases?.['tasklifecycle-long']?.phases;
177
+ if (!phases || typeof phases !== 'object') {
178
+ throw new Error('Invalid workflow index structure.');
179
+ }
180
+ const phaseIds = Object.entries(phases)
181
+ .sort(([a], [b]) => parseInt(a.split('_')[1] ?? '0', 10) - parseInt(b.split('_')[1] ?? '0', 10))
182
+ .map(([, value]) => {
183
+ const id = value.id;
184
+ if (!id) {
185
+ throw new Error('Phase entry missing id.');
186
+ }
187
+ return id;
188
+ });
189
+ const index = phaseIds.indexOf(currentPhase);
190
+ if (index === -1 || index === phaseIds.length - 1) {
191
+ throw new Error('No next phase available.');
431
192
  }
432
- throw new Error(`No next phase found after ${currentPhase} in any known strategy.`);
193
+ return phaseIds[index + 1];
433
194
  }
434
195
  async function updateTaskPhase(taskPath, currentPhase, nextPhase, agent) {
435
196
  const timestamp = new Date().toISOString();