harness-engineering-agent 0.1.9 → 0.2.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 +79 -13
  2. package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -1
  3. package/dist/agent/harness-role-capability-directory-data.js +42 -0
  4. package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
  5. package/dist/config/config-defaults.d.ts +14 -0
  6. package/dist/config/config-defaults.d.ts.map +1 -1
  7. package/dist/config/config-defaults.js +14 -0
  8. package/dist/config/config-defaults.js.map +1 -1
  9. package/dist/config/config-merge.d.ts.map +1 -1
  10. package/dist/config/config-merge.js +22 -0
  11. package/dist/config/config-merge.js.map +1 -1
  12. package/dist/config/config-schema.d.ts +58 -0
  13. package/dist/config/config-schema.d.ts.map +1 -1
  14. package/dist/config/config-schema.js +45 -0
  15. package/dist/config/config-schema.js.map +1 -1
  16. package/dist/config/config-types.d.ts +3 -0
  17. package/dist/config/config-types.d.ts.map +1 -1
  18. package/dist/config/harness-config.d.ts +1 -1
  19. package/dist/config/harness-config.d.ts.map +1 -1
  20. package/dist/config/harness-config.js.map +1 -1
  21. package/dist/config/index.d.ts +1 -1
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js.map +1 -1
  24. package/dist/controller/direct-runner.d.ts +13 -0
  25. package/dist/controller/direct-runner.d.ts.map +1 -0
  26. package/dist/controller/direct-runner.js +53 -0
  27. package/dist/controller/direct-runner.js.map +1 -0
  28. package/dist/controller/graph-validator.d.ts +2 -2
  29. package/dist/controller/graph-validator.d.ts.map +1 -1
  30. package/dist/controller/graph-validator.js +23 -1
  31. package/dist/controller/graph-validator.js.map +1 -1
  32. package/dist/controller/model-profile-resolver.d.ts +12 -0
  33. package/dist/controller/model-profile-resolver.d.ts.map +1 -0
  34. package/dist/controller/model-profile-resolver.js +34 -0
  35. package/dist/controller/model-profile-resolver.js.map +1 -0
  36. package/dist/controller/reassessor.d.ts +13 -0
  37. package/dist/controller/reassessor.d.ts.map +1 -0
  38. package/dist/controller/reassessor.js +73 -0
  39. package/dist/controller/reassessor.js.map +1 -0
  40. package/dist/controller/report-factory.d.ts.map +1 -1
  41. package/dist/controller/report-factory.js +7 -0
  42. package/dist/controller/report-factory.js.map +1 -1
  43. package/dist/controller/role-prompts.d.ts +1 -1
  44. package/dist/controller/role-prompts.d.ts.map +1 -1
  45. package/dist/controller/route-resolver.d.ts +7 -0
  46. package/dist/controller/route-resolver.d.ts.map +1 -0
  47. package/dist/controller/route-resolver.js +25 -0
  48. package/dist/controller/route-resolver.js.map +1 -0
  49. package/dist/controller/run-controller.d.ts.map +1 -1
  50. package/dist/controller/run-controller.js +140 -32
  51. package/dist/controller/run-controller.js.map +1 -1
  52. package/dist/controller/streamlined-runner.d.ts +16 -0
  53. package/dist/controller/streamlined-runner.d.ts.map +1 -0
  54. package/dist/controller/streamlined-runner.js +130 -0
  55. package/dist/controller/streamlined-runner.js.map +1 -0
  56. package/dist/controller/task-agent-schemas.d.ts +70 -0
  57. package/dist/controller/task-agent-schemas.d.ts.map +1 -1
  58. package/dist/controller/task-executor.d.ts.map +1 -1
  59. package/dist/controller/task-executor.js +148 -13
  60. package/dist/controller/task-executor.js.map +1 -1
  61. package/dist/domain/complexity.d.ts +62 -0
  62. package/dist/domain/complexity.d.ts.map +1 -0
  63. package/dist/domain/complexity.js +28 -0
  64. package/dist/domain/complexity.js.map +1 -0
  65. package/dist/domain/index.d.ts +6 -2
  66. package/dist/domain/index.d.ts.map +1 -1
  67. package/dist/domain/index.js +3 -1
  68. package/dist/domain/index.js.map +1 -1
  69. package/dist/domain/plan-artifacts.d.ts +35 -0
  70. package/dist/domain/plan-artifacts.d.ts.map +1 -1
  71. package/dist/domain/project-context.d.ts +10 -0
  72. package/dist/domain/project-context.d.ts.map +1 -0
  73. package/dist/domain/project-context.js +11 -0
  74. package/dist/domain/project-context.js.map +1 -0
  75. package/dist/domain/report.d.ts +220 -0
  76. package/dist/domain/report.d.ts.map +1 -1
  77. package/dist/domain/requirement.d.ts +63 -0
  78. package/dist/domain/requirement.d.ts.map +1 -1
  79. package/dist/domain/requirement.js +3 -0
  80. package/dist/domain/requirement.js.map +1 -1
  81. package/dist/domain/run.d.ts +220 -0
  82. package/dist/domain/run.d.ts.map +1 -1
  83. package/dist/domain/run.js +5 -0
  84. package/dist/domain/run.js.map +1 -1
  85. package/dist/domain/task.d.ts +33 -0
  86. package/dist/domain/task.d.ts.map +1 -1
  87. package/dist/domain/task.js +10 -0
  88. package/dist/domain/task.js.map +1 -1
  89. package/dist/plugin/harness-chat-hook.d.ts.map +1 -1
  90. package/dist/plugin/harness-chat-hook.js +18 -12
  91. package/dist/plugin/harness-chat-hook.js.map +1 -1
  92. package/dist/plugin/harness-chat-protocol.d.ts.map +1 -1
  93. package/dist/plugin/harness-chat-protocol.js +29 -6
  94. package/dist/plugin/harness-chat-protocol.js.map +1 -1
  95. package/dist/plugin/harness-intent.d.ts +63 -0
  96. package/dist/plugin/harness-intent.d.ts.map +1 -1
  97. package/dist/plugin/harness-intent.js +2 -1
  98. package/dist/plugin/harness-intent.js.map +1 -1
  99. package/dist/plugin/harness-requirement.d.ts.map +1 -1
  100. package/dist/plugin/harness-requirement.js +6 -0
  101. package/dist/plugin/harness-requirement.js.map +1 -1
  102. package/dist/store/run-event.d.ts +220 -0
  103. package/dist/store/run-event.d.ts.map +1 -1
  104. package/dist/workspace/collect-project-context.d.ts +3 -0
  105. package/dist/workspace/collect-project-context.d.ts.map +1 -0
  106. package/dist/workspace/collect-project-context.js +92 -0
  107. package/dist/workspace/collect-project-context.js.map +1 -0
  108. package/dist/workspace/git-workspace-adapter.js +23 -9
  109. package/dist/workspace/git-workspace-adapter.js.map +1 -1
  110. package/dist/workspace/index.d.ts +1 -0
  111. package/dist/workspace/index.d.ts.map +1 -1
  112. package/dist/workspace/index.js +1 -0
  113. package/dist/workspace/index.js.map +1 -1
  114. package/package.json +1 -1
