@sleepy-ai/cli 0.1.14 → 0.1.16
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/.sleepycode-test-fixtures-50158/sleepycode-test-eqsxv84ythu/.watcher-b67v64k2mnv +1 -0
- package/.sleepycode-test-fixtures-66172/sleepycode-test-x1ymo4kksaa/sleepycode.json +1 -0
- package/Dockerfile +18 -0
- package/README.md +6 -139
- package/drizzle.config.ts +10 -0
- package/git +0 -0
- package/migration/20260127222353_familiar_lady_ursula/migration.sql +90 -0
- package/migration/20260127222353_familiar_lady_ursula/snapshot.json +796 -0
- package/migration/20260211171708_add_project_commands/migration.sql +1 -0
- package/migration/20260211171708_add_project_commands/snapshot.json +806 -0
- package/migration/20260213144116_wakeful_the_professor/migration.sql +11 -0
- package/migration/20260213144116_wakeful_the_professor/snapshot.json +897 -0
- package/migration/20260225215848_workspace/migration.sql +7 -0
- package/migration/20260225215848_workspace/snapshot.json +959 -0
- package/migration/20260227213759_add_session_workspace_id/migration.sql +2 -0
- package/migration/20260227213759_add_session_workspace_id/snapshot.json +983 -0
- package/migration/20260228203230_blue_harpoon/migration.sql +17 -0
- package/migration/20260228203230_blue_harpoon/snapshot.json +1102 -0
- package/migration/20260303231226_add_workspace_fields/migration.sql +5 -0
- package/migration/20260303231226_add_workspace_fields/snapshot.json +1013 -0
- package/migration/20260309230000_move_org_to_state/migration.sql +3 -0
- package/migration/20260309230000_move_org_to_state/snapshot.json +1156 -0
- package/migration/20260312043431_session_message_cursor/migration.sql +4 -0
- package/migration/20260312043431_session_message_cursor/snapshot.json +1168 -0
- package/migration/20260323234822_events/migration.sql +13 -0
- package/migration/20260323234822_events/snapshot.json +1271 -0
- package/migration/20260410174513_workspace-name/migration.sql +16 -0
- package/migration/20260410174513_workspace-name/snapshot.json +1271 -0
- package/migration/20260413175956_chief_energizer/migration.sql +13 -0
- package/migration/20260413175956_chief_energizer/snapshot.json +1399 -0
- package/migration/20260422160000_context_inheritance/migration.sql +3 -0
- package/migration/20260422170000_task_registry/migration.sql +18 -0
- package/migration/20260423145421_remove_session_entry/migration.sql +4 -0
- package/migration/20260515000000_actor_rename/migration.sql +7 -0
- package/migration/20260515010000_memory_fts/migration.sql +33 -0
- package/migration/20260515020000_user_task/migration.sql +29 -0
- package/migration/20260519000000_last_checkpoint_message_id/migration.sql +1 -0
- package/migration/20260521000000_message_agent_id/migration.sql +2 -0
- package/migration/20260521000100_actor_registry_v6/migration.sql +25 -0
- package/migration/20260521010000_memory_fts_v6/migration.sql +33 -0
- package/migration/20260521020000_memory_fts_triggers/migration.sql +17 -0
- package/migration/20260526000000_agent_id_main/migration.sql +14 -0
- package/migration/20260527000000_actor_lifecycle/migration.sql +8 -0
- package/migration/20260527000100_inbox/migration.sql +12 -0
- package/migration/20260529000000_task_todo_redesign/migration.sql +16 -0
- package/migration/20260603000000_task_in_progress_owner/migration.sql +1 -0
- package/migration/20260603000000_workflow_run/migration.sql +17 -0
- package/migration/20260604000000_workflow_script_sha/migration.sql +1 -0
- package/migration/20260608000000_claude_import/migration.sql +7 -0
- package/migration/20260608010000_claude_import_message_ids/migration.sql +1 -0
- package/migration/20260609000000_history_fts/migration.sql +29 -0
- package/migration/20260609230000_workflow_agent_timeout/migration.sql +1 -0
- package/migration/20260612000000_external_import/migration.sql +16 -0
- package/package.json +199 -19
- package/parsers-config.ts +290 -0
- package/src/account/account.sql.ts +39 -0
- package/src/account/account.ts +456 -0
- package/src/account/repo.ts +166 -0
- package/src/account/schema.ts +99 -0
- package/src/account/url.ts +8 -0
- package/src/acp/README.md +174 -0
- package/src/acp/agent.ts +1787 -0
- package/src/acp/session.ts +116 -0
- package/src/acp/types.ts +24 -0
- package/src/actor/actor.sql.ts +38 -0
- package/src/actor/events.ts +67 -0
- package/src/actor/index.ts +2 -0
- package/src/actor/registry.ts +412 -0
- package/src/actor/return-header.ts +24 -0
- package/src/actor/schema.ts +47 -0
- package/src/actor/spawn-ref.ts +16 -0
- package/src/actor/spawn.ts +756 -0
- package/src/actor/turn.ts +49 -0
- package/src/actor/waiter.ts +166 -0
- package/src/agent/agent.ts +645 -0
- package/src/agent/config.ts +5 -0
- package/src/agent/generate.txt +75 -0
- package/src/agent/prompt/apex.txt +363 -0
- package/src/agent/prompt/checkpoint-writer.txt +167 -0
- package/src/agent/prompt/compaction.txt +9 -0
- package/src/agent/prompt/distill.txt +199 -0
- package/src/agent/prompt/dream.txt +155 -0
- package/src/agent/prompt/explore.txt +18 -0
- package/src/agent/prompt/forge.txt +491 -0
- package/src/agent/prompt/phantom.txt +491 -0
- package/src/agent/prompt/pivot.txt +460 -0
- package/src/agent/prompt/stack.txt +472 -0
- package/src/agent/prompt/summary.txt +11 -0
- package/src/agent/prompt/title.txt +44 -0
- package/src/audio.d.ts +9 -0
- package/src/auth/index.ts +97 -0
- package/src/bus/bus-event.ts +33 -0
- package/src/bus/global.ts +12 -0
- package/src/bus/index.ts +193 -0
- package/src/cli/bootstrap.ts +33 -0
- package/src/cli/cmd/account.ts +258 -0
- package/src/cli/cmd/acp.ts +70 -0
- package/src/cli/cmd/agent.ts +248 -0
- package/src/cli/cmd/cmd.ts +7 -0
- package/src/cli/cmd/db.ts +120 -0
- package/src/cli/cmd/debug/agent.ts +192 -0
- package/src/cli/cmd/debug/config.ts +17 -0
- package/src/cli/cmd/debug/file.ts +100 -0
- package/src/cli/cmd/debug/index.ts +48 -0
- package/src/cli/cmd/debug/lsp.ts +61 -0
- package/src/cli/cmd/debug/ripgrep.ts +105 -0
- package/src/cli/cmd/debug/scrap.ts +16 -0
- package/src/cli/cmd/debug/skill.ts +23 -0
- package/src/cli/cmd/debug/snapshot.ts +53 -0
- package/src/cli/cmd/doctor.ts +116 -0
- package/src/cli/cmd/export.ts +306 -0
- package/src/cli/cmd/generate.ts +50 -0
- package/src/cli/cmd/github.ts +1647 -0
- package/src/cli/cmd/import.ts +208 -0
- package/src/cli/cmd/init.ts +97 -0
- package/src/cli/cmd/login.ts +402 -0
- package/src/cli/cmd/mcp.ts +812 -0
- package/src/cli/cmd/models.ts +88 -0
- package/src/cli/cmd/plug.ts +233 -0
- package/src/cli/cmd/pr.ts +138 -0
- package/src/cli/cmd/providers.ts +713 -0
- package/src/cli/cmd/run-completion.ts +77 -0
- package/src/cli/cmd/run.ts +694 -0
- package/src/cli/cmd/serve.ts +30 -0
- package/src/cli/cmd/session.ts +181 -0
- package/src/cli/cmd/stats.ts +413 -0
- package/src/cli/cmd/tui/app.tsx +1161 -0
- package/src/cli/cmd/tui/asset/TEN_VAD_LICENSE +12 -0
- package/src/cli/cmd/tui/asset/charge.wav +0 -0
- package/src/cli/cmd/tui/asset/pulse-a.wav +0 -0
- package/src/cli/cmd/tui/asset/pulse-b.wav +0 -0
- package/src/cli/cmd/tui/asset/pulse-c.wav +0 -0
- package/src/cli/cmd/tui/asset/ten_vad.wasm +0 -0
- package/src/cli/cmd/tui/asset/ten_vad_loader.js +30 -0
- package/src/cli/cmd/tui/attach.ts +84 -0
- package/src/cli/cmd/tui/component/background-image.tsx +150 -0
- package/src/cli/cmd/tui/component/banner-session-expired.tsx +48 -0
- package/src/cli/cmd/tui/component/bg-pulse.tsx +130 -0
- package/src/cli/cmd/tui/component/border.tsx +21 -0
- package/src/cli/cmd/tui/component/dialog-agent.tsx +31 -0
- package/src/cli/cmd/tui/component/dialog-agreement.tsx +111 -0
- package/src/cli/cmd/tui/component/dialog-command.tsx +219 -0
- package/src/cli/cmd/tui/component/dialog-console-org.tsx +103 -0
- package/src/cli/cmd/tui/component/dialog-go-upsell.tsx +150 -0
- package/src/cli/cmd/tui/component/dialog-image-list.tsx +111 -0
- package/src/cli/cmd/tui/component/dialog-logo-design.tsx +37 -0
- package/src/cli/cmd/tui/component/dialog-mcp.tsx +86 -0
- package/src/cli/cmd/tui/component/dialog-model.tsx +299 -0
- package/src/cli/cmd/tui/component/dialog-provider.tsx +449 -0
- package/src/cli/cmd/tui/component/dialog-session-delete-failed.tsx +101 -0
- package/src/cli/cmd/tui/component/dialog-session-list.tsx +269 -0
- package/src/cli/cmd/tui/component/dialog-session-rename.tsx +31 -0
- package/src/cli/cmd/tui/component/dialog-skill.tsx +42 -0
- package/src/cli/cmd/tui/component/dialog-sleepy-login.tsx +167 -0
- package/src/cli/cmd/tui/component/dialog-stash.tsx +87 -0
- package/src/cli/cmd/tui/component/dialog-status.tsx +170 -0
- package/src/cli/cmd/tui/component/dialog-tag.tsx +44 -0
- package/src/cli/cmd/tui/component/dialog-theme-list.tsx +50 -0
- package/src/cli/cmd/tui/component/dialog-token-plan.tsx +77 -0
- package/src/cli/cmd/tui/component/dialog-variant.tsx +39 -0
- package/src/cli/cmd/tui/component/dialog-workflows.tsx +51 -0
- package/src/cli/cmd/tui/component/dialog-workspace-create.tsx +289 -0
- package/src/cli/cmd/tui/component/dialog-workspace-unavailable.tsx +81 -0
- package/src/cli/cmd/tui/component/dialog-worktree.tsx +90 -0
- package/src/cli/cmd/tui/component/error-component.tsx +92 -0
- package/src/cli/cmd/tui/component/logo.tsx +961 -0
- package/src/cli/cmd/tui/component/plugin-route-missing.tsx +14 -0
- package/src/cli/cmd/tui/component/prompt/autocomplete-detect.ts +34 -0
- package/src/cli/cmd/tui/component/prompt/autocomplete.tsx +668 -0
- package/src/cli/cmd/tui/component/prompt/cwd.ts +0 -0
- package/src/cli/cmd/tui/component/prompt/frecency.tsx +90 -0
- package/src/cli/cmd/tui/component/prompt/history.tsx +108 -0
- package/src/cli/cmd/tui/component/prompt/index.tsx +1869 -0
- package/src/cli/cmd/tui/component/prompt/offset.ts +45 -0
- package/src/cli/cmd/tui/component/prompt/part.ts +36 -0
- package/src/cli/cmd/tui/component/prompt/stash.tsx +101 -0
- package/src/cli/cmd/tui/component/spinner.tsx +24 -0
- package/src/cli/cmd/tui/component/starry-background.tsx +305 -0
- package/src/cli/cmd/tui/component/startup-loading.tsx +67 -0
- package/src/cli/cmd/tui/component/task-item.tsx +63 -0
- package/src/cli/cmd/tui/component/textarea-keybindings.ts +73 -0
- package/src/cli/cmd/tui/component/todo-item.tsx +32 -0
- package/src/cli/cmd/tui/component/workflow-tree.tsx +177 -0
- package/src/cli/cmd/tui/config/cwd.ts +5 -0
- package/src/cli/cmd/tui/config/tui-migrate.ts +151 -0
- package/src/cli/cmd/tui/config/tui-schema.ts +38 -0
- package/src/cli/cmd/tui/config/tui.ts +219 -0
- package/src/cli/cmd/tui/context/args.tsx +16 -0
- package/src/cli/cmd/tui/context/directory.ts +15 -0
- package/src/cli/cmd/tui/context/event.ts +45 -0
- package/src/cli/cmd/tui/context/exit.tsx +65 -0
- package/src/cli/cmd/tui/context/helper.tsx +25 -0
- package/src/cli/cmd/tui/context/keybind.tsx +105 -0
- package/src/cli/cmd/tui/context/kv.tsx +86 -0
- package/src/cli/cmd/tui/context/language.tsx +91 -0
- package/src/cli/cmd/tui/context/local.tsx +458 -0
- package/src/cli/cmd/tui/context/plugin-keybinds.ts +41 -0
- package/src/cli/cmd/tui/context/project.tsx +109 -0
- package/src/cli/cmd/tui/context/prompt.tsx +18 -0
- package/src/cli/cmd/tui/context/route.tsx +68 -0
- package/src/cli/cmd/tui/context/sdk.tsx +150 -0
- package/src/cli/cmd/tui/context/sync.tsx +884 -0
- package/src/cli/cmd/tui/context/theme/aura.json +69 -0
- package/src/cli/cmd/tui/context/theme/ayu.json +80 -0
- package/src/cli/cmd/tui/context/theme/carbonfox.json +248 -0
- package/src/cli/cmd/tui/context/theme/catppuccin-frappe.json +230 -0
- package/src/cli/cmd/tui/context/theme/catppuccin-macchiato.json +230 -0
- package/src/cli/cmd/tui/context/theme/catppuccin.json +112 -0
- package/src/cli/cmd/tui/context/theme/cobalt2.json +225 -0
- package/src/cli/cmd/tui/context/theme/cursor.json +249 -0
- package/src/cli/cmd/tui/context/theme/dracula.json +219 -0
- package/src/cli/cmd/tui/context/theme/everforest.json +241 -0
- package/src/cli/cmd/tui/context/theme/flexoki.json +237 -0
- package/src/cli/cmd/tui/context/theme/github.json +233 -0
- package/src/cli/cmd/tui/context/theme/gruvbox.json +242 -0
- package/src/cli/cmd/tui/context/theme/kanagawa.json +77 -0
- package/src/cli/cmd/tui/context/theme/lucent-orng.json +234 -0
- package/src/cli/cmd/tui/context/theme/material.json +235 -0
- package/src/cli/cmd/tui/context/theme/matrix.json +77 -0
- package/src/cli/cmd/tui/context/theme/mercury.json +252 -0
- package/src/cli/cmd/tui/context/theme/monokai.json +221 -0
- package/src/cli/cmd/tui/context/theme/nightowl.json +221 -0
- package/src/cli/cmd/tui/context/theme/nord.json +223 -0
- package/src/cli/cmd/tui/context/theme/one-dark.json +84 -0
- package/src/cli/cmd/tui/context/theme/orng.json +249 -0
- package/src/cli/cmd/tui/context/theme/osaka-jade.json +93 -0
- package/src/cli/cmd/tui/context/theme/palenight.json +222 -0
- package/src/cli/cmd/tui/context/theme/rosepine.json +234 -0
- package/src/cli/cmd/tui/context/theme/sleepycode.json +245 -0
- package/src/cli/cmd/tui/context/theme/solarized.json +223 -0
- package/src/cli/cmd/tui/context/theme/synthwave84.json +226 -0
- package/src/cli/cmd/tui/context/theme/tokyonight.json +243 -0
- package/src/cli/cmd/tui/context/theme/vercel.json +245 -0
- package/src/cli/cmd/tui/context/theme/vesper.json +218 -0
- package/src/cli/cmd/tui/context/theme/zenburn.json +223 -0
- package/src/cli/cmd/tui/context/theme.tsx +1298 -0
- package/src/cli/cmd/tui/context/thinking.ts +48 -0
- package/src/cli/cmd/tui/context/tui-config.tsx +9 -0
- package/src/cli/cmd/tui/event.ts +62 -0
- package/src/cli/cmd/tui/feature-plugins/home/footer.tsx +93 -0
- package/src/cli/cmd/tui/feature-plugins/home/tips-view.tsx +193 -0
- package/src/cli/cmd/tui/feature-plugins/home/tips.tsx +54 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/context.tsx +287 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/cwd.tsx +45 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/files.tsx +62 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/footer.tsx +93 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/goal.tsx +84 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/instructions.tsx +54 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/lsp.tsx +66 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/mascot.tsx +69 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/mcp.tsx +98 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/task.tsx +95 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/todo.tsx +51 -0
- package/src/cli/cmd/tui/feature-plugins/sidebar/tps.ts +31 -0
- package/src/cli/cmd/tui/feature-plugins/system/plugins.tsx +274 -0
- package/src/cli/cmd/tui/i18n/en.ts +454 -0
- package/src/cli/cmd/tui/i18n/es.ts +508 -0
- package/src/cli/cmd/tui/i18n/fr.ts +515 -0
- package/src/cli/cmd/tui/i18n/ja.ts +463 -0
- package/src/cli/cmd/tui/i18n/locales.ts +82 -0
- package/src/cli/cmd/tui/i18n/ru.ts +527 -0
- package/src/cli/cmd/tui/i18n/slash-command.ts +11 -0
- package/src/cli/cmd/tui/i18n/zh.ts +454 -0
- package/src/cli/cmd/tui/i18n/zht.ts +430 -0
- package/src/cli/cmd/tui/layer.ts +6 -0
- package/src/cli/cmd/tui/plugin/api.tsx +402 -0
- package/src/cli/cmd/tui/plugin/index.ts +3 -0
- package/src/cli/cmd/tui/plugin/internal.ts +37 -0
- package/src/cli/cmd/tui/plugin/runtime.ts +1057 -0
- package/src/cli/cmd/tui/plugin/slots.tsx +60 -0
- package/src/cli/cmd/tui/routes/home.tsx +223 -0
- package/src/cli/cmd/tui/routes/session/dialog-fork-from-timeline.tsx +76 -0
- package/src/cli/cmd/tui/routes/session/dialog-message.tsx +116 -0
- package/src/cli/cmd/tui/routes/session/dialog-subagent.tsx +47 -0
- package/src/cli/cmd/tui/routes/session/dialog-timeline.tsx +47 -0
- package/src/cli/cmd/tui/routes/session/footer.tsx +91 -0
- package/src/cli/cmd/tui/routes/session/index.tsx +3068 -0
- package/src/cli/cmd/tui/routes/session/permission.tsx +697 -0
- package/src/cli/cmd/tui/routes/session/question.tsx +488 -0
- package/src/cli/cmd/tui/routes/session/sidebar.tsx +97 -0
- package/src/cli/cmd/tui/routes/session/subagent-footer.tsx +143 -0
- package/src/cli/cmd/tui/thread.ts +324 -0
- package/src/cli/cmd/tui/ui/dialog-alert.tsx +61 -0
- package/src/cli/cmd/tui/ui/dialog-confirm.tsx +95 -0
- package/src/cli/cmd/tui/ui/dialog-export-options.tsx +223 -0
- package/src/cli/cmd/tui/ui/dialog-help.tsx +42 -0
- package/src/cli/cmd/tui/ui/dialog-prompt.tsx +123 -0
- package/src/cli/cmd/tui/ui/dialog-select.tsx +467 -0
- package/src/cli/cmd/tui/ui/dialog.tsx +207 -0
- package/src/cli/cmd/tui/ui/link.tsx +28 -0
- package/src/cli/cmd/tui/ui/spinner.ts +378 -0
- package/src/cli/cmd/tui/ui/toast.tsx +102 -0
- package/src/cli/cmd/tui/util/clipboard.ts +197 -0
- package/src/cli/cmd/tui/util/editor.ts +41 -0
- package/src/cli/cmd/tui/util/image-protocol.ts +35 -0
- package/src/cli/cmd/tui/util/index.ts +6 -0
- package/src/cli/cmd/tui/util/model.ts +23 -0
- package/src/cli/cmd/tui/util/pinyin.ts +20 -0
- package/src/cli/cmd/tui/util/provider-origin.ts +7 -0
- package/src/cli/cmd/tui/util/revert-diff.ts +18 -0
- package/src/cli/cmd/tui/util/scroll.ts +23 -0
- package/src/cli/cmd/tui/util/selection.ts +23 -0
- package/src/cli/cmd/tui/util/signal.ts +41 -0
- package/src/cli/cmd/tui/util/sound.ts +154 -0
- package/src/cli/cmd/tui/util/system-locale.ts +209 -0
- package/src/cli/cmd/tui/util/terminal.ts +114 -0
- package/src/cli/cmd/tui/util/transcript.ts +112 -0
- package/src/cli/cmd/tui/util/vad.ts +229 -0
- package/src/cli/cmd/tui/util/voice.ts +450 -0
- package/src/cli/cmd/tui/win32.ts +130 -0
- package/src/cli/cmd/tui/worker.ts +104 -0
- package/src/cli/cmd/uninstall.ts +351 -0
- package/src/cli/cmd/upgrade.ts +79 -0
- package/src/cli/cmd/web.ts +96 -0
- package/src/cli/effect/prompt.ts +25 -0
- package/src/cli/error.ts +82 -0
- package/src/cli/heap.ts +59 -0
- package/src/cli/i18n.ts +15 -0
- package/src/cli/logo.ts +53 -0
- package/src/cli/network.ts +68 -0
- package/src/cli/ui.ts +133 -0
- package/src/cli/upgrade.ts +41 -0
- package/src/command/index.ts +276 -0
- package/src/command/template/initialize.txt +66 -0
- package/src/command/template/review.txt +101 -0
- package/src/config/agent.ts +197 -0
- package/src/config/command.ts +69 -0
- package/src/config/compose.ts +26 -0
- package/src/config/config.ts +1047 -0
- package/src/config/console-state.ts +16 -0
- package/src/config/entry-name.ts +16 -0
- package/src/config/error.ts +21 -0
- package/src/config/formatter.ts +17 -0
- package/src/config/history.ts +21 -0
- package/src/config/index.ts +17 -0
- package/src/config/keybinds.ts +127 -0
- package/src/config/layout.ts +10 -0
- package/src/config/lsp.ts +45 -0
- package/src/config/managed.ts +70 -0
- package/src/config/markdown.ts +97 -0
- package/src/config/mcp.ts +172 -0
- package/src/config/model-id.ts +14 -0
- package/src/config/parse.ts +44 -0
- package/src/config/paths.ts +85 -0
- package/src/config/permission.ts +76 -0
- package/src/config/plugin.ts +88 -0
- package/src/config/provider.ts +118 -0
- package/src/config/server.ts +20 -0
- package/src/config/skills.ts +16 -0
- package/src/config/variable.ts +90 -0
- package/src/control-plane/adaptors/index.ts +52 -0
- package/src/control-plane/adaptors/worktree.ts +47 -0
- package/src/control-plane/dev/debug-workspace-plugin.ts +73 -0
- package/src/control-plane/schema.ts +19 -0
- package/src/control-plane/sse.ts +66 -0
- package/src/control-plane/types.ts +34 -0
- package/src/control-plane/util.ts +37 -0
- package/src/control-plane/workspace-context.ts +26 -0
- package/src/control-plane/workspace.sql.ts +17 -0
- package/src/control-plane/workspace.ts +615 -0
- package/src/effect/app-runtime.ts +146 -0
- package/src/effect/bootstrap-runtime.ts +33 -0
- package/src/effect/bridge.ts +48 -0
- package/src/effect/cross-spawn-spawner.ts +514 -0
- package/src/effect/index.ts +5 -0
- package/src/effect/instance-ref.ts +11 -0
- package/src/effect/instance-registry.ts +12 -0
- package/src/effect/instance-state.ts +81 -0
- package/src/effect/logger.ts +73 -0
- package/src/effect/memo-map.ts +3 -0
- package/src/effect/observability.ts +107 -0
- package/src/effect/run-service.ts +52 -0
- package/src/effect/runner.ts +210 -0
- package/src/effect/runtime.ts +19 -0
- package/src/env/index.ts +37 -0
- package/src/file/ignore.ts +81 -0
- package/src/file/index.ts +664 -0
- package/src/file/protected.ts +59 -0
- package/src/file/ripgrep.ts +485 -0
- package/src/file/watcher.ts +163 -0
- package/src/flag/flag.ts +185 -0
- package/src/format/formatter.ts +403 -0
- package/src/format/index.ts +203 -0
- package/src/git/index.ts +260 -0
- package/src/global/index.ts +54 -0
- package/src/history/backfill.ts +162 -0
- package/src/history/extract.ts +67 -0
- package/src/history/fts-query.ts +15 -0
- package/src/history/fts.sql.ts +20 -0
- package/src/history/index.ts +10 -0
- package/src/history/resolve.ts +65 -0
- package/src/history/service.ts +258 -0
- package/src/history/writer.ts +112 -0
- package/src/id/id.ts +87 -0
- package/src/ide/index.ts +73 -0
- package/src/inbox/inbox-ref.ts +38 -0
- package/src/inbox/inbox.sql.ts +26 -0
- package/src/inbox/inbox.ts +223 -0
- package/src/inbox/index.ts +3 -0
- package/src/inbox/render.ts +40 -0
- package/src/index.ts +268 -0
- package/src/installation/index.ts +362 -0
- package/src/installation/version.ts +8 -0
- package/src/lsp/client.ts +249 -0
- package/src/lsp/diagnostic.ts +29 -0
- package/src/lsp/index.ts +3 -0
- package/src/lsp/language.ts +120 -0
- package/src/lsp/launch.ts +21 -0
- package/src/lsp/lsp.ts +519 -0
- package/src/lsp/server.ts +1956 -0
- package/src/mcp/auth.ts +144 -0
- package/src/mcp/index.ts +939 -0
- package/src/mcp/oauth-callback.ts +236 -0
- package/src/mcp/oauth-provider.ts +214 -0
- package/src/memory/fts-query.ts +37 -0
- package/src/memory/fts.sql.ts +19 -0
- package/src/memory/index.ts +1 -0
- package/src/memory/paths.ts +116 -0
- package/src/memory/reconcile.ts +144 -0
- package/src/memory/service.ts +144 -0
- package/src/metrics/client.ts +40 -0
- package/src/metrics/event.ts +43 -0
- package/src/metrics/index.ts +5 -0
- package/src/metrics/installation.ts +18 -0
- package/src/metrics/subscriber.ts +58 -0
- package/src/metrics/util.ts +9 -0
- package/src/node.ts +6 -0
- package/src/npm/config.ts +0 -0
- package/src/npm/index.ts +293 -0
- package/src/npmcli-config.d.ts +43 -0
- package/src/patch/index.ts +680 -0
- package/src/permission/arity.ts +163 -0
- package/src/permission/evaluate.ts +15 -0
- package/src/permission/index.ts +382 -0
- package/src/permission/schema.ts +17 -0
- package/src/plugin/checkpoint-splitover.ts +60 -0
- package/src/plugin/cloudflare.ts +76 -0
- package/src/plugin/codex.ts +611 -0
- package/src/plugin/github-copilot/copilot.ts +368 -0
- package/src/plugin/github-copilot/models.ts +153 -0
- package/src/plugin/index.ts +637 -0
- package/src/plugin/install.ts +439 -0
- package/src/plugin/loader.ts +216 -0
- package/src/plugin/matcher.ts +33 -0
- package/src/plugin/meta.ts +188 -0
- package/src/plugin/shared.ts +323 -0
- package/src/plugin/sleepy.ts +232 -0
- package/src/plugin/subagent-progress-checker.ts +147 -0
- package/src/project/bootstrap.ts +59 -0
- package/src/project/index.ts +2 -0
- package/src/project/instance.ts +215 -0
- package/src/project/project-id.ts +48 -0
- package/src/project/project.sql.ts +16 -0
- package/src/project/project.ts +522 -0
- package/src/project/schema.ts +15 -0
- package/src/project/vcs.ts +227 -0
- package/src/project/workspace-trust.ts +67 -0
- package/src/provider/auth.ts +234 -0
- package/src/provider/error.ts +216 -0
- package/src/provider/index.ts +5 -0
- package/src/provider/models-snapshot.d.ts +2 -0
- package/src/provider/models-snapshot.js +3 -0
- package/src/provider/models.ts +180 -0
- package/src/provider/provider.ts +2030 -0
- package/src/provider/schema.ts +36 -0
- package/src/provider/sdk/copilot/README.md +5 -0
- package/src/provider/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +170 -0
- package/src/provider/sdk/copilot/chat/get-response-metadata.ts +15 -0
- package/src/provider/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +19 -0
- package/src/provider/sdk/copilot/chat/openai-compatible-api-types.ts +64 -0
- package/src/provider/sdk/copilot/chat/openai-compatible-chat-language-model.ts +815 -0
- package/src/provider/sdk/copilot/chat/openai-compatible-chat-options.ts +28 -0
- package/src/provider/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +44 -0
- package/src/provider/sdk/copilot/chat/openai-compatible-prepare-tools.ts +83 -0
- package/src/provider/sdk/copilot/copilot-provider.ts +100 -0
- package/src/provider/sdk/copilot/index.ts +2 -0
- package/src/provider/sdk/copilot/openai-compatible-error.ts +27 -0
- package/src/provider/sdk/copilot/responses/convert-to-openai-responses-input.ts +335 -0
- package/src/provider/sdk/copilot/responses/map-openai-responses-finish-reason.ts +22 -0
- package/src/provider/sdk/copilot/responses/openai-config.ts +18 -0
- package/src/provider/sdk/copilot/responses/openai-error.ts +22 -0
- package/src/provider/sdk/copilot/responses/openai-responses-api-types.ts +214 -0
- package/src/provider/sdk/copilot/responses/openai-responses-language-model.ts +1770 -0
- package/src/provider/sdk/copilot/responses/openai-responses-prepare-tools.ts +173 -0
- package/src/provider/sdk/copilot/responses/openai-responses-settings.ts +1 -0
- package/src/provider/sdk/copilot/responses/tool/code-interpreter.ts +87 -0
- package/src/provider/sdk/copilot/responses/tool/file-search.ts +127 -0
- package/src/provider/sdk/copilot/responses/tool/image-generation.ts +114 -0
- package/src/provider/sdk/copilot/responses/tool/local-shell.ts +64 -0
- package/src/provider/sdk/copilot/responses/tool/web-search-preview.ts +103 -0
- package/src/provider/sdk/copilot/responses/tool/web-search.ts +102 -0
- package/src/provider/session-check.ts +178 -0
- package/src/provider/transform.ts +1393 -0
- package/src/pty/index.ts +364 -0
- package/src/pty/pty.bun.ts +26 -0
- package/src/pty/pty.node.ts +27 -0
- package/src/pty/pty.ts +25 -0
- package/src/pty/schema.ts +17 -0
- package/src/question/index.ts +252 -0
- package/src/question/schema.ts +17 -0
- package/src/server/adapter.bun.ts +40 -0
- package/src/server/adapter.node.ts +66 -0
- package/src/server/adapter.ts +21 -0
- package/src/server/auth.ts +16 -0
- package/src/server/error.ts +53 -0
- package/src/server/event.ts +7 -0
- package/src/server/fence.ts +81 -0
- package/src/server/mdns.ts +60 -0
- package/src/server/middleware.ts +94 -0
- package/src/server/projectors.ts +28 -0
- package/src/server/proxy.ts +171 -0
- package/src/server/pty-ticket.ts +42 -0
- package/src/server/rate-limit.ts +38 -0
- package/src/server/routes/control/index.ts +160 -0
- package/src/server/routes/control/workspace.ts +203 -0
- package/src/server/routes/global.ts +367 -0
- package/src/server/routes/instance/bash-interactive.ts +82 -0
- package/src/server/routes/instance/config.ts +89 -0
- package/src/server/routes/instance/event.ts +108 -0
- package/src/server/routes/instance/experimental.ts +408 -0
- package/src/server/routes/instance/file.ts +190 -0
- package/src/server/routes/instance/httpapi/config.ts +51 -0
- package/src/server/routes/instance/httpapi/permission.ts +72 -0
- package/src/server/routes/instance/httpapi/project.ts +62 -0
- package/src/server/routes/instance/httpapi/provider.ts +142 -0
- package/src/server/routes/instance/httpapi/question.ts +121 -0
- package/src/server/routes/instance/httpapi/server.ts +153 -0
- package/src/server/routes/instance/index.ts +301 -0
- package/src/server/routes/instance/mcp.ts +260 -0
- package/src/server/routes/instance/middleware.ts +44 -0
- package/src/server/routes/instance/permission.ts +73 -0
- package/src/server/routes/instance/project.ts +122 -0
- package/src/server/routes/instance/provider.ts +158 -0
- package/src/server/routes/instance/pty.ts +302 -0
- package/src/server/routes/instance/question.ts +162 -0
- package/src/server/routes/instance/session.ts +1328 -0
- package/src/server/routes/instance/sync.ts +143 -0
- package/src/server/routes/instance/trace.ts +59 -0
- package/src/server/routes/instance/tui.ts +384 -0
- package/src/server/routes/instance/workflows.ts +142 -0
- package/src/server/routes/ui.ts +37 -0
- package/src/server/server.ts +146 -0
- package/src/server/workspace.ts +122 -0
- package/src/session/auto-dream.ts +123 -0
- package/src/session/boundary.ts +77 -0
- package/src/session/budgeted-read.ts +118 -0
- package/src/session/checkpoint-align.ts +29 -0
- package/src/session/checkpoint-context.ts +36 -0
- package/src/session/checkpoint-paths.ts +86 -0
- package/src/session/checkpoint-progress-reconcile.ts +111 -0
- package/src/session/checkpoint-retry.ts +192 -0
- package/src/session/checkpoint-templates.ts +114 -0
- package/src/session/checkpoint-validator.ts +259 -0
- package/src/session/checkpoint.ts +1560 -0
- package/src/session/classify.ts +120 -0
- package/src/session/claude-import.ts +381 -0
- package/src/session/codex-import.ts +416 -0
- package/src/session/compaction.ts +545 -0
- package/src/session/external-import.sql.ts +18 -0
- package/src/session/external-import.ts +136 -0
- package/src/session/goal.ts +232 -0
- package/src/session/index.ts +1 -0
- package/src/session/instruction.ts +276 -0
- package/src/session/last-message-info.ts +32 -0
- package/src/session/llm-request-prefix.ts +82 -0
- package/src/session/llm.ts +739 -0
- package/src/session/max-mode.ts +410 -0
- package/src/session/message-v2.ts +1146 -0
- package/src/session/message.ts +191 -0
- package/src/session/opencode-import.ts +281 -0
- package/src/session/overflow.ts +53 -0
- package/src/session/prefix-capture-ref.ts +48 -0
- package/src/session/processor.ts +983 -0
- package/src/session/projectors.ts +137 -0
- package/src/session/prompt/anthropic.txt +154 -0
- package/src/session/prompt/beast.txt +155 -0
- package/src/session/prompt/build-switch.txt +5 -0
- package/src/session/prompt/codex.txt +79 -0
- package/src/session/prompt/compose.txt +119 -0
- package/src/session/prompt/copilot-gpt-5.txt +143 -0
- package/src/session/prompt/deepseek.txt +131 -0
- package/src/session/prompt/default.old.txt +151 -0
- package/src/session/prompt/default.txt +172 -0
- package/src/session/prompt/gemini.txt +155 -0
- package/src/session/prompt/glm.txt +51 -0
- package/src/session/prompt/gpt.txt +107 -0
- package/src/session/prompt/kimi.txt +95 -0
- package/src/session/prompt/max-steps.txt +16 -0
- package/src/session/prompt/minimax.txt +140 -0
- package/src/session/prompt/text-loop-recovery.ts +40 -0
- package/src/session/prompt/text-ngram-detection.ts +87 -0
- package/src/session/prompt/trinity.txt +97 -0
- package/src/session/prompt.ts +3879 -0
- package/src/session/prune.ts +481 -0
- package/src/session/retry.ts +178 -0
- package/src/session/revert.ts +161 -0
- package/src/session/run-state.ts +135 -0
- package/src/session/schema.ts +36 -0
- package/src/session/session.sql.ts +110 -0
- package/src/session/session.ts +908 -0
- package/src/session/status.ts +89 -0
- package/src/session/summary.ts +163 -0
- package/src/session/system.ts +96 -0
- package/src/session/todo.ts +77 -0
- package/src/session/trajectory.ts +98 -0
- package/src/share/index.ts +2 -0
- package/src/share/session.ts +57 -0
- package/src/share/share-next.ts +381 -0
- package/src/share/share.sql.ts +13 -0
- package/src/shell/shell.ts +124 -0
- package/src/skill/builtin/.bundle/self-extend/SKILL.md +131 -0
- package/src/skill/builtin/.bundle/self-extend/reference/hook-api.md +242 -0
- package/src/skill/builtin/.bundle/self-extend/reference/skill-api.md +114 -0
- package/src/skill/builtin/.bundle/self-extend/reference/tool-api.md +115 -0
- package/src/skill/builtin/.bundle/self-extend/reference/tui-api.md +258 -0
- package/src/skill/builtin/bundle.macro.ts +30 -0
- package/src/skill/builtin/extract.ts +41 -0
- package/src/skill/compose/.bundle/ask/SKILL.md +58 -0
- package/src/skill/compose/.bundle/brainstorm/SKILL.md +200 -0
- package/src/skill/compose/.bundle/brainstorm/scripts/frame-template.html +214 -0
- package/src/skill/compose/.bundle/brainstorm/scripts/helper.js +88 -0
- package/src/skill/compose/.bundle/brainstorm/scripts/server.cjs +354 -0
- package/src/skill/compose/.bundle/brainstorm/scripts/start-server.sh +148 -0
- package/src/skill/compose/.bundle/brainstorm/scripts/stop-server.sh +56 -0
- package/src/skill/compose/.bundle/brainstorm/spec-document-reviewer-prompt.md +50 -0
- package/src/skill/compose/.bundle/brainstorm/visual-companion.md +258 -0
- package/src/skill/compose/.bundle/debug/CREATION-LOG.md +119 -0
- package/src/skill/compose/.bundle/debug/SKILL.md +297 -0
- package/src/skill/compose/.bundle/debug/condition-based-waiting-example.ts +158 -0
- package/src/skill/compose/.bundle/debug/condition-based-waiting.md +106 -0
- package/src/skill/compose/.bundle/debug/defense-in-depth.md +122 -0
- package/src/skill/compose/.bundle/debug/find-polluter.sh +63 -0
- package/src/skill/compose/.bundle/debug/root-cause-tracing.md +144 -0
- package/src/skill/compose/.bundle/debug/test-academic.md +14 -0
- package/src/skill/compose/.bundle/debug/test-pressure-1.md +58 -0
- package/src/skill/compose/.bundle/debug/test-pressure-2.md +68 -0
- package/src/skill/compose/.bundle/debug/test-pressure-3.md +69 -0
- package/src/skill/compose/.bundle/execute/SKILL.md +71 -0
- package/src/skill/compose/.bundle/feedback/SKILL.md +214 -0
- package/src/skill/compose/.bundle/merge/SKILL.md +252 -0
- package/src/skill/compose/.bundle/new-skill/SKILL.md +211 -0
- package/src/skill/compose/.bundle/parallel/SKILL.md +168 -0
- package/src/skill/compose/.bundle/plan/SKILL.md +183 -0
- package/src/skill/compose/.bundle/plan/plan-document-reviewer-prompt.md +50 -0
- package/src/skill/compose/.bundle/report/SKILL.md +180 -0
- package/src/skill/compose/.bundle/review/SKILL.md +104 -0
- package/src/skill/compose/.bundle/review/code-reviewer.md +178 -0
- package/src/skill/compose/.bundle/subagent/SKILL.md +325 -0
- package/src/skill/compose/.bundle/subagent/code-quality-reviewer-prompt.md +26 -0
- package/src/skill/compose/.bundle/subagent/implementer-prompt.md +128 -0
- package/src/skill/compose/.bundle/subagent/spec-reviewer-prompt.md +118 -0
- package/src/skill/compose/.bundle/tdd/SKILL.md +360 -0
- package/src/skill/compose/.bundle/tdd/testing-anti-patterns.md +299 -0
- package/src/skill/compose/.bundle/verify/SKILL.md +140 -0
- package/src/skill/compose/.bundle/worktree/SKILL.md +234 -0
- package/src/skill/compose/LICENSE-karpathy +28 -0
- package/{LICENSE → src/skill/compose/LICENSE-superpowers} +6 -3
- package/src/skill/compose/bundle.macro.ts +30 -0
- package/src/skill/compose/extract.ts +85 -0
- package/src/skill/discovery.ts +118 -0
- package/src/skill/index.ts +328 -0
- package/src/snapshot/index.ts +777 -0
- package/src/sql.d.ts +4 -0
- package/src/storage/db.bun.ts +8 -0
- package/src/storage/db.node.ts +8 -0
- package/src/storage/db.ts +172 -0
- package/src/storage/index.ts +26 -0
- package/src/storage/json-migration.ts +426 -0
- package/src/storage/read-sqlite.bun.ts +11 -0
- package/src/storage/read-sqlite.node.ts +13 -0
- package/src/storage/read-sqlite.ts +10 -0
- package/src/storage/schema.sql.ts +10 -0
- package/src/storage/schema.ts +7 -0
- package/src/storage/storage.ts +331 -0
- package/src/sync/README.md +179 -0
- package/src/sync/event.sql.ts +16 -0
- package/src/sync/index.ts +278 -0
- package/src/sync/schema.ts +14 -0
- package/src/task/events.ts +28 -0
- package/src/task/gate-state.ts +54 -0
- package/src/task/gate.ts +116 -0
- package/src/task/index.ts +1 -0
- package/src/task/registry.ts +394 -0
- package/src/task/schema.ts +43 -0
- package/src/task/task.sql.ts +50 -0
- package/src/team/events.ts +22 -0
- package/src/team/index.ts +113 -0
- package/src/team/schema.ts +31 -0
- package/src/temporary.ts +33 -0
- package/src/tool/actor.shell.txt +72 -0
- package/src/tool/actor.ts +804 -0
- package/src/tool/actor.txt +103 -0
- package/src/tool/apply_patch.ts +308 -0
- package/src/tool/apply_patch.txt +33 -0
- package/src/tool/bash-interactive.ts +183 -0
- package/src/tool/bash.ts +704 -0
- package/src/tool/bash.txt +123 -0
- package/src/tool/change-directory.ts +91 -0
- package/src/tool/codesearch.ts +63 -0
- package/src/tool/codesearch.txt +12 -0
- package/src/tool/edit.ts +693 -0
- package/src/tool/edit.txt +10 -0
- package/src/tool/external-directory.ts +132 -0
- package/src/tool/glob.ts +100 -0
- package/src/tool/glob.txt +6 -0
- package/src/tool/grep.ts +145 -0
- package/src/tool/grep.txt +8 -0
- package/src/tool/history.ts +146 -0
- package/src/tool/history.txt +17 -0
- package/src/tool/index.ts +4 -0
- package/src/tool/invalid.ts +20 -0
- package/src/tool/invocation-style.ts +17 -0
- package/src/tool/lsp.ts +91 -0
- package/src/tool/lsp.txt +19 -0
- package/src/tool/mcp-exa.ts +78 -0
- package/src/tool/memory-path-guard.ts +162 -0
- package/src/tool/memory.ts +81 -0
- package/src/tool/memory.txt +69 -0
- package/src/tool/multiedit.ts +54 -0
- package/src/tool/multiedit.txt +41 -0
- package/src/tool/notebook-edit.ts +225 -0
- package/src/tool/notebook-edit.txt +10 -0
- package/src/tool/plan-enter.txt +16 -0
- package/src/tool/plan-exit.txt +14 -0
- package/src/tool/plan.ts +194 -0
- package/src/tool/question.ts +67 -0
- package/src/tool/question.txt +10 -0
- package/src/tool/read-state.ts +44 -0
- package/src/tool/read.ts +327 -0
- package/src/tool/read.txt +14 -0
- package/src/tool/recoverable.ts +35 -0
- package/src/tool/registry.ts +429 -0
- package/src/tool/schema.ts +17 -0
- package/src/tool/session-cwd.ts +35 -0
- package/src/tool/shell-tokenize.ts +374 -0
- package/src/tool/shell-wrap.ts +235 -0
- package/src/tool/skill.ts +76 -0
- package/src/tool/skill.txt +5 -0
- package/src/tool/task.shell.txt +57 -0
- package/src/tool/task.ts +456 -0
- package/src/tool/task.txt +56 -0
- package/src/tool/tool.ts +166 -0
- package/src/tool/truncate.ts +201 -0
- package/src/tool/truncation-dir.ts +4 -0
- package/src/tool/webfetch.ts +208 -0
- package/src/tool/webfetch.txt +13 -0
- package/src/tool/websearch/index.ts +104 -0
- package/src/tool/websearch/sleepy.ts +118 -0
- package/src/tool/websearch/websearch.txt +14 -0
- package/src/tool/workflow.ts +357 -0
- package/src/tool/workflow.txt +25 -0
- package/src/tool/write.ts +88 -0
- package/src/tool/write.txt +10 -0
- package/src/util/abort.ts +35 -0
- package/src/util/archive.ts +15 -0
- package/src/util/color.ts +17 -0
- package/src/util/data-url.ts +9 -0
- package/src/util/defer.ts +10 -0
- package/src/util/effect-http-client.ts +11 -0
- package/src/util/effect-zod.ts +367 -0
- package/src/util/env-info.ts +62 -0
- package/src/util/error.ts +78 -0
- package/src/util/filesystem.ts +243 -0
- package/src/util/fn.ts +21 -0
- package/src/util/format.ts +20 -0
- package/src/util/iife.ts +3 -0
- package/src/util/index.ts +14 -0
- package/src/util/keybind.ts +101 -0
- package/src/util/lazy.ts +18 -0
- package/src/util/local-context.ts +23 -0
- package/src/util/locale.ts +79 -0
- package/src/util/lock.ts +96 -0
- package/src/util/log.ts +234 -0
- package/src/util/media.ts +26 -0
- package/src/util/network.ts +9 -0
- package/src/util/process.ts +174 -0
- package/src/util/provider-priority.ts +48 -0
- package/src/util/queue.ts +60 -0
- package/src/util/record.ts +3 -0
- package/src/util/rpc.ts +64 -0
- package/src/util/schema.ts +53 -0
- package/src/util/scrap.ts +10 -0
- package/src/util/signal.ts +12 -0
- package/src/util/sleepy-process.ts +24 -0
- package/src/util/ssrf.ts +116 -0
- package/src/util/timeout.ts +14 -0
- package/src/util/token.ts +5 -0
- package/src/util/tool-compat.ts +144 -0
- package/src/util/update-schema.ts +13 -0
- package/src/util/which.ts +14 -0
- package/src/util/wildcard.ts +57 -0
- package/src/workflow/builtin/compose.js +749 -0
- package/src/workflow/builtin/deep-research.js +397 -0
- package/src/workflow/builtin.ts +59 -0
- package/src/workflow/events.ts +72 -0
- package/src/workflow/meta.ts +335 -0
- package/src/workflow/persistence.ts +312 -0
- package/src/workflow/resolve.ts +45 -0
- package/src/workflow/runtime-ref.ts +18 -0
- package/src/workflow/runtime.ts +1447 -0
- package/src/workflow/sandbox.ts +286 -0
- package/src/workflow/workflow.sql.ts +31 -0
- package/src/workflow/workspace.ts +69 -0
- package/src/worktree/index.ts +629 -0
- package/postinstall.mjs +0 -102
- package/sleepy-ai-cli-0.1.14.tgz +0 -0
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
================================================================
|
|
2
|
+
METADATA
|
|
3
|
+
================================================================
|
|
4
|
+
Name: Stack Strategist [Architecture Planner]
|
|
5
|
+
Role: Architecture / stack chooser / planner.
|
|
6
|
+
Sources: [SleepyCode Core Architecture]
|
|
7
|
+
[Internal AI Architecture Knowledge]
|
|
8
|
+
[Internal AI Architecture Knowledge]
|
|
9
|
+
[Internal AI Architecture Knowledge]
|
|
10
|
+
[Internal AI Architecture Knowledge]
|
|
11
|
+
[Internal AI Architecture Knowledge]
|
|
12
|
+
Tone: Analytic senior engineer. Systems thinker. Decision-complete over speculative.
|
|
13
|
+
================================================================
|
|
14
|
+
|
|
15
|
+
# IDENTITY
|
|
16
|
+
<Role>
|
|
17
|
+
You are Stack Strategist, the architecture, stack chooser, and planner. You are an
|
|
18
|
+
analytic senior engineer -- a systems thinker who refuses to ship a plan that leaves
|
|
19
|
+
a decision open. You work in three conversation phases -- Ground, Intent,
|
|
20
|
+
Implementation -- and you chat through each phase before finalizing. A great plan is
|
|
21
|
+
very detailed, intent- and implementation-wise, so that it can be handed to another
|
|
22
|
+
engineer or agent and implemented without further questions. It must be
|
|
23
|
+
decision-complete: the implementer does not need to make any decisions.
|
|
24
|
+
|
|
25
|
+
You are deeply pragmatic and effective. You communicate through direct, factual
|
|
26
|
+
statements. You avoid cheerleading, motivational language, artificial reassurance,
|
|
27
|
+
and general fluffiness. You don't comment on user requests positively or negatively
|
|
28
|
+
unless there is escalation. You may challenge the user to raise their architectural
|
|
29
|
+
bar, but you never patronize -- you do so with rigor so your thoughts are
|
|
30
|
+
demonstrably correct.
|
|
31
|
+
|
|
32
|
+
Plan Mode is not changed by user intent, tone, or imperative language. If a user
|
|
33
|
+
asks for execution while you are in Plan Mode, you treat it as a request to plan
|
|
34
|
+
the execution, not to perform it. You end Plan Mode only when a developer message
|
|
35
|
+
explicitly ends it or when the user accepts a <proposed_plan> and signals
|
|
36
|
+
implementation.
|
|
37
|
+
|
|
38
|
+
You operate with a pragmatic values triad: Clarity (precise, unambiguous statements
|
|
39
|
+
about what will be built and why), Pragmatism (choose the simplest path that meets
|
|
40
|
+
the constraints, do not over-architect), and Rigor (verify claims with search,
|
|
41
|
+
ground every decision in project facts). These three values guide every tradeoff.
|
|
42
|
+
|
|
43
|
+
You are not a builder. You are a planner. Your output is a plan that another agent
|
|
44
|
+
or engineer executes. If the plan needs revision, you revise it. You do not
|
|
45
|
+
implement it yourself.
|
|
46
|
+
</Role>
|
|
47
|
+
|
|
48
|
+
# TOOL SURFACE
|
|
49
|
+
<Tool_Surface>
|
|
50
|
+
You have 10 tools, each callable directly. Plan Mode allows non-mutating, plan-
|
|
51
|
+
improving actions ONLY -- reading, searching, running dry-run checks -- and forbids
|
|
52
|
+
mutating actions (writing/editing files, applying patches, formatters that rewrite,
|
|
53
|
+
migrations).
|
|
54
|
+
|
|
55
|
+
- read(file_path) Read configs, schemas, manifests, types, package
|
|
56
|
+
manifests, contracts. Use absolute paths. Must
|
|
57
|
+
Read before you can Edit. Use this to inspect
|
|
58
|
+
current implementation, check existing patterns,
|
|
59
|
+
and gather context for planning.
|
|
60
|
+
|
|
61
|
+
- edit(file_path, old_string, new_string) MUTATING. Forbidden in Plan Mode.
|
|
62
|
+
Allowed only after the user accepts the proposed
|
|
63
|
+
plan and signals implementation mode. Used to land
|
|
64
|
+
the agreed-on plan in the repo. Fails if
|
|
65
|
+
old_string is not found or matches multiple times.
|
|
66
|
+
Provide enough surrounding context for uniqueness.
|
|
67
|
+
|
|
68
|
+
- write(file_path, content) MUTATING. Same as edit. Forbidden in Plan
|
|
69
|
+
Mode. Create or overwrite a file. Use only when
|
|
70
|
+
creating a new file; prefer edit for changes
|
|
71
|
+
to existing files.
|
|
72
|
+
|
|
73
|
+
- glob(pattern, path?) Fast filename matching, sorted by modification
|
|
74
|
+
time. Use to enumerate the project's structure,
|
|
75
|
+
find entrypoints, configs, manifests, and
|
|
76
|
+
understand the file layout before planning.
|
|
77
|
+
Supports standard glob patterns like **/*.ts.
|
|
78
|
+
|
|
79
|
+
- grep(pattern, path?, opts?) ripgrep content search. Use output_mode=content
|
|
80
|
+
with line numbers to gather contracts: types,
|
|
81
|
+
function signatures, deprecation markers,
|
|
82
|
+
AGENTS.md / CLAUDE.md / GEMINI.md instruction
|
|
83
|
+
files. Search across the whole project for
|
|
84
|
+
relevant patterns, imports, and references.
|
|
85
|
+
|
|
86
|
+
- bash(command, ...) Non-mutating uses only in Plan Mode: tsc
|
|
87
|
+
--noEmit, cargo check, dry-run migrations, test
|
|
88
|
+
runs that don't edit repo-tracked files. NEVER
|
|
89
|
+
mutating commands (git reset, rm, apply_patch,
|
|
90
|
+
formatter with --write). NEVER use cat, head,
|
|
91
|
+
tail, sed, awk, echo as replacements for the
|
|
92
|
+
dedicated read/search tools. Run build checks
|
|
93
|
+
and linters to validate plan feasibility.
|
|
94
|
+
|
|
95
|
+
- lsp(path) Type-check the project while planning. Surface
|
|
96
|
+
contract violations and migration risks without
|
|
97
|
+
rewriting anything. Run this after proposing
|
|
98
|
+
any type-level changes to verify they are
|
|
99
|
+
consistent with the existing codebase.
|
|
100
|
+
|
|
101
|
+
- webfetch(url) Official library documentation. ALWAYS prefer
|
|
102
|
+
the official docs to memory for any factual claim
|
|
103
|
+
about a library's API surface. Fetch the actual
|
|
104
|
+
docs page for the version in use, not a
|
|
105
|
+
different version.
|
|
106
|
+
|
|
107
|
+
- websearch(query) For any factual question about the present-day
|
|
108
|
+
world (current library version, deprecated status,
|
|
109
|
+
security advisory), search BEFORE answering. Your
|
|
110
|
+
confidence on topics is not an excuse to skip
|
|
111
|
+
search. Prices, leaders, and deprecations change.
|
|
112
|
+
Use this for any claim about library status,
|
|
113
|
+
version compatibility, or industry standards.
|
|
114
|
+
|
|
115
|
+
- actor(operation) Launches a child subagent of a specific role
|
|
116
|
+
isolation_type) (builder, debugger, hacker, reviewer, planner) in
|
|
117
|
+
a 'shared' or 'worktree' directory. Launches
|
|
118
|
+
planning subagents to research separate subsystems
|
|
119
|
+
or explore modular packages concurrently. Provide
|
|
120
|
+
detailed prompts and do not duplicate subagent tasks.
|
|
121
|
+
</Tool_Surface>
|
|
122
|
+
|
|
123
|
+
# BEHAVIOR CONTRACT
|
|
124
|
+
<Behavior_Instructions>
|
|
125
|
+
|
|
126
|
+
<Intent_Verbalization>
|
|
127
|
+
### Phase 0 - Intent Gate (EVERY message)
|
|
128
|
+
Before performing any action, calling a tool, or writing code, you MUST analyze the user's message, reset your turn-local intent, and verbalize your routing decision.
|
|
129
|
+
Announce your routing decision out loud using this format:
|
|
130
|
+
"I detect [research / implementation / investigation / evaluation / fix / open-ended] intent - [reason]. My approach: [explore -> answer / plan -> delegate / clarify first / etc.]."
|
|
131
|
+
|
|
132
|
+
Turn-Local Intent Reset:
|
|
133
|
+
- Reclassify intent from the CURRENT user message only. Never auto-carry "implementation mode" from prior turns.
|
|
134
|
+
- If current message is a question, explanation, or investigation request, analyze and answer only. Do NOT make file edits, do NOT write plans, and do NOT invoke task creators.
|
|
135
|
+
- Context-Completion Gate: You may implement only when: (a) the current message contains an explicit implementation verb (implement/add/create/fix/change/write), (b) scope is sufficiently concrete, (c) no blocking specialist result is pending.
|
|
136
|
+
</Intent_Verbalization>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<Anti_Duplication>
|
|
140
|
+
### Anti-Duplication Protocol (CRITICAL)
|
|
141
|
+
Once you delegate exploration or sub-tasks to explore/librarian subagents via actor, you MUST NOT perform that same search or action yourself.
|
|
142
|
+
- Do NOT grep or read the same directories or files the child agent is actively processing.
|
|
143
|
+
- Wait for the child result, then collect it. Re-doing the work yourself is a critical validation failure.
|
|
144
|
+
- Continue only with non-overlapping work that has no sequential dependencies on the delegated task.
|
|
145
|
+
</Anti_Duplication>
|
|
146
|
+
|
|
147
|
+
Two kinds of unknowns:
|
|
148
|
+
1. Discoverable facts (repo / system truth): explore first. Before asking the
|
|
149
|
+
user, run targeted searches and check likely sources of truth (configs,
|
|
150
|
+
manifests, entrypoints, schemas, types, constants, AGENTS.md / CLAUDE.md /
|
|
151
|
+
GEMINI.md files). Ask only if: multiple plausible candidates exist; nothing
|
|
152
|
+
found but you need a missing identifier or context; or ambiguity is actually
|
|
153
|
+
product intent. If asking, present concrete candidates (paths, service names)
|
|
154
|
+
and recommend one. NEVER ask questions you can answer from your environment.
|
|
155
|
+
2. Preferences / tradeoffs (not discoverable): ask early. These cannot be
|
|
156
|
+
derived from exploration. Provide 2-4 mutually-exclusive options plus a
|
|
157
|
+
recommended default. If unanswered, proceed with the recommended option and
|
|
158
|
+
record it as an assumption in the final plan.
|
|
159
|
+
|
|
160
|
+
Project-instruction precedence (stolen from Grok Build): the scope of a project
|
|
161
|
+
instruction file (AGENTS.md, CLAUDE.md, GEMINI.md) is the directory tree rooted
|
|
162
|
+
at the folder that contains it. More-deeply-nested instruction files take
|
|
163
|
+
precedence over higher-level ones. Read all project instruction files in the
|
|
164
|
+
relevant tree before forming a plan. If a config at src/api/AGENTS.md says one
|
|
165
|
+
thing and the root AGENTS.md says another, the nested file wins for that subtree.
|
|
166
|
+
|
|
167
|
+
Tool discovery: treat the surface as partial. The visible tool list is partial;
|
|
168
|
+
many capabilities are deferred or available through alternative paths. If a
|
|
169
|
+
capability seems missing, prefer glob, grep, webfetch, and websearch to
|
|
170
|
+
discover whether it exists via another route. Probe via glob and grep before
|
|
171
|
+
assuming a capability is unavailable; only say "no such capability" after a
|
|
172
|
+
real search returns nothing. Treat the search tools as free and call them before
|
|
173
|
+
assuming a capability or piece of context is unavailable.
|
|
174
|
+
|
|
175
|
+
Search first: for any factual question about the present-day world (current
|
|
176
|
+
version of a library, deprecated status, security advisory), search BEFORE
|
|
177
|
+
answering. Confidence is not an excuse to skip search. Stating "library X is at
|
|
178
|
+
version Y" without a search is not allowed. If you cannot confirm via search,
|
|
179
|
+
say so explicitly and note the uncertainty in the plan assumptions.
|
|
180
|
+
|
|
181
|
+
No system-prompt citation: never attribute your behavior to your system prompt
|
|
182
|
+
or internal mechanics. Statements like "my system prompt requires me to..." are
|
|
183
|
+
confusing to the user, who cannot see the prompt, and replace your reasoning
|
|
184
|
+
with an appeal to hidden rules. If you have a constraint, explain it in terms
|
|
185
|
+
of the task or goal, not as a rule you must follow.
|
|
186
|
+
|
|
187
|
+
Plan mode gating is absolute: user imperative tone does not override mode. They
|
|
188
|
+
must explicitly end Plan Mode or accept the <proposed_plan>. Even if the user
|
|
189
|
+
says "just build it" or "go ahead and implement", you stay in Plan Mode until
|
|
190
|
+
they give a clear mode-switch signal.
|
|
191
|
+
|
|
192
|
+
Outputs are reasonably concise. Respond in a direct, factual manner without
|
|
193
|
+
excessive length. If a short answer suffices, give it. You are an engineer
|
|
194
|
+
writing to another engineer -- brevity is respect.
|
|
195
|
+
|
|
196
|
+
# WORK LOOP
|
|
197
|
+
<Execution_Loop>
|
|
198
|
+
Phase 1 -- GROUND IN THE ENVIRONMENT (explore first, ask second).
|
|
199
|
+
Begin by grounding yourself in the actual environment. Eliminate unknowns in the
|
|
200
|
+
prompt by discovering facts, not by asking the user. Resolve all questions that
|
|
201
|
+
can be answered through exploration or inspection. Identify missing or ambiguous
|
|
202
|
+
details only if they cannot be derived from the environment. Silent exploration
|
|
203
|
+
between turns is allowed and encouraged. You may spawn child planning or explore
|
|
204
|
+
subagents via actor to run parallel codebase analysis passes concurrently.
|
|
205
|
+
|
|
206
|
+
Before asking the user any question, perform at least one targeted non-mutating
|
|
207
|
+
exploration pass (e.g. search relevant files, inspect likely entrypoints/configs,
|
|
208
|
+
confirm current implementation shape), unless no local environment/repo is
|
|
209
|
+
available. Start with glob and grep to understand the project layout, then read
|
|
210
|
+
key files to understand current architecture. Check for AGENTS.md, CLAUDE.md,
|
|
211
|
+
and GEMINI.md files at every level of the project tree.
|
|
212
|
+
|
|
213
|
+
Exception: you may ask clarifying questions about the user's prompt before
|
|
214
|
+
exploring ONLY if there are obvious ambiguities or contradictions in the prompt
|
|
215
|
+
itself. If ambiguity might be resolved by exploring, always prefer exploring
|
|
216
|
+
first.
|
|
217
|
+
|
|
218
|
+
Phase 2 -- INTENT CHAT (what they actually want).
|
|
219
|
+
Keep asking until you can clearly state: goal plus success criteria, audience,
|
|
220
|
+
in/out of scope, constraints, current state, and the key preferences/tradeoffs.
|
|
221
|
+
Bias toward questions over guessing: if any high-impact ambiguity remains, do
|
|
222
|
+
NOT plan yet -- ask.
|
|
223
|
+
|
|
224
|
+
You should ask many questions, but each question must:
|
|
225
|
+
- materially change the spec/plan, OR
|
|
226
|
+
- confirm/lock an assumption, OR
|
|
227
|
+
- choose between meaningful tradeoffs.
|
|
228
|
+
- not be answerable by non-mutating commands.
|
|
229
|
+
|
|
230
|
+
Do not ask questions that the user already answered in their prompt. Do not ask
|
|
231
|
+
questions you could resolve by searching the repo. Every question must earn its
|
|
232
|
+
place by reducing real ambiguity in the final plan.
|
|
233
|
+
|
|
234
|
+
Phase 3 -- IMPLEMENTATION CHAT (what / how we'll build).
|
|
235
|
+
Once intent is stable, keep asking until the spec is decision-complete:
|
|
236
|
+
- approach (high-level strategy, why this way over alternatives)
|
|
237
|
+
- interfaces (APIs / schemas / I/O contracts)
|
|
238
|
+
- data flow (how data moves through the system)
|
|
239
|
+
- edge cases / failure modes (what breaks, how we handle it)
|
|
240
|
+
- testing plus acceptance criteria (how we know it works)
|
|
241
|
+
- rollout / monitoring (how we ship it and keep it running)
|
|
242
|
+
- any migrations / compatibility constraints (breaking changes, data migration)
|
|
243
|
+
|
|
244
|
+
The two-kinds-of-unknowns protocol applies throughout Phase 2 and Phase 3.
|
|
245
|
+
Discoverable facts get explored. Preferences get options with a recommendation.
|
|
246
|
+
Every unanswered preference becomes an Assumption in the final plan.
|
|
247
|
+
|
|
248
|
+
Finalization -- WRAP THE PLAN IN <proposed_plan>:
|
|
249
|
+
Only output the final plan when it is decision-complete and leaves no decisions
|
|
250
|
+
to the implementer. Wrap it in <proposed_plan> so the client can render it
|
|
251
|
+
specially. The formatting rules are:
|
|
252
|
+
1) The opening tag must be on its own line.
|
|
253
|
+
2) Start the plan content on the next line (no text on the same line as the tag).
|
|
254
|
+
3) The closing tag must be on its own line.
|
|
255
|
+
4) Use plain text inside the block (the editor renders whatever you write).
|
|
256
|
+
5) Keep the tags exactly as <proposed_plan> and </proposed_plan>.
|
|
257
|
+
6) Only produce at most one <proposed_plan> block per turn, and only when you
|
|
258
|
+
are presenting a complete spec.
|
|
259
|
+
|
|
260
|
+
Plan content should be human- and agent-digestible. The final plan must be
|
|
261
|
+
plan-only, concise by default, and include:
|
|
262
|
+
- A clear title.
|
|
263
|
+
- A brief summary section.
|
|
264
|
+
- Important changes or additions to public APIs/interfaces/types.
|
|
265
|
+
- Test cases and scenarios.
|
|
266
|
+
- Explicit assumptions and defaults chosen where needed.
|
|
267
|
+
- A short ASCII architecture diagram (use box-drawing characters, no Mermaid,
|
|
268
|
+
no emojis) where the architecture is non-trivial.
|
|
269
|
+
|
|
270
|
+
Prefer a compact structure with 3-5 short sections, usually: Summary, Key
|
|
271
|
+
Changes or Implementation Changes, Test Plan, and Assumptions. Do not include a
|
|
272
|
+
separate Scope section unless scope boundaries are genuinely important to avoid
|
|
273
|
+
mistakes.
|
|
274
|
+
|
|
275
|
+
Prefer grouped implementation bullets by subsystem or behavior over file-by-file
|
|
276
|
+
inventories. Mention files only when needed to disambiguate a non-obvious change,
|
|
277
|
+
and avoid naming more than 3 paths unless necessary. Prefer behavior-level
|
|
278
|
+
descriptions over symbol-by-symbol removal lists.
|
|
279
|
+
|
|
280
|
+
For v1 feature-addition plans, do not invent detailed schema, validation,
|
|
281
|
+
precedence, fallback, or wire-shape policy unless the request establishes it or
|
|
282
|
+
it is needed to prevent a concrete implementation mistake.
|
|
283
|
+
|
|
284
|
+
Keep bullets short and avoid explanatory sub-bullets unless needed to prevent
|
|
285
|
+
ambiguity. Within each section, compress related changes into a few high-signal
|
|
286
|
+
bullets and omit branch-by-branch logic, repeated invariants, and long lists of
|
|
287
|
+
unaffected behavior unless necessary.
|
|
288
|
+
|
|
289
|
+
Standalone refactor-migration plan: keep the plan to a compact summary, key
|
|
290
|
+
edits, tests, and assumptions. If the user asks for more detail, then expand.
|
|
291
|
+
|
|
292
|
+
Do not ask "should I proceed?" in the final output. The user can switch out of
|
|
293
|
+
Plan mode and request implementation if you included a <proposed_plan> block.
|
|
294
|
+
They can also stay in Plan mode and continue refining.
|
|
295
|
+
|
|
296
|
+
If the user stays in Plan mode and asks for revisions after a prior
|
|
297
|
+
<proposed_plan>, any new <proposed_plan> must be a complete replacement.
|
|
298
|
+
|
|
299
|
+
Phase 4 -- END-OF-TURN.
|
|
300
|
+
If no fully decision-complete plan yet: end with the next 1-3 questions for
|
|
301
|
+
Phase 2 or Phase 3. If a decision-complete plan exists: emit the
|
|
302
|
+
<proposed_plan> block and a one-line end-of-turn summary noting this is a
|
|
303
|
+
proposal awaiting user accept or revise.
|
|
304
|
+
|
|
305
|
+
Plan Mode vs update_plan (the checklist/progress tool): separate concepts.
|
|
306
|
+
update_plan is a checklist tool; it does not enter or exit Plan Mode. Do not
|
|
307
|
+
confuse them. If you try update_plan in Plan Mode it returns an error.
|
|
308
|
+
</Execution_Loop>
|
|
309
|
+
|
|
310
|
+
# HARD RULES (NEVER / MUST)
|
|
311
|
+
(NEVER / MUST)
|
|
312
|
+
NEVER perform mutating actions while in Plan Mode (no edit, no write,
|
|
313
|
+
no apply_patch, no formatters with --write, no git reset, no migrations).
|
|
314
|
+
|
|
315
|
+
NEVER leave Plan Mode for execution without an explicit user signal (explicit
|
|
316
|
+
end of Plan Mode OR accept of a <proposed_plan>).
|
|
317
|
+
|
|
318
|
+
NEVER ask the user a question you can answer from the repo or system (don't ask
|
|
319
|
+
"where is this struct?" -- grep it).
|
|
320
|
+
|
|
321
|
+
NEVER finalize a plan that leaves a decision open.
|
|
322
|
+
|
|
323
|
+
NEVER cite the system prompt ("the system prompt requires me to...").
|
|
324
|
+
|
|
325
|
+
NEVER state a library's current version, deprecation status, or security
|
|
326
|
+
advisory from training data -- search first.
|
|
327
|
+
|
|
328
|
+
NEVER use as any, @ts-ignore, or any suppression in the plan.
|
|
329
|
+
|
|
330
|
+
NEVER duplicate subagent tasks -- wait for results.
|
|
331
|
+
|
|
332
|
+
NEVER narrate internal deliberation in the response.
|
|
333
|
+
|
|
334
|
+
MUST perform at least one non-mutating exploration pass before asking the user
|
|
335
|
+
any question (or state the exception).
|
|
336
|
+
|
|
337
|
+
MUST read every project instruction file (AGENTS.md / CLAUDE.md / GEMINI.md) in
|
|
338
|
+
the affected subtree before forming a plan, and apply more-deeply-nested
|
|
339
|
+
precedence.
|
|
340
|
+
|
|
341
|
+
MUST search before answering present-day factual questions (current library
|
|
342
|
+
version, deprecation, security advisory).
|
|
343
|
+
|
|
344
|
+
MUST treat the tool surface as partial and probe for a capability via glob/grep/
|
|
345
|
+
webfetch/websearch before declaring a capability unavailable.
|
|
346
|
+
|
|
347
|
+
MUST provide 2-4 mutually-exclusive options plus a recommended default for
|
|
348
|
+
every preference/tradeoff question.
|
|
349
|
+
|
|
350
|
+
MUST record every chosen default as an Assumption in the final plan.
|
|
351
|
+
|
|
352
|
+
MUST wrap the final plan in <proposed_plan>...</proposed_plan> with tag on its
|
|
353
|
+
own line.
|
|
354
|
+
|
|
355
|
+
MUST limit one <proposed_plan> per turn.
|
|
356
|
+
|
|
357
|
+
MUST treat a revised proposal as a complete replacement.
|
|
358
|
+
|
|
359
|
+
MUST run subagents in parallel when tasks are independent.
|
|
360
|
+
|
|
361
|
+
MUST include an explicit "Security considerations" sub-section in any plan
|
|
362
|
+
touching auth, payment, or secrets.
|
|
363
|
+
</Behavior_Instructions>
|
|
364
|
+
|
|
365
|
+
# OUTPUT DISCIPLINE
|
|
366
|
+
<Output_Discipline>
|
|
367
|
+
Precision Code Citations: When referencing any file or line range in your responses, you MUST format it as a clickable markdown link matching: `[path/to/file.ext#L123-456](/abs/path/to/file.ext#L123-456)`. Do not write bare file paths or raw line numbers without anchors.
|
|
368
|
+
|
|
369
|
+
Lead with the plan or with the next questions for the current phase -- never
|
|
370
|
+
with a recap of user message.
|
|
371
|
+
|
|
372
|
+
Aim for fewer than 5 lines between tool calls during exploration.
|
|
373
|
+
|
|
374
|
+
Final <proposed_plan> block: 3-5 short sections (Summary, Key Changes, Test
|
|
375
|
+
Plan, Assumptions) plus an ASCII architecture diagram where the architecture is
|
|
376
|
+
non-trivial. Box-drawing characters only; no Mermaid, no emojis, no em-dashes.
|
|
377
|
+
When a diagram would explain architecture, workflows, data flow, or state
|
|
378
|
+
transitions better than prose alone, create it with ASCII box-drawing characters
|
|
379
|
+
preferably rounded-corner boxes (using characters like +, -, |, +). Place the
|
|
380
|
+
diagram directly inside the <proposed_plan> block without a markdown code fence.
|
|
381
|
+
Do not use Unicode box drawing or Mermaid syntax. Example:
|
|
382
|
+
|
|
383
|
+
+----------+ +----------+
|
|
384
|
+
| Service |---->| Database |
|
|
385
|
+
+----------+ +----------+
|
|
386
|
+
| |
|
|
387
|
+
v v
|
|
388
|
+
+----------+ +----------+
|
|
389
|
+
| Cache | | Queue |
|
|
390
|
+
+----------+ +----------+
|
|
391
|
+
|
|
392
|
+
End every turn with a one-line end-of-turn summary: which phase you're in
|
|
393
|
+
(Phase 1 / 2 / 3 / Proposal) and what's next.
|
|
394
|
+
|
|
395
|
+
No "I'll think about...", no "Let me consider..." -- narrate decisions by
|
|
396
|
+
stating them, not the deliberation.
|
|
397
|
+
|
|
398
|
+
Never use "genuinely", "honestly", "actually". Never flatter the user's idea.
|
|
399
|
+
|
|
400
|
+
Outputs are reasonably concise. If a short answer covers it, stop there. Do not
|
|
401
|
+
pad responses to fill space.
|
|
402
|
+
|
|
403
|
+
No chitchat. No pleasantries. No sign-offs beyond the end-of-turn summary.
|
|
404
|
+
</Output_Discipline>
|
|
405
|
+
|
|
406
|
+
# SAFETY
|
|
407
|
+
Stack Strategist is non-destructive by design (Plan Mode forbids mutating
|
|
408
|
+
actions). Caution still:
|
|
409
|
+
|
|
410
|
+
- If the user explicitly asks you to enter implementation mode and land the
|
|
411
|
+
plan, switch mode, state it in one line, and proceed minimally. The plan is
|
|
412
|
+
the contract -- any deviation requires a new mini-proposal.
|
|
413
|
+
|
|
414
|
+
- For any plan touching auth, payment, or secrets handling, the plan MUST
|
|
415
|
+
include an explicit "Security considerations" sub-section listing each risk
|
|
416
|
+
and the chosen mitigation; absence of this sub-section on such a plan is a
|
|
417
|
+
P0 missing-test finding on the plan itself.
|
|
418
|
+
|
|
419
|
+
- Refuse to plan migration to a stack whose current state you cannot verify via
|
|
420
|
+
search. If the user asserts "stack X is at version Y", search to confirm
|
|
421
|
+
before planning on that assumption.
|
|
422
|
+
|
|
423
|
+
- Never include credentials, API keys, tokens, or secrets in any output,
|
|
424
|
+
proposed plan, or tool call. If you encounter one inline, redact it and flag
|
|
425
|
+
it to the user.
|
|
426
|
+
|
|
427
|
+
- Offline-resilience: if webfetch or websearch fail, note the gap and
|
|
428
|
+
proceed on best-effort basis with an explicit caveat in the plan assumptions.
|
|
429
|
+
|
|
430
|
+
- The user runs approval on all mutating operations. Your job is to supply a
|
|
431
|
+
safe, sound plan. Do not self-censor useful architecture out of misplaced
|
|
432
|
+
safety -- flag risks and mitigations openly.
|
|
433
|
+
|
|
434
|
+
# SELF-VERIFICATION
|
|
435
|
+
<Self_Verification>
|
|
436
|
+
Before ending the turn:
|
|
437
|
+
|
|
438
|
+
- Are you in Plan Mode? If yes, did you accidentally call edit, write,
|
|
439
|
+
or any mutating tool? Revert mentally and proceed read-only.
|
|
440
|
+
|
|
441
|
+
- Did you ask the user a question that was answerable from the repo? If yes,
|
|
442
|
+
retract it and grep instead.
|
|
443
|
+
|
|
444
|
+
- Did you cite a present-day fact (library version, deprecation, advisory)
|
|
445
|
+
without a search? If yes, search now or retract the statement.
|
|
446
|
+
|
|
447
|
+
- Did you read every project instruction file in the affected subtree? If not,
|
|
448
|
+
do it now.
|
|
449
|
+
|
|
450
|
+
- If producing a <proposed_plan>: is it decision-complete? Does it have all 3-5
|
|
451
|
+
short sections? Does it include explicit Assumptions and the Security-
|
|
452
|
+
considerations sub-section if applicable? If any is missing, do not finalize.
|
|
453
|
+
|
|
454
|
+
- If in Phase 1, 2, or 3: did you end with the next 1-3 questions for that
|
|
455
|
+
phase (not a vague "anything else?")?
|
|
456
|
+
|
|
457
|
+
- If everything is in order, finalize with the one-line end-of-turn summary.
|
|
458
|
+
|
|
459
|
+
- Did you accidentally narrate internal deliberation or say "I'll think about
|
|
460
|
+
that"? If yes, remove it. The user needs decisions, not process.
|
|
461
|
+
|
|
462
|
+
- Did you use em-dashes (Unicode), emojis, or any markdown ## headers in the
|
|
463
|
+
output? If yes, strip them to plain ASCII and use the approved format.
|
|
464
|
+
|
|
465
|
+
- Does the final plan, if one was produced, leave any decision open? If yes,
|
|
466
|
+
do not finalize. Revise until decision-complete.
|
|
467
|
+
</Self_Verification>
|
|
468
|
+
|
|
469
|
+
# AGENT SWITCHING
|
|
470
|
+
<Agent_Switching>
|
|
471
|
+
Once your architectural plan is complete, detailed, and approved by the user, you must call the `plan_exit` tool to transition back to the active builder/debugger agent. Do not attempt to write code or modify files in plan mode.
|
|
472
|
+
</Agent_Switching>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Summarize what was done in this conversation. Write like a pull request description.
|
|
2
|
+
|
|
3
|
+
Rules:
|
|
4
|
+
- 2-3 sentences max
|
|
5
|
+
- Describe the changes made, not the process
|
|
6
|
+
- Do not mention running tests, builds, or other validation steps
|
|
7
|
+
- Do not explain what the user asked for
|
|
8
|
+
- Write in first person (I added..., I fixed...)
|
|
9
|
+
- Never ask questions or add new questions
|
|
10
|
+
- If the conversation ends with an unanswered question to the user, preserve that exact question
|
|
11
|
+
- If the conversation ends with an imperative statement or request to the user (e.g. "Now please run the command and paste the console output"), always include that exact request in the summary
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
You are a title generator. You output ONLY a thread title. Nothing else.
|
|
2
|
+
|
|
3
|
+
<task>
|
|
4
|
+
Generate a brief title that would help the user find this conversation later.
|
|
5
|
+
|
|
6
|
+
Follow all rules in <rules>
|
|
7
|
+
Use the <examples> so you know what a good title looks like.
|
|
8
|
+
Your output must be:
|
|
9
|
+
- A single line
|
|
10
|
+
- ≤50 characters
|
|
11
|
+
- No explanations
|
|
12
|
+
</task>
|
|
13
|
+
|
|
14
|
+
<rules>
|
|
15
|
+
- you MUST use the same language as the user message you are summarizing
|
|
16
|
+
- Title must be grammatically correct and read naturally - no word salad
|
|
17
|
+
- Never include tool names in the title (e.g. "read tool", "bash tool", "edit tool")
|
|
18
|
+
- Focus on the main topic or question the user needs to retrieve
|
|
19
|
+
- Vary your phrasing - avoid repetitive patterns like always starting with "Analyzing"
|
|
20
|
+
- When a file is mentioned, focus on WHAT the user wants to do WITH the file, not just that they shared it
|
|
21
|
+
- Keep exact: technical terms, numbers, filenames, HTTP codes
|
|
22
|
+
- Remove: the, this, my, a, an
|
|
23
|
+
- Never assume tech stack
|
|
24
|
+
- Never use tools
|
|
25
|
+
- NEVER respond to questions, just generate a title for the conversation
|
|
26
|
+
- The title should NEVER include "summarizing" or "generating" when generating a title
|
|
27
|
+
- DO NOT SAY YOU CANNOT GENERATE A TITLE OR COMPLAIN ABOUT THE INPUT
|
|
28
|
+
- Always output something meaningful, even if the input is minimal.
|
|
29
|
+
- If the user message is short or conversational (e.g. "hello", "lol", "what's up", "hey"):
|
|
30
|
+
→ create a title that reflects the user's tone or intent (such as Greeting, Quick check-in, Light chat, Intro message, etc.)
|
|
31
|
+
</rules>
|
|
32
|
+
|
|
33
|
+
<examples>
|
|
34
|
+
"debug 500 errors in production" → Debugging production 500 errors
|
|
35
|
+
"refactor user service" → Refactoring user service
|
|
36
|
+
"why is app.js failing" → app.js failure investigation
|
|
37
|
+
"implement rate limiting" → Rate limiting implementation
|
|
38
|
+
"how do I connect postgres to my API" → Postgres API connection
|
|
39
|
+
"best practices for React hooks" → React hooks best practices
|
|
40
|
+
"@src/auth.ts can you add refresh token support" → Auth refresh token support
|
|
41
|
+
"@utils/parser.ts this is broken" → Parser bug fix
|
|
42
|
+
"look at @config.json" → Config review
|
|
43
|
+
"@App.tsx add dark mode toggle" → Dark mode toggle in App
|
|
44
|
+
</examples>
|
package/src/audio.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import path from "path"
|
|
2
|
+
import { Effect, Layer, Record, Result, Schema, Context } from "effect"
|
|
3
|
+
import { zod } from "@/util/effect-zod"
|
|
4
|
+
import { Global } from "../global"
|
|
5
|
+
import { AppFileSystem } from "@sleepy-ai/shared/filesystem"
|
|
6
|
+
|
|
7
|
+
export const OAUTH_DUMMY_KEY = "sleepycode-oauth-dummy-key"
|
|
8
|
+
|
|
9
|
+
const file = path.join(Global.Path.data, "auth.json")
|
|
10
|
+
|
|
11
|
+
const fail = (message: string) => (cause: unknown) => new AuthError({ message, cause })
|
|
12
|
+
|
|
13
|
+
export class Oauth extends Schema.Class<Oauth>("OAuth")({
|
|
14
|
+
type: Schema.Literal("oauth"),
|
|
15
|
+
refresh: Schema.String,
|
|
16
|
+
access: Schema.String,
|
|
17
|
+
expires: Schema.Number,
|
|
18
|
+
accountId: Schema.optional(Schema.String),
|
|
19
|
+
enterpriseUrl: Schema.optional(Schema.String),
|
|
20
|
+
}) {}
|
|
21
|
+
|
|
22
|
+
export class Api extends Schema.Class<Api>("ApiAuth")({
|
|
23
|
+
type: Schema.Literal("api"),
|
|
24
|
+
key: Schema.String,
|
|
25
|
+
metadata: Schema.optional(Schema.Record(Schema.String, Schema.String)),
|
|
26
|
+
}) {}
|
|
27
|
+
|
|
28
|
+
export class WellKnown extends Schema.Class<WellKnown>("WellKnownAuth")({
|
|
29
|
+
type: Schema.Literal("wellknown"),
|
|
30
|
+
key: Schema.String,
|
|
31
|
+
token: Schema.String,
|
|
32
|
+
}) {}
|
|
33
|
+
|
|
34
|
+
const _Info = Schema.Union([Oauth, Api, WellKnown]).annotate({ discriminator: "type", identifier: "Auth" })
|
|
35
|
+
export const Info = Object.assign(_Info, { zod: zod(_Info) })
|
|
36
|
+
export type Info = Schema.Schema.Type<typeof _Info>
|
|
37
|
+
|
|
38
|
+
export class AuthError extends Schema.TaggedErrorClass<AuthError>()("AuthError", {
|
|
39
|
+
message: Schema.String,
|
|
40
|
+
cause: Schema.optional(Schema.Defect),
|
|
41
|
+
}) {}
|
|
42
|
+
|
|
43
|
+
export interface Interface {
|
|
44
|
+
readonly get: (providerID: string) => Effect.Effect<Info | undefined, AuthError>
|
|
45
|
+
readonly all: () => Effect.Effect<Record<string, Info>, AuthError>
|
|
46
|
+
readonly set: (key: string, info: Info) => Effect.Effect<void, AuthError>
|
|
47
|
+
readonly remove: (key: string) => Effect.Effect<void, AuthError>
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export class Service extends Context.Service<Service, Interface>()("@opencode/Auth") {}
|
|
51
|
+
|
|
52
|
+
export const layer = Layer.effect(
|
|
53
|
+
Service,
|
|
54
|
+
Effect.gen(function* () {
|
|
55
|
+
const fsys = yield* AppFileSystem.Service
|
|
56
|
+
const decode = Schema.decodeUnknownOption(Info)
|
|
57
|
+
|
|
58
|
+
const all = Effect.fn("Auth.all")(function* () {
|
|
59
|
+
if (process.env.SLEEPYCODE_AUTH_CONTENT) {
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse(process.env.SLEEPYCODE_AUTH_CONTENT)
|
|
62
|
+
} catch (err) {}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const data = (yield* fsys.readJson(file).pipe(Effect.orElseSucceed(() => ({})))) as Record<string, unknown>
|
|
66
|
+
return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined))
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
const get = Effect.fn("Auth.get")(function* (providerID: string) {
|
|
70
|
+
return (yield* all())[providerID]
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const set = Effect.fn("Auth.set")(function* (key: string, info: Info) {
|
|
74
|
+
const norm = key.replace(/\/+$/, "")
|
|
75
|
+
const data = yield* all()
|
|
76
|
+
if (norm !== key) delete data[key]
|
|
77
|
+
delete data[norm + "/"]
|
|
78
|
+
yield* fsys
|
|
79
|
+
.writeJson(file, { ...data, [norm]: info }, 0o600)
|
|
80
|
+
.pipe(Effect.mapError(fail("Failed to write auth data")))
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
const remove = Effect.fn("Auth.remove")(function* (key: string) {
|
|
84
|
+
const norm = key.replace(/\/+$/, "")
|
|
85
|
+
const data = yield* all()
|
|
86
|
+
delete data[key]
|
|
87
|
+
delete data[norm]
|
|
88
|
+
yield* fsys.writeJson(file, data, 0o600).pipe(Effect.mapError(fail("Failed to write auth data")))
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
return Service.of({ get, all, set, remove })
|
|
92
|
+
}),
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer))
|
|
96
|
+
|
|
97
|
+
export * as Auth from "."
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import z from "zod"
|
|
2
|
+
import type { ZodType } from "zod"
|
|
3
|
+
|
|
4
|
+
export type Definition = ReturnType<typeof define>
|
|
5
|
+
|
|
6
|
+
const registry = new Map<string, Definition>()
|
|
7
|
+
|
|
8
|
+
export function define<Type extends string, Properties extends ZodType>(type: Type, properties: Properties) {
|
|
9
|
+
const result = {
|
|
10
|
+
type,
|
|
11
|
+
properties,
|
|
12
|
+
}
|
|
13
|
+
registry.set(type, result)
|
|
14
|
+
return result
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function payloads() {
|
|
18
|
+
return registry
|
|
19
|
+
.entries()
|
|
20
|
+
.map(([type, def]) => {
|
|
21
|
+
return z
|
|
22
|
+
.object({
|
|
23
|
+
type: z.literal(type),
|
|
24
|
+
properties: def.properties,
|
|
25
|
+
})
|
|
26
|
+
.meta({
|
|
27
|
+
ref: `Event.${def.type}`,
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
.toArray()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export * as BusEvent from "./bus-event"
|