mewkit 1.8.2 → 1.8.3

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 (37) hide show
  1. package/dist/orchviz/constants.d.ts +11 -0
  2. package/dist/orchviz/constants.d.ts.map +1 -1
  3. package/dist/orchviz/constants.js +12 -0
  4. package/dist/orchviz/constants.js.map +1 -1
  5. package/dist/orchviz/parser/handle-system.d.ts +22 -0
  6. package/dist/orchviz/parser/handle-system.d.ts.map +1 -0
  7. package/dist/orchviz/parser/handle-system.js +99 -0
  8. package/dist/orchviz/parser/handle-system.js.map +1 -0
  9. package/dist/orchviz/parser/handle-text.d.ts.map +1 -1
  10. package/dist/orchviz/parser/handle-text.js +47 -0
  11. package/dist/orchviz/parser/handle-text.js.map +1 -1
  12. package/dist/orchviz/parser/handle-tool-result.d.ts.map +1 -1
  13. package/dist/orchviz/parser/handle-tool-result.js +73 -0
  14. package/dist/orchviz/parser/handle-tool-result.js.map +1 -1
  15. package/dist/orchviz/parser/handle-tool-use.d.ts.map +1 -1
  16. package/dist/orchviz/parser/handle-tool-use.js +79 -2
  17. package/dist/orchviz/parser/handle-tool-use.js.map +1 -1
  18. package/dist/orchviz/parser/index.d.ts.map +1 -1
  19. package/dist/orchviz/parser/index.js +7 -0
  20. package/dist/orchviz/parser/index.js.map +1 -1
  21. package/dist/orchviz/permission-detection.d.ts +15 -1
  22. package/dist/orchviz/permission-detection.d.ts.map +1 -1
  23. package/dist/orchviz/permission-detection.js +56 -2
  24. package/dist/orchviz/permission-detection.js.map +1 -1
  25. package/dist/orchviz/protocol.d.ts +48 -1
  26. package/dist/orchviz/protocol.d.ts.map +1 -1
  27. package/dist/orchviz/protocol.js.map +1 -1
  28. package/dist/orchviz/server/sse-handler.d.ts +3 -0
  29. package/dist/orchviz/server/sse-handler.d.ts.map +1 -1
  30. package/dist/orchviz/server/sse-handler.js +90 -1
  31. package/dist/orchviz/server/sse-handler.js.map +1 -1
  32. package/dist/orchviz/subagent-watcher.d.ts.map +1 -1
  33. package/dist/orchviz/subagent-watcher.js +2 -1
  34. package/dist/orchviz/subagent-watcher.js.map +1 -1
  35. package/dist/orchviz-web/index.css +1 -1
  36. package/dist/orchviz-web/index.js +16 -14
  37. package/package.json +1 -1
@@ -44,6 +44,17 @@ export declare const PATTERN_TOOLS: readonly ["Glob", "Grep"];
44
44
  export declare const SUBAGENT_ID_SUFFIX_LENGTH = 6;
45
45
  export declare function generateSubagentFallbackName(id: string, index: number): string;
46
46
  export declare function resolveSubagentChildName(input: Record<string, unknown>): string;
47
+ /** Maximum bytes for detail.plan preview (truncated server-side). */
48
+ export declare const PLAN_PREVIEW_MAX = 2048;
49
+ /** Hard cap for permission_request heuristic; emit pause_cleared even without tool_result. */
50
+ export declare const PERMISSION_HEURISTIC_MAX_MS = 60000;
51
+ /**
52
+ * Minimum pause duration to surface in the UI (debounce — used by sse-handler in phase-06).
53
+ * Do NOT redeclare locally in phase-06; import from here.
54
+ */
55
+ export declare const PAUSE_MIN_DURATION_MS = 200;
56
+ /** Safety cap for hook_blocked pause; parser cleanup clears after this. */
57
+ export declare const HOOK_BLOCKED_MAX_MS = 300000;
47
58
  export declare const BIND_HOST = "127.0.0.1";
48
59
  export declare const MAX_SSE_BUFFER = 200;