@@ -4,6 +4,27 @@ declare const IntakeRequirementSchema: z.ZodReadonly<z.ZodObject<{
4
4
  title: z.ZodString;
5
5
  summary: z.ZodString;
6
6
  acceptanceCriteria: z.ZodReadonly<z.ZodArray<z.ZodString>>;
7
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
8
+ tier: z.ZodEnum<{
9
+ trivial: "trivial";
10
+ standard: "standard";
11
+ complex: "complex";
12
+ }>;
13
+ rationale: z.ZodString;
14
+ estimatedFileCount: z.ZodNumber;
15
+ estimatedCrossModuleDeps: z.ZodNumber;
16
+ suggestedRoute: z.ZodEnum<{
17
+ direct: "direct";
18
+ streamlined: "streamlined";
19
+ full: "full";
20
+ parallel: "parallel";
21
+ }>;
22
+ confidence: z.ZodEnum<{
23
+ high: "high";
24
+ medium: "medium";
25
+ low: "low";
26
+ }>;
27
+ }, z.core.$strip>>>;
7
28
  }, z.core.$strict>>;
8
29
  declare const StartIntentSchema: z.ZodReadonly<z.ZodObject<{
9
30
  kind: z.ZodLiteral<"start">;
@@ -12,6 +33,27 @@ declare const StartIntentSchema: z.ZodReadonly<z.ZodObject<{
12
33
  title: z.ZodString;
13
34
  summary: z.ZodString;
14
35
  acceptanceCriteria: z.ZodReadonly<z.ZodArray<z.ZodString>>;
36
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
37
+ tier: z.ZodEnum<{
38
+ trivial: "trivial";
39
+ standard: "standard";
40
+ complex: "complex";
41
+ }>;
42
+ rationale: z.ZodString;
43
+ estimatedFileCount: z.ZodNumber;
44
+ estimatedCrossModuleDeps: z.ZodNumber;
45
+ suggestedRoute: z.ZodEnum<{
46
+ direct: "direct";
47
+ streamlined: "streamlined";
48
+ full: "full";
49
+ parallel: "parallel";
50
+ }>;
51
+ confidence: z.ZodEnum<{
52
+ high: "high";
53
+ medium: "medium";
54
+ low: "low";
55
+ }>;
56
+ }, z.core.$strip>>>;
15
57
  }, z.core.$strict>>;
