@hongmaple0820/scale-engine 0.48.0 → 0.50.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 (242) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/agents/evidenceDiscipline.d.ts +7 -0
  4. package/dist/agents/evidenceDiscipline.js +21 -0
  5. package/dist/agents/evidenceDiscipline.js.map +1 -0
  6. package/dist/agents/profiles.js +8 -1
  7. package/dist/agents/profiles.js.map +1 -1
  8. package/dist/agents/types.d.ts +1 -0
  9. package/dist/api/DashboardHttpConfig.d.ts +28 -0
  10. package/dist/api/DashboardHttpConfig.js +110 -0
  11. package/dist/api/DashboardHttpConfig.js.map +1 -0
  12. package/dist/api/cli.js +102 -11
  13. package/dist/api/cli.js.map +1 -1
  14. package/dist/api/http.d.ts +1 -0
  15. package/dist/api/http.js +50 -0
  16. package/dist/api/http.js.map +1 -0
  17. package/dist/artifact/types.d.ts +64 -0
  18. package/dist/artifact/types.js.map +1 -1
  19. package/dist/bootstrap/DependencyBootstrap.d.ts +1 -0
  20. package/dist/bootstrap/DependencyBootstrap.js +14 -3
  21. package/dist/bootstrap/DependencyBootstrap.js.map +1 -1
  22. package/dist/cli/cortexApplyCommand.d.ts +26 -0
  23. package/dist/cli/cortexApplyCommand.js +74 -0
  24. package/dist/cli/cortexApplyCommand.js.map +1 -0
  25. package/dist/cli/cortexCandidateCommands.d.ts +42 -0
  26. package/dist/cli/cortexCandidateCommands.js +119 -0
  27. package/dist/cli/cortexCandidateCommands.js.map +1 -0
  28. package/dist/cli/cortexCommands.d.ts +51 -0
  29. package/dist/cli/cortexCommands.js +127 -13
  30. package/dist/cli/cortexCommands.js.map +1 -1
  31. package/dist/cli/engineBootstrap.d.ts +1 -1
  32. package/dist/cli/engineBootstrap.js +2 -0
  33. package/dist/cli/engineBootstrap.js.map +1 -1
  34. package/dist/cli/evalCommands.js +13 -1
  35. package/dist/cli/evalCommands.js.map +1 -1
  36. package/dist/cli/phaseCommands.d.ts +81 -1
  37. package/dist/cli/phaseCommands.js +465 -31
  38. package/dist/cli/phaseCommands.js.map +1 -1
  39. package/dist/cli/runtimeSkillCommands.js +12 -2
  40. package/dist/cli/runtimeSkillCommands.js.map +1 -1
  41. package/dist/cli/shieldCommands.d.ts +1 -0
  42. package/dist/cli/shieldCommands.js +20 -7
  43. package/dist/cli/shieldCommands.js.map +1 -1
  44. package/dist/cli/workflowEvidenceCommands.d.ts +120 -0
  45. package/dist/cli/workflowEvidenceCommands.js +228 -2
  46. package/dist/cli/workflowEvidenceCommands.js.map +1 -1
  47. package/dist/cortex/AutoFixEventObservations.d.ts +11 -0
  48. package/dist/cortex/AutoFixEventObservations.js +72 -0
  49. package/dist/cortex/AutoFixEventObservations.js.map +1 -0
  50. package/dist/cortex/GateEvidenceObservations.d.ts +22 -0
  51. package/dist/cortex/GateEvidenceObservations.js +179 -0
  52. package/dist/cortex/GateEvidenceObservations.js.map +1 -0
  53. package/dist/cortex/GovernanceMetrics.d.ts +2 -0
  54. package/dist/cortex/GovernanceMetrics.js +112 -22
  55. package/dist/cortex/GovernanceMetrics.js.map +1 -1
  56. package/dist/cortex/InstinctApplicationRecorder.d.ts +28 -0
  57. package/dist/cortex/InstinctApplicationRecorder.js +145 -0
  58. package/dist/cortex/InstinctApplicationRecorder.js.map +1 -0
  59. package/dist/cortex/InstinctCandidateAudit.d.ts +3 -0
  60. package/dist/cortex/InstinctCandidateAudit.js +39 -0
  61. package/dist/cortex/InstinctCandidateAudit.js.map +1 -0
  62. package/dist/cortex/InstinctCandidateReview.d.ts +32 -0
  63. package/dist/cortex/InstinctCandidateReview.js +125 -0
  64. package/dist/cortex/InstinctCandidateReview.js.map +1 -0
  65. package/dist/cortex/InstinctExtractor.d.ts +1 -0
  66. package/dist/cortex/InstinctExtractor.js +24 -17
  67. package/dist/cortex/InstinctExtractor.js.map +1 -1
  68. package/dist/cortex/InstinctRuntimeEvidence.d.ts +14 -0
  69. package/dist/cortex/InstinctRuntimeEvidence.js +120 -0
  70. package/dist/cortex/InstinctRuntimeEvidence.js.map +1 -0
  71. package/dist/cortex/InstinctStore.d.ts +50 -4
  72. package/dist/cortex/InstinctStore.js +262 -48
  73. package/dist/cortex/InstinctStore.js.map +1 -1
  74. package/dist/cortex/InstinctValidation.d.ts +9 -0
  75. package/dist/cortex/InstinctValidation.js +55 -0
  76. package/dist/cortex/InstinctValidation.js.map +1 -0
  77. package/dist/cortex/SessionInjector.d.ts +1 -0
  78. package/dist/cortex/SessionInjector.js +28 -8
  79. package/dist/cortex/SessionInjector.js.map +1 -1
  80. package/dist/dashboard/DashboardServer.d.ts +79 -0
  81. package/dist/dashboard/DashboardServer.js +330 -6
  82. package/dist/dashboard/DashboardServer.js.map +1 -1
  83. package/dist/dashboard/spa/app.js +515 -0
  84. package/dist/dashboard/spa/components/DataTable.js +53 -0
  85. package/dist/dashboard/spa/components/EventStream.js +66 -0
  86. package/dist/dashboard/spa/components/LoadingState.js +39 -0
  87. package/dist/dashboard/spa/components/MetricCard.js +30 -0
  88. package/dist/dashboard/spa/components/Panel.js +27 -0
  89. package/dist/dashboard/spa/components/StatusBadge.js +51 -0
  90. package/dist/dashboard/spa/i18n.js +767 -0
  91. package/dist/dashboard/spa/index.html +463 -0
  92. package/dist/dashboard/spa/pages/costs.js +522 -0
  93. package/dist/dashboard/spa/pages/documents.js +540 -0
  94. package/dist/dashboard/spa/pages/knowledge.js +457 -0
  95. package/dist/dashboard/spa/pages/monitoring.js +361 -0
  96. package/dist/dashboard/spa/pages/overview.js +301 -0
  97. package/dist/dashboard/spa/pages/topology-renderers.js +251 -0
  98. package/dist/dashboard/spa/pages/topology.js +370 -0
  99. package/dist/dashboard/spa/pages/workflow-renderers.js +239 -0
  100. package/dist/dashboard/spa/pages/workflow.js +217 -0
  101. package/dist/env/EnvironmentDoctor.js +12 -7
  102. package/dist/env/EnvironmentDoctor.js.map +1 -1
  103. package/dist/eval/BenchmarkPublisher.d.ts +2 -0
  104. package/dist/eval/BenchmarkPublisher.js +43 -0
  105. package/dist/eval/BenchmarkPublisher.js.map +1 -1
  106. package/dist/eval/WorkflowEval.d.ts +9 -0
  107. package/dist/eval/WorkflowEval.js +348 -2
  108. package/dist/eval/WorkflowEval.js.map +1 -1
  109. package/dist/guardrails/ast/confirmers.d.ts +18 -0
  110. package/dist/guardrails/ast/confirmers.js +69 -0
  111. package/dist/guardrails/ast/confirmers.js.map +1 -0
  112. package/dist/guardrails/ast/parse.d.ts +20 -0
  113. package/dist/guardrails/ast/parse.js +51 -0
  114. package/dist/guardrails/ast/parse.js.map +1 -0
  115. package/dist/memory/MemoryBrain.d.ts +13 -0
  116. package/dist/memory/MemoryBrain.js +47 -0
  117. package/dist/memory/MemoryBrain.js.map +1 -1
  118. package/dist/memory/MemoryFabric.d.ts +1 -0
  119. package/dist/memory/MemoryFabric.js +12 -8
  120. package/dist/memory/MemoryFabric.js.map +1 -1
  121. package/dist/memory/MemoryLearning.d.ts +1 -0
  122. package/dist/memory/MemoryLearning.js +6 -3
  123. package/dist/memory/MemoryLearning.js.map +1 -1
  124. package/dist/memory/MemoryProviders.d.ts +8 -1
  125. package/dist/memory/MemoryProviders.js +143 -29
  126. package/dist/memory/MemoryProviders.js.map +1 -1
  127. package/dist/output/HTMLDocumentRenderer.d.ts +9 -0
  128. package/dist/output/HTMLDocumentRenderer.js +19 -0
  129. package/dist/output/HTMLDocumentRenderer.js.map +1 -1
  130. package/dist/review/FreshContextVerifier.d.ts +35 -0
  131. package/dist/review/FreshContextVerifier.js +120 -0
  132. package/dist/review/FreshContextVerifier.js.map +1 -0
  133. package/dist/review/JsonLlmClient.d.ts +37 -0
  134. package/dist/review/JsonLlmClient.js +94 -0
  135. package/dist/review/JsonLlmClient.js.map +1 -0
  136. package/dist/review/LlmJudge.d.ts +61 -0
  137. package/dist/review/LlmJudge.js +167 -0
  138. package/dist/review/LlmJudge.js.map +1 -0
  139. package/dist/runtime/AiOsRuntime.d.ts +14 -1
  140. package/dist/runtime/AiOsRuntime.js +59 -3
  141. package/dist/runtime/AiOsRuntime.js.map +1 -1
  142. package/dist/runtime/RuntimeDoctor.js +3 -1
  143. package/dist/runtime/RuntimeDoctor.js.map +1 -1
  144. package/dist/runtime/RuntimeEvidenceLedger.d.ts +6 -0
  145. package/dist/runtime/RuntimeEvidenceLedger.js +52 -1
  146. package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -1
  147. package/dist/runtime/SessionLedger.d.ts +2 -0
  148. package/dist/runtime/SessionLedger.js +4 -0
  149. package/dist/runtime/SessionLedger.js.map +1 -1
  150. package/dist/setup/SetupVerification.js +53 -5
  151. package/dist/setup/SetupVerification.js.map +1 -1
  152. package/dist/shield/PolicyCompiler.js +73 -12
  153. package/dist/shield/PolicyCompiler.js.map +1 -1
  154. package/dist/shield/ProtectedPaths.js +4 -2
  155. package/dist/shield/ProtectedPaths.js.map +1 -1
  156. package/dist/skills/SkillCatalog.d.ts +2 -0
  157. package/dist/skills/SkillCatalog.js +8 -0
  158. package/dist/skills/SkillCatalog.js.map +1 -1
  159. package/dist/skills/SkillDoctor.d.ts +19 -2
  160. package/dist/skills/SkillDoctor.js +163 -13
  161. package/dist/skills/SkillDoctor.js.map +1 -1
  162. package/dist/tools/SafeCommandRunner.d.ts +1 -0
  163. package/dist/tools/SafeCommandRunner.js +1 -0
  164. package/dist/tools/SafeCommandRunner.js.map +1 -1
  165. package/dist/tools/ToolCapabilityRegistry.js +25 -3
  166. package/dist/tools/ToolCapabilityRegistry.js.map +1 -1
  167. package/dist/tools/ToolOrchestrator.js +21 -0
  168. package/dist/tools/ToolOrchestrator.js.map +1 -1
  169. package/dist/version.d.ts +1 -1
  170. package/dist/version.js +1 -1
  171. package/dist/workflow/AgentLoopReadiness.d.ts +103 -0
  172. package/dist/workflow/AgentLoopReadiness.js +371 -0
  173. package/dist/workflow/AgentLoopReadiness.js.map +1 -0
  174. package/dist/workflow/BoundaryEnforcement.d.ts +60 -0
  175. package/dist/workflow/BoundaryEnforcement.js +182 -0
  176. package/dist/workflow/BoundaryEnforcement.js.map +1 -0
  177. package/dist/workflow/EcosystemReadinessGate.d.ts +46 -0
  178. package/dist/workflow/EcosystemReadinessGate.js +126 -0
  179. package/dist/workflow/EcosystemReadinessGate.js.map +1 -0
  180. package/dist/workflow/EngineeringStandards.js +67 -12
  181. package/dist/workflow/EngineeringStandards.js.map +1 -1
  182. package/dist/workflow/GateCatalog.js +21 -2
  183. package/dist/workflow/GateCatalog.js.map +1 -1
  184. package/dist/workflow/GovernanceTemplatePacks.js +2 -26
  185. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  186. package/dist/workflow/GovernanceTemplates.js +8 -1
  187. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  188. package/dist/workflow/ProfileEnforcement.d.ts +7 -0
  189. package/dist/workflow/ProfileEnforcement.js +12 -0
  190. package/dist/workflow/ProfileEnforcement.js.map +1 -0
  191. package/dist/workflow/ReleaseDeploymentLedger.d.ts +63 -0
  192. package/dist/workflow/ReleaseDeploymentLedger.js +154 -0
  193. package/dist/workflow/ReleaseDeploymentLedger.js.map +1 -0
  194. package/dist/workflow/ReviewAnalyzer.js +50 -3
  195. package/dist/workflow/ReviewAnalyzer.js.map +1 -1
  196. package/dist/workflow/ReviewStore.d.ts +10 -0
  197. package/dist/workflow/ReviewStore.js.map +1 -1
  198. package/dist/workflow/SessionPreamble.d.ts +7 -0
  199. package/dist/workflow/SessionPreamble.js +48 -9
  200. package/dist/workflow/SessionPreamble.js.map +1 -1
  201. package/dist/workflow/SurfaceCoverage.d.ts +19 -0
  202. package/dist/workflow/SurfaceCoverage.js +57 -0
  203. package/dist/workflow/SurfaceCoverage.js.map +1 -0
  204. package/dist/workflow/VerificationCommands.d.ts +1 -0
  205. package/dist/workflow/VerificationCommands.js.map +1 -1
  206. package/dist/workflow/VerificationProfile.d.ts +5 -0
  207. package/dist/workflow/VerificationProfile.js +26 -0
  208. package/dist/workflow/VerificationProfile.js.map +1 -1
  209. package/dist/workflow/VerificationSchema.d.ts +3 -0
  210. package/dist/workflow/VerificationSchema.js +6 -0
  211. package/dist/workflow/VerificationSchema.js.map +1 -1
  212. package/dist/workflow/WorkflowEffectiveness.d.ts +97 -0
  213. package/dist/workflow/WorkflowEffectiveness.js +302 -0
  214. package/dist/workflow/WorkflowEffectiveness.js.map +1 -0
  215. package/dist/workflow/WorkflowEffectivenessRenderer.d.ts +2 -0
  216. package/dist/workflow/WorkflowEffectivenessRenderer.js +67 -0
  217. package/dist/workflow/WorkflowEffectivenessRenderer.js.map +1 -0
  218. package/dist/workflow/WorkflowEffectivenessScoring.d.ts +6 -0
  219. package/dist/workflow/WorkflowEffectivenessScoring.js +243 -0
  220. package/dist/workflow/WorkflowEffectivenessScoring.js.map +1 -0
  221. package/dist/workflow/gates/EnhancedGates.js +2 -0
  222. package/dist/workflow/gates/EnhancedGates.js.map +1 -1
  223. package/dist/workflow/gates/GateSystem.d.ts +16 -0
  224. package/dist/workflow/gates/GateSystem.js +208 -41
  225. package/dist/workflow/gates/GateSystem.js.map +1 -1
  226. package/dist/workflow/gates/MetaGovernanceGates.js +269 -8
  227. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -1
  228. package/dist/workflow/gates/TestIntegrityGate.d.ts +51 -0
  229. package/dist/workflow/gates/TestIntegrityGate.js +175 -0
  230. package/dist/workflow/gates/TestIntegrityGate.js.map +1 -0
  231. package/dist/workflow/types.d.ts +1 -1
  232. package/docs/guides/DEVELOPMENT_WORKFLOW.md +28 -0
  233. package/docs/reference/cli.md +2 -1
  234. package/docs/start/agent-governance-demo.md +1 -1
  235. package/docs/workflow/E2E_EXAMPLE.md +133 -0
  236. package/docs/workflow/README.md +7 -1
  237. package/docs/workflow/TEMPLATE_GUIDE.md +162 -0
  238. package/docs/workflow/templates/github-actions-scale-preflight.yml +4 -1
  239. package/docs/workflow/templates/plan.md +26 -0
  240. package/docs/workflow/templates/spec.md +28 -0
  241. package/package.json +7 -3
  242. package/scripts/workflow/run-vitest.mjs +123 -0
