@pickle-pee/runtime 0.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.
- package/README.md +99 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.js +10 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/kernel-session-adapter.d.ts +73 -0
- package/dist/adapters/kernel-session-adapter.js +10 -0
- package/dist/adapters/kernel-session-adapter.js.map +1 -0
- package/dist/adapters/pi-mono-event-bridge.d.ts +54 -0
- package/dist/adapters/pi-mono-event-bridge.js +159 -0
- package/dist/adapters/pi-mono-event-bridge.js.map +1 -0
- package/dist/adapters/pi-mono-session-adapter.d.ts +75 -0
- package/dist/adapters/pi-mono-session-adapter.js +490 -0
- package/dist/adapters/pi-mono-session-adapter.js.map +1 -0
- package/dist/create-app-runtime.d.ts +52 -0
- package/dist/create-app-runtime.js +163 -0
- package/dist/create-app-runtime.js.map +1 -0
- package/dist/domain/index.d.ts +1 -0
- package/dist/domain/index.js +5 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/events/event-bus.d.ts +23 -0
- package/dist/events/event-bus.js +85 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.js +6 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/runtime-event.d.ts +158 -0
- package/dist/events/runtime-event.js +13 -0
- package/dist/events/runtime-event.js.map +1 -0
- package/dist/governance/tool-governor.d.ts +63 -0
- package/dist/governance/tool-governor.js +639 -0
- package/dist/governance/tool-governor.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/planning/index.d.ts +6 -0
- package/dist/planning/index.js +16 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/plan-engine.d.ts +49 -0
- package/dist/planning/plan-engine.js +174 -0
- package/dist/planning/plan-engine.js.map +1 -0
- package/dist/planning/plan-events.d.ts +14 -0
- package/dist/planning/plan-events.js +94 -0
- package/dist/planning/plan-events.js.map +1 -0
- package/dist/planning/plan-orchestrator.d.ts +56 -0
- package/dist/planning/plan-orchestrator.js +167 -0
- package/dist/planning/plan-orchestrator.js.map +1 -0
- package/dist/planning/plan-types.d.ts +36 -0
- package/dist/planning/plan-types.js +9 -0
- package/dist/planning/plan-types.js.map +1 -0
- package/dist/runtime-context.d.ts +21 -0
- package/dist/runtime-context.js +37 -0
- package/dist/runtime-context.js.map +1 -0
- package/dist/services/event-normalizer.d.ts +22 -0
- package/dist/services/event-normalizer.js +162 -0
- package/dist/services/event-normalizer.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -0
- package/dist/session/session-events.d.ts +11 -0
- package/dist/session/session-events.js +52 -0
- package/dist/session/session-events.js.map +1 -0
- package/dist/session/session-facade.d.ts +88 -0
- package/dist/session/session-facade.js +439 -0
- package/dist/session/session-facade.js.map +1 -0
- package/dist/session/session-state.d.ts +14 -0
- package/dist/session/session-state.js +75 -0
- package/dist/session/session-state.js.map +1 -0
- package/dist/subagent/aggregation.d.ts +25 -0
- package/dist/subagent/aggregation.js +124 -0
- package/dist/subagent/aggregation.js.map +1 -0
- package/dist/subagent/index.d.ts +10 -0
- package/dist/subagent/index.js +29 -0
- package/dist/subagent/index.js.map +1 -0
- package/dist/subagent/path-scope.d.ts +24 -0
- package/dist/subagent/path-scope.js +86 -0
- package/dist/subagent/path-scope.js.map +1 -0
- package/dist/subagent/result-types.d.ts +61 -0
- package/dist/subagent/result-types.js +9 -0
- package/dist/subagent/result-types.js.map +1 -0
- package/dist/subagent/stop-condition.d.ts +34 -0
- package/dist/subagent/stop-condition.js +76 -0
- package/dist/subagent/stop-condition.js.map +1 -0
- package/dist/subagent/task-types.d.ts +48 -0
- package/dist/subagent/task-types.js +10 -0
- package/dist/subagent/task-types.js.map +1 -0
- package/dist/subagent/task-validator.d.ts +22 -0
- package/dist/subagent/task-validator.js +79 -0
- package/dist/subagent/task-validator.js.map +1 -0
- package/dist/subagent/verification.d.ts +22 -0
- package/dist/subagent/verification.js +55 -0
- package/dist/subagent/verification.js.map +1 -0
- package/dist/test/aggregation.test.d.ts +1 -0
- package/dist/test/aggregation.test.js +201 -0
- package/dist/test/aggregation.test.js.map +1 -0
- package/dist/test/create-app-runtime.test.d.ts +1 -0
- package/dist/test/create-app-runtime.test.js +286 -0
- package/dist/test/create-app-runtime.test.js.map +1 -0
- package/dist/test/event-bus.test.d.ts +1 -0
- package/dist/test/event-bus.test.js +81 -0
- package/dist/test/event-bus.test.js.map +1 -0
- package/dist/test/event-normalizer.test.d.ts +1 -0
- package/dist/test/event-normalizer.test.js +143 -0
- package/dist/test/event-normalizer.test.js.map +1 -0
- package/dist/test/path-scope.test.d.ts +1 -0
- package/dist/test/path-scope.test.js +71 -0
- package/dist/test/path-scope.test.js.map +1 -0
- package/dist/test/pi-mono-event-bridge.test.d.ts +1 -0
- package/dist/test/pi-mono-event-bridge.test.js +125 -0
- package/dist/test/pi-mono-event-bridge.test.js.map +1 -0
- package/dist/test/pi-mono-live.test.d.ts +1 -0
- package/dist/test/pi-mono-live.test.js +289 -0
- package/dist/test/pi-mono-live.test.js.map +1 -0
- package/dist/test/pi-mono-session-adapter.test.d.ts +1 -0
- package/dist/test/pi-mono-session-adapter.test.js +260 -0
- package/dist/test/pi-mono-session-adapter.test.js.map +1 -0
- package/dist/test/plan-engine.test.d.ts +1 -0
- package/dist/test/plan-engine.test.js +235 -0
- package/dist/test/plan-engine.test.js.map +1 -0
- package/dist/test/plan-events.test.d.ts +1 -0
- package/dist/test/plan-events.test.js +81 -0
- package/dist/test/plan-events.test.js.map +1 -0
- package/dist/test/plan-orchestrator.test.d.ts +1 -0
- package/dist/test/plan-orchestrator.test.js +324 -0
- package/dist/test/plan-orchestrator.test.js.map +1 -0
- package/dist/test/runtime-context.test.d.ts +1 -0
- package/dist/test/runtime-context.test.js +70 -0
- package/dist/test/runtime-context.test.js.map +1 -0
- package/dist/test/session-facade.test.d.ts +1 -0
- package/dist/test/session-facade.test.js +1011 -0
- package/dist/test/session-facade.test.js.map +1 -0
- package/dist/test/session-state.test.d.ts +1 -0
- package/dist/test/session-state.test.js +118 -0
- package/dist/test/session-state.test.js.map +1 -0
- package/dist/test/stop-condition.test.d.ts +1 -0
- package/dist/test/stop-condition.test.js +105 -0
- package/dist/test/stop-condition.test.js.map +1 -0
- package/dist/test/stubs/stub-kernel-session-adapter.d.ts +45 -0
- package/dist/test/stubs/stub-kernel-session-adapter.js +186 -0
- package/dist/test/stubs/stub-kernel-session-adapter.js.map +1 -0
- package/dist/test/task-validator.test.d.ts +1 -0
- package/dist/test/task-validator.test.js +97 -0
- package/dist/test/task-validator.test.js.map +1 -0
- package/dist/test/tool-governor.test.d.ts +1 -0
- package/dist/test/tool-governor.test.js +379 -0
- package/dist/test/tool-governor.test.js.map +1 -0
- package/dist/types/index.d.ts +77 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +28 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Task contract validation.
|
|
4
|
+
*
|
|
5
|
+
* Enforces the three mandatory rules from the subagent protocol:
|
|
6
|
+
* 1. No task without allowed_paths can be dispatched
|
|
7
|
+
* 2. No task without verification can be dispatched
|
|
8
|
+
* 3. No task without stop_conditions is considered safe
|
|
9
|
+
*
|
|
10
|
+
* Plus consistency checks: taskId/goal non-empty, no scope overlap.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.validateTask = validateTask;
|
|
14
|
+
exports.hasConsistentScope = hasConsistentScope;
|
|
15
|
+
exports.hasRequiredFields = hasRequiredFields;
|
|
16
|
+
const path_scope_js_1 = require("./path-scope.js");
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Validation
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/** Validate that a task contract is complete and dispatchable. */
|
|
21
|
+
function validateTask(task) {
|
|
22
|
+
const errors = [];
|
|
23
|
+
// Required fields
|
|
24
|
+
if (!task.taskId || task.taskId.trim().length === 0) {
|
|
25
|
+
errors.push("taskId must be non-empty");
|
|
26
|
+
}
|
|
27
|
+
if (!task.goal || task.goal.trim().length === 0) {
|
|
28
|
+
errors.push("goal must be non-empty");
|
|
29
|
+
}
|
|
30
|
+
// Scope
|
|
31
|
+
if (!task.scope.allowedPaths || task.scope.allowedPaths.length === 0) {
|
|
32
|
+
errors.push("scope.allowedPaths must contain at least one path");
|
|
33
|
+
}
|
|
34
|
+
// Protocol rules
|
|
35
|
+
if (!task.verification || task.verification.length === 0) {
|
|
36
|
+
errors.push("verification must contain at least one check — tasks without verification cannot be dispatched");
|
|
37
|
+
}
|
|
38
|
+
if (!task.stopConditions || task.stopConditions.length === 0) {
|
|
39
|
+
errors.push("stopConditions must contain at least one condition — tasks without stop conditions are unsafe");
|
|
40
|
+
}
|
|
41
|
+
// Scope consistency
|
|
42
|
+
if (task.scope.allowedPaths.length > 0) {
|
|
43
|
+
const scopeResult = hasConsistentScope(task.scope);
|
|
44
|
+
if (!scopeResult.valid) {
|
|
45
|
+
errors.push(...scopeResult.errors);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return { valid: errors.length === 0, errors };
|
|
49
|
+
}
|
|
50
|
+
/** Check that allowedPaths and forbiddenPaths do not overlap. */
|
|
51
|
+
function hasConsistentScope(scope) {
|
|
52
|
+
if (!(0, path_scope_js_1.isScopeConsistent)(scope)) {
|
|
53
|
+
return {
|
|
54
|
+
valid: false,
|
|
55
|
+
errors: ["scope.allowedPaths and scope.forbiddenPaths must not overlap"],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return VALID;
|
|
59
|
+
}
|
|
60
|
+
/** Check required fields only (no scope consistency check). */
|
|
61
|
+
function hasRequiredFields(task) {
|
|
62
|
+
const errors = [];
|
|
63
|
+
if (!task.taskId || task.taskId.trim().length === 0)
|
|
64
|
+
errors.push("taskId");
|
|
65
|
+
if (!task.goal || task.goal.trim().length === 0)
|
|
66
|
+
errors.push("goal");
|
|
67
|
+
if (!task.scope.allowedPaths || task.scope.allowedPaths.length === 0)
|
|
68
|
+
errors.push("allowedPaths");
|
|
69
|
+
if (!task.verification || task.verification.length === 0)
|
|
70
|
+
errors.push("verification");
|
|
71
|
+
if (!task.stopConditions || task.stopConditions.length === 0)
|
|
72
|
+
errors.push("stopConditions");
|
|
73
|
+
return errors.length === 0 ? VALID : { valid: false, errors };
|
|
74
|
+
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Internal
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
const VALID = Object.freeze({ valid: true, errors: [] });
|
|
79
|
+
//# sourceMappingURL=task-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-validator.js","sourceRoot":"","sources":["../../src/subagent/task-validator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAoBH,oCAiCC;AAGD,gDAQC;AAGD,8CASC;AA1ED,mDAAoD;AAapD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,kEAAkE;AAClE,SAAgB,YAAY,CAAC,IAAkB;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,kBAAkB;IAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ;IACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAClE,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;IAC9G,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,iEAAiE;AACjE,SAAgB,kBAAkB,CAAC,KAAgB;IAClD,IAAI,CAAC,IAAA,iCAAiB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;YACN,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,8DAA8D,CAAC;SACxE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,+DAA+D;AAC/D,SAAgB,iBAAiB,CAAC,IAAkB;IACnD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtF,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE5F,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/D,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,KAAK,GAAqB,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verification evaluation and anti-fake checks.
|
|
3
|
+
*
|
|
4
|
+
* Evaluates verification results against the specification and ensures
|
|
5
|
+
* subagents cannot fake successful verification output.
|
|
6
|
+
*/
|
|
7
|
+
import type { VerificationResult } from "./result-types.js";
|
|
8
|
+
import type { Verification } from "./task-types.js";
|
|
9
|
+
/** Outcome of evaluating a set of verifications. */
|
|
10
|
+
export interface VerificationEvaluation {
|
|
11
|
+
readonly allPassed: boolean;
|
|
12
|
+
readonly failedNames: readonly string[];
|
|
13
|
+
}
|
|
14
|
+
/** Evaluate verification results against their specifications. */
|
|
15
|
+
export declare function evaluateVerifications(specs: readonly Verification[], results: readonly VerificationResult[]): VerificationEvaluation;
|
|
16
|
+
/**
|
|
17
|
+
* Check if a verification result is trustworthy.
|
|
18
|
+
*
|
|
19
|
+
* A command-type verification that reports "passed" with empty output
|
|
20
|
+
* is considered untrustworthy — the subagent may have skipped execution.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isVerificationTrustworthy(spec: Verification, result: VerificationResult): boolean;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Verification evaluation and anti-fake checks.
|
|
4
|
+
*
|
|
5
|
+
* Evaluates verification results against the specification and ensures
|
|
6
|
+
* subagents cannot fake successful verification output.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.evaluateVerifications = evaluateVerifications;
|
|
10
|
+
exports.isVerificationTrustworthy = isVerificationTrustworthy;
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Evaluation
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/** Evaluate verification results against their specifications. */
|
|
15
|
+
function evaluateVerifications(specs, results) {
|
|
16
|
+
const failedNames = [];
|
|
17
|
+
for (const spec of specs) {
|
|
18
|
+
const result = results.find((r) => r.name === spec.name);
|
|
19
|
+
if (!result) {
|
|
20
|
+
failedNames.push(spec.name);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (result.status !== "passed") {
|
|
24
|
+
failedNames.push(spec.name);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
// Anti-fake: command-type verification must have non-empty output
|
|
28
|
+
if (spec.type === "command" && spec.command) {
|
|
29
|
+
if (!isVerificationTrustworthy(spec, result)) {
|
|
30
|
+
failedNames.push(spec.name);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
allPassed: failedNames.length === 0,
|
|
36
|
+
failedNames,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if a verification result is trustworthy.
|
|
41
|
+
*
|
|
42
|
+
* A command-type verification that reports "passed" with empty output
|
|
43
|
+
* is considered untrustworthy — the subagent may have skipped execution.
|
|
44
|
+
*/
|
|
45
|
+
function isVerificationTrustworthy(spec, result) {
|
|
46
|
+
if (result.status !== "passed") {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Command-type verifications must produce output
|
|
50
|
+
if (spec.type === "command" && spec.command) {
|
|
51
|
+
return typeof result.output === "string" && result.output.trim().length > 0;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/subagent/verification.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,sDA8BC;AAQD,8DAWC;AAtDD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,kEAAkE;AAClE,SAAgB,qBAAqB,CACpC,KAA8B,EAC9B,OAAsC;IAEtC,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS;QACV,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS;QACV,CAAC;QAED,kEAAkE;QAClE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC9C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,SAAS,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;QACnC,WAAW;KACX,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,IAAkB,EAAE,MAA0B;IACvF,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,iDAAiD;IACjD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,OAAO,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const aggregation_js_1 = require("../subagent/aggregation.js");
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Helpers
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
function makeTask(overrides) {
|
|
9
|
+
return {
|
|
10
|
+
taskId: "task-001",
|
|
11
|
+
goal: "Implement feature X",
|
|
12
|
+
scope: { allowedPaths: ["packages/app-runtime/**"], forbiddenPaths: [] },
|
|
13
|
+
inputs: { docs: [], files: [], assumptions: [] },
|
|
14
|
+
deliverables: ["code"],
|
|
15
|
+
verification: [{ name: "build", type: "command", command: "npm run build", description: "Build passes" }],
|
|
16
|
+
stopConditions: [{ type: "boundary_violation", description: "Stop" }],
|
|
17
|
+
...overrides,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function makeResult(overrides) {
|
|
21
|
+
return {
|
|
22
|
+
taskId: "task-001",
|
|
23
|
+
status: "completed",
|
|
24
|
+
modifiedPaths: [],
|
|
25
|
+
verifications: [],
|
|
26
|
+
risks: [],
|
|
27
|
+
handoffNotes: [],
|
|
28
|
+
completedAt: Date.now(),
|
|
29
|
+
...overrides,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Tests
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
(0, vitest_1.describe)("Aggregation", () => {
|
|
36
|
+
(0, vitest_1.describe)("aggregateResults", () => {
|
|
37
|
+
(0, vitest_1.it)("aggregates completed and failed counts", () => {
|
|
38
|
+
const results = [
|
|
39
|
+
makeResult({ taskId: "t1", status: "completed" }),
|
|
40
|
+
makeResult({ taskId: "t2", status: "failed" }),
|
|
41
|
+
makeResult({ taskId: "t3", status: "completed" }),
|
|
42
|
+
];
|
|
43
|
+
const agg = (0, aggregation_js_1.aggregateResults)("plan-1", results);
|
|
44
|
+
(0, vitest_1.expect)(agg.totalTasks).toBe(3);
|
|
45
|
+
(0, vitest_1.expect)(agg.completedTasks).toBe(2);
|
|
46
|
+
(0, vitest_1.expect)(agg.failedTasks).toBe(1);
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.it)("merges all modified paths", () => {
|
|
49
|
+
const results = [
|
|
50
|
+
makeResult({ taskId: "t1", modifiedPaths: ["a.ts", "b.ts"] }),
|
|
51
|
+
makeResult({ taskId: "t2", modifiedPaths: ["c.ts"] }),
|
|
52
|
+
];
|
|
53
|
+
const agg = (0, aggregation_js_1.aggregateResults)("plan-1", results);
|
|
54
|
+
(0, vitest_1.expect)(agg.allModifiedPaths).toEqual(["a.ts", "b.ts", "c.ts"]);
|
|
55
|
+
});
|
|
56
|
+
(0, vitest_1.it)("merges all risks", () => {
|
|
57
|
+
const risk1 = { severity: "high", description: "R1", affectedPaths: [] };
|
|
58
|
+
const risk2 = { severity: "low", description: "R2", affectedPaths: [] };
|
|
59
|
+
const results = [
|
|
60
|
+
makeResult({ taskId: "t1", risks: [risk1] }),
|
|
61
|
+
makeResult({ taskId: "t2", risks: [risk2] }),
|
|
62
|
+
];
|
|
63
|
+
const agg = (0, aggregation_js_1.aggregateResults)("plan-1", results);
|
|
64
|
+
(0, vitest_1.expect)(agg.allRisks).toHaveLength(2);
|
|
65
|
+
});
|
|
66
|
+
(0, vitest_1.it)("returns correct planId and completedAt", () => {
|
|
67
|
+
const agg = (0, aggregation_js_1.aggregateResults)("plan-1", []);
|
|
68
|
+
(0, vitest_1.expect)(agg.planId).toBe("plan-1");
|
|
69
|
+
(0, vitest_1.expect)(agg.completedAt).toBeGreaterThan(0);
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.it)("handles empty results", () => {
|
|
72
|
+
const agg = (0, aggregation_js_1.aggregateResults)("plan-1", []);
|
|
73
|
+
(0, vitest_1.expect)(agg.totalTasks).toBe(0);
|
|
74
|
+
(0, vitest_1.expect)(agg.completedTasks).toBe(0);
|
|
75
|
+
(0, vitest_1.expect)(agg.allModifiedPaths).toHaveLength(0);
|
|
76
|
+
});
|
|
77
|
+
(0, vitest_1.it)("counts completion using final rework decisions when provided", () => {
|
|
78
|
+
const results = [
|
|
79
|
+
makeResult({ taskId: "t1", status: "completed" }),
|
|
80
|
+
makeResult({ taskId: "t2", status: "completed" }),
|
|
81
|
+
];
|
|
82
|
+
const decisions = new Map([
|
|
83
|
+
["t1", { type: "accept" }],
|
|
84
|
+
["t2", { type: "rework", reason: "verification", focusAreas: ["build"] }],
|
|
85
|
+
]);
|
|
86
|
+
const agg = (0, aggregation_js_1.aggregateResults)("plan-1", results, decisions);
|
|
87
|
+
(0, vitest_1.expect)(agg.completedTasks).toBe(1);
|
|
88
|
+
(0, vitest_1.expect)(agg.failedTasks).toBe(1);
|
|
89
|
+
(0, vitest_1.expect)(agg.tasksRequiringRework).toBe(1);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.describe)("decideRework", () => {
|
|
93
|
+
(0, vitest_1.it)("accepts completed task with all verifications passed", () => {
|
|
94
|
+
const task = makeTask();
|
|
95
|
+
const result = makeResult({
|
|
96
|
+
verifications: [{ name: "build", status: "passed", output: "ok" }],
|
|
97
|
+
});
|
|
98
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
99
|
+
(0, vitest_1.expect)(decision.type).toBe("accept");
|
|
100
|
+
});
|
|
101
|
+
(0, vitest_1.it)("reworks completed task with failed verifications", () => {
|
|
102
|
+
const task = makeTask({
|
|
103
|
+
verification: [
|
|
104
|
+
{ name: "build", type: "command", command: "npm run build", description: "Build" },
|
|
105
|
+
{ name: "test", type: "command", command: "npm test", description: "Tests" },
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
const result = makeResult({
|
|
109
|
+
verifications: [
|
|
110
|
+
{ name: "build", status: "passed", output: "ok" },
|
|
111
|
+
{ name: "test", status: "failed", output: "2 failures" },
|
|
112
|
+
],
|
|
113
|
+
});
|
|
114
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
115
|
+
(0, vitest_1.expect)(decision.type).toBe("rework");
|
|
116
|
+
if (decision.type === "rework") {
|
|
117
|
+
(0, vitest_1.expect)(decision.focusAreas).toContain("test");
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
(0, vitest_1.it)("abandons completed task when rework limit exceeded and verifications fail", () => {
|
|
121
|
+
const task = makeTask();
|
|
122
|
+
const result = makeResult({
|
|
123
|
+
verifications: [{ name: "build", status: "failed", output: "error" }],
|
|
124
|
+
});
|
|
125
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 2);
|
|
126
|
+
(0, vitest_1.expect)(decision.type).toBe("abandon");
|
|
127
|
+
});
|
|
128
|
+
(0, vitest_1.it)("abandons on boundary violation", () => {
|
|
129
|
+
const task = makeTask();
|
|
130
|
+
const result = makeResult({ status: "boundary_violation" });
|
|
131
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
132
|
+
(0, vitest_1.expect)(decision.type).toBe("abandon");
|
|
133
|
+
if (decision.type === "abandon") {
|
|
134
|
+
(0, vitest_1.expect)(decision.reason).toContain("Boundary violation");
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
(0, vitest_1.it)("reworks failed task when attempts remain", () => {
|
|
138
|
+
const task = makeTask();
|
|
139
|
+
const result = makeResult({ status: "failed" });
|
|
140
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
141
|
+
(0, vitest_1.expect)(decision.type).toBe("rework");
|
|
142
|
+
});
|
|
143
|
+
(0, vitest_1.it)("abandons failed task when rework limit exceeded", () => {
|
|
144
|
+
const task = makeTask();
|
|
145
|
+
const result = makeResult({ status: "failed" });
|
|
146
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 2);
|
|
147
|
+
(0, vitest_1.expect)(decision.type).toBe("abandon");
|
|
148
|
+
if (decision.type === "abandon") {
|
|
149
|
+
(0, vitest_1.expect)(decision.reason).toContain("Rework limit");
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
(0, vitest_1.it)("reworks on stop condition triggered with attempts remaining", () => {
|
|
153
|
+
const task = makeTask();
|
|
154
|
+
const result = makeResult({ status: "stop_condition_triggered" });
|
|
155
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
156
|
+
(0, vitest_1.expect)(decision.type).toBe("rework");
|
|
157
|
+
});
|
|
158
|
+
(0, vitest_1.it)("abandons on stop condition triggered when no attempts remain", () => {
|
|
159
|
+
const task = makeTask();
|
|
160
|
+
const result = makeResult({ status: "stop_condition_triggered" });
|
|
161
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 2);
|
|
162
|
+
(0, vitest_1.expect)(decision.type).toBe("abandon");
|
|
163
|
+
});
|
|
164
|
+
// --- Boundary violation detection via modifiedPaths in completed results ---
|
|
165
|
+
(0, vitest_1.it)("reworks completed result with modifiedPaths outside scope", () => {
|
|
166
|
+
const task = makeTask();
|
|
167
|
+
const result = makeResult({
|
|
168
|
+
modifiedPaths: ["packages/other-lib/src/main.ts"],
|
|
169
|
+
verifications: [{ name: "build", status: "passed", output: "ok" }],
|
|
170
|
+
});
|
|
171
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
172
|
+
(0, vitest_1.expect)(decision.type).toBe("rework");
|
|
173
|
+
if (decision.type === "rework") {
|
|
174
|
+
(0, vitest_1.expect)(decision.reason).toContain("outside scope");
|
|
175
|
+
(0, vitest_1.expect)(decision.focusAreas).toContain("scope_compliance");
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
(0, vitest_1.it)("abandons completed result with out-of-scope modifiedPaths when rework exhausted", () => {
|
|
179
|
+
const task = makeTask();
|
|
180
|
+
const result = makeResult({
|
|
181
|
+
modifiedPaths: ["packages/other-lib/src/main.ts"],
|
|
182
|
+
verifications: [{ name: "build", status: "passed", output: "ok" }],
|
|
183
|
+
});
|
|
184
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 2);
|
|
185
|
+
(0, vitest_1.expect)(decision.type).toBe("abandon");
|
|
186
|
+
if (decision.type === "abandon") {
|
|
187
|
+
(0, vitest_1.expect)(decision.reason).toContain("Boundary violation");
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
(0, vitest_1.it)("accepts completed result with in-scope modifiedPaths", () => {
|
|
191
|
+
const task = makeTask();
|
|
192
|
+
const result = makeResult({
|
|
193
|
+
modifiedPaths: ["packages/app-runtime/src/foo.ts"],
|
|
194
|
+
verifications: [{ name: "build", status: "passed", output: "ok" }],
|
|
195
|
+
});
|
|
196
|
+
const decision = (0, aggregation_js_1.decideRework)(task, result, 2, 0);
|
|
197
|
+
(0, vitest_1.expect)(decision.type).toBe("accept");
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=aggregation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregation.test.js","sourceRoot":"","sources":["../../src/test/aggregation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|