@s_s/harmonia 1.0.0 → 1.1.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 (114) hide show
  1. package/README.md +396 -2
  2. package/build/cli/setup.d.ts +21 -0
  3. package/build/cli/setup.js +71 -0
  4. package/build/cli/setup.js.map +1 -0
  5. package/build/core/dispatch.d.ts +10 -0
  6. package/build/core/dispatch.js +21 -0
  7. package/build/core/dispatch.js.map +1 -1
  8. package/build/core/docs.d.ts +13 -0
  9. package/build/core/docs.js +32 -0
  10. package/build/core/docs.js.map +1 -1
  11. package/build/core/registry.d.ts +1 -1
  12. package/build/core/registry.js +5 -16
  13. package/build/core/registry.js.map +1 -1
  14. package/build/core/schema.d.ts +38 -0
  15. package/build/core/schema.js +187 -0
  16. package/build/core/schema.js.map +1 -0
  17. package/build/core/state.d.ts +11 -1
  18. package/build/core/state.js +23 -2
  19. package/build/core/state.js.map +1 -1
  20. package/build/core/steps.d.ts +34 -0
  21. package/build/core/steps.js +113 -0
  22. package/build/core/steps.js.map +1 -0
  23. package/build/core/types.d.ts +81 -4
  24. package/build/core/workflow.d.ts +26 -6
  25. package/build/core/workflow.js +88 -11
  26. package/build/core/workflow.js.map +1 -1
  27. package/build/hooks/claude-code.d.ts +20 -0
  28. package/build/hooks/claude-code.js +218 -0
  29. package/build/hooks/claude-code.js.map +1 -0
  30. package/build/hooks/content.d.ts +43 -0
  31. package/build/hooks/content.js +109 -0
  32. package/build/hooks/content.js.map +1 -0
  33. package/build/hooks/install.d.ts +40 -0
  34. package/build/hooks/install.js +63 -0
  35. package/build/hooks/install.js.map +1 -0
  36. package/build/hooks/openclaw.d.ts +24 -0
  37. package/build/hooks/openclaw.js +219 -0
  38. package/build/hooks/openclaw.js.map +1 -0
  39. package/build/hooks/opencode.d.ts +29 -0
  40. package/build/hooks/opencode.js +226 -0
  41. package/build/hooks/opencode.js.map +1 -0
  42. package/build/index.d.ts +4 -7
  43. package/build/index.js +80 -42
  44. package/build/index.js.map +1 -1
  45. package/build/setup/inject.d.ts +22 -18
  46. package/build/setup/inject.js +42 -93
  47. package/build/setup/inject.js.map +1 -1
  48. package/build/setup/templates.d.ts +12 -16
  49. package/build/setup/templates.js +52 -69
  50. package/build/setup/templates.js.map +1 -1
  51. package/build/tools/approve-doc.d.ts +1 -1
  52. package/build/tools/approve-doc.js +4 -4
  53. package/build/tools/approve-doc.js.map +1 -1
  54. package/build/tools/dispatch-role.d.ts +2 -2
  55. package/build/tools/dispatch-role.js +41 -11
  56. package/build/tools/dispatch-role.js.map +1 -1
  57. package/build/tools/doc-tools.d.ts +11 -3
  58. package/build/tools/doc-tools.js +257 -13
  59. package/build/tools/doc-tools.js.map +1 -1
  60. package/build/tools/get-project-status.d.ts +4 -2
  61. package/build/tools/get-project-status.js +165 -50
  62. package/build/tools/get-project-status.js.map +1 -1
  63. package/build/tools/get-role-prompt.d.ts +2 -2
  64. package/build/tools/get-role-prompt.js +4 -4
  65. package/build/tools/get-role-prompt.js.map +1 -1
  66. package/build/tools/override-tools.d.ts +1 -1
  67. package/build/tools/override-tools.js +4 -4
  68. package/build/tools/override-tools.js.map +1 -1
  69. package/build/tools/project-init.d.ts +5 -1
  70. package/build/tools/project-init.js +92 -32
  71. package/build/tools/project-init.js.map +1 -1
  72. package/build/tools/report-dispatch.d.ts +6 -3
  73. package/build/tools/report-dispatch.js +45 -8
  74. package/build/tools/report-dispatch.js.map +1 -1
  75. package/build/tools/set-scale.d.ts +6 -0
  76. package/build/tools/set-scale.js +92 -0
  77. package/build/tools/set-scale.js.map +1 -0
  78. package/build/tools/setup-project.d.ts +1 -1
  79. package/build/tools/setup-project.js +33 -5
  80. package/build/tools/setup-project.js.map +1 -1
  81. package/build/tools/update-phase.d.ts +8 -3
  82. package/build/tools/update-phase.js +85 -20
  83. package/build/tools/update-phase.js.map +1 -1
  84. package/package.json +2 -1
  85. package/workflows/dev/roles/architect.md +1 -1
  86. package/workflows/dev/roles/pm.md +5 -5
  87. package/workflows/dev/roles/tester.md +1 -1
  88. package/workflows/dev/schemas/api-design.json +25 -0
  89. package/workflows/dev/schemas/data-model.json +20 -0
  90. package/workflows/dev/schemas/deploy.json +20 -0
  91. package/workflows/dev/schemas/fsd.json +25 -0
  92. package/workflows/dev/schemas/prd.completeness-check.json +24 -0
  93. package/workflows/dev/schemas/prd.draft.json +15 -0
  94. package/workflows/dev/schemas/prd.final.json +30 -0
  95. package/workflows/dev/schemas/prd.json +30 -0
  96. package/workflows/dev/schemas/prd.requirements.json +25 -0
  97. package/workflows/dev/schemas/project-plan.json +20 -0
  98. package/workflows/dev/schemas/prototype.json +4 -0
  99. package/workflows/dev/schemas/retrospective.json +20 -0
  100. package/workflows/dev/schemas/risk-assessment.json +15 -0
  101. package/workflows/dev/schemas/task-breakdown.coarse.json +15 -0
  102. package/workflows/dev/schemas/task-breakdown.dependencies.json +20 -0
  103. package/workflows/dev/schemas/task-breakdown.detailed.json +10 -0
  104. package/workflows/dev/schemas/task-breakdown.final.json +10 -0
  105. package/workflows/dev/schemas/task-breakdown.json +10 -0
  106. package/workflows/dev/schemas/tech-design.analysis.json +25 -0
  107. package/workflows/dev/schemas/tech-design.api-contract.json +20 -0
  108. package/workflows/dev/schemas/tech-design.draft.json +15 -0
  109. package/workflows/dev/schemas/tech-design.final.json +30 -0
  110. package/workflows/dev/schemas/tech-design.json +30 -0
  111. package/workflows/dev/schemas/test-plan.json +20 -0
  112. package/workflows/dev/schemas/test-report.json +25 -0
  113. package/workflows/dev/schemas/user-stories.json +10 -0
  114. package/workflows/dev/workflow.json +85 -5
