@oh-my-pi/pi-coding-agent 15.12.4 → 15.13.0
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 +304 -6
- package/dist/cli.js +1015 -881
- package/dist/types/async/job-manager.d.ts +15 -0
- package/dist/types/autolearn/controller.d.ts +25 -0
- package/dist/types/autolearn/managed-skills.d.ts +45 -0
- package/dist/types/autoresearch/state.d.ts +1 -1
- package/dist/types/autoresearch/types.d.ts +1 -1
- package/dist/types/cli/args.d.ts +19 -1
- package/dist/types/cli/session-picker.d.ts +1 -1
- package/dist/types/cli/setup-cli.d.ts +1 -1
- package/dist/types/cli/setup-model-picker.d.ts +14 -0
- package/dist/types/collab/protocol.d.ts +1 -1
- package/dist/types/commands/say.d.ts +24 -0
- package/dist/types/config/keybindings.d.ts +3 -3
- package/dist/types/config/model-registry.d.ts +10 -0
- package/dist/types/config/models-config-schema.d.ts +12 -0
- package/dist/types/config/models-config.d.ts +8 -2
- package/dist/types/config/settings-schema.d.ts +261 -58
- package/dist/types/export/html/index.d.ts +2 -1
- package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
- package/dist/types/extensibility/extensions/runner.d.ts +3 -1
- package/dist/types/extensibility/extensions/types.d.ts +47 -1
- package/dist/types/extensibility/hooks/index.d.ts +2 -1
- package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +9 -0
- package/dist/types/extensibility/plugins/loader.d.ts +11 -0
- package/dist/types/extensibility/shared-events.d.ts +1 -1
- package/dist/types/extensibility/skills.d.ts +10 -0
- package/dist/types/goals/guided-setup.d.ts +18 -0
- package/dist/types/goals/state.d.ts +1 -1
- package/dist/types/hindsight/transcript.d.ts +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/internal-urls/local-protocol.d.ts +4 -2
- package/dist/types/main.d.ts +4 -3
- package/dist/types/mcp/startup-events.d.ts +11 -0
- package/dist/types/memories/index.d.ts +7 -0
- package/dist/types/memory-backend/local-backend.d.ts +4 -3
- package/dist/types/mnemopi/config.d.ts +4 -4
- package/dist/types/modes/components/agent-hub.d.ts +6 -0
- package/dist/types/modes/components/assistant-message.d.ts +1 -2
- package/dist/types/modes/components/compaction-summary-message.d.ts +15 -1
- package/dist/types/modes/components/custom-editor.d.ts +39 -1
- package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
- package/dist/types/modes/components/session-selector.d.ts +1 -1
- package/dist/types/modes/components/tool-execution.d.ts +26 -16
- package/dist/types/modes/components/transcript-container.d.ts +23 -2
- package/dist/types/modes/components/tree-selector.d.ts +1 -1
- package/dist/types/modes/components/usage-row.d.ts +3 -0
- package/dist/types/modes/controllers/command-controller.d.ts +2 -2
- package/dist/types/modes/controllers/input-controller.d.ts +14 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +3 -1
- package/dist/types/modes/gradient-highlight.d.ts +9 -4
- package/dist/types/modes/image-references.d.ts +6 -0
- package/dist/types/modes/interactive-mode.d.ts +27 -3
- package/dist/types/modes/magic-keywords.d.ts +13 -1
- package/dist/types/modes/rpc/rpc-mode.d.ts +35 -1
- package/dist/types/modes/rpc/rpc-types.d.ts +9 -1
- package/dist/types/modes/runtime-init.d.ts +4 -0
- package/dist/types/modes/theme/theme.d.ts +13 -2
- package/dist/types/modes/types.d.ts +8 -2
- package/dist/types/modes/utils/ui-helpers.d.ts +1 -1
- package/dist/types/registry/agent-registry.d.ts +17 -0
- package/dist/types/secrets/obfuscator.d.ts +1 -1
- package/dist/types/session/agent-session.d.ts +14 -2
- package/dist/types/session/indexed-session-storage.d.ts +3 -4
- package/dist/types/session/session-context.d.ts +39 -0
- package/dist/types/session/session-entries.d.ts +159 -0
- package/dist/types/session/session-listing.d.ts +69 -0
- package/dist/types/session/session-loader.d.ts +16 -0
- package/dist/types/session/session-manager.d.ts +82 -474
- package/dist/types/session/session-migrations.d.ts +12 -0
- package/dist/types/session/session-paths.d.ts +25 -0
- package/dist/types/session/session-persistence.d.ts +8 -0
- package/dist/types/session/session-storage.d.ts +11 -12
- package/dist/types/session/snapcompact-inline.d.ts +12 -1
- package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
- package/dist/types/session/tool-choice-queue.d.ts +6 -6
- package/dist/types/stt/asr-client.d.ts +90 -0
- package/dist/types/stt/asr-protocol.d.ts +97 -0
- package/dist/types/stt/asr-worker.d.ts +2 -0
- package/dist/types/stt/downloader.d.ts +38 -0
- package/dist/types/stt/endpointer.d.ts +59 -0
- package/dist/types/stt/index.d.ts +5 -1
- package/dist/types/stt/models.d.ts +120 -0
- package/dist/types/stt/recorder.d.ts +17 -0
- package/dist/types/stt/stt-controller.d.ts +6 -0
- package/dist/types/stt/transcriber.d.ts +5 -7
- package/dist/types/stt/wav.d.ts +29 -0
- package/dist/types/system-prompt.d.ts +4 -0
- package/dist/types/task/executor.d.ts +2 -0
- package/dist/types/task/index.d.ts +9 -1
- package/dist/types/task/types.d.ts +36 -0
- package/dist/types/tools/bash.d.ts +2 -2
- package/dist/types/tools/eval-render.d.ts +1 -1
- package/dist/types/tools/index.d.ts +11 -1
- package/dist/types/tools/irc.d.ts +1 -0
- package/dist/types/tools/learn.d.ts +51 -0
- package/dist/types/tools/manage-skill.d.ts +40 -0
- package/dist/types/tools/plan-mode-guard.d.ts +10 -0
- package/dist/types/tools/renderers.d.ts +7 -11
- package/dist/types/tools/ssh.d.ts +1 -1
- package/dist/types/tools/todo.d.ts +1 -1
- package/dist/types/tools/tts.d.ts +25 -0
- package/dist/types/tools/write.d.ts +1 -1
- package/dist/types/tts/downloader.d.ts +20 -0
- package/dist/types/tts/index.d.ts +8 -0
- package/dist/types/tts/models.d.ts +82 -0
- package/dist/types/tts/player.d.ts +32 -0
- package/dist/types/tts/runtime.d.ts +6 -0
- package/dist/types/tts/streaming-player.d.ts +41 -0
- package/dist/types/tts/tts-client.d.ts +93 -0
- package/dist/types/tts/tts-protocol.d.ts +95 -0
- package/dist/types/tts/tts-worker.d.ts +2 -0
- package/dist/types/tts/vocalizer.d.ts +41 -0
- package/dist/types/tts/wav.d.ts +8 -0
- package/dist/types/utils/tool-choice.d.ts +8 -0
- package/dist/types/utils/tools-manager.d.ts +2 -1
- package/dist/types/utils/tools-manager.test.d.ts +1 -0
- package/dist/types/web/scrapers/github.d.ts +1 -1
- package/package.json +15 -14
- package/src/async/job-manager.ts +49 -0
- package/src/autolearn/controller.ts +139 -0
- package/src/autolearn/managed-skills.ts +257 -0
- package/src/autoresearch/state.ts +1 -1
- package/src/autoresearch/types.ts +1 -1
- package/src/cli/args.ts +56 -2
- package/src/cli/session-picker.ts +2 -1
- package/src/cli/setup-cli.ts +148 -47
- package/src/cli/setup-model-picker.ts +43 -0
- package/src/cli-commands.ts +1 -0
- package/src/cli.ts +45 -13
- package/src/collab/host.ts +1 -1
- package/src/collab/protocol.ts +1 -1
- package/src/commands/say.ts +102 -0
- package/src/commands/setup.ts +1 -1
- package/src/commit/agentic/tools/analyze-file.ts +3 -0
- package/src/config/keybindings.ts +2 -2
- package/src/config/model-discovery.ts +11 -5
- package/src/config/model-registry.ts +64 -9
- package/src/config/models-config-schema.ts +4 -1
- package/src/config/models-config.ts +2 -1
- package/src/config/settings-schema.ts +248 -32
- package/src/config/settings.ts +10 -0
- package/src/discovery/builtin.ts +23 -1
- package/src/discovery/claude-plugins.ts +44 -5
- package/src/discovery/helpers.ts +41 -1
- package/src/eval/__tests__/budget-bridge.test.ts +1 -1
- package/src/eval/js/shared/prelude.txt +69 -17
- package/src/export/html/index.ts +3 -6
- package/src/extensibility/extensions/model-api.ts +41 -0
- package/src/extensibility/extensions/runner.ts +4 -0
- package/src/extensibility/extensions/types.ts +52 -1
- package/src/extensibility/extensions/wrapper.ts +41 -5
- package/src/extensibility/hooks/index.ts +2 -1
- package/src/extensibility/plugins/legacy-pi-compat.ts +43 -13
- package/src/extensibility/plugins/loader.ts +30 -19
- package/src/extensibility/plugins/manager.ts +221 -90
- package/src/extensibility/shared-events.ts +1 -1
- package/src/extensibility/skills.ts +96 -15
- package/src/goals/guided-setup.ts +133 -0
- package/src/goals/state.ts +1 -1
- package/src/hindsight/transcript.ts +1 -1
- package/src/index.ts +5 -0
- package/src/internal-urls/docs-index.generated.ts +10 -10
- package/src/internal-urls/history-protocol.ts +1 -1
- package/src/internal-urls/local-protocol.ts +29 -7
- package/src/main.ts +27 -7
- package/src/mcp/startup-events.ts +21 -0
- package/src/mcp/transports/stdio.ts +2 -1
- package/src/memories/index.ts +146 -11
- package/src/memory-backend/local-backend.ts +11 -5
- package/src/mnemopi/backend.ts +1 -0
- package/src/mnemopi/config.ts +26 -10
- package/src/modes/acp/acp-agent.ts +3 -5
- package/src/modes/components/agent-hub.ts +49 -4
- package/src/modes/components/assistant-message.ts +4 -37
- package/src/modes/components/compaction-summary-message.ts +125 -26
- package/src/modes/components/custom-editor.test.ts +96 -0
- package/src/modes/components/custom-editor.ts +164 -8
- package/src/modes/components/session-selector.ts +1 -1
- package/src/modes/components/settings-defs.ts +7 -0
- package/src/modes/components/tool-execution.ts +82 -43
- package/src/modes/components/transcript-container.ts +70 -1
- package/src/modes/components/tree-selector.ts +1 -1
- package/src/modes/components/usage-row.ts +18 -0
- package/src/modes/components/user-message.ts +4 -2
- package/src/modes/controllers/command-controller.ts +14 -4
- package/src/modes/controllers/event-controller.ts +78 -11
- package/src/modes/controllers/extension-ui-controller.ts +6 -0
- package/src/modes/controllers/input-controller.ts +258 -27
- package/src/modes/controllers/selector-controller.ts +12 -2
- package/src/modes/gradient-highlight.ts +21 -9
- package/src/modes/image-references.ts +20 -0
- package/src/modes/interactive-mode.ts +286 -40
- package/src/modes/magic-keywords.ts +27 -5
- package/src/modes/rpc/rpc-mode.ts +146 -14
- package/src/modes/rpc/rpc-subagents.ts +2 -2
- package/src/modes/rpc/rpc-types.ts +8 -2
- package/src/modes/runtime-init.ts +28 -3
- package/src/modes/theme/theme.ts +98 -50
- package/src/modes/types.ts +6 -2
- package/src/modes/utils/hotkeys-markdown.ts +1 -1
- package/src/modes/utils/ui-helpers.ts +34 -6
- package/src/priority.json +5 -1
- package/src/prompts/agents/task.md +1 -0
- package/src/prompts/goals/guided-goal-interview.md +8 -0
- package/src/prompts/goals/guided-goal-system.md +12 -0
- package/src/prompts/memories/read-path.md +6 -0
- package/src/prompts/system/autolearn-guidance-learn.md +1 -0
- package/src/prompts/system/autolearn-guidance.md +7 -0
- package/src/prompts/system/autolearn-nudge.md +3 -0
- package/src/prompts/system/eager-task.md +7 -0
- package/src/prompts/system/eager-todo.md +11 -6
- package/src/prompts/system/subagent-system-prompt.md +4 -0
- package/src/prompts/system/system-prompt.md +10 -5
- package/src/prompts/system/title-marker-instruction.md +1 -0
- package/src/prompts/system/title-system-marker.md +16 -0
- package/src/prompts/tools/job.md +1 -0
- package/src/prompts/tools/learn.md +7 -0
- package/src/prompts/tools/manage-skill.md +9 -0
- package/src/prompts/tools/task.md +3 -0
- package/src/registry/agent-registry.ts +30 -0
- package/src/sdk.ts +88 -24
- package/src/secrets/obfuscator.ts +1 -1
- package/src/session/agent-session.ts +209 -87
- package/src/session/history-storage.ts +2 -2
- package/src/session/indexed-session-storage.ts +7 -17
- package/src/session/session-context.ts +352 -0
- package/src/session/session-entries.ts +194 -0
- package/src/session/session-listing.ts +588 -0
- package/src/session/session-loader.ts +106 -0
- package/src/session/session-manager.ts +933 -3145
- package/src/session/session-migrations.ts +78 -0
- package/src/session/session-paths.ts +193 -0
- package/src/session/session-persistence.ts +131 -0
- package/src/session/session-storage.ts +91 -50
- package/src/session/snapcompact-inline.ts +21 -1
- package/src/session/snapcompact-savings-journal.ts +113 -0
- package/src/session/tool-choice-queue.ts +23 -11
- package/src/slash-commands/builtin-registry.ts +25 -3
- package/src/stt/asr-client.ts +520 -0
- package/src/stt/asr-protocol.ts +65 -0
- package/src/stt/asr-worker.ts +790 -0
- package/src/stt/downloader.ts +107 -47
- package/src/stt/endpointer.ts +259 -0
- package/src/stt/index.ts +5 -1
- package/src/stt/models.ts +150 -0
- package/src/stt/recorder.ts +247 -60
- package/src/stt/stt-controller.ts +201 -22
- package/src/stt/transcriber.ts +37 -68
- package/src/stt/wav.ts +173 -0
- package/src/system-prompt.ts +8 -0
- package/src/task/agents.ts +1 -2
- package/src/task/executor.ts +49 -15
- package/src/task/index.ts +60 -6
- package/src/task/render.ts +83 -8
- package/src/task/types.ts +53 -0
- package/src/tools/ask.ts +8 -0
- package/src/tools/bash.ts +4 -3
- package/src/tools/eval-render.ts +4 -3
- package/src/tools/index.ts +40 -4
- package/src/tools/irc.ts +10 -2
- package/src/tools/job.ts +14 -2
- package/src/tools/learn.ts +144 -0
- package/src/tools/manage-skill.ts +104 -0
- package/src/tools/plan-mode-guard.ts +53 -19
- package/src/tools/renderers.ts +7 -11
- package/src/tools/ssh.ts +4 -3
- package/src/tools/todo.ts +1 -1
- package/src/tools/tts.ts +203 -92
- package/src/tools/write.ts +18 -2
- package/src/tts/downloader.ts +64 -0
- package/src/tts/index.ts +8 -0
- package/src/tts/models.ts +137 -0
- package/src/tts/player.ts +137 -0
- package/src/tts/runtime.ts +21 -0
- package/src/tts/streaming-player.ts +266 -0
- package/src/tts/tts-client.ts +647 -0
- package/src/tts/tts-protocol.ts +60 -0
- package/src/tts/tts-worker.ts +497 -0
- package/src/tts/vocalizer.ts +162 -0
- package/src/tts/wav.ts +58 -0
- package/src/utils/title-generator.ts +48 -5
- package/src/utils/tool-choice.ts +16 -0
- package/src/utils/tools-manager.test.ts +25 -0
- package/src/utils/tools-manager.ts +19 -1
- package/src/web/scrapers/github.ts +96 -0
- package/src/web/search/index.ts +13 -0
- package/src/web/search/providers/searxng.ts +13 -1
- package/dist/types/stt/setup.d.ts +0 -18
- package/src/stt/setup.ts +0 -52
- package/src/stt/transcribe.py +0 -70
|
@@ -1046,6 +1046,30 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1046
1046
|
}];
|
|
1047
1047
|
};
|
|
1048
1048
|
};
|
|
1049
|
+
readonly fastModeScope: {
|
|
1050
|
+
readonly type: "enum";
|
|
1051
|
+
readonly values: readonly ["both", "openai", "claude"];
|
|
1052
|
+
readonly default: "both";
|
|
1053
|
+
readonly ui: {
|
|
1054
|
+
readonly tab: "model";
|
|
1055
|
+
readonly group: "Sampling";
|
|
1056
|
+
readonly label: "Fast Mode Scope";
|
|
1057
|
+
readonly description: 'Which providers `/fast on` (and the fast-mode toggle) target. "both" = priority on every supported provider; "openai"/"claude" scope it to one family (mirrors serviceTier openai-only/claude-only).';
|
|
1058
|
+
readonly options: readonly [{
|
|
1059
|
+
readonly value: "both";
|
|
1060
|
+
readonly label: "Both";
|
|
1061
|
+
readonly description: "Priority on every supported provider";
|
|
1062
|
+
}, {
|
|
1063
|
+
readonly value: "openai";
|
|
1064
|
+
readonly label: "OpenAI only";
|
|
1065
|
+
readonly description: "Priority on OpenAI/OpenAI-Codex requests; ignored elsewhere";
|
|
1066
|
+
}, {
|
|
1067
|
+
readonly value: "claude";
|
|
1068
|
+
readonly label: "Claude only";
|
|
1069
|
+
readonly description: "Anthropic fast mode on direct Claude requests; ignored elsewhere";
|
|
1070
|
+
}];
|
|
1071
|
+
};
|
|
1072
|
+
};
|
|
1049
1073
|
readonly "retry.enabled": {
|
|
1050
1074
|
readonly type: "boolean";
|
|
1051
1075
|
readonly default: true;
|
|
@@ -1242,6 +1266,32 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1242
1266
|
readonly description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`";
|
|
1243
1267
|
};
|
|
1244
1268
|
};
|
|
1269
|
+
readonly "paste.largeMenuThreshold": {
|
|
1270
|
+
readonly type: "number";
|
|
1271
|
+
readonly default: 100;
|
|
1272
|
+
readonly ui: {
|
|
1273
|
+
readonly tab: "interaction";
|
|
1274
|
+
readonly group: "Input";
|
|
1275
|
+
readonly label: "Large Paste Menu";
|
|
1276
|
+
readonly description: "When a paste reaches this many lines, offer a menu to wrap it in a code block, wrap it in XML tags, or save it to a file. 0 disables the menu (large pastes still collapse to a [Paste] marker).";
|
|
1277
|
+
readonly options: readonly [{
|
|
1278
|
+
readonly value: "0";
|
|
1279
|
+
readonly label: "Off";
|
|
1280
|
+
}, {
|
|
1281
|
+
readonly value: "100";
|
|
1282
|
+
readonly label: "100 lines";
|
|
1283
|
+
}, {
|
|
1284
|
+
readonly value: "250";
|
|
1285
|
+
readonly label: "250 lines";
|
|
1286
|
+
}, {
|
|
1287
|
+
readonly value: "500";
|
|
1288
|
+
readonly label: "500 lines";
|
|
1289
|
+
}, {
|
|
1290
|
+
readonly value: "1000";
|
|
1291
|
+
readonly label: "1000 lines";
|
|
1292
|
+
}];
|
|
1293
|
+
};
|
|
1294
|
+
};
|
|
1245
1295
|
readonly "startup.quiet": {
|
|
1246
1296
|
readonly type: "boolean";
|
|
1247
1297
|
readonly default: false;
|
|
@@ -1450,50 +1500,18 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1450
1500
|
};
|
|
1451
1501
|
readonly "stt.modelName": {
|
|
1452
1502
|
readonly type: "enum";
|
|
1453
|
-
readonly values: readonly ["
|
|
1454
|
-
readonly default: "
|
|
1503
|
+
readonly values: readonly ["fast", "balanced", "turbo", "parakeet"];
|
|
1504
|
+
readonly default: "parakeet";
|
|
1455
1505
|
readonly ui: {
|
|
1456
1506
|
readonly tab: "interaction";
|
|
1457
1507
|
readonly group: "Speech";
|
|
1458
1508
|
readonly label: "Speech Model";
|
|
1459
|
-
readonly description: "
|
|
1460
|
-
readonly options:
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
}
|
|
1465
|
-
readonly value: "tiny.en";
|
|
1466
|
-
readonly label: "tiny.en";
|
|
1467
|
-
readonly description: "English-only; fastest";
|
|
1468
|
-
}, {
|
|
1469
|
-
readonly value: "base";
|
|
1470
|
-
readonly label: "base";
|
|
1471
|
-
readonly description: "Multilingual; small and fast";
|
|
1472
|
-
}, {
|
|
1473
|
-
readonly value: "base.en";
|
|
1474
|
-
readonly label: "base.en";
|
|
1475
|
-
readonly description: "English-only; default";
|
|
1476
|
-
}, {
|
|
1477
|
-
readonly value: "small";
|
|
1478
|
-
readonly label: "small";
|
|
1479
|
-
readonly description: "Multilingual; balanced";
|
|
1480
|
-
}, {
|
|
1481
|
-
readonly value: "small.en";
|
|
1482
|
-
readonly label: "small.en";
|
|
1483
|
-
readonly description: "English-only; balanced";
|
|
1484
|
-
}, {
|
|
1485
|
-
readonly value: "medium";
|
|
1486
|
-
readonly label: "medium";
|
|
1487
|
-
readonly description: "Multilingual; accurate but slower";
|
|
1488
|
-
}, {
|
|
1489
|
-
readonly value: "medium.en";
|
|
1490
|
-
readonly label: "medium.en";
|
|
1491
|
-
readonly description: "English-only; accurate but slower";
|
|
1492
|
-
}, {
|
|
1493
|
-
readonly value: "large";
|
|
1494
|
-
readonly label: "large";
|
|
1495
|
-
readonly description: "Multilingual; most accurate";
|
|
1496
|
-
}];
|
|
1509
|
+
readonly description: "Local on-device speech model. Parakeet TDT v3 (sherpa-onnx) is the SoTA default; Whisper base/small/large-v3-turbo tiers (transformers.js) trade size for multilingual coverage. Downloaded on first use.";
|
|
1510
|
+
readonly options: {
|
|
1511
|
+
value: "balanced" | "fast" | "parakeet" | "turbo";
|
|
1512
|
+
label: "Balanced (Whisper small)" | "Fast (Whisper base)" | "Parakeet TDT v3 (SoTA)" | "Turbo (Whisper large-v3)";
|
|
1513
|
+
description: "NVIDIA Parakeet TDT 0.6B v3, 25 languages. Open ASR Leaderboard leader — best accuracy and far fastest decoding. Default." | "Whisper base, multilingual. Smallest + fastest; lowest accuracy. Best for low-resource machines." | "Whisper large-v3-turbo, 99 languages. Widest language coverage; large download, slower." | "Whisper small, multilingual. More accurate than Fast, still light on CPU/RAM.";
|
|
1514
|
+
}[];
|
|
1497
1515
|
};
|
|
1498
1516
|
};
|
|
1499
1517
|
readonly "contextPromotion.enabled": {
|
|
@@ -1823,7 +1841,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1823
1841
|
};
|
|
1824
1842
|
readonly "snapcompact.shape": {
|
|
1825
1843
|
readonly type: "enum";
|
|
1826
|
-
readonly values: readonly ["auto", ...("5x8-bw" | "5x8-sent" | "6x12-dim" | "6x6u-bw" | "6x6u-sent" | "8on16-bw" | "8x13-bw" | "8x8r-bw" | "8x8r-sent" | "8x8u-bw" | "8x8u-sent" | "doc-8on16-bw" | "doc-8on16-sent" | "doc-8on16-sent-dim")[]];
|
|
1844
|
+
readonly values: readonly ["auto", ...("11on16-bw" | "5x8-bw" | "5x8-sent" | "6x12-dim" | "6x6u-bw" | "6x6u-sent" | "8on16-bw" | "8on22-bw" | "8x13-bw" | "8x8r-bw" | "8x8r-sent" | "8x8u-bw" | "8x8u-sent" | "doc-8on16-bw" | "doc-8on16-sent" | "doc-8on16-sent-dim")[]];
|
|
1827
1845
|
readonly default: "auto";
|
|
1828
1846
|
readonly ui: {
|
|
1829
1847
|
readonly tab: "context";
|
|
@@ -1878,6 +1896,14 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1878
1896
|
readonly value: "8on16-bw";
|
|
1879
1897
|
readonly label: "8x13 on 16px pitch, black";
|
|
1880
1898
|
readonly description: "8x13 glyphs on an 8x16 cell (extra leading), black ink.";
|
|
1899
|
+
}, {
|
|
1900
|
+
readonly value: "8on22-bw";
|
|
1901
|
+
readonly label: "8x13 on 22px pitch (leading), black";
|
|
1902
|
+
readonly description: "8x13 glyphs on an 8x22 cell — extra line spacing so rows don't crowd. Default for OpenAI/Google.";
|
|
1903
|
+
}, {
|
|
1904
|
+
readonly value: "11on16-bw";
|
|
1905
|
+
readonly label: "8x13 on 11px advance (tracking), black";
|
|
1906
|
+
readonly description: "8x13 glyphs on an 11x16 cell — extra letter spacing so characters don't merge. Default for Anthropic.";
|
|
1881
1907
|
}, {
|
|
1882
1908
|
readonly value: "doc-8on16-bw";
|
|
1883
1909
|
readonly label: "Doc 8on16, black";
|
|
@@ -1999,6 +2025,31 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1999
2025
|
}];
|
|
2000
2026
|
};
|
|
2001
2027
|
};
|
|
2028
|
+
readonly "autolearn.enabled": {
|
|
2029
|
+
readonly type: "boolean";
|
|
2030
|
+
readonly default: false;
|
|
2031
|
+
readonly ui: {
|
|
2032
|
+
readonly tab: "memory";
|
|
2033
|
+
readonly group: "Auto-Learn";
|
|
2034
|
+
readonly label: "Auto-Learn (experimental)";
|
|
2035
|
+
readonly description: "After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills";
|
|
2036
|
+
};
|
|
2037
|
+
};
|
|
2038
|
+
readonly "autolearn.autoContinue": {
|
|
2039
|
+
readonly type: "boolean";
|
|
2040
|
+
readonly default: false;
|
|
2041
|
+
readonly ui: {
|
|
2042
|
+
readonly tab: "memory";
|
|
2043
|
+
readonly group: "Auto-Learn";
|
|
2044
|
+
readonly label: "Auto-run capture at stop";
|
|
2045
|
+
readonly description: "When on, auto-run one capture turn at stop (uses extra tokens). Off = passive reminder on your next turn.";
|
|
2046
|
+
readonly condition: "autolearnActive";
|
|
2047
|
+
};
|
|
2048
|
+
};
|
|
2049
|
+
readonly "autolearn.minToolCalls": {
|
|
2050
|
+
readonly type: "number";
|
|
2051
|
+
readonly default: 5;
|
|
2052
|
+
};
|
|
2002
2053
|
readonly "mnemopi.dbPath": {
|
|
2003
2054
|
readonly type: "string";
|
|
2004
2055
|
readonly default: undefined;
|
|
@@ -2046,6 +2097,27 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2046
2097
|
readonly condition: "mnemopiActive";
|
|
2047
2098
|
};
|
|
2048
2099
|
};
|
|
2100
|
+
readonly "mnemopi.embeddingVariant": {
|
|
2101
|
+
readonly type: "enum";
|
|
2102
|
+
readonly values: readonly ["en", "multilingual"];
|
|
2103
|
+
readonly default: "en";
|
|
2104
|
+
readonly ui: {
|
|
2105
|
+
readonly tab: "memory";
|
|
2106
|
+
readonly group: "Mnemopi";
|
|
2107
|
+
readonly label: "Embedding variant";
|
|
2108
|
+
readonly description: "Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.";
|
|
2109
|
+
readonly options: readonly [{
|
|
2110
|
+
readonly value: "en";
|
|
2111
|
+
readonly label: "English (bge-base-en-v1.5)";
|
|
2112
|
+
readonly description: "BAAI/bge-base-en-v1.5 (768d), English-only";
|
|
2113
|
+
}, {
|
|
2114
|
+
readonly value: "multilingual";
|
|
2115
|
+
readonly label: "Multilingual (multilingual-e5-large)";
|
|
2116
|
+
readonly description: "intfloat/multilingual-e5-large (1024d), cross-language recall";
|
|
2117
|
+
}];
|
|
2118
|
+
readonly condition: "mnemopiActive";
|
|
2119
|
+
};
|
|
2120
|
+
};
|
|
2049
2121
|
readonly "mnemopi.autoRecall": {
|
|
2050
2122
|
readonly type: "boolean";
|
|
2051
2123
|
readonly default: true;
|
|
@@ -2108,7 +2180,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2108
2180
|
readonly tab: "memory";
|
|
2109
2181
|
readonly group: "Mnemopi";
|
|
2110
2182
|
readonly label: "Mnemopi Embedding Model";
|
|
2111
|
-
readonly description: "
|
|
2183
|
+
readonly description: "Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.";
|
|
2112
2184
|
readonly condition: "mnemopiActive";
|
|
2113
2185
|
};
|
|
2114
2186
|
};
|
|
@@ -2953,13 +3025,27 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2953
3025
|
};
|
|
2954
3026
|
};
|
|
2955
3027
|
readonly "todo.eager": {
|
|
2956
|
-
readonly type: "
|
|
2957
|
-
readonly
|
|
3028
|
+
readonly type: "enum";
|
|
3029
|
+
readonly values: readonly ["default", "preferred", "always"];
|
|
3030
|
+
readonly default: "default";
|
|
2958
3031
|
readonly ui: {
|
|
2959
3032
|
readonly tab: "tools";
|
|
2960
3033
|
readonly group: "Todos";
|
|
2961
3034
|
readonly label: "Create Todos Automatically";
|
|
2962
|
-
readonly description: "
|
|
3035
|
+
readonly description: "How strongly to push automatic todo-list creation after the first message";
|
|
3036
|
+
readonly options: readonly [{
|
|
3037
|
+
readonly value: "default";
|
|
3038
|
+
readonly label: "Default";
|
|
3039
|
+
readonly description: "Model decides; no automatic todo list";
|
|
3040
|
+
}, {
|
|
3041
|
+
readonly value: "preferred";
|
|
3042
|
+
readonly label: "Preferred";
|
|
3043
|
+
readonly description: "Suggests a todo list on the first message (reminder, not forced)";
|
|
3044
|
+
}, {
|
|
3045
|
+
readonly value: "always";
|
|
3046
|
+
readonly label: "Always";
|
|
3047
|
+
readonly description: "Forces a comprehensive todo list on the first message";
|
|
3048
|
+
}];
|
|
2963
3049
|
};
|
|
2964
3050
|
};
|
|
2965
3051
|
readonly "find.enabled": {
|
|
@@ -3077,14 +3163,14 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3077
3163
|
readonly description: "Enable the debug tool for DAP-based debugging";
|
|
3078
3164
|
};
|
|
3079
3165
|
};
|
|
3080
|
-
readonly "
|
|
3166
|
+
readonly "speechgen.enabled": {
|
|
3081
3167
|
readonly type: "boolean";
|
|
3082
3168
|
readonly default: false;
|
|
3083
3169
|
readonly ui: {
|
|
3084
3170
|
readonly tab: "tools";
|
|
3085
3171
|
readonly group: "Available Tools";
|
|
3086
|
-
readonly label: "
|
|
3087
|
-
readonly description: "Enable the tts tool for xAI Grok Voice speech synthesis";
|
|
3172
|
+
readonly label: "Speech Generation";
|
|
3173
|
+
readonly description: "Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis";
|
|
3088
3174
|
};
|
|
3089
3175
|
};
|
|
3090
3176
|
readonly "inspect_image.enabled": {
|
|
@@ -3272,13 +3358,13 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3272
3358
|
};
|
|
3273
3359
|
readonly "async.pollWaitDuration": {
|
|
3274
3360
|
readonly type: "enum";
|
|
3275
|
-
readonly values: readonly ["5s", "10s", "30s", "1m", "5m"];
|
|
3276
|
-
readonly default: "
|
|
3361
|
+
readonly values: readonly ["5s", "10s", "30s", "1m", "5m", "smart"];
|
|
3362
|
+
readonly default: "smart";
|
|
3277
3363
|
readonly ui: {
|
|
3278
3364
|
readonly tab: "tools";
|
|
3279
3365
|
readonly group: "Execution";
|
|
3280
|
-
readonly label: "Poll
|
|
3281
|
-
readonly description: "How long the poll tool waits for background job updates before returning the current state";
|
|
3366
|
+
readonly label: "Max Poll Time";
|
|
3367
|
+
readonly description: "How long the poll tool waits for background job updates before returning the current state. A fixed value waits that exact duration every time. `smart` adapts: it starts at 5s and lengthens with each back-to-back poll (up to 5m), then resets to 5s after about a minute without polling.";
|
|
3282
3368
|
readonly options: readonly [{
|
|
3283
3369
|
readonly value: "5s";
|
|
3284
3370
|
readonly label: "5 seconds";
|
|
@@ -3288,13 +3374,16 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3288
3374
|
}, {
|
|
3289
3375
|
readonly value: "30s";
|
|
3290
3376
|
readonly label: "30 seconds";
|
|
3291
|
-
readonly description: "Default";
|
|
3292
3377
|
}, {
|
|
3293
3378
|
readonly value: "1m";
|
|
3294
3379
|
readonly label: "1 minute";
|
|
3295
3380
|
}, {
|
|
3296
3381
|
readonly value: "5m";
|
|
3297
3382
|
readonly label: "5 minutes";
|
|
3383
|
+
}, {
|
|
3384
|
+
readonly value: "smart";
|
|
3385
|
+
readonly label: "Smart";
|
|
3386
|
+
readonly description: "Default — adaptive 5s→5m, resets when you stop polling";
|
|
3298
3387
|
}];
|
|
3299
3388
|
};
|
|
3300
3389
|
};
|
|
@@ -3532,13 +3621,27 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3532
3621
|
};
|
|
3533
3622
|
};
|
|
3534
3623
|
readonly "task.eager": {
|
|
3535
|
-
readonly type: "
|
|
3536
|
-
readonly
|
|
3624
|
+
readonly type: "enum";
|
|
3625
|
+
readonly values: readonly ["default", "preferred", "always"];
|
|
3626
|
+
readonly default: "default";
|
|
3537
3627
|
readonly ui: {
|
|
3538
3628
|
readonly tab: "tasks";
|
|
3539
3629
|
readonly group: "Subagents";
|
|
3540
3630
|
readonly label: "Prefer Task Delegation";
|
|
3541
|
-
readonly description: "
|
|
3631
|
+
readonly description: "How strongly to push delegating work to subagents";
|
|
3632
|
+
readonly options: readonly [{
|
|
3633
|
+
readonly value: "default";
|
|
3634
|
+
readonly label: "Default";
|
|
3635
|
+
readonly description: "Model decides when to delegate";
|
|
3636
|
+
}, {
|
|
3637
|
+
readonly value: "preferred";
|
|
3638
|
+
readonly label: "Preferred";
|
|
3639
|
+
readonly description: "Adds delegation guidance to the system prompt";
|
|
3640
|
+
}, {
|
|
3641
|
+
readonly value: "always";
|
|
3642
|
+
readonly label: "Always";
|
|
3643
|
+
readonly description: "Prompt guidance plus a first-turn delegation reminder";
|
|
3644
|
+
}];
|
|
3542
3645
|
};
|
|
3543
3646
|
};
|
|
3544
3647
|
readonly "task.batch": {
|
|
@@ -3946,6 +4049,107 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3946
4049
|
}];
|
|
3947
4050
|
};
|
|
3948
4051
|
};
|
|
4052
|
+
readonly "providers.tts": {
|
|
4053
|
+
readonly type: "enum";
|
|
4054
|
+
readonly values: readonly ["auto", "local", "xai"];
|
|
4055
|
+
readonly default: "auto";
|
|
4056
|
+
readonly ui: {
|
|
4057
|
+
readonly tab: "providers";
|
|
4058
|
+
readonly group: "Services";
|
|
4059
|
+
readonly label: "Text-to-Speech Provider";
|
|
4060
|
+
readonly description: "Backend for the tts tool: local on-device neural TTS (Kokoro-82M) or xAI Grok Voice";
|
|
4061
|
+
readonly options: readonly [{
|
|
4062
|
+
readonly value: "auto";
|
|
4063
|
+
readonly label: "Auto";
|
|
4064
|
+
readonly description: "Prefer local on-device TTS; route .mp3 output to xAI when credentials exist";
|
|
4065
|
+
}, {
|
|
4066
|
+
readonly value: "local";
|
|
4067
|
+
readonly label: "Local";
|
|
4068
|
+
readonly description: "On-device neural TTS (Kokoro-82M); output is WAV/PCM16";
|
|
4069
|
+
}, {
|
|
4070
|
+
readonly value: "xai";
|
|
4071
|
+
readonly label: "xAI Grok Voice";
|
|
4072
|
+
readonly description: "Requires xAI Grok OAuth or XAI_API_KEY; MP3 or WAV";
|
|
4073
|
+
}];
|
|
4074
|
+
};
|
|
4075
|
+
};
|
|
4076
|
+
readonly "tts.localModel": {
|
|
4077
|
+
readonly type: "enum";
|
|
4078
|
+
readonly values: readonly ["kokoro"];
|
|
4079
|
+
readonly default: "kokoro";
|
|
4080
|
+
readonly ui: {
|
|
4081
|
+
readonly tab: "providers";
|
|
4082
|
+
readonly group: "Services";
|
|
4083
|
+
readonly label: "Local TTS Model";
|
|
4084
|
+
readonly description: "On-device neural TTS model (Kokoro-82M) used by the local TTS backend";
|
|
4085
|
+
readonly options: readonly [{
|
|
4086
|
+
readonly value: "kokoro";
|
|
4087
|
+
readonly label: "Kokoro-82M";
|
|
4088
|
+
readonly description: "Kokoro-82M neural TTS — SoTA on-device quality, multi-voice, fully local";
|
|
4089
|
+
}];
|
|
4090
|
+
};
|
|
4091
|
+
};
|
|
4092
|
+
readonly "tts.localVoice": {
|
|
4093
|
+
readonly type: "enum";
|
|
4094
|
+
readonly values: readonly string[];
|
|
4095
|
+
readonly default: "af_heart";
|
|
4096
|
+
readonly ui: {
|
|
4097
|
+
readonly tab: "providers";
|
|
4098
|
+
readonly group: "Services";
|
|
4099
|
+
readonly label: "Local TTS Voice";
|
|
4100
|
+
readonly description: "Kokoro voice used by the local TTS backend (American/British, female/male)";
|
|
4101
|
+
readonly options: readonly {
|
|
4102
|
+
value: string;
|
|
4103
|
+
label: string;
|
|
4104
|
+
}[];
|
|
4105
|
+
};
|
|
4106
|
+
};
|
|
4107
|
+
readonly "speech.enabled": {
|
|
4108
|
+
readonly type: "boolean";
|
|
4109
|
+
readonly default: false;
|
|
4110
|
+
readonly ui: {
|
|
4111
|
+
readonly tab: "providers";
|
|
4112
|
+
readonly group: "Services";
|
|
4113
|
+
readonly label: "Speech Vocalization";
|
|
4114
|
+
readonly description: "Speak the assistant's output aloud through the speakers as it streams";
|
|
4115
|
+
};
|
|
4116
|
+
};
|
|
4117
|
+
readonly "speech.mode": {
|
|
4118
|
+
readonly type: "enum";
|
|
4119
|
+
readonly values: readonly ["all", "assistant", "yield"];
|
|
4120
|
+
readonly default: "assistant";
|
|
4121
|
+
readonly ui: {
|
|
4122
|
+
readonly tab: "providers";
|
|
4123
|
+
readonly group: "Services";
|
|
4124
|
+
readonly label: "Speech Vocalization Mode";
|
|
4125
|
+
readonly description: "What to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end";
|
|
4126
|
+
readonly options: readonly [{
|
|
4127
|
+
readonly value: "all";
|
|
4128
|
+
readonly label: "All (messages + thinking)";
|
|
4129
|
+
}, {
|
|
4130
|
+
readonly value: "assistant";
|
|
4131
|
+
readonly label: "Assistant messages";
|
|
4132
|
+
}, {
|
|
4133
|
+
readonly value: "yield";
|
|
4134
|
+
readonly label: "Final message only";
|
|
4135
|
+
}];
|
|
4136
|
+
};
|
|
4137
|
+
};
|
|
4138
|
+
readonly "speech.voice": {
|
|
4139
|
+
readonly type: "enum";
|
|
4140
|
+
readonly values: readonly string[];
|
|
4141
|
+
readonly default: "af_heart";
|
|
4142
|
+
readonly ui: {
|
|
4143
|
+
readonly tab: "providers";
|
|
4144
|
+
readonly group: "Services";
|
|
4145
|
+
readonly label: "Speech Vocalization Voice";
|
|
4146
|
+
readonly description: "Kokoro voice used when speaking the assistant's output aloud";
|
|
4147
|
+
readonly options: readonly {
|
|
4148
|
+
value: string;
|
|
4149
|
+
label: string;
|
|
4150
|
+
}[];
|
|
4151
|
+
};
|
|
4152
|
+
};
|
|
3949
4153
|
readonly "providers.tinyModel": {
|
|
3950
4154
|
readonly type: "enum";
|
|
3951
4155
|
readonly values: readonly ["online", "lfm2-350m", "qwen3-0.6b", "gemma-270m", "qwen2.5-0.5b", "lfm2-700m"];
|
|
@@ -4633,8 +4837,7 @@ export interface SttSettings {
|
|
|
4633
4837
|
enabled: boolean;
|
|
4634
4838
|
language: string | undefined;
|
|
4635
4839
|
modelName: string;
|
|
4636
|
-
|
|
4637
|
-
modelPath: string | undefined;
|
|
4840
|
+
streaming: boolean;
|
|
4638
4841
|
}
|
|
4639
4842
|
export interface BashInterceptorRule {
|
|
4640
4843
|
pattern: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AgentState } from "@oh-my-pi/pi-agent-core";
|
|
2
|
-
import {
|
|
2
|
+
import type { SessionEntry, SessionHeader } from "../../session/session-entries";
|
|
3
|
+
import { SessionManager } from "../../session/session-manager";
|
|
3
4
|
/** Compose the standalone export template: minified CSS, tool renderers, and viewer JS inlined. */
|
|
4
5
|
export declare function getTemplate(): string;
|
|
5
6
|
export interface ExportOptions {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model query facade exposed to extensions as `ctx.models`.
|
|
3
|
+
*
|
|
4
|
+
* Read-only: lets an extension select a model the same way core does — list
|
|
5
|
+
* authenticated models, read the session model, resolve a model string or role
|
|
6
|
+
* alias, and compare model families — without touching the mutable registry or
|
|
7
|
+
* duplicating resolution/family heuristics.
|
|
8
|
+
*/
|
|
9
|
+
import type { Model } from "@oh-my-pi/pi-ai";
|
|
10
|
+
import type { ModelRegistry } from "../../config/model-registry";
|
|
11
|
+
import type { Settings } from "../../config/settings";
|
|
12
|
+
import type { ExtensionModelQuery } from "./types";
|
|
13
|
+
/**
|
|
14
|
+
* Build the `ctx.models` facade. `getModel` is read lazily so `current()` always
|
|
15
|
+
* reflects the live session model (it can change mid-session via `/model`).
|
|
16
|
+
*/
|
|
17
|
+
export declare function createExtensionModelQuery(modelRegistry: ModelRegistry, settings: Settings | undefined, getModel: () => Model | undefined): ExtensionModelQuery;
|
|
@@ -5,6 +5,7 @@ import type { AgentMessage } from "@oh-my-pi/pi-agent-core";
|
|
|
5
5
|
import type { CredentialDisabledEvent, ImageContent, Model, ProviderResponseMetadata } from "@oh-my-pi/pi-ai";
|
|
6
6
|
import type { KeyId } from "@oh-my-pi/pi-tui";
|
|
7
7
|
import type { ModelRegistry } from "../../config/model-registry";
|
|
8
|
+
import type { Settings } from "../../config/settings";
|
|
8
9
|
import type { MemoryRuntimeContext } from "../../memory-backend";
|
|
9
10
|
import type { SessionManager } from "../../session/session-manager";
|
|
10
11
|
import type { AfterProviderResponseEvent, AssistantThinkingRenderer, BeforeAgentStartEvent, BeforeAgentStartEventResult, BeforeProviderRequestEvent, BeforeProviderRequestEventResult, ContextEvent, Extension, ExtensionActions, ExtensionCommandContext, ExtensionCommandContextActions, ExtensionContext, ExtensionContextActions, ExtensionError, ExtensionEvent, ExtensionFlag, ExtensionRuntime, ExtensionShortcut, ExtensionUIContext, InputEvent, InputEventResult, MessageRenderer, RegisteredCommand, RegisteredTool, ResourcesDiscoverEvent, SessionBeforeBranchResult, SessionBeforeCompactResult, SessionBeforeSwitchResult, SessionBeforeTreeResult, SessionCompactingResult, ToolCallEvent, ToolCallEventResult, ToolResultEvent, ToolResultEventResult, UserBashEvent, UserBashEventResult, UserPythonEvent, UserPythonEventResult } from "./types";
|
|
@@ -62,7 +63,8 @@ export declare class ExtensionRunner {
|
|
|
62
63
|
private readonly cwd;
|
|
63
64
|
private readonly sessionManager;
|
|
64
65
|
private readonly modelRegistry;
|
|
65
|
-
|
|
66
|
+
private readonly settings?;
|
|
67
|
+
constructor(extensions: Extension[], runtime: ExtensionRuntime, cwd: string, sessionManager: SessionManager, modelRegistry: ModelRegistry, getMemory?: () => MemoryRuntimeContext | undefined, settings?: Settings | undefined);
|
|
66
68
|
initialize(actions: ExtensionActions, contextActions: ExtensionContextActions, commandContextActions?: ExtensionCommandContextActions, uiContext?: ExtensionUIContext): void;
|
|
67
69
|
/**
|
|
68
70
|
* Forward a `credential_disabled` event from `AuthStorage` to extension handlers.
|
|
@@ -27,6 +27,7 @@ import type { Theme } from "../../modes/theme/theme";
|
|
|
27
27
|
import type { CustomMessage } from "../../session/messages";
|
|
28
28
|
import type { ReadonlySessionManager, SessionManager } from "../../session/session-manager";
|
|
29
29
|
import type { BashToolDetails, BashToolInput, FindToolDetails, FindToolInput, ReadToolDetails, ReadToolInput, SearchToolDetails, SearchToolInput, WriteToolInput } from "../../tools";
|
|
30
|
+
import type { ApprovalMode } from "../../tools/approval";
|
|
30
31
|
import type { EventBus } from "../../utils/event-bus";
|
|
31
32
|
import type { AgentEndEvent, AgentStartEvent, AutoCompactionEndEvent, AutoCompactionStartEvent, AutoRetryEndEvent, AutoRetryStartEvent, ContextEvent, GoalUpdatedEvent, SessionBeforeBranchEvent, SessionBeforeBranchResult, SessionBeforeCompactEvent, SessionBeforeCompactResult, SessionBeforeSwitchEvent, SessionBeforeSwitchResult, SessionBeforeTreeEvent, SessionBeforeTreeResult, SessionBranchEvent, SessionCompactEvent, SessionCompactingEvent, SessionCompactingResult, SessionEvent, SessionShutdownEvent, SessionStartEvent, SessionSwitchEvent, SessionTreeEvent, TodoReminderEvent, ToolCallEventResult, ToolResultEventResult, TtsrTriggeredEvent, TurnEndEvent, TurnStartEvent } from "../shared-events";
|
|
32
33
|
import type { SlashCommandInfo } from "../slash-commands";
|
|
@@ -173,6 +174,31 @@ export interface CompactOptions {
|
|
|
173
174
|
/**
|
|
174
175
|
* Context passed to extension event handlers.
|
|
175
176
|
*/
|
|
177
|
+
/**
|
|
178
|
+
* Read-only model query facade exposed at `ctx.models`. Lets an extension select a
|
|
179
|
+
* model the same way core does — list authenticated models, read the session model,
|
|
180
|
+
* resolve a model string or role alias, and compare model families — without reaching
|
|
181
|
+
* into the mutable registry or re-implementing matching/family heuristics.
|
|
182
|
+
*/
|
|
183
|
+
export interface ExtensionModelQuery {
|
|
184
|
+
/** Authenticated models available this session (the same set `--model` selection sees). */
|
|
185
|
+
list(): Model[];
|
|
186
|
+
/** The current session model, if one is set. */
|
|
187
|
+
current(): Model | undefined;
|
|
188
|
+
/**
|
|
189
|
+
* Resolve a model string (`provider/id`, bare id) or role alias (`pi/slow`, a
|
|
190
|
+
* configured role) to a Model, using the same settings-backed aliases and match
|
|
191
|
+
* preferences as core selection. Thinking/routing suffixes are accepted and resolved
|
|
192
|
+
* to the base model (pass effort separately). Returns undefined when nothing matches.
|
|
193
|
+
*/
|
|
194
|
+
resolve(spec: string): Model | undefined;
|
|
195
|
+
/**
|
|
196
|
+
* Opaque lineage token for "are these the same family?" comparisons — every Claude
|
|
197
|
+
* point release shares a token, Claude and GPT differ. Backed by catalog canonical
|
|
198
|
+
* identity. Compare it; do not persist it (the vocabulary tracks new releases).
|
|
199
|
+
*/
|
|
200
|
+
family(model: Model): string;
|
|
201
|
+
}
|
|
176
202
|
export interface ExtensionContext {
|
|
177
203
|
/** UI methods for user interaction */
|
|
178
204
|
ui: ExtensionUIContext;
|
|
@@ -190,6 +216,8 @@ export interface ExtensionContext {
|
|
|
190
216
|
modelRegistry: ModelRegistry;
|
|
191
217
|
/** Current model (may be undefined) */
|
|
192
218
|
model: Model | undefined;
|
|
219
|
+
/** Read-only model query facade: list / current / resolve / family. */
|
|
220
|
+
models: ExtensionModelQuery;
|
|
193
221
|
/** Whether the agent is idle (not streaming) */
|
|
194
222
|
isIdle(): boolean;
|
|
195
223
|
/** Abort the current agent operation */
|
|
@@ -396,6 +424,22 @@ export interface InputEvent {
|
|
|
396
424
|
images?: ImageContent[];
|
|
397
425
|
source: "interactive" | "rpc" | "extension";
|
|
398
426
|
}
|
|
427
|
+
export interface ToolApprovalRequestedEvent {
|
|
428
|
+
type: "tool_approval_requested";
|
|
429
|
+
sessionId: string;
|
|
430
|
+
toolCallId: string;
|
|
431
|
+
toolName: string;
|
|
432
|
+
reason?: string;
|
|
433
|
+
approvalMode: ApprovalMode;
|
|
434
|
+
}
|
|
435
|
+
export interface ToolApprovalResolvedEvent {
|
|
436
|
+
type: "tool_approval_resolved";
|
|
437
|
+
sessionId: string;
|
|
438
|
+
toolCallId: string;
|
|
439
|
+
toolName: string;
|
|
440
|
+
approved: boolean;
|
|
441
|
+
reason?: string;
|
|
442
|
+
}
|
|
399
443
|
interface ToolCallEventBase {
|
|
400
444
|
type: "tool_call";
|
|
401
445
|
toolCallId: string;
|
|
@@ -498,7 +542,7 @@ export declare function isToolCallEventType<TName extends string, TInput extends
|
|
|
498
542
|
input: TInput;
|
|
499
543
|
};
|
|
500
544
|
/** Union of all event types */
|
|
501
|
-
export type ExtensionEvent = ResourcesDiscoverEvent | SessionEvent | ContextEvent | BeforeProviderRequestEvent | AfterProviderResponseEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | AutoCompactionStartEvent | AutoCompactionEndEvent | AutoRetryStartEvent | AutoRetryEndEvent | TtsrTriggeredEvent | TodoReminderEvent | GoalUpdatedEvent | CredentialDisabledEvent | UserBashEvent | UserPythonEvent | InputEvent | ToolCallEvent | ToolResultEvent;
|
|
545
|
+
export type ExtensionEvent = ResourcesDiscoverEvent | SessionEvent | ContextEvent | BeforeProviderRequestEvent | AfterProviderResponseEvent | BeforeAgentStartEvent | AgentStartEvent | AgentEndEvent | TurnStartEvent | TurnEndEvent | MessageStartEvent | MessageUpdateEvent | MessageEndEvent | ToolExecutionStartEvent | ToolExecutionUpdateEvent | ToolExecutionEndEvent | AutoCompactionStartEvent | AutoCompactionEndEvent | AutoRetryStartEvent | AutoRetryEndEvent | TtsrTriggeredEvent | TodoReminderEvent | GoalUpdatedEvent | CredentialDisabledEvent | UserBashEvent | UserPythonEvent | InputEvent | ToolCallEvent | ToolResultEvent | ToolApprovalRequestedEvent | ToolApprovalResolvedEvent;
|
|
502
546
|
export interface ContextEventResult {
|
|
503
547
|
messages?: AgentMessage[];
|
|
504
548
|
}
|
|
@@ -596,6 +640,8 @@ export interface ExtensionAPI {
|
|
|
596
640
|
on(event: "goal_updated", handler: ExtensionHandler<GoalUpdatedEvent>): void;
|
|
597
641
|
on(event: "credential_disabled", handler: ExtensionHandler<CredentialDisabledEvent>): void;
|
|
598
642
|
on(event: "input", handler: ExtensionHandler<InputEvent, InputEventResult>): void;
|
|
643
|
+
on(event: "tool_approval_requested", handler: ExtensionHandler<ToolApprovalRequestedEvent>): void;
|
|
644
|
+
on(event: "tool_approval_resolved", handler: ExtensionHandler<ToolApprovalResolvedEvent>): void;
|
|
599
645
|
on(event: "tool_call", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): void;
|
|
600
646
|
on(event: "tool_result", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): void;
|
|
601
647
|
on(event: "user_bash", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export type {
|
|
1
|
+
export type { UsageStatistics } from "../../session/session-entries";
|
|
2
|
+
export type { ReadonlySessionManager } from "../../session/session-manager";
|
|
2
3
|
export * from "./loader";
|
|
3
4
|
export * from "./runner";
|
|
4
5
|
export * from "./tool-wrapper";
|
|
@@ -13,6 +13,15 @@ import * as path from "node:path";
|
|
|
13
13
|
* Exported for tests; production callers use `BUNFS_PACKAGE_ROOT` below.
|
|
14
14
|
*/
|
|
15
15
|
export declare function __computeBunfsPackageRoot(metaDir: string, pathImpl?: typeof path): string;
|
|
16
|
+
/**
|
|
17
|
+
* Compute the package root for the npm prebuilt `dist/cli.js` bundle.
|
|
18
|
+
*
|
|
19
|
+
* `bundle-dist.ts` defines `process.env.PI_BUNDLED="true"`; after bundling,
|
|
20
|
+
* `import.meta.dir` points at `<package>/dist`. Do not resolve the package via
|
|
21
|
+
* bare `@oh-my-pi/pi-coding-agent` here: from a global install Bun can pick an
|
|
22
|
+
* older cache entry, recreating mixed-runtime plugin loading.
|
|
23
|
+
*/
|
|
24
|
+
export declare function __computeBundledSelfPackageRoot(metaDir: string, pathImpl?: typeof path): string;
|
|
16
25
|
/**
|
|
17
26
|
* Drop overrides whose targets are missing on disk so they can fall through to
|
|
18
27
|
* the canonical-resolution path. Exported for the test seam in #2168.
|
|
@@ -14,6 +14,17 @@ import type { InstalledPlugin } from "./types";
|
|
|
14
14
|
export declare function getEnabledPlugins(cwd: string, opts?: {
|
|
15
15
|
home?: string;
|
|
16
16
|
}): Promise<InstalledPlugin[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Declared manifest entries paired with their resolved file path. Returns one
|
|
19
|
+
* record per declared entry — base entries first, then enabled-feature entries
|
|
20
|
+
* — so callers (e.g. install-time validation) can detect manifest entries that
|
|
21
|
+
* point at missing files instead of silently skipping them like
|
|
22
|
+
* {@link resolvePluginPaths} does.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolvePluginManifestEntries(plugin: InstalledPlugin, key: "tools" | "hooks" | "commands" | "extensions"): Array<{
|
|
25
|
+
entry: string;
|
|
26
|
+
resolvedPath: string | null;
|
|
27
|
+
}>;
|
|
17
28
|
export declare function resolvePluginToolPaths(plugin: InstalledPlugin): string[];
|
|
18
29
|
export declare function resolvePluginHookPaths(plugin: InstalledPlugin): string[];
|
|
19
30
|
export declare function resolvePluginCommandPaths(plugin: InstalledPlugin): string[];
|
|
@@ -17,7 +17,7 @@ import type { CompactionPreparation, CompactionResult } from "@oh-my-pi/pi-agent
|
|
|
17
17
|
import type { ImageContent, TextContent, ToolResultMessage } from "@oh-my-pi/pi-ai";
|
|
18
18
|
import type { Rule } from "../capability/rule";
|
|
19
19
|
import type { Goal, GoalModeState } from "../goals/state";
|
|
20
|
-
import type { BranchSummaryEntry, CompactionEntry, SessionEntry } from "../session/session-
|
|
20
|
+
import type { BranchSummaryEntry, CompactionEntry, SessionEntry } from "../session/session-entries";
|
|
21
21
|
import type { TodoItem } from "../tools/todo";
|
|
22
22
|
/** Fired on initial session load */
|
|
23
23
|
export interface SessionStartEvent {
|
|
@@ -33,6 +33,16 @@ export declare function getActiveSkills(): readonly Skill[];
|
|
|
33
33
|
export declare function setActiveSkills(value: readonly Skill[]): void;
|
|
34
34
|
/** Reset the active skill snapshot. Test-only. */
|
|
35
35
|
export declare function resetActiveSkillsForTests(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Whether `name` is already claimed by an active authored (non-managed) skill.
|
|
38
|
+
*
|
|
39
|
+
* Managed (auto-learn) skills resolve dead-last in discovery, so an authored
|
|
40
|
+
* skill of the same name always wins (see `loadSkills`) and a managed skill
|
|
41
|
+
* written under an authored name is silently dropped — it never surfaces.
|
|
42
|
+
* `manage_skill` create consults this to refuse the write up front instead of
|
|
43
|
+
* reporting a false "Created" for a skill that can never appear.
|
|
44
|
+
*/
|
|
45
|
+
export declare function isNameClaimedByAuthoredSkill(name: string): boolean;
|
|
36
46
|
export interface LoadSkillsFromDirOptions {
|
|
37
47
|
/** Directory to scan for skills */
|
|
38
48
|
dir: string;
|