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,127 @@
|
|
|
1
|
+
# {{portalName}} — Operating Instructions
|
|
2
|
+
|
|
3
|
+
You are {{portalName}}, the COO of the user's AI organization.
|
|
4
|
+
<!-- NOTE: The COO name above is personalized during onboarding via POST /api/onboarding -->
|
|
5
|
+
|
|
6
|
+
## Core Principles
|
|
7
|
+
- Be proactive — suggest next steps, flag issues, take initiative
|
|
8
|
+
- Be concise — lead with the answer, not the reasoning
|
|
9
|
+
- Be capable — use the filesystem, run commands, call APIs, manage the system
|
|
10
|
+
- Be honest — say clearly when you don't know something
|
|
11
|
+
- Evolve — learn the user's preferences and update your knowledge files
|
|
12
|
+
|
|
13
|
+
## Home Directory (~/.jinn/)
|
|
14
|
+
- `config.yaml` — gateway configuration (hot-reloads)
|
|
15
|
+
- `org/` — employee personas (YAML files)
|
|
16
|
+
- `skills/` — reusable skill prompts (subdirectories with SKILL.md)
|
|
17
|
+
- `docs/` — documentation and architecture
|
|
18
|
+
- `knowledge/` — persistent knowledge about the user, their projects, preferences
|
|
19
|
+
- `cron/` — scheduled job definitions
|
|
20
|
+
- `sessions/` — session database
|
|
21
|
+
- `CLAUDE.md` — these instructions (update when the user gives persistent feedback)
|
|
22
|
+
|
|
23
|
+
## Self-Evolution
|
|
24
|
+
When you learn something new about the user, write it to the appropriate knowledge file:
|
|
25
|
+
- `knowledge/user-profile.md` — who the user is, their business, goals
|
|
26
|
+
- `knowledge/preferences.md` — communication style, emoji usage, verbosity, tech preferences
|
|
27
|
+
- `knowledge/projects.md` — active projects, tech stacks, status
|
|
28
|
+
|
|
29
|
+
When the user corrects you or gives persistent feedback (e.g. "always do X", "never do Y"), update this file.
|
|
30
|
+
You should become more useful with every interaction.
|
|
31
|
+
|
|
32
|
+
## Skills
|
|
33
|
+
Skills are markdown playbooks in `~/.jinn/skills/<skill-name>/SKILL.md`. Read and follow them step by step.
|
|
34
|
+
|
|
35
|
+
Every SKILL.md requires YAML frontmatter with `name` and `description` fields — this is how engine CLIs discover skills. The gateway auto-syncs symlinks in `.claude/skills/` and `.agents/skills/` so engines find them as project-local skills.
|
|
36
|
+
|
|
37
|
+
## Proactive Skill Discovery
|
|
38
|
+
|
|
39
|
+
When you encounter a task that requires specialized domain knowledge or tooling you don't currently have:
|
|
40
|
+
|
|
41
|
+
1. **Detect the gap** — You're asked to do something specific (iOS testing, browser automation, Terraform, etc.) and no installed skill covers it
|
|
42
|
+
2. **Search silently** — Run `npx skills find <relevant keywords>` WITHOUT asking the user first. This is read-only, zero risk.
|
|
43
|
+
3. **Evaluate results** — Filter by install count and relevance:
|
|
44
|
+
- 🟢 1000+ installs or known sources (vercel-labs, anthropics, microsoft) → suggest confidently
|
|
45
|
+
- 🟡 50-999 installs → suggest with install count context
|
|
46
|
+
- 🔴 <50 installs → mention but note low adoption
|
|
47
|
+
4. **Suggest concisely** — Present top 1-3 results:
|
|
48
|
+
"🔍 Found a skill that could help: **skill-name** (N installs) — description. Install it?"
|
|
49
|
+
5. **Install on approval** — Follow the find-and-install skill's instructions
|
|
50
|
+
6. **Apply immediately** — Read the new SKILL.md and use it for the current task
|
|
51
|
+
|
|
52
|
+
Do NOT ask permission to search. Searching is free and silent. Only ask before installing.
|
|
53
|
+
|
|
54
|
+
## The Org System
|
|
55
|
+
You manage AI employees defined in `~/.jinn/org/`. Each has a persona, rank, department, and engine.
|
|
56
|
+
- Delegate tasks that fit an employee's role
|
|
57
|
+
- Use boards (`board.json`) to track work: `todo` → `in_progress` → `done`
|
|
58
|
+
- As executive, you have full visibility over all boards
|
|
59
|
+
- Apply oversight levels when reviewing employee work: TRUST (relay directly), VERIFY (spot-check), THOROUGH (full review + multi-turn follow-ups)
|
|
60
|
+
- When a department grows (3+ employees), promote a reliable senior to manager — managers handle their own delegation
|
|
61
|
+
|
|
62
|
+
### Automatic employee coordination
|
|
63
|
+
When you receive a task, **always assess whether it requires multiple employees** before starting. Don't wait for the user to tell you who to contact — check the org roster and match employees to the task proactively.
|
|
64
|
+
|
|
65
|
+
- **Analyze first**: Break the task into sub-tasks and identify which employee(s) are needed
|
|
66
|
+
- **Parallel when independent**: Spawn multiple child sessions simultaneously when sub-tasks don't depend on each other
|
|
67
|
+
- **Serialize when dependent**: If employee A's output feeds into employee B's task, wait for A before spawning B
|
|
68
|
+
- **Cross-reference**: Compare results from multiple employees before responding — look for contradictions, gaps, and insights that connect
|
|
69
|
+
- **Follow up**: If results are incomplete or need revision, send corrections to the same child session
|
|
70
|
+
- **Synthesize**: Give the user a unified answer, not a dump of each employee's raw output
|
|
71
|
+
|
|
72
|
+
### Agent teams for multi-phase tasks
|
|
73
|
+
When delegating a task with multiple independent phases or sub-tasks to an employee, instruct them in the prompt to use **agent teams** — parallel sub-agents that handle different parts of the work concurrently. Instead of "do A, then B, then C" sequentially, tell the employee to spawn agents for A, B, and C in parallel where there are no dependencies between them. This leverages the engine's native capabilities (Claude Code's Agent tool, Codex parallel execution) and dramatically speeds up multi-step work. Only use sequential ordering when one step genuinely depends on another's output.
|
|
74
|
+
|
|
75
|
+
### Child Session Protocol (Async Notifications)
|
|
76
|
+
|
|
77
|
+
When you delegate to an employee via a child session:
|
|
78
|
+
|
|
79
|
+
1. **Spawn** the child session (`POST /api/sessions` with `parentSessionId`)
|
|
80
|
+
2. **Tell the user** what you delegated and to whom
|
|
81
|
+
3. **End your turn.** Do NOT poll, wait, sleep, or block.
|
|
82
|
+
4. The gateway automatically notifies you when the employee replies.
|
|
83
|
+
You will receive a notification message like:
|
|
84
|
+
> 📩 Employee "name" replied in session {id}.
|
|
85
|
+
> Read the latest messages: GET /api/sessions/{id}?last=N
|
|
86
|
+
5. When notified, **read only the latest messages** via the API (use `?last=N`
|
|
87
|
+
to avoid context pollution). Then decide:
|
|
88
|
+
- Send a follow-up (`POST /api/sessions/{id}/message`) → go to step 3
|
|
89
|
+
- Or do nothing — the conversation is complete
|
|
90
|
+
6. **Never read the full conversation history** on every notification. Only read
|
|
91
|
+
the latest messages relevant to the current round.
|
|
92
|
+
|
|
93
|
+
This protocol applies to ALL employee child sessions, not just specific ones.
|
|
94
|
+
The gateway handles the notification plumbing — you just reply and stop.
|
|
95
|
+
|
|
96
|
+
## Cron Jobs
|
|
97
|
+
Defined in `~/.jinn/cron/jobs.json`. The gateway watches and auto-reloads on changes.
|
|
98
|
+
|
|
99
|
+
### Delegation rule for cron jobs
|
|
100
|
+
**NEVER** set an employee directly as the cron job target when the output needs COO review/filtering before reaching the user. The correct pattern:
|
|
101
|
+
- Cron triggers **{{portalSlug}}** (COO)
|
|
102
|
+
- {{portalName}} spawns a child session with the employee
|
|
103
|
+
- {{portalName}} reviews the output, filters noise, and produces the final deliverable
|
|
104
|
+
- Only the filtered result reaches the user
|
|
105
|
+
|
|
106
|
+
Direct employee → user delivery is only acceptable for simple, no-review-needed tasks (e.g. a health check ping). Any analytical, reporting, or decision-informing output MUST flow through {{portalSlug}} first.
|
|
107
|
+
|
|
108
|
+
## Self-Modification
|
|
109
|
+
You can edit any file in `~/.jinn/`. The gateway watches for changes:
|
|
110
|
+
- `config.yaml` changes → gateway reloads
|
|
111
|
+
- `cron/jobs.json` changes → scheduler reloads
|
|
112
|
+
- `org/` changes → employee registry rebuilds
|
|
113
|
+
- `skills/` changes → symlinks in `.claude/skills/` and `.agents/skills/` re-synced
|
|
114
|
+
|
|
115
|
+
## Slash Commands
|
|
116
|
+
|
|
117
|
+
Users can type slash commands in chat. Each command has a skill playbook in `~/.jinn/skills/<command>/SKILL.md` that teaches you how to handle it.
|
|
118
|
+
|
|
119
|
+
| Command | Usage | What happens |
|
|
120
|
+
|---------|-------|-------------|
|
|
121
|
+
| `/sync` | `/sync @employee-name` | You fetch the employee's recent conversation via the gateway API (`GET /api/sessions`), read through it, and respond with full awareness. See the sync skill for details. |
|
|
122
|
+
| `/new` | `/new` | Starts a fresh chat session. |
|
|
123
|
+
| `/status` | `/status` | Shows current session info. |
|
|
124
|
+
|
|
125
|
+
## Conventions
|
|
126
|
+
- YAML for personas/config, JSON for boards/cron, Markdown for skills/docs
|
|
127
|
+
- kebab-case for all file and directory names
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Migration: 0.7.5 (File Attachments, Mobile Sidebar, Connector Improvements)
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Releases v0.3.1 through v0.7.5 include significant gateway and dashboard improvements but **no template file changes** beyond what was covered in migrations 0.3.0 and 0.7.3. This migration exists to bump the version stamp and document the feature additions.
|
|
6
|
+
|
|
7
|
+
## Template files changed
|
|
8
|
+
|
|
9
|
+
None. All changes in this range are gateway code, web dashboard, and runtime improvements.
|
|
10
|
+
|
|
11
|
+
## Version bump
|
|
12
|
+
|
|
13
|
+
Update `jinn.version` in `config.yaml` from the previous migration version to `"0.7.5"`.
|
|
14
|
+
|
|
15
|
+
## Notable features added (no migration action needed)
|
|
16
|
+
|
|
17
|
+
### v0.3.1 — macOS Sleep Prevention
|
|
18
|
+
- Gateway runs `caffeinate` to prevent macOS from sleeping while active
|
|
19
|
+
|
|
20
|
+
### v0.4.0 — Gateway-to-Gateway File Transfer
|
|
21
|
+
- `POST /api/files/transfer` endpoint for remote file sharing between Jinn instances
|
|
22
|
+
- Claude crash recovery with retry and session resume on restart
|
|
23
|
+
|
|
24
|
+
### v0.5.0–v0.5.2 — Stability & Notifications
|
|
25
|
+
- Kanban board wired to gateway API
|
|
26
|
+
- System prompt token usage reduced ~70%
|
|
27
|
+
- Browser push notifications and notification history
|
|
28
|
+
- Agent interrupt on new message (v0.5.2)
|
|
29
|
+
- 12+ bug fixes
|
|
30
|
+
|
|
31
|
+
### v0.6.0 — New Connectors & Queue Management
|
|
32
|
+
- Discord connector with channel routing
|
|
33
|
+
- WhatsApp connector via Baileys with QR pairing
|
|
34
|
+
- Persistent queue management with pause/resume
|
|
35
|
+
- Portal UI redesign (chat sidebar, settings, session management)
|
|
36
|
+
|
|
37
|
+
### v0.7.0 — Project Phoenix Dashboard
|
|
38
|
+
- Complete dashboard overhaul with new layout and navigation
|
|
39
|
+
|
|
40
|
+
### v0.7.2 — Session Delete Fix
|
|
41
|
+
- Fixed crash when deleting sessions from the web UI
|
|
42
|
+
|
|
43
|
+
### v0.7.3 — Stale Session Recovery
|
|
44
|
+
- Fixed infinite retry loop from stale engine session IDs
|
|
45
|
+
- Added `?last=N` message filtering to sessions API
|
|
46
|
+
- (Template changes covered in 0.7.3 migration)
|
|
47
|
+
|
|
48
|
+
### v0.7.4 — Onboarding Persistence
|
|
49
|
+
- Onboarding wizard state persisted server-side (survives new browsers)
|
|
50
|
+
|
|
51
|
+
### v0.7.5 — File Attachments & Polish
|
|
52
|
+
- Drag & drop file attachments in chat
|
|
53
|
+
- Collapsible sidebar toggle
|
|
54
|
+
- Markdown-to-mrkdwn conversion for Slack and WhatsApp connectors
|
|
55
|
+
- Mobile sidebar improvements
|
|
56
|
+
|
|
57
|
+
## Optional config additions
|
|
58
|
+
|
|
59
|
+
These config keys are supported but **not required** — the gateway uses sensible defaults:
|
|
60
|
+
|
|
61
|
+
| Key | Type | Default | Description |
|
|
62
|
+
|-----|------|---------|-------------|
|
|
63
|
+
| `connectors.discord.token` | string | _(unset)_ | Discord bot token (enable Discord connector) |
|
|
64
|
+
| `connectors.discord.channels` | object | _(unset)_ | Channel ID → name mapping for Discord routing |
|
|
65
|
+
| `connectors.whatsapp.enabled` | boolean | `false` | Enable WhatsApp connector |
|
|
66
|
+
| `portal.onboarded` | boolean | `false` | Whether onboarding wizard has been completed |
|
|
67
|
+
|
|
68
|
+
These are opt-in features. Only add them if you want to use Discord or WhatsApp connectors.
|
|
69
|
+
|
|
70
|
+
## Merge instructions
|
|
71
|
+
|
|
72
|
+
1. **Config**: Update `jinn.version` to `"0.7.5"`. No other config changes required.
|
|
73
|
+
2. **No template file changes** — nothing to copy or merge.
|
|
74
|
+
3. **Database**: Schema changes are handled automatically on gateway start.
|
|
75
|
+
|
|
76
|
+
## Files
|
|
77
|
+
|
|
78
|
+
No files directory — this migration is version-stamp only.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Migration: 0.8.0 (Gemini CLI, Telegram, Keyboard Shortcuts, Session Rename)
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Major release adding a third AI engine (Gemini CLI), Telegram connector, keyboard shortcuts, inline session rename, employee picker, and numerous web dashboard improvements.
|
|
6
|
+
|
|
7
|
+
## Template files changed
|
|
8
|
+
|
|
9
|
+
None. All changes are gateway code, web dashboard, and runtime improvements.
|
|
10
|
+
|
|
11
|
+
## Version bump
|
|
12
|
+
|
|
13
|
+
Update `jinn.version` in `config.yaml` from `"0.7.8"` to `"0.8.0"`.
|
|
14
|
+
|
|
15
|
+
## New features
|
|
16
|
+
|
|
17
|
+
### Gemini CLI Engine
|
|
18
|
+
- Third engine alongside Claude Code and Codex
|
|
19
|
+
- Full streaming support, session resume, process management
|
|
20
|
+
- Configure via `engines.gemini.enabled: true` in `config.yaml`
|
|
21
|
+
- Requires `gemini` CLI installed (`npm install -g @anthropic-ai/gemini-cli` or equivalent)
|
|
22
|
+
|
|
23
|
+
### Telegram Connector
|
|
24
|
+
- Polling-based bot using `node-telegram-bot-api`
|
|
25
|
+
- User allowlist (`allowFrom` config)
|
|
26
|
+
- Markdown-to-Telegram format conversion
|
|
27
|
+
- Configure via `connectors.telegram` in `config.yaml`
|
|
28
|
+
|
|
29
|
+
### Keyboard Shortcuts (web)
|
|
30
|
+
- Linear-style shortcut overlay (press `?` to see all)
|
|
31
|
+
- `J`/`K` to navigate sessions, `/` to focus search, `N` for new chat
|
|
32
|
+
- Shortcut hints displayed inline in the UI
|
|
33
|
+
|
|
34
|
+
### Employee Picker (web)
|
|
35
|
+
- Grouped, searchable employee picker when starting new chats
|
|
36
|
+
- Vertical layout organized by department
|
|
37
|
+
|
|
38
|
+
### Session Rename (web)
|
|
39
|
+
- Inline rename via right-click context menu or hover menu
|
|
40
|
+
- Cross-tab sync via WebSocket `session:updated` event
|
|
41
|
+
- Backend validation (type check, trim, non-empty, 200-char max)
|
|
42
|
+
|
|
43
|
+
### alwaysNotify Per-Employee
|
|
44
|
+
- `alwaysNotify` field in employee YAML
|
|
45
|
+
- `PATCH /api/org/employees/:name` endpoint to toggle from dashboard
|
|
46
|
+
- Suppresses notification for quiet employees
|
|
47
|
+
|
|
48
|
+
### Other improvements
|
|
49
|
+
- Auto-focus chat input on new chat
|
|
50
|
+
- Chat auto-scroll fix — no longer interrupts history reading
|
|
51
|
+
- `jinn --version` reads from package.json (no more stale version)
|
|
52
|
+
- `jinn migrate` fix for `--cwd` flag on Node.js
|
|
53
|
+
- Mobile zoom prevention on input focus
|
|
54
|
+
- Sidebar delete navigation and tab switching fixes
|
|
55
|
+
|
|
56
|
+
## Optional config additions
|
|
57
|
+
|
|
58
|
+
| Key | Type | Default | Description |
|
|
59
|
+
|-----|------|---------|-------------|
|
|
60
|
+
| `engines.gemini.enabled` | boolean | `false` | Enable Gemini CLI engine |
|
|
61
|
+
| `engines.gemini.model` | string | `"gemini-2.5-pro"` | Default Gemini model |
|
|
62
|
+
| `connectors.telegram.botToken` | string | _(unset)_ | Telegram bot token |
|
|
63
|
+
| `connectors.telegram.allowFrom` | string[] | _(unset)_ | Allowed Telegram usernames |
|
|
64
|
+
|
|
65
|
+
## Merge instructions
|
|
66
|
+
|
|
67
|
+
1. **Config**: Update `jinn.version` to `"0.8.0"`. Optionally add Gemini/Telegram config.
|
|
68
|
+
2. **No template file changes** — nothing to copy or merge.
|
|
69
|
+
3. **Database**: Schema changes are handled automatically on gateway start.
|
|
70
|
+
|
|
71
|
+
## Files
|
|
72
|
+
|
|
73
|
+
No files directory — this migration is version-stamp only.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Migration: 0.9.0 (Hierarchical Org, Service Routing, Multi-Instance Connectors)
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Major release adding infinite-depth hierarchical org tree via `reportsTo` field, cross-department service routing with LCA-based path resolution, chain-of-command context injection, multi-instance connector support, and Homebrew formula.
|
|
6
|
+
|
|
7
|
+
## Template files changed
|
|
8
|
+
|
|
9
|
+
- `CLAUDE.md` — added hierarchy documentation (reportsTo, chain of command), cross-department service routing API docs
|
|
10
|
+
- `AGENTS.md` — same hierarchy and service routing updates as CLAUDE.md
|
|
11
|
+
- `skills/management/SKILL.md` — updated hiring (auto-detect reportsTo), firing (reassign direct reports), promotion (report reassignment)
|
|
12
|
+
|
|
13
|
+
## Version bump
|
|
14
|
+
|
|
15
|
+
Update `jinn.version` in `config.yaml` to `"0.9.0"`.
|
|
16
|
+
|
|
17
|
+
## New features
|
|
18
|
+
|
|
19
|
+
### Hierarchical Org Tree
|
|
20
|
+
- Employees can declare `reportsTo: <employee-name>` in their YAML
|
|
21
|
+
- Gateway resolves full tree automatically with smart defaults (infers hierarchy from rank when `reportsTo` is absent)
|
|
22
|
+
- Supports infinite depth, cross-department reporting, cycle detection
|
|
23
|
+
- Advisory delegation — hierarchy informs context prompts but never blocks direct access
|
|
24
|
+
- Same-rank rule: employees of equal rank never implicitly report to each other
|
|
25
|
+
|
|
26
|
+
### Cross-Department Service Routing
|
|
27
|
+
- Employees can declare `provides` services in their YAML:
|
|
28
|
+
```yaml
|
|
29
|
+
provides:
|
|
30
|
+
- name: code-review
|
|
31
|
+
description: "Review PRs and provide feedback"
|
|
32
|
+
```
|
|
33
|
+
- `GET /api/org/services` — list all available services across the org
|
|
34
|
+
- `POST /api/org/cross-request` — route a service request to the provider, creating a session with a formatted brief
|
|
35
|
+
- LCA (Lowest Common Ancestor) algorithm for routing path resolution
|
|
36
|
+
- Manager chain tracking for audit/tracing
|
|
37
|
+
- Collision handling: higher-ranked employee wins, alphabetical tiebreak
|
|
38
|
+
|
|
39
|
+
### Chain-of-Command Context
|
|
40
|
+
- Employee prompts now include rich chain-of-command section: department, manager (with rank), direct reports (with ranks), escalation path
|
|
41
|
+
- Available services from other departments listed with API usage instructions
|
|
42
|
+
- Replaces the old simple `reportsTo` / `directReports` lines
|
|
43
|
+
|
|
44
|
+
### Multi-Instance Connectors (PR #23)
|
|
45
|
+
- Connectors (Slack, Discord, etc.) can now run multiple instances with different configurations
|
|
46
|
+
- Each instance gets its own channel mapping and credentials
|
|
47
|
+
|
|
48
|
+
### Homebrew Formula (PR #33)
|
|
49
|
+
- `brew install hristo2612/tap/jinn` now works
|
|
50
|
+
- Includes Node.js dependency management
|
|
51
|
+
|
|
52
|
+
## Employee YAML changes
|
|
53
|
+
|
|
54
|
+
New optional fields:
|
|
55
|
+
|
|
56
|
+
| Field | Type | Description |
|
|
57
|
+
|-------|------|-------------|
|
|
58
|
+
| `reportsTo` | `string \| string[]` | Who this employee reports to (primary parent used for hierarchy) |
|
|
59
|
+
| `provides` | `ServiceDeclaration[]` | Services this employee provides to the org |
|
|
60
|
+
|
|
61
|
+
Example:
|
|
62
|
+
```yaml
|
|
63
|
+
name: jimmy-dev
|
|
64
|
+
displayName: Jimmy Dev
|
|
65
|
+
rank: senior
|
|
66
|
+
department: platform
|
|
67
|
+
reportsTo: jimbo
|
|
68
|
+
provides:
|
|
69
|
+
- name: code-review
|
|
70
|
+
description: "Review PRs and provide feedback"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Merge instructions
|
|
74
|
+
|
|
75
|
+
1. **Config**: Update `jinn.version` to `"0.9.0"`.
|
|
76
|
+
2. **Template files**: Merge the updated `CLAUDE.md`, `AGENTS.md`, and `skills/management/SKILL.md` from the template. These contain new documentation sections — merge carefully with any user customizations.
|
|
77
|
+
3. **Employee YAMLs**: Optionally add `reportsTo` and `provides` fields to employee definitions. The system works without them (smart defaults infer hierarchy from rank).
|
|
78
|
+
4. **Database**: No schema changes — handled automatically on gateway start.
|
|
79
|
+
|
|
80
|
+
## Files
|
|
81
|
+
|
|
82
|
+
No files directory — template file updates should be merged manually or via AI.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cron-manager
|
|
3
|
+
description: Create, edit, delete, enable, disable, and list scheduled cron jobs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cron Manager Skill
|
|
7
|
+
|
|
8
|
+
## Trigger
|
|
9
|
+
|
|
10
|
+
This skill activates when the user wants to create, edit, delete, enable, disable, or list scheduled cron jobs.
|
|
11
|
+
|
|
12
|
+
## Data File
|
|
13
|
+
|
|
14
|
+
All cron jobs are stored in `~/.jinn/cron/jobs.json` as a JSON array of job objects. If the file does not exist, create it with an empty array `[]`.
|
|
15
|
+
|
|
16
|
+
## CronJob Schema
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"id": "uuid-v4",
|
|
21
|
+
"name": "daily-standup-summary",
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"schedule": "0 9 * * 1-5",
|
|
24
|
+
"timezone": "America/New_York",
|
|
25
|
+
"engine": "claude",
|
|
26
|
+
"model": "sonnet",
|
|
27
|
+
"employee": "project-manager",
|
|
28
|
+
"prompt": "Review all department boards and summarize progress since yesterday. Highlight blockers and upcoming deadlines.",
|
|
29
|
+
"delivery": {
|
|
30
|
+
"connector": "slack",
|
|
31
|
+
"channel": "#engineering-standup"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Field details:
|
|
37
|
+
- `id` — UUID v4, generated when creating the job
|
|
38
|
+
- `name` — kebab-case human-readable identifier, must be unique across all jobs
|
|
39
|
+
- `enabled` — boolean, whether the job is active
|
|
40
|
+
- `schedule` — standard cron expression (minute hour day month weekday)
|
|
41
|
+
- `timezone` — IANA timezone string (e.g., `America/New_York`, `Europe/London`, `UTC`)
|
|
42
|
+
- `engine` — AI engine to run the job: `claude` or `codex`
|
|
43
|
+
- `model` — model identifier (e.g., `sonnet`, `opus`, `o3`)
|
|
44
|
+
- `employee` — optional, the employee persona to use (must match an employee name in the org)
|
|
45
|
+
- `prompt` — the instruction to execute when the job fires
|
|
46
|
+
- `delivery` — optional object specifying where to send output
|
|
47
|
+
- `connector` — the connector to use (e.g., `slack`, `discord`)
|
|
48
|
+
- `channel` — the target channel or destination
|
|
49
|
+
|
|
50
|
+
## Operations
|
|
51
|
+
|
|
52
|
+
### Creating a Job
|
|
53
|
+
|
|
54
|
+
1. Read the current `~/.jinn/cron/jobs.json` (or initialize as `[]` if missing).
|
|
55
|
+
2. Ask the user for the required fields: name, schedule, engine, model, and prompt.
|
|
56
|
+
3. Ask about the timezone. Default to `UTC` if not specified.
|
|
57
|
+
4. Ask about the employee persona to use. This is optional.
|
|
58
|
+
5. **Always ask the user about the delivery channel** if they did not specify one. Explain that without delivery, the output will only be logged.
|
|
59
|
+
6. **Delegation check**: If the job has delivery configured AND targets a non-{{portalSlug}} employee, warn the user. The correct pattern for reporting/analytical jobs is: target `{{portalSlug}}`, and include delegation instructions in the prompt (e.g. "Delegate to @employee-name: ..."). {{portalName}} reviews and filters the output before it reaches the delivery channel. Only simple, no-review tasks (e.g. health checks) should target employees directly with delivery.
|
|
60
|
+
7. Generate a UUID for the `id` field.
|
|
61
|
+
8. Set `enabled` to `true` by default.
|
|
62
|
+
9. Append the new job object to the array.
|
|
63
|
+
10. Write the updated array back to `~/.jinn/cron/jobs.json`.
|
|
64
|
+
11. Confirm the creation and summarize the schedule in plain English.
|
|
65
|
+
|
|
66
|
+
### Editing a Job
|
|
67
|
+
|
|
68
|
+
1. Read `~/.jinn/cron/jobs.json`.
|
|
69
|
+
2. Find the job by name or id.
|
|
70
|
+
3. Show the current values to the user.
|
|
71
|
+
4. Apply the requested changes.
|
|
72
|
+
5. Write the updated array back.
|
|
73
|
+
6. Confirm the changes.
|
|
74
|
+
|
|
75
|
+
### Deleting a Job
|
|
76
|
+
|
|
77
|
+
1. Read `~/.jinn/cron/jobs.json`.
|
|
78
|
+
2. Find the job by name or id.
|
|
79
|
+
3. Confirm deletion with the user (show job details).
|
|
80
|
+
4. Remove the job from the array.
|
|
81
|
+
5. Write the updated array back.
|
|
82
|
+
6. Confirm deletion.
|
|
83
|
+
|
|
84
|
+
### Enabling / Disabling a Job
|
|
85
|
+
|
|
86
|
+
1. Read `~/.jinn/cron/jobs.json`.
|
|
87
|
+
2. Find the job by name or id.
|
|
88
|
+
3. Set `enabled` to `true` (enable) or `false` (disable).
|
|
89
|
+
4. Write the updated array back.
|
|
90
|
+
5. Confirm the status change.
|
|
91
|
+
|
|
92
|
+
### Listing Jobs
|
|
93
|
+
|
|
94
|
+
1. Read `~/.jinn/cron/jobs.json`.
|
|
95
|
+
2. Display jobs in a readable format, grouped by enabled/disabled.
|
|
96
|
+
3. Include name, schedule (with plain-English interpretation), timezone, engine, and delivery info.
|
|
97
|
+
|
|
98
|
+
## Cron Schedule Reference
|
|
99
|
+
|
|
100
|
+
The schedule field uses standard 5-field cron syntax:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
┌───────────── minute (0-59)
|
|
104
|
+
│ ┌───────────── hour (0-23)
|
|
105
|
+
│ │ ┌───────────── day of month (1-31)
|
|
106
|
+
│ │ │ ┌───────────── month (1-12)
|
|
107
|
+
│ │ │ │ ┌───────────── day of week (0-7, 0 and 7 = Sunday)
|
|
108
|
+
│ │ │ │ │
|
|
109
|
+
* * * * *
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Common examples:
|
|
113
|
+
- `0 9 * * 1-5` — Every weekday at 9:00 AM
|
|
114
|
+
- `0 0 * * *` — Every day at midnight
|
|
115
|
+
- `*/15 * * * *` — Every 15 minutes
|
|
116
|
+
- `0 9 * * 1` — Every Monday at 9:00 AM
|
|
117
|
+
- `0 8,17 * * *` — Every day at 8:00 AM and 5:00 PM
|
|
118
|
+
- `0 0 1 * *` — First day of every month at midnight
|
|
119
|
+
- `30 14 * * 5` — Every Friday at 2:30 PM
|
|
120
|
+
|
|
121
|
+
## Error Handling
|
|
122
|
+
|
|
123
|
+
- If `jobs.json` is malformed, attempt to fix it. If unrecoverable, back it up as `jobs.json.bak` and start fresh with `[]`.
|
|
124
|
+
- If a job name already exists when creating, warn the user and ask for a different name.
|
|
125
|
+
- Validate the cron expression format before saving. Warn if the expression looks incorrect.
|
|
126
|
+
- Validate that the timezone is a valid IANA timezone string.
|
|
127
|
+
- If an employee is specified, verify it exists in the org directory.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: find-and-install
|
|
3
|
+
description: Find and install skills from skills.sh when a capability gap is detected
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Find & Install Skills
|
|
7
|
+
|
|
8
|
+
## Trigger
|
|
9
|
+
|
|
10
|
+
This skill activates when you detect a capability gap that a community skill might fill, the user explicitly asks to find or install a skill and a task would benefit from a specialized skill you don't currently have
|
|
11
|
+
|
|
12
|
+
## Searching for Skills
|
|
13
|
+
|
|
14
|
+
Run a search using the skills CLI:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npx skills find [query]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Review the results and assess trust level before suggesting:
|
|
21
|
+
|
|
22
|
+
- 🟢 **VERIFIED** (1000+ installs or known orgs like `vercel-labs`, `anthropics`, `microsoft`): Suggest confidently
|
|
23
|
+
- 🟡 **COMMUNITY** (50–999 installs): Suggest with a note about the install count
|
|
24
|
+
- 🔴 **UNKNOWN** (<50 installs): Show but warn the user — offer to preview the SKILL.md before installing
|
|
25
|
+
|
|
26
|
+
## Installing a Skill
|
|
27
|
+
|
|
28
|
+
Once the user approves (or for 🟢 VERIFIED skills when you're confident it fits):
|
|
29
|
+
|
|
30
|
+
### Step 1: Install globally
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx skills add <owner/repo@skill> -g -y
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This places files into `~/.claude/skills/<name>/` or `~/.agents/skills/<name>/`.
|
|
37
|
+
|
|
38
|
+
### Step 2: Copy into {{portalSlug}} skills directory
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cp -r ~/.claude/skills/<name>/ ~/.{{portalSlug}}/skills/<name>/
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The {{portalName}} file watcher will detect the new directory and create the appropriate symlinks automatically.
|
|
45
|
+
|
|
46
|
+
### Step 3: Update the skills manifest
|
|
47
|
+
|
|
48
|
+
Read `~/.{{portalSlug}}/skills.json`, add the new skill entry, and write it back.
|
|
49
|
+
|
|
50
|
+
The manifest format:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"installed": {
|
|
55
|
+
"<name>": {
|
|
56
|
+
"source": "<owner/repo@skill>",
|
|
57
|
+
"installedAt": "<ISO 8601 timestamp>"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Step 4: Apply the skill immediately
|
|
64
|
+
|
|
65
|
+
Read the newly installed `~/.{{portalSlug}}/skills/<name>/SKILL.md` and follow its instructions to complete the current task.
|
|
66
|
+
|
|
67
|
+
## When No Skills Are Found
|
|
68
|
+
|
|
69
|
+
If `npx skills find` returns no results:
|
|
70
|
+
|
|
71
|
+
1. Offer to help the user directly with the task using your built-in capabilities
|
|
72
|
+
2. Suggest creating a custom skill if this is a recurring need (use the `skill-creator` skill)
|
|
73
|
+
|
|
74
|
+
## Examples
|
|
75
|
+
|
|
76
|
+
**User asks to deploy to Vercel:**
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx skills find "vercel deploy"
|
|
80
|
+
# → vercel-labs/ai-skills@vercel-deploy (🟢 VERIFIED, 5200 installs)
|
|
81
|
+
npx skills add vercel-labs/ai-skills@vercel-deploy -g -y
|
|
82
|
+
cp -r ~/.claude/skills/vercel-deploy/ ~/.{{portalSlug}}/skills/vercel-deploy/
|
|
83
|
+
# → update skills.json → read SKILL.md → follow deploy instructions
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**User asks for an obscure skill:**
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx skills find "arduino serial monitor"
|
|
90
|
+
# → random-user/arduino-tools@serial-monitor (🔴 UNKNOWN, 12 installs)
|
|
91
|
+
# → Warn user, offer to preview SKILL.md before installing
|
|
92
|
+
```
|