@a5c-ai/babysitter-sdk 0.0.188-staging.aaae75fb → 0.0.188-staging.b2dcdbb3
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/dist/breakpoints/approvalChains.d.ts +66 -0
- package/dist/breakpoints/approvalChains.d.ts.map +1 -0
- package/dist/breakpoints/approvalChains.js +109 -0
- package/dist/breakpoints/index.d.ts +1 -0
- package/dist/breakpoints/index.d.ts.map +1 -1
- package/dist/breakpoints/index.js +6 -1
- package/dist/cli/commands/harnessPhase2.d.ts +1 -0
- package/dist/cli/commands/harnessPhase2.d.ts.map +1 -1
- package/dist/cli/commands/harnessPhase2.js +91 -13
- package/dist/cli/commands/harnessUtils.d.ts +11 -1
- package/dist/cli/commands/harnessUtils.d.ts.map +1 -1
- package/dist/cli/commands/harnessUtils.js +58 -1
- package/dist/cli/commands/instructions.d.ts.map +1 -1
- package/dist/cli/commands/instructions.js +37 -5
- package/dist/cli/commands/sessionCleanup.d.ts +39 -0
- package/dist/cli/commands/sessionCleanup.d.ts.map +1 -0
- package/dist/cli/commands/sessionCleanup.js +243 -0
- package/dist/cli/commands/sessionWhoami.d.ts +23 -0
- package/dist/cli/commands/sessionWhoami.d.ts.map +1 -0
- package/dist/cli/commands/sessionWhoami.js +113 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +37 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +9 -2
- package/dist/governance/authority.d.ts +68 -0
- package/dist/governance/authority.d.ts.map +1 -0
- package/dist/governance/authority.js +136 -0
- package/dist/governance/categories.d.ts +58 -0
- package/dist/governance/categories.d.ts.map +1 -0
- package/dist/governance/categories.js +120 -0
- package/dist/governance/decisionTrail.d.ts +60 -0
- package/dist/governance/decisionTrail.d.ts.map +1 -0
- package/dist/governance/decisionTrail.js +68 -0
- package/dist/governance/index.d.ts +9 -0
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +51 -1
- package/dist/governance/mandate.d.ts +83 -0
- package/dist/governance/mandate.d.ts.map +1 -0
- package/dist/governance/mandate.js +180 -0
- package/dist/governance/permissionEvents.d.ts +51 -0
- package/dist/governance/permissionEvents.d.ts.map +1 -0
- package/dist/governance/permissionEvents.js +52 -0
- package/dist/governance/permissionPropagation.d.ts +18 -0
- package/dist/governance/permissionPropagation.d.ts.map +1 -0
- package/dist/governance/permissionPropagation.js +58 -0
- package/dist/governance/postureBridge.d.ts +17 -0
- package/dist/governance/postureBridge.d.ts.map +1 -0
- package/dist/governance/postureBridge.js +117 -0
- package/dist/governance/sandboxBridge.d.ts +49 -0
- package/dist/governance/sandboxBridge.d.ts.map +1 -0
- package/dist/governance/sandboxBridge.js +77 -0
- package/dist/governance/sandboxPolicy.d.ts +51 -0
- package/dist/governance/sandboxPolicy.d.ts.map +1 -0
- package/dist/governance/sandboxPolicy.js +177 -0
- package/dist/harness/capabilityRouter.d.ts +76 -0
- package/dist/harness/capabilityRouter.d.ts.map +1 -0
- package/dist/harness/capabilityRouter.js +176 -0
- package/dist/harness/claudeCode.d.ts +42 -0
- package/dist/harness/claudeCode.d.ts.map +1 -1
- package/dist/harness/claudeCode.js +133 -71
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +36 -5
- package/dist/harness/cursor.d.ts +7 -2
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +27 -2
- package/dist/harness/customAdapter.d.ts.map +1 -1
- package/dist/harness/customAdapter.js +12 -1
- package/dist/harness/fallbackChains.d.ts +42 -0
- package/dist/harness/fallbackChains.d.ts.map +1 -0
- package/dist/harness/fallbackChains.js +69 -0
- package/dist/harness/geminiCli.d.ts.map +1 -1
- package/dist/harness/geminiCli.js +46 -15
- package/dist/harness/githubCopilot.d.ts +12 -0
- package/dist/harness/githubCopilot.d.ts.map +1 -1
- package/dist/harness/githubCopilot.js +74 -15
- package/dist/harness/hostContract.d.ts +63 -0
- package/dist/harness/hostContract.d.ts.map +1 -0
- package/dist/harness/hostContract.js +136 -0
- package/dist/harness/index.d.ts +5 -0
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +19 -1
- package/dist/harness/modelSelection.d.ts +37 -0
- package/dist/harness/modelSelection.d.ts.map +1 -0
- package/dist/harness/modelSelection.js +81 -0
- package/dist/harness/ohMyPi.d.ts.map +1 -1
- package/dist/harness/ohMyPi.js +11 -7
- package/dist/harness/pi.d.ts.map +1 -1
- package/dist/harness/pi.js +13 -7
- package/dist/harness/selectionPolicies.d.ts +29 -0
- package/dist/harness/selectionPolicies.d.ts.map +1 -0
- package/dist/harness/selectionPolicies.js +165 -0
- package/dist/harness/sessionMarker.d.ts +67 -0
- package/dist/harness/sessionMarker.d.ts.map +1 -0
- package/dist/harness/sessionMarker.js +407 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/observability/health.d.ts +19 -0
- package/dist/observability/health.d.ts.map +1 -0
- package/dist/observability/health.js +129 -0
- package/dist/observability/index.d.ts +4 -1
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +15 -1
- package/dist/observability/runStatus.d.ts +44 -0
- package/dist/observability/runStatus.d.ts.map +1 -0
- package/dist/observability/runStatus.js +170 -0
- package/dist/observability/types.d.ts +31 -0
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js +3 -0
- package/dist/observability/webhooks.d.ts +68 -0
- package/dist/observability/webhooks.d.ts.map +1 -0
- package/dist/observability/webhooks.js +132 -0
- package/dist/prompts/capabilityProcessMap.d.ts +33 -0
- package/dist/prompts/capabilityProcessMap.d.ts.map +1 -0
- package/dist/prompts/capabilityProcessMap.js +105 -0
- package/dist/prompts/compose.d.ts.map +1 -1
- package/dist/prompts/compose.js +6 -0
- package/dist/prompts/context.d.ts.map +1 -1
- package/dist/prompts/context.js +13 -10
- package/dist/prompts/contextDetect.d.ts +64 -0
- package/dist/prompts/contextDetect.d.ts.map +1 -0
- package/dist/prompts/contextDetect.js +122 -0
- package/dist/prompts/index.d.ts +5 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +13 -2
- package/dist/prompts/parts/criticalRules.js +1 -1
- package/dist/prompts/parts/index.d.ts +2 -0
- package/dist/prompts/parts/index.d.ts.map +1 -1
- package/dist/prompts/parts/index.js +5 -1
- package/dist/prompts/parts/priorityLadder.d.ts +7 -0
- package/dist/prompts/parts/priorityLadder.d.ts.map +1 -0
- package/dist/prompts/parts/priorityLadder.js +13 -0
- package/dist/prompts/parts/rootCauseGuardrail.d.ts +7 -0
- package/dist/prompts/parts/rootCauseGuardrail.d.ts.map +1 -0
- package/dist/prompts/parts/rootCauseGuardrail.js +13 -0
- package/dist/prompts/parts/runCreation.js +2 -2
- package/dist/prompts/strata.d.ts.map +1 -1
- package/dist/prompts/strata.js +2 -0
- package/dist/prompts/templates/coding-philosophy.md +3 -0
- package/dist/prompts/templates/commands/doctor.md +92 -6
- package/dist/prompts/templates/critical-rules.md +10 -2
- package/dist/prompts/templates/intent-fidelity-checks.md +15 -0
- package/dist/prompts/templates/priority-ladder.md +13 -0
- package/dist/prompts/templates/process-creation.md +62 -0
- package/dist/prompts/templates/process-guidelines.md +15 -0
- package/dist/prompts/templates/quick-reference.md +6 -0
- package/dist/prompts/templates/root-cause-guardrail.md +14 -0
- package/dist/prompts/templates/task-examples.md +106 -0
- package/dist/prompts/templates/tool-preferences.md +2 -0
- package/dist/prompts/types.d.ts +3 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +7 -1
- package/dist/runtime/intrinsics/task.d.ts.map +1 -1
- package/dist/runtime/intrinsics/task.js +15 -17
- package/dist/runtime/parallelStrategies.d.ts +38 -0
- package/dist/runtime/parallelStrategies.d.ts.map +1 -0
- package/dist/runtime/parallelStrategies.js +104 -0
- package/dist/runtime/processPipeline.d.ts +52 -0
- package/dist/runtime/processPipeline.d.ts.map +1 -0
- package/dist/runtime/processPipeline.js +59 -0
- package/dist/session/continuityState.d.ts +39 -0
- package/dist/session/continuityState.d.ts.map +1 -0
- package/dist/session/continuityState.js +164 -0
- package/dist/session/index.d.ts +4 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +17 -1
- package/dist/session/memoryExtraction.d.ts +65 -0
- package/dist/session/memoryExtraction.d.ts.map +1 -0
- package/dist/session/memoryExtraction.js +201 -0
- package/dist/storage/lock.d.ts.map +1 -1
- package/dist/storage/lock.js +5 -10
- package/dist/tasks/crud.d.ts +49 -0
- package/dist/tasks/crud.d.ts.map +1 -0
- package/dist/tasks/crud.js +173 -0
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +7 -0
- package/dist/tasks/types.d.ts +7 -0
- package/dist/tasks/types.d.ts.map +1 -1
- package/dist/utils/processLiveness.d.ts +9 -0
- package/dist/utils/processLiveness.d.ts.map +1 -0
- package/dist/utils/processLiveness.js +36 -0
- package/package.json +2 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAP-BRK-001: Breakpoint Approval Chains.
|
|
3
|
+
*
|
|
4
|
+
* Multi-stage approval chains for breakpoints. Define approval
|
|
5
|
+
* sequences (e.g., reviewer then approver), quorum rules,
|
|
6
|
+
* and escalation paths. Pure functions, no I/O.
|
|
7
|
+
*/
|
|
8
|
+
export interface ApprovalChainStep {
|
|
9
|
+
stepId: string;
|
|
10
|
+
expert: string | string[];
|
|
11
|
+
label: string;
|
|
12
|
+
tags?: string[];
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
escalateTo?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface QuorumConfig {
|
|
17
|
+
experts: string[];
|
|
18
|
+
required: number;
|
|
19
|
+
strategy: "first-response-wins" | "collect-all" | "quorum";
|
|
20
|
+
}
|
|
21
|
+
export interface ApprovalChainDefinition {
|
|
22
|
+
chainId: string;
|
|
23
|
+
steps: ApprovalChainStep[];
|
|
24
|
+
quorum?: QuorumConfig;
|
|
25
|
+
}
|
|
26
|
+
export interface CompletedChainStep {
|
|
27
|
+
stepId: string;
|
|
28
|
+
approved: boolean;
|
|
29
|
+
respondedBy?: string;
|
|
30
|
+
response?: string;
|
|
31
|
+
completedAt: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ApprovalChainState {
|
|
34
|
+
chainId: string;
|
|
35
|
+
currentStepIndex: number;
|
|
36
|
+
completedSteps: CompletedChainStep[];
|
|
37
|
+
status: "pending" | "approved" | "rejected" | "escalated";
|
|
38
|
+
startedAt: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ChainEvaluationResult {
|
|
41
|
+
status: "approved" | "rejected" | "pending" | "escalated";
|
|
42
|
+
nextStep: ApprovalChainStep | undefined;
|
|
43
|
+
escalationTarget: ApprovalChainStep | undefined;
|
|
44
|
+
completedSteps: CompletedChainStep[];
|
|
45
|
+
reason: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create initial chain state at step 0.
|
|
49
|
+
*/
|
|
50
|
+
export declare function initChainState(chainId: string): ApprovalChainState;
|
|
51
|
+
/**
|
|
52
|
+
* Advance chain state by appending a completed step result.
|
|
53
|
+
* Returns new state (does not mutate input).
|
|
54
|
+
*/
|
|
55
|
+
export declare function advanceChainStep(state: ApprovalChainState, stepResult: CompletedChainStep): ApprovalChainState;
|
|
56
|
+
/**
|
|
57
|
+
* Evaluate the current state of an approval chain.
|
|
58
|
+
* Determines next step, checks for rejections, and handles quorum logic.
|
|
59
|
+
*/
|
|
60
|
+
export declare function evaluateApprovalChain(chain: ApprovalChainDefinition, state: ApprovalChainState): ChainEvaluationResult;
|
|
61
|
+
/**
|
|
62
|
+
* Resolve escalation path from a given step.
|
|
63
|
+
* Returns the target step definition, or undefined if no escalation configured.
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveEscalationPath(chain: ApprovalChainDefinition, fromStepId: string): ApprovalChainStep | undefined;
|
|
66
|
+
//# sourceMappingURL=approvalChains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalChains.d.ts","sourceRoot":"","sources":["../../src/breakpoints/approvalChains.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,qBAAqB,GAAG,aAAa,GAAG,QAAQ,CAAC;CAC5D;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IAC1D,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAChD,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAQlE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,kBAAkB,GAC7B,kBAAkB,CAMpB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,kBAAkB,GACxB,qBAAqB,CA2DvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,uBAAuB,EAC9B,UAAU,EAAE,MAAM,GACjB,iBAAiB,GAAG,SAAS,CAK/B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GAP-BRK-001: Breakpoint Approval Chains.
|
|
4
|
+
*
|
|
5
|
+
* Multi-stage approval chains for breakpoints. Define approval
|
|
6
|
+
* sequences (e.g., reviewer then approver), quorum rules,
|
|
7
|
+
* and escalation paths. Pure functions, no I/O.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.initChainState = initChainState;
|
|
11
|
+
exports.advanceChainStep = advanceChainStep;
|
|
12
|
+
exports.evaluateApprovalChain = evaluateApprovalChain;
|
|
13
|
+
exports.resolveEscalationPath = resolveEscalationPath;
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Public API
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
/**
|
|
18
|
+
* Create initial chain state at step 0.
|
|
19
|
+
*/
|
|
20
|
+
function initChainState(chainId) {
|
|
21
|
+
return {
|
|
22
|
+
chainId,
|
|
23
|
+
currentStepIndex: 0,
|
|
24
|
+
completedSteps: [],
|
|
25
|
+
status: "pending",
|
|
26
|
+
startedAt: new Date().toISOString(),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Advance chain state by appending a completed step result.
|
|
31
|
+
* Returns new state (does not mutate input).
|
|
32
|
+
*/
|
|
33
|
+
function advanceChainStep(state, stepResult) {
|
|
34
|
+
return {
|
|
35
|
+
...state,
|
|
36
|
+
currentStepIndex: state.currentStepIndex + 1,
|
|
37
|
+
completedSteps: [...state.completedSteps, stepResult],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate the current state of an approval chain.
|
|
42
|
+
* Determines next step, checks for rejections, and handles quorum logic.
|
|
43
|
+
*/
|
|
44
|
+
function evaluateApprovalChain(chain, state) {
|
|
45
|
+
const { completedSteps } = state;
|
|
46
|
+
// Check for any rejection — short-circuit
|
|
47
|
+
const rejected = completedSteps.find((s) => !s.approved);
|
|
48
|
+
if (rejected) {
|
|
49
|
+
return {
|
|
50
|
+
status: "rejected",
|
|
51
|
+
nextStep: undefined,
|
|
52
|
+
escalationTarget: undefined,
|
|
53
|
+
completedSteps,
|
|
54
|
+
reason: `Step '${rejected.stepId}' was rejected`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// Handle quorum logic
|
|
58
|
+
if (chain.quorum) {
|
|
59
|
+
const approvalCount = completedSteps.filter((s) => s.approved).length;
|
|
60
|
+
if (approvalCount >= chain.quorum.required) {
|
|
61
|
+
return {
|
|
62
|
+
status: "approved",
|
|
63
|
+
nextStep: undefined,
|
|
64
|
+
escalationTarget: undefined,
|
|
65
|
+
completedSteps,
|
|
66
|
+
reason: `Quorum met: ${approvalCount}/${chain.quorum.required} approvals`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Quorum not yet met — still pending
|
|
70
|
+
const nextStep = chain.steps[Math.min(state.currentStepIndex, chain.steps.length - 1)];
|
|
71
|
+
return {
|
|
72
|
+
status: "pending",
|
|
73
|
+
nextStep,
|
|
74
|
+
escalationTarget: undefined,
|
|
75
|
+
completedSteps,
|
|
76
|
+
reason: `Quorum pending: ${approvalCount}/${chain.quorum.required} approvals`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// Sequential chain: check if all steps completed
|
|
80
|
+
if (state.currentStepIndex >= chain.steps.length) {
|
|
81
|
+
// All steps completed and all approved (rejections caught above)
|
|
82
|
+
return {
|
|
83
|
+
status: "approved",
|
|
84
|
+
nextStep: undefined,
|
|
85
|
+
escalationTarget: undefined,
|
|
86
|
+
completedSteps,
|
|
87
|
+
reason: `All ${chain.steps.length} steps approved`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// More steps to go
|
|
91
|
+
const nextStep = chain.steps[state.currentStepIndex];
|
|
92
|
+
return {
|
|
93
|
+
status: "pending",
|
|
94
|
+
nextStep,
|
|
95
|
+
escalationTarget: undefined,
|
|
96
|
+
completedSteps,
|
|
97
|
+
reason: `Pending step '${nextStep.stepId}' (${state.currentStepIndex + 1}/${chain.steps.length})`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Resolve escalation path from a given step.
|
|
102
|
+
* Returns the target step definition, or undefined if no escalation configured.
|
|
103
|
+
*/
|
|
104
|
+
function resolveEscalationPath(chain, fromStepId) {
|
|
105
|
+
const fromStep = chain.steps.find((s) => s.stepId === fromStepId);
|
|
106
|
+
if (!fromStep?.escalateTo)
|
|
107
|
+
return undefined;
|
|
108
|
+
return chain.steps.find((s) => s.stepId === fromStep.escalateTo);
|
|
109
|
+
}
|
|
@@ -8,4 +8,5 @@ export { DEFAULT_POSTURES, getPostureForCategory, resolvePostureFromBreakpointId
|
|
|
8
8
|
export { evaluateDelegation, sendDelegationWebhook, addDelegationRule, removeDelegationRule, listDelegationRules, delegateBreakpoint, } from "./delegation";
|
|
9
9
|
export type { DelegationRule, DelegationRulesFile, DelegationPayload, DelegationSendOptions, DelegationResponse, } from "./delegationTypes";
|
|
10
10
|
export { DELEGATION_RULES_SCHEMA_VERSION, DEFAULT_DELEGATION_TIMEOUT_MS } from "./delegationTypes";
|
|
11
|
+
export { evaluateApprovalChain, advanceChainStep, initChainState, resolveEscalationPath, type ApprovalChainStep, type ApprovalChainDefinition, type QuorumConfig, type ApprovalChainState, type CompletedChainStep, type ChainEvaluationResult, } from "./approvalChains";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/breakpoints/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/breakpoints/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_DELEGATION_TIMEOUT_MS = exports.DELEGATION_RULES_SCHEMA_VERSION = exports.delegateBreakpoint = exports.listDelegationRules = exports.removeDelegationRule = exports.addDelegationRule = exports.sendDelegationWebhook = exports.evaluateDelegation = exports.resolvePostureFromBreakpointId = exports.getPostureForCategory = exports.DEFAULT_POSTURES = exports.evaluateAutoApproval = exports.listRules = exports.removeRule = exports.addRule = exports.writeRules = exports.readRules = exports.matchPattern = exports.parsePattern = exports.BREAKPOINT_RULES_SCHEMA_VERSION = void 0;
|
|
3
|
+
exports.resolveEscalationPath = exports.initChainState = exports.advanceChainStep = exports.evaluateApprovalChain = exports.DEFAULT_DELEGATION_TIMEOUT_MS = exports.DELEGATION_RULES_SCHEMA_VERSION = exports.delegateBreakpoint = exports.listDelegationRules = exports.removeDelegationRule = exports.addDelegationRule = exports.sendDelegationWebhook = exports.evaluateDelegation = exports.resolvePostureFromBreakpointId = exports.getPostureForCategory = exports.DEFAULT_POSTURES = exports.evaluateAutoApproval = exports.listRules = exports.removeRule = exports.addRule = exports.writeRules = exports.readRules = exports.matchPattern = exports.parsePattern = exports.BREAKPOINT_RULES_SCHEMA_VERSION = void 0;
|
|
4
4
|
var types_1 = require("./types");
|
|
5
5
|
Object.defineProperty(exports, "BREAKPOINT_RULES_SCHEMA_VERSION", { enumerable: true, get: function () { return types_1.BREAKPOINT_RULES_SCHEMA_VERSION; } });
|
|
6
6
|
var patterns_1 = require("./patterns");
|
|
@@ -28,3 +28,8 @@ Object.defineProperty(exports, "delegateBreakpoint", { enumerable: true, get: fu
|
|
|
28
28
|
var delegationTypes_1 = require("./delegationTypes");
|
|
29
29
|
Object.defineProperty(exports, "DELEGATION_RULES_SCHEMA_VERSION", { enumerable: true, get: function () { return delegationTypes_1.DELEGATION_RULES_SCHEMA_VERSION; } });
|
|
30
30
|
Object.defineProperty(exports, "DEFAULT_DELEGATION_TIMEOUT_MS", { enumerable: true, get: function () { return delegationTypes_1.DEFAULT_DELEGATION_TIMEOUT_MS; } });
|
|
31
|
+
var approvalChains_1 = require("./approvalChains");
|
|
32
|
+
Object.defineProperty(exports, "evaluateApprovalChain", { enumerable: true, get: function () { return approvalChains_1.evaluateApprovalChain; } });
|
|
33
|
+
Object.defineProperty(exports, "advanceChainStep", { enumerable: true, get: function () { return approvalChains_1.advanceChainStep; } });
|
|
34
|
+
Object.defineProperty(exports, "initChainState", { enumerable: true, get: function () { return approvalChains_1.initChainState; } });
|
|
35
|
+
Object.defineProperty(exports, "resolveEscalationPath", { enumerable: true, get: function () { return approvalChains_1.resolveEscalationPath; } });
|
|
@@ -26,6 +26,7 @@ export declare function resolveEffect(action: EffectAction, harnessName: string,
|
|
|
26
26
|
model?: string;
|
|
27
27
|
interactive?: boolean;
|
|
28
28
|
compressionConfig?: CompressionConfig | null;
|
|
29
|
+
streaming?: import("../../harness/types").StreamingOutputOptions;
|
|
29
30
|
}, piSession?: PiSessionHandle | null, discovered?: HarnessDiscoveryResult[], rl?: readline.Interface | null, json?: boolean, askUserQuestionHandler?: ((params: unknown) => Promise<unknown>) | null): Promise<ResolveEffectResult>;
|
|
30
31
|
export declare function runOrchestrationPhase(args: {
|
|
31
32
|
processPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harnessPhase2.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/harnessPhase2.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAoB1C,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAI3B,KAAK,oBAAoB,IAAI,0BAA0B,EACvD,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"harnessPhase2.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/harnessPhase2.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAoB1C,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAI3B,KAAK,oBAAoB,IAAI,0BAA0B,EACvD,KAAK,YAAY,EAkCjB,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAQxB;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAiH9C,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAClE,EACD,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,EAClC,UAAU,CAAC,EAAE,sBAAsB,EAAE,EACrC,EAAE,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,EAC9B,IAAI,CAAC,EAAE,OAAO,EACd,sBAAsB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GACtE,OAAO,CAAC,mBAAmB,CAAC,CA2O9B;AAyOD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,EAAE,EAAE,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,aAAa,EAAE,0BAA0B,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,gBAAgB,EAAE,UAAU,CAAC;CAClD,GAAG,OAAO,CAAC,MAAM,CAAC,CA8vDlB"}
|
|
@@ -90,16 +90,34 @@ function subscribeVerbosePiEvents(session, label, opts) {
|
|
|
90
90
|
// We subscribe *after* the session is initialized. If it isn't initialized
|
|
91
91
|
// yet, the caller will call initialize() and this subscription will fire
|
|
92
92
|
// once events start flowing.
|
|
93
|
+
// Track text accumulation for showing snippets of assistant thinking/output
|
|
94
|
+
let textBuffer = "";
|
|
95
|
+
let lastTextFlush = 0;
|
|
96
|
+
const TEXT_FLUSH_INTERVAL_MS = 2000; // Show a snippet every 2s during streaming
|
|
97
|
+
const TEXT_SNIPPET_LENGTH = 120;
|
|
93
98
|
try {
|
|
94
99
|
return session.subscribe((event) => {
|
|
95
100
|
const t = event.type;
|
|
96
101
|
// Tool and agent lifecycle events are shown by default for visibility
|
|
97
102
|
if (t === "tool_execution_start") {
|
|
103
|
+
// Flush any pending text before tool call
|
|
104
|
+
if (textBuffer.trim()) {
|
|
105
|
+
const snippet = textBuffer.trim().slice(0, TEXT_SNIPPET_LENGTH);
|
|
106
|
+
process.stderr.write(` ${harnessUtils_1.DIM}${snippet}${snippet.length < textBuffer.trim().length ? "..." : ""}${harnessUtils_1.RESET}\n`);
|
|
107
|
+
textBuffer = "";
|
|
108
|
+
}
|
|
98
109
|
const name = event.name ?? event.toolName ?? "unknown";
|
|
99
110
|
process.stderr.write(` ${harnessUtils_1.DIM}tool ${harnessUtils_1.CYAN}${name}${harnessUtils_1.RESET}${harnessUtils_1.DIM}...${harnessUtils_1.RESET}\n`);
|
|
100
111
|
}
|
|
101
112
|
else if (t === "tool_execution_end") {
|
|
102
|
-
|
|
113
|
+
const result = event.result
|
|
114
|
+
?? event.output;
|
|
115
|
+
if (result && typeof result === "string") {
|
|
116
|
+
const snippet = result.trim().slice(0, TEXT_SNIPPET_LENGTH);
|
|
117
|
+
if (snippet) {
|
|
118
|
+
process.stderr.write(` ${harnessUtils_1.DIM} → ${snippet}${snippet.length < result.trim().length ? "..." : ""}${harnessUtils_1.RESET}\n`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
103
121
|
}
|
|
104
122
|
else if (t === "agent_start") {
|
|
105
123
|
const agentName = event.name ?? event.agentName;
|
|
@@ -109,14 +127,45 @@ function subscribeVerbosePiEvents(session, label, opts) {
|
|
|
109
127
|
else if (t === "agent_end") {
|
|
110
128
|
// Silently complete
|
|
111
129
|
}
|
|
130
|
+
else if (t === "text_delta") {
|
|
131
|
+
// Accumulate text and show periodic snippets so user sees thinking activity
|
|
132
|
+
const text = event.text;
|
|
133
|
+
if (text) {
|
|
134
|
+
textBuffer += text;
|
|
135
|
+
const now = Date.now();
|
|
136
|
+
if (opts.verbose) {
|
|
137
|
+
// Verbose mode: stream all text directly
|
|
138
|
+
process.stderr.write(text);
|
|
139
|
+
}
|
|
140
|
+
else if (now - lastTextFlush >= TEXT_FLUSH_INTERVAL_MS && textBuffer.trim().length > 20) {
|
|
141
|
+
// Default mode: show periodic snippets of what the agent is writing
|
|
142
|
+
const lines = textBuffer.trim().split("\n");
|
|
143
|
+
const lastLine = lines[lines.length - 1].trim();
|
|
144
|
+
if (lastLine.length > 10) {
|
|
145
|
+
const snippet = lastLine.slice(0, TEXT_SNIPPET_LENGTH);
|
|
146
|
+
process.stderr.write(` ${harnessUtils_1.DIM}... ${snippet}${snippet.length < lastLine.length ? "..." : ""}${harnessUtils_1.RESET}\n`);
|
|
147
|
+
}
|
|
148
|
+
textBuffer = "";
|
|
149
|
+
lastTextFlush = now;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (t === "message_end" || t === "turn_end") {
|
|
154
|
+
// Flush remaining text at message/turn boundaries
|
|
155
|
+
if (textBuffer.trim().length > 20 && !opts.verbose) {
|
|
156
|
+
const snippet = textBuffer.trim().slice(-TEXT_SNIPPET_LENGTH);
|
|
157
|
+
process.stderr.write(` ${harnessUtils_1.DIM}... ${snippet}${harnessUtils_1.RESET}\n`);
|
|
158
|
+
}
|
|
159
|
+
textBuffer = "";
|
|
160
|
+
if (opts.verbose) {
|
|
161
|
+
process.stderr.write(`${harnessUtils_1.DIM}[${label} ${t}]${harnessUtils_1.RESET}\n`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
112
164
|
else if (opts.verbose) {
|
|
113
|
-
// Verbose-only: turn lifecycle, message starts
|
|
165
|
+
// Verbose-only: turn lifecycle, message starts
|
|
114
166
|
if (t === "turn_start") {
|
|
115
167
|
process.stderr.write(`${harnessUtils_1.DIM}[${label} turn:start]${harnessUtils_1.RESET}\n`);
|
|
116
168
|
}
|
|
117
|
-
else if (t === "turn_end") {
|
|
118
|
-
process.stderr.write(`${harnessUtils_1.DIM}[${label} turn:end]${harnessUtils_1.RESET}\n`);
|
|
119
|
-
}
|
|
120
169
|
else if (t === "message_start") {
|
|
121
170
|
const role = event.role
|
|
122
171
|
?? event.message?.role ?? "";
|
|
@@ -124,11 +173,6 @@ function subscribeVerbosePiEvents(session, label, opts) {
|
|
|
124
173
|
process.stderr.write(`${harnessUtils_1.DIM}[${label} message:start] role=${role}${harnessUtils_1.RESET}\n`);
|
|
125
174
|
}
|
|
126
175
|
}
|
|
127
|
-
else if (t === "text_delta") {
|
|
128
|
-
const text = event.text;
|
|
129
|
-
if (text)
|
|
130
|
-
process.stderr.write(text);
|
|
131
|
-
}
|
|
132
176
|
}
|
|
133
177
|
// tool_execution_update and message_update are high-frequency streaming
|
|
134
178
|
// events; skip them to avoid drowning stderr.
|
|
@@ -170,6 +214,7 @@ async function resolveEffect(action, harnessName, options, piSession, discovered
|
|
|
170
214
|
prompt: effectivePrompt,
|
|
171
215
|
workspace: options.workspace,
|
|
172
216
|
model: options.model,
|
|
217
|
+
streaming: options.streaming,
|
|
173
218
|
});
|
|
174
219
|
return {
|
|
175
220
|
status: result.success ? "ok" : "error",
|
|
@@ -627,8 +672,15 @@ async function runOrchestrationPhase(args) {
|
|
|
627
672
|
}, args.json, args.verbose, args.outputMode);
|
|
628
673
|
writeVerboseData("phase2 host bind result", state.sessionBound);
|
|
629
674
|
let consecutiveProcessErrors = 0;
|
|
675
|
+
const runStartTime = Date.now();
|
|
630
676
|
while (state.iteration < args.maxIterations) {
|
|
631
677
|
state.iteration += 1;
|
|
678
|
+
(0, harnessUtils_1.emitProgress)({
|
|
679
|
+
phase: "2",
|
|
680
|
+
status: "iteration-start",
|
|
681
|
+
iteration: state.iteration,
|
|
682
|
+
elapsedMs: Date.now() - runStartTime,
|
|
683
|
+
}, args.json, args.verbose, args.outputMode);
|
|
632
684
|
const result = await orchestrateIterationWithProcessLoadRetry({
|
|
633
685
|
runDir: state.runDir,
|
|
634
686
|
writeVerbose,
|
|
@@ -651,8 +703,18 @@ async function runOrchestrationPhase(args) {
|
|
|
651
703
|
runStatus: "waiting",
|
|
652
704
|
pendingEffects: result.nextActions.length,
|
|
653
705
|
}, args.json, args.verbose, args.outputMode);
|
|
706
|
+
const iterationStartTime = Date.now();
|
|
654
707
|
for (const action of result.nextActions) {
|
|
655
708
|
const taskHarness = (0, harnessUtils_1.resolveTaskHarness)(action, args.selectedHarnessName, args.discovered);
|
|
709
|
+
(0, harnessUtils_1.emitProgress)({
|
|
710
|
+
phase: "2",
|
|
711
|
+
status: "effect-start",
|
|
712
|
+
effectId: action.effectId,
|
|
713
|
+
effectKind: action.kind,
|
|
714
|
+
effectTitle: action.taskDef?.title,
|
|
715
|
+
effectHarness: taskHarness,
|
|
716
|
+
iteration: state.iteration,
|
|
717
|
+
}, args.json, args.verbose, args.outputMode);
|
|
656
718
|
let workerSession = null;
|
|
657
719
|
let workerUnsub = null;
|
|
658
720
|
if (action.kind === "shell" || (0, harnessUtils_1.isInternalHarness)(taskHarness)) {
|
|
@@ -678,12 +740,16 @@ async function runOrchestrationPhase(args) {
|
|
|
678
740
|
workerUnsub = subscribeVerbosePiEvents(workerSession, `worker:${action.effectId.slice(-8)}`, args);
|
|
679
741
|
}
|
|
680
742
|
try {
|
|
743
|
+
const streamingCallbacks = (0, harnessUtils_1.createStreamingProgressCallbacks)((0, harnessUtils_1.resolveOutputMode)(args.json, args.outputMode), taskHarness);
|
|
744
|
+
const effectStartTime = Date.now();
|
|
681
745
|
const effectResult = await resolveEffectWithRetry(action, args.selectedHarnessName, {
|
|
682
746
|
workspace: args.workspace,
|
|
683
747
|
model: args.model,
|
|
684
748
|
interactive: args.interactive,
|
|
685
749
|
compressionConfig: args.compressionConfig,
|
|
750
|
+
streaming: streamingCallbacks,
|
|
686
751
|
}, workerSession, args.discovered, args.rl, args.json, piSessionFactory, shutdownPiSession);
|
|
752
|
+
const effectElapsedMs = Date.now() - effectStartTime;
|
|
687
753
|
await (0, commitEffectResult_1.commitEffectResult)({
|
|
688
754
|
runDir: state.runDir,
|
|
689
755
|
effectId: action.effectId,
|
|
@@ -698,6 +764,12 @@ async function runOrchestrationPhase(args) {
|
|
|
698
764
|
finishedAt: new Date().toISOString(),
|
|
699
765
|
},
|
|
700
766
|
});
|
|
767
|
+
// For shell effects, show more stdout (tail). For agents, show condensed output.
|
|
768
|
+
const outputSlice = action.kind === "shell"
|
|
769
|
+
? (effectResult.stdout ?? (typeof effectResult.value === "string" ? effectResult.value : undefined))?.slice(-1500)
|
|
770
|
+
: typeof effectResult.value === "string"
|
|
771
|
+
? effectResult.value.slice(0, 300)
|
|
772
|
+
: undefined;
|
|
701
773
|
(0, harnessUtils_1.emitProgress)({
|
|
702
774
|
phase: "2",
|
|
703
775
|
status: "effect",
|
|
@@ -705,14 +777,13 @@ async function runOrchestrationPhase(args) {
|
|
|
705
777
|
effectKind: action.kind,
|
|
706
778
|
effectTitle: action.taskDef?.title,
|
|
707
779
|
effectStatus: effectResult.status,
|
|
780
|
+
elapsedMs: effectElapsedMs,
|
|
708
781
|
error: effectResult.status === "error"
|
|
709
782
|
? (effectResult.error instanceof Error
|
|
710
783
|
? effectResult.error.message
|
|
711
784
|
: String(effectResult.error))
|
|
712
785
|
: undefined,
|
|
713
|
-
output:
|
|
714
|
-
? effectResult.value.slice(0, 200)
|
|
715
|
-
: undefined,
|
|
786
|
+
output: outputSlice,
|
|
716
787
|
}, args.json, args.verbose, args.outputMode);
|
|
717
788
|
}
|
|
718
789
|
finally {
|
|
@@ -720,6 +791,13 @@ async function runOrchestrationPhase(args) {
|
|
|
720
791
|
await shutdownPiSession(workerSession);
|
|
721
792
|
}
|
|
722
793
|
}
|
|
794
|
+
(0, harnessUtils_1.emitProgress)({
|
|
795
|
+
phase: "2",
|
|
796
|
+
status: "iteration-summary",
|
|
797
|
+
iteration: state.iteration,
|
|
798
|
+
effectsResolved: result.nextActions.length,
|
|
799
|
+
elapsedMs: Date.now() - iterationStartTime,
|
|
800
|
+
}, args.json, args.verbose, args.outputMode);
|
|
723
801
|
continue;
|
|
724
802
|
}
|
|
725
803
|
if (result.status === "completed") {
|
|
@@ -47,7 +47,7 @@ export interface Phase1Progress {
|
|
|
47
47
|
}
|
|
48
48
|
export interface Phase2Progress {
|
|
49
49
|
phase: "2";
|
|
50
|
-
status: "started" | "resuming" | "skipped-plan-only" | "run-created" | "bound" | "iteration" | "effect" | "completed" | "failed" | "process-error-recovery";
|
|
50
|
+
status: "started" | "resuming" | "skipped-plan-only" | "run-created" | "bound" | "iteration" | "iteration-start" | "effect-start" | "iteration-summary" | "effect" | "completed" | "failed" | "process-error-recovery";
|
|
51
51
|
runId?: string;
|
|
52
52
|
runDir?: string;
|
|
53
53
|
harness?: string;
|
|
@@ -65,6 +65,9 @@ export interface Phase2Progress {
|
|
|
65
65
|
processPath?: string;
|
|
66
66
|
attempt?: number;
|
|
67
67
|
maxAttempts?: number;
|
|
68
|
+
elapsedMs?: number;
|
|
69
|
+
effectsResolved?: number;
|
|
70
|
+
tokenEstimate?: number;
|
|
68
71
|
}
|
|
69
72
|
export type ProgressPayload = Phase1Progress | Phase2Progress;
|
|
70
73
|
export interface ToolResultShape {
|
|
@@ -180,6 +183,13 @@ export declare function stringifyForVerboseLog(value: unknown, maxChars?: number
|
|
|
180
183
|
export declare function writeVerboseLine(enabled: boolean, json: boolean, message: string, outputMode?: OutputMode): void;
|
|
181
184
|
export declare function writeVerboseBlock(enabled: boolean, json: boolean, label: string, value: unknown, maxChars?: number, outputMode?: OutputMode): void;
|
|
182
185
|
export declare function emitProgress(payload: ProgressPayload, json: boolean, verbose: boolean, outputMode?: OutputMode): void;
|
|
186
|
+
/** Format milliseconds as a human-readable elapsed duration. */
|
|
187
|
+
export declare function formatElapsed(ms: number): string;
|
|
188
|
+
/**
|
|
189
|
+
* Create streaming output callbacks for real-time harness CLI output relay.
|
|
190
|
+
* Returns undefined for json/tui modes (those modes don't stream to stderr).
|
|
191
|
+
*/
|
|
192
|
+
export declare function createStreamingProgressCallbacks(outputMode: OutputMode, _harnessName: string): import("../../harness/types").StreamingOutputOptions | undefined;
|
|
183
193
|
export declare function loadSessionCompressionConfig(workspace?: string): CompressionConfig | null;
|
|
184
194
|
export declare function compressInternalHarnessPrompt(text: string, compressionConfig: CompressionConfig | null | undefined, taskKind?: "agent" | "skill" | "breakpoint"): string;
|
|
185
195
|
export declare function buildPromptContext(args: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harnessUtils.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/harnessUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAI1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAML,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAI7D;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEhD,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAGpF;AAID,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,mDAAmD;AACnD,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"harnessUtils.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/harnessUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,8 @@ exports.stringifyForVerboseLog = stringifyForVerboseLog;
|
|
|
44
44
|
exports.writeVerboseLine = writeVerboseLine;
|
|
45
45
|
exports.writeVerboseBlock = writeVerboseBlock;
|
|
46
46
|
exports.emitProgress = emitProgress;
|
|
47
|
+
exports.formatElapsed = formatElapsed;
|
|
48
|
+
exports.createStreamingProgressCallbacks = createStreamingProgressCallbacks;
|
|
47
49
|
exports.loadSessionCompressionConfig = loadSessionCompressionConfig;
|
|
48
50
|
exports.compressInternalHarnessPrompt = compressInternalHarnessPrompt;
|
|
49
51
|
exports.buildPromptContext = buildPromptContext;
|
|
@@ -211,12 +213,37 @@ function emitProgress(payload, json, verbose, outputMode) {
|
|
|
211
213
|
process.stderr.write(`${exports.DIM}session bound via ${payload.harness}: ${payload.sessionId}${exports.RESET}\n`);
|
|
212
214
|
}
|
|
213
215
|
}
|
|
216
|
+
else if (payload.status === "iteration-start") {
|
|
217
|
+
const elapsed = payload.elapsedMs != null ? ` [${formatElapsed(payload.elapsedMs)}]` : "";
|
|
218
|
+
process.stderr.write(`\n${exports.DIM}-- iteration ${payload.iteration} starting...${elapsed} --${exports.RESET}\n`);
|
|
219
|
+
}
|
|
214
220
|
else if (payload.status === "iteration") {
|
|
215
221
|
process.stderr.write(`\n${exports.DIM}-- iteration ${payload.iteration} --${exports.RESET} status=${payload.runStatus} pending=${payload.pendingEffects}\n`);
|
|
216
222
|
}
|
|
223
|
+
else if (payload.status === "effect-start") {
|
|
224
|
+
const label = payload.effectTitle ?? payload.effectId ?? "unknown";
|
|
225
|
+
const via = payload.effectHarness ? ` ${exports.DIM}via ${payload.effectHarness}${exports.RESET}` : "";
|
|
226
|
+
process.stderr.write(` ${exports.CYAN}▸${exports.RESET} ${exports.MAGENTA}${payload.effectKind}${exports.RESET} ${label}${via}...\n`);
|
|
227
|
+
}
|
|
217
228
|
else if (payload.status === "effect") {
|
|
218
229
|
const icon = payload.effectStatus === "ok" ? `${exports.GREEN}✓${exports.RESET}` : `${exports.RED}✗${exports.RESET}`;
|
|
219
|
-
|
|
230
|
+
const elapsed = payload.elapsedMs != null ? ` ${exports.DIM}${formatElapsed(payload.elapsedMs)}${exports.RESET}` : "";
|
|
231
|
+
const errorSuffix = payload.effectStatus === "error" ? ` ${exports.RED}${payload.error}${exports.RESET}` : "";
|
|
232
|
+
process.stderr.write(` ${icon} ${exports.MAGENTA}${payload.effectKind}${exports.RESET} ${payload.effectTitle ?? payload.effectId}${elapsed}${errorSuffix}\n`);
|
|
233
|
+
// Show stdout tail for shell effects and condensed output for others
|
|
234
|
+
if (payload.output) {
|
|
235
|
+
const lines = payload.output.split("\n").filter((l) => l.trim());
|
|
236
|
+
const tail = lines.slice(-5);
|
|
237
|
+
for (const line of tail) {
|
|
238
|
+
const trimmed = line.length > 160 ? line.slice(0, 160) + "..." : line;
|
|
239
|
+
process.stderr.write(` ${exports.DIM}${trimmed}${exports.RESET}\n`);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else if (payload.status === "iteration-summary") {
|
|
244
|
+
const elapsed = payload.elapsedMs != null ? formatElapsed(payload.elapsedMs) : "?";
|
|
245
|
+
const tokens = payload.tokenEstimate != null ? ` | ~${payload.tokenEstimate} tokens` : "";
|
|
246
|
+
process.stderr.write(` ${exports.DIM}${payload.effectsResolved ?? 0} effect(s) resolved in ${elapsed}${tokens}${exports.RESET}\n`);
|
|
220
247
|
}
|
|
221
248
|
else if (payload.status === "completed") {
|
|
222
249
|
process.stderr.write(`\n${exports.GREEN}${exports.BOLD}Run completed${exports.RESET} ${exports.DIM}(${payload.iteration} iterations)${exports.RESET}\n`);
|
|
@@ -227,6 +254,36 @@ function emitProgress(payload, json, verbose, outputMode) {
|
|
|
227
254
|
break;
|
|
228
255
|
}
|
|
229
256
|
}
|
|
257
|
+
// ── Progress Helpers ────────────────────────────────────────────────
|
|
258
|
+
/** Format milliseconds as a human-readable elapsed duration. */
|
|
259
|
+
function formatElapsed(ms) {
|
|
260
|
+
if (ms < 1000)
|
|
261
|
+
return "<1s";
|
|
262
|
+
const totalSec = Math.floor(ms / 1000);
|
|
263
|
+
if (totalSec < 60)
|
|
264
|
+
return `${totalSec}s`;
|
|
265
|
+
const min = Math.floor(totalSec / 60);
|
|
266
|
+
const sec = totalSec % 60;
|
|
267
|
+
return `${min}m ${sec}s`;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create streaming output callbacks for real-time harness CLI output relay.
|
|
271
|
+
* Returns undefined for json/tui modes (those modes don't stream to stderr).
|
|
272
|
+
*/
|
|
273
|
+
function createStreamingProgressCallbacks(outputMode, _harnessName) {
|
|
274
|
+
const mode = outputMode;
|
|
275
|
+
if (mode !== "cli")
|
|
276
|
+
return undefined;
|
|
277
|
+
const MAX_LINE_LENGTH = 200;
|
|
278
|
+
return {
|
|
279
|
+
onLine: (line) => {
|
|
280
|
+
const trimmed = line.length > MAX_LINE_LENGTH
|
|
281
|
+
? line.slice(0, MAX_LINE_LENGTH) + "..."
|
|
282
|
+
: line;
|
|
283
|
+
process.stderr.write(`${exports.DIM} | ${trimmed}${exports.RESET}\n`);
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
}
|
|
230
287
|
// ── Compression ──────────────────────────────────────────────────────
|
|
231
288
|
function loadSessionCompressionConfig(workspace) {
|
|
232
289
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0BH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,eAAe,GAAG,gBAAgB,GAAG,aAAa,GAAG,qBAAqB,CAAC;IACvF,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA+JD;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA2HjB"}
|