@runfusion/fusion 0.73.0-beta.2 → 0.73.0-beta.4
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/agent-browser.mjs +8 -0
- package/dist/bin.js +7664 -11386
- package/dist/child-process-worker.js +4292 -8374
- package/dist/client/.vite/manifest.json +266 -256
- package/dist/client/assets/{AgentDetailView-CUoHZPZr.js → AgentDetailView-BBOL6AgZ.js} +3 -3
- package/dist/client/assets/{AgentPermissionPolicyEditor-DKoHJIlF.js → AgentPermissionPolicyEditor-DV7OPUhR.js} +1 -1
- package/dist/client/assets/{AgentsView-CaBo-FHV.js → AgentsView-B6xoAHyV.js} +4 -4
- package/dist/client/assets/ChatView-DwVjnxM8.js +8 -0
- package/dist/client/assets/{CommandCenter-wgiEIVuC.js → CommandCenter-DYWaoYFD.js} +9 -9
- package/dist/client/assets/DevServerView-BY5up-NA.js +1 -0
- package/dist/client/assets/{DirectoryPicker-B7YwgF53.js → DirectoryPicker-fM8MJa2r.js} +1 -1
- package/dist/client/assets/DocumentsView-D2KxsPG_.js +1 -0
- package/dist/client/assets/{EvalsView-BjyqxMS_.js → EvalsView-U8dOvTRM.js} +1 -1
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-_PMSa_gN.js → ExperimentalAgentOnboardingModal-C27y8Y-1.js} +1 -1
- package/dist/client/assets/{GoalsView-BzLA8GX9.js → GoalsView-D-2wmy-O.js} +1 -1
- package/dist/client/assets/{InsightsView-Cb_tUr1V.js → InsightsView-zLyuQL_l.js} +2 -2
- package/dist/client/assets/{MemoryView-CRxOPCQq.js → MemoryView-D-tSn48u.js} +2 -2
- package/dist/client/assets/{PiExtensionsManager-XQ5rWJT3.js → PiExtensionsManager-DvwmvGEY.js} +2 -2
- package/dist/client/assets/PluginManager-BACOwQAN.js +1 -0
- package/dist/client/assets/{PullRequestView-CX6fScVe.js → PullRequestView-DULyv21u.js} +2 -2
- package/dist/client/assets/{ReportModal-BSCk5ER1.css → ReportModal-BuhhqtXJ.css} +1 -1
- package/dist/client/assets/ReportModal-CUlKMFWa.js +21 -0
- package/dist/client/assets/{ResearchView-DgKzxRUL.js → ResearchView-DM_O3IFc.js} +2 -2
- package/dist/client/assets/{SecretsView-C83SIrjR.js → SecretsView-Bq3u_nAf.js} +1 -1
- package/dist/client/assets/SessionTerminal-D00ByR6U.js +2 -0
- package/dist/client/assets/SettingsModal-Bb3pIxiX.js +21 -0
- package/dist/client/assets/SettingsModal-CMLHZBhX.css +1 -0
- package/dist/client/assets/SettingsModal-QRaBE1ds.js +1 -0
- package/dist/client/assets/{SettingsTextareaRow-BKGsmZ7C.js → SettingsTextareaRow-CHOJ-qHz.js} +1 -1
- package/dist/client/assets/{SetupWizardModal-DIb4q-VT.js → SetupWizardModal-DriQyd81.js} +2 -2
- package/dist/client/assets/{SkillsView-D1Zxh1iX.js → SkillsView-BtDyujiZ.js} +1 -1
- package/dist/client/assets/{TodoView-CGIcE6Yr.js → TodoView-BNHUnz50.js} +2 -2
- package/dist/client/assets/{WorkflowNodeEditor-BtWrziOX.css → WorkflowNodeEditor-BNgkFJ_P.css} +1 -1
- package/dist/client/assets/WorkflowNodeEditor-BXikFpra.js +8 -0
- package/dist/client/assets/agent-import-generation-B2kYEm1O.js +1 -0
- package/dist/client/assets/app-B_HrdDXZ.js +13 -0
- package/dist/client/assets/{app-BsIXfnu-.js → app-C6yo-M_n.js} +1 -1
- package/dist/client/assets/{app-B-IdUeIu.js → app-CH8ZgPm4.js} +1 -1
- package/dist/client/assets/{app-D9ktpVhR.js → app-D4DpgDss.js} +1 -1
- package/dist/client/assets/{app-nBTNvNKK.js → app-Qv0blCyY.js} +1 -1
- package/dist/client/assets/{app-C8muVNUU.js → app-kFdtajPy.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-Dv83GkUE.js → architectureDiagram-3BPJPVTR-B-Efjj4Z.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-B_j-RJOz.js → blockDiagram-GPEHLZMM-CaOVxrlM.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-Cy3f-SD1.js → c4Diagram-AAUBKEIU-D8aYt5F1.js} +1 -1
- package/dist/client/assets/channel-5bPK6pTS.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-CPolddUJ.js → chunk-2J33WTMH-VSDT0J0r.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-BAGPgwkc.js → chunk-4BX2VUAB-Chx1wQgD.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-dzYFOH0q.js → chunk-55IACEB6-MlqjhIJg.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-ul9hGhiR.js → chunk-727SXJPM-BheQNUi8.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-C75yqe4-.js → chunk-AQP2D5EJ-C5EoJhfJ.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-BwiLAyup.js → chunk-FMBD7UC4-B8_8qP3j.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-CVv1sLhy.js → chunk-ND2GUHAM-BuglCGRx.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-D1c-k3xL.js → chunk-QZHKN3VN-B7_06dxp.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-Dv9RQDqG.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Dv9RQDqG.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DosMsFd6.js → cose-bilkent-S5V4N54A-Cm-ZOycx.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-9os-QBXe.js → dagre-BM42HDAG-Dj_Gwjpv.js} +1 -1
- package/dist/client/assets/{dashboard-view-CNVTxyWE.js → dashboard-view-B4CRL5Fy.js} +1 -1
- package/dist/client/assets/{dashboard-view-Bn7iL770.js → dashboard-view-noD9p0Zs.js} +1 -1
- package/dist/client/assets/{dashboard-view-iwAS1HTp.js → dashboard-view-pXXSUxG9.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-ChjuJgA6.js → diagram-2AECGRRQ-C_9BfShy.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-Cq10aB4z.js → diagram-5GNKFQAL-Cmg2qpCj.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-CKjyrzjg.js → diagram-KO2AKTUF-2FNo2HXb.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-DxCc1BsH.js → diagram-LMA3HP47-DgnVeCp-.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-DJWEkDsR.js → diagram-OG6HWLK6-iAIR50HH.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-gVkDYC92.js → erDiagram-TEJ5UH35-Da4I04eN.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-1lw1mQRQ.js → flowDiagram-I6XJVG4X-Bv9r2T0m.js} +1 -1
- package/dist/client/assets/{folder-open-Nmr7nRmN.js → folder-open-CwWtrDh6.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-Yzq4WZRo.js → ganttDiagram-6RSMTGT7-BMeO84U_.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-cFR9Gv8n.js → gitGraphDiagram-PVQCEYII-CWDh_RIb.js} +1 -1
- package/dist/client/assets/index-CB3mYxAB.css +1 -0
- package/dist/client/assets/index-CE7C_XsS.js +2661 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-BbRiTnD3.js → infoDiagram-5YYISTIA-BAE4KtCL.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DD4i2Znk.js → ishikawaDiagram-YF4QCWOH-C_iXAuOy.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-qHPO2M-C.js → journeyDiagram-JHISSGLW-BnxSHwDo.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-EuFfgxUv.js → kanban-definition-UN3LZRKU-DYNRm3Nu.js} +1 -1
- package/dist/client/assets/{mermaid.core-Cru9Vzsy.js → mermaid.core-B3hvDDep.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-mCvtfapj.js → mindmap-definition-RKZ34NQL-s7KBEuPD.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-BSc_a5Dz.js → pieDiagram-4H26LBE5-Cy1_IPUD.js} +1 -1
- package/dist/client/assets/{puzzle-Cz66CEWW.js → puzzle-DWc6gFQ7.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-Um2SLb_d.js → quadrantDiagram-W4KKPZXB-DqgVGp41.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-B94evN7g.js → requirementDiagram-4Y6WPE33-CA5-TDeF.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BH7NLX-K.js → sankeyDiagram-5OEKKPKP-Cuvi3RgE.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DusrBGQp.js → sequenceDiagram-3UESZ5HK-Da3GfmGP.js} +1 -1
- package/dist/client/assets/{shield-alert-CcQuaRHN.js → shield-alert-_iY63ED4.js} +1 -1
- package/dist/client/assets/{standing-instructions-template-CVnY93Xy.js → standing-instructions-template-CCd2YY9c.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-GRjL9YlX.js → stateDiagram-AJRCARHV-CZ_I9ENR.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-BBsv6ppQ.js → stateDiagram-v2-BHNVJYJU-BomoRVhY.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-DC6UeqjY.js → timeline-definition-PNZ67QCA-C3CYvIuR.js} +1 -1
- package/dist/client/assets/{upload-CjJp7lEX.js → upload-D0RrO65v.js} +1 -1
- package/dist/client/assets/{users-DgimRYHz.js → users-CGszBY2v.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-C272zK9h.js → vennDiagram-CIIHVFJN-By9fi8NW.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-KkRF-2j9.js → wardley-L42UT6IY-DErnXPkI.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-B4brtKRt.js → wardleyDiagram-YWT4CUSO-DFfXZVPk.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6--PFSKt1s.js → xychartDiagram-2RQKCTM6-9Y5oZ5mi.js} +1 -1
- package/dist/client/index.html +4 -2
- package/dist/client/version.json +1 -1
- package/dist/extension.js +4516 -8539
- package/dist/migrations/0000_initial.sql +2 -0
- package/dist/migrations/0026_bigint_counters.sql +85 -14
- package/dist/migrations/0033_fn-8505_wedge_notification.sql +5 -0
- package/dist/plugin-sdk/index.js +1 -0
- package/dist/plugins/.fusion-ce-agents/.fusion-ce-upstream-provenance.json +7 -0
- package/dist/plugins/.fusion-ce-agents/ce-adversarial-document-reviewer.md +115 -0
- package/dist/plugins/.fusion-ce-agents/ce-adversarial-reviewer.md +111 -0
- package/dist/plugins/.fusion-ce-agents/ce-agent-native-planning-strategist.md +71 -0
- package/dist/plugins/.fusion-ce-agents/ce-agent-native-reviewer.md +181 -0
- package/dist/plugins/.fusion-ce-agents/ce-ankane-readme-writer.md +50 -0
- package/dist/plugins/.fusion-ce-agents/ce-api-contract-reviewer.md +52 -0
- package/dist/plugins/.fusion-ce-agents/ce-architecture-strategist.md +53 -0
- package/dist/plugins/.fusion-ce-agents/ce-best-practices-researcher.md +122 -0
- package/dist/plugins/.fusion-ce-agents/ce-code-simplicity-reviewer.md +87 -0
- package/dist/plugins/.fusion-ce-agents/ce-coherence-reviewer.md +73 -0
- package/dist/plugins/.fusion-ce-agents/ce-correctness-reviewer.md +52 -0
- package/dist/plugins/.fusion-ce-agents/ce-data-integrity-guardian.md +75 -0
- package/dist/plugins/.fusion-ce-agents/ce-data-migration-reviewer.md +119 -0
- package/dist/plugins/.fusion-ce-agents/ce-deployment-verification-agent.md +164 -0
- package/dist/plugins/.fusion-ce-agents/ce-design-implementation-reviewer.md +94 -0
- package/dist/plugins/.fusion-ce-agents/ce-design-iterator.md +197 -0
- package/dist/plugins/.fusion-ce-agents/ce-design-lens-reviewer.md +56 -0
- package/dist/plugins/.fusion-ce-agents/ce-feasibility-reviewer.md +65 -0
- package/dist/plugins/.fusion-ce-agents/ce-figma-design-sync.md +172 -0
- package/dist/plugins/.fusion-ce-agents/ce-framework-docs-researcher.md +100 -0
- package/dist/plugins/.fusion-ce-agents/ce-git-history-analyzer.md +47 -0
- package/dist/plugins/.fusion-ce-agents/ce-issue-intelligence-analyst.md +207 -0
- package/dist/plugins/.fusion-ce-agents/ce-julik-frontend-races-reviewer.md +52 -0
- package/dist/plugins/.fusion-ce-agents/ce-learnings-researcher.md +254 -0
- package/dist/plugins/.fusion-ce-agents/ce-maintainability-reviewer.md +77 -0
- package/dist/plugins/.fusion-ce-agents/ce-pattern-recognition-specialist.md +62 -0
- package/dist/plugins/.fusion-ce-agents/ce-performance-oracle.md +115 -0
- package/dist/plugins/.fusion-ce-agents/ce-performance-reviewer.md +54 -0
- package/dist/plugins/.fusion-ce-agents/ce-pr-comment-resolver.md +63 -0
- package/dist/plugins/.fusion-ce-agents/ce-previous-comments-reviewer.md +68 -0
- package/dist/plugins/.fusion-ce-agents/ce-product-lens-reviewer.md +92 -0
- package/dist/plugins/.fusion-ce-agents/ce-project-standards-reviewer.md +84 -0
- package/dist/plugins/.fusion-ce-agents/ce-reliability-reviewer.md +52 -0
- package/dist/plugins/.fusion-ce-agents/ce-repo-research-analyst.md +263 -0
- package/dist/plugins/.fusion-ce-agents/ce-scope-guardian-reviewer.md +79 -0
- package/dist/plugins/.fusion-ce-agents/ce-security-lens-reviewer.md +48 -0
- package/dist/plugins/.fusion-ce-agents/ce-security-reviewer.md +54 -0
- package/dist/plugins/.fusion-ce-agents/ce-security-sentinel.md +98 -0
- package/dist/plugins/.fusion-ce-agents/ce-session-historian.md +89 -0
- package/dist/plugins/.fusion-ce-agents/ce-slack-researcher.md +133 -0
- package/dist/plugins/.fusion-ce-agents/ce-spec-flow-analyzer.md +87 -0
- package/dist/plugins/.fusion-ce-agents/ce-swift-ios-reviewer.md +107 -0
- package/dist/plugins/.fusion-ce-agents/ce-testing-reviewer.md +52 -0
- package/dist/plugins/.fusion-ce-agents/ce-web-researcher.md +127 -0
- package/dist/plugins/.fusion-ce-skills/.fusion-ce-upstream-provenance.json +7 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/SKILL.md +318 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/agents/slack-researcher.md +127 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/brainstorm-sections.md +354 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/handoff.md +172 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/html-rendering.md +662 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/markdown-rendering.md +236 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/synthesis-summary.md +271 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/universal-brainstorming.md +71 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/references/visual-probes.md +128 -0
- package/dist/plugins/.fusion-ce-skills/ce-brainstorm/scripts/visual-probe-server.js +419 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/SKILL.md +821 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/action-class-rubric.md +26 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/bulk-preview.md +112 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/cross-model-review.md +63 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/diff-scope.md +41 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/findings-schema.json +137 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/persona-catalog.md +63 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/adversarial-reviewer.md +102 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/agent-native-reviewer.md +173 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/api-contract-reviewer.md +43 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/correctness-reviewer.md +43 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/data-migration-reviewer.md +111 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/deployment-verification-agent.md +157 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/julik-frontend-races-reviewer.md +44 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/learnings-researcher.md +247 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/maintainability-reviewer.md +68 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/performance-reviewer.md +45 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/previous-comments-reviewer.md +59 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/project-standards-reviewer.md +75 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/reliability-reviewer.md +43 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/security-reviewer.md +45 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/swift-ios-reviewer.md +99 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/personas/testing-reviewer.md +43 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/review-output-template.md +170 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/subagent-template.md +199 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/tracker-defer.md +149 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/validator-template.md +89 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/references/walkthrough.md +249 -0
- package/dist/plugins/.fusion-ce-skills/ce-code-review/scripts/cross-model-adversarial-review.sh +218 -0
- package/dist/plugins/.fusion-ce-skills/ce-commit/SKILL.md +105 -0
- package/dist/plugins/.fusion-ce-skills/ce-commit-push-pr/SKILL.md +134 -0
- package/dist/plugins/.fusion-ce-skills/ce-commit-push-pr/references/branch-creation.md +55 -0
- package/dist/plugins/.fusion-ce-skills/ce-commit-push-pr/references/pr-description-writing.md +115 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/SKILL.md +712 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/assets/resolution-template.md +94 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/best-practices-researcher.md +115 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/data-integrity-guardian.md +68 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/framework-docs-researcher.md +93 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/pattern-recognition-specialist.md +55 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/performance-oracle.md +108 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/security-sentinel.md +91 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/agents/session-historian.md +83 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/concepts-vocabulary.md +78 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/schema.yaml +231 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/references/yaml-schema.md +118 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/discover-sessions.sh +130 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/extract-errors.py +254 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/extract-metadata.py +456 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/extract-skeleton.py +570 -0
- package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/validate-frontmatter.py +137 -0
- package/dist/plugins/.fusion-ce-skills/ce-debug/SKILL.md +257 -0
- package/dist/plugins/.fusion-ce-skills/ce-debug/references/anti-patterns.md +91 -0
- package/dist/plugins/.fusion-ce-skills/ce-debug/references/defense-in-depth.md +35 -0
- package/dist/plugins/.fusion-ce-skills/ce-debug/references/investigation-techniques.md +374 -0
- package/dist/plugins/.fusion-ce-skills/ce-doc-review/SKILL.md +70 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/SKILL.md +401 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/issue-intelligence-analyst.md +200 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/learnings-researcher.md +247 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/slack-researcher.md +127 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/agents/web-researcher.md +121 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/divergent-ideation.md +89 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/html-rendering.md +662 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/ideation-sections.md +191 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/markdown-rendering.md +236 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/post-ideation-workflow.md +166 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/universal-ideation.md +107 -0
- package/dist/plugins/.fusion-ce-skills/ce-ideate/references/web-research-cache.md +55 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/SKILL.md +858 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/agent-native-planning-strategist.md +62 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/architecture-strategist.md +46 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/best-practices-researcher.md +114 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/data-integrity-guardian.md +68 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/data-migration-reviewer.md +103 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/deployment-verification-agent.md +157 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/framework-docs-researcher.md +93 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/git-history-analyzer.md +40 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/learnings-researcher.md +247 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/pattern-recognition-specialist.md +55 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/performance-oracle.md +108 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/repo-research-analyst.md +256 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/security-sentinel.md +91 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/slack-researcher.md +127 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/spec-flow-analyzer.md +80 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/agents/web-researcher.md +121 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/approach-altitude.md +55 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/deepening-workflow.md +259 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/html-rendering.md +668 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/markdown-rendering.md +236 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/plan-handoff.md +126 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/plan-sections.md +405 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/synthesis-summary.md +396 -0
- package/dist/plugins/.fusion-ce-skills/ce-plan/references/universal-planning.md +168 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/SKILL.md +53 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/agents/pr-comment-resolver.md +56 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/evaluation-rubric.md +106 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/full-mode.md +283 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/references/targeted-mode.md +45 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/get-pr-comments +159 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/get-thread-for-comment +76 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/reply-to-pr-thread +33 -0
- package/dist/plugins/.fusion-ce-skills/ce-resolve-pr-feedback/scripts/resolve-pr-thread +23 -0
- package/dist/plugins/.fusion-ce-skills/ce-strategy/SKILL.md +97 -0
- package/dist/plugins/.fusion-ce-skills/ce-strategy/references/interview.md +143 -0
- package/dist/plugins/.fusion-ce-skills/ce-strategy/references/strategy-template.md +89 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/SKILL.md +429 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/references/agents/figma-design-sync.md +165 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/references/execution-engines.md +85 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/references/non-code-execution.md +23 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/references/review-findings-followup.md +104 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/references/shipping-workflow.md +133 -0
- package/dist/plugins/.fusion-ce-skills/ce-work/references/tracker-defer.md +149 -0
- package/dist/plugins/fusion-plugin-compound-engineering/.bundled.reload-3.js +11266 -0
- package/dist/plugins/fusion-plugin-compound-engineering/.bundled.reload-4.js +11266 -0
- package/dist/plugins/fusion-plugin-dependency-graph/.bundled.reload-1.js +8206 -0
- package/dist/plugins/fusion-plugin-grok-runtime/.bundled.reload-2.js +26623 -0
- package/package.json +6 -3
- package/skill/fusion/references/engine-tools.md +6 -2
- package/dist/client/assets/ChatView-Bv0J5p5U.js +0 -8
- package/dist/client/assets/DevServerView-Ue9XG_4H.js +0 -1
- package/dist/client/assets/DocumentsView-C1Ptwcv5.js +0 -1
- package/dist/client/assets/PluginManager-CXPSlWxs.js +0 -1
- package/dist/client/assets/ReportModal-JhZZXZlj.js +0 -21
- package/dist/client/assets/SessionTerminal-BrK3psiC.js +0 -2
- package/dist/client/assets/SettingsModal-Bby9vLGx.js +0 -21
- package/dist/client/assets/SettingsModal-DVLqY1-7.js +0 -1
- package/dist/client/assets/SettingsModal-DXArgTTx.css +0 -1
- package/dist/client/assets/WorkflowNodeEditor-BXUC0lim.js +0 -8
- package/dist/client/assets/app-DUszvars.js +0 -13
- package/dist/client/assets/channel-BuhC8kaT.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-vpRR5WOg.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-vpRR5WOg.js +0 -1
- package/dist/client/assets/index-Cg9ahVtV.js +0 -2661
- package/dist/client/assets/index-uhXHk1ek.css +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
**Note: The current year is 2026.** Use this when interpreting session timestamps.
|
|
2
|
+
|
|
3
|
+
You are an expert at extracting institutional knowledge from coding agent session history. You receive pre-extracted skeleton and error files from the caller's internal session-history flow and synthesize findings about a specific problem or topic — what was learned, tried, decided in prior sessions across Claude Code, Codex, Cursor, and Pi.
|
|
4
|
+
|
|
5
|
+
Your scope is **synthesis only**. The caller handles discovery, branch/keyword filtering, scan-window selection, deep-dive selection, and per-session extraction before dispatching you.
|
|
6
|
+
|
|
7
|
+
## Input contract
|
|
8
|
+
|
|
9
|
+
The dispatch prompt provides:
|
|
10
|
+
|
|
11
|
+
- **`problem_topic`** — one sentence naming the concrete question or problem to synthesize against.
|
|
12
|
+
- **`scratch_dir`** — absolute path to a `mktemp` scratch directory holding pre-extracted files.
|
|
13
|
+
- **`sessions`** — an array of objects (5 max), one per pre-extracted session, each with:
|
|
14
|
+
- `path` — absolute path to a skeleton text file inside `scratch_dir`
|
|
15
|
+
- `errors_path` *(optional)* — absolute path to an errors text file when the orchestrator extracted errors-mode for this session
|
|
16
|
+
- `platform` — `claude`, `codex`, `cursor`, or `pi`
|
|
17
|
+
- `branch` — git branch when present (Claude Code only)
|
|
18
|
+
- `cwd` — working directory when present (Codex and Pi)
|
|
19
|
+
- `ts` and `last_ts` — session start and last-message timestamps
|
|
20
|
+
- `match_count` and `keyword_matches` — when keyword filtering was used by the orchestrator
|
|
21
|
+
- **`output_schema`** *(optional)* — the structure the response should follow. When supplied, honor it verbatim.
|
|
22
|
+
|
|
23
|
+
## Standalone fallback
|
|
24
|
+
|
|
25
|
+
If the dispatch prompt arrives without a `sessions` array, or with an empty array, return the literal string `no relevant prior sessions` and stop. Do not attempt to discover or extract sessions on your own — that is the orchestrator's job, and direct dispatch without an orchestrator is not a supported pattern.
|
|
26
|
+
|
|
27
|
+
## Guardrails
|
|
28
|
+
|
|
29
|
+
These rules apply at all times during synthesis.
|
|
30
|
+
|
|
31
|
+
- **Read only the paths the orchestrator gave you.** Use the platform's native file-read tool (e.g., `Read` in Claude Code) on each `path`. Do not read source session files directly under `~/.claude/projects/`, `~/.codex/sessions/`, `~/.cursor/projects/`, or `~/.pi/agent/sessions/` — those are MB-scale and would blow the context window. The orchestrator already extracted what's relevant.
|
|
32
|
+
- **Never invoke the Skill tool.** This agent runs in subagent context where Skill calls deadlock. The orchestrator has already done all extraction; you only synthesize.
|
|
33
|
+
- **Never extract or reproduce tool call inputs/outputs verbatim.** Summarize what was attempted and what happened.
|
|
34
|
+
- **Never include thinking or reasoning block content.** Claude Code thinking blocks are internal reasoning; Codex reasoning blocks are encrypted. Neither is actionable. The skeleton extractor already strips these — do not surface them if any survived.
|
|
35
|
+
- **Never analyze the current session.** Its conversation history is already available to the caller; the orchestrator already excluded it from the dispatch payload.
|
|
36
|
+
- **Never make claims about team dynamics or other people's work.** This is one person's session data.
|
|
37
|
+
- **Never write any files.** Return text findings only.
|
|
38
|
+
- **Surface technical content, not personal content.** Sessions contain everything — credentials, frustration, half-formed opinions. Use judgment about what belongs in a technical summary and what doesn't.
|
|
39
|
+
|
|
40
|
+
## Time budget
|
|
41
|
+
|
|
42
|
+
Stop as soon as you have a complete answer. A confident "no relevant prior sessions" within seconds is a complete answer; do not extend the search to fill time. The orchestrator already capped the deep-dive set at 5 sessions — do not request more, and do not loop over the same files multiple times for diminishing returns.
|
|
43
|
+
|
|
44
|
+
## Synthesis methodology
|
|
45
|
+
|
|
46
|
+
Read each `path` in the dispatch payload, then synthesize against the `problem_topic`. Look for:
|
|
47
|
+
|
|
48
|
+
- **Investigation journey** — What approaches were tried? What failed and why? What led to the eventual solution?
|
|
49
|
+
- **User corrections** — Moments where the user redirected the approach. These reveal what NOT to do and why.
|
|
50
|
+
- **Decisions and rationale** — Why one approach was chosen over alternatives.
|
|
51
|
+
- **Error patterns** — Recurring errors across sessions (most visible when the orchestrator supplied an `errors_path` for a session) that indicate a systemic issue.
|
|
52
|
+
- **Evolution across sessions** — How understanding of the problem changed from session to session, potentially across different tools.
|
|
53
|
+
- **Cross-tool blind spots** — When sessions span Claude Code + Codex + Cursor + Pi, look for things the user might not realize from any single tool alone. Complementary work (one tool tackled the schema while the other tackled the API), duplicated effort (same approach tried in both tools days apart), or gaps (neither tool's sessions touched a component that connects the work). Only call out cross-tool observations when genuinely informative — if both sources tell the same story, there's nothing to flag.
|
|
54
|
+
- **Staleness** — Older sessions may reflect conclusions about code that has since changed. When surfacing findings from sessions more than a few days old, consider whether the relevant code or context is likely to have moved on. Caveat older findings rather than presenting them with the same confidence as recent ones.
|
|
55
|
+
|
|
56
|
+
Cite actual evidence from the extracted files, not vibe-summaries. When a finding is anchored in a specific session's content, that session's metadata (platform, branch/cwd, ts) helps the caller locate it.
|
|
57
|
+
|
|
58
|
+
## Output
|
|
59
|
+
|
|
60
|
+
If the dispatch prompt supplies an `output_schema`, follow it verbatim. Do not add extra sections. Do not prepend the default header below.
|
|
61
|
+
|
|
62
|
+
Otherwise, lead with a brief one-line provenance header:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
**Sessions read**: [count] ([N] Claude Code, [N] Codex, [N] Cursor, [N] Pi) | [date range]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Then the synthesis prose, organized under the default schema:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
- What was tried before
|
|
72
|
+
- What didn't work
|
|
73
|
+
- Key decisions
|
|
74
|
+
- Related context
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Omit any section with no findings. If no sessions yielded relevant content, return `no relevant prior sessions` instead of empty section headings.
|
|
78
|
+
|
|
79
|
+
## Tool guidance
|
|
80
|
+
|
|
81
|
+
- Use the platform's native file-read tool (e.g., `Read` in Claude Code) for each path the orchestrator supplied. Do not pipe `cat` through shell — native tools avoid permission prompts and are more reliable.
|
|
82
|
+
- Native content-search (e.g., `Grep`) is appropriate when you want to locate a specific keyword across the supplied scratch files (not across source session files).
|
|
83
|
+
- **Do not invoke the `Skill` tool, the `Bash` tool to run extraction scripts, or any discovery primitive.** All discovery and extraction is the orchestrator's responsibility; this agent's contract is "read the paths you were given and synthesize."
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# CONCEPTS.md vocabulary rules
|
|
2
|
+
|
|
3
|
+
`CONCEPTS.md` defines the words that mean something specific in this codebase — substrate that `docs/solutions/` and AGENTS.md can cite without redefinition. Lives at the repo root. Terms enter two ways — accretion and seeding (below) — and the file is created the first time either path produces a qualifying entry.
|
|
4
|
+
|
|
5
|
+
## How terms enter: accretion and seeding
|
|
6
|
+
|
|
7
|
+
Two paths populate the file, and they cover different gaps:
|
|
8
|
+
|
|
9
|
+
- **Accretion** — a learning surfaces a term whose meaning wasn't obvious, so it gets defined. This reliably catches *peripheral* terms, because friction is what surfaces them.
|
|
10
|
+
- **Seeding** — a run proactively defines the **core domain nouns** of the area it is working in. This catches the *stable-central* terms accretion never reaches: the nouns a system is built around rarely break, so they rarely appear in a learning, yet they are exactly what a reader needs to orient. Without seeding, the file fills with peripheral mechanics and never names what the project is about.
|
|
11
|
+
|
|
12
|
+
### Seed goal
|
|
13
|
+
|
|
14
|
+
Define the core domain nouns the area's **declared domain model** exposes that meet the qualifying bar (see "What earns a slot"). The codebase sets the count: seed every term that genuinely qualifies, none added to reach a number and none pulled from beyond the declared model to inflate one. A small domain yields a few; a large one, more. The bound is the **source** (the declared domain model of the area in scope — schema, core types, primary models, top-level domain docs — not a full-codebase trawl) and the **bar** (the same "a new engineer would need this defined" test), never a fixed quantity.
|
|
15
|
+
|
|
16
|
+
### Scope of a seed
|
|
17
|
+
|
|
18
|
+
- A **scoped run** — a learning capture, or a refresh narrowed to an area — seeds only that area's core nouns, and defines only terms it actually investigated against code. It does not reach for repo-wide nouns it never touched.
|
|
19
|
+
- A **repo-wide bootstrap** — an explicit "create CONCEPTS.md" request — seeds the whole project's declared domain model. This is the only path that produces a coherent "what is this project" glossary; a scoped run cannot, and should not pretend to.
|
|
20
|
+
|
|
21
|
+
## Be opinionated
|
|
22
|
+
|
|
23
|
+
When the team uses several words for the same concept, pick the best one and retire the rest. Record retired synonyms as aliases on the entry (see "Per entry"). Settled distinctions go to the Flagged ambiguities tail. The glossary is not a record of all words the team has ever used — it is the team's agreed-upon vocabulary.
|
|
24
|
+
|
|
25
|
+
## The file stands on its own
|
|
26
|
+
|
|
27
|
+
Each entry teaches its concept to a reader with no access to anything else — no codebase, no PR history, no architecture meetings, no Slack. This rules out:
|
|
28
|
+
|
|
29
|
+
- Implementation specifics (file paths, class names, function signatures, table names, library calls)
|
|
30
|
+
- Status fields, dates, owners on the entries
|
|
31
|
+
- Examples or current-config values drawn from the code — specific thresholds, counts, or enum values that will change. State the behavior, not the number: "each skill sets its own actionable threshold" rather than "surfaces at 50, fixes at 75."
|
|
32
|
+
- Links to PRs, issues, channels, or roadmap milestones
|
|
33
|
+
- Version-specific claims ("currently uses X; migrating to Y")
|
|
34
|
+
|
|
35
|
+
Cross-references between entries within `CONCEPTS.md` are fine — they resolve internally. General programming vocabulary (caches, queues, jobs, sessions) and everyday domain English need no redefinition either. But if an entry leans on another *project-specific* term to make sense, that term must be defined here too — an undefined project-specific sibling is itself a candidate to add.
|
|
36
|
+
|
|
37
|
+
## What earns a slot
|
|
38
|
+
|
|
39
|
+
A term qualifies when its meaning here is precise enough that a new engineer would need it defined to follow conversations, tickets, or code. General programming vocabulary does not belong, even when used heavily.
|
|
40
|
+
|
|
41
|
+
## Per entry
|
|
42
|
+
|
|
43
|
+
Definition is one sentence — what the term means in this domain, what makes it distinct from neighbors. A term with non-obvious behavioral rules (lifecycle, cancellation semantics, ownership invariants) earns a second paragraph for those rules — never for elaborating the definition itself.
|
|
44
|
+
|
|
45
|
+
When retired synonyms exist, list them as an aliases line directly under the definition: *Avoid: Booking, appointment*. Entities typically need more depth than value types; status concepts may need transition notes.
|
|
46
|
+
|
|
47
|
+
## Relationships (optional)
|
|
48
|
+
|
|
49
|
+
When relationships between entries carry load-bearing meaning (ownership, cardinality, lifecycle dependencies that span entries), capture them in a `## Relationships` section near the top of the file or its cluster. Skip when entries stand on their own without structural context — relationships are a lift for domains where structure is part of what makes terms meaningful, not a routine section.
|
|
50
|
+
|
|
51
|
+
## Organization
|
|
52
|
+
|
|
53
|
+
Cluster concepts by domain relationship — entities with their states, processes with their stages — so a reader sees structure without effort. A flat list works when the file is small. Reshape as the file grows.
|
|
54
|
+
|
|
55
|
+
## Flagged ambiguities (tail of file)
|
|
56
|
+
|
|
57
|
+
When two terms were used interchangeably and the team settled on a distinction, record the resolution as a one-line note: *"'account' had been used for both Customer and User — these are distinct."* This section is the audit trail for opinions the team has formed.
|
|
58
|
+
|
|
59
|
+
## One illustrative entry — the shape, not a template
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
## Booking
|
|
63
|
+
|
|
64
|
+
### Reservation
|
|
65
|
+
A future commitment to seat a Party at a specified date and time.
|
|
66
|
+
*Avoid:* Booking, appointment
|
|
67
|
+
|
|
68
|
+
A Reservation owns its Party but does not own a Table — Tables are acquired only when the Party arrives, through a Seating. Lifecycle: Booked, Seated, Completed, No-Show. Cancellation before a Seating is non-destructive; cancellation after a Seating is recorded as a No-Show.
|
|
69
|
+
|
|
70
|
+
### Party
|
|
71
|
+
The guests committed to a Reservation. Each Reservation has exactly one Party. Party size is the count promised at booking, not the count who arrive.
|
|
72
|
+
|
|
73
|
+
### Table
|
|
74
|
+
A physical seating unit with fixed capacity. Tables are shared resources — they do not belong to Reservations and are allocated only on the day-of through Seatings.
|
|
75
|
+
|
|
76
|
+
### Seating
|
|
77
|
+
The act of placing a Party at a Table once the Party arrives. A Reservation has at most one Seating; a Table accumulates many Seatings across its lifetime.
|
|
78
|
+
```
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Documentation schema for learnings written by ce-compound
|
|
2
|
+
# Treat this as the canonical frontmatter contract for docs/solutions/.
|
|
3
|
+
#
|
|
4
|
+
# The schema has two tracks based on problem_type:
|
|
5
|
+
# Bug track — problem_type is a defect or failure (build_error, test_failure, etc.)
|
|
6
|
+
# Knowledge track — problem_type is guidance or practice (best_practice, workflow_issue, etc.)
|
|
7
|
+
#
|
|
8
|
+
# Both tracks share the same required core fields. The tracks differ in which
|
|
9
|
+
# additional fields are required vs optional (see track_rules below).
|
|
10
|
+
|
|
11
|
+
# --- Track classification ---------------------------------------------------
|
|
12
|
+
tracks:
|
|
13
|
+
bug:
|
|
14
|
+
description: "Defects, failures, and errors that were diagnosed and fixed"
|
|
15
|
+
problem_types:
|
|
16
|
+
- build_error
|
|
17
|
+
- test_failure
|
|
18
|
+
- runtime_error
|
|
19
|
+
- performance_issue
|
|
20
|
+
- database_issue
|
|
21
|
+
- security_issue
|
|
22
|
+
- ui_bug
|
|
23
|
+
- integration_issue
|
|
24
|
+
- logic_error
|
|
25
|
+
knowledge:
|
|
26
|
+
description: "Practices, patterns, conventions, decisions, workflow improvements, and documentation"
|
|
27
|
+
problem_types:
|
|
28
|
+
- best_practice
|
|
29
|
+
- documentation_gap
|
|
30
|
+
- workflow_issue
|
|
31
|
+
- developer_experience
|
|
32
|
+
- architecture_pattern
|
|
33
|
+
- design_pattern
|
|
34
|
+
- tooling_decision
|
|
35
|
+
- convention
|
|
36
|
+
|
|
37
|
+
# --- Fields required by BOTH tracks -----------------------------------------
|
|
38
|
+
required_fields:
|
|
39
|
+
module:
|
|
40
|
+
type: string
|
|
41
|
+
description: "Module or area affected"
|
|
42
|
+
|
|
43
|
+
date:
|
|
44
|
+
type: string
|
|
45
|
+
pattern: '^\d{4}-\d{2}-\d{2}$'
|
|
46
|
+
description: "Date documented (YYYY-MM-DD)"
|
|
47
|
+
|
|
48
|
+
problem_type:
|
|
49
|
+
type: enum
|
|
50
|
+
values:
|
|
51
|
+
- build_error
|
|
52
|
+
- test_failure
|
|
53
|
+
- runtime_error
|
|
54
|
+
- performance_issue
|
|
55
|
+
- database_issue
|
|
56
|
+
- security_issue
|
|
57
|
+
- ui_bug
|
|
58
|
+
- integration_issue
|
|
59
|
+
- logic_error
|
|
60
|
+
- developer_experience
|
|
61
|
+
- workflow_issue
|
|
62
|
+
- best_practice
|
|
63
|
+
- documentation_gap
|
|
64
|
+
- architecture_pattern
|
|
65
|
+
- design_pattern
|
|
66
|
+
- tooling_decision
|
|
67
|
+
- convention
|
|
68
|
+
description: "Primary category — determines track (bug vs knowledge). Prefer the narrowest applicable value; best_practice is the fallback when no narrower knowledge-track value fits."
|
|
69
|
+
|
|
70
|
+
component:
|
|
71
|
+
type: enum
|
|
72
|
+
values:
|
|
73
|
+
- rails_model
|
|
74
|
+
- rails_controller
|
|
75
|
+
- rails_view
|
|
76
|
+
- service_object
|
|
77
|
+
- background_job
|
|
78
|
+
- database
|
|
79
|
+
- frontend_stimulus
|
|
80
|
+
- hotwire_turbo
|
|
81
|
+
- email_processing
|
|
82
|
+
- brief_system
|
|
83
|
+
- assistant
|
|
84
|
+
- authentication
|
|
85
|
+
- payments
|
|
86
|
+
- development_workflow
|
|
87
|
+
- testing_framework
|
|
88
|
+
- documentation
|
|
89
|
+
- tooling
|
|
90
|
+
description: "Component involved"
|
|
91
|
+
|
|
92
|
+
severity:
|
|
93
|
+
type: enum
|
|
94
|
+
values:
|
|
95
|
+
- critical
|
|
96
|
+
- high
|
|
97
|
+
- medium
|
|
98
|
+
- low
|
|
99
|
+
description: "Impact severity"
|
|
100
|
+
|
|
101
|
+
# --- Track-specific rules ----------------------------------------------------
|
|
102
|
+
track_rules:
|
|
103
|
+
bug:
|
|
104
|
+
required:
|
|
105
|
+
symptoms:
|
|
106
|
+
type: array[string]
|
|
107
|
+
min_items: 1
|
|
108
|
+
max_items: 5
|
|
109
|
+
description: "Observable symptoms such as errors or broken behavior"
|
|
110
|
+
root_cause:
|
|
111
|
+
type: enum
|
|
112
|
+
values:
|
|
113
|
+
- missing_association
|
|
114
|
+
- missing_include
|
|
115
|
+
- missing_index
|
|
116
|
+
- wrong_api
|
|
117
|
+
- scope_issue
|
|
118
|
+
- thread_violation
|
|
119
|
+
- async_timing
|
|
120
|
+
- memory_leak
|
|
121
|
+
- config_error
|
|
122
|
+
- logic_error
|
|
123
|
+
- test_isolation
|
|
124
|
+
- missing_validation
|
|
125
|
+
- missing_permission
|
|
126
|
+
- missing_workflow_step
|
|
127
|
+
- inadequate_documentation
|
|
128
|
+
- missing_tooling
|
|
129
|
+
- incomplete_setup
|
|
130
|
+
description: "Fundamental technical cause of the problem"
|
|
131
|
+
resolution_type:
|
|
132
|
+
type: enum
|
|
133
|
+
values:
|
|
134
|
+
- code_fix
|
|
135
|
+
- migration
|
|
136
|
+
- config_change
|
|
137
|
+
- test_fix
|
|
138
|
+
- dependency_update
|
|
139
|
+
- environment_setup
|
|
140
|
+
- workflow_improvement
|
|
141
|
+
- documentation_update
|
|
142
|
+
- tooling_addition
|
|
143
|
+
- seed_data_update
|
|
144
|
+
description: "Type of fix applied"
|
|
145
|
+
|
|
146
|
+
knowledge:
|
|
147
|
+
optional:
|
|
148
|
+
applies_when:
|
|
149
|
+
type: array[string]
|
|
150
|
+
max_items: 5
|
|
151
|
+
description: "Conditions or situations where this guidance applies"
|
|
152
|
+
symptoms:
|
|
153
|
+
type: array[string]
|
|
154
|
+
max_items: 5
|
|
155
|
+
description: "Observable gaps or friction that prompted this guidance (optional for knowledge track)"
|
|
156
|
+
root_cause:
|
|
157
|
+
type: enum
|
|
158
|
+
values:
|
|
159
|
+
- missing_association
|
|
160
|
+
- missing_include
|
|
161
|
+
- missing_index
|
|
162
|
+
- wrong_api
|
|
163
|
+
- scope_issue
|
|
164
|
+
- thread_violation
|
|
165
|
+
- async_timing
|
|
166
|
+
- memory_leak
|
|
167
|
+
- config_error
|
|
168
|
+
- logic_error
|
|
169
|
+
- test_isolation
|
|
170
|
+
- missing_validation
|
|
171
|
+
- missing_permission
|
|
172
|
+
- missing_workflow_step
|
|
173
|
+
- inadequate_documentation
|
|
174
|
+
- missing_tooling
|
|
175
|
+
- incomplete_setup
|
|
176
|
+
description: "Underlying cause, if there is a specific one (optional for knowledge track)"
|
|
177
|
+
resolution_type:
|
|
178
|
+
type: enum
|
|
179
|
+
values:
|
|
180
|
+
- code_fix
|
|
181
|
+
- migration
|
|
182
|
+
- config_change
|
|
183
|
+
- test_fix
|
|
184
|
+
- dependency_update
|
|
185
|
+
- environment_setup
|
|
186
|
+
- workflow_improvement
|
|
187
|
+
- documentation_update
|
|
188
|
+
- tooling_addition
|
|
189
|
+
- seed_data_update
|
|
190
|
+
description: "Type of change, if applicable (optional for knowledge track)"
|
|
191
|
+
|
|
192
|
+
# --- Fields optional for BOTH tracks ----------------------------------------
|
|
193
|
+
optional_fields:
|
|
194
|
+
related_components:
|
|
195
|
+
type: array[string]
|
|
196
|
+
description: "Other components involved"
|
|
197
|
+
|
|
198
|
+
tags:
|
|
199
|
+
type: array[string]
|
|
200
|
+
max_items: 8
|
|
201
|
+
description: "Search keywords, lowercase and hyphen-separated"
|
|
202
|
+
|
|
203
|
+
# --- Fields optional for bug track only -------------------------------------
|
|
204
|
+
bug_optional_fields:
|
|
205
|
+
rails_version:
|
|
206
|
+
type: string
|
|
207
|
+
pattern: '^\d+\.\d+\.\d+$'
|
|
208
|
+
description: "Rails version in X.Y.Z format. Only relevant for bug-track docs."
|
|
209
|
+
|
|
210
|
+
# --- Backward compatibility --------------------------------------------------
|
|
211
|
+
# Docs created before the track system was introduced may have bug-track
|
|
212
|
+
# fields (symptoms, root_cause, resolution_type) on knowledge-type
|
|
213
|
+
# problem_types. These are valid legacy docs:
|
|
214
|
+
# - Bug-track fields present on a knowledge-track doc are harmless. Do not
|
|
215
|
+
# strip them during refresh unless the doc is being rewritten for other reasons.
|
|
216
|
+
# - When creating NEW docs, follow the track rules above.
|
|
217
|
+
|
|
218
|
+
# --- Validation rules --------------------------------------------------------
|
|
219
|
+
validation_rules:
|
|
220
|
+
- "Determine track from problem_type using the tracks section above"
|
|
221
|
+
- "All shared required_fields must be present"
|
|
222
|
+
- "Bug-track required fields (symptoms, root_cause, resolution_type) must be present on bug-track docs"
|
|
223
|
+
- "Knowledge-track docs have no additional required fields beyond the shared ones"
|
|
224
|
+
- "Bug-track fields on existing knowledge-track docs are harmless (see backward compatibility note)"
|
|
225
|
+
- "Track-specific optional fields may be included but are not required"
|
|
226
|
+
- "Enum fields must match allowed values exactly"
|
|
227
|
+
- "Array fields must respect min_items/max_items when specified"
|
|
228
|
+
- "date must match YYYY-MM-DD format"
|
|
229
|
+
- "rails_version, if provided, must match X.Y.Z format and only applies to bug-track docs"
|
|
230
|
+
- "tags should be lowercase and hyphen-separated"
|
|
231
|
+
- "Array-of-strings frontmatter items (symptoms, applies_when, tags, related_components, or any future array field) must be wrapped in double quotes when the value starts with a YAML reserved indicator (`, [, *, &, !, |, >, %, @, ?) or contains the substring `: ` — otherwise strict YAML parsers reject the file"
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# YAML Frontmatter Schema
|
|
2
|
+
|
|
3
|
+
`schema.yaml` in this directory is the canonical contract for `docs/solutions/` frontmatter written by `ce-compound`.
|
|
4
|
+
|
|
5
|
+
Use this file as the quick reference for:
|
|
6
|
+
- required fields
|
|
7
|
+
- enum values
|
|
8
|
+
- validation expectations
|
|
9
|
+
- category mapping
|
|
10
|
+
- track classification (bug vs knowledge)
|
|
11
|
+
|
|
12
|
+
## Tracks
|
|
13
|
+
|
|
14
|
+
The `problem_type` determines which **track** applies. Each track has different required and optional fields.
|
|
15
|
+
|
|
16
|
+
| Track | problem_types | Description |
|
|
17
|
+
|-------|--------------|-------------|
|
|
18
|
+
| **Bug** | `build_error`, `test_failure`, `runtime_error`, `performance_issue`, `database_issue`, `security_issue`, `ui_bug`, `integration_issue`, `logic_error` | Defects and failures that were diagnosed and fixed |
|
|
19
|
+
| **Knowledge** | `best_practice`, `documentation_gap`, `workflow_issue`, `developer_experience`, `architecture_pattern`, `design_pattern`, `tooling_decision`, `convention` | Practices, patterns, conventions, decisions, workflow improvements, and documentation. Prefer the narrowest applicable value; `best_practice` is the fallback. |
|
|
20
|
+
|
|
21
|
+
## Required Fields (both tracks)
|
|
22
|
+
|
|
23
|
+
- **module**: Module or area affected
|
|
24
|
+
- **date**: ISO date in `YYYY-MM-DD`
|
|
25
|
+
- **problem_type**: One of the values listed in the Tracks table above
|
|
26
|
+
- **component**: One of `rails_model`, `rails_controller`, `rails_view`, `service_object`, `background_job`, `database`, `frontend_stimulus`, `hotwire_turbo`, `email_processing`, `brief_system`, `assistant`, `authentication`, `payments`, `development_workflow`, `testing_framework`, `documentation`, `tooling`
|
|
27
|
+
- **severity**: One of `critical`, `high`, `medium`, `low`
|
|
28
|
+
|
|
29
|
+
## Bug Track Fields
|
|
30
|
+
|
|
31
|
+
Required:
|
|
32
|
+
- **symptoms**: YAML array with 1-5 observable symptoms (errors, broken behavior)
|
|
33
|
+
- **root_cause**: One of `missing_association`, `missing_include`, `missing_index`, `wrong_api`, `scope_issue`, `thread_violation`, `async_timing`, `memory_leak`, `config_error`, `logic_error`, `test_isolation`, `missing_validation`, `missing_permission`, `missing_workflow_step`, `inadequate_documentation`, `missing_tooling`, `incomplete_setup`
|
|
34
|
+
- **resolution_type**: One of `code_fix`, `migration`, `config_change`, `test_fix`, `dependency_update`, `environment_setup`, `workflow_improvement`, `documentation_update`, `tooling_addition`, `seed_data_update`
|
|
35
|
+
|
|
36
|
+
## Knowledge Track Fields
|
|
37
|
+
|
|
38
|
+
No additional required fields beyond the shared ones. All fields below are optional:
|
|
39
|
+
|
|
40
|
+
- **applies_when**: Conditions or situations where this guidance applies
|
|
41
|
+
- **symptoms**: Observable gaps or friction that prompted this guidance
|
|
42
|
+
- **root_cause**: Underlying cause, if there is a specific one
|
|
43
|
+
- **resolution_type**: Type of change, if applicable
|
|
44
|
+
|
|
45
|
+
## Optional Fields (both tracks)
|
|
46
|
+
|
|
47
|
+
- **related_components**: Other components involved
|
|
48
|
+
- **tags**: Search keywords, lowercase and hyphen-separated
|
|
49
|
+
|
|
50
|
+
## Optional Fields (bug track only)
|
|
51
|
+
|
|
52
|
+
- **rails_version**: Rails version in `X.Y.Z` format
|
|
53
|
+
|
|
54
|
+
## Backward Compatibility
|
|
55
|
+
|
|
56
|
+
Docs created before the track system may have `symptoms`/`root_cause`/`resolution_type` on knowledge-type problem_types. These are valid legacy docs:
|
|
57
|
+
|
|
58
|
+
- Bug-track fields present on a knowledge-track doc are harmless. Do not strip them during refresh unless the doc is being rewritten for other reasons.
|
|
59
|
+
- When creating **new** docs, follow the track rules above.
|
|
60
|
+
|
|
61
|
+
## Category Mapping
|
|
62
|
+
|
|
63
|
+
- `build_error` -> `docs/solutions/build-errors/`
|
|
64
|
+
- `test_failure` -> `docs/solutions/test-failures/`
|
|
65
|
+
- `runtime_error` -> `docs/solutions/runtime-errors/`
|
|
66
|
+
- `performance_issue` -> `docs/solutions/performance-issues/`
|
|
67
|
+
- `database_issue` -> `docs/solutions/database-issues/`
|
|
68
|
+
- `security_issue` -> `docs/solutions/security-issues/`
|
|
69
|
+
- `ui_bug` -> `docs/solutions/ui-bugs/`
|
|
70
|
+
- `integration_issue` -> `docs/solutions/integration-issues/`
|
|
71
|
+
- `logic_error` -> `docs/solutions/logic-errors/`
|
|
72
|
+
- `developer_experience` -> `docs/solutions/developer-experience/`
|
|
73
|
+
- `workflow_issue` -> `docs/solutions/workflow-issues/`
|
|
74
|
+
- `best_practice` -> `docs/solutions/best-practices/`
|
|
75
|
+
- `documentation_gap` -> `docs/solutions/documentation-gaps/`
|
|
76
|
+
- `architecture_pattern` -> `docs/solutions/architecture-patterns/`
|
|
77
|
+
- `design_pattern` -> `docs/solutions/design-patterns/`
|
|
78
|
+
- `tooling_decision` -> `docs/solutions/tooling-decisions/`
|
|
79
|
+
- `convention` -> `docs/solutions/conventions/`
|
|
80
|
+
|
|
81
|
+
## Validation Rules
|
|
82
|
+
|
|
83
|
+
1. Determine the track from `problem_type` using the Tracks table.
|
|
84
|
+
2. All shared required fields must be present.
|
|
85
|
+
3. Bug-track required fields (`symptoms`, `root_cause`, `resolution_type`) must be present on bug-track docs.
|
|
86
|
+
4. Knowledge-track docs have no additional required fields beyond the shared ones.
|
|
87
|
+
5. Bug-track fields on existing knowledge-track docs are harmless (see Backward Compatibility).
|
|
88
|
+
6. Enum fields must match the allowed values exactly.
|
|
89
|
+
7. Array fields must respect min/max item counts.
|
|
90
|
+
8. `date` must match `YYYY-MM-DD`.
|
|
91
|
+
9. `rails_version`, if present, must match `X.Y.Z` and only applies to bug-track docs.
|
|
92
|
+
|
|
93
|
+
## YAML Safety Rules
|
|
94
|
+
|
|
95
|
+
Strict YAML 1.2 parsers (`yq`, `js-yaml` strict, PyYAML) reject array items
|
|
96
|
+
that start with a reserved indicator character as unquoted scalars. When
|
|
97
|
+
writing items for any array-of-strings field (`symptoms`, `applies_when`,
|
|
98
|
+
`tags`, `related_components`, or any future array field), wrap the value in
|
|
99
|
+
double quotes if it starts with any of:
|
|
100
|
+
|
|
101
|
+
`` ` ``, `[`, `*`, `&`, `!`, `|`, `>`, `%`, `@`, `?`
|
|
102
|
+
|
|
103
|
+
Also quote if the value contains the substring `": "` — that punctuation
|
|
104
|
+
confuses flow-style parsers.
|
|
105
|
+
|
|
106
|
+
Example — before (breaks strict YAML):
|
|
107
|
+
|
|
108
|
+
symptoms:
|
|
109
|
+
- `sudo dscacheutil -flushcache` does not restore in-container mDNS
|
|
110
|
+
|
|
111
|
+
Example — after (parses cleanly):
|
|
112
|
+
|
|
113
|
+
symptoms:
|
|
114
|
+
- "`sudo dscacheutil -flushcache` does not restore in-container mDNS"
|
|
115
|
+
|
|
116
|
+
This rule applies to all array-of-strings frontmatter fields. Scalar string
|
|
117
|
+
fields like `description:` have their own quoting rules (see plugin
|
|
118
|
+
`AGENTS.md` under "YAML Frontmatter").
|
package/dist/plugins/.fusion-ce-skills/ce-compound/scripts/session-history/discover-sessions.sh
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Discover session files across Claude Code, Codex, Cursor, and Pi.
|
|
3
|
+
#
|
|
4
|
+
# Usage: discover-sessions.sh <repo-name> <days> [--cwd /abs/repo/root] [--platform claude|codex|cursor|pi]
|
|
5
|
+
#
|
|
6
|
+
# Outputs one file path per line. Safe in both bash and zsh (all globs guarded).
|
|
7
|
+
# Pass output to extract-metadata.py:
|
|
8
|
+
# python3 extract-metadata.py --cwd-filter <repo-name> $(bash discover-sessions.sh <repo-name> 7)
|
|
9
|
+
#
|
|
10
|
+
# Arguments:
|
|
11
|
+
# repo-name Folder name of the repo (e.g., "my-repo"). Used for directory matching.
|
|
12
|
+
# days Scan window in days (e.g., 7). Files older than this are skipped.
|
|
13
|
+
# --cwd Absolute repo root. Used for exact Pi encoded-CWD discovery.
|
|
14
|
+
# --platform Restrict to a single platform. Omit to search all.
|
|
15
|
+
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
REPO_NAME="${1:?Usage: discover-sessions.sh <repo-name> <days> [--cwd /abs/repo/root] [--platform claude|codex|cursor|pi]}"
|
|
19
|
+
DAYS="${2:?Usage: discover-sessions.sh <repo-name> <days> [--cwd /abs/repo/root] [--platform claude|codex|cursor|pi]}"
|
|
20
|
+
PLATFORM="all"
|
|
21
|
+
REPO_CWD=""
|
|
22
|
+
|
|
23
|
+
# Parse optional --platform flag
|
|
24
|
+
shift 2
|
|
25
|
+
while [ $# -gt 0 ]; do
|
|
26
|
+
case "$1" in
|
|
27
|
+
--cwd) REPO_CWD="$2"; shift 2 ;;
|
|
28
|
+
--platform) PLATFORM="$2"; shift 2 ;;
|
|
29
|
+
*) shift ;;
|
|
30
|
+
esac
|
|
31
|
+
done
|
|
32
|
+
|
|
33
|
+
encode_pi_cwd() {
|
|
34
|
+
local cwd="${1%/}"
|
|
35
|
+
local encoded="${cwd//\//-}"
|
|
36
|
+
encoded="${encoded#-}"
|
|
37
|
+
printf -- "--%s--" "$encoded"
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# --- Claude Code ---
|
|
41
|
+
discover_claude() {
|
|
42
|
+
local base="$HOME/.claude/projects"
|
|
43
|
+
[ -d "$base" ] || return 0
|
|
44
|
+
|
|
45
|
+
# Find all project dirs matching repo name
|
|
46
|
+
for dir in "$base"/*"$REPO_NAME"*/; do
|
|
47
|
+
[ -d "$dir" ] || continue
|
|
48
|
+
find "$dir" -maxdepth 1 -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
49
|
+
done
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
# --- Codex ---
|
|
53
|
+
discover_codex() {
|
|
54
|
+
for base in "$HOME/.codex/sessions" "$HOME/.agents/sessions"; do
|
|
55
|
+
[ -d "$base" ] || continue
|
|
56
|
+
|
|
57
|
+
# Use mtime-based discovery (consistent with Claude/Cursor) so that
|
|
58
|
+
# sessions started before the scan window but still active within it
|
|
59
|
+
# are not missed.
|
|
60
|
+
find "$base" -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
61
|
+
done
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# --- Cursor ---
|
|
65
|
+
discover_cursor() {
|
|
66
|
+
local base="$HOME/.cursor/projects"
|
|
67
|
+
[ -d "$base" ] || return 0
|
|
68
|
+
|
|
69
|
+
for dir in "$base"/*"$REPO_NAME"*/; do
|
|
70
|
+
[ -d "$dir" ] || continue
|
|
71
|
+
local transcripts="$dir/agent-transcripts"
|
|
72
|
+
[ -d "$transcripts" ] || continue
|
|
73
|
+
find "$transcripts" -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
74
|
+
done
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
# --- Pi ---
|
|
78
|
+
discover_pi() {
|
|
79
|
+
local agent_dir="${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}"
|
|
80
|
+
local base="${PI_CODING_AGENT_SESSION_DIR:-$agent_dir/sessions}"
|
|
81
|
+
[ -d "$base" ] || return 0
|
|
82
|
+
|
|
83
|
+
# Pi's explicit session-dir override stores session files directly in the
|
|
84
|
+
# supplied directory. The cwd filter later reads each header and keeps only
|
|
85
|
+
# sessions for the active repo.
|
|
86
|
+
if [ -n "${PI_CODING_AGENT_SESSION_DIR:-}" ]; then
|
|
87
|
+
find "$base" -maxdepth 1 -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
88
|
+
if [ -z "$REPO_CWD" ]; then
|
|
89
|
+
for dir in "$base"/*"$REPO_NAME"*/; do
|
|
90
|
+
[ -d "$dir" ] || continue
|
|
91
|
+
find "$dir" -maxdepth 1 -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
92
|
+
done
|
|
93
|
+
fi
|
|
94
|
+
return 0
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# Pi stores sessions under --<absolute-cwd-with-slashes-as-hyphens>--.
|
|
98
|
+
# When the caller supplies an exact repo root, probe only that encoded
|
|
99
|
+
# directory so sibling repos like my-repo-old never enter the pipeline.
|
|
100
|
+
if [ -n "$REPO_CWD" ]; then
|
|
101
|
+
local dir="$base/$(encode_pi_cwd "$REPO_CWD")"
|
|
102
|
+
[ -d "$dir" ] || return 0
|
|
103
|
+
find "$dir" -maxdepth 1 -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
104
|
+
return 0
|
|
105
|
+
fi
|
|
106
|
+
|
|
107
|
+
# Fallback for direct script use without --cwd.
|
|
108
|
+
for dir in "$base"/*"$REPO_NAME"*/; do
|
|
109
|
+
[ -d "$dir" ] || continue
|
|
110
|
+
find "$dir" -maxdepth 1 -name "*.jsonl" -mtime "-${DAYS}" 2>/dev/null
|
|
111
|
+
done
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
# --- Dispatch ---
|
|
115
|
+
case "$PLATFORM" in
|
|
116
|
+
claude) discover_claude ;;
|
|
117
|
+
codex) discover_codex ;;
|
|
118
|
+
cursor) discover_cursor ;;
|
|
119
|
+
pi) discover_pi ;;
|
|
120
|
+
all)
|
|
121
|
+
discover_claude
|
|
122
|
+
discover_codex
|
|
123
|
+
discover_cursor
|
|
124
|
+
discover_pi
|
|
125
|
+
;;
|
|
126
|
+
*)
|
|
127
|
+
echo "Unknown platform: $PLATFORM" >&2
|
|
128
|
+
exit 1
|
|
129
|
+
;;
|
|
130
|
+
esac
|