@@ -1,27 +1,115 @@
1
1
  /**
2
- * MCP Tools: write_doc / read_doc / list_docs
2
+ * MCP Tools: doc_write / doc_read / doc_list
3
3
  * Read and write project documents under <data_dir>/<project_name>/docs/
4
4
  *
5
- * write_doc checks review configuration and auto-submits for review if needed.
5
+ * doc_write validates content against document schemas and checks review
6
+ * configuration. If validation fails, the write is rejected with specific
7
+ * error details. If review is required, the document is submitted for
8
+ * user approval.
9
+ *
10
+ * Sequential mode (P3): When a document has `steps` defined in workflow.json
11
+ * and the project scale is >= medium, doc_write requires a `step` parameter.
12
+ * Each step is validated independently, and the final step automatically
13
+ * writes the formal document and triggers the review flow.
6
14
  */
7
15
  import { z } from 'zod';
8
- import { writeDoc, readDoc, listDocs } from '../core/docs.js';
16
+ import { writeDoc, readDoc, listDocs, writeStepArtifact } from '../core/docs.js';
9
17
  import { readState } from '../core/state.js';
10
18
  import { loadWorkflow } from '../core/workflow.js';
11
19
  import { getMergedOverrides, resolveDocReview } from '../core/overrides.js';
12
20
  import { submitForReview } from '../core/reviews.js';