49
60
  export declare const SSE_HEARTBEAT_MS = 30000;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/orchviz/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,qBAAqB,QAAgB,CAAC;AACnD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAI5C,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,uBAAuB,QAAwB,CAAC;AAC7D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAC5D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAIxC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAI9C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,eAAO,MAAM,UAAU,oDAAqD,CAAC;AAC7E,eAAO,MAAM,aAAa,2BAA4B,CAAC;AAEvD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE/E;AAID,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAExC,eAAO,MAAM,uBAAuB,yHAM1B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/orchviz/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,qBAAqB,QAAgB,CAAC;AACnD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,oBAAoB,QAAU,CAAC;AAI5C,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,UAAU,MAAM,CAAC;AAC9B,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,uBAAuB,QAAwB,CAAC;AAC7D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAC5D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,QAAQ,KAAK,CAAC;AAC3B,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAIxC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAI9C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,eAAO,MAAM,UAAU,oDAAqD,CAAC;AAC7E,eAAO,MAAM,aAAa,2BAA4B,CAAC;AAEvD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE/E;AAID,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAI3C,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAExC,eAAO,MAAM,uBAAuB,yHAM1B,CAAC"}
@@ -52,6 +52,18 @@ export function generateSubagentFallbackName(id, index) {
52
52
  export function resolveSubagentChildName(input) {
53
53
  return String(input.description || input.subagent_type || "subagent").slice(0, CHILD_NAME_MAX);
54
54
  }
55
+ // ─── Pause detection ────────────────────────────────────────────────────────
56
+ /** Maximum bytes for detail.plan preview (truncated server-side). */
57
+ export const PLAN_PREVIEW_MAX = 2048;
58
+ /** Hard cap for permission_request heuristic; emit pause_cleared even without tool_result. */
59
+ export const PERMISSION_HEURISTIC_MAX_MS = 60_000;
60
+ /**
61
+ * Minimum pause duration to surface in the UI (debounce — used by sse-handler in phase-06).
62
+ * Do NOT redeclare locally in phase-06; import from here.
63
+ */
64
+ export const PAUSE_MIN_DURATION_MS = 200;
65
+ /** Safety cap for hook_blocked pause; parser cleanup clears after this. */
66
+ export const HOOK_BLOCKED_MAX_MS = 300_000;
55
67
  // ─── HTTP/SSE server ────────────────────────────────────────────────────────
56
68
  export const BIND_HOST = "127.0.0.1";
57
69
  export const MAX_SSE_BUFFER = 200;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/orchviz/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/orchviz/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * system JSONL entry handler — consumes stop_hook_summary with preventedContinuation=true
3
+ * and emits pause_started{hook_blocked}.
4
+ *
5
+ * STABILITY NOTE: system.subtype "stop_hook_summary", preventedContinuation, hookInfos[],
6
+ * and stopReason are observed in real transcripts but are NOT in any official Claude Code
7
+ * docs. All field accesses are null-guarded; unknown shapes silently no-op.
8
+ *
9
+ * Phase-02 — new file.
10
+ */
11
+ import type { TranscriptParser } from "./index.js";
12
+ export declare function handleSystemEntry(parser: TranscriptParser, parsed: Record<string, unknown>, sessionId?: string, agentName?: string): void;
13
+ type PauseRecordEntry = {
14
+ reason: string;
15
+ toolUseId?: string;
16
+ startedAt: number;
17
+ };
18
+ export declare function _getPendingHookBlocks(parser: TranscriptParser): Set<string>;
19
+ export declare function _getPendingRejections(parser: TranscriptParser): Set<string>;
20
+ export declare function _getPauseRecord(parser: TranscriptParser): Map<string, PauseRecordEntry>;
21
+ export {};
22
+ //# sourceMappingURL=handle-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-system.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-system.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAenD,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CAmEN;AAOD,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAMlF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,CAO3E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC,CAO3E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAOvF"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * system JSONL entry handler — consumes stop_hook_summary with preventedContinuation=true
3
+ * and emits pause_started{hook_blocked}.
4
+ *
5
+ * STABILITY NOTE: system.subtype "stop_hook_summary", preventedContinuation, hookInfos[],
6
+ * and stopReason are observed in real transcripts but are NOT in any official Claude Code
7
+ * docs. All field accesses are null-guarded; unknown shapes silently no-op.
8
+ *
9
+ * Phase-02 — new file.
10
+ */
11
+ import { HOOK_BLOCKED_MAX_MS } from "../constants.js";
12
+ export function handleSystemEntry(parser, parsed, sessionId, agentName) {
13
+ const entry = parsed;
14
+ if (entry.subtype !== "stop_hook_summary")
15
+ return;
16
+ if (entry.preventedContinuation !== true)
17
+ return;
18
+ // Use the provided agentName (passed from processTranscriptLine) so that the
19
+ // pending hook block key matches the compound key used in handle-text.ts clear path.
20
+ // Fallback to ORCHESTRATOR_NAME only if caller omits agentName (defensive).
21
+ const mainAgentName = agentName ?? "orchestrator";
22
+ // Emit pause_started{hook_blocked}
23
+ parser.delegate.emit({
24
+ time: parser.delegate.elapsed(sessionId),
25
+ type: "pause_started",
26
+ payload: {
27
+ agent: mainAgentName,
28
+ reason: "hook_blocked",
29
+ detail: {
30
+ // Defensive access: hookInfos and stopReason are undocumented fields
31
+ hookCommand: entry.hookInfos?.[0]?.command,
32
+ hookReason: entry.stopReason ?? "",
33
+ },
34
+ },
35
+ }, sessionId);
36
+ // Track pending hook block per compound key (red-team #12)
37
+ const key = `${sessionId ?? ""}:${mainAgentName}`;
38
+ _getPendingHookBlocks(parser).add(key);
39
+ // Record pause start time for durationMs on clear (red-team #12 pauseRecord)
40
+ const pauseRecord = _getPauseRecord(parser);
41
+ const startedAt = Date.now();
42
+ pauseRecord.set(key, {
43
+ reason: "hook_blocked",
44
+ toolUseId: undefined,
45
+ startedAt,
46
+ });
47
+ // [validation Q6] Fail-open safety cap: auto-clear after 5min if no
48
+ // matching assistant text from the same agent has cleared it. Prevents
49
+ // permanent stuck UI when the hook resolves without a follow-up signal.
50
+ // A server-side warning could be added; for now we trust the cap.
51
+ const timer = setTimeout(() => {
52
+ const blocks = _getPendingHookBlocks(parser);
53
+ if (!blocks.has(key))
54
+ return; // already cleared via assistant text path
55
+ blocks.delete(key);
56
+ const rec = pauseRecord.get(key);
57
+ pauseRecord.delete(key);
58
+ parser.delegate.emit({
59
+ time: parser.delegate.elapsed(sessionId),
60
+ type: "pause_cleared",
61
+ payload: {
62
+ agent: mainAgentName,
63
+ reason: "hook_blocked",
64
+ toolUseId: undefined,
65
+ durationMs: rec ? Date.now() - rec.startedAt : HOOK_BLOCKED_MAX_MS,
66
+ },
67
+ }, sessionId);
68
+ }, HOOK_BLOCKED_MAX_MS);
69
+ if (typeof timer.unref === "function")
70
+ timer.unref();
71
+ }
72
+ const pendingHookBlocksMap = new WeakMap();
73
+ const pendingRejectionsMap = new WeakMap();
74
+ const pauseRecordMap = new WeakMap();
75
+ export function _getPendingHookBlocks(parser) {
76
+ let s = pendingHookBlocksMap.get(parser);
77
+ if (!s) {
78
+ s = new Set();
79
+ pendingHookBlocksMap.set(parser, s);
80
+ }
81
+ return s;
82
+ }
83
+ export function _getPendingRejections(parser) {
84
+ let s = pendingRejectionsMap.get(parser);
85
+ if (!s) {
86
+ s = new Set();
87
+ pendingRejectionsMap.set(parser, s);
88
+ }
89
+ return s;
90
+ }
91
+ export function _getPauseRecord(parser) {
92
+ let m = pauseRecordMap.get(parser);
93
+ if (!m) {
94
+ m = new Map();
95
+ pauseRecordMap.set(parser, m);
96
+ }
97
+ return m;
98
+ }
99
+ //# sourceMappingURL=handle-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-system.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-system.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle-text.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrD,wBAAgB,eAAe,CAC9B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GAAG,WAAW,EAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EACjC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,IAAI,CA2BN"}
1
+ {"version":3,"file":"handle-text.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMrD,wBAAgB,eAAe,CAC9B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GAAG,WAAW,EAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EACjC,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC3B,IAAI,CAkFN"}
@@ -7,12 +7,59 @@
7
7
  import { HASH_PREFIX_MAX, MESSAGE_MAX } from "../constants.js";
8
8
  import { estimateTokensFromText } from "../token-estimator.js";
9
9
  import { evictOldEntries, isSystemInjectedContent, safeText } from "./utils.js";
10
+ import { _getPendingHookBlocks, _getPendingRejections, _getPauseRecord } from "./handle-system.js";
10
11
  export function handleTextBlock(parser, block, emitRole, entryUuid, agentName, seenMsgs, session, sessionId) {
11
12
  const text = safeText(block);
12
13
  if (!text)
13
14
  return;
14
15
  if (emitRole === "user" && isSystemInjectedContent(text))
15
16
  return;
17
+ // [red-team #9] Clear tool_rejected and hook_blocked ONLY when the SAME agent that
18
+ // received pause_started emits next assistant text. A concurrent subagent's text
19
+ // MUST NOT clear the parent's pending flags.
20
+ // [red-team #12] Compound key: "${sessionId}:${agentName}" prevents cross-session collision.
21
+ if (emitRole === "assistant") {
22
+ const key = `${sessionId ?? ""}:${agentName}`;
23
+ const pendingRejections = _getPendingRejections(parser);
24
+ const pendingHookBlocks = _getPendingHookBlocks(parser);
25
+ const pauseRecord = _getPauseRecord(parser);
26
+ if (pendingRejections.has(key)) {
27
+ pendingRejections.delete(key);
28
+ const rec = pauseRecord.get(key);
29
+ if (rec?.reason === "tool_rejected") {
30
+ const durationMs = Date.now() - rec.startedAt;
31
+ pauseRecord.delete(key);
32
+ parser.delegate.emit({
33
+ time: parser.delegate.elapsed(sessionId),
34
+ type: "pause_cleared",
35
+ payload: {
36
+ agent: agentName,
37
+ reason: "tool_rejected",
38
+ toolUseId: rec.toolUseId,
39
+ durationMs,
40
+ },
41
+ }, sessionId);
42
+ }
43
+ }
44
+ if (pendingHookBlocks.has(key)) {
45
+ pendingHookBlocks.delete(key);
46
+ const rec = pauseRecord.get(key);
47
+ if (rec?.reason === "hook_blocked") {
48
+ const durationMs = Date.now() - rec.startedAt;
49
+ pauseRecord.delete(key);
50
+ parser.delegate.emit({
51
+ time: parser.delegate.elapsed(sessionId),
52
+ type: "pause_cleared",
53
+ payload: {
54
+ agent: agentName,
55
+ reason: "hook_blocked",
56
+ toolUseId: rec.toolUseId,
57
+ durationMs,
58
+ },
59
+ }, sessionId);
60
+ }
61
+ }
62
+ }
16
63
  const hash = entryUuid
17
64
  ? `${emitRole}:${entryUuid}`
18
65
  : `${emitRole}:${text.slice(0, HASH_PREFIX_MAX)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"handle-text.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-text.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhF,MAAM,UAAU,eAAe,CAC9B,MAAwB,EACxB,KAAc,EACd,QAA8B,EAC9B,SAA6B,EAC7B,SAAiB,EACjB,QAAiC,EACjC,OAAmC,EACnC,SAA6B;IAE7B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,QAAQ,KAAK,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC;QAAE,OAAO;IAEjE,MAAM,IAAI,GAAG,SAAS;QACrB,CAAC,CAAC,GAAG,QAAQ,IAAI,SAAS,EAAE;QAC5B,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC;IACnD,IAAI,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO;IAChC,IAAI,QAAQ,EAAE,CAAC;QACd,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,MAAM;YAAE,OAAO,CAAC,gBAAgB,CAAC,YAAY,IAAI,MAAM,CAAC;;YACpE,OAAO,CAAC,gBAAgB,CAAC,SAAS,IAAI,MAAM,CAAC;IACnD,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAI,CACnB;QACC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QACxC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;KAClF,EACD,SAAS,CACT,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"handle-text.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-text.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle-tool-result.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKvE,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CAiEN"}
1
+ {"version":3,"file":"handle-tool-result.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-result.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AASvE,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CAsIN"}
@@ -7,6 +7,9 @@
7
7
  import { ARGS_MAX, CHILD_NAME_MAX, RESULT_MAX, FAILED_RESULT_MAX } from "../constants.js";
8
8
  import { summarizeResult, buildDiscovery, detectError } from "../tool-summarizer.js";
9
9
  import { estimateTokensFromContent } from "../token-estimator.js";
10
+ import { createLogger } from "../logger.js";
11
+ import { _getPauseRecord, _getPendingRejections } from "./handle-system.js";
12
+ const log = createLogger("handle-tool-result");
10
13
  export function handleToolResult(parser, block, agentName, ctxPending, sessionId) {
11
14
  const pending = ctxPending.get(block.tool_use_id);
12
15
  if (!pending)
@@ -23,6 +26,62 @@ export function handleToolResult(parser, block, agentName, ctxPending, sessionId
23
26
  session.contextBreakdown.toolResults += tokenCost;
24
27
  }
25
28
  }
29
+ // ── Rejection detection [red-team #1] ─────────────────────────────────────
30
+ // MUST use block.content string scan — block.is_error and entry.toolUseResult
31
+ // do NOT exist on ToolResultBlock (protocol.ts:63-67 defines only type, tool_use_id, content).
32
+ const resultText = _extractResultText(block.content);
33
+ const isUserRejection = resultText.includes("User rejected tool use") ||
34
+ resultText.startsWith("The user doesn't want to proceed with this tool use");
35
+ // Log a warning if detectError flagged it but we didn't match a known rejection string,
36
+ // in case Claude Code changes the wording (stability note from phase-02 spec).
37
+ if (!isUserRejection && detectError(result)) {
38
+ log.debug("tool_result has error but no known rejection string", {
39
+ toolName,
40
+ resultPreview: result.slice(0, 80),
41
+ });
42
+ }
43
+ if (isUserRejection) {
44
+ const key = `${sessionId ?? ""}:${agentName}`;
45
+ _getPendingRejections(parser).add(key);
46
+ // Record pause start so handle-text.ts can compute durationMs on clear.
47
+ _getPauseRecord(parser).set(key, {
48
+ reason: "tool_rejected",
49
+ toolUseId: block.tool_use_id,
50
+ startedAt: Date.now(),
51
+ });
52
+ parser.delegate.emit({
53
+ time: parser.delegate.elapsed(sessionId),
54
+ type: "pause_started",
55
+ payload: {
56
+ agent: agentName,
57
+ reason: "tool_rejected",
58
+ toolUseId: block.tool_use_id,
59
+ toolName,
60
+ },
61
+ }, sessionId);
62
+ }
63
+ // ── pause_cleared for AskUserQuestion / ExitPlanMode ─────────────────────
64
+ // When matching tool_result arrives, clear the typed pause and emit durationMs.
65
+ const pauseRecord = _getPauseRecord(parser);
66
+ const pauseKey = `${sessionId ?? ""}:${agentName}`;
67
+ const activeTypedPause = pauseRecord.get(pauseKey);
68
+ if (activeTypedPause &&
69
+ activeTypedPause.toolUseId === block.tool_use_id &&
70
+ (activeTypedPause.reason === "ask_user_question" ||
71
+ activeTypedPause.reason === "plan_mode_review")) {
72
+ const durationMs = Date.now() - activeTypedPause.startedAt;
73
+ pauseRecord.delete(pauseKey);
74
+ parser.delegate.emit({
75
+ time: parser.delegate.elapsed(sessionId),
76
+ type: "pause_cleared",
77
+ payload: {
78
+ agent: agentName,
79
+ reason: activeTypedPause.reason,
80
+ toolUseId: block.tool_use_id,
81
+ durationMs,
82
+ },
83
+ }, sessionId);
84
+ }
26
85
  ctxPending.delete(block.tool_use_id);
27
86
  const discovery = buildDiscovery(toolName, pending.filePath || "", result);
28
87
  if (toolName === "Task" || toolName === "Agent") {
@@ -59,4 +118,18 @@ export function handleToolResult(parser, block, agentName, ctxPending, sessionId
59
118
  if (session)
60
119
  parser.delegate.emitContextUpdate(agentName, session, sessionId);
61
120
  }
121
+ /**
122
+ * Extract a plain string from ToolResultBlock.content for rejection detection.
123
+ * [red-team #1] NEVER use block.is_error or entry.toolUseResult — those fields don't exist.
124
+ */
125
+ function _extractResultText(content) {
126
+ if (typeof content === "string")
127
+ return content;
128
+ if (Array.isArray(content)) {
129
+ return content
130
+ .map((c) => c.text ?? "")
131
+ .join("");
132
+ }
133
+ return "";
134
+ }
62
135
  //# sourceMappingURL=handle-tool-result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handle-tool-result.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle-tool-result.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-result.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle-tool-use.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKpE,wBAAgB,aAAa,CAC5B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CAgCN"}
1
+ {"version":3,"file":"handle-tool-use.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAe,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AASjF,wBAAgB,aAAa,CAC5B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,SAAS,CAAC,EAAE,MAAM,GAChB,IAAI,CAqFN"}
@@ -6,8 +6,11 @@
6
6
  * License Apache-2.0 (see ../../../NOTICE).
7
7
  */
8
8
  import { emitSubagentSpawn } from "../protocol.js";
9
- import { PREVIEW_MAX, resolveSubagentChildName } from "../constants.js";
9
+ import { PLAN_PREVIEW_MAX, PREVIEW_MAX, resolveSubagentChildName } from "../constants.js";
10
10
  import { extractInputData, summarizeInput } from "../tool-summarizer.js";
11
+ import { createLogger } from "../logger.js";
12
+ import { _getPauseRecord } from "./handle-system.js";
13
+ const log = createLogger("handle-tool-use");
11
14
  export function handleToolUse(parser, block, agentName, ctxPending, sessionId) {
12
15
  const toolName = block.name;
13
16
  const args = summarizeInput(toolName, block.input);
@@ -23,6 +26,7 @@ export function handleToolUse(parser, block, agentName, ctxPending, sessionId) {
23
26
  emitSubagentSpawn(parser.delegate, agentName, childName, args, sessionId);
24
27
  }
25
28
  }
29
+ const inputData = extractInputData(toolName, block.input);
26
30
  parser.delegate.emit({
27
31
  time: parser.delegate.elapsed(sessionId),
28
32
  type: "tool_call_start",
@@ -31,8 +35,81 @@ export function handleToolUse(parser, block, agentName, ctxPending, sessionId) {
31
35
  tool: toolName,
32
36
  args,
33
37
  preview: `${toolName}: ${args}`.slice(0, PREVIEW_MAX),
34
- inputData: extractInputData(toolName, block.input),
38
+ inputData,
35
39
  },
36
40
  }, sessionId);
41
+ // Emit pause_started AFTER tool_call_start (sequencing — spec risk note).
42
+ if (toolName === "AskUserQuestion") {
43
+ const detail = _buildAskUserQuestionDetail(inputData);
44
+ const key = `${sessionId ?? ""}:${agentName}`;
45
+ _getPauseRecord(parser).set(key, {
46
+ reason: "ask_user_question",
47
+ toolUseId: block.id,
48
+ startedAt: Date.now(),
49
+ });
50
+ parser.delegate.emit({
51
+ time: parser.delegate.elapsed(sessionId),
52
+ type: "pause_started",
53
+ payload: {
54
+ agent: agentName,
55
+ reason: "ask_user_question",
56
+ toolUseId: block.id,
57
+ toolName,
58
+ detail,
59
+ },
60
+ }, sessionId);
61
+ }
62
+ else if (toolName === "ExitPlanMode") {
63
+ // input.plan is observed in real transcripts but undocumented — optional chaining.
64
+ const rawPlan = block.input.plan ?? undefined;
65
+ const detail = rawPlan
66
+ ? { plan: rawPlan.slice(0, PLAN_PREVIEW_MAX) }
67
+ : undefined;
68
+ const key = `${sessionId ?? ""}:${agentName}`;
69
+ _getPauseRecord(parser).set(key, {
70
+ reason: "plan_mode_review",
71
+ toolUseId: block.id,
72
+ startedAt: Date.now(),
73
+ });
74
+ parser.delegate.emit({
75
+ time: parser.delegate.elapsed(sessionId),
76
+ type: "pause_started",
77
+ payload: {
78
+ agent: agentName,
79
+ reason: "plan_mode_review",
80
+ toolUseId: block.id,
81
+ toolName,
82
+ ...(detail ? { detail } : {}),
83
+ },
84
+ }, sessionId);
85
+ }
86
+ }
87
+ /**
88
+ * Build PauseDetail.questions from the already-extracted inputData for AskUserQuestion.
89
+ * Validates per docs: 1-4 questions, 2-4 options each (best-effort; logs warning if violated).
90
+ */
91
+ function _buildAskUserQuestionDetail(inputData) {
92
+ if (!inputData)
93
+ return undefined;
94
+ const rawQs = inputData.questions;
95
+ if (!Array.isArray(rawQs) || rawQs.length === 0)
96
+ return undefined;
97
+ // Warn if outside documented limits (1-4 questions, 2-4 options each)
98
+ if (rawQs.length > 4 || rawQs.length < 1) {
99
+ log.warn("AskUserQuestion: question count outside 1-4 docs limit", { count: rawQs.length });
100
+ }
101
+ const questions = rawQs.map((q) => {
102
+ const opts = Array.isArray(q.options) ? q.options : [];
103
+ if (opts.length > 4 || opts.length < 2) {
104
+ log.warn("AskUserQuestion: option count outside 2-4 docs limit", { count: opts.length });
105
+ }
106
+ return {
107
+ question: String(q.question ?? ""),
108
+ ...(q.header !== undefined ? { header: String(q.header) } : {}),
109
+ options: opts.map(String),
110
+ ...(q.multiSelect !== undefined ? { multiSelect: Boolean(q.multiSelect) } : {}),
111
+ };
112
+ });
113
+ return { questions };
37
114
  }
38
115
  //# sourceMappingURL=handle-tool-use.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handle-tool-use.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEzE,MAAM,UAAU,aAAa,CAC5B,MAAwB,EACxB,KAAmB,EACnB,SAAiB,EACjB,UAAwC,EACxC,SAAkB;IAElB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1D,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEpF,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CACnB;QACC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QACxC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE;YACR,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,OAAO,EAAE,GAAG,QAAQ,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;YACrD,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;SAClD;KACD,EACD,SAAS,CACT,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"handle-tool-use.js","sourceRoot":"","sources":["../../../src/orchviz/parser/handle-tool-use.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,UAAU,EACV,eAAe,EAIf,cAAc,EACd,MAAM,gBAAgB,CAAC;AAcxB,MAAM,WAAW,wBAAwB;IACxC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC1D,oBAAoB,CAAC,KAAK,EAAE;QAC3B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxF;AAED,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,qBAAa,gBAAgB;aAIA,QAAQ,EAAE,wBAAwB;IAH9D,QAAQ,CAAC,mBAAmB,mCAA0C;IACtE,QAAQ,CAAC,kBAAkB,sBAA6B;gBAE5B,QAAQ,EAAE,wBAAwB;IAE9D,iBAAiB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAO5D,qBAAqB,CACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,YAAoB,EACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,IAAI;IAsGP,OAAO,CAAC,oBAAoB;CAO5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orchviz/parser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,UAAU,EACV,eAAe,EAIf,cAAc,EACd,MAAM,gBAAgB,CAAC;AAexB,MAAM,WAAW,wBAAwB;IACxC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAC1D,oBAAoB,CAAC,KAAK,EAAE;QAC3B,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxF;AAED,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,qBAAa,gBAAgB;aAIA,QAAQ,EAAE,wBAAwB;IAH9D,QAAQ,CAAC,mBAAmB,mCAA0C;IACtE,QAAQ,CAAC,kBAAkB,sBAA6B;gBAE5B,QAAQ,EAAE,wBAAwB;IAE9D,iBAAiB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAO5D,qBAAqB,CACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,YAAoB,EACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,IAAI;IA4GP,OAAO,CAAC,oBAAoB;CAO5B"}
@@ -16,6 +16,7 @@ import { handleThinkingBlock } from "./handle-thinking.js";
16
16
  import { handleToolUse } from "./handle-tool-use.js";
17
17
  import { handleToolResult } from "./handle-tool-result.js";
18
18
  import { handleProgressEvent } from "./handle-progress.js";
19
+ import { handleSystemEntry } from "./handle-system.js";
19
20
  import { evictOldEntries, isSystemInjectedContent } from "./utils.js";
20
21
  import { applySessionLabel } from "./label-helpers.js";
21
22
  const log = createLogger("TranscriptParser");
@@ -45,6 +46,12 @@ export class TranscriptParser {
45
46
  handleProgressEvent(this, parsed, sessionId);
46
47
  return;
47
48
  }
49
+ // [CRITICAL — red-team #5] Dispatch system entries BEFORE the early-return guard.
50
+ // Without this, handle-system.ts is unreachable — "system" lines are dropped silently.
51
+ if (parsed.type === "system") {
52
+ handleSystemEntry(this, parsed, sessionId, agentName);
53
+ return;
54
+ }
48
55
  if (parsed.type !== "user" && parsed.type !== "assistant")
49
56
  return;
50
57
  // Filter sidechain (branched) turns — research-02 §7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/orchviz/parser/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/orchviz/parser/index.ts"],"names":[],"mappings":"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"}
@@ -3,16 +3,30 @@
3
3
  *
4
4
  * Ported from patoles/agent-flow @ 59ccf4e (extension/src/permission-detection.ts).
5
5
  * License Apache-2.0 (see ../NOTICE).
6
+ *
7
+ * Phase-02 modifications:
8
+ * - Skip heuristic if a typed pause already covers this agent (pauseRecord parameter).
9
+ * - Dual-emit: legacy permission_requested + new pause_started{permission_request}.
10
+ * - Hard cap: 60s (PERMISSION_HEURISTIC_MAX_MS) clears the heuristic even without tool_result.
11
+ * - [red-team #18] toolUseId omitted for reason=permission_request (no deterministic ID).
6
12
  */
7
13
  import type { AgentEvent, PendingToolCall } from "./protocol.js";
8
14
  export interface PermissionState {
9
15
  permissionTimer: NodeJS.Timeout | null;
10
16
  permissionEmitted: boolean;
17
+ /** Hard-cap timer; clears heuristic after PERMISSION_HEURISTIC_MAX_MS. */
18
+ permissionHardCapTimer?: NodeJS.Timeout | null;
11
19
  }
12
20
  export interface PermissionDetectionDelegate {
13
21
  emit(event: AgentEvent, sessionId?: string): void;
14
22
  elapsed(sessionId?: string): number;
15
23
  getLastActivityTime(sessionId: string): number | undefined;
16
24
  }
17
- export declare function handlePermissionDetection(delegate: PermissionDetectionDelegate, agentName: string, pendingToolCalls: Map<string, PendingToolCall>, permState: PermissionState, sessionId: string, sessionCompleted?: boolean, checkSessionActivity?: boolean): void;
25
+ export declare function handlePermissionDetection(delegate: PermissionDetectionDelegate, agentName: string, pendingToolCalls: Map<string, PendingToolCall>, permState: PermissionState, sessionId: string, sessionCompleted?: boolean, checkSessionActivity?: boolean,
26
+ /** Optional: pauseRecord from parser context — skip heuristic if typed pause active. */
27
+ pauseRecord?: Map<string, {
28
+ reason: string;
29
+ toolUseId?: string;
30
+ startedAt: number;
31
+ }>): void;
18
32
  //# sourceMappingURL=permission-detection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission-detection.d.ts","sourceRoot":"","sources":["../../src/orchviz/permission-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,2BAA2B;IAC3C,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC3D;AAED,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,2BAA2B,EACrC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC9C,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,OAAO,EAC1B,oBAAoB,CAAC,EAAE,OAAO,GAC5B,IAAI,CAqDN"}
1
+ {"version":3,"file":"permission-detection.d.ts","sourceRoot":"","sources":["../../src/orchviz/permission-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGjE,MAAM,WAAW,eAAe;IAC/B,eAAe,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,2BAA2B;IAC3C,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC3D;AAED,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,2BAA2B,EACrC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC9C,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,OAAO,EAC1B,oBAAoB,CAAC,EAAE,OAAO;AAC9B,wFAAwF;AACxF,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAClF,IAAI,CA+GN"}