16
58
  }, z.core.$strict>>;
17
59
  export declare const HarnessIntentSchema: z.ZodDiscriminatedUnion<[z.ZodReadonly<z.ZodObject<{
@@ -21,6 +63,27 @@ export declare const HarnessIntentSchema: z.ZodDiscriminatedUnion<[z.ZodReadonly
21
63
  title: z.ZodString;
22
64
  summary: z.ZodString;
23
65
  acceptanceCriteria: z.ZodReadonly<z.ZodArray<z.ZodString>>;
66
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
67
+ tier: z.ZodEnum<{
68
+ trivial: "trivial";
69
+ standard: "standard";
70
+ complex: "complex";
71
+ }>;
72
+ rationale: z.ZodString;
73
+ estimatedFileCount: z.ZodNumber;
74
+ estimatedCrossModuleDeps: z.ZodNumber;
75
+ suggestedRoute: z.ZodEnum<{
76
+ direct: "direct";
77
+ streamlined: "streamlined";
78
+ full: "full";
79
+ parallel: "parallel";
80
+ }>;
81
+ confidence: z.ZodEnum<{
82
+ high: "high";
83
+ medium: "medium";
84
+ low: "low";
85
+ }>;
86
+ }, z.core.$strip>>>;
24
87
  }, z.core.$strict>>;
25
88
  }, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
26
89
  kind: z.ZodLiteral<"status">;
@@ -1 +1 @@
1
- {"version":3,"file":"harness-intent.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,QAAA,MAAM,uBAAuB;;;;;mBAQhB,CAAA;AAEb,QAAA,MAAM,iBAAiB;;;;;;;;mBAMV,CAAA;AAsDb,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAU9B,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"harness-intent.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;mBAShB,CAAA;AAEb,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAMV,CAAA;AAsDb,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAU9B,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { RunIdSchema } from "../domain/index.js";
2
+ import { ComplexityAssessmentSchema, RunIdSchema } from "../domain/index.js";
3
3
  import { RequirementIdSchema } from "../domain/shared.js";
4
4
  const ActorSchema = z
5
5
  .object({
@@ -14,6 +14,7 @@ const IntakeRequirementSchema = z
14
14
  title: z.string().trim().min(1),
15
15
  summary: z.string().trim().min(1),
16
16
  acceptanceCriteria: z.array(z.string().trim().min(1)).min(1).readonly(),
17
+ complexityAssessment: ComplexityAssessmentSchema.optional(),
17
18
  })
18
19
  .strict()
19
20
  .readonly();
@@ -1 +1 @@
1
- {"version":3,"file":"harness-intent.js","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-intent.js","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-requirement.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAA;AAEhF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,gBAc/D,CAAA"}
1
+ {"version":3,"file":"harness-requirement.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAA;AAEhF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,gBAoB/D,CAAA"}
@@ -6,12 +6,18 @@ export const toRequirementInput = (intent) => {
6
6
  title: intent.requirement.title,
7
7
  summary: intent.requirement.summary,
8
8
  acceptanceCriteria: intent.requirement.acceptanceCriteria,
9
+ ...(intent.requirement.complexityAssessment
10
+ ? { complexityAssessment: intent.requirement.complexityAssessment }
11
+ : {}),
9
12
  });
