pm-orchestrator-runner 1.0.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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/dist/cli/cli-interface.d.ts +150 -0
  4. package/dist/cli/cli-interface.d.ts.map +1 -0
  5. package/dist/cli/cli-interface.js +606 -0
  6. package/dist/cli/cli-interface.js.map +1 -0
  7. package/dist/cli/index.d.ts +13 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +243 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/llm-sentinel.d.ts +15 -0
  12. package/dist/cli/llm-sentinel.d.ts.map +1 -0
  13. package/dist/cli/llm-sentinel.js +184 -0
  14. package/dist/cli/llm-sentinel.js.map +1 -0
  15. package/dist/config/configuration-manager.d.ts +149 -0
  16. package/dist/config/configuration-manager.d.ts.map +1 -0
  17. package/dist/config/configuration-manager.js +241 -0
  18. package/dist/config/configuration-manager.js.map +1 -0
  19. package/dist/continuation/continuation-control-manager.d.ts +154 -0
  20. package/dist/continuation/continuation-control-manager.d.ts.map +1 -0
  21. package/dist/continuation/continuation-control-manager.js +303 -0
  22. package/dist/continuation/continuation-control-manager.js.map +1 -0
  23. package/dist/core/runner-core.d.ts +474 -0
  24. package/dist/core/runner-core.d.ts.map +1 -0
  25. package/dist/core/runner-core.js +1311 -0
  26. package/dist/core/runner-core.js.map +1 -0
  27. package/dist/errors/error-codes.d.ts +105 -0
  28. package/dist/errors/error-codes.d.ts.map +1 -0
  29. package/dist/errors/error-codes.js +198 -0
  30. package/dist/errors/error-codes.js.map +1 -0
  31. package/dist/errors/runner-error.d.ts +14 -0
  32. package/dist/errors/runner-error.d.ts.map +1 -0
  33. package/dist/errors/runner-error.js +33 -0
  34. package/dist/errors/runner-error.js.map +1 -0
  35. package/dist/evidence/evidence-manager.d.ts +112 -0
  36. package/dist/evidence/evidence-manager.d.ts.map +1 -0
  37. package/dist/evidence/evidence-manager.js +337 -0
  38. package/dist/evidence/evidence-manager.js.map +1 -0
  39. package/dist/executor/claude-code-executor.d.ts +136 -0
  40. package/dist/executor/claude-code-executor.d.ts.map +1 -0
  41. package/dist/executor/claude-code-executor.js +643 -0
  42. package/dist/executor/claude-code-executor.js.map +1 -0
  43. package/dist/executor/deterministic-executor.d.ts +40 -0
  44. package/dist/executor/deterministic-executor.d.ts.map +1 -0
  45. package/dist/executor/deterministic-executor.js +269 -0
  46. package/dist/executor/deterministic-executor.js.map +1 -0
  47. package/dist/lifecycle/lifecycle-controller.d.ts +270 -0
  48. package/dist/lifecycle/lifecycle-controller.d.ts.map +1 -0
  49. package/dist/lifecycle/lifecycle-controller.js +596 -0
  50. package/dist/lifecycle/lifecycle-controller.js.map +1 -0
  51. package/dist/limits/resource-limit-manager.d.ts +200 -0
  52. package/dist/limits/resource-limit-manager.d.ts.map +1 -0
  53. package/dist/limits/resource-limit-manager.js +376 -0
  54. package/dist/limits/resource-limit-manager.js.map +1 -0
  55. package/dist/locks/lock-manager.d.ts +116 -0
  56. package/dist/locks/lock-manager.d.ts.map +1 -0
  57. package/dist/locks/lock-manager.js +306 -0
  58. package/dist/locks/lock-manager.js.map +1 -0
  59. package/dist/logging/index.d.ts +8 -0
  60. package/dist/logging/index.d.ts.map +1 -0
  61. package/dist/logging/index.js +22 -0
  62. package/dist/logging/index.js.map +1 -0
  63. package/dist/logging/sensitive-data-masker.d.ts +90 -0
  64. package/dist/logging/sensitive-data-masker.d.ts.map +1 -0
  65. package/dist/logging/sensitive-data-masker.js +228 -0
  66. package/dist/logging/sensitive-data-masker.js.map +1 -0
  67. package/dist/logging/task-log-manager.d.ts +215 -0
  68. package/dist/logging/task-log-manager.d.ts.map +1 -0
  69. package/dist/logging/task-log-manager.js +743 -0
  70. package/dist/logging/task-log-manager.js.map +1 -0
  71. package/dist/mediation/fail-closed-runner.d.ts +131 -0
  72. package/dist/mediation/fail-closed-runner.d.ts.map +1 -0
  73. package/dist/mediation/fail-closed-runner.js +245 -0
  74. package/dist/mediation/fail-closed-runner.js.map +1 -0
  75. package/dist/mediation/llm-client-with-evidence.d.ts +123 -0
  76. package/dist/mediation/llm-client-with-evidence.d.ts.map +1 -0
  77. package/dist/mediation/llm-client-with-evidence.js +245 -0
  78. package/dist/mediation/llm-client-with-evidence.js.map +1 -0
  79. package/dist/mediation/llm-client.d.ts +102 -0
  80. package/dist/mediation/llm-client.d.ts.map +1 -0
  81. package/dist/mediation/llm-client.js +206 -0
  82. package/dist/mediation/llm-client.js.map +1 -0
  83. package/dist/mediation/llm-evidence-manager.d.ts +108 -0
  84. package/dist/mediation/llm-evidence-manager.d.ts.map +1 -0
  85. package/dist/mediation/llm-evidence-manager.js +230 -0
  86. package/dist/mediation/llm-evidence-manager.js.map +1 -0
  87. package/dist/mediation/llm-mediation-layer.d.ts +175 -0
  88. package/dist/mediation/llm-mediation-layer.d.ts.map +1 -0
  89. package/dist/mediation/llm-mediation-layer.js +315 -0
  90. package/dist/mediation/llm-mediation-layer.js.map +1 -0
  91. package/dist/mediation/llm-sentinel.d.ts +107 -0
  92. package/dist/mediation/llm-sentinel.d.ts.map +1 -0
  93. package/dist/mediation/llm-sentinel.js +187 -0
  94. package/dist/mediation/llm-sentinel.js.map +1 -0
  95. package/dist/mediation/real-llm-mediation-layer.d.ts +104 -0
  96. package/dist/mediation/real-llm-mediation-layer.d.ts.map +1 -0
  97. package/dist/mediation/real-llm-mediation-layer.js +322 -0
  98. package/dist/mediation/real-llm-mediation-layer.js.map +1 -0
  99. package/dist/mediation/verdict-reporter.d.ts +61 -0
  100. package/dist/mediation/verdict-reporter.d.ts.map +1 -0
  101. package/dist/mediation/verdict-reporter.js +178 -0
  102. package/dist/mediation/verdict-reporter.js.map +1 -0
  103. package/dist/models/enums.d.ts +133 -0
  104. package/dist/models/enums.d.ts.map +1 -0
  105. package/dist/models/enums.js +201 -0
  106. package/dist/models/enums.js.map +1 -0
  107. package/dist/models/evidence.d.ts +60 -0
  108. package/dist/models/evidence.d.ts.map +1 -0
  109. package/dist/models/evidence.js +135 -0
  110. package/dist/models/evidence.js.map +1 -0
  111. package/dist/models/execution-result.d.ts +89 -0
  112. package/dist/models/execution-result.d.ts.map +1 -0
  113. package/dist/models/execution-result.js +197 -0
  114. package/dist/models/execution-result.js.map +1 -0
  115. package/dist/models/file-lock.d.ts +62 -0
  116. package/dist/models/file-lock.d.ts.map +1 -0
  117. package/dist/models/file-lock.js +133 -0
  118. package/dist/models/file-lock.js.map +1 -0
  119. package/dist/models/index.d.ts +12 -0
  120. package/dist/models/index.d.ts.map +1 -0
  121. package/dist/models/index.js +91 -0
  122. package/dist/models/index.js.map +1 -0
  123. package/dist/models/repl/index.d.ts +7 -0
  124. package/dist/models/repl/index.d.ts.map +1 -0
  125. package/dist/models/repl/index.js +32 -0
  126. package/dist/models/repl/index.js.map +1 -0
  127. package/dist/models/repl/model-registry.d.ts +73 -0
  128. package/dist/models/repl/model-registry.d.ts.map +1 -0
  129. package/dist/models/repl/model-registry.js +116 -0
  130. package/dist/models/repl/model-registry.js.map +1 -0
  131. package/dist/models/repl/repl-state.d.ts +86 -0
  132. package/dist/models/repl/repl-state.d.ts.map +1 -0
  133. package/dist/models/repl/repl-state.js +152 -0
  134. package/dist/models/repl/repl-state.js.map +1 -0
  135. package/dist/models/repl/task-log.d.ts +247 -0
  136. package/dist/models/repl/task-log.d.ts.map +1 -0
  137. package/dist/models/repl/task-log.js +178 -0
  138. package/dist/models/repl/task-log.js.map +1 -0
  139. package/dist/models/session.d.ts +71 -0
  140. package/dist/models/session.d.ts.map +1 -0
  141. package/dist/models/session.js +140 -0
  142. package/dist/models/session.js.map +1 -0
  143. package/dist/models/supporting.d.ts +97 -0
  144. package/dist/models/supporting.d.ts.map +1 -0
  145. package/dist/models/supporting.js +208 -0
  146. package/dist/models/supporting.js.map +1 -0
  147. package/dist/models/task.d.ts +77 -0
  148. package/dist/models/task.d.ts.map +1 -0
  149. package/dist/models/task.js +170 -0
  150. package/dist/models/task.js.map +1 -0
  151. package/dist/output/output-control-manager.d.ts +217 -0
  152. package/dist/output/output-control-manager.d.ts.map +1 -0
  153. package/dist/output/output-control-manager.js +378 -0
  154. package/dist/output/output-control-manager.js.map +1 -0
  155. package/dist/pool/agent-pool.d.ts +284 -0
  156. package/dist/pool/agent-pool.d.ts.map +1 -0
  157. package/dist/pool/agent-pool.js +451 -0
  158. package/dist/pool/agent-pool.js.map +1 -0
  159. package/dist/repl/commands/index.d.ts +12 -0
  160. package/dist/repl/commands/index.d.ts.map +1 -0
  161. package/dist/repl/commands/index.js +26 -0
  162. package/dist/repl/commands/index.js.map +1 -0
  163. package/dist/repl/commands/init.d.ts +31 -0
  164. package/dist/repl/commands/init.d.ts.map +1 -0
  165. package/dist/repl/commands/init.js +234 -0
  166. package/dist/repl/commands/init.js.map +1 -0
  167. package/dist/repl/commands/keys.d.ts +63 -0
  168. package/dist/repl/commands/keys.d.ts.map +1 -0
  169. package/dist/repl/commands/keys.js +114 -0
  170. package/dist/repl/commands/keys.js.map +1 -0
  171. package/dist/repl/commands/logs.d.ts +91 -0
  172. package/dist/repl/commands/logs.d.ts.map +1 -0
  173. package/dist/repl/commands/logs.js +200 -0
  174. package/dist/repl/commands/logs.js.map +1 -0
  175. package/dist/repl/commands/model.d.ts +85 -0
  176. package/dist/repl/commands/model.d.ts.map +1 -0
  177. package/dist/repl/commands/model.js +225 -0
  178. package/dist/repl/commands/model.js.map +1 -0
  179. package/dist/repl/commands/models.d.ts +50 -0
  180. package/dist/repl/commands/models.d.ts.map +1 -0
  181. package/dist/repl/commands/models.js +180 -0
  182. package/dist/repl/commands/models.js.map +1 -0
  183. package/dist/repl/commands/provider.d.ts +79 -0
  184. package/dist/repl/commands/provider.d.ts.map +1 -0
  185. package/dist/repl/commands/provider.js +291 -0
  186. package/dist/repl/commands/provider.js.map +1 -0
  187. package/dist/repl/commands/session.d.ts +50 -0
  188. package/dist/repl/commands/session.d.ts.map +1 -0
  189. package/dist/repl/commands/session.js +152 -0
  190. package/dist/repl/commands/session.js.map +1 -0
  191. package/dist/repl/commands/status.d.ts +55 -0
  192. package/dist/repl/commands/status.d.ts.map +1 -0
  193. package/dist/repl/commands/status.js +182 -0
  194. package/dist/repl/commands/status.js.map +1 -0
  195. package/dist/repl/index.d.ts +6 -0
  196. package/dist/repl/index.d.ts.map +1 -0
  197. package/dist/repl/index.js +25 -0
  198. package/dist/repl/index.js.map +1 -0
  199. package/dist/repl/repl-interface.d.ts +371 -0
  200. package/dist/repl/repl-interface.d.ts.map +1 -0
  201. package/dist/repl/repl-interface.js +1214 -0
  202. package/dist/repl/repl-interface.js.map +1 -0
  203. package/dist/session/session-manager.d.ts +85 -0
  204. package/dist/session/session-manager.d.ts.map +1 -0
  205. package/dist/session/session-manager.js +217 -0
  206. package/dist/session/session-manager.js.map +1 -0
  207. package/dist/supervisor/executor-supervisor.d.ts +90 -0
  208. package/dist/supervisor/executor-supervisor.d.ts.map +1 -0
  209. package/dist/supervisor/executor-supervisor.js +223 -0
  210. package/dist/supervisor/executor-supervisor.js.map +1 -0
  211. package/dist/supervisor/index.d.ts +5 -0
  212. package/dist/supervisor/index.d.ts.map +1 -0
  213. package/dist/supervisor/index.js +9 -0
  214. package/dist/supervisor/index.js.map +1 -0
  215. package/package.json +57 -0
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Supporting Structures
3
+ * Based on 05_DATA_MODELS.md L79-101
4
+ */
5
+ /**
6
+ * TaskLimits validation error
7
+ */
8
+ export declare class TaskLimitsValidationError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ /**
12
+ * LimitViolation validation error
13
+ */
14
+ export declare class LimitViolationValidationError extends Error {
15
+ constructor(message: string);
16
+ }
17
+ /**
18
+ * EvidenceInventory validation error
19
+ */
20
+ export declare class EvidenceInventoryValidationError extends Error {
21
+ constructor(message: string);
22
+ }
23
+ /**
24
+ * TaskLimits structure (L81-86)
25
+ */
26
+ export interface TaskLimits {
27
+ max_files: number;
28
+ max_tests: number;
29
+ max_seconds: number;
30
+ }
31
+ /**
32
+ * LimitViolation structure (L88-94)
33
+ */
34
+ export interface LimitViolation {
35
+ limit_type: string;
36
+ limit_value: number;
37
+ actual_value: number;
38
+ timestamp: string;
39
+ resolution_required: boolean;
40
+ }
41
+ /**
42
+ * EvidenceInventory structure (L96-101)
43
+ */
44
+ export interface EvidenceInventory {
45
+ total_evidence_items: number;
46
+ missing_evidence_operations: string[];
47
+ integrity_failures: string[];
48
+ raw_evidence_files: string[];
49
+ }
50
+ /**
51
+ * Create task limits with defaults
52
+ */
53
+ export declare function createTaskLimits(maxFiles?: number, maxTests?: number, maxSeconds?: number): TaskLimits;
54
+ /**
55
+ * Validate task limits
56
+ * @throws TaskLimitsValidationError if validation fails
57
+ */
58
+ export declare function validateTaskLimits(limits: TaskLimits): boolean;
59
+ /**
60
+ * Create limit violation
61
+ */
62
+ export declare function createLimitViolation(limitType: string, limitValue: number, actualValue: number): LimitViolation;
63
+ /**
64
+ * Validate limit violation
65
+ * @throws LimitViolationValidationError if validation fails
66
+ */
67
+ export declare function validateLimitViolation(violation: LimitViolation): boolean;
68
+ /**
69
+ * Create empty evidence inventory
70
+ */
71
+ export declare function createEvidenceInventory(): EvidenceInventory;
72
+ /**
73
+ * Validate evidence inventory
74
+ * @throws EvidenceInventoryValidationError if validation fails
75
+ */
76
+ export declare function validateEvidenceInventory(inventory: EvidenceInventory): boolean;
77
+ /**
78
+ * Add missing evidence operation
79
+ */
80
+ export declare function addMissingEvidenceOperation(inventory: EvidenceInventory, operationId: string): EvidenceInventory;
81
+ /**
82
+ * Add integrity failure
83
+ */
84
+ export declare function addIntegrityFailure(inventory: EvidenceInventory, evidenceId: string): EvidenceInventory;
85
+ /**
86
+ * Add raw evidence file
87
+ */
88
+ export declare function addRawEvidenceFile(inventory: EvidenceInventory, filePath: string): EvidenceInventory;
89
+ /**
90
+ * Increment evidence item count
91
+ */
92
+ export declare function incrementEvidenceCount(inventory: EvidenceInventory, count?: number): EvidenceInventory;
93
+ /**
94
+ * Check if inventory has issues (missing evidence or integrity failures)
95
+ */
96
+ export declare function hasInventoryIssues(inventory: EvidenceInventory): boolean;
97
+ //# sourceMappingURL=supporting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supporting.d.ts","sourceRoot":"","sources":["../../src/models/supporting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAAiC,EAC3C,QAAQ,GAAE,MAAiC,EAC3C,UAAU,GAAE,MAAmC,GAC9C,UAAU,CAMZ;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CA6B9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,cAAc,CAQhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CA2BzE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAO3D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAsB/E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,GAClB,iBAAiB,CAKnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,MAAM,GACjB,iBAAiB,CAKnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAKnB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,GAAE,MAAU,GAChB,iBAAiB,CAKnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAKxE"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * Supporting Structures
4
+ * Based on 05_DATA_MODELS.md L79-101
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.EvidenceInventoryValidationError = exports.LimitViolationValidationError = exports.TaskLimitsValidationError = void 0;
8
+ exports.createTaskLimits = createTaskLimits;
9
+ exports.validateTaskLimits = validateTaskLimits;
10
+ exports.createLimitViolation = createLimitViolation;
11
+ exports.validateLimitViolation = validateLimitViolation;
12
+ exports.createEvidenceInventory = createEvidenceInventory;
13
+ exports.validateEvidenceInventory = validateEvidenceInventory;
14
+ exports.addMissingEvidenceOperation = addMissingEvidenceOperation;
15
+ exports.addIntegrityFailure = addIntegrityFailure;
16
+ exports.addRawEvidenceFile = addRawEvidenceFile;
17
+ exports.incrementEvidenceCount = incrementEvidenceCount;
18
+ exports.hasInventoryIssues = hasInventoryIssues;
19
+ /**
20
+ * Task limits range constraints (from 04_COMPONENTS.md L70-72)
21
+ */
22
+ const LIMITS_RANGE = {
23
+ max_files: { min: 1, max: 20 },
24
+ max_tests: { min: 1, max: 50 },
25
+ max_seconds: { min: 30, max: 900 },
26
+ };
27
+ /**
28
+ * Default task limits
29
+ */
30
+ const DEFAULT_LIMITS = {
31
+ max_files: 5,
32
+ max_tests: 10,
33
+ max_seconds: 300,
34
+ };
35
+ /**
36
+ * TaskLimits validation error
37
+ */
38
+ class TaskLimitsValidationError extends Error {
39
+ constructor(message) {
40
+ super(message);
41
+ this.name = 'TaskLimitsValidationError';
42
+ }
43
+ }
44
+ exports.TaskLimitsValidationError = TaskLimitsValidationError;
45
+ /**
46
+ * LimitViolation validation error
47
+ */
48
+ class LimitViolationValidationError extends Error {
49
+ constructor(message) {
50
+ super(message);
51
+ this.name = 'LimitViolationValidationError';
52
+ }
53
+ }
54
+ exports.LimitViolationValidationError = LimitViolationValidationError;
55
+ /**
56
+ * EvidenceInventory validation error
57
+ */
58
+ class EvidenceInventoryValidationError extends Error {
59
+ constructor(message) {
60
+ super(message);
61
+ this.name = 'EvidenceInventoryValidationError';
62
+ }
63
+ }
64
+ exports.EvidenceInventoryValidationError = EvidenceInventoryValidationError;
65
+ /**
66
+ * Create task limits with defaults
67
+ */
68
+ function createTaskLimits(maxFiles = DEFAULT_LIMITS.max_files, maxTests = DEFAULT_LIMITS.max_tests, maxSeconds = DEFAULT_LIMITS.max_seconds) {
69
+ return {
70
+ max_files: maxFiles,
71
+ max_tests: maxTests,
72
+ max_seconds: maxSeconds,
73
+ };
74
+ }
75
+ /**
76
+ * Validate task limits
77
+ * @throws TaskLimitsValidationError if validation fails
78
+ */
79
+ function validateTaskLimits(limits) {
80
+ if (limits.max_files < LIMITS_RANGE.max_files.min ||
81
+ limits.max_files > LIMITS_RANGE.max_files.max) {
82
+ throw new TaskLimitsValidationError(`max_files must be between ${LIMITS_RANGE.max_files.min} and ${LIMITS_RANGE.max_files.max}`);
83
+ }
84
+ if (limits.max_tests < LIMITS_RANGE.max_tests.min ||
85
+ limits.max_tests > LIMITS_RANGE.max_tests.max) {
86
+ throw new TaskLimitsValidationError(`max_tests must be between ${LIMITS_RANGE.max_tests.min} and ${LIMITS_RANGE.max_tests.max}`);
87
+ }
88
+ if (limits.max_seconds < LIMITS_RANGE.max_seconds.min ||
89
+ limits.max_seconds > LIMITS_RANGE.max_seconds.max) {
90
+ throw new TaskLimitsValidationError(`max_seconds must be between ${LIMITS_RANGE.max_seconds.min} and ${LIMITS_RANGE.max_seconds.max}`);
91
+ }
92
+ return true;
93
+ }
94
+ /**
95
+ * Create limit violation
96
+ */
97
+ function createLimitViolation(limitType, limitValue, actualValue) {
98
+ return {
99
+ limit_type: limitType,
100
+ limit_value: limitValue,
101
+ actual_value: actualValue,
102
+ timestamp: new Date().toISOString(),
103
+ resolution_required: true,
104
+ };
105
+ }
106
+ /**
107
+ * Validate limit violation
108
+ * @throws LimitViolationValidationError if validation fails
109
+ */
110
+ function validateLimitViolation(violation) {
111
+ if (!violation.limit_type || violation.limit_type.length === 0) {
112
+ throw new LimitViolationValidationError('limit_type is required');
113
+ }
114
+ if (violation.limit_value === undefined) {
115
+ throw new LimitViolationValidationError('limit_value is required');
116
+ }
117
+ if (violation.actual_value === undefined) {
118
+ throw new LimitViolationValidationError('actual_value is required');
119
+ }
120
+ if (!violation.timestamp || violation.timestamp.length === 0) {
121
+ throw new LimitViolationValidationError('timestamp is required');
122
+ }
123
+ const timestamp = new Date(violation.timestamp);
124
+ if (isNaN(timestamp.getTime())) {
125
+ throw new LimitViolationValidationError('timestamp must be a valid ISO 8601 timestamp');
126
+ }
127
+ if (violation.resolution_required === undefined) {
128
+ throw new LimitViolationValidationError('resolution_required is required');
129
+ }
130
+ return true;
131
+ }
132
+ /**
133
+ * Create empty evidence inventory
134
+ */
135
+ function createEvidenceInventory() {
136
+ return {
137
+ total_evidence_items: 0,
138
+ missing_evidence_operations: [],
139
+ integrity_failures: [],
140
+ raw_evidence_files: [],
141
+ };
142
+ }
143
+ /**
144
+ * Validate evidence inventory
145
+ * @throws EvidenceInventoryValidationError if validation fails
146
+ */
147
+ function validateEvidenceInventory(inventory) {
148
+ if (inventory.total_evidence_items === undefined) {
149
+ throw new EvidenceInventoryValidationError('total_evidence_items is required');
150
+ }
151
+ if (inventory.total_evidence_items < 0) {
152
+ throw new EvidenceInventoryValidationError('total_evidence_items must be non-negative');
153
+ }
154
+ if (!Array.isArray(inventory.missing_evidence_operations)) {
155
+ throw new EvidenceInventoryValidationError('missing_evidence_operations must be an array');
156
+ }
157
+ if (!Array.isArray(inventory.integrity_failures)) {
158
+ throw new EvidenceInventoryValidationError('integrity_failures must be an array');
159
+ }
160
+ if (!Array.isArray(inventory.raw_evidence_files)) {
161
+ throw new EvidenceInventoryValidationError('raw_evidence_files must be an array');
162
+ }
163
+ return true;
164
+ }
165
+ /**
166
+ * Add missing evidence operation
167
+ */
168
+ function addMissingEvidenceOperation(inventory, operationId) {
169
+ return {
170
+ ...inventory,
171
+ missing_evidence_operations: [...inventory.missing_evidence_operations, operationId],
172
+ };
173
+ }
174
+ /**
175
+ * Add integrity failure
176
+ */
177
+ function addIntegrityFailure(inventory, evidenceId) {
178
+ return {
179
+ ...inventory,
180
+ integrity_failures: [...inventory.integrity_failures, evidenceId],
181
+ };
182
+ }
183
+ /**
184
+ * Add raw evidence file
185
+ */
186
+ function addRawEvidenceFile(inventory, filePath) {
187
+ return {
188
+ ...inventory,
189
+ raw_evidence_files: [...inventory.raw_evidence_files, filePath],
190
+ };
191
+ }
192
+ /**
193
+ * Increment evidence item count
194
+ */
195
+ function incrementEvidenceCount(inventory, count = 1) {
196
+ return {
197
+ ...inventory,
198
+ total_evidence_items: inventory.total_evidence_items + count,
199
+ };
200
+ }
201
+ /**
202
+ * Check if inventory has issues (missing evidence or integrity failures)
203
+ */
204
+ function hasInventoryIssues(inventory) {
205
+ return (inventory.missing_evidence_operations.length > 0 ||
206
+ inventory.integrity_failures.length > 0);
207
+ }
208
+ //# sourceMappingURL=supporting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supporting.js","sourceRoot":"","sources":["../../src/models/supporting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Task Model
3
+ * Based on 05_DATA_MODELS.md L23-37
4
+ */
5
+ import { TaskStatus } from './enums';
6
+ /**
7
+ * Granularity limits for task execution
8
+ */
9
+ export interface GranularityLimits {
10
+ max_files: number;
11
+ max_tests: number;
12
+ max_seconds: number;
13
+ }
14
+ /**
15
+ * Task data structure
16
+ */
17
+ export interface Task {
18
+ task_id: string;
19
+ description: string;
20
+ requirements: string[];
21
+ status: TaskStatus;
22
+ assigned_executor?: string;
23
+ evidence_refs: string[];
24
+ files_modified: string[];
25
+ tests_run: string[];
26
+ tests_required_before_implementation: boolean;
27
+ granularity_limits: GranularityLimits;
28
+ decomposition_approved_by_runner: boolean;
29
+ parent_task_id?: string;
30
+ subtask_ids?: string[];
31
+ started_at?: string;
32
+ completed_at?: string;
33
+ error?: {
34
+ code: string;
35
+ message: string;
36
+ };
37
+ }
38
+ /**
39
+ * Task validation error
40
+ */
41
+ export declare class TaskValidationError extends Error {
42
+ constructor(message: string);
43
+ }
44
+ /**
45
+ * Create a new task
46
+ */
47
+ export declare function createTask(description: string, requirements: string[], granularityLimits?: Partial<GranularityLimits>): Task;
48
+ /**
49
+ * Validate a task object
50
+ * @throws TaskValidationError if validation fails
51
+ */
52
+ export declare function validateTask(task: Task): boolean;
53
+ /**
54
+ * Update task status
55
+ */
56
+ export declare function updateTaskStatus(task: Task, newStatus: TaskStatus): Task;
57
+ /**
58
+ * Assign executor to task
59
+ */
60
+ export declare function assignExecutor(task: Task, executorId: string): Task;
61
+ /**
62
+ * Add evidence reference to task
63
+ */
64
+ export declare function addEvidenceRef(task: Task, evidenceRef: string): Task;
65
+ /**
66
+ * Add modified file to task
67
+ */
68
+ export declare function addModifiedFile(task: Task, filePath: string): Task;
69
+ /**
70
+ * Add test run to task
71
+ */
72
+ export declare function addTestRun(task: Task, testId: string): Task;
73
+ /**
74
+ * Mark task decomposition as approved
75
+ */
76
+ export declare function approveDecomposition(task: Task): Task;
77
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/models/task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oCAAoC,EAAE,OAAO,CAAC;IAC9C,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,gCAAgC,EAAE,OAAO,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAoBD;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAC7C,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CA2DhD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI,CAMxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAKpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAKrD"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /**
3
+ * Task Model
4
+ * Based on 05_DATA_MODELS.md L23-37
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TaskValidationError = void 0;
8
+ exports.createTask = createTask;
9
+ exports.validateTask = validateTask;
10
+ exports.updateTaskStatus = updateTaskStatus;
11
+ exports.assignExecutor = assignExecutor;
12
+ exports.addEvidenceRef = addEvidenceRef;
13
+ exports.addModifiedFile = addModifiedFile;
14
+ exports.addTestRun = addTestRun;
15
+ exports.approveDecomposition = approveDecomposition;
16
+ const uuid_1 = require("uuid");
17
+ const enums_1 = require("./enums");
18
+ /**
19
+ * Task validation error
20
+ */
21
+ class TaskValidationError extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = 'TaskValidationError';
25
+ }
26
+ }
27
+ exports.TaskValidationError = TaskValidationError;
28
+ /**
29
+ * Default granularity limits
30
+ */
31
+ const DEFAULT_GRANULARITY_LIMITS = {
32
+ max_files: 5,
33
+ max_tests: 10,
34
+ max_seconds: 300,
35
+ };
36
+ /**
37
+ * Maximum allowed limits
38
+ */
39
+ const MAX_LIMITS = {
40
+ max_files: 20,
41
+ max_tests: 50,
42
+ max_seconds: 3600,
43
+ };
44
+ /**
45
+ * Create a new task
46
+ */
47
+ function createTask(description, requirements, granularityLimits) {
48
+ return {
49
+ task_id: `task-${(0, uuid_1.v4)()}`,
50
+ description,
51
+ requirements,
52
+ status: enums_1.TaskStatus.INCOMPLETE,
53
+ evidence_refs: [],
54
+ files_modified: [],
55
+ tests_run: [],
56
+ tests_required_before_implementation: true,
57
+ granularity_limits: {
58
+ ...DEFAULT_GRANULARITY_LIMITS,
59
+ ...granularityLimits,
60
+ },
61
+ decomposition_approved_by_runner: false,
62
+ };
63
+ }
64
+ /**
65
+ * Validate a task object
66
+ * @throws TaskValidationError if validation fails
67
+ */
68
+ function validateTask(task) {
69
+ if (!task.task_id || task.task_id.length === 0) {
70
+ throw new TaskValidationError('task_id is required');
71
+ }
72
+ if (!task.description || task.description.length === 0) {
73
+ throw new TaskValidationError('description is required');
74
+ }
75
+ if (!Array.isArray(task.requirements)) {
76
+ throw new TaskValidationError('requirements must be an array');
77
+ }
78
+ if (task.status === undefined) {
79
+ throw new TaskValidationError('status is required');
80
+ }
81
+ if (!Array.isArray(task.evidence_refs)) {
82
+ throw new TaskValidationError('evidence_refs must be an array');
83
+ }
84
+ if (!Array.isArray(task.files_modified)) {
85
+ throw new TaskValidationError('files_modified must be an array');
86
+ }
87
+ if (!Array.isArray(task.tests_run)) {
88
+ throw new TaskValidationError('tests_run must be an array');
89
+ }
90
+ // Validate granularity limits
91
+ if (!task.granularity_limits) {
92
+ throw new TaskValidationError('granularity_limits is required');
93
+ }
94
+ if (task.granularity_limits.max_files <= 0) {
95
+ throw new TaskValidationError('max_files must be greater than 0');
96
+ }
97
+ if (task.granularity_limits.max_files > MAX_LIMITS.max_files) {
98
+ throw new TaskValidationError(`max_files cannot exceed ${MAX_LIMITS.max_files}`);
99
+ }
100
+ if (task.granularity_limits.max_tests <= 0) {
101
+ throw new TaskValidationError('max_tests must be greater than 0');
102
+ }
103
+ if (task.granularity_limits.max_tests > MAX_LIMITS.max_tests) {
104
+ throw new TaskValidationError(`max_tests cannot exceed ${MAX_LIMITS.max_tests}`);
105
+ }
106
+ if (task.granularity_limits.max_seconds <= 0) {
107
+ throw new TaskValidationError('max_seconds must be greater than 0');
108
+ }
109
+ if (task.granularity_limits.max_seconds > MAX_LIMITS.max_seconds) {
110
+ throw new TaskValidationError(`max_seconds cannot exceed ${MAX_LIMITS.max_seconds}`);
111
+ }
112
+ return true;
113
+ }
114
+ /**
115
+ * Update task status
116
+ */
117
+ function updateTaskStatus(task, newStatus) {
118
+ return {
119
+ ...task,
120
+ status: newStatus,
121
+ completed_at: newStatus === enums_1.TaskStatus.COMPLETE ? new Date().toISOString() : task.completed_at,
122
+ };
123
+ }
124
+ /**
125
+ * Assign executor to task
126
+ */
127
+ function assignExecutor(task, executorId) {
128
+ return {
129
+ ...task,
130
+ assigned_executor: executorId,
131
+ started_at: new Date().toISOString(),
132
+ };
133
+ }
134
+ /**
135
+ * Add evidence reference to task
136
+ */
137
+ function addEvidenceRef(task, evidenceRef) {
138
+ return {
139
+ ...task,
140
+ evidence_refs: [...task.evidence_refs, evidenceRef],
141
+ };
142
+ }
143
+ /**
144
+ * Add modified file to task
145
+ */
146
+ function addModifiedFile(task, filePath) {
147
+ return {
148
+ ...task,
149
+ files_modified: [...task.files_modified, filePath],
150
+ };
151
+ }
152
+ /**
153
+ * Add test run to task
154
+ */
155
+ function addTestRun(task, testId) {
156
+ return {
157
+ ...task,
158
+ tests_run: [...task.tests_run, testId],
159
+ };
160
+ }
161
+ /**
162
+ * Mark task decomposition as approved
163
+ */
164
+ function approveDecomposition(task) {
165
+ return {
166
+ ...task,
167
+ decomposition_approved_by_runner: true,
168
+ };
169
+ }
170
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/models/task.ts"],"names":[],"mappings":"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"}