pi-agent-flow 2.0.0 → 2.0.1

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 (144) hide show
  1. package/agents/audit.md +3 -0
  2. package/agents/build.md +3 -0
  3. package/agents/craft.md +3 -0
  4. package/agents/debug.md +3 -0
  5. package/agents/ideas.md +3 -0
  6. package/agents/scout.md +5 -0
  7. package/dist/batch/batch-bash.d.ts.map +1 -1
  8. package/dist/batch/batch-bash.js +27 -4
  9. package/dist/batch/batch-bash.js.map +1 -1
  10. package/dist/batch/constants.d.ts +12 -0
  11. package/dist/batch/constants.d.ts.map +1 -1
  12. package/dist/batch/constants.js +46 -0
  13. package/dist/batch/constants.js.map +1 -1
  14. package/dist/batch/execute.d.ts.map +1 -1
  15. package/dist/batch/execute.js +117 -4
  16. package/dist/batch/execute.js.map +1 -1
  17. package/dist/batch/shell-compress.d.ts +25 -0
  18. package/dist/batch/shell-compress.d.ts.map +1 -0
  19. package/dist/batch/shell-compress.js +602 -0
  20. package/dist/batch/shell-compress.js.map +1 -0
  21. package/dist/batch/symbols.d.ts.map +1 -1
  22. package/dist/batch/symbols.js +12 -7
  23. package/dist/batch/symbols.js.map +1 -1
  24. package/dist/config/config.d.ts +5 -0
  25. package/dist/config/config.d.ts.map +1 -1
  26. package/dist/config/config.js +63 -0
  27. package/dist/config/config.js.map +1 -1
  28. package/dist/config/models.d.ts +2 -0
  29. package/dist/config/models.d.ts.map +1 -0
  30. package/dist/config/models.js +49 -0
  31. package/dist/config/models.js.map +1 -0
  32. package/dist/config/settings-resolver.js +2 -2
  33. package/dist/config/settings-resolver.js.map +1 -1
  34. package/dist/core/agents.js +2 -2
  35. package/dist/core/agents.js.map +1 -1
  36. package/dist/core/delegation.d.ts +1 -1
  37. package/dist/core/delegation.d.ts.map +1 -1
  38. package/dist/core/delegation.js +6 -13
  39. package/dist/core/delegation.js.map +1 -1
  40. package/dist/core/executor.d.ts +7 -0
  41. package/dist/core/executor.d.ts.map +1 -1
  42. package/dist/core/executor.js +5 -1
  43. package/dist/core/executor.js.map +1 -1
  44. package/dist/core/flow.d.ts +9 -0
  45. package/dist/core/flow.d.ts.map +1 -1
  46. package/dist/core/flow.js +24 -28
  47. package/dist/core/flow.js.map +1 -1
  48. package/dist/core/session-mode.d.ts +1 -1
  49. package/dist/core/session-mode.d.ts.map +1 -1
  50. package/dist/core/session-mode.js +2 -1
  51. package/dist/core/session-mode.js.map +1 -1
  52. package/dist/flow/auto-warp.d.ts +12 -0
  53. package/dist/flow/auto-warp.d.ts.map +1 -0
  54. package/dist/flow/auto-warp.js +29 -0
  55. package/dist/flow/auto-warp.js.map +1 -0
  56. package/dist/flow/command.d.ts.map +1 -1
  57. package/dist/flow/command.js +7 -2
  58. package/dist/flow/command.js.map +1 -1
  59. package/dist/flow/continuation.d.ts.map +1 -1
  60. package/dist/flow/continuation.js +50 -13
  61. package/dist/flow/continuation.js.map +1 -1
  62. package/dist/flow/index.d.ts +4 -1
  63. package/dist/flow/index.d.ts.map +1 -1
  64. package/dist/flow/index.js +4 -1
  65. package/dist/flow/index.js.map +1 -1
  66. package/dist/flow/loop-command.d.ts +8 -0
  67. package/dist/flow/loop-command.d.ts.map +1 -0
  68. package/dist/flow/loop-command.js +99 -0
  69. package/dist/flow/loop-command.js.map +1 -0
  70. package/dist/flow/loop-templates.d.ts +7 -0
  71. package/dist/flow/loop-templates.d.ts.map +1 -0
  72. package/dist/flow/loop-templates.js +38 -0
  73. package/dist/flow/loop-templates.js.map +1 -0
  74. package/dist/flow/loop.d.ts +19 -0
  75. package/dist/flow/loop.d.ts.map +1 -0
  76. package/dist/flow/loop.js +95 -0
  77. package/dist/flow/loop.js.map +1 -0
  78. package/dist/flow/perform-warp.d.ts +28 -0
  79. package/dist/flow/perform-warp.d.ts.map +1 -0
  80. package/dist/flow/perform-warp.js +127 -0
  81. package/dist/flow/perform-warp.js.map +1 -0
  82. package/dist/flow/settings-command.d.ts.map +1 -1
  83. package/dist/flow/settings-command.js +89 -3
  84. package/dist/flow/settings-command.js.map +1 -1
  85. package/dist/flow/store.d.ts +3 -3
  86. package/dist/flow/store.d.ts.map +1 -1
  87. package/dist/flow/store.js +24 -16
  88. package/dist/flow/store.js.map +1 -1
  89. package/dist/flow/template-shared.d.ts +9 -0
  90. package/dist/flow/template-shared.d.ts.map +1 -0
  91. package/dist/flow/template-shared.js +13 -0
  92. package/dist/flow/template-shared.js.map +1 -0
  93. package/dist/flow/template-strings.d.ts.map +1 -1
  94. package/dist/flow/template-strings.js +2 -5
  95. package/dist/flow/template-strings.js.map +1 -1
  96. package/dist/flow/types.d.ts +15 -9
  97. package/dist/flow/types.d.ts.map +1 -1
  98. package/dist/flow/warp-command.d.ts +0 -1
  99. package/dist/flow/warp-command.d.ts.map +1 -1
  100. package/dist/flow/warp-command.js +21 -282
  101. package/dist/flow/warp-command.js.map +1 -1
  102. package/dist/flow/warp-utils.d.ts +11 -0
  103. package/dist/flow/warp-utils.d.ts.map +1 -0
  104. package/dist/flow/warp-utils.js +187 -0
  105. package/dist/flow/warp-utils.js.map +1 -0
  106. package/dist/index.d.ts +3 -2
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +17 -7
  109. package/dist/index.js.map +1 -1
  110. package/dist/snapshot/cli-args.d.ts +1 -0
  111. package/dist/snapshot/cli-args.d.ts.map +1 -1
  112. package/dist/snapshot/cli-args.js +12 -0
  113. package/dist/snapshot/cli-args.js.map +1 -1
  114. package/dist/snapshot/snapshot.d.ts +22 -19
  115. package/dist/snapshot/snapshot.d.ts.map +1 -1
  116. package/dist/snapshot/snapshot.js +1012 -149
  117. package/dist/snapshot/snapshot.js.map +1 -1
  118. package/dist/steering/sliding-prompt.d.ts.map +1 -1
  119. package/dist/steering/sliding-prompt.js +3 -0
  120. package/dist/steering/sliding-prompt.js.map +1 -1
  121. package/dist/tools/timed-bash.d.ts.map +1 -1
  122. package/dist/tools/timed-bash.js +9 -0
  123. package/dist/tools/timed-bash.js.map +1 -1
  124. package/dist/tui/render-utils.d.ts +5 -1
  125. package/dist/tui/render-utils.d.ts.map +1 -1
  126. package/dist/tui/render-utils.js +38 -10
  127. package/dist/tui/render-utils.js.map +1 -1
  128. package/dist/tui/render.d.ts.map +1 -1
  129. package/dist/tui/render.js +55 -82
  130. package/dist/tui/render.js.map +1 -1
  131. package/dist/tui/scramble/constants.d.ts +8 -8
  132. package/dist/tui/scramble/constants.d.ts.map +1 -1
  133. package/dist/tui/scramble/constants.js +7 -7
  134. package/dist/tui/scramble/constants.js.map +1 -1
  135. package/dist/tui/scramble/manager.d.ts +0 -4
  136. package/dist/tui/scramble/manager.d.ts.map +1 -1
  137. package/dist/tui/scramble/manager.js +2 -62
  138. package/dist/tui/scramble/manager.js.map +1 -1
  139. package/dist/types/flow.d.ts +2 -0
  140. package/dist/types/flow.d.ts.map +1 -1
  141. package/dist/types/flow.js.map +1 -1
  142. package/dist/types/output.d.ts +6 -0
  143. package/dist/types/output.d.ts.map +1 -1
  144. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/flow/continuation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAkC,MAAM,+BAA+B,CAAC;AAoClG;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAwGxD"}
