@openprd/cli 0.1.19 → 0.1.22

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 (102) hide show
  1. package/.openprd/changes/openprd-control-plane-v020/.openprd.yaml +2 -0
  2. package/.openprd/changes/openprd-control-plane-v020/design.md +78 -0
  3. package/.openprd/changes/openprd-control-plane-v020/proposal.md +54 -0
  4. package/.openprd/changes/openprd-control-plane-v020/specs/agent-requirements/spec.md +16 -0
  5. package/.openprd/changes/openprd-control-plane-v020/task-events.jsonl +27 -0
  6. package/.openprd/changes/openprd-control-plane-v020/tasks-002.md +35 -0
  7. package/.openprd/changes/openprd-control-plane-v020/tasks.md +427 -0
  8. package/.openprd/changes/remove-session-tracking-humane-approval/.openprd.yaml +2 -0
  9. package/.openprd/changes/remove-session-tracking-humane-approval/design.md +52 -0
  10. package/.openprd/changes/remove-session-tracking-humane-approval/proposal.md +35 -0
  11. package/.openprd/changes/remove-session-tracking-humane-approval/specs/agent-requirements/spec.md +16 -0
  12. package/.openprd/changes/remove-session-tracking-humane-approval/task-events.jsonl +1 -0
  13. package/.openprd/changes/remove-session-tracking-humane-approval/tasks.md +170 -0
  14. package/.openprd/design/active/asset-spec.md +19 -14
  15. package/.openprd/design/active/direction-plan.md +19 -3
  16. package/.openprd/design/active/facts-sheet.md +16 -7
  17. package/.openprd/design/active/image-preflight.md +6 -5
  18. package/.openprd/design/active/review-studio-v020-directions/compare-plan.json +34 -0
  19. package/.openprd/design/active/review-studio-v020-directions/contact-sheet.jpg +0 -0
  20. package/.openprd/design/active/review-studio-v020-directions/crops/01.png +0 -0
  21. package/.openprd/design/active/review-studio-v020-directions/crops/02.png +0 -0
  22. package/.openprd/design/active/review-studio-v020-directions/crops/03.png +0 -0
  23. package/.openprd/design/active/review-studio-v020-directions/focus-board.template.json +69 -0
  24. package/.openprd/design/active/review-studio-v020-directions/parallel-board.template.json +45 -0
  25. package/.openprd/design/active/review-studio-v020-directions/reference-set.json +143 -0
  26. package/.openprd/design/active/review-studio-v020-directions/source.png +0 -0
  27. package/.openprd/design/active/selected-direction.md +23 -9
  28. package/.openprd/engagements/active/control-plane-architecture.json +203 -0
  29. package/.openprd/engagements/active/control-plane-intake.json +418 -0
  30. package/.openprd/engagements/active/prd.md +183 -119
  31. package/.openprd/engagements/active/review-presentation-v0018.json +176 -0
  32. package/.openprd/i18n-config.json +12 -0
  33. package/.openprd/ledger/events.jsonl +6 -0
  34. package/.openprd/ledger/heads/ebea1a71a9daa566f1c91b53.json +10 -0
  35. package/.openprd/manifest.json +21 -0
  36. package/AGENTS.md +7 -6
  37. package/README.md +31 -29
  38. package/README_EN.md +36 -39
  39. package/package.json +1 -1
  40. package/skills/openprd-frontend-design/SKILL.md +16 -0
  41. package/skills/openprd-harness/SKILL.md +7 -7
  42. package/skills/openprd-quality/SKILL.md +1 -1
  43. package/skills/openprd-requirement-intake/SKILL.md +1 -1
  44. package/skills/openprd-shared/SKILL.md +6 -6
  45. package/src/adapters/adapter-spi.js +193 -0
  46. package/src/adapters/capability-envelope.js +98 -0
  47. package/src/adapters/event-normalizer.js +55 -0
  48. package/src/adapters/index.js +4 -0
  49. package/src/adapters/install-safety.js +249 -0
  50. package/src/agent-canonical-content.js +4 -2
  51. package/src/agent-integration.js +169 -46
  52. package/src/cli/args.js +63 -4
  53. package/src/cli/gate-print.js +17 -0
  54. package/src/cli/quality-commands.js +18 -0
  55. package/src/cli/quality-print.js +10 -0
  56. package/src/cli/runtime-print.js +24 -0
  57. package/src/codex-hook-runner-template.mjs +129 -199
  58. package/src/codex-runtime.js +48 -5
  59. package/src/context/cache.js +245 -0
  60. package/src/context/compiler.js +438 -0
  61. package/src/context/constants.js +30 -0
  62. package/src/context/index.js +39 -0
  63. package/src/context/redaction.js +84 -0
  64. package/src/context/stable.js +69 -0
  65. package/src/context/telemetry.js +42 -0
  66. package/src/dev-standards.js +57 -0
  67. package/src/fleet.js +112 -95
  68. package/src/gates/index.js +2 -0
  69. package/src/gates/scoped-gates.js +256 -0
  70. package/src/gates/store.js +126 -0
  71. package/src/gates/workspace.js +41 -0
  72. package/src/html-artifacts.js +725 -28
  73. package/src/kernel/atomic-store.js +299 -0
  74. package/src/kernel/event-envelope.js +166 -0
  75. package/src/kernel/index.js +4 -0
  76. package/src/kernel/project-ledger.js +467 -0
  77. package/src/kernel/project-manifest.js +205 -0
  78. package/src/knowledge-v3/index.js +1 -0
  79. package/src/knowledge-v3/lifecycle.js +290 -0
  80. package/src/knowledge.js +14 -7
  81. package/src/openprd.js +71 -2
  82. package/src/review-model.js +413 -0
  83. package/src/review-presentation.js +1 -1
  84. package/src/run-harness.js +432 -38
  85. package/src/runtime/cli_runtime_README.md +28 -0
  86. package/src/runtime/errors.js +66 -0
  87. package/src/runtime/index.js +44 -0
  88. package/src/runtime/lane-schema.js +141 -0
  89. package/src/runtime/lane-store.js +279 -0
  90. package/src/runtime/task-runtime.js +449 -0
  91. package/src/runtime/workspace.js +179 -0
  92. package/src/runtime/write-set.js +206 -0
  93. package/src/session-binding.js +16 -3
  94. package/src/session-registry.js +59 -1
  95. package/src/upgrade/fleet-mutation.js +166 -0
  96. package/src/upgrade/fleet-transaction.js +398 -0
  97. package/src/upgrade/transaction-store.js +416 -0
  98. package/src/visual-compare-core.js +66 -27
  99. package/src/visual-compare.js +18 -12
  100. package/src/workspace-core.js +109 -7
  101. package/src/workspace-registry.js +39 -1
  102. package/src/workspace-workflow.js +18 -15