13
- export function registerDocTools(server, workflowsDir) {
14
- server.tool('write_doc', 'Write or update a project document. Automatically checks review configuration — if review is required, the document is submitted for user approval and you MUST present it to the user for confirmation before proceeding.', {
21
+ import { loadDocSchema, validateDoc, formatValidationErrors } from '../core/schema.js';
22
+ import { getDocStepState, getCompletedStepIds, recordStepCompletion, markFinalized } from '../core/steps.js';
23
+ /** Scales that activate sequential mode (medium and above) */
24
+ const SEQUENTIAL_SCALES = new Set(['medium', 'large']);
25
+ /**
26
+ * Check if sequential mode is active for a given doc definition and scale.
27
+ * Returns false when scale is null (not yet set).
28
+ */
29
+ function isSequentialActive(docDef, scale) {
30
+ return scale !== null && !!docDef.steps?.length && SEQUENTIAL_SCALES.has(scale);
31
+ }
32
+ export function registerDocTools(server, builtinDir, customDir) {
33
+ server.tool('doc_write', 'Write or update a project document. For documents with sequential steps (PRD, tech-design, task-breakdown) at medium/large scale, you MUST specify the step parameter. Automatically checks review configuration — if review is required, the document is submitted for user approval.', {
15
34
  project_name: z.string().describe('Project name'),
16
35
  doc_id: z
17
36
  .string()
18
37
  .describe('Document ID (e.g. prd, user-stories, fsd, prototype, tech-design, task-breakdown, etc.)'),
19
- content: z.string().describe('Document content (markdown or HTML depending on doc type)'),
20
- }, async ({ project_name, doc_id, content }) => {
38
+ content: z.string().describe('Document content (markdown, HTML, or JSON depending on doc type and step)'),
39
+ step: z
40
+ .string()
41
+ .optional()
42
+ .describe('Sequential step ID (required for docs with steps at medium/large scale). Use project_status to see available steps.'),
43
+ }, async ({ project_name, doc_id, content, step }) => {
21
44
  // Load workflow to get doc definition (format, review defaults)
22
45
  const state = await readState(project_name);
23
- const wf = await loadWorkflow(workflowsDir, state.workflow);
46
+ const wf = await loadWorkflow(builtinDir, customDir, state.workflow);
24
47
  const docDef = wf.definition.docs[doc_id];
48
+ const isHtml = docDef?.format === 'html';
49
+ // Guard: doc_id must be defined in workflow
50
+ if (!docDef) {
51
+ const validIds = Object.keys(wf.definition.docs)
52
+ .filter((id) => !wf.definition.docs[id].external)
53
+ .join(', ');
54
+ return {
55
+ content: [
56
+ {
57
+ type: 'text',
58
+ text: `文档类型 "${doc_id}" 未在工作流中定义。可用的文档类型: ${validIds}`,
59
+ },
60
+ ],
61
+ isError: true,
62
+ };
63
+ }
64
+ // Guard: reject external doc types (should be produced outside doc_write)
65
+ if (docDef.external) {
66
+ return {
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: `文档 "${doc_id}" 是外部产出类型,不应通过 doc_write 写入。`,
71
+ },
72
+ ],
73
+ isError: true,
74
+ };
75
+ }
76
+ // Guard: empty content
77
+ if (!content.trim()) {
78
+ return {
79
+ content: [
80
+ {
81
+ type: 'text',
82
+ text: '文档内容为空,请提供实际内容后重新提交。',
83
+ },
84
+ ],
85
+ isError: true,
86
+ };
87
+ }
88
+ // ─── Sequential Mode ───
89
+ if (isSequentialActive(docDef, state.scale)) {
90
+ return handleSequentialWrite(builtinDir, customDir, state.workflow, project_name, doc_id, content, step, docDef, state.scale);
91
+ }
92
+ // ─── Normal Mode (no steps or small scale) ───
93
+ // If step was passed but sequential is not active, warn but proceed
94
+ if (step) {
95
+ // Ignore step parameter for non-sequential docs
96
+ }
97
+ // Schema validation — reject write if content doesn't meet requirements
98
+ const schema = await loadDocSchema(builtinDir, customDir, state.workflow, doc_id);
99
+ if (schema) {
100
+ const result = validateDoc(content, schema, state.scale, isHtml);
101
+ if (!result.valid) {
102
+ return {
103
+ content: [
104
+ {
105
+ type: 'text',
106
+ text: formatValidationErrors(result.errors),
107
+ },
108
+ ],
109
+ isError: true,
110
+ };
111
+ }
112
+ }
25
113
  // Write the document with correct extension
26
114
  const filePath = await writeDoc(project_name, doc_id, content, docDef);
27
115
  // Check if review is required
@@ -40,8 +128,8 @@ export function registerDocTools(server, workflowsDir) {
40
128
  `** REVIEW REQUIRED **`,
41
129
  `This document requires user approval before the workflow can proceed.`,
42
130
  `Please present the document content to the user and ask for their confirmation.`,
43
- `After user approval, call approve_doc with project_name="${project_name}" and doc_id="${doc_id}".`,
44
- `If the user requests changes, revise the document and call write_doc again.`,
131
+ `After user approval, call doc_approve with project_name="${project_name}" and doc_id="${doc_id}".`,
132
+ `If the user requests changes, revise the document and call doc_write again.`,
45
133
  ].join('\n'),
46
134
  },
47
135
  ],
@@ -56,7 +144,7 @@ export function registerDocTools(server, workflowsDir) {
56
144
  ],
57
145
  };
58
146
  });
