@hongmaple0820/scale-engine 0.47.0 → 0.49.0

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 (128) hide show
  1. package/README.en.md +8 -2
  2. package/README.md +9 -3
  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/cli.js +975 -6222
  10. package/dist/api/cli.js.map +1 -1
  11. package/dist/artifact/types.d.ts +59 -0
  12. package/dist/artifact/types.js.map +1 -1
  13. package/dist/cli/artifactCrudCommands.d.ts +67 -0
  14. package/dist/cli/artifactCrudCommands.js +182 -0
  15. package/dist/cli/artifactCrudCommands.js.map +1 -0
  16. package/dist/cli/codegraphCommands.d.ts +1 -0
  17. package/dist/cli/codegraphCommands.js +241 -0
  18. package/dist/cli/codegraphCommands.js.map +1 -0
  19. package/dist/cli/contextCommands.d.ts +1 -0
  20. package/dist/cli/contextCommands.js +415 -0
  21. package/dist/cli/contextCommands.js.map +1 -0
  22. package/dist/cli/cortexCommands.d.ts +36 -0
  23. package/dist/cli/cortexCommands.js +76 -4
  24. package/dist/cli/cortexCommands.js.map +1 -1
  25. package/dist/cli/dependencyTddCommands.d.ts +92 -0
  26. package/dist/cli/dependencyTddCommands.js +174 -0
  27. package/dist/cli/dependencyTddCommands.js.map +1 -0
  28. package/dist/cli/diagnoseHuntCommands.d.ts +135 -0
  29. package/dist/cli/diagnoseHuntCommands.js +224 -0
  30. package/dist/cli/diagnoseHuntCommands.js.map +1 -0
  31. package/dist/cli/engineBootstrap.d.ts +39 -0
  32. package/dist/cli/engineBootstrap.js +129 -0
  33. package/dist/cli/engineBootstrap.js.map +1 -0
  34. package/dist/cli/evalCommands.d.ts +1 -0
  35. package/dist/cli/evalCommands.js +273 -0
  36. package/dist/cli/evalCommands.js.map +1 -0
  37. package/dist/cli/evolveDoctorCommands.d.ts +18 -0
  38. package/dist/cli/evolveDoctorCommands.js +59 -0
  39. package/dist/cli/evolveDoctorCommands.js.map +1 -0
  40. package/dist/cli/gateInlineCommands.d.ts +43 -0
  41. package/dist/cli/gateInlineCommands.js +74 -0
  42. package/dist/cli/gateInlineCommands.js.map +1 -0
  43. package/dist/cli/initConfigCommands.d.ts +138 -0
  44. package/dist/cli/initConfigCommands.js +602 -0
  45. package/dist/cli/initConfigCommands.js.map +1 -0
  46. package/dist/cli/metaGovernanceCommands.d.ts +11 -0
  47. package/dist/cli/metaGovernanceCommands.js +55 -0
  48. package/dist/cli/metaGovernanceCommands.js.map +1 -0
  49. package/dist/cli/phaseCommands.d.ts +53 -1
  50. package/dist/cli/phaseCommands.js +317 -22
  51. package/dist/cli/phaseCommands.js.map +1 -1
  52. package/dist/cli/runtimeSkillCommands.d.ts +6 -0
  53. package/dist/cli/runtimeSkillCommands.js +1515 -0
  54. package/dist/cli/runtimeSkillCommands.js.map +1 -0
  55. package/dist/cli/sessionCommands.d.ts +17 -0
  56. package/dist/cli/sessionCommands.js +38 -0
  57. package/dist/cli/sessionCommands.js.map +1 -0
  58. package/dist/cli/toolAgentCommands.d.ts +3 -0
  59. package/dist/cli/toolAgentCommands.js +441 -0
  60. package/dist/cli/toolAgentCommands.js.map +1 -0
  61. package/dist/cli/transitionCommands.d.ts +62 -0
  62. package/dist/cli/transitionCommands.js +174 -0
  63. package/dist/cli/transitionCommands.js.map +1 -0
  64. package/dist/cli/upgradeAssetsCommands.d.ts +44 -0
  65. package/dist/cli/upgradeAssetsCommands.js +933 -0
  66. package/dist/cli/upgradeAssetsCommands.js.map +1 -0
  67. package/dist/cli/workflowEvidenceCommands.d.ts +34 -0
  68. package/dist/cli/workflowEvidenceCommands.js +130 -0
  69. package/dist/cli/workflowEvidenceCommands.js.map +1 -0
  70. package/dist/cortex/InstinctStore.d.ts +32 -1
  71. package/dist/cortex/InstinctStore.js +235 -42
  72. package/dist/cortex/InstinctStore.js.map +1 -1
  73. package/dist/cortex/InstinctValidation.d.ts +9 -0
  74. package/dist/cortex/InstinctValidation.js +55 -0
  75. package/dist/cortex/InstinctValidation.js.map +1 -0
  76. package/dist/cortex/SessionInjector.js +13 -6
  77. package/dist/cortex/SessionInjector.js.map +1 -1
  78. package/dist/eval/BenchmarkPublisher.d.ts +2 -0
  79. package/dist/eval/BenchmarkPublisher.js +43 -0
  80. package/dist/eval/BenchmarkPublisher.js.map +1 -1
  81. package/dist/guardrails/ast/confirmers.d.ts +18 -0
  82. package/dist/guardrails/ast/confirmers.js +69 -0
  83. package/dist/guardrails/ast/confirmers.js.map +1 -0
  84. package/dist/guardrails/ast/parse.d.ts +20 -0
  85. package/dist/guardrails/ast/parse.js +51 -0
  86. package/dist/guardrails/ast/parse.js.map +1 -0
  87. package/dist/output/HTMLDocumentRenderer.d.ts +9 -0
  88. package/dist/output/HTMLDocumentRenderer.js +19 -0
  89. package/dist/output/HTMLDocumentRenderer.js.map +1 -1
  90. package/dist/review/FreshContextVerifier.d.ts +35 -0
  91. package/dist/review/FreshContextVerifier.js +120 -0
  92. package/dist/review/FreshContextVerifier.js.map +1 -0
  93. package/dist/review/JsonLlmClient.d.ts +37 -0
  94. package/dist/review/JsonLlmClient.js +94 -0
  95. package/dist/review/JsonLlmClient.js.map +1 -0
  96. package/dist/review/LlmJudge.d.ts +61 -0
  97. package/dist/review/LlmJudge.js +167 -0
  98. package/dist/review/LlmJudge.js.map +1 -0
  99. package/dist/version.d.ts +1 -1
  100. package/dist/version.js +1 -1
  101. package/dist/workflow/BoundaryEnforcement.d.ts +60 -0
  102. package/dist/workflow/BoundaryEnforcement.js +182 -0
  103. package/dist/workflow/BoundaryEnforcement.js.map +1 -0
  104. package/dist/workflow/EngineeringStandards.js +19 -9
  105. package/dist/workflow/EngineeringStandards.js.map +1 -1
  106. package/dist/workflow/GateCatalog.js +12 -2
  107. package/dist/workflow/GateCatalog.js.map +1 -1
  108. package/dist/workflow/ProfileEnforcement.d.ts +7 -0
  109. package/dist/workflow/ProfileEnforcement.js +12 -0
  110. package/dist/workflow/ProfileEnforcement.js.map +1 -0
  111. package/dist/workflow/ReviewStore.d.ts +10 -0
  112. package/dist/workflow/ReviewStore.js.map +1 -1
  113. package/dist/workflow/SurfaceCoverage.d.ts +19 -0
  114. package/dist/workflow/SurfaceCoverage.js +57 -0
  115. package/dist/workflow/SurfaceCoverage.js.map +1 -0
  116. package/dist/workflow/gates/EnhancedGates.js +2 -0
  117. package/dist/workflow/gates/EnhancedGates.js.map +1 -1
  118. package/dist/workflow/gates/TestIntegrityGate.d.ts +51 -0
  119. package/dist/workflow/gates/TestIntegrityGate.js +175 -0
  120. package/dist/workflow/gates/TestIntegrityGate.js.map +1 -0
  121. package/dist/workflow/types.d.ts +1 -1
  122. package/docs/guides/DEVELOPMENT_WORKFLOW.md +28 -0
  123. package/docs/workflow/E2E_EXAMPLE.md +133 -0
  124. package/docs/workflow/README.md +6 -0
  125. package/docs/workflow/TEMPLATE_GUIDE.md +162 -0
  126. package/docs/workflow/templates/plan.md +26 -0
  127. package/docs/workflow/templates/spec.md +28 -0
  128. package/package.json +3 -1
