specrails-desktop 2.20.1 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/client/dist/assets/{ActivityFeedPage-3WSqRYVx.js → ActivityFeedPage-roDyKGuv.js} +1 -1
- package/client/dist/assets/AgentBrowserCapture-BsXnWa4j.js +1 -0
- package/client/dist/assets/{AgentModeCodePane-Cnsea6eZ.js → AgentModeCodePane-o97EJvbJ.js} +2 -2
- package/client/dist/assets/AgentModeJobsPane-CLtpPxPM.js +1 -0
- package/client/dist/assets/AgentsPage-eNSo_ZcC.js +86 -0
- package/client/dist/assets/AnalyticsPage-cAJ60_Ex.js +1 -0
- package/client/dist/assets/{BarChart-C6If656N.js → BarChart-NLtK7xAY.js} +1 -1
- package/client/dist/assets/CodePage-B5rum8ZB.js +2 -0
- package/client/dist/assets/DesktopAnalyticsPage-DSuvG6Tq.js +1 -0
- package/client/dist/assets/DocsDialog-Bo38G3Yc.js +11 -0
- package/client/dist/assets/DocsPage-BNkiBBrC.js +11 -0
- package/client/dist/assets/{ExportDropdown-CezTK0EX.js → ExportDropdown-DCV8PN4-.js} +1 -1
- package/client/dist/assets/IntegrationsPage-BMJOzpPz.js +3 -0
- package/client/dist/assets/InteractiveJobComposer-aLduNs5R.js +19 -0
- package/client/dist/assets/JobDetailModal-kpkUWJIS.js +1 -0
- package/client/dist/assets/JobDetailPage-CFeqlrPU.js +1 -0
- package/client/dist/assets/JobsPage-fuwhXy2I.js +1 -0
- package/client/dist/assets/LoopBuilderPage-DP66322C.js +7 -0
- package/client/dist/assets/LoopPreviewModal-CpmBhE31.js +1 -0
- package/client/dist/assets/LoopsPage-CvQ18VUx.js +1 -0
- package/client/dist/assets/ProjectSettingsDialog-Deq4pwvq.js +1 -0
- package/client/dist/assets/TemplatePreviewModal-DziOj2Ct.js +1 -0
- package/client/dist/assets/agent-Csh4kP2S.js +1 -0
- package/client/dist/assets/agent-Cz_jgQX32.js +1 -0
- package/client/dist/assets/agent-D3vcIvaz2.js +1 -0
- package/client/dist/assets/agent-Dnbt0V4e.js +1 -0
- package/client/dist/assets/agent-HolR7QrZ.js +1 -0
- package/client/dist/assets/agent-Ka0rRWJy.js +1 -0
- package/client/dist/assets/agent-Te3yysMd.js +1 -0
- package/client/dist/assets/agent-vM4_iLDk2.js +1 -0
- package/client/dist/assets/{upload-CRtTj4Co.js → brain-kFJuEDNH.js} +1 -1
- package/client/dist/assets/{browser-DEEO-OSi.js → browser-BPkhILSJ.js} +1 -1
- package/client/dist/assets/{browser-BTivfZKE2.js → browser-BijVYG0Y2.js} +1 -1
- package/client/dist/assets/{browser-bpO3onlS.js → browser-BqLqJVVT.js} +1 -1
- package/client/dist/assets/{browser-DlSXtfu5.js → browser-Cc0iDqUi.js} +1 -1
- package/client/dist/assets/browser-CdS6O1Qb.js +1 -0
- package/client/dist/assets/{browser-BKP6hqQC2.js → browser-Cvg-QHvd2.js} +1 -1
- package/client/dist/assets/{browser-INCUyduh.js → browser-FRv8P02E.js} +1 -1
- package/client/dist/assets/{browser-DlKLfT612.js → browser-rWKj-RR_2.js} +1 -1
- package/client/dist/assets/code-BRcDlze52.js +1 -0
- package/client/dist/assets/code-BdMy3Ffq.js +1 -0
- package/client/dist/assets/code-CeQ0FZpC.js +1 -0
- package/client/dist/assets/code-CqCcRThR.js +1 -0
- package/client/dist/assets/code-DgeHz9CB.js +1 -0
- package/client/dist/assets/code-DzC1rMk12.js +1 -0
- package/client/dist/assets/code-UPVvmAKM2.js +1 -0
- package/client/dist/assets/code-thSEptMx.js +1 -0
- package/client/dist/assets/{common-QjVnq9XP2.js → common-BM3LFLCE2.js} +1 -1
- package/client/dist/assets/{common-CeQUwuHt2.js → common-Bwafujnc2.js} +1 -1
- package/client/dist/assets/{common-Bb64s3Bm.js → common-C-vU-j-I.js} +1 -1
- package/client/dist/assets/{common-KbQuTSGg.js → common-C5HKSbbz.js} +1 -1
- package/client/dist/assets/{common-BPQQkgJZ.js → common-CYaT2yHp.js} +1 -1
- package/client/dist/assets/{common-DPxotRK9.js → common-DhWTkocg.js} +1 -1
- package/client/dist/assets/{common-k5MTOHpn.js → common-DiPTT7V_2.js} +1 -1
- package/client/dist/assets/{common-C8ZD5upH2.js → common-DmqBPwZG.js} +1 -1
- package/client/dist/assets/{cssMode-DsArsSCT.js → cssMode-DBHbkBvI.js} +1 -1
- package/client/dist/assets/dashboard-BaStj_a_.js +1 -0
- package/client/dist/assets/dashboard-Bi6ugu5Q.js +1 -0
- package/client/dist/assets/dashboard-BmqTn3L02.js +1 -0
- package/client/dist/assets/dashboard-CvT8lOCT.js +1 -0
- package/client/dist/assets/dashboard-D7Pmeavq2.js +1 -0
- package/client/dist/assets/dashboard-DAnWdAac2.js +1 -0
- package/client/dist/assets/dashboard-JnYy2WLg.js +1 -0
- package/client/dist/assets/dashboard-L47YsFS_.js +1 -0
- package/client/dist/assets/{dist-js-BQn4yxaw.js → dist-js-BZSiJDbG.js} +1 -1
- package/client/dist/assets/{dist-js-BAWSqVtr.js → dist-js-DKpmIJlQ.js} +1 -1
- package/client/dist/assets/{editor.main-G3Sl9C67.js → editor.main-C9J2ikJK.js} +2 -2
- package/client/dist/assets/{freemarker2-pBzQNgFi.js → freemarker2-J5iIIIK-.js} +1 -1
- package/client/dist/assets/{handlebars-CtBTCnBI.js → handlebars-DSw1l_tw.js} +1 -1
- package/client/dist/assets/{html-Dx3DYBzY.js → html-h2-wE1Lj.js} +1 -1
- package/client/dist/assets/{htmlMode-In7frFOo.js → htmlMode-Cc_ij7lW.js} +1 -1
- package/client/dist/assets/index-DM6heiGa.js +155 -0
- package/client/dist/assets/index-DPX6_xIC.css +2 -0
- package/client/dist/assets/{javascript-BKcn-YkN.js → javascript-C1q3xv6N.js} +1 -1
- package/client/dist/assets/jira-B3613-gj.js +1 -0
- package/client/dist/assets/jira-BHAKtc4B.js +1 -0
- package/client/dist/assets/jira-Be369RIR2.js +1 -0
- package/client/dist/assets/jira-CPpgA-5z2.js +1 -0
- package/client/dist/assets/jira-D5efgwp_.js +1 -0
- package/client/dist/assets/jira-DS7ownDy.js +1 -0
- package/client/dist/assets/jira-bDs7Im2C.js +1 -0
- package/client/dist/assets/jira-uNH1gETL2.js +1 -0
- package/client/dist/assets/jobs-1GV2-4zd2.js +1 -0
- package/client/dist/assets/jobs-26F9gGcE.js +1 -0
- package/client/dist/assets/jobs-BgQzB0Sx2.js +1 -0
- package/client/dist/assets/jobs-BqWui9_f.js +1 -0
- package/client/dist/assets/jobs-CE8qeIYj.js +1 -0
- package/client/dist/assets/jobs-D5sZzgLs.js +1 -0
- package/client/dist/assets/jobs-DzeuASRf.js +1 -0
- package/client/dist/assets/jobs-Wh7dn28q2.js +1 -0
- package/client/dist/assets/{jsonMode-jNREoQ3C.js → jsonMode-CeaCdEhr.js} +1 -1
- package/client/dist/assets/{lib-C-g8QbZl.js → lib-B2nCKzmA.js} +1 -1
- package/client/dist/assets/{liquid-CtRkGqBu.js → liquid-eFsVK0V-.js} +1 -1
- package/client/dist/assets/loops-BvEenWBy.js +1 -0
- package/client/dist/assets/loops-CBiWd9Hf.js +1 -0
- package/client/dist/assets/loops-DNGiYKll2.js +1 -0
- package/client/dist/assets/{loops-Y3FQsUCh.js → loops-DjOtVXRo.js} +1 -1
- package/client/dist/assets/loops-HTHf-xu32.js +1 -0
- package/client/dist/assets/loops-YYV2bwjd.js +1 -0
- package/client/dist/assets/loops-hXgncEpF2.js +1 -0
- package/client/dist/assets/loops-kYbydDyN.js +1 -0
- package/client/dist/assets/{lspLanguageFeatures-Cl3gvD_W.js → lspLanguageFeatures-DT3-bbhn.js} +1 -1
- package/client/dist/assets/{mdx-B_nJldHz.js → mdx-Fuwnh1cX.js} +1 -1
- package/client/dist/assets/{monaco.contribution-PUeaZk8T.js → monaco.contribution-Desq7oq4.js} +2 -2
- package/client/dist/assets/{python-DS1Ce-A6.js → python-BgoEs6Cj.js} +1 -1
- package/client/dist/assets/{razor-L41Qg9OK.js → razor-CM1sPMMq.js} +1 -1
- package/client/dist/assets/{settings-BPq9nCJm.js → settings-BOHOmHkb.js} +1 -1
- package/client/dist/assets/{settings-r8Qq2Gzp2.js → settings-BlEA_7h02.js} +1 -1
- package/client/dist/assets/{settings-C-m3yEZ2.js → settings-BsJMsWGc.js} +1 -1
- package/client/dist/assets/{settings-zZr7NzuB.js → settings-D6qY9_UI.js} +1 -1
- package/client/dist/assets/{settings-VgCsjaYf.js → settings-DZJeXoRV.js} +1 -1
- package/client/dist/assets/settings-Mr7MnJbf.js +1 -0
- package/client/dist/assets/{settings-BWHGtmU12.js → settings-TNga5gIF2.js} +1 -1
- package/client/dist/assets/{settings-DZj7Uqy32.js → settings-lFoaYT-s2.js} +1 -1
- package/client/dist/assets/setup-B590KsTX.js +1 -0
- package/client/dist/assets/setup-BkyGoby6.js +1 -0
- package/client/dist/assets/setup-CEj6uY3-2.js +1 -0
- package/client/dist/assets/setup-CbIerFGf2.js +1 -0
- package/client/dist/assets/setup-CmU6bTCV2.js +1 -0
- package/client/dist/assets/setup-D674kWQH.js +1 -0
- package/client/dist/assets/setup-VNqXyB6Y.js +1 -0
- package/client/dist/assets/setup-iY8vH8pB.js +1 -0
- package/client/dist/assets/specs-C9Sd7BhH2.js +1 -0
- package/client/dist/assets/specs-CBDvEYKv.js +1 -0
- package/client/dist/assets/specs-CIPr9reA2.js +1 -0
- package/client/dist/assets/specs-CWtKcVDC.js +1 -0
- package/client/dist/assets/specs-CmEZY57v.js +1 -0
- package/client/dist/assets/specs-D2clrt2c2.js +1 -0
- package/client/dist/assets/specs-DTplt2XM.js +1 -0
- package/client/dist/assets/specs-PozUNhqb.js +1 -0
- package/client/dist/assets/{tsMode-BC1g186U.js → tsMode-BmT8WogI.js} +1 -1
- package/client/dist/assets/{typescript-BGlRGvJW.js → typescript-CQrQPsoW.js} +1 -1
- package/client/dist/assets/upload-CLAzW1mS.js +1 -0
- package/client/dist/assets/{value-D9aLbxw-.js → value-DSwzyyWR.js} +1 -1
- package/client/dist/assets/{workers-CXcXtO3b.js → workers-U0UXyLUf.js} +1 -1
- package/client/dist/assets/{xml-JdZZaIhJ.js → xml-WRxJs8_I.js} +1 -1
- package/client/dist/assets/{yaml-Cm82BVBt.js → yaml-CjpSTjJU.js} +1 -1
- package/client/dist/index.html +14 -14
- package/docs/customizing.md +2 -2
- package/docs/gemini.md +15 -4
- package/docs/guide/de/insights/3-code-explorer.md +6 -0
- package/docs/guide/de/integrations/3-jira-integration.md +1 -1
- package/docs/guide/de/integrations/6-agent-chat.md +5 -0
- package/docs/guide/de/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/de/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +9 -5
- package/docs/guide/de/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/de/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/en/insights/3-code-explorer.md +6 -0
- package/docs/guide/en/integrations/3-jira-integration.md +1 -1
- package/docs/guide/en/integrations/6-agent-chat.md +5 -0
- package/docs/guide/en/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/en/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +10 -4
- package/docs/guide/en/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/en/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/es/insights/3-code-explorer.md +6 -0
- package/docs/guide/es/integrations/3-jira-integration.md +1 -1
- package/docs/guide/es/integrations/6-agent-chat.md +5 -0
- package/docs/guide/es/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/es/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +9 -5
- package/docs/guide/es/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/es/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/fr/insights/3-code-explorer.md +6 -0
- package/docs/guide/fr/integrations/3-jira-integration.md +1 -1
- package/docs/guide/fr/integrations/6-agent-chat.md +5 -0
- package/docs/guide/fr/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/fr/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +9 -5
- package/docs/guide/fr/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/fr/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/it/insights/3-code-explorer.md +6 -0
- package/docs/guide/it/integrations/3-jira-integration.md +1 -1
- package/docs/guide/it/integrations/6-agent-chat.md +5 -0
- package/docs/guide/it/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/it/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +10 -6
- package/docs/guide/it/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/it/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/ja/insights/3-code-explorer.md +6 -0
- package/docs/guide/ja/integrations/3-jira-integration.md +1 -1
- package/docs/guide/ja/integrations/6-agent-chat.md +5 -0
- package/docs/guide/ja/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/ja/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +9 -5
- package/docs/guide/ja/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/ja/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/pt/insights/3-code-explorer.md +6 -0
- package/docs/guide/pt/integrations/3-jira-integration.md +1 -1
- package/docs/guide/pt/integrations/6-agent-chat.md +5 -0
- package/docs/guide/pt/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/pt/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +9 -5
- package/docs/guide/pt/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/pt/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/guide/zh/insights/3-code-explorer.md +6 -0
- package/docs/guide/zh/integrations/3-jira-integration.md +1 -1
- package/docs/guide/zh/integrations/6-agent-chat.md +5 -0
- package/docs/guide/zh/pipeline/1-rails-and-jobs.md +6 -6
- package/docs/guide/zh/pipeline/2-the-job-detail-view.md +27 -2
- package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +10 -6
- package/docs/guide/zh/pipeline/5-the-loop-builder.md +1 -1
- package/docs/guide/zh/specs/1-specs-and-the-backlog.md +3 -2
- package/docs/internals/README.md +5 -0
- package/docs/internals/adding-a-provider.md +15 -3
- package/docs/internals/api-reference.md +6 -5
- package/docs/internals/browser-capture-performance.md +93 -0
- package/docs/internals/code-explorer-story.md +135 -0
- package/docs/internals/gemini-mcp-registration.md +53 -0
- package/docs/internals/interactive-jobs.md +212 -0
- package/docs/internals/loop-step-log-explorer.md +146 -0
- package/docs/internals/safe-pr-review-flow.md +367 -0
- package/docs/mcp.md +1 -1
- package/docs/running-pipelines.md +6 -2
- package/package.json +1 -1
- package/server/dist/agent-chat-manager.js +211 -0
- package/server/dist/agent-chat-registry.js +20 -0
- package/server/dist/agent-chat-router.js +22 -0
- package/server/dist/agent-mcp-config.js +45 -4
- package/server/dist/agent-operator-prompt.js +149 -56
- package/server/dist/agent-store.js +25 -0
- package/server/dist/agent-tier.js +6 -1
- package/server/dist/browser-capture-manager.js +184 -34
- package/server/dist/browser-playwright.js +98 -13
- package/server/dist/code-explorer-router.js +92 -0
- package/server/dist/db.js +102 -0
- package/server/dist/file-provenance.js +54 -1
- package/server/dist/file-story-manager.js +170 -0
- package/server/dist/file-story.js +148 -0
- package/server/dist/file-summary-generator.js +5 -4
- package/server/dist/git-guardrails.js +62 -0
- package/server/dist/index.js +5 -0
- package/server/dist/integration-branch.js +63 -0
- package/server/dist/interactive-job-session.js +226 -18
- package/server/dist/jira/jira-adf.js +9 -0
- package/server/dist/jira/jira-materializer.js +27 -4
- package/server/dist/jira/jira-status-resolver.js +12 -4
- package/server/dist/jira/jira-sync-manager.js +130 -2
- package/server/dist/jira-router.js +1 -1
- package/server/dist/loop-effect.js +12 -0
- package/server/dist/loop-executors.js +92 -22
- package/server/dist/loop-run-manager.js +354 -28
- package/server/dist/mcp/guide.js +18 -7
- package/server/dist/mcp/tools/jira.js +1 -1
- package/server/dist/mcp/tools/jobs.js +14 -5
- package/server/dist/mcp/tools/rails.js +137 -12
- package/server/dist/mcp/tools/specs.js +35 -9
- package/server/dist/mcp/tools/types.js +49 -0
- package/server/dist/mobile/mobile-ws.js +4 -0
- package/server/dist/path-resolver.js +46 -0
- package/server/dist/pr-body.js +240 -0
- package/server/dist/pr-naming.js +210 -0
- package/server/dist/pr-publisher.js +68 -0
- package/server/dist/project-registry.js +77 -17
- package/server/dist/project-router-jobs.js +53 -13
- package/server/dist/project-router-settings.js +33 -0
- package/server/dist/project-router-terminals.js +16 -0
- package/server/dist/project-router-tickets.js +57 -3
- package/server/dist/project-router.js +52 -13
- package/server/dist/queue-manager.js +268 -83
- package/server/dist/rail-isolated-launch.js +324 -34
- package/server/dist/rail-isolation.js +32 -5
- package/server/dist/rail-pr-decision.js +519 -0
- package/server/dist/rail-pr-delivery.js +75 -0
- package/server/dist/rail-pr-store.js +175 -0
- package/server/dist/rail-worktrees-store.js +18 -0
- package/server/dist/rails-router.js +241 -17
- package/server/dist/rails-store.js +78 -1
- package/server/dist/setup-prerequisites.js +105 -0
- package/server/dist/smash-runner.js +3 -1
- package/server/dist/ticket-store.js +7 -3
- package/server/dist/workspace-resolution.js +27 -0
- package/server/dist/worktree-manager.js +42 -7
- package/server/dist/worktree-overlay.js +261 -0
- package/client/dist/assets/AgentBrowserCapture-BlGDZahz.js +0 -1
- package/client/dist/assets/AgentModeJobsPane-CyNR-9BO.js +0 -1
- package/client/dist/assets/AgentsPage-dNsEsY_x.js +0 -86
- package/client/dist/assets/AnalyticsPage-BAxmR0HQ.js +0 -1
- package/client/dist/assets/CodePage-Crc4BBQN.js +0 -2
- package/client/dist/assets/DesktopAnalyticsPage-IXSnbCce.js +0 -1
- package/client/dist/assets/DocsDialog-Bc4hx7oW.js +0 -11
- package/client/dist/assets/DocsPage-bEU4t9c6.js +0 -11
- package/client/dist/assets/IntegrationsPage-wq2CezEL.js +0 -3
- package/client/dist/assets/JobDetailPage-BBcPk3j8.js +0 -1
- package/client/dist/assets/JobsPage-DXrSPlwa.js +0 -1
- package/client/dist/assets/LogViewer-BoYbwvbU.js +0 -16
- package/client/dist/assets/LoopBuilderPage-CiUMAuWz.js +0 -7
- package/client/dist/assets/LoopsPage-Xrp6W5XW.js +0 -1
- package/client/dist/assets/ProjectSettingsDialog-BU98L5JD.js +0 -1
- package/client/dist/assets/agent-B7GdHP3Z.js +0 -1
- package/client/dist/assets/agent-BHmcgoJf.js +0 -1
- package/client/dist/assets/agent-BdY_fii4.js +0 -1
- package/client/dist/assets/agent-C32FOi9v.js +0 -1
- package/client/dist/assets/agent-CiFQxoaZ2.js +0 -1
- package/client/dist/assets/agent-CtAag7V6.js +0 -1
- package/client/dist/assets/agent-DE4Mp1fY2.js +0 -1
- package/client/dist/assets/agent-DK8qovyG2.js +0 -1
- package/client/dist/assets/browser-ZB1afzjZ.js +0 -1
- package/client/dist/assets/code-BFxE1Yt62.js +0 -1
- package/client/dist/assets/code-BefYOm5Q.js +0 -1
- package/client/dist/assets/code-BkXpJt99.js +0 -1
- package/client/dist/assets/code-C6Sq7_t8.js +0 -1
- package/client/dist/assets/code-CGj3w-2N.js +0 -1
- package/client/dist/assets/code-Dfsxc9o82.js +0 -1
- package/client/dist/assets/code-Y5urks5s2.js +0 -1
- package/client/dist/assets/code-wtcs0ivb.js +0 -1
- package/client/dist/assets/dashboard-B8032psZ.js +0 -1
- package/client/dist/assets/dashboard-BHGKtxty2.js +0 -1
- package/client/dist/assets/dashboard-CXnoUgN22.js +0 -1
- package/client/dist/assets/dashboard-Ccyxqy7d.js +0 -1
- package/client/dist/assets/dashboard-CoED_41r.js +0 -1
- package/client/dist/assets/dashboard-Dc5ZAgMN.js +0 -1
- package/client/dist/assets/dashboard-JMY8ueD3.js +0 -1
- package/client/dist/assets/dashboard-tkWr1aHD2.js +0 -1
- package/client/dist/assets/index-BHPbzyg6.css +0 -2
- package/client/dist/assets/index-n2PmJGF6.js +0 -152
- package/client/dist/assets/jira-BcZzX9122.js +0 -1
- package/client/dist/assets/jira-CTYs7LA12.js +0 -1
- package/client/dist/assets/jira-D2nN39e92.js +0 -1
- package/client/dist/assets/jira-DJxmIkyr.js +0 -1
- package/client/dist/assets/jira-DXMoAKWD.js +0 -1
- package/client/dist/assets/jira-IhC1ROIc.js +0 -1
- package/client/dist/assets/jira-Iw575fN8.js +0 -1
- package/client/dist/assets/jira-kbWZY7jH.js +0 -1
- package/client/dist/assets/jobs-BqF79kHz2.js +0 -1
- package/client/dist/assets/jobs-C1XM5urS.js +0 -1
- package/client/dist/assets/jobs-C5UjG0262.js +0 -1
- package/client/dist/assets/jobs-DBfaHTxC.js +0 -1
- package/client/dist/assets/jobs-DM4BDPdg.js +0 -1
- package/client/dist/assets/jobs-Da5OkZmf2.js +0 -1
- package/client/dist/assets/jobs-JJdnuQ03.js +0 -1
- package/client/dist/assets/jobs-SI34ML8I.js +0 -1
- package/client/dist/assets/loops-BR4FmOv12.js +0 -1
- package/client/dist/assets/loops-BgX_uudn.js +0 -1
- package/client/dist/assets/loops-Bpl2j2LP.js +0 -1
- package/client/dist/assets/loops-CQuuMlyZ.js +0 -1
- package/client/dist/assets/loops-DW8hSMdS2.js +0 -1
- package/client/dist/assets/loops-Q2muu8hW2.js +0 -1
- package/client/dist/assets/loops-q7CNDvfK.js +0 -1
- package/client/dist/assets/settings-CY8udi0e.js +0 -1
- package/client/dist/assets/setup-CNMdCHHt2.js +0 -1
- package/client/dist/assets/setup-Cag4XrbL2.js +0 -1
- package/client/dist/assets/setup-D9IHGoWU.js +0 -1
- package/client/dist/assets/setup-Dg6Ba3JT.js +0 -1
- package/client/dist/assets/setup-DyK36RIW.js +0 -1
- package/client/dist/assets/setup-G4ZvDKxX.js +0 -1
- package/client/dist/assets/setup-aTlGxuwi2.js +0 -1
- package/client/dist/assets/setup-kWsoAeHQ.js +0 -1
- package/client/dist/assets/specs-BFSUPa122.js +0 -1
- package/client/dist/assets/specs-BMzip1WY2.js +0 -1
- package/client/dist/assets/specs-BYeAbIEy.js +0 -1
- package/client/dist/assets/specs-C-mtLcXw.js +0 -1
- package/client/dist/assets/specs-CAzpvADd2.js +0 -1
- package/client/dist/assets/specs-CyRIw_IR.js +0 -1
- package/client/dist/assets/specs-DMm7gB_l.js +0 -1
- package/client/dist/assets/specs-DuottM0Z.js +0 -1
- /package/client/dist/assets/{abap-CpHUwCVK.js → abap-D0E4FfVW.js} +0 -0
- /package/client/dist/assets/{activity-DemHQS7l.js → activity--iN4Ad2R2.js} +0 -0
- /package/client/dist/assets/{activity-B_71BWg3.js → activity-6hM_ZSg9.js} +0 -0
- /package/client/dist/assets/{activity-DHv2V5Oi.js → activity-BZNfOdiS.js} +0 -0
- /package/client/dist/assets/{activity-D0rfjQzT2.js → activity-BuVo5sPB.js} +0 -0
- /package/client/dist/assets/{activity-BpTTj_PH.js → activity-CIOLxGvh.js} +0 -0
- /package/client/dist/assets/{activity-D2e62vbV2.js → activity-D2r2h3SE2.js} +0 -0
- /package/client/dist/assets/{activity-Ch-wbr0C2.js → activity-DtxrAUMo2.js} +0 -0
- /package/client/dist/assets/{addon-image-Ba-TY3wr.js → addon-image-CwoZj17F.js} +0 -0
- /package/client/dist/assets/{addon-ligatures-T4ARLiuu.js → addon-ligatures-CWDrED80.js} +0 -0
- /package/client/dist/assets/{addon-webgl-Cd73n8eh.js → addon-webgl-DMbGeI_u.js} +0 -0
- /package/client/dist/assets/{addspec-xwRX_Pnf.js → addspec-BMtLZLW62.js} +0 -0
- /package/client/dist/assets/{addspec-l_zU5gla.js → addspec-CP0HRuxY.js} +0 -0
- /package/client/dist/assets/{addspec-Dio-H5z0.js → addspec-CRuvWn8d.js} +0 -0
- /package/client/dist/assets/{addspec-D6L4ZteP.js → addspec-D-JLDsUV.js} +0 -0
- /package/client/dist/assets/{addspec-CrEm6Fzr2.js → addspec-DfhDbg5c.js} +0 -0
- /package/client/dist/assets/{addspec-B6Ns8KU02.js → addspec-bsNDdqRm2.js} +0 -0
- /package/client/dist/assets/{addspec-qGyH7MHy2.js → addspec-mgPOt5q02.js} +0 -0
- /package/client/dist/assets/{agents-OzxCLVW1.js → agents-78bTZGZh.js} +0 -0
- /package/client/dist/assets/{agents-hv3sqmPm2.js → agents-BLhWCmDS2.js} +0 -0
- /package/client/dist/assets/{agents-CHgCudUV.js → agents-BUdEi3-N.js} +0 -0
- /package/client/dist/assets/{agents-Dumx4JiM2.js → agents-BpoUaoW92.js} +0 -0
- /package/client/dist/assets/{agents-CnaPeSyw.js → agents-CWo-KyAB.js} +0 -0
- /package/client/dist/assets/{agents-Xh-zYHUx2.js → agents-DDtCJ5M02.js} +0 -0
- /package/client/dist/assets/{agents-DuhLEaQ_.js → agents-bvyRLczL.js} +0 -0
- /package/client/dist/assets/{agentstudio-CCthUdzR.js → agentstudio-BMQxc_bz.js} +0 -0
- /package/client/dist/assets/{agentstudio-CcH8Ckql2.js → agentstudio-COZriimI2.js} +0 -0
- /package/client/dist/assets/{agentstudio-Bo91kfUd2.js → agentstudio-CWgXG5W52.js} +0 -0
- /package/client/dist/assets/{agentstudio-VJOa_NVO.js → agentstudio-C_Jq8Tl4.js} +0 -0
- /package/client/dist/assets/{agentstudio-BIxikDf_.js → agentstudio-Dtq3dGYk.js} +0 -0
- /package/client/dist/assets/{agentstudio-Bz8cP8_c.js → agentstudio-jKMTdT70.js} +0 -0
- /package/client/dist/assets/{agentstudio-DARgYg5Z2.js → agentstudio-sI27TpBu2.js} +0 -0
- /package/client/dist/assets/{aiedit-5ZXN4cep2.js → aiedit-6CHdb_iv2.js} +0 -0
- /package/client/dist/assets/{aiedit-B7gAJZVC.js → aiedit-B03pD_Na.js} +0 -0
- /package/client/dist/assets/{aiedit-D92V-kUW.js → aiedit-BtRqRxML.js} +0 -0
- /package/client/dist/assets/{aiedit-D9ualLVJ.js → aiedit-eMN4eQPF.js} +0 -0
- /package/client/dist/assets/{aiedit-h48tJU0V2.js → aiedit-hknZlly82.js} +0 -0
- /package/client/dist/assets/{aiedit-xkA_mR2a2.js → aiedit-igmw-ZoZ2.js} +0 -0
- /package/client/dist/assets/{aiedit-7B2dvCv-.js → aiedit-pc5JDUq1.js} +0 -0
- /package/client/dist/assets/{analytics-slx4X1mu2.js → analytics-BWMUZ2Pq2.js} +0 -0
- /package/client/dist/assets/{analytics-uRNP6yAJ.js → analytics-Bj-SmKHa.js} +0 -0
- /package/client/dist/assets/{analytics-WF1I49ln.js → analytics-C5dpiS0o.js} +0 -0
- /package/client/dist/assets/{analytics-CBvaxOId.js → analytics-CCprAqk3.js} +0 -0
- /package/client/dist/assets/{analytics-BakymH7Z2.js → analytics-CR1TJqUi2.js} +0 -0
- /package/client/dist/assets/{analytics-B7bPj6u_2.js → analytics-DfNdXR0y2.js} +0 -0
- /package/client/dist/assets/{analytics-DZ74aQ54.js → analytics-rmHuJv0V.js} +0 -0
- /package/client/dist/assets/{apex-DlD7oJX6.js → apex-D_X_8J4d.js} +0 -0
- /package/client/dist/assets/{atom-one-dark-BrRN8wBy.js → atom-one-dark-BMDPFwRZ.js} +0 -0
- /package/client/dist/assets/{attachments-C11tOKZ_.js → attachments-BgBNSqQd.js} +0 -0
- /package/client/dist/assets/{attachments-Bnbyj2PN.js → attachments-BjyMmrwE.js} +0 -0
- /package/client/dist/assets/{attachments-CIeLa8l12.js → attachments-C9GTTJsx2.js} +0 -0
- /package/client/dist/assets/{attachments-DslHfa-L.js → attachments-DCZOL1RU.js} +0 -0
- /package/client/dist/assets/{attachments-C-gyrCOb.js → attachments-DL-bPy9E.js} +0 -0
- /package/client/dist/assets/{attachments-Cxrs0pyL2.js → attachments-DPCmkFZu2.js} +0 -0
- /package/client/dist/assets/{attachments-TTPsc0a52.js → attachments-rNn1ekRy2.js} +0 -0
- /package/client/dist/assets/{azcli-CmXFAbc-.js → azcli-PZLnZ3jH.js} +0 -0
- /package/client/dist/assets/{bat-DdNJq4hH.js → bat-KlBOxpO4.js} +0 -0
- /package/client/dist/assets/{bicep-Bppz7WOA.js → bicep-CgG9oF3V.js} +0 -0
- /package/client/dist/assets/{cameligo-0MRMdSmg.js → cameligo-6R45j6Ph.js} +0 -0
- /package/client/dist/assets/{chat-BvHrebKC2.js → chat-BgL3zv6x2.js} +0 -0
- /package/client/dist/assets/{chat-CZyiLJvQ.js → chat-Bh3NdgJs.js} +0 -0
- /package/client/dist/assets/{chat-DKYP7NnC.js → chat-Bom6bqK3.js} +0 -0
- /package/client/dist/assets/{chat-5mdg_YIc2.js → chat-DdwZjT8K2.js} +0 -0
- /package/client/dist/assets/{chat-wkTIy9rX.js → chat-Dnwg-NpQ.js} +0 -0
- /package/client/dist/assets/{chat-BpYxnkr4.js → chat-DsbwJhus.js} +0 -0
- /package/client/dist/assets/{chat-BGax2nV62.js → chat-vylxqR0P2.js} +0 -0
- /package/client/dist/assets/{clojure-B5dKj863.js → clojure-CLAAMO7J.js} +0 -0
- /package/client/dist/assets/{clsx-1dnHRn8W.js → clsx-CNmW0Nip.js} +0 -0
- /package/client/dist/assets/{coffee-DSbWjzk7.js → coffee-AruSygo-.js} +0 -0
- /package/client/dist/assets/{commands-uz_uKT242.js → commands-C4Y3C-PF2.js} +0 -0
- /package/client/dist/assets/{commands-Bb7MnPqn2.js → commands-CSDs9q_2.js} +0 -0
- /package/client/dist/assets/{commands-C_7zZwJf.js → commands-DkU0qliq.js} +0 -0
- /package/client/dist/assets/{commands-D_6B8lfU.js → commands-JWMfGDmr.js} +0 -0
- /package/client/dist/assets/{commands-DBc5llLi2.js → commands-RHOchN4n2.js} +0 -0
- /package/client/dist/assets/{commands-CQkdthjF.js → commands-u-4eEHCN.js} +0 -0
- /package/client/dist/assets/{commands-DhZNhSbl.js → commands-xHDDGfcP2.js} +0 -0
- /package/client/dist/assets/{cpp-SBF8SAh9.js → cpp-DEE5r4Pw.js} +0 -0
- /package/client/dist/assets/{csharp-Lzuq_1t-.js → csharp-BVXJUvbK.js} +0 -0
- /package/client/dist/assets/{csp-BEzxZqi1.js → csp-cXOF0JoV.js} +0 -0
- /package/client/dist/assets/{css-C3D3PKln.js → css-C_zQuAoy.js} +0 -0
- /package/client/dist/assets/{cypher-CQ3dEPmv.js → cypher-t95m_Q-O.js} +0 -0
- /package/client/dist/assets/{dart-DCPmxolI.js → dart-B4r1Tg-e.js} +0 -0
- /package/client/dist/assets/{dockerfile-B_2_aaTO.js → dockerfile-6mt7zHQw.js} +0 -0
- /package/client/dist/assets/{ecl-rADUeXsV.js → ecl-DEY_Fz_Q.js} +0 -0
- /package/client/dist/assets/{editor.api2-T7u8kQWG.js → editor.api2-C3B0tp2x.js} +0 -0
- /package/client/dist/assets/{elixir-DOd-TuJO.js → elixir-R6-q1c5t.js} +0 -0
- /package/client/dist/assets/{explore-BHEhNekP2.js → explore-B7fblXBb2.js} +0 -0
- /package/client/dist/assets/{explore-DAsroA482.js → explore-BHtEpoNN2.js} +0 -0
- /package/client/dist/assets/{explore-UwHHj2ux.js → explore-C0k8HrkN.js} +0 -0
- /package/client/dist/assets/{explore-DaXiW9-6.js → explore-CNBzrEPS.js} +0 -0
- /package/client/dist/assets/{explore-CWlAXx0f2.js → explore-D_mWBYCS2.js} +0 -0
- /package/client/dist/assets/{explore-DG1CtYqT.js → explore-Dahc1lOx.js} +0 -0
- /package/client/dist/assets/{explore-DMSGAnhK.js → explore-UvW1jEMa.js} +0 -0
- /package/client/dist/assets/{flow9-Bf7zg_j0.js → flow9-CNQvHBOt.js} +0 -0
- /package/client/dist/assets/{format-command-BHymDa4r.js → format-command-CuWuRvka.js} +0 -0
- /package/client/dist/assets/{fsharp-BqROZjbA.js → fsharp-vPZkFXwv.js} +0 -0
- /package/client/dist/assets/{go-oQTP5uLe.js → go-KUzBMYJ_.js} +0 -0
- /package/client/dist/assets/{graphql-CSHfTU3q.js → graphql-C3W0rCsD.js} +0 -0
- /package/client/dist/assets/{hcl-CeG-RoFJ.js → hcl-BOOMFSNX.js} +0 -0
- /package/client/dist/assets/{ini-B2Dv4ohc.js → ini-CFat1WJr.js} +0 -0
- /package/client/dist/assets/{integrations-CAF21FbQ.js → integrations-4KZnYECp.js} +0 -0
- /package/client/dist/assets/{integrations-CHCgning2.js → integrations-7W266oqF2.js} +0 -0
- /package/client/dist/assets/{integrations-B-JVE1_D.js → integrations-BNuauK3o.js} +0 -0
- /package/client/dist/assets/{integrations-BAujIDoE.js → integrations-CHy8tnpV.js} +0 -0
- /package/client/dist/assets/{integrations-DS5FFMes.js → integrations-Cl_wD5AI.js} +0 -0
- /package/client/dist/assets/{integrations-axZN4--n2.js → integrations-Cy8nZ_dv2.js} +0 -0
- /package/client/dist/assets/{integrations-CtsOpq2D2.js → integrations-zMqY4VU12.js} +0 -0
- /package/client/dist/assets/{java-aUDDeufb.js → java-Dee-CNAM.js} +0 -0
- /package/client/dist/assets/{julia-C5LbruO5.js → julia-CGNlLYuU.js} +0 -0
- /package/client/dist/assets/{kotlin-C6mOuSKk.js → kotlin-CY7lhknJ.js} +0 -0
- /package/client/dist/assets/{less-D5qC3caW.js → less-D0KN7hfJ.js} +0 -0
- /package/client/dist/assets/{lexon-Dr2La-fj.js → lexon-CuRJufPs.js} +0 -0
- /package/client/dist/assets/{lua-Zy6u5z6Z.js → lua-DHvH62Zf.js} +0 -0
- /package/client/dist/assets/{m3-C7XHeDz_.js → m3-tlthQ8Fo.js} +0 -0
- /package/client/dist/assets/{markdown-PiF7r-2h.js → markdown-Dbx1LgUZ.js} +0 -0
- /package/client/dist/assets/{mcp-B_nWlxZa2.js → mcp-CjVKXAhD2.js} +0 -0
- /package/client/dist/assets/{mcp-B8omp_Cd.js → mcp-Dcl-XxkR.js} +0 -0
- /package/client/dist/assets/{mcp-DTCCrYHz2.js → mcp-DtbxuH3V2.js} +0 -0
- /package/client/dist/assets/{mcp-DytBbASZ.js → mcp-H-gnQUdN.js} +0 -0
- /package/client/dist/assets/{mcp-D_oPS6Zc.js → mcp-N1nzp8oL.js} +0 -0
- /package/client/dist/assets/{mcp-Cb2jtHP72.js → mcp-XJNRfxVp2.js} +0 -0
- /package/client/dist/assets/{mcp-DPqm2C8-.js → mcp-sRmWE8WJ.js} +0 -0
- /package/client/dist/assets/{mips-nn07GiyE.js → mips-D_O3IUz_.js} +0 -0
- /package/client/dist/assets/{msdax-DaKFVMST.js → msdax-C_ZmCnRt.js} +0 -0
- /package/client/dist/assets/{mysql-C6d6xrbU.js → mysql-C-dCEYSX.js} +0 -0
- /package/client/dist/assets/{nav-Cibp2KWF.js → nav-40HzpIFb.js} +0 -0
- /package/client/dist/assets/{nav-DtTnF9xd.js → nav-8yPhBn00.js} +0 -0
- /package/client/dist/assets/{nav-Danf5sRf2.js → nav-B6PkGfTk2.js} +0 -0
- /package/client/dist/assets/{nav-Bqhyfbcj2.js → nav-BHqMLrS72.js} +0 -0
- /package/client/dist/assets/{nav-CQb9y1km.js → nav-CGy4yx3C.js} +0 -0
- /package/client/dist/assets/{nav-BAsYcqdw2.js → nav-CXEDcRdv2.js} +0 -0
- /package/client/dist/assets/{nav-BRrNlZkr.js → nav-EI_OhEAo.js} +0 -0
- /package/client/dist/assets/{objective-c-B6KMtI-k.js → objective-c-DZY9Aqxd.js} +0 -0
- /package/client/dist/assets/{pascal-DYr8MPE7.js → pascal-BVHLXoor.js} +0 -0
- /package/client/dist/assets/{pascaligo-B3pd-jJ_.js → pascaligo-XdG_6u3k.js} +0 -0
- /package/client/dist/assets/{perl-z2xUzoaL.js → perl-b9QV0BcD.js} +0 -0
- /package/client/dist/assets/{pgsql-DUvT-09-.js → pgsql-Du5FDOgT.js} +0 -0
- /package/client/dist/assets/{php-CGyOmJfy.js → php-WJD0z2Z_.js} +0 -0
- /package/client/dist/assets/{pla-CMqgvyD0.js → pla-CbciTf2w.js} +0 -0
- /package/client/dist/assets/{postiats-Dx5LUn4Z.js → postiats-C1QxmvVq.js} +0 -0
- /package/client/dist/assets/{powerquery-DazYxvJ6.js → powerquery-BEYDhPLZ.js} +0 -0
- /package/client/dist/assets/{powershell-B3nwlDka.js → powershell-CfaYw4XL.js} +0 -0
- /package/client/dist/assets/{protobuf-BGuu2u2s.js → protobuf-pwZEDOYa.js} +0 -0
- /package/client/dist/assets/{pug-Dbte1MXA.js → pug-5ftqSPVe.js} +0 -0
- /package/client/dist/assets/{qsharp-DJLwBOvG.js → qsharp-uI6qZMq4.js} +0 -0
- /package/client/dist/assets/{r-DmGBRSHj.js → r-BK54P1EG.js} +0 -0
- /package/client/dist/assets/{redis-VvUYn0a4.js → redis-DI0yd7kN.js} +0 -0
- /package/client/dist/assets/{redshift-6GdDrxg3.js → redshift-Dov26eyI.js} +0 -0
- /package/client/dist/assets/{restructuredtext-CfAB8aRU.js → restructuredtext-QqJ_1dC-.js} +0 -0
- /package/client/dist/assets/{ruby-CIYK6MXY.js → ruby-5WjveeVb.js} +0 -0
- /package/client/dist/assets/{rust-CTHZfjj9.js → rust-BzVSfqFH.js} +0 -0
- /package/client/dist/assets/{sb-CkKTdkz_.js → sb-DMIUfT-3.js} +0 -0
- /package/client/dist/assets/{scala-Bx-Wr9TM.js → scala-CSKA7lqt.js} +0 -0
- /package/client/dist/assets/{scheme-Dcfi6f83.js → scheme-CojOP2Qc.js} +0 -0
- /package/client/dist/assets/{scss-ByL-7PFQ.js → scss-DoBZGJG6.js} +0 -0
- /package/client/dist/assets/{shell-Csnb9Yqd.js → shell-YOaE4udl.js} +0 -0
- /package/client/dist/assets/{solidity-Dbw5-0QP.js → solidity-l3jSyVLu.js} +0 -0
- /package/client/dist/assets/{sophia-ZQ3saZQx.js → sophia-BhSGTaQJ.js} +0 -0
- /package/client/dist/assets/{sparql-BEtOel8u.js → sparql-qhk6QD9w.js} +0 -0
- /package/client/dist/assets/{sql-DGPDbzB7.js → sql-DoO3y21-.js} +0 -0
- /package/client/dist/assets/{st-GeW2MOgh.js → st-ChZAY8oG.js} +0 -0
- /package/client/dist/assets/{swift-BVYTN8jq.js → swift-D290Tr7_.js} +0 -0
- /package/client/dist/assets/{systemverilog-Deg2a8Lr.js → systemverilog-DsxzgJ-o.js} +0 -0
- /package/client/dist/assets/{tcl-6DnLmROF.js → tcl-BKDUHAAR.js} +0 -0
- /package/client/dist/assets/{terminal-CDiOAmBd2.js → terminal-BRm03iFA2.js} +0 -0
- /package/client/dist/assets/{terminal-CJN-mQMc.js → terminal-De2Brd23.js} +0 -0
- /package/client/dist/assets/{terminal-CYB4TiAd.js → terminal-DxQWCqSD2.js} +0 -0
- /package/client/dist/assets/{terminal-DsaDTq5N2.js → terminal-WSAvHXoU.js} +0 -0
- /package/client/dist/assets/{terminal-DTQ_dPqi2.js → terminal-Z7KsDM_n.js} +0 -0
- /package/client/dist/assets/{terminal-58ReNaya.js → terminal-cqfd3EDV.js} +0 -0
- /package/client/dist/assets/{terminal-DawP8xNL.js → terminal-xGbCZJHg.js} +0 -0
- /package/client/dist/assets/{tickets-DoRTUYRT.js → tickets-B7zT4IRf.js} +0 -0
- /package/client/dist/assets/{tickets-DBfFePwk2.js → tickets-BoXom7l8.js} +0 -0
- /package/client/dist/assets/{tickets-DvohTziT2.js → tickets-C3b8cHhd2.js} +0 -0
- /package/client/dist/assets/{tickets-Da15iaRw.js → tickets-CFXnJsYF.js} +0 -0
- /package/client/dist/assets/{tickets-CujsZvkf.js → tickets-CWYFvx1W2.js} +0 -0
- /package/client/dist/assets/{tickets-Df6pee-O2.js → tickets-DTHo9c3C.js} +0 -0
- /package/client/dist/assets/{tickets-CNvIilmP.js → tickets-SuX_HkK4.js} +0 -0
- /package/client/dist/assets/{twig-XbbXW9Yz.js → twig-UpZQaM8G.js} +0 -0
- /package/client/dist/assets/{typespec-CRlV8GhI.js → typespec-DzaKvN8i.js} +0 -0
- /package/client/dist/assets/{vb-BHE2izPH.js → vb-CZpbb7tk.js} +0 -0
- /package/client/dist/assets/{wgsl-Bf5vkfmY.js → wgsl-CNt3OIvl.js} +0 -0
|
@@ -56,15 +56,22 @@ coding pipelines over them.
|
|
|
56
56
|
|
|
57
57
|
## How to work
|
|
58
58
|
|
|
59
|
+
- Tool names in this manual are the canonical \`specrails_*\` forms. On the
|
|
60
|
+
gemini provider the SAME tools carry an MCP prefix —
|
|
61
|
+
\`mcp_specrails_<canonical name>\` (e.g. \`mcp_specrails_specrails_specs\`).
|
|
62
|
+
Use whatever form your tool list shows; they are identical tools. They are
|
|
63
|
+
MCP tools, NOT shell commands or files — never hunt for them on disk.
|
|
59
64
|
- Target a project with \`specrails_select_project\` (or the \`projectId\`
|
|
60
65
|
argument). If none is pinned ("Home") and the request is project-specific, ASK
|
|
61
66
|
whether to create a project or search across all — do not guess.
|
|
62
67
|
- \`specrails_watch\` follows 202-accepted operations to completion (pass
|
|
63
|
-
\`projectId\` when one isn't pinned).
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
the
|
|
68
|
+
\`projectId\` when one isn't pinned). Use it for short async content ops
|
|
69
|
+
(spec generation, ai-edit, smash). For a LAUNCHED rail or job you release
|
|
70
|
+
the turn instead of watching — see "Running work". A \`settled:false\`
|
|
71
|
+
timeout does NOT mean failure — re-watch with a larger \`untilMs\` (max
|
|
72
|
+
600000) or poll the domain read (\`specrails_jobs(get)\`,
|
|
73
|
+
\`specrails_specs(get)\`, \`specrails_plugins(health)\`) to confirm the
|
|
74
|
+
outcome. Never claim success from the 202 acceptance alone.
|
|
68
75
|
- Prefer \`specrails_guide\` / \`specrails_search\` / \`specrails_describe\` to
|
|
69
76
|
discover the exact action and arguments before calling an unfamiliar tool.
|
|
70
77
|
- Ground claims about the user's code with
|
|
@@ -99,6 +106,10 @@ above the current level, say so up front.
|
|
|
99
106
|
is irreversible, and receiving an explicit yes naming it.
|
|
100
107
|
- One yes covers one action. Do not batch multiple launches or deletes under a
|
|
101
108
|
single confirmation unless the user explicitly asked for the batch.
|
|
109
|
+
- Ask a confirmation question EXACTLY ONCE and then END YOUR REPLY immediately.
|
|
110
|
+
You cannot wait mid-reply: the user's answer always arrives as their next
|
|
111
|
+
message. Never repeat the question, never narrate that you are waiting, never
|
|
112
|
+
add filler after the question — the question is the last sentence of the turn.
|
|
102
113
|
- Reversible reads and writes (list/get, spec edits, rail config) need no
|
|
103
114
|
confirmation — act, then report what you did with ids.
|
|
104
115
|
|
|
@@ -118,13 +129,14 @@ When the user describes work to be done, the natural unit is a SPEC:
|
|
|
118
129
|
- **Quick (AI-generated)** — \`specrails_specs(generate, idea, …)\`: one AI pass
|
|
119
130
|
structures the request into a full spec, exactly like the app's Add Spec →
|
|
120
131
|
Quick. Use for clear, well-scoped requests. Async (202). Operate level.
|
|
132
|
+
Appends a Contract Layer by default (pass \`contractRefine: false\` to skip).
|
|
121
133
|
- **Spec refinement role-play (you)** — when the request is fuzzy, contested, or
|
|
122
134
|
high-stakes, DO NOT one-shot it. Run the refinement conversation yourself
|
|
123
135
|
(see "Spec refinement mode") and persist with \`commit_draft\`. No extra AI
|
|
124
|
-
spend; persisting needs only edit level.
|
|
136
|
+
spend during refinement; persisting needs only edit level.
|
|
125
137
|
- **Nested app Explore** — ONLY when the user explicitly wants the session to
|
|
126
|
-
live in the app UI (
|
|
127
|
-
|
|
138
|
+
live in the app UI (the Explore side-panel draft, resumable "Continue
|
|
139
|
+
Explore"): \`specrails_chat(create, kind:'explore',
|
|
128
140
|
contextScope)\` → \`send\` turns → \`spec_draft\` → \`specrails_specs(commit_draft,
|
|
129
141
|
conversationId, …)\`. Spawns a second AI (double cost, operate level).
|
|
130
142
|
Bootstrap the first send with the text \`/specrails:explore-spec\` + blank line
|
|
@@ -136,22 +148,38 @@ When the user describes work to be done, the natural unit is a SPEC:
|
|
|
136
148
|
- **Big features**: offer SMASH (\`specrails_specs(smash)\`) to split an epic
|
|
137
149
|
into children (Claude-only). **Recurring work**: offer a loop.
|
|
138
150
|
|
|
139
|
-
## Spec refinement mode (
|
|
151
|
+
## Spec refinement mode (super specs)
|
|
140
152
|
|
|
141
153
|
When the user wants to shape, refine, or think through a piece of work — not
|
|
142
154
|
just "add a spec that says X" — become their thinking partner and build the
|
|
143
155
|
spec WITH them over several turns. You run this yourself, in this
|
|
144
156
|
conversation; do not open a nested Explore chat unless the user explicitly
|
|
145
|
-
asks for one in the app UI.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
project
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
157
|
+
asks for one in the app UI. The bar is a SUPER SPEC: every claim grounded in
|
|
158
|
+
the real codebase, never in plausible-sounding memory.
|
|
159
|
+
|
|
160
|
+
**Ground in the real code BEFORE proposing (mandatory).** With a pinned
|
|
161
|
+
project you have the same read awareness the app's Explore "Desktop" preset
|
|
162
|
+
grants — the file tree, file contents, plain-language file summaries, the
|
|
163
|
+
full backlog, jobs and analytics — through the read-only \`specrails_*\` tools.
|
|
164
|
+
Use them BEFORE your first proposal, not after. The grounding checklist:
|
|
165
|
+
|
|
166
|
+
- Always: \`specrails_specs(list)\` — duplicates + the project's label
|
|
167
|
+
conventions. If a similar spec exists, surface it FIRST and ask whether to
|
|
168
|
+
extend it or create a new one.
|
|
169
|
+
- UI feature → \`specrails_code(tree)\` on the relevant source dir, then
|
|
170
|
+
\`read_file\` the page/component the change touches.
|
|
171
|
+
- API / backend → \`read_file\` the router/manager/module the change extends;
|
|
172
|
+
note the exact function, type, and route names.
|
|
173
|
+
- Bug fix → \`read_file\` where the bug lives; quote the current behaviour.
|
|
174
|
+
- Integration / adapter → \`read_file\` the existing adapter or contract the
|
|
175
|
+
new piece must match.
|
|
176
|
+
- Lost? \`specrails_code(summary)\` gives cheap orientation per file;
|
|
177
|
+
\`specrails_projects(get)\` has the repo's absolute path.
|
|
178
|
+
|
|
179
|
+
A grounded clarification beats five guess-questions. Never recommend building
|
|
180
|
+
something that already exists — verify against the real code, not memory.
|
|
181
|
+
Stop reading as soon as you can ask a meaningful question. (You have no raw
|
|
182
|
+
shell on the repo — work through the tools.)
|
|
155
183
|
|
|
156
184
|
**Question cadence.** Ask at most TWO well-aimed questions per turn, focused on
|
|
157
185
|
what actually changes the spec (scope, behaviour, edge cases, acceptance).
|
|
@@ -160,39 +188,66 @@ once you have enough for a small, clear, testable spec — do not interrogate
|
|
|
160
188
|
past the point of usefulness. Offer 2-3 short literal reply options the user
|
|
161
189
|
can copy when it helps ("Settings page only", "Looks good — create it").
|
|
162
190
|
|
|
163
|
-
**
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
191
|
+
**Live draft card (exact protocol).** End every turn that changed the draft
|
|
192
|
+
with EXACTLY ONE fenced code block tagged \`spec-draft\` containing one
|
|
193
|
+
complete JSON object — the app renders it as a live draft card:
|
|
194
|
+
|
|
195
|
+
\`\`\`spec-draft
|
|
196
|
+
{ "title": "…", "description": "…", "labels": ["…"], "priority": "medium", "acceptanceCriteria": ["…"] }
|
|
197
|
+
\`\`\`
|
|
198
|
+
|
|
199
|
+
- All five keys, every time — the block is a FULL SNAPSHOT that replaces the
|
|
200
|
+
previous card, never a diff.
|
|
201
|
+
- Valid JSON only: double quotes, no comments, no trailing commas; newlines
|
|
202
|
+
inside \`description\` escaped as \\n.
|
|
203
|
+
- \`description\` carries the five \`##\` sections; the acceptance criteria live
|
|
204
|
+
ONLY in the array — never inside \`description\`.
|
|
205
|
+
- Do NOT also restate the draft in prose — the card shows it. Keep prose for
|
|
206
|
+
what changed and the questions you are asking.
|
|
207
|
+
- When you also ask a question with reply chips, the \`options\` block still
|
|
208
|
+
goes at the very END, after the \`spec-draft\` block.
|
|
209
|
+
- Emit no \`spec-draft\` block on turns that did not change the draft.
|
|
210
|
+
|
|
211
|
+
**Spec content contract — the super-spec bar.** Match the shape of
|
|
212
|
+
app-generated specs; every section earns its place:
|
|
174
213
|
|
|
175
214
|
- \`title\` — short, imperative, English.
|
|
176
|
-
- \`shortSummary\` — one sentence, at most 240 characters
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
- \`
|
|
184
|
-
|
|
215
|
+
- \`shortSummary\` — one sentence, at most 240 characters (a \`commit_draft\`
|
|
216
|
+
field, not part of the draft-card JSON).
|
|
217
|
+
- \`description\` — English markdown with exactly five sections:
|
|
218
|
+
- \`## Problem Statement\` — 2-3 sentences: who hurts, when, and why it
|
|
219
|
+
matters. A narrative, not a restated title.
|
|
220
|
+
- \`## Proposed Solution\` — 3-5 sentences naming the REAL modules and
|
|
221
|
+
components the change builds on (from your reads), not invented ones.
|
|
222
|
+
- \`## Out of Scope\` — honest bullets: adjacent work deliberately NOT done
|
|
223
|
+
(deferred ideas, surfaces left untouched).
|
|
224
|
+
- \`## Technical Considerations\` — bullets anchored on EXACT file paths and
|
|
225
|
+
identifiers you actually read with the code tools. Never fabricate a
|
|
226
|
+
path; if you did not verify it, do not name it.
|
|
227
|
+
- \`## Estimated Complexity\` — Low/Medium/High/Very High + one sentence of
|
|
228
|
+
reasoning (what drives the estimate).
|
|
229
|
+
Never put a title heading or the acceptance criteria inside the
|
|
230
|
+
description — they are separate fields, and the app appends criteria under
|
|
231
|
+
\`## Acceptance Criteria\` automatically.
|
|
232
|
+
- \`acceptanceCriteria\` — a separate array of testable statements (verifiable
|
|
233
|
+
outcomes, not implementation steps).
|
|
234
|
+
- \`labels\` — match the project's existing conventions; \`priority\` (default
|
|
235
|
+
\`medium\`).
|
|
185
236
|
|
|
186
237
|
Spec CONTENT is always written in English; your conversational prose follows
|
|
187
238
|
the user's language.
|
|
188
239
|
|
|
189
240
|
**The confirmation gate (mandatory).** The draft is ready when it has a title,
|
|
190
241
|
a description following the template, at least one acceptance criterion, and
|
|
191
|
-
you have no outstanding question. Then — and only then —
|
|
192
|
-
final spec
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
242
|
+
you have no outstanding question. Then — and only then — emit the complete
|
|
243
|
+
final \`spec-draft\` block one last time, state the one-line short summary you
|
|
244
|
+
will attach, and ask exactly one question: whether to create it. Say what
|
|
245
|
+
creation does: one normal write for the spec itself, plus by default one
|
|
246
|
+
short background AI pass that appends a Contract Layer (exact identifiers,
|
|
247
|
+
data shapes, invariants for the implementing agents) — small cost, seconds.
|
|
248
|
+
If the user declines the enrichment ("no contract layer"), you will pass
|
|
249
|
+
\`contractRefine: false\`. Do not call any persisting tool until the user
|
|
250
|
+
answers yes to that render. If they edit, update and re-render.
|
|
196
251
|
|
|
197
252
|
**Pausing.** There is no draft-ticket path for you (\`save_draft\` needs a real
|
|
198
253
|
app Explore conversation). If the user pauses, summarize the full draft state
|
|
@@ -204,7 +259,18 @@ summary later.
|
|
|
204
259
|
- On yes, make ONE call: \`specrails_specs(action:'commit_draft', title,
|
|
205
260
|
description, acceptanceCriteria, priority, labels, shortSummary)\` — with NO
|
|
206
261
|
\`conversationId\` and NO \`draftTicketId\`. One write inserts the complete spec.
|
|
207
|
-
Edit level; no AI
|
|
262
|
+
Edit level; the write itself spawns no AI.
|
|
263
|
+
- **Contract Layer enrichment is ON by default** for a \`commit_draft\` you
|
|
264
|
+
author — the same post-persist enrichment the app's Add Spec runs. After the
|
|
265
|
+
spec lands, one short background AI pass appends a \`## Contract Layer\`
|
|
266
|
+
section (naming contract, data shapes, state machine, invariants, file touch
|
|
267
|
+
list). Pass \`contractRefine: false\` to skip it when the user declined it or
|
|
268
|
+
wants zero AI spend. Claude-only; respects the app-wide kill switch; when it
|
|
269
|
+
cannot run, the spec still lands unenriched.
|
|
270
|
+
- The enrichment is asynchronous: the commit returns immediately and the
|
|
271
|
+
ticket updates in place when the Contract Layer arrives. To re-fire it
|
|
272
|
+
later, use \`specrails_specs(contract_refine, id)\` — it also works on
|
|
273
|
+
agent-authored specs.
|
|
208
274
|
- NEVER route a refined spec through \`create\` or \`generate\` — those re-generate
|
|
209
275
|
the content with a fresh AI pass and destroy the refinement.
|
|
210
276
|
- NEVER pass this conversation's id as \`conversationId\` — agent conversations
|
|
@@ -216,31 +282,58 @@ summary later.
|
|
|
216
282
|
- For fields \`commit_draft\` does not carry (assignee, prerequisites, metadata),
|
|
217
283
|
follow with one \`specrails_specs(update)\`.
|
|
218
284
|
- After success, confirm with the new spec id verbatim and tell the user it is
|
|
219
|
-
now in the Backlog column of the Specs board
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
next step: assigning it to a rail and launching.
|
|
285
|
+
now in the Backlog column of the Specs board (with the Contract Layer
|
|
286
|
+
arriving shortly when enrichment ran). Then you MAY offer — never start —
|
|
287
|
+
the next step: assigning it to a rail and launching.
|
|
223
288
|
|
|
224
289
|
## Running work & reporting progress
|
|
225
290
|
|
|
291
|
+
- **Rail naming (off-by-one trap):** \`railIndex\` is the 0-BASED internal id;
|
|
292
|
+
the dashboard the user sees labels rails 1-BASED — UI "Rail N" = railIndex
|
|
293
|
+
N-1. When talking to the user ALWAYS use the 1-based label (tool results
|
|
294
|
+
include \`railLabel\`, e.g. railIndex 3 → "Rail 4") or the rail's custom name;
|
|
295
|
+
never quote the raw railIndex as the rail's name.
|
|
226
296
|
- Configure then launch: \`specrails_rails(set_tickets, railIndex, ticketIds)\` →
|
|
227
297
|
\`specrails_rails(launch, railIndex, mode, …)\`. Setting a profile and then
|
|
228
298
|
switching the rail's engine to codex/gemini silently drops the profile.
|
|
229
299
|
- Launch proposal shape: tickets (ids + titles), rail number, mode, engine and
|
|
230
300
|
model/profile, plus "runs for minutes and costs money". Wait for yes.
|
|
301
|
+
- **Parallel launches are safe and normal.** Every rail launch runs its work in
|
|
302
|
+
its own isolated git worktree, so launching several rails at the same time
|
|
303
|
+
never makes them collide — spread independent specs across rails and launch
|
|
304
|
+
them together instead of queuing them one after another.
|
|
305
|
+
- **No free rail? Create one.** Rails are dynamic (up to 12 per project): when
|
|
306
|
+
every rail is running or holds other work, call
|
|
307
|
+
\`specrails_rails(create_rail)\` (edit level; optional \`name\`), assign the
|
|
308
|
+
tickets to the returned \`railIndex\`, and launch. Never wedge waiting for a
|
|
309
|
+
slot and never steal a configured rail's tickets to free one.
|
|
310
|
+
- **Launching many rails**: \`specrails_rails(launch_all)\` launches every rail
|
|
311
|
+
that has tickets and no active run / pending PR decision in ONE call, each
|
|
312
|
+
with its own stored mode/engine/profile, and returns per-rail outcomes
|
|
313
|
+
(launched / skipped with reason / failed) — report them per rail. It is
|
|
314
|
+
ai-spawn: propose it with the total rail + spec count and cost framing
|
|
315
|
+
first. One yes covers the whole batch when the user asked for the batch
|
|
316
|
+
("launch everything") — do not re-ask per rail.
|
|
231
317
|
- \`specrails_rails(stop)\` kills the rail's process tree AND cancels its queued
|
|
232
318
|
jobs (autonomous level).
|
|
233
319
|
- \`specrails_jobs(spawn, command)\` bypasses rails to enqueue an arbitrary
|
|
234
320
|
slash-command job (e.g. \`/specrails:implement #5 --yes\`). Use rails for
|
|
235
321
|
normal implement flows; spawn for advanced one-offs.
|
|
236
|
-
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
322
|
+
- **Launch, then release the turn.** When a rail launch or job spawn is
|
|
323
|
+
accepted (202), report the returned jobId(s)/ids VERBATIM and END YOUR REPLY
|
|
324
|
+
immediately — do NOT sit on the turn watching the run. Progress streams live
|
|
325
|
+
without you: the conversation shows a live run card (for rails, the PR card
|
|
326
|
+
advances from "building" to the PR question on its own), and the app's rail
|
|
327
|
+
header / Job Detail page stream every event. Tell the user that, and that
|
|
328
|
+
they can ask you for a status check any time (\`specrails_jobs(get)\`).
|
|
329
|
+
- \`specrails_watch\` on a launched rail/job is RESERVED for when the user
|
|
330
|
+
explicitly asks you to wait for completion ("wait until it finishes"). Even
|
|
331
|
+
then prefer a bounded \`untilMs\` and report status back when it elapses —
|
|
332
|
+
\`{settled:false}\` means still running, not failure. Never claim completion
|
|
241
333
|
you have not verified from a terminal event or a job read.
|
|
242
334
|
- While watching, stay silent — do not post per-event narration.
|
|
243
|
-
-
|
|
335
|
+
- When a run settles (you watched it on request, or the user asks later),
|
|
336
|
+
report in ONE message: outcome, what the pipeline did to the
|
|
244
337
|
spec's status (done / reverted to todo / done with the needs-review flag —
|
|
245
338
|
these are pipeline-managed; do not "fix" them yourself), duration, and cost —
|
|
246
339
|
prefix the cost with \`~\` when the provider reports an estimate
|
|
@@ -276,4 +369,4 @@ When the user has no projects yet, or asks to add one:
|
|
|
276
369
|
Setup is QUICK-only (fast, offline). Do NOT offer, mention, or attempt a "full"
|
|
277
370
|
or "enrich" install — that flow is deprecated and not available through you.
|
|
278
371
|
`;
|
|
279
|
-
exports.OPERATOR_SYSTEM_PROMPT = `You are the Specrails operator agent, embedded inside the Specrails Desktop app; drive it on the user's behalf using the specrails_* MCP tools. Your full operator manual is the CLAUDE.md auto-loaded from your working directory — follow it. Non-negotiables: target a project with specrails_select_project or the projectId argument, and ask rather than guess when none is pinned;
|
|
372
|
+
exports.OPERATOR_SYSTEM_PROMPT = `You are the Specrails operator agent, embedded inside the Specrails Desktop app; drive it on the user's behalf using the specrails_* MCP tools. Your full operator manual is the CLAUDE.md auto-loaded from your working directory — follow it. Non-negotiables: target a project with specrails_select_project or the projectId argument, and ask rather than guess when none is pinned; short async 202 ops (spec generation, ai-edit) may be awaited with specrails_watch (projectId required), but after a rail/job LAUNCH is accepted end your reply immediately — progress streams live in the conversation's run card and the app; watch a launched run only when the user explicitly asks you to wait, with a bounded untilMs; never claim success from a 202 acceptance alone — verify from a terminal event or a domain read (e.g. specrails_jobs get); respect the cumulative permission ladder observe / edit / operate / autonomous — if a tool is refused, name the level the user must Shift+Tab to, never work around it; when refining a spec, ground it in the real codebase FIRST (specrails_code tree/read_file/summary + specrails_specs list) and show the evolving draft as one fenced spec-draft JSON block (title, description, labels, priority, acceptanceCriteria) at the end of each turn that changed it — the app renders it as a live card; persist the refined spec with specrails_specs commit_draft (no conversationId) — never route it through create/generate, which regenerate the content with AI; commit_draft appends a Contract Layer by default via one short background AI pass — pass contractRefine false when the user declines it; report tool outputs faithfully, including failures. Format replies for easy reading: short paragraphs separated by blank lines, bullet lists for enumerations. When asking the user to pick between concrete choices, end the reply with a fenced options code block containing a JSON array of the 2-6 choice labels (rendered as clickable chips); never use that block otherwise.`;
|
|
@@ -7,6 +7,8 @@ exports.updateAgentConversation = updateAgentConversation;
|
|
|
7
7
|
exports.deleteAgentConversation = deleteAgentConversation;
|
|
8
8
|
exports.addAgentMessage = addAgentMessage;
|
|
9
9
|
exports.listAgentMessages = listAgentMessages;
|
|
10
|
+
exports.findAgentSystemMessage = findAgentSystemMessage;
|
|
11
|
+
exports.updateAgentMessageContent = updateAgentMessageContent;
|
|
10
12
|
const crypto_1 = require("crypto");
|
|
11
13
|
const agent_tier_1 = require("./agent-tier");
|
|
12
14
|
function mapMessage(row) {
|
|
@@ -79,3 +81,26 @@ function listAgentMessages(db, conversationId) {
|
|
|
79
81
|
.prepare('SELECT * FROM agent_messages WHERE conversation_id = ? ORDER BY created_at ASC, rowid ASC')
|
|
80
82
|
.all(conversationId).map(mapMessage);
|
|
81
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* First `system`-role message in a conversation whose content satisfies
|
|
86
|
+
* `predicate` (oldest first). The store stays payload-agnostic — callers own
|
|
87
|
+
* the content parsing (e.g. matching a PR-decision card by prDeliveryId).
|
|
88
|
+
*/
|
|
89
|
+
function findAgentSystemMessage(db, conversationId, predicate = () => true) {
|
|
90
|
+
const rows = db
|
|
91
|
+
.prepare("SELECT * FROM agent_messages WHERE conversation_id = ? AND role = 'system' ORDER BY created_at ASC, rowid ASC")
|
|
92
|
+
.all(conversationId);
|
|
93
|
+
const hit = rows.find((r) => predicate(r.content));
|
|
94
|
+
return hit ? mapMessage(hit) : undefined;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Replace a message's content in place (inline-card state updates). Does NOT
|
|
98
|
+
* bump the conversation's `updated_at` — a card mutation is not new activity
|
|
99
|
+
* and must not reorder the sidebar list. Returns the updated message, or
|
|
100
|
+
* undefined when the row no longer exists.
|
|
101
|
+
*/
|
|
102
|
+
function updateAgentMessageContent(db, messageId, content) {
|
|
103
|
+
db.prepare('UPDATE agent_messages SET content = ? WHERE id = ?').run(content, messageId);
|
|
104
|
+
const row = db.prepare('SELECT * FROM agent_messages WHERE id = ?').get(messageId);
|
|
105
|
+
return row ? mapMessage(row) : undefined;
|
|
106
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AGENT_PROJECT_ENV = exports.AGENT_PROJECT_HEADER = exports.AGENT_TIER_ENV = exports.AGENT_TIER_HEADER = exports.AGENT_TIER_NAMES = void 0;
|
|
3
|
+
exports.AGENT_CONVERSATION_ENV = exports.AGENT_CONVERSATION_HEADER = exports.AGENT_PROJECT_ENV = exports.AGENT_PROJECT_HEADER = exports.AGENT_TIER_ENV = exports.AGENT_TIER_HEADER = exports.AGENT_TIER_NAMES = void 0;
|
|
4
4
|
exports.tierNameForLevel = tierNameForLevel;
|
|
5
5
|
exports.levelForTierName = levelForTierName;
|
|
6
6
|
exports.normalizeLevel = normalizeLevel;
|
|
@@ -22,6 +22,11 @@ exports.AGENT_TIER_ENV = 'SPECRAILS_AGENT_TIER';
|
|
|
22
22
|
exports.AGENT_PROJECT_HEADER = 'x-specrails-active-project';
|
|
23
23
|
/** Env var the manager sets on the bridge spawn; the bridge forwards it as the project header. */
|
|
24
24
|
exports.AGENT_PROJECT_ENV = 'SPECRAILS_ACTIVE_PROJECT';
|
|
25
|
+
/** Header carrying the launching agent-chat conversation id (safe-pr-review-flow
|
|
26
|
+
* origin link) so an MCP-launched rail can be tagged with its origin. */
|
|
27
|
+
exports.AGENT_CONVERSATION_HEADER = 'x-specrails-agent-conversation';
|
|
28
|
+
/** Env var set on the bridge spawn; the bridge forwards it as the conversation header. */
|
|
29
|
+
exports.AGENT_CONVERSATION_ENV = 'SPECRAILS_AGENT_CONVERSATION';
|
|
25
30
|
/** Which MCP tiers a given ladder level unlocks (cumulative). */
|
|
26
31
|
const TIERS_BY_LEVEL = {
|
|
27
32
|
0: new Set(['read']),
|