59
- server.tool('read_doc', 'Read a project document from the project docs directory.', {
147
+ server.tool('doc_read', 'Read a project document from the project docs directory.', {
60
148
  project_name: z.string().describe('Project name'),
61
149
  doc_id: z.string().describe('Document ID to read'),
62
150
  }, async ({ project_name, doc_id }) => {
@@ -76,14 +164,14 @@ export function registerDocTools(server, workflowsDir) {
76
164
  content: [
77
165
  {
78
166
  type: 'text',
79
- text: `Document "${doc_id}" not found. Use list_docs to see available documents.`,
167
+ text: `Document "${doc_id}" not found. Use doc_list to see available documents.`,
80
168
  },
81
169
  ],
82
170
  isError: true,
83
171
  };
84
172
  }
85
173
  });
86
- server.tool('list_docs', 'List all project documents in the project docs directory.', {
174
+ server.tool('doc_list', 'List all project documents in the project docs directory.', {
87
175
  project_name: z.string().describe('Project name'),
88
176
  }, async ({ project_name }) => {
89
177
  const docs = await listDocs(project_name);
@@ -99,4 +187,160 @@ export function registerDocTools(server, workflowsDir) {
99
187
  };
100
188
  });
101
189
  }
190
+ async function handleSequentialWrite(builtinDir, customDir, workflowName, projectName, docId, content, step, docDef, scale) {
191
+ const steps = docDef.steps;
192
+ const stepIds = steps.map((s) => s.id);
193
+ const stepNames = steps.map((s) => `${s.id} (${s.name})`).join(', ');
194
+ // Guard: step parameter is required in sequential mode
195
+ if (!step) {
196
+ return {
197
+ content: [
198
+ {
199
+ type: 'text',
200
+ text: [
201
+ `文档 "${docId}" 在 ${scale} 规模项目中需要分步写入。`,
202
+ `请指定 step 参数。可用的步骤: ${stepNames}`,
203
+ ``,
204
+ `步骤说明:`,
205
+ ...steps.map((s, i) => ` ${i + 1}. ${s.id} — ${s.description}`),
206
+ ].join('\n'),
207
+ },
208
+ ],
209
+ isError: true,
210
+ };
211
+ }
212
+ // Guard: step must be valid
213
+ const stepDef = steps.find((s) => s.id === step);
214
+ if (!stepDef) {
215
+ return {
216
+ content: [
217
+ {
218
+ type: 'text',
219
+ text: `未知的步骤 "${step}"。可用的步骤: ${stepNames}`,
220
+ },
221
+ ],
222
+ isError: true,
223
+ };
224
+ }
225
+ const stepIndex = stepIds.indexOf(step);
226
+ const stepState = await getDocStepState(projectName, docId);
227
+ const completedIds = getCompletedStepIds(stepState);
228
+ // Guard: prerequisite steps must be completed (hard enforcement)
229
+ for (let i = 0; i < stepIndex; i++) {
230
+ if (!completedIds.has(stepIds[i])) {
231
+ const missingStep = steps[i];
232
+ return {
233
+ content: [
234
+ {
235
+ type: 'text',
236
+ text: `无法写入步骤 "${step}":前置步骤 "${missingStep.id}" (${missingStep.name}) 尚未完成。请先完成该步骤。`,
237
+ },
238
+ ],
239
+ isError: true,
240
+ };
241
+ }
242
+ }
243
+ // Step schema validation
244
+ const isJson = stepDef.format === 'json';
245
+ const stepSchemaId = `${docId}.${step}`;
246
+ const stepSchema = await loadDocSchema(builtinDir, customDir, workflowName, stepSchemaId);
247
+ if (stepSchema) {
248
+ const result = validateDoc(content, stepSchema, scale, false, isJson);
249
+ if (!result.valid) {
250
+ return {
251
+ content: [
252
+ {
253
+ type: 'text',
254
+ text: formatValidationErrors(result.errors),
255
+ },
256
+ ],
257
+ isError: true,
258
+ };
259
+ }
260
+ }
261
+ // Write the step artifact
262
+ const artifactPath = await writeStepArtifact(projectName, docId, step, content, stepDef.format);
263
+ // Record step completion (handles rollback if overwriting)
264
+ await recordStepCompletion(projectName, docId, step, artifactPath, stepIds);
265
+ const isLastStep = stepIndex === steps.length - 1;
266
+ if (isLastStep) {
267
+ // Auto-merge: validate against final doc schema, write formal doc, trigger review
268
+ return handleFinalStep(builtinDir, customDir, workflowName, projectName, docId, content, docDef, scale, stepDef);
269
+ }
270
+ // Not the last step — return progress info
271
+ const nextStep = steps[stepIndex + 1];
272
+ return {
273
+ content: [
274
+ {
275
+ type: 'text',
276
+ text: [
277
+ `步骤 "${step}" (${stepDef.name}) 完成,产物已写入 ${artifactPath}`,
278
+ ``,
279
+ `下一步: ${nextStep.id} — ${nextStep.description}`,
280
+ `请调用 doc_write(project_name="${projectName}", doc_id="${docId}", step="${nextStep.id}", content=...)`,
281
+ ].join('\n'),
282
+ },
283
+ ],
284
+ };
285
+ }
286
+ async function handleFinalStep(builtinDir, customDir, workflowName, projectName, docId, content, docDef, scale, stepDef) {
287
+ const isHtml = docDef.format === 'html';
288
+ // Validate against the final document schema (e.g. prd.json)
289
+ const finalSchema = await loadDocSchema(builtinDir, customDir, workflowName, docId);
290
+ if (finalSchema) {
291
+ const isJson = stepDef.format === 'json';
292
+ const result = validateDoc(content, finalSchema, scale, isHtml, isJson);
293
+ if (!result.valid) {
294
+ return {
295
+ content: [
296
+ {
297
+ type: 'text',
298
+ text: [
299
+ '最终文档校验失败:',
300
+ formatValidationErrors(result.errors),
301
+ '',
302
+ `请修正后重新提交步骤 "${stepDef.id}"。`,
303
+ ].join('\n'),
304
+ },
305
+ ],
306
+ isError: true,
307
+ };
308
+ }
309
+ }
310
+ // Write the formal document
311
+ const filePath = await writeDoc(projectName, docId, content, docDef);
312
+ // Mark as finalized
313
+ await markFinalized(projectName, docId);
314
+ // Check if review is required
315
+ const overrides = await getMergedOverrides(projectName);
316
+ const needsReview = resolveDocReview(docId, docDef, overrides);
317
+ if (needsReview) {
318
+ await submitForReview(projectName, docId);
319
+ const docName = docDef.name ?? docId;
320
+ return {
321
+ content: [
322
+ {
323
+ type: 'text',
324
+ text: [
325
+ `所有步骤完成!文档 "${docId}" (${docName}) 已写入 ${filePath}`,
326
+ ``,
327
+ `** REVIEW REQUIRED **`,
328
+ `This document requires user approval before the workflow can proceed.`,
329
+ `Please present the document content to the user and ask for their confirmation.`,
330
+ `After user approval, call doc_approve with project_name="${projectName}" and doc_id="${docId}".`,
331
+ `If the user requests changes, revise the document and call doc_write again with the appropriate step.`,
332
+ ].join('\n'),
333
+ },
334
+ ],
335
+ };
336
+ }
337
+ return {
338
+ content: [
339
+ {
340
+ type: 'text',
341
+ text: `所有步骤完成!文档 "${docId}" 已写入 ${filePath}`,
342
+ },
343
+ ],
344
+ };
345
+ }
102
346
  //# sourceMappingURL=doc-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doc-tools.js","sourceRoot":"","sources":["../../src/tools/doc-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc-tools.js","sourceRoot":"","sources":["../../src/tools/doc-tools.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  /**
2
- * MCP Tool: get_project_status
2
+ * MCP Tool: project_status
3
3
  * Read the current project status with rich context for PM decision-making.
4
4
  * Includes phase progress, documents, pending reviews, dispatch records,
5
5
  * active sessions, and intelligent next-step suggestions.
6
+ *
7
+ * When called without project_name, returns a summary list of all projects.
6
8
  */
7
9
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
- export declare function registerGetProjectStatus(server: McpServer, workflowsDir: string): void;
10
+ export declare function registerGetProjectStatus(server: McpServer, builtinDir: string, customDir: string): void;