10
13
  return {
11
14
  requirementId: requirement.requirementId,
12
15
  title: requirement.title,
13
16
  summary: requirement.summary,
14
17
  acceptanceCriteria: requirement.acceptanceCriteria,
18
+ ...(requirement.complexityAssessment
19
+ ? { complexityAssessment: requirement.complexityAssessment }
20
+ : {}),
15
21
  };
16
22
  };
17
23
  const createRequirementId = (requirement) => {
@@ -1 +1 @@
1
- {"version":3,"file":"harness-requirement.js","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA0B,EAAoB,EAAE;IACjF,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,IAAI,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC;QAC1F,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;QACnC,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,kBAAkB;KAC1D,CAAC,CAAA;IAEF,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;KACnD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,WAA8B,EAAU,EAAE;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;SACzB,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;SAC3B,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjD,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEf,OAAO,OAAO,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IAC/C,MAAM,UAAU,GAAG,KAAK;SACrB,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAExB,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC,CAAA"}
1
+ {"version":3,"file":"harness-requirement.js","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA0B,EAAoB,EAAE;IACjF,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,CAAC;QAC/C,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,IAAI,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC;QAC1F,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;QACnC,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,kBAAkB;QACzD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB;YACzC,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,oBAAoB,EAAE;YACnE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAA;IAEF,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;QAClD,GAAG,CAAC,WAAW,CAAC,oBAAoB;YAClC,CAAC,CAAC,EAAE,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,EAAE;YAC5D,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,WAA8B,EAAU,EAAE;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;SACzB,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;SAC3B,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjD,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEf,OAAO,OAAO,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IAC/C,MAAM,UAAU,GAAG,KAAK;SACrB,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAExB,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC,CAAA"}
@@ -95,6 +95,20 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
95
95
  "repair-worker": "repair-worker";
96
96
  acceptance: "acceptance";
97
97
  }>;
98
+ complexityTier: z.ZodOptional<z.ZodEnum<{
99
+ trivial: "trivial";
100
+ standard: "standard";
101
+ complex: "complex";
102
+ }>>;
103
+ tierOverriddenFrom: z.ZodOptional<z.ZodEnum<{
104
+ trivial: "trivial";
105
+ standard: "standard";
106
+ complex: "complex";
107
+ }>>;
108
+ modelProfile: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
109
+ provider: z.ZodString;
110
+ model: z.ZodString;
111
+ }, z.core.$strip>>>;
98
112
  }, z.core.$strip>>>>;
99
113
  edges: z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
100
114
  fromTaskId: z.core.$ZodBranded<z.ZodString, "TaskId">;
@@ -113,6 +127,27 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
113
127
  criterionId: z.ZodString;
114
128
  text: z.ZodString;
115
129
  }, z.core.$strip>>>>;
130
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
131
+ tier: z.ZodEnum<{
132
+ trivial: "trivial";
133
+ standard: "standard";
134
+ complex: "complex";
135
+ }>;
136
+ rationale: z.ZodString;
137
+ estimatedFileCount: z.ZodNumber;
138
+ estimatedCrossModuleDeps: z.ZodNumber;
139
+ suggestedRoute: z.ZodEnum<{
140
+ direct: "direct";
141
+ streamlined: "streamlined";
142
+ full: "full";
143
+ parallel: "parallel";
144
+ }>;
145
+ confidence: z.ZodEnum<{
146
+ high: "high";
147
+ medium: "medium";
148
+ low: "low";
149
+ }>;
150
+ }, z.core.$strip>>>;
116
151
  }, z.core.$strip>>>;
117
152
  evidence: z.ZodReadonly<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodReadonly<z.ZodObject<{
118
153
  schemaVersion: z.ZodLiteral<"1.0.0">;
@@ -497,6 +532,27 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
497
532
  criterionId: z.ZodString;
498
533
  text: z.ZodString;
499
534
  }, z.core.$strip>>>>;