1
+ {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/flow/continuation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAkC,MAAM,+BAA+B,CAAC;AAuClG;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA4IxD"}
@@ -1,5 +1,8 @@
1
1
  import { getGoal, addTokens, updateGoalStatus } from "./store.js";
2
2
  import { budgetLimitTemplate, idleWakeupTemplate, continuationPromptTemplate } from "./template-strings.js";
3
+ import { getLoop } from "./loop.js";
4
+ import { buildAutoWarpPrompt } from "./auto-warp.js";
5
+ import { loopContinuationPromptTemplate, loopWakeupTemplate } from "./loop-templates.js";
3
6
  import { logWarn } from '../config/log.js';
4
7
  import * as sessionRegistry from '../core/session-registry.js';
5
8
  const SPAWN_COOLDOWN_MS = 5000;
@@ -66,21 +69,35 @@ export function setupContinuation(pi) {
66
69
  if (!goal || goal.status !== "active")
67
70
  return;
68
71
  const sessionId = goal.sessionId ?? "none";
72
+ // Session guard: only nudge the session that owns the active goal.
73
+ if (sessionId !== "none" && sessionId !== sessionRegistry.getSessionId(cwd)) {
74
+ return;
75
+ }
69
76
  const lastActivity = _lastTurnEndAt.get(sessionId);
70
77
  if (!lastActivity)
71
78
  return;
72
79
  const now = Date.now();
73
80
  if (now - lastActivity > IDLE_WAKEUP_MS) {
74
81
  _lastTurnEndAt.set(sessionId, now);
82
+ const loop = getLoop(cwd);
75
83
  const maxFlowsClause = goal.maxFlows !== undefined ? `/${goal.maxFlows}` : '';
76
84
  const tokenInfo = `${goal.totalTokens}${goal.maxTokens !== undefined ? `/${goal.maxTokens}` : ''}`;
77
85
  const acceptanceClause = goal.acceptance ? `\nAcceptance: ${goal.acceptance}` : '';
78
- const prompt = idleWakeupTemplate
79
- .replace("{{objective}}", goal.objective)
80
- .replace("{{acceptanceClause}}", acceptanceClause)
81
- .replace("{{flowCount}}", String(goal.completedFlows.length))
82
- .replace("{{maxFlows}}", String(goal.maxFlows ?? "unlimited"))
83
- .replace("{{totalTokens}}", tokenInfo);
86
+ const prompt = (loop?.status === "active")
87
+ ? loopWakeupTemplate
88
+ .replace("{{objective}}", goal.objective)
89
+ .replace("{{acceptanceClause}}", acceptanceClause)
90
+ .replace("{{flowCount}}", String(goal.completedFlows.length))
91
+ .replace("{{maxFlows}}", String(goal.maxFlows ?? "unlimited"))
92
+ .replace("{{totalTokens}}", tokenInfo)
93
+ .replace("{{sessionCount}}", String(loop.sessionCount))
94
+ .replace("{{totalTokensAcrossSessions}}", String(loop.totalTokensAcrossSessions))
95
+ : idleWakeupTemplate
96
+ .replace("{{objective}}", goal.objective)
97
+ .replace("{{acceptanceClause}}", acceptanceClause)
98
+ .replace("{{flowCount}}", String(goal.completedFlows.length))
99
+ .replace("{{maxFlows}}", String(goal.maxFlows ?? "unlimited"))
100
+ .replace("{{totalTokens}}", tokenInfo);
84
101
  pi.sendMessage({ content: prompt, display: false }, { triggerTurn: true });
85
102
  }
86
103
  }, WAKEUP_CHECK_INTERVAL_MS);
