@roj-ai/sdk 0.1.36 → 0.2.1
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/dist/bootstrap.d.ts +420 -26
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +55 -24
- package/dist/bootstrap.js.map +1 -1
- package/dist/bun-platform/fs.d.ts.map +1 -1
- package/dist/bun-platform/fs.js +1 -0
- package/dist/bun-platform/fs.js.map +1 -1
- package/dist/bun-platform/index.d.ts +4 -1
- package/dist/bun-platform/index.d.ts.map +1 -1
- package/dist/bun-platform/index.js +7 -1
- package/dist/bun-platform/index.js.map +1 -1
- package/dist/bun-platform/server-lifecycle.d.ts +30 -0
- package/dist/bun-platform/server-lifecycle.d.ts.map +1 -0
- package/dist/bun-platform/server-lifecycle.js +182 -0
- package/dist/bun-platform/server-lifecycle.js.map +1 -0
- package/dist/bun-platform/shell.d.ts +33 -0
- package/dist/bun-platform/shell.d.ts.map +1 -0
- package/dist/bun-platform/shell.js +322 -0
- package/dist/bun-platform/shell.js.map +1 -0
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +97 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agents/agent.d.ts +42 -7
- package/dist/core/agents/agent.d.ts.map +1 -1
- package/dist/core/agents/agent.js +202 -87
- package/dist/core/agents/agent.js.map +1 -1
- package/dist/core/agents/config.d.ts +8 -1
- package/dist/core/agents/config.d.ts.map +1 -1
- package/dist/core/agents/config.js +5 -1
- package/dist/core/agents/config.js.map +1 -1
- package/dist/core/agents/retry.d.ts +1 -1
- package/dist/core/agents/retry.d.ts.map +1 -1
- package/dist/core/agents/retry.js +14 -16
- package/dist/core/agents/retry.js.map +1 -1
- package/dist/core/agents/state.d.ts +3 -1
- package/dist/core/agents/state.d.ts.map +1 -1
- package/dist/core/agents/state.js +1 -1
- package/dist/core/agents/state.js.map +1 -1
- package/dist/core/context/state.d.ts +3 -3
- package/dist/core/context/state.js +2 -2
- package/dist/core/events/base-event-store.d.ts.map +1 -1
- package/dist/core/events/base-event-store.js +22 -14
- package/dist/core/events/base-event-store.js.map +1 -1
- package/dist/core/events/file.d.ts +39 -1
- package/dist/core/events/file.d.ts.map +1 -1
- package/dist/core/events/file.js +159 -20
- package/dist/core/events/file.js.map +1 -1
- package/dist/core/events/types.d.ts +1 -1
- package/dist/core/file-store/containment.d.ts +19 -0
- package/dist/core/file-store/containment.d.ts.map +1 -0
- package/dist/core/file-store/containment.js +62 -0
- package/dist/core/file-store/containment.js.map +1 -0
- package/dist/core/file-store/file-store.d.ts +22 -2
- package/dist/core/file-store/file-store.d.ts.map +1 -1
- package/dist/core/file-store/file-store.js +88 -20
- package/dist/core/file-store/file-store.js.map +1 -1
- package/dist/core/file-store/types.d.ts +13 -1
- package/dist/core/file-store/types.d.ts.map +1 -1
- package/dist/core/image/image-processor.d.ts.map +1 -1
- package/dist/core/image/image-processor.js +3 -1
- package/dist/core/image/image-processor.js.map +1 -1
- package/dist/core/image/types.d.ts +2 -0
- package/dist/core/image/types.d.ts.map +1 -1
- package/dist/core/image/vips-resizer.d.ts.map +1 -1
- package/dist/core/image/vips-resizer.js +81 -33
- package/dist/core/image/vips-resizer.js.map +1 -1
- package/dist/core/llm/anthropic.d.ts +0 -1
- package/dist/core/llm/anthropic.d.ts.map +1 -1
- package/dist/core/llm/anthropic.js +58 -72
- package/dist/core/llm/anthropic.js.map +1 -1
- package/dist/core/llm/logger.d.ts +14 -2
- package/dist/core/llm/logger.d.ts.map +1 -1
- package/dist/core/llm/logger.js +161 -36
- package/dist/core/llm/logger.js.map +1 -1
- package/dist/core/llm/openrouter.d.ts +0 -1
- package/dist/core/llm/openrouter.d.ts.map +1 -1
- package/dist/core/llm/openrouter.js +53 -66
- package/dist/core/llm/openrouter.js.map +1 -1
- package/dist/core/llm/provider-request.d.ts +10 -0
- package/dist/core/llm/provider-request.d.ts.map +1 -0
- package/dist/core/llm/provider-request.js +41 -0
- package/dist/core/llm/provider-request.js.map +1 -0
- package/dist/core/llm/provider.d.ts +11 -0
- package/dist/core/llm/provider.d.ts.map +1 -1
- package/dist/core/llm/provider.js +26 -0
- package/dist/core/llm/provider.js.map +1 -1
- package/dist/core/llm/state.d.ts +2 -2
- package/dist/core/llm/state.js +4 -4
- package/dist/core/plugins/plugin-builder.d.ts +57 -3
- package/dist/core/plugins/plugin-builder.d.ts.map +1 -1
- package/dist/core/plugins/plugin-builder.js +68 -14
- package/dist/core/plugins/plugin-builder.js.map +1 -1
- package/dist/core/preset/preset-builder.d.ts +3 -2
- package/dist/core/preset/preset-builder.d.ts.map +1 -1
- package/dist/core/preset/preset-builder.js +7 -16
- package/dist/core/preset/preset-builder.js.map +1 -1
- package/dist/core/sessions/context.d.ts +23 -5
- package/dist/core/sessions/context.d.ts.map +1 -1
- package/dist/core/sessions/runtime-activity.d.ts +33 -0
- package/dist/core/sessions/runtime-activity.d.ts.map +1 -0
- package/dist/core/sessions/runtime-activity.js +55 -0
- package/dist/core/sessions/runtime-activity.js.map +1 -0
- package/dist/core/sessions/schema.d.ts +23 -2
- package/dist/core/sessions/schema.d.ts.map +1 -1
- package/dist/core/sessions/schema.js +24 -3
- package/dist/core/sessions/schema.js.map +1 -1
- package/dist/core/sessions/session-manager.d.ts +83 -6
- package/dist/core/sessions/session-manager.d.ts.map +1 -1
- package/dist/core/sessions/session-manager.js +517 -118
- package/dist/core/sessions/session-manager.js.map +1 -1
- package/dist/core/sessions/session-store.d.ts +18 -0
- package/dist/core/sessions/session-store.d.ts.map +1 -1
- package/dist/core/sessions/session-store.js +33 -0
- package/dist/core/sessions/session-store.js.map +1 -1
- package/dist/core/sessions/session.d.ts +42 -6
- package/dist/core/sessions/session.d.ts.map +1 -1
- package/dist/core/sessions/session.js +176 -44
- package/dist/core/sessions/session.js.map +1 -1
- package/dist/core/sessions/state.d.ts +10 -1
- package/dist/core/sessions/state.d.ts.map +1 -1
- package/dist/core/sessions/state.js +11 -1
- package/dist/core/sessions/state.js.map +1 -1
- package/dist/core/system.d.ts +9 -0
- package/dist/core/system.d.ts.map +1 -1
- package/dist/core/system.js +4 -1
- package/dist/core/system.js.map +1 -1
- package/dist/core/tools/executor.d.ts +1 -1
- package/dist/core/wake-key.d.ts +34 -0
- package/dist/core/wake-key.d.ts.map +1 -0
- package/dist/core/wake-key.js +51 -0
- package/dist/core/wake-key.js.map +1 -0
- package/dist/index.d.ts +23 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/archive/archive-inspection.d.ts +48 -0
- package/dist/lib/archive/archive-inspection.d.ts.map +1 -0
- package/dist/lib/archive/archive-inspection.fixtures.d.ts +7 -0
- package/dist/lib/archive/archive-inspection.fixtures.d.ts.map +1 -0
- package/dist/lib/archive/archive-inspection.fixtures.js +134 -0
- package/dist/lib/archive/archive-inspection.fixtures.js.map +1 -0
- package/dist/lib/archive/archive-inspection.js +253 -0
- package/dist/lib/archive/archive-inspection.js.map +1 -0
- package/dist/lib/archive/index.d.ts +3 -0
- package/dist/lib/archive/index.d.ts.map +1 -0
- package/dist/lib/archive/index.js +2 -0
- package/dist/lib/archive/index.js.map +1 -0
- package/dist/lib/logger/console.d.ts +5 -12
- package/dist/lib/logger/console.d.ts.map +1 -1
- package/dist/lib/logger/console.js +5 -47
- package/dist/lib/logger/console.js.map +1 -1
- package/dist/lib/logger/file.d.ts +8 -11
- package/dist/lib/logger/file.d.ts.map +1 -1
- package/dist/lib/logger/file.js +26 -37
- package/dist/lib/logger/file.js.map +1 -1
- package/dist/lib/logger/index.d.ts +3 -1
- package/dist/lib/logger/index.d.ts.map +1 -1
- package/dist/lib/logger/index.js +3 -1
- package/dist/lib/logger/index.js.map +1 -1
- package/dist/lib/logger/jsonl.d.ts +21 -0
- package/dist/lib/logger/jsonl.d.ts.map +1 -0
- package/dist/lib/logger/jsonl.js +29 -0
- package/dist/lib/logger/jsonl.js.map +1 -0
- package/dist/lib/logger/logger.d.ts +22 -0
- package/dist/lib/logger/logger.d.ts.map +1 -1
- package/dist/lib/logger/logger.js +37 -0
- package/dist/lib/logger/logger.js.map +1 -1
- package/dist/lib/logger/session-log.d.ts +21 -0
- package/dist/lib/logger/session-log.d.ts.map +1 -0
- package/dist/lib/logger/session-log.js +37 -0
- package/dist/lib/logger/session-log.js.map +1 -0
- package/dist/lib/utils/concurrency.d.ts +1 -1
- package/dist/lib/utils/concurrency.d.ts.map +1 -1
- package/dist/lib/utils/concurrency.js +30 -7
- package/dist/lib/utils/concurrency.js.map +1 -1
- package/dist/lib/utils/fs-batch.d.ts +17 -0
- package/dist/lib/utils/fs-batch.d.ts.map +1 -0
- package/dist/lib/utils/fs-batch.js +38 -0
- package/dist/lib/utils/fs-batch.js.map +1 -0
- package/dist/lib/utils/result.d.ts +7 -22
- package/dist/lib/utils/result.d.ts.map +1 -1
- package/dist/lib/utils/result.js +6 -17
- package/dist/lib/utils/result.js.map +1 -1
- package/dist/lib/utils/sleep.d.ts +10 -0
- package/dist/lib/utils/sleep.d.ts.map +1 -0
- package/dist/lib/utils/sleep.js +26 -0
- package/dist/lib/utils/sleep.js.map +1 -0
- package/dist/platform/fs-revision.d.ts +21 -0
- package/dist/platform/fs-revision.d.ts.map +1 -0
- package/dist/platform/fs-revision.js +9 -0
- package/dist/platform/fs-revision.js.map +1 -0
- package/dist/platform/fs.d.ts +104 -1
- package/dist/platform/fs.d.ts.map +1 -1
- package/dist/platform/git.d.ts +59 -0
- package/dist/platform/git.d.ts.map +1 -0
- package/dist/platform/git.js +8 -0
- package/dist/platform/git.js.map +1 -0
- package/dist/platform/index.d.ts +40 -1
- package/dist/platform/index.d.ts.map +1 -1
- package/dist/platform/index.js +1 -1
- package/dist/platform/index.js.map +1 -1
- package/dist/platform/llm-call-log.d.ts +80 -0
- package/dist/platform/llm-call-log.d.ts.map +1 -0
- package/dist/platform/llm-call-log.js +12 -0
- package/dist/platform/llm-call-log.js.map +1 -0
- package/dist/platform/scheduler.d.ts +32 -0
- package/dist/platform/scheduler.d.ts.map +1 -0
- package/dist/platform/scheduler.js +46 -0
- package/dist/platform/scheduler.js.map +1 -0
- package/dist/platform/session-log.d.ts +36 -0
- package/dist/platform/session-log.d.ts.map +1 -0
- package/dist/platform/session-log.js +12 -0
- package/dist/platform/session-log.js.map +1 -0
- package/dist/platform/shell.d.ts +83 -0
- package/dist/platform/shell.d.ts.map +1 -0
- package/dist/platform/shell.js +13 -0
- package/dist/platform/shell.js.map +1 -0
- package/dist/plugins/agent-status/plugin.d.ts.map +1 -1
- package/dist/plugins/agent-status/plugin.js +1 -0
- package/dist/plugins/agent-status/plugin.js.map +1 -1
- package/dist/plugins/agents/plugin.d.ts.map +1 -1
- package/dist/plugins/agents/plugin.js +129 -62
- package/dist/plugins/agents/plugin.js.map +1 -1
- package/dist/plugins/filesystem/listing.d.ts +3 -0
- package/dist/plugins/filesystem/listing.d.ts.map +1 -1
- package/dist/plugins/filesystem/listing.js +66 -10
- package/dist/plugins/filesystem/listing.js.map +1 -1
- package/dist/plugins/filesystem/plugin.d.ts.map +1 -1
- package/dist/plugins/filesystem/plugin.js +8 -6
- package/dist/plugins/filesystem/plugin.js.map +1 -1
- package/dist/plugins/git-status/plugin.d.ts +34 -7
- package/dist/plugins/git-status/plugin.d.ts.map +1 -1
- package/dist/plugins/git-status/plugin.js +168 -64
- package/dist/plugins/git-status/plugin.js.map +1 -1
- package/dist/plugins/llm-debug/plugin.d.ts.map +1 -1
- package/dist/plugins/llm-debug/plugin.js +1 -0
- package/dist/plugins/llm-debug/plugin.js.map +1 -1
- package/dist/plugins/logs/plugin.d.ts +1 -4
- package/dist/plugins/logs/plugin.d.ts.map +1 -1
- package/dist/plugins/logs/plugin.js +7 -0
- package/dist/plugins/logs/plugin.js.map +1 -1
- package/dist/plugins/mailbox/helpers.d.ts +2 -2
- package/dist/plugins/mailbox/helpers.js +1 -1
- package/dist/plugins/mailbox/plugin.d.ts.map +1 -1
- package/dist/plugins/mailbox/plugin.js +38 -43
- package/dist/plugins/mailbox/plugin.js.map +1 -1
- package/dist/plugins/mailbox/query.d.ts +7 -2
- package/dist/plugins/mailbox/query.d.ts.map +1 -1
- package/dist/plugins/mailbox/query.js +14 -7
- package/dist/plugins/mailbox/query.js.map +1 -1
- package/dist/plugins/mailbox/state.d.ts +5 -4
- package/dist/plugins/mailbox/state.d.ts.map +1 -1
- package/dist/plugins/mailbox/state.js +6 -5
- package/dist/plugins/mailbox/state.js.map +1 -1
- package/dist/plugins/resources/filename.d.ts +4 -0
- package/dist/plugins/resources/filename.d.ts.map +1 -0
- package/dist/plugins/resources/filename.js +18 -0
- package/dist/plugins/resources/filename.js.map +1 -0
- package/dist/plugins/resources/plugin.d.ts +3 -0
- package/dist/plugins/resources/plugin.d.ts.map +1 -1
- package/dist/plugins/resources/plugin.js +97 -60
- package/dist/plugins/resources/plugin.js.map +1 -1
- package/dist/plugins/resources/state.d.ts +1 -1
- package/dist/plugins/resources/state.js +1 -1
- package/dist/plugins/result-eviction/plugin.d.ts.map +1 -1
- package/dist/plugins/result-eviction/plugin.js +6 -1
- package/dist/plugins/result-eviction/plugin.js.map +1 -1
- package/dist/plugins/services/plugin.d.ts +4 -1
- package/dist/plugins/services/plugin.d.ts.map +1 -1
- package/dist/plugins/services/plugin.js +251 -100
- package/dist/plugins/services/plugin.js.map +1 -1
- package/dist/plugins/services/prompt.d.ts.map +1 -1
- package/dist/plugins/services/prompt.js +1 -4
- package/dist/plugins/services/prompt.js.map +1 -1
- package/dist/plugins/services/schema.d.ts +15 -5
- package/dist/plugins/services/schema.d.ts.map +1 -1
- package/dist/plugins/services/service.d.ts +100 -18
- package/dist/plugins/services/service.d.ts.map +1 -1
- package/dist/plugins/services/service.js +680 -230
- package/dist/plugins/services/service.js.map +1 -1
- package/dist/plugins/session-lifecycle/plugin.d.ts +21 -1
- package/dist/plugins/session-lifecycle/plugin.d.ts.map +1 -1
- package/dist/plugins/session-lifecycle/plugin.js +53 -40
- package/dist/plugins/session-lifecycle/plugin.js.map +1 -1
- package/dist/plugins/session-state/plugin.d.ts +21 -13
- package/dist/plugins/session-state/plugin.d.ts.map +1 -1
- package/dist/plugins/session-state/plugin.js +214 -79
- package/dist/plugins/session-state/plugin.js.map +1 -1
- package/dist/plugins/session-stats/plugin.d.ts.map +1 -1
- package/dist/plugins/session-stats/plugin.js +1 -0
- package/dist/plugins/session-stats/plugin.js.map +1 -1
- package/dist/plugins/shell/executor.d.ts +17 -15
- package/dist/plugins/shell/executor.d.ts.map +1 -1
- package/dist/plugins/shell/executor.js +130 -195
- package/dist/plugins/shell/executor.js.map +1 -1
- package/dist/plugins/shell/index.d.ts +2 -2
- package/dist/plugins/shell/index.d.ts.map +1 -1
- package/dist/plugins/shell/index.js +2 -2
- package/dist/plugins/shell/index.js.map +1 -1
- package/dist/plugins/shell/plugin.d.ts +5 -4
- package/dist/plugins/shell/plugin.d.ts.map +1 -1
- package/dist/plugins/shell/plugin.js +4 -8
- package/dist/plugins/shell/plugin.js.map +1 -1
- package/dist/plugins/skills/discovery.d.ts.map +1 -1
- package/dist/plugins/skills/discovery.js +10 -8
- package/dist/plugins/skills/discovery.js.map +1 -1
- package/dist/plugins/skills/index.d.ts +1 -1
- package/dist/plugins/skills/index.d.ts.map +1 -1
- package/dist/plugins/skills/plugin.d.ts +1 -1
- package/dist/plugins/skills/plugin.d.ts.map +1 -1
- package/dist/plugins/skills/plugin.js +23 -30
- package/dist/plugins/skills/plugin.js.map +1 -1
- package/dist/plugins/skills/prompts.d.ts +3 -3
- package/dist/plugins/skills/prompts.d.ts.map +1 -1
- package/dist/plugins/skills/prompts.js.map +1 -1
- package/dist/plugins/skills/schema.d.ts +4 -2
- package/dist/plugins/skills/schema.d.ts.map +1 -1
- package/dist/plugins/todo/schema.d.ts +1 -1
- package/dist/plugins/uploads/plugin.d.ts +11 -4
- package/dist/plugins/uploads/plugin.d.ts.map +1 -1
- package/dist/plugins/uploads/plugin.js +891 -225
- package/dist/plugins/uploads/plugin.js.map +1 -1
- package/dist/plugins/uploads/preprocessor.d.ts +14 -0
- package/dist/plugins/uploads/preprocessor.d.ts.map +1 -1
- package/dist/plugins/uploads/preprocessor.js +11 -0
- package/dist/plugins/uploads/preprocessor.js.map +1 -1
- package/dist/plugins/uploads/preprocessors/image-classifier.d.ts +1 -1
- package/dist/plugins/uploads/preprocessors/image-classifier.d.ts.map +1 -1
- package/dist/plugins/uploads/preprocessors/image-classifier.js +51 -26
- package/dist/plugins/uploads/preprocessors/image-classifier.js.map +1 -1
- package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts +2 -2
- package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts.map +1 -1
- package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js +41 -16
- package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js.map +1 -1
- package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts +1 -1
- package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts.map +1 -1
- package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js +29 -14
- package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js.map +1 -1
- package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts +1 -1
- package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts.map +1 -1
- package/dist/plugins/uploads/preprocessors/zip-preprocessor.js +62 -34
- package/dist/plugins/uploads/preprocessors/zip-preprocessor.js.map +1 -1
- package/dist/plugins/uploads/schema.d.ts +25 -2
- package/dist/plugins/uploads/schema.d.ts.map +1 -1
- package/dist/plugins/uploads/schema.js +24 -3
- package/dist/plugins/uploads/schema.js.map +1 -1
- package/dist/plugins/uploads/state.d.ts +13 -1
- package/dist/plugins/uploads/state.d.ts.map +1 -1
- package/dist/plugins/uploads/state.js +4 -1
- package/dist/plugins/uploads/state.js.map +1 -1
- package/dist/plugins/user-chat/plugin.d.ts +12 -5
- package/dist/plugins/user-chat/plugin.d.ts.map +1 -1
- package/dist/plugins/user-chat/plugin.js +141 -32
- package/dist/plugins/user-chat/plugin.js.map +1 -1
- package/dist/plugins/workers/context.d.ts +35 -13
- package/dist/plugins/workers/context.d.ts.map +1 -1
- package/dist/plugins/workers/context.js +82 -32
- package/dist/plugins/workers/context.js.map +1 -1
- package/dist/plugins/workers/definition.d.ts +7 -0
- package/dist/plugins/workers/definition.d.ts.map +1 -1
- package/dist/plugins/workers/definition.js.map +1 -1
- package/dist/plugins/workers/index.d.ts +4 -4
- package/dist/plugins/workers/index.d.ts.map +1 -1
- package/dist/plugins/workers/index.js +2 -2
- package/dist/plugins/workers/index.js.map +1 -1
- package/dist/plugins/workers/plugin.d.ts +10 -57
- package/dist/plugins/workers/plugin.d.ts.map +1 -1
- package/dist/plugins/workers/plugin.js +385 -123
- package/dist/plugins/workers/plugin.js.map +1 -1
- package/dist/plugins/workers/state.d.ts +69 -0
- package/dist/plugins/workers/state.d.ts.map +1 -0
- package/dist/plugins/workers/state.js +52 -0
- package/dist/plugins/workers/state.js.map +1 -0
- package/dist/plugins/workers/worker.d.ts +15 -4
- package/dist/plugins/workers/worker.d.ts.map +1 -1
- package/dist/testing/conformance.d.ts +106 -0
- package/dist/testing/conformance.d.ts.map +1 -0
- package/dist/testing/conformance.js +1463 -0
- package/dist/testing/conformance.js.map +1 -0
- package/dist/testing/node-platform.d.ts.map +1 -1
- package/dist/testing/node-platform.js +5 -0
- package/dist/testing/node-platform.js.map +1 -1
- package/dist/testing/test-harness.d.ts +11 -1
- package/dist/testing/test-harness.d.ts.map +1 -1
- package/dist/testing/test-harness.js +17 -37
- package/dist/testing/test-harness.js.map +1 -1
- package/dist/testing/wait-helpers.d.ts.map +1 -1
- package/dist/testing/wait-helpers.js +1 -3
- package/dist/testing/wait-helpers.js.map +1 -1
- package/dist/transport/adapter/client-adapter.d.ts +6 -0
- package/dist/transport/adapter/client-adapter.d.ts.map +1 -1
- package/dist/transport/adapter/client-adapter.js +50 -3
- package/dist/transport/adapter/client-adapter.js.map +1 -1
- package/dist/transport/adapter/heartbeat.d.ts +16 -0
- package/dist/transport/adapter/heartbeat.d.ts.map +1 -0
- package/dist/transport/adapter/heartbeat.js +41 -0
- package/dist/transport/adapter/heartbeat.js.map +1 -0
- package/dist/transport/adapter/server-adapter.d.ts.map +1 -1
- package/dist/transport/adapter/server-adapter.js +6 -0
- package/dist/transport/adapter/server-adapter.js.map +1 -1
- package/dist/transport/http/app.d.ts +3 -30
- package/dist/transport/http/app.d.ts.map +1 -1
- package/dist/transport/http/app.js +3 -7
- package/dist/transport/http/app.js.map +1 -1
- package/dist/transport/http/context.d.ts +40 -0
- package/dist/transport/http/context.d.ts.map +1 -0
- package/dist/transport/http/context.js +17 -0
- package/dist/transport/http/context.js.map +1 -0
- package/dist/transport/http/fetch-guard.d.ts +49 -0
- package/dist/transport/http/fetch-guard.d.ts.map +1 -0
- package/dist/transport/http/fetch-guard.js +312 -0
- package/dist/transport/http/fetch-guard.js.map +1 -0
- package/dist/transport/http/index.d.ts +1 -1
- package/dist/transport/http/index.d.ts.map +1 -1
- package/dist/transport/http/middleware/bearer-auth.d.ts +1 -1
- package/dist/transport/http/middleware/bearer-auth.d.ts.map +1 -1
- package/dist/transport/http/middleware/error-handler.d.ts +2 -2
- package/dist/transport/http/middleware/error-handler.d.ts.map +1 -1
- package/dist/transport/http/path-containment.d.ts +20 -0
- package/dist/transport/http/path-containment.d.ts.map +1 -0
- package/dist/transport/http/path-containment.js +31 -0
- package/dist/transport/http/path-containment.js.map +1 -0
- package/dist/transport/http/responses.d.ts +30 -0
- package/dist/transport/http/responses.d.ts.map +1 -0
- package/dist/transport/http/responses.js +5 -0
- package/dist/transport/http/responses.js.map +1 -0
- package/dist/transport/http/routes/files.d.ts +1 -1
- package/dist/transport/http/routes/files.d.ts.map +1 -1
- package/dist/transport/http/routes/files.js +54 -155
- package/dist/transport/http/routes/files.js.map +1 -1
- package/dist/transport/http/routes/resources.d.ts +1 -1
- package/dist/transport/http/routes/resources.d.ts.map +1 -1
- package/dist/transport/http/routes/resources.js +92 -57
- package/dist/transport/http/routes/resources.js.map +1 -1
- package/dist/transport/http/routes/rpc.d.ts +6 -1
- package/dist/transport/http/routes/rpc.d.ts.map +1 -1
- package/dist/transport/http/routes/rpc.js +51 -21
- package/dist/transport/http/routes/rpc.js.map +1 -1
- package/dist/transport/http/routes/upload.d.ts +1 -1
- package/dist/transport/http/routes/upload.d.ts.map +1 -1
- package/dist/transport/http/routes/upload.js +256 -169
- package/dist/transport/http/routes/upload.js.map +1 -1
- package/dist/user-config.d.ts +34 -7
- package/dist/user-config.d.ts.map +1 -1
- package/dist/user-config.js +71 -0
- package/dist/user-config.js.map +1 -1
- package/package.json +17 -7
- package/src/bootstrap.ts +119 -35
- package/src/bun-platform/fs.ts +1 -0
- package/src/bun-platform/index.ts +18 -1
- package/src/bun-platform/server-lifecycle.ts +218 -0
- package/src/bun-platform/shell.ts +362 -0
- package/src/config.ts +130 -0
- package/src/core/agents/agent.ts +210 -92
- package/src/core/agents/config.ts +8 -0
- package/src/core/agents/retry.ts +16 -17
- package/src/core/agents/state.ts +2 -0
- package/src/core/events/base-event-store.ts +24 -16
- package/src/core/events/file.ts +198 -22
- package/src/core/file-store/containment.ts +75 -0
- package/src/core/file-store/file-store.ts +106 -25
- package/src/core/file-store/types.ts +14 -1
- package/src/core/image/image-processor.ts +3 -1
- package/src/core/image/types.ts +2 -0
- package/src/core/image/vips-resizer.ts +102 -37
- package/src/core/llm/anthropic.ts +63 -79
- package/src/core/llm/logger.ts +175 -37
- package/src/core/llm/openrouter.ts +57 -72
- package/src/core/llm/provider-request.ts +40 -0
- package/src/core/llm/provider.ts +28 -0
- package/src/core/plugins/plugin-builder.ts +106 -14
- package/src/core/preset/preset-builder.ts +12 -22
- package/src/core/sessions/context.ts +18 -0
- package/src/core/sessions/runtime-activity.ts +78 -0
- package/src/core/sessions/schema.ts +29 -3
- package/src/core/sessions/session-manager.ts +560 -140
- package/src/core/sessions/session-store.ts +38 -0
- package/src/core/sessions/session.ts +187 -47
- package/src/core/sessions/state.ts +11 -0
- package/src/core/system.ts +15 -0
- package/src/core/wake-key.ts +65 -0
- package/src/index.ts +30 -12
- package/src/lib/archive/archive-inspection.fixtures.ts +138 -0
- package/src/lib/archive/archive-inspection.ts +359 -0
- package/src/lib/archive/index.ts +17 -0
- package/src/lib/logger/console.ts +7 -57
- package/src/lib/logger/file.ts +28 -50
- package/src/lib/logger/index.ts +3 -1
- package/src/lib/logger/jsonl.ts +36 -0
- package/src/lib/logger/logger.ts +48 -0
- package/src/lib/logger/session-log.ts +42 -0
- package/src/lib/utils/concurrency.ts +37 -8
- package/src/lib/utils/fs-batch.ts +49 -0
- package/src/lib/utils/result.ts +7 -31
- package/src/lib/utils/sleep.ts +23 -0
- package/src/platform/fs-revision.ts +21 -0
- package/src/platform/fs.ts +109 -1
- package/src/platform/git.ts +67 -0
- package/src/platform/index.ts +51 -1
- package/src/platform/llm-call-log.ts +86 -0
- package/src/platform/scheduler.ts +71 -0
- package/src/platform/session-log.ts +39 -0
- package/src/platform/shell.ts +89 -0
- package/src/plugins/agent-status/plugin.ts +1 -0
- package/src/plugins/agents/plugin.ts +134 -81
- package/src/plugins/filesystem/listing.ts +70 -12
- package/src/plugins/filesystem/plugin.ts +8 -6
- package/src/plugins/git-status/plugin.ts +204 -77
- package/src/plugins/llm-debug/plugin.ts +1 -0
- package/src/plugins/logs/plugin.ts +9 -0
- package/src/plugins/mailbox/plugin.ts +46 -64
- package/src/plugins/mailbox/query.ts +15 -7
- package/src/plugins/mailbox/state.ts +1 -0
- package/src/plugins/resources/filename.ts +19 -0
- package/src/plugins/resources/plugin.ts +111 -59
- package/src/plugins/result-eviction/plugin.ts +6 -1
- package/src/plugins/services/plugin.ts +254 -98
- package/src/plugins/services/prompt.ts +1 -6
- package/src/plugins/services/schema.ts +17 -3
- package/src/plugins/services/service.ts +702 -252
- package/src/plugins/session-lifecycle/plugin.ts +56 -41
- package/src/plugins/session-state/plugin.ts +242 -88
- package/src/plugins/session-stats/plugin.ts +1 -0
- package/src/plugins/shell/executor.ts +144 -226
- package/src/plugins/shell/index.ts +1 -4
- package/src/plugins/shell/plugin.ts +7 -9
- package/src/plugins/skills/discovery.ts +10 -8
- package/src/plugins/skills/index.ts +1 -1
- package/src/plugins/skills/plugin.ts +19 -27
- package/src/plugins/skills/prompts.ts +3 -3
- package/src/plugins/skills/schema.ts +5 -2
- package/src/plugins/uploads/plugin.ts +991 -273
- package/src/plugins/uploads/preprocessor.ts +25 -0
- package/src/plugins/uploads/preprocessors/image-classifier.ts +56 -25
- package/src/plugins/uploads/preprocessors/markitdown-preprocessor.ts +41 -15
- package/src/plugins/uploads/preprocessors/pdf-preprocessor.ts +32 -16
- package/src/plugins/uploads/preprocessors/zip-preprocessor.ts +67 -38
- package/src/plugins/uploads/schema.ts +30 -3
- package/src/plugins/uploads/state.ts +12 -0
- package/src/plugins/user-chat/plugin.ts +196 -40
- package/src/plugins/workers/context.ts +102 -39
- package/src/plugins/workers/definition.ts +7 -0
- package/src/plugins/workers/index.ts +4 -4
- package/src/plugins/workers/plugin.ts +461 -151
- package/src/plugins/workers/state.ts +64 -0
- package/src/plugins/workers/worker.ts +15 -4
- package/src/testing/conformance.ts +1751 -0
- package/src/testing/node-platform.ts +5 -0
- package/src/testing/test-harness.ts +21 -38
- package/src/testing/wait-helpers.ts +1 -4
- package/src/transport/adapter/client-adapter.ts +60 -3
- package/src/transport/adapter/heartbeat.ts +50 -0
- package/src/transport/adapter/server-adapter.ts +6 -0
- package/src/transport/http/app.ts +7 -35
- package/src/transport/http/context.ts +46 -0
- package/src/transport/http/fetch-guard.ts +318 -0
- package/src/transport/http/index.ts +1 -1
- package/src/transport/http/middleware/bearer-auth.ts +1 -1
- package/src/transport/http/middleware/error-handler.ts +1 -1
- package/src/transport/http/path-containment.ts +44 -0
- package/src/transport/http/responses.ts +20 -0
- package/src/transport/http/routes/files.ts +69 -159
- package/src/transport/http/routes/resources.ts +124 -93
- package/src/transport/http/routes/rpc.ts +63 -26
- package/src/transport/http/routes/upload.ts +327 -258
- package/src/user-config.ts +93 -7
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -155
- package/dist/config.test.js.map +0 -1
- package/dist/core/agent-loop.integration.test.d.ts +0 -2
- package/dist/core/agent-loop.integration.test.d.ts.map +0 -1
- package/dist/core/agent-loop.integration.test.js +0 -414
- package/dist/core/agent-loop.integration.test.js.map +0 -1
- package/dist/core/agents/agent-config.test.d.ts +0 -2
- package/dist/core/agents/agent-config.test.d.ts.map +0 -1
- package/dist/core/agents/agent-config.test.js +0 -194
- package/dist/core/agents/agent-config.test.js.map +0 -1
- package/dist/core/agents/agent-shutdown.test.d.ts +0 -6
- package/dist/core/agents/agent-shutdown.test.d.ts.map +0 -1
- package/dist/core/agents/agent-shutdown.test.js +0 -180
- package/dist/core/agents/agent-shutdown.test.js.map +0 -1
- package/dist/core/agents/agent.test.d.ts +0 -2
- package/dist/core/agents/agent.test.d.ts.map +0 -1
- package/dist/core/agents/agent.test.js +0 -313
- package/dist/core/agents/agent.test.js.map +0 -1
- package/dist/core/agents/communicator.d.ts +0 -3
- package/dist/core/agents/communicator.d.ts.map +0 -1
- package/dist/core/agents/communicator.js +0 -13
- package/dist/core/agents/communicator.js.map +0 -1
- package/dist/core/agents/handler-events.test.d.ts +0 -5
- package/dist/core/agents/handler-events.test.d.ts.map +0 -1
- package/dist/core/agents/handler-events.test.js +0 -115
- package/dist/core/agents/handler-events.test.js.map +0 -1
- package/dist/core/agents/response-sanitizer.test.d.ts +0 -2
- package/dist/core/agents/response-sanitizer.test.d.ts.map +0 -1
- package/dist/core/agents/response-sanitizer.test.js +0 -101
- package/dist/core/agents/response-sanitizer.test.js.map +0 -1
- package/dist/core/error-recovery.integration.test.d.ts +0 -2
- package/dist/core/error-recovery.integration.test.d.ts.map +0 -1
- package/dist/core/error-recovery.integration.test.js +0 -288
- package/dist/core/error-recovery.integration.test.js.map +0 -1
- package/dist/core/event-sourcing.integration.test.d.ts +0 -2
- package/dist/core/event-sourcing.integration.test.d.ts.map +0 -1
- package/dist/core/event-sourcing.integration.test.js +0 -154
- package/dist/core/event-sourcing.integration.test.js.map +0 -1
- package/dist/core/events/file.test.d.ts +0 -2
- package/dist/core/events/file.test.d.ts.map +0 -1
- package/dist/core/events/file.test.js +0 -284
- package/dist/core/events/file.test.js.map +0 -1
- package/dist/core/events/memory.test.d.ts +0 -2
- package/dist/core/events/memory.test.d.ts.map +0 -1
- package/dist/core/events/memory.test.js +0 -502
- package/dist/core/events/memory.test.js.map +0 -1
- package/dist/core/image/image-processor.test.d.ts +0 -2
- package/dist/core/image/image-processor.test.d.ts.map +0 -1
- package/dist/core/image/image-processor.test.js +0 -171
- package/dist/core/image/image-processor.test.js.map +0 -1
- package/dist/core/image/vips-resizer.test.d.ts +0 -2
- package/dist/core/image/vips-resizer.test.d.ts.map +0 -1
- package/dist/core/image/vips-resizer.test.js +0 -336
- package/dist/core/image/vips-resizer.test.js.map +0 -1
- package/dist/core/llm/anthropic.test.d.ts +0 -2
- package/dist/core/llm/anthropic.test.d.ts.map +0 -1
- package/dist/core/llm/anthropic.test.js +0 -464
- package/dist/core/llm/anthropic.test.js.map +0 -1
- package/dist/core/llm/cache-breakpoints.test.d.ts +0 -2
- package/dist/core/llm/cache-breakpoints.test.d.ts.map +0 -1
- package/dist/core/llm/cache-breakpoints.test.js +0 -69
- package/dist/core/llm/cache-breakpoints.test.js.map +0 -1
- package/dist/core/llm/cache-live.test.d.ts +0 -16
- package/dist/core/llm/cache-live.test.d.ts.map +0 -1
- package/dist/core/llm/cache-live.test.js +0 -137
- package/dist/core/llm/cache-live.test.js.map +0 -1
- package/dist/core/llm/logger.test.d.ts +0 -7
- package/dist/core/llm/logger.test.d.ts.map +0 -1
- package/dist/core/llm/logger.test.js +0 -228
- package/dist/core/llm/logger.test.js.map +0 -1
- package/dist/core/llm/message-sanitization.test.d.ts +0 -2
- package/dist/core/llm/message-sanitization.test.d.ts.map +0 -1
- package/dist/core/llm/message-sanitization.test.js +0 -181
- package/dist/core/llm/message-sanitization.test.js.map +0 -1
- package/dist/core/llm/mock.test.d.ts +0 -2
- package/dist/core/llm/mock.test.d.ts.map +0 -1
- package/dist/core/llm/mock.test.js +0 -318
- package/dist/core/llm/mock.test.js.map +0 -1
- package/dist/core/llm/model-shortlist-live.test.d.ts +0 -35
- package/dist/core/llm/model-shortlist-live.test.d.ts.map +0 -1
- package/dist/core/llm/model-shortlist-live.test.js +0 -452
- package/dist/core/llm/model-shortlist-live.test.js.map +0 -1
- package/dist/core/llm/openrouter-mapping.test.d.ts +0 -2
- package/dist/core/llm/openrouter-mapping.test.d.ts.map +0 -1
- package/dist/core/llm/openrouter-mapping.test.js +0 -190
- package/dist/core/llm/openrouter-mapping.test.js.map +0 -1
- package/dist/core/llm/openrouter.test.d.ts +0 -2
- package/dist/core/llm/openrouter.test.d.ts.map +0 -1
- package/dist/core/llm/openrouter.test.js +0 -377
- package/dist/core/llm/openrouter.test.js.map +0 -1
- package/dist/core/llm/provider-integration.test.d.ts +0 -12
- package/dist/core/llm/provider-integration.test.d.ts.map +0 -1
- package/dist/core/llm/provider-integration.test.js +0 -350
- package/dist/core/llm/provider-integration.test.js.map +0 -1
- package/dist/core/llm/reasoning-details.test.d.ts +0 -2
- package/dist/core/llm/reasoning-details.test.d.ts.map +0 -1
- package/dist/core/llm/reasoning-details.test.js +0 -144
- package/dist/core/llm/reasoning-details.test.js.map +0 -1
- package/dist/core/llm/routing-provider.test.d.ts +0 -2
- package/dist/core/llm/routing-provider.test.d.ts.map +0 -1
- package/dist/core/llm/routing-provider.test.js +0 -94
- package/dist/core/llm/routing-provider.test.js.map +0 -1
- package/dist/core/llm/snapshot-middleware.test.d.ts +0 -2
- package/dist/core/llm/snapshot-middleware.test.d.ts.map +0 -1
- package/dist/core/llm/snapshot-middleware.test.js +0 -144
- package/dist/core/llm/snapshot-middleware.test.js.map +0 -1
- package/dist/core/llm/thinking-blocks.test.d.ts +0 -2
- package/dist/core/llm/thinking-blocks.test.d.ts.map +0 -1
- package/dist/core/llm/thinking-blocks.test.js +0 -291
- package/dist/core/llm/thinking-blocks.test.js.map +0 -1
- package/dist/core/multi-agent.integration.test.d.ts +0 -2
- package/dist/core/multi-agent.integration.test.d.ts.map +0 -1
- package/dist/core/multi-agent.integration.test.js +0 -298
- package/dist/core/multi-agent.integration.test.js.map +0 -1
- package/dist/core/plugin-hooks.integration.test.d.ts +0 -2
- package/dist/core/plugin-hooks.integration.test.d.ts.map +0 -1
- package/dist/core/plugin-hooks.integration.test.js +0 -458
- package/dist/core/plugin-hooks.integration.test.js.map +0 -1
- package/dist/core/reasoning-round-trip.integration.test.d.ts +0 -2
- package/dist/core/reasoning-round-trip.integration.test.d.ts.map +0 -1
- package/dist/core/reasoning-round-trip.integration.test.js +0 -150
- package/dist/core/reasoning-round-trip.integration.test.js.map +0 -1
- package/dist/core/session-lifecycle.integration.test.d.ts +0 -2
- package/dist/core/session-lifecycle.integration.test.d.ts.map +0 -1
- package/dist/core/session-lifecycle.integration.test.js +0 -159
- package/dist/core/session-lifecycle.integration.test.js.map +0 -1
- package/dist/core/sessions/fork-utils.test.d.ts +0 -2
- package/dist/core/sessions/fork-utils.test.d.ts.map +0 -1
- package/dist/core/sessions/fork-utils.test.js +0 -129
- package/dist/core/sessions/fork-utils.test.js.map +0 -1
- package/dist/core/sessions/session-overrides.integration.test.d.ts +0 -2
- package/dist/core/sessions/session-overrides.integration.test.d.ts.map +0 -1
- package/dist/core/sessions/session-overrides.integration.test.js +0 -154
- package/dist/core/sessions/session-overrides.integration.test.js.map +0 -1
- package/dist/core/sessions/session.test.d.ts +0 -2
- package/dist/core/sessions/session.test.d.ts.map +0 -1
- package/dist/core/sessions/session.test.js +0 -1100
- package/dist/core/sessions/session.test.js.map +0 -1
- package/dist/core/tools/executor.test.d.ts +0 -2
- package/dist/core/tools/executor.test.d.ts.map +0 -1
- package/dist/core/tools/executor.test.js +0 -144
- package/dist/core/tools/executor.test.js.map +0 -1
- package/dist/lib/logger/console.test.d.ts +0 -2
- package/dist/lib/logger/console.test.d.ts.map +0 -1
- package/dist/lib/logger/console.test.js +0 -258
- package/dist/lib/logger/console.test.js.map +0 -1
- package/dist/lib/never.d.ts +0 -2
- package/dist/lib/never.d.ts.map +0 -1
- package/dist/lib/never.js +0 -4
- package/dist/lib/never.js.map +0 -1
- package/dist/lib/utils/concurrency.test.d.ts +0 -2
- package/dist/lib/utils/concurrency.test.d.ts.map +0 -1
- package/dist/lib/utils/concurrency.test.js +0 -135
- package/dist/lib/utils/concurrency.test.js.map +0 -1
- package/dist/plugins/agent-status/agent-status.test.d.ts +0 -2
- package/dist/plugins/agent-status/agent-status.test.d.ts.map +0 -1
- package/dist/plugins/agent-status/agent-status.test.js +0 -136
- package/dist/plugins/agent-status/agent-status.test.js.map +0 -1
- package/dist/plugins/agents/agents.integration.test.d.ts +0 -2
- package/dist/plugins/agents/agents.integration.test.d.ts.map +0 -1
- package/dist/plugins/agents/agents.integration.test.js +0 -830
- package/dist/plugins/agents/agents.integration.test.js.map +0 -1
- package/dist/plugins/agents/supervision.integration.test.d.ts +0 -2
- package/dist/plugins/agents/supervision.integration.test.d.ts.map +0 -1
- package/dist/plugins/agents/supervision.integration.test.js +0 -215
- package/dist/plugins/agents/supervision.integration.test.js.map +0 -1
- package/dist/plugins/context-compact/compaction-live.test.d.ts +0 -17
- package/dist/plugins/context-compact/compaction-live.test.d.ts.map +0 -1
- package/dist/plugins/context-compact/compaction-live.test.js +0 -177
- package/dist/plugins/context-compact/compaction-live.test.js.map +0 -1
- package/dist/plugins/context-compact/context-compact.integration.test.d.ts +0 -2
- package/dist/plugins/context-compact/context-compact.integration.test.d.ts.map +0 -1
- package/dist/plugins/context-compact/context-compact.integration.test.js +0 -364
- package/dist/plugins/context-compact/context-compact.integration.test.js.map +0 -1
- package/dist/plugins/context-compact/context-compactor.test.d.ts +0 -2
- package/dist/plugins/context-compact/context-compactor.test.d.ts.map +0 -1
- package/dist/plugins/context-compact/context-compactor.test.js +0 -858
- package/dist/plugins/context-compact/context-compactor.test.js.map +0 -1
- package/dist/plugins/context-compact/history-offloader.test.d.ts +0 -2
- package/dist/plugins/context-compact/history-offloader.test.d.ts.map +0 -1
- package/dist/plugins/context-compact/history-offloader.test.js +0 -77
- package/dist/plugins/context-compact/history-offloader.test.js.map +0 -1
- package/dist/plugins/filesystem/filesystem.integration.test.d.ts +0 -2
- package/dist/plugins/filesystem/filesystem.integration.test.d.ts.map +0 -1
- package/dist/plugins/filesystem/filesystem.integration.test.js +0 -447
- package/dist/plugins/filesystem/filesystem.integration.test.js.map +0 -1
- package/dist/plugins/filesystem/schema.d.ts +0 -7
- package/dist/plugins/filesystem/schema.d.ts.map +0 -1
- package/dist/plugins/filesystem/schema.js +0 -2
- package/dist/plugins/filesystem/schema.js.map +0 -1
- package/dist/plugins/limits-guard/limit-guard.test.d.ts +0 -2
- package/dist/plugins/limits-guard/limit-guard.test.d.ts.map +0 -1
- package/dist/plugins/limits-guard/limit-guard.test.js +0 -194
- package/dist/plugins/limits-guard/limit-guard.test.js.map +0 -1
- package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts +0 -2
- package/dist/plugins/limits-guard/limits-guard.integration.test.d.ts.map +0 -1
- package/dist/plugins/limits-guard/limits-guard.integration.test.js +0 -887
- package/dist/plugins/limits-guard/limits-guard.integration.test.js.map +0 -1
- package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts +0 -2
- package/dist/plugins/llm-debug/llm-debug.integration.test.d.ts.map +0 -1
- package/dist/plugins/llm-debug/llm-debug.integration.test.js +0 -157
- package/dist/plugins/llm-debug/llm-debug.integration.test.js.map +0 -1
- package/dist/plugins/mailbox/mailbox.integration.test.d.ts +0 -2
- package/dist/plugins/mailbox/mailbox.integration.test.d.ts.map +0 -1
- package/dist/plugins/mailbox/mailbox.integration.test.js +0 -678
- package/dist/plugins/mailbox/mailbox.integration.test.js.map +0 -1
- package/dist/plugins/resources/resources.integration.test.d.ts +0 -2
- package/dist/plugins/resources/resources.integration.test.d.ts.map +0 -1
- package/dist/plugins/resources/resources.integration.test.js +0 -62
- package/dist/plugins/resources/resources.integration.test.js.map +0 -1
- package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts +0 -2
- package/dist/plugins/result-eviction/result-eviction.integration.test.d.ts.map +0 -1
- package/dist/plugins/result-eviction/result-eviction.integration.test.js +0 -294
- package/dist/plugins/result-eviction/result-eviction.integration.test.js.map +0 -1
- package/dist/plugins/services/pid-registry.test.d.ts +0 -2
- package/dist/plugins/services/pid-registry.test.d.ts.map +0 -1
- package/dist/plugins/services/pid-registry.test.js +0 -161
- package/dist/plugins/services/pid-registry.test.js.map +0 -1
- package/dist/plugins/services/services.integration.test.d.ts +0 -2
- package/dist/plugins/services/services.integration.test.d.ts.map +0 -1
- package/dist/plugins/services/services.integration.test.js +0 -1057
- package/dist/plugins/services/services.integration.test.js.map +0 -1
- package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts +0 -2
- package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.d.ts.map +0 -1
- package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js +0 -498
- package/dist/plugins/session-lifecycle/session-lifecycle.integration.test.js.map +0 -1
- package/dist/plugins/session-stats/plugin.test.d.ts +0 -2
- package/dist/plugins/session-stats/plugin.test.d.ts.map +0 -1
- package/dist/plugins/session-stats/plugin.test.js +0 -145
- package/dist/plugins/session-stats/plugin.test.js.map +0 -1
- package/dist/plugins/shell/shell.integration.test.d.ts +0 -2
- package/dist/plugins/shell/shell.integration.test.d.ts.map +0 -1
- package/dist/plugins/shell/shell.integration.test.js +0 -234
- package/dist/plugins/shell/shell.integration.test.js.map +0 -1
- package/dist/plugins/shell/shell.test.d.ts +0 -2
- package/dist/plugins/shell/shell.test.d.ts.map +0 -1
- package/dist/plugins/shell/shell.test.js +0 -236
- package/dist/plugins/shell/shell.test.js.map +0 -1
- package/dist/plugins/skills/discovery.test.d.ts +0 -2
- package/dist/plugins/skills/discovery.test.d.ts.map +0 -1
- package/dist/plugins/skills/discovery.test.js +0 -312
- package/dist/plugins/skills/discovery.test.js.map +0 -1
- package/dist/plugins/skills/skills.integration.test.d.ts +0 -2
- package/dist/plugins/skills/skills.integration.test.d.ts.map +0 -1
- package/dist/plugins/skills/skills.integration.test.js +0 -475
- package/dist/plugins/skills/skills.integration.test.js.map +0 -1
- package/dist/plugins/todo/todo.integration.test.d.ts +0 -2
- package/dist/plugins/todo/todo.integration.test.d.ts.map +0 -1
- package/dist/plugins/todo/todo.integration.test.js +0 -605
- package/dist/plugins/todo/todo.integration.test.js.map +0 -1
- package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts +0 -2
- package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts.map +0 -1
- package/dist/plugins/uploads/preprocessors/image-classifier.test.js +0 -113
- package/dist/plugins/uploads/preprocessors/image-classifier.test.js.map +0 -1
- package/dist/plugins/uploads/uploads.integration.test.d.ts +0 -2
- package/dist/plugins/uploads/uploads.integration.test.d.ts.map +0 -1
- package/dist/plugins/uploads/uploads.integration.test.js +0 -639
- package/dist/plugins/uploads/uploads.integration.test.js.map +0 -1
- package/dist/plugins/user-chat/user-chat.integration.test.d.ts +0 -2
- package/dist/plugins/user-chat/user-chat.integration.test.d.ts.map +0 -1
- package/dist/plugins/user-chat/user-chat.integration.test.js +0 -754
- package/dist/plugins/user-chat/user-chat.integration.test.js.map +0 -1
- package/dist/plugins/workers/workers.integration.test.d.ts +0 -2
- package/dist/plugins/workers/workers.integration.test.d.ts.map +0 -1
- package/dist/plugins/workers/workers.integration.test.js +0 -629
- package/dist/plugins/workers/workers.integration.test.js.map +0 -1
- package/dist/prompts/macros.test.d.ts +0 -2
- package/dist/prompts/macros.test.d.ts.map +0 -1
- package/dist/prompts/macros.test.js +0 -80
- package/dist/prompts/macros.test.js.map +0 -1
- package/dist/testing/test-harness.test.d.ts +0 -2
- package/dist/testing/test-harness.test.d.ts.map +0 -1
- package/dist/testing/test-harness.test.js +0 -92
- package/dist/testing/test-harness.test.js.map +0 -1
- package/dist/transport/http/routes/rpc.integration.test.d.ts +0 -2
- package/dist/transport/http/routes/rpc.integration.test.d.ts.map +0 -1
- package/dist/transport/http/routes/rpc.integration.test.js +0 -189
- package/dist/transport/http/routes/rpc.integration.test.js.map +0 -1
- package/dist/transport/http/routes/rpc.test.d.ts +0 -2
- package/dist/transport/http/routes/rpc.test.d.ts.map +0 -1
- package/dist/transport/http/routes/rpc.test.js +0 -316
- package/dist/transport/http/routes/rpc.test.js.map +0 -1
- package/src/config.test.ts +0 -174
- package/src/core/agent-loop.integration.test.ts +0 -503
- package/src/core/agents/agent-config.test.ts +0 -240
- package/src/core/agents/agent-shutdown.test.ts +0 -236
- package/src/core/agents/agent.test.ts +0 -387
- package/src/core/agents/communicator.ts +0 -16
- package/src/core/agents/handler-events.test.ts +0 -167
- package/src/core/agents/response-sanitizer.test.ts +0 -137
- package/src/core/error-recovery.integration.test.ts +0 -343
- package/src/core/event-sourcing.integration.test.ts +0 -191
- package/src/core/events/file.test.ts +0 -436
- package/src/core/events/memory.test.ts +0 -741
- package/src/core/image/image-processor.test.ts +0 -218
- package/src/core/image/vips-resizer.test.ts +0 -388
- package/src/core/llm/anthropic.test.ts +0 -546
- package/src/core/llm/cache-breakpoints.test.ts +0 -85
- package/src/core/llm/cache-live.test.ts +0 -155
- package/src/core/llm/logger.test.ts +0 -270
- package/src/core/llm/message-sanitization.test.ts +0 -217
- package/src/core/llm/mock.test.ts +0 -402
- package/src/core/llm/model-shortlist-live.test.ts +0 -577
- package/src/core/llm/openrouter-mapping.test.ts +0 -234
- package/src/core/llm/openrouter.test.ts +0 -499
- package/src/core/llm/provider-integration.test.ts +0 -408
- package/src/core/llm/reasoning-details.test.ts +0 -177
- package/src/core/llm/routing-provider.test.ts +0 -113
- package/src/core/llm/snapshot-middleware.test.ts +0 -168
- package/src/core/llm/thinking-blocks.test.ts +0 -345
- package/src/core/multi-agent.integration.test.ts +0 -340
- package/src/core/plugin-hooks.integration.test.ts +0 -568
- package/src/core/reasoning-round-trip.integration.test.ts +0 -188
- package/src/core/session-lifecycle.integration.test.ts +0 -202
- package/src/core/sessions/fork-utils.test.ts +0 -158
- package/src/core/sessions/session-overrides.integration.test.ts +0 -210
- package/src/core/sessions/session.test.ts +0 -1736
- package/src/core/tools/executor.test.ts +0 -161
- package/src/lib/logger/console.test.ts +0 -348
- package/src/lib/never.ts +0 -3
- package/src/lib/utils/concurrency.test.ts +0 -169
- package/src/plugins/agent-status/agent-status.test.ts +0 -164
- package/src/plugins/agents/agents.integration.test.ts +0 -976
- package/src/plugins/agents/supervision.integration.test.ts +0 -249
- package/src/plugins/context-compact/compaction-live.test.ts +0 -221
- package/src/plugins/context-compact/context-compact.integration.test.ts +0 -418
- package/src/plugins/context-compact/context-compactor.test.ts +0 -1036
- package/src/plugins/context-compact/history-offloader.test.ts +0 -100
- package/src/plugins/filesystem/filesystem.integration.test.ts +0 -529
- package/src/plugins/filesystem/schema.ts +0 -6
- package/src/plugins/limits-guard/limit-guard.test.ts +0 -253
- package/src/plugins/limits-guard/limits-guard.integration.test.ts +0 -1012
- package/src/plugins/llm-debug/llm-debug.integration.test.ts +0 -192
- package/src/plugins/mailbox/mailbox.integration.test.ts +0 -794
- package/src/plugins/resources/resources.integration.test.ts +0 -68
- package/src/plugins/result-eviction/result-eviction.integration.test.ts +0 -332
- package/src/plugins/services/pid-registry.test.ts +0 -180
- package/src/plugins/services/services.integration.test.ts +0 -1223
- package/src/plugins/session-lifecycle/session-lifecycle.integration.test.ts +0 -639
- package/src/plugins/session-stats/plugin.test.ts +0 -160
- package/src/plugins/shell/shell.integration.test.ts +0 -273
- package/src/plugins/shell/shell.test.ts +0 -314
- package/src/plugins/skills/discovery.test.ts +0 -395
- package/src/plugins/skills/skills.integration.test.ts +0 -580
- package/src/plugins/todo/todo.integration.test.ts +0 -687
- package/src/plugins/uploads/preprocessors/image-classifier.test.ts +0 -142
- package/src/plugins/uploads/uploads.integration.test.ts +0 -831
- package/src/plugins/user-chat/user-chat.integration.test.ts +0 -893
- package/src/plugins/workers/workers.integration.test.ts +0 -778
- package/src/prompts/macros.test.ts +0 -107
- package/src/testing/test-harness.test.ts +0 -114
- package/src/transport/http/routes/rpc.integration.test.ts +0 -243
- package/src/transport/http/routes/rpc.test.ts +0 -372
package/src/platform/fs.ts
CHANGED
|
@@ -10,6 +10,18 @@ import type { FileHandle } from 'node:fs/promises'
|
|
|
10
10
|
|
|
11
11
|
export type { Dirent, FileHandle, Stats }
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Positional-read handle — the subset of `node:fs/promises` FileHandle the SDK uses.
|
|
15
|
+
*
|
|
16
|
+
* Narrower than `FileHandle` so a platform exposing only raw fds can implement it.
|
|
17
|
+
* `FileHandle` satisfies it.
|
|
18
|
+
*/
|
|
19
|
+
export interface ReadableFileHandle {
|
|
20
|
+
stat(): Promise<Stats>
|
|
21
|
+
read(buffer: Buffer, offset: number, length: number, position: number): Promise<{ bytesRead: number; buffer: Buffer }>
|
|
22
|
+
close(): Promise<void>
|
|
23
|
+
}
|
|
24
|
+
|
|
13
25
|
export interface FileSystem {
|
|
14
26
|
readFile(path: string): Promise<Buffer>
|
|
15
27
|
readFile(path: string, encoding: 'utf-8' | 'utf8'): Promise<string>
|
|
@@ -22,17 +34,113 @@ export interface FileSystem {
|
|
|
22
34
|
readdir(path: string, options: { withFileTypes: true }): Promise<Dirent[]>
|
|
23
35
|
|
|
24
36
|
stat(path: string): Promise<Stats>
|
|
37
|
+
/**
|
|
38
|
+
* Like `stat`, but reports the link itself instead of following it. Answers for
|
|
39
|
+
* a link whose target is gone, where `realpath` rejects.
|
|
40
|
+
*/
|
|
41
|
+
lstat(path: string): Promise<Stats>
|
|
25
42
|
access(path: string, mode?: number): Promise<void>
|
|
26
43
|
|
|
27
44
|
unlink(path: string): Promise<void>
|
|
28
45
|
rm(path: string, options?: { recursive?: boolean; force?: boolean }): Promise<void>
|
|
29
46
|
cp(source: string, dest: string, options?: { recursive?: boolean; force?: boolean }): Promise<void>
|
|
30
47
|
|
|
31
|
-
open(path: string, flags?: string): Promise<
|
|
48
|
+
open(path: string, flags?: string): Promise<ReadableFileHandle>
|
|
32
49
|
|
|
33
50
|
/** Returns true if path exists and is accessible; never throws for missing paths. */
|
|
34
51
|
exists(path: string): Promise<boolean>
|
|
35
52
|
|
|
36
53
|
/** Resolves symlinks and returns the canonical pathname. */
|
|
37
54
|
realpath(path: string): Promise<string>
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Optional. Every entry under `dir`, with the metadata a stat would return.
|
|
58
|
+
*
|
|
59
|
+
* Walking with readdir and stat asks the platform one question per entry and
|
|
60
|
+
* gives it no way to see that they belong together; asking for the subtree does.
|
|
61
|
+
* Absent on a plain node:fs platform, where the walk is what it would do anyway.
|
|
62
|
+
*
|
|
63
|
+
* `exclude` and `excludeHidden` are passed in so the platform can skip a
|
|
64
|
+
* subtree rather than return it for the caller to discard.
|
|
65
|
+
*/
|
|
66
|
+
walk?(dir: string, options?: WalkOptions): Promise<WalkEntry[]>
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Optional. Every byte of every path, asked for once.
|
|
70
|
+
*
|
|
71
|
+
* Reports per path instead of throwing, because a batch that threw on the first
|
|
72
|
+
* missing file would send the caller back to asking one at a time. Entries come
|
|
73
|
+
* back in the order they were asked for.
|
|
74
|
+
*/
|
|
75
|
+
readFiles?(paths: readonly string[]): Promise<ReadFilesEntry[]>
|
|
76
|
+
|
|
77
|
+
/** Optional. Write a set of files as one operation. */
|
|
78
|
+
writeFiles?(entries: readonly WriteFilesEntry[], options?: WriteFilesOptions): Promise<void>
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Optional. Remove a set of paths as one operation.
|
|
82
|
+
*
|
|
83
|
+
* Raises what `rm` raises, for the same reasons. A failure partway through
|
|
84
|
+
* leaves the paths before it removed.
|
|
85
|
+
*/
|
|
86
|
+
rmFiles?(paths: readonly string[], options?: { recursive?: boolean; force?: boolean }): Promise<void>
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Optional. Run `fn` with reads served from a per-operation cache, where the
|
|
90
|
+
* platform has one.
|
|
91
|
+
*
|
|
92
|
+
* A hint and nothing more: the same calls return the same answers with or
|
|
93
|
+
* without it. Prefer a verb where one fits — a verb cannot be forgotten the way
|
|
94
|
+
* a wrapper can.
|
|
95
|
+
*/
|
|
96
|
+
scopeReads?<T>(fn: () => Promise<T>): Promise<T>
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** One entry under a walked directory. */
|
|
100
|
+
export interface WalkEntry {
|
|
101
|
+
/** Absolute path. */
|
|
102
|
+
path: string
|
|
103
|
+
/**
|
|
104
|
+
* `other` covers what a walk can find but not classify — a FIFO, a socket.
|
|
105
|
+
* A symlink is reported as one whether or not its target resolves, so a
|
|
106
|
+
* broken link is still listed rather than silently dropped.
|
|
107
|
+
*/
|
|
108
|
+
type: 'file' | 'directory' | 'symlink' | 'other'
|
|
109
|
+
/**
|
|
110
|
+
* Bytes as `stat` reports them, so a symlink carries its target's size: the
|
|
111
|
+
* loop this verb replaces follows the link, and a walk that did not would
|
|
112
|
+
* disagree with it. 0 for a directory, and for a link whose target is gone.
|
|
113
|
+
*/
|
|
114
|
+
size: number
|
|
115
|
+
mtime: number
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** One path's answer from `readFiles`, in the order it was asked for. */
|
|
119
|
+
export interface ReadFilesEntry {
|
|
120
|
+
path: string
|
|
121
|
+
/** The bytes, or absent when `error` says why there are none. */
|
|
122
|
+
content?: Buffer
|
|
123
|
+
/** The code `readFile` would have thrown for this path. */
|
|
124
|
+
error?: string
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface WriteFilesEntry {
|
|
128
|
+
path: string
|
|
129
|
+
content: string | Uint8Array
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface WriteFilesOptions {
|
|
133
|
+
/** Create the directories the entries need, as `mkdir -p` would. Off by default. */
|
|
134
|
+
createParents?: boolean
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface WalkOptions {
|
|
138
|
+
/** Levels to descend. 1 is the directory's own children; unlimited when absent. */
|
|
139
|
+
depth?: number
|
|
140
|
+
/** Entries to return at most, in traversal order. */
|
|
141
|
+
limit?: number
|
|
142
|
+
/** Names never returned and, for a directory, never descended into. */
|
|
143
|
+
exclude?: readonly string[]
|
|
144
|
+
/** The same, for every name beginning with a dot. */
|
|
145
|
+
excludeHidden?: boolean
|
|
38
146
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git adapter interface.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately not a git binding: it names the questions `git-status` asks, so a
|
|
5
|
+
* host can answer them however it can — a `git` process, or a library over a VFS.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/** Every operation is scoped to one working tree. */
|
|
9
|
+
export interface GitRepoOptions {
|
|
10
|
+
/** Working-tree directory of the repository. */
|
|
11
|
+
dir: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* One non-clean path, following git's XY convention: `index` is the staged
|
|
16
|
+
* delta against HEAD, `worktree` the unstaged delta against the staged version.
|
|
17
|
+
*/
|
|
18
|
+
export interface GitStatusEntry {
|
|
19
|
+
path: string
|
|
20
|
+
index: ' ' | 'A' | 'M' | 'D'
|
|
21
|
+
worktree: ' ' | 'A' | 'M' | 'D' | '?'
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface GitCommit {
|
|
25
|
+
oid: string
|
|
26
|
+
/** Full commit message, subject line first. */
|
|
27
|
+
message: string
|
|
28
|
+
/** Commit time in ms since epoch, like every other SDK timestamp. */
|
|
29
|
+
committedAt: number
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface GitLogOptions extends GitRepoOptions {
|
|
33
|
+
/** Ref to walk back from. Defaults to HEAD. */
|
|
34
|
+
ref?: string
|
|
35
|
+
/** Max commits to return. Unbounded when omitted. */
|
|
36
|
+
depth?: number
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface GitCountAheadOptions extends GitRepoOptions {
|
|
40
|
+
/** Ref the count is measured from. */
|
|
41
|
+
base: string
|
|
42
|
+
/** Ref being measured. Defaults to HEAD. */
|
|
43
|
+
ref?: string
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Read-only git queries over a working tree.
|
|
48
|
+
*
|
|
49
|
+
* Every method rejects when `dir` is not inside a repository; callers read that
|
|
50
|
+
* as "no git state to report", not as a host failure.
|
|
51
|
+
*/
|
|
52
|
+
export interface GitClient {
|
|
53
|
+
/** Paths that are not clean — `git status --porcelain`. */
|
|
54
|
+
status(options: GitRepoOptions): Promise<GitStatusEntry[]>
|
|
55
|
+
|
|
56
|
+
/** Commits reachable from `ref`, newest first — `git log`. */
|
|
57
|
+
log(options: GitLogOptions): Promise<GitCommit[]>
|
|
58
|
+
|
|
59
|
+
/** Commits in `ref` but not in `base` — `git rev-list --count <base>..<ref>`. */
|
|
60
|
+
countAhead(options: GitCountAheadOptions): Promise<number>
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Branch new commits are measured against — the remote's HEAD, where the host
|
|
64
|
+
* can read one. `undefined` means unknown, so the caller applies its own default.
|
|
65
|
+
*/
|
|
66
|
+
defaultBranch(options: GitRepoOptions): Promise<string | undefined>
|
|
67
|
+
}
|
package/src/platform/index.ts
CHANGED
|
@@ -7,17 +7,67 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import type { FileSystem } from './fs.js'
|
|
10
|
+
import type { FsRevision } from './fs-revision.js'
|
|
11
|
+
import type { GitClient } from './git.js'
|
|
12
|
+
import type { LLMCallStore } from './llm-call-log.js'
|
|
10
13
|
import type { ProcessRunner } from './process.js'
|
|
14
|
+
import type { Scheduler } from './scheduler.js'
|
|
15
|
+
import type { SessionLogStore } from './session-log.js'
|
|
16
|
+
import type { ShellRunner } from './shell.js'
|
|
11
17
|
|
|
12
|
-
export type {
|
|
18
|
+
export type {
|
|
19
|
+
Dirent,
|
|
20
|
+
FileHandle,
|
|
21
|
+
FileSystem,
|
|
22
|
+
ReadableFileHandle,
|
|
23
|
+
ReadFilesEntry,
|
|
24
|
+
Stats,
|
|
25
|
+
WalkEntry,
|
|
26
|
+
WalkOptions,
|
|
27
|
+
WriteFilesEntry,
|
|
28
|
+
WriteFilesOptions,
|
|
29
|
+
} from './fs.js'
|
|
30
|
+
export type { FsRevision } from './fs-revision.js'
|
|
31
|
+
export type { GitClient, GitCommit, GitCountAheadOptions, GitLogOptions, GitRepoOptions, GitStatusEntry } from './git.js'
|
|
32
|
+
export type { LLMCallOutcome, LLMCallPage, LLMCallRow, LLMCallStatus, LLMCallStore } from './llm-call-log.js'
|
|
13
33
|
export type { ChildProcess, ExecFileOptions, ExecFileResult, ProcessRunner, SpawnOptions } from './process.js'
|
|
34
|
+
export { createTimerScheduler, isLiveScheduler } from './scheduler.js'
|
|
35
|
+
export type { LiveScheduler, Scheduler, WakeHandler } from './scheduler.js'
|
|
36
|
+
export type { SessionLogPage, SessionLogStore } from './session-log.js'
|
|
37
|
+
export type { ShellConfinement, ShellGrant, ShellLimits, ShellRunner, ShellRunOptions, ShellRunResult } from './shell.js'
|
|
14
38
|
|
|
15
39
|
/**
|
|
16
40
|
* Aggregate platform capabilities passed through the system at bootstrap.
|
|
41
|
+
*
|
|
42
|
+
* `fs`, `process` and `scheduler` are required — every host has them, even if a
|
|
43
|
+
* process table is only a stub. The rest are optional: a host that omits one is
|
|
44
|
+
* not degraded, it is a host whose callers take the path they took before the
|
|
45
|
+
* port existed.
|
|
17
46
|
*/
|
|
18
47
|
export interface Platform {
|
|
19
48
|
fs: FileSystem
|
|
20
49
|
process: ProcessRunner
|
|
50
|
+
/** Delayed re-entry into the agent loop. Required: every host can schedule. */
|
|
51
|
+
scheduler: Scheduler
|
|
52
|
+
/** Runs the shell tool's command lines. Absent on a host with no shell at all. */
|
|
53
|
+
shell?: ShellRunner
|
|
54
|
+
/** Git over the host's repositories. Absent on hosts that cannot run git. */
|
|
55
|
+
git?: GitClient
|
|
56
|
+
/**
|
|
57
|
+
* Cheap "has the filesystem changed" counter. Absent on hosts that cannot
|
|
58
|
+
* answer it, which then recompute whatever they would have gated on.
|
|
59
|
+
*/
|
|
60
|
+
fsRevision?: FsRevision
|
|
61
|
+
/**
|
|
62
|
+
* Rows for the per-session log. Absent on hosts with real files, which keep
|
|
63
|
+
* writing `sessions/<id>/session.log` and cursoring it by byte offset.
|
|
64
|
+
*/
|
|
65
|
+
sessionLog?: SessionLogStore
|
|
66
|
+
/**
|
|
67
|
+
* Rows for the LLM call log. Absent on hosts with real files, which keep
|
|
68
|
+
* writing `sessions/<id>/calls/<callId>.json` and listing that directory.
|
|
69
|
+
*/
|
|
70
|
+
llmCallLog?: LLMCallStore
|
|
21
71
|
/** Absolute path to the OS temp directory (equivalent to `os.tmpdir()` on Node/Bun). */
|
|
22
72
|
tmpDir: string
|
|
23
73
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM call-log store adapter.
|
|
3
|
+
*
|
|
4
|
+
* `LLMLogger` keeps the complete request and response of every inference. As
|
|
5
|
+
* files that is one JSON blob per call, written twice and read back in between.
|
|
6
|
+
* On a host whose filesystem is itself SQLite, rows are cheaper.
|
|
7
|
+
*
|
|
8
|
+
* The row is split rather than held as one blob so `complete` is a bounded
|
|
9
|
+
* `UPDATE` that never re-reads or re-writes the request it belongs to.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** The three states a logged call can be in. */
|
|
13
|
+
export type LLMCallStatus = 'running' | 'success' | 'error'
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* One logged call, as columns. Scalars are what a listing filters, orders and
|
|
17
|
+
* pages on; the rest is JSON the store carries without reading.
|
|
18
|
+
*/
|
|
19
|
+
export interface LLMCallRow {
|
|
20
|
+
/** UUIDv7. Sortable, so it is both the identity and the order — see `list`. */
|
|
21
|
+
callId: string
|
|
22
|
+
agentId: string
|
|
23
|
+
createdAt: number
|
|
24
|
+
status: LLMCallStatus
|
|
25
|
+
/** Copied out of `request` so a listing can show it without parsing the blob. */
|
|
26
|
+
model: string
|
|
27
|
+
/** Serialized `LLMCallRequest`. Written once and never rewritten. */
|
|
28
|
+
request: string
|
|
29
|
+
completedAt?: number
|
|
30
|
+
durationMs?: number
|
|
31
|
+
providerRequestId?: string
|
|
32
|
+
/** Serialized `LLMCallResponse`. Absent while the call is still running. */
|
|
33
|
+
response?: string
|
|
34
|
+
/** Serialized `LLMCallMetrics`. Absent until the call succeeds. */
|
|
35
|
+
metrics?: string
|
|
36
|
+
/** Serialized `LLMCallError`. Absent unless the call failed. */
|
|
37
|
+
error?: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** Everything a finished call adds to its row. The request is never part of it. */
|
|
41
|
+
export interface LLMCallOutcome {
|
|
42
|
+
status: 'success' | 'error'
|
|
43
|
+
completedAt: number
|
|
44
|
+
durationMs: number
|
|
45
|
+
providerRequestId?: string
|
|
46
|
+
response?: string
|
|
47
|
+
metrics?: string
|
|
48
|
+
error?: string
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface LLMCallPage {
|
|
52
|
+
calls: LLMCallRow[]
|
|
53
|
+
/** Calls the session holds, before `limit`/`offset` — what the UI shows as the count. */
|
|
54
|
+
total: number
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface LLMCallStore {
|
|
58
|
+
/**
|
|
59
|
+
* Largest value one column can hold, where the host has a ceiling. The caller
|
|
60
|
+
* clamps `request` to it rather than letting an oversized prompt turn a logged
|
|
61
|
+
* call into a failed inference. Absent means no ceiling and no clamping.
|
|
62
|
+
*/
|
|
63
|
+
readonly maxBlobBytes?: number
|
|
64
|
+
|
|
65
|
+
/** Record a call that has just started. */
|
|
66
|
+
create(sessionId: string, row: LLMCallRow): Promise<void>
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Attach the outcome to a call already recorded. A call id the store does not
|
|
70
|
+
* hold is not an error — a reap between the two halves of one inference is
|
|
71
|
+
* exactly that case.
|
|
72
|
+
*/
|
|
73
|
+
complete(sessionId: string, callId: string, outcome: LLMCallOutcome): Promise<void>
|
|
74
|
+
|
|
75
|
+
get(sessionId: string, callId: string): Promise<LLMCallRow | null>
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* One page of a session's calls, newest first, ordered by `callId` descending.
|
|
79
|
+
* UUIDv7 is time-ordered and fixed width, so that order is chronological and
|
|
80
|
+
* total — two calls in the same millisecond still page without overlapping.
|
|
81
|
+
*/
|
|
82
|
+
list(sessionId: string, options: { limit: number; offset: number }): Promise<LLMCallPage>
|
|
83
|
+
|
|
84
|
+
/** Drop every call held for one session, and report how many went. */
|
|
85
|
+
delete(sessionId: string): Promise<number>
|
|
86
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduler adapter interface.
|
|
3
|
+
*
|
|
4
|
+
* The agent loop re-enters through this port instead of a bare `setTimeout`, so
|
|
5
|
+
* a host with no live process between wakes can drive it — on Cloudflare,
|
|
6
|
+
* `ctx.storage.setAlarm()` then `alarm()`.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** Called when a wake armed for `key` comes due. */
|
|
10
|
+
export type WakeHandler = (key: string) => void | Promise<void>
|
|
11
|
+
|
|
12
|
+
export interface Scheduler {
|
|
13
|
+
/** Wake `key` after `delayMs`. Replaces any pending wake for the same key. */
|
|
14
|
+
wake(key: string, delayMs: number): Promise<void>
|
|
15
|
+
cancel(key: string): Promise<void>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A scheduler that delivers its own wakes, because the process that armed them
|
|
20
|
+
* is still alive. Hosts that deliver out-of-band implement plain {@link Scheduler}
|
|
21
|
+
* and call `SessionManager.dispatchWake` from their own handler.
|
|
22
|
+
*/
|
|
23
|
+
export interface LiveScheduler extends Scheduler {
|
|
24
|
+
/** Register where due wakes are delivered. Replaces any previous handler. */
|
|
25
|
+
onWake(handler: WakeHandler): void
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function isLiveScheduler(scheduler: Scheduler): scheduler is LiveScheduler {
|
|
29
|
+
return 'onWake' in scheduler && typeof scheduler.onWake === 'function'
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* `setTimeout`-backed scheduler for hosts with a live process.
|
|
34
|
+
*
|
|
35
|
+
* Arms and clears synchronously, so the cancel-then-wake sequence callers issue
|
|
36
|
+
* without awaiting cannot land out of order.
|
|
37
|
+
*/
|
|
38
|
+
export function createTimerScheduler(): LiveScheduler {
|
|
39
|
+
const timers = new Map<string, ReturnType<typeof setTimeout>>()
|
|
40
|
+
let handler: WakeHandler | undefined
|
|
41
|
+
|
|
42
|
+
const clear = (key: string): void => {
|
|
43
|
+
const timer = timers.get(key)
|
|
44
|
+
if (timer === undefined) return
|
|
45
|
+
clearTimeout(timer)
|
|
46
|
+
timers.delete(key)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
onWake(next: WakeHandler): void {
|
|
51
|
+
handler = next
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
async wake(key: string, delayMs: number): Promise<void> {
|
|
55
|
+
clear(key)
|
|
56
|
+
timers.set(
|
|
57
|
+
key,
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
timers.delete(key)
|
|
60
|
+
const dispatched = handler?.(key)
|
|
61
|
+
// The handler owns its own error reporting; there is nothing a timer can do.
|
|
62
|
+
if (dispatched) void dispatched.catch(() => {})
|
|
63
|
+
}, delayMs),
|
|
64
|
+
)
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
async cancel(key: string): Promise<void> {
|
|
68
|
+
clear(key)
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-log store adapter.
|
|
3
|
+
*
|
|
4
|
+
* `session.log` is the detailed record of one session. On a host with real files
|
|
5
|
+
* it is a JSONL file appended to, which is the right shape there. On a host whose
|
|
6
|
+
* filesystem is itself SQLite it is not, so this port lets it spend rows instead.
|
|
7
|
+
*
|
|
8
|
+
* Optional: a host without a table is unchanged — `SessionManager` writes the file
|
|
9
|
+
* it always wrote and `logs.tail` cursors it by byte offset.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export interface SessionLogPage {
|
|
13
|
+
/** One serialized JSON object per entry, without the trailing newline. */
|
|
14
|
+
lines: string[]
|
|
15
|
+
/**
|
|
16
|
+
* Cursor to hand back as `since` on the next read.
|
|
17
|
+
*
|
|
18
|
+
* Opaque and only comparable with itself: a file-backed log counts bytes and a
|
|
19
|
+
* store-backed one counts entries, and no caller may assume which.
|
|
20
|
+
*/
|
|
21
|
+
offset: number
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface SessionLogStore {
|
|
25
|
+
/**
|
|
26
|
+
* Record one already-serialized line.
|
|
27
|
+
*
|
|
28
|
+
* Returns nothing rather than a promise, and must never throw: logging sits on
|
|
29
|
+
* the agent loop's path and nothing there awaits it. A store that cannot write
|
|
30
|
+
* drops the line, exactly as a failed file append is swallowed.
|
|
31
|
+
*/
|
|
32
|
+
append(sessionId: string, line: string): void
|
|
33
|
+
|
|
34
|
+
/** Entries recorded after `since`, and the cursor that follows them. */
|
|
35
|
+
read(sessionId: string, since: number): Promise<SessionLogPage>
|
|
36
|
+
|
|
37
|
+
/** Drop every entry held for one session, and report how many went. */
|
|
38
|
+
delete(sessionId: string): Promise<number>
|
|
39
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell adapter interface.
|
|
3
|
+
*
|
|
4
|
+
* The shell tool assembles and validates a command line; running it is the
|
|
5
|
+
* host's business. A host with a process table spawns `/bin/sh`; one without
|
|
6
|
+
* answers from an in-process interpreter over its own filesystem.
|
|
7
|
+
*
|
|
8
|
+
* Resource limits are the host's business too, and two `ulimit` values only look like
|
|
9
|
+
* guards: `-v` (RLIMIT_AS) bounds mapped address space, not memory in use; `-t`
|
|
10
|
+
* (RLIMIT_CPU) sums CPU across threads and resets in each child. Bound wall time instead.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* How a runner confines what a command may touch.
|
|
15
|
+
*
|
|
16
|
+
* `paths` honours the grants below; `host` is a filesystem that holds nothing
|
|
17
|
+
* but this session, so the grants are redundant; `none` cannot confine at all,
|
|
18
|
+
* and the caller decides whether that is acceptable.
|
|
19
|
+
*/
|
|
20
|
+
export type ShellConfinement = 'paths' | 'host' | 'none'
|
|
21
|
+
|
|
22
|
+
/** One path the command may reach, and where the host finds it. */
|
|
23
|
+
export interface ShellGrant {
|
|
24
|
+
/** Path as the command sees it. */
|
|
25
|
+
path: string
|
|
26
|
+
/**
|
|
27
|
+
* Where the host reads it from, when that differs. A runner that has to mount
|
|
28
|
+
* the confinement needs the pair; absent means the command's path is the host's.
|
|
29
|
+
*/
|
|
30
|
+
source?: string
|
|
31
|
+
mode: 'rw' | 'ro'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface ShellRunOptions {
|
|
35
|
+
/** One command line, already assembled and escaped by the caller. */
|
|
36
|
+
command: string
|
|
37
|
+
cwd: string
|
|
38
|
+
env?: Record<string, string>
|
|
39
|
+
stdin?: string
|
|
40
|
+
timeoutMs: number
|
|
41
|
+
/**
|
|
42
|
+
* What the command may reach. Meaningful only under `paths` confinement, and
|
|
43
|
+
* ordered: a grant is applied after the ones before it, so a later grant may
|
|
44
|
+
* narrow an earlier one.
|
|
45
|
+
*/
|
|
46
|
+
grants?: readonly ShellGrant[]
|
|
47
|
+
/** Whether a confined command may reach the network. Default: false. */
|
|
48
|
+
network?: boolean
|
|
49
|
+
/** Interpreter for `command`. A host with a single interpreter ignores it. */
|
|
50
|
+
shell?: string
|
|
51
|
+
/** Caps for a confined command; ignored when the command runs unconfined. */
|
|
52
|
+
limits?: ShellLimits
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Caps a host applies to a confined command. An omitted field takes the host's
|
|
57
|
+
* default; `null` asks for no cap at all, for a host where one does more harm
|
|
58
|
+
* than good — an old kernel that counts processes per uid rather than per namespace.
|
|
59
|
+
*/
|
|
60
|
+
export interface ShellLimits {
|
|
61
|
+
/** Largest file the command may write, in bytes. */
|
|
62
|
+
fileSizeBytes?: number | null
|
|
63
|
+
/** Concurrent processes. On Linux this is per-uid, not per-process. */
|
|
64
|
+
processes?: number | null
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface ShellRunResult {
|
|
68
|
+
stdout: string
|
|
69
|
+
stderr: string
|
|
70
|
+
exitCode: number
|
|
71
|
+
/** Set when the host terminated the command rather than the command exiting. */
|
|
72
|
+
signal?: string
|
|
73
|
+
timedOut: boolean
|
|
74
|
+
/** Set when either stream hit the host's output ceiling. */
|
|
75
|
+
truncated?: boolean
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface ShellRunner {
|
|
79
|
+
/** Declared, not assumed: a caller that needs confinement checks it before running. */
|
|
80
|
+
readonly confinement: ShellConfinement
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Run one command line to completion and buffer its output.
|
|
84
|
+
*
|
|
85
|
+
* Resolves with a non-zero `exitCode` rather than rejecting — a failed command
|
|
86
|
+
* is an answer. Rejects only when the host could not run it at all.
|
|
87
|
+
*/
|
|
88
|
+
run(options: ShellRunOptions): Promise<ShellRunResult>
|
|
89
|
+
}
|
|
@@ -45,6 +45,7 @@ export const agentStoppedNotificationSchema = z.object({
|
|
|
45
45
|
export type AgentStoppedNotification = z.infer<typeof agentStoppedNotificationSchema>
|
|
46
46
|
|
|
47
47
|
export const agentStatusPlugin = definePlugin('agent-status')
|
|
48
|
+
.order(50)
|
|
48
49
|
.notification('agentStatus', {
|
|
49
50
|
schema: z.object({
|
|
50
51
|
sessionId: sessionIdSchema,
|