535
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
536
+ tier: z.ZodEnum<{
537
+ trivial: "trivial";
538
+ standard: "standard";
539
+ complex: "complex";
540
+ }>;
541
+ rationale: z.ZodString;
542
+ estimatedFileCount: z.ZodNumber;
543
+ estimatedCrossModuleDeps: z.ZodNumber;
544
+ suggestedRoute: z.ZodEnum<{
545
+ direct: "direct";
546
+ streamlined: "streamlined";
547
+ full: "full";
548
+ parallel: "parallel";
549
+ }>;
550
+ confidence: z.ZodEnum<{
551
+ high: "high";
552
+ medium: "medium";
553
+ low: "low";
554
+ }>;
555
+ }, z.core.$strip>>>;
500
556
  }, z.core.$strip>>>;
501
557
  taskGraph: z.ZodReadonly<z.ZodObject<{
502
558
  schemaVersion: z.ZodLiteral<"1.0.0">;
@@ -573,6 +629,20 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
573
629
  "repair-worker": "repair-worker";
574
630
  acceptance: "acceptance";
575
631
  }>;
632
+ complexityTier: z.ZodOptional<z.ZodEnum<{
633
+ trivial: "trivial";
634
+ standard: "standard";
635
+ complex: "complex";
636
+ }>>;
637
+ tierOverriddenFrom: z.ZodOptional<z.ZodEnum<{
638
+ trivial: "trivial";
639
+ standard: "standard";
640
+ complex: "complex";
641
+ }>>;
642
+ modelProfile: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
643
+ provider: z.ZodString;
644
+ model: z.ZodString;
645
+ }, z.core.$strip>>>;
576
646
  }, z.core.$strip>>>>;
577
647
  edges: z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
578
648
  fromTaskId: z.core.$ZodBranded<z.ZodString, "TaskId">;
@@ -728,6 +798,53 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
728
798
  }, z.core.$strip>>>>;
729
799
  }, z.core.$strip>>;
730
800
  }, z.core.$strip>>>>>;
801
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
802
+ tier: z.ZodEnum<{
803
+ trivial: "trivial";
804
+ standard: "standard";
805
+ complex: "complex";
806
+ }>;
807
+ rationale: z.ZodString;
808
+ estimatedFileCount: z.ZodNumber;
809
+ estimatedCrossModuleDeps: z.ZodNumber;
810
+ suggestedRoute: z.ZodEnum<{
811
+ direct: "direct";
812
+ streamlined: "streamlined";
813
+ full: "full";
814
+ parallel: "parallel";
815
+ }>;
816
+ confidence: z.ZodEnum<{
817
+ high: "high";
818
+ medium: "medium";
819
+ low: "low";
820
+ }>;
821
+ }, z.core.$strip>>>;
822
+ resolvedTier: z.ZodDefault<z.ZodEnum<{
823
+ trivial: "trivial";
824
+ standard: "standard";
825
+ complex: "complex";
826
+ }>>;
827
+ resolvedRoute: z.ZodDefault<z.ZodEnum<{
828
+ direct: "direct";
829
+ streamlined: "streamlined";
830
+ full: "full";
831
+ parallel: "parallel";
832
+ }>>;
833
+ reassessmentHistory: z.ZodDefault<z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
834
+ triggerTaskId: z.ZodString;
835
+ previousTier: z.ZodEnum<{
836
+ trivial: "trivial";
837
+ standard: "standard";
838
+ complex: "complex";
839
+ }>;
840
+ newTier: z.ZodEnum<{
841
+ trivial: "trivial";
842
+ standard: "standard";
843
+ complex: "complex";
844
+ }>;
845
+ reason: z.ZodString;
846
+ affectedRemainingTasks: z.ZodReadonly<z.ZodArray<z.ZodString>>;
847
+ }, z.core.$strip>>>>>;
731
848
  }, z.core.$strip>>, z.ZodReadonly<z.ZodObject<{
732
849
  status: z.ZodEnum<{
733
850
  created: "created";
@@ -751,6 +868,27 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
751
868
  criterionId: z.ZodString;
752
869
  text: z.ZodString;
753
870
  }, z.core.$strip>>>>;
871
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
872
+ tier: z.ZodEnum<{
873
+ trivial: "trivial";
874
+ standard: "standard";
875
+ complex: "complex";
876
+ }>;
877
+ rationale: z.ZodString;
878
+ estimatedFileCount: z.ZodNumber;
879
+ estimatedCrossModuleDeps: z.ZodNumber;
880
+ suggestedRoute: z.ZodEnum<{
881
+ direct: "direct";
882
+ streamlined: "streamlined";
883
+ full: "full";
884
+ parallel: "parallel";
885
+ }>;
886
+ confidence: z.ZodEnum<{
887
+ high: "high";
888
+ medium: "medium";
889
+ low: "low";
890
+ }>;
891
+ }, z.core.$strip>>>;
754
892
  }, z.core.$strip>>>;