@@ -92,6 +109,11 @@ export function setupContinuation(pi) {
92
109
  const goal = getGoal(cwd);
93
110
  if (!goal || goal.status !== "active")
94
111
  return;
112
+ const loop = getLoop(cwd);
113
+ // Guard: if a warp is pending for a different session, skip continuation.
114
+ if (loop?.pendingWarpSessionId && loop.pendingWarpSessionId !== sessionRegistry.getSessionId(cwd)) {
115
+ return;
116
+ }
95
117
  // Session guard: only continue goals bound to the current session.
96
118
  if (goal.sessionId && goal.sessionId !== sessionRegistry.getSessionId(cwd)) {
97
119
  logWarn(`[pi-agent-flow] Continuation skipped: goal session ${goal.sessionId} ≠ active session ${sessionRegistry.getSessionId(cwd) ?? '(none)'}`);
@@ -124,6 +146,11 @@ export function setupContinuation(pi) {
124
146
  const overFlows = goal.maxFlows !== undefined && flowCount >= goal.maxFlows;
125
147
  // Budget guards — actually pause when exceeded
126
148
  if (overTokens || overFlows) {
149
+ if (loop?.status === "active") {
150
+ const warpPrompt = buildAutoWarpPrompt(goal, loop);
151
+ pi.sendMessage({ content: warpPrompt, display: false }, { triggerTurn: true });
152
+ return;
153
+ }
127
154
  updateGoalStatus(cwd, "paused");
128
155
  const pausedPrompt = budgetLimitTemplate
129
156
  .replace("{{objective}}", goal.objective)
@@ -138,13 +165,23 @@ export function setupContinuation(pi) {
138
165
  const maxFlowsClause = goal.maxFlows !== undefined ? `/${goal.maxFlows}` : '';
139
166
  const tokenInfo = `${goal.totalTokens}${goal.maxTokens !== undefined ? `/${goal.maxTokens}` : ''}`;
140
167
  const acceptanceClause = goal.acceptance ? `\nAcceptance: ${goal.acceptance}` : '';
141
- const continuationPrompt = continuationPromptTemplate
142
- .replace('{{objective}}', goal.objective)
143
- .replace('{{acceptanceClause}}', acceptanceClause)
144
- .replace('{{flowCount}}', String(flowCount))
145
- .replace('{{maxFlowsClause}}', maxFlowsClause)
146
- .replace('{{tokenInfo}}', tokenInfo)
147
- .replace('{{userMessage}}', messageText);
168
+ const continuationPrompt = (loop?.status === "active")
169
+ ? loopContinuationPromptTemplate
170
+ .replace('{{objective}}', goal.objective)
171
+ .replace('{{acceptanceClause}}', acceptanceClause)
172
+ .replace('{{flowCount}}', String(flowCount))
173
+ .replace('{{maxFlowsClause}}', maxFlowsClause)
174
+ .replace('{{tokenInfo}}', tokenInfo)
175
+ .replace('{{userMessage}}', messageText)
176
+ .replace('{{sessionCount}}', String(loop.sessionCount))
177
+ .replace('{{totalTokensAcrossSessions}}', String(loop.totalTokensAcrossSessions))
178
+ : continuationPromptTemplate
179
+ .replace('{{objective}}', goal.objective)
180
+ .replace('{{acceptanceClause}}', acceptanceClause)
181
+ .replace('{{flowCount}}', String(flowCount))
182
+ .replace('{{maxFlowsClause}}', maxFlowsClause)
183
+ .replace('{{tokenInfo}}', tokenInfo)
184
+ .replace('{{userMessage}}', messageText);
148
185
  pi.sendMessage({ content: continuationPrompt, display: false }, { triggerTurn: true });
149
186
  });
150
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"continuation.js","sourceRoot":"","sources":["../../src/flow/continuation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continuation.js","sourceRoot":"","sources":["../../src/flow/continuation.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,14 @@
4
4
  import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
5
5
  import { setupFlowCommand } from "./command.js";
6
6
  import { setupWarpCommand } from "./warp-command.js";
7
+ import { setupLoopCommand } from "./loop-command.js";
7
8
  import { setupContinuation } from "./continuation.js";
8
9
  import * as sessionRegistry from "../core/session-registry.js";
9
10
  export type { GoalState, GoalEntry, GoalStatus, GoalContext, } from "./types.js";
11
+ export type { LoopState, LoopStatus, LoopTerminationReason } from "./types.js";
10
12
  export { getGoal, getGoalForSession, setGoal, clearGoal, updateGoalStatus, updateGoalObjective, recordFlowCompletion, addTokens, } from "./store.js";
11
- export { setupFlowCommand, setupContinuation, setupWarpCommand };
13
+ export { getLoop, enableLoop, disableLoop, resetLoop, terminateLoop, recordSessionWarp, setPendingWarpSessionId, clearPendingWarpSessionId, } from "./loop.js";
14
+ export { setupFlowCommand, setupContinuation, setupWarpCommand, setupLoopCommand };
12
15
  export { markFlowCompleted, shutdownWakeup } from "./continuation.js";
13
16
  export { sessionRegistry };
14
17
  export declare function registerFlow(pi: ExtensionAPI): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAE/D,YAAY,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CASnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAE/D,YAAY,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAUnD"}
@@ -4,10 +4,12 @@
4
4
  import { setupFlowCommand } from "./command.js";
5
5
  import { setupSettingsCommand } from "./settings-command.js";
6
6
  import { setupWarpCommand } from "./warp-command.js";
7
+ import { setupLoopCommand } from "./loop-command.js";
7
8
  import { setupContinuation } from "./continuation.js";
8
9
  import * as sessionRegistry from "../core/session-registry.js";
9
10
  export { getGoal, getGoalForSession, setGoal, clearGoal, updateGoalStatus, updateGoalObjective, recordFlowCompletion, addTokens, } from "./store.js";
10
- export { setupFlowCommand, setupContinuation, setupWarpCommand };
11
+ export { getLoop, enableLoop, disableLoop, resetLoop, terminateLoop, recordSessionWarp, setPendingWarpSessionId, clearPendingWarpSessionId, } from "./loop.js";
12
+ export { setupFlowCommand, setupContinuation, setupWarpCommand, setupLoopCommand };
11
13
  export { markFlowCompleted, shutdownWakeup } from "./continuation.js";
12
14
  export { sessionRegistry };
13
15
  export function registerFlow(pi) {
@@ -17,6 +19,7 @@ export function registerFlow(pi) {
17
19
  setupFlowCommand(pi);
18
20
  setupSettingsCommand(pi);
19
21
  setupWarpCommand(pi);
22
+ setupLoopCommand(pi);
20
23
  setupContinuation(pi);
21
24
  }
22
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAS/D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,MAAM,UAAU,YAAY,CAAC,EAAgB;IAC3C,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAqB,EAAE,EAAE;QACvD,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAW/D,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,MAAM,UAAU,YAAY,CAAC,EAAgB;IAC3C,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAqB,EAAE,EAAE;QACvD,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * /flow:loop slash command registration.
3
+ *
4
+ * Subcommands: enable, disable, status, stop, reset
5
+ */
6
+ import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
7
+ export declare function setupLoopCommand(pi: ExtensionAPI): void;
8
+ //# sourceMappingURL=loop-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-command.d.ts","sourceRoot":"","sources":["../../src/flow/loop-command.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAC;AAuB3F,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA6EvD"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * /flow:loop slash command registration.
3
+ *
4
+ * Subcommands: enable, disable, status, stop, reset
5
+ */
6
+ import { getGoal } from "./store.js";
7
+ import { getLoop, enableLoop, disableLoop, resetLoop, terminateLoop, } from "./loop.js";
8
+ function formatLoop(loop) {
9
+ const lines = [
10
+ `**Status:** ${loop.status}`,
11
+ `**Objective:** ${loop.objective}`,
12
+ `**Sessions:** ${loop.sessionCount}`,
13
+ `**Tokens across sessions:** ${loop.totalTokensAcrossSessions}`,
14
+ `**Flows across sessions:** ${loop.totalFlowsAcrossSessions}`,
15
+ ];
16
+ if (loop.terminatedAt)
17
+ lines.push(`**Terminated at:** ${loop.terminatedAt}`);
18
+ if (loop.terminationReason)
19
+ lines.push(`**Termination reason:** ${loop.terminationReason}`);
20
+ return lines.join("\n");
21
+ }
22
+ export function setupLoopCommand(pi) {
23
+ pi.registerCommand("flow:loop", {
24
+ description: "Manage endless loop. Subcommands: enable, disable, status, stop, reset",
25
+ handler: async (args, ctx) => {
26
+ const trimmed = args.trim();
27
+ const firstSpace = trimmed.indexOf(" ");
28
+ const sub = (firstSpace === -1 ? trimmed : trimmed.slice(0, firstSpace)).toLowerCase();
29
+ const rest = firstSpace === -1 ? "" : trimmed.slice(firstSpace + 1).trim();
30
+ const cwd = ctx.cwd;
31
+ switch (sub) {
32
+ case "enable": {
33
+ const goal = getGoal(cwd);
34
+ if (!goal) {
35
+ ctx.ui.notify?.("Cannot enable loop: no active goal. Set a goal first with /flow:goal set.", "error");
36
+ return;
37
+ }
38
+ const objective = rest || goal.objective;
39
+ try {
40
+ const loop = enableLoop(cwd, objective);
41
+ ctx.ui.notify?.(`Loop enabled: ${loop.objective}`, "info");
42
+ }
43
+ catch (err) {
44
+ ctx.ui.notify?.(err instanceof Error ? err.message : "Failed to enable loop", "error");
45
+ }
46
+ break;
47
+ }
48
+ case "disable": {
49
+ const loop = disableLoop(cwd);
50
+ if (loop) {
51
+ ctx.ui.notify?.("Loop disabled", "info");
52
+ }
53
+ else {
54
+ ctx.ui.notify?.("No active loop to disable", "error");
55
+ }
56
+ break;
57
+ }
58
+ case "status": {
59
+ const loop = getLoop(cwd);
60
+ if (loop) {
61
+ ctx.ui.notify?.(formatLoop(loop), "info");
62
+ }
63
+ else {
64
+ ctx.ui.notify?.("No loop active", "info");
65
+ }
66
+ break;
67
+ }
68
+ case "stop": {
69
+ const loop = getLoop(cwd);
70
+ if (!loop) {
71
+ ctx.ui.notify?.("No loop active", "error");
72
+ return;
73
+ }
74
+ if (loop.status === "terminated") {
75
+ ctx.ui.notify?.("Loop already terminated", "info");
76
+ return;
77
+ }
78
+ terminateLoop(cwd, "user_disabled");
79
+ ctx.ui.notify?.("Loop stopped", "info");
80
+ break;
81
+ }
82
+ case "reset": {
83
+ const loop = resetLoop(cwd);
84
+ if (loop) {
85
+ ctx.ui.notify?.("Loop reset", "info");
86
+ }
87
+ else {
88
+ ctx.ui.notify?.("No loop to reset", "error");
89
+ }
90
+ break;
91
+ }
92
+ default: {
93
+ ctx.ui.notify?.("Unknown subcommand. Usage: /flow:loop {enable|disable|status|stop|reset}", "error");
94
+ }
95
+ }
96
+ },
97
+ });
98
+ }
99
+ //# sourceMappingURL=loop-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-command.js","sourceRoot":"","sources":["../../src/flow/loop-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Runtime template strings for endless loop prompts.
3
+ */
4
+ export declare const autoWarpTriggerTemplate = "<flow-loop-warp>\nThe active goal has exceeded its budget, but the endless loop is active. Call the warp tool to continue in a new session.\n\nObjective: {{objective}}\n{{acceptanceClause}}\nLoop progress: {{sessionCount}} sessions, {{totalFlowsAcrossSessions}} flows, {{totalTokensAcrossSessions}}/{{maxTokens}} tokens.\n\nThe new session should inherit this context and resume work toward the objective.\n</flow-loop-warp>";
5
+ export declare const loopContinuationPromptTemplate = "<flow-continuation>\nContinue execution toward the active goal. This is an endless loop session.\n\nObjective: {{objective}}\n{{acceptanceClause}}\nProgress: {{flowCount}}{{maxFlowsClause}} flows in this session, {{tokenInfo}} tokens.\nLoop overall: {{sessionCount}} sessions, {{totalTokensAcrossSessions}} tokens total.\n\nLatest user message: {{userMessage}}\n\nCall the flow tool with an appropriate type to advance, or call the warp tool to hand off to a fresh session if budget is exceeded. Only the user can end a goal. Keep finding improvements that advance the objective.\n</flow-continuation>";
6
+ export declare const loopWakeupTemplate = "<flow-wakeup>\nThe user has been idle. Review the active goal and find safe, conservative improvements that advance it. This is an endless loop session.\n\nObjective: {{objective}}\n{{acceptanceClause}}\nProgress: {{flowCount}}/{{maxFlows}} flows in this session, {{totalTokens}} tokens.\nLoop overall: {{sessionCount}} sessions, {{totalTokensAcrossSessions}} tokens total.\n\nGuidance:\n- Focus on safe, incremental improvements \u2014 do not refactor large areas or make risky changes.\n- Prefer verification, testing, and documentation over new features.\n- If you find potential issues, investigate with scout or audit before making changes.\n- You cannot end this goal. Only the user can end a goal.\n\nCall the flow tool with the appropriate flow type to continue, or call the warp tool to hand off to a fresh session if budget is exceeded.\n</flow-wakeup>";
7
+ //# sourceMappingURL=loop-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-templates.d.ts","sourceRoot":"","sources":["../../src/flow/loop-templates.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,eAAO,MAAM,uBAAuB,6aAQlB,CAAC;AAEnB,eAAO,MAAM,8BAA8B,8lBAWtB,CAAC;AAEtB,eAAO,MAAM,kBAAkB,m2BAWhB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { loopOverallClause, sharedWakeupGuidance } from "./template-shared.js";
2
+ /**
3
+ * Runtime template strings for endless loop prompts.
4
+ */
5
+ export const autoWarpTriggerTemplate = `<flow-loop-warp>
6
+ The active goal has exceeded its budget, but the endless loop is active. Call the warp tool to continue in a new session.
7
+
8
+ Objective: {{objective}}
9
+ {{acceptanceClause}}
10
+ Loop progress: {{sessionCount}} sessions, {{totalFlowsAcrossSessions}} flows, {{totalTokensAcrossSessions}}/{{maxTokens}} tokens.
11
+
12
+ The new session should inherit this context and resume work toward the objective.
13
+ </flow-loop-warp>`;
14
+ export const loopContinuationPromptTemplate = `<flow-continuation>
15
+ Continue execution toward the active goal. This is an endless loop session.
16
+
17
+ Objective: {{objective}}
18
+ {{acceptanceClause}}
19
+ Progress: {{flowCount}}{{maxFlowsClause}} flows in this session, {{tokenInfo}} tokens.
20
+ ${loopOverallClause}
21
+
22
+ Latest user message: {{userMessage}}
23
+
24
+ Call the flow tool with an appropriate type to advance, or call the warp tool to hand off to a fresh session if budget is exceeded. Only the user can end a goal. Keep finding improvements that advance the objective.
25
+ </flow-continuation>`;
26
+ export const loopWakeupTemplate = `<flow-wakeup>
27
+ The user has been idle. Review the active goal and find safe, conservative improvements that advance it. This is an endless loop session.
28
+
29
+ Objective: {{objective}}
30
+ {{acceptanceClause}}
31
+ Progress: {{flowCount}}/{{maxFlows}} flows in this session, {{totalTokens}} tokens.
32
+ ${loopOverallClause}
33
+
34
+ ${sharedWakeupGuidance}
35
+
36
+ Call the flow tool with the appropriate flow type to continue, or call the warp tool to hand off to a fresh session if budget is exceeded.
37
+ </flow-wakeup>`;
38
+ //# sourceMappingURL=loop-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-templates.js","sourceRoot":"","sources":["../../src/flow/loop-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE/E;;GAEG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;kBAQrB,CAAC;AAEnB,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;EAM5C,iBAAiB;;;;;qBAKE,CAAC;AAEtB,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;EAMhC,iBAAiB;;EAEjB,oBAAoB;;;eAGP,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Endless loop state management.
3
+ *
4
+ * A loop spans multiple sessions toward a persistent objective.
5
+ */
6
+ import type { LoopState, LoopTerminationReason } from "./types.js";
7
+ export declare function getLoop(cwd: string): LoopState | undefined;
8
+ export declare function enableLoop(cwd: string, objective: string): LoopState;
9
+ export declare function disableLoop(cwd: string): LoopState | undefined;
10
+ export declare function resetLoop(cwd: string): LoopState | undefined;
11
+ export declare function terminateLoop(cwd: string, reason: LoopTerminationReason): LoopState | undefined;
12
+ export declare function recordSessionWarp(cwd: string): LoopState | undefined;
13
+ export declare function setPendingWarpSessionId(cwd: string, sessionId: string): LoopState | undefined;
14
+ export declare function clearPendingWarpSessionId(cwd: string): LoopState | undefined;
15
+ /** Directly set loop state (test helper). */
16
+ export declare function setLoop(cwd: string, loop: LoopState): void;
17
+ /** Remove loop state (test helper). */
18
+ export declare function clearLoop(cwd: string): void;
19
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/flow/loop.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnE,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAG1D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAepE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAM9D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAW5D;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,GAC5B,SAAS,GAAG,SAAS,CAQvB;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAMpE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAO7F;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAM5E;AAED,6CAA6C;AAC7C,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAI1D;AAED,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3C"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Endless loop state management.
3
+ *
4
+ * A loop spans multiple sessions toward a persistent objective.
5
+ */
6
+ import { readState, writeState } from "./store.js";
7
+ export function getLoop(cwd) {
8
+ const state = readState(cwd);
9
+ return state.loop;
10
+ }
11
+ export function enableLoop(cwd, objective) {
12
+ const state = readState(cwd);
13
+ if (!state.current) {
14
+ throw new Error("Cannot enable loop: no active goal.");
15
+ }
16
+ const loop = {
17
+ objective,
18
+ status: "active",
19
+ sessionCount: 1,
20
+ totalTokensAcrossSessions: 0,
21
+ totalFlowsAcrossSessions: 0,
22
+ };
23
+ state.loop = loop;
24
+ writeState(cwd, state);
25
+ return loop;
26
+ }
27
+ export function disableLoop(cwd) {
28
+ const state = readState(cwd);
29
+ if (!state.loop)
30
+ return undefined;
31
+ state.loop.status = "paused";
32
+ writeState(cwd, state);
33
+ return state.loop;
34
+ }
35
+ export function resetLoop(cwd) {
36
+ const state = readState(cwd);
37
+ if (!state.loop)
38
+ return undefined;
39
+ state.loop.status = "active";
40
+ state.loop.sessionCount = 0;
41
+ state.loop.totalTokensAcrossSessions = 0;
42
+ state.loop.totalFlowsAcrossSessions = 0;
43
+ delete state.loop.terminatedAt;
44
+ delete state.loop.terminationReason;
45
+ writeState(cwd, state);
46
+ return state.loop;
47
+ }
48
+ export function terminateLoop(cwd, reason) {
49
+ const state = readState(cwd);
50
+ if (!state.loop)
51
+ return undefined;
52
+ state.loop.status = "terminated";
53
+ state.loop.terminationReason = reason;
54
+ state.loop.terminatedAt = new Date().toISOString();
55
+ writeState(cwd, state);
56
+ return state.loop;
57
+ }
58
+ export function recordSessionWarp(cwd) {
59
+ const state = readState(cwd);
60
+ if (!state.loop || state.loop.status !== "active")
61
+ return undefined;
62
+ state.loop.sessionCount += 1;
63
+ writeState(cwd, state);
64
+ return state.loop;
65
+ }
66
+ export function setPendingWarpSessionId(cwd, sessionId) {
67
+ const state = readState(cwd);
68
+ if (!state.loop)
69
+ return undefined;
70
+ state.loop.pendingWarpSessionId = sessionId;
71
+ state.loop.status = "active";
72
+ writeState(cwd, state);
73
+ return state.loop;
74
+ }
75
+ export function clearPendingWarpSessionId(cwd) {
76
+ const state = readState(cwd);
77
+ if (!state.loop)
78
+ return undefined;
79
+ delete state.loop.pendingWarpSessionId;
80
+ writeState(cwd, state);
81
+ return state.loop;
82
+ }
83
+ /** Directly set loop state (test helper). */
84
+ export function setLoop(cwd, loop) {
85
+ const state = readState(cwd);
86
+ state.loop = loop;
87
+ writeState(cwd, state);
88
+ }
89
+ /** Remove loop state (test helper). */
90
+ export function clearLoop(cwd) {
91
+ const state = readState(cwd);
92
+ delete state.loop;
93
+ writeState(cwd, state);
94
+ }
95
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/flow/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Auto-warp pipeline for the endless loop.
3
+ *
4
+ * performWarp — distill context, create a new session, seed it.
5
+ * distillForWarp — shared LLM distillation logic.
6
+ */
7
+ import type { ExtensionCommandContext } from "@mariozechner/pi-coding-agent";
8
+ import type { GoalEntry, LoopState } from "./types.js";
9
+ export interface WarpFlow {
10
+ type: string;
11
+ intent: string;
12
+ aim: string;
13
+ }
14
+ export interface DistillOptions {
15
+ signal?: AbortSignal;
16
+ userGoalOverride?: string;
17
+ }
18
+ export declare function distillForWarp(ctx: ExtensionCommandContext, goalEntry: GoalEntry | undefined, loop: LoopState | undefined, opts?: DistillOptions): Promise<string>;
19
+ export interface PerformWarpOptions {
20
+ reviewedPrompt?: string;
21
+ signal?: AbortSignal;
22
+ goalOverride?: string;
23
+ }
24
+ export declare function performWarp(ctx: ExtensionCommandContext, warpFlow: WarpFlow, opts?: PerformWarpOptions): Promise<{
25
+ success: boolean;
26
+ error?: string;
27
+ }>;
28
+ //# sourceMappingURL=perform-warp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perform-warp.d.ts","sourceRoot":"","sources":["../../src/flow/perform-warp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAO7E,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,IAAI,EAAE,SAAS,GAAG,SAAS,EAC3B,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CAsEjB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,uBAAuB,EAC5B,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE,kBAAkB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgE/C"}