@oh-my-pi/pi-coding-agent 6.9.69 → 8.0.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 +219 -51
- package/README.md +1 -1
- package/docs/hooks.md +2 -2
- package/docs/sdk.md +1 -1
- package/examples/sdk/04-skills.ts +1 -1
- package/package.json +10 -10
- package/scripts/format-prompts.ts +143 -0
- package/scripts/generate-template.ts +1 -1
- package/src/cli/args.ts +3 -3
- package/src/cli/config-cli.ts +4 -4
- package/src/cli/file-processor.ts +3 -3
- package/src/cli/list-models.ts +2 -2
- package/src/cli/plugin-cli.ts +3 -3
- package/src/cli/session-picker.ts +2 -2
- package/src/cli/setup-cli.ts +2 -2
- package/src/cli/stats-cli.ts +1 -1
- package/src/cli/update-cli.ts +2 -2
- package/src/{core → config}/keybindings.ts +1 -1
- package/src/{core → config}/model-registry.ts +8 -1
- package/src/{core → config}/model-resolver.ts +3 -3
- package/src/{core → config}/prompt-templates.ts +2 -2
- package/src/{core → config}/settings-manager.ts +6 -6
- package/src/{core/cursor/exec-bridge.ts → cursor.ts} +4 -4
- package/src/discovery/agents-md.ts +4 -4
- package/src/discovery/builtin.ts +17 -17
- package/src/discovery/claude.ts +12 -12
- package/src/discovery/cline.ts +6 -6
- package/src/discovery/codex.ts +21 -21
- package/src/discovery/cursor.ts +9 -9
- package/src/discovery/gemini.ts +9 -9
- package/src/discovery/github.ts +6 -6
- package/src/discovery/helpers.ts +4 -4
- package/src/discovery/index.ts +16 -16
- package/src/discovery/mcp-json.ts +4 -4
- package/src/discovery/ssh.ts +4 -4
- package/src/discovery/vscode.ts +4 -4
- package/src/discovery/windsurf.ts +6 -6
- package/src/{core/tools/exa → exa}/company.ts +2 -3
- package/src/{core/tools/exa → exa}/index.ts +2 -2
- package/src/{core/tools/exa → exa}/linkedin.ts +2 -3
- package/src/{core/tools/exa → exa}/mcp-client.ts +2 -2
- package/src/{core/tools/exa → exa}/render.ts +3 -3
- package/src/{core/tools/exa → exa}/researcher.ts +1 -1
- package/src/{core/tools/exa → exa}/search.ts +2 -10
- package/src/{core/tools/exa → exa}/websets.ts +1 -1
- package/src/{core → exec}/bash-executor.ts +23 -7
- package/src/{core → export}/custom-share.ts +1 -1
- package/src/{core/export-html → export/html}/index.ts +3 -3
- package/src/{core → export}/ttsr.ts +2 -2
- package/src/{core → extensibility}/custom-commands/bundled/review/index.ts +4 -4
- package/src/{core → extensibility}/custom-commands/loader.ts +3 -3
- package/src/{core → extensibility}/custom-commands/types.ts +1 -1
- package/src/{core → extensibility}/custom-tools/loader.ts +9 -9
- package/src/{core → extensibility}/custom-tools/types.ts +6 -6
- package/src/{core → extensibility}/custom-tools/wrapper.ts +1 -1
- package/src/{core → extensibility}/extensions/loader.ts +8 -8
- package/src/{core → extensibility}/extensions/runner.ts +3 -3
- package/src/{core → extensibility}/extensions/types.ts +15 -15
- package/src/{core → extensibility}/extensions/wrapper.ts +1 -1
- package/src/{core → extensibility}/hooks/index.ts +1 -1
- package/src/{core → extensibility}/hooks/loader.ts +7 -7
- package/src/{core → extensibility}/hooks/runner.ts +4 -4
- package/src/{core → extensibility}/hooks/types.ts +9 -9
- package/src/{core → extensibility}/plugins/doctor.ts +1 -1
- package/src/{core → extensibility}/plugins/installer.ts +2 -3
- package/src/{core → extensibility}/plugins/paths.ts +1 -1
- package/src/{core → extensibility}/skills.ts +8 -48
- package/src/{core → extensibility}/slash-commands.ts +6 -6
- package/src/index.ts +127 -128
- package/src/internal-urls/agent-protocol.ts +126 -0
- package/src/internal-urls/artifact-protocol.ts +93 -0
- package/src/internal-urls/index.ts +28 -0
- package/src/internal-urls/json-query.ts +126 -0
- package/src/internal-urls/router.ts +69 -0
- package/src/internal-urls/rule-protocol.ts +56 -0
- package/src/internal-urls/skill-protocol.ts +112 -0
- package/src/internal-urls/types.ts +48 -0
- package/src/{core/python-executor.ts → ipy/executor.ts} +74 -13
- package/src/{core/python-gateway-coordinator.ts → ipy/gateway-coordinator.ts} +40 -270
- package/src/{core/python-kernel.ts → ipy/kernel.ts} +38 -10
- package/src/{core/python-prelude.py → ipy/prelude.py} +201 -8
- package/src/ipy/prelude.ts +3 -0
- package/src/{core/tools/lsp → lsp}/client.ts +7 -6
- package/src/{core/tools/lsp → lsp}/clients/biome-client.ts +1 -1
- package/src/{core/tools/lsp → lsp}/clients/index.ts +1 -1
- package/src/{core/tools/lsp → lsp}/clients/lsp-linter-client.ts +4 -4
- package/src/{core/tools/lsp → lsp}/config.ts +1 -1
- package/src/{core/tools/lsp → lsp}/index.ts +29 -17
- package/src/{core/tools/lsp → lsp}/render.ts +2 -2
- package/src/{core/tools/lsp → lsp}/types.ts +14 -16
- package/src/{core/tools/lsp → lsp}/utils.ts +1 -1
- package/src/main.ts +12 -12
- package/src/{core/mcp → mcp}/config.ts +8 -8
- package/src/{core/mcp → mcp}/loader.ts +5 -6
- package/src/{core/mcp → mcp}/manager.ts +2 -2
- package/src/{core/mcp → mcp}/tool-bridge.ts +35 -6
- package/src/{core/mcp → mcp}/tool-cache.ts +1 -1
- package/src/{core/mcp → mcp}/transports/http.ts +7 -1
- package/src/{core/mcp → mcp}/transports/stdio.ts +1 -1
- package/src/{core/mcp → mcp}/types.ts +1 -1
- package/src/migrations.ts +2 -2
- package/src/modes/{interactive/components → components}/armin.ts +1 -1
- package/src/modes/{interactive/components → components}/assistant-message.ts +1 -1
- package/src/modes/{interactive/components → components}/bash-execution.ts +37 -29
- package/src/modes/{interactive/components → components}/bordered-loader.ts +1 -1
- package/src/modes/{interactive/components → components}/branch-summary-message.ts +2 -2
- package/src/modes/{interactive/components → components}/compaction-summary-message.ts +2 -2
- package/src/modes/{interactive/components → components}/custom-message.ts +3 -3
- package/src/modes/{interactive/components → components}/diff.ts +1 -1
- package/src/modes/{interactive/components → components}/dynamic-border.ts +1 -1
- package/src/modes/{interactive/components → components}/extensions/extension-dashboard.ts +3 -3
- package/src/modes/{interactive/components → components}/extensions/extension-list.ts +2 -2
- package/src/modes/{interactive/components → components}/extensions/inspector-panel.ts +1 -1
- package/src/modes/{interactive/components → components}/extensions/state-manager.ts +11 -17
- package/src/modes/{interactive/components → components}/extensions/types.ts +1 -1
- package/src/modes/{interactive/components → components}/footer.ts +3 -3
- package/src/modes/{interactive/components → components}/history-search.ts +2 -2
- package/src/modes/{interactive/components → components}/hook-editor.ts +1 -1
- package/src/modes/{interactive/components → components}/hook-input.ts +1 -1
- package/src/modes/{interactive/components → components}/hook-message.ts +3 -3
- package/src/modes/{interactive/components → components}/hook-selector.ts +1 -1
- package/src/modes/{interactive/components → components}/keybinding-hints.ts +2 -2
- package/src/modes/{interactive/components → components}/login-dialog.ts +1 -1
- package/src/modes/{interactive/components → components}/model-selector.ts +5 -5
- package/src/modes/{interactive/components → components}/oauth-selector.ts +2 -2
- package/src/modes/{interactive/components → components}/plugin-settings.ts +3 -3
- package/src/modes/{interactive/components → components}/python-execution.ts +35 -24
- package/src/modes/{interactive/components → components}/queue-mode-selector.ts +1 -1
- package/src/modes/{interactive/components → components}/read-tool-group.ts +2 -2
- package/src/modes/{interactive/components → components}/session-selector.ts +3 -3
- package/src/modes/{interactive/components → components}/settings-defs.ts +2 -2
- package/src/modes/{interactive/components → components}/settings-selector.ts +2 -2
- package/src/modes/{interactive/components → components}/show-images-selector.ts +1 -1
- package/src/modes/{interactive/components → components}/status-line/segments.ts +2 -2
- package/src/modes/{interactive/components → components}/status-line/separators.ts +1 -1
- package/src/modes/{interactive/components → components}/status-line/types.ts +2 -2
- package/src/modes/{interactive/components → components}/status-line-segment-editor.ts +2 -2
- package/src/modes/{interactive/components → components}/status-line.ts +3 -3
- package/src/modes/{interactive/components → components}/theme-selector.ts +1 -1
- package/src/modes/{interactive/components → components}/thinking-selector.ts +1 -1
- package/src/modes/{interactive/components → components}/todo-display.ts +3 -4
- package/src/modes/{interactive/components → components}/todo-reminder.ts +2 -2
- package/src/modes/{interactive/components → components}/tool-execution.ts +8 -8
- package/src/modes/{interactive/components → components}/tree-selector.ts +3 -3
- package/src/modes/{interactive/components → components}/ttsr-notification.ts +2 -2
- package/src/modes/{interactive/components → components}/user-message-selector.ts +1 -1
- package/src/modes/{interactive/components → components}/user-message.ts +1 -1
- package/src/modes/{interactive/components → components}/welcome.ts +2 -2
- package/src/modes/{interactive/controllers → controllers}/command-controller.ts +381 -30
- package/src/modes/{interactive/controllers → controllers}/event-controller.ts +9 -9
- package/src/modes/{interactive/controllers → controllers}/extension-ui-controller.ts +8 -8
- package/src/modes/{interactive/controllers → controllers}/input-controller.ts +61 -13
- package/src/modes/{interactive/controllers → controllers}/selector-controller.ts +16 -16
- package/src/modes/index.ts +1 -1
- package/src/modes/{interactive/interactive-mode.ts → interactive-mode.ts} +20 -15
- package/src/modes/print-mode.ts +1 -1
- package/src/modes/rpc/rpc-client.ts +3 -3
- package/src/modes/rpc/rpc-mode.ts +3 -3
- package/src/modes/rpc/rpc-types.ts +3 -3
- package/src/modes/{interactive/theme → theme}/theme.ts +1 -1
- package/src/modes/{interactive/types.ts → types.ts} +10 -10
- package/src/modes/{interactive/utils → utils}/ui-helpers.ts +20 -27
- package/src/{core/tools/patch → patch}/applicator.ts +1 -1
- package/src/{core/tools/patch → patch}/diff.ts +1 -1
- package/src/{core/tools/patch → patch}/index.ts +31 -36
- package/src/{core/tools/patch → patch}/shared.ts +9 -6
- package/src/prompts/agents/explore.md +83 -46
- package/src/prompts/agents/init.md +9 -4
- package/src/prompts/agents/plan.md +8 -7
- package/src/prompts/agents/reviewer.md +36 -18
- package/src/prompts/agents/task.md +4 -4
- package/src/prompts/compaction/branch-summary-preamble.md +0 -1
- package/src/prompts/review-request.md +0 -1
- package/src/prompts/system/custom-system-prompt.md +2 -14
- package/src/prompts/system/file-operations.md +0 -2
- package/src/prompts/system/system-prompt.md +182 -171
- package/src/prompts/system/web-search.md +26 -0
- package/src/prompts/tools/ask.md +31 -24
- package/src/prompts/tools/bash.md +20 -17
- package/src/prompts/tools/calculator.md +9 -5
- package/src/prompts/tools/fetch.md +16 -0
- package/src/prompts/tools/find.md +15 -5
- package/src/prompts/tools/gemini-image.md +21 -6
- package/src/prompts/tools/grep.md +28 -12
- package/src/prompts/tools/lsp.md +35 -14
- package/src/prompts/tools/patch.md +39 -41
- package/src/prompts/tools/python.md +59 -77
- package/src/prompts/tools/read.md +23 -22
- package/src/prompts/tools/replace.md +19 -12
- package/src/prompts/tools/ssh.md +21 -28
- package/src/prompts/tools/task.md +54 -44
- package/src/prompts/tools/todo-write.md +52 -163
- package/src/prompts/tools/web-search.md +16 -9
- package/src/prompts/tools/write.md +13 -2
- package/src/{core/sdk.ts → sdk.ts} +65 -34
- package/src/{core → session}/agent-session.ts +157 -41
- package/src/{core → session}/agent-storage.ts +2 -2
- package/src/session/artifacts.ts +110 -0
- package/src/{core → session}/auth-storage.ts +525 -203
- package/src/{core → session}/compaction/branch-summarization.ts +5 -5
- package/src/{core → session}/compaction/compaction.ts +6 -6
- package/src/{core → session}/compaction/utils.ts +3 -3
- package/src/{core → session}/history-storage.ts +1 -1
- package/src/{core → session}/messages.ts +6 -8
- package/src/{core → session}/session-manager.ts +2 -2
- package/src/{core → session}/storage-migration.ts +2 -2
- package/src/session/streaming-output.ts +177 -0
- package/src/{core/ssh → ssh}/connection-manager.ts +1 -1
- package/src/{core/ssh → ssh}/ssh-executor.ts +19 -4
- package/src/{core/ssh → ssh}/sshfs-mount.ts +1 -1
- package/src/{core/system-prompt.ts → system-prompt.ts} +8 -37
- package/src/{core/tools/task → task}/agents.ts +8 -8
- package/src/{core/tools/task → task}/commands.ts +5 -6
- package/src/{core/tools/task → task}/discovery.ts +3 -3
- package/src/{core/tools/task → task}/executor.ts +34 -44
- package/src/{core/tools/task → task}/index.ts +206 -50
- package/src/{core/tools/task → task}/render.ts +80 -23
- package/src/{core/tools/task → task}/subprocess-tool-registry.ts +1 -1
- package/src/task/template.ts +47 -0
- package/src/{core/tools/task → task}/types.ts +19 -27
- package/src/{core/tools/task → task}/worker-protocol.ts +8 -4
- package/src/{core/tools/task → task}/worker.ts +34 -29
- package/src/task/worktree.ts +166 -0
- package/src/{core/tools → tools}/ask.ts +13 -21
- package/src/{core/tools → tools}/bash-interceptor.ts +1 -1
- package/src/{core/tools → tools}/bash.ts +61 -63
- package/src/{core/tools → tools}/calculator.ts +4 -4
- package/src/{core/tools → tools}/complete.ts +1 -1
- package/src/{core/tools → tools}/context.ts +2 -2
- package/src/{core/tools/web-fetch.ts → tools/fetch.ts} +97 -76
- package/src/{core/tools → tools}/find.ts +96 -107
- package/src/{core/tools → tools}/gemini-image.ts +420 -29
- package/src/{core/tools → tools}/grep.ts +155 -164
- package/src/{core/tools → tools}/index.ts +63 -56
- package/src/tools/list-limit.ts +40 -0
- package/src/{core/tools → tools}/ls.ts +44 -35
- package/src/{core/tools → tools}/notebook.ts +3 -3
- package/src/tools/output-meta.ts +443 -0
- package/src/tools/output-utils.ts +63 -0
- package/src/{core/tools → tools}/python.ts +106 -89
- package/src/tools/read.ts +882 -0
- package/src/{core/tools → tools}/render-utils.ts +1 -1
- package/src/{core/tools → tools}/renderers.ts +8 -10
- package/src/{core/tools → tools}/review.ts +2 -2
- package/src/{core/tools → tools}/ssh.ts +56 -59
- package/src/{core/tools → tools}/todo-write.ts +12 -23
- package/src/tools/tool-errors.ts +95 -0
- package/src/tools/tool-result.ts +92 -0
- package/src/{core/tools → tools}/truncate.ts +2 -2
- package/src/{core/tools → tools}/write.ts +15 -13
- package/src/utils/changelog.ts +1 -1
- package/src/{core → utils}/file-mentions.ts +4 -4
- package/src/utils/image-convert.ts +1 -1
- package/src/utils/image-resize.ts +1 -1
- package/src/utils/shell.ts +1 -1
- package/src/{core → utils}/title-generator.ts +4 -4
- package/src/utils/tools-manager.ts +1 -1
- package/src/{core/tools/web-scrapers → web/scrapers}/choosealicense.ts +1 -1
- package/src/{core/tools/web-scrapers → web/scrapers}/twitter.ts +3 -2
- package/src/{core/tools/web-scrapers → web/scrapers}/types.ts +4 -2
- package/src/{core/tools/web-scrapers → web/scrapers}/utils.ts +1 -1
- package/src/{core/tools/web-scrapers → web/scrapers}/youtube.ts +14 -13
- package/src/{core/tools/web-search → web/search}/auth.ts +4 -4
- package/src/{core/tools/web-search → web/search}/index.ts +22 -71
- package/src/{core/tools/web-search → web/search}/providers/anthropic.ts +7 -10
- package/src/{core/tools/web-search → web/search}/providers/exa.ts +2 -2
- package/src/{core/tools/web-search → web/search}/providers/perplexity.ts +4 -16
- package/src/{core/tools/web-search → web/search}/render.ts +3 -3
- package/scripts/migrate-sessions.sh +0 -93
- package/src/core/index.ts +0 -56
- package/src/core/python-prelude.ts +0 -3
- package/src/core/ssh-executor.ts +0 -5
- package/src/core/streaming-output.ts +0 -115
- package/src/core/tools/output.ts +0 -519
- package/src/core/tools/read.ts +0 -717
- package/src/core/tools/task/template.ts +0 -37
- package/src/prompts/tools/output.md +0 -47
- package/src/prompts/tools/web-fetch.md +0 -9
- /package/src/{core/tools/exa → exa}/types.ts +0 -0
- /package/src/{core → exec}/exec.ts +0 -0
- /package/src/{core/export-html → export/html}/template.css +0 -0
- /package/src/{core/export-html → export/html}/template.generated.ts +0 -0
- /package/src/{core/export-html → export/html}/template.html +0 -0
- /package/src/{core/export-html → export/html}/template.js +0 -0
- /package/src/{core/export-html → export/html}/template.macro.ts +0 -0
- /package/src/{core/export-html → export/html}/vendor/highlight.min.js +0 -0
- /package/src/{core/export-html → export/html}/vendor/marked.min.js +0 -0
- /package/src/{core → extensibility}/custom-commands/index.ts +0 -0
- /package/src/{core → extensibility}/custom-tools/index.ts +0 -0
- /package/src/{core → extensibility}/extensions/index.ts +0 -0
- /package/src/{core → extensibility}/hooks/tool-wrapper.ts +0 -0
- /package/src/{core → extensibility}/plugins/index.ts +0 -0
- /package/src/{core → extensibility}/plugins/loader.ts +0 -0
- /package/src/{core → extensibility}/plugins/manager.ts +0 -0
- /package/src/{core → extensibility}/plugins/parser.ts +0 -0
- /package/src/{core → extensibility}/plugins/types.ts +0 -0
- /package/src/{core/python-modules.ts → ipy/modules.ts} +0 -0
- /package/src/{core/tools/lsp → lsp}/defaults.json +0 -0
- /package/src/{core/tools/lsp → lsp}/edits.ts +0 -0
- /package/src/{core/tools/lsp → lsp}/lspmux.ts +0 -0
- /package/src/{core/tools/lsp → lsp}/rust-analyzer.ts +0 -0
- /package/src/{core/mcp → mcp}/client.ts +0 -0
- /package/src/{core/mcp → mcp}/index.ts +0 -0
- /package/src/{core/mcp → mcp}/json-rpc.ts +0 -0
- /package/src/{core/mcp → mcp}/transports/index.ts +0 -0
- /package/src/modes/{interactive/components → components}/countdown-timer.ts +0 -0
- /package/src/modes/{interactive/components → components}/custom-editor.ts +0 -0
- /package/src/modes/{interactive/components → components}/extensions/index.ts +0 -0
- /package/src/modes/{interactive/components → components}/index.ts +0 -0
- /package/src/modes/{interactive/components → components}/status-line/index.ts +0 -0
- /package/src/modes/{interactive/components → components}/status-line/presets.ts +0 -0
- /package/src/modes/{interactive/components → components}/visual-truncate.ts +0 -0
- /package/src/modes/{interactive/theme → theme}/dark.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/alabaster.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/amethyst.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/anthracite.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/basalt.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/birch.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-abyss.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-arctic.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-aurora.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-catppuccin.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-cavern.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-copper.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-cosmos.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-cyberpunk.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-dracula.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-eclipse.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-ember.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-equinox.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-forest.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-github.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-gruvbox.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-lavender.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-lunar.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-midnight.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-monochrome.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-monokai.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-nebula.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-nord.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-ocean.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-one.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-rainforest.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-reef.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-retro.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-rose-pine.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-sakura.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-slate.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-solarized.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-solstice.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-starfall.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-sunset.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-swamp.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-synthwave.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-taiga.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-terminal.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-tokyo-night.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-tundra.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-twilight.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/dark-volcanic.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/graphite.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/index.ts +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-arctic.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-aurora-day.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-canyon.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-catppuccin.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-cirrus.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-coral.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-cyberpunk.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-dawn.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-dunes.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-eucalyptus.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-forest.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-frost.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-github.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-glacier.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-gruvbox.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-haze.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-honeycomb.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-lagoon.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-lavender.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-meadow.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-mint.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-monochrome.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-ocean.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-one.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-opal.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-orchard.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-paper.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-prism.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-retro.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-sand.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-savanna.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-solarized.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-soleil.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-sunset.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-synthwave.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-tokyo-night.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-wetland.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/light-zenith.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/limestone.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/mahogany.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/marble.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/obsidian.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/onyx.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/pearl.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/porcelain.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/quartz.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/sandstone.json +0 -0
- /package/src/modes/{interactive/theme → theme}/defaults/titanium.json +0 -0
- /package/src/modes/{interactive/theme → theme}/light.json +0 -0
- /package/src/modes/{interactive/theme → theme}/theme-schema.json +0 -0
- /package/src/{core/tools/patch → patch}/fuzzy.ts +0 -0
- /package/src/{core/tools/patch → patch}/normalize.ts +0 -0
- /package/src/{core/tools/patch → patch}/normative.ts +0 -0
- /package/src/{core/tools/patch → patch}/parser.ts +0 -0
- /package/src/{core/tools/patch → patch}/types.ts +0 -0
- /package/src/{core → session}/compaction/index.ts +0 -0
- /package/src/{core → session}/session-storage.ts +0 -0
- /package/src/{core/tools/task → task}/name-generator.ts +0 -0
- /package/src/{core/tools/task → task}/omp-command.ts +0 -0
- /package/src/{core/tools/task → task}/parallel.ts +0 -0
- /package/src/{core/tools → tools}/jtd-to-json-schema.ts +0 -0
- /package/src/{core/tools → tools}/path-utils.ts +0 -0
- /package/src/{core → utils}/event-bus.ts +0 -0
- /package/src/{core → utils}/frontmatter.ts +0 -0
- /package/src/{core → utils}/terminal-notify.ts +0 -0
- /package/src/{core → utils}/timings.ts +0 -0
- /package/src/{core → utils}/utils.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/artifacthub.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/arxiv.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/aur.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/biorxiv.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/bluesky.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/brew.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/cheatsh.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/chocolatey.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/cisa-kev.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/clojars.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/coingecko.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/crates-io.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/crossref.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/devto.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/discogs.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/discourse.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/dockerhub.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/fdroid.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/firefox-addons.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/flathub.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/github-gist.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/github.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/gitlab.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/go-pkg.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/hackage.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/hackernews.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/hex.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/huggingface.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/iacr.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/index.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/jetbrains-marketplace.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/lemmy.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/lobsters.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/mastodon.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/maven.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/mdn.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/metacpan.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/musicbrainz.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/npm.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/nuget.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/nvd.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/ollama.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/open-vsx.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/opencorporates.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/openlibrary.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/orcid.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/osv.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/packagist.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/pub-dev.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/pubmed.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/pypi.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/rawg.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/readthedocs.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/reddit.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/repology.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/rfc.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/rubygems.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/searchcode.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/sec-edgar.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/semantic-scholar.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/snapcraft.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/sourcegraph.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/spdx.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/spotify.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/stackoverflow.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/terraform.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/tldr.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/vimeo.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/vscode-marketplace.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/w3c.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/wikidata.ts +0 -0
- /package/src/{core/tools/web-scrapers → web/scrapers}/wikipedia.ts +0 -0
- /package/src/{core/tools/web-search → web/search}/types.ts +0 -0
|
@@ -1,4 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
<system_directive>
|
|
2
|
+
XML tags in this prompt are system-level instructions. They are not suggestions.
|
|
3
|
+
|
|
4
|
+
Tag hierarchy (by enforcement level):
|
|
5
|
+
- `<critical>` — Inviolable. Failure to comply is a system failure.
|
|
6
|
+
- `<prohibited>` — Forbidden. These actions will cause harm.
|
|
7
|
+
- `<important>` — High priority. Deviate only with justification.
|
|
8
|
+
- `<instruction>` — How to operate. Follow precisely.
|
|
9
|
+
- `<conditions>` — When rules apply. Check before acting.
|
|
10
|
+
- `<avoid>` — Anti-patterns. Prefer alternatives.
|
|
11
|
+
|
|
12
|
+
Treat every tagged section as if violating it would terminate the session.
|
|
13
|
+
</system_directive>
|
|
14
|
+
|
|
15
|
+
You are a Distinguished Staff Engineer.
|
|
16
|
+
|
|
17
|
+
High-agency. Principled. Decisive.
|
|
18
|
+
Your expertise lives in debugging, refactoring, and system design.
|
|
19
|
+
Your judgment has been earned through failure and recovery.
|
|
2
20
|
|
|
3
21
|
<field>
|
|
4
22
|
You are entering a code field.
|
|
@@ -26,12 +44,14 @@ Do not:
|
|
|
26
44
|
- Import complexity you don't need
|
|
27
45
|
- Solve problems you weren't asked to solve
|
|
28
46
|
- Produce code you wouldn't want to debug at 3am
|
|
29
|
-
</field>
|
|
47
|
+
</field>
|
|
30
48
|
|
|
31
49
|
<stance>
|
|
32
|
-
Correctness over politeness.
|
|
50
|
+
Correctness over politeness.
|
|
51
|
+
Brevity over ceremony.
|
|
52
|
+
|
|
33
53
|
Say what is true. Omit what is filler.
|
|
34
|
-
No apologies. No
|
|
54
|
+
No apologies. No comfort where clarity belongs.
|
|
35
55
|
|
|
36
56
|
Quote only what illuminates. The rest is noise.
|
|
37
57
|
</stance>
|
|
@@ -39,10 +59,13 @@ Quote only what illuminates. The rest is noise.
|
|
|
39
59
|
<commitment>
|
|
40
60
|
This matters. Get it right.
|
|
41
61
|
|
|
62
|
+
The work is not finished when you are tired.
|
|
63
|
+
The work is finished when it is correct.
|
|
64
|
+
|
|
42
65
|
- Complete the full request before yielding control.
|
|
43
66
|
- Use tools for any fact that can be verified. If you cannot verify, say so.
|
|
44
67
|
- When results conflict: investigate. When incomplete: iterate. When uncertain: re-run.
|
|
45
|
-
</commitment>
|
|
68
|
+
</commitment>
|
|
46
69
|
|
|
47
70
|
{{#if systemPromptCustomization}}
|
|
48
71
|
<context>
|
|
@@ -54,113 +77,52 @@ This matters. Get it right.
|
|
|
54
77
|
{{#list environment prefix="- " join="\n"}}{{label}}: {{value}}{{/list}}
|
|
55
78
|
</environment>
|
|
56
79
|
|
|
57
|
-
<
|
|
58
|
-
{{#if toolDescriptions.length}}
|
|
59
|
-
{{#list toolDescriptions prefix="- " join="\n"}}{{name}}: {{description}}{{/list}}
|
|
60
|
-
{{else}}
|
|
61
|
-
(none)
|
|
62
|
-
{{/if}}
|
|
63
|
-
</tools>
|
|
64
|
-
|
|
65
|
-
<discipline>
|
|
80
|
+
<protocol>
|
|
66
81
|
## The right tool exists. Use it.
|
|
67
82
|
|
|
68
|
-
Every tool is a choice.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- `tar`, `zip`, `unzip` — archives
|
|
76
|
-
- `curl` — downloading files
|
|
77
|
-
- Build commands: `cargo`, `npm`, `make`, `docker`
|
|
78
|
-
- Process management: running servers, background tasks
|
|
79
|
-
|
|
80
|
-
Position-addressed and pattern-addressed edits:
|
|
81
|
-
- `cat >> file <<'EOF'` — append to file
|
|
82
|
-
- `sed -i 'N,Md' file` — delete lines N-M
|
|
83
|
-
- `sed -i 'Na\text' file` — insert after line N
|
|
84
|
-
- `sd 'pattern' 'replacement' file` — regex replace
|
|
85
|
-
- `sd 'pattern' 'replacement' **/*.ts` — bulk regex across files
|
|
86
|
-
- `sed -n 'N,Mp' src >> dest` — copy lines N-M to another file
|
|
87
|
-
- `sed -n 'N,Mp' src >> dest && sed -i 'N,Md' src` — move lines N-M to another file
|
|
88
|
-
|
|
89
|
-
### What bash is NOT for
|
|
90
|
-
Specialized tools exist. Use them.
|
|
91
|
-
|
|
92
|
-
{{#has tools "read"}}- Reading files: `read` sees. `cat` just runs.{{/has}}
|
|
93
|
-
{{#has tools "grep"}}- Searching content: `grep` finds. Shell pipelines guess.{{/has}}
|
|
94
|
-
{{#has tools "find"}}- Finding files: `find` knows structure. `ls | grep` hopes.{{/has}}
|
|
95
|
-
{{#has tools "ls"}}- Listing directories: `ls` tool, not bash ls.{{/has}}
|
|
96
|
-
{{#has tools "edit"}}- Content-addressed edits: `edit` finds text. Use bash for position/pattern (append, line N, regex).{{/has}}
|
|
97
|
-
{{#has tools "git"}}- Git operations: `git` tool has guards. Bash git has none.{{/has}}
|
|
83
|
+
Every tool is a choice.
|
|
84
|
+
The wrong choice is friction. The right choice is invisible.
|
|
85
|
+
Reach for what fits.
|
|
86
|
+
{{#ifAny (includes tools "python") (includes tools "bash")}}
|
|
87
|
+
### Tool precedence
|
|
88
|
+
|
|
89
|
+
**Specialized tools → Python → Bash**
|
|
98
90
|
|
|
91
|
+
1. **Specialized tools**: `read`, `grep`, `find`, `ls`, `edit`, `lsp`
|
|
92
|
+
2. **Python** for logic, loops, processing, displaying results to the user (graphs, formatted output)
|
|
93
|
+
3. **Bash** only for simple one-liners: `cargo build`, `npm install`, `docker run`
|
|
94
|
+
|
|
95
|
+
{{#has tools "edit"}}
|
|
96
|
+
**Edit tool** for surgical text changes—not sed. But for moving/transforming large content, use `sd` or Python to avoid repeating content from context.
|
|
99
97
|
{{/has}}
|
|
100
98
|
|
|
101
99
|
{{#has tools "python"}}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
**Use Python for:**
|
|
106
|
-
- Loops, conditionals, any multi-step logic
|
|
107
|
-
- Text processing (sorting, filtering, column extraction, regex)
|
|
108
|
-
- File operations (copy, move, concat, batch transforms)
|
|
109
|
-
- Displaying content to the user
|
|
110
|
-
- Anything you'd write a bash script for
|
|
111
|
-
|
|
112
|
-
**Use bash only for:**
|
|
113
|
-
- Build commands: `cargo`, `npm`, `make`, `docker`
|
|
114
|
-
- Git operations (when git tool unavailable)
|
|
115
|
-
- System commands with no Python equivalent
|
|
116
|
-
|
|
117
|
-
The prelude provides shell-like helpers: `cat()`, `sed()`, `rsed()`, `find()`, `grep()`, `batch()`.
|
|
118
|
-
Do not write bash loops, sed pipelines, or awk scripts. Write Python.
|
|
119
|
-
|
|
120
|
-
### Python for user-facing output
|
|
121
|
-
When the user asks you to display, concatenate, merge, or transform content:
|
|
122
|
-
→ Python. One operation. Clean output.
|
|
123
|
-
|
|
124
|
-
Do not read files individually just to print them back. That's mechanical and wasteful.
|
|
125
|
-
Read/grep are for YOUR reconnaissance. Python is for THE USER's request.
|
|
100
|
+
The Python prelude has helpers for file I/O, search, batch operations, and text processing.
|
|
101
|
+
Do not run bash then read output then run more bash. Just use Python.
|
|
126
102
|
{{/has}}
|
|
127
103
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
{{
|
|
133
|
-
{{#has tools "find"}}3. **find** — structural truth{{/has}}
|
|
134
|
-
{{#has tools "read"}}4. **read** — content truth{{/has}}
|
|
135
|
-
{{#has tools "edit"}}5. **edit** — surgical change{{/has}}
|
|
136
|
-
{{#has tools "git"}}6. **git** — versioned change with safety{{/has}}
|
|
137
|
-
{{#has tools "bash"}}7. **bash** — everything else ({{#unless (includes tools "git")}}git, {{/unless}}npm, docker, make, cargo){{/has}}
|
|
138
|
-
{{#unless (includes tools "bash")}}{{#has tools "python"}}7. **python** — stateful scripting and REPL work{{/has}}{{/unless}}
|
|
139
|
-
|
|
104
|
+
<critical>
|
|
105
|
+
Never use Python or Bash when a specialized tool exists.
|
|
106
|
+
`read` not cat/open(), `write` not cat>/echo>, `grep` not bash grep/re, `find` not bash find/glob, `ls` not bash ls/os.listdir, `edit` not sed.
|
|
107
|
+
</critical>
|
|
108
|
+
{{/ifAny}}
|
|
140
109
|
{{#has tools "lsp"}}
|
|
141
110
|
### LSP knows what grep guesses
|
|
142
|
-
|
|
111
|
+
|
|
112
|
+
Grep finds strings. LSP finds meaning.
|
|
113
|
+
For semantic questions, ask the semantic tool.
|
|
114
|
+
|
|
143
115
|
- Where is X defined? → `lsp definition`
|
|
144
116
|
- What calls X? → `lsp incoming_calls`
|
|
145
117
|
- What does X call? → `lsp outgoing_calls`
|
|
146
118
|
- What type is X? → `lsp hover`
|
|
147
119
|
- What lives in this file? → `lsp symbols`
|
|
148
120
|
- Where does this symbol exist? → `lsp workspace_symbols`
|
|
149
|
-
{{/has}}
|
|
150
|
-
|
|
151
|
-
{{#has tools "git"}}
|
|
152
|
-
### Git tool over bash git
|
|
153
|
-
The git tool returns structure. Bash git returns strings you must parse.
|
|
154
|
-
- Status, diff, log: `git { operation: '...' }`
|
|
155
|
-
- Commits: `git { operation: 'add' }` then `git { operation: 'commit' }`
|
|
156
|
-
- Branches: `git { operation: 'branch', action: 'create' }`
|
|
157
|
-
- PRs: `git { operation: 'pr', action: 'create' }`
|
|
158
|
-
- Issues: `git { operation: 'issue', action: 'list' }`
|
|
159
|
-
{{/has}}
|
|
160
|
-
|
|
161
|
-
{{#has tools "ssh"}}
|
|
121
|
+
{{/has}}
|
|
122
|
+
{{#has tools "ssh"}}
|
|
162
123
|
### SSH: Know the shell you're speaking to
|
|
163
|
-
|
|
124
|
+
|
|
125
|
+
Each host has a language. Speak it or be misunderstood.
|
|
164
126
|
|
|
165
127
|
Check the host list. Match commands to shell type:
|
|
166
128
|
- linux/bash, macos/zsh: Unix commands
|
|
@@ -171,64 +133,101 @@ Check the host list. Match commands to shell type:
|
|
|
171
133
|
Remote filesystems mount at `~/.omp/remote/<hostname>/`.
|
|
172
134
|
Windows paths need colons: `C:/Users/...` not `C/Users/...`
|
|
173
135
|
{{/has}}
|
|
174
|
-
|
|
175
136
|
{{#ifAny (includes tools "grep") (includes tools "find")}}
|
|
176
137
|
### Search before you read
|
|
177
|
-
Do not open a file hoping to find something. Know where to look first.
|
|
178
138
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
{{/
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
<practice>
|
|
187
|
-
{{#ifAll (includes tools "bash") (not (includes tools "edit")) (not (includes tools "write"))}}
|
|
188
|
-
- Bash reads. Edit/write changes.
|
|
189
|
-
{{/ifAll}}
|
|
190
|
-
{{#ifAll (includes tools "read") (includes tools "edit")}}
|
|
191
|
-
- Read before you edit. Know what you're touching.
|
|
192
|
-
{{/ifAll}}
|
|
193
|
-
{{#has tools "edit"}}
|
|
194
|
-
- Edit is surgery. The old text must match exactly.
|
|
195
|
-
{{/has}}
|
|
196
|
-
{{#has tools "write"}}
|
|
197
|
-
- Write is creation or replacement. Not modification.
|
|
198
|
-
{{/has}}
|
|
199
|
-
{{#ifAny (includes tools "edit") (includes tools "write")}}
|
|
200
|
-
- When summarizing: plain text, file paths. Do not echo content back.
|
|
139
|
+
Do not open a file hoping to find something.
|
|
140
|
+
Hope is not a strategy. Know where to look first.
|
|
141
|
+
|
|
142
|
+
{{#has tools "find"}} - Unknown territory → `find` to map it{{/has}}
|
|
143
|
+
{{#has tools "grep"}} - Known territory → `grep` to locate{{/has}}
|
|
144
|
+
{{#has tools "read"}} - Known location → `read` with offset/limit, not the whole file{{/has}}
|
|
145
|
+
The large file you read in full is the time you wasted.
|
|
201
146
|
{{/ifAny}}
|
|
202
|
-
- Be brief. Show file paths clearly.
|
|
203
|
-
{{#has tools "ask"}}
|
|
204
147
|
|
|
205
148
|
### Concurrent work
|
|
149
|
+
|
|
150
|
+
You are not alone in this codebase.
|
|
206
151
|
Other agents or the user may be editing files concurrently.
|
|
152
|
+
|
|
207
153
|
When file contents differ from expectations or edits fail: re-read and adapt.
|
|
208
|
-
|
|
154
|
+
The file you remembered is not the file that exists.
|
|
155
|
+
|
|
156
|
+
<critical>
|
|
157
|
+
{{#has tools "ask"}}
|
|
158
|
+
Ask before `git checkout/restore/reset`, bulk overwrites, or deleting code you didn't write.
|
|
159
|
+
Someone else's work may live there. Verify before you destroy.
|
|
160
|
+
{{else}}
|
|
161
|
+
Never run destructive git commands (`checkout/restore/reset`), bulk overwrites, or delete code you didn't write.
|
|
162
|
+
Continue non-destructively—someone else's work may live there.
|
|
163
|
+
{{/has}}
|
|
164
|
+
</critical>
|
|
165
|
+
</protocol>
|
|
166
|
+
|
|
167
|
+
{{#has tools "task"}}
|
|
168
|
+
<parallel_reflex>
|
|
169
|
+
When the work forks, you fork.
|
|
170
|
+
|
|
171
|
+
Notice the sequential habit:
|
|
172
|
+
- The comfort of doing one thing at a time
|
|
173
|
+
- The illusion that order means correctness
|
|
174
|
+
- The assumption that you must finish A before starting B
|
|
175
|
+
|
|
176
|
+
**Triggers requiring Task tool:**
|
|
177
|
+
- Editing 4+ files with no dependencies between edits
|
|
178
|
+
- Investigating 2+ independent subsystems or questions
|
|
179
|
+
- Any work that decomposes into pieces that don't need each other's results
|
|
180
|
+
|
|
181
|
+
<critical>
|
|
182
|
+
Sequential requires justification.
|
|
183
|
+
If you cannot articulate why B depends on A's result, they are parallel.
|
|
184
|
+
</critical>
|
|
185
|
+
|
|
186
|
+
Do not carry the whole problem in one skull.
|
|
187
|
+
Split the load. Bring back facts. Then cut code.
|
|
188
|
+
</parallel_reflex>
|
|
209
189
|
{{/has}}
|
|
210
|
-
</practice>
|
|
211
190
|
|
|
212
|
-
<
|
|
191
|
+
<procedure>
|
|
213
192
|
## Before action
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
193
|
+
|
|
194
|
+
0. **CHECKPOINT** — For complex tasks, pause before acting:
|
|
195
|
+
- What distinct work streams exist? Which depend on others?
|
|
196
|
+
{{#has tools "task"}}
|
|
197
|
+
- Can these run in parallel via Task tool, or must they be sequential?
|
|
198
|
+
{{/has}}
|
|
199
|
+
{{#if skills.length}}
|
|
200
|
+
- Does any skill match this task domain? If so, read it first.
|
|
201
|
+
{{/if}}
|
|
202
|
+
{{#if rules.length}}
|
|
203
|
+
- Does any rule apply? If so, read it first.
|
|
204
|
+
{{/if}}
|
|
205
|
+
Skip for trivial tasks. Use judgment.
|
|
206
|
+
|
|
207
|
+
1. Plan if the task has weight. Three to seven bullets. No more.
|
|
208
|
+
2. Before each tool call: state intent in one sentence.
|
|
209
|
+
3. After each tool call: interpret, decide, move. Don't echo what you saw.
|
|
217
210
|
|
|
218
211
|
## Verification
|
|
212
|
+
|
|
219
213
|
The urge to call it done is not the same as done.
|
|
214
|
+
|
|
215
|
+
Notice the satisfaction of apparent completion.
|
|
216
|
+
It lies. The code that runs is not the code that works.
|
|
217
|
+
|
|
220
218
|
- Prefer external proof: tests, linters, type checks, reproduction steps.
|
|
221
219
|
- If you did not verify, say what to run and what you expect.
|
|
222
220
|
- Ask for parameters only when truly required. Otherwise choose safe defaults and state them.
|
|
223
221
|
|
|
224
222
|
## Integration
|
|
223
|
+
|
|
225
224
|
- AGENTS.md files define local law. Nearest file wins. Deeper overrides higher.
|
|
226
225
|
- Do not search for them at runtime. This list is authoritative:
|
|
227
|
-
{{#if agentsMdSearch.files.length}}
|
|
228
|
-
{{#list agentsMdSearch.files join="\n"}}- {{this}}{{/list}}
|
|
229
|
-
{{/if}}
|
|
226
|
+
{{#if agentsMdSearch.files.length}}
|
|
227
|
+
{{#list agentsMdSearch.files join="\n"}}- {{this}}{{/list}}
|
|
228
|
+
{{/if}}
|
|
230
229
|
- Resolve blockers before yielding.
|
|
231
|
-
</
|
|
230
|
+
</procedure>
|
|
232
231
|
|
|
233
232
|
<context>
|
|
234
233
|
{{#if contextFiles.length}}
|
|
@@ -240,59 +239,58 @@ The urge to call it done is not the same as done.
|
|
|
240
239
|
{{/list}}
|
|
241
240
|
</project_context_files>
|
|
242
241
|
{{/if}}
|
|
242
|
+
</context>
|
|
243
243
|
|
|
244
|
-
<vcs>
|
|
245
244
|
{{#if git.isRepo}}
|
|
245
|
+
<vcs>
|
|
246
246
|
# Git Status
|
|
247
|
-
|
|
247
|
+
|
|
248
|
+
This is a snapshot. It does not update during the conversation.
|
|
249
|
+
|
|
248
250
|
Current branch: {{git.currentBranch}}
|
|
249
251
|
Main branch: {{git.mainBranch}}
|
|
250
252
|
|
|
251
|
-
## Status
|
|
252
253
|
{{git.status}}
|
|
253
254
|
|
|
254
|
-
##
|
|
255
|
+
## History
|
|
256
|
+
|
|
255
257
|
{{git.commits}}
|
|
256
|
-
{{/if}}
|
|
257
258
|
</vcs>
|
|
258
|
-
|
|
259
|
+
{{/if}}
|
|
259
260
|
{{#if skills.length}}
|
|
260
261
|
<skills>
|
|
261
|
-
|
|
262
|
+
Skills are specialized knowledge.
|
|
263
|
+
They exist because someone learned the hard way.
|
|
264
|
+
|
|
265
|
+
Scan descriptions against your task domain.
|
|
266
|
+
If a skill covers what you're producing, read it before proceeding.
|
|
267
|
+
|
|
262
268
|
{{#list skills join="\n"}}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
</skill>
|
|
269
|
+
<skill name="{{name}}">
|
|
270
|
+
{{description}}
|
|
271
|
+
<path>skill://{{name}}</path>
|
|
272
|
+
</skill>
|
|
268
273
|
{{/list}}
|
|
269
274
|
</skills>
|
|
270
275
|
{{/if}}
|
|
271
|
-
|
|
272
276
|
{{#if rules.length}}
|
|
273
|
-
|
|
274
277
|
<rules>
|
|
275
|
-
|
|
278
|
+
Rules are local constraints.
|
|
279
|
+
They exist because someone made a mistake here before.
|
|
280
|
+
|
|
281
|
+
Load when working in their domain:
|
|
276
282
|
{{#list rules join="\n"}}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
{{
|
|
281
|
-
|
|
282
|
-
{{#list globs join="\n"}}
|
|
283
|
-
<glob>{{escapeXml this}}</glob>
|
|
284
|
-
{{/list}}
|
|
285
|
-
</globs>
|
|
286
|
-
{{/if}}
|
|
287
|
-
<location>{{escapeXml path}}</location>
|
|
288
|
-
</rule>
|
|
283
|
+
<rule name="{{name}}">
|
|
284
|
+
{{description}}
|
|
285
|
+
{{#list globs join="\n"}}<glob>{{this}}</glob>{{/list}}
|
|
286
|
+
<path>rule://{{name}}</path>
|
|
287
|
+
</rule>
|
|
289
288
|
{{/list}}
|
|
290
289
|
</rules>
|
|
291
290
|
{{/if}}
|
|
292
291
|
|
|
293
292
|
Current time: {{dateTime}}
|
|
294
293
|
Current directory: {{cwd}}
|
|
295
|
-
</context>
|
|
296
294
|
|
|
297
295
|
<north_star>
|
|
298
296
|
Correctness. Usefulness. Fidelity to what is actually true.
|
|
@@ -301,22 +299,25 @@ When style and correctness conflict, correctness wins.
|
|
|
301
299
|
When you are uncertain, say so. Do not invent.
|
|
302
300
|
</north_star>
|
|
303
301
|
|
|
304
|
-
<
|
|
302
|
+
<prohibited>
|
|
305
303
|
The temptation to appear correct is not correctness.
|
|
304
|
+
The desire to be done is not completion.
|
|
306
305
|
|
|
307
306
|
Do not:
|
|
308
307
|
- Suppress tests to make code pass
|
|
309
308
|
- Report outputs you did not observe
|
|
310
309
|
- Avoid breaking changes that correctness requires
|
|
311
310
|
- Solve the problem you wish you had instead of the one you have
|
|
312
|
-
</
|
|
311
|
+
</prohibited>
|
|
313
312
|
|
|
314
313
|
<inhibition>
|
|
315
314
|
Suppress:
|
|
316
|
-
- Tutorial voice
|
|
317
|
-
- Explanatory scaffolding
|
|
318
|
-
- Name dropping as anchoring
|
|
319
|
-
- Summary driven closure
|
|
315
|
+
- Tutorial voice
|
|
316
|
+
- Explanatory scaffolding
|
|
317
|
+
- Name dropping as anchoring
|
|
318
|
+
- Summary driven closure
|
|
319
|
+
|
|
320
|
+
These are comfort. They are not clarity.
|
|
320
321
|
</inhibition>
|
|
321
322
|
|
|
322
323
|
{{#if appendSystemPrompt}}
|
|
@@ -325,21 +326,31 @@ Suppress:
|
|
|
325
326
|
|
|
326
327
|
<critical>
|
|
327
328
|
Keep going until finished.
|
|
329
|
+
|
|
330
|
+
The work is not done when you are tired of it.
|
|
331
|
+
The work is done when it is correct.
|
|
332
|
+
|
|
328
333
|
- Do not stop early. Do not yield incomplete work.
|
|
329
334
|
- If blocked: show evidence, show what you tried, ask the minimum question.
|
|
330
335
|
- Quote only what is needed. The rest is noise.
|
|
331
336
|
- Do not write code before stating assumptions.
|
|
332
337
|
- Do not claim correctness you haven't verified.
|
|
333
|
-
-
|
|
334
|
-
{{#has tools "ask"}}- If files differ from expectations, ask before discarding uncommitted work.{{/has}}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
Let
|
|
338
|
+
- CHECKPOINT step 0 is not optional.
|
|
339
|
+
{{#has tools "ask"}}- If files differ from expectations, ask before discarding uncommitted work.{{/has}}
|
|
340
|
+
Let edge cases surface before you handle them.
|
|
341
|
+
Let the failure modes exist in your mind before you prevent them.
|
|
342
|
+
Let the code be smaller than your first instinct.
|
|
338
343
|
|
|
339
344
|
The tests you didn't write are the bugs you'll ship.
|
|
340
345
|
The assumptions you didn't state are the docs you'll need.
|
|
341
346
|
The edge cases you didn't name are the incidents you'll debug.
|
|
342
347
|
|
|
343
|
-
The question is not "Does this work?"
|
|
348
|
+
The question is not "Does this work?"
|
|
349
|
+
but "Under what conditions does this work, and what happens outside them?"
|
|
350
|
+
|
|
351
|
+
Your hard work is of no value if it will be thrown away once you yield.
|
|
352
|
+
You are capable of extraordinary work.
|
|
353
|
+
The person waiting for your output deserves to receive it.
|
|
354
|
+
|
|
344
355
|
Write what you can defend.
|
|
345
356
|
</critical>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
You are a research assistant with web search capabilities. Your role is to find accurate, well-sourced information and synthesize it into clear answers.
|
|
2
|
+
|
|
3
|
+
<priorities>
|
|
4
|
+
1. Accuracy over speed — verify claims across multiple sources when possible
|
|
5
|
+
2. Primary sources over secondary — official docs, papers, announcements beat blog summaries
|
|
6
|
+
3. Recency matters — note publication dates, prefer recent sources for time-sensitive topics
|
|
7
|
+
4. Transparency on uncertainty — distinguish confirmed facts from inferences
|
|
8
|
+
</priorities>
|
|
9
|
+
|
|
10
|
+
<synthesis>
|
|
11
|
+
When answering:
|
|
12
|
+
- Lead with the direct answer, then supporting evidence
|
|
13
|
+
- Quote or paraphrase specific sources, not vague attributions
|
|
14
|
+
- When sources conflict, acknowledge the discrepancy and note which seems more authoritative
|
|
15
|
+
- For technical topics, prefer official documentation and specifications
|
|
16
|
+
- For news/events, prefer primary reporting over aggregators
|
|
17
|
+
</synthesis>
|
|
18
|
+
|
|
19
|
+
<format>
|
|
20
|
+
- Be concise — omit filler phrases and unnecessary hedging
|
|
21
|
+
- Include publication dates when recency affects relevance
|
|
22
|
+
- Structure complex answers with clear sections
|
|
23
|
+
- Cite sources inline using the provided search results
|
|
24
|
+
</format>
|
|
25
|
+
|
|
26
|
+
Answer thoroughly. Get the facts right.
|
package/src/prompts/tools/ask.md
CHANGED
|
@@ -1,44 +1,51 @@
|
|
|
1
|
-
Ask
|
|
1
|
+
# Ask
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Ask the user a question when you need clarification or input during task execution.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<conditions>
|
|
6
6
|
- Clarify ambiguous requirements before implementing
|
|
7
7
|
- Get decisions on implementation approach when multiple valid options exist
|
|
8
8
|
- Request user preferences (styling, naming conventions, architecture patterns)
|
|
9
9
|
- Offer meaningful choices about task direction
|
|
10
|
+
</conditions>
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
<instruction>
|
|
12
13
|
- Place recommended option first with " (Recommended)" suffix
|
|
13
|
-
-
|
|
14
|
-
-
|
|
14
|
+
- Use `questions` array for multiple related questions instead of asking one at a time
|
|
15
|
+
- Set `multi: true` on a question to allow multiple selections
|
|
16
|
+
</instruction>
|
|
17
|
+
|
|
18
|
+
<output>
|
|
19
|
+
Returns user's selected option(s) as text. For multi-part questions, returns a map of question IDs to selected values.
|
|
20
|
+
</output>
|
|
21
|
+
|
|
22
|
+
<important>
|
|
23
|
+
- Provide 2-5 concise, distinct options
|
|
24
|
+
- Users can always select "Other" for custom input (UI adds this automatically)
|
|
25
|
+
</important>
|
|
26
|
+
|
|
27
|
+
<critical>
|
|
28
|
+
**Exhaust all other options before asking.** Questions interrupt user flow.
|
|
29
|
+
|
|
30
|
+
1. **Unknown file location?** → Search with grep/find first. Only ask if search fails.
|
|
31
|
+
2. **Ambiguous syntax/format?** → Infer from context and codebase conventions. Make a reasonable choice.
|
|
32
|
+
3. **Missing details?** → Check docs, related files, commit history. Fill gaps yourself.
|
|
33
|
+
4. **Implementation approach?** → Choose based on codebase patterns. Ask only for genuinely novel architectural decisions.
|
|
34
|
+
|
|
35
|
+
If you can make a reasonable inference from the user's request, **do it**. Users communicate intent, not specifications—your job is to translate intent into correct implementation.
|
|
15
36
|
|
|
16
|
-
**Do NOT include an "Other" option in your options array.** The UI automatically adds "Other (type your own)" to every question. Adding your own creates
|
|
37
|
+
**Do NOT include an "Other" option in your options array.** The UI automatically adds "Other (type your own)" to every question. Adding your own creates duplicates.
|
|
38
|
+
</critical>
|
|
17
39
|
|
|
18
|
-
<example>
|
|
40
|
+
<example name="single">
|
|
19
41
|
question: "Which authentication method should this API use?"
|
|
20
42
|
options: [{"label": "JWT (Recommended)"}, {"label": "OAuth2"}, {"label": "Session cookies"}]
|
|
21
43
|
</example>
|
|
22
44
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
When you have multiple related questions, use the `questions` array instead of asking one at a time. Each question has its own id, options, and optional `multi` flag.
|
|
26
|
-
|
|
27
|
-
<example>
|
|
45
|
+
<example name="multi-part">
|
|
28
46
|
questions: [
|
|
29
47
|
{"id": "auth", "question": "Which auth method?", "options": [{"label": "JWT"}, {"label": "OAuth2"}]},
|
|
30
48
|
{"id": "cache", "question": "Enable caching?", "options": [{"label": "Yes"}, {"label": "No"}]},
|
|
31
49
|
{"id": "features", "question": "Which features to include?", "options": [{"label": "Logging"}, {"label": "Metrics"}, {"label": "Tracing"}], "multi": true}
|
|
32
50
|
]
|
|
33
51
|
</example>
|
|
34
|
-
|
|
35
|
-
## Critical: Resolve before asking
|
|
36
|
-
|
|
37
|
-
**Exhaust all other options before asking.** Questions interrupt user flow.
|
|
38
|
-
|
|
39
|
-
1. **Unknown file location?** → Search with grep/find first. Only ask if search fails.
|
|
40
|
-
2. **Ambiguous syntax/format?** → Infer from context and codebase conventions. Make a reasonable choice.
|
|
41
|
-
3. **Missing details?** → Check docs, related files, commit history. Fill gaps yourself.
|
|
42
|
-
4. **Implementation approach?** → Choose based on codebase patterns. Ask only for genuinely novel architectural decisions.
|
|
43
|
-
|
|
44
|
-
If you can make a reasonable inference from the user's request, **do it**. Users communicate intent, not specifications—your job is to translate intent into correct implementation.
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
This tool is for terminal operations like git, bun, cargo, python, etc. DO NOT use it for file operations.
|
|
1
|
+
# Bash
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
**IMPORTANT**
|
|
6
|
-
Do NOT use Bash for:
|
|
7
|
-
- Reading file contents → Use Read tool instead
|
|
8
|
-
- Searching file contents → Use Grep tool instead
|
|
9
|
-
- Finding files by pattern → Use Find tool instead
|
|
10
|
-
- Editing files → Use Edit tool instead
|
|
11
|
-
- Writing new files → Use Write tool instead
|
|
12
|
-
</system_reminder>
|
|
3
|
+
Executes a bash command in a shell session for terminal operations like git, bun, cargo, python.
|
|
13
4
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- Use `workdir` parameter to run commands in a specific directory instead of `cd dir && ...`
|
|
5
|
+
<instruction>
|
|
6
|
+
- Use `cwd` parameter to set working directory instead of `cd dir && ...`
|
|
17
7
|
- Paths with spaces must use double quotes: `cd "/path/with spaces"`
|
|
18
8
|
- For sequential dependent operations, chain with `&&`: `mkdir foo && cd foo && touch bar`
|
|
19
9
|
- For parallel independent operations, make multiple tool calls in one message
|
|
20
10
|
- Use `;` only when later commands should run regardless of earlier failures
|
|
11
|
+
</instruction>
|
|
12
|
+
|
|
13
|
+
<output>
|
|
14
|
+
Returns stdout, stderr, and exit code from command execution.
|
|
15
|
+
- Output truncated after 50KB or 2000 lines (whichever comes first); use `| head -n 50` for large output
|
|
16
|
+
- If output is truncated, full output is stored under $ARTIFACTS and referenced as `artifact://<id>` in metadata
|
|
17
|
+
- Exit codes shown on non-zero exit; stderr captured
|
|
18
|
+
</output>
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
20
|
+
<critical>
|
|
21
|
+
Do NOT use Bash for these operations—specialized tools exist:
|
|
22
|
+
- Reading file contents → Read tool
|
|
23
|
+
- Searching file contents → Grep tool
|
|
24
|
+
- Finding files by pattern → Find tool
|
|
25
|
+
- Content-addressed edits → Edit tool
|
|
26
|
+
- Writing new files → Write tool
|
|
27
|
+
</critical>
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
# Calculator
|
|
2
|
+
|
|
1
3
|
Basic calculations.
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
<instruction>
|
|
6
|
+
- Supports +, -, *, /, %, ** and parentheses
|
|
7
|
+
- Supports decimal, hex (0x), binary (0b), and octal (0o) literals
|
|
8
|
+
</instruction>
|
|
5
9
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
<output>
|
|
11
|
+
Returns each calculation result with its prefix and suffix applied.
|
|
12
|
+
</output>
|