siclaw 0.1.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 +190 -0
- package/README.md +268 -0
- package/dist/agentbox/gateway-client.d.ts +41 -0
- package/dist/agentbox/gateway-client.js +108 -0
- package/dist/agentbox/gateway-client.js.map +1 -0
- package/dist/agentbox/http-server.d.ts +12 -0
- package/dist/agentbox/http-server.js +700 -0
- package/dist/agentbox/http-server.js.map +1 -0
- package/dist/agentbox/mcp-sync.d.ts +6 -0
- package/dist/agentbox/mcp-sync.js +26 -0
- package/dist/agentbox/mcp-sync.js.map +1 -0
- package/dist/agentbox/resource-handlers.d.ts +40 -0
- package/dist/agentbox/resource-handlers.js +116 -0
- package/dist/agentbox/resource-handlers.js.map +1 -0
- package/dist/agentbox/resource-sync.d.ts +28 -0
- package/dist/agentbox/resource-sync.js +74 -0
- package/dist/agentbox/resource-sync.js.map +1 -0
- package/dist/agentbox/session.d.ts +145 -0
- package/dist/agentbox/session.js +444 -0
- package/dist/agentbox/session.js.map +1 -0
- package/dist/agentbox-main.d.ts +7 -0
- package/dist/agentbox-main.js +90 -0
- package/dist/agentbox-main.js.map +1 -0
- package/dist/cli-main.d.ts +1 -0
- package/dist/cli-main.js +187 -0
- package/dist/cli-main.js.map +1 -0
- package/dist/cli-setup.d.ts +17 -0
- package/dist/cli-setup.js +247 -0
- package/dist/cli-setup.js.map +1 -0
- package/dist/core/agent-factory.d.ts +52 -0
- package/dist/core/agent-factory.js +547 -0
- package/dist/core/agent-factory.js.map +1 -0
- package/dist/core/brain-session.d.ts +67 -0
- package/dist/core/brain-session.js +15 -0
- package/dist/core/brain-session.js.map +1 -0
- package/dist/core/brains/claude-sdk-brain.d.ts +76 -0
- package/dist/core/brains/claude-sdk-brain.js +403 -0
- package/dist/core/brains/claude-sdk-brain.js.map +1 -0
- package/dist/core/brains/pi-agent-brain.d.ts +28 -0
- package/dist/core/brains/pi-agent-brain.js +84 -0
- package/dist/core/brains/pi-agent-brain.js.map +1 -0
- package/dist/core/config.d.ts +109 -0
- package/dist/core/config.js +294 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/extensions/context-pruning.d.ts +38 -0
- package/dist/core/extensions/context-pruning.js +162 -0
- package/dist/core/extensions/context-pruning.js.map +1 -0
- package/dist/core/extensions/deep-investigation.d.ts +2 -0
- package/dist/core/extensions/deep-investigation.js +541 -0
- package/dist/core/extensions/deep-investigation.js.map +1 -0
- package/dist/core/extensions/memory-flush.d.ts +20 -0
- package/dist/core/extensions/memory-flush.js +120 -0
- package/dist/core/extensions/memory-flush.js.map +1 -0
- package/dist/core/llm-proxy.d.ts +37 -0
- package/dist/core/llm-proxy.js +578 -0
- package/dist/core/llm-proxy.js.map +1 -0
- package/dist/core/mcp-client.d.ts +80 -0
- package/dist/core/mcp-client.js +285 -0
- package/dist/core/mcp-client.js.map +1 -0
- package/dist/core/prompt.d.ts +1 -0
- package/dist/core/prompt.js +64 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/tool-adapter.d.ts +45 -0
- package/dist/core/tool-adapter.js +154 -0
- package/dist/core/tool-adapter.js.map +1 -0
- package/dist/cron/cron-api.d.ts +9 -0
- package/dist/cron/cron-api.js +94 -0
- package/dist/cron/cron-api.js.map +1 -0
- package/dist/cron/cron-coordinator.d.ts +29 -0
- package/dist/cron/cron-coordinator.js +150 -0
- package/dist/cron/cron-coordinator.js.map +1 -0
- package/dist/cron/cron-executor.d.ts +15 -0
- package/dist/cron/cron-executor.js +90 -0
- package/dist/cron/cron-executor.js.map +1 -0
- package/dist/cron/cron-matcher.d.ts +19 -0
- package/dist/cron/cron-matcher.js +114 -0
- package/dist/cron/cron-matcher.js.map +1 -0
- package/dist/cron/cron-scheduler.d.ts +42 -0
- package/dist/cron/cron-scheduler.js +91 -0
- package/dist/cron/cron-scheduler.js.map +1 -0
- package/dist/cron/gateway-client.d.ts +32 -0
- package/dist/cron/gateway-client.js +91 -0
- package/dist/cron/gateway-client.js.map +1 -0
- package/dist/cron-main.d.ts +10 -0
- package/dist/cron-main.js +75 -0
- package/dist/cron-main.js.map +1 -0
- package/dist/gateway/agentbox/client.d.ts +187 -0
- package/dist/gateway/agentbox/client.js +314 -0
- package/dist/gateway/agentbox/client.js.map +1 -0
- package/dist/gateway/agentbox/index.d.ts +10 -0
- package/dist/gateway/agentbox/index.js +11 -0
- package/dist/gateway/agentbox/index.js.map +1 -0
- package/dist/gateway/agentbox/k8s-spawner.d.ts +70 -0
- package/dist/gateway/agentbox/k8s-spawner.js +466 -0
- package/dist/gateway/agentbox/k8s-spawner.js.map +1 -0
- package/dist/gateway/agentbox/local-spawner.d.ts +63 -0
- package/dist/gateway/agentbox/local-spawner.js +234 -0
- package/dist/gateway/agentbox/local-spawner.js.map +1 -0
- package/dist/gateway/agentbox/manager.d.ts +121 -0
- package/dist/gateway/agentbox/manager.js +325 -0
- package/dist/gateway/agentbox/manager.js.map +1 -0
- package/dist/gateway/agentbox/process-spawner.d.ts +21 -0
- package/dist/gateway/agentbox/process-spawner.js +168 -0
- package/dist/gateway/agentbox/process-spawner.js.map +1 -0
- package/dist/gateway/agentbox/spawner.d.ts +33 -0
- package/dist/gateway/agentbox/spawner.js +10 -0
- package/dist/gateway/agentbox/spawner.js.map +1 -0
- package/dist/gateway/agentbox/types.d.ts +39 -0
- package/dist/gateway/agentbox/types.js +5 -0
- package/dist/gateway/agentbox/types.js.map +1 -0
- package/dist/gateway/auth/bind-code-store.d.ts +31 -0
- package/dist/gateway/auth/bind-code-store.js +73 -0
- package/dist/gateway/auth/bind-code-store.js.map +1 -0
- package/dist/gateway/auth/index.d.ts +9 -0
- package/dist/gateway/auth/index.js +10 -0
- package/dist/gateway/auth/index.js.map +1 -0
- package/dist/gateway/auth/jwt.d.ts +23 -0
- package/dist/gateway/auth/jwt.js +82 -0
- package/dist/gateway/auth/jwt.js.map +1 -0
- package/dist/gateway/auth/login.d.ts +26 -0
- package/dist/gateway/auth/login.js +74 -0
- package/dist/gateway/auth/login.js.map +1 -0
- package/dist/gateway/auth/middleware.d.ts +23 -0
- package/dist/gateway/auth/middleware.js +67 -0
- package/dist/gateway/auth/middleware.js.map +1 -0
- package/dist/gateway/auth/oauth2.d.ts +57 -0
- package/dist/gateway/auth/oauth2.js +113 -0
- package/dist/gateway/auth/oauth2.js.map +1 -0
- package/dist/gateway/auth/user-store.d.ts +95 -0
- package/dist/gateway/auth/user-store.js +291 -0
- package/dist/gateway/auth/user-store.js.map +1 -0
- package/dist/gateway/channels/channel-manager.d.ts +42 -0
- package/dist/gateway/channels/channel-manager.js +156 -0
- package/dist/gateway/channels/channel-manager.js.map +1 -0
- package/dist/gateway/channels/channel-rpc.d.ts +9 -0
- package/dist/gateway/channels/channel-rpc.js +104 -0
- package/dist/gateway/channels/channel-rpc.js.map +1 -0
- package/dist/gateway/channels/channel-store.d.ts +32 -0
- package/dist/gateway/channels/channel-store.js +114 -0
- package/dist/gateway/channels/channel-store.js.map +1 -0
- package/dist/gateway/channels/discord.d.ts +5 -0
- package/dist/gateway/channels/discord.js +177 -0
- package/dist/gateway/channels/discord.js.map +1 -0
- package/dist/gateway/channels/lark-format.d.ts +41 -0
- package/dist/gateway/channels/lark-format.js +620 -0
- package/dist/gateway/channels/lark-format.js.map +1 -0
- package/dist/gateway/channels/lark.d.ts +5 -0
- package/dist/gateway/channels/lark.js +1000 -0
- package/dist/gateway/channels/lark.js.map +1 -0
- package/dist/gateway/channels/slack.d.ts +5 -0
- package/dist/gateway/channels/slack.js +170 -0
- package/dist/gateway/channels/slack.js.map +1 -0
- package/dist/gateway/channels/telegram.d.ts +5 -0
- package/dist/gateway/channels/telegram.js +173 -0
- package/dist/gateway/channels/telegram.js.map +1 -0
- package/dist/gateway/channels/utils.d.ts +34 -0
- package/dist/gateway/channels/utils.js +115 -0
- package/dist/gateway/channels/utils.js.map +1 -0
- package/dist/gateway/config.d.ts +14 -0
- package/dist/gateway/config.js +12 -0
- package/dist/gateway/config.js.map +1 -0
- package/dist/gateway/cron/notify.d.ts +14 -0
- package/dist/gateway/cron/notify.js +40 -0
- package/dist/gateway/cron/notify.js.map +1 -0
- package/dist/gateway/db/dialect-helpers.d.ts +8 -0
- package/dist/gateway/db/dialect-helpers.js +26 -0
- package/dist/gateway/db/dialect-helpers.js.map +1 -0
- package/dist/gateway/db/index.d.ts +20 -0
- package/dist/gateway/db/index.js +140 -0
- package/dist/gateway/db/index.js.map +1 -0
- package/dist/gateway/db/init-schema.d.ts +8 -0
- package/dist/gateway/db/init-schema.js +385 -0
- package/dist/gateway/db/init-schema.js.map +1 -0
- package/dist/gateway/db/migrate-sqlite.d.ts +8 -0
- package/dist/gateway/db/migrate-sqlite.js +335 -0
- package/dist/gateway/db/migrate-sqlite.js.map +1 -0
- package/dist/gateway/db/repositories/chat-repo.d.ts +64 -0
- package/dist/gateway/db/repositories/chat-repo.js +115 -0
- package/dist/gateway/db/repositories/chat-repo.js.map +1 -0
- package/dist/gateway/db/repositories/config-repo.d.ts +164 -0
- package/dist/gateway/db/repositories/config-repo.js +267 -0
- package/dist/gateway/db/repositories/config-repo.js.map +1 -0
- package/dist/gateway/db/repositories/credential-repo.d.ts +51 -0
- package/dist/gateway/db/repositories/credential-repo.js +70 -0
- package/dist/gateway/db/repositories/credential-repo.js.map +1 -0
- package/dist/gateway/db/repositories/env-repo.d.ts +37 -0
- package/dist/gateway/db/repositories/env-repo.js +74 -0
- package/dist/gateway/db/repositories/env-repo.js.map +1 -0
- package/dist/gateway/db/repositories/mcp-server-repo.d.ts +97 -0
- package/dist/gateway/db/repositories/mcp-server-repo.js +83 -0
- package/dist/gateway/db/repositories/mcp-server-repo.js.map +1 -0
- package/dist/gateway/db/repositories/model-config-repo.d.ts +141 -0
- package/dist/gateway/db/repositories/model-config-repo.js +439 -0
- package/dist/gateway/db/repositories/model-config-repo.js.map +1 -0
- package/dist/gateway/db/repositories/notification-repo.d.ts +50 -0
- package/dist/gateway/db/repositories/notification-repo.js +105 -0
- package/dist/gateway/db/repositories/notification-repo.js.map +1 -0
- package/dist/gateway/db/repositories/permission-repo.d.ts +28 -0
- package/dist/gateway/db/repositories/permission-repo.js +74 -0
- package/dist/gateway/db/repositories/permission-repo.js.map +1 -0
- package/dist/gateway/db/repositories/skill-content-repo.d.ts +29 -0
- package/dist/gateway/db/repositories/skill-content-repo.js +90 -0
- package/dist/gateway/db/repositories/skill-content-repo.js.map +1 -0
- package/dist/gateway/db/repositories/skill-repo.d.ts +170 -0
- package/dist/gateway/db/repositories/skill-repo.js +185 -0
- package/dist/gateway/db/repositories/skill-repo.js.map +1 -0
- package/dist/gateway/db/repositories/skill-review-repo.d.ts +44 -0
- package/dist/gateway/db/repositories/skill-review-repo.js +44 -0
- package/dist/gateway/db/repositories/skill-review-repo.js.map +1 -0
- package/dist/gateway/db/repositories/skill-version-repo.d.ts +30 -0
- package/dist/gateway/db/repositories/skill-version-repo.js +56 -0
- package/dist/gateway/db/repositories/skill-version-repo.js.map +1 -0
- package/dist/gateway/db/repositories/system-config-repo.d.ts +21 -0
- package/dist/gateway/db/repositories/system-config-repo.js +86 -0
- package/dist/gateway/db/repositories/system-config-repo.js.map +1 -0
- package/dist/gateway/db/repositories/user-env-config-repo.d.ts +32 -0
- package/dist/gateway/db/repositories/user-env-config-repo.js +79 -0
- package/dist/gateway/db/repositories/user-env-config-repo.js.map +1 -0
- package/dist/gateway/db/repositories/user-repo.d.ts +59 -0
- package/dist/gateway/db/repositories/user-repo.js +83 -0
- package/dist/gateway/db/repositories/user-repo.js.map +1 -0
- package/dist/gateway/db/repositories/vote-repo.d.ts +26 -0
- package/dist/gateway/db/repositories/vote-repo.js +97 -0
- package/dist/gateway/db/repositories/vote-repo.js.map +1 -0
- package/dist/gateway/db/repositories/workspace-repo.d.ts +27 -0
- package/dist/gateway/db/repositories/workspace-repo.js +145 -0
- package/dist/gateway/db/repositories/workspace-repo.js.map +1 -0
- package/dist/gateway/db/schema-mysql.d.ts +3897 -0
- package/dist/gateway/db/schema-mysql.js +354 -0
- package/dist/gateway/db/schema-mysql.js.map +1 -0
- package/dist/gateway/db/schema-sqlite.d.ts +4147 -0
- package/dist/gateway/db/schema-sqlite.js +345 -0
- package/dist/gateway/db/schema-sqlite.js.map +1 -0
- package/dist/gateway/db/schema.d.ts +3869 -0
- package/dist/gateway/db/schema.js +16 -0
- package/dist/gateway/db/schema.js.map +1 -0
- package/dist/gateway/mcp-config-builder.d.ts +8 -0
- package/dist/gateway/mcp-config-builder.js +39 -0
- package/dist/gateway/mcp-config-builder.js.map +1 -0
- package/dist/gateway/output-redactor.d.ts +27 -0
- package/dist/gateway/output-redactor.js +101 -0
- package/dist/gateway/output-redactor.js.map +1 -0
- package/dist/gateway/plugins/api.d.ts +181 -0
- package/dist/gateway/plugins/api.js +28 -0
- package/dist/gateway/plugins/api.js.map +1 -0
- package/dist/gateway/plugins/channel-bridge.d.ts +72 -0
- package/dist/gateway/plugins/channel-bridge.js +586 -0
- package/dist/gateway/plugins/channel-bridge.js.map +1 -0
- package/dist/gateway/plugins/loader.d.ts +2 -0
- package/dist/gateway/plugins/loader.js +83 -0
- package/dist/gateway/plugins/loader.js.map +1 -0
- package/dist/gateway/plugins/runtime.d.ts +25 -0
- package/dist/gateway/plugins/runtime.js +64 -0
- package/dist/gateway/plugins/runtime.js.map +1 -0
- package/dist/gateway/resource-notifier.d.ts +36 -0
- package/dist/gateway/resource-notifier.js +123 -0
- package/dist/gateway/resource-notifier.js.map +1 -0
- package/dist/gateway/rpc-methods.d.ts +34 -0
- package/dist/gateway/rpc-methods.js +3198 -0
- package/dist/gateway/rpc-methods.js.map +1 -0
- package/dist/gateway/security/cert-manager.d.ts +77 -0
- package/dist/gateway/security/cert-manager.js +280 -0
- package/dist/gateway/security/cert-manager.js.map +1 -0
- package/dist/gateway/security/mtls-middleware.d.ts +33 -0
- package/dist/gateway/security/mtls-middleware.js +89 -0
- package/dist/gateway/security/mtls-middleware.js.map +1 -0
- package/dist/gateway/server.d.ts +54 -0
- package/dist/gateway/server.js +1146 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/skill-labels.d.ts +16 -0
- package/dist/gateway/skill-labels.js +79 -0
- package/dist/gateway/skill-labels.js.map +1 -0
- package/dist/gateway/skills/file-writer.d.ts +75 -0
- package/dist/gateway/skills/file-writer.js +320 -0
- package/dist/gateway/skills/file-writer.js.map +1 -0
- package/dist/gateway/skills/script-evaluator.d.ts +42 -0
- package/dist/gateway/skills/script-evaluator.js +204 -0
- package/dist/gateway/skills/script-evaluator.js.map +1 -0
- package/dist/gateway/skills/skill-bundle.d.ts +34 -0
- package/dist/gateway/skills/skill-bundle.js +83 -0
- package/dist/gateway/skills/skill-bundle.js.map +1 -0
- package/dist/gateway/web/dist/assets/index-BF6CtvnV.css +1 -0
- package/dist/gateway/web/dist/assets/index-Dumzqsr-.js +680 -0
- package/dist/gateway/web/dist/assets/index-n4IMHP1Q.js +675 -0
- package/dist/gateway/web/dist/index.html +14 -0
- package/dist/gateway/web/dist/noise.png +1 -0
- package/dist/gateway/web/dist/robots.txt +2 -0
- package/dist/gateway/web/dist/vite.svg +1 -0
- package/dist/gateway/ws-protocol.d.ts +68 -0
- package/dist/gateway/ws-protocol.js +106 -0
- package/dist/gateway/ws-protocol.js.map +1 -0
- package/dist/gateway-main.d.ts +1 -0
- package/dist/gateway-main.js +129 -0
- package/dist/gateway-main.js.map +1 -0
- package/dist/lib/s3-backup.d.ts +28 -0
- package/dist/lib/s3-backup.js +85 -0
- package/dist/lib/s3-backup.js.map +1 -0
- package/dist/lib/s3-storage.d.ts +45 -0
- package/dist/lib/s3-storage.js +210 -0
- package/dist/lib/s3-storage.js.map +1 -0
- package/dist/memory/chunker.d.ts +15 -0
- package/dist/memory/chunker.js +94 -0
- package/dist/memory/chunker.js.map +1 -0
- package/dist/memory/embeddings.d.ts +14 -0
- package/dist/memory/embeddings.js +143 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/index.d.ts +18 -0
- package/dist/memory/index.js +15 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/indexer.d.ts +70 -0
- package/dist/memory/indexer.js +567 -0
- package/dist/memory/indexer.js.map +1 -0
- package/dist/memory/mmr.d.ts +22 -0
- package/dist/memory/mmr.js +82 -0
- package/dist/memory/mmr.js.map +1 -0
- package/dist/memory/schema.d.ts +2 -0
- package/dist/memory/schema.js +85 -0
- package/dist/memory/schema.js.map +1 -0
- package/dist/memory/session-summarizer.d.ts +19 -0
- package/dist/memory/session-summarizer.js +139 -0
- package/dist/memory/session-summarizer.js.map +1 -0
- package/dist/memory/stop-words.d.ts +13 -0
- package/dist/memory/stop-words.js +132 -0
- package/dist/memory/stop-words.js.map +1 -0
- package/dist/memory/temporal-decay.d.ts +20 -0
- package/dist/memory/temporal-decay.js +63 -0
- package/dist/memory/temporal-decay.js.map +1 -0
- package/dist/memory/types.d.ts +40 -0
- package/dist/memory/types.js +2 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/shared/resource-sync.d.ts +80 -0
- package/dist/shared/resource-sync.js +24 -0
- package/dist/shared/resource-sync.js.map +1 -0
- package/dist/tools/command-sets.d.ts +61 -0
- package/dist/tools/command-sets.js +845 -0
- package/dist/tools/command-sets.js.map +1 -0
- package/dist/tools/create-skill.d.ts +2 -0
- package/dist/tools/create-skill.js +169 -0
- package/dist/tools/create-skill.js.map +1 -0
- package/dist/tools/credential-list.d.ts +8 -0
- package/dist/tools/credential-list.js +139 -0
- package/dist/tools/credential-list.js.map +1 -0
- package/dist/tools/deep-search/engine.d.ts +40 -0
- package/dist/tools/deep-search/engine.js +594 -0
- package/dist/tools/deep-search/engine.js.map +1 -0
- package/dist/tools/deep-search/events.d.ts +11 -0
- package/dist/tools/deep-search/events.js +10 -0
- package/dist/tools/deep-search/events.js.map +1 -0
- package/dist/tools/deep-search/format.d.ts +11 -0
- package/dist/tools/deep-search/format.js +143 -0
- package/dist/tools/deep-search/format.js.map +1 -0
- package/dist/tools/deep-search/prompts.d.ts +30 -0
- package/dist/tools/deep-search/prompts.js +237 -0
- package/dist/tools/deep-search/prompts.js.map +1 -0
- package/dist/tools/deep-search/sre-knowledge.d.ts +21 -0
- package/dist/tools/deep-search/sre-knowledge.js +112 -0
- package/dist/tools/deep-search/sre-knowledge.js.map +1 -0
- package/dist/tools/deep-search/sub-agent.d.ts +71 -0
- package/dist/tools/deep-search/sub-agent.js +401 -0
- package/dist/tools/deep-search/sub-agent.js.map +1 -0
- package/dist/tools/deep-search/tool.d.ts +9 -0
- package/dist/tools/deep-search/tool.js +201 -0
- package/dist/tools/deep-search/tool.js.map +1 -0
- package/dist/tools/deep-search/types.d.ts +67 -0
- package/dist/tools/deep-search/types.js +41 -0
- package/dist/tools/deep-search/types.js.map +1 -0
- package/dist/tools/dp-tools.d.ts +47 -0
- package/dist/tools/dp-tools.js +170 -0
- package/dist/tools/dp-tools.js.map +1 -0
- package/dist/tools/fork-skill.d.ts +2 -0
- package/dist/tools/fork-skill.js +93 -0
- package/dist/tools/fork-skill.js.map +1 -0
- package/dist/tools/k8s-checks.d.ts +18 -0
- package/dist/tools/k8s-checks.js +105 -0
- package/dist/tools/k8s-checks.js.map +1 -0
- package/dist/tools/kubeconfig-resolver.d.ts +11 -0
- package/dist/tools/kubeconfig-resolver.js +53 -0
- package/dist/tools/kubeconfig-resolver.js.map +1 -0
- package/dist/tools/kubectl.d.ts +12 -0
- package/dist/tools/kubectl.js +169 -0
- package/dist/tools/kubectl.js.map +1 -0
- package/dist/tools/manage-schedule.d.ts +3 -0
- package/dist/tools/manage-schedule.js +189 -0
- package/dist/tools/manage-schedule.js.map +1 -0
- package/dist/tools/memory-get.d.ts +2 -0
- package/dist/tools/memory-get.js +99 -0
- package/dist/tools/memory-get.js.map +1 -0
- package/dist/tools/memory-search.d.ts +3 -0
- package/dist/tools/memory-search.js +93 -0
- package/dist/tools/memory-search.js.map +1 -0
- package/dist/tools/netns-script.d.ts +3 -0
- package/dist/tools/netns-script.js +394 -0
- package/dist/tools/netns-script.js.map +1 -0
- package/dist/tools/node-exec.d.ts +18 -0
- package/dist/tools/node-exec.js +342 -0
- package/dist/tools/node-exec.js.map +1 -0
- package/dist/tools/node-script.d.ts +3 -0
- package/dist/tools/node-script.js +266 -0
- package/dist/tools/node-script.js.map +1 -0
- package/dist/tools/pod-exec.d.ts +4 -0
- package/dist/tools/pod-exec.js +146 -0
- package/dist/tools/pod-exec.js.map +1 -0
- package/dist/tools/pod-nsenter-exec.d.ts +3 -0
- package/dist/tools/pod-nsenter-exec.js +333 -0
- package/dist/tools/pod-nsenter-exec.js.map +1 -0
- package/dist/tools/pod-script.d.ts +3 -0
- package/dist/tools/pod-script.js +176 -0
- package/dist/tools/pod-script.js.map +1 -0
- package/dist/tools/restricted-bash.d.ts +41 -0
- package/dist/tools/restricted-bash.js +503 -0
- package/dist/tools/restricted-bash.js.map +1 -0
- package/dist/tools/run-skill.d.ts +3 -0
- package/dist/tools/run-skill.js +169 -0
- package/dist/tools/run-skill.js.map +1 -0
- package/dist/tools/sanitize-env.d.ts +14 -0
- package/dist/tools/sanitize-env.js +95 -0
- package/dist/tools/sanitize-env.js.map +1 -0
- package/dist/tools/script-resolver.d.ts +35 -0
- package/dist/tools/script-resolver.js +213 -0
- package/dist/tools/script-resolver.js.map +1 -0
- package/dist/tools/tool-render.d.ts +20 -0
- package/dist/tools/tool-render.js +77 -0
- package/dist/tools/tool-render.js.map +1 -0
- package/dist/tools/update-skill.d.ts +2 -0
- package/dist/tools/update-skill.js +169 -0
- package/dist/tools/update-skill.js.map +1 -0
- package/package.json +106 -0
- package/settings.example.json +74 -0
- package/siclaw.mjs +48 -0
- package/skills/core/cluster-events/SKILL.md +150 -0
- package/skills/core/deep-investigation/SKILL.md +87 -0
- package/skills/core/deep-investigation/default-memory.md +8 -0
- package/skills/core/deployment-rollout-debug/SKILL.md +144 -0
- package/skills/core/dns-debug/SKILL.md +144 -0
- package/skills/core/find-node/SKILL.md +23 -0
- package/skills/core/find-node/scripts/find-node.sh +9 -0
- package/skills/core/hpa-debug/SKILL.md +159 -0
- package/skills/core/image-pull-debug/SKILL.md +151 -0
- package/skills/core/ingress-debug/SKILL.md +189 -0
- package/skills/core/job-debug/SKILL.md +180 -0
- package/skills/core/meta.json +23 -0
- package/skills/core/node-health-check/SKILL.md +150 -0
- package/skills/core/node-logs/SKILL.md +68 -0
- package/skills/core/node-logs/scripts/get-node-logs.sh +78 -0
- package/skills/core/node-ping-gateway/SKILL.md +54 -0
- package/skills/core/node-ping-gateway/scripts/ping-node-gateway.sh +71 -0
- package/skills/core/node-show-gateway/SKILL.md +55 -0
- package/skills/core/node-show-gateway/scripts/show-node-gateway.sh +90 -0
- package/skills/core/pod-crash-debug/SKILL.md +135 -0
- package/skills/core/pod-pending-debug/SKILL.md +146 -0
- package/skills/core/pod-ping-gateway/SKILL.md +44 -0
- package/skills/core/pod-ping-gateway/scripts/ping-gateway.sh +76 -0
- package/skills/core/pod-show-gateway/SKILL.md +54 -0
- package/skills/core/pod-show-gateway/scripts/show-gateway.sh +115 -0
- package/skills/core/pvc-debug/SKILL.md +169 -0
- package/skills/core/service-debug/SKILL.md +164 -0
- package/skills/extension/.gitkeep +0 -0
- package/skills/platform/create-skill/SKILL.md +288 -0
- package/skills/platform/manage-skill/SKILL.md +23 -0
- package/skills/platform/update-skill/SKILL.md +52 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron Scheduler — Event-driven, one setTimeout per job
|
|
3
|
+
*
|
|
4
|
+
* Pure timer manager. Each active job gets its own timer.
|
|
5
|
+
* CRUD operations update timers in real-time.
|
|
6
|
+
* DB coordination is handled by CronCoordinator.
|
|
7
|
+
*/
|
|
8
|
+
import { getNextCronDelay, getNextCronTime } from "./cron-matcher.js";
|
|
9
|
+
export class CronScheduler {
|
|
10
|
+
timers = new Map();
|
|
11
|
+
jobs = new Map();
|
|
12
|
+
executing = new Set();
|
|
13
|
+
onFire;
|
|
14
|
+
constructor(onFire) {
|
|
15
|
+
this.onFire = onFire;
|
|
16
|
+
}
|
|
17
|
+
/** Add or update a job — cancels old timer and reschedules */
|
|
18
|
+
addOrUpdate(job) {
|
|
19
|
+
this.cancel(job.id);
|
|
20
|
+
this.jobs.set(job.id, job);
|
|
21
|
+
if (job.status === "active") {
|
|
22
|
+
this.scheduleNext(job);
|
|
23
|
+
console.log(`[cron-scheduler] Scheduled job ${job.id} (${job.name})`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.log(`[cron-scheduler] Job ${job.id} (${job.name}) is paused, not scheduling`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** Cancel a job's timer */
|
|
30
|
+
cancel(jobId) {
|
|
31
|
+
const timer = this.timers.get(jobId);
|
|
32
|
+
if (timer) {
|
|
33
|
+
clearTimeout(timer);
|
|
34
|
+
this.timers.delete(jobId);
|
|
35
|
+
}
|
|
36
|
+
this.jobs.delete(jobId);
|
|
37
|
+
}
|
|
38
|
+
/** Schedule next fire for a job */
|
|
39
|
+
scheduleNext(job) {
|
|
40
|
+
try {
|
|
41
|
+
const delay = getNextCronDelay(job.schedule);
|
|
42
|
+
const nextTime = getNextCronTime(job.schedule);
|
|
43
|
+
console.log(`[cron-scheduler] Job ${job.id} (${job.name}) next fire at ${nextTime.toISOString()} (in ${Math.round(delay / 1000)}s)`);
|
|
44
|
+
const timer = setTimeout(async () => {
|
|
45
|
+
this.timers.delete(job.id);
|
|
46
|
+
// Guard against concurrent execution from race with addOrUpdate
|
|
47
|
+
if (this.executing.has(job.id))
|
|
48
|
+
return;
|
|
49
|
+
this.executing.add(job.id);
|
|
50
|
+
console.log(`[cron-scheduler] Firing job ${job.id} (${job.name})`);
|
|
51
|
+
try {
|
|
52
|
+
await this.onFire(job);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.error(`[cron-scheduler] Job ${job.id} fire error:`, err);
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
this.executing.delete(job.id);
|
|
59
|
+
}
|
|
60
|
+
// Reschedule if still in our job list and active
|
|
61
|
+
const current = this.jobs.get(job.id);
|
|
62
|
+
if (current && current.status === "active") {
|
|
63
|
+
this.scheduleNext(current);
|
|
64
|
+
}
|
|
65
|
+
}, delay);
|
|
66
|
+
timer.unref();
|
|
67
|
+
this.timers.set(job.id, timer);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
console.error(`[cron-scheduler] Failed to schedule job ${job.id}:`, err);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Stop all timers */
|
|
74
|
+
stop() {
|
|
75
|
+
for (const [, timer] of this.timers) {
|
|
76
|
+
clearTimeout(timer);
|
|
77
|
+
}
|
|
78
|
+
this.timers.clear();
|
|
79
|
+
this.jobs.clear();
|
|
80
|
+
console.log("[cron-scheduler] Stopped all timers");
|
|
81
|
+
}
|
|
82
|
+
/** Get current job count */
|
|
83
|
+
get jobCount() {
|
|
84
|
+
return this.timers.size;
|
|
85
|
+
}
|
|
86
|
+
/** Get IDs of all scheduled jobs (for reconciliation) */
|
|
87
|
+
get scheduledJobIds() {
|
|
88
|
+
return [...this.timers.keys()];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=cron-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-scheduler.js","sourceRoot":"","sources":["../../src/cron/cron-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway Client — HTTP proxy for cron DB operations
|
|
3
|
+
*
|
|
4
|
+
* Replaces direct ConfigRepository access so the cron service
|
|
5
|
+
* no longer needs its own database connection. All state flows
|
|
6
|
+
* through Gateway's internal API.
|
|
7
|
+
*/
|
|
8
|
+
import type { CronJobRow } from "./cron-scheduler.js";
|
|
9
|
+
export declare class GatewayClient {
|
|
10
|
+
private baseUrl;
|
|
11
|
+
constructor(gatewayUrl: string);
|
|
12
|
+
registerCronInstance(instanceId: string, endpoint: string): Promise<void>;
|
|
13
|
+
updateHeartbeat(instanceId: string, jobCount: number): Promise<void>;
|
|
14
|
+
deleteInstance(instanceId: string): Promise<void>;
|
|
15
|
+
releaseInstanceJobs(instanceId: string): Promise<void>;
|
|
16
|
+
getDeadInstances(thresholdMs: number): Promise<Array<{
|
|
17
|
+
instanceId: string;
|
|
18
|
+
heartbeatAt: Date;
|
|
19
|
+
}>>;
|
|
20
|
+
getLeastLoadedInstance(thresholdMs: number): Promise<{
|
|
21
|
+
instanceId: string;
|
|
22
|
+
jobCount: number;
|
|
23
|
+
} | null>;
|
|
24
|
+
listCronJobsByInstance(instanceId: string): Promise<CronJobRow[]>;
|
|
25
|
+
getCronJobById(id: string): Promise<CronJobRow | null>;
|
|
26
|
+
getUnassignedActiveJobs(): Promise<CronJobRow[]>;
|
|
27
|
+
claimUnassignedJob(jobId: string, instanceId: string): Promise<boolean>;
|
|
28
|
+
updateCronJobRun(jobId: string, result: "success" | "failure"): Promise<void>;
|
|
29
|
+
reassignOrphanedJobs(fromInstanceId: string, toInstanceId: string): Promise<void>;
|
|
30
|
+
private get;
|
|
31
|
+
private post;
|
|
32
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway Client — HTTP proxy for cron DB operations
|
|
3
|
+
*
|
|
4
|
+
* Replaces direct ConfigRepository access so the cron service
|
|
5
|
+
* no longer needs its own database connection. All state flows
|
|
6
|
+
* through Gateway's internal API.
|
|
7
|
+
*/
|
|
8
|
+
export class GatewayClient {
|
|
9
|
+
baseUrl;
|
|
10
|
+
constructor(gatewayUrl) {
|
|
11
|
+
this.baseUrl = gatewayUrl.replace(/\/$/, "");
|
|
12
|
+
}
|
|
13
|
+
// ─── Cron Instances ──────────────────────────────
|
|
14
|
+
async registerCronInstance(instanceId, endpoint) {
|
|
15
|
+
await this.post("/api/internal/cron/register", { instanceId, endpoint });
|
|
16
|
+
}
|
|
17
|
+
async updateHeartbeat(instanceId, jobCount) {
|
|
18
|
+
await this.post("/api/internal/cron/heartbeat", { instanceId, jobCount });
|
|
19
|
+
}
|
|
20
|
+
async deleteInstance(instanceId) {
|
|
21
|
+
await this.post("/api/internal/cron/delete-instance", { instanceId });
|
|
22
|
+
}
|
|
23
|
+
async releaseInstanceJobs(instanceId) {
|
|
24
|
+
await this.post("/api/internal/cron/release-jobs", { instanceId });
|
|
25
|
+
}
|
|
26
|
+
async getDeadInstances(thresholdMs) {
|
|
27
|
+
const data = await this.get(`/api/internal/cron/dead-instances?thresholdMs=${thresholdMs}`);
|
|
28
|
+
return data.instances.map((i) => ({
|
|
29
|
+
instanceId: i.instanceId,
|
|
30
|
+
heartbeatAt: new Date(i.heartbeatAt),
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
async getLeastLoadedInstance(thresholdMs) {
|
|
34
|
+
const data = await this.get(`/api/internal/cron/least-loaded?thresholdMs=${thresholdMs}`);
|
|
35
|
+
return data.instance;
|
|
36
|
+
}
|
|
37
|
+
// ─── Cron Jobs ──────────────────────────────────
|
|
38
|
+
async listCronJobsByInstance(instanceId) {
|
|
39
|
+
const data = await this.get(`/api/internal/cron/jobs?instanceId=${encodeURIComponent(instanceId)}`);
|
|
40
|
+
return data.jobs.map(parseJobDates);
|
|
41
|
+
}
|
|
42
|
+
async getCronJobById(id) {
|
|
43
|
+
const data = await this.get(`/api/internal/cron/jobs/${encodeURIComponent(id)}`);
|
|
44
|
+
return data.job ? parseJobDates(data.job) : null;
|
|
45
|
+
}
|
|
46
|
+
async getUnassignedActiveJobs() {
|
|
47
|
+
const data = await this.get("/api/internal/cron/jobs?unassigned=1");
|
|
48
|
+
return data.jobs.map(parseJobDates);
|
|
49
|
+
}
|
|
50
|
+
async claimUnassignedJob(jobId, instanceId) {
|
|
51
|
+
const data = await this.post("/api/internal/cron/claim-job", { jobId, instanceId });
|
|
52
|
+
return data.claimed;
|
|
53
|
+
}
|
|
54
|
+
async updateCronJobRun(jobId, result) {
|
|
55
|
+
await this.post("/api/internal/cron/job-run", { jobId, result });
|
|
56
|
+
}
|
|
57
|
+
async reassignOrphanedJobs(fromInstanceId, toInstanceId) {
|
|
58
|
+
await this.post("/api/internal/cron/reassign-jobs", { fromInstanceId, toInstanceId });
|
|
59
|
+
}
|
|
60
|
+
// ─── HTTP helpers ────────────────────────────────
|
|
61
|
+
async get(path) {
|
|
62
|
+
const resp = await fetch(`${this.baseUrl}${path}`, {
|
|
63
|
+
signal: AbortSignal.timeout(10_000),
|
|
64
|
+
});
|
|
65
|
+
if (!resp.ok) {
|
|
66
|
+
throw new Error(`Gateway GET ${path} returned ${resp.status}: ${await resp.text()}`);
|
|
67
|
+
}
|
|
68
|
+
return resp.json();
|
|
69
|
+
}
|
|
70
|
+
async post(path, body) {
|
|
71
|
+
const resp = await fetch(`${this.baseUrl}${path}`, {
|
|
72
|
+
method: "POST",
|
|
73
|
+
headers: { "Content-Type": "application/json" },
|
|
74
|
+
body: JSON.stringify(body),
|
|
75
|
+
signal: AbortSignal.timeout(10_000),
|
|
76
|
+
});
|
|
77
|
+
if (!resp.ok) {
|
|
78
|
+
throw new Error(`Gateway POST ${path} returned ${resp.status}: ${await resp.text()}`);
|
|
79
|
+
}
|
|
80
|
+
return resp.json();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** Convert JSON date strings back to Date objects */
|
|
84
|
+
function parseJobDates(job) {
|
|
85
|
+
return {
|
|
86
|
+
...job,
|
|
87
|
+
lastRunAt: job.lastRunAt ? new Date(job.lastRunAt) : null,
|
|
88
|
+
lockedAt: job.lockedAt ? new Date(job.lockedAt) : null,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=gateway-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/cron/gateway-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron Service — Standalone Process Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Independent from Gateway. Multi-instance capable via CronCoordinator.
|
|
5
|
+
* Each instance registers itself, sends heartbeats, and claims jobs.
|
|
6
|
+
* Dead instances are detected and their jobs reassigned.
|
|
7
|
+
*
|
|
8
|
+
* All DB access goes through Gateway's internal API (no direct DB connection).
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron Service — Standalone Process Entry Point
|
|
3
|
+
*
|
|
4
|
+
* Independent from Gateway. Multi-instance capable via CronCoordinator.
|
|
5
|
+
* Each instance registers itself, sends heartbeats, and claims jobs.
|
|
6
|
+
* Dead instances are detected and their jobs reassigned.
|
|
7
|
+
*
|
|
8
|
+
* All DB access goes through Gateway's internal API (no direct DB connection).
|
|
9
|
+
*/
|
|
10
|
+
import os from "node:os";
|
|
11
|
+
import { CronScheduler } from "./cron/cron-scheduler.js";
|
|
12
|
+
import { CronExecutor } from "./cron/cron-executor.js";
|
|
13
|
+
import { CronCoordinator } from "./cron/cron-coordinator.js";
|
|
14
|
+
import { createCronApi } from "./cron/cron-api.js";
|
|
15
|
+
import { GatewayClient } from "./cron/gateway-client.js";
|
|
16
|
+
const apiPort = parseInt(process.env.SICLAW_CRON_API_PORT || "3100", 10);
|
|
17
|
+
// Instance identity — in K8s, HOSTNAME is the pod name (unique per replica)
|
|
18
|
+
const instanceId = process.env.SICLAW_CRON_INSTANCE_ID || process.env.HOSTNAME || `cron-${os.hostname()}-${process.pid}`;
|
|
19
|
+
// Construct endpoint: explicit > Pod IP > localhost
|
|
20
|
+
const endpoint = process.env.SICLAW_CRON_ENDPOINT ||
|
|
21
|
+
(process.env.POD_IP
|
|
22
|
+
? `http://${process.env.POD_IP}:${apiPort}`
|
|
23
|
+
: `http://localhost:${apiPort}`);
|
|
24
|
+
console.log(`[cron] Instance ID: ${instanceId}`);
|
|
25
|
+
console.log(`[cron] Endpoint: ${endpoint}`);
|
|
26
|
+
// 1. Create gateway client (all DB access goes through gateway)
|
|
27
|
+
const gatewayUrl = process.env.SICLAW_GATEWAY_URL || "http://siclaw-gateway";
|
|
28
|
+
console.log(`[cron] Gateway URL: ${gatewayUrl}`);
|
|
29
|
+
const client = new GatewayClient(gatewayUrl);
|
|
30
|
+
// 2. Create executor (delegates to gateway's internal API)
|
|
31
|
+
const executor = new CronExecutor(gatewayUrl, client);
|
|
32
|
+
const scheduler = new CronScheduler((job) => executor.execute(job));
|
|
33
|
+
// 3. Create coordinator for multi-instance coordination
|
|
34
|
+
const coordinator = new CronCoordinator(instanceId, endpoint, client, scheduler);
|
|
35
|
+
// 4. Start inner API
|
|
36
|
+
const apiServer = createCronApi(scheduler, instanceId);
|
|
37
|
+
apiServer.listen(apiPort, () => {
|
|
38
|
+
console.log(`[cron] Inner API listening on port ${apiPort}`);
|
|
39
|
+
});
|
|
40
|
+
// 5. Start coordinator (registers instance, loads assigned jobs, starts heartbeat + reconcile)
|
|
41
|
+
await coordinator.start();
|
|
42
|
+
console.log(`[cron] Service started (instance: ${instanceId})`);
|
|
43
|
+
// 6. Built-in daily purge: hard-delete notifications older than 30 days
|
|
44
|
+
const PURGE_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
45
|
+
const RETENTION_DAYS = 30;
|
|
46
|
+
async function purgeOldNotifications() {
|
|
47
|
+
try {
|
|
48
|
+
const resp = await fetch(`${gatewayUrl}/api/internal/notifications/purge`, {
|
|
49
|
+
method: "POST",
|
|
50
|
+
headers: { "Content-Type": "application/json" },
|
|
51
|
+
body: JSON.stringify({ retentionDays: RETENTION_DAYS }),
|
|
52
|
+
signal: AbortSignal.timeout(10_000),
|
|
53
|
+
});
|
|
54
|
+
const data = await resp.json();
|
|
55
|
+
console.log(`[cron] Notification purge: deleted=${data.deleted ?? 0} (retention=${RETENTION_DAYS}d)`);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
console.warn("[cron] Notification purge failed:", err instanceof Error ? err.message : err);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Run once on startup + every 24h
|
|
62
|
+
purgeOldNotifications();
|
|
63
|
+
const purgeTimer = setInterval(purgeOldNotifications, PURGE_INTERVAL_MS);
|
|
64
|
+
purgeTimer.unref();
|
|
65
|
+
// 7. Graceful shutdown — release jobs immediately so other instances can claim them
|
|
66
|
+
async function shutdown() {
|
|
67
|
+
console.log("\n[cron] Shutting down...");
|
|
68
|
+
scheduler.stop();
|
|
69
|
+
await coordinator.shutdown();
|
|
70
|
+
apiServer.close();
|
|
71
|
+
process.exit(0);
|
|
72
|
+
}
|
|
73
|
+
process.on("SIGINT", shutdown);
|
|
74
|
+
process.on("SIGTERM", shutdown);
|
|
75
|
+
//# sourceMappingURL=cron-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-main.js","sourceRoot":"","sources":["../src/cron-main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentBox HTTP Client
|
|
3
|
+
*
|
|
4
|
+
* Client used by the Gateway to call the AgentBox HTTP API.
|
|
5
|
+
* Supports mTLS when TLS options are provided.
|
|
6
|
+
*/
|
|
7
|
+
import { type ResourceType } from "../../shared/resource-sync.js";
|
|
8
|
+
export interface AgentBoxTlsOptions {
|
|
9
|
+
cert: string;
|
|
10
|
+
key: string;
|
|
11
|
+
ca: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PromptOptions {
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
text: string;
|
|
16
|
+
/** string = use this env, null = explicitly no env, undefined = keep current */
|
|
17
|
+
kubeconfigPath?: string | null;
|
|
18
|
+
/** Environment ID for schedule filtering — string = use this env, null = no env */
|
|
19
|
+
envId?: string | null;
|
|
20
|
+
/** Session mode — "web" | "channel" */
|
|
21
|
+
mode?: string;
|
|
22
|
+
/** Model provider to use for this prompt */
|
|
23
|
+
modelProvider?: string;
|
|
24
|
+
/** Model ID to use for this prompt */
|
|
25
|
+
modelId?: string;
|
|
26
|
+
/** Brain type — "pi-agent" | "claude-sdk" */
|
|
27
|
+
brainType?: string;
|
|
28
|
+
/** Workspace ID (for logging/context) */
|
|
29
|
+
workspaceId?: string;
|
|
30
|
+
/** Credential payload — agentbox materializes files locally from this data */
|
|
31
|
+
credentials?: {
|
|
32
|
+
manifest: Array<{
|
|
33
|
+
name: string;
|
|
34
|
+
type: string;
|
|
35
|
+
description?: string | null;
|
|
36
|
+
files: string[];
|
|
37
|
+
metadata?: Record<string, unknown>;
|
|
38
|
+
}>;
|
|
39
|
+
files: Array<{
|
|
40
|
+
name: string;
|
|
41
|
+
content: string;
|
|
42
|
+
mode?: number;
|
|
43
|
+
}>;
|
|
44
|
+
};
|
|
45
|
+
/** Full provider config for dynamic registration (from gateway DB) */
|
|
46
|
+
modelConfig?: {
|
|
47
|
+
name: string;
|
|
48
|
+
baseUrl: string;
|
|
49
|
+
apiKey: string;
|
|
50
|
+
api: string;
|
|
51
|
+
authHeader: boolean;
|
|
52
|
+
models: Array<{
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
reasoning: boolean;
|
|
56
|
+
input: string[];
|
|
57
|
+
cost: {
|
|
58
|
+
input: number;
|
|
59
|
+
output: number;
|
|
60
|
+
cacheRead: number;
|
|
61
|
+
cacheWrite: number;
|
|
62
|
+
};
|
|
63
|
+
contextWindow: number;
|
|
64
|
+
maxTokens: number;
|
|
65
|
+
compat?: Record<string, unknown>;
|
|
66
|
+
}>;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface PromptResponse {
|
|
70
|
+
ok: boolean;
|
|
71
|
+
sessionId: string;
|
|
72
|
+
brainType?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface SessionInfo {
|
|
75
|
+
id: string;
|
|
76
|
+
createdAt: string;
|
|
77
|
+
lastActiveAt: string;
|
|
78
|
+
}
|
|
79
|
+
export interface HealthResponse {
|
|
80
|
+
status: string;
|
|
81
|
+
sessions: number;
|
|
82
|
+
timestamp: string;
|
|
83
|
+
}
|
|
84
|
+
export interface ModelInfo {
|
|
85
|
+
id: string;
|
|
86
|
+
name: string;
|
|
87
|
+
provider: string;
|
|
88
|
+
contextWindow: number;
|
|
89
|
+
maxTokens: number;
|
|
90
|
+
reasoning: boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface ContextUsageResponse {
|
|
93
|
+
tokens: number;
|
|
94
|
+
contextWindow: number;
|
|
95
|
+
percent: number;
|
|
96
|
+
isCompacting: boolean;
|
|
97
|
+
inputTokens: number;
|
|
98
|
+
outputTokens: number;
|
|
99
|
+
cacheReadTokens: number;
|
|
100
|
+
cacheWriteTokens: number;
|
|
101
|
+
cost: number;
|
|
102
|
+
}
|
|
103
|
+
export declare class AgentBoxClient {
|
|
104
|
+
private endpoint;
|
|
105
|
+
private timeoutMs;
|
|
106
|
+
private httpsAgent;
|
|
107
|
+
constructor(endpoint: string, timeoutMs?: number, tlsOptions?: AgentBoxTlsOptions);
|
|
108
|
+
/**
|
|
109
|
+
* Health check
|
|
110
|
+
*/
|
|
111
|
+
health(): Promise<HealthResponse>;
|
|
112
|
+
/**
|
|
113
|
+
* Send a prompt
|
|
114
|
+
*/
|
|
115
|
+
prompt(opts: PromptOptions): Promise<PromptResponse>;
|
|
116
|
+
/**
|
|
117
|
+
* Get session list
|
|
118
|
+
*/
|
|
119
|
+
listSessions(): Promise<{
|
|
120
|
+
sessions: SessionInfo[];
|
|
121
|
+
}>;
|
|
122
|
+
/**
|
|
123
|
+
* Generic resource reload — POST to the descriptor's reloadPath.
|
|
124
|
+
*/
|
|
125
|
+
reloadResource(type: ResourceType): Promise<unknown>;
|
|
126
|
+
/**
|
|
127
|
+
* Get context usage
|
|
128
|
+
*/
|
|
129
|
+
getContextUsage(sessionId: string): Promise<ContextUsageResponse>;
|
|
130
|
+
/**
|
|
131
|
+
* Send a steer instruction (inserts a user message after interrupting the current tool)
|
|
132
|
+
*/
|
|
133
|
+
steerSession(sessionId: string, text: string): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Clear queued steer/followUp messages
|
|
136
|
+
*/
|
|
137
|
+
clearQueue(sessionId: string): Promise<{
|
|
138
|
+
steering: string[];
|
|
139
|
+
followUp: string[];
|
|
140
|
+
}>;
|
|
141
|
+
/**
|
|
142
|
+
* Abort the current prompt execution
|
|
143
|
+
*/
|
|
144
|
+
abortSession(sessionId: string): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Close a session
|
|
147
|
+
*/
|
|
148
|
+
closeSession(sessionId: string): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* List available models
|
|
151
|
+
*/
|
|
152
|
+
listModels(): Promise<{
|
|
153
|
+
models: ModelInfo[];
|
|
154
|
+
}>;
|
|
155
|
+
/**
|
|
156
|
+
* Get the current model
|
|
157
|
+
*/
|
|
158
|
+
getModel(sessionId: string): Promise<{
|
|
159
|
+
model: ModelInfo | null;
|
|
160
|
+
brainType?: string;
|
|
161
|
+
}>;
|
|
162
|
+
/**
|
|
163
|
+
* Switch model
|
|
164
|
+
*/
|
|
165
|
+
setModel(sessionId: string, provider: string, modelId: string): Promise<{
|
|
166
|
+
ok: boolean;
|
|
167
|
+
model: ModelInfo;
|
|
168
|
+
}>;
|
|
169
|
+
/**
|
|
170
|
+
* Subscribe to the SSE event stream
|
|
171
|
+
*
|
|
172
|
+
* Returns an AsyncIterable that can be iterated with for-await-of.
|
|
173
|
+
*/
|
|
174
|
+
streamEvents(sessionId: string): AsyncIterable<unknown>;
|
|
175
|
+
/**
|
|
176
|
+
* SSE stream over HTTPS with mTLS
|
|
177
|
+
*/
|
|
178
|
+
private streamEventsHttps;
|
|
179
|
+
/**
|
|
180
|
+
* Base fetch wrapper (supports both HTTP and HTTPS with mTLS)
|
|
181
|
+
*/
|
|
182
|
+
private fetch;
|
|
183
|
+
/**
|
|
184
|
+
* HTTPS request with mTLS (returns a Response-compatible object)
|
|
185
|
+
*/
|
|
186
|
+
private httpsRequest;
|
|
187
|
+
}
|