openryoko 0.9.4-ryoko.2
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/bin/jimmy.d.ts +3 -0
- package/dist/bin/jimmy.d.ts.map +1 -0
- package/dist/bin/jimmy.js +149 -0
- package/dist/bin/jimmy.js.map +1 -0
- package/dist/package.json +54 -0
- package/dist/src/cli/__tests__/migrate.test.d.ts +2 -0
- package/dist/src/cli/__tests__/migrate.test.d.ts.map +1 -0
- package/dist/src/cli/__tests__/migrate.test.js +79 -0
- package/dist/src/cli/__tests__/migrate.test.js.map +1 -0
- package/dist/src/cli/chrome-allow.d.ts +5 -0
- package/dist/src/cli/chrome-allow.d.ts.map +1 -0
- package/dist/src/cli/chrome-allow.js +250 -0
- package/dist/src/cli/chrome-allow.js.map +1 -0
- package/dist/src/cli/create.d.ts +2 -0
- package/dist/src/cli/create.d.ts.map +1 -0
- package/dist/src/cli/create.js +72 -0
- package/dist/src/cli/create.js.map +1 -0
- package/dist/src/cli/instances.d.ts +14 -0
- package/dist/src/cli/instances.d.ts.map +1 -0
- package/dist/src/cli/instances.js +43 -0
- package/dist/src/cli/instances.js.map +1 -0
- package/dist/src/cli/list.d.ts +2 -0
- package/dist/src/cli/list.d.ts.map +1 -0
- package/dist/src/cli/list.js +38 -0
- package/dist/src/cli/list.js.map +1 -0
- package/dist/src/cli/migrate.d.ts +5 -0
- package/dist/src/cli/migrate.d.ts.map +1 -0
- package/dist/src/cli/migrate.js +222 -0
- package/dist/src/cli/migrate.js.map +1 -0
- package/dist/src/cli/nuke.d.ts +2 -0
- package/dist/src/cli/nuke.d.ts.map +1 -0
- package/dist/src/cli/nuke.js +91 -0
- package/dist/src/cli/nuke.js.map +1 -0
- package/dist/src/cli/remove.d.ts +4 -0
- package/dist/src/cli/remove.d.ts.map +1 -0
- package/dist/src/cli/remove.js +47 -0
- package/dist/src/cli/remove.js.map +1 -0
- package/dist/src/cli/setup.d.ts +4 -0
- package/dist/src/cli/setup.d.ts.map +1 -0
- package/dist/src/cli/setup.js +491 -0
- package/dist/src/cli/setup.js.map +1 -0
- package/dist/src/cli/skills.d.ts +28 -0
- package/dist/src/cli/skills.d.ts.map +1 -0
- package/dist/src/cli/skills.js +284 -0
- package/dist/src/cli/skills.js.map +1 -0
- package/dist/src/cli/start.d.ts +5 -0
- package/dist/src/cli/start.d.ts.map +1 -0
- package/dist/src/cli/start.js +34 -0
- package/dist/src/cli/start.js.map +1 -0
- package/dist/src/cli/status.d.ts +2 -0
- package/dist/src/cli/status.d.ts.map +1 -0
- package/dist/src/cli/status.js +69 -0
- package/dist/src/cli/status.js.map +1 -0
- package/dist/src/cli/stop.d.ts +2 -0
- package/dist/src/cli/stop.d.ts.map +1 -0
- package/dist/src/cli/stop.js +11 -0
- package/dist/src/cli/stop.js.map +1 -0
- package/dist/src/connectors/cron/index.d.ts +21 -0
- package/dist/src/connectors/cron/index.d.ts.map +1 -0
- package/dist/src/connectors/cron/index.js +75 -0
- package/dist/src/connectors/cron/index.js.map +1 -0
- package/dist/src/connectors/discord/format.d.ts +3 -0
- package/dist/src/connectors/discord/format.d.ts.map +1 -0
- package/dist/src/connectors/discord/format.js +33 -0
- package/dist/src/connectors/discord/format.js.map +1 -0
- package/dist/src/connectors/discord/index.d.ts +47 -0
- package/dist/src/connectors/discord/index.d.ts.map +1 -0
- package/dist/src/connectors/discord/index.js +308 -0
- package/dist/src/connectors/discord/index.js.map +1 -0
- package/dist/src/connectors/discord/remote.d.ts +33 -0
- package/dist/src/connectors/discord/remote.d.ts.map +1 -0
- package/dist/src/connectors/discord/remote.js +89 -0
- package/dist/src/connectors/discord/remote.js.map +1 -0
- package/dist/src/connectors/discord/threads.d.ts +5 -0
- package/dist/src/connectors/discord/threads.d.ts.map +1 -0
- package/dist/src/connectors/discord/threads.js +22 -0
- package/dist/src/connectors/discord/threads.js.map +1 -0
- package/dist/src/connectors/slack/__tests__/active-threads.test.d.ts +2 -0
- package/dist/src/connectors/slack/__tests__/active-threads.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/__tests__/active-threads.test.js +57 -0
- package/dist/src/connectors/slack/__tests__/active-threads.test.js.map +1 -0
- package/dist/src/connectors/slack/__tests__/format.test.d.ts +2 -0
- package/dist/src/connectors/slack/__tests__/format.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/__tests__/format.test.js +115 -0
- package/dist/src/connectors/slack/__tests__/format.test.js.map +1 -0
- package/dist/src/connectors/slack/__tests__/speaker.test.d.ts +2 -0
- package/dist/src/connectors/slack/__tests__/speaker.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/__tests__/speaker.test.js +59 -0
- package/dist/src/connectors/slack/__tests__/speaker.test.js.map +1 -0
- package/dist/src/connectors/slack/__tests__/triage-prompt.test.d.ts +2 -0
- package/dist/src/connectors/slack/__tests__/triage-prompt.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/__tests__/triage-prompt.test.js +102 -0
- package/dist/src/connectors/slack/__tests__/triage-prompt.test.js.map +1 -0
- package/dist/src/connectors/slack/__tests__/triage.test.d.ts +2 -0
- package/dist/src/connectors/slack/__tests__/triage.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/__tests__/triage.test.js +88 -0
- package/dist/src/connectors/slack/__tests__/triage.test.js.map +1 -0
- package/dist/src/connectors/slack/active-threads.d.ts +39 -0
- package/dist/src/connectors/slack/active-threads.d.ts.map +1 -0
- package/dist/src/connectors/slack/active-threads.js +71 -0
- package/dist/src/connectors/slack/active-threads.js.map +1 -0
- package/dist/src/connectors/slack/format.d.ts +17 -0
- package/dist/src/connectors/slack/format.d.ts.map +1 -0
- package/dist/src/connectors/slack/format.js +85 -0
- package/dist/src/connectors/slack/format.js.map +1 -0
- package/dist/src/connectors/slack/index.d.ts +51 -0
- package/dist/src/connectors/slack/index.d.ts.map +1 -0
- package/dist/src/connectors/slack/index.js +562 -0
- package/dist/src/connectors/slack/index.js.map +1 -0
- package/dist/src/connectors/slack/speaker.d.ts +39 -0
- package/dist/src/connectors/slack/speaker.d.ts.map +1 -0
- package/dist/src/connectors/slack/speaker.js +30 -0
- package/dist/src/connectors/slack/speaker.js.map +1 -0
- package/dist/src/connectors/slack/threads.d.ts +12 -0
- package/dist/src/connectors/slack/threads.d.ts.map +1 -0
- package/dist/src/connectors/slack/threads.js +41 -0
- package/dist/src/connectors/slack/threads.js.map +1 -0
- package/dist/src/connectors/slack/threads.test.d.ts +2 -0
- package/dist/src/connectors/slack/threads.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/threads.test.js +79 -0
- package/dist/src/connectors/slack/threads.test.js.map +1 -0
- package/dist/src/connectors/slack/triage-prompt.d.ts +50 -0
- package/dist/src/connectors/slack/triage-prompt.d.ts.map +1 -0
- package/dist/src/connectors/slack/triage-prompt.js +127 -0
- package/dist/src/connectors/slack/triage-prompt.js.map +1 -0
- package/dist/src/connectors/slack/triage.d.ts +41 -0
- package/dist/src/connectors/slack/triage.d.ts.map +1 -0
- package/dist/src/connectors/slack/triage.js +120 -0
- package/dist/src/connectors/slack/triage.js.map +1 -0
- package/dist/src/connectors/telegram/__tests__/connector.test.d.ts +2 -0
- package/dist/src/connectors/telegram/__tests__/connector.test.d.ts.map +1 -0
- package/dist/src/connectors/telegram/__tests__/connector.test.js +257 -0
- package/dist/src/connectors/telegram/__tests__/connector.test.js.map +1 -0
- package/dist/src/connectors/telegram/__tests__/format.test.d.ts +2 -0
- package/dist/src/connectors/telegram/__tests__/format.test.d.ts.map +1 -0
- package/dist/src/connectors/telegram/__tests__/format.test.js +79 -0
- package/dist/src/connectors/telegram/__tests__/format.test.js.map +1 -0
- package/dist/src/connectors/telegram/__tests__/threads.test.d.ts +2 -0
- package/dist/src/connectors/telegram/__tests__/threads.test.d.ts.map +1 -0
- package/dist/src/connectors/telegram/__tests__/threads.test.js +51 -0
- package/dist/src/connectors/telegram/__tests__/threads.test.js.map +1 -0
- package/dist/src/connectors/telegram/format.d.ts +12 -0
- package/dist/src/connectors/telegram/format.d.ts.map +1 -0
- package/dist/src/connectors/telegram/format.js +61 -0
- package/dist/src/connectors/telegram/format.js.map +1 -0
- package/dist/src/connectors/telegram/index.d.ts +28 -0
- package/dist/src/connectors/telegram/index.d.ts.map +1 -0
- package/dist/src/connectors/telegram/index.js +213 -0
- package/dist/src/connectors/telegram/index.js.map +1 -0
- package/dist/src/connectors/telegram/threads.d.ts +29 -0
- package/dist/src/connectors/telegram/threads.d.ts.map +1 -0
- package/dist/src/connectors/telegram/threads.js +26 -0
- package/dist/src/connectors/telegram/threads.js.map +1 -0
- package/dist/src/connectors/whatsapp/__tests__/format.test.d.ts +2 -0
- package/dist/src/connectors/whatsapp/__tests__/format.test.d.ts.map +1 -0
- package/dist/src/connectors/whatsapp/__tests__/format.test.js +70 -0
- package/dist/src/connectors/whatsapp/__tests__/format.test.js.map +1 -0
- package/dist/src/connectors/whatsapp/format.d.ts +12 -0
- package/dist/src/connectors/whatsapp/format.d.ts.map +1 -0
- package/dist/src/connectors/whatsapp/format.js +53 -0
- package/dist/src/connectors/whatsapp/format.js.map +1 -0
- package/dist/src/connectors/whatsapp/index.d.ts +42 -0
- package/dist/src/connectors/whatsapp/index.d.ts.map +1 -0
- package/dist/src/connectors/whatsapp/index.js +279 -0
- package/dist/src/connectors/whatsapp/index.js.map +1 -0
- package/dist/src/cron/jobs.d.ts +5 -0
- package/dist/src/cron/jobs.d.ts.map +1 -0
- package/dist/src/cron/jobs.js +23 -0
- package/dist/src/cron/jobs.js.map +1 -0
- package/dist/src/cron/runner.d.ts +4 -0
- package/dist/src/cron/runner.d.ts.map +1 -0
- package/dist/src/cron/runner.js +88 -0
- package/dist/src/cron/runner.js.map +1 -0
- package/dist/src/cron/scheduler.d.ts +8 -0
- package/dist/src/cron/scheduler.d.ts.map +1 -0
- package/dist/src/cron/scheduler.js +64 -0
- package/dist/src/cron/scheduler.js.map +1 -0
- package/dist/src/engines/__tests__/gemini.test.d.ts +2 -0
- package/dist/src/engines/__tests__/gemini.test.d.ts.map +1 -0
- package/dist/src/engines/__tests__/gemini.test.js +404 -0
- package/dist/src/engines/__tests__/gemini.test.js.map +1 -0
- package/dist/src/engines/claude.d.ts +20 -0
- package/dist/src/engines/claude.d.ts.map +1 -0
- package/dist/src/engines/claude.js +520 -0
- package/dist/src/engines/claude.js.map +1 -0
- package/dist/src/engines/codex.d.ts +15 -0
- package/dist/src/engines/codex.d.ts.map +1 -0
- package/dist/src/engines/codex.js +351 -0
- package/dist/src/engines/codex.js.map +1 -0
- package/dist/src/engines/gemini.d.ts +32 -0
- package/dist/src/engines/gemini.d.ts.map +1 -0
- package/dist/src/engines/gemini.js +328 -0
- package/dist/src/engines/gemini.js.map +1 -0
- package/dist/src/engines/mock.d.ts +16 -0
- package/dist/src/engines/mock.d.ts.map +1 -0
- package/dist/src/engines/mock.js +47 -0
- package/dist/src/engines/mock.js.map +1 -0
- package/dist/src/gateway/__tests__/api-last-n.test.d.ts +2 -0
- package/dist/src/gateway/__tests__/api-last-n.test.d.ts.map +1 -0
- package/dist/src/gateway/__tests__/api-last-n.test.js +32 -0
- package/dist/src/gateway/__tests__/api-last-n.test.js.map +1 -0
- package/dist/src/gateway/__tests__/costs.test.d.ts +2 -0
- package/dist/src/gateway/__tests__/costs.test.d.ts.map +1 -0
- package/dist/src/gateway/__tests__/costs.test.js +32 -0
- package/dist/src/gateway/__tests__/costs.test.js.map +1 -0
- package/dist/src/gateway/__tests__/org-hierarchy.test.d.ts +2 -0
- package/dist/src/gateway/__tests__/org-hierarchy.test.d.ts.map +1 -0
- package/dist/src/gateway/__tests__/org-hierarchy.test.js +161 -0
- package/dist/src/gateway/__tests__/org-hierarchy.test.js.map +1 -0
- package/dist/src/gateway/__tests__/org-update.test.d.ts +2 -0
- package/dist/src/gateway/__tests__/org-update.test.d.ts.map +1 -0
- package/dist/src/gateway/__tests__/org-update.test.js +99 -0
- package/dist/src/gateway/__tests__/org-update.test.js.map +1 -0
- package/dist/src/gateway/__tests__/org.test.d.ts +2 -0
- package/dist/src/gateway/__tests__/org.test.d.ts.map +1 -0
- package/dist/src/gateway/__tests__/org.test.js +77 -0
- package/dist/src/gateway/__tests__/org.test.js.map +1 -0
- package/dist/src/gateway/__tests__/services.test.d.ts +2 -0
- package/dist/src/gateway/__tests__/services.test.d.ts.map +1 -0
- package/dist/src/gateway/__tests__/services.test.js +153 -0
- package/dist/src/gateway/__tests__/services.test.js.map +1 -0
- package/dist/src/gateway/api.d.ts +19 -0
- package/dist/src/gateway/api.d.ts.map +1 -0
- package/dist/src/gateway/api.js +2261 -0
- package/dist/src/gateway/api.js.map +1 -0
- package/dist/src/gateway/budgets.d.ts +16 -0
- package/dist/src/gateway/budgets.d.ts.map +1 -0
- package/dist/src/gateway/budgets.js +39 -0
- package/dist/src/gateway/budgets.js.map +1 -0
- package/dist/src/gateway/costs.d.ts +19 -0
- package/dist/src/gateway/costs.d.ts.map +1 -0
- package/dist/src/gateway/costs.js +39 -0
- package/dist/src/gateway/costs.js.map +1 -0
- package/dist/src/gateway/daemon-entry.d.ts +2 -0
- package/dist/src/gateway/daemon-entry.d.ts.map +1 -0
- package/dist/src/gateway/daemon-entry.js +12 -0
- package/dist/src/gateway/daemon-entry.js.map +1 -0
- package/dist/src/gateway/files.d.ts +6 -0
- package/dist/src/gateway/files.d.ts.map +1 -0
- package/dist/src/gateway/files.js +442 -0
- package/dist/src/gateway/files.js.map +1 -0
- package/dist/src/gateway/goals.d.ts +11 -0
- package/dist/src/gateway/goals.d.ts.map +1 -0
- package/dist/src/gateway/goals.js +72 -0
- package/dist/src/gateway/goals.js.map +1 -0
- package/dist/src/gateway/lifecycle.d.ts +10 -0
- package/dist/src/gateway/lifecycle.d.ts.map +1 -0
- package/dist/src/gateway/lifecycle.js +152 -0
- package/dist/src/gateway/lifecycle.js.map +1 -0
- package/dist/src/gateway/org-hierarchy.d.ts +5 -0
- package/dist/src/gateway/org-hierarchy.d.ts.map +1 -0
- package/dist/src/gateway/org-hierarchy.js +174 -0
- package/dist/src/gateway/org-hierarchy.js.map +1 -0
- package/dist/src/gateway/org.d.ts +17 -0
- package/dist/src/gateway/org.d.ts.map +1 -0
- package/dist/src/gateway/org.js +136 -0
- package/dist/src/gateway/org.js.map +1 -0
- package/dist/src/gateway/server.d.ts +4 -0
- package/dist/src/gateway/server.d.ts.map +1 -0
- package/dist/src/gateway/server.js +764 -0
- package/dist/src/gateway/server.js.map +1 -0
- package/dist/src/gateway/services.d.ts +28 -0
- package/dist/src/gateway/services.d.ts.map +1 -0
- package/dist/src/gateway/services.js +112 -0
- package/dist/src/gateway/services.js.map +1 -0
- package/dist/src/gateway/watcher.d.ts +14 -0
- package/dist/src/gateway/watcher.d.ts.map +1 -0
- package/dist/src/gateway/watcher.js +111 -0
- package/dist/src/gateway/watcher.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/gateway-server.d.ts +13 -0
- package/dist/src/mcp/gateway-server.d.ts.map +1 -0
- package/dist/src/mcp/gateway-server.js +376 -0
- package/dist/src/mcp/gateway-server.js.map +1 -0
- package/dist/src/mcp/resolver.d.ts +19 -0
- package/dist/src/mcp/resolver.d.ts.map +1 -0
- package/dist/src/mcp/resolver.js +159 -0
- package/dist/src/mcp/resolver.js.map +1 -0
- package/dist/src/sessions/__tests__/callbacks.test.d.ts +2 -0
- package/dist/src/sessions/__tests__/callbacks.test.d.ts.map +1 -0
- package/dist/src/sessions/__tests__/callbacks.test.js +154 -0
- package/dist/src/sessions/__tests__/callbacks.test.js.map +1 -0
- package/dist/src/sessions/callbacks.d.ts +31 -0
- package/dist/src/sessions/callbacks.d.ts.map +1 -0
- package/dist/src/sessions/callbacks.js +112 -0
- package/dist/src/sessions/callbacks.js.map +1 -0
- package/dist/src/sessions/context.d.ts +36 -0
- package/dist/src/sessions/context.d.ts.map +1 -0
- package/dist/src/sessions/context.js +741 -0
- package/dist/src/sessions/context.js.map +1 -0
- package/dist/src/sessions/fork.d.ts +30 -0
- package/dist/src/sessions/fork.d.ts.map +1 -0
- package/dist/src/sessions/fork.js +178 -0
- package/dist/src/sessions/fork.js.map +1 -0
- package/dist/src/sessions/manager.d.ts +27 -0
- package/dist/src/sessions/manager.d.ts.map +1 -0
- package/dist/src/sessions/manager.js +751 -0
- package/dist/src/sessions/manager.js.map +1 -0
- package/dist/src/sessions/queue.d.ts +36 -0
- package/dist/src/sessions/queue.d.ts.map +1 -0
- package/dist/src/sessions/queue.js +101 -0
- package/dist/src/sessions/queue.js.map +1 -0
- package/dist/src/sessions/queue.test.d.ts +2 -0
- package/dist/src/sessions/queue.test.d.ts.map +1 -0
- package/dist/src/sessions/queue.test.js +28 -0
- package/dist/src/sessions/queue.test.js.map +1 -0
- package/dist/src/sessions/registry.d.ts +116 -0
- package/dist/src/sessions/registry.d.ts.map +1 -0
- package/dist/src/sessions/registry.js +480 -0
- package/dist/src/sessions/registry.js.map +1 -0
- package/dist/src/sessions/registry.test.d.ts +2 -0
- package/dist/src/sessions/registry.test.d.ts.map +1 -0
- package/dist/src/sessions/registry.test.js +41 -0
- package/dist/src/sessions/registry.test.js.map +1 -0
- package/dist/src/shared/__tests__/rateLimit.test.d.ts +2 -0
- package/dist/src/shared/__tests__/rateLimit.test.d.ts.map +1 -0
- package/dist/src/shared/__tests__/rateLimit.test.js +108 -0
- package/dist/src/shared/__tests__/rateLimit.test.js.map +1 -0
- package/dist/src/shared/__tests__/usageAwareness.test.d.ts +2 -0
- package/dist/src/shared/__tests__/usageAwareness.test.d.ts.map +1 -0
- package/dist/src/shared/__tests__/usageAwareness.test.js +58 -0
- package/dist/src/shared/__tests__/usageAwareness.test.js.map +1 -0
- package/dist/src/shared/config.d.ts +3 -0
- package/dist/src/shared/config.d.ts.map +1 -0
- package/dist/src/shared/config.js +11 -0
- package/dist/src/shared/config.js.map +1 -0
- package/dist/src/shared/effort.d.ts +17 -0
- package/dist/src/shared/effort.d.ts.map +1 -0
- package/dist/src/shared/effort.js +44 -0
- package/dist/src/shared/effort.js.map +1 -0
- package/dist/src/shared/logger.d.ts +12 -0
- package/dist/src/shared/logger.d.ts.map +1 -0
- package/dist/src/shared/logger.js +35 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/paths.d.ts +31 -0
- package/dist/src/shared/paths.d.ts.map +1 -0
- package/dist/src/shared/paths.js +92 -0
- package/dist/src/shared/paths.js.map +1 -0
- package/dist/src/shared/rateLimit.d.ts +20 -0
- package/dist/src/shared/rateLimit.d.ts.map +1 -0
- package/dist/src/shared/rateLimit.js +61 -0
- package/dist/src/shared/rateLimit.js.map +1 -0
- package/dist/src/shared/types.d.ts +448 -0
- package/dist/src/shared/types.d.ts.map +1 -0
- package/dist/src/shared/types.js +4 -0
- package/dist/src/shared/types.js.map +1 -0
- package/dist/src/shared/usageAwareness.d.ts +10 -0
- package/dist/src/shared/usageAwareness.d.ts.map +1 -0
- package/dist/src/shared/usageAwareness.js +69 -0
- package/dist/src/shared/usageAwareness.js.map +1 -0
- package/dist/src/shared/version.d.ts +15 -0
- package/dist/src/shared/version.d.ts.map +1 -0
- package/dist/src/shared/version.js +56 -0
- package/dist/src/shared/version.js.map +1 -0
- package/dist/src/stt/stt.d.ts +24 -0
- package/dist/src/stt/stt.d.ts.map +1 -0
- package/dist/src/stt/stt.js +203 -0
- package/dist/src/stt/stt.js.map +1 -0
- package/dist/web/404.html +1 -0
- package/dist/web/__next.__PAGE__.txt +9 -0
- package/dist/web/__next._full.txt +19 -0
- package/dist/web/__next._head.txt +6 -0
- package/dist/web/__next._index.txt +6 -0
- package/dist/web/__next._tree.txt +2 -0
- package/dist/web/_next/static/chunks/00yn.jp4tr9l6.js +62 -0
- package/dist/web/_next/static/chunks/0398g9fy2i2l..js +5 -0
- package/dist/web/_next/static/chunks/03~yq9q893hmn.js +1 -0
- package/dist/web/_next/static/chunks/07t-qdutaizlf.js +5 -0
- package/dist/web/_next/static/chunks/0_pxvi.u4tzw1.js +5 -0
- package/dist/web/_next/static/chunks/0dtbl8648b3u9.js +7 -0
- package/dist/web/_next/static/chunks/0e3pdjkorr5zl.js +2 -0
- package/dist/web/_next/static/chunks/0ewpxy-mzj3j3.js +1 -0
- package/dist/web/_next/static/chunks/0ihbb7~gq42g~.js +5 -0
- package/dist/web/_next/static/chunks/0j4uz-g9x1_~s.js +1 -0
- package/dist/web/_next/static/chunks/0mlo32yrc7ziu.css +1 -0
- package/dist/web/_next/static/chunks/0ru56x83x4rkk.js +1 -0
- package/dist/web/_next/static/chunks/0svvev77pb2gu.js +1 -0
- package/dist/web/_next/static/chunks/0tf9kpygstdls.js +1 -0
- package/dist/web/_next/static/chunks/0wzpea61sn2-k.js +5 -0
- package/dist/web/_next/static/chunks/0y3dnnq~kxyz_.js +1 -0
- package/dist/web/_next/static/chunks/0y~qqhmf2o7pt.js +1 -0
- package/dist/web/_next/static/chunks/0~6m1p5hnsx2f.js +1 -0
- package/dist/web/_next/static/chunks/10-liamt-ipcu.js +1 -0
- package/dist/web/_next/static/chunks/10l08hq.acixl.js +5 -0
- package/dist/web/_next/static/chunks/11rbefjn.e-3-.js +1 -0
- package/dist/web/_next/static/chunks/11rodb4s1x4of.js +1 -0
- package/dist/web/_next/static/chunks/12_uxtnrqhoo1.js +1 -0
- package/dist/web/_next/static/chunks/12h4dws.tz7yb.js +5 -0
- package/dist/web/_next/static/chunks/13juizw904g.e.js +1 -0
- package/dist/web/_next/static/chunks/14ge_q22f0n.f.js +1 -0
- package/dist/web/_next/static/chunks/16b0jvgccyt2i.js +5 -0
- package/dist/web/_next/static/chunks/17-u9c_weg12-.js +31 -0
- package/dist/web/_next/static/chunks/turbopack-0dt987bw_1nyf.js +1 -0
- package/dist/web/_next/static/media/apple-icon.0.wpl4.d-5bkf.jpg +0 -0
- package/dist/web/_next/static/media/icon.0.wpl4.d-5bkf.jpg +0 -0
- package/dist/web/_next/static/uwjABwQIFELOHhVlstvOe/_buildManifest.js +11 -0
- package/dist/web/_next/static/uwjABwQIFELOHhVlstvOe/_clientMiddlewareManifest.js +1 -0
- package/dist/web/_next/static/uwjABwQIFELOHhVlstvOe/_ssgManifest.js +1 -0
- package/dist/web/_not-found/__next._full.txt +17 -0
- package/dist/web/_not-found/__next._head.txt +6 -0
- package/dist/web/_not-found/__next._index.txt +6 -0
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dist/web/_not-found/__next._not-found.txt +5 -0
- package/dist/web/_not-found/__next._tree.txt +2 -0
- package/dist/web/_not-found.html +1 -0
- package/dist/web/_not-found.txt +17 -0
- package/dist/web/apple-icon.jpg +0 -0
- package/dist/web/chat/__next._full.txt +21 -0
- package/dist/web/chat/__next._head.txt +6 -0
- package/dist/web/chat/__next._index.txt +6 -0
- package/dist/web/chat/__next._tree.txt +2 -0
- package/dist/web/chat/__next.chat.__PAGE__.txt +9 -0
- package/dist/web/chat/__next.chat.txt +5 -0
- package/dist/web/chat.html +1 -0
- package/dist/web/chat.txt +21 -0
- package/dist/web/cron/__next._full.txt +21 -0
- package/dist/web/cron/__next._head.txt +6 -0
- package/dist/web/cron/__next._index.txt +6 -0
- package/dist/web/cron/__next._tree.txt +2 -0
- package/dist/web/cron/__next.cron.__PAGE__.txt +9 -0
- package/dist/web/cron/__next.cron.txt +5 -0
- package/dist/web/cron.html +1 -0
- package/dist/web/cron.txt +21 -0
- package/dist/web/icon.jpg +0 -0
- package/dist/web/index.html +1 -0
- package/dist/web/index.txt +19 -0
- package/dist/web/kanban/__next._full.txt +21 -0
- package/dist/web/kanban/__next._head.txt +6 -0
- package/dist/web/kanban/__next._index.txt +6 -0
- package/dist/web/kanban/__next._tree.txt +2 -0
- package/dist/web/kanban/__next.kanban.__PAGE__.txt +9 -0
- package/dist/web/kanban/__next.kanban.txt +5 -0
- package/dist/web/kanban.html +1 -0
- package/dist/web/kanban.txt +21 -0
- package/dist/web/logs/__next._full.txt +21 -0
- package/dist/web/logs/__next._head.txt +6 -0
- package/dist/web/logs/__next._index.txt +6 -0
- package/dist/web/logs/__next._tree.txt +2 -0
- package/dist/web/logs/__next.logs.__PAGE__.txt +9 -0
- package/dist/web/logs/__next.logs.txt +5 -0
- package/dist/web/logs.html +7 -0
- package/dist/web/logs.txt +21 -0
- package/dist/web/org/__next._full.txt +21 -0
- package/dist/web/org/__next._head.txt +6 -0
- package/dist/web/org/__next._index.txt +6 -0
- package/dist/web/org/__next._tree.txt +2 -0
- package/dist/web/org/__next.org.__PAGE__.txt +9 -0
- package/dist/web/org/__next.org.txt +5 -0
- package/dist/web/org.html +1 -0
- package/dist/web/org.txt +21 -0
- package/dist/web/sessions/__next._full.txt +18 -0
- package/dist/web/sessions/__next._head.txt +6 -0
- package/dist/web/sessions/__next._index.txt +6 -0
- package/dist/web/sessions/__next._tree.txt +2 -0
- package/dist/web/sessions/__next.sessions.__PAGE__.txt +6 -0
- package/dist/web/sessions/__next.sessions.txt +5 -0
- package/dist/web/sessions.html +1 -0
- package/dist/web/sessions.txt +18 -0
- package/dist/web/settings/__next._full.txt +21 -0
- package/dist/web/settings/__next._head.txt +6 -0
- package/dist/web/settings/__next._index.txt +6 -0
- package/dist/web/settings/__next._tree.txt +2 -0
- package/dist/web/settings/__next.settings.__PAGE__.txt +9 -0
- package/dist/web/settings/__next.settings.txt +5 -0
- package/dist/web/settings.html +1 -0
- package/dist/web/settings.txt +21 -0
- package/dist/web/skills/__next._full.txt +21 -0
- package/dist/web/skills/__next._head.txt +6 -0
- package/dist/web/skills/__next._index.txt +6 -0
- package/dist/web/skills/__next._tree.txt +2 -0
- package/dist/web/skills/__next.skills.__PAGE__.txt +9 -0
- package/dist/web/skills/__next.skills.txt +5 -0
- package/dist/web/skills.html +1 -0
- package/dist/web/skills.txt +21 -0
- package/package.json +54 -0
- package/template/AGENTS.md +285 -0
- package/template/CLAUDE.md +285 -0
- package/template/config.default.yaml +71 -0
- package/template/docs/architecture.md +74 -0
- package/template/docs/connectors.md +72 -0
- package/template/docs/cron.md +137 -0
- package/template/docs/mcp.md +108 -0
- package/template/docs/org.md +105 -0
- package/template/docs/overview.md +39 -0
- package/template/docs/self-modification.md +65 -0
- package/template/docs/skills.md +58 -0
- package/template/knowledge/.gitkeep +0 -0
- package/template/migrations/.gitkeep +0 -0
- package/template/migrations/0.1.0/MIGRATION.md +25 -0
- package/template/migrations/0.2.0/MIGRATION.md +41 -0
- package/template/migrations/0.2.0/files/config.default.yaml +30 -0
- package/template/migrations/0.3.0/MIGRATION.md +57 -0
- package/template/migrations/0.3.0/files/config.default.yaml +62 -0
- package/template/migrations/0.3.0/files/docs/mcp.md +108 -0
- package/template/migrations/0.7.3/MIGRATION.md +63 -0
- package/template/migrations/0.7.3/files/AGENTS.md +188 -0
- package/template/migrations/0.7.3/files/CLAUDE.md +127 -0
- package/template/migrations/0.7.5/MIGRATION.md +78 -0
- package/template/migrations/0.8.0/MIGRATION.md +73 -0
- package/template/migrations/0.9.0/MIGRATION.md +82 -0
- package/template/skills/cron-manager/SKILL.md +127 -0
- package/template/skills/find-and-install/SKILL.md +92 -0
- package/template/skills/management/SKILL.md +226 -0
- package/template/skills/migrate/SKILL.md +154 -0
- package/template/skills/new/SKILL.md +19 -0
- package/template/skills/onboarding/SKILL.md +106 -0
- package/template/skills/self-heal/SKILL.md +114 -0
- package/template/skills/skill-creator/SKILL.md +112 -0
- package/template/skills/status/SKILL.md +19 -0
- package/template/skills/sync/SKILL.md +67 -0
- package/template/skills.json +3 -0
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { mkdirSync } from 'node:fs';
|
|
4
|
+
import Database from 'better-sqlite3';
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
|
+
import { SESSIONS_DB } from '../shared/paths.js';
|
|
7
|
+
let db;
|
|
8
|
+
const CREATE_TABLE = `
|
|
9
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
10
|
+
id TEXT PRIMARY KEY,
|
|
11
|
+
engine TEXT NOT NULL,
|
|
12
|
+
engine_session_id TEXT,
|
|
13
|
+
source TEXT NOT NULL,
|
|
14
|
+
source_ref TEXT NOT NULL,
|
|
15
|
+
connector TEXT,
|
|
16
|
+
session_key TEXT,
|
|
17
|
+
reply_context TEXT,
|
|
18
|
+
message_id TEXT,
|
|
19
|
+
transport_meta TEXT,
|
|
20
|
+
employee TEXT,
|
|
21
|
+
model TEXT,
|
|
22
|
+
title TEXT,
|
|
23
|
+
parent_session_id TEXT,
|
|
24
|
+
status TEXT DEFAULT 'idle',
|
|
25
|
+
created_at TEXT NOT NULL,
|
|
26
|
+
last_activity TEXT NOT NULL,
|
|
27
|
+
last_error TEXT
|
|
28
|
+
)`;
|
|
29
|
+
const CREATE_MESSAGES_TABLE = `
|
|
30
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
31
|
+
id TEXT PRIMARY KEY,
|
|
32
|
+
session_id TEXT NOT NULL,
|
|
33
|
+
role TEXT NOT NULL,
|
|
34
|
+
content TEXT NOT NULL,
|
|
35
|
+
timestamp INTEGER NOT NULL
|
|
36
|
+
)`;
|
|
37
|
+
const CREATE_MESSAGES_INDEX = `
|
|
38
|
+
CREATE INDEX IF NOT EXISTS idx_messages_session ON messages (session_id, timestamp)
|
|
39
|
+
`;
|
|
40
|
+
const CREATE_SESSION_KEY_INDEX = `
|
|
41
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_session_key ON sessions (session_key, last_activity)
|
|
42
|
+
`;
|
|
43
|
+
const CREATE_FILES_TABLE = `
|
|
44
|
+
CREATE TABLE IF NOT EXISTS files (
|
|
45
|
+
id TEXT PRIMARY KEY,
|
|
46
|
+
filename TEXT NOT NULL,
|
|
47
|
+
size INTEGER NOT NULL,
|
|
48
|
+
mimetype TEXT,
|
|
49
|
+
path TEXT,
|
|
50
|
+
created_at TEXT NOT NULL
|
|
51
|
+
)
|
|
52
|
+
`;
|
|
53
|
+
function parseJsonObject(value) {
|
|
54
|
+
if (typeof value !== 'string' || !value.trim())
|
|
55
|
+
return null;
|
|
56
|
+
try {
|
|
57
|
+
const parsed = JSON.parse(value);
|
|
58
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : null;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function rowToSession(row) {
|
|
65
|
+
const replyContext = parseJsonObject(row.reply_context);
|
|
66
|
+
const transportMeta = parseJsonObject(row.transport_meta);
|
|
67
|
+
const sessionKey = (row.session_key || row.source_ref);
|
|
68
|
+
const connector = row.connector ?? row.source ?? null;
|
|
69
|
+
return {
|
|
70
|
+
id: row.id,
|
|
71
|
+
engine: row.engine,
|
|
72
|
+
engineSessionId: row.engine_session_id ?? null,
|
|
73
|
+
source: row.source,
|
|
74
|
+
sourceRef: row.source_ref,
|
|
75
|
+
connector,
|
|
76
|
+
sessionKey,
|
|
77
|
+
replyContext: replyContext,
|
|
78
|
+
messageId: row.message_id ?? null,
|
|
79
|
+
transportMeta,
|
|
80
|
+
employee: row.employee ?? null,
|
|
81
|
+
model: row.model ?? null,
|
|
82
|
+
title: row.title ?? null,
|
|
83
|
+
parentSessionId: row.parent_session_id ?? null,
|
|
84
|
+
effortLevel: row.effort_level ?? null,
|
|
85
|
+
status: row.status,
|
|
86
|
+
totalCost: row.total_cost ?? 0,
|
|
87
|
+
totalTurns: row.total_turns ?? 0,
|
|
88
|
+
createdAt: row.created_at,
|
|
89
|
+
lastActivity: row.last_activity,
|
|
90
|
+
lastError: row.last_error ?? null,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function initDb() {
|
|
94
|
+
if (db)
|
|
95
|
+
return db;
|
|
96
|
+
mkdirSync(path.dirname(SESSIONS_DB), { recursive: true });
|
|
97
|
+
db = new Database(SESSIONS_DB);
|
|
98
|
+
db.pragma('journal_mode = WAL');
|
|
99
|
+
db.exec(CREATE_TABLE);
|
|
100
|
+
db.exec(CREATE_MESSAGES_TABLE);
|
|
101
|
+
db.exec(CREATE_MESSAGES_INDEX);
|
|
102
|
+
migrateSessionsSchema(db);
|
|
103
|
+
db.exec(CREATE_SESSION_KEY_INDEX);
|
|
104
|
+
db.exec(`
|
|
105
|
+
CREATE TABLE IF NOT EXISTS queue_items (
|
|
106
|
+
id TEXT PRIMARY KEY,
|
|
107
|
+
session_id TEXT NOT NULL,
|
|
108
|
+
session_key TEXT NOT NULL,
|
|
109
|
+
prompt TEXT NOT NULL,
|
|
110
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
111
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
112
|
+
created_at TEXT NOT NULL,
|
|
113
|
+
started_at TEXT,
|
|
114
|
+
completed_at TEXT
|
|
115
|
+
);
|
|
116
|
+
CREATE INDEX IF NOT EXISTS idx_queue_session
|
|
117
|
+
ON queue_items (session_key, status, position);
|
|
118
|
+
`);
|
|
119
|
+
db.exec(CREATE_FILES_TABLE);
|
|
120
|
+
db.exec(`
|
|
121
|
+
CREATE TABLE IF NOT EXISTS goals (
|
|
122
|
+
id TEXT PRIMARY KEY,
|
|
123
|
+
title TEXT NOT NULL,
|
|
124
|
+
description TEXT,
|
|
125
|
+
status TEXT NOT NULL DEFAULT 'not_started',
|
|
126
|
+
level TEXT NOT NULL DEFAULT 'company',
|
|
127
|
+
parent_id TEXT,
|
|
128
|
+
department TEXT,
|
|
129
|
+
owner TEXT,
|
|
130
|
+
progress INTEGER NOT NULL DEFAULT 0,
|
|
131
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
132
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
133
|
+
FOREIGN KEY (parent_id) REFERENCES goals(id)
|
|
134
|
+
)
|
|
135
|
+
`);
|
|
136
|
+
db.exec(`
|
|
137
|
+
CREATE TABLE IF NOT EXISTS budget_events (
|
|
138
|
+
id TEXT PRIMARY KEY,
|
|
139
|
+
employee TEXT NOT NULL,
|
|
140
|
+
event_type TEXT NOT NULL,
|
|
141
|
+
amount REAL NOT NULL,
|
|
142
|
+
limit_amount REAL NOT NULL,
|
|
143
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
144
|
+
)
|
|
145
|
+
`);
|
|
146
|
+
return db;
|
|
147
|
+
}
|
|
148
|
+
export function migrateSessionsSchema(database) {
|
|
149
|
+
const cols = database.prepare('PRAGMA table_info(sessions)').all();
|
|
150
|
+
const colNames = new Set(cols.map((c) => c.name));
|
|
151
|
+
const missingColumns = [
|
|
152
|
+
['title', 'TEXT'],
|
|
153
|
+
['parent_session_id', 'TEXT'],
|
|
154
|
+
['connector', 'TEXT'],
|
|
155
|
+
['session_key', 'TEXT'],
|
|
156
|
+
['reply_context', 'TEXT'],
|
|
157
|
+
['message_id', 'TEXT'],
|
|
158
|
+
['transport_meta', 'TEXT'],
|
|
159
|
+
['total_cost', 'REAL', '0'],
|
|
160
|
+
['total_turns', 'INTEGER', '0'],
|
|
161
|
+
['effort_level', 'TEXT'],
|
|
162
|
+
];
|
|
163
|
+
for (const [name, type, defaultVal] of missingColumns) {
|
|
164
|
+
if (!colNames.has(name)) {
|
|
165
|
+
const defaultClause = defaultVal !== undefined ? ` DEFAULT ${defaultVal}` : '';
|
|
166
|
+
database.exec(`ALTER TABLE sessions ADD COLUMN ${name} ${type}${defaultClause}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const refreshedCols = database.prepare('PRAGMA table_info(sessions)').all();
|
|
170
|
+
const refreshedNames = new Set(refreshedCols.map((c) => c.name));
|
|
171
|
+
if (refreshedNames.has('session_key')) {
|
|
172
|
+
database.exec(`UPDATE sessions SET session_key = COALESCE(session_key, source_ref) WHERE session_key IS NULL OR session_key = ''`);
|
|
173
|
+
}
|
|
174
|
+
if (refreshedNames.has('connector')) {
|
|
175
|
+
database.exec(`UPDATE sessions SET connector = COALESCE(connector, source) WHERE connector IS NULL OR connector = ''`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function getNextSessionNumber() {
|
|
179
|
+
const db = initDb();
|
|
180
|
+
const row = db.prepare('SELECT COUNT(*) as count FROM sessions').get();
|
|
181
|
+
return row.count + 1;
|
|
182
|
+
}
|
|
183
|
+
function generateTitle(prompt) {
|
|
184
|
+
const num = getNextSessionNumber();
|
|
185
|
+
if (!prompt)
|
|
186
|
+
return `#${num}`;
|
|
187
|
+
const cleaned = prompt.replace(/\n/g, ' ').replace(/@\w+/g, '').replace(/\s+/g, ' ').trim();
|
|
188
|
+
if (!cleaned)
|
|
189
|
+
return `#${num}`;
|
|
190
|
+
const summary = cleaned.slice(0, 30).trim();
|
|
191
|
+
return `#${num} - ${summary}${cleaned.length > 30 ? '...' : ''}`;
|
|
192
|
+
}
|
|
193
|
+
export function createSession(opts) {
|
|
194
|
+
const db = initDb();
|
|
195
|
+
const now = new Date().toISOString();
|
|
196
|
+
const id = uuidv4();
|
|
197
|
+
const title = opts.title ?? generateTitle(opts.prompt);
|
|
198
|
+
const sessionKey = opts.sessionKey ?? opts.sourceRef;
|
|
199
|
+
const connector = opts.connector ?? opts.source;
|
|
200
|
+
const replyContext = opts.replyContext ? JSON.stringify(opts.replyContext) : null;
|
|
201
|
+
const transportMeta = opts.transportMeta ? JSON.stringify(opts.transportMeta) : null;
|
|
202
|
+
const stmt = db.prepare(`
|
|
203
|
+
INSERT INTO sessions (
|
|
204
|
+
id, engine, source, source_ref, connector, session_key, reply_context, message_id, transport_meta,
|
|
205
|
+
employee, model, title, parent_session_id, effort_level, status, created_at, last_activity
|
|
206
|
+
)
|
|
207
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'idle', ?, ?)
|
|
208
|
+
`);
|
|
209
|
+
stmt.run(id, opts.engine, opts.source, opts.sourceRef, connector, sessionKey, replyContext, opts.messageId ?? null, transportMeta, opts.employee ?? null, opts.model ?? null, title, opts.parentSessionId ?? null, opts.effortLevel ?? null, now, now);
|
|
210
|
+
return {
|
|
211
|
+
id,
|
|
212
|
+
engine: opts.engine,
|
|
213
|
+
engineSessionId: null,
|
|
214
|
+
source: opts.source,
|
|
215
|
+
sourceRef: opts.sourceRef,
|
|
216
|
+
connector,
|
|
217
|
+
sessionKey,
|
|
218
|
+
replyContext: opts.replyContext ?? null,
|
|
219
|
+
messageId: opts.messageId ?? null,
|
|
220
|
+
transportMeta: opts.transportMeta ?? null,
|
|
221
|
+
employee: opts.employee ?? null,
|
|
222
|
+
model: opts.model ?? null,
|
|
223
|
+
title,
|
|
224
|
+
parentSessionId: opts.parentSessionId ?? null,
|
|
225
|
+
effortLevel: opts.effortLevel ?? null,
|
|
226
|
+
status: 'idle',
|
|
227
|
+
totalCost: 0,
|
|
228
|
+
totalTurns: 0,
|
|
229
|
+
createdAt: now,
|
|
230
|
+
lastActivity: now,
|
|
231
|
+
lastError: null,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
export function getSession(id) {
|
|
235
|
+
const db = initDb();
|
|
236
|
+
const row = db.prepare('SELECT * FROM sessions WHERE id = ?').get(id);
|
|
237
|
+
return row ? rowToSession(row) : undefined;
|
|
238
|
+
}
|
|
239
|
+
export function getSessionBySourceRef(sourceRef) {
|
|
240
|
+
return getSessionBySessionKey(sourceRef);
|
|
241
|
+
}
|
|
242
|
+
export function getSessionBySessionKey(sessionKey) {
|
|
243
|
+
const db = initDb();
|
|
244
|
+
const row = db.prepare('SELECT * FROM sessions WHERE session_key = ? ORDER BY last_activity DESC LIMIT 1').get(sessionKey);
|
|
245
|
+
return row ? rowToSession(row) : undefined;
|
|
246
|
+
}
|
|
247
|
+
export function updateSession(id, updates) {
|
|
248
|
+
const db = initDb();
|
|
249
|
+
const sets = [];
|
|
250
|
+
const values = [];
|
|
251
|
+
if (updates.engine !== undefined) {
|
|
252
|
+
sets.push('engine = ?');
|
|
253
|
+
values.push(updates.engine);
|
|
254
|
+
}
|
|
255
|
+
if (updates.engineSessionId !== undefined) {
|
|
256
|
+
sets.push('engine_session_id = ?');
|
|
257
|
+
values.push(updates.engineSessionId);
|
|
258
|
+
}
|
|
259
|
+
if (updates.status !== undefined) {
|
|
260
|
+
sets.push('status = ?');
|
|
261
|
+
values.push(updates.status);
|
|
262
|
+
}
|
|
263
|
+
if (updates.model !== undefined) {
|
|
264
|
+
sets.push('model = ?');
|
|
265
|
+
values.push(updates.model);
|
|
266
|
+
}
|
|
267
|
+
if (updates.replyContext !== undefined) {
|
|
268
|
+
sets.push('reply_context = ?');
|
|
269
|
+
values.push(updates.replyContext ? JSON.stringify(updates.replyContext) : null);
|
|
270
|
+
}
|
|
271
|
+
if (updates.messageId !== undefined) {
|
|
272
|
+
sets.push('message_id = ?');
|
|
273
|
+
values.push(updates.messageId);
|
|
274
|
+
}
|
|
275
|
+
if (updates.transportMeta !== undefined) {
|
|
276
|
+
sets.push('transport_meta = ?');
|
|
277
|
+
values.push(updates.transportMeta ? JSON.stringify(updates.transportMeta) : null);
|
|
278
|
+
}
|
|
279
|
+
if (updates.lastActivity !== undefined) {
|
|
280
|
+
sets.push('last_activity = ?');
|
|
281
|
+
values.push(updates.lastActivity);
|
|
282
|
+
}
|
|
283
|
+
if (updates.lastError !== undefined) {
|
|
284
|
+
sets.push('last_error = ?');
|
|
285
|
+
values.push(updates.lastError);
|
|
286
|
+
}
|
|
287
|
+
if (updates.title !== undefined) {
|
|
288
|
+
sets.push('title = ?');
|
|
289
|
+
values.push(updates.title);
|
|
290
|
+
}
|
|
291
|
+
if (sets.length === 0)
|
|
292
|
+
return getSession(id);
|
|
293
|
+
values.push(id);
|
|
294
|
+
db.prepare(`UPDATE sessions SET ${sets.join(', ')} WHERE id = ?`).run(...values);
|
|
295
|
+
return getSession(id);
|
|
296
|
+
}
|
|
297
|
+
export function listSessions(filter) {
|
|
298
|
+
const db = initDb();
|
|
299
|
+
const conditions = [];
|
|
300
|
+
const values = [];
|
|
301
|
+
if (filter?.status) {
|
|
302
|
+
conditions.push('status = ?');
|
|
303
|
+
values.push(filter.status);
|
|
304
|
+
}
|
|
305
|
+
if (filter?.source) {
|
|
306
|
+
conditions.push('source = ?');
|
|
307
|
+
values.push(filter.source);
|
|
308
|
+
}
|
|
309
|
+
if (filter?.engine) {
|
|
310
|
+
conditions.push('engine = ?');
|
|
311
|
+
values.push(filter.engine);
|
|
312
|
+
}
|
|
313
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
314
|
+
const rows = db.prepare(`SELECT * FROM sessions ${where} ORDER BY last_activity DESC`).all(...values);
|
|
315
|
+
return rows.map(rowToSession);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Mark any sessions stuck in "running" status as "interrupted".
|
|
319
|
+
* Called on gateway startup — if the gateway is starting, no sessions can actually be running.
|
|
320
|
+
* Sessions with an engine_session_id can be resumed via the Claude --resume flag.
|
|
321
|
+
*/
|
|
322
|
+
export function recoverStaleSessions() {
|
|
323
|
+
const db = initDb();
|
|
324
|
+
const now = new Date().toISOString();
|
|
325
|
+
const result = db.prepare("UPDATE sessions SET status = 'interrupted', last_activity = ?, last_error = 'Interrupted: gateway restarted while session was running' WHERE status = 'running'").run(now);
|
|
326
|
+
return result.changes;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Get sessions that were interrupted by a gateway restart and can be resumed.
|
|
330
|
+
* A session is resumable if it has an engine_session_id (Claude's internal session ID).
|
|
331
|
+
*/
|
|
332
|
+
export function getInterruptedSessions() {
|
|
333
|
+
const db = initDb();
|
|
334
|
+
const rows = db.prepare("SELECT * FROM sessions WHERE status = 'interrupted' AND engine_session_id IS NOT NULL ORDER BY last_activity DESC").all();
|
|
335
|
+
return rows.map(rowToSession);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Accumulate cost and turns for a session (called after each engine run).
|
|
339
|
+
*/
|
|
340
|
+
export function accumulateSessionCost(id, cost, turns) {
|
|
341
|
+
const db = initDb();
|
|
342
|
+
db.prepare('UPDATE sessions SET total_cost = total_cost + ?, total_turns = total_turns + ? WHERE id = ?').run(cost, turns, id);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Duplicate a session and all its messages, returning a new session with a fresh ID.
|
|
346
|
+
* Does NOT fork the engine session — the caller handles that separately.
|
|
347
|
+
*/
|
|
348
|
+
export function duplicateSession(sourceId, newTitle) {
|
|
349
|
+
const db = initDb();
|
|
350
|
+
const source = getSession(sourceId);
|
|
351
|
+
if (!source)
|
|
352
|
+
throw new Error(`Session ${sourceId} not found`);
|
|
353
|
+
if (!source.engineSessionId)
|
|
354
|
+
throw new Error(`Session ${sourceId} has no engine session ID — cannot duplicate`);
|
|
355
|
+
const now = new Date().toISOString();
|
|
356
|
+
const newId = uuidv4();
|
|
357
|
+
const title = newTitle ?? `Copy of ${source.title || sourceId.slice(0, 8)}`;
|
|
358
|
+
const newSessionKey = `web:${Date.now()}`;
|
|
359
|
+
// Copy session + messages in a single transaction for consistency
|
|
360
|
+
const messages = db.prepare('SELECT role, content, timestamp FROM messages WHERE session_id = ? ORDER BY timestamp ASC').all(sourceId);
|
|
361
|
+
const txn = db.transaction(() => {
|
|
362
|
+
db.prepare(`
|
|
363
|
+
INSERT INTO sessions (
|
|
364
|
+
id, engine, engine_session_id, source, source_ref, connector, session_key,
|
|
365
|
+
reply_context, message_id, transport_meta,
|
|
366
|
+
employee, model, title, parent_session_id, effort_level, status,
|
|
367
|
+
total_cost, total_turns, created_at, last_activity
|
|
368
|
+
)
|
|
369
|
+
VALUES (?, ?, NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, ?, 'idle', 0, 0, ?, ?)
|
|
370
|
+
`).run(newId, source.engine, source.source, source.sourceRef, source.connector, newSessionKey, source.replyContext ? JSON.stringify(source.replyContext) : null, source.messageId, source.transportMeta ? JSON.stringify(source.transportMeta) : null, source.employee, source.model, title, source.effortLevel, now, now);
|
|
371
|
+
const insertMsg = db.prepare('INSERT INTO messages (id, session_id, role, content, timestamp) VALUES (?, ?, ?, ?, ?)');
|
|
372
|
+
for (const msg of messages) {
|
|
373
|
+
insertMsg.run(uuidv4(), newId, msg.role, msg.content, msg.timestamp);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
txn();
|
|
377
|
+
const newSession = getSession(newId);
|
|
378
|
+
return { session: newSession, messageCount: messages.length };
|
|
379
|
+
}
|
|
380
|
+
export function deleteSession(id) {
|
|
381
|
+
const db = initDb();
|
|
382
|
+
db.prepare('DELETE FROM messages WHERE session_id = ?').run(id);
|
|
383
|
+
const result = db.prepare('DELETE FROM sessions WHERE id = ?').run(id);
|
|
384
|
+
return result.changes > 0;
|
|
385
|
+
}
|
|
386
|
+
export function deleteSessions(ids) {
|
|
387
|
+
if (ids.length === 0)
|
|
388
|
+
return 0;
|
|
389
|
+
const db = initDb();
|
|
390
|
+
const placeholders = ids.map(() => '?').join(',');
|
|
391
|
+
const txn = db.transaction(() => {
|
|
392
|
+
db.prepare(`DELETE FROM messages WHERE session_id IN (${placeholders})`).run(...ids);
|
|
393
|
+
const result = db.prepare(`DELETE FROM sessions WHERE id IN (${placeholders})`).run(...ids);
|
|
394
|
+
return result.changes;
|
|
395
|
+
});
|
|
396
|
+
return txn();
|
|
397
|
+
}
|
|
398
|
+
export function insertMessage(sessionId, role, content) {
|
|
399
|
+
const db = initDb();
|
|
400
|
+
const id = uuidv4();
|
|
401
|
+
db.prepare('INSERT INTO messages (id, session_id, role, content, timestamp) VALUES (?, ?, ?, ?, ?)').run(id, sessionId, role, content, Date.now());
|
|
402
|
+
}
|
|
403
|
+
export function getMessages(sessionId) {
|
|
404
|
+
const db = initDb();
|
|
405
|
+
return db.prepare('SELECT id, role, content, timestamp FROM messages WHERE session_id = ? ORDER BY timestamp ASC').all(sessionId);
|
|
406
|
+
}
|
|
407
|
+
export function enqueueQueueItem(sessionId, sessionKey, prompt) {
|
|
408
|
+
const db = initDb();
|
|
409
|
+
const id = randomUUID();
|
|
410
|
+
const position = db.prepare("SELECT COALESCE(MAX(position), 0) + 1 as pos FROM queue_items WHERE session_key = ? AND status = 'pending'").get(sessionKey).pos;
|
|
411
|
+
db.prepare("INSERT INTO queue_items (id, session_id, session_key, prompt, status, position, created_at) VALUES (?, ?, ?, ?, 'pending', ?, ?)").run(id, sessionId, sessionKey, prompt, position, new Date().toISOString());
|
|
412
|
+
return id;
|
|
413
|
+
}
|
|
414
|
+
export function markQueueItemRunning(itemId) {
|
|
415
|
+
const db = initDb();
|
|
416
|
+
db.prepare("UPDATE queue_items SET status = 'running', started_at = ? WHERE id = ?")
|
|
417
|
+
.run(new Date().toISOString(), itemId);
|
|
418
|
+
}
|
|
419
|
+
export function markQueueItemCompleted(itemId) {
|
|
420
|
+
const db = initDb();
|
|
421
|
+
db.prepare("UPDATE queue_items SET status = 'completed', completed_at = ? WHERE id = ?")
|
|
422
|
+
.run(new Date().toISOString(), itemId);
|
|
423
|
+
}
|
|
424
|
+
export function cancelQueueItem(itemId) {
|
|
425
|
+
const db = initDb();
|
|
426
|
+
const result = db.prepare("UPDATE queue_items SET status = 'cancelled' WHERE id = ? AND status = 'pending'").run(itemId);
|
|
427
|
+
return result.changes > 0;
|
|
428
|
+
}
|
|
429
|
+
export function getQueueItems(sessionKey) {
|
|
430
|
+
const db = initDb();
|
|
431
|
+
return db.prepare("SELECT id, session_id as sessionId, session_key as sessionKey, prompt, status, position, created_at as createdAt, started_at as startedAt, completed_at as completedAt FROM queue_items WHERE session_key = ? AND status IN ('pending', 'running') ORDER BY position ASC").all(sessionKey);
|
|
432
|
+
}
|
|
433
|
+
export function cancelAllPendingQueueItems(sessionKey) {
|
|
434
|
+
const db = initDb();
|
|
435
|
+
const result = db.prepare("UPDATE queue_items SET status = 'cancelled' WHERE session_key = ? AND status = 'pending'").run(sessionKey);
|
|
436
|
+
return result.changes;
|
|
437
|
+
}
|
|
438
|
+
export function recoverStaleQueueItems() {
|
|
439
|
+
const db = initDb();
|
|
440
|
+
// If the gateway restarts mid-run, move any "running" items back to "pending"
|
|
441
|
+
// so they can be replayed. Do NOT cancel pending work.
|
|
442
|
+
const result = db.prepare("UPDATE queue_items SET status = 'pending', started_at = NULL WHERE status = 'running'").run();
|
|
443
|
+
return result.changes;
|
|
444
|
+
}
|
|
445
|
+
export function listAllPendingQueueItems() {
|
|
446
|
+
const db = initDb();
|
|
447
|
+
return db.prepare("SELECT id, session_id as sessionId, session_key as sessionKey, prompt, status, position, created_at as createdAt, started_at as startedAt, completed_at as completedAt FROM queue_items WHERE status = 'pending' ORDER BY created_at ASC, position ASC").all();
|
|
448
|
+
}
|
|
449
|
+
function rowToFileMeta(row) {
|
|
450
|
+
return {
|
|
451
|
+
id: row.id,
|
|
452
|
+
filename: row.filename,
|
|
453
|
+
size: row.size,
|
|
454
|
+
mimetype: row.mimetype ?? null,
|
|
455
|
+
path: row.path ?? null,
|
|
456
|
+
createdAt: row.created_at,
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
export function insertFile(meta) {
|
|
460
|
+
const db = initDb();
|
|
461
|
+
const now = new Date().toISOString();
|
|
462
|
+
db.prepare('INSERT INTO files (id, filename, size, mimetype, path, created_at) VALUES (?, ?, ?, ?, ?, ?)').run(meta.id, meta.filename, meta.size, meta.mimetype, meta.path, now);
|
|
463
|
+
return { ...meta, createdAt: now };
|
|
464
|
+
}
|
|
465
|
+
export function getFile(id) {
|
|
466
|
+
const db = initDb();
|
|
467
|
+
const row = db.prepare('SELECT * FROM files WHERE id = ?').get(id);
|
|
468
|
+
return row ? rowToFileMeta(row) : undefined;
|
|
469
|
+
}
|
|
470
|
+
export function listFiles() {
|
|
471
|
+
const db = initDb();
|
|
472
|
+
const rows = db.prepare('SELECT * FROM files ORDER BY created_at DESC').all();
|
|
473
|
+
return rows.map(rowToFileMeta);
|
|
474
|
+
}
|
|
475
|
+
export function deleteFile(id) {
|
|
476
|
+
const db = initDb();
|
|
477
|
+
const result = db.prepare('DELETE FROM files WHERE id = ?').run(id);
|
|
478
|
+
return result.changes > 0;
|
|
479
|
+
}
|
|
480
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/sessions/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/sessions/registry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import test from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import Database from "better-sqlite3";
|
|
4
|
+
import { migrateSessionsSchema } from "./registry.js";
|
|
5
|
+
test("migrateSessionsSchema upgrades an old sessions table before session_key usage", () => {
|
|
6
|
+
const db = new Database(":memory:");
|
|
7
|
+
db.exec(`
|
|
8
|
+
CREATE TABLE sessions (
|
|
9
|
+
id TEXT PRIMARY KEY,
|
|
10
|
+
engine TEXT NOT NULL,
|
|
11
|
+
engine_session_id TEXT,
|
|
12
|
+
source TEXT NOT NULL,
|
|
13
|
+
source_ref TEXT NOT NULL,
|
|
14
|
+
employee TEXT,
|
|
15
|
+
model TEXT,
|
|
16
|
+
status TEXT DEFAULT 'idle',
|
|
17
|
+
created_at TEXT NOT NULL,
|
|
18
|
+
last_activity TEXT NOT NULL,
|
|
19
|
+
last_error TEXT
|
|
20
|
+
)
|
|
21
|
+
`);
|
|
22
|
+
db.exec(`
|
|
23
|
+
INSERT INTO sessions (
|
|
24
|
+
id, engine, engine_session_id, source, source_ref, employee, model, status, created_at, last_activity, last_error
|
|
25
|
+
) VALUES (
|
|
26
|
+
's1', 'claude', NULL, 'slack', 'slack:C123', NULL, NULL, 'idle', '2026-03-10T00:00:00.000Z', '2026-03-10T00:00:00.000Z', NULL
|
|
27
|
+
)
|
|
28
|
+
`);
|
|
29
|
+
migrateSessionsSchema(db);
|
|
30
|
+
const cols = db.prepare("PRAGMA table_info(sessions)").all();
|
|
31
|
+
const names = new Set(cols.map((col) => col.name));
|
|
32
|
+
assert.equal(names.has("session_key"), true);
|
|
33
|
+
assert.equal(names.has("connector"), true);
|
|
34
|
+
assert.equal(names.has("reply_context"), true);
|
|
35
|
+
assert.equal(names.has("message_id"), true);
|
|
36
|
+
assert.equal(names.has("transport_meta"), true);
|
|
37
|
+
const row = db.prepare("SELECT session_key, connector FROM sessions WHERE id = 's1'").get();
|
|
38
|
+
assert.equal(row.session_key, "slack:C123");
|
|
39
|
+
assert.equal(row.connector, "slack");
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/sessions/registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;IACzF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAcP,CAAC,CAAC;IACH,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IAEH,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAC;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,EAGxF,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rateLimit.test.d.ts","sourceRoot":"","sources":["../../../../src/shared/__tests__/rateLimit.test.ts"],"names":[],"mappings":""}
|