catui-agent 1.0.0-beta.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/LICENSE +674 -0
- package/README.md +267 -0
- package/dist/build-meta.json +6 -0
- package/dist/builtin-extensions.d.ts +47 -0
- package/dist/builtin-extensions.js +1 -0
- package/dist/catui-defaults.d.ts +555 -0
- package/dist/catui-defaults.js +22 -0
- package/dist/cli/args.d.ts +70 -0
- package/dist/cli/args.js +158 -0
- package/dist/cli/config-selector.d.ts +10 -0
- package/dist/cli/config-selector.js +1 -0
- package/dist/cli/file-processor.d.ts +11 -0
- package/dist/cli/file-processor.js +6 -0
- package/dist/cli/list-models.d.ts +12 -0
- package/dist/cli/list-models.js +2 -0
- package/dist/cli/session-picker.d.ts +5 -0
- package/dist/cli/session-picker.js +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +2 -0
- package/dist/config.d.ts +103 -0
- package/dist/config.js +1 -0
- package/dist/core/agent-dir/agent-dir-context.d.ts +60 -0
- package/dist/core/agent-dir/agent-dir-context.js +1 -0
- package/dist/core/agent-dir/agent-metadata.d.ts +48 -0
- package/dist/core/agent-dir/agent-metadata.js +1 -0
- package/dist/core/agent-dir/migration-tool.d.ts +40 -0
- package/dist/core/agent-dir/migration-tool.js +7 -0
- package/dist/core/export-html/AGENT.md +12 -0
- package/dist/core/export-html/ansi-to-html.d.ts +9 -0
- package/dist/core/export-html/ansi-to-html.js +2 -0
- package/dist/core/export-html/index.d.ts +39 -0
- package/dist/core/export-html/index.js +2 -0
- package/dist/core/export-html/template.css +971 -0
- package/dist/core/export-html/template.html +54 -0
- package/dist/core/export-html/template.js +66 -0
- package/dist/core/export-html/tool-renderer.d.ts +28 -0
- package/dist/core/export-html/tool-renderer.js +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +4 -0
- package/dist/core/export-html/vendor/marked.min.js +56 -0
- package/dist/core/extensions-host/index.d.ts +13 -0
- package/dist/core/extensions-host/index.js +1 -0
- package/dist/core/extensions-host/loader.d.ts +21 -0
- package/dist/core/extensions-host/loader.js +1 -0
- package/dist/core/extensions-host/runner.d.ts +233 -0
- package/dist/core/extensions-host/runner.js +3 -0
- package/dist/core/extensions-host/types.d.ts +1079 -0
- package/dist/core/extensions-host/types.js +1 -0
- package/dist/core/extensions-host/wrapper.d.ts +29 -0
- package/dist/core/extensions-host/wrapper.js +2 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-continuations.d.ts +17 -0
- package/dist/core/lib/agent-core/src/agent-loop-continuations.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-stream-events.d.ts +19 -0
- package/dist/core/lib/agent-core/src/agent-loop-stream-events.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-results.d.ts +10 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-results.js +3 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.d.ts +22 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop.d.ts +26 -0
- package/dist/core/lib/agent-core/src/agent-loop.js +4 -0
- package/dist/core/lib/agent-core/src/agent-run-result.d.ts +9 -0
- package/dist/core/lib/agent-core/src/agent-run-result.js +1 -0
- package/dist/core/lib/agent-core/src/agent.d.ts +215 -0
- package/dist/core/lib/agent-core/src/agent.js +1 -0
- package/dist/core/lib/agent-core/src/errors.d.ts +62 -0
- package/dist/core/lib/agent-core/src/errors.js +1 -0
- package/dist/core/lib/agent-core/src/index.d.ts +14 -0
- package/dist/core/lib/agent-core/src/index.js +1 -0
- package/dist/core/lib/agent-core/src/proxy.d.ts +91 -0
- package/dist/core/lib/agent-core/src/proxy.js +2 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.d.ts +15 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.js +2 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.d.ts +33 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.js +1 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.d.ts +35 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.js +3 -0
- package/dist/core/lib/agent-core/src/types.d.ts +417 -0
- package/dist/core/lib/agent-core/src/types.js +1 -0
- package/dist/core/lib/ai/src/api-registry.d.ts +27 -0
- package/dist/core/lib/ai/src/api-registry.js +1 -0
- package/dist/core/lib/ai/src/config-path.d.ts +1 -0
- package/dist/core/lib/ai/src/config-path.js +1 -0
- package/dist/core/lib/ai/src/debug-logger.d.ts +94 -0
- package/dist/core/lib/ai/src/debug-logger.js +4 -0
- package/dist/core/lib/ai/src/env-api-keys.d.ts +8 -0
- package/dist/core/lib/ai/src/env-api-keys.js +1 -0
- package/dist/core/lib/ai/src/env.d.ts +7 -0
- package/dist/core/lib/ai/src/env.js +1 -0
- package/dist/core/lib/ai/src/events.d.ts +8 -0
- package/dist/core/lib/ai/src/events.js +1 -0
- package/dist/core/lib/ai/src/index.d.ts +27 -0
- package/dist/core/lib/ai/src/index.js +1 -0
- package/dist/core/lib/ai/src/json.d.ts +7 -0
- package/dist/core/lib/ai/src/json.js +1 -0
- package/dist/core/lib/ai/src/models.d.ts +31 -0
- package/dist/core/lib/ai/src/models.generated.d.ts +15315 -0
- package/dist/core/lib/ai/src/models.generated.js +1 -0
- package/dist/core/lib/ai/src/models.js +1 -0
- package/dist/core/lib/ai/src/overflow.d.ts +7 -0
- package/dist/core/lib/ai/src/overflow.js +1 -0
- package/dist/core/lib/ai/src/providers/amazon-bedrock.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/amazon-bedrock.js +1 -0
- package/dist/core/lib/ai/src/providers/anthropic.d.ts +38 -0
- package/dist/core/lib/ai/src/providers/anthropic.js +2 -0
- package/dist/core/lib/ai/src/providers/azure-openai-responses.d.ts +21 -0
- package/dist/core/lib/ai/src/providers/azure-openai-responses.js +1 -0
- package/dist/core/lib/ai/src/providers/github-copilot-headers.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/github-copilot-headers.js +1 -0
- package/dist/core/lib/ai/src/providers/google-gemini-cli.d.ts +79 -0
- package/dist/core/lib/ai/src/providers/google-gemini-cli.js +2 -0
- package/dist/core/lib/ai/src/providers/google-shared.d.ts +70 -0
- package/dist/core/lib/ai/src/providers/google-shared.js +2 -0
- package/dist/core/lib/ai/src/providers/google-vertex.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/google-vertex.js +1 -0
- package/dist/core/lib/ai/src/providers/google.d.ts +18 -0
- package/dist/core/lib/ai/src/providers/google.js +1 -0
- package/dist/core/lib/ai/src/providers/openai-codex-responses.d.ts +8 -0
- package/dist/core/lib/ai/src/providers/openai-codex-responses.js +7 -0
- package/dist/core/lib/ai/src/providers/openai-completions.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/openai-completions.js +6 -0
- package/dist/core/lib/ai/src/providers/openai-responses-shared.d.ts +22 -0
- package/dist/core/lib/ai/src/providers/openai-responses-shared.js +10 -0
- package/dist/core/lib/ai/src/providers/openai-responses.d.ts +19 -0
- package/dist/core/lib/ai/src/providers/openai-responses.js +1 -0
- package/dist/core/lib/ai/src/providers/register-builtins.d.ts +8 -0
- package/dist/core/lib/ai/src/providers/register-builtins.js +1 -0
- package/dist/core/lib/ai/src/providers/simple-options.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/simple-options.js +1 -0
- package/dist/core/lib/ai/src/providers/transform-messages.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/transform-messages.js +1 -0
- package/dist/core/lib/ai/src/registry.d.ts +8 -0
- package/dist/core/lib/ai/src/registry.js +1 -0
- package/dist/core/lib/ai/src/schema.d.ts +10 -0
- package/dist/core/lib/ai/src/schema.js +1 -0
- package/dist/core/lib/ai/src/stream.d.ts +33 -0
- package/dist/core/lib/ai/src/stream.js +1 -0
- package/dist/core/lib/ai/src/types.d.ts +331 -0
- package/dist/core/lib/ai/src/types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.d.ts +12 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/event-stream.js +1 -0
- package/dist/core/lib/ai/src/utils/http-proxy.d.ts +13 -0
- package/dist/core/lib/ai/src/utils/http-proxy.js +1 -0
- package/dist/core/lib/ai/src/utils/json-parse.d.ts +14 -0
- package/dist/core/lib/ai/src/utils/json-parse.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/anthropic.d.ts +22 -0
- package/dist/core/lib/ai/src/utils/oauth/anthropic.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/decode-credential.d.ts +12 -0
- package/dist/core/lib/ai/src/utils/oauth/decode-credential.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/github-copilot.d.ts +35 -0
- package/dist/core/lib/ai/src/utils/oauth/github-copilot.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/google-antigravity.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/oauth/google-antigravity.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/index.d.ts +60 -0
- package/dist/core/lib/ai/src/utils/oauth/index.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/openai-codex.d.ts +39 -0
- package/dist/core/lib/ai/src/utils/oauth/openai-codex.js +11 -0
- package/dist/core/lib/ai/src/utils/oauth/pkce.d.ts +18 -0
- package/dist/core/lib/ai/src/utils/oauth/pkce.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/types.d.ts +52 -0
- package/dist/core/lib/ai/src/utils/oauth/types.js +0 -0
- package/dist/core/lib/ai/src/utils/overflow.d.ts +57 -0
- package/dist/core/lib/ai/src/utils/overflow.js +1 -0
- package/dist/core/lib/ai/src/utils/sanitize-unicode.d.ts +16 -0
- package/dist/core/lib/ai/src/utils/sanitize-unicode.js +1 -0
- package/dist/core/lib/ai/src/utils/typebox-helpers.d.ts +22 -0
- package/dist/core/lib/ai/src/utils/typebox-helpers.js +1 -0
- package/dist/core/lib/ai/src/utils/validation.d.ts +23 -0
- package/dist/core/lib/ai/src/utils/validation.js +6 -0
- package/dist/core/lib/tui/src/autocomplete.d.ts +62 -0
- package/dist/core/lib/tui/src/autocomplete.js +2 -0
- package/dist/core/lib/tui/src/components/box.d.ts +27 -0
- package/dist/core/lib/tui/src/components/box.js +1 -0
- package/dist/core/lib/tui/src/components/cached-container.d.ts +42 -0
- package/dist/core/lib/tui/src/components/cached-container.js +1 -0
- package/dist/core/lib/tui/src/components/cancellable-loader.d.ts +27 -0
- package/dist/core/lib/tui/src/components/cancellable-loader.js +1 -0
- package/dist/core/lib/tui/src/components/editor.d.ts +222 -0
- package/dist/core/lib/tui/src/components/editor.js +21 -0
- package/dist/core/lib/tui/src/components/image.d.ts +33 -0
- package/dist/core/lib/tui/src/components/image.js +1 -0
- package/dist/core/lib/tui/src/components/input.d.ts +42 -0
- package/dist/core/lib/tui/src/components/input.js +2 -0
- package/dist/core/lib/tui/src/components/loader.d.ts +26 -0
- package/dist/core/lib/tui/src/components/loader.js +1 -0
- package/dist/core/lib/tui/src/components/markdown.d.ts +100 -0
- package/dist/core/lib/tui/src/components/markdown.js +7 -0
- package/dist/core/lib/tui/src/components/select-list.d.ts +37 -0
- package/dist/core/lib/tui/src/components/select-list.js +1 -0
- package/dist/core/lib/tui/src/components/settings-list.d.ts +55 -0
- package/dist/core/lib/tui/src/components/settings-list.js +1 -0
- package/dist/core/lib/tui/src/components/spacer.d.ts +17 -0
- package/dist/core/lib/tui/src/components/spacer.js +1 -0
- package/dist/core/lib/tui/src/components/text.d.ts +24 -0
- package/dist/core/lib/tui/src/components/text.js +1 -0
- package/dist/core/lib/tui/src/components/truncated-text.d.ts +18 -0
- package/dist/core/lib/tui/src/components/truncated-text.js +2 -0
- package/dist/core/lib/tui/src/editor-component.d.ts +51 -0
- package/dist/core/lib/tui/src/editor-component.js +0 -0
- package/dist/core/lib/tui/src/fuzzy.d.ts +32 -0
- package/dist/core/lib/tui/src/fuzzy.js +1 -0
- package/dist/core/lib/tui/src/index.d.ts +29 -0
- package/dist/core/lib/tui/src/index.js +1 -0
- package/dist/core/lib/tui/src/keybindings.d.ts +44 -0
- package/dist/core/lib/tui/src/keybindings.js +1 -0
- package/dist/core/lib/tui/src/keys.d.ts +149 -0
- package/dist/core/lib/tui/src/keys.js +5 -0
- package/dist/core/lib/tui/src/kill-ring.d.ts +33 -0
- package/dist/core/lib/tui/src/kill-ring.js +1 -0
- package/dist/core/lib/tui/src/stdin-buffer.d.ts +38 -0
- package/dist/core/lib/tui/src/stdin-buffer.js +1 -0
- package/dist/core/lib/tui/src/terminal-image.d.ts +73 -0
- package/dist/core/lib/tui/src/terminal-image.js +1 -0
- package/dist/core/lib/tui/src/terminal.d.ts +86 -0
- package/dist/core/lib/tui/src/terminal.js +1 -0
- package/dist/core/lib/tui/src/tui.d.ts +220 -0
- package/dist/core/lib/tui/src/tui.js +12 -0
- package/dist/core/lib/tui/src/undo-stack.d.ts +22 -0
- package/dist/core/lib/tui/src/undo-stack.js +1 -0
- package/dist/core/lib/tui/src/utils.d.ts +83 -0
- package/dist/core/lib/tui/src/utils.js +2 -0
- package/dist/core/mcp/figma-auth.d.ts +21 -0
- package/dist/core/mcp/figma-auth.js +22 -0
- package/dist/core/mcp/index.d.ts +11 -0
- package/dist/core/mcp/index.js +1 -0
- package/dist/core/mcp/mcp-adapter.d.ts +21 -0
- package/dist/core/mcp/mcp-adapter.js +3 -0
- package/dist/core/mcp/mcp-client.d.ts +91 -0
- package/dist/core/mcp/mcp-client.js +6 -0
- package/dist/core/mcp/mcp-config.d.ts +55 -0
- package/dist/core/mcp/mcp-config.js +1 -0
- package/dist/core/mcp/mcp-guidance.d.ts +52 -0
- package/dist/core/mcp/mcp-guidance.js +54 -0
- package/dist/core/mcp/mcp-manager.d.ts +51 -0
- package/dist/core/mcp/mcp-manager.js +1 -0
- package/dist/core/mcp/mcp-types.d.ts +62 -0
- package/dist/core/mcp/mcp-types.js +0 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.js +17 -0
- package/dist/core/model/custom-providers.d.ts +34 -0
- package/dist/core/model/custom-providers.js +1 -0
- package/dist/core/model/discovery-cache.d.ts +65 -0
- package/dist/core/model/discovery-cache.js +1 -0
- package/dist/core/model/discovery-cache.test.d.ts +7 -0
- package/dist/core/model/discovery-cache.test.js +1 -0
- package/dist/core/model/discovery.d.ts +79 -0
- package/dist/core/model/discovery.js +1 -0
- package/dist/core/model/discovery.test.d.ts +7 -0
- package/dist/core/model/discovery.test.js +1 -0
- package/dist/core/model/index.d.ts +10 -0
- package/dist/core/model/index.js +1 -0
- package/dist/core/model/known-models.d.ts +65 -0
- package/dist/core/model/known-models.generated.d.ts +2 -0
- package/dist/core/model/known-models.generated.js +1 -0
- package/dist/core/model/known-models.js +1 -0
- package/dist/core/model/switcher.d.ts +80 -0
- package/dist/core/model/switcher.js +1 -0
- package/dist/core/model-registry.d.ts +186 -0
- package/dist/core/model-registry.js +9 -0
- package/dist/core/model-resolver.d.ts +106 -0
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/package-manager.d.ts +156 -0
- package/dist/core/package-manager.js +3 -0
- package/dist/core/persona/persona-manager.d.ts +35 -0
- package/dist/core/persona/persona-manager.js +5 -0
- package/dist/core/platform/abort-slot.d.ts +26 -0
- package/dist/core/platform/abort-slot.js +1 -0
- package/dist/core/platform/config/auth-storage.d.ts +126 -0
- package/dist/core/platform/config/auth-storage.js +1 -0
- package/dist/core/platform/config/defaults.d.ts +8 -0
- package/dist/core/platform/config/defaults.js +1 -0
- package/dist/core/platform/config/diagnostics.d.ts +20 -0
- package/dist/core/platform/config/diagnostics.js +0 -0
- package/dist/core/platform/config/resolve-config-value.d.ts +12 -0
- package/dist/core/platform/config/resolve-config-value.js +1 -0
- package/dist/core/platform/config/resource-loader.d.ts +188 -0
- package/dist/core/platform/config/resource-loader.js +2 -0
- package/dist/core/platform/config/settings-manager.d.ts +314 -0
- package/dist/core/platform/config/settings-manager.js +1 -0
- package/dist/core/platform/exec/bash-executor.d.ts +41 -0
- package/dist/core/platform/exec/bash-executor.js +1 -0
- package/dist/core/platform/exec/exec.d.ts +25 -0
- package/dist/core/platform/exec/exec.js +1 -0
- package/dist/core/platform/i18n/index.d.ts +26 -0
- package/dist/core/platform/i18n/index.js +1 -0
- package/dist/core/platform/i18n/messages.d.ts +56 -0
- package/dist/core/platform/i18n/messages.js +1 -0
- package/dist/core/platform/i18n/messages.zh.d.ts +56 -0
- package/dist/core/platform/i18n/messages.zh.js +1 -0
- package/dist/core/platform/i18n/slash-commands.d.ts +53 -0
- package/dist/core/platform/i18n/slash-commands.js +1 -0
- package/dist/core/platform/i18n/slash-commands.zh.d.ts +53 -0
- package/dist/core/platform/i18n/slash-commands.zh.js +1 -0
- package/dist/core/platform/i18n/themes.d.ts +11 -0
- package/dist/core/platform/i18n/themes.js +1 -0
- package/dist/core/platform/i18n/themes.zh.d.ts +11 -0
- package/dist/core/platform/i18n/themes.zh.js +1 -0
- package/dist/core/platform/keybindings.d.ts +61 -0
- package/dist/core/platform/keybindings.js +1 -0
- package/dist/core/platform/listeners.d.ts +21 -0
- package/dist/core/platform/listeners.js +1 -0
- package/dist/core/platform/telemetry/batching-dispatcher.d.ts +41 -0
- package/dist/core/platform/telemetry/batching-dispatcher.js +1 -0
- package/dist/core/platform/telemetry/build-meta.d.ts +12 -0
- package/dist/core/platform/telemetry/build-meta.js +1 -0
- package/dist/core/platform/telemetry/caller-context.d.ts +32 -0
- package/dist/core/platform/telemetry/caller-context.js +1 -0
- package/dist/core/platform/telemetry/credentials.d.ts +27 -0
- package/dist/core/platform/telemetry/credentials.js +1 -0
- package/dist/core/platform/telemetry/ext-events.d.ts +89 -0
- package/dist/core/platform/telemetry/ext-events.js +1 -0
- package/dist/core/platform/telemetry/index.d.ts +13 -0
- package/dist/core/platform/telemetry/index.js +1 -0
- package/dist/core/platform/telemetry/insforge-base.d.ts +37 -0
- package/dist/core/platform/telemetry/insforge-base.js +1 -0
- package/dist/core/platform/telemetry/types.d.ts +33 -0
- package/dist/core/platform/telemetry/types.js +0 -0
- package/dist/core/platform/timings.d.ts +2 -0
- package/dist/core/platform/timings.js +3 -0
- package/dist/core/platform/utils/logger.d.ts +75 -0
- package/dist/core/platform/utils/logger.js +1 -0
- package/dist/core/platform/utils/shell.d.ts +25 -0
- package/dist/core/platform/utils/shell.js +9 -0
- package/dist/core/platform/utils/sleep.d.ts +7 -0
- package/dist/core/platform/utils/sleep.js +1 -0
- package/dist/core/platform/utils/tools-manager.d.ts +19 -0
- package/dist/core/platform/utils/tools-manager.js +1 -0
- package/dist/core/prompt/prompt-templates.d.ts +49 -0
- package/dist/core/prompt/prompt-templates.js +2 -0
- package/dist/core/prompt/system-prompt.d.ts +24 -0
- package/dist/core/prompt/system-prompt.js +139 -0
- package/dist/core/runtime/agent-session.d.ts +676 -0
- package/dist/core/runtime/agent-session.js +15 -0
- package/dist/core/runtime/bash-runner.d.ts +56 -0
- package/dist/core/runtime/bash-runner.js +2 -0
- package/dist/core/runtime/catui-agent.d.ts +182 -0
- package/dist/core/runtime/catui-agent.js +1 -0
- package/dist/core/runtime/compaction-controller.d.ts +43 -0
- package/dist/core/runtime/compaction-controller.js +1 -0
- package/dist/core/runtime/default-tools.d.ts +9 -0
- package/dist/core/runtime/default-tools.js +1 -0
- package/dist/core/runtime/event-bridge.d.ts +21 -0
- package/dist/core/runtime/event-bridge.js +1 -0
- package/dist/core/runtime/event-bus.d.ts +8 -0
- package/dist/core/runtime/event-bus.js +1 -0
- package/dist/core/runtime/export-bridge.d.ts +23 -0
- package/dist/core/runtime/export-bridge.js +1 -0
- package/dist/core/runtime/extension-core-bindings.d.ts +46 -0
- package/dist/core/runtime/extension-core-bindings.js +3 -0
- package/dist/core/runtime/model-controller.d.ts +84 -0
- package/dist/core/runtime/model-controller.js +1 -0
- package/dist/core/runtime/model-cycle.d.ts +20 -0
- package/dist/core/runtime/model-cycle.js +1 -0
- package/dist/core/runtime/prompt-assembly.d.ts +20 -0
- package/dist/core/runtime/prompt-assembly.js +3 -0
- package/dist/core/runtime/retry-coordinator.d.ts +84 -0
- package/dist/core/runtime/retry-coordinator.js +1 -0
- package/dist/core/runtime/sdk.d.ts +163 -0
- package/dist/core/runtime/sdk.js +1 -0
- package/dist/core/runtime/session-context.d.ts +155 -0
- package/dist/core/runtime/session-context.js +0 -0
- package/dist/core/runtime/session-lifecycle-controller.d.ts +42 -0
- package/dist/core/runtime/session-lifecycle-controller.js +1 -0
- package/dist/core/runtime/session-tree-controller.d.ts +40 -0
- package/dist/core/runtime/session-tree-controller.js +1 -0
- package/dist/core/runtime/slash-command-catalog.d.ts +27 -0
- package/dist/core/runtime/slash-command-catalog.js +1 -0
- package/dist/core/runtime/thinking-levels.d.ts +31 -0
- package/dist/core/runtime/thinking-levels.js +1 -0
- package/dist/core/runtime/tool-runtime-controller.d.ts +35 -0
- package/dist/core/runtime/tool-runtime-controller.js +1 -0
- package/dist/core/runtime/turn-context.d.ts +52 -0
- package/dist/core/runtime/turn-context.js +1 -0
- package/dist/core/session/compaction/branch-summarization.d.ts +85 -0
- package/dist/core/session/compaction/branch-summarization.js +38 -0
- package/dist/core/session/compaction/compaction.d.ts +120 -0
- package/dist/core/session/compaction/compaction.js +104 -0
- package/dist/core/session/compaction/index.d.ts +9 -0
- package/dist/core/session/compaction/index.js +1 -0
- package/dist/core/session/compaction/utils.d.ts +37 -0
- package/dist/core/session/compaction/utils.js +17 -0
- package/dist/core/session/session-manager.d.ts +359 -0
- package/dist/core/session/session-manager.js +14 -0
- package/dist/core/skills.d.ts +57 -0
- package/dist/core/skills.js +4 -0
- package/dist/core/slash-commands.d.ts +36 -0
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/soul-integration.d.ts +77 -0
- package/dist/core/soul-integration.js +1 -0
- package/dist/core/soul-options-contract.d.ts +10 -0
- package/dist/core/soul-options-contract.js +0 -0
- package/dist/core/sub-agent/agent-definition-loader.d.ts +96 -0
- package/dist/core/sub-agent/agent-definition-loader.js +2 -0
- package/dist/core/sub-agent/agent-definition.d.ts +162 -0
- package/dist/core/sub-agent/agent-definition.js +6 -0
- package/dist/core/sub-agent/agent-handoff-safety.d.ts +39 -0
- package/dist/core/sub-agent/agent-handoff-safety.js +1 -0
- package/dist/core/sub-agent/agent-input-output.d.ts +143 -0
- package/dist/core/sub-agent/agent-input-output.js +1 -0
- package/dist/core/sub-agent/agent-output-persistence.d.ts +43 -0
- package/dist/core/sub-agent/agent-output-persistence.js +3 -0
- package/dist/core/sub-agent/agent-prompt-builder.d.ts +37 -0
- package/dist/core/sub-agent/agent-prompt-builder.js +2 -0
- package/dist/core/sub-agent/agent-registry.d.ts +145 -0
- package/dist/core/sub-agent/agent-registry.js +1 -0
- package/dist/core/sub-agent/agent-result-extractor.d.ts +28 -0
- package/dist/core/sub-agent/agent-result-extractor.js +3 -0
- package/dist/core/sub-agent/agent-telemetry.d.ts +71 -0
- package/dist/core/sub-agent/agent-telemetry.js +1 -0
- package/dist/core/sub-agent/agent-tool-filter.d.ts +89 -0
- package/dist/core/sub-agent/agent-tool-filter.js +2 -0
- package/dist/core/sub-agent/agent-tool.d.ts +69 -0
- package/dist/core/sub-agent/agent-tool.js +11 -0
- package/dist/core/sub-agent/index.d.ts +26 -0
- package/dist/core/sub-agent/index.js +1 -0
- package/dist/core/sub-agent/send-message-tool.d.ts +33 -0
- package/dist/core/sub-agent/send-message-tool.js +2 -0
- package/dist/core/sub-agent/sub-agent-backend.d.ts +26 -0
- package/dist/core/sub-agent/sub-agent-backend.js +7 -0
- package/dist/core/sub-agent/sub-agent-runtime.d.ts +34 -0
- package/dist/core/sub-agent/sub-agent-runtime.js +1 -0
- package/dist/core/sub-agent/sub-agent-types.d.ts +138 -0
- package/dist/core/sub-agent/sub-agent-types.js +0 -0
- package/dist/core/sub-agent/subprocess-backend.d.ts +35 -0
- package/dist/core/sub-agent/subprocess-backend.js +1 -0
- package/dist/core/sub-agent/subprocess-worker.d.ts +12 -0
- package/dist/core/sub-agent/subprocess-worker.js +1 -0
- package/dist/core/theme-contract.d.ts +32 -0
- package/dist/core/theme-contract.js +0 -0
- package/dist/core/tools/bash.d.ts +73 -0
- package/dist/core/tools/bash.js +21 -0
- package/dist/core/tools/edit-diff.d.ts +58 -0
- package/dist/core/tools/edit-diff.js +16 -0
- package/dist/core/tools/edit.d.ts +46 -0
- package/dist/core/tools/edit.js +1 -0
- package/dist/core/tools/file-state-cache.d.ts +30 -0
- package/dist/core/tools/file-state-cache.js +1 -0
- package/dist/core/tools/find.d.ts +46 -0
- package/dist/core/tools/find.js +8 -0
- package/dist/core/tools/grep.d.ts +58 -0
- package/dist/core/tools/grep.js +13 -0
- package/dist/core/tools/index.d.ts +116 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/input-validation.d.ts +13 -0
- package/dist/core/tools/input-validation.js +1 -0
- package/dist/core/tools/ls.d.ts +45 -0
- package/dist/core/tools/ls.js +4 -0
- package/dist/core/tools/orchestrator.d.ts +76 -0
- package/dist/core/tools/orchestrator.js +1 -0
- package/dist/core/tools/path-utils.d.ts +7 -0
- package/dist/core/tools/path-utils.js +1 -0
- package/dist/core/tools/pdf-extract.d.ts +11 -0
- package/dist/core/tools/pdf-extract.js +1 -0
- package/dist/core/tools/read.d.ts +46 -0
- package/dist/core/tools/read.js +11 -0
- package/dist/core/tools/source.d.ts +78 -0
- package/dist/core/tools/source.js +1 -0
- package/dist/core/tools/time.d.ts +19 -0
- package/dist/core/tools/time.js +2 -0
- package/dist/core/tools/truncate.d.ts +66 -0
- package/dist/core/tools/truncate.js +5 -0
- package/dist/core/tools/write-guard.d.ts +2 -0
- package/dist/core/tools/write-guard.js +1 -0
- package/dist/core/tools/write.d.ts +36 -0
- package/dist/core/tools/write.js +1 -0
- package/dist/core/workspace/index.d.ts +8 -0
- package/dist/core/workspace/index.js +1 -0
- package/dist/core/workspace/worktree-manager.d.ts +73 -0
- package/dist/core/workspace/worktree-manager.js +3 -0
- package/dist/extensions/builtin/AGENT.md +115 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.d.ts +9 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.js +4 -0
- package/dist/extensions/builtin/ask-user-question/index.d.ts +8 -0
- package/dist/extensions/builtin/ask-user-question/index.js +1 -0
- package/dist/extensions/builtin/ask-user-question/prompt.d.ts +14 -0
- package/dist/extensions/builtin/ask-user-question/prompt.js +30 -0
- package/dist/extensions/builtin/ask-user-question/types.d.ts +69 -0
- package/dist/extensions/builtin/ask-user-question/types.js +1 -0
- package/dist/extensions/builtin/browser/AGENT.md +17 -0
- package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -0
- package/dist/extensions/builtin/browser/browser.md +73 -0
- package/dist/extensions/builtin/browser/index.d.ts +8 -0
- package/dist/extensions/builtin/browser/index.js +15 -0
- package/dist/extensions/builtin/browser/install.md +142 -0
- package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -0
- package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -0
- package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -0
- package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -0
- package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -0
- package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -0
- package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -0
- package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -0
- package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -0
- package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -0
- package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -0
- package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -0
- package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -0
- package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -0
- package/dist/extensions/builtin/btw/index.d.ts +8 -0
- package/dist/extensions/builtin/btw/index.js +15 -0
- package/dist/extensions/builtin/debug/collectors.d.ts +96 -0
- package/dist/extensions/builtin/debug/collectors.js +7 -0
- package/dist/extensions/builtin/debug/index.d.ts +8 -0
- package/dist/extensions/builtin/debug/index.js +49 -0
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.d.ts +19 -0
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.js +1 -0
- package/dist/extensions/builtin/diagnostics/index.d.ts +8 -0
- package/dist/extensions/builtin/diagnostics/index.js +1 -0
- package/dist/extensions/builtin/diagnostics/redaction.d.ts +8 -0
- package/dist/extensions/builtin/diagnostics/redaction.js +1 -0
- package/dist/extensions/builtin/diagnostics/reporter.d.ts +17 -0
- package/dist/extensions/builtin/diagnostics/reporter.js +1 -0
- package/dist/extensions/builtin/diagnostics/types.d.ts +62 -0
- package/dist/extensions/builtin/diagnostics/types.js +1 -0
- package/dist/extensions/builtin/discipline/index.d.ts +8 -0
- package/dist/extensions/builtin/discipline/index.js +7 -0
- package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -0
- package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -0
- package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -0
- package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -0
- package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -0
- package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -0
- package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -0
- package/dist/extensions/builtin/goal/README.md +67 -0
- package/dist/extensions/builtin/goal/goal-command.d.ts +13 -0
- package/dist/extensions/builtin/goal/goal-command.js +9 -0
- package/dist/extensions/builtin/goal/goal-controller.d.ts +143 -0
- package/dist/extensions/builtin/goal/goal-controller.js +1 -0
- package/dist/extensions/builtin/goal/goal-format.d.ts +52 -0
- package/dist/extensions/builtin/goal/goal-format.js +1 -0
- package/dist/extensions/builtin/goal/goal-parser.d.ts +27 -0
- package/dist/extensions/builtin/goal/goal-parser.js +2 -0
- package/dist/extensions/builtin/goal/goal-prompts.d.ts +15 -0
- package/dist/extensions/builtin/goal/goal-prompts.js +5 -0
- package/dist/extensions/builtin/goal/goal-store.d.ts +28 -0
- package/dist/extensions/builtin/goal/goal-store.js +1 -0
- package/dist/extensions/builtin/goal/goal-tools.d.ts +26 -0
- package/dist/extensions/builtin/goal/goal-tools.js +3 -0
- package/dist/extensions/builtin/goal/goal-types.d.ts +87 -0
- package/dist/extensions/builtin/goal/goal-types.js +1 -0
- package/dist/extensions/builtin/goal/index.d.ts +8 -0
- package/dist/extensions/builtin/goal/index.js +10 -0
- package/dist/extensions/builtin/grub/README.md +112 -0
- package/dist/extensions/builtin/grub/grub-controller.d.ts +67 -0
- package/dist/extensions/builtin/grub/grub-controller.js +1 -0
- package/dist/extensions/builtin/grub/grub-decision.d.ts +8 -0
- package/dist/extensions/builtin/grub/grub-decision.js +1 -0
- package/dist/extensions/builtin/grub/grub-feature-list.d.ts +54 -0
- package/dist/extensions/builtin/grub/grub-feature-list.js +2 -0
- package/dist/extensions/builtin/grub/grub-format.d.ts +13 -0
- package/dist/extensions/builtin/grub/grub-format.js +4 -0
- package/dist/extensions/builtin/grub/grub-harness.d.ts +9 -0
- package/dist/extensions/builtin/grub/grub-harness.js +3 -0
- package/dist/extensions/builtin/grub/grub-i18n.d.ts +166 -0
- package/dist/extensions/builtin/grub/grub-i18n.js +1 -0
- package/dist/extensions/builtin/grub/grub-parser.d.ts +24 -0
- package/dist/extensions/builtin/grub/grub-parser.js +2 -0
- package/dist/extensions/builtin/grub/grub-persistence.d.ts +17 -0
- package/dist/extensions/builtin/grub/grub-persistence.js +2 -0
- package/dist/extensions/builtin/grub/grub-prompts.d.ts +12 -0
- package/dist/extensions/builtin/grub/grub-prompts.js +97 -0
- package/dist/extensions/builtin/grub/grub-turn.d.ts +16 -0
- package/dist/extensions/builtin/grub/grub-turn.js +1 -0
- package/dist/extensions/builtin/grub/grub-types.d.ts +110 -0
- package/dist/extensions/builtin/grub/grub-types.js +1 -0
- package/dist/extensions/builtin/grub/index.d.ts +8 -0
- package/dist/extensions/builtin/grub/index.js +6 -0
- package/dist/extensions/builtin/idle-think/curiosity.d.ts +46 -0
- package/dist/extensions/builtin/idle-think/curiosity.js +2 -0
- package/dist/extensions/builtin/idle-think/idle-think-runtime.d.ts +46 -0
- package/dist/extensions/builtin/idle-think/idle-think-runtime.js +1 -0
- package/dist/extensions/builtin/idle-think/index.d.ts +15 -0
- package/dist/extensions/builtin/idle-think/index.js +1 -0
- package/dist/extensions/builtin/idle-think/insights.d.ts +27 -0
- package/dist/extensions/builtin/idle-think/insights.js +5 -0
- package/dist/extensions/builtin/idle-think/thinker.d.ts +26 -0
- package/dist/extensions/builtin/idle-think/thinker.js +9 -0
- package/dist/extensions/builtin/insights/html-report.d.ts +21 -0
- package/dist/extensions/builtin/insights/html-report.js +463 -0
- package/dist/extensions/builtin/insights/index.d.ts +24 -0
- package/dist/extensions/builtin/insights/index.js +2 -0
- package/dist/extensions/builtin/insights/insights-engine.d.ts +18 -0
- package/dist/extensions/builtin/insights/insights-engine.js +39 -0
- package/dist/extensions/builtin/insights/prompts.d.ts +17 -0
- package/dist/extensions/builtin/insights/prompts.js +180 -0
- package/dist/extensions/builtin/insights/session-scanner.d.ts +27 -0
- package/dist/extensions/builtin/insights/session-scanner.js +19 -0
- package/dist/extensions/builtin/insights/stats.d.ts +13 -0
- package/dist/extensions/builtin/insights/stats.js +1 -0
- package/dist/extensions/builtin/insights/types.d.ts +199 -0
- package/dist/extensions/builtin/insights/types.js +0 -0
- package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -0
- package/dist/extensions/builtin/link-world/index.d.ts +8 -0
- package/dist/extensions/builtin/link-world/index.js +19 -0
- package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -0
- package/dist/extensions/builtin/link-world/link-world-agent.md +82 -0
- package/dist/extensions/builtin/link-world/linkworld.md +313 -0
- package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -0
- package/dist/extensions/builtin/loop/README.md +92 -0
- package/dist/extensions/builtin/loop/cron/cron-parser.d.ts +56 -0
- package/dist/extensions/builtin/loop/cron/cron-parser.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-scheduler.d.ts +85 -0
- package/dist/extensions/builtin/loop/cron/cron-scheduler.js +10 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.d.ts +42 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.d.ts +200 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.js +2 -0
- package/dist/extensions/builtin/loop/cron/index.d.ts +18 -0
- package/dist/extensions/builtin/loop/cron/index.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.d.ts +29 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.d.ts +25 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.js +2 -0
- package/dist/extensions/builtin/loop/cron-tools/index.d.ts +16 -0
- package/dist/extensions/builtin/loop/cron-tools/index.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.js +38 -0
- package/dist/extensions/builtin/loop/index.d.ts +19 -0
- package/dist/extensions/builtin/loop/index.js +2 -0
- package/dist/extensions/builtin/loop/loop-skill.d.ts +18 -0
- package/dist/extensions/builtin/loop/loop-skill.js +58 -0
- package/dist/extensions/builtin/lsp/index.d.ts +8 -0
- package/dist/extensions/builtin/lsp/index.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-client.d.ts +22 -0
- package/dist/extensions/builtin/lsp/lsp-client.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-config.d.ts +8 -0
- package/dist/extensions/builtin/lsp/lsp-config.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.d.ts +15 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.js +18 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.d.ts +24 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.d.ts +21 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-tool.d.ts +33 -0
- package/dist/extensions/builtin/lsp/lsp-tool.js +2 -0
- package/dist/extensions/builtin/lsp/types.d.ts +31 -0
- package/dist/extensions/builtin/lsp/types.js +1 -0
- package/dist/extensions/builtin/mcp/figma-design.md +68 -0
- package/dist/extensions/builtin/mcp/index.d.ts +14 -0
- package/dist/extensions/builtin/mcp/index.js +25 -0
- package/dist/extensions/builtin/mcp/mcp-management.md +85 -0
- package/dist/extensions/builtin/plan/clear-context-state.d.ts +8 -0
- package/dist/extensions/builtin/plan/clear-context-state.js +1 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.d.ts +11 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.js +2 -0
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.d.ts +18 -0
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.js +13 -0
- package/dist/extensions/builtin/plan/index.d.ts +8 -0
- package/dist/extensions/builtin/plan/index.js +24 -0
- package/dist/extensions/builtin/plan/plan-agents.d.ts +23 -0
- package/dist/extensions/builtin/plan/plan-agents.js +43 -0
- package/dist/extensions/builtin/plan/plan-file-manager.d.ts +26 -0
- package/dist/extensions/builtin/plan/plan-file-manager.js +1 -0
- package/dist/extensions/builtin/plan/plan-permissions.d.ts +15 -0
- package/dist/extensions/builtin/plan/plan-permissions.js +12 -0
- package/dist/extensions/builtin/plan/plan-validation.d.ts +18 -0
- package/dist/extensions/builtin/plan/plan-validation.js +5 -0
- package/dist/extensions/builtin/plan/plan-workflow-prompt.d.ts +18 -0
- package/dist/extensions/builtin/plan/plan-workflow-prompt.js +102 -0
- package/dist/extensions/builtin/plan/teammate-approval.d.ts +49 -0
- package/dist/extensions/builtin/plan/teammate-approval.js +3 -0
- package/dist/extensions/builtin/plan/types.d.ts +133 -0
- package/dist/extensions/builtin/plan/types.js +1 -0
- package/dist/extensions/builtin/presence/index.d.ts +40 -0
- package/dist/extensions/builtin/presence/index.js +15 -0
- package/dist/extensions/builtin/presence/presence-memory.d.ts +47 -0
- package/dist/extensions/builtin/presence/presence-memory.js +1 -0
- package/dist/extensions/builtin/recap/AGENT.md +15 -0
- package/dist/extensions/builtin/recap/index.d.ts +8 -0
- package/dist/extensions/builtin/recap/index.js +1 -0
- package/dist/extensions/builtin/recap/recap-budget.d.ts +24 -0
- package/dist/extensions/builtin/recap/recap-budget.js +1 -0
- package/dist/extensions/builtin/recap/recap-extractor.d.ts +34 -0
- package/dist/extensions/builtin/recap/recap-extractor.js +3 -0
- package/dist/extensions/builtin/recap/recap-renderer.d.ts +19 -0
- package/dist/extensions/builtin/recap/recap-renderer.js +2 -0
- package/dist/extensions/builtin/recap/recap-synthesizer.d.ts +51 -0
- package/dist/extensions/builtin/recap/recap-synthesizer.js +19 -0
- package/dist/extensions/builtin/recap/recap-types.d.ts +40 -0
- package/dist/extensions/builtin/recap/recap-types.js +1 -0
- package/dist/extensions/builtin/sal/README.md +72 -0
- package/dist/extensions/builtin/sal/anchors.d.ts +46 -0
- package/dist/extensions/builtin/sal/anchors.js +1 -0
- package/dist/extensions/builtin/sal/eval/index.d.ts +18 -0
- package/dist/extensions/builtin/sal/eval/index.js +1 -0
- package/dist/extensions/builtin/sal/eval/insforge-sink.d.ts +30 -0
- package/dist/extensions/builtin/sal/eval/insforge-sink.js +1 -0
- package/dist/extensions/builtin/sal/eval/jsonl-sink.d.ts +27 -0
- package/dist/extensions/builtin/sal/eval/jsonl-sink.js +3 -0
- package/dist/extensions/builtin/sal/eval/noop-sink.d.ts +8 -0
- package/dist/extensions/builtin/sal/eval/noop-sink.js +1 -0
- package/dist/extensions/builtin/sal/eval/types.d.ts +60 -0
- package/dist/extensions/builtin/sal/eval/types.js +1 -0
- package/dist/extensions/builtin/sal/index.d.ts +12 -0
- package/dist/extensions/builtin/sal/index.js +7 -0
- package/dist/extensions/builtin/sal/sal-config.d.ts +46 -0
- package/dist/extensions/builtin/sal/sal-config.js +1 -0
- package/dist/extensions/builtin/sal/sal-context.d.ts +11 -0
- package/dist/extensions/builtin/sal/sal-context.js +2 -0
- package/dist/extensions/builtin/sal/sal-runtime.d.ts +72 -0
- package/dist/extensions/builtin/sal/sal-runtime.js +0 -0
- package/dist/extensions/builtin/sal/sal-trace.d.ts +11 -0
- package/dist/extensions/builtin/sal/sal-trace.js +1 -0
- package/dist/extensions/builtin/sal/terrain.d.ts +73 -0
- package/dist/extensions/builtin/sal/terrain.js +3 -0
- package/dist/extensions/builtin/sal/weights.d.ts +28 -0
- package/dist/extensions/builtin/sal/weights.js +1 -0
- package/dist/extensions/builtin/security-audit/README.md +289 -0
- package/dist/extensions/builtin/security-audit/engine/detector.d.ts +44 -0
- package/dist/extensions/builtin/security-audit/engine/detector.js +1 -0
- package/dist/extensions/builtin/security-audit/engine/interceptor.d.ts +61 -0
- package/dist/extensions/builtin/security-audit/engine/interceptor.js +27 -0
- package/dist/extensions/builtin/security-audit/engine/logger.d.ts +65 -0
- package/dist/extensions/builtin/security-audit/engine/logger.js +65 -0
- package/dist/extensions/builtin/security-audit/index.d.ts +13 -0
- package/dist/extensions/builtin/security-audit/index.js +49 -0
- package/dist/extensions/builtin/security-audit/interface.d.ts +167 -0
- package/dist/extensions/builtin/security-audit/interface.js +1 -0
- package/dist/extensions/builtin/soul/index.d.ts +13 -0
- package/dist/extensions/builtin/soul/index.js +1 -0
- package/dist/extensions/builtin/subagent/index.d.ts +8 -0
- package/dist/extensions/builtin/subagent/index.js +8 -0
- package/dist/extensions/builtin/subagent/subagent-parser.d.ts +30 -0
- package/dist/extensions/builtin/subagent/subagent-parser.js +15 -0
- package/dist/extensions/builtin/subagent/subagent-runner.d.ts +49 -0
- package/dist/extensions/builtin/subagent/subagent-runner.js +8 -0
- package/dist/extensions/builtin/subagent/subagent-types.d.ts +57 -0
- package/dist/extensions/builtin/subagent/subagent-types.js +0 -0
- package/dist/extensions/builtin/task/index.d.ts +8 -0
- package/dist/extensions/builtin/task/index.js +1 -0
- package/dist/extensions/builtin/task/task-store.d.ts +42 -0
- package/dist/extensions/builtin/task/task-store.js +1 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.d.ts +37 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.js +40 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.js +23 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.d.ts +27 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.js +22 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.d.ts +32 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.js +10 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.js +5 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.d.ts +47 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.js +77 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.d.ts +34 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.js +14 -0
- package/dist/extensions/builtin/task/task-types.d.ts +30 -0
- package/dist/extensions/builtin/task/task-types.js +1 -0
- package/dist/extensions/builtin/teach/README.md +197 -0
- package/dist/extensions/builtin/teach/index.d.ts +12 -0
- package/dist/extensions/builtin/teach/index.js +6 -0
- package/dist/extensions/builtin/teach/references/analogy-library.md +153 -0
- package/dist/extensions/builtin/teach/references/learning-paths.md +214 -0
- package/dist/extensions/builtin/teach/references/source-verification.md +268 -0
- package/dist/extensions/builtin/teach/references/teaching-template.md +237 -0
- package/dist/extensions/builtin/teach/teach-format.d.ts +35 -0
- package/dist/extensions/builtin/teach/teach-format.js +6 -0
- package/dist/extensions/builtin/teach/teach-i18n.d.ts +47 -0
- package/dist/extensions/builtin/teach/teach-i18n.js +1 -0
- package/dist/extensions/builtin/teach/teach-persistence.d.ts +36 -0
- package/dist/extensions/builtin/teach/teach-persistence.js +35 -0
- package/dist/extensions/builtin/teach/teach-prompts.d.ts +52 -0
- package/dist/extensions/builtin/teach/teach-prompts.js +35 -0
- package/dist/extensions/builtin/teach/teach-runtime.d.ts +93 -0
- package/dist/extensions/builtin/teach/teach-runtime.js +9 -0
- package/dist/extensions/builtin/teach/teach-types.d.ts +81 -0
- package/dist/extensions/builtin/teach/teach-types.js +0 -0
- package/dist/extensions/builtin/team/AGENT.md +112 -0
- package/dist/extensions/builtin/team/TESTING.md +299 -0
- package/dist/extensions/builtin/team/index.d.ts +26 -0
- package/dist/extensions/builtin/team/index.js +11 -0
- package/dist/extensions/builtin/team/team-dashboard.d.ts +13 -0
- package/dist/extensions/builtin/team/team-dashboard.js +1 -0
- package/dist/extensions/builtin/team/team-harness.d.ts +35 -0
- package/dist/extensions/builtin/team/team-harness.js +18 -0
- package/dist/extensions/builtin/team/team-mailbox.d.ts +50 -0
- package/dist/extensions/builtin/team/team-mailbox.js +4 -0
- package/dist/extensions/builtin/team/team-orchestrator.d.ts +39 -0
- package/dist/extensions/builtin/team/team-orchestrator.js +5 -0
- package/dist/extensions/builtin/team/team-parser.d.ts +84 -0
- package/dist/extensions/builtin/team/team-parser.js +38 -0
- package/dist/extensions/builtin/team/team-permissions.d.ts +63 -0
- package/dist/extensions/builtin/team/team-permissions.js +1 -0
- package/dist/extensions/builtin/team/team-presets.d.ts +45 -0
- package/dist/extensions/builtin/team/team-presets.js +2 -0
- package/dist/extensions/builtin/team/team-psyche.d.ts +14 -0
- package/dist/extensions/builtin/team/team-psyche.js +5 -0
- package/dist/extensions/builtin/team/team-runtime-helpers.d.ts +48 -0
- package/dist/extensions/builtin/team/team-runtime-helpers.js +2 -0
- package/dist/extensions/builtin/team/team-runtime.d.ts +91 -0
- package/dist/extensions/builtin/team/team-runtime.js +3 -0
- package/dist/extensions/builtin/team/team-state-store.d.ts +29 -0
- package/dist/extensions/builtin/team/team-state-store.js +2 -0
- package/dist/extensions/builtin/team/team-task-store.d.ts +35 -0
- package/dist/extensions/builtin/team/team-task-store.js +2 -0
- package/dist/extensions/builtin/team/team-transcript.d.ts +31 -0
- package/dist/extensions/builtin/team/team-transcript.js +2 -0
- package/dist/extensions/builtin/team/team-types.d.ts +250 -0
- package/dist/extensions/builtin/team/team-types.js +0 -0
- package/dist/extensions/builtin/team/team-ui.d.ts +50 -0
- package/dist/extensions/builtin/team/team-ui.js +2 -0
- package/dist/extensions/builtin/token-save/README.md +56 -0
- package/dist/extensions/builtin/token-save/config.d.ts +8 -0
- package/dist/extensions/builtin/token-save/config.js +1 -0
- package/dist/extensions/builtin/token-save/filters.d.ts +14 -0
- package/dist/extensions/builtin/token-save/filters.js +24 -0
- package/dist/extensions/builtin/token-save/index.d.ts +8 -0
- package/dist/extensions/builtin/token-save/index.js +4 -0
- package/dist/extensions/builtin/token-save/lexer.d.ts +11 -0
- package/dist/extensions/builtin/token-save/lexer.js +1 -0
- package/dist/extensions/builtin/token-save/recovery.d.ts +1 -0
- package/dist/extensions/builtin/token-save/recovery.js +1 -0
- package/dist/extensions/builtin/token-save/rewrite.d.ts +19 -0
- package/dist/extensions/builtin/token-save/rewrite.js +1 -0
- package/dist/extensions/builtin/token-save/runner.d.ts +14 -0
- package/dist/extensions/builtin/token-save/runner.js +3 -0
- package/dist/extensions/builtin/token-save/stream.d.ts +20 -0
- package/dist/extensions/builtin/token-save/stream.js +1 -0
- package/dist/extensions/builtin/token-save/toml-dsl.d.ts +25 -0
- package/dist/extensions/builtin/token-save/toml-dsl.js +3 -0
- package/dist/extensions/builtin/token-save/tracking.d.ts +24 -0
- package/dist/extensions/builtin/token-save/tracking.js +8 -0
- package/dist/extensions/optional/AGENT.md +11 -0
- package/dist/extensions/optional/export-html/index.d.ts +41 -0
- package/dist/extensions/optional/export-html/index.js +2 -0
- package/dist/extensions/optional/simplify/index.d.ts +35 -0
- package/dist/extensions/optional/simplify/index.js +77 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.js +41 -0
- package/dist/migrations.d.ts +30 -0
- package/dist/migrations.js +4 -0
- package/dist/models.d.ts +7 -0
- package/dist/models.js +1 -0
- package/dist/modes/acp/acp-mode.d.ts +30 -0
- package/dist/modes/acp/acp-mode.js +25 -0
- package/dist/modes/index.d.ts +14 -0
- package/dist/modes/index.js +1 -0
- package/dist/modes/interactive/agent-loop-status.d.ts +8 -0
- package/dist/modes/interactive/agent-loop-status.js +1 -0
- package/dist/modes/interactive/components/apikey-input.d.ts +10 -0
- package/dist/modes/interactive/components/apikey-input.js +3 -0
- package/dist/modes/interactive/components/armin.d.ts +39 -0
- package/dist/modes/interactive/components/armin.js +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +21 -0
- package/dist/modes/interactive/components/assistant-message.js +1 -0
- package/dist/modes/interactive/components/attachments-bar.d.ts +37 -0
- package/dist/modes/interactive/components/attachments-bar.js +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +40 -0
- package/dist/modes/interactive/components/bash-execution.js +13 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +21 -0
- package/dist/modes/interactive/components/bordered-loader.js +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +21 -0
- package/dist/modes/interactive/components/branch-summary-message.js +3 -0
- package/dist/modes/interactive/components/buddy/pet-sprites.d.ts +31 -0
- package/dist/modes/interactive/components/buddy/pet-sprites.js +1 -0
- package/dist/modes/interactive/components/catui-loader.d.ts +55 -0
- package/dist/modes/interactive/components/catui-loader.js +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +21 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +3 -0
- package/dist/modes/interactive/components/config-selector.d.ts +76 -0
- package/dist/modes/interactive/components/config-selector.js +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +19 -0
- package/dist/modes/interactive/components/countdown-timer.js +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +37 -0
- package/dist/modes/interactive/components/custom-editor.js +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +26 -0
- package/dist/modes/interactive/components/custom-message.js +2 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +28 -0
- package/dist/modes/interactive/components/daxnuts.js +1 -0
- package/dist/modes/interactive/components/diff.d.ts +17 -0
- package/dist/modes/interactive/components/diff.js +3 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +20 -0
- package/dist/modes/interactive/components/dynamic-border.js +1 -0
- package/dist/modes/interactive/components/editor-buddy-layout.d.ts +17 -0
- package/dist/modes/interactive/components/editor-buddy-layout.js +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +25 -0
- package/dist/modes/interactive/components/extension-editor.js +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +29 -0
- package/dist/modes/interactive/components/extension-input.js +2 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +32 -0
- package/dist/modes/interactive/components/extension-selector.js +2 -0
- package/dist/modes/interactive/components/footer.d.ts +34 -0
- package/dist/modes/interactive/components/footer.js +1 -0
- package/dist/modes/interactive/components/index.d.ts +44 -0
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +46 -0
- package/dist/modes/interactive/components/keybinding-hints.js +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +47 -0
- package/dist/modes/interactive/components/login-dialog.js +1 -0
- package/dist/modes/interactive/components/memory-stats.d.ts +14 -0
- package/dist/modes/interactive/components/memory-stats.js +2 -0
- package/dist/modes/interactive/components/model-selector.d.ts +59 -0
- package/dist/modes/interactive/components/model-selector.js +2 -0
- package/dist/modes/interactive/components/notification-queue.d.ts +49 -0
- package/dist/modes/interactive/components/notification-queue.js +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +30 -0
- package/dist/modes/interactive/components/oauth-selector.js +1 -0
- package/dist/modes/interactive/components/persona-selector.d.ts +24 -0
- package/dist/modes/interactive/components/persona-selector.js +1 -0
- package/dist/modes/interactive/components/plan-progress-panel.d.ts +24 -0
- package/dist/modes/interactive/components/plan-progress-panel.js +1 -0
- package/dist/modes/interactive/components/provider-selector.d.ts +25 -0
- package/dist/modes/interactive/components/provider-selector.js +1 -0
- package/dist/modes/interactive/components/raw-text.d.ts +19 -0
- package/dist/modes/interactive/components/raw-text.js +3 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +54 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +28 -0
- package/dist/modes/interactive/components/session-selector-search.js +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +100 -0
- package/dist/modes/interactive/components/session-selector.js +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/modes/interactive/components/settings-selector.js +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +15 -0
- package/dist/modes/interactive/components/show-images-selector.js +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +22 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -0
- package/dist/modes/interactive/components/soul-stats.d.ts +15 -0
- package/dist/modes/interactive/components/soul-stats.js +2 -0
- package/dist/modes/interactive/components/sub-agent-panel.d.ts +24 -0
- package/dist/modes/interactive/components/sub-agent-panel.js +1 -0
- package/dist/modes/interactive/components/task-status-panel.d.ts +36 -0
- package/dist/modes/interactive/components/task-status-panel.js +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +16 -0
- package/dist/modes/interactive/components/theme-selector.js +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +16 -0
- package/dist/modes/interactive/components/thinking-selector.js +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +80 -0
- package/dist/modes/interactive/components/tool-execution.js +58 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +73 -0
- package/dist/modes/interactive/components/tree-selector.js +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +35 -0
- package/dist/modes/interactive/components/user-message-selector.js +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +13 -0
- package/dist/modes/interactive/components/user-message.js +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +29 -0
- package/dist/modes/interactive/components/visual-truncate.js +1 -0
- package/dist/modes/interactive/controllers/auth-provider-config-controller.d.ts +64 -0
- package/dist/modes/interactive/controllers/auth-provider-config-controller.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.d.ts +38 -0
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.d.ts +37 -0
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.d.ts +53 -0
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.d.ts +52 -0
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.js +2 -0
- package/dist/modes/interactive/controllers/image-pipeline-controller.d.ts +106 -0
- package/dist/modes/interactive/controllers/image-pipeline-controller.js +1 -0
- package/dist/modes/interactive/controllers/input-submit-controller.d.ts +80 -0
- package/dist/modes/interactive/controllers/input-submit-controller.js +2 -0
- package/dist/modes/interactive/controllers/interrupt-controller.d.ts +75 -0
- package/dist/modes/interactive/controllers/interrupt-controller.js +1 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.d.ts +127 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.js +3 -0
- package/dist/modes/interactive/controllers/self-update-controller.d.ts +71 -0
- package/dist/modes/interactive/controllers/self-update-controller.js +24 -0
- package/dist/modes/interactive/controllers/settings-overlay-controller.d.ts +56 -0
- package/dist/modes/interactive/controllers/settings-overlay-controller.js +2 -0
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.d.ts +74 -0
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.js +1 -0
- package/dist/modes/interactive/controllers/stream-render-controller.d.ts +110 -0
- package/dist/modes/interactive/controllers/stream-render-controller.js +2 -0
- package/dist/modes/interactive/controllers/tree-overlay-controller.d.ts +55 -0
- package/dist/modes/interactive/controllers/tree-overlay-controller.js +1 -0
- package/dist/modes/interactive/footer-data-provider.d.ts +32 -0
- package/dist/modes/interactive/footer-data-provider.js +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +303 -0
- package/dist/modes/interactive/interactive-mode.js +119 -0
- package/dist/modes/interactive/services/tips.d.ts +20 -0
- package/dist/modes/interactive/services/tips.js +1 -0
- package/dist/modes/interactive/slash-command-arguments.d.ts +28 -0
- package/dist/modes/interactive/slash-command-arguments.js +1 -0
- package/dist/modes/interactive/state/interactive-state.d.ts +74 -0
- package/dist/modes/interactive/state/interactive-state.js +1 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.js +16 -0
- package/dist/modes/interactive/theme/warm.json +81 -0
- package/dist/modes/print-mode.d.ts +38 -0
- package/dist/modes/print-mode.js +2 -0
- package/dist/modes/rpc/rpc-client.d.ts +221 -0
- package/dist/modes/rpc/rpc-client.js +2 -0
- package/dist/modes/rpc/rpc-mode.d.ts +14 -0
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +449 -0
- package/dist/modes/rpc/rpc-types.js +0 -0
- package/dist/modes/utils/agent-loop-result-format.d.ts +10 -0
- package/dist/modes/utils/agent-loop-result-format.js +1 -0
- package/dist/modes/utils/clipboard-image.d.ts +10 -0
- package/dist/modes/utils/clipboard-image.js +1 -0
- package/dist/modes/utils/clipboard-native.d.ts +11 -0
- package/dist/modes/utils/clipboard-native.js +1 -0
- package/dist/modes/utils/clipboard.d.ts +1 -0
- package/dist/modes/utils/clipboard.js +1 -0
- package/dist/modes/utils/image-convert.d.ts +8 -0
- package/dist/modes/utils/image-convert.js +1 -0
- package/dist/modes/utils/image-resize.d.ts +41 -0
- package/dist/modes/utils/image-resize.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-continuations.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-stream-events.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-results.js +3 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-summaries.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop.js +4 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-run-result.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/errors.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/index.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/proxy.js +2 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-agent-loop.js +2 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-streaming-tool-executor.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-tool-orchestration.js +3 -0
- package/dist/node_modules/@catui/agent-core/dist/types.js +1 -0
- package/dist/node_modules/@catui/agent-core/package.json +28 -0
- package/dist/node_modules/@catui/ai/dist/api-registry.js +1 -0
- package/dist/node_modules/@catui/ai/dist/cli.js +21 -0
- package/dist/node_modules/@catui/ai/dist/config-path.js +1 -0
- package/dist/node_modules/@catui/ai/dist/debug-logger.js +4 -0
- package/dist/node_modules/@catui/ai/dist/env-api-keys.js +1 -0
- package/dist/node_modules/@catui/ai/dist/env.js +1 -0
- package/dist/node_modules/@catui/ai/dist/events.js +1 -0
- package/dist/node_modules/@catui/ai/dist/index.js +1 -0
- package/dist/node_modules/@catui/ai/dist/json.js +1 -0
- package/dist/node_modules/@catui/ai/dist/models.generated.js +1 -0
- package/dist/node_modules/@catui/ai/dist/models.js +1 -0
- package/dist/node_modules/@catui/ai/dist/overflow.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/amazon-bedrock.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/anthropic.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/azure-openai-responses.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/github-copilot-headers.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-gemini-cli.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-shared.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-vertex.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/google.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-codex-responses.js +7 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-completions.js +6 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-responses-shared.js +10 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-responses.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/register-builtins.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/simple-options.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/transform-messages.js +1 -0
- package/dist/node_modules/@catui/ai/dist/registry.js +1 -0
- package/dist/node_modules/@catui/ai/dist/schema.js +1 -0
- package/dist/node_modules/@catui/ai/dist/stream.js +1 -0
- package/dist/node_modules/@catui/ai/dist/types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/event-stream-types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/event-stream.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/http-proxy.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/json-parse.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/anthropic.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/decode-credential.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/github-copilot.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/google-antigravity.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/google-gemini-cli.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/index.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/openai-codex.js +11 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/pkce.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/overflow.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/sanitize-unicode.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/typebox-helpers.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/validation.js +6 -0
- package/dist/node_modules/@catui/ai/package.json +106 -0
- package/dist/node_modules/@catui/tui/dist/autocomplete.js +2 -0
- package/dist/node_modules/@catui/tui/dist/components/box.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/cached-container.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/cancellable-loader.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/editor.js +21 -0
- package/dist/node_modules/@catui/tui/dist/components/image.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/input.js +2 -0
- package/dist/node_modules/@catui/tui/dist/components/loader.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/markdown.js +7 -0
- package/dist/node_modules/@catui/tui/dist/components/select-list.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/settings-list.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/spacer.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/text.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/truncated-text.js +2 -0
- package/dist/node_modules/@catui/tui/dist/editor-component.js +0 -0
- package/dist/node_modules/@catui/tui/dist/fuzzy.js +1 -0
- package/dist/node_modules/@catui/tui/dist/index.js +1 -0
- package/dist/node_modules/@catui/tui/dist/keybindings.js +1 -0
- package/dist/node_modules/@catui/tui/dist/keys.js +5 -0
- package/dist/node_modules/@catui/tui/dist/kill-ring.js +1 -0
- package/dist/node_modules/@catui/tui/dist/stdin-buffer.js +1 -0
- package/dist/node_modules/@catui/tui/dist/terminal-image.js +1 -0
- package/dist/node_modules/@catui/tui/dist/terminal.js +1 -0
- package/dist/node_modules/@catui/tui/dist/tui.js +12 -0
- package/dist/node_modules/@catui/tui/dist/undo-stack.js +1 -0
- package/dist/node_modules/@catui/tui/dist/utils.js +2 -0
- package/dist/node_modules/@catui/tui/package.json +37 -0
- package/dist/packages/mem-core/src/store.d.ts +21 -0
- package/dist/packages/mem-core/src/store.js +1 -0
- package/dist/packages/mem-core/src/types.d.ts +329 -0
- package/dist/packages/mem-core/src/types.js +0 -0
- package/dist/packages/protocol/src/commands.d.ts +33 -0
- package/dist/packages/protocol/src/commands.js +0 -0
- package/dist/packages/protocol/src/flags.d.ts +20 -0
- package/dist/packages/protocol/src/flags.js +0 -0
- package/dist/packages/protocol/src/hooks.d.ts +17 -0
- package/dist/packages/protocol/src/hooks.js +0 -0
- package/dist/packages/protocol/src/index.d.ts +15 -0
- package/dist/packages/protocol/src/index.js +1 -0
- package/dist/packages/protocol/src/lifecycle.d.ts +61 -0
- package/dist/packages/protocol/src/lifecycle.js +0 -0
- package/dist/packages/protocol/src/tools.d.ts +77 -0
- package/dist/packages/protocol/src/tools.js +0 -0
- package/dist/packages/soul-core/src/config.d.ts +20 -0
- package/dist/packages/soul-core/src/config.js +1 -0
- package/dist/packages/soul-core/src/diagnostics.d.ts +23 -0
- package/dist/packages/soul-core/src/diagnostics.js +1 -0
- package/dist/packages/soul-core/src/evolution.d.ts +75 -0
- package/dist/packages/soul-core/src/evolution.js +1 -0
- package/dist/packages/soul-core/src/index.d.ts +13 -0
- package/dist/packages/soul-core/src/index.js +1 -0
- package/dist/packages/soul-core/src/injection.d.ts +35 -0
- package/dist/packages/soul-core/src/injection.js +8 -0
- package/dist/packages/soul-core/src/manager.d.ts +101 -0
- package/dist/packages/soul-core/src/manager.js +1 -0
- package/dist/packages/soul-core/src/store.d.ts +62 -0
- package/dist/packages/soul-core/src/store.js +1 -0
- package/dist/packages/soul-core/src/types.d.ts +317 -0
- package/dist/packages/soul-core/src/types.js +0 -0
- package/dist/public-config.d.ts +12 -0
- package/dist/public-config.js +1 -0
- package/dist/runtime.d.ts +9 -0
- package/dist/runtime.js +1 -0
- package/dist/session-compaction.d.ts +7 -0
- package/dist/session-compaction.js +1 -0
- package/dist/session.d.ts +7 -0
- package/dist/session.js +1 -0
- package/dist/skills.d.ts +7 -0
- package/dist/skills.js +1 -0
- package/dist/tools.d.ts +7 -0
- package/dist/tools.js +1 -0
- package/dist/utils/changelog.d.ts +20 -0
- package/dist/utils/changelog.js +4 -0
- package/dist/utils/diagnostics.d.ts +37 -0
- package/dist/utils/diagnostics.js +1 -0
- package/dist/utils/frontmatter.d.ts +7 -0
- package/dist/utils/frontmatter.js +4 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.js +1 -0
- package/dist/utils/mime.d.ts +1 -0
- package/dist/utils/mime.js +1 -0
- package/dist/utils/photon.d.ts +6 -0
- package/dist/utils/photon.js +1 -0
- package/dist/utils/startup-profiler.d.ts +87 -0
- package/dist/utils/startup-profiler.js +2 -0
- package/docs/codex-goal-command-impl.md +1055 -0
- package/docs/codex-goal-vs-grub.md +500 -0
- package/docs/custom-provider.md +27 -0
- package/docs/extensions.md +27 -0
- package/docs/keybindings.md +27 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +251 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +123 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -0
- package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +321 -0
- package/docs/loop-usage-examples.md +215 -0
- package/docs/models.md +27 -0
- package/docs/packages.md +27 -0
- package/docs/pi-design-philosophy.md +457 -0
- package/docs/planmode.md +1987 -0
- package/docs/prompt-templates.md +27 -0
- package/docs/providers.md +27 -0
- package/docs/sdk.md +27 -0
- package/docs/skills.md +27 -0
- package/docs/themes.md +27 -0
- package/docs/tui.md +27 -0
- package/package.json +191 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: createCronScheduler, CronScheduler, isRecurringTaskAged, buildMissedTaskNotification
|
|
3
|
+
* [FROM]: Depends on chokidar, ./cron-parser, ./cron-tasks, ./cron-tasks-lock
|
|
4
|
+
* [TO]: Consumed by loop/index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron/cron-scheduler.ts - non-React scheduler core for scheduled_tasks.json
|
|
6
|
+
*
|
|
7
|
+
* Non-React scheduler core for .claude/scheduled_tasks.json.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/utils/cronScheduler.ts
|
|
10
|
+
*
|
|
11
|
+
* Lifecycle: poll scheduledTasksEnabled until true (flag flips when
|
|
12
|
+
* CronCreate runs) → load tasks + watch the file + start a 1s check
|
|
13
|
+
* timer → on fire, call onFire(prompt). stop() tears everything down.
|
|
14
|
+
*/
|
|
15
|
+
import { type CronJitterConfig, type CronTask } from "./cron-tasks.js";
|
|
16
|
+
/**
|
|
17
|
+
* True when a recurring task was created more than `maxAgeMs` ago and should
|
|
18
|
+
* be deleted on its next fire. Permanent tasks never age. `maxAgeMs === 0`
|
|
19
|
+
* means unlimited (never ages out).
|
|
20
|
+
*/
|
|
21
|
+
export declare function isRecurringTaskAged(t: CronTask, nowMs: number, maxAgeMs: number): boolean;
|
|
22
|
+
type CronSchedulerOptions = {
|
|
23
|
+
/** Called when a task fires (regular or missed-on-startup). */
|
|
24
|
+
onFire: (prompt: string) => void;
|
|
25
|
+
/** While true, firing is deferred to the next tick. */
|
|
26
|
+
isLoading: () => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* When true, bypasses the isLoading gate in check() and auto-enables the
|
|
29
|
+
* scheduler without waiting for setScheduledTasksEnabled().
|
|
30
|
+
*/
|
|
31
|
+
assistantMode?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* When provided, receives the full CronTask on normal fires (and onFire is
|
|
34
|
+
* NOT called for that fire). Lets callers see the task id/cron/etc
|
|
35
|
+
* instead of just the prompt string.
|
|
36
|
+
*/
|
|
37
|
+
onFireTask?: (task: CronTask) => void;
|
|
38
|
+
/**
|
|
39
|
+
* When provided, receives the missed one-shot tasks on initial load (and
|
|
40
|
+
* onFire is NOT called with the pre-formatted notification).
|
|
41
|
+
*/
|
|
42
|
+
onMissed?: (tasks: CronTask[]) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Directory containing .claude/scheduled_tasks.json. Required for durable tasks.
|
|
45
|
+
*/
|
|
46
|
+
dir?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Owner key written into the lock file. Defaults to a generated UUID.
|
|
49
|
+
* PID remains the liveness probe regardless.
|
|
50
|
+
*/
|
|
51
|
+
lockIdentity?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the cron jitter config to use for this tick. Called once per
|
|
54
|
+
* check() cycle.
|
|
55
|
+
*/
|
|
56
|
+
getJitterConfig?: () => CronJitterConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Killswitch: polled once per check() tick. When true, check() bails
|
|
59
|
+
* before firing anything.
|
|
60
|
+
*/
|
|
61
|
+
isKilled?: () => boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Per-task gate applied before any side effect. Tasks returning false are
|
|
64
|
+
* invisible to this scheduler.
|
|
65
|
+
*/
|
|
66
|
+
filter?: (t: CronTask) => boolean;
|
|
67
|
+
};
|
|
68
|
+
export type CronScheduler = {
|
|
69
|
+
start: () => void;
|
|
70
|
+
stop: () => void;
|
|
71
|
+
/**
|
|
72
|
+
* Epoch ms of the soonest scheduled fire across all loaded tasks, or null
|
|
73
|
+
* if nothing is scheduled.
|
|
74
|
+
*/
|
|
75
|
+
getNextFireTime: () => number | null;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Build the missed-task notification text. Guidance precedes the task list
|
|
79
|
+
* and the list is wrapped in a code fence so a multi-line imperative prompt
|
|
80
|
+
* is not interpreted as immediate instructions to avoid self-inflicted
|
|
81
|
+
* prompt injection.
|
|
82
|
+
*/
|
|
83
|
+
export declare function buildMissedTaskNotification(missed: CronTask[]): string;
|
|
84
|
+
export declare function createCronScheduler(options: CronSchedulerOptions): CronScheduler;
|
|
85
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var H=Object.defineProperty;var p=(a,r)=>H(a,"name",{value:r,configurable:!0});import{cronToHuman as U}from"./cron-parser.js";import{DEFAULT_CRON_JITTER_CONFIG as V,findMissedTasks as q,getCronFilePath as z,hasCronTasksSync as G,jitteredNextCronRunMs as O,markCronTasksFired as Q,oneShotJitteredNextCronRunMs as W,readCronTasks as Y,removeCronTasks as D,getSessionCronTasks as X,removeSessionCronTasks as Z}from"./cron-tasks.js";import{releaseSchedulerLock as R,tryAcquireSchedulerLock as P}from"./cron-tasks-lock.js";const j=1e3,ee=300,ne=5e3;function te(a,r,k){return k===0?!1:!!(a.recurring&&!a.permanent&&r-a.createdAt>=k)}p(te,"isRecurringTaskAged");function ie(a){const r=a.length>1,k=`The following one-shot scheduled task${r?"s were":" was"} missed while Claude was not running. ${r?"They have":"It has"} already been removed from .claude/scheduled_tasks.json.
|
|
2
|
+
|
|
3
|
+
Do NOT execute ${r?"these prompts":"this prompt"} yet. First use the AskUserQuestion tool to ask whether to run ${r?"each one":"it"} now. Only execute if the user confirms.`,C=a.map(m=>{const x=`[${U(m.cron)}, created ${new Date(m.createdAt).toLocaleString()}]`,t=(m.prompt.match(/`+/g)??[]).reduce(($,M)=>Math.max($,M.length),0),v="`".repeat(Math.max(3,t+1));return`${x}
|
|
4
|
+
${v}
|
|
5
|
+
${m.prompt}
|
|
6
|
+
${v}`});return`${k}
|
|
7
|
+
|
|
8
|
+
${C.join(`
|
|
9
|
+
|
|
10
|
+
`)}`}p(ie,"buildMissedTaskNotification");function le(a){const{onFire:r,isLoading:k,assistantMode:C=!1,onFireTask:m,onMissed:x,dir:t,lockIdentity:v,getJitterConfig:$,isKilled:M,filter:A}=a,c=t||v?{dir:t,lockIdentity:v}:void 0;let _=[];const o=new Map,E=new Set,I=new Set;let f=null,w=null,d=null,T=null,u=!1,h=!1,F=!1;const y=v??`session-${process.pid}-${Date.now()}`;async function L(n){if(!t)return;const i=await Y(t);if(u||(_=i,!n))return;const g=Date.now(),l=q(i,g).filter(s=>!s.recurring&&!E.has(s.id)&&(!A||A(s)));if(l.length>0){for(const s of l)E.add(s.id),o.set(s.id,1/0);x?x(l):r(ie(l)),D(l.map(s=>s.id),t).catch(()=>{})}}p(L,"load");function B(){if(M?.()||k()&&!C)return;const n=Date.now(),i=new Set,g=[],l=$?.()??V;function s(e,b){if(A&&!A(e)||(i.add(e.id),I.has(e.id)))return;let S=o.get(e.id);if(S===void 0&&(S=e.recurring?O(e.cron,e.lastFiredAt??e.createdAt,e.id,l)??1/0:W(e.cron,e.createdAt,e.id,l)??1/0,o.set(e.id,S)),n<S)return;m?m(e):r(e.prompt);const J=te(e,n,l.recurringMaxAgeMs);if(e.recurring&&!J){const K=O(e.cron,n,e.id,l)??1/0;o.set(e.id,K),b||g.push(e.id)}else b?(Z([e.id]),o.delete(e.id)):(I.add(e.id),D([e.id],t).catch(()=>{}).finally(()=>I.delete(e.id)),o.delete(e.id))}if(p(s,"process"),h){for(const e of _)s(e,!1);if(g.length>0){for(const e of g)I.add(e);Q(g,n,t).catch(()=>{}).finally(()=>{for(const e of g)I.delete(e)})}}for(const e of X())s(e,!0);if(i.size===0){o.clear();return}for(const e of o.keys())i.has(e)||o.delete(e)}p(B,"check");async function N(){if(u)return;f&&(clearInterval(f),f=null);const{default:n}=await import("chokidar");if(!u){if(c&&(h=await P(c,y).catch(()=>!1)),u){h&&c&&(h=!1,R(c,y));return}if(!h&&c&&(d=setInterval(()=>{P(c,y).then(i=>{if(u){i&&R(c,y);return}i&&(h=!0,d&&(clearInterval(d),d=null))}).catch(()=>{})},ne),d?.unref?.()),L(!0),t){const i=z(t);T=n.watch(i,{persistent:!1,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:ee},ignorePermissionErrors:!0}),T.on("add",()=>{L(!1)}),T.on("change",()=>{L(!1)}),T.on("unlink",()=>{u||(_=[],o.clear())})}w=setInterval(B,j),w?.unref?.()}}return p(N,"enable"),{start(){if(u=!1,t!==void 0){N();return}if(t&&!F&&(C||G(t))&&(F=!0),F){N();return}f=setInterval(n=>{F&&n()},j,N),f?.unref?.()},stop(){u=!0,f&&(clearInterval(f),f=null),w&&(clearInterval(w),w=null),d&&(clearInterval(d),d=null),T?.close(),T=null,h&&c&&(h=!1,R(c,y))},getNextFireTime(){let n=1/0;for(const i of o.values())i<n&&(n=i);return n===1/0?null:n}}}p(le,"createCronScheduler");export{ie as buildMissedTaskNotification,le as createCronScheduler,te as isRecurringTaskAged};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: SchedulerLockOptions, tryAcquireSchedulerLock, releaseSchedulerLock
|
|
3
|
+
* [FROM]: Depends on node:fs/promises, node:path
|
|
4
|
+
* [TO]: Consumed by ./cron-scheduler, ./index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron/cron-tasks-lock.ts - scheduler lease lock for scheduled_tasks.json
|
|
6
|
+
*
|
|
7
|
+
* Scheduler lease lock for .claude/scheduled_tasks.json.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/utils/cronTasksLock.ts
|
|
10
|
+
*
|
|
11
|
+
* When multiple Claude sessions run in the same project directory, only one
|
|
12
|
+
* should drive the cron scheduler. The first session to acquire this lock
|
|
13
|
+
* becomes the scheduler; others stay passive and periodically probe the lock.
|
|
14
|
+
* If the owner dies (PID no longer running), a passive session takes over.
|
|
15
|
+
*
|
|
16
|
+
* Pattern mirrors computerUseLock.ts: O_EXCL atomic create, PID liveness
|
|
17
|
+
* probe, stale-lock recovery, cleanup-on-exit.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Options for callers that don't have bootstrap state.
|
|
21
|
+
* lockIdentity should be stable for the lifetime of one process.
|
|
22
|
+
*/
|
|
23
|
+
export type SchedulerLockOptions = {
|
|
24
|
+
dir?: string;
|
|
25
|
+
lockIdentity?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Try to acquire the scheduler lock for the current session.
|
|
29
|
+
* Returns true on success, false if another live session holds it.
|
|
30
|
+
*
|
|
31
|
+
* Uses O_EXCL ('wx') for atomic test-and-set. If the file exists:
|
|
32
|
+
* - Already ours → true (idempotent re-acquire)
|
|
33
|
+
* - Another live PID → false
|
|
34
|
+
* - Stale (PID dead / corrupt) → unlink and retry exclusive create once
|
|
35
|
+
*
|
|
36
|
+
* If two sessions race to recover a stale lock, only one create succeeds.
|
|
37
|
+
*/
|
|
38
|
+
export declare function tryAcquireSchedulerLock(opts: SchedulerLockOptions, sessionId: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Release the scheduler lock if the current session owns it.
|
|
41
|
+
*/
|
|
42
|
+
export declare function releaseSchedulerLock(opts: SchedulerLockOptions, sessionId: string): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var w=Object.defineProperty;var c=(t,r)=>w(t,"name",{value:r,configurable:!0});import{mkdir as h,readFile as k,unlink as f,writeFile as u}from"node:fs/promises";import{dirname as E,join as l}from"node:path";const g=l(".claude","scheduled_tasks.lock");let a;function s(t){return l(t,g)}c(s,"getLockPath");async function y(t){let r;try{r=await k(s(t),"utf8")}catch{return}try{const e=JSON.parse(r);return e&&typeof e=="object"&&typeof e.sessionId=="string"&&typeof e.pid=="number"&&typeof e.acquiredAt=="number"?e:void 0}catch{return}}c(y,"readLock");async function p(t,r){const e=s(r),i=JSON.stringify(t);try{return await u(e,i,{flag:"wx"}),!0}catch(n){const o=n.code;if(o==="EEXIST")return!1;if(o==="ENOENT"){await h(E(e),{recursive:!0});try{return await u(e,i,{flag:"wx"}),!0}catch(d){if(d.code==="EEXIST")return!1;throw d}}throw n}}c(p,"tryCreateExclusive");function m(t){try{return process.kill(t,0),!0}catch{return!1}}c(m,"isProcessRunning");async function S(t,r){const e=t.dir;if(!e)return!1;const i={sessionId:r,pid:process.pid,acquiredAt:Date.now()};if(await p(i,e))return a=void 0,!0;const n=await y(e);return n?.sessionId===r?(n.pid!==process.pid&&await u(s(e),JSON.stringify(i)),!0):n&&m(n.pid)?(a!==n.sessionId&&(a=n.sessionId),!1):(await f(s(e)).catch(()=>{}),await p(i,e)?(a=void 0,!0):!1)}c(S,"tryAcquireSchedulerLock");async function N(t,r){a=void 0;const e=t.dir;if(!e)return;const i=await y(e);if(!(!i||i.sessionId!==r))try{await f(s(e))}catch{}}c(N,"releaseSchedulerLock");export{N as releaseSchedulerLock,S as tryAcquireSchedulerLock};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: CronTask, add/get/removeSessionCronTasks, getCronFilePath, scheduled-task storage primitives
|
|
3
|
+
* [FROM]: Depends on node:crypto, node:fs, node:fs/promises, node:path, ./cron-parser
|
|
4
|
+
* [TO]: Consumed by ./cron-scheduler, ./index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron/cron-tasks.ts - scheduled-prompt storage in .claude/scheduled_tasks.json
|
|
6
|
+
*
|
|
7
|
+
* Scheduled prompts, stored in <project>/.claude/scheduled_tasks.json.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/utils/cronTasks.ts
|
|
10
|
+
*
|
|
11
|
+
* Tasks come in two flavors:
|
|
12
|
+
* - One-shot (recurring: false/undefined) — fire once, then auto-delete.
|
|
13
|
+
* - Recurring (recurring: true) — fire on schedule, reschedule from now,
|
|
14
|
+
* persist until explicitly deleted via CronDelete or auto-expire after
|
|
15
|
+
* a configurable limit (DEFAULT_CRON_JITTER_CONFIG.recurringMaxAgeMs).
|
|
16
|
+
*
|
|
17
|
+
* File format:
|
|
18
|
+
* { "tasks": [{ id, cron, prompt, createdAt, recurring?, permanent? }] }
|
|
19
|
+
*/
|
|
20
|
+
export declare function addSessionCronTask(task: CronTask): void;
|
|
21
|
+
export declare function getSessionCronTasks(): CronTask[];
|
|
22
|
+
/**
|
|
23
|
+
* Remove session-only tasks by ID. Returns count of actually removed tasks.
|
|
24
|
+
*/
|
|
25
|
+
export declare function removeSessionCronTasks(ids: string[]): number;
|
|
26
|
+
export type CronTask = {
|
|
27
|
+
id: string;
|
|
28
|
+
/** 5-field cron string (local time) — validated on write, re-validated on read. */
|
|
29
|
+
cron: string;
|
|
30
|
+
/** Prompt to enqueue when the task fires. */
|
|
31
|
+
prompt: string;
|
|
32
|
+
/** Epoch ms when the task was created. Anchor for missed-task detection. */
|
|
33
|
+
createdAt: number;
|
|
34
|
+
/**
|
|
35
|
+
* Epoch ms of the most recent fire. Written back by the scheduler after
|
|
36
|
+
* each recurring fire so next-fire computation survives process restarts.
|
|
37
|
+
* The scheduler anchors first-sight from `lastFiredAt ?? createdAt` — a
|
|
38
|
+
* never-fired task uses createdAt (correct for pinned crons like
|
|
39
|
+
* `30 14 27 2 *` whose next-from-now is next year); a fired-before task
|
|
40
|
+
* reconstructs the same `nextFireAt` the prior process had in memory.
|
|
41
|
+
* Never set for one-shots (they're deleted on fire).
|
|
42
|
+
*/
|
|
43
|
+
lastFiredAt?: number;
|
|
44
|
+
/** When true, the task reschedules after firing instead of being deleted. */
|
|
45
|
+
recurring?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* When true, the task is exempt from recurringMaxAgeMs auto-expiry.
|
|
48
|
+
* System escape hatch for assistant mode's built-in tasks.
|
|
49
|
+
*/
|
|
50
|
+
permanent?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Runtime-only flag. false → session-scoped (never written to disk).
|
|
53
|
+
* File-backed tasks leave this undefined; writeCronTasks strips it so
|
|
54
|
+
* the on-disk shape stays { id, cron, prompt, createdAt, lastFiredAt?, recurring?, permanent? }.
|
|
55
|
+
*/
|
|
56
|
+
durable?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Runtime-only. When set, the task was created by an in-process teammate.
|
|
59
|
+
* The scheduler routes fires to that teammate's queue instead of the main
|
|
60
|
+
* REPL's. Never written to disk (teammate crons are always session-only).
|
|
61
|
+
*/
|
|
62
|
+
agentId?: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Path to the cron file. `dir` must be provided explicitly.
|
|
66
|
+
*/
|
|
67
|
+
export declare function getCronFilePath(dir: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Read and parse .claude/scheduled_tasks.json. Returns an empty task list if the file
|
|
70
|
+
* is missing, empty, or malformed. Tasks with invalid cron strings are
|
|
71
|
+
* silently dropped (logged at debug level) so a single bad entry never
|
|
72
|
+
* blocks the whole file.
|
|
73
|
+
*/
|
|
74
|
+
export declare function readCronTasks(dir: string): Promise<CronTask[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Sync check for whether the cron file has any valid tasks. Used by
|
|
77
|
+
* cronScheduler.start() to decide whether to auto-enable. One file read.
|
|
78
|
+
*/
|
|
79
|
+
export declare function hasCronTasksSync(dir: string): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Overwrite .claude/scheduled_tasks.json with the given tasks. Creates .claude/ if
|
|
82
|
+
* missing. Empty task list writes an empty file (rather than deleting) so
|
|
83
|
+
* the file watcher sees a change event on last-task-removed.
|
|
84
|
+
*/
|
|
85
|
+
export declare function writeCronTasks(tasks: CronTask[], dir: string): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Append a task. Returns the generated id. Caller is responsible for having
|
|
88
|
+
* already validated the cron string (the tool does this via validateInput).
|
|
89
|
+
*
|
|
90
|
+
* When `durable` is false the task is held in process memory only
|
|
91
|
+
* (sessionTasks Map) — it fires on schedule this session but is never
|
|
92
|
+
* written to .claude/scheduled_tasks.json and dies with the process. The
|
|
93
|
+
* scheduler merges session tasks into its tick loop directly, so no file
|
|
94
|
+
* change event is needed.
|
|
95
|
+
*/
|
|
96
|
+
export declare function addCronTask(cron: string, prompt: string, recurring: boolean, durable: boolean, dir?: string, agentId?: string): Promise<string>;
|
|
97
|
+
/**
|
|
98
|
+
* Remove tasks by id. No-op if none match (e.g. another session raced us).
|
|
99
|
+
* Used for both fire-once cleanup and explicit CronDelete.
|
|
100
|
+
*
|
|
101
|
+
* When called with `dir` undefined (REPL path), also sweeps the in-memory
|
|
102
|
+
* session store — the caller doesn't know which store an id lives in.
|
|
103
|
+
* Daemon callers pass `dir` explicitly; they have no session, and the
|
|
104
|
+
* `dir !== undefined` guard keeps this function from touching the session
|
|
105
|
+
* store on that path.
|
|
106
|
+
*/
|
|
107
|
+
export declare function removeCronTasks(ids: string[], dir?: string): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Stamp `lastFiredAt` on the given recurring tasks and write back. Batched
|
|
110
|
+
* so N fires in one scheduler tick = one read-modify-write, not N. Only
|
|
111
|
+
* touches file-backed tasks — session tasks die with the process, no point
|
|
112
|
+
* persisting their fire time.
|
|
113
|
+
*/
|
|
114
|
+
export declare function markCronTasksFired(ids: string[], firedAt: number, dir?: string): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* File-backed tasks + session-only tasks, merged. Session tasks get
|
|
117
|
+
* `durable: false` so callers can distinguish them. File tasks are
|
|
118
|
+
* returned as-is (durable undefined → truthy).
|
|
119
|
+
*
|
|
120
|
+
* In Catui, always merges session tasks since the extension API
|
|
121
|
+
* always provides `dir` (no daemon/REPL distinction like CC).
|
|
122
|
+
*/
|
|
123
|
+
export declare function listAllCronTasks(dir?: string): Promise<CronTask[]>;
|
|
124
|
+
/**
|
|
125
|
+
* Next fire time in epoch ms for a cron string, strictly after `fromMs`.
|
|
126
|
+
* Returns null if invalid or no match in the next 366 days.
|
|
127
|
+
*/
|
|
128
|
+
export declare function nextCronRunMs(cron: string, fromMs: number): number | null;
|
|
129
|
+
/**
|
|
130
|
+
* Cron scheduler tuning knobs. Sourced at runtime from config so ops can
|
|
131
|
+
* adjust behavior fleet-wide without shipping a client build.
|
|
132
|
+
* Defaults here preserve the pre-config behavior exactly.
|
|
133
|
+
*/
|
|
134
|
+
export type CronJitterConfig = {
|
|
135
|
+
/** Recurring-task forward delay as a fraction of the interval between fires. */
|
|
136
|
+
recurringFrac: number;
|
|
137
|
+
/** Upper bound on recurring forward delay regardless of interval length. */
|
|
138
|
+
recurringCapMs: number;
|
|
139
|
+
/** One-shot backward lead: maximum ms a task may fire early. */
|
|
140
|
+
oneShotMaxMs: number;
|
|
141
|
+
/**
|
|
142
|
+
* One-shot backward lead: minimum ms a task fires early when the minute-mod
|
|
143
|
+
* gate matches. 0 = taskIds hashing near zero fire on the exact mark. Raise
|
|
144
|
+
* this to guarantee nobody lands on the wall-clock boundary.
|
|
145
|
+
*/
|
|
146
|
+
oneShotFloorMs: number;
|
|
147
|
+
/**
|
|
148
|
+
* Jitter fires landing on minutes where `minute % N === 0`. 30 → :00/:30
|
|
149
|
+
* (the human-rounding hotspots). 15 → :00/:15/:30/:45. 1 → every minute.
|
|
150
|
+
*/
|
|
151
|
+
oneShotMinuteMod: number;
|
|
152
|
+
/**
|
|
153
|
+
* Recurring tasks auto-expire this many ms after creation (unless marked
|
|
154
|
+
* `permanent`). The default (7 days) covers "check my PRs every hour this
|
|
155
|
+
* week" workflows while capping worst-case session lifetime.
|
|
156
|
+
*
|
|
157
|
+
* `0` = unlimited (tasks never auto-expire).
|
|
158
|
+
*/
|
|
159
|
+
recurringMaxAgeMs: number;
|
|
160
|
+
};
|
|
161
|
+
export declare const DEFAULT_CRON_JITTER_CONFIG: CronJitterConfig;
|
|
162
|
+
/**
|
|
163
|
+
* Same as {@link nextCronRunMs}, plus a deterministic per-task delay to
|
|
164
|
+
* avoid a thundering herd when many sessions schedule the same cron string
|
|
165
|
+
* (e.g. `0 * * * *` → everyone hits inference at :00).
|
|
166
|
+
*
|
|
167
|
+
* The delay is proportional to the current gap between fires
|
|
168
|
+
* ({@link CronJitterConfig.recurringFrac}, capped at
|
|
169
|
+
* {@link CronJitterConfig.recurringCapMs}) so at defaults an hourly task
|
|
170
|
+
* spreads across [:00, :06) but a per-minute task only spreads by a few
|
|
171
|
+
* seconds.
|
|
172
|
+
*
|
|
173
|
+
* Only used for recurring tasks. One-shot tasks use
|
|
174
|
+
* {@link oneShotJitteredNextCronRunMs} (backward jitter, minute-gated).
|
|
175
|
+
*/
|
|
176
|
+
export declare function jitteredNextCronRunMs(cron: string, fromMs: number, taskId: string, cfg?: CronJitterConfig): number | null;
|
|
177
|
+
/**
|
|
178
|
+
* Same as {@link nextCronRunMs}, minus a deterministic per-task lead time
|
|
179
|
+
* when the fire time lands on a minute boundary matching
|
|
180
|
+
* {@link CronJitterConfig.oneShotMinuteMod}.
|
|
181
|
+
*
|
|
182
|
+
* One-shot tasks are user-pinned ("remind me at 3pm") so delaying them
|
|
183
|
+
* breaks the contract — but firing slightly early is invisible and spreads
|
|
184
|
+
* the inference spike from everyone picking the same round wall-clock time.
|
|
185
|
+
* At defaults (mod 30, max 90 s, floor 0) only :00 and :30 get jitter,
|
|
186
|
+
* because humans round to the half-hour.
|
|
187
|
+
*
|
|
188
|
+
* Checks the computed fire time rather than the cron string so
|
|
189
|
+
* `0 15 * * *`, step expressions, and `0,30 9 * * *` all get jitter
|
|
190
|
+
* when they land on a matching minute. Clamped to `fromMs` so a task created
|
|
191
|
+
* inside its own jitter window doesn't fire before it was created.
|
|
192
|
+
*/
|
|
193
|
+
export declare function oneShotJitteredNextCronRunMs(cron: string, fromMs: number, taskId: string, cfg?: CronJitterConfig): number | null;
|
|
194
|
+
/**
|
|
195
|
+
* A task is "missed" when its next scheduled run (computed from createdAt)
|
|
196
|
+
* is in the past. Surfaced to the user at startup. Works for both one-shot
|
|
197
|
+
* and recurring tasks — a recurring task whose window passed while Claude
|
|
198
|
+
* was down is still "missed".
|
|
199
|
+
*/
|
|
200
|
+
export declare function findMissedTasks(tasks: CronTask[], nowMs: number): CronTask[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var w=Object.defineProperty;var a=(t,r)=>w(t,"name",{value:r,configurable:!0});import{randomUUID as M}from"node:crypto";import{readFileSync as S}from"node:fs";import{mkdir as g,writeFile as C}from"node:fs/promises";import{join as f}from"node:path";import{computeNextCronRun as F,parseCronExpression as x}from"./cron-parser.js";const l=new Map;function T(t){l.set(t.id,t)}a(T,"addSessionCronTask");function A(){return[...l.values()]}a(A,"getSessionCronTasks");function b(t){let r=0;for(const e of t)l.delete(e)&&r++;return r}a(b,"removeSessionCronTasks");const N=f(".claude","scheduled_tasks.json");function p(t){return f(t,N)}a(p,"getCronFilePath");async function u(t){let r;try{r=await import("node:fs/promises").then(e=>e.readFile(p(t),{encoding:"utf-8"}))}catch{return[]}try{const e=JSON.parse(r);if(!e||typeof e!="object")return[];const n=e;if(!Array.isArray(n.tasks))return[];const s=[];for(const o of n.tasks)!o||typeof o.id!="string"||typeof o.cron!="string"||typeof o.prompt!="string"||typeof o.createdAt!="number"||x(o.cron)&&s.push({id:o.id,cron:o.cron,prompt:o.prompt,createdAt:o.createdAt,...typeof o.lastFiredAt=="number"?{lastFiredAt:o.lastFiredAt}:{},...o.recurring?{recurring:!0}:{},...o.permanent?{permanent:!0}:{}});return s}catch{return[]}}a(u,"readCronTasks");function D(t){let r;try{r=S(p(t),"utf-8")}catch{return!1}try{const e=JSON.parse(r);if(!e||typeof e!="object")return!1;const n=e.tasks;return Array.isArray(n)&&n.length>0}catch{return!1}}a(D,"hasCronTasksSync");async function d(t,r){await g(f(r,".claude"),{recursive:!0});const e={tasks:t.map(({durable:n,...s})=>s)};await C(p(r),JSON.stringify(e,null,2)+`
|
|
2
|
+
`,"utf-8")}a(d,"writeCronTasks");async function J(t,r,e,n,s,o){const i=M().slice(0,8),m={id:i,cron:t,prompt:r,createdAt:Date.now(),...e?{recurring:!0}:{}};if(!n)return T({...m,...o?{agentId:o}:{}}),i;if(!s)throw new Error("dir required for durable tasks");const h=await u(s);return h.push(m),await d(h,s),i}a(J,"addCronTask");async function I(t,r){if(t.length===0||b(t)===t.length||!r)return;const n=new Set(t),s=await u(r),o=s.filter(i=>!n.has(i.id));o.length!==s.length&&await d(o,r)}a(I,"removeCronTasks");async function L(t,r,e){if(t.length===0||!e)return;const n=new Set(t),s=await u(e);let o=!1;for(const i of s)n.has(i.id)&&(i.lastFiredAt=r,o=!0);o&&await d(s,e)}a(L,"markCronTasksFired");async function U(t){const r=t?await u(t):[],e=A().map(n=>({...n,durable:!1}));return[...r,...e]}a(U,"listAllCronTasks");function c(t,r){const e=x(t);if(!e)return null;const n=F(e,new Date(r));return n?n.getTime():null}a(c,"nextCronRunMs");const k={recurringFrac:.1,recurringCapMs:900*1e3,oneShotMaxMs:90*1e3,oneShotFloorMs:0,oneShotMinuteMod:30,recurringMaxAgeMs:10080*60*1e3};function y(t){const r=parseInt(t.slice(0,8),16)/4294967296;return Number.isFinite(r)?r:0}a(y,"jitterFrac");function q(t,r,e,n=k){const s=c(t,r);if(s===null)return null;const o=c(t,s);if(o===null)return s;const i=Math.min(y(e)*n.recurringFrac*(o-s),n.recurringCapMs);return s+i}a(q,"jitteredNextCronRunMs");function G(t,r,e,n=k){const s=c(t,r);if(s===null)return null;if(new Date(s).getMinutes()%n.oneShotMinuteMod!==0)return s;const o=n.oneShotFloorMs+y(e)*(n.oneShotMaxMs-n.oneShotFloorMs);return Math.max(s-o,r)}a(G,"oneShotJitteredNextCronRunMs");function P(t,r){return t.filter(e=>{const n=c(e.cron,e.createdAt);return n!==null&&n<r})}a(P,"findMissedTasks");export{k as DEFAULT_CRON_JITTER_CONFIG,J as addCronTask,T as addSessionCronTask,P as findMissedTasks,p as getCronFilePath,A as getSessionCronTasks,D as hasCronTasksSync,q as jitteredNextCronRunMs,U as listAllCronTasks,L as markCronTasksFired,c as nextCronRunMs,G as oneShotJitteredNextCronRunMs,u as readCronTasks,I as removeCronTasks,b as removeSessionCronTasks,d as writeCronTasks};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: cron module barrel
|
|
3
|
+
* [FROM]: Re-exports ./cron-parser, ./cron-tasks, ./cron-scheduler, ./cron-tasks-lock
|
|
4
|
+
* [TO]: Consumed by loop/index, loop/cron-tools
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron/index.ts - cron module barrel export
|
|
6
|
+
*
|
|
7
|
+
* Cron module exports: types, parser, task storage, scheduler, lock
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code cron module public API
|
|
10
|
+
*/
|
|
11
|
+
export type { CronFields } from "./cron-parser.js";
|
|
12
|
+
export { parseCronExpression, computeNextCronRun, cronToHuman, intervalToCron, } from "./cron-parser.js";
|
|
13
|
+
export type { CronTask, CronJitterConfig } from "./cron-tasks.js";
|
|
14
|
+
export { DEFAULT_CRON_JITTER_CONFIG, getCronFilePath, readCronTasks, writeCronTasks, hasCronTasksSync, addCronTask, removeCronTasks, markCronTasksFired, listAllCronTasks, nextCronRunMs, jitteredNextCronRunMs, oneShotJitteredNextCronRunMs, findMissedTasks, addSessionCronTask, getSessionCronTasks, removeSessionCronTasks, } from "./cron-tasks.js";
|
|
15
|
+
export { createCronScheduler, isRecurringTaskAged, buildMissedTaskNotification } from "./cron-scheduler.js";
|
|
16
|
+
export type { CronScheduler } from "./cron-scheduler.js";
|
|
17
|
+
export { tryAcquireSchedulerLock, releaseSchedulerLock } from "./cron-tasks-lock.js";
|
|
18
|
+
export type { SchedulerLockOptions } from "./cron-tasks-lock.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{parseCronExpression as o,computeNextCronRun as s,cronToHuman as n,intervalToCron as a}from"./cron-parser.js";import{DEFAULT_CRON_JITTER_CONFIG as i,getCronFilePath as C,readCronTasks as T,writeCronTasks as d,hasCronTasksSync as k,addCronTask as c,removeCronTasks as u,markCronTasksFired as l,listAllCronTasks as m,nextCronRunMs as x,jitteredNextCronRunMs as S,oneShotJitteredNextCronRunMs as p,findMissedTasks as R,addSessionCronTask as f,getSessionCronTasks as h,removeSessionCronTasks as N}from"./cron-tasks.js";import{createCronScheduler as g,isRecurringTaskAged as A,buildMissedTaskNotification as F}from"./cron-scheduler.js";import{tryAcquireSchedulerLock as E,releaseSchedulerLock as L}from"./cron-tasks-lock.js";export{i as DEFAULT_CRON_JITTER_CONFIG,c as addCronTask,f as addSessionCronTask,F as buildMissedTaskNotification,s as computeNextCronRun,g as createCronScheduler,n as cronToHuman,R as findMissedTasks,C as getCronFilePath,h as getSessionCronTasks,k as hasCronTasksSync,a as intervalToCron,A as isRecurringTaskAged,S as jitteredNextCronRunMs,m as listAllCronTasks,l as markCronTasksFired,x as nextCronRunMs,p as oneShotJitteredNextCronRunMs,o as parseCronExpression,T as readCronTasks,L as releaseSchedulerLock,u as removeCronTasks,N as removeSessionCronTasks,E as tryAcquireSchedulerLock,d as writeCronTasks};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: createCronCreateTool, CronCreateInput
|
|
3
|
+
* [FROM]: Depends on @sinclair/typebox, @catui/agent-core, core/extensions-host/types, ../cron, ./prompt
|
|
4
|
+
* [TO]: Consumed by ./index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron-tools/cron-create-tool.ts - CronCreate tool factory
|
|
6
|
+
*
|
|
7
|
+
* CronCreate tool — creates a scheduled cron task.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/tools/ScheduleCronTool/CronCreateTool.ts
|
|
10
|
+
*/
|
|
11
|
+
import type { Static } from "@sinclair/typebox";
|
|
12
|
+
import type { AgentToolResult } from "@catui/agent-core";
|
|
13
|
+
import type { ExtensionContext } from "../../../../core/extensions-host/types.js";
|
|
14
|
+
declare const cronCreateSchema: import("@sinclair/typebox").TObject<{
|
|
15
|
+
cron: import("@sinclair/typebox").TString;
|
|
16
|
+
prompt: import("@sinclair/typebox").TString;
|
|
17
|
+
recurring: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
18
|
+
durable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
19
|
+
}>;
|
|
20
|
+
export type CronCreateInput = Static<typeof cronCreateSchema>;
|
|
21
|
+
export declare function createCronCreateTool(): {
|
|
22
|
+
name: string;
|
|
23
|
+
label: string;
|
|
24
|
+
searchHint: string;
|
|
25
|
+
description: string;
|
|
26
|
+
parameters: import("@sinclair/typebox").TObject<{
|
|
27
|
+
cron: import("@sinclair/typebox").TString;
|
|
28
|
+
prompt: import("@sinclair/typebox").TString;
|
|
29
|
+
recurring: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
30
|
+
durable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
|
|
31
|
+
}>;
|
|
32
|
+
guidance: string;
|
|
33
|
+
execute(_toolCallId: string, params: CronCreateInput, _signal: AbortSignal | undefined, _onUpdate: undefined, ctx: ExtensionContext): Promise<AgentToolResult<unknown>>;
|
|
34
|
+
};
|
|
35
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var p=Object.defineProperty;var d=(a,e)=>p(a,"name",{value:e,configurable:!0});import{Type as r}from"@sinclair/typebox";import{addCronTask as f,cronToHuman as m,listAllCronTasks as x,nextCronRunMs as C,parseCronExpression as y}from"../cron/index.js";import{buildCronCreateDescription as g,buildCronCreatePrompt as _,CRON_CREATE_TOOL_NAME as b,DEFAULT_MAX_AGE_DAYS as u,isDurableCronEnabled as s}from"./prompt.js";const h=50,D=r.Object({cron:r.String({description:'Standard 5-field cron expression in local time: "M H DoM Mon DoW" (e.g. "*/5 * * * *" = every 5 minutes, "30 14 28 2 *" = Feb 28 at 2:30pm local once).'}),prompt:r.String({description:"The prompt to enqueue at each fire time."}),recurring:r.Optional(r.Boolean({description:`true (default) = fire on every cron match until deleted or auto-expired after ${u} days. false = fire once at the next match, then auto-delete. Use false for "remind me at X" one-shot requests with pinned minute/hour/dom/month.`,default:!0})),durable:r.Optional(r.Boolean({description:"true = persist to .claude/scheduled_tasks.json and survive restarts. false (default) = in-memory only, dies when this Claude session ends. Use true only when the user asks the task to survive across sessions.",default:!1}))});function v(){return{name:b,label:"Create Scheduled Task",searchHint:"schedule a recurring or one-shot prompt",description:g(s()),parameters:D,guidance:_(s()),async execute(a,e,k,S,i){if(!y(e.cron))return{content:[{type:"text",text:`Invalid cron expression '${e.cron}'. Expected 5 fields: M H DoM Mon DoW.`}],details:{error:"invalid_cron"}};if(C(e.cron,Date.now())===null)return{content:[{type:"text",text:`Cron expression '${e.cron}' does not match any calendar date in the next year.`}],details:{error:"no_match"}};if((await x(i.agentDir)).length>=h)return{content:[{type:"text",text:`Too many scheduled jobs (max ${h}). Cancel one first.`}],details:{error:"max_jobs"}};try{const t=!!e.durable&&s(),n=await f(e.cron,e.prompt,e.recurring??!0,t,i.agentDir),o=m(e.cron),c=e.recurring??!0,l=t?"Persisted to .claude/scheduled_tasks.json":"Session-only (not written to disk, dies when Claude exits)";return{content:[{type:"text",text:c?`Scheduled recurring job ${n} (${o}). ${l}. Auto-expires after ${u} days. Use CronDelete to cancel sooner.`:`Scheduled one-shot task ${n} (${o}). ${l}. It will fire once then auto-delete.`}],details:{id:n,humanSchedule:o,recurring:c,durable:t}}}catch(t){const n=t instanceof Error?t.message:String(t);return{content:[{type:"text",text:`Error: Failed to create scheduled task: ${n}`}],details:{error:n}}}}}}d(v,"createCronCreateTool");export{v as createCronCreateTool};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: createCronDeleteTool, CronDeleteInput
|
|
3
|
+
* [FROM]: Depends on @sinclair/typebox, @catui/agent-core, core/extensions-host/types, ../cron, ./prompt
|
|
4
|
+
* [TO]: Consumed by ./index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron-tools/cron-delete-tool.ts - CronDelete tool factory
|
|
6
|
+
*
|
|
7
|
+
* CronDelete tool — deletes a scheduled cron task.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/tools/ScheduleCronTool/CronDeleteTool.ts
|
|
10
|
+
*/
|
|
11
|
+
import type { Static } from "@sinclair/typebox";
|
|
12
|
+
import type { AgentToolResult } from "@catui/agent-core";
|
|
13
|
+
import type { ExtensionContext } from "../../../../core/extensions-host/types.js";
|
|
14
|
+
declare const cronDeleteSchema: import("@sinclair/typebox").TObject<{
|
|
15
|
+
id: import("@sinclair/typebox").TString;
|
|
16
|
+
}>;
|
|
17
|
+
export type CronDeleteInput = Static<typeof cronDeleteSchema>;
|
|
18
|
+
export declare function createCronDeleteTool(): {
|
|
19
|
+
name: string;
|
|
20
|
+
label: string;
|
|
21
|
+
searchHint: string;
|
|
22
|
+
description: string;
|
|
23
|
+
parameters: import("@sinclair/typebox").TObject<{
|
|
24
|
+
id: import("@sinclair/typebox").TString;
|
|
25
|
+
}>;
|
|
26
|
+
guidance: string;
|
|
27
|
+
execute(_toolCallId: string, params: CronDeleteInput, _signal: AbortSignal | undefined, _onUpdate: undefined, ctx: ExtensionContext): Promise<AgentToolResult<unknown>>;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a=Object.defineProperty;var i=(r,e)=>a(r,"name",{value:e,configurable:!0});import{Type as d}from"@sinclair/typebox";import{listAllCronTasks as s,removeCronTasks as l}from"../cron/index.js";import{buildCronDeletePrompt as c,CRON_DELETE_DESCRIPTION as u,CRON_DELETE_TOOL_NAME as C,isDurableCronEnabled as D}from"./prompt.js";const E=d.Object({id:d.String({description:"Job ID returned by CronCreate."})});function k(){return{name:C,label:"Delete Scheduled Task",searchHint:"cancel a scheduled cron job",description:u,parameters:E,guidance:c(D()),async execute(r,e,b,m,o){if(!(await s(o.agentDir)).find(t=>t.id===e.id))return{content:[{type:"text",text:`No scheduled job with id '${e.id}'`}],details:{error:"not_found"}};try{return await l([e.id],o.agentDir),{content:[{type:"text",text:`Cancelled job ${e.id}.`}],details:{id:e.id}}}catch(t){const n=t instanceof Error?t.message:String(t);return{content:[{type:"text",text:`Error: Failed to delete scheduled task: ${n}`}],details:{error:n}}}}}}i(k,"createCronDeleteTool");export{k as createCronDeleteTool};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: createCronListTool, CronListInput
|
|
3
|
+
* [FROM]: Depends on @sinclair/typebox, @catui/agent-core, core/extensions-host/types, ../cron, ./prompt
|
|
4
|
+
* [TO]: Consumed by ./index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron-tools/cron-list-tool.ts - CronList tool factory
|
|
6
|
+
*
|
|
7
|
+
* CronList tool — lists all scheduled cron tasks.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/tools/ScheduleCronTool/CronListTool.ts
|
|
10
|
+
*/
|
|
11
|
+
import type { Static } from "@sinclair/typebox";
|
|
12
|
+
import type { AgentToolResult } from "@catui/agent-core";
|
|
13
|
+
import type { ExtensionContext } from "../../../../core/extensions-host/types.js";
|
|
14
|
+
declare const cronListSchema: import("@sinclair/typebox").TObject<{}>;
|
|
15
|
+
export type CronListInput = Static<typeof cronListSchema>;
|
|
16
|
+
export declare function createCronListTool(): {
|
|
17
|
+
name: string;
|
|
18
|
+
label: string;
|
|
19
|
+
searchHint: string;
|
|
20
|
+
description: string;
|
|
21
|
+
parameters: import("@sinclair/typebox").TObject<{}>;
|
|
22
|
+
guidance: string;
|
|
23
|
+
execute(_toolCallId: string, _params: CronListInput, _signal: AbortSignal | undefined, _onUpdate: undefined, ctx: ExtensionContext): Promise<AgentToolResult<unknown>>;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var c=Object.defineProperty;var s=(r,n)=>c(r,"name",{value:n,configurable:!0});import{Type as l}from"@sinclair/typebox";import{cronToHuman as u,listAllCronTasks as d}from"../cron/index.js";import{buildCronListPrompt as p,CRON_LIST_DESCRIPTION as m,CRON_LIST_TOOL_NAME as h,isDurableCronEnabled as b}from"./prompt.js";const g=l.Object({});function f(r,n,a){return r.length<=n?r:r.slice(0,n-1)+"\u2026"}s(f,"truncate");function L(){return{name:h,label:"List Scheduled Tasks",searchHint:"list active cron jobs",description:m,parameters:g,guidance:p(b()),async execute(r,n,a,T,i){try{const t=await d(i.agentDir);if(t.length===0)return{content:[{type:"text",text:"No scheduled jobs."}],details:{jobs:[]}};const o=t.map(e=>({id:e.id,cron:e.cron,humanSchedule:u(e.cron),prompt:e.prompt,...e.recurring?{recurring:!0}:{},...e.durable===!1?{durable:!1}:{}}));return{content:[{type:"text",text:o.map(e=>`${e.id} \u2014 ${e.humanSchedule}${e.recurring?" (recurring)":" (one-shot)"}${e.durable===!1?" [session-only]":""}: ${f(e.prompt,80,!0)}`).join(`
|
|
2
|
+
`)}],details:{jobs:o}}}catch(t){const o=t instanceof Error?t.message:String(t);return{content:[{type:"text",text:`Error: Failed to list scheduled tasks: ${o}`}],details:{error:o}}}}}}s(L,"createCronListTool");export{L as createCronListTool};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: cron-tools barrel: createCronCreateTool, createCronDeleteTool, createCronListTool
|
|
3
|
+
* [FROM]: Re-exports ./cron-create-tool, ./cron-delete-tool, ./cron-list-tool
|
|
4
|
+
* [TO]: Consumed by loop/index
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron-tools/index.ts - cron tool barrel export
|
|
6
|
+
*
|
|
7
|
+
* Cron tool exports: createCronCreateTool, createCronDeleteTool, createCronListTool
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port matching CC tool registration pattern
|
|
10
|
+
*/
|
|
11
|
+
export { createCronCreateTool } from "./cron-create-tool.js";
|
|
12
|
+
export { createCronDeleteTool } from "./cron-delete-tool.js";
|
|
13
|
+
export { createCronListTool } from "./cron-list-tool.js";
|
|
14
|
+
export type { CronCreateInput } from "./cron-create-tool.js";
|
|
15
|
+
export type { CronDeleteInput } from "./cron-delete-tool.js";
|
|
16
|
+
export type { CronListInput } from "./cron-list-tool.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCronCreateTool as r}from"./cron-create-tool.js";import{createCronDeleteTool as a}from"./cron-delete-tool.js";import{createCronListTool as C}from"./cron-list-tool.js";export{r as createCronCreateTool,a as createCronDeleteTool,C as createCronListTool};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: CRON_*_TOOL_NAME constants, isKairosCronEnabled, isDurableCronEnabled, buildCronCreate/Delete/List descriptions and prompts
|
|
3
|
+
* [FROM]: No first-party dependencies
|
|
4
|
+
* [TO]: Consumed by ./cron-create-tool, ./cron-delete-tool, ./cron-list-tool, ../loop-skill
|
|
5
|
+
* [HERE]: extensions/builtin/loop/cron-tools/prompt.ts - cron tool prompts, names, and feature flags
|
|
6
|
+
*
|
|
7
|
+
* Cron tool prompts and constants.
|
|
8
|
+
*
|
|
9
|
+
* 1:1 port of Claude Code src/tools/ScheduleCronTool/prompt.ts
|
|
10
|
+
*
|
|
11
|
+
* Simplified: feature gates (GrowthBook, bun:bundle) replaced with
|
|
12
|
+
* constant true since Catui doesn't have those systems.
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_MAX_AGE_DAYS = 7;
|
|
15
|
+
/**
|
|
16
|
+
* Unified gate for the cron scheduling system.
|
|
17
|
+
* In CC this combines build-time feature('AGENT_TRIGGERS') with runtime
|
|
18
|
+
* GrowthBook tengu_kairos_cron. In Catui, always enabled.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isKairosCronEnabled(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Kill switch for disk-persistent (durable) cron tasks.
|
|
23
|
+
* In CC this consults GrowthBook tengu_kairos_cron_durable. In Catui,
|
|
24
|
+
* always enabled.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isDurableCronEnabled(): boolean;
|
|
27
|
+
export declare const CRON_CREATE_TOOL_NAME = "CronCreate";
|
|
28
|
+
export declare const CRON_DELETE_TOOL_NAME = "CronDelete";
|
|
29
|
+
export declare const CRON_LIST_TOOL_NAME = "CronList";
|
|
30
|
+
export declare function buildCronCreateDescription(durableEnabled: boolean): string;
|
|
31
|
+
export declare function buildCronCreatePrompt(durableEnabled: boolean): string;
|
|
32
|
+
export declare const CRON_DELETE_DESCRIPTION = "Cancel a scheduled cron job by ID";
|
|
33
|
+
export declare function buildCronDeletePrompt(durableEnabled: boolean): string;
|
|
34
|
+
export declare const CRON_LIST_DESCRIPTION = "List scheduled cron jobs";
|
|
35
|
+
export declare function buildCronListPrompt(durableEnabled: boolean): string;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var r=Object.defineProperty;var t=(e,s)=>r(e,"name",{value:s,configurable:!0});const u=7;function l(){return!0}t(l,"isKairosCronEnabled");function d(){return!0}t(d,"isDurableCronEnabled");const o="CronCreate",n="CronDelete",h="CronList";function c(e){return e?"Schedule a prompt to run at a future time \u2014 either recurring on a cron schedule, or once at a specific time. Pass durable: true to persist to .claude/scheduled_tasks.json; otherwise session-only.":"Schedule a prompt to run at a future time within this Claude session \u2014 either recurring on a cron schedule, or once at a specific time."}t(c,"buildCronCreateDescription");function m(e){return`Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
|
|
2
|
+
|
|
3
|
+
Uses standard 5-field cron in the user's local timezone: minute hour day-of-month month day-of-week. "0 9 * * *" means 9am local \u2014 no timezone conversion needed.
|
|
4
|
+
|
|
5
|
+
## One-shot tasks (recurring: false)
|
|
6
|
+
|
|
7
|
+
For "remind me at X" or "at <time>, do Y" requests \u2014 fire once then auto-delete.
|
|
8
|
+
Pin minute/hour/day-of-month/month to specific values:
|
|
9
|
+
"remind me at 2:30pm today to check the deploy" \u2192 cron: "30 14 <today_dom> <today_month> *", recurring: false
|
|
10
|
+
"tomorrow morning, run the smoke test" \u2192 cron: "57 8 <tomorrow_dom> <tomorrow_month> *", recurring: false
|
|
11
|
+
|
|
12
|
+
## Recurring jobs (recurring: true, the default)
|
|
13
|
+
|
|
14
|
+
For "every N minutes" / "every hour" / "weekdays at 9am" requests:
|
|
15
|
+
"*/5 * * * *" (every 5 min), "0 * * * *" (hourly), "0 9 * * 1-5" (weekdays at 9am local)
|
|
16
|
+
|
|
17
|
+
## Avoid the :00 and :30 minute marks when the task allows it
|
|
18
|
+
|
|
19
|
+
Every user who asks for "9am" gets \`0 9\`, and every user who asks for "hourly" gets \`0 *\` \u2014 which means requests from across the planet land on the API at the same instant. When the user's request is approximate, pick a minute that is NOT 0 or 30:
|
|
20
|
+
"every morning around 9" \u2192 "57 8 * * *" or "3 9 * * *" (not "0 9 * * *")
|
|
21
|
+
"hourly" \u2192 "7 * * * *" (not "0 * * * *")
|
|
22
|
+
"in an hour or so, remind me to..." \u2192 pick whatever minute you land on, don't round
|
|
23
|
+
|
|
24
|
+
Only use minute 0 or 30 when the user names that exact time and clearly means it ("at 9:00 sharp", "at half past", coordinating with a meeting). When in doubt, nudge a few minutes early or late \u2014 the user will not notice, and the fleet will.
|
|
25
|
+
|
|
26
|
+
${e?`## Durability
|
|
27
|
+
|
|
28
|
+
By default (durable: false) the job lives only in this Claude session \u2014 nothing is written to disk, and the job is gone when Claude exits. Pass durable: true to write to .claude/scheduled_tasks.json so the job survives restarts. Only use durable: true when the user explicitly asks for the task to persist ("keep doing this every day", "set this up permanently"). Most "remind me in 5 minutes" / "check back in an hour" requests should stay session-only.`:`## Session-only
|
|
29
|
+
|
|
30
|
+
Jobs live only in this Claude session \u2014 nothing is written to disk, and the job is gone when Claude exits.`}
|
|
31
|
+
|
|
32
|
+
## Runtime behavior
|
|
33
|
+
|
|
34
|
+
Jobs only fire while the REPL is idle (not mid-query). ${e?"Durable jobs persist to .claude/scheduled_tasks.json and survive session restarts \u2014 on next launch they resume automatically. One-shot durable tasks that were missed while the REPL was closed are surfaced for catch-up. Session-only jobs die with the process. ":""}The scheduler adds a small deterministic jitter on top of whatever you pick: recurring tasks fire up to 10% of their period late (max 15 min); one-shot tasks landing on :00 or :30 fire up to 90 s early. Picking an off-minute is still the bigger lever.
|
|
35
|
+
|
|
36
|
+
Recurring tasks auto-expire after 7 days \u2014 they fire one final time, then are deleted. This bounds session lifetime. Tell the user about the 7-day limit when scheduling recurring jobs.
|
|
37
|
+
|
|
38
|
+
Returns a job ID you can pass to ${n}.`}t(m,"buildCronCreatePrompt");const y="Cancel a scheduled cron job by ID";function p(e){return e?`Cancel a cron job previously scheduled with ${o}. Removes it from .claude/scheduled_tasks.json (durable jobs) or the in-memory session store (session-only jobs).`:`Cancel a cron job previously scheduled with ${o}. Removes it from the in-memory session store.`}t(p,"buildCronDeletePrompt");const b="List scheduled cron jobs";function f(e){return e?`List all cron jobs scheduled via ${o}, both durable (.claude/scheduled_tasks.json) and session-only.`:`List all cron jobs scheduled via ${o} in this session.`}t(f,"buildCronListPrompt");export{o as CRON_CREATE_TOOL_NAME,y as CRON_DELETE_DESCRIPTION,n as CRON_DELETE_TOOL_NAME,b as CRON_LIST_DESCRIPTION,h as CRON_LIST_TOOL_NAME,u as DEFAULT_MAX_AGE_DAYS,c as buildCronCreateDescription,m as buildCronCreatePrompt,p as buildCronDeletePrompt,f as buildCronListPrompt,d as isDurableCronEnabled,l as isKairosCronEnabled};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: loop extension default export
|
|
3
|
+
* [FROM]: Depends on @catui/tui, core/extensions-host/types, ./cron/cron-scheduler, ./cron-tools, ./loop-skill
|
|
4
|
+
* [TO]: Auto-loaded by builtin-extensions.ts as a default extension
|
|
5
|
+
* [HERE]: extensions/builtin/loop/index.ts - extension entry; /loop command, CronCreate/Delete/List tools, scheduler wiring
|
|
6
|
+
*
|
|
7
|
+
* Loop extension — registers /loop command, CronCreate/Delete/List tools,
|
|
8
|
+
* and the unified cron scheduler.
|
|
9
|
+
*
|
|
10
|
+
* 1:1 port of Claude Code's cron/loop system:
|
|
11
|
+
* - /loop skill (src/skills/bundled/loop.ts) → registered as /loop command
|
|
12
|
+
* - CronCreate/Delete/List tools (src/tools/ScheduleCronTool/)
|
|
13
|
+
* - Cron scheduler (src/utils/cronScheduler.ts)
|
|
14
|
+
* - Cron task storage (src/utils/cronTasks.ts)
|
|
15
|
+
* - Cron parser (src/utils/cron.ts)
|
|
16
|
+
* - Scheduler lock (src/utils/cronTasksLock.ts)
|
|
17
|
+
*/
|
|
18
|
+
import type { ExtensionAPI } from "../../../core/extensions-host/types.js";
|
|
19
|
+
export default function loopExtension(api: ExtensionAPI): Promise<void>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var w=Object.defineProperty;var r=(e,t)=>w(e,"name",{value:t,configurable:!0});import{Box as y,Text as T}from"@catui/tui";import{createCronScheduler as M}from"./cron/cron-scheduler.js";import{createCronCreateTool as v,createCronDeleteTool as x,createCronListTool as C}from"./cron-tools/index.js";import{buildLoopPrompt as h,getLoopUsageMessage as B}from"./loop-skill.js";const f="loop",u=new WeakMap,c=new WeakMap;function g(e,t,s="info"){e.sendMessage({customType:f,content:t,display:!0,details:{message:t,level:s,timestamp:Date.now()}})}r(g,"notify");async function U(e){const t=e.events;c.set(t,e),e.registerTool(v()),e.registerTool(x()),e.registerTool(C()),e.registerMessageRenderer(f,(o,n,i)=>{const p=typeof o.content=="string"?o.content:o.content.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
2
|
+
`),d=typeof o.details=="object"&&o.details!==null&&"level"in o.details?o.details.level??"info":"info",m=d==="error"?"error":d==="warning"?"warning":"dim",a=new y(1,1,l=>i.bg("customMessageBg",l));return a.addChild(new T(i.fg(m,p),0,0)),a});const s=M({onFire:r(o=>{const n=c.get(t);n&&(n.sendUserMessage(o,{deliverAs:"followUp"}),g(n,`Fired scheduled task: ${o.slice(0,80)}`,"info"))},"onFire"),isLoading:r(()=>!e.isIdle(),"isLoading"),dir:e.agentDir});u.set(t,s),e.on("session_start",()=>{s.start()}),e.on("session_shutdown",()=>{s.stop(),u.delete(t),c.delete(t)}),e.registerCommand("loop",{description:"Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo, defaults to 10m)",handler:r(async o=>{const n=o.trim();if(!n){g(e,B(),"warning");return}const i=h(n);e.sendUserMessage(i,{deliverAs:"followUp"})},"handler")})}r(U,"loopExtension");export{U as default};
|