@selesai/code 0.4.0 → 0.5.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.
- package/dist/core/agent-session-auto-handoff.test.d.ts +2 -0
- package/dist/core/agent-session-auto-handoff.test.d.ts.map +1 -0
- package/dist/core/agent-session-auto-handoff.test.js +161 -0
- package/dist/core/agent-session-auto-handoff.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +4 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +43 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/settings-manager-auto-handoff.test.d.ts +2 -0
- package/dist/core/settings-manager-auto-handoff.test.d.ts.map +1 -0
- package/dist/core/settings-manager-auto-handoff.test.js +29 -0
- package/dist/core/settings-manager-auto-handoff.test.js.map +1 -0
- package/dist/core/settings-manager.d.ts +9 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +22 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/extensions/context-compaction-reminder.ts +1 -1
- package/dist/extensions/pi-powerline-footer/index.ts +43 -2
- package/dist/extensions/pi-powerline-footer/session-usage.ts +44 -0
- package/dist/extensions/pi-powerline-footer/tests/session-usage.test.ts +47 -0
- package/dist/extensions/pi-subagents/README.md +1 -1
- package/dist/extensions/pi-subagents/agents/architect.md +150 -22
- package/dist/extensions/pi-subagents/agents/builder.md +1 -1
- package/dist/extensions/pi-subagents/agents/commentator.md +2 -2
- package/dist/extensions/pi-subagents/agents/explorer.md +2 -3
- package/dist/extensions/pi-subagents/agents/recapper.md +2 -2
- package/dist/extensions/pi-subagents/agents/researcher.md +2 -2
- package/dist/extensions/pi-subagents/src/agents/agents.ts +46 -0
- package/dist/extensions/pi-subagents/src/extension/index.ts +2 -1
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +2 -0
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +24 -0
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +25 -1
- package/dist/extensions/workflow/adapter.ts +34 -174
- package/dist/extensions/workflow/modes/prototype.ts +12 -14
- package/dist/extensions/workflow/modes/quick.ts +12 -14
- package/dist/extensions/workflow/modes/task.ts +8 -5
- package/dist/extensions/workflow/state-machine.ts +3 -0
- package/dist/extensions/workflow/task-validators.ts +69 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +20 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +8 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +8 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +12 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +14 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +20 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/workflows.md +9 -4
- package/package.json +1 -1
|
@@ -291,11 +291,48 @@ export class AgentSession {
|
|
|
291
291
|
try {
|
|
292
292
|
await this._extensionRunner.emit({ type: "agent_settled" });
|
|
293
293
|
this._emit({ type: "agent_settled" });
|
|
294
|
+
await this._checkAutoHandoff();
|
|
294
295
|
}
|
|
295
296
|
finally {
|
|
296
297
|
this._resolveIdleWaitIfIdle();
|
|
297
298
|
}
|
|
298
299
|
}
|
|
300
|
+
_autoHandoffTriggered = false;
|
|
301
|
+
async _checkAutoHandoff() {
|
|
302
|
+
if (!this.settingsManager.getAutoHandoffEnabled())
|
|
303
|
+
return;
|
|
304
|
+
const usage = this.getContextUsage();
|
|
305
|
+
if (!usage || usage.tokens === null)
|
|
306
|
+
return;
|
|
307
|
+
const threshold = this.settingsManager.getAutoHandoffThresholdTokens();
|
|
308
|
+
if (usage.tokens < threshold) {
|
|
309
|
+
this._autoHandoffTriggered = false;
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (this._autoHandoffTriggered)
|
|
313
|
+
return;
|
|
314
|
+
this._autoHandoffTriggered = true;
|
|
315
|
+
// handoff-new requires interactive mode (uses editor/dialog UI).
|
|
316
|
+
// ponytail: _extensionMode is set to "tui" by InteractiveMode.bindCurrentSessionExtensions()
|
|
317
|
+
// before the first prompt runs, so by the time _emitAgentSettled() calls this the mode is
|
|
318
|
+
// reliable. Default "print" only applies before extensions are bound.
|
|
319
|
+
if (this._extensionMode !== "tui")
|
|
320
|
+
return;
|
|
321
|
+
const command = this._extensionRunner.getCommand("handoff-new");
|
|
322
|
+
if (!command)
|
|
323
|
+
return;
|
|
324
|
+
const ctx = this._extensionRunner.createCommandContext();
|
|
325
|
+
try {
|
|
326
|
+
await command.handler("", ctx);
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
this._extensionRunner.emitError({
|
|
330
|
+
extensionPath: "command:handoff-new",
|
|
331
|
+
event: "auto-handoff",
|
|
332
|
+
error: err instanceof Error ? err.message : String(err),
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
}
|
|
299
336
|
// Track last assistant message for auto-compaction check
|
|
300
337
|
_lastAssistantMessage = undefined;
|
|
301
338
|
/** Internal handler for agent events - shared by subscribe and reconnect */
|
|
@@ -1724,6 +1761,12 @@ export class AgentSession {
|
|
|
1724
1761
|
get autoCompactionEnabled() {
|
|
1725
1762
|
return this.settingsManager.getCompactionEnabled();
|
|
1726
1763
|
}
|
|
1764
|
+
get autoHandoffEnabled() {
|
|
1765
|
+
return this.settingsManager.getAutoHandoffEnabled();
|
|
1766
|
+
}
|
|
1767
|
+
get autoHandoffThresholdTokens() {
|
|
1768
|
+
return this.settingsManager.getAutoHandoffThresholdTokens();
|
|
1769
|
+
}
|
|
1727
1770
|
async bindExtensions(bindings) {
|
|
1728
1771
|
if (bindings.uiContext !== undefined) {
|
|
1729
1772
|
this._extensionUIContext = bindings.uiContext;
|