755
893
  evidence: z.ZodReadonly<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodReadonly<z.ZodObject<{
756
894
  schemaVersion: z.ZodLiteral<"1.0.0">;
@@ -1135,6 +1273,27 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
1135
1273
  criterionId: z.ZodString;
1136
1274
  text: z.ZodString;
1137
1275
  }, z.core.$strip>>>>;
1276
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
1277
+ tier: z.ZodEnum<{
1278
+ trivial: "trivial";
1279
+ standard: "standard";
1280
+ complex: "complex";
1281
+ }>;
1282
+ rationale: z.ZodString;
1283
+ estimatedFileCount: z.ZodNumber;
1284
+ estimatedCrossModuleDeps: z.ZodNumber;
1285
+ suggestedRoute: z.ZodEnum<{
1286
+ direct: "direct";
1287
+ streamlined: "streamlined";
1288
+ full: "full";
1289
+ parallel: "parallel";
1290
+ }>;
1291
+ confidence: z.ZodEnum<{
1292
+ high: "high";
1293
+ medium: "medium";
1294
+ low: "low";
1295
+ }>;
1296
+ }, z.core.$strip>>>;
1138
1297
  }, z.core.$strip>>>;
1139
1298
  taskGraph: z.ZodReadonly<z.ZodObject<{
1140
1299
  schemaVersion: z.ZodLiteral<"1.0.0">;
@@ -1211,6 +1370,20 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
1211
1370
  "repair-worker": "repair-worker";
1212
1371
  acceptance: "acceptance";
1213
1372
  }>;
1373
+ complexityTier: z.ZodOptional<z.ZodEnum<{
1374
+ trivial: "trivial";
1375
+ standard: "standard";
1376
+ complex: "complex";
1377
+ }>>;
1378
+ tierOverriddenFrom: z.ZodOptional<z.ZodEnum<{
1379
+ trivial: "trivial";
1380
+ standard: "standard";
1381
+ complex: "complex";
1382
+ }>>;
1383
+ modelProfile: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
1384
+ provider: z.ZodString;
1385
+ model: z.ZodString;
1386
+ }, z.core.$strip>>>;
1214
1387
  }, z.core.$strip>>>>;
1215
1388
  edges: z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
1216
1389
  fromTaskId: z.core.$ZodBranded<z.ZodString, "TaskId">;
@@ -1366,6 +1539,53 @@ export declare const RunEventSchema: z.ZodReadonly<z.ZodObject<{
1366
1539
  }, z.core.$strip>>>>;
1367
1540
  }, z.core.$strip>>;
1368
1541
  }, z.core.$strip>>>>>;
