@openadapter/koda 1.0.0-beta.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 +4448 -0
- package/README.md +665 -0
- package/dist/bun/cli.d.ts +2 -0
- package/dist/bun/cli.js +2 -0
- package/dist/bun/register-bedrock.d.ts +1 -0
- package/dist/bun/register-bedrock.js +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +12 -0
- package/dist/bun/restore-sandbox-env.js +1 -0
- package/dist/cli/args.d.ts +55 -0
- package/dist/cli/args.js +167 -0
- package/dist/cli/config-selector.d.ts +13 -0
- package/dist/cli/config-selector.js +1 -0
- package/dist/cli/file-processor.d.ts +14 -0
- package/dist/cli/file-processor.js +7 -0
- package/dist/cli/import-sessions.d.ts +34 -0
- package/dist/cli/import-sessions.js +6 -0
- package/dist/cli/initial-message.d.ts +17 -0
- package/dist/cli/initial-message.js +1 -0
- package/dist/cli/list-models.d.ts +8 -0
- package/dist/cli/list-models.js +2 -0
- package/dist/cli/openadapter-setup.d.ts +29 -0
- package/dist/cli/openadapter-setup.js +3 -0
- package/dist/cli/session-picker.d.ts +8 -0
- package/dist/cli/session-picker.js +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +2 -0
- package/dist/config.d.ts +92 -0
- package/dist/config.js +1 -0
- package/dist/core/agent-session-runtime.d.ts +116 -0
- package/dist/core/agent-session-runtime.js +1 -0
- package/dist/core/agent-session-services.d.ts +86 -0
- package/dist/core/agent-session-services.js +1 -0
- package/dist/core/agent-session.d.ts +747 -0
- package/dist/core/agent-session.js +32 -0
- package/dist/core/auth-guidance.d.ts +4 -0
- package/dist/core/auth-guidance.js +8 -0
- package/dist/core/auth-storage.d.ts +140 -0
- package/dist/core/auth-storage.js +1 -0
- package/dist/core/bash-executor.d.ts +31 -0
- package/dist/core/bash-executor.js +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +89 -0
- package/dist/core/compaction/branch-summarization.js +38 -0
- package/dist/core/compaction/compaction.d.ts +120 -0
- package/dist/core/compaction/compaction.js +104 -0
- package/dist/core/compaction/index.d.ts +6 -0
- package/dist/core/compaction/index.js +1 -0
- package/dist/core/compaction/utils.d.ts +37 -0
- package/dist/core/compaction/utils.js +19 -0
- package/dist/core/defaults.d.ts +2 -0
- package/dist/core/defaults.js +1 -0
- package/dist/core/diagnostics.d.ts +14 -0
- package/dist/core/diagnostics.js +0 -0
- package/dist/core/event-bus.d.ts +8 -0
- package/dist/core/event-bus.js +1 -0
- package/dist/core/exec.d.ts +28 -0
- package/dist/core/exec.js +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +21 -0
- package/dist/core/export-html/ansi-to-html.js +1 -0
- package/dist/core/export-html/index.d.ts +36 -0
- package/dist/core/export-html/index.js +2 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +72 -0
- package/dist/core/export-html/tool-renderer.d.ts +33 -0
- package/dist/core/export-html/tool-renderer.js +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +8 -0
- package/dist/core/export-html/vendor/marked.min.js +56 -0
- package/dist/core/extensions/index.d.ts +11 -0
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/loader.d.ts +23 -0
- package/dist/core/extensions/loader.js +1 -0
- package/dist/core/extensions/runner.d.ts +160 -0
- package/dist/core/extensions/runner.js +1 -0
- package/dist/core/extensions/types.d.ts +1180 -0
- package/dist/core/extensions/types.js +1 -0
- package/dist/core/extensions/wrapper.d.ts +19 -0
- package/dist/core/extensions/wrapper.js +1 -0
- package/dist/core/footer-data-provider.d.ts +53 -0
- package/dist/core/footer-data-provider.js +1 -0
- package/dist/core/http-dispatcher.d.ts +20 -0
- package/dist/core/http-dispatcher.js +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.js +1 -0
- package/dist/core/keybindings.d.ts +352 -0
- package/dist/core/keybindings.js +1 -0
- package/dist/core/messages.d.ts +76 -0
- package/dist/core/messages.js +17 -0
- package/dist/core/model-registry.d.ts +149 -0
- package/dist/core/model-registry.js +9 -0
- package/dist/core/model-resolver.d.ts +109 -0
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.js +1 -0
- package/dist/core/package-manager.d.ts +203 -0
- package/dist/core/package-manager.js +3 -0
- package/dist/core/prompt-templates.d.ts +51 -0
- package/dist/core/prompt-templates.js +2 -0
- package/dist/core/provider-attribution.d.ts +3 -0
- package/dist/core/provider-attribution.js +1 -0
- package/dist/core/provider-display-names.d.ts +1 -0
- package/dist/core/provider-display-names.js +1 -0
- package/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/core/resolve-config-value.js +1 -0
- package/dist/core/resource-loader.d.ts +193 -0
- package/dist/core/resource-loader.js +1 -0
- package/dist/core/sdk.d.ts +108 -0
- package/dist/core/sdk.js +1 -0
- package/dist/core/session-cwd.d.ts +18 -0
- package/dist/core/session-cwd.js +7 -0
- package/dist/core/session-manager.d.ts +331 -0
- package/dist/core/session-manager.js +11 -0
- package/dist/core/settings-manager.d.ts +265 -0
- package/dist/core/settings-manager.js +1 -0
- package/dist/core/skills.d.ts +59 -0
- package/dist/core/skills.js +4 -0
- package/dist/core/slash-commands.d.ts +13 -0
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/source-info.d.ts +17 -0
- package/dist/core/source-info.js +1 -0
- package/dist/core/system-prompt.d.ts +27 -0
- package/dist/core/system-prompt.js +52 -0
- package/dist/core/telemetry.d.ts +2 -0
- package/dist/core/telemetry.js +1 -0
- package/dist/core/timings.d.ts +7 -0
- package/dist/core/timings.js +3 -0
- package/dist/core/tools/bash.d.ts +67 -0
- package/dist/core/tools/bash.js +18 -0
- package/dist/core/tools/edit-diff.d.ts +86 -0
- package/dist/core/tools/edit-diff.js +16 -0
- package/dist/core/tools/edit.d.ts +50 -0
- package/dist/core/tools/edit.js +2 -0
- package/dist/core/tools/file-mutation-queue.d.ts +5 -0
- package/dist/core/tools/file-mutation-queue.js +1 -0
- package/dist/core/tools/find.d.ts +34 -0
- package/dist/core/tools/find.js +13 -0
- package/dist/core/tools/grep.d.ts +36 -0
- package/dist/core/tools/grep.js +13 -0
- package/dist/core/tools/index.d.ts +39 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/ls.d.ts +36 -0
- package/dist/core/tools/ls.js +9 -0
- package/dist/core/tools/output-accumulator.d.ts +51 -0
- package/dist/core/tools/output-accumulator.js +4 -0
- package/dist/core/tools/path-utils.d.ts +9 -0
- package/dist/core/tools/path-utils.js +1 -0
- package/dist/core/tools/read.d.ts +34 -0
- package/dist/core/tools/read.js +22 -0
- package/dist/core/tools/render-utils.d.ts +23 -0
- package/dist/core/tools/render-utils.js +4 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +13 -0
- package/dist/core/tools/tool-definition-wrapper.js +1 -0
- package/dist/core/tools/truncate.d.ts +69 -0
- package/dist/core/tools/truncate.js +5 -0
- package/dist/core/tools/write.d.ts +25 -0
- package/dist/core/tools/write.js +13 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +1 -0
- package/dist/main.d.ts +11 -0
- package/dist/main.js +1 -0
- package/dist/migrations.d.ts +32 -0
- package/dist/migrations.js +8 -0
- package/dist/modes/index.d.ts +8 -0
- package/dist/modes/index.js +1 -0
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/components/armin.d.ts +33 -0
- package/dist/modes/interactive/components/armin.js +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +19 -0
- package/dist/modes/interactive/components/assistant-message.js +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +33 -0
- package/dist/modes/interactive/components/bash-execution.js +13 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +15 -0
- package/dist/modes/interactive/components/bordered-loader.js +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +15 -0
- package/dist/modes/interactive/components/branch-summary-message.js +3 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +15 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +3 -0
- package/dist/modes/interactive/components/config-selector.d.ts +70 -0
- package/dist/modes/interactive/components/config-selector.js +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +13 -0
- package/dist/modes/interactive/components/countdown-timer.js +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +20 -0
- package/dist/modes/interactive/components/custom-editor.js +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +19 -0
- package/dist/modes/interactive/components/custom-message.js +2 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +22 -0
- package/dist/modes/interactive/components/daxnuts.js +1 -0
- package/dist/modes/interactive/components/diff.d.ts +11 -0
- package/dist/modes/interactive/components/diff.js +3 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +14 -0
- package/dist/modes/interactive/components/dynamic-border.js +1 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts +4 -0
- package/dist/modes/interactive/components/earendil-announcement.js +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +19 -0
- package/dist/modes/interactive/components/extension-editor.js +3 -0
- package/dist/modes/interactive/components/extension-input.d.ts +22 -0
- package/dist/modes/interactive/components/extension-input.js +2 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +25 -0
- package/dist/modes/interactive/components/extension-selector.js +2 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.js +1 -0
- package/dist/modes/interactive/components/index.d.ts +31 -0
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +12 -0
- package/dist/modes/interactive/components/keybinding-hints.js +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +51 -0
- package/dist/modes/interactive/components/login-dialog.js +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +46 -0
- package/dist/modes/interactive/components/model-selector.js +2 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +30 -0
- package/dist/modes/interactive/components/oauth-selector.js +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +41 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +22 -0
- package/dist/modes/interactive/components/session-selector-search.js +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/modes/interactive/components/session-selector.js +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +68 -0
- package/dist/modes/interactive/components/settings-selector.js +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +9 -0
- package/dist/modes/interactive/components/show-images-selector.js +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +16 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +10 -0
- package/dist/modes/interactive/components/theme-selector.js +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +10 -0
- package/dist/modes/interactive/components/thinking-selector.js +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +62 -0
- package/dist/modes/interactive/components/tool-execution.js +4 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +88 -0
- package/dist/modes/interactive/components/tree-selector.js +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +29 -0
- package/dist/modes/interactive/components/user-message-selector.js +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +9 -0
- package/dist/modes/interactive/components/user-message.js +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +23 -0
- package/dist/modes/interactive/components/visual-truncate.js +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +417 -0
- package/dist/modes/interactive/interactive-mode.js +116 -0
- package/dist/modes/interactive/theme/dark.json +86 -0
- package/dist/modes/interactive/theme/light.json +85 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +101 -0
- package/dist/modes/interactive/theme/theme.js +18 -0
- package/dist/modes/print-mode.d.ts +27 -0
- package/dist/modes/print-mode.js +4 -0
- package/dist/modes/rpc/jsonl.d.ts +16 -0
- package/dist/modes/rpc/jsonl.js +3 -0
- package/dist/modes/rpc/rpc-client.d.ts +226 -0
- package/dist/modes/rpc/rpc-client.js +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +19 -0
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +419 -0
- package/dist/modes/rpc/rpc-types.js +0 -0
- package/dist/package-manager-cli.d.ts +3 -0
- package/dist/package-manager-cli.js +49 -0
- package/dist/utils/ansi.d.ts +1 -0
- package/dist/utils/ansi.js +1 -0
- package/dist/utils/auto-update.d.ts +13 -0
- package/dist/utils/auto-update.js +1 -0
- package/dist/utils/changelog.d.ts +20 -0
- package/dist/utils/changelog.js +4 -0
- package/dist/utils/child-process.d.ts +14 -0
- package/dist/utils/child-process.js +1 -0
- package/dist/utils/clipboard-image.d.ts +10 -0
- package/dist/utils/clipboard-image.js +1 -0
- package/dist/utils/clipboard-native.d.ts +9 -0
- package/dist/utils/clipboard-native.js +1 -0
- package/dist/utils/clipboard.d.ts +1 -0
- package/dist/utils/clipboard.js +1 -0
- package/dist/utils/deprecation.d.ts +3 -0
- package/dist/utils/deprecation.js +1 -0
- package/dist/utils/exif-orientation.d.ts +4 -0
- package/dist/utils/exif-orientation.js +1 -0
- package/dist/utils/frontmatter.d.ts +7 -0
- package/dist/utils/frontmatter.js +4 -0
- package/dist/utils/fs-watch.d.ts +4 -0
- package/dist/utils/fs-watch.js +1 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.js +1 -0
- package/dist/utils/html.d.ts +6 -0
- package/dist/utils/html.js +1 -0
- package/dist/utils/image-convert.d.ts +8 -0
- package/dist/utils/image-convert.js +1 -0
- package/dist/utils/image-resize-core.d.ts +29 -0
- package/dist/utils/image-resize-core.js +1 -0
- package/dist/utils/image-resize-worker.d.ts +1 -0
- package/dist/utils/image-resize-worker.js +1 -0
- package/dist/utils/image-resize.d.ts +15 -0
- package/dist/utils/image-resize.js +1 -0
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.js +1 -0
- package/dist/utils/koda-user-agent.d.ts +1 -0
- package/dist/utils/koda-user-agent.js +1 -0
- package/dist/utils/mime.d.ts +2 -0
- package/dist/utils/mime.js +1 -0
- package/dist/utils/paths.d.ts +30 -0
- package/dist/utils/paths.js +1 -0
- package/dist/utils/photon.d.ts +20 -0
- package/dist/utils/photon.js +1 -0
- package/dist/utils/shell.d.ts +29 -0
- package/dist/utils/shell.js +8 -0
- package/dist/utils/sleep.d.ts +4 -0
- package/dist/utils/sleep.js +1 -0
- package/dist/utils/syntax-highlight.d.ts +11 -0
- package/dist/utils/syntax-highlight.js +2 -0
- package/dist/utils/tools-manager.d.ts +2 -0
- package/dist/utils/tools-manager.js +1 -0
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.js +1 -0
- package/dist/utils/windows-self-update.d.ts +2 -0
- package/dist/utils/windows-self-update.js +1 -0
- package/docs/compaction.md +394 -0
- package/docs/custom-provider.md +736 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +148 -0
- package/docs/extensions.md +2626 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +80 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +493 -0
- package/docs/packages.md +226 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +253 -0
- package/docs/quickstart.md +165 -0
- package/docs/rpc.md +1408 -0
- package/docs/sdk.md +1137 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +281 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +231 -0
- package/docs/terminal-setup.md +114 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +295 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +927 -0
- package/docs/usage.md +288 -0
- package/docs/windows.md +17 -0
- package/npm-shrinkwrap.json +1792 -0
- package/openadapter/extensions/koda-ask.js +12 -0
- package/openadapter/extensions/koda-bg.js +14 -0
- package/openadapter/extensions/koda-commands.mjs +15 -0
- package/openadapter/extensions/koda-help.js +8 -0
- package/openadapter/extensions/koda-memory.js +16 -0
- package/openadapter/extensions/koda-status.js +1 -0
- package/openadapter/extensions/koda-todo.js +4 -0
- package/openadapter/extensions/koda-vision.js +4 -0
- package/openadapter/extensions/koda-web.js +7 -0
- package/openadapter/setup.mjs +173 -0
- package/openadapter/skills/code-review/SKILL.md +22 -0
- package/openadapter/skills/debugging/SKILL.md +28 -0
- package/openadapter/skills/frontend/SKILL.md +38 -0
- package/package.json +108 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { AgentSession } from "./agent-session.ts";
|
|
2
|
+
import type { AgentSessionRuntimeDiagnostic, AgentSessionServices } from "./agent-session-services.ts";
|
|
3
|
+
import type { ReplacedSessionContext, SessionStartEvent } from "./extensions/index.ts";
|
|
4
|
+
import type { CreateAgentSessionResult } from "./sdk.ts";
|
|
5
|
+
import { SessionManager } from "./session-manager.ts";
|
|
6
|
+
/**
|
|
7
|
+
* Result returned by runtime creation.
|
|
8
|
+
*
|
|
9
|
+
* The caller gets the created session, its cwd-bound services, and all
|
|
10
|
+
* diagnostics collected during setup.
|
|
11
|
+
*/
|
|
12
|
+
export interface CreateAgentSessionRuntimeResult extends CreateAgentSessionResult {
|
|
13
|
+
services: AgentSessionServices;
|
|
14
|
+
diagnostics: AgentSessionRuntimeDiagnostic[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates a full runtime for a target cwd and session manager.
|
|
18
|
+
*
|
|
19
|
+
* The factory closes over process-global fixed inputs, recreates cwd-bound
|
|
20
|
+
* services for the effective cwd, resolves session options against those
|
|
21
|
+
* services, and finally creates the AgentSession.
|
|
22
|
+
*/
|
|
23
|
+
export type CreateAgentSessionRuntimeFactory = (options: {
|
|
24
|
+
cwd: string;
|
|
25
|
+
agentDir: string;
|
|
26
|
+
sessionManager: SessionManager;
|
|
27
|
+
sessionStartEvent?: SessionStartEvent;
|
|
28
|
+
}) => Promise<CreateAgentSessionRuntimeResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when /import references a JSONL file path that does not exist.
|
|
31
|
+
*/
|
|
32
|
+
export declare class SessionImportFileNotFoundError extends Error {
|
|
33
|
+
readonly filePath: string;
|
|
34
|
+
constructor(filePath: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Owns the current AgentSession plus its cwd-bound services.
|
|
38
|
+
*
|
|
39
|
+
* Session replacement methods tear down the current runtime first, then create
|
|
40
|
+
* and apply the next runtime. If creation fails, the error is propagated to the
|
|
41
|
+
* caller. The caller is responsible for user-facing error handling.
|
|
42
|
+
*/
|
|
43
|
+
export declare class AgentSessionRuntime {
|
|
44
|
+
private rebindSession?;
|
|
45
|
+
private beforeSessionInvalidate?;
|
|
46
|
+
private _session;
|
|
47
|
+
private _services;
|
|
48
|
+
private readonly createRuntime;
|
|
49
|
+
private _diagnostics;
|
|
50
|
+
private _modelFallbackMessage?;
|
|
51
|
+
constructor(_session: AgentSession, _services: AgentSessionServices, createRuntime: CreateAgentSessionRuntimeFactory, _diagnostics?: AgentSessionRuntimeDiagnostic[], _modelFallbackMessage?: string);
|
|
52
|
+
get services(): AgentSessionServices;
|
|
53
|
+
get session(): AgentSession;
|
|
54
|
+
get cwd(): string;
|
|
55
|
+
get diagnostics(): readonly AgentSessionRuntimeDiagnostic[];
|
|
56
|
+
get modelFallbackMessage(): string | undefined;
|
|
57
|
+
setRebindSession(rebindSession?: (session: AgentSession) => Promise<void>): void;
|
|
58
|
+
/**
|
|
59
|
+
* Set a synchronous callback that runs after `session_shutdown` handlers finish
|
|
60
|
+
* but before the current session is invalidated.
|
|
61
|
+
*
|
|
62
|
+
* This is for host-owned UI teardown that must not yield to the event loop,
|
|
63
|
+
* such as detaching extension-provided TUI components before the old extension
|
|
64
|
+
* context becomes stale.
|
|
65
|
+
*/
|
|
66
|
+
setBeforeSessionInvalidate(beforeSessionInvalidate?: () => void): void;
|
|
67
|
+
private emitBeforeSwitch;
|
|
68
|
+
private emitBeforeFork;
|
|
69
|
+
private teardownCurrent;
|
|
70
|
+
private apply;
|
|
71
|
+
private finishSessionReplacement;
|
|
72
|
+
switchSession(sessionPath: string, options?: {
|
|
73
|
+
cwdOverride?: string;
|
|
74
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
cancelled: boolean;
|
|
77
|
+
}>;
|
|
78
|
+
newSession(options?: {
|
|
79
|
+
parentSession?: string;
|
|
80
|
+
setup?: (sessionManager: SessionManager) => Promise<void>;
|
|
81
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
82
|
+
}): Promise<{
|
|
83
|
+
cancelled: boolean;
|
|
84
|
+
}>;
|
|
85
|
+
fork(entryId: string, options?: {
|
|
86
|
+
position?: "before" | "at";
|
|
87
|
+
withSession?: (ctx: ReplacedSessionContext) => Promise<void>;
|
|
88
|
+
}): Promise<{
|
|
89
|
+
cancelled: boolean;
|
|
90
|
+
selectedText?: string;
|
|
91
|
+
}>;
|
|
92
|
+
/**
|
|
93
|
+
* Import a session JSONL file and switch runtime state to the imported session.
|
|
94
|
+
*
|
|
95
|
+
* @returns `{ cancelled: true }` when cancelled by `session_before_switch`, otherwise `{ cancelled: false }`.
|
|
96
|
+
* @throws {SessionImportFileNotFoundError} When the input path does not exist.
|
|
97
|
+
* @throws {MissingSessionCwdError} When the imported session cwd cannot be resolved and no override is provided.
|
|
98
|
+
*/
|
|
99
|
+
importFromJsonl(inputPath: string, cwdOverride?: string): Promise<{
|
|
100
|
+
cancelled: boolean;
|
|
101
|
+
}>;
|
|
102
|
+
dispose(): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create the initial runtime from a runtime factory and initial session target.
|
|
106
|
+
*
|
|
107
|
+
* The same factory is stored on the returned AgentSessionRuntime and reused for
|
|
108
|
+
* later /new, /resume, /fork, and import flows.
|
|
109
|
+
*/
|
|
110
|
+
export declare function createAgentSessionRuntime(createRuntime: CreateAgentSessionRuntimeFactory, options: {
|
|
111
|
+
cwd: string;
|
|
112
|
+
agentDir: string;
|
|
113
|
+
sessionManager: SessionManager;
|
|
114
|
+
sessionStartEvent?: SessionStartEvent;
|
|
115
|
+
}): Promise<AgentSessionRuntime>;
|
|
116
|
+
export { type AgentSessionRuntimeDiagnostic, type AgentSessionServices, type CreateAgentSessionFromServicesOptions, type CreateAgentSessionServicesOptions, createAgentSessionFromServices, createAgentSessionServices, } from "./agent-session-services.ts";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var v=Object.defineProperty;var l=(r,e)=>v(r,"name",{value:e,configurable:!0});import{copyFileSync as y,existsSync as m,mkdirSync as F}from"node:fs";import{basename as _,join as b,resolve as R}from"node:path";import{resolvePath as k}from"../utils/paths.js";import{emitSessionShutdownEvent as p}from"./extensions/runner.js";import{assertSessionCwdExists as g}from"./session-cwd.js";import{SessionManager as h}from"./session-manager.js";class M extends Error{static{l(this,"SessionImportFileNotFoundError")}filePath;constructor(e){super(`File not found: ${e}`),this.name="SessionImportFileNotFoundError",this.filePath=e}}function D(r){return typeof r=="string"?r:r.filter(e=>e.type==="text"&&typeof e.text=="string").map(e=>e.text).join("")}l(D,"extractUserMessageText");class x{static{l(this,"AgentSessionRuntime")}rebindSession;beforeSessionInvalidate;_session;_services;createRuntime;_diagnostics;_modelFallbackMessage;constructor(e,s,t,n=[],i){this._session=e,this._services=s,this.createRuntime=t,this._diagnostics=n,this._modelFallbackMessage=i}get services(){return this._services}get session(){return this._session}get cwd(){return this._services.cwd}get diagnostics(){return this._diagnostics}get modelFallbackMessage(){return this._modelFallbackMessage}setRebindSession(e){this.rebindSession=e}setBeforeSessionInvalidate(e){this.beforeSessionInvalidate=e}async emitBeforeSwitch(e,s){const t=this.session.extensionRunner;return t.hasHandlers("session_before_switch")?{cancelled:(await t.emit({type:"session_before_switch",reason:e,targetSessionFile:s}))?.cancel===!0}:{cancelled:!1}}async emitBeforeFork(e,s){const t=this.session.extensionRunner;return t.hasHandlers("session_before_fork")?{cancelled:(await t.emit({type:"session_before_fork",entryId:e,...s}))?.cancel===!0}:{cancelled:!1}}async teardownCurrent(e,s){await p(this.session.extensionRunner,{type:"session_shutdown",reason:e,targetSessionFile:s}),this.beforeSessionInvalidate?.(),this.session.dispose()}apply(e){this._session=e.session,this._services=e.services,this._diagnostics=e.diagnostics,this._modelFallbackMessage=e.modelFallbackMessage}async finishSessionReplacement(e){this.rebindSession&&await this.rebindSession(this.session),e&&await e(this.session.createReplacedSessionContext())}async switchSession(e,s){const t=await this.emitBeforeSwitch("resume",e);if(t.cancelled)return t;const n=this.session.sessionFile,i=h.open(e,void 0,s?.cwdOverride);return g(i,this.cwd),await this.teardownCurrent("resume",i.getSessionFile()),this.apply(await this.createRuntime({cwd:i.getCwd(),agentDir:this.services.agentDir,sessionManager:i,sessionStartEvent:{type:"session_start",reason:"resume",previousSessionFile:n}})),await this.finishSessionReplacement(s?.withSession),{cancelled:!1}}async newSession(e){const s=await this.emitBeforeSwitch("new");if(s.cancelled)return s;const t=this.session.sessionFile,n=this.session.sessionManager.getSessionDir(),i=h.create(this.cwd,n);return e?.parentSession&&i.newSession({parentSession:e.parentSession}),await this.teardownCurrent("new",i.getSessionFile()),this.apply(await this.createRuntime({cwd:this.cwd,agentDir:this.services.agentDir,sessionManager:i,sessionStartEvent:{type:"session_start",reason:"new",previousSessionFile:t}})),e?.setup&&(await e.setup(this.session.sessionManager),this.session.agent.state.messages=this.session.sessionManager.buildSessionContext().messages),await this.finishSessionReplacement(e?.withSession),{cancelled:!1}}async fork(e,s){const t=s?.position??"before";if((await this.emitBeforeFork(e,{position:t})).cancelled)return{cancelled:!0};let i,c;const o=this.session.sessionManager.getEntry(e);if(!o)throw new Error("Invalid entry ID for forking");if(t==="at")i=o.id;else{if(o.type!=="message"||o.message.role!=="user")throw new Error("Invalid entry ID for forking");i=o.parentId,c=D(o.message.content)}const a=this.session.sessionFile;if(this.session.sessionManager.isPersisted()){const w=this.session.sessionFile;if(!w)throw new Error("Persisted session is missing a session file");const S=this.session.sessionManager.getSessionDir();if(!i){const u=h.create(this.cwd,S);return u.newSession({parentSession:w}),await this.teardownCurrent("fork",u.getSessionFile()),this.apply(await this.createRuntime({cwd:this.cwd,agentDir:this.services.agentDir,sessionManager:u,sessionStartEvent:{type:"session_start",reason:"fork",previousSessionFile:a}})),await this.finishSessionReplacement(s?.withSession),{cancelled:!1,selectedText:c}}const f=h.open(w,S);if(!f.createBranchedSession(i))throw new Error("Failed to create forked session");return await this.teardownCurrent("fork",f.getSessionFile()),this.apply(await this.createRuntime({cwd:f.getCwd(),agentDir:this.services.agentDir,sessionManager:f,sessionStartEvent:{type:"session_start",reason:"fork",previousSessionFile:a}})),await this.finishSessionReplacement(s?.withSession),{cancelled:!1,selectedText:c}}const d=this.session.sessionManager;return i?d.createBranchedSession(i):d.newSession({parentSession:this.session.sessionFile}),await this.teardownCurrent("fork",d.getSessionFile()),this.apply(await this.createRuntime({cwd:this.cwd,agentDir:this.services.agentDir,sessionManager:d,sessionStartEvent:{type:"session_start",reason:"fork",previousSessionFile:a}})),await this.finishSessionReplacement(s?.withSession),{cancelled:!1,selectedText:c}}async importFromJsonl(e,s){const t=k(e);if(!m(t))throw new M(t);const n=this.session.sessionManager.getSessionDir();m(n)||F(n,{recursive:!0});const i=b(n,_(t)),c=await this.emitBeforeSwitch("resume",i);if(c.cancelled)return c;const o=this.session.sessionFile;R(i)!==t&&y(t,i);const a=h.open(i,n,s);return g(a,this.cwd),await this.teardownCurrent("resume",a.getSessionFile()),this.apply(await this.createRuntime({cwd:a.getCwd(),agentDir:this.services.agentDir,sessionManager:a,sessionStartEvent:{type:"session_start",reason:"resume",previousSessionFile:o}})),await this.finishSessionReplacement(),{cancelled:!1}}async dispose(){await p(this.session.extensionRunner,{type:"session_shutdown",reason:"quit"}),this.beforeSessionInvalidate?.(),this.session.dispose()}}async function N(r,e){g(e.sessionManager,e.cwd);const s=await r(e);return new x(s.session,s.services,r,s.diagnostics,s.modelFallbackMessage)}l(N,"createAgentSessionRuntime");import{createAgentSessionFromServices as J,createAgentSessionServices as L}from"./agent-session-services.js";export{x as AgentSessionRuntime,M as SessionImportFileNotFoundError,J as createAgentSessionFromServices,N as createAgentSessionRuntime,L as createAgentSessionServices};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { ThinkingLevel } from "@openadapter/koda-agent-core";
|
|
2
|
+
import type { Model } from "@openadapter/koda-ai";
|
|
3
|
+
import { AuthStorage } from "./auth-storage.ts";
|
|
4
|
+
import type { SessionStartEvent, ToolDefinition } from "./extensions/index.ts";
|
|
5
|
+
import { ModelRegistry } from "./model-registry.ts";
|
|
6
|
+
import { type DefaultResourceLoaderOptions, type ResourceLoader } from "./resource-loader.ts";
|
|
7
|
+
import { type CreateAgentSessionOptions, type CreateAgentSessionResult } from "./sdk.ts";
|
|
8
|
+
import type { SessionManager } from "./session-manager.ts";
|
|
9
|
+
import { SettingsManager } from "./settings-manager.ts";
|
|
10
|
+
/**
|
|
11
|
+
* Non-fatal issues collected while creating services or sessions.
|
|
12
|
+
*
|
|
13
|
+
* Runtime creation returns diagnostics to the caller instead of printing or
|
|
14
|
+
* exiting. The app layer decides whether warnings should be shown and whether
|
|
15
|
+
* errors should abort startup.
|
|
16
|
+
*/
|
|
17
|
+
export interface AgentSessionRuntimeDiagnostic {
|
|
18
|
+
type: "info" | "warning" | "error";
|
|
19
|
+
message: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Inputs for creating cwd-bound runtime services.
|
|
23
|
+
*
|
|
24
|
+
* These services are recreated whenever the effective session cwd changes.
|
|
25
|
+
* CLI-provided resource paths should be resolved to absolute paths before they
|
|
26
|
+
* reach this function, so later cwd switches do not reinterpret them.
|
|
27
|
+
*/
|
|
28
|
+
export interface CreateAgentSessionServicesOptions {
|
|
29
|
+
cwd: string;
|
|
30
|
+
agentDir?: string;
|
|
31
|
+
authStorage?: AuthStorage;
|
|
32
|
+
settingsManager?: SettingsManager;
|
|
33
|
+
modelRegistry?: ModelRegistry;
|
|
34
|
+
extensionFlagValues?: Map<string, boolean | string>;
|
|
35
|
+
resourceLoaderOptions?: Omit<DefaultResourceLoaderOptions, "cwd" | "agentDir" | "settingsManager">;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Inputs for creating an AgentSession from already-created services.
|
|
39
|
+
*
|
|
40
|
+
* Use this after services exist and any cwd-bound model/tool/session options
|
|
41
|
+
* have been resolved against those services.
|
|
42
|
+
*/
|
|
43
|
+
export interface CreateAgentSessionFromServicesOptions {
|
|
44
|
+
services: AgentSessionServices;
|
|
45
|
+
sessionManager: SessionManager;
|
|
46
|
+
sessionStartEvent?: SessionStartEvent;
|
|
47
|
+
model?: Model<any>;
|
|
48
|
+
thinkingLevel?: ThinkingLevel;
|
|
49
|
+
scopedModels?: Array<{
|
|
50
|
+
model: Model<any>;
|
|
51
|
+
thinkingLevel?: ThinkingLevel;
|
|
52
|
+
}>;
|
|
53
|
+
tools?: string[];
|
|
54
|
+
excludeTools?: CreateAgentSessionOptions["excludeTools"];
|
|
55
|
+
noTools?: CreateAgentSessionOptions["noTools"];
|
|
56
|
+
customTools?: ToolDefinition[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Coherent cwd-bound runtime services for one effective session cwd.
|
|
60
|
+
*
|
|
61
|
+
* This is infrastructure only. The AgentSession itself is created separately so
|
|
62
|
+
* session options can be resolved against these services first.
|
|
63
|
+
*/
|
|
64
|
+
export interface AgentSessionServices {
|
|
65
|
+
cwd: string;
|
|
66
|
+
agentDir: string;
|
|
67
|
+
authStorage: AuthStorage;
|
|
68
|
+
settingsManager: SettingsManager;
|
|
69
|
+
modelRegistry: ModelRegistry;
|
|
70
|
+
resourceLoader: ResourceLoader;
|
|
71
|
+
diagnostics: AgentSessionRuntimeDiagnostic[];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create cwd-bound runtime services.
|
|
75
|
+
*
|
|
76
|
+
* Returns services plus diagnostics. It does not create an AgentSession.
|
|
77
|
+
*/
|
|
78
|
+
export declare function createAgentSessionServices(options: CreateAgentSessionServicesOptions): Promise<AgentSessionServices>;
|
|
79
|
+
/**
|
|
80
|
+
* Create an AgentSession from previously created services.
|
|
81
|
+
*
|
|
82
|
+
* This keeps session creation separate from service creation so callers can
|
|
83
|
+
* resolve model, thinking, tools, and other session inputs against the target
|
|
84
|
+
* cwd before constructing the session.
|
|
85
|
+
*/
|
|
86
|
+
export declare function createAgentSessionFromServices(options: CreateAgentSessionFromServicesOptions): Promise<CreateAgentSessionResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var y=Object.defineProperty;var c=(e,t)=>y(e,"name",{value:t,configurable:!0});import{join as u}from"node:path";import{getAgentDir as x}from"../config.js";import{resolvePath as m}from"../utils/paths.js";import{AuthStorage as S}from"./auth-storage.js";import{ModelRegistry as p}from"./model-registry.js";import{DefaultResourceLoader as M}from"./resource-loader.js";import{createAgentSession as R}from"./sdk.js";import{SettingsManager as w}from"./settings-manager.js";function E(e,t){if(!t)return[];const s=[],i=e.getExtensions(),g=new Map;for(const r of i.extensions)for(const[n,a]of r.flags)g.set(n,{type:a.type});const o=[];for(const[r,n]of t){const a=g.get(r);if(!a){o.push(r);continue}if(a.type==="boolean"){i.runtime.flagValues.set(r,!0);continue}if(typeof n=="string"){i.runtime.flagValues.set(r,n);continue}s.push({type:"error",message:`Extension flag "--${r}" requires a value`})}return o.length>0&&s.push({type:"error",message:`Unknown option${o.length===1?"":"s"}: ${o.map(r=>`--${r}`).join(", ")}`}),s}c(E,"applyExtensionFlagValues");async function V(e){const t=m(e.cwd),s=e.agentDir?m(e.agentDir):x(),i=e.authStorage??S.create(u(s,"auth.json")),g=e.settingsManager??w.create(t,s),o=e.modelRegistry??p.create(i,u(s,"models.json")),r=new M({...e.resourceLoaderOptions??{},cwd:t,agentDir:s,settingsManager:g});await r.reload();const n=[],a=r.getExtensions();for(const{name:f,config:d,extensionPath:h}of a.runtime.pendingProviderRegistrations)try{o.registerProvider(f,d)}catch(l){const v=l instanceof Error?l.message:String(l);n.push({type:"error",message:`Extension "${h}" error: ${v}`})}return a.runtime.pendingProviderRegistrations=[],n.push(...E(r,e.extensionFlagValues)),{cwd:t,agentDir:s,authStorage:i,settingsManager:g,modelRegistry:o,resourceLoader:r,diagnostics:n}}c(V,"createAgentSessionServices");async function b(e){return R({cwd:e.services.cwd,agentDir:e.services.agentDir,authStorage:e.services.authStorage,settingsManager:e.services.settingsManager,modelRegistry:e.services.modelRegistry,resourceLoader:e.services.resourceLoader,sessionManager:e.sessionManager,model:e.model,thinkingLevel:e.thinkingLevel,scopedModels:e.scopedModels,tools:e.tools,excludeTools:e.excludeTools,noTools:e.noTools,customTools:e.customTools,sessionStartEvent:e.sessionStartEvent})}c(b,"createAgentSessionFromServices");export{b as createAgentSessionFromServices,V as createAgentSessionServices};
|