@bastani/atomic 0.9.13-alpha.2 → 0.9.13-alpha.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.
- package/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/dist/builtin/i-have-adhd/package.json +1 -1
- package/dist/builtin/intercom/CHANGELOG.md +14 -0
- package/dist/builtin/intercom/README.md +12 -12
- package/dist/builtin/intercom/incoming-message-delivery.ts +1 -1
- package/dist/builtin/intercom/index.ts +1 -1
- package/dist/builtin/intercom/intercom-tool.ts +1 -1
- package/dist/builtin/intercom/intercom-utils.ts +3 -6
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/result-renderers.ts +1 -1
- package/dist/builtin/intercom/session-target.ts +1 -15
- package/dist/builtin/intercom/skills/intercom/SKILL.md +6 -6
- package/dist/builtin/intercom/terminal-ordering-barrier.ts +2 -2
- package/dist/builtin/intercom/ui/inline-message.ts +7 -5
- package/dist/builtin/intercom/ui/session-list.ts +23 -10
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +19 -0
- package/dist/builtin/subagents/README.md +29 -73
- package/dist/builtin/subagents/package.json +2 -2
- package/dist/builtin/subagents/prompts/parallel-cleanup.md +1 -1
- package/dist/builtin/subagents/prompts/parallel-review.md +1 -1
- package/dist/builtin/subagents/prompts/review-loop.md +2 -2
- package/dist/builtin/subagents/skills/subagent/SKILL.md +23 -59
- package/dist/builtin/subagents/skills/tmux/SKILL.md +1 -1
- package/dist/builtin/subagents/src/extension/control-notices.ts +2 -3
- package/dist/builtin/subagents/src/extension/doctor.ts +2 -14
- package/dist/builtin/subagents/src/extension/fanout-child.ts +1 -17
- package/dist/builtin/subagents/src/extension/index.ts +9 -70
- package/dist/builtin/subagents/src/extension/notification-content.ts +1 -1
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +2 -2
- package/dist/builtin/subagents/src/extension/schemas.ts +2 -8
- package/dist/builtin/subagents/src/extension/tool-description.ts +2 -3
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +1 -1
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +5 -46
- package/dist/builtin/subagents/src/runs/{background → foreground}/completion-notification.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +25 -88
- package/dist/builtin/subagents/src/runs/{background → foreground}/notify.ts +5 -5
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +11 -28
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +3 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +0 -5
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +30 -20
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +4 -4
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +0 -13
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +104 -48
- package/dist/builtin/subagents/src/runs/inprocess/index.ts +1 -1
- package/dist/builtin/subagents/src/runs/inprocess/runner.ts +5 -5
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-api.ts +0 -7
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-core.ts +0 -10
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-projection.ts +3 -108
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-sanitize.ts +0 -4
- package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +1 -1
- package/dist/builtin/subagents/src/shared/formatters.ts +3 -5
- package/dist/builtin/subagents/src/shared/model-resolution.ts +78 -0
- package/dist/builtin/subagents/src/shared/status-format.ts +4 -11
- package/dist/builtin/subagents/src/shared/types-config.ts +10 -9
- package/dist/builtin/subagents/src/shared/types-nested.ts +127 -0
- package/dist/builtin/subagents/src/shared/types-results.ts +2 -8
- package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -9
- package/dist/builtin/subagents/src/shared/types.ts +1 -1
- package/dist/builtin/subagents/src/shared/utils.ts +1 -109
- package/dist/builtin/subagents/src/slash/slash-commands.ts +7 -17
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +2 -252
- package/dist/builtin/subagents/src/tui/render-layout.ts +4 -4
- package/dist/builtin/subagents/src/tui/render-result.ts +0 -9
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -34
- package/dist/builtin/subagents/src/tui/render.ts +0 -2
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +12 -0
- package/dist/builtin/workflows/README.md +3 -3
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/durable/backend.ts +11 -0
- package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +63 -25
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +166 -25
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +42 -24
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +2 -1
- package/dist/builtin/workflows/src/durable/run-timing.ts +28 -7
- package/dist/builtin/workflows/src/durable/scoped-backend.ts +4 -0
- package/dist/builtin/workflows/src/durable/targeted-inspection.ts +110 -0
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +2 -2
- package/dist/builtin/workflows/src/engine/runtime.ts +19 -2
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +3 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +680 -152
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +6 -0
- package/dist/builtin/workflows/src/extension/ui-surface.ts +2 -0
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +6 -1
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +18 -10
- package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +31 -16
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +75 -3
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +53 -6
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +5 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +94 -60
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-context.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +7 -7
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +25 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +2 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +142 -4
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +2 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-session-heartbeat.ts +88 -0
- package/dist/builtin/workflows/src/tui/run-detail.ts +25 -12
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +1 -0
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +16 -5
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +2 -1
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +8 -4
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +5 -0
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-summary.d.ts +21 -0
- package/dist/core/agent-session-summary.d.ts.map +1 -0
- package/dist/core/agent-session-summary.js +156 -0
- package/dist/core/agent-session-summary.js.map +1 -0
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +0 -4
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +0 -2
- package/dist/core/agent-session-transfer.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +6 -0
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session.d.ts +7 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +8 -5
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.js +2 -2
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/index.d.ts +1 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +1 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/session-summarization.d.ts +41 -0
- package/dist/core/compaction/session-summarization.d.ts.map +1 -0
- package/dist/core/compaction/session-summarization.js +97 -0
- package/dist/core/compaction/session-summarization.js.map +1 -0
- package/dist/core/extensions/ui-types.d.ts +2 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +3 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +9 -1
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +24 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js +48 -0
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-list.js +10 -0
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +10 -1
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +3 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +5 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-types.d.ts +4 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.js +2 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/bash.d.ts +0 -15
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +3 -81
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/fetch-url.d.ts +12 -0
- package/dist/core/tools/fetch-url.d.ts.map +1 -1
- package/dist/core/tools/fetch-url.js +76 -10
- package/dist/core/tools/fetch-url.js.map +1 -1
- package/dist/core/tools/index.js +4 -4
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/session-temp-dir.d.ts +2 -2
- package/dist/core/tools/session-temp-dir.d.ts.map +1 -1
- package/dist/core/tools/session-temp-dir.js +6 -7
- package/dist/core/tools/session-temp-dir.js.map +1 -1
- package/dist/core/usage-totals.js +1 -1
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-session-picker.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-session-picker.js +1 -0
- package/dist/modes/interactive/components/host-session-picker.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.js +29 -4
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-content.js +6 -0
- package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +4 -1
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/docs/environment-variables.md +1 -1
- package/docs/intercom.md +20 -21
- package/docs/quickstart.md +5 -1
- package/docs/sdk.md +1 -1
- package/docs/session-format.md +15 -0
- package/docs/sessions.md +8 -0
- package/docs/settings.md +6 -0
- package/docs/subagents.md +19 -31
- package/docs/tools.md +3 -5
- package/docs/usage.md +1 -1
- package/docs/windows.md +1 -1
- package/docs/workflows.md +60 -32
- package/npm-shrinkwrap.json +29 -29
- package/package.json +2 -2
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +0 -331
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +0 -161
- package/dist/builtin/subagents/src/runs/inprocess/background-single.ts +0 -195
- package/dist/builtin/subagents/src/runs/inprocess/background.ts +0 -90
- package/dist/builtin/subagents/src/shared/types-async.ts +0 -247
- package/dist/builtin/subagents/src/tui/render-widget-graph.ts +0 -217
- package/dist/builtin/subagents/src/tui/render-widget.ts +0 -366
- package/dist/core/async/format.d.ts +0 -3
- package/dist/core/async/format.d.ts.map +0 -1
- package/dist/core/async/format.js +0 -52
- package/dist/core/async/format.js.map +0 -1
- package/dist/core/async/job-manager.d.ts +0 -40
- package/dist/core/async/job-manager.d.ts.map +0 -1
- package/dist/core/async/job-manager.js +0 -293
- package/dist/core/async/job-manager.js.map +0 -1
- package/dist/core/async/session-manager.d.ts +0 -16
- package/dist/core/async/session-manager.d.ts.map +0 -1
- package/dist/core/async/session-manager.js +0 -34
- package/dist/core/async/session-manager.js.map +0 -1
- package/dist/core/async/types.d.ts +0 -23
- package/dist/core/async/types.d.ts.map +0 -1
- package/dist/core/async/types.js +0 -2
- package/dist/core/async/types.js.map +0 -1
- package/dist/core/tools/bash-async-execution.d.ts +0 -27
- package/dist/core/tools/bash-async-execution.d.ts.map +0 -1
- package/dist/core/tools/bash-async-execution.js +0 -81
- package/dist/core/tools/bash-async-execution.js.map +0 -1
- package/dist/core/tools/bash-async-jobs.d.ts +0 -30
- package/dist/core/tools/bash-async-jobs.d.ts.map +0 -1
- package/dist/core/tools/bash-async-jobs.js +0 -87
- package/dist/core/tools/bash-async-jobs.js.map +0 -1
- package/dist/core/tools/bash-async-output.d.ts +0 -13
- package/dist/core/tools/bash-async-output.d.ts.map +0 -1
- package/dist/core/tools/bash-async-output.js +0 -122
- package/dist/core/tools/bash-async-output.js.map +0 -1
|
@@ -78,6 +78,54 @@ export function createSessionInfoEntry(name, byId, parentId) {
|
|
|
78
78
|
name: name.trim(),
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
+
export function createSessionSummaryEntry(summary, summarizedThroughId, usage, byId, parentId) {
|
|
82
|
+
return {
|
|
83
|
+
type: "session_summary",
|
|
84
|
+
...entryBase(byId, parentId),
|
|
85
|
+
summary: summary.trim(),
|
|
86
|
+
summarizedThroughId,
|
|
87
|
+
usage,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Anchor for a session summary: the newest user/assistant message entry.
|
|
92
|
+
*
|
|
93
|
+
* Both sides of the freshness check call this so they cannot drift apart. Tool results and
|
|
94
|
+
* non-message entries are ignored, and an assistant turn made only of tool calls still counts —
|
|
95
|
+
* it carries no text, but it is a real conversation step.
|
|
96
|
+
*/
|
|
97
|
+
export function getLastConversationMessageId(entries) {
|
|
98
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
99
|
+
const entry = entries[i];
|
|
100
|
+
if (entry.type !== "message")
|
|
101
|
+
continue;
|
|
102
|
+
const role = entry.message.role;
|
|
103
|
+
if (role === "user" || role === "assistant")
|
|
104
|
+
return entry.id;
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Latest generated resume summary that has not been retired, entry and all.
|
|
110
|
+
*
|
|
111
|
+
* Returns the entry rather than its text: callers need `summarizedThroughId` alongside the
|
|
112
|
+
* summary to decide whether it still describes the conversation.
|
|
113
|
+
*
|
|
114
|
+
* A `branch_summary` written afterwards retires it, because the branch it described was
|
|
115
|
+
* abandoned. Both the picker and the generation guard call this, so a retired summary is hidden
|
|
116
|
+
* from the picker *and* lets a replacement be generated; splitting the two rules leaves such a
|
|
117
|
+
* session showing fallback text forever.
|
|
118
|
+
*/
|
|
119
|
+
export function getLatestSessionSummary(entries) {
|
|
120
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
121
|
+
const entry = entries[i];
|
|
122
|
+
if (entry.type === "branch_summary")
|
|
123
|
+
return undefined;
|
|
124
|
+
if (entry.type === "session_summary")
|
|
125
|
+
return entry;
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
81
129
|
export function getLatestSessionName(entries) {
|
|
82
130
|
// Walk entries in reverse to find the latest session_info entry.
|
|
83
131
|
// Empty names explicitly clear the session title.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager-entries.js","sourceRoot":"","sources":["../../src/core/session-manager-entries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { join } from \"path\";\nimport type { VerbatimCompactionDetails } from \"./compaction/compaction-types.js\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport { validSessionWorkflowMetadata } from \"./session-manager-classification.ts\";\nimport {\n\ttype BranchSummaryEntry,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\ttype LabelEntry,\n\ttype ModelChangeEntry,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfoEntry,\n\ttype SessionMessageEntry,\n\ttype SessionWorkflowMetadata,\n\ttype ThinkingLevelChangeEntry,\n} from \"./session-manager-types.ts\";\nimport { generateId } from \"./session-manager-validation.ts\";\n\nfunction entryBase(\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): Pick<SessionEntryBase, \"id\" | \"parentId\" | \"timestamp\"> {\n\treturn {\n\t\tid: generateId(byId),\n\t\tparentId,\n\t\ttimestamp: new Date().toISOString(),\n\t};\n}\n\nexport function createSessionHeader(\n\tid: string,\n\tcwd: string,\n\ttimestamp: string = new Date().toISOString(),\n\tparentSession?: string,\n\tinternal?: boolean,\n\tworkflow?: SessionWorkflowMetadata,\n): SessionHeader {\n\tconst header: SessionHeader = {\n\t\ttype: \"session\",\n\t\tversion: CURRENT_SESSION_VERSION,\n\t\tid,\n\t\ttimestamp,\n\t\tcwd,\n\t};\n\tif (parentSession !== undefined) header.parentSession = parentSession;\n\tconst validWorkflow = internal === true ? validSessionWorkflowMetadata(workflow) : undefined;\n\tif (validWorkflow) {\n\t\theader.internal = true;\n\t\theader.workflow = validWorkflow;\n\t}\n\treturn header;\n}\n\nexport function createSessionFilePath(sessionDir: string, timestamp: string, sessionId: string): string {\n\tconst fileTimestamp = timestamp.replace(/[:.]/g, \"-\");\n\treturn join(sessionDir, `${fileTimestamp}_${sessionId}.jsonl`);\n}\n\nexport function createMessageEntry(\n\tmessage: Message | CustomMessage | BashExecutionMessage,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): SessionMessageEntry {\n\treturn {\n\t\ttype: \"message\",\n\t\t...entryBase(byId, parentId),\n\t\tmessage,\n\t};\n}\n\nexport function createThinkingLevelChangeEntry(\n\tthinkingLevel: string,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): ThinkingLevelChangeEntry {\n\treturn {\n\t\ttype: \"thinking_level_change\",\n\t\t...entryBase(byId, parentId),\n\t\tthinkingLevel,\n\t};\n}\n\nexport function createModelChangeEntry(\n\tprovider: string,\n\tmodelId: string,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): ModelChangeEntry {\n\treturn {\n\t\ttype: \"model_change\",\n\t\t...entryBase(byId, parentId),\n\t\tprovider,\n\t\tmodelId,\n\t};\n}\n\nexport function createCompactionEntry(\n\tcompactedText: string,\n\tfirstKeptEntryId: string | null,\n\ttokensBefore: number,\n\tdetails: VerbatimCompactionDetails,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): CompactionEntry<VerbatimCompactionDetails> {\n\treturn {\n\t\ttype: \"compaction\",\n\t\t...entryBase(byId, parentId),\n\t\tsummary: compactedText,\n\t\tfirstKeptEntryId,\n\t\ttokensBefore,\n\t\tdetails,\n\t\tfromHook: details.rung === \"extension\" || undefined,\n\t};\n}\n\nexport function createCustomEntry(\n\tcustomType: string,\n\tdata: unknown,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): CustomEntry {\n\treturn {\n\t\ttype: \"custom\",\n\t\tcustomType,\n\t\tdata,\n\t\t...entryBase(byId, parentId),\n\t};\n}\n\nexport function createSessionInfoEntry(\n\tname: string,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): SessionInfoEntry {\n\treturn {\n\t\ttype: \"session_info\",\n\t\t...entryBase(byId, parentId),\n\t\tname: name.trim(),\n\t};\n}\n\nexport function getLatestSessionName(entries: SessionEntry[]): string | undefined {\n\t// Walk entries in reverse to find the latest session_info entry.\n\t// Empty names explicitly clear the session title.\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"session_info\") {\n\t\t\treturn entry.name?.trim() || undefined;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function createCustomMessageEntry<T = unknown>(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: T | undefined,\n\texcludeFromContext: boolean | undefined,\n\tprotectedReconciliation: CustomMessageEntry[\"protectedReconciliation\"],\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n\tstageAdmissionKey?: string,\n): CustomMessageEntry<T> {\n\treturn {\n\t\ttype: \"custom_message\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\t...(excludeFromContext === true ? { excludeFromContext: true } : {}),\n\t\t...(stageAdmissionKey === undefined ? {} : { stageAdmissionKey }),\n\t\t...(protectedReconciliation === undefined ? {} : { protectedReconciliation }),\n\t\t...entryBase(byId, parentId),\n\t};\n}\n\nexport function createLabelEntry(\n\ttargetId: string,\n\tlabel: string | undefined,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n\ttimestamp?: string,\n): LabelEntry {\n\treturn {\n\t\ttype: \"label\",\n\t\t...entryBase(byId, parentId),\n\t\t...(timestamp !== undefined ? { timestamp } : {}),\n\t\ttargetId,\n\t\tlabel,\n\t};\n}\n\nexport function createBranchSummaryEntry(\n\tbranchFromId: string | null,\n\tsummary: string,\n\tdetails: unknown,\n\tusage: Usage | undefined,\n\tfromHook: boolean | undefined,\n\tbyId: { has(id: string): boolean },\n): BranchSummaryEntry {\n\treturn {\n\t\ttype: \"branch_summary\",\n\t\t...entryBase(byId, branchFromId),\n\t\tfromId: branchFromId ?? \"root\",\n\t\tsummary,\n\t\tdetails,\n\t\tusage,\n\t\tfromHook,\n\t};\n}\n\nexport function getEntriesWithoutHeader(fileEntries: FileEntry[]): SessionEntry[] {\n\treturn fileEntries.filter((entry): entry is SessionEntry => entry.type !== \"session\");\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-manager-entries.js","sourceRoot":"","sources":["../../src/core/session-manager-entries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent, Usage } from \"@earendil-works/pi-ai/compat\";\nimport { join } from \"path\";\nimport type { VerbatimCompactionDetails } from \"./compaction/compaction-types.js\";\nimport type { BashExecutionMessage, CustomMessage } from \"./messages.ts\";\nimport { validSessionWorkflowMetadata } from \"./session-manager-classification.ts\";\nimport {\n\ttype BranchSummaryEntry,\n\ttype CompactionEntry,\n\tCURRENT_SESSION_VERSION,\n\ttype CustomEntry,\n\ttype CustomMessageEntry,\n\ttype FileEntry,\n\ttype LabelEntry,\n\ttype ModelChangeEntry,\n\ttype SessionEntry,\n\ttype SessionEntryBase,\n\ttype SessionHeader,\n\ttype SessionInfoEntry,\n\ttype SessionMessageEntry,\n\ttype SessionSummaryEntry,\n\ttype SessionWorkflowMetadata,\n\ttype ThinkingLevelChangeEntry,\n} from \"./session-manager-types.ts\";\nimport { generateId } from \"./session-manager-validation.ts\";\n\nfunction entryBase(\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): Pick<SessionEntryBase, \"id\" | \"parentId\" | \"timestamp\"> {\n\treturn {\n\t\tid: generateId(byId),\n\t\tparentId,\n\t\ttimestamp: new Date().toISOString(),\n\t};\n}\n\nexport function createSessionHeader(\n\tid: string,\n\tcwd: string,\n\ttimestamp: string = new Date().toISOString(),\n\tparentSession?: string,\n\tinternal?: boolean,\n\tworkflow?: SessionWorkflowMetadata,\n): SessionHeader {\n\tconst header: SessionHeader = {\n\t\ttype: \"session\",\n\t\tversion: CURRENT_SESSION_VERSION,\n\t\tid,\n\t\ttimestamp,\n\t\tcwd,\n\t};\n\tif (parentSession !== undefined) header.parentSession = parentSession;\n\tconst validWorkflow = internal === true ? validSessionWorkflowMetadata(workflow) : undefined;\n\tif (validWorkflow) {\n\t\theader.internal = true;\n\t\theader.workflow = validWorkflow;\n\t}\n\treturn header;\n}\n\nexport function createSessionFilePath(sessionDir: string, timestamp: string, sessionId: string): string {\n\tconst fileTimestamp = timestamp.replace(/[:.]/g, \"-\");\n\treturn join(sessionDir, `${fileTimestamp}_${sessionId}.jsonl`);\n}\n\nexport function createMessageEntry(\n\tmessage: Message | CustomMessage | BashExecutionMessage,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): SessionMessageEntry {\n\treturn {\n\t\ttype: \"message\",\n\t\t...entryBase(byId, parentId),\n\t\tmessage,\n\t};\n}\n\nexport function createThinkingLevelChangeEntry(\n\tthinkingLevel: string,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): ThinkingLevelChangeEntry {\n\treturn {\n\t\ttype: \"thinking_level_change\",\n\t\t...entryBase(byId, parentId),\n\t\tthinkingLevel,\n\t};\n}\n\nexport function createModelChangeEntry(\n\tprovider: string,\n\tmodelId: string,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): ModelChangeEntry {\n\treturn {\n\t\ttype: \"model_change\",\n\t\t...entryBase(byId, parentId),\n\t\tprovider,\n\t\tmodelId,\n\t};\n}\n\nexport function createCompactionEntry(\n\tcompactedText: string,\n\tfirstKeptEntryId: string | null,\n\ttokensBefore: number,\n\tdetails: VerbatimCompactionDetails,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): CompactionEntry<VerbatimCompactionDetails> {\n\treturn {\n\t\ttype: \"compaction\",\n\t\t...entryBase(byId, parentId),\n\t\tsummary: compactedText,\n\t\tfirstKeptEntryId,\n\t\ttokensBefore,\n\t\tdetails,\n\t\tfromHook: details.rung === \"extension\" || undefined,\n\t};\n}\n\nexport function createCustomEntry(\n\tcustomType: string,\n\tdata: unknown,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): CustomEntry {\n\treturn {\n\t\ttype: \"custom\",\n\t\tcustomType,\n\t\tdata,\n\t\t...entryBase(byId, parentId),\n\t};\n}\n\nexport function createSessionInfoEntry(\n\tname: string,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): SessionInfoEntry {\n\treturn {\n\t\ttype: \"session_info\",\n\t\t...entryBase(byId, parentId),\n\t\tname: name.trim(),\n\t};\n}\n\nexport function createSessionSummaryEntry(\n\tsummary: string,\n\tsummarizedThroughId: string,\n\tusage: Usage | undefined,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n): SessionSummaryEntry {\n\treturn {\n\t\ttype: \"session_summary\",\n\t\t...entryBase(byId, parentId),\n\t\tsummary: summary.trim(),\n\t\tsummarizedThroughId,\n\t\tusage,\n\t};\n}\n\n/**\n * Anchor for a session summary: the newest user/assistant message entry.\n *\n * Both sides of the freshness check call this so they cannot drift apart. Tool results and\n * non-message entries are ignored, and an assistant turn made only of tool calls still counts —\n * it carries no text, but it is a real conversation step.\n */\nexport function getLastConversationMessageId(entries: FileEntry[]): string | undefined {\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type !== \"message\") continue;\n\t\tconst role = entry.message.role;\n\t\tif (role === \"user\" || role === \"assistant\") return entry.id;\n\t}\n\treturn undefined;\n}\n\n/**\n * Latest generated resume summary that has not been retired, entry and all.\n *\n * Returns the entry rather than its text: callers need `summarizedThroughId` alongside the\n * summary to decide whether it still describes the conversation.\n *\n * A `branch_summary` written afterwards retires it, because the branch it described was\n * abandoned. Both the picker and the generation guard call this, so a retired summary is hidden\n * from the picker *and* lets a replacement be generated; splitting the two rules leaves such a\n * session showing fallback text forever.\n */\nexport function getLatestSessionSummary(entries: FileEntry[]): SessionSummaryEntry | undefined {\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"branch_summary\") return undefined;\n\t\tif (entry.type === \"session_summary\") return entry;\n\t}\n\treturn undefined;\n}\n\nexport function getLatestSessionName(entries: SessionEntry[]): string | undefined {\n\t// Walk entries in reverse to find the latest session_info entry.\n\t// Empty names explicitly clear the session title.\n\tfor (let i = entries.length - 1; i >= 0; i--) {\n\t\tconst entry = entries[i];\n\t\tif (entry.type === \"session_info\") {\n\t\t\treturn entry.name?.trim() || undefined;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function createCustomMessageEntry<T = unknown>(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: T | undefined,\n\texcludeFromContext: boolean | undefined,\n\tprotectedReconciliation: CustomMessageEntry[\"protectedReconciliation\"],\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n\tstageAdmissionKey?: string,\n): CustomMessageEntry<T> {\n\treturn {\n\t\ttype: \"custom_message\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\t...(excludeFromContext === true ? { excludeFromContext: true } : {}),\n\t\t...(stageAdmissionKey === undefined ? {} : { stageAdmissionKey }),\n\t\t...(protectedReconciliation === undefined ? {} : { protectedReconciliation }),\n\t\t...entryBase(byId, parentId),\n\t};\n}\n\nexport function createLabelEntry(\n\ttargetId: string,\n\tlabel: string | undefined,\n\tbyId: { has(id: string): boolean },\n\tparentId: string | null,\n\ttimestamp?: string,\n): LabelEntry {\n\treturn {\n\t\ttype: \"label\",\n\t\t...entryBase(byId, parentId),\n\t\t...(timestamp !== undefined ? { timestamp } : {}),\n\t\ttargetId,\n\t\tlabel,\n\t};\n}\n\nexport function createBranchSummaryEntry(\n\tbranchFromId: string | null,\n\tsummary: string,\n\tdetails: unknown,\n\tusage: Usage | undefined,\n\tfromHook: boolean | undefined,\n\tbyId: { has(id: string): boolean },\n): BranchSummaryEntry {\n\treturn {\n\t\ttype: \"branch_summary\",\n\t\t...entryBase(byId, branchFromId),\n\t\tfromId: branchFromId ?? \"root\",\n\t\tsummary,\n\t\tdetails,\n\t\tusage,\n\t\tfromHook,\n\t};\n}\n\nexport function getEntriesWithoutHeader(fileEntries: FileEntry[]): SessionEntry[] {\n\treturn fileEntries.filter((entry): entry is SessionEntry => entry.type !== \"session\");\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager-list.d.ts","sourceRoot":"","sources":["../../src/core/session-manager-list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-manager-list.d.ts","sourceRoot":"","sources":["../../src/core/session-manager-list.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAIX,WAAW,EAEX,mBAAmB,EAEnB,MAAM,4BAA4B,CAAC;AAsMpC,wBAAsB,mBAAmB,CACxC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,mBAAmB,EAChC,cAAc,SAAI,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,UAAQ,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC,CA0BxB;AAED,wBAAsB,mBAAmB,CACxC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,mBAAmB,EAChC,eAAe,UAAQ,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB;AAED,wBAAsB,eAAe,CACpC,sBAAsB,CAAC,EAAE,MAAM,GAAG,mBAAmB,EACrD,UAAU,CAAC,EAAE,mBAAmB,EAChC,eAAe,UAAQ,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC,CAuDxB"}
|
|
@@ -5,6 +5,7 @@ import { getSessionsDir } from "../config.js";
|
|
|
5
5
|
import { yieldToEventLoopIfSlow } from "../utils/event-loop.js";
|
|
6
6
|
import { normalizePath, resolvePath } from "../utils/paths.js";
|
|
7
7
|
import { classifiedWorkflowMetadata } from "./session-manager-classification.js";
|
|
8
|
+
import { getLastConversationMessageId, getLatestSessionSummary } from "./session-manager-entries.js";
|
|
8
9
|
import { parseSessionEntries } from "./session-manager-migrations.js";
|
|
9
10
|
import { getDefaultSessionDir, getDefaultSessionDirPath } from "./session-manager-paths.js";
|
|
10
11
|
import { isInternalHeader, readSessionHeader, sessionCwdMatches } from "./session-manager-storage.js";
|
|
@@ -154,6 +155,14 @@ async function buildSessionInfo(filePath) {
|
|
|
154
155
|
const workflow = classifiedWorkflowMetadata(header);
|
|
155
156
|
const internal = workflow ? true : undefined;
|
|
156
157
|
const modified = getSessionModifiedDate(entries, header, stats.mtime);
|
|
158
|
+
// A summary describes the conversation up to one specific message. Anything newer makes it
|
|
159
|
+
// stale, and the picker falls back to the session name or the first message. Retirement by
|
|
160
|
+
// a later branch summary is handled inside getLatestSessionSummary, so the generation guard
|
|
161
|
+
// applies exactly the same rule.
|
|
162
|
+
const summaryEntry = getLatestSessionSummary(entries);
|
|
163
|
+
const summary = summaryEntry?.summarizedThroughId === getLastConversationMessageId(entries)
|
|
164
|
+
? summaryEntry?.summary
|
|
165
|
+
: undefined;
|
|
157
166
|
return {
|
|
158
167
|
path: filePath,
|
|
159
168
|
id: header.id,
|
|
@@ -166,6 +175,7 @@ async function buildSessionInfo(filePath) {
|
|
|
166
175
|
modified,
|
|
167
176
|
messageCount,
|
|
168
177
|
firstMessage: firstMessage || "(no messages)",
|
|
178
|
+
summary,
|
|
169
179
|
allMessagesText: allMessages.join(" "),
|
|
170
180
|
};
|
|
171
181
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager-list.js","sourceRoot":"","sources":["../../src/core/session-manager-list.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { Message, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { existsSync } from \"fs\";\nimport { readdir, readFile, stat } from \"fs/promises\";\nimport { join } from \"path\";\nimport { getSessionsDir } from \"../config.ts\";\nimport { yieldToEventLoopIfSlow } from \"../utils/event-loop.ts\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { classifiedWorkflowMetadata } from \"./session-manager-classification.ts\";\nimport { parseSessionEntries } from \"./session-manager-migrations.ts\";\nimport { getDefaultSessionDir, getDefaultSessionDirPath } from \"./session-manager-paths.ts\";\nimport { isInternalHeader, readSessionHeader, sessionCwdMatches } from \"./session-manager-storage.ts\";\nimport type {\n\tFileEntry,\n\tSessionEntryBase,\n\tSessionHeader,\n\tSessionInfo,\n\tSessionInfoEntry,\n\tSessionListProgress,\n\tSessionMessageEntry,\n} from \"./session-manager-types.ts\";\n\nfunction isMessageWithContent(message: AgentMessage): message is Message {\n\treturn typeof (message as Message).role === \"string\" && \"content\" in message;\n}\n\nfunction extractTextContent(message: Message): string {\n\tconst content = message.content;\n\tif (typeof content === \"string\") {\n\t\treturn content;\n\t}\n\treturn content\n\t\t.filter((block): block is TextContent => block.type === \"text\")\n\t\t.map((block) => block.text)\n\t\t.join(\" \");\n}\n\nfunction getLastActivityTime(entries: FileEntry[]): number | undefined {\n\tlet lastActivityTime: number | undefined;\n\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"message\") continue;\n\n\t\tconst message = (entry as SessionMessageEntry).message;\n\t\tif (!isMessageWithContent(message)) continue;\n\t\tif (message.role !== \"user\" && message.role !== \"assistant\") continue;\n\n\t\tconst msgTimestamp = (message as { timestamp?: number }).timestamp;\n\t\tif (typeof msgTimestamp === \"number\") {\n\t\t\tlastActivityTime = Math.max(lastActivityTime ?? 0, msgTimestamp);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst entryTimestamp = (entry as SessionEntryBase).timestamp;\n\t\tif (typeof entryTimestamp === \"string\") {\n\t\t\tconst t = new Date(entryTimestamp).getTime();\n\t\t\tif (!Number.isNaN(t)) {\n\t\t\t\tlastActivityTime = Math.max(lastActivityTime ?? 0, t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn lastActivityTime;\n}\n\nfunction getSessionModifiedDate(entries: FileEntry[], header: SessionHeader, statsMtime: Date): Date {\n\tconst lastActivityTime = getLastActivityTime(entries);\n\tif (typeof lastActivityTime === \"number\" && lastActivityTime > 0) {\n\t\treturn new Date(lastActivityTime);\n\t}\n\n\tconst headerTime = typeof header.timestamp === \"string\" ? new Date(header.timestamp).getTime() : NaN;\n\treturn !Number.isNaN(headerTime) ? new Date(headerTime) : statsMtime;\n}\n\n// A single very large transcript is parsed in bounded cooperative chunks so the\n// synchronous JSON.parse-per-line loop yields to terminal input, timers, and\n// render work instead of freezing the host. Smaller files stay on the cheaper\n// fully-synchronous fast path.\nconst COOPERATIVE_PARSE_CONTENT_BYTES = 512 * 1024;\nconst PARSE_YIELD_EVERY_LINES = 2000;\n\n// Directory listings walk files in bounded batches, yielding between batches so\n// large session folders cannot starve the event loop during a scan.\nconst LIST_FILE_BATCH_SIZE = 24;\n\nasync function parseSessionEntriesCooperatively(content: string): Promise<FileEntry[]> {\n\tconst entries: FileEntry[] = [];\n\tconst lines = content.trim().split(\"\\n\");\n\tlet startedAt = Date.now();\n\tfor (let index = 0; index < lines.length; index += 1) {\n\t\tconst line = lines[index]!;\n\t\tif (line.trim()) {\n\t\t\ttry {\n\t\t\t\tentries.push(JSON.parse(line) as FileEntry);\n\t\t\t} catch {\n\t\t\t\t// Skip malformed lines, matching parseSessionEntries.\n\t\t\t}\n\t\t}\n\t\tif ((index + 1) % PARSE_YIELD_EVERY_LINES === 0) {\n\t\t\tawait yieldToEventLoopIfSlow(startedAt);\n\t\t\tstartedAt = Date.now();\n\t\t}\n\t}\n\treturn entries;\n}\n\n/**\n * Parse + summarize session files in bounded batches, yielding between batches\n * so a large directory scan never blocks the TUI event loop. Progress is\n * reported per file via onFileDone, matching the previous eager Promise.all.\n */\nasync function mapSessionFilesCooperatively(\n\tfiles: readonly string[],\n\tincludeInternal: boolean,\n\tonFileDone: () => void,\n): Promise<(SessionInfo | null)[]> {\n\tconst results: (SessionInfo | null)[] = [];\n\tfor (let offset = 0; offset < files.length; offset += LIST_FILE_BATCH_SIZE) {\n\t\tconst batch = files.slice(offset, offset + LIST_FILE_BATCH_SIZE);\n\t\tconst startedAt = Date.now();\n\t\tconst batchResults = await Promise.all(\n\t\t\tbatch.map(async (file) => {\n\t\t\t\t// Prefilter via the header so hidden/internal sessions are skipped\n\t\t\t\t// before the expensive full-transcript parse in buildSessionInfo.\n\t\t\t\tif (!includeInternal && isInternalHeader(readSessionHeader(file))) {\n\t\t\t\t\tonFileDone();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst info = await buildSessionInfo(file);\n\t\t\t\tonFileDone();\n\t\t\t\treturn info;\n\t\t\t}),\n\t\t);\n\t\tfor (const info of batchResults) results.push(info);\n\t\tawait yieldToEventLoopIfSlow(startedAt);\n\t}\n\treturn results;\n}\n\nasync function buildSessionInfo(filePath: string): Promise<SessionInfo | null> {\n\ttry {\n\t\tconst content = await readFile(filePath, \"utf8\");\n\t\tconst entries =\n\t\t\tcontent.length > COOPERATIVE_PARSE_CONTENT_BYTES\n\t\t\t\t? await parseSessionEntriesCooperatively(content)\n\t\t\t\t: parseSessionEntries(content);\n\n\t\tif (entries.length === 0) return null;\n\t\tconst header = entries[0];\n\t\tif (header.type !== \"session\") return null;\n\n\t\tconst stats = await stat(filePath);\n\t\tlet messageCount = 0;\n\t\tlet firstMessage = \"\";\n\t\tconst allMessages: string[] = [];\n\t\tlet name: string | undefined;\n\n\t\tfor (const entry of entries) {\n\t\t\t// Extract session name (use latest, including explicit clears)\n\t\t\tif (entry.type === \"session_info\") {\n\t\t\t\tconst infoEntry = entry as SessionInfoEntry;\n\t\t\t\tname = infoEntry.name?.trim() || undefined;\n\t\t\t}\n\n\t\t\tif (entry.type !== \"message\") continue;\n\t\t\tmessageCount++;\n\n\t\t\tconst message = (entry as SessionMessageEntry).message;\n\t\t\tif (!isMessageWithContent(message)) continue;\n\t\t\tif (message.role !== \"user\" && message.role !== \"assistant\") continue;\n\n\t\t\tconst textContent = extractTextContent(message);\n\t\t\tif (!textContent) continue;\n\n\t\t\tallMessages.push(textContent);\n\t\t\tif (!firstMessage && message.role === \"user\") {\n\t\t\t\tfirstMessage = textContent;\n\t\t\t}\n\t\t}\n\n\t\tconst cwd = typeof (header as SessionHeader).cwd === \"string\" ? (header as SessionHeader).cwd : \"\";\n\t\tconst parentSessionPath = (header as SessionHeader).parentSession;\n\t\tconst workflow = classifiedWorkflowMetadata(header as SessionHeader);\n\t\tconst internal = workflow ? true : undefined;\n\n\t\tconst modified = getSessionModifiedDate(entries, header as SessionHeader, stats.mtime);\n\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tid: (header as SessionHeader).id,\n\t\t\tcwd,\n\t\t\tname,\n\t\t\tparentSessionPath,\n\t\t\t...(internal ? { internal } : {}),\n\t\t\t...(workflow ? { workflow } : {}),\n\t\t\tcreated: new Date((header as SessionHeader).timestamp),\n\t\t\tmodified,\n\t\t\tmessageCount,\n\t\t\tfirstMessage: firstMessage || \"(no messages)\",\n\t\t\tallMessagesText: allMessages.join(\" \"),\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport async function listSessionsFromDir(\n\tdir: string,\n\tonProgress?: SessionListProgress,\n\tprogressOffset = 0,\n\tprogressTotal?: number,\n\tincludeInternal = false,\n): Promise<SessionInfo[]> {\n\tconst sessions: SessionInfo[] = [];\n\tif (!existsSync(dir)) {\n\t\treturn sessions;\n\t}\n\n\ttry {\n\t\tconst dirEntries = await readdir(dir);\n\t\tconst files = dirEntries.filter((f) => f.endsWith(\".jsonl\")).map((f) => join(dir, f));\n\t\tconst total = progressTotal ?? files.length;\n\n\t\tlet loaded = 0;\n\t\tconst results = await mapSessionFilesCooperatively(files, includeInternal, () => {\n\t\t\tloaded++;\n\t\t\tonProgress?.(progressOffset + loaded, total);\n\t\t});\n\t\tfor (const info of results) {\n\t\t\tif (info && (includeInternal || !info.internal)) {\n\t\t\t\tsessions.push(info);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return empty list on error\n\t}\n\n\treturn sessions;\n}\n\nexport async function listProjectSessions(\n\tcwd: string,\n\tsessionDir?: string,\n\tonProgress?: SessionListProgress,\n\tincludeInternal = false,\n): Promise<SessionInfo[]> {\n\tconst dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);\n\tconst filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);\n\tconst resolvedCwd = resolvePath(cwd);\n\tconst sessions = (await listSessionsFromDir(dir, onProgress, 0, undefined, includeInternal)).filter(\n\t\t(session) => !filterCwd || sessionCwdMatches(session.cwd, resolvedCwd),\n\t);\n\tsessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());\n\treturn sessions;\n}\n\nexport async function listAllSessions(\n\tsessionDirOrOnProgress?: string | SessionListProgress,\n\tonProgress?: SessionListProgress,\n\tincludeInternal = false,\n): Promise<SessionInfo[]> {\n\tconst customSessionDir =\n\t\ttypeof sessionDirOrOnProgress === \"string\" ? normalizePath(sessionDirOrOnProgress) : undefined;\n\tconst progress = typeof sessionDirOrOnProgress === \"function\" ? sessionDirOrOnProgress : onProgress;\n\tif (customSessionDir) {\n\t\tconst sessions = await listSessionsFromDir(customSessionDir, progress, 0, undefined, includeInternal);\n\t\tsessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());\n\t\treturn sessions;\n\t}\n\n\tconst sessionsDir = getSessionsDir();\n\n\ttry {\n\t\tif (!existsSync(sessionsDir)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst entries = await readdir(sessionsDir, { withFileTypes: true });\n\t\tconst dirs = entries\n\t\t\t.filter((entry) => entry.isDirectory() || entry.isSymbolicLink())\n\t\t\t.map((entry) => join(sessionsDir, entry.name));\n\n\t\t// Count total files first for accurate progress\n\t\tlet totalFiles = 0;\n\t\tconst dirFiles: string[][] = [];\n\t\tfor (const dir of dirs) {\n\t\t\ttry {\n\t\t\t\tconst files = (await readdir(dir)).filter((f) => f.endsWith(\".jsonl\"));\n\t\t\t\tdirFiles.push(files.map((f) => join(dir, f)));\n\t\t\t\ttotalFiles += files.length;\n\t\t\t} catch {\n\t\t\t\tdirFiles.push([]);\n\t\t\t}\n\t\t}\n\n\t\t// Process all files with progress tracking\n\t\tlet loaded = 0;\n\t\tconst sessions: SessionInfo[] = [];\n\t\tconst allFiles = dirFiles.flat();\n\n\t\tconst results = await mapSessionFilesCooperatively(allFiles, includeInternal, () => {\n\t\t\tloaded++;\n\t\t\tprogress?.(loaded, totalFiles);\n\t\t});\n\n\t\tfor (const info of results) {\n\t\t\tif (info && (includeInternal || !info.internal)) {\n\t\t\t\tsessions.push(info);\n\t\t\t}\n\t\t}\n\n\t\tsessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());\n\t\treturn sessions;\n\t} catch {\n\t\treturn [];\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"session-manager-list.js","sourceRoot":"","sources":["../../src/core/session-manager-list.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { Message, TextContent } from \"@earendil-works/pi-ai/compat\";\nimport { existsSync } from \"fs\";\nimport { readdir, readFile, stat } from \"fs/promises\";\nimport { join } from \"path\";\nimport { getSessionsDir } from \"../config.ts\";\nimport { yieldToEventLoopIfSlow } from \"../utils/event-loop.ts\";\nimport { normalizePath, resolvePath } from \"../utils/paths.ts\";\nimport { classifiedWorkflowMetadata } from \"./session-manager-classification.ts\";\nimport { getLastConversationMessageId, getLatestSessionSummary } from \"./session-manager-entries.ts\";\nimport { parseSessionEntries } from \"./session-manager-migrations.ts\";\nimport { getDefaultSessionDir, getDefaultSessionDirPath } from \"./session-manager-paths.ts\";\nimport { isInternalHeader, readSessionHeader, sessionCwdMatches } from \"./session-manager-storage.ts\";\nimport type {\n\tFileEntry,\n\tSessionEntryBase,\n\tSessionHeader,\n\tSessionInfo,\n\tSessionInfoEntry,\n\tSessionListProgress,\n\tSessionMessageEntry,\n} from \"./session-manager-types.ts\";\n\nfunction isMessageWithContent(message: AgentMessage): message is Message {\n\treturn typeof (message as Message).role === \"string\" && \"content\" in message;\n}\n\nfunction extractTextContent(message: Message): string {\n\tconst content = message.content;\n\tif (typeof content === \"string\") {\n\t\treturn content;\n\t}\n\treturn content\n\t\t.filter((block): block is TextContent => block.type === \"text\")\n\t\t.map((block) => block.text)\n\t\t.join(\" \");\n}\n\nfunction getLastActivityTime(entries: FileEntry[]): number | undefined {\n\tlet lastActivityTime: number | undefined;\n\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"message\") continue;\n\n\t\tconst message = (entry as SessionMessageEntry).message;\n\t\tif (!isMessageWithContent(message)) continue;\n\t\tif (message.role !== \"user\" && message.role !== \"assistant\") continue;\n\n\t\tconst msgTimestamp = (message as { timestamp?: number }).timestamp;\n\t\tif (typeof msgTimestamp === \"number\") {\n\t\t\tlastActivityTime = Math.max(lastActivityTime ?? 0, msgTimestamp);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst entryTimestamp = (entry as SessionEntryBase).timestamp;\n\t\tif (typeof entryTimestamp === \"string\") {\n\t\t\tconst t = new Date(entryTimestamp).getTime();\n\t\t\tif (!Number.isNaN(t)) {\n\t\t\t\tlastActivityTime = Math.max(lastActivityTime ?? 0, t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn lastActivityTime;\n}\n\nfunction getSessionModifiedDate(entries: FileEntry[], header: SessionHeader, statsMtime: Date): Date {\n\tconst lastActivityTime = getLastActivityTime(entries);\n\tif (typeof lastActivityTime === \"number\" && lastActivityTime > 0) {\n\t\treturn new Date(lastActivityTime);\n\t}\n\n\tconst headerTime = typeof header.timestamp === \"string\" ? new Date(header.timestamp).getTime() : NaN;\n\treturn !Number.isNaN(headerTime) ? new Date(headerTime) : statsMtime;\n}\n\n// A single very large transcript is parsed in bounded cooperative chunks so the\n// synchronous JSON.parse-per-line loop yields to terminal input, timers, and\n// render work instead of freezing the host. Smaller files stay on the cheaper\n// fully-synchronous fast path.\nconst COOPERATIVE_PARSE_CONTENT_BYTES = 512 * 1024;\nconst PARSE_YIELD_EVERY_LINES = 2000;\n\n// Directory listings walk files in bounded batches, yielding between batches so\n// large session folders cannot starve the event loop during a scan.\nconst LIST_FILE_BATCH_SIZE = 24;\n\nasync function parseSessionEntriesCooperatively(content: string): Promise<FileEntry[]> {\n\tconst entries: FileEntry[] = [];\n\tconst lines = content.trim().split(\"\\n\");\n\tlet startedAt = Date.now();\n\tfor (let index = 0; index < lines.length; index += 1) {\n\t\tconst line = lines[index]!;\n\t\tif (line.trim()) {\n\t\t\ttry {\n\t\t\t\tentries.push(JSON.parse(line) as FileEntry);\n\t\t\t} catch {\n\t\t\t\t// Skip malformed lines, matching parseSessionEntries.\n\t\t\t}\n\t\t}\n\t\tif ((index + 1) % PARSE_YIELD_EVERY_LINES === 0) {\n\t\t\tawait yieldToEventLoopIfSlow(startedAt);\n\t\t\tstartedAt = Date.now();\n\t\t}\n\t}\n\treturn entries;\n}\n\n/**\n * Parse + summarize session files in bounded batches, yielding between batches\n * so a large directory scan never blocks the TUI event loop. Progress is\n * reported per file via onFileDone, matching the previous eager Promise.all.\n */\nasync function mapSessionFilesCooperatively(\n\tfiles: readonly string[],\n\tincludeInternal: boolean,\n\tonFileDone: () => void,\n): Promise<(SessionInfo | null)[]> {\n\tconst results: (SessionInfo | null)[] = [];\n\tfor (let offset = 0; offset < files.length; offset += LIST_FILE_BATCH_SIZE) {\n\t\tconst batch = files.slice(offset, offset + LIST_FILE_BATCH_SIZE);\n\t\tconst startedAt = Date.now();\n\t\tconst batchResults = await Promise.all(\n\t\t\tbatch.map(async (file) => {\n\t\t\t\t// Prefilter via the header so hidden/internal sessions are skipped\n\t\t\t\t// before the expensive full-transcript parse in buildSessionInfo.\n\t\t\t\tif (!includeInternal && isInternalHeader(readSessionHeader(file))) {\n\t\t\t\t\tonFileDone();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst info = await buildSessionInfo(file);\n\t\t\t\tonFileDone();\n\t\t\t\treturn info;\n\t\t\t}),\n\t\t);\n\t\tfor (const info of batchResults) results.push(info);\n\t\tawait yieldToEventLoopIfSlow(startedAt);\n\t}\n\treturn results;\n}\n\nasync function buildSessionInfo(filePath: string): Promise<SessionInfo | null> {\n\ttry {\n\t\tconst content = await readFile(filePath, \"utf8\");\n\t\tconst entries =\n\t\t\tcontent.length > COOPERATIVE_PARSE_CONTENT_BYTES\n\t\t\t\t? await parseSessionEntriesCooperatively(content)\n\t\t\t\t: parseSessionEntries(content);\n\n\t\tif (entries.length === 0) return null;\n\t\tconst header = entries[0];\n\t\tif (header.type !== \"session\") return null;\n\n\t\tconst stats = await stat(filePath);\n\t\tlet messageCount = 0;\n\t\tlet firstMessage = \"\";\n\t\tconst allMessages: string[] = [];\n\t\tlet name: string | undefined;\n\n\t\tfor (const entry of entries) {\n\t\t\t// Extract session name (use latest, including explicit clears)\n\t\t\tif (entry.type === \"session_info\") {\n\t\t\t\tconst infoEntry = entry as SessionInfoEntry;\n\t\t\t\tname = infoEntry.name?.trim() || undefined;\n\t\t\t}\n\n\t\t\tif (entry.type !== \"message\") continue;\n\t\t\tmessageCount++;\n\n\t\t\tconst message = (entry as SessionMessageEntry).message;\n\t\t\tif (!isMessageWithContent(message)) continue;\n\t\t\tif (message.role !== \"user\" && message.role !== \"assistant\") continue;\n\n\t\t\tconst textContent = extractTextContent(message);\n\t\t\tif (!textContent) continue;\n\n\t\t\tallMessages.push(textContent);\n\t\t\tif (!firstMessage && message.role === \"user\") {\n\t\t\t\tfirstMessage = textContent;\n\t\t\t}\n\t\t}\n\n\t\tconst cwd = typeof (header as SessionHeader).cwd === \"string\" ? (header as SessionHeader).cwd : \"\";\n\t\tconst parentSessionPath = (header as SessionHeader).parentSession;\n\t\tconst workflow = classifiedWorkflowMetadata(header as SessionHeader);\n\t\tconst internal = workflow ? true : undefined;\n\n\t\tconst modified = getSessionModifiedDate(entries, header as SessionHeader, stats.mtime);\n\n\t\t// A summary describes the conversation up to one specific message. Anything newer makes it\n\t\t// stale, and the picker falls back to the session name or the first message. Retirement by\n\t\t// a later branch summary is handled inside getLatestSessionSummary, so the generation guard\n\t\t// applies exactly the same rule.\n\t\tconst summaryEntry = getLatestSessionSummary(entries);\n\t\tconst summary =\n\t\t\tsummaryEntry?.summarizedThroughId === getLastConversationMessageId(entries)\n\t\t\t\t? summaryEntry?.summary\n\t\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tid: (header as SessionHeader).id,\n\t\t\tcwd,\n\t\t\tname,\n\t\t\tparentSessionPath,\n\t\t\t...(internal ? { internal } : {}),\n\t\t\t...(workflow ? { workflow } : {}),\n\t\t\tcreated: new Date((header as SessionHeader).timestamp),\n\t\t\tmodified,\n\t\t\tmessageCount,\n\t\t\tfirstMessage: firstMessage || \"(no messages)\",\n\t\t\tsummary,\n\t\t\tallMessagesText: allMessages.join(\" \"),\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport async function listSessionsFromDir(\n\tdir: string,\n\tonProgress?: SessionListProgress,\n\tprogressOffset = 0,\n\tprogressTotal?: number,\n\tincludeInternal = false,\n): Promise<SessionInfo[]> {\n\tconst sessions: SessionInfo[] = [];\n\tif (!existsSync(dir)) {\n\t\treturn sessions;\n\t}\n\n\ttry {\n\t\tconst dirEntries = await readdir(dir);\n\t\tconst files = dirEntries.filter((f) => f.endsWith(\".jsonl\")).map((f) => join(dir, f));\n\t\tconst total = progressTotal ?? files.length;\n\n\t\tlet loaded = 0;\n\t\tconst results = await mapSessionFilesCooperatively(files, includeInternal, () => {\n\t\t\tloaded++;\n\t\t\tonProgress?.(progressOffset + loaded, total);\n\t\t});\n\t\tfor (const info of results) {\n\t\t\tif (info && (includeInternal || !info.internal)) {\n\t\t\t\tsessions.push(info);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return empty list on error\n\t}\n\n\treturn sessions;\n}\n\nexport async function listProjectSessions(\n\tcwd: string,\n\tsessionDir?: string,\n\tonProgress?: SessionListProgress,\n\tincludeInternal = false,\n): Promise<SessionInfo[]> {\n\tconst dir = sessionDir ? normalizePath(sessionDir) : getDefaultSessionDir(cwd);\n\tconst filterCwd = sessionDir !== undefined && dir !== getDefaultSessionDirPath(cwd);\n\tconst resolvedCwd = resolvePath(cwd);\n\tconst sessions = (await listSessionsFromDir(dir, onProgress, 0, undefined, includeInternal)).filter(\n\t\t(session) => !filterCwd || sessionCwdMatches(session.cwd, resolvedCwd),\n\t);\n\tsessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());\n\treturn sessions;\n}\n\nexport async function listAllSessions(\n\tsessionDirOrOnProgress?: string | SessionListProgress,\n\tonProgress?: SessionListProgress,\n\tincludeInternal = false,\n): Promise<SessionInfo[]> {\n\tconst customSessionDir =\n\t\ttypeof sessionDirOrOnProgress === \"string\" ? normalizePath(sessionDirOrOnProgress) : undefined;\n\tconst progress = typeof sessionDirOrOnProgress === \"function\" ? sessionDirOrOnProgress : onProgress;\n\tif (customSessionDir) {\n\t\tconst sessions = await listSessionsFromDir(customSessionDir, progress, 0, undefined, includeInternal);\n\t\tsessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());\n\t\treturn sessions;\n\t}\n\n\tconst sessionsDir = getSessionsDir();\n\n\ttry {\n\t\tif (!existsSync(sessionsDir)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst entries = await readdir(sessionsDir, { withFileTypes: true });\n\t\tconst dirs = entries\n\t\t\t.filter((entry) => entry.isDirectory() || entry.isSymbolicLink())\n\t\t\t.map((entry) => join(sessionsDir, entry.name));\n\n\t\t// Count total files first for accurate progress\n\t\tlet totalFiles = 0;\n\t\tconst dirFiles: string[][] = [];\n\t\tfor (const dir of dirs) {\n\t\t\ttry {\n\t\t\t\tconst files = (await readdir(dir)).filter((f) => f.endsWith(\".jsonl\"));\n\t\t\t\tdirFiles.push(files.map((f) => join(dir, f)));\n\t\t\t\ttotalFiles += files.length;\n\t\t\t} catch {\n\t\t\t\tdirFiles.push([]);\n\t\t\t}\n\t\t}\n\n\t\t// Process all files with progress tracking\n\t\tlet loaded = 0;\n\t\tconst sessions: SessionInfo[] = [];\n\t\tconst allFiles = dirFiles.flat();\n\n\t\tconst results = await mapSessionFilesCooperatively(allFiles, includeInternal, () => {\n\t\t\tloaded++;\n\t\t\tprogress?.(loaded, totalFiles);\n\t\t});\n\n\t\tfor (const info of results) {\n\t\t\tif (info && (includeInternal || !info.internal)) {\n\t\t\t\tsessions.push(info);\n\t\t\t}\n\t\t}\n\n\t\tsessions.sort((a, b) => b.modified.getTime() - a.modified.getTime());\n\t\treturn sessions;\n\t} catch {\n\t\treturn [];\n\t}\n}\n"]}
|
|
@@ -124,6 +124,13 @@ export interface SessionInfoEntry extends SessionEntryBase {
|
|
|
124
124
|
type: "session_info";
|
|
125
125
|
name?: string;
|
|
126
126
|
}
|
|
127
|
+
/** Session summary metadata entry. */
|
|
128
|
+
export interface SessionSummaryEntry extends SessionEntryBase {
|
|
129
|
+
type: "session_summary";
|
|
130
|
+
summary: string;
|
|
131
|
+
summarizedThroughId: string;
|
|
132
|
+
usage?: Usage;
|
|
133
|
+
}
|
|
127
134
|
/**
|
|
128
135
|
* Custom message entry for extensions to inject messages into LLM context.
|
|
129
136
|
* Use customType to identify your extension's entries.
|
|
@@ -153,7 +160,7 @@ export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
|
|
|
153
160
|
protectedReconciliation?: ProtectedReconciliationMarker;
|
|
154
161
|
}
|
|
155
162
|
/** Session entry - has id/parentId for tree structure (returned by "read" methods in SessionManager) */
|
|
156
|
-
export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | ContextCompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry;
|
|
163
|
+
export type SessionEntry = SessionMessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | ContextCompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry | SessionSummaryEntry;
|
|
157
164
|
/** Raw file entry (includes header) */
|
|
158
165
|
export type FileEntry = SessionHeader | SessionEntry;
|
|
159
166
|
/** Tree node for getTree() - defensive copy of session structure */
|
|
@@ -190,6 +197,8 @@ export interface SessionInfo {
|
|
|
190
197
|
modified: Date;
|
|
191
198
|
messageCount: number;
|
|
192
199
|
firstMessage: string;
|
|
200
|
+
/** Generated resume summary. Absent when never generated, or stale against the latest message. */
|
|
201
|
+
summary?: string;
|
|
193
202
|
allMessagesText: string;
|
|
194
203
|
/** Optional semantic color for synthetic selector rows. */
|
|
195
204
|
messageColor?: "success" | "warning" | "accent" | "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager-types.d.ts","sourceRoot":"","sources":["../../src/core/session-manager-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-manager-types.d.ts","sourceRoot":"","sources":["../../src/core/session-manager-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager-types.js","sourceRoot":"","sources":["../../src/core/session-manager-types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ImageContent, TextContent, Usage } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionManager } from \"./session-manager-core.ts\";\n\nexport const CURRENT_SESSION_VERSION = 3;\n\n/**\n * Workflow linkage persisted on internal (workflow-created) session headers.\n * Used to exclude workflow stage sessions from the standard `/resume` history\n * while keeping them resumable through the workflow-specific resume path.\n */\nexport interface SessionWorkflowMetadata {\n\trunId: string;\n\tstageId: string;\n\tstageName: string;\n}\n\nexport interface SessionHeader {\n\ttype: \"session\";\n\tversion?: number; // v1 sessions don't have this\n\tid: string;\n\ttimestamp: string;\n\tcwd: string;\n\tparentSession?: string;\n\t/** Marks sessions created by automated machinery (e.g. workflow stages) so they can be excluded from standard resume history. */\n\tinternal?: boolean;\n\t/** When internal, links the session to its owning workflow run/stage. */\n\tworkflow?: SessionWorkflowMetadata;\n}\n\nexport interface NewSessionOptions {\n\tid?: string;\n\tparentSession?: string;\n\t/** Mark the new session as internal (e.g. a workflow stage session). */\n\tinternal?: boolean;\n\t/** Workflow run/stage linkage for internal workflow sessions. */\n\tworkflow?: SessionWorkflowMetadata;\n}\n\nexport interface SessionEntryBase {\n\ttype: string;\n\tid: string;\n\tparentId: string | null;\n\ttimestamp: string;\n}\n\nexport interface SessionMessageEntry extends SessionEntryBase {\n\ttype: \"message\";\n\tmessage: AgentMessage;\n}\n\nexport interface ThinkingLevelChangeEntry extends SessionEntryBase {\n\ttype: \"thinking_level_change\";\n\tthinkingLevel: string;\n}\n\nexport interface ModelChangeEntry extends SessionEntryBase {\n\ttype: \"model_change\";\n\tprovider: string;\n\tmodelId: string;\n}\n\n/** Durable compaction boundary. Active entries carry `details.strategy === \"verbatim-lines\"`. */\nexport interface CompactionEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"compaction\";\n\tsummary: string;\n\t/** First context-visible tail entry, or null when the durable summary replaces the entire pre-boundary transcript. */\n\tfirstKeptEntryId: string | null;\n\ttokensBefore: number;\n\tdetails?: T;\n\t/** True when the compacted text was supplied by an extension hook. */\n\tfromHook?: boolean;\n}\n\n/** @deprecated Legacy archival statistics; never produced or applied. */\nexport interface ContextCompactionStats {\n\tobjectsBefore: number;\n\tobjectsAfter: number;\n\tobjectsDeleted: number;\n\ttokensBefore: number;\n\ttokensAfter: number;\n\tpercentReduction: number;\n}\n\n/** @deprecated Legacy archival record; never produced or applied. */\nexport interface ContextCompactionEntry extends SessionEntryBase {\n\ttype: \"context_compaction\";\n\tpromptVersion: 1;\n\tdeletedTargets: Array<\n\t\t{ kind: \"entry\"; entryId: string } | { kind: \"content_block\"; entryId: string; blockIndex: number }\n\t>;\n\tprotectedEntryIds: string[];\n\tstats: ContextCompactionStats;\n\tbackupPath?: string;\n}\n\nexport interface BranchSummaryEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"branch_summary\";\n\tfromId: string;\n\tsummary: string;\n\t/** Extension-specific data (not sent to LLM) */\n\tdetails?: T;\n\t/** Usage from the model call that generated this summary. */\n\tusage?: Usage;\n\t/** True if generated by an extension, false if generated by Atomic. */\n\tfromHook?: boolean;\n}\n\n/**\n * Custom entry for extensions to store extension-specific data in the session.\n * Use customType to identify your extension's entries.\n *\n * Purpose: Persist extension state across session reloads. On reload, extensions can\n * scan entries for their customType and reconstruct internal state.\n *\n * Does NOT participate in LLM context (ignored by buildSessionContext).\n * For injecting content into context, see CustomMessageEntry.\n */\nexport interface CustomEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"custom\";\n\tcustomType: string;\n\tdata?: T;\n}\n\n/** Label entry for user-defined bookmarks/markers on entries. */\nexport interface LabelEntry extends SessionEntryBase {\n\ttype: \"label\";\n\ttargetId: string;\n\tlabel: string | undefined;\n}\n\n/** Session metadata entry (e.g., user-defined display name). */\nexport interface SessionInfoEntry extends SessionEntryBase {\n\ttype: \"session_info\";\n\tname?: string;\n}\n\n/**\n * Custom message entry for extensions to inject messages into LLM context.\n * Use customType to identify your extension's entries.\n *\n * Unlike CustomEntry, this usually participates in LLM context.\n * The content is converted to a user message in buildSessionContext() unless\n * excludeFromContext is true. Use details for extension-specific metadata (not sent to LLM).\n *\n * display controls TUI rendering:\n * - false: hidden entirely\n * - true: rendered with distinct styling (different from user messages)\n */\nexport interface ProtectedReconciliationMarker {\n\tdelivery: \"steer\" | \"followUp\";\n}\n\nexport interface CustomMessageEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"custom_message\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdetails?: T;\n\tdisplay: boolean;\n\texcludeFromContext?: boolean;\n\t/** Stable producer identity used by workflow stages to de-nominate admitted external turns. */\n\tstageAdmissionKey?: string;\n\t/** Runtime provenance used to distinguish stage continuation from an externally triggered response. */\n\t/** Internal crash-recovery marker for a model-facing protected turn. */\n\tprotectedReconciliation?: ProtectedReconciliationMarker;\n}\n\n/** Session entry - has id/parentId for tree structure (returned by \"read\" methods in SessionManager) */\nexport type SessionEntry =\n\t| SessionMessageEntry\n\t| ThinkingLevelChangeEntry\n\t| ModelChangeEntry\n\t| CompactionEntry\n\t| ContextCompactionEntry\n\t| BranchSummaryEntry\n\t| CustomEntry\n\t| CustomMessageEntry\n\t| LabelEntry\n\t| SessionInfoEntry;\n\n/** Raw file entry (includes header) */\nexport type FileEntry = SessionHeader | SessionEntry;\n\n/** Tree node for getTree() - defensive copy of session structure */\nexport interface SessionTreeNode {\n\tentry: SessionEntry;\n\tchildren: SessionTreeNode[];\n\t/** Resolved label for this entry, if any */\n\tlabel?: string;\n\t/** Timestamp of the latest label change for this entry, if any */\n\tlabelTimestamp?: string;\n}\n\nexport interface SessionContext {\n\tmessages: AgentMessage[];\n\tthinkingLevel: string;\n\tmodel: { provider: string; modelId: string } | null;\n}\n\nexport interface SessionInfo {\n\tpath: string;\n\tid: string;\n\t/** Working directory where the session was started. Empty string for old sessions. */\n\tcwd: string;\n\t/** User-defined display name from session_info entries. */\n\tname?: string;\n\t/** Path to the parent session (if this session was forked). */\n\tparentSessionPath?: string;\n\t/** True when this session was created by automated machinery (e.g. a workflow stage). */\n\tinternal?: boolean;\n\t/** Workflow run/stage linkage when the session is an internal workflow session. */\n\tworkflow?: SessionWorkflowMetadata;\n\tcreated: Date;\n\tmodified: Date;\n\tmessageCount: number;\n\tfirstMessage: string;\n\tallMessagesText: string;\n\t/** Optional semantic color for synthetic selector rows. */\n\tmessageColor?: \"success\" | \"warning\" | \"accent\" | \"error\";\n}\n\nexport type SessionListProgress = (loaded: number, total: number) => void;\n\nexport type ReadonlySessionManager = Pick<\n\tSessionManager,\n\t| \"getCwd\"\n\t| \"getSessionDir\"\n\t| \"usesDefaultSessionDir\"\n\t| \"getSessionId\"\n\t| \"getSessionFile\"\n\t| \"getLeafId\"\n\t| \"getLeafEntry\"\n\t| \"getEntry\"\n\t| \"getLabel\"\n\t| \"getBranch\"\n\t| \"getHeader\"\n\t| \"getEntries\"\n\t| \"getTree\"\n\t| \"getSessionName\"\n>;\n"]}
|
|
1
|
+
{"version":3,"file":"session-manager-types.js","sourceRoot":"","sources":["../../src/core/session-manager-types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC","sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { ImageContent, TextContent, Usage } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionManager } from \"./session-manager-core.ts\";\n\nexport const CURRENT_SESSION_VERSION = 3;\n\n/**\n * Workflow linkage persisted on internal (workflow-created) session headers.\n * Used to exclude workflow stage sessions from the standard `/resume` history\n * while keeping them resumable through the workflow-specific resume path.\n */\nexport interface SessionWorkflowMetadata {\n\trunId: string;\n\tstageId: string;\n\tstageName: string;\n}\n\nexport interface SessionHeader {\n\ttype: \"session\";\n\tversion?: number; // v1 sessions don't have this\n\tid: string;\n\ttimestamp: string;\n\tcwd: string;\n\tparentSession?: string;\n\t/** Marks sessions created by automated machinery (e.g. workflow stages) so they can be excluded from standard resume history. */\n\tinternal?: boolean;\n\t/** When internal, links the session to its owning workflow run/stage. */\n\tworkflow?: SessionWorkflowMetadata;\n}\n\nexport interface NewSessionOptions {\n\tid?: string;\n\tparentSession?: string;\n\t/** Mark the new session as internal (e.g. a workflow stage session). */\n\tinternal?: boolean;\n\t/** Workflow run/stage linkage for internal workflow sessions. */\n\tworkflow?: SessionWorkflowMetadata;\n}\n\nexport interface SessionEntryBase {\n\ttype: string;\n\tid: string;\n\tparentId: string | null;\n\ttimestamp: string;\n}\n\nexport interface SessionMessageEntry extends SessionEntryBase {\n\ttype: \"message\";\n\tmessage: AgentMessage;\n}\n\nexport interface ThinkingLevelChangeEntry extends SessionEntryBase {\n\ttype: \"thinking_level_change\";\n\tthinkingLevel: string;\n}\n\nexport interface ModelChangeEntry extends SessionEntryBase {\n\ttype: \"model_change\";\n\tprovider: string;\n\tmodelId: string;\n}\n\n/** Durable compaction boundary. Active entries carry `details.strategy === \"verbatim-lines\"`. */\nexport interface CompactionEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"compaction\";\n\tsummary: string;\n\t/** First context-visible tail entry, or null when the durable summary replaces the entire pre-boundary transcript. */\n\tfirstKeptEntryId: string | null;\n\ttokensBefore: number;\n\tdetails?: T;\n\t/** True when the compacted text was supplied by an extension hook. */\n\tfromHook?: boolean;\n}\n\n/** @deprecated Legacy archival statistics; never produced or applied. */\nexport interface ContextCompactionStats {\n\tobjectsBefore: number;\n\tobjectsAfter: number;\n\tobjectsDeleted: number;\n\ttokensBefore: number;\n\ttokensAfter: number;\n\tpercentReduction: number;\n}\n\n/** @deprecated Legacy archival record; never produced or applied. */\nexport interface ContextCompactionEntry extends SessionEntryBase {\n\ttype: \"context_compaction\";\n\tpromptVersion: 1;\n\tdeletedTargets: Array<\n\t\t{ kind: \"entry\"; entryId: string } | { kind: \"content_block\"; entryId: string; blockIndex: number }\n\t>;\n\tprotectedEntryIds: string[];\n\tstats: ContextCompactionStats;\n\tbackupPath?: string;\n}\n\nexport interface BranchSummaryEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"branch_summary\";\n\tfromId: string;\n\tsummary: string;\n\t/** Extension-specific data (not sent to LLM) */\n\tdetails?: T;\n\t/** Usage from the model call that generated this summary. */\n\tusage?: Usage;\n\t/** True if generated by an extension, false if generated by Atomic. */\n\tfromHook?: boolean;\n}\n\n/**\n * Custom entry for extensions to store extension-specific data in the session.\n * Use customType to identify your extension's entries.\n *\n * Purpose: Persist extension state across session reloads. On reload, extensions can\n * scan entries for their customType and reconstruct internal state.\n *\n * Does NOT participate in LLM context (ignored by buildSessionContext).\n * For injecting content into context, see CustomMessageEntry.\n */\nexport interface CustomEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"custom\";\n\tcustomType: string;\n\tdata?: T;\n}\n\n/** Label entry for user-defined bookmarks/markers on entries. */\nexport interface LabelEntry extends SessionEntryBase {\n\ttype: \"label\";\n\ttargetId: string;\n\tlabel: string | undefined;\n}\n\n/** Session metadata entry (e.g., user-defined display name). */\nexport interface SessionInfoEntry extends SessionEntryBase {\n\ttype: \"session_info\";\n\tname?: string;\n}\n\n/** Session summary metadata entry. */\nexport interface SessionSummaryEntry extends SessionEntryBase {\n\ttype: \"session_summary\";\n\tsummary: string;\n\tsummarizedThroughId: string;\n\tusage?: Usage;\n}\n\n/**\n * Custom message entry for extensions to inject messages into LLM context.\n * Use customType to identify your extension's entries.\n *\n * Unlike CustomEntry, this usually participates in LLM context.\n * The content is converted to a user message in buildSessionContext() unless\n * excludeFromContext is true. Use details for extension-specific metadata (not sent to LLM).\n *\n * display controls TUI rendering:\n * - false: hidden entirely\n * - true: rendered with distinct styling (different from user messages)\n */\nexport interface ProtectedReconciliationMarker {\n\tdelivery: \"steer\" | \"followUp\";\n}\n\nexport interface CustomMessageEntry<T = unknown> extends SessionEntryBase {\n\ttype: \"custom_message\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdetails?: T;\n\tdisplay: boolean;\n\texcludeFromContext?: boolean;\n\t/** Stable producer identity used by workflow stages to de-nominate admitted external turns. */\n\tstageAdmissionKey?: string;\n\t/** Runtime provenance used to distinguish stage continuation from an externally triggered response. */\n\t/** Internal crash-recovery marker for a model-facing protected turn. */\n\tprotectedReconciliation?: ProtectedReconciliationMarker;\n}\n\n/** Session entry - has id/parentId for tree structure (returned by \"read\" methods in SessionManager) */\nexport type SessionEntry =\n\t| SessionMessageEntry\n\t| ThinkingLevelChangeEntry\n\t| ModelChangeEntry\n\t| CompactionEntry\n\t| ContextCompactionEntry\n\t| BranchSummaryEntry\n\t| CustomEntry\n\t| CustomMessageEntry\n\t| LabelEntry\n\t| SessionInfoEntry\n\t| SessionSummaryEntry;\n\n/** Raw file entry (includes header) */\nexport type FileEntry = SessionHeader | SessionEntry;\n\n/** Tree node for getTree() - defensive copy of session structure */\nexport interface SessionTreeNode {\n\tentry: SessionEntry;\n\tchildren: SessionTreeNode[];\n\t/** Resolved label for this entry, if any */\n\tlabel?: string;\n\t/** Timestamp of the latest label change for this entry, if any */\n\tlabelTimestamp?: string;\n}\n\nexport interface SessionContext {\n\tmessages: AgentMessage[];\n\tthinkingLevel: string;\n\tmodel: { provider: string; modelId: string } | null;\n}\n\nexport interface SessionInfo {\n\tpath: string;\n\tid: string;\n\t/** Working directory where the session was started. Empty string for old sessions. */\n\tcwd: string;\n\t/** User-defined display name from session_info entries. */\n\tname?: string;\n\t/** Path to the parent session (if this session was forked). */\n\tparentSessionPath?: string;\n\t/** True when this session was created by automated machinery (e.g. a workflow stage). */\n\tinternal?: boolean;\n\t/** Workflow run/stage linkage when the session is an internal workflow session. */\n\tworkflow?: SessionWorkflowMetadata;\n\tcreated: Date;\n\tmodified: Date;\n\tmessageCount: number;\n\tfirstMessage: string;\n\t/** Generated resume summary. Absent when never generated, or stale against the latest message. */\n\tsummary?: string;\n\tallMessagesText: string;\n\t/** Optional semantic color for synthetic selector rows. */\n\tmessageColor?: \"success\" | \"warning\" | \"accent\" | \"error\";\n}\n\nexport type SessionListProgress = (loaded: number, total: number) => void;\n\nexport type ReadonlySessionManager = Pick<\n\tSessionManager,\n\t| \"getCwd\"\n\t| \"getSessionDir\"\n\t| \"usesDefaultSessionDir\"\n\t| \"getSessionId\"\n\t| \"getSessionFile\"\n\t| \"getLeafId\"\n\t| \"getLeafEntry\"\n\t| \"getEntry\"\n\t| \"getLabel\"\n\t| \"getBranch\"\n\t| \"getHeader\"\n\t| \"getEntries\"\n\t| \"getTree\"\n\t| \"getSessionName\"\n>;\n"]}
|
|
@@ -47,6 +47,9 @@ interface SettingsManagerBasicAccessors {
|
|
|
47
47
|
skipPrompt: boolean;
|
|
48
48
|
};
|
|
49
49
|
getBranchSummarySkipPrompt(): boolean;
|
|
50
|
+
getSessionSummarySettings(): {
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
};
|
|
50
53
|
getRetryEnabled(): boolean;
|
|
51
54
|
setRetryEnabled(enabled: boolean): void;
|
|
52
55
|
getRetrySettings(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager-basic-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-basic-accessors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings-manager-basic-accessors.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager-basic-accessors.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,UAAU,6BAA6B;IACtC,uBAAuB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC9C,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,mCAAmC,IAAI,MAAM,GAAG,SAAS,CAAC;IAC1D,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC1C,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;IACpC,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;IACzC,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;IACtC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACpE,eAAe,IAAI,KAAK,GAAG,eAAe,CAAC;IAC3C,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC;IACrD,eAAe,IAAI,KAAK,GAAG,eAAe,CAAC;IAC3C,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC;IACrD,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,kBAAkB,IAAI,OAAO,GAAG,SAAS,CAAC;IAC1C,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;IACpC,uBAAuB,IAAI,OAAO,CAAC;IACnC,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,uBAAuB,IAAI,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACvG,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IACtG,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC9B,YAAY,IAAI,gBAAgB,CAAC;IACjC,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,oBAAoB,IAAI,OAAO,CAAC;IAChC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,0BAA0B,IAAI,MAAM,CAAC;IACrC,6BAA6B,IAAI,MAAM,CAAC;IACxC,2BAA2B,IAAI,MAAM,CAAC;IACtC,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;IACzC,qBAAqB,IAAI;QACxB,OAAO,EAAE,OAAO,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,wBAAwB,IAAI;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3E,0BAA0B,IAAI,OAAO,CAAC;IACtC,yBAAyB,IAAI;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAClD,eAAe,IAAI,OAAO,CAAC;IAC3B,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,gBAAgB,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAClF,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9C,oBAAoB,IAAI,MAAM,CAAC;IAC/B,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,4BAA4B,IAAI,MAAM,GAAG,SAAS,CAAC;IACnD,wBAAwB,IAAI;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CACjG;AAED,OAAO,QAAQ,4BAA4B,CAAC;IAC3C,UAAU,eAAgB,SAAQ,6BAA6B;KAAG;CAClE"}
|
|
@@ -190,6 +190,11 @@ const basicAccessors = {
|
|
|
190
190
|
getBranchSummarySkipPrompt() {
|
|
191
191
|
return settingsInternals(this).settings.branchSummary?.skipPrompt ?? false;
|
|
192
192
|
},
|
|
193
|
+
getSessionSummarySettings() {
|
|
194
|
+
return {
|
|
195
|
+
enabled: settingsInternals(this).settings.sessionSummary?.enabled ?? true,
|
|
196
|
+
};
|
|
197
|
+
},
|
|
193
198
|
getRetryEnabled() {
|
|
194
199
|
return settingsInternals(this).settings.retry?.enabled ?? true;
|
|
195
200
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager-basic-accessors.js","sourceRoot":"","sources":["../../src/core/settings-manager-basic-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { normalizePath } from \"../utils/paths.ts\";\nimport { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from \"./http-dispatcher.ts\";\nimport { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { TransportSetting } from \"./settings-types.ts\";\n\ninterface SettingsManagerBasicAccessors {\n\tgetLastChangelogVersion(): string | undefined;\n\tsetLastChangelogVersion(version: string): void;\n\tgetFirstRunOnboardingStartedVersion(): string | undefined;\n\tsetFirstRunOnboardingStartedVersion(version: string): void;\n\tgetOnboardedVersion(): string | undefined;\n\tsetOnboardedVersion(version: string): void;\n\tgetSessionDir(): string | undefined;\n\tgetDefaultProvider(): string | undefined;\n\tgetDefaultModel(): string | undefined;\n\tsetDefaultProvider(provider: string): void;\n\tsetDefaultModel(modelId: string): void;\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void;\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\";\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void;\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\";\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void;\n\tgetThemeSetting(): string | undefined;\n\tgetTheme(): string | undefined;\n\tsetTheme(theme: string): void;\n\tgetEnableAnalytics(): boolean | undefined;\n\tsetEnableAnalytics(enabled: boolean): void;\n\tgetTrackingId(): string | undefined;\n\tgetShowCacheMissNotices(): boolean;\n\tsetShowCacheMissNotices(enabled: boolean): void;\n\tgetDefaultThinkingLevel(): \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" | undefined;\n\tsetDefaultThinkingLevel(level: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\"): void;\n\tgetFallbackModels(): string[];\n\tgetTransport(): TransportSetting;\n\tsetTransport(transport: TransportSetting): void;\n\tgetCompactionEnabled(): boolean;\n\tsetCompactionEnabled(enabled: boolean): void;\n\tgetCompactionReserveTokens(): number;\n\tgetCompactionCompressionRatio(): number;\n\tgetCompactionPreserveRecent(): number;\n\tgetCompactionQuery(): string | undefined;\n\tgetCompactionSettings(): {\n\t\tenabled: boolean;\n\t\treserveTokens: number;\n\t\tcompression_ratio: number;\n\t\tpreserve_recent: number;\n\t\tquery?: string;\n\t};\n\tgetBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean };\n\tgetBranchSummarySkipPrompt(): boolean;\n\tgetRetryEnabled(): boolean;\n\tsetRetryEnabled(enabled: boolean): void;\n\tgetRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number };\n\tgetHttpProxy(): string | undefined;\n\tsetHttpProxy(proxy: string | undefined): void;\n\tgetHttpIdleTimeoutMs(): number;\n\tsetHttpIdleTimeoutMs(timeoutMs: number): void;\n\tgetWebSocketConnectTimeoutMs(): number | undefined;\n\tgetProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number };\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerBasicAccessors {}\n}\n\nconst basicAccessors: SettingsManagerBasicAccessors = {\n\tgetLastChangelogVersion() {\n\t\treturn settingsInternals(this).settings.lastChangelogVersion;\n\t},\n\n\tsetLastChangelogVersion(version) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.lastChangelogVersion = version;\n\t\tstate.markModified(\"lastChangelogVersion\");\n\t\tstate.save();\n\t},\n\n\tgetFirstRunOnboardingStartedVersion() {\n\t\treturn settingsInternals(this).settings.firstRunOnboardingStartedVersion;\n\t},\n\n\tsetFirstRunOnboardingStartedVersion(version) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.firstRunOnboardingStartedVersion = version;\n\t\tstate.markModified(\"firstRunOnboardingStartedVersion\");\n\t\tstate.save();\n\t},\n\n\tgetOnboardedVersion() {\n\t\treturn settingsInternals(this).settings.onboardedVersion;\n\t},\n\n\tsetOnboardedVersion(version) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.onboardedVersion = version;\n\t\tstate.markModified(\"onboardedVersion\");\n\t\tstate.save();\n\t},\n\n\tgetSessionDir() {\n\t\tconst sessionDir = settingsInternals(this).settings.sessionDir;\n\t\treturn sessionDir ? normalizePath(sessionDir) : sessionDir;\n\t},\n\n\tgetDefaultProvider() {\n\t\treturn settingsInternals(this).settings.defaultProvider;\n\t},\n\n\tgetDefaultModel() {\n\t\treturn settingsInternals(this).settings.defaultModel;\n\t},\n\n\tsetDefaultProvider(provider) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProvider = provider;\n\t\tstate.markModified(\"defaultProvider\");\n\t\tstate.save();\n\t},\n\n\tsetDefaultModel(modelId) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultModel = modelId;\n\t\tstate.markModified(\"defaultModel\");\n\t\tstate.save();\n\t},\n\n\tsetDefaultModelAndProvider(provider, modelId) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProvider = provider;\n\t\tstate.globalSettings.defaultModel = modelId;\n\t\tstate.markModified(\"defaultProvider\");\n\t\tstate.markModified(\"defaultModel\");\n\t\tstate.save();\n\t},\n\n\tgetSteeringMode() {\n\t\treturn settingsInternals(this).settings.steeringMode || \"one-at-a-time\";\n\t},\n\n\tsetSteeringMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.steeringMode = mode;\n\t\tstate.markModified(\"steeringMode\");\n\t\tstate.save();\n\t},\n\n\tgetFollowUpMode() {\n\t\treturn settingsInternals(this).settings.followUpMode || \"one-at-a-time\";\n\t},\n\n\tsetFollowUpMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.followUpMode = mode;\n\t\tstate.markModified(\"followUpMode\");\n\t\tstate.save();\n\t},\n\n\tgetThemeSetting() {\n\t\tconst value = settingsInternals(this).settings.theme;\n\t\tif (typeof value === \"string\") return value;\n\t\treturn undefined;\n\t},\n\n\tgetTheme() {\n\t\tconst theme = this.getThemeSetting();\n\t\treturn theme?.includes(\"/\") ? undefined : theme;\n\t},\n\n\tsetTheme(theme) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.theme = theme;\n\t\tstate.markModified(\"theme\");\n\t\tstate.save();\n\t},\n\n\tgetEnableAnalytics() {\n\t\treturn settingsInternals(this).settings.enableAnalytics;\n\t},\n\n\tsetEnableAnalytics(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableAnalytics = enabled;\n\t\tstate.markModified(\"enableAnalytics\");\n\t\tif (enabled && !state.globalSettings.trackingId) {\n\t\t\tstate.globalSettings.trackingId = randomUUID();\n\t\t\tstate.markModified(\"trackingId\");\n\t\t}\n\t\tstate.save();\n\t},\n\n\tgetTrackingId() {\n\t\treturn settingsInternals(this).settings.trackingId;\n\t},\n\n\tgetShowCacheMissNotices() {\n\t\treturn settingsInternals(this).settings.showCacheMissNotices ?? false;\n\t},\n\n\tsetShowCacheMissNotices(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.showCacheMissNotices = enabled;\n\t\tstate.markModified(\"showCacheMissNotices\");\n\t\tstate.save();\n\t},\n\n\tgetDefaultThinkingLevel() {\n\t\treturn settingsInternals(this).settings.defaultThinkingLevel;\n\t},\n\n\tsetDefaultThinkingLevel(level) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultThinkingLevel = level;\n\t\tstate.markModified(\"defaultThinkingLevel\");\n\t\tstate.save();\n\t},\n\n\tgetFallbackModels() {\n\t\treturn (settingsInternals(this).settings.fallbackModels ?? [])\n\t\t\t.filter((model): model is string => typeof model === \"string\")\n\t\t\t.map((model) => model.trim())\n\t\t\t.filter((model) => model.length > 0);\n\t},\n\n\tgetTransport() {\n\t\treturn settingsInternals(this).settings.transport ?? \"auto\";\n\t},\n\n\tsetTransport(transport) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.transport = transport;\n\t\tstate.markModified(\"transport\");\n\t\tstate.save();\n\t},\n\n\tgetCompactionEnabled() {\n\t\treturn settingsInternals(this).settings.compaction?.enabled ?? true;\n\t},\n\n\tsetCompactionEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.compaction) {\n\t\t\tstate.globalSettings.compaction = {};\n\t\t}\n\t\tstate.globalSettings.compaction.enabled = enabled;\n\t\tstate.markModified(\"compaction\", \"enabled\");\n\t\tstate.save();\n\t},\n\n\tgetCompactionReserveTokens() {\n\t\treturn settingsInternals(this).settings.compaction?.reserveTokens ?? 16384;\n\t},\n\n\tgetCompactionCompressionRatio() {\n\t\tconst value = settingsInternals(this).settings.compaction?.compression_ratio;\n\t\treturn typeof value === \"number\" && Number.isFinite(value) && value > 0 && value < 1 ? value : 0.5;\n\t},\n\n\tgetCompactionPreserveRecent() {\n\t\tconst value = settingsInternals(this).settings.compaction?.preserve_recent;\n\t\treturn typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 2;\n\t},\n\n\tgetCompactionQuery() {\n\t\tconst query = settingsInternals(this).settings.compaction?.query?.trim();\n\t\treturn query && query.length > 0 ? query : undefined;\n\t},\n\n\tgetCompactionSettings() {\n\t\tconst query = this.getCompactionQuery();\n\t\treturn {\n\t\t\tenabled: this.getCompactionEnabled(),\n\t\t\treserveTokens: this.getCompactionReserveTokens(),\n\t\t\tcompression_ratio: this.getCompactionCompressionRatio(),\n\t\t\tpreserve_recent: this.getCompactionPreserveRecent(),\n\t\t\t...(query === undefined ? {} : { query }),\n\t\t};\n\t},\n\n\tgetBranchSummarySettings() {\n\t\treturn {\n\t\t\treserveTokens: settingsInternals(this).settings.branchSummary?.reserveTokens ?? 16384,\n\t\t\tskipPrompt: settingsInternals(this).settings.branchSummary?.skipPrompt ?? false,\n\t\t};\n\t},\n\n\tgetBranchSummarySkipPrompt() {\n\t\treturn settingsInternals(this).settings.branchSummary?.skipPrompt ?? false;\n\t},\n\n\tgetRetryEnabled() {\n\t\treturn settingsInternals(this).settings.retry?.enabled ?? true;\n\t},\n\n\tsetRetryEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.retry) {\n\t\t\tstate.globalSettings.retry = {};\n\t\t}\n\t\tstate.globalSettings.retry.enabled = enabled;\n\t\tstate.markModified(\"retry\", \"enabled\");\n\t\tstate.save();\n\t},\n\n\tgetRetrySettings() {\n\t\treturn {\n\t\t\tenabled: this.getRetryEnabled(),\n\t\t\tmaxRetries: settingsInternals(this).settings.retry?.maxRetries ?? 3,\n\t\t\tbaseDelayMs: settingsInternals(this).settings.retry?.baseDelayMs ?? 2000,\n\t\t};\n\t},\n\n\tgetHttpProxy() {\n\t\treturn settingsInternals(this).globalSettings.httpProxy;\n\t},\n\n\tsetHttpProxy(proxy) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.httpProxy = proxy;\n\t\tstate.markModified(\"httpProxy\");\n\t\tstate.save();\n\t},\n\n\tgetHttpIdleTimeoutMs() {\n\t\tconst value = settingsInternals(this).settings.httpIdleTimeoutMs;\n\t\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\t\tif (timeoutMs !== undefined) {\n\t\t\treturn timeoutMs;\n\t\t}\n\t\tif (value !== undefined) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(value)}`);\n\t\t}\n\t\treturn DEFAULT_HTTP_IDLE_TIMEOUT_MS;\n\t},\n\n\tsetHttpIdleTimeoutMs(timeoutMs) {\n\t\tconst normalizedTimeoutMs = parseHttpIdleTimeoutMs(timeoutMs);\n\t\tif (normalizedTimeoutMs === undefined) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);\n\t\t}\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.httpIdleTimeoutMs = normalizedTimeoutMs;\n\t\tstate.markModified(\"httpIdleTimeoutMs\");\n\t\tstate.save();\n\t},\n\n\tgetWebSocketConnectTimeoutMs() {\n\t\tconst value = settingsInternals(this).settings.websocketConnectTimeoutMs;\n\t\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\t\tif (timeoutMs !== undefined) {\n\t\t\treturn timeoutMs;\n\t\t}\n\t\tif (value !== undefined) {\n\t\t\tthrow new Error(`Invalid websocketConnectTimeoutMs setting: ${String(value)}`);\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tgetProviderRetrySettings() {\n\t\treturn {\n\t\t\ttimeoutMs: settingsInternals(this).settings.retry?.provider?.timeoutMs,\n\t\t\tmaxRetries: settingsInternals(this).settings.retry?.provider?.maxRetries,\n\t\t\tmaxRetryDelayMs: settingsInternals(this).settings.retry?.provider?.maxRetryDelayMs ?? 60000,\n\t\t};\n\t},\n};\n\nObject.assign(SettingsManager.prototype, basicAccessors);\n"]}
|
|
1
|
+
{"version":3,"file":"settings-manager-basic-accessors.js","sourceRoot":"","sources":["../../src/core/settings-manager-basic-accessors.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { normalizePath } from \"../utils/paths.ts\";\nimport { DEFAULT_HTTP_IDLE_TIMEOUT_MS, parseHttpIdleTimeoutMs } from \"./http-dispatcher.ts\";\nimport { SettingsManager } from \"./settings-manager-core.ts\";\nimport { settingsInternals } from \"./settings-manager-internals.ts\";\nimport type { TransportSetting } from \"./settings-types.ts\";\n\ninterface SettingsManagerBasicAccessors {\n\tgetLastChangelogVersion(): string | undefined;\n\tsetLastChangelogVersion(version: string): void;\n\tgetFirstRunOnboardingStartedVersion(): string | undefined;\n\tsetFirstRunOnboardingStartedVersion(version: string): void;\n\tgetOnboardedVersion(): string | undefined;\n\tsetOnboardedVersion(version: string): void;\n\tgetSessionDir(): string | undefined;\n\tgetDefaultProvider(): string | undefined;\n\tgetDefaultModel(): string | undefined;\n\tsetDefaultProvider(provider: string): void;\n\tsetDefaultModel(modelId: string): void;\n\tsetDefaultModelAndProvider(provider: string, modelId: string): void;\n\tgetSteeringMode(): \"all\" | \"one-at-a-time\";\n\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\"): void;\n\tgetFollowUpMode(): \"all\" | \"one-at-a-time\";\n\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\"): void;\n\tgetThemeSetting(): string | undefined;\n\tgetTheme(): string | undefined;\n\tsetTheme(theme: string): void;\n\tgetEnableAnalytics(): boolean | undefined;\n\tsetEnableAnalytics(enabled: boolean): void;\n\tgetTrackingId(): string | undefined;\n\tgetShowCacheMissNotices(): boolean;\n\tsetShowCacheMissNotices(enabled: boolean): void;\n\tgetDefaultThinkingLevel(): \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\" | undefined;\n\tsetDefaultThinkingLevel(level: \"off\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\"): void;\n\tgetFallbackModels(): string[];\n\tgetTransport(): TransportSetting;\n\tsetTransport(transport: TransportSetting): void;\n\tgetCompactionEnabled(): boolean;\n\tsetCompactionEnabled(enabled: boolean): void;\n\tgetCompactionReserveTokens(): number;\n\tgetCompactionCompressionRatio(): number;\n\tgetCompactionPreserveRecent(): number;\n\tgetCompactionQuery(): string | undefined;\n\tgetCompactionSettings(): {\n\t\tenabled: boolean;\n\t\treserveTokens: number;\n\t\tcompression_ratio: number;\n\t\tpreserve_recent: number;\n\t\tquery?: string;\n\t};\n\tgetBranchSummarySettings(): { reserveTokens: number; skipPrompt: boolean };\n\tgetBranchSummarySkipPrompt(): boolean;\n\tgetSessionSummarySettings(): { enabled: boolean };\n\tgetRetryEnabled(): boolean;\n\tsetRetryEnabled(enabled: boolean): void;\n\tgetRetrySettings(): { enabled: boolean; maxRetries: number; baseDelayMs: number };\n\tgetHttpProxy(): string | undefined;\n\tsetHttpProxy(proxy: string | undefined): void;\n\tgetHttpIdleTimeoutMs(): number;\n\tsetHttpIdleTimeoutMs(timeoutMs: number): void;\n\tgetWebSocketConnectTimeoutMs(): number | undefined;\n\tgetProviderRetrySettings(): { timeoutMs?: number; maxRetries?: number; maxRetryDelayMs: number };\n}\n\ndeclare module \"./settings-manager-core.ts\" {\n\tinterface SettingsManager extends SettingsManagerBasicAccessors {}\n}\n\nconst basicAccessors: SettingsManagerBasicAccessors = {\n\tgetLastChangelogVersion() {\n\t\treturn settingsInternals(this).settings.lastChangelogVersion;\n\t},\n\n\tsetLastChangelogVersion(version) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.lastChangelogVersion = version;\n\t\tstate.markModified(\"lastChangelogVersion\");\n\t\tstate.save();\n\t},\n\n\tgetFirstRunOnboardingStartedVersion() {\n\t\treturn settingsInternals(this).settings.firstRunOnboardingStartedVersion;\n\t},\n\n\tsetFirstRunOnboardingStartedVersion(version) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.firstRunOnboardingStartedVersion = version;\n\t\tstate.markModified(\"firstRunOnboardingStartedVersion\");\n\t\tstate.save();\n\t},\n\n\tgetOnboardedVersion() {\n\t\treturn settingsInternals(this).settings.onboardedVersion;\n\t},\n\n\tsetOnboardedVersion(version) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.onboardedVersion = version;\n\t\tstate.markModified(\"onboardedVersion\");\n\t\tstate.save();\n\t},\n\n\tgetSessionDir() {\n\t\tconst sessionDir = settingsInternals(this).settings.sessionDir;\n\t\treturn sessionDir ? normalizePath(sessionDir) : sessionDir;\n\t},\n\n\tgetDefaultProvider() {\n\t\treturn settingsInternals(this).settings.defaultProvider;\n\t},\n\n\tgetDefaultModel() {\n\t\treturn settingsInternals(this).settings.defaultModel;\n\t},\n\n\tsetDefaultProvider(provider) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProvider = provider;\n\t\tstate.markModified(\"defaultProvider\");\n\t\tstate.save();\n\t},\n\n\tsetDefaultModel(modelId) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultModel = modelId;\n\t\tstate.markModified(\"defaultModel\");\n\t\tstate.save();\n\t},\n\n\tsetDefaultModelAndProvider(provider, modelId) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultProvider = provider;\n\t\tstate.globalSettings.defaultModel = modelId;\n\t\tstate.markModified(\"defaultProvider\");\n\t\tstate.markModified(\"defaultModel\");\n\t\tstate.save();\n\t},\n\n\tgetSteeringMode() {\n\t\treturn settingsInternals(this).settings.steeringMode || \"one-at-a-time\";\n\t},\n\n\tsetSteeringMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.steeringMode = mode;\n\t\tstate.markModified(\"steeringMode\");\n\t\tstate.save();\n\t},\n\n\tgetFollowUpMode() {\n\t\treturn settingsInternals(this).settings.followUpMode || \"one-at-a-time\";\n\t},\n\n\tsetFollowUpMode(mode) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.followUpMode = mode;\n\t\tstate.markModified(\"followUpMode\");\n\t\tstate.save();\n\t},\n\n\tgetThemeSetting() {\n\t\tconst value = settingsInternals(this).settings.theme;\n\t\tif (typeof value === \"string\") return value;\n\t\treturn undefined;\n\t},\n\n\tgetTheme() {\n\t\tconst theme = this.getThemeSetting();\n\t\treturn theme?.includes(\"/\") ? undefined : theme;\n\t},\n\n\tsetTheme(theme) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.theme = theme;\n\t\tstate.markModified(\"theme\");\n\t\tstate.save();\n\t},\n\n\tgetEnableAnalytics() {\n\t\treturn settingsInternals(this).settings.enableAnalytics;\n\t},\n\n\tsetEnableAnalytics(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.enableAnalytics = enabled;\n\t\tstate.markModified(\"enableAnalytics\");\n\t\tif (enabled && !state.globalSettings.trackingId) {\n\t\t\tstate.globalSettings.trackingId = randomUUID();\n\t\t\tstate.markModified(\"trackingId\");\n\t\t}\n\t\tstate.save();\n\t},\n\n\tgetTrackingId() {\n\t\treturn settingsInternals(this).settings.trackingId;\n\t},\n\n\tgetShowCacheMissNotices() {\n\t\treturn settingsInternals(this).settings.showCacheMissNotices ?? false;\n\t},\n\n\tsetShowCacheMissNotices(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.showCacheMissNotices = enabled;\n\t\tstate.markModified(\"showCacheMissNotices\");\n\t\tstate.save();\n\t},\n\n\tgetDefaultThinkingLevel() {\n\t\treturn settingsInternals(this).settings.defaultThinkingLevel;\n\t},\n\n\tsetDefaultThinkingLevel(level) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.defaultThinkingLevel = level;\n\t\tstate.markModified(\"defaultThinkingLevel\");\n\t\tstate.save();\n\t},\n\n\tgetFallbackModels() {\n\t\treturn (settingsInternals(this).settings.fallbackModels ?? [])\n\t\t\t.filter((model): model is string => typeof model === \"string\")\n\t\t\t.map((model) => model.trim())\n\t\t\t.filter((model) => model.length > 0);\n\t},\n\n\tgetTransport() {\n\t\treturn settingsInternals(this).settings.transport ?? \"auto\";\n\t},\n\n\tsetTransport(transport) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.transport = transport;\n\t\tstate.markModified(\"transport\");\n\t\tstate.save();\n\t},\n\n\tgetCompactionEnabled() {\n\t\treturn settingsInternals(this).settings.compaction?.enabled ?? true;\n\t},\n\n\tsetCompactionEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.compaction) {\n\t\t\tstate.globalSettings.compaction = {};\n\t\t}\n\t\tstate.globalSettings.compaction.enabled = enabled;\n\t\tstate.markModified(\"compaction\", \"enabled\");\n\t\tstate.save();\n\t},\n\n\tgetCompactionReserveTokens() {\n\t\treturn settingsInternals(this).settings.compaction?.reserveTokens ?? 16384;\n\t},\n\n\tgetCompactionCompressionRatio() {\n\t\tconst value = settingsInternals(this).settings.compaction?.compression_ratio;\n\t\treturn typeof value === \"number\" && Number.isFinite(value) && value > 0 && value < 1 ? value : 0.5;\n\t},\n\n\tgetCompactionPreserveRecent() {\n\t\tconst value = settingsInternals(this).settings.compaction?.preserve_recent;\n\t\treturn typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 2;\n\t},\n\n\tgetCompactionQuery() {\n\t\tconst query = settingsInternals(this).settings.compaction?.query?.trim();\n\t\treturn query && query.length > 0 ? query : undefined;\n\t},\n\n\tgetCompactionSettings() {\n\t\tconst query = this.getCompactionQuery();\n\t\treturn {\n\t\t\tenabled: this.getCompactionEnabled(),\n\t\t\treserveTokens: this.getCompactionReserveTokens(),\n\t\t\tcompression_ratio: this.getCompactionCompressionRatio(),\n\t\t\tpreserve_recent: this.getCompactionPreserveRecent(),\n\t\t\t...(query === undefined ? {} : { query }),\n\t\t};\n\t},\n\n\tgetBranchSummarySettings() {\n\t\treturn {\n\t\t\treserveTokens: settingsInternals(this).settings.branchSummary?.reserveTokens ?? 16384,\n\t\t\tskipPrompt: settingsInternals(this).settings.branchSummary?.skipPrompt ?? false,\n\t\t};\n\t},\n\n\tgetBranchSummarySkipPrompt() {\n\t\treturn settingsInternals(this).settings.branchSummary?.skipPrompt ?? false;\n\t},\n\n\tgetSessionSummarySettings() {\n\t\treturn {\n\t\t\tenabled: settingsInternals(this).settings.sessionSummary?.enabled ?? true,\n\t\t};\n\t},\n\n\tgetRetryEnabled() {\n\t\treturn settingsInternals(this).settings.retry?.enabled ?? true;\n\t},\n\n\tsetRetryEnabled(enabled) {\n\t\tconst state = settingsInternals(this);\n\t\tif (!state.globalSettings.retry) {\n\t\t\tstate.globalSettings.retry = {};\n\t\t}\n\t\tstate.globalSettings.retry.enabled = enabled;\n\t\tstate.markModified(\"retry\", \"enabled\");\n\t\tstate.save();\n\t},\n\n\tgetRetrySettings() {\n\t\treturn {\n\t\t\tenabled: this.getRetryEnabled(),\n\t\t\tmaxRetries: settingsInternals(this).settings.retry?.maxRetries ?? 3,\n\t\t\tbaseDelayMs: settingsInternals(this).settings.retry?.baseDelayMs ?? 2000,\n\t\t};\n\t},\n\n\tgetHttpProxy() {\n\t\treturn settingsInternals(this).globalSettings.httpProxy;\n\t},\n\n\tsetHttpProxy(proxy) {\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.httpProxy = proxy;\n\t\tstate.markModified(\"httpProxy\");\n\t\tstate.save();\n\t},\n\n\tgetHttpIdleTimeoutMs() {\n\t\tconst value = settingsInternals(this).settings.httpIdleTimeoutMs;\n\t\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\t\tif (timeoutMs !== undefined) {\n\t\t\treturn timeoutMs;\n\t\t}\n\t\tif (value !== undefined) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(value)}`);\n\t\t}\n\t\treturn DEFAULT_HTTP_IDLE_TIMEOUT_MS;\n\t},\n\n\tsetHttpIdleTimeoutMs(timeoutMs) {\n\t\tconst normalizedTimeoutMs = parseHttpIdleTimeoutMs(timeoutMs);\n\t\tif (normalizedTimeoutMs === undefined) {\n\t\t\tthrow new Error(`Invalid httpIdleTimeoutMs setting: ${String(timeoutMs)}`);\n\t\t}\n\t\tconst state = settingsInternals(this);\n\t\tstate.globalSettings.httpIdleTimeoutMs = normalizedTimeoutMs;\n\t\tstate.markModified(\"httpIdleTimeoutMs\");\n\t\tstate.save();\n\t},\n\n\tgetWebSocketConnectTimeoutMs() {\n\t\tconst value = settingsInternals(this).settings.websocketConnectTimeoutMs;\n\t\tconst timeoutMs = parseHttpIdleTimeoutMs(value);\n\t\tif (timeoutMs !== undefined) {\n\t\t\treturn timeoutMs;\n\t\t}\n\t\tif (value !== undefined) {\n\t\t\tthrow new Error(`Invalid websocketConnectTimeoutMs setting: ${String(value)}`);\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tgetProviderRetrySettings() {\n\t\treturn {\n\t\t\ttimeoutMs: settingsInternals(this).settings.retry?.provider?.timeoutMs,\n\t\t\tmaxRetries: settingsInternals(this).settings.retry?.provider?.maxRetries,\n\t\t\tmaxRetryDelayMs: settingsInternals(this).settings.retry?.provider?.maxRetryDelayMs ?? 60000,\n\t\t};\n\t},\n};\n\nObject.assign(SettingsManager.prototype, basicAccessors);\n"]}
|
|
@@ -4,5 +4,5 @@ import "./settings-manager-ui-accessors.ts";
|
|
|
4
4
|
export type { ScrollViewScrollbar } from "@earendil-works/pi-tui";
|
|
5
5
|
export { SettingsManager } from "./settings-manager-core.ts";
|
|
6
6
|
export { FileSettingsStorage, InMemorySettingsStorage } from "./settings-storage.ts";
|
|
7
|
-
export type { BranchSummarySettings, CodexFastModeSettings, CompactionSettings, DefaultProjectTrust, ImageSettings, MarkdownSettings, MermaidRenderingMode, PackageSource, ProviderRetrySettings, RetrySettings, Settings, SettingsError, SettingsManagerCreateOptions, SettingsScope, SettingsStorage, TerminalSettings, ThinkingBudgetsSettings, TransportSetting, WarningSettings, } from "./settings-types.ts";
|
|
7
|
+
export type { BranchSummarySettings, CodexFastModeSettings, CompactionSettings, DefaultProjectTrust, ImageSettings, MarkdownSettings, MermaidRenderingMode, PackageSource, ProviderRetrySettings, RetrySettings, SessionSummarySettings, Settings, SettingsError, SettingsManagerCreateOptions, SettingsScope, SettingsStorage, TerminalSettings, ThinkingBudgetsSettings, TransportSetting, WarningSettings, } from "./settings-types.ts";
|
|
8
8
|
//# sourceMappingURL=settings-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,0CAA0C,CAAC;AAClD,OAAO,oCAAoC,CAAC;AAE5C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EACX,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,4BAA4B,EAC5B,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,GACf,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,0CAA0C,CAAC;AAClD,OAAO,oCAAoC,CAAC;AAE5C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrF,YAAY,EACX,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,QAAQ,EACR,aAAa,EACb,4BAA4B,EAC5B,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,GACf,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,0CAA0C,CAAC;AAClD,OAAO,oCAAoC,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["import \"./settings-manager-basic-accessors.ts\";\nimport \"./settings-manager-resource-accessors.ts\";\nimport \"./settings-manager-ui-accessors.ts\";\n\nexport type { ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\n\nexport { SettingsManager } from \"./settings-manager-core.ts\";\nexport { FileSettingsStorage, InMemorySettingsStorage } from \"./settings-storage.ts\";\nexport type {\n\tBranchSummarySettings,\n\tCodexFastModeSettings,\n\tCompactionSettings,\n\tDefaultProjectTrust,\n\tImageSettings,\n\tMarkdownSettings,\n\tMermaidRenderingMode,\n\tPackageSource,\n\tProviderRetrySettings,\n\tRetrySettings,\n\tSettings,\n\tSettingsError,\n\tSettingsManagerCreateOptions,\n\tSettingsScope,\n\tSettingsStorage,\n\tTerminalSettings,\n\tThinkingBudgetsSettings,\n\tTransportSetting,\n\tWarningSettings,\n} from \"./settings-types.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/core/settings-manager.ts"],"names":[],"mappings":"AAAA,OAAO,uCAAuC,CAAC;AAC/C,OAAO,0CAA0C,CAAC;AAClD,OAAO,oCAAoC,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["import \"./settings-manager-basic-accessors.ts\";\nimport \"./settings-manager-resource-accessors.ts\";\nimport \"./settings-manager-ui-accessors.ts\";\n\nexport type { ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\n\nexport { SettingsManager } from \"./settings-manager-core.ts\";\nexport { FileSettingsStorage, InMemorySettingsStorage } from \"./settings-storage.ts\";\nexport type {\n\tBranchSummarySettings,\n\tCodexFastModeSettings,\n\tCompactionSettings,\n\tDefaultProjectTrust,\n\tImageSettings,\n\tMarkdownSettings,\n\tMermaidRenderingMode,\n\tPackageSource,\n\tProviderRetrySettings,\n\tRetrySettings,\n\tSessionSummarySettings,\n\tSettings,\n\tSettingsError,\n\tSettingsManagerCreateOptions,\n\tSettingsScope,\n\tSettingsStorage,\n\tTerminalSettings,\n\tThinkingBudgetsSettings,\n\tTransportSetting,\n\tWarningSettings,\n} from \"./settings-types.ts\";\n"]}
|
|
@@ -11,6 +11,9 @@ export interface BranchSummarySettings {
|
|
|
11
11
|
reserveTokens?: number;
|
|
12
12
|
skipPrompt?: boolean;
|
|
13
13
|
}
|
|
14
|
+
export interface SessionSummarySettings {
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}
|
|
14
17
|
export interface ProviderRetrySettings {
|
|
15
18
|
timeoutMs?: number;
|
|
16
19
|
maxRetries?: number;
|
|
@@ -92,6 +95,7 @@ export interface Settings {
|
|
|
92
95
|
showCacheMissNotices?: boolean;
|
|
93
96
|
compaction?: CompactionSettings;
|
|
94
97
|
branchSummary?: BranchSummarySettings;
|
|
98
|
+
sessionSummary?: SessionSummarySettings;
|
|
95
99
|
retry?: RetrySettings;
|
|
96
100
|
hideThinkingBlock?: boolean;
|
|
97
101
|
externalEditor?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-types.d.ts","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings-types.d.ts","sourceRoot":"","sources":["../../src/core/settings-types.ts"],"names":[],"mappings":"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"}
|