1542
+ complexityAssessment: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
1543
+ tier: z.ZodEnum<{
1544
+ trivial: "trivial";
1545
+ standard: "standard";
1546
+ complex: "complex";
1547
+ }>;
1548
+ rationale: z.ZodString;
1549
+ estimatedFileCount: z.ZodNumber;
1550
+ estimatedCrossModuleDeps: z.ZodNumber;
1551
+ suggestedRoute: z.ZodEnum<{
1552
+ direct: "direct";
1553
+ streamlined: "streamlined";
1554
+ full: "full";
1555
+ parallel: "parallel";
1556
+ }>;
1557
+ confidence: z.ZodEnum<{
1558
+ high: "high";
1559
+ medium: "medium";
1560
+ low: "low";
1561
+ }>;
1562
+ }, z.core.$strip>>>;
1563
+ resolvedTier: z.ZodDefault<z.ZodEnum<{
1564
+ trivial: "trivial";
1565
+ standard: "standard";
1566
+ complex: "complex";
1567
+ }>>;
1568
+ resolvedRoute: z.ZodDefault<z.ZodEnum<{
1569
+ direct: "direct";
1570
+ streamlined: "streamlined";
1571
+ full: "full";
1572
+ parallel: "parallel";
1573
+ }>>;
1574
+ reassessmentHistory: z.ZodDefault<z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
1575
+ triggerTaskId: z.ZodString;
1576
+ previousTier: z.ZodEnum<{
1577
+ trivial: "trivial";
1578
+ standard: "standard";
1579
+ complex: "complex";
1580
+ }>;
1581
+ newTier: z.ZodEnum<{
1582
+ trivial: "trivial";
1583
+ standard: "standard";
1584
+ complex: "complex";
1585
+ }>;
1586
+ reason: z.ZodString;
1587
+ affectedRemainingTasks: z.ZodReadonly<z.ZodArray<z.ZodString>>;
1588
+ }, z.core.$strip>>>>>;
1369
1589
  }, z.core.$strip>>]>>>;
1370
1590
  }, z.core.$strip>>;
