@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.
Files changed (185) hide show
  1. package/dist/breakpoints/approvalChains.d.ts +66 -0
  2. package/dist/breakpoints/approvalChains.d.ts.map +1 -0
  3. package/dist/breakpoints/approvalChains.js +109 -0
  4. package/dist/breakpoints/index.d.ts +1 -0
  5. package/dist/breakpoints/index.d.ts.map +1 -1
  6. package/dist/breakpoints/index.js +6 -1
  7. package/dist/cli/commands/harnessPhase2.d.ts +1 -0
  8. package/dist/cli/commands/harnessPhase2.d.ts.map +1 -1
  9. package/dist/cli/commands/harnessPhase2.js +91 -13
  10. package/dist/cli/commands/harnessUtils.d.ts +11 -1
  11. package/dist/cli/commands/harnessUtils.d.ts.map +1 -1
  12. package/dist/cli/commands/harnessUtils.js +58 -1
  13. package/dist/cli/commands/instructions.d.ts.map +1 -1
  14. package/dist/cli/commands/instructions.js +37 -5
  15. package/dist/cli/commands/sessionCleanup.d.ts +39 -0
  16. package/dist/cli/commands/sessionCleanup.d.ts.map +1 -0
  17. package/dist/cli/commands/sessionCleanup.js +243 -0
  18. package/dist/cli/commands/sessionWhoami.d.ts +23 -0
  19. package/dist/cli/commands/sessionWhoami.d.ts.map +1 -0
  20. package/dist/cli/commands/sessionWhoami.js +113 -0
  21. package/dist/cli/main.d.ts.map +1 -1
  22. package/dist/cli/main.js +37 -1
  23. package/dist/config/defaults.d.ts.map +1 -1
  24. package/dist/config/defaults.js +9 -2
  25. package/dist/governance/authority.d.ts +68 -0
  26. package/dist/governance/authority.d.ts.map +1 -0
  27. package/dist/governance/authority.js +136 -0
  28. package/dist/governance/categories.d.ts +58 -0
  29. package/dist/governance/categories.d.ts.map +1 -0
  30. package/dist/governance/categories.js +120 -0
  31. package/dist/governance/decisionTrail.d.ts +60 -0
  32. package/dist/governance/decisionTrail.d.ts.map +1 -0
  33. package/dist/governance/decisionTrail.js +68 -0
  34. package/dist/governance/index.d.ts +9 -0
  35. package/dist/governance/index.d.ts.map +1 -1
  36. package/dist/governance/index.js +51 -1
  37. package/dist/governance/mandate.d.ts +83 -0
  38. package/dist/governance/mandate.d.ts.map +1 -0
  39. package/dist/governance/mandate.js +180 -0
  40. package/dist/governance/permissionEvents.d.ts +51 -0
  41. package/dist/governance/permissionEvents.d.ts.map +1 -0
  42. package/dist/governance/permissionEvents.js +52 -0
  43. package/dist/governance/permissionPropagation.d.ts +18 -0
  44. package/dist/governance/permissionPropagation.d.ts.map +1 -0
  45. package/dist/governance/permissionPropagation.js +58 -0
  46. package/dist/governance/postureBridge.d.ts +17 -0
  47. package/dist/governance/postureBridge.d.ts.map +1 -0
  48. package/dist/governance/postureBridge.js +117 -0
  49. package/dist/governance/sandboxBridge.d.ts +49 -0
  50. package/dist/governance/sandboxBridge.d.ts.map +1 -0
  51. package/dist/governance/sandboxBridge.js +77 -0
  52. package/dist/governance/sandboxPolicy.d.ts +51 -0
  53. package/dist/governance/sandboxPolicy.d.ts.map +1 -0
  54. package/dist/governance/sandboxPolicy.js +177 -0
  55. package/dist/harness/capabilityRouter.d.ts +76 -0
  56. package/dist/harness/capabilityRouter.d.ts.map +1 -0
  57. package/dist/harness/capabilityRouter.js +176 -0
  58. package/dist/harness/claudeCode.d.ts +42 -0
  59. package/dist/harness/claudeCode.d.ts.map +1 -1
  60. package/dist/harness/claudeCode.js +133 -71
  61. package/dist/harness/codex.d.ts.map +1 -1
  62. package/dist/harness/codex.js +36 -5
  63. package/dist/harness/cursor.d.ts +7 -2
  64. package/dist/harness/cursor.d.ts.map +1 -1
  65. package/dist/harness/cursor.js +27 -2
  66. package/dist/harness/customAdapter.d.ts.map +1 -1
  67. package/dist/harness/customAdapter.js +12 -1
  68. package/dist/harness/fallbackChains.d.ts +42 -0
  69. package/dist/harness/fallbackChains.d.ts.map +1 -0
  70. package/dist/harness/fallbackChains.js +69 -0
  71. package/dist/harness/geminiCli.d.ts.map +1 -1
  72. package/dist/harness/geminiCli.js +46 -15
  73. package/dist/harness/githubCopilot.d.ts +12 -0
  74. package/dist/harness/githubCopilot.d.ts.map +1 -1
  75. package/dist/harness/githubCopilot.js +74 -15
  76. package/dist/harness/hostContract.d.ts +63 -0
  77. package/dist/harness/hostContract.d.ts.map +1 -0
  78. package/dist/harness/hostContract.js +136 -0
  79. package/dist/harness/index.d.ts +5 -0
  80. package/dist/harness/index.d.ts.map +1 -1
  81. package/dist/harness/index.js +19 -1
  82. package/dist/harness/modelSelection.d.ts +37 -0
  83. package/dist/harness/modelSelection.d.ts.map +1 -0
  84. package/dist/harness/modelSelection.js +81 -0
  85. package/dist/harness/ohMyPi.d.ts.map +1 -1
  86. package/dist/harness/ohMyPi.js +11 -7
  87. package/dist/harness/pi.d.ts.map +1 -1
  88. package/dist/harness/pi.js +13 -7
  89. package/dist/harness/selectionPolicies.d.ts +29 -0
  90. package/dist/harness/selectionPolicies.d.ts.map +1 -0
  91. package/dist/harness/selectionPolicies.js +165 -0
  92. package/dist/harness/sessionMarker.d.ts +67 -0
  93. package/dist/harness/sessionMarker.d.ts.map +1 -0
  94. package/dist/harness/sessionMarker.js +407 -0
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +2 -1
  98. package/dist/observability/health.d.ts +19 -0
  99. package/dist/observability/health.d.ts.map +1 -0
  100. package/dist/observability/health.js +129 -0
  101. package/dist/observability/index.d.ts +4 -1
  102. package/dist/observability/index.d.ts.map +1 -1
  103. package/dist/observability/index.js +15 -1
  104. package/dist/observability/runStatus.d.ts +44 -0
  105. package/dist/observability/runStatus.d.ts.map +1 -0
  106. package/dist/observability/runStatus.js +170 -0
  107. package/dist/observability/types.d.ts +31 -0
  108. package/dist/observability/types.d.ts.map +1 -1
  109. package/dist/observability/types.js +3 -0
  110. package/dist/observability/webhooks.d.ts +68 -0
  111. package/dist/observability/webhooks.d.ts.map +1 -0
  112. package/dist/observability/webhooks.js +132 -0
  113. package/dist/prompts/capabilityProcessMap.d.ts +33 -0
  114. package/dist/prompts/capabilityProcessMap.d.ts.map +1 -0
  115. package/dist/prompts/capabilityProcessMap.js +105 -0
  116. package/dist/prompts/compose.d.ts.map +1 -1
  117. package/dist/prompts/compose.js +6 -0
  118. package/dist/prompts/context.d.ts.map +1 -1
  119. package/dist/prompts/context.js +13 -10
  120. package/dist/prompts/contextDetect.d.ts +64 -0
  121. package/dist/prompts/contextDetect.d.ts.map +1 -0
  122. package/dist/prompts/contextDetect.js +122 -0
  123. package/dist/prompts/index.d.ts +5 -1
  124. package/dist/prompts/index.d.ts.map +1 -1
  125. package/dist/prompts/index.js +13 -2
  126. package/dist/prompts/parts/criticalRules.js +1 -1
  127. package/dist/prompts/parts/index.d.ts +2 -0
  128. package/dist/prompts/parts/index.d.ts.map +1 -1
  129. package/dist/prompts/parts/index.js +5 -1
  130. package/dist/prompts/parts/priorityLadder.d.ts +7 -0
  131. package/dist/prompts/parts/priorityLadder.d.ts.map +1 -0
  132. package/dist/prompts/parts/priorityLadder.js +13 -0
  133. package/dist/prompts/parts/rootCauseGuardrail.d.ts +7 -0
  134. package/dist/prompts/parts/rootCauseGuardrail.d.ts.map +1 -0
  135. package/dist/prompts/parts/rootCauseGuardrail.js +13 -0
  136. package/dist/prompts/parts/runCreation.js +2 -2
  137. package/dist/prompts/strata.d.ts.map +1 -1
  138. package/dist/prompts/strata.js +2 -0
  139. package/dist/prompts/templates/coding-philosophy.md +3 -0
  140. package/dist/prompts/templates/commands/doctor.md +92 -6
  141. package/dist/prompts/templates/critical-rules.md +10 -2
  142. package/dist/prompts/templates/intent-fidelity-checks.md +15 -0
  143. package/dist/prompts/templates/priority-ladder.md +13 -0
  144. package/dist/prompts/templates/process-creation.md +62 -0
  145. package/dist/prompts/templates/process-guidelines.md +15 -0
  146. package/dist/prompts/templates/quick-reference.md +6 -0
  147. package/dist/prompts/templates/root-cause-guardrail.md +14 -0
  148. package/dist/prompts/templates/task-examples.md +106 -0
  149. package/dist/prompts/templates/tool-preferences.md +2 -0
  150. package/dist/prompts/types.d.ts +3 -0
  151. package/dist/prompts/types.d.ts.map +1 -1
  152. package/dist/runtime/index.d.ts +2 -0
  153. package/dist/runtime/index.d.ts.map +1 -1
  154. package/dist/runtime/index.js +7 -1
  155. package/dist/runtime/intrinsics/task.d.ts.map +1 -1
  156. package/dist/runtime/intrinsics/task.js +15 -17
  157. package/dist/runtime/parallelStrategies.d.ts +38 -0
  158. package/dist/runtime/parallelStrategies.d.ts.map +1 -0
  159. package/dist/runtime/parallelStrategies.js +104 -0
  160. package/dist/runtime/processPipeline.d.ts +52 -0
  161. package/dist/runtime/processPipeline.d.ts.map +1 -0
  162. package/dist/runtime/processPipeline.js +59 -0
  163. package/dist/session/continuityState.d.ts +39 -0
  164. package/dist/session/continuityState.d.ts.map +1 -0
  165. package/dist/session/continuityState.js +164 -0
  166. package/dist/session/index.d.ts +4 -0
  167. package/dist/session/index.d.ts.map +1 -1
  168. package/dist/session/index.js +17 -1
  169. package/dist/session/memoryExtraction.d.ts +65 -0
  170. package/dist/session/memoryExtraction.d.ts.map +1 -0
  171. package/dist/session/memoryExtraction.js +201 -0
  172. package/dist/storage/lock.d.ts.map +1 -1
  173. package/dist/storage/lock.js +5 -10
  174. package/dist/tasks/crud.d.ts +49 -0
  175. package/dist/tasks/crud.d.ts.map +1 -0
  176. package/dist/tasks/crud.js +173 -0
  177. package/dist/tasks/index.d.ts +1 -0
  178. package/dist/tasks/index.d.ts.map +1 -1
  179. package/dist/tasks/index.js +7 -0
  180. package/dist/tasks/types.d.ts +7 -0
  181. package/dist/tasks/types.d.ts.map +1 -1
  182. package/dist/utils/processLiveness.d.ts +9 -0
  183. package/dist/utils/processLiveness.d.ts.map +1 -0
  184. package/dist/utils/processLiveness.js +36 -0
  185. 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,EAgCjB,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;AAoE9C,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;CAC9C,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,CA0O9B;AAwOD,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,CA2sDlB"}
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
- // Silently complete — the start line already indicated the tool
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, and text streaming
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: typeof effectResult.value === "string"
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":"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"}
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
- process.stderr.write(` ${icon} ${exports.MAGENTA}${payload.effectKind}${exports.RESET} ${payload.effectTitle ?? payload.effectId}${payload.effectStatus === "error" ? ` ${exports.RED}${payload.error}${exports.RESET}` : ""}\n`);
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;AAsBH,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;AA4JD;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA6FjB"}
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"}