@@ -108,6 +108,23 @@ export interface SpecPayload {
108
108
  edgeCases: string[];
109
109
  northStar: string;
110
110
  ambiguityScore?: number;
111
+ /** 具体证据来源:测试名 / 基准命令 / 产物路径。后续 evidence 须能映射回其中某一项。 */
112
+ verificationSurface?: string[];
113
+ /** 运行期间不能退化的指标(性能 / 安全 / 兼容性)。 */
114
+ constraints?: string[];
115
+ /** 执行边界:可改文件、可用工具、明确禁动范围。 */
116
+ boundaries?: SpecBoundaries;
117
+ /** build 阶段每轮迭代后如何决定下一步。 */
118
+ iterationStrategy?: string;
119
+ /** 无可行路径时报告什么、需要什么才能解锁。 */
120
+ blockedStopCondition?: string;
121
+ }
122
+ /** Spec 执行边界(六要素之一) */
123
+ export interface SpecBoundaries {
124
+ files: string[];
125
+ tools: string[];
126
+ /** 明确不能动的范围(与需求层 outOfScope 互补:此处是执行层禁动)。 */
127
+ forbidden: string[];
111
128
  }
112
129
  /** Plan —— 技术方案 (HOW) */
113
130
  export interface PlanPayload {
@@ -217,6 +234,44 @@ export interface ChangePayload {
217
234
  diffSummary: string;
218
235
  reverted?: boolean;
219
236
  }
237
+ /** P1.2 (G23): a single test-integrity heuristic finding. */
238
+ export interface TestIntegrityFinding {
239
+ /** Test file (repo-relative path) the finding came from. */
240
+ file: string;
241
+ /** Heuristic that produced the finding. */
242
+ kind: 'assertion-removed' | 'skip-added' | 'only-added' | 'weakened-assertion' | 'timeout-inflated';
243
+ /** Intended enforcement once G23 leaves advisory mode (see P1 decision E1). */
244
+ severity: 'warn' | 'block';
245
+ /** Human-readable explanation of the flagged change. */
246
+ detail: string;
247
+ }
248
+ /**
249
+ * P1.2 (G23 Test Integrity): evidence produced by analysing the test-file diff.
250
+ * Fields marked PR-D2 are populated by the later verify→ship enforcement PR and
251
+ * are optional so PR-D1 (advisory detection) can omit them.
252
+ */
253
+ export interface TestIntegrityEvidence {
254
+ /** Test files included in the analysis (repo-relative paths). */
255
+ analyzedFiles: string[];
256
+ /** Approx assertion count on the pre-change side of the analysed diff hunks. */
257
+ preChangeAssertionCount: number;
258
+ /** Approx assertion count on the post-change side of the analysed diff hunks. */
259
+ postChangeAssertionCount: number;
260
+ /** postChangeAssertionCount - preChangeAssertionCount (negative = net assertions removed). */
261
+ assertionCountDelta: number;
262
+ /** Human-readable summary of every flagged heuristic. */
263
+ flaggedPatterns: string[];
264
+ /** Structured findings backing flaggedPatterns. */
265
+ findings: TestIntegrityFinding[];
266
+ /** Whether this run was advisory (warn-only) or enforced. */
267
+ advisory: boolean;
268
+ /** PR-D2: coverage regression vs the last passing baseline. */
269
+ coverageDelta?: number;
270
+ /** PR-D2: test-file hash recorded at verify time. */
271
+ testFileHashAtVerify?: string;
272
+ /** PR-D2: test-file hash recomputed at ship time. */
273
+ testFileHashAtShip?: string;
274
+ }
220
275
  /** Evidence —— 验证证据 */
221
276
  export interface EvidencePayload {
222
277
  testPlanId: ArtifactId;
@@ -225,6 +280,10 @@ export interface EvidencePayload {
225
280
  output: string;
226
281
  duration: number;
227
282
  artifacts: string[];
283
+ /** P0: 指向 Spec.verificationSurface 中声明的某一项;无映射的证据视为未对齐(P0 仅告警)。 */
284
+ verificationSurfaceRef?: string;
285
+ /** P1.2 (G23): test-integrity analysis attached to verify-stage evidence. */
286
+ testIntegrity?: TestIntegrityEvidence;
228
287
  }
229
288
  /** Defect —— 缺陷 */
230
289
  export interface DefectPayload {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/artifact/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAitBH,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe,EAAS,IAAY,EAAS,OAAiB;QACxE,KAAK,CAAC,OAAO,CAAC,CAAA;QADoB,SAAI,GAAJ,IAAI,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAU;QAExE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,UAAU,IAAI,8BAA8B,MAAM,GAAG,EAAE,oBAAoB,EAAE;YACjF,IAAI;YACJ,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAmB,QAAwB;QACzC,KAAK,CAAC,iCAAiC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE;YAChG,QAAQ;SACT,CAAC,CAAA;QAHe,aAAQ,GAAR,QAAQ,CAAgB;IAI3C,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,SAAS,IAAI,aAAa,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC5E,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,YAAY,EAAU;QACpB,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;CACF;AAmBD,eAAe;AACf,MAAM,CAAC,MAAM,qBAAqB,GAA6C;IAC7E,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,yBAAyB,EAAE,KAAK;QAChC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,mBAAmB,EAAE,QAAQ;QAC7B,oBAAoB,EAAE,IAAI;QAC1B,yBAAyB,EAAE,KAAK;QAChC,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,CAAC;KACd;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,mBAAmB,EAAE,MAAM;QAC3B,oBAAoB,EAAE,IAAI;QAC1B,yBAAyB,EAAE,IAAI;QAC/B,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,CAAC;KACd;CACF,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/artifact/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsxBH,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe,EAAS,IAAY,EAAS,OAAiB;QACxE,KAAK,CAAC,OAAO,CAAC,CAAA;QADoB,SAAI,GAAJ,IAAI,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAU;QAExE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,UAAU,IAAI,8BAA8B,MAAM,GAAG,EAAE,oBAAoB,EAAE;YACjF,IAAI;YACJ,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAmB,QAAwB;QACzC,KAAK,CAAC,iCAAiC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE;YAChG,QAAQ;SACT,CAAC,CAAA;QAHe,aAAQ,GAAR,QAAQ,CAAgB;IAI3C,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,SAAS,IAAI,aAAa,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC5E,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,YAAY,EAAU;QACpB,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;CACF;AAmBD,eAAe;AACf,MAAM,CAAC,MAAM,qBAAqB,GAA6C;IAC7E,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,yBAAyB,EAAE,KAAK;QAChC,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,mBAAmB,EAAE,QAAQ;QAC7B,oBAAoB,EAAE,IAAI;QAC1B,yBAAyB,EAAE,KAAK;QAChC,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,CAAC;KACd;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,mBAAmB,EAAE,MAAM;QAC3B,oBAAoB,EAAE,IAAI;QAC1B,yBAAyB,EAAE,IAAI;QAC/B,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,CAAC;KACd;CACF,CAAA"}
@@ -0,0 +1,67 @@
1
+ export declare const createCommand: import("citty").CommandDef<{
2
+ type: {
3
+ type: "positional";
4
+ required: true;
5
+ };
6
+ title: {
7
+ type: "positional";
8
+ required: true;
9
+ };
10
+ parent: {
11
+ type: "string";
12
+ };
13
+ payload: {
14
+ type: "string";
15
+ default: string;
16
+ };
17
+ }>;
18
+ export declare const listCommand: import("citty").CommandDef<{
19
+ type: {
20
+ type: "string";
21
+ };
22
+ status: {
23
+ type: "string";
24
+ };
25
+ limit: {
26
+ type: "string";
27
+ default: string;
28
+ };
29
+ }>;
30
+ export declare const showCommand: import("citty").CommandDef<{
31
+ id: {
32
+ type: "positional";
33
+ required: true;
34
+ };
35
+ }>;
36
+ export declare const suggestCommand: import("citty").CommandDef<{
37
+ id: {
38
+ type: "positional";
39
+ required: true;
40
+ };
41
+ json: {
42
+ type: "boolean";
43
+ default: false;
44
+ };
45
+ }>;
46
+ export declare const createPRDCommand: import("citty").CommandDef<{
47
+ title: {
48
+ type: "positional";
49
+ required: true;
50
+ };
51
+ specs: {
52
+ type: "string";
53
+ description: string;
54
+ };
55
+ plans: {
56
+ type: "string";
57
+ description: string;
58
+ };
59
+ tasks: {
60
+ type: "string";
61
+ description: string;
62
+ };
63
+ 'session-id': {
64
+ type: "string";
65
+ required: false;
66
+ };
67
+ }>;
@@ -0,0 +1,182 @@
1
+ // SCALE Engine — Artifact CRUD Commands
2
+ import { defineCommand } from 'citty';
3
+ import { getEngine } from './engineBootstrap.js';
4
+ export const createCommand = defineCommand({
5
+ meta: { name: 'create', description: 'Create an artifact' },
6
+ args: {
7
+ type: { type: 'positional', required: true },
8
+ title: { type: 'positional', required: true },
9
+ parent: { type: 'string' },
10
+ payload: { type: 'string', default: '{}' },
11
+ },
12
+ async run({ args }) {
13
+ const { store } = getEngine();
14
+ let payload = {};
15
+ try {
16
+ payload = JSON.parse(args.payload);
17
+ }
18
+ catch { /* empty */ }
19
+ const { INITIAL_STATES } = await import('../artifact/fsmDefinitions.js');
20
+ const artifact = await store.create({
21
+ type: args.type,
22
+ title: args.title,
23
+ payload,
24
+ parents: args.parent ? [args.parent] : [],
25
+ initialStatus: INITIAL_STATES[args.type] ?? 'DRAFT',
26
+ createdBy: { kind: 'human', userId: process.env.USER ?? 'cli' },
27
+ });
28
+ console.log(JSON.stringify(artifact, null, 2));
29
+ },
30
+ });
31
+ export const listCommand = defineCommand({
32
+ meta: { name: 'list', description: 'List artifacts' },
33
+ args: { type: { type: 'string' }, status: { type: 'string' }, limit: { type: 'string', default: '20' } },
34
+ async run({ args }) {
35
+ const { store } = getEngine();
36
+ const items = await store.query({
37
+ type: args.type,
38
+ status: args.status,
39
+ limit: parseInt(args.limit, 10),
40
+ });
41
+ console.log(JSON.stringify(items, null, 2));
42
+ },
43
+ });
44
+ export const showCommand = defineCommand({
45
+ meta: { name: 'show', description: 'Show artifact details' },
46
+ args: { id: { type: 'positional', required: true } },
47
+ async run({ args }) {
48
+ const { store } = getEngine();
49
+ const artifact = await store.get(args.id);
50
+ if (!artifact) {
51
+ console.error(`Artifact not found: ${args.id}`);
52
+ process.exit(1);
53
+ }
54
+ console.log(JSON.stringify(artifact, null, 2));
55
+ },
56
+ });
57
+ export const suggestCommand = defineCommand({
58
+ meta: { name: 'suggest', description: 'Show available actions for an artifact' },
59
+ args: {
60
+ id: { type: 'positional', required: true },
61
+ json: { type: 'boolean', default: false },
62
+ },
63
+ async run({ args }) {
64
+ const { store, fsm } = getEngine();
65
+ const artifact = await store.get(args.id);
66
+ if (!artifact) {
67
+ console.error(`Artifact not found: ${args.id}`);
68
+ process.exit(1);
69
+ }
70
+ const def = fsm.getDefinition(artifact.type);
71
+ if (!def) {
72
+ console.error(`No FSM registered for type: ${artifact.type}`);
73
+ process.exit(1);
74
+ }
75
+ const availableTxs = def.transitions.filter((t) => t.from === artifact.status);
76
+ const suggestions = await Promise.all(availableTxs.map(async (tx) => {
77
+ const guardCheck = await fsm.canTransition(args.id, tx.action);
78
+ return {
79
+ action: tx.action,
80
+ to: tx.to,
81
+ guards: (tx.guards ?? []).map((g) => g.name),
82
+ guardMessages: (tx.guards ?? []).map((g) => g.errorMessage),
83
+ canExecute: guardCheck.allowed,
84
+ blockedBy: guardCheck.blockedBy,
85
+ };
86
+ }));
87
+ if (args.json) {
88
+ console.log(JSON.stringify({
89
+ id: artifact.id,
90
+ type: artifact.type,
91
+ currentStatus: artifact.status,
92
+ isTerminal: def.terminal.includes(artifact.status),
93
+ suggestions,
94
+ }, null, 2));
95
+ }
96
+ else {
97
+ console.log(`\n📊 ${artifact.id} (${artifact.type})`);
98
+ console.log(` Current status: ${artifact.status}`);
99
+ if (def.terminal.includes(artifact.status)) {
100
+ console.log(` ⚠️ Terminal state — no further transitions available`);
101
+ }
102
+ console.log('');
103
+ console.log('Available actions:');
104
+ console.log('──────────────────────────────────────────────────');
105
+ if (suggestions.length === 0) {
106
+ console.log(' No actions available from this state.');
107
+ }
108
+ else {
109
+ for (const s of suggestions) {
110
+ const status = s.canExecute ? '✅' : '❌';
111
+ console.log(` ${status} ${s.action} → ${s.to}`);
112
+ if (s.guards.length > 0) {
113
+ for (const g of s.guardMessages) {
114
+ console.log(` Guard: ${g}`);
115
+ }
116
+ }
117
+ if (s.blockedBy && s.blockedBy.length > 0) {
118
+ for (const b of s.blockedBy) {
119
+ console.log(` ❌ ${b.message}`);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ console.log('──────────────────────────────────────────────────');
125
+ console.log('\nUsage: scale transition <id> <action> --reason "..."');
126
+ }
127
+ },
128
+ });
129
+ export const createPRDCommand = defineCommand({
130
+ meta: { name: 'create-prd', description: 'Create PRD hierarchy (Spec → Plan → Tasks)' },
131
+ args: {
132
+ title: { type: 'positional', required: true },
133
+ specs: { type: 'string', description: 'Spec description' },
134
+ plans: { type: 'string', description: 'Plan design' },
135
+ tasks: { type: 'string', description: 'Task list (comma-separated)' },
136
+ 'session-id': { type: 'string', required: false },
137
+ },
138
+ async run({ args }) {
139
+ const { store } = getEngine();
140
+ const spec = await store.create({
141
+ type: 'Spec',
142
+ title: args.title,
143
+ payload: { description: args.specs ?? '', ambiguityScore: 0.3 },
144
+ initialStatus: 'DRAFT',
145
+ createdBy: { kind: 'human', userId: process.env.USER ?? 'cli' },
146
+ });
147
+ const plan = await store.create({
148
+ type: 'Plan',
149
+ title: `${args.title} - Implementation Plan`,
150
+ payload: { design: args.plans ?? '' },
151
+ parents: [spec.id],
152
+ initialStatus: 'DRAFT',
153
+ createdBy: { kind: 'human', userId: process.env.USER ?? 'cli' },
154
+ });
155
+ const taskList = (args.tasks ?? '').split(',').map((t) => t.trim()).filter((t) => t.length > 0);
156
+ const tasks = [];
157
+ for (const taskTitle of taskList) {
158
+ const task = await store.create({
159
+ type: 'Task',
160
+ title: taskTitle,
161
+ payload: { description: taskTitle, filesInvolved: [], dependsOn: [], requiredRole: 'implementer', requiredCapabilities: [] },
162
+ parents: [plan.id],
163
+ initialStatus: 'TODO',
164
+ createdBy: { kind: 'human', userId: process.env.USER ?? 'cli' },
165
+ });
166
+ tasks.push({ id: task.id, title: task.title });
167
+ }
168
+ console.log('\n✅ PRD hierarchy created:');
169
+ console.log(`\nSpec: ${spec.id} (DRAFT)`);
170
+ console.log(` └─ Plan: ${plan.id} (DRAFT)`);
171
+ for (const task of tasks) {
172
+ console.log(` └─ Task: ${task.id} (TODO) - ${task.title}`);
173
+ }
174
+ console.log('\nNext steps:');
175
+ console.log(' 1. scale transition spec submit');
176
+ console.log(' 2. scale transition spec review');
177
+ console.log(' 3. scale transition spec approve (requires ambiguity ≤ 0.2)');
178
+ console.log(' 4. scale transition plan approve');
179
+ console.log(' 5. scale transition task-* ready (for each task)');
180
+ },
181
+ });
182
+ //# sourceMappingURL=artifactCrudCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifactCrudCommands.js","sourceRoot":"","sources":["../../src/cli/artifactCrudCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const codegraphCommand: import("citty").CommandDef<import("citty").ArgsDef>;
@@ -0,0 +1,241 @@
1
+ // SCALE Engine — CodeGraph CLI Commands (extracted from cli.ts)
2
+ // Adapter-first code intelligence: status, init, query, impact, context, roi, dump
3
+ import { defineCommand } from 'citty';
4
+ import { resolve, dirname } from 'node:path';
5
+ import { mkdirSync, writeFileSync } from 'node:fs';
6
+ import { buildCodeGraphContext, createCodeGraphRoiReport, dumpCodeGraphData, impactCodeGraph, inspectCodeIntelligence, queryCodeGraph, writeCodeIntelligenceConfig, } from '../codegraph/CodeIntelligence.js';
7
+ import { PROJECT_DIR, isTruthyFlag, resolveScaleDirForProject } from './engineBootstrap.js';
8
+ // ---------------------------------------------------------------------------
9
+ // Helpers
10
+ // ---------------------------------------------------------------------------
11
+ function parsePositiveIntArg(value, name) {
12
+ if (value === undefined || value === null || value === '')
13
+ return undefined;
14
+ const parsed = Number.parseInt(String(value), 10);
15
+ if (Number.isNaN(parsed) || parsed <= 0) {
16
+ throw new Error(`${name} must be a positive integer.`);
17
+ }
18
+ return parsed;
19
+ }
20
+ function printCodeGraphReport(report) {
21
+ console.log('SCALE Code Intelligence');
22
+ console.log(` Mode: ${report.mode}`);
23
+ console.log(` Query: ${report.query}`);
24
+ console.log(` Provider: ${report.provider ?? 'fallback'}`);
25
+ console.log(` Fallback used: ${report.fallbackUsed}`);
26
+ console.log(` Confidence: ${report.confidence}`);
27
+ console.log(` Files: ${report.files.length}`);
28
+ console.log(` Estimated reads saved: ${report.roi.fileReadsSaved}`);
29
+ for (const hit of report.hits.slice(0, 12)) {
30
+ const line = hit.line ? `:${hit.line}` : '';
31
+ const symbol = hit.symbol ? ` ${hit.symbol}` : '';
32
+ console.log(` - ${hit.file}${line}${symbol} (${hit.reason})`);
33
+ }
34
+ for (const warning of report.warnings)
35
+ console.log(` warning: ${warning}`);
36
+ }
37
+ // ---------------------------------------------------------------------------
38
+ // Sub-commands
39
+ // ---------------------------------------------------------------------------
40
+ const codegraphStatus = defineCommand({
41
+ meta: { name: 'status', description: 'Inspect CodeGraph, Graphify, and fallback code intelligence providers' },
42
+ args: {
43
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
44
+ json: { type: 'boolean', default: false },
45
+ },
46
+ run({ args }) {
47
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
48
+ const scaleDir = resolveScaleDirForProject(projectDir);
49
+ const report = inspectCodeIntelligence({
50
+ projectDir,
51
+ scaleDir,
52
+ });
53
+ if (args.json) {
54
+ console.log(JSON.stringify(report, null, 2));
55
+ return;
56
+ }
57
+ console.log('SCALE Code Intelligence Status');
58
+ console.log(` Config: ${report.configPath} (${report.configExists ? 'found' : 'default'})`);
59
+ console.log(` Project index: ${report.projectIndexExists ? report.projectIndexPath : `${report.projectIndexPath} (not initialized)`}`);
60
+ for (const provider of report.providers) {
61
+ console.log(` [${provider.available ? 'AVAILABLE' : 'UNAVAILABLE'}] ${provider.id} (${provider.type}): ${provider.reason}`);
62
+ if (provider.source)
63
+ console.log(` source: ${provider.source}`);
64
+ if (!provider.available && provider.installHint)
65
+ console.log(` install: ${provider.installHint}`);
66
+ if (provider.available && provider.projectInitHint && provider.id === 'codegraph' && !report.projectIndexExists) {
67
+ console.log(` init: ${provider.projectInitHint}`);
68
+ }
69
+ if (provider.serveCommand)
70
+ console.log(` mcp: ${provider.serveCommand}`);
71
+ }
72
+ console.log(` Fallback: ${report.fallback.available ? 'available' : 'disabled'} (${report.fallback.tools.join(', ')})`);
73
+ for (const recommendation of report.recommendations)
74
+ console.log(` recommendation: ${recommendation}`);
75
+ },
76
+ });
77
+ const codegraphInit = defineCommand({
78
+ meta: { name: 'init', description: 'Create .scale/code-intelligence.json provider configuration' },
79
+ args: {
80
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
81
+ force: { type: 'boolean', default: false, description: 'Overwrite existing configuration' },
82
+ json: { type: 'boolean', default: false },
83
+ },
84
+ run({ args }) {
85
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
86
+ const scaleDir = resolveScaleDirForProject(projectDir);
87
+ const result = writeCodeIntelligenceConfig({
88
+ projectDir,
89
+ scaleDir,
90
+ force: isTruthyFlag(args.force),
91
+ });
92
+ if (args.json) {
93
+ console.log(JSON.stringify(result, null, 2));
94
+ return;
95
+ }
96
+ console.log(`SCALE Code Intelligence Config: ${result.written ? 'written' : 'exists'}`);
97
+ console.log(` ${result.path}`);
98
+ },
99
+ });
100
+ const codegraphQuery = defineCommand({
101
+ meta: { name: 'query', description: 'Query code intelligence providers, with explicit fallback when graph data is unavailable' },
102
+ args: {
103
+ query: { type: 'positional', required: true, description: 'Symbol, function, class, route, or text query' },
104
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
105
+ json: { type: 'boolean', default: false },
106
+ },
107
+ run({ args }) {
108
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
109
+ const scaleDir = resolveScaleDirForProject(projectDir);
110
+ const report = queryCodeGraph({
111
+ projectDir,
112
+ scaleDir,
113
+ query: String(args.query),
114
+ });
115
+ if (args.json) {
116
+ console.log(JSON.stringify(report, null, 2));
117
+ return;
118
+ }
119
+ printCodeGraphReport(report);
120
+ },
121
+ });
122
+ const codegraphImpact = defineCommand({
123
+ meta: { name: 'impact', description: 'Find likely impacted files for a symbol' },
124
+ args: {
125
+ symbol: { type: 'string', required: true, description: 'Symbol to analyze' },
126
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
127
+ json: { type: 'boolean', default: false },
128
+ },
129
+ run({ args }) {
130
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
131
+ const scaleDir = resolveScaleDirForProject(projectDir);
132
+ const report = impactCodeGraph({
133
+ projectDir,
134
+ scaleDir,
135
+ symbol: String(args.symbol),
136
+ });
137
+ if (args.json) {
138
+ console.log(JSON.stringify(report, null, 2));
139
+ return;
140
+ }
141
+ printCodeGraphReport(report);
142
+ },
143
+ });
144
+ const codegraphContext = defineCommand({
145
+ meta: { name: 'context', description: 'Build a budgeted file context recommendation from code intelligence' },
146
+ args: {
147
+ symbol: { type: 'string', required: true, description: 'Symbol to analyze' },
148
+ budget: { type: 'string', description: 'Maximum estimated tokens for recommended files' },
149
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
150
+ json: { type: 'boolean', default: false },
151
+ },
152
+ run({ args }) {
153
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
154
+ const scaleDir = resolveScaleDirForProject(projectDir);
155
+ const report = buildCodeGraphContext({
156
+ projectDir,
157
+ scaleDir,
158
+ symbol: String(args.symbol),
159
+ budget: parsePositiveIntArg(args.budget, '--budget'),
160
+ });
161
+ if (args.json) {
162
+ console.log(JSON.stringify(report, null, 2));
163
+ return;
164
+ }
165
+ printCodeGraphReport(report);
166
+ console.log(` Context budget: ${report.totalEstimatedTokens}/${report.budget}`);
167
+ for (const file of report.contextFiles) {
168
+ console.log(` [${file.included ? 'IN' : 'OUT'}] ${file.path}: ${file.estimatedTokens} tokens`);
169
+ }
170
+ },
171
+ });
172
+ const codegraphRoi = defineCommand({
173
+ meta: { name: 'roi', description: 'Estimate exploration ROI from code intelligence or fallback query results' },
174
+ args: {
175
+ query: { type: 'string', description: 'Text query' },
176
+ symbol: { type: 'string', description: 'Symbol to analyze' },
177
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
178
+ json: { type: 'boolean', default: false },
179
+ },
180
+ run({ args }) {
181
+ if (!args.query && !args.symbol)
182
+ throw new Error('Provide --query or --symbol.');
183
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
184
+ const scaleDir = resolveScaleDirForProject(projectDir);
185
+ const report = createCodeGraphRoiReport({
186
+ projectDir,
187
+ scaleDir,
188
+ query: args.query ? String(args.query) : undefined,
189
+ symbol: args.symbol ? String(args.symbol) : undefined,
190
+ });
191
+ if (args.json) {
192
+ console.log(JSON.stringify(report, null, 2));
193
+ return;
194
+ }
195
+ console.log('SCALE Code Intelligence ROI');
196
+ console.log(` Query: ${report.query}`);
197
+ console.log(` Provider: ${report.provider ?? 'fallback'}`);
198
+ console.log(` Fallback: ${report.fallbackUsed}`);
199
+ console.log(` Graph hits: ${report.metrics.graphHits}`);
200
+ console.log(` Reads saved: ${report.metrics.fileReadsSaved}`);
201
+ console.log(` Recommendation: ${report.recommendation}`);
202
+ },
203
+ });
204
+ const codegraphDump = defineCommand({
205
+ meta: { name: 'dump', description: 'Dump full topology graph (nodes + edges) for visualization' },
206
+ args: {
207
+ dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
208
+ out: { type: 'string', description: 'Output file path (default: stdout as JSON)' },
209
+ },
210
+ run({ args }) {
211
+ const projectDir = resolve(String(args.dir ?? PROJECT_DIR));
212
+ const scaleDir = resolveScaleDirForProject(projectDir);
213
+ const graph = dumpCodeGraphData({ projectDir, scaleDir });
214
+ const json = JSON.stringify(graph, null, 2);
215
+ const outPath = args.out ? resolve(String(args.out)) : undefined;
216
+ if (outPath) {
217
+ mkdirSync(dirname(outPath), { recursive: true });
218
+ writeFileSync(outPath, json, 'utf-8');
219
+ console.log(`Topology written to ${outPath} (${graph.nodes.length} nodes, ${graph.edges.length} edges)`);
220
+ }
221
+ else {
222
+ console.log(json);
223
+ }
224
+ },
225
+ });
226
+ // ---------------------------------------------------------------------------
227
+ // Root command (exported)
228
+ // ---------------------------------------------------------------------------
229
+ export const codegraphCommand = defineCommand({
230
+ meta: { name: 'codegraph', description: 'Adapter-first code intelligence and exploration ROI' },
231
+ subCommands: {
232
+ status: codegraphStatus,
233
+ init: codegraphInit,
234
+ query: codegraphQuery,
235
+ impact: codegraphImpact,
236
+ context: codegraphContext,
237
+ roi: codegraphRoi,
238
+ dump: codegraphDump,
239
+ },
240
+ });
241
+ //# sourceMappingURL=codegraphCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegraphCommands.js","sourceRoot":"","sources":["../../src/cli/codegraphCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const contextCommand: import("citty").CommandDef<import("citty").ArgsDef>;