@selesai/code 0.9.6 → 0.9.8
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/CHANGELOG.md +13 -0
- package/dist/cli/credential-print.js +4 -4
- package/dist/cli.js +0 -0
- package/dist/core/agent-session-runtime.js +1 -4
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.js +26 -0
- package/dist/core/compaction/branch-summarization.js +30 -30
- package/dist/core/compaction/compaction.js +81 -81
- package/dist/core/compaction/utils.js +2 -2
- package/dist/core/export-html/template.css +1066 -1066
- package/dist/core/export-html/template.html +55 -55
- package/dist/core/export-html/template.js +1864 -1864
- package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
- package/dist/core/export-html/vendor/marked.min.js +78 -78
- package/dist/core/handoff.d.ts +11 -0
- package/dist/core/handoff.js +49 -0
- package/dist/core/messages.js +7 -7
- package/dist/extensions/context-compaction-reminder.test.ts +82 -82
- package/dist/extensions/context-compaction-reminder.ts +28 -28
- package/dist/extensions/handoff-new.ts +14 -75
- package/dist/extensions/pi-intercom/LICENSE +21 -21
- package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
- package/dist/extensions/pi-intercom/broker/extension.test.ts +387 -387
- package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
- package/dist/extensions/pi-intercom/broker/paths.test.ts +153 -153
- package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
- package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
- package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
- package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
- package/dist/extensions/pi-intercom/cwd.ts +31 -31
- package/dist/extensions/pi-intercom/extension-api.ts +44 -44
- package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
- package/dist/extensions/pi-intercom/format-context.ts +32 -32
- package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
- package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
- package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
- package/dist/extensions/pi-powerline-footer/bash-mode/shell-session.ts +286 -286
- package/dist/extensions/pi-powerline-footer/bash-mode/transcript.ts +108 -108
- package/dist/extensions/pi-powerline-footer/separators.ts +57 -57
- package/dist/extensions/pi-powerline-footer/tests/session-usage.test.ts +47 -47
- package/dist/extensions/pi-powerline-footer/tests/tps.test.ts +39 -39
- package/dist/extensions/pi-powerline-footer/theme.example.json +24 -24
- package/dist/extensions/pi-powerline-footer/theme.json +12 -12
- package/dist/extensions/pi-powerline-footer/tps.ts +345 -345
- package/dist/extensions/pi-rewind-hook/README.md +245 -245
- package/dist/extensions/pi-rewind-hook/index.ts +1445 -1445
- package/dist/extensions/pi-rewind-hook/package.json +29 -29
- package/dist/extensions/pi-subagents/install.mjs +0 -0
- package/dist/extensions/pi-web-agent/package.json +31 -31
- package/dist/extensions/pi-web-agent/src/backends/config.ts +205 -205
- package/dist/extensions/pi-web-agent/src/backends/doctor.ts +136 -136
- package/dist/extensions/pi-web-agent/src/backends/factory.ts +152 -152
- package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
- package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
- package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
- package/dist/extensions/pi-web-agent/src/commands/web-agent-config.ts +946 -946
- package/dist/extensions/pi-web-agent/src/extension.ts +126 -126
- package/dist/extensions/pi-web-agent/src/extract/readability.ts +118 -118
- package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
- package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
- package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
- package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
- package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
- package/dist/extensions/pi-web-agent/src/orchestration/candidate-selector.ts +50 -50
- package/dist/extensions/pi-web-agent/src/orchestration/direct-url.ts +52 -52
- package/dist/extensions/pi-web-agent/src/orchestration/evidence-quality.ts +105 -105
- package/dist/extensions/pi-web-agent/src/orchestration/evidence-ranker.ts +45 -45
- package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
- package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
- package/dist/extensions/pi-web-agent/src/orchestration/research-orchestrator.ts +376 -376
- package/dist/extensions/pi-web-agent/src/orchestration/research-types.ts +64 -64
- package/dist/extensions/pi-web-agent/src/orchestration/research-worker.ts +181 -181
- package/dist/extensions/pi-web-agent/src/orchestration/source-profile.ts +101 -101
- package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
- package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
- package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
- package/dist/extensions/pi-web-agent/src/presentation/explore-presentation.ts +61 -61
- package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
- package/dist/extensions/pi-web-agent/src/presentation/search-presentation.ts +41 -41
- package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
- package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
- package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
- package/dist/extensions/pi-web-agent/src/search/duckduckgo.ts +72 -72
- package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
- package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
- package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-search.ts +157 -157
- package/dist/extensions/pi-web-agent/src/types.ts +88 -88
- package/dist/extensions/ponytail/package.json +8 -8
- package/dist/extensions/question/batch.ts +103 -103
- package/dist/extensions/question/constants.ts +30 -30
- package/dist/extensions/question/helpers.ts +58 -58
- package/dist/extensions/question/navigation.ts +14 -14
- package/dist/extensions/question/package.json +19 -19
- package/dist/extensions/question/schemas.ts +43 -43
- package/dist/extensions/question/selection-mode.ts +46 -46
- package/dist/extensions/question/shortcuts.ts +44 -44
- package/dist/extensions/question/types.ts +132 -132
- package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
- package/dist/extensions/test-resolve-hook.mjs +6 -6
- package/dist/extensions/web-agent-onboarding.ts +222 -222
- package/dist/extensions/workflow/package.json +17 -17
- package/dist/modes/rpc/rpc-mode.js +24 -0
- package/dist/modes/rpc/rpc-types.d.ts +19 -0
- package/dist/package-manager-cli.js +71 -71
- package/dist/rpc-entry.js +0 -0
- package/dist/skills/agent-browser/SKILL.md +52 -52
- package/dist/skills/batch-grill-me/SKILL.md +19 -19
- package/dist/skills/grill-me/SKILL.md +10 -10
- package/dist/skills/handoff/SKILL.md +16 -16
- package/dist/skills/handoff-text/SKILL.md +14 -14
- package/dist/skills/implanger/SKILL.md +69 -69
- package/dist/skills/improve-codebase/REFERENCE.md +78 -78
- package/dist/skills/improve-codebase/SKILL.md +178 -178
- package/dist/skills/planger/SKILL.md +166 -166
- package/dist/skills/ponytail/SKILL.md +116 -116
- package/dist/skills/ponytail-audit/SKILL.md +42 -42
- package/dist/skills/ponytail-debt/SKILL.md +45 -45
- package/dist/skills/ponytail-gain/SKILL.md +51 -51
- package/dist/skills/ponytail-help/SKILL.md +70 -70
- package/dist/skills/ponytail-review/SKILL.md +58 -58
- package/dist/skills/selesai-handoff/SKILL.md +20 -20
- package/dist/skills/workflow-creation/SKILL.md +73 -73
- package/dist/themes/powerline-footer/theme.json +33 -33
- package/docs/compaction.md +396 -396
- package/docs/containerization.md +111 -111
- package/docs/development.md +71 -71
- package/docs/docs.json +164 -164
- package/docs/environment-variables.md +86 -86
- package/docs/index.md +83 -83
- package/docs/json.md +82 -82
- package/docs/models.md +502 -502
- package/docs/packages.md +227 -227
- package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
- package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
- package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
- package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
- package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
- package/docs/prompt-templates.md +95 -95
- package/docs/providers.md +293 -293
- package/docs/sdk.md +1143 -1143
- package/docs/security.md +59 -59
- package/docs/session-format.md +414 -414
- package/docs/sessions.md +145 -145
- package/docs/shared-host-extensions.md +109 -109
- package/docs/shell-aliases.md +13 -13
- package/docs/skills.md +231 -231
- package/docs/terminal-setup.md +142 -142
- package/docs/termux.md +127 -127
- package/docs/themes.md +295 -295
- package/docs/tmux.md +63 -63
- package/docs/tui.md +927 -927
- package/docs/windows.md +17 -17
- package/examples/README.md +25 -25
- package/examples/extensions/README.md +211 -211
- package/examples/extensions/auto-commit-on-exit.ts +49 -49
- package/examples/extensions/bash-spawn-hook.ts +30 -30
- package/examples/extensions/bookmark.ts +50 -50
- package/examples/extensions/border-status-editor.ts +150 -150
- package/examples/extensions/built-in-tool-renderer.ts +249 -249
- package/examples/extensions/claude-rules.ts +86 -86
- package/examples/extensions/commands.ts +72 -72
- package/examples/extensions/confirm-destructive.ts +59 -59
- package/examples/extensions/custom-compaction.ts +130 -130
- package/examples/extensions/custom-footer.ts +64 -64
- package/examples/extensions/custom-header.ts +73 -73
- package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
- package/examples/extensions/custom-provider-anthropic/package.json +19 -19
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
- package/examples/extensions/dirty-repo-guard.ts +56 -56
- package/examples/extensions/doom-overlay/README.md +46 -46
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -152
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
- package/examples/extensions/doom-overlay/doom-component.ts +132 -132
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
- package/examples/extensions/doom-overlay/index.ts +74 -74
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
- package/examples/extensions/dynamic-resources/SKILL.md +8 -8
- package/examples/extensions/dynamic-resources/dynamic.json +79 -79
- package/examples/extensions/dynamic-resources/dynamic.md +5 -5
- package/examples/extensions/dynamic-resources/index.ts +15 -15
- package/examples/extensions/dynamic-tools.ts +74 -74
- package/examples/extensions/event-bus.ts +43 -43
- package/examples/extensions/file-trigger.ts +41 -41
- package/examples/extensions/git-checkpoint.ts +53 -53
- package/examples/extensions/git-merge-and-resolve.ts +115 -115
- package/examples/extensions/github-issue-autocomplete.ts +185 -185
- package/examples/extensions/gondolin/index.ts +531 -531
- package/examples/extensions/gondolin/package-lock.json +185 -185
- package/examples/extensions/gondolin/package.json +19 -19
- package/examples/extensions/handoff.ts +199 -199
- package/examples/extensions/hello.ts +26 -26
- package/examples/extensions/hidden-thinking-label.ts +53 -53
- package/examples/extensions/inline-bash.ts +94 -94
- package/examples/extensions/input-transform-streaming.ts +39 -39
- package/examples/extensions/input-transform.ts +43 -43
- package/examples/extensions/interactive-shell.ts +196 -196
- package/examples/extensions/mac-system-theme.ts +47 -47
- package/examples/extensions/message-renderer.ts +59 -59
- package/examples/extensions/minimal-mode.ts +426 -426
- package/examples/extensions/modal-editor.ts +85 -85
- package/examples/extensions/model-status.ts +31 -31
- package/examples/extensions/notify.ts +55 -55
- package/examples/extensions/overlay-qa-tests.ts +1450 -1450
- package/examples/extensions/overlay-test.ts +153 -153
- package/examples/extensions/permission-gate.ts +34 -34
- package/examples/extensions/pirate.ts +47 -47
- package/examples/extensions/plan-mode/README.md +66 -66
- package/examples/extensions/plan-mode/index.ts +390 -390
- package/examples/extensions/plan-mode/utils.ts +168 -168
- package/examples/extensions/preset.ts +436 -436
- package/examples/extensions/project-trust.ts +64 -64
- package/examples/extensions/prompt-customizer.ts +97 -97
- package/examples/extensions/protected-paths.ts +30 -30
- package/examples/extensions/provider-payload.ts +18 -18
- package/examples/extensions/qna.ts +122 -122
- package/examples/extensions/question.ts +285 -285
- package/examples/extensions/questionnaire.ts +448 -448
- package/examples/extensions/rainbow-editor.ts +88 -88
- package/examples/extensions/reload-runtime.ts +37 -37
- package/examples/extensions/rpc-demo.ts +118 -118
- package/examples/extensions/sandbox/index.ts +321 -321
- package/examples/extensions/sandbox/package-lock.json +92 -92
- package/examples/extensions/sandbox/package.json +19 -19
- package/examples/extensions/send-user-message.ts +97 -97
- package/examples/extensions/session-name.ts +27 -27
- package/examples/extensions/shutdown-command.ts +63 -63
- package/examples/extensions/snake.ts +343 -343
- package/examples/extensions/space-invaders.ts +560 -560
- package/examples/extensions/ssh.ts +220 -220
- package/examples/extensions/status-line.ts +32 -32
- package/examples/extensions/structured-output.ts +65 -65
- package/examples/extensions/subagent/README.md +175 -175
- package/examples/extensions/subagent/agents/planner.md +37 -37
- package/examples/extensions/subagent/agents/reviewer.md +35 -35
- package/examples/extensions/subagent/agents/scout.md +50 -50
- package/examples/extensions/subagent/agents/worker.md +24 -24
- package/examples/extensions/subagent/agents.ts +126 -126
- package/examples/extensions/subagent/index.ts +1015 -1015
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
- package/examples/extensions/subagent/prompts/implement.md +10 -10
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
- package/examples/extensions/summarize.ts +209 -209
- package/examples/extensions/system-prompt-header.ts +17 -17
- package/examples/extensions/tic-tac-toe.ts +1008 -1008
- package/examples/extensions/timed-confirm.ts +70 -70
- package/examples/extensions/titlebar-spinner.ts +58 -58
- package/examples/extensions/todo.ts +297 -297
- package/examples/extensions/tool-override.ts +144 -144
- package/examples/extensions/tools.ts +146 -146
- package/examples/extensions/trigger-compact.ts +50 -50
- package/examples/extensions/truncated-tool.ts +195 -195
- package/examples/extensions/widget-placement.ts +9 -9
- package/examples/extensions/with-deps/index.ts +32 -32
- package/examples/extensions/with-deps/package-lock.json +31 -31
- package/examples/extensions/with-deps/package.json +22 -22
- package/examples/extensions/working-indicator.ts +123 -123
- package/examples/extensions/working-message-test.ts +25 -25
- package/examples/rpc-extension-ui.ts +632 -632
- package/examples/sdk/01-minimal.ts +26 -26
- package/examples/sdk/02-custom-model.ts +53 -53
- package/examples/sdk/03-custom-prompt.ts +75 -75
- package/examples/sdk/04-skills.ts +55 -55
- package/examples/sdk/05-tools.ts +48 -48
- package/examples/sdk/06-extensions.ts +99 -99
- package/examples/sdk/07-context-files.ts +47 -47
- package/examples/sdk/08-prompt-templates.ts +51 -51
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
- package/examples/sdk/10-settings.ts +53 -53
- package/examples/sdk/11-sessions.ts +52 -52
- package/examples/sdk/12-full-control.ts +79 -79
- package/examples/sdk/13-session-runtime.ts +67 -67
- package/examples/sdk/README.md +144 -144
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@selesai/code` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.9.8] - 2026-08-25
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **RPC session handoff.** RPC clients can now use `handoff_new` to summarize the current session and start a clean child session seeded with the generated handoff, optionally tailored to a goal.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **Shared handoff generation.** Handoff context and summary generation now live in reusable core code shared by the TUI extension and RPC mode.
|
|
12
|
+
|
|
13
|
+
## [0.9.7] - 2026-08-25
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **RPC queue state and replacement.** RPC `get_state` now exposes pending steering and follow-up messages, and the new `replace_queue` command replaces both queues while preserving their routing. Parent sessions created through RPC are now passed directly to the session manager.
|
|
17
|
+
|
|
5
18
|
## [0.9.6] - 2026-08-23
|
|
6
19
|
|
|
7
20
|
### Fixed
|
|
@@ -7,10 +7,10 @@ export function isCredentialPrintHelp(args) {
|
|
|
7
7
|
return (args[0] === "auth" && (args[1] === undefined || args[1] === "help" || args[1] === "--help" || args[1] === "-h"));
|
|
8
8
|
}
|
|
9
9
|
export function printCredentialPrintHelp() {
|
|
10
|
-
console.log(`Usage:
|
|
11
|
-
${APP_NAME} auth print-api-key --model <model> [--provider <provider>]
|
|
12
|
-
${APP_NAME} auth print-bearer-token --model <model> [--provider <provider>] [--min-expiry <duration>]
|
|
13
|
-
|
|
10
|
+
console.log(`Usage:
|
|
11
|
+
${APP_NAME} auth print-api-key --model <model> [--provider <provider>]
|
|
12
|
+
${APP_NAME} auth print-bearer-token --model <model> [--provider <provider>] [--min-expiry <duration>]
|
|
13
|
+
|
|
14
14
|
Prints the configured credential alone on stdout. Provider inference uses configured credentials; specify --provider to select explicitly. Bearer tokens have a 30-minute minimum expiry by default. --min-expiry accepts ms, s, m, or h (for example, 30m).`);
|
|
15
15
|
}
|
|
16
16
|
/** Parse the auth command surface before normal startup. */
|
package/dist/cli.js
CHANGED
|
File without changes
|
|
@@ -152,11 +152,8 @@ export class AgentSessionRuntime {
|
|
|
152
152
|
const previousSessionFile = this.session.sessionFile;
|
|
153
153
|
const sessionDir = this.session.sessionManager.getSessionDir();
|
|
154
154
|
const sessionManager = this.session.sessionManager.isPersisted()
|
|
155
|
-
? SessionManager.create(this.cwd, sessionDir)
|
|
155
|
+
? SessionManager.create(this.cwd, sessionDir, { parentSession: options?.parentSession })
|
|
156
156
|
: SessionManager.inMemory(this.cwd);
|
|
157
|
-
if (options?.parentSession) {
|
|
158
|
-
sessionManager.newSession({ parentSession: options.parentSession });
|
|
159
|
-
}
|
|
160
157
|
await this.teardownCurrent("new", sessionManager.getSessionFile());
|
|
161
158
|
this.apply(await this.createRuntime({
|
|
162
159
|
cwd: this.cwd,
|
|
@@ -458,6 +458,8 @@ export declare class AgentSession {
|
|
|
458
458
|
steering: string[];
|
|
459
459
|
followUp: string[];
|
|
460
460
|
};
|
|
461
|
+
/** Replace pending messages without changing their steer/follow-up routing. */
|
|
462
|
+
replaceQueue(steering: readonly string[], followUp: readonly string[]): void;
|
|
461
463
|
/** Number of pending messages (includes both steering and follow-up) */
|
|
462
464
|
get pendingMessageCount(): number;
|
|
463
465
|
/** Get pending steering messages (read-only) */
|
|
@@ -972,6 +972,21 @@ export class AgentSession {
|
|
|
972
972
|
this._systemPromptOverride = undefined;
|
|
973
973
|
this.agent.state.systemPrompt = this._baseSystemPrompt;
|
|
974
974
|
}
|
|
975
|
+
// Another prompt may have started while this one was preflighting (auth
|
|
976
|
+
// checks, compaction, and extension events can take seconds). The agent is
|
|
977
|
+
// now streaming, so queue instead of racing the active run: the RPC layer
|
|
978
|
+
// has already reported preflight success, so throwing here would silently
|
|
979
|
+
// drop the message. Default to a follow-up so it runs after the current turn.
|
|
980
|
+
if (this.isStreaming) {
|
|
981
|
+
if (options?.streamingBehavior === "steer") {
|
|
982
|
+
await this._queueSteer(expandedText, currentImages);
|
|
983
|
+
}
|
|
984
|
+
else {
|
|
985
|
+
await this._queueFollowUp(expandedText, currentImages);
|
|
986
|
+
}
|
|
987
|
+
preflightResult?.(true);
|
|
988
|
+
return;
|
|
989
|
+
}
|
|
975
990
|
}
|
|
976
991
|
catch (error) {
|
|
977
992
|
preflightResult?.(false);
|
|
@@ -1363,6 +1378,17 @@ export class AgentSession {
|
|
|
1363
1378
|
this._emitQueueUpdate();
|
|
1364
1379
|
return { steering, followUp };
|
|
1365
1380
|
}
|
|
1381
|
+
/** Replace pending messages without changing their steer/follow-up routing. */
|
|
1382
|
+
replaceQueue(steering, followUp) {
|
|
1383
|
+
this._steeringMessages = [...steering];
|
|
1384
|
+
this._followUpMessages = [...followUp];
|
|
1385
|
+
this.agent.clearAllQueues();
|
|
1386
|
+
for (const text of steering)
|
|
1387
|
+
this.agent.steer({ role: "user", content: [{ type: "text", text }], timestamp: Date.now() });
|
|
1388
|
+
for (const text of followUp)
|
|
1389
|
+
this.agent.followUp({ role: "user", content: [{ type: "text", text }], timestamp: Date.now() });
|
|
1390
|
+
this._emitQueueUpdate();
|
|
1391
|
+
}
|
|
1366
1392
|
/** Number of pending messages (includes both steering and follow-up) */
|
|
1367
1393
|
get pendingMessageCount() {
|
|
1368
1394
|
return this._steeringMessages.length + this._followUpMessages.length;
|
|
@@ -146,37 +146,37 @@ export function prepareBranchEntries(entries, tokenBudget = 0) {
|
|
|
146
146
|
// ============================================================================
|
|
147
147
|
// Summary Generation
|
|
148
148
|
// ============================================================================
|
|
149
|
-
const BRANCH_SUMMARY_PREAMBLE = `The user explored a different conversation branch before returning here.
|
|
150
|
-
Summary of that exploration:
|
|
151
|
-
|
|
149
|
+
const BRANCH_SUMMARY_PREAMBLE = `The user explored a different conversation branch before returning here.
|
|
150
|
+
Summary of that exploration:
|
|
151
|
+
|
|
152
152
|
`;
|
|
153
|
-
const BRANCH_SUMMARY_PROMPT = `Create a structured summary of this conversation branch for context when returning later.
|
|
154
|
-
|
|
155
|
-
Use this EXACT format:
|
|
156
|
-
|
|
157
|
-
## Goal
|
|
158
|
-
[What was the user trying to accomplish in this branch?]
|
|
159
|
-
|
|
160
|
-
## Constraints & Preferences
|
|
161
|
-
- [Any constraints, preferences, or requirements mentioned]
|
|
162
|
-
- [Or "(none)" if none were mentioned]
|
|
163
|
-
|
|
164
|
-
## Progress
|
|
165
|
-
### Done
|
|
166
|
-
- [x] [Completed tasks/changes]
|
|
167
|
-
|
|
168
|
-
### In Progress
|
|
169
|
-
- [ ] [Work that was started but not finished]
|
|
170
|
-
|
|
171
|
-
### Blocked
|
|
172
|
-
- [Issues preventing progress, if any]
|
|
173
|
-
|
|
174
|
-
## Key Decisions
|
|
175
|
-
- **[Decision]**: [Brief rationale]
|
|
176
|
-
|
|
177
|
-
## Next Steps
|
|
178
|
-
1. [What should happen next to continue this work]
|
|
179
|
-
|
|
153
|
+
const BRANCH_SUMMARY_PROMPT = `Create a structured summary of this conversation branch for context when returning later.
|
|
154
|
+
|
|
155
|
+
Use this EXACT format:
|
|
156
|
+
|
|
157
|
+
## Goal
|
|
158
|
+
[What was the user trying to accomplish in this branch?]
|
|
159
|
+
|
|
160
|
+
## Constraints & Preferences
|
|
161
|
+
- [Any constraints, preferences, or requirements mentioned]
|
|
162
|
+
- [Or "(none)" if none were mentioned]
|
|
163
|
+
|
|
164
|
+
## Progress
|
|
165
|
+
### Done
|
|
166
|
+
- [x] [Completed tasks/changes]
|
|
167
|
+
|
|
168
|
+
### In Progress
|
|
169
|
+
- [ ] [Work that was started but not finished]
|
|
170
|
+
|
|
171
|
+
### Blocked
|
|
172
|
+
- [Issues preventing progress, if any]
|
|
173
|
+
|
|
174
|
+
## Key Decisions
|
|
175
|
+
- **[Decision]**: [Brief rationale]
|
|
176
|
+
|
|
177
|
+
## Next Steps
|
|
178
|
+
1. [What should happen next to continue this work]
|
|
179
|
+
|
|
180
180
|
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
181
181
|
/**
|
|
182
182
|
* Generate a summary of abandoned branch entries.
|
|
@@ -353,75 +353,75 @@ export function findCutPoint(entries, startIndex, endIndex, keepRecentTokens) {
|
|
|
353
353
|
// ============================================================================
|
|
354
354
|
// Summarization
|
|
355
355
|
// ============================================================================
|
|
356
|
-
const SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.
|
|
357
|
-
|
|
358
|
-
Use this EXACT format:
|
|
359
|
-
|
|
360
|
-
## Goal
|
|
361
|
-
[What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
|
|
362
|
-
|
|
363
|
-
## Constraints & Preferences
|
|
364
|
-
- [Any constraints, preferences, or requirements mentioned by user]
|
|
365
|
-
- [Or "(none)" if none were mentioned]
|
|
366
|
-
|
|
367
|
-
## Progress
|
|
368
|
-
### Done
|
|
369
|
-
- [x] [Completed tasks/changes]
|
|
370
|
-
|
|
371
|
-
### In Progress
|
|
372
|
-
- [ ] [Current work]
|
|
373
|
-
|
|
374
|
-
### Blocked
|
|
375
|
-
- [Issues preventing progress, if any]
|
|
376
|
-
|
|
377
|
-
## Key Decisions
|
|
378
|
-
- **[Decision]**: [Brief rationale]
|
|
379
|
-
|
|
380
|
-
## Next Steps
|
|
381
|
-
1. [Ordered list of what should happen next]
|
|
382
|
-
|
|
383
|
-
## Critical Context
|
|
384
|
-
- [Any data, examples, or references needed to continue]
|
|
385
|
-
- [Or "(none)" if not applicable]
|
|
386
|
-
|
|
356
|
+
const SUMMARIZATION_PROMPT = `The messages above are a conversation to summarize. Create a structured context checkpoint summary that another LLM will use to continue the work.
|
|
357
|
+
|
|
358
|
+
Use this EXACT format:
|
|
359
|
+
|
|
360
|
+
## Goal
|
|
361
|
+
[What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
|
|
362
|
+
|
|
363
|
+
## Constraints & Preferences
|
|
364
|
+
- [Any constraints, preferences, or requirements mentioned by user]
|
|
365
|
+
- [Or "(none)" if none were mentioned]
|
|
366
|
+
|
|
367
|
+
## Progress
|
|
368
|
+
### Done
|
|
369
|
+
- [x] [Completed tasks/changes]
|
|
370
|
+
|
|
371
|
+
### In Progress
|
|
372
|
+
- [ ] [Current work]
|
|
373
|
+
|
|
374
|
+
### Blocked
|
|
375
|
+
- [Issues preventing progress, if any]
|
|
376
|
+
|
|
377
|
+
## Key Decisions
|
|
378
|
+
- **[Decision]**: [Brief rationale]
|
|
379
|
+
|
|
380
|
+
## Next Steps
|
|
381
|
+
1. [Ordered list of what should happen next]
|
|
382
|
+
|
|
383
|
+
## Critical Context
|
|
384
|
+
- [Any data, examples, or references needed to continue]
|
|
385
|
+
- [Or "(none)" if not applicable]
|
|
386
|
+
|
|
387
387
|
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
388
|
-
const UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.
|
|
389
|
-
|
|
390
|
-
Update the existing structured summary with new information. RULES:
|
|
391
|
-
- PRESERVE all existing information from the previous summary
|
|
392
|
-
- ADD new progress, decisions, and context from the new messages
|
|
393
|
-
- UPDATE the Progress section: move items from "In Progress" to "Done" when completed
|
|
394
|
-
- UPDATE "Next Steps" based on what was accomplished
|
|
395
|
-
- PRESERVE exact file paths, function names, and error messages
|
|
396
|
-
- If something is no longer relevant, you may remove it
|
|
397
|
-
|
|
398
|
-
Use this EXACT format:
|
|
399
|
-
|
|
400
|
-
## Goal
|
|
401
|
-
[Preserve existing goals, add new ones if the task expanded]
|
|
402
|
-
|
|
403
|
-
## Constraints & Preferences
|
|
404
|
-
- [Preserve existing, add new ones discovered]
|
|
405
|
-
|
|
406
|
-
## Progress
|
|
407
|
-
### Done
|
|
408
|
-
- [x] [Include previously done items AND newly completed items]
|
|
409
|
-
|
|
410
|
-
### In Progress
|
|
411
|
-
- [ ] [Current work - update based on progress]
|
|
412
|
-
|
|
413
|
-
### Blocked
|
|
414
|
-
- [Current blockers - remove if resolved]
|
|
415
|
-
|
|
416
|
-
## Key Decisions
|
|
417
|
-
- **[Decision]**: [Brief rationale] (preserve all previous, add new)
|
|
418
|
-
|
|
419
|
-
## Next Steps
|
|
420
|
-
1. [Update based on current state]
|
|
421
|
-
|
|
422
|
-
## Critical Context
|
|
423
|
-
- [Preserve important context, add new if needed]
|
|
424
|
-
|
|
388
|
+
const UPDATE_SUMMARIZATION_PROMPT = `The messages above are NEW conversation messages to incorporate into the existing summary provided in <previous-summary> tags.
|
|
389
|
+
|
|
390
|
+
Update the existing structured summary with new information. RULES:
|
|
391
|
+
- PRESERVE all existing information from the previous summary
|
|
392
|
+
- ADD new progress, decisions, and context from the new messages
|
|
393
|
+
- UPDATE the Progress section: move items from "In Progress" to "Done" when completed
|
|
394
|
+
- UPDATE "Next Steps" based on what was accomplished
|
|
395
|
+
- PRESERVE exact file paths, function names, and error messages
|
|
396
|
+
- If something is no longer relevant, you may remove it
|
|
397
|
+
|
|
398
|
+
Use this EXACT format:
|
|
399
|
+
|
|
400
|
+
## Goal
|
|
401
|
+
[Preserve existing goals, add new ones if the task expanded]
|
|
402
|
+
|
|
403
|
+
## Constraints & Preferences
|
|
404
|
+
- [Preserve existing, add new ones discovered]
|
|
405
|
+
|
|
406
|
+
## Progress
|
|
407
|
+
### Done
|
|
408
|
+
- [x] [Include previously done items AND newly completed items]
|
|
409
|
+
|
|
410
|
+
### In Progress
|
|
411
|
+
- [ ] [Current work - update based on progress]
|
|
412
|
+
|
|
413
|
+
### Blocked
|
|
414
|
+
- [Current blockers - remove if resolved]
|
|
415
|
+
|
|
416
|
+
## Key Decisions
|
|
417
|
+
- **[Decision]**: [Brief rationale] (preserve all previous, add new)
|
|
418
|
+
|
|
419
|
+
## Next Steps
|
|
420
|
+
1. [Update based on current state]
|
|
421
|
+
|
|
422
|
+
## Critical Context
|
|
423
|
+
- [Preserve important context, add new if needed]
|
|
424
|
+
|
|
425
425
|
Keep each section concise. Preserve exact file paths, function names, and error messages.`;
|
|
426
426
|
function createSummarizationOptions(model, maxTokens, apiKey, headers, env, signal, thinkingLevel) {
|
|
427
427
|
const options = { maxTokens, signal, apiKey, headers, env };
|
|
@@ -559,19 +559,19 @@ export function prepareCompaction(pathEntries, settings) {
|
|
|
559
559
|
// ============================================================================
|
|
560
560
|
// Main compaction function
|
|
561
561
|
// ============================================================================
|
|
562
|
-
const TURN_PREFIX_SUMMARIZATION_PROMPT = `This is the PREFIX of a turn that was too large to keep. The SUFFIX (recent work) is retained.
|
|
563
|
-
|
|
564
|
-
Summarize the prefix to provide context for the retained suffix:
|
|
565
|
-
|
|
566
|
-
## Original Request
|
|
567
|
-
[What did the user ask for in this turn?]
|
|
568
|
-
|
|
569
|
-
## Early Progress
|
|
570
|
-
- [Key decisions and work done in the prefix]
|
|
571
|
-
|
|
572
|
-
## Context for Suffix
|
|
573
|
-
- [Information needed to understand the retained recent work]
|
|
574
|
-
|
|
562
|
+
const TURN_PREFIX_SUMMARIZATION_PROMPT = `This is the PREFIX of a turn that was too large to keep. The SUFFIX (recent work) is retained.
|
|
563
|
+
|
|
564
|
+
Summarize the prefix to provide context for the retained suffix:
|
|
565
|
+
|
|
566
|
+
## Original Request
|
|
567
|
+
[What did the user ask for in this turn?]
|
|
568
|
+
|
|
569
|
+
## Early Progress
|
|
570
|
+
- [Key decisions and work done in the prefix]
|
|
571
|
+
|
|
572
|
+
## Context for Suffix
|
|
573
|
+
- [Information needed to understand the retained recent work]
|
|
574
|
+
|
|
575
575
|
Be concise. Focus on what's needed to understand the kept suffix.`;
|
|
576
576
|
/**
|
|
577
577
|
* Generate summaries for compaction using prepared data.
|
|
@@ -136,6 +136,6 @@ export function serializeConversation(messages) {
|
|
|
136
136
|
// ============================================================================
|
|
137
137
|
// Summarization System Prompt
|
|
138
138
|
// ============================================================================
|
|
139
|
-
export const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.
|
|
140
|
-
|
|
139
|
+
export const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.
|
|
140
|
+
|
|
141
141
|
Do NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.`;
|