@openadapter/koda 1.0.0-beta.10
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 +97 -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 +35 -0
- package/dist/cli/openadapter-setup.js +4 -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 +752 -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 +69 -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 +420 -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 +175 -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
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect if we're running as a Bun compiled binary.
|
|
3
|
+
* Bun binaries have import.meta.url containing "$bunfs", "~BUN", or "%7EBUN" (Bun's virtual filesystem path)
|
|
4
|
+
*/
|
|
5
|
+
export declare const isBunBinary: boolean;
|
|
6
|
+
/** Detect if Bun is the runtime (compiled binary or bun run) */
|
|
7
|
+
export declare const isBunRuntime: boolean;
|
|
8
|
+
export type InstallMethod = "bun-binary" | "npm" | "pnpm" | "yarn" | "bun" | "unknown";
|
|
9
|
+
interface SelfUpdateCommandStep {
|
|
10
|
+
command: string;
|
|
11
|
+
args: string[];
|
|
12
|
+
display: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SelfUpdateCommand extends SelfUpdateCommandStep {
|
|
15
|
+
steps?: SelfUpdateCommandStep[];
|
|
16
|
+
}
|
|
17
|
+
export declare function detectInstallMethod(): InstallMethod;
|
|
18
|
+
export declare function getSelfUpdateCommand(packageName: string, npmCommand?: string[], updatePackageName?: string): SelfUpdateCommand | undefined;
|
|
19
|
+
export declare function getSelfUpdateUnavailableInstruction(packageName: string, npmCommand?: string[], updatePackageName?: string): string;
|
|
20
|
+
export declare function getUpdateInstruction(packageName: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Get the base directory for resolving package assets (themes, package.json, README.md, CHANGELOG.md).
|
|
23
|
+
* - For Bun binary: returns the directory containing the executable
|
|
24
|
+
* - For Node.js (dist/): returns __dirname (the dist/ directory)
|
|
25
|
+
* - For tsx (src/): returns parent directory (the package root)
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPackageDir(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Get path to built-in themes directory (shipped with package)
|
|
30
|
+
* - For Bun binary: theme/ next to executable
|
|
31
|
+
* - For Node.js (dist/): dist/modes/interactive/theme/
|
|
32
|
+
* - For tsx (src/): src/modes/interactive/theme/
|
|
33
|
+
*/
|
|
34
|
+
export declare function getThemesDir(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Get path to HTML export template directory (shipped with package)
|
|
37
|
+
* - For Bun binary: export-html/ next to executable
|
|
38
|
+
* - For Node.js (dist/): dist/core/export-html/
|
|
39
|
+
* - For tsx (src/): src/core/export-html/
|
|
40
|
+
*/
|
|
41
|
+
export declare function getExportTemplateDir(): string;
|
|
42
|
+
/** Get path to package.json */
|
|
43
|
+
export declare function getPackageJsonPath(): string;
|
|
44
|
+
/** Get path to README.md */
|
|
45
|
+
export declare function getReadmePath(): string;
|
|
46
|
+
/** Get path to docs directory */
|
|
47
|
+
export declare function getDocsPath(): string;
|
|
48
|
+
/** Get path to examples directory */
|
|
49
|
+
export declare function getExamplesPath(): string;
|
|
50
|
+
/** Get path to CHANGELOG.md */
|
|
51
|
+
export declare function getChangelogPath(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get path to built-in interactive assets directory.
|
|
54
|
+
* - For Bun binary: assets/ next to executable
|
|
55
|
+
* - For Node.js (dist/): dist/modes/interactive/assets/
|
|
56
|
+
* - For tsx (src/): src/modes/interactive/assets/
|
|
57
|
+
*/
|
|
58
|
+
export declare function getInteractiveAssetsDir(): string;
|
|
59
|
+
/** Get path to a bundled interactive asset */
|
|
60
|
+
export declare function getBundledInteractiveAssetPath(name: string): string;
|
|
61
|
+
export declare const PACKAGE_NAME: string;
|
|
62
|
+
export declare const APP_NAME: string;
|
|
63
|
+
export declare const APP_TITLE: string;
|
|
64
|
+
export declare const CONFIG_DIR_NAME: string;
|
|
65
|
+
export declare const KODA_VERSION = "3";
|
|
66
|
+
export declare const VERSION: string;
|
|
67
|
+
export declare const ENV_AGENT_DIR: string;
|
|
68
|
+
export declare const ENV_SESSION_DIR: string;
|
|
69
|
+
export declare function expandTildePath(path: string): string;
|
|
70
|
+
/** Get the share viewer URL for a gist ID */
|
|
71
|
+
export declare function getShareViewerUrl(gistId: string): string;
|
|
72
|
+
/** Get the agent config directory (e.g., ~/.pi/agent/) */
|
|
73
|
+
export declare function getAgentDir(): string;
|
|
74
|
+
/** Get path to user's custom themes directory */
|
|
75
|
+
export declare function getCustomThemesDir(): string;
|
|
76
|
+
/** Get path to models.json */
|
|
77
|
+
export declare function getModelsPath(): string;
|
|
78
|
+
/** Get path to auth.json */
|
|
79
|
+
export declare function getAuthPath(): string;
|
|
80
|
+
/** Get path to settings.json */
|
|
81
|
+
export declare function getSettingsPath(): string;
|
|
82
|
+
/** Get path to tools directory */
|
|
83
|
+
export declare function getToolsDir(): string;
|
|
84
|
+
/** Get path to managed binaries directory (fd, rg) */
|
|
85
|
+
export declare function getBinDir(): string;
|
|
86
|
+
/** Get path to prompt templates directory */
|
|
87
|
+
export declare function getPromptsDir(): string;
|
|
88
|
+
/** Get path to sessions directory */
|
|
89
|
+
export declare function getSessionsDir(): string;
|
|
90
|
+
/** Get path to debug log file */
|
|
91
|
+
export declare function getDebugLogPath(): string;
|
|
92
|
+
export {};
|
package/dist/config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var j=Object.defineProperty;var r=(e,n)=>j(e,"name",{value:n,configurable:!0});import{accessSync as I,constants as U,existsSync as g,readFileSync as L,realpathSync as N}from"fs";import{homedir as A}from"os";import{basename as W,dirname as a,join as s,resolve as h,sep as $,win32 as K}from"path";import{fileURLToPath as V}from"url";import{spawnProcessSync as F}from"./utils/child-process.js";import{normalizePath as v}from"./utils/paths.js";const q=V(import.meta.url),P=a(q),b=import.meta.url.includes("$bunfs")||import.meta.url.includes("~BUN")||import.meta.url.includes("%7EBUN"),H=!!process.versions.bun;function y(e,n){return n?{...e,display:`${n.display} && ${e.display}`,steps:[n,e]}:e}r(y,"makeSelfUpdateCommand");function l(e,n){return{command:e,args:n,display:[e,...n].map(o=>/\s/.test(o)?`"${o}"`:o).join(" ")}}r(l,"makeSelfUpdateCommandStep");function S(){if(b)return"bun-binary";const e=`${P}\0${process.execPath||""}`.toLowerCase().replace(/\\/g,"/");return e.includes("/pnpm/")||e.includes("/.pnpm/")?"pnpm":e.includes("/yarn/")||e.includes("/.yarn/")?"yarn":H||e.includes("/install/global/node_modules/")?"bun":e.includes("/npm/")||e.includes("/node_modules/")?"npm":"unknown"}r(S,"detectInstallMethod");function C(){const e=u(),n=process.platform==="win32"||e.includes("\\")?K:{basename:W,dirname:a},o=n.dirname(e);let t;if(n.basename(o).startsWith("@")&&n.basename(n.dirname(o))==="node_modules"?t=n.dirname(o):n.basename(o)==="node_modules"&&(t=o),!t)return;const i=n.dirname(t);if(n.basename(i)==="lib")return{root:t,prefix:n.dirname(i)}}r(C,"getInferredNpmInstall");function O(e){return e.replace(/@[^@/]+$/,"")}r(O,"stripDistTag");function w(e,n,o=n,t){const i=O(o)===O(n);switch(e){case"bun-binary":return;case"pnpm":return y(l("pnpm",["install","-g","--ignore-scripts","--config.minimumReleaseAge=0",o]),i?void 0:l("pnpm",["remove","-g",n]));case"yarn":return y(l("yarn",["global","add","--ignore-scripts",o]),i?void 0:l("yarn",["global","remove",n]));case"bun":return y(l("bun",["install","-g","--ignore-scripts","--minimum-release-age=0",o]),i?void 0:l("bun",["uninstall","-g",n]));case"npm":{const[c="npm",...f]=t??[],m=t?.length?void 0:C(),p=[...f,...m?["--prefix",m.prefix]:[]],_=l(c,[...p,"install","-g","--ignore-scripts","--min-release-age=0",o]),M=i?void 0:l(c,[...p,"uninstall","-g",n]);return y(_,M)}case"unknown":return}}r(w,"getSelfUpdateCommandForMethod");function x(e,n,o={}){const t=F(e,n,{encoding:"utf-8",stdio:["ignore","pipe","pipe"]});if(t.status===0)return t.stdout.trim()||void 0;if(o.requireSuccess){const i=t.error?.message||t.stderr.trim()||`exit code ${t.status??"unknown"}`;throw new Error(`Failed to run ${[e,...n].join(" ")}: ${i}`)}}r(x,"readCommandOutput");function J(e,n,o){switch(e){case"npm":{const t=!!o?.length,[i="npm",...c]=o??[];if(t&&i==="bun"){const p=x(i,[...c,"pm","bin","-g"],{requireSuccess:!0}),_=[s(A(),".bun","install","global","node_modules")];return p&&_.push(s(a(p),"install","global","node_modules")),_}const f=x(i,[...c,"root","-g"],{requireSuccess:t}),m=t?void 0:C();return[f,m?.root].filter(p=>!!p)}case"pnpm":{const t=x("pnpm",["root","-g"]);return t?[t,a(t)]:[]}case"yarn":{const t=x("yarn",["global","dir"]);return t?[t,s(t,"node_modules")]:[]}case"bun":{const t=x("bun",["pm","bin","-g"]),i=[s(A(),".bun","install","global","node_modules")];return t&&i.push(s(a(t),"install","global","node_modules")),i}case"bun-binary":case"unknown":return[]}}r(J,"getGlobalPackageRoots");function R(e,n){const o=h(e);if(!g(o))return;let t=o;if(n)try{t=N(o)}catch{return}return process.platform==="win32"&&(t=t.toLowerCase()),t}r(R,"normalizeExistingPathForComparison");function T(e){return Array.from(new Set([R(e,!1),R(e,!0)].filter(n=>!!n)))}r(T,"getPathComparisonCandidates");function z(){const e=process.argv[1];if(!e)return;let n=a(e);for(;n!==a(n);){if(g(s(n,"package.json")))return n;n=a(n)}}r(z,"getEntrypointPackageDir");function k(){const e=u();try{return I(e,U.W_OK),I(a(e),U.W_OK),!0}catch{return!1}}r(k,"isSelfUpdatePathWritable");function G(e,n,o){const i=[u(),z()].filter(c=>!!c).flatMap(c=>T(c));return J(e,n,o).some(c=>T(c).some(f=>{const m=f.endsWith($)?f:`${f}${$}`;return i.some(p=>p.startsWith(m))}))}r(G,"isManagedByGlobalPackageManager");function pe(e,n,o=e){const t=S(),i=w(t,e,o,n);if(!(!i||!G(t,e,n)||!k()))return i}r(pe,"getSelfUpdateCommand");function Q(e,n,o=e){const t=S();if(t==="bun-binary")return"Download from: https://openadapter.in/releases/latest";const i=w(t,e,o,n);return i?G(t,e,n)&&!k()?`This installation is managed by a global ${t} install, but the install path is not writable. Update it yourself with: ${i.display}`:`This installation is not managed by a global ${t} install. Update it with the package manager, wrapper, or source checkout that provides it.`:`Update ${o} using the package manager, wrapper, or source checkout that provides this installation.`}r(Q,"getSelfUpdateUnavailableInstruction");function de(e){const n=S(),o=w(n,e);return o?`Run: ${o.display}`:Q(e)}r(de,"getUpdateInstruction");function u(){const e=process.env.KODA_PACKAGE_DIR;if(e)return v(e);if(b)return a(process.execPath);let n=P;for(;n!==a(n);){if(g(s(n,"package.json")))return n;n=a(n)}return P}r(u,"getPackageDir");function le(){if(b)return s(u(),"theme");const e=u(),n=g(s(e,"src"))?"src":"dist";return s(e,n,"modes","interactive","theme")}r(le,"getThemesDir");function fe(){if(b)return s(u(),"export-html");const e=u(),n=g(s(e,"src"))?"src":"dist";return s(e,n,"core","export-html")}r(fe,"getExportTemplateDir");function X(){return s(u(),"package.json")}r(X,"getPackageJsonPath");function me(){return h(s(u(),"README.md"))}r(me,"getReadmePath");function ge(){return h(s(u(),"docs"))}r(ge,"getDocsPath");function he(){return h(s(u(),"examples"))}r(he,"getExamplesPath");function be(){return h(s(u(),"CHANGELOG.md"))}r(be,"getChangelogPath");function Y(){if(b)return s(u(),"assets");const e=u(),n=g(s(e,"src"))?"src":"dist";return s(e,n,"modes","interactive","assets")}r(Y,"getInteractiveAssetsDir");function xe(e){return s(Y(),e)}r(xe,"getBundledInteractiveAssetPath");let D={};try{D=JSON.parse(L(X(),"utf-8"))}catch(e){if(e.code!=="ENOENT")throw e}const B=D.piConfig?.name,De=D.name||"@openadapter/koda",E=B||"pi",_e=B?E:"\u03C0",Z=D.piConfig?.configDir||".pi",ye="3",Ee=D.version||"0.0.0",ee=`${E.toUpperCase()}_CODING_AGENT_DIR`,Ae=`${E.toUpperCase()}_CODING_AGENT_SESSION_DIR`;function ne(e){return v(e)}r(ne,"expandTildePath");const te="https://openadapter.in/session/";function Pe(e){return`${process.env.KODA_SHARE_VIEWER_URL||te}#${e}`}r(Pe,"getShareViewerUrl");function d(){const e=process.env[ee];return e?ne(e):s(A(),Z,"agent")}r(d,"getAgentDir");function Se(){return s(d(),"themes")}r(Se,"getCustomThemesDir");function we(){return s(d(),"models.json")}r(we,"getModelsPath");function Ie(){return s(d(),"auth.json")}r(Ie,"getAuthPath");function Ue(){return s(d(),"settings.json")}r(Ue,"getSettingsPath");function $e(){return s(d(),"tools")}r($e,"getToolsDir");function ve(){return s(d(),"bin")}r(ve,"getBinDir");function Ce(){return s(d(),"prompts")}r(Ce,"getPromptsDir");function Oe(){return s(d(),"sessions")}r(Oe,"getSessionsDir");function Re(){return s(d(),`${E}-debug.log`)}r(Re,"getDebugLogPath");export{E as APP_NAME,_e as APP_TITLE,Z as CONFIG_DIR_NAME,ee as ENV_AGENT_DIR,Ae as ENV_SESSION_DIR,ye as KODA_VERSION,De as PACKAGE_NAME,Ee as VERSION,S as detectInstallMethod,ne as expandTildePath,d as getAgentDir,Ie as getAuthPath,ve as getBinDir,xe as getBundledInteractiveAssetPath,be as getChangelogPath,Se as getCustomThemesDir,Re as getDebugLogPath,ge as getDocsPath,he as getExamplesPath,fe as getExportTemplateDir,Y as getInteractiveAssetsDir,we as getModelsPath,u as getPackageDir,X as getPackageJsonPath,Ce as getPromptsDir,me as getReadmePath,pe as getSelfUpdateCommand,Q as getSelfUpdateUnavailableInstruction,Oe as getSessionsDir,Ue as getSettingsPath,Pe as getShareViewerUrl,le as getThemesDir,$e as getToolsDir,de as getUpdateInstruction,b as isBunBinary,H as isBunRuntime};
|
|
@@ -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};
|