package/README.en.md CHANGED
@@ -1,9 +1,9 @@
1
1
  <p align="center">
2
- <img src="https://img.shields.io/badge/version-0.48.0-orange?style=flat-square" alt="version" />
2
+ <img src="https://img.shields.io/badge/version-0.50.1-orange?style=flat-square" alt="version" />
3
3
  <img src="https://img.shields.io/badge/platforms-22-blue?style=flat-square" alt="platforms" />
4
4
  <img src="https://img.shields.io/badge/agents-12-blue?style=flat-square" alt="agents" />
5
5
  <img src="https://img.shields.io/badge/tests-verified-brightgreen?style=flat-square" alt="tests" />
6
- <img src="https://img.shields.io/badge/npm-0.48.0-cb3837?style=flat-square&logo=npm" alt="npm" />
6
+ <img src="https://img.shields.io/badge/npm-0.50.1-cb3837?style=flat-square&logo=npm" alt="npm" />
7
7
  </p>
8
8
 
9
9
  [![RepoStars](https://repostars.dev/api/embed?repo=hongmaple0820%2Fscale-engine&theme=copper)](https://repostars.dev/?repos=hongmaple0820%2Fscale-engine&theme=copper)
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  <p align="center">
2
- <img src="https://img.shields.io/badge/version-0.48.0-orange?style=flat-square" alt="version" />
2
+ <img src="https://img.shields.io/badge/version-0.50.1-orange?style=flat-square" alt="version" />
3
3
  <img src="https://img.shields.io/badge/platforms-22-blue?style=flat-square" alt="platforms" />
4
4
  <img src="https://img.shields.io/badge/agents-22-blue?style=flat-square" alt="agents" />
5
5
  <img src="https://img.shields.io/badge/tests-verified-brightgreen?style=flat-square" alt="tests" />
6
- <img src="https://img.shields.io/badge/npm-0.48.0-cb3837?style=flat-square&logo=npm" alt="npm" />
6
+ <img src="https://img.shields.io/badge/npm-0.50.1-cb3837?style=flat-square&logo=npm" alt="npm" />
7
7
  </p>
8
8
 
9
9
  [![RepoStars](https://repostars.dev/api/embed?repo=hongmaple0820%2Fscale-engine&theme=copper)](https://repostars.dev/?repos=hongmaple0820%2Fscale-engine&theme=copper)
@@ -0,0 +1,7 @@
1
+ export declare const EVIDENCE_DISCIPLINE_PROMPT: string;
2
+ /**
3
+ * Condensed single-line form for constrained-context injection (e.g. Cortex
4
+ * `inject --minimal`). The full {@link EVIDENCE_DISCIPLINE_PROMPT} stays the
5
+ * source of truth; this is the budget-friendly restatement of the same contract.
6
+ */
7
+ export declare const EVIDENCE_DISCIPLINE_PROMPT_MINIMAL = "\u8BC1\u636E\u7EAA\u5F8B: \u53EA\u6C47\u62A5\u6709\u8BC1\u636E\u652F\u6301\u7684\u5DE5\u4F5C\uFF0C\u672A\u9A8C\u8BC1\u6807\u6CE8 [UNCERTAIN]\uFF1B\u5931\u8D25/\u8DF3\u8FC7\u5982\u5B9E\u62A5\u544A\uFF1B\u65E0\u9A8C\u8BC1\u7ED3\u679C\u4E0D\u8BF4\"\u5DF2\u901A\u8FC7\"\u3002";
@@ -0,0 +1,21 @@
1
+ // SCALE Engine — Evidence Discipline Addendum (P1.3)
2
+ // Single source of truth for the "证据对齐 / evidence alignment" guidance that is
3
+ // (a) carried by every Agent Profile via `systemPromptAddendum`, and
4
+ // (b) injected at Cortex SessionStart.
5
+ // Mirrors rules/common/evidence-discipline.md — keep the two in sync.
6
+ export const EVIDENCE_DISCIPLINE_PROMPT = [
7
+ '## 证据纪律 (Evidence Discipline)',
8
+ '',
9
+ '汇报进度前,先把每个声明与本轮工具结果对齐:',
10
+ '- 只汇报有证据支持的工作;未验证的内容明确标注(如 [UNCERTAIN])。',
11
+ '- 测试失败就报告失败输出;步骤被跳过就说明跳过,不要掩盖。',
12
+ '- 完成并验证后再直接说"完成",不要使用模糊措辞。',
13
+ '- 没有实际验证结果,不声称"已通过";dry-run 只代表入口可调度,不代表质量通过。',
14
+ ].join('\n');
15
+ /**
16
+ * Condensed single-line form for constrained-context injection (e.g. Cortex
17
+ * `inject --minimal`). The full {@link EVIDENCE_DISCIPLINE_PROMPT} stays the
18
+ * source of truth; this is the budget-friendly restatement of the same contract.
19
+ */
20
+ export const EVIDENCE_DISCIPLINE_PROMPT_MINIMAL = '证据纪律: 只汇报有证据支持的工作,未验证标注 [UNCERTAIN];失败/跳过如实报告;无验证结果不说"已通过"。';
21
+ //# sourceMappingURL=evidenceDiscipline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidenceDiscipline.js","sourceRoot":"","sources":["../../src/agents/evidenceDiscipline.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,8EAA8E;AAC9E,qEAAqE;AACrE,uCAAuC;AACvC,sEAAsE;AAEtE,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,+BAA+B;IAC/B,EAAE;IACF,wBAAwB;IACxB,0CAA0C;IAC1C,gCAAgC;IAChC,4BAA4B;IAC5B,+CAA+C;CAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAC7C,6DAA6D,CAAA"}
@@ -1,9 +1,10 @@
1
1
  // SCALE Engine — Predefined Agent Profiles (v0.8.0)
2
2
  // 12 个专业 Agent Profile 定义
3
+ import { EVIDENCE_DISCIPLINE_PROMPT } from './evidenceDiscipline.js';
3
4
  // ============================================================================
4
5
  // 12 个预定义 Professional Agent Profiles
5
6
  // ============================================================================
6
- export const PROFESSIONAL_AGENTS = [
7
+ const BASE_PROFESSIONAL_AGENTS = [
7
8
  {
8
9
  id: 'frontend-agent',
9
10
  name: 'Frontend Developer',
@@ -138,6 +139,12 @@ export const PROFESSIONAL_AGENTS = [
138
139
  description: 'System architecture design, scalability planning, pattern selection'
139
140
  }
140
141
  ];
142
+ // 12 个 profile 默认继承共享的证据纪律段(单一事实源在 EVIDENCE_DISCIPLINE_PROMPT);
143
+ // 个别 profile 若显式设置 systemPromptAddendum 则覆盖默认值。
144
+ export const PROFESSIONAL_AGENTS = BASE_PROFESSIONAL_AGENTS.map(p => ({
145
+ systemPromptAddendum: EVIDENCE_DISCIPLINE_PROMPT,
146
+ ...p,
147
+ }));
141
148
  // ============================================================================
142
149
  // Profile Registry
143
150
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/agents/profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/agents/profiles.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ export interface AgentProfile {
70
70
  workflow?: AgentWorkflowStep[];
71
71
  successMetrics?: AgentSuccessMetric[];
72
72
  collaboration?: CollaborationSpec;
73
+ systemPromptAddendum?: string;
73
74
  }
74
75
  /** Agent 实例状态 */
75
76
  export type AgentStatus = 'idle' | 'running' | 'blocked' | 'completed' | 'failed' | 'recycled';
@@ -0,0 +1,28 @@
1
+ import type { DashboardProjectSummary } from '../dashboard/DashboardServer.js';
2
+ export interface DashboardHttpEnv {
3
+ SCALE_DASHBOARD_HOST?: string;
4
+ HOST?: string;
5
+ SCALE_DASHBOARD_PORT?: string;
6
+ PORT?: string;
7
+ SCALE_DASHBOARD_AUTO_PORT?: string;
8
+ SCALE_DASHBOARD_PROJECT_DIR?: string;
9
+ SCALE_DASHBOARD_PROJECTS?: string;
10
+ }
11
+ export interface DashboardPortConfig {
12
+ port: number;
13
+ auto: boolean;
14
+ }
15
+ export interface DashboardLaunchProject extends DashboardProjectSummary {
16
+ port: number;
17
+ host: string;
18
+ url: string;
19
+ }
20
+ export interface DashboardLaunchPlan {
21
+ host: string;
22
+ projects: DashboardLaunchProject[];
23
+ }
24
+ export declare function parseDashboardPort(value: string | undefined, fallback?: number): DashboardPortConfig;
25
+ export declare function parseDashboardProjects(env: DashboardHttpEnv, cwd?: string): DashboardProjectSummary[];
26
+ export declare function resolveDashboardLaunchPlan(env?: DashboardHttpEnv, cwd?: string): Promise<DashboardLaunchPlan>;
27
+ export declare function findAvailablePort(startPort: number, host: string): Promise<number>;
28
+ export declare function assertDashboardProjectsExist(projects: DashboardProjectSummary[]): string[];
@@ -0,0 +1,110 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { createServer } from 'node:net';
3
+ import { basename, join, resolve } from 'node:path';
4
+ export function parseDashboardPort(value, fallback = 3210) {
5
+ if (!value)
6
+ return { port: fallback, auto: false };
7
+ const trimmed = value.trim().toLowerCase();
8
+ if (trimmed === 'auto')
9
+ return { port: fallback, auto: true };
10
+ const port = Number(trimmed);
11
+ if (!Number.isInteger(port) || port <= 0 || port > 65535) {
12
+ throw new Error(`Invalid dashboard port: ${value}`);
13
+ }
14
+ return { port, auto: false };
15
+ }
16
+ export function parseDashboardProjects(env, cwd = process.cwd()) {
17
+ const multi = env.SCALE_DASHBOARD_PROJECTS?.trim();
18
+ if (multi) {
19
+ return multi
20
+ .split(';')
21
+ .map(entry => entry.trim())
22
+ .filter(Boolean)
23
+ .map((entry, index) => parseProjectEntry(entry, cwd, index));
24
+ }
25
+ const projectDir = resolve(env.SCALE_DASHBOARD_PROJECT_DIR ?? cwd);
26
+ return [projectSummary(projectDir)];
27
+ }
28
+ export async function resolveDashboardLaunchPlan(env = process.env, cwd = process.cwd()) {
29
+ const host = env.SCALE_DASHBOARD_HOST ?? env.HOST ?? '0.0.0.0';
30
+ const portConfig = parseDashboardPort(env.SCALE_DASHBOARD_PORT ?? env.PORT, 3210);
31
+ const projects = parseDashboardProjects(env, cwd);
32
+ const autoPort = portConfig.auto || truthy(env.SCALE_DASHBOARD_AUTO_PORT) || projects.length > 1;
33
+ let nextPort = portConfig.port;
34
+ const launchProjects = [];
35
+ for (const project of projects) {
36
+ const port = autoPort ? await findAvailablePort(nextPort, host) : nextPort;
37
+ const url = dashboardUrl(host, port);
38
+ launchProjects.push({
39
+ ...project,
40
+ port,
41
+ host,
42
+ url,
43
+ current: false,
44
+ });
45
+ nextPort = port + 1;
46
+ }
47
+ return {
48
+ host,
49
+ projects: launchProjects.map(project => ({ ...project, current: false })),
50
+ };
51
+ }
52
+ export async function findAvailablePort(startPort, host) {
53
+ for (let port = startPort; port <= 65535; port += 1) {
54
+ if (await canListen(port, host))
55
+ return port;
56
+ }
57
+ throw new Error(`No available dashboard port at or above ${startPort}`);
58
+ }
59
+ function parseProjectEntry(entry, cwd, index) {
60
+ const [rawName, rawPath] = splitProjectEntry(entry);
61
+ const projectDir = resolve(cwd, rawPath);
62
+ const name = rawName || basename(projectDir) || `project-${index + 1}`;
63
+ return projectSummary(projectDir, name);
64
+ }
65
+ function splitProjectEntry(entry) {
66
+ const separator = entry.includes('|') ? '|' : entry.includes('=') ? '=' : '';
67
+ if (!separator)
68
+ return [undefined, entry];
69
+ const [name, ...rest] = entry.split(separator);
70
+ const path = rest.join(separator).trim();
71
+ return [name.trim() || undefined, path || entry];
72
+ }
73
+ function projectSummary(projectDir, name = basename(projectDir) || 'project') {
74
+ const scaleDir = join(projectDir, '.scale');
75
+ const id = safeProjectId(name);
76
+ return {
77
+ id,
78
+ name,
79
+ projectDir,
80
+ scaleDir,
81
+ };
82
+ }
83
+ function dashboardUrl(host, port) {
84
+ const displayHost = host === '0.0.0.0' || host === '::' ? 'localhost' : host;
85
+ return `http://${displayHost}:${port}`;
86
+ }
87
+ function truthy(value) {
88
+ return ['1', 'true', 'yes', 'on'].includes(String(value ?? '').trim().toLowerCase());
89
+ }
90
+ function safeProjectId(name) {
91
+ const base = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
92
+ return base || 'project';
93
+ }
94
+ function canListen(port, host) {
95
+ return new Promise(resolveListen => {
96
+ const server = createServer();
97
+ server.unref();
98
+ server.once('error', () => resolveListen(false));
99
+ server.once('listening', () => {
100
+ server.close(() => resolveListen(true));
101
+ });
102
+ server.listen({ port, host });
103
+ });
104
+ }
105
+ export function assertDashboardProjectsExist(projects) {
106
+ return projects
107
+ .filter(project => !existsSync(project.projectDir))
108
+ .map(project => project.projectDir);
109
+ }
110
+ //# sourceMappingURL=DashboardHttpConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardHttpConfig.js","sourceRoot":"","sources":["../../src/api/DashboardHttpConfig.ts"],"names":[],"mappings":"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"}
package/dist/api/cli.js CHANGED
@@ -22,8 +22,9 @@ import { normalizeLanguage } from '../i18n/Language.js';
22
22
  import { EvidenceStore } from '../workflow/EvidenceStore.js';
23
23
  import { ReviewStore } from '../workflow/ReviewStore.js';
24
24
  import { WorkflowEngine } from '../workflow/WorkflowEngine.js';
25
- import { resolveVerificationTargets, } from '../workflow/VerificationProfile.js';
26
- import { preflightGateStages } from '../workflow/GateCatalog.js';
25
+ import { loadVerificationMatrix, resolveVerificationTargets, } from '../workflow/VerificationProfile.js';
26
+ import { evaluateEcosystemReadinessGate } from '../workflow/EcosystemReadinessGate.js';
27
+ import { CORE_GATE_CATALOG, META_GATE_CATALOG, preflightGateStages } from '../workflow/GateCatalog.js';
27
28
  import { gatesCommand } from '../cli/gateStatusCommands.js';
28
29
  import { scoreCommand } from '../cli/scoreCommands.js';
29
30
  import { promptCommand } from '../cli/promptCommands.js';
@@ -75,6 +76,12 @@ import { SCALE_ENGINE_VERSION } from '../version.js';
75
76
  const SCALE_DIR = process.env.SCALE_DIR ?? '.scale';
76
77
  const PROJECT_DIR = process.env.SCALE_PROJECT_DIR ?? process.cwd();
77
78
  const DB_PATH = join(SCALE_DIR, 'scale.db');
79
+ const GATE_BLOCKING_BY_STAGE = new Map([...CORE_GATE_CATALOG, ...META_GATE_CATALOG]
80
+ .filter(gate => gate.stage)
81
+ .map(gate => [gate.stage, gate.blocking]));
82
+ function isBlockingGateStage(stage) {
83
+ return GATE_BLOCKING_BY_STAGE.get(stage) ?? true;
84
+ }
78
85
  function governanceModeFromScenario(scenario) {
79
86
  if (scenario === 'critical')
80
87
  return 'critical';
@@ -116,6 +123,8 @@ function commandEvidence(command, exitCode, summary) {
116
123
  }
117
124
  function normalizePreflightProfile(value) {
118
125
  const normalized = String(value ?? 'quick').trim().toLowerCase();
126
+ if (normalized === 'fast-lane' || normalized === 'fastlane')
127
+ return 'fast-lane';
119
128
  if (normalized === 'full' || normalized === 'ci')
120
129
  return normalized;
121
130
  return 'quick';
@@ -123,6 +132,55 @@ function normalizePreflightProfile(value) {
123
132
  function gatesForPreflightProfile(profile) {
124
133
  return preflightGateStages(profile);
125
134
  }
135
+ function resolvePreflightVerificationProfile(projectDir, scaleDir, requestedProfile, preflightProfile) {
136
+ const warnings = [];
137
+ const matrix = loadVerificationMatrix(projectDir, scaleDir);
138
+ const profiles = matrix?.profiles ?? {};
139
+ const explicitProfile = typeof requestedProfile === 'string' && requestedProfile.trim()
140
+ ? requestedProfile.trim()
141
+ : undefined;
142
+ if (explicitProfile) {
143
+ const explicitCandidate = resolveVerificationProfileCandidate(profiles, explicitProfile) ?? explicitProfile;
144
+ const matchingPreflightProfile = resolveVerificationProfileCandidate(profiles, preflightVerificationProfileCandidates(preflightProfile));
145
+ if (preflightProfile === 'fast-lane' &&
146
+ matrix?.defaultProfile &&
147
+ explicitProfile === matrix.defaultProfile &&
148
+ matchingPreflightProfile &&
149
+ matchingPreflightProfile !== explicitCandidate) {
150
+ warnings.push(`fast-lane preflight selected verification profile "${matchingPreflightProfile}" instead of default profile "${explicitProfile}" to avoid running the default full test command.`);
151
+ return { profile: matchingPreflightProfile, warnings };
152
+ }
153
+ return { profile: explicitCandidate, warnings };
154
+ }
155
+ for (const candidate of preflightVerificationProfileCandidates(preflightProfile)) {
156
+ if (profiles[candidate])
157
+ return { profile: candidate, warnings };
158
+ }
159
+ return { profile: undefined, warnings };
160
+ }
161
+ function preflightVerificationProfileCandidates(profile) {
162
+ if (profile === 'fast-lane')
163
+ return ['fast-lane', 'fastLane', 'fastlane'];
164
+ return [profile];
165
+ }
166
+ function resolveVerificationProfileCandidate(profiles, requested) {
167
+ const candidates = Array.isArray(requested) ? requested : [requested];
168
+ for (const candidate of candidates) {
169
+ if (profiles[candidate])
170
+ return candidate;
171
+ }
172
+ return undefined;
173
+ }
174
+ function latestBlockingEvidenceFailure(records) {
175
+ const latestByGate = new Map();
176
+ for (const record of records) {
177
+ if (!isBlockingGateStage(record.gate))
178
+ continue;
179
+ if (!latestByGate.has(record.gate))
180
+ latestByGate.set(record.gate, record);
181
+ }
182
+ return Array.from(latestByGate.values()).find(record => !record.passed);
183
+ }
126
184
  function shouldSkipPreflightCommandTargets(resolved, args) {
127
185
  if (!resolved.matrix)
128
186
  return false;
@@ -581,12 +639,14 @@ const preflight = defineCommand({
581
639
  const scaleDir = resolveScaleDirForProject(projectDir);
582
640
  const workflowEngine = createVerificationWorkflowEngine(scaleDir);
583
641
  const preflightProfile = normalizePreflightProfile(args['preflight-profile']);
642
+ const verificationProfile = resolvePreflightVerificationProfile(projectDir, scaleDir, args.profile, preflightProfile);
584
643
  const resolved = resolveVerificationTargets({
585
644
  projectDir,
586
645
  scaleDir,
587
- profile: args.profile,
646
+ profile: verificationProfile.profile,
588
647
  service: args.service,
589
648
  });
649
+ resolved.warnings.push(...verificationProfile.warnings);
590
650
  let gateStages = gatesForPreflightProfile(preflightProfile);
591
651
  if (resolved.targets.some(target => target.config.smoke)) {
592
652
  gateStages = ['G8'];
@@ -605,6 +665,13 @@ const preflight = defineCommand({
605
665
  scaleDir,
606
666
  changedFiles: engineeringStandardsChangedFiles,
607
667
  });
668
+ const ecosystemReadiness = await evaluateEcosystemReadinessGate({
669
+ policy: resolved.policy,
670
+ projectDir,
671
+ scaleDir,
672
+ checked: preflightProfile === 'ci',
673
+ skipReason: `ecosystem readiness is only checked by the ci preflight profile; current profile is ${preflightProfile}`,
674
+ });
608
675
  const targetResults = [];
609
676
  if (!args.json) {
610
677
  console.log('\nSCALE Preflight');
@@ -626,6 +693,15 @@ const preflight = defineCommand({
626
693
  else {
627
694
  console.log(' Engineering standards: skipped');
628
695
  }
696
+ if (ecosystemReadiness.checked) {
697
+ const status = ecosystemReadiness.blocked ? 'BLOCKED' : ecosystemReadiness.ok ? 'OK' : 'WARN';
698
+ console.log(` Ecosystem readiness: ${status} (${ecosystemReadiness.mode})`);
699
+ console.log(` Ecosystem tools: ${ecosystemReadiness.summary.installedTools}/${ecosystemReadiness.summary.totalTools}`);
700
+ console.log(` Ecosystem skills: ${ecosystemReadiness.summary.installedWorkflowSkills}/${ecosystemReadiness.summary.totalWorkflowSkills}`);
701
+ }
702
+ else {
703
+ console.log(' Ecosystem readiness: skipped');
704
+ }
629
705
  }
630
706
  for (const target of commandTargetsSkipped || workspaceSafety.blocked ? [] : resolved.targets) {
631
707
  if (!args.json) {
@@ -665,16 +741,19 @@ const preflight = defineCommand({
665
741
  }
666
742
  const passed = (targetResults.length === 0 || targetResults.every(target => target.passed)) &&
667
743
  !workspaceSafety.blocked &&
668
- !engineeringStandards.blocked;
744
+ !engineeringStandards.blocked &&
745
+ !ecosystemReadiness.blocked;
669
746
  const result = {
670
747
  phase: 'PREFLIGHT',
671
748
  profile: resolved.profileName,
672
749
  preflightProfile,
673
750
  gates: gateStages,
674
751
  services: targetResults.map(target => target.service).filter(Boolean),
752
+ warnings: resolved.warnings,
675
753
  policy: resolved.policy,
676
754
  workspaceSafety,
677
755
  engineeringStandards,
756
+ ecosystemReadiness,
678
757
  targets: targetResults,
679
758
  commandTargetsSkipped,
680
759
  passed,
@@ -698,13 +777,13 @@ const status = defineCommand({
698
777
  const { store } = getEngine();
699
778
  const evidenceStore = new EvidenceStore(SCALE_DIR);
700
779
  const reviewStore = new ReviewStore(SCALE_DIR);
701
- const [specs, plans, tasks, releases] = await Promise.all([
780
+ const [specs, plans, tasks] = await Promise.all([
702
781
  store.query({ type: 'Spec', limit: 1 }),
703
782
  store.query({ type: 'Plan', limit: 1 }),
704
783
  store.query({ type: 'Task', limit: 1 }),
705
- store.query({ type: 'Release', limit: 1 }),
706
784
  ]);
707
785
  const latestEvidence = evidenceStore.listGateResults(5);
786
+ const latestEvidenceForBlockers = evidenceStore.listGateResults(50);
708
787
  const latestReviews = reviewStore.listReviews(5);
709
788
  const latestTask = tasks[0];
710
789
  const taskPayload = latestTask?.payload;
@@ -712,12 +791,15 @@ const status = defineCommand({
712
791
  const currentOpenTasks = workflowState?.openTasks ?? [];
713
792
  const nextOpenTask = nextWorkflowOpenTask(currentOpenTasks);
714
793
  const blockers = [];
715
- const latestBlockingEvidence = latestEvidence.find(record => !record.passed);
716
- const latestBlockingReview = latestReviews.find(record => !record.passed);
794
+ const latestBlockingEvidence = latestBlockingEvidenceFailure(latestEvidenceForBlockers);
795
+ const latestReviewForTask = latestTask
796
+ ? reviewStore.listReviews(50).find(record => record.taskId === latestTask.id)
797
+ : undefined;
717
798
  if (latestBlockingEvidence)
718
799
  blockers.push(`${latestBlockingEvidence.gate}: ${latestBlockingEvidence.blockers.join('; ') || latestBlockingEvidence.status}`);
719
- if (latestBlockingReview)
720
- blockers.push(`Review ${latestBlockingReview.id}: ${latestBlockingReview.summary.critical} critical, ${latestBlockingReview.summary.high} high`);
800
+ if (latestReviewForTask && !latestReviewForTask.passed) {
801
+ blockers.push(`Review ${latestReviewForTask.id}: ${latestReviewForTask.summary.critical} critical, ${latestReviewForTask.summary.high} high`);
802
+ }
721
803
  if (latestTask && (!taskPayload?.verificationEvidenceIds || taskPayload.verificationEvidenceIds.length === 0)) {
722
804
  blockers.push(`Task ${latestTask.id} has no persisted verification evidence`);
723
805
  }
@@ -725,6 +807,8 @@ const status = defineCommand({
725
807
  blockers.push(`Task ${latestTask.id} has no persisted review evidence`);
726
808
  }
727
809
  const nextCommand = (() => {
810
+ const taskShipped = taskPayload?.shipPassed === true ||
811
+ Boolean(taskPayload?.shipCommitHash || taskPayload?.shipDeploymentRecordId);
728
812
  if (nextOpenTask?.kind === 'command')
729
813
  return nextOpenTask.value;
730
814
  if (nextOpenTask?.kind === 'blocker')
@@ -741,7 +825,7 @@ const status = defineCommand({
741
825
  return `scale verify ${latestTask.id}`;
742
826
  if (!taskPayload.reviewEvidenceIds?.length || taskPayload.reviewPassed !== true)
743
827
  return `scale review ${latestTask.id}`;
744
- if (!releases[0])
828
+ if (!taskShipped)
745
829
  return `scale ship ${latestTask.id}`;
746
830
  return 'scale evidence list';
747
831
  })();
@@ -759,6 +843,11 @@ const status = defineCommand({
759
843
  evidenceIds: taskPayload?.verificationEvidenceIds ?? [],
760
844
  reviewPassed: taskPayload?.reviewPassed,
761
845
  reviewEvidenceIds: taskPayload?.reviewEvidenceIds ?? [],
846
+ shipPassed: taskPayload?.shipPassed,
847
+ shippedAt: taskPayload?.shippedAt,
848
+ shipMode: taskPayload?.shipMode,
849
+ shipCommitHash: taskPayload?.shipCommitHash,
850
+ shipDeploymentRecordId: taskPayload?.shipDeploymentRecordId,
762
851
  } : null,
763
852
  },
764
853
  recentEvidence: latestEvidence.map(record => ({
@@ -1159,6 +1248,7 @@ const aiOsStatusCommand = defineCommand({
1159
1248
  console.log(` Context risk: ${report.intelligence.summary.contextQuality.compressionRisk}; omitted ${report.intelligence.summary.contextQuality.omittedSections} section(s), evidence warnings ${report.intelligence.summary.contextQuality.evidenceLossWarnings.length}`);
1160
1249
  console.log(` Evaluator gates: ${report.intelligence.summary.evaluatorQuality.requiredGates}; uncertainty ${report.intelligence.summary.evaluatorQuality.averageUncertainty}`);
1161
1250
  console.log(` Tool strategy: ${report.intelligence.summary.toolStrategyQuality.totalSteps} step(s), cost ${report.intelligence.summary.toolStrategyQuality.estimatedCostUnits}, fallback ${report.intelligence.summary.toolStrategyQuality.fallbackCoverage}`);
1251
+ console.log(` Agent Loop: ${report.intelligence.summary.agentLoopQuality.status}; ${report.intelligence.summary.agentLoopQuality.readySignals}/6 ready, score ${report.intelligence.summary.agentLoopQuality.score}/100`);
1162
1252
  for (const signal of report.intelligence.signals)
1163
1253
  console.log(` [${signal.status}] ${signal.id}: ${signal.summary}`);
1164
1254
  for (const check of report.checks)
@@ -1184,6 +1274,7 @@ const aiOsStatusCommand = defineCommand({
1184
1274
  console.log(` Context risk: ${report.intelligence.summary.contextQuality.compressionRisk}; omitted ${report.intelligence.summary.contextQuality.omittedSections} section(s), evidence warnings ${report.intelligence.summary.contextQuality.evidenceLossWarnings.length}`);
1185
1275
  console.log(` Evaluator gates: ${report.intelligence.summary.evaluatorQuality.requiredGates}; uncertainty ${report.intelligence.summary.evaluatorQuality.averageUncertainty}`);
1186
1276
  console.log(` Tool strategy: ${report.intelligence.summary.toolStrategyQuality.totalSteps} step(s), cost ${report.intelligence.summary.toolStrategyQuality.estimatedCostUnits}, fallback ${report.intelligence.summary.toolStrategyQuality.fallbackCoverage}`);
1277
+ console.log(` Agent Loop: ${report.intelligence.summary.agentLoopQuality.status}; ${report.intelligence.summary.agentLoopQuality.readySignals}/6 ready, score ${report.intelligence.summary.agentLoopQuality.score}/100`);
1187
1278
  for (const signal of report.intelligence.signals)
1188
1279
  console.log(` [${signal.status}] ${signal.id}: ${signal.summary}`);
1189
1280
  for (const check of report.checks)