@@ -0,0 +1,17 @@
1
+ function printGateResult(result, json) {
2
+ if (json) {
3
+ console.log(JSON.stringify(result, null, 2));
4
+ return;
5
+ }
6
+ if (!result.ok) {
7
+ console.log(`OpenPrd 操作门禁:未完成(${result.error?.code ?? 'unknown'})`);
8
+ console.log(result.error?.message ?? '门禁操作失败。');
9
+ return;
10
+ }
11
+ const status = result.result?.status;
12
+ console.log(`OpenPrd 操作门禁:${status === 'pass' ? '通过' : status === 'blocked' ? '已阻断' : '已记录'}`);
13
+ if (result.result?.decisionId) console.log(`决策编号:${result.result.decisionId}`);
14
+ for (const reason of result.result?.reasons ?? []) console.log(`- ${reason.code}`);
15
+ }
16
+
17
+ export { printGateResult };
@@ -218,5 +218,23 @@ export async function runQualityCommand(command, { projectPath, flags, positiona
218
218
  return result.ok ? 0 : 1;
219
219
  }
220
220
 
221
+ if (command === 'i18n-init') {
222
+ const initProjectPath = path.resolve(flags.path ?? positionals[0] ?? process.cwd());
223
+ const { initI18nConfig } = await import('../dev-standards.js');
224
+ const result = await initI18nConfig(initProjectPath, {
225
+ defaultLanguage: flags.locale ?? undefined,
226
+ });
227
+ if (flags.json) {
228
+ console.log(JSON.stringify(result, null, 2));
229
+ } else {
230
+ console.log(`OpenPrd i18n: ${result.created ? '已创建' : '配置已存在'} ${result.configPath}`);
231
+ console.log(`基准语言: ${result.config.defaultLanguage}`);
232
+ console.log(`支持语种: ${result.config.supportedLanguages.join(', ')}`);
233
+ console.log(`dev-check 检查: ${result.config.enforceOnDevCheck ? '开启' : '关闭'}`);
234
+ console.log(`最佳实践文档: docs/basic/i18n-guidelines.md`);
235
+ }
236
+ return 0;
237
+ }
238
+
221
239
  return null;
222
240
  }
@@ -123,6 +123,16 @@ function printDevelopmentStandardsResult(result, json) {
123
123
  } else if (result.visualEvidence?.uiFiles?.length > 0) {
124
124
  console.log(`- 视觉证据: 最近 24 小时已有证据板(${result.visualEvidence.freshEvidence.join(', ')});确认覆盖本轮改动并把证据图嵌入对话流。`);
125
125
  }
126
+ if (result.i18nReminder?.required) {
127
+ console.log(`- 多语言提醒: ${result.i18nReminder.reason}`);
128
+ console.log(` 涉及文件: ${result.i18nReminder.textFiles.join(', ')}`);
129
+ if (result.i18nReminder.guideline) {
130
+ console.log(` 最佳实践: ${result.i18nReminder.guideline}`);
131
+ }
132
+ if (!result.i18nReminder.configExists) {
133
+ console.log(' 建议: 创建 .openprd/i18n-config.json 启用项目级多语言检查。');
134
+ }
135
+ }
126
136
  printKnowledgeReview(result.knowledgeReview);
127
137
  for (const error of result.errors ?? []) {
128
138
  console.log(`- ${error}`);
@@ -0,0 +1,24 @@
1
+ function printTaskRuntimeResult(result, json) {
2
+ if (json) {
3
+ console.log(JSON.stringify(result, null, 2));
4
+ return;
5
+ }
6
+ if (!result.ok) {
7
+ console.log(`OpenPrd 并行任务运行时:未完成(${result.error?.code ?? 'unknown'})`);
8
+ console.log(result.error?.message ?? '运行时操作失败。');
9
+ return;
10
+ }
11
+ console.log(`OpenPrd 并行任务运行时:${result.action.replace(/^runtime-/, '')}`);
12
+ if (result.laneId) console.log(`处理通道:${result.laneId}`);
13
+ if (result.taskId) console.log(`任务:${result.taskId}`);
14
+ const task = result.result?.task;
15
+ if (task) {
16
+ console.log(`状态:${task.status}`);
17
+ console.log(`修订:${task.revision}`);
18
+ if (task.claim?.leaseExpiresAt) console.log(`占用有效期至:${task.claim.leaseExpiresAt}`);
19
+ } else if (Array.isArray(result.result)) {
20
+ console.log(`处理通道数:${result.result.length}`);
21
+ }
22
+ }
23
+
24
+ export { printTaskRuntimeResult };