1371
1591
  export type JsonValue = string | number | boolean | null | readonly JsonValue[] | {
@@ -1 +1 @@
1
- {"version":3,"file":"run-event.d.ts","sourceRoot":"","sources":["../../src/store/run-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAMhD,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAad,CAAA;AAEb,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,SAAS,EAAE,GACpB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEzC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"run-event.d.ts","sourceRoot":"","sources":["../../src/store/run-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAMhD,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAad,CAAA;AAEb,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,SAAS,EAAE,GACpB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEzC,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { ProjectContext } from "../domain/project-context.js";
2
+ export declare const collectProjectContext: (projectRoot: string) => ProjectContext;
3
+ //# sourceMappingURL=collect-project-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-project-context.d.ts","sourceRoot":"","sources":["../../src/workspace/collect-project-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAkBlE,eAAO,MAAM,qBAAqB,GAAI,aAAa,MAAM,KAAG,cAe3D,CAAA"}
@@ -0,0 +1,92 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ const MAX_DIRECTORY_TREE_ENTRIES = 500;
4
+ const MAX_DEPTH = 2;
5
+ const IGNORED_DIRECTORIES = new Set([
6
+ "node_modules",
7
+ ".git",
8
+ "dist",
9
+ "build",
10
+ "coverage",
11
+ ".harness",
12
+ "target",
13
+ ".next",
14
+ ".nuxt",
15
+ ".cache",
16
+ ]);
17
+ export const collectProjectContext = (projectRoot) => {
18
+ const agentsMdPath = join(projectRoot, "AGENTS.md");
19
+ const readmeMdPath = join(projectRoot, "README.md");
20
+ const agentsMd = readFileIfExists(agentsMdPath);
21
+ const readmeMd = readFileIfExists(readmeMdPath);
22
+ const { entries, truncated } = collectDirectoryTree(projectRoot, MAX_DEPTH);
23
+ return {
24
+ projectRoot,
25
+ ...(agentsMd === undefined ? {} : { agentsMd }),
26
+ ...(readmeMd === undefined ? {} : { readmeMd }),
27
+ directoryTree: entries,
28
+ truncated,
29
+ };
30
+ };
31
+ const readFileIfExists = (filePath) => {
32
+ if (!existsSync(filePath)) {
33
+ return undefined;
34
+ }
35
+ try {
36
+ return readFileSync(filePath, "utf-8");
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ };
42
+ const collectDirectoryTree = (root, maxDepth) => {
43
+ const entries = [];
44
+ let truncated = false;
45
+ const walk = (dir, relativePath, depth) => {
46
+ if (truncated || depth > maxDepth) {
47
+ return;
48
+ }
49
+ let dirEntries;
50
+ try {
51
+ dirEntries = readdirSync(dir).sort();
52
+ }
53
+ catch {
54
+ return;
55
+ }
56
+ for (const entry of dirEntries) {
57
+ if (truncated) {
58
+ return;
59
+ }
60
+ const fullPath = join(dir, entry);
61
+ const entryRelativePath = relativePath.length === 0 ? entry : `${relativePath}/${entry}`;
62
+ let isDirectory = false;
63
+ try {
64
+ isDirectory = statSync(fullPath).isDirectory();
65
+ }
66
+ catch {
67
+ continue;
68
+ }
69
+ if (isDirectory) {
70
+ if (IGNORED_DIRECTORIES.has(entry)) {
71
+ continue;
72
+ }
73
+ if (entries.length >= MAX_DIRECTORY_TREE_ENTRIES) {
74
+ truncated = true;
75
+ return;
76
+ }
77
+ entries.push(`${entryRelativePath}/`);
78
+ walk(fullPath, entryRelativePath, depth + 1);
79
+ }
80
+ else {
81
+ if (entries.length >= MAX_DIRECTORY_TREE_ENTRIES) {
82
+ truncated = true;
83
+ return;
84
+ }
85
+ entries.push(entryRelativePath);
86
+ }
87
+ }
88
+ };
89
+ walk(root, "", 0);
90
+ return { entries, truncated };
91
+ };
92
+ //# sourceMappingURL=collect-project-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-project-context.js","sourceRoot":"","sources":["../../src/workspace/collect-project-context.ts"],"names":[],"mappings":"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"}
@@ -109,8 +109,11 @@ const captureRepositoryState = async (projectRoot) => {
109
109
  managedFileHashes: {},
110
110
  };
111
111
  }
112
- const headRef = await resolveHeadRef(projectRoot);
113
- const dirtyPaths = await listDirtyPaths(projectRoot, repoRoot);
112
+ const [headRef, dirtyPaths, managedFileHashes] = await Promise.all([
113
+ resolveHeadRef(projectRoot),
114
+ listDirtyPaths(projectRoot, repoRoot),
115
+ collectManagedFileHashes(projectRoot, repoRoot),
116
+ ]);
114
117
  return {
115
118
  mode: "git",
116
119
  repoRoot,
@@ -118,7 +121,7 @@ const captureRepositoryState = async (projectRoot) => {
118
121
  headRef,
119
122
  dirtyPaths,
120
123
  diffDigest: createWorkspaceDigest(dirtyPaths.join("\n")),
121
- managedFileHashes: await collectManagedFileHashes(projectRoot, repoRoot),
124
+ managedFileHashes,
122
125
  };
123
126
  };
124
127
  const resolveRepoRoot = async (cwd) => {
@@ -159,18 +162,29 @@ const collectManagedFileHashes = async (projectRoot, repoRoot) => {
159
162
  if (result.exitCode !== 0) {
160
163
  throw new Error(`git ls-files failed: ${result.stderr.trim()}`);
161
164
  }
162
- const hashes = new Map();
163
- for (const repoRelativePath of splitNul(result.stdout)) {
165
+ const paths = splitNul(result.stdout)
166
+ .map((repoRelativePath) => {
164
167
  const workspacePath = fromRepoPath(repoRoot, projectRoot, repoRelativePath);
165
168
  if (workspacePath === undefined || shouldIgnoreWorkspacePath(workspacePath)) {
166
- continue;
169
+ return undefined;
167
170
  }
168
- const absolutePath = resolve(projectRoot, workspacePath);
171
+ return { workspacePath, absolutePath: resolve(projectRoot, workspacePath) };
172
+ })
173
+ .filter((item) => item !== undefined);
174
+ const hashEntries = await Promise.all(paths.map(async ({ workspacePath, absolutePath }) => {
169
175
  try {
170
176
  const content = await readFile(absolutePath);
171
- hashes.set(workspacePath, createBufferDigest(content));
177
+ return [workspacePath, createBufferDigest(content)];
178
+ }
179
+ catch {
180
+ return undefined;
181
+ }
182
+ }));
183
+ const hashes = new Map();
184
+ for (const entry of hashEntries) {
185
+ if (entry !== undefined) {
186
+ hashes.set(entry[0], entry[1]);
172
187
  }
173
- catch { }
174
188
  }
175
189
  return Object.fromEntries([...hashes.entries()].sort(([left], [right]) => left.localeCompare(right)));
176
190
  };