forge-openclaw-plugin 0.3.15 → 0.3.17
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 +6 -6
- package/dist/assets/{action-bar-B9MYlps2.js → action-bar-D3CEYlj4.js} +1 -1
- package/dist/assets/{activity-page-DbzbChcE.js → activity-page-Ce1pHIu5.js} +1 -1
- package/dist/assets/{ai-surface-workspace-CF0257Hs.js → ai-surface-workspace-DEliwOjF.js} +1 -1
- package/dist/assets/artifacts-page-BgyFVIVM.js +2 -0
- package/dist/assets/{atlas-panel-CO3RYAKn.js → atlas-panel-VZOnJa1c.js} +1 -1
- package/dist/assets/{board-CuxQRKPJ.js → board-DprRipIG.js} +1 -1
- package/dist/assets/{calendar-page-BuuHKEHC.js → calendar-page-Zstsn4uG.js} +1 -1
- package/dist/assets/{calendar-rules-DKftgNx5.js → calendar-rules-BGIBuEDk.js} +1 -1
- package/dist/assets/{calendar-week-toolbar-ChIpkT-G.js → calendar-week-toolbar-DXFkMkbq.js} +1 -1
- package/dist/assets/{charts-BzT4pUPg.js → charts-C5S0-BL7.js} +1 -1
- package/dist/assets/{companion-sync-lab-page-BZRX4Btw.js → companion-sync-lab-page-DIPPLFKt.js} +1 -1
- package/dist/assets/{daily-metrics-dashboard-CXDsaAQd.js → daily-metrics-dashboard-CG-OOCJz.js} +1 -1
- package/dist/assets/{define-workbench-box-CpG0Zb1L.js → define-workbench-box-BEEdtBkQ.js} +1 -1
- package/dist/assets/{entity-link-multiselect-Dl4rZqdg.js → entity-link-multiselect-BfDAROHB.js} +1 -1
- package/dist/assets/{entity-note-count-link-Bs1aKYyD.js → entity-note-count-link-BGOiaash.js} +1 -1
- package/dist/assets/{entity-notes-surface-B56XSw7M.js → entity-notes-surface-DPsJwqQa.js} +1 -1
- package/dist/assets/execution-board-Dg-2GSKv.js +1 -0
- package/dist/assets/{faceted-token-search-Dg2rjknH.js → faceted-token-search-DV7MSVYb.js} +1 -1
- package/dist/assets/{flagship-signal-deck-C6KVPhmM.js → flagship-signal-deck-D3wVL3bC.js} +1 -1
- package/dist/assets/{floating-action-menu-DAFAEBcA.js → floating-action-menu-BUs382px.js} +1 -1
- package/dist/assets/{forms-D1qJ3oOP.js → forms-ByKjodjN.js} +1 -1
- package/dist/assets/{generic-node-view-C6DK5hJ6.js → generic-node-view-BY5dbPXJ.js} +1 -1
- package/dist/assets/{goal-detail-page-CC4VXud6.js → goal-detail-page-MYr6j2B4.js} +1 -1
- package/dist/assets/{goal-dialog-15hD8EBp.js → goal-dialog-nkdME5Uy.js} +1 -1
- package/dist/assets/goals-page-BsFeBzU1.js +1 -0
- package/dist/assets/{graph-BF4IsheG.js → graph-CHVj0Z7n.js} +1 -1
- package/dist/assets/habits-page-wO461EVU.js +1 -0
- package/dist/assets/{health-boxes-DqgvIYoL.js → health-boxes-BphMeSJj.js} +1 -1
- package/dist/assets/index-CSd8ylsy.css +1 -0
- package/dist/assets/index-gmPaoLN-.js +2 -0
- package/dist/assets/{inline-note-fields-COgzxr_7.js → inline-note-fields-BvQwmMAv.js} +1 -1
- package/dist/assets/{insight-flow-dialog-Dmb6NSGp.js → insight-flow-dialog-H_eaOmst.js} +1 -1
- package/dist/assets/{insights-page-OnqR4cYI.js → insights-page-DINYe3cB.js} +3 -3
- package/dist/assets/{kanban-boxes-BWUzntCV.js → kanban-boxes-oACOTDYG.js} +1 -1
- package/dist/assets/{kanban-page-BI16Gzp_.js → kanban-page-BGLXH91f.js} +1 -1
- package/dist/assets/knowledge-graph-page-VfMvw5jL.js +1 -0
- package/dist/assets/{life-force-page-CDEXEQai.js → life-force-page-DQPb6UL-.js} +1 -1
- package/dist/assets/{life-force-workspace-C7UOnJEf.js → life-force-workspace-BJ1aI3JE.js} +1 -1
- package/dist/assets/{maps-BTVHALP8.js → maps-CvEHVkBk.js} +1 -1
- package/dist/assets/{metric-tile-boeHB1R1.js → metric-tile-CbEe19Gd.js} +1 -1
- package/dist/assets/{motion-DcgUnXhY.js → motion-BibSzp57.js} +1 -1
- package/dist/assets/{movement-boxes-BUSqaTL2.js → movement-boxes-dtDYhw5c.js} +1 -1
- package/dist/assets/{movement-page-DcbO0497.js → movement-page-BhmwCHjs.js} +1 -1
- package/dist/assets/{note-markdown-DXXI3W3V.js → note-markdown-CG8u2d6p.js} +1 -1
- package/dist/assets/{note-tags-input-CYh3TVW2.js → note-tags-input-D_conqDO.js} +1 -1
- package/dist/assets/{notes-boxes-CMJXX2K0.js → notes-boxes-BLKucFqW.js} +1 -1
- package/dist/assets/notes-page-CafVxWjb.js +1 -0
- package/dist/assets/{open-in-graph-button-4UYrp1XP.js → open-in-graph-button-DFQ4r6SN.js} +1 -1
- package/dist/assets/{orbit-map-BwK7sDaC.js → orbit-map-DsEl3ori.js} +1 -1
- package/dist/assets/overview-page-BffcX-pM.js +1 -0
- package/dist/assets/page-hero-U603l9rQ.js +1 -0
- package/dist/assets/pill-cluster-BYVFNppV.js +1 -0
- package/dist/assets/{preference-entity-handoff-button-C2ATjvws.js → preference-entity-handoff-button-cPrTpHsV.js} +1 -1
- package/dist/assets/{preferences-page-BAexXHye.js → preferences-page-DQjFIOmt.js} +1 -1
- package/dist/assets/{project-collections-B9nr-Ts-.js → project-collections-B9OGHGqm.js} +1 -1
- package/dist/assets/project-detail-page-r1Sw2kcO.js +1 -0
- package/dist/assets/{project-dialog-CBA-D65n.js → project-dialog-B2_PcXAf.js} +1 -1
- package/dist/assets/project-management-hierarchy-page-qLNG8hsh.js +1 -0
- package/dist/assets/{project-management-section-nav-DJ3QKCtr.js → project-management-section-nav-DFUlmMEB.js} +1 -1
- package/dist/assets/{projects-boxes-iBu_PRqe.js → projects-boxes-BA7_XaqX.js} +1 -1
- package/dist/assets/projects-page-B6ggXWFw.js +1 -0
- package/dist/assets/psyche-behaviors-page-ByWpXlLq.js +5 -0
- package/dist/assets/{psyche-flashcards-page-DQaw_vUQ.js → psyche-flashcards-page-B9nSc0mk.js} +1 -1
- package/dist/assets/{psyche-goal-map-page-C-ZTVOEP.js → psyche-goal-map-page-BQU7qI88.js} +1 -1
- package/dist/assets/{psyche-graph-DYzeClxn.js → psyche-graph-DCeP7r2b.js} +1 -1
- package/dist/assets/{psyche-metrics-page-C9hKn10A.js → psyche-metrics-page-DD2lOP-J.js} +1 -1
- package/dist/assets/psyche-mode-guide-page-DbtZgnjr.js +1 -0
- package/dist/assets/psyche-modes-page-3zFJWFQf.js +1 -0
- package/dist/assets/psyche-page-D5vXYkfB.js +1 -0
- package/dist/assets/psyche-patterns-page-BneAAeKS.js +5 -0
- package/dist/assets/{psyche-questionnaire-builder-page-gRwdGXde.js → psyche-questionnaire-builder-page-BH1la5C9.js} +1 -1
- package/dist/assets/{psyche-questionnaire-detail-page-CIP9b2UI.js → psyche-questionnaire-detail-page-DYav634P.js} +1 -1
- package/dist/assets/psyche-questionnaire-run-detail-page-9VaijhJm.js +1 -0
- package/dist/assets/{psyche-questionnaire-run-page-CXiJyd5i.js → psyche-questionnaire-run-page-e1T6k_dS.js} +1 -1
- package/dist/assets/{psyche-questionnaires-page-CFPKwA3O.js → psyche-questionnaires-page-Dyv367z9.js} +1 -1
- package/dist/assets/{psyche-report-detail-page-dU30a2WE.js → psyche-report-detail-page-hqxHIXw2.js} +3 -3
- package/dist/assets/psyche-reports-page-DhIfcGbt.js +1 -0
- package/dist/assets/{psyche-schemas-DDol0j-g.js → psyche-schemas-Cg51Ztxz.js} +1 -1
- package/dist/assets/psyche-schemas-beliefs-page-Dgb5o9vx.js +9 -0
- package/dist/assets/{psyche-screen-time-page-lIe6GQxJ.js → psyche-screen-time-page-D6MnJGNa.js} +1 -1
- package/dist/assets/{psyche-self-observation-page-BTE3KfIl.js → psyche-self-observation-page-C1Vyezbv.js} +1 -1
- package/dist/assets/{psyche-values-page-DclBZ9xw.js → psyche-values-page-B_JWVw1Q.js} +2 -2
- package/dist/assets/{question-flow-dialog-Ded2E85L.js → question-flow-dialog-yMYVk998.js} +2 -2
- package/dist/assets/{report-chain-fields-DY640iqL.js → report-chain-fields-D4NM9a6I.js} +1 -1
- package/dist/assets/rewards-page-B5-bcL4R.js +1 -0
- package/dist/assets/{scheduling-rules-editor-jakFfxqF.js → scheduling-rules-editor-De72IUax.js} +1 -1
- package/dist/assets/{schema-badge-30B5syHA.js → schema-badge-jX28kUa6.js} +1 -1
- package/dist/assets/{schemas-Db29G8NU.js → schemas-BlFy-uPR.js} +1 -1
- package/dist/assets/{select-menu-BF2zI3RW.js → select-menu-BXv1rsVc.js} +1 -1
- package/dist/assets/{settings-agents-page-Bh-Bv6FQ.js → settings-agents-page-DN_np10S.js} +1 -1
- package/dist/assets/settings-bin-page-BM5BpK_i.js +1 -0
- package/dist/assets/{settings-calendar-page-BA4_Qqiu.js → settings-calendar-page-Cg0gSSFs.js} +3 -3
- package/dist/assets/{settings-data-page-K4kpmQJY.js → settings-data-page-Dwmp2rLy.js} +1 -1
- package/dist/assets/{settings-logs-page-DkuNPAZo.js → settings-logs-page-DQNM21Re.js} +1 -1
- package/dist/assets/{settings-mobile-page-4pCNwD91.js → settings-mobile-page-DQdiRa-a.js} +1 -1
- package/dist/assets/settings-models-page-CAEPpuHF.js +1 -0
- package/dist/assets/{settings-page-B_Be0vOY.js → settings-page-Cl2KiCFg.js} +1 -1
- package/dist/assets/{settings-rewards-page-C6nFTWJu.js → settings-rewards-page-DoIUumhe.js} +1 -1
- package/dist/assets/{settings-section-nav-Lo-VKCfZ.js → settings-section-nav-D_N87IG0.js} +1 -1
- package/dist/assets/{settings-users-page-CVzNp4-m.js → settings-users-page-CPesR62N.js} +1 -1
- package/dist/assets/{settings-wiki-page-DXM--7BB.js → settings-wiki-page-BxMQM5Vi.js} +1 -1
- package/dist/assets/{sleep-page-DvPdZMKx.js → sleep-page-DUYmQKrg.js} +1 -1
- package/dist/assets/{sports-page-DjuZlOur.js → sports-page-Bzi5TF9T.js} +1 -1
- package/dist/assets/{state-Bpe5dF3T.js → state-BFyKSULP.js} +1 -1
- package/dist/assets/{strategies-page-PE1IlatS.js → strategies-page-C-T2MZx4.js} +1 -1
- package/dist/assets/{strategy-detail-page-C4KiEGCI.js → strategy-detail-page-3tYuSZu-.js} +1 -1
- package/dist/assets/{strategy-dialog-Cwf7Y3P5.js → strategy-dialog-BWm4slo4.js} +1 -1
- package/dist/assets/{surface-ubuOfukq.js → surface-BJObZeRw.js} +1 -1
- package/dist/assets/{table-U7otr5go.js → table-CTLroJKN.js} +1 -1
- package/dist/assets/task-detail-page-ZZOXSpSF.js +1 -0
- package/dist/assets/{task-dialog-CI_Fy_FW.js → task-dialog-2wy0xI7f.js} +5 -5
- package/dist/assets/timebox-planning-dialog-C6h0Hp71.js +1 -0
- package/dist/assets/{today-boxes-CYuxSkZf.js → today-boxes-B_TdgSDz.js} +1 -1
- package/dist/assets/today-page-Dipns9tl.js +1 -0
- package/dist/assets/training-load-page-B78e1-o-.js +1 -0
- package/dist/assets/{ui-B9TWEtCx.js → ui-uo_bNP7c.js} +1 -1
- package/dist/assets/{use-anchored-overlay-position-BY4kNzPj.js → use-anchored-overlay-position-BSxFX6Hi.js} +1 -1
- package/dist/assets/{use-psyche-focus-target-BhNedCZB.js → use-psyche-focus-target-1GLkhYiv.js} +1 -1
- package/dist/assets/{user-badge-ByhC6bMU.js → user-badge-C4eZu1e_.js} +1 -1
- package/dist/assets/{user-select-field-fx129Uh6.js → user-select-field-CmKwcbZt.js} +1 -1
- package/dist/assets/{utility-widgets-ilORjDmg.js → utility-widgets-B06wQFrd.js} +2 -2
- package/dist/assets/{vendor-BwL6m4SE.js → vendor-B7FKSwHK.js} +222 -212
- package/dist/assets/{vitals-page-mdEqIm_9.js → vitals-page-BC7QFsm2.js} +1 -1
- package/dist/assets/{weekly-review-page-C8W-yg5r.js → weekly-review-page-BjNsNoWj.js} +1 -1
- package/dist/assets/{weight-loss-page-BApTknCn.js → weight-loss-page-BOahGY9r.js} +1 -1
- package/dist/assets/{wiki-article-markdown-DBccllQg.js → wiki-article-markdown-DO47HnZf.js} +2 -2
- package/dist/assets/{wiki-editor-page-BfRfH1O3.js → wiki-editor-page-OWRUHl4O.js} +5 -5
- package/dist/assets/{wiki-ingest-history-page-C-6H3MU6.js → wiki-ingest-history-page-CuHpg2lZ.js} +1 -1
- package/dist/assets/{wiki-ingest-modal-DnlhByD_.js → wiki-ingest-modal-EZ3kX-vA.js} +1 -1
- package/dist/assets/wiki-page-BPV3HIgu.js +1 -0
- package/dist/assets/{workbench-flow-page-_-NKIx5R.js → workbench-flow-page-C53KueEz.js} +3 -3
- package/dist/assets/{workbench-page-NIAzggwX.js → workbench-page-DJ7nT2JQ.js} +1 -1
- package/dist/assets/workout-detail-page-Dhyu0q7o.js +2 -0
- package/dist/index.html +8 -8
- package/dist/openclaw/api-client.js +28 -2
- package/dist/openclaw/local-runtime.js +31 -14
- package/dist/openclaw/parity.d.ts +1 -1
- package/dist/openclaw/parity.js +10 -0
- package/dist/openclaw/routes.js +78 -0
- package/dist/openclaw/tools.js +42 -0
- package/dist/server/apps/api/migrations/072_artifact_store.sql +106 -0
- package/dist/server/{server → apps/api}/src/app.js +365 -4
- package/dist/server/{server → apps/api}/src/connectors/box-registry.js +3 -3
- package/dist/server/{server → apps/api}/src/db.js +23 -4
- package/dist/server/{server → apps/api}/src/health-weight-loss.js +1 -1
- package/dist/server/{server → apps/api}/src/openapi.js +570 -1
- package/dist/server/{server → apps/api}/src/questionnaire-seeds.js +1 -1
- package/dist/server/{server → apps/api}/src/repositories/ai-connectors.js +1 -1
- package/dist/server/apps/api/src/repositories/entity-links.js +66 -0
- package/dist/server/{server → apps/api}/src/repositories/habits.js +1 -1
- package/dist/server/apps/api/src/services/artifacts.js +1059 -0
- package/dist/server/{server → apps/api}/src/services/companion-iroh.js +4 -1
- package/dist/server/{server → apps/api}/src/services/doctor.js +3 -3
- package/dist/server/{server → apps/api}/src/services/entity-crud.js +22 -0
- package/dist/server/{server → apps/api}/src/services/gamification-assets.js +1 -1
- package/dist/server/{server → apps/api}/src/services/gamification.js +1 -1
- package/dist/server/{server → apps/api}/src/services/knowledge-graph.js +48 -3
- package/dist/server/{server → apps/api}/src/services/psyche-observation-calendar.js +1 -0
- package/dist/server/{server → apps/api}/src/types.js +4 -2
- package/dist/server/{server → apps/api}/src/watch-mobile.js +1 -1
- package/dist/server/{src → apps/web/src}/lib/api.js +69 -0
- package/dist/server/{src → apps/web/src}/lib/entity-visuals.js +10 -1
- package/dist/server/{src → apps/web/src}/lib/knowledge-graph-types.js +9 -0
- package/openclaw.plugin.json +2 -1
- package/package.json +3 -3
- package/server/index.js +3 -3
- package/server/migrations/072_artifact_store.sql +106 -0
- package/skills/forge-openclaw/SKILL.md +60 -7
- package/skills/forge-openclaw/entity_conversation_playbooks.md +212 -14
- package/skills/forge-openclaw/psyche_entity_playbooks.md +20 -0
- package/dist/assets/execution-board-D66C_ikW.js +0 -1
- package/dist/assets/goals-page-CQ2lJMzI.js +0 -1
- package/dist/assets/habits-page-a7KVPaQp.js +0 -1
- package/dist/assets/index-ClJbJhca.css +0 -1
- package/dist/assets/index-FpGANF9S.js +0 -2
- package/dist/assets/knowledge-graph-page-DxEBaEke.js +0 -1
- package/dist/assets/notes-page-DvHMcQey.js +0 -1
- package/dist/assets/overview-page-Z5vaUTm3.js +0 -1
- package/dist/assets/page-hero-DvrM83_C.js +0 -1
- package/dist/assets/pill-cluster-DYI3Ibj8.js +0 -1
- package/dist/assets/project-detail-page-B9PqyPu9.js +0 -1
- package/dist/assets/project-management-hierarchy-page-DXK14jn0.js +0 -1
- package/dist/assets/projects-page-CdAk-ByT.js +0 -1
- package/dist/assets/psyche-behaviors-page-CbhhTfU2.js +0 -5
- package/dist/assets/psyche-mode-guide-page-CR8e984W.js +0 -1
- package/dist/assets/psyche-modes-page-lQdpAcY3.js +0 -1
- package/dist/assets/psyche-page-CTdIDkw9.js +0 -1
- package/dist/assets/psyche-patterns-page-Drgm-f7I.js +0 -5
- package/dist/assets/psyche-questionnaire-run-detail-page-SYndwtF3.js +0 -1
- package/dist/assets/psyche-reports-page-Cn0EBndy.js +0 -1
- package/dist/assets/psyche-schemas-beliefs-page-Bab4xSWv.js +0 -9
- package/dist/assets/rewards-page-FxUXB76B.js +0 -1
- package/dist/assets/settings-bin-page-DT8JJero.js +0 -1
- package/dist/assets/settings-models-page-CZHG3t7W.js +0 -1
- package/dist/assets/task-detail-page-B3SMFZQ3.js +0 -1
- package/dist/assets/timebox-planning-dialog-BtFuVoA1.js +0 -1
- package/dist/assets/today-page-CHGpLEZ3.js +0 -1
- package/dist/assets/training-load-page-GZJF-Yy5.js +0 -1
- package/dist/assets/wiki-page-DPZ55e3x.js +0 -1
- package/dist/assets/workout-detail-page-3fxr6HL4.js +0 -2
- /package/dist/server/{server → apps/api}/migrations/001_core.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/002_psyche.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/003_habits.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/004_habit_links.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/005_habit_psyche_links.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/006_work_adjustments.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/007_weekly_review_closures.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/008_calendar_execution.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/009_true_calendar_events.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/010_calendar_selection_state.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/011_calendar_timezone_backfill.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/012_work_block_ranges.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/013_microsoft_local_auth_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/014_note_tags_and_ephemeral.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/015_multi_user_and_strategies.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/016_health_companion.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/016_strategy_contracts_and_user_graph.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/017_preferences.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/018_preference_catalogs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/019_wiki_memory.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/020_wiki_page_hierarchy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/021_hide_evidence_from_wiki_index.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/022_wiki_ingest_background.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/023_diagnostic_logs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/024_questionnaires.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/025_ai_model_connections.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/026_custom_theme_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/027_ai_processors.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/028_movement_domain.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/029_watch_micro_capture.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/030_surface_layouts.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/031_ai_processor_runtime_upgrades.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/032_ai_connectors.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/033_movement_trip_point_sync.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/034_movement_segment_sync.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/035_google_local_auth_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/036_google_local_auth_client_secret.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/037_workbench_public_inputs_and_run_inputs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/038_data_management_settings.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/039_life_force_and_action_points.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/040_screen_time_domain.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/041_companion_source_states.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/042_movement_boxes.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/043_movement_box_overlap_overrides.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/044_macos_local_calendar_provider.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/045_sleep_nights_and_raw_segments.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/046_work_item_hierarchy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/047_sleep_source_records.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/048_task_run_git_context.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/049_agent_runtime_sessions.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/050_agent_token_bootstrap_policy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/051_agent_token_scope_policy.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/052_agent_identity_tightening.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/053_agent_runtime_session_canonical_labels.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/054_sqlite_backed_wiki_memory.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/055_gamification_progression.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/056_gamification_equipment.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/057_gamification_catalog_cleanup.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/058_gamification_theme_preference.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/059_data_backup_retention.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/060_psyche_devrage_metrics.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/061_health_workout_raw_evidence.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/062_health_mobile_sync_sessions.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/063_psyche_flashcards.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/064_health_workout_time_series_identity.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/065_weight_loss_nutrition_insights.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/066_watch_action_receipts.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/067_weight_loss_daily_active_overrides.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/068_remove_generated_movement_wiki_logs.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/069_psyche_devrage_cumulative_rage.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/070_health_mobile_sync_completion_index.sql +0 -0
- /package/dist/server/{server → apps/api}/migrations/071_agent_runtime_claude_identity.sql +0 -0
- /package/dist/server/{server → apps/api}/src/data-management-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/debug.js +0 -0
- /package/dist/server/{server → apps/api}/src/demo-data.js +0 -0
- /package/dist/server/{server → apps/api}/src/discovery-advertiser.js +0 -0
- /package/dist/server/{server → apps/api}/src/e2e-server.js +0 -0
- /package/dist/server/{server → apps/api}/src/errors.js +0 -0
- /package/dist/server/{server → apps/api}/src/health-workout-adapters.js +0 -0
- /package/dist/server/{server → apps/api}/src/health-workout-analytics.js +0 -0
- /package/dist/server/{server → apps/api}/src/health.js +0 -0
- /package/dist/server/{server → apps/api}/src/index.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/base.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/contracts.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/api-gateway-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/audit-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/authentication-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/authorization-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/background-job-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/configuration-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/database-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/event-bus-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/external-service-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/health-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/llm-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/migration-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/mock-workbench-provider.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/openai-responses-provider.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/search-index-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/secrets-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/session-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/storage-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/token-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/transaction-manager.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/platform/trusted-network.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/runtime.js +0 -0
- /package/dist/server/{server → apps/api}/src/managers/type-guards.js +0 -0
- /package/dist/server/{server → apps/api}/src/movement.js +0 -0
- /package/dist/server/{server → apps/api}/src/preferences-seeds.js +0 -0
- /package/dist/server/{server → apps/api}/src/preferences-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/psyche-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/questionnaire-flow.js +0 -0
- /package/dist/server/{server → apps/api}/src/questionnaire-types.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/activity-events.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/agent-runtime-sessions.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/ai-processors.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/calendar.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/collaboration.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/deleted-entities.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/diagnostic-logs.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/domains.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/entity-ownership.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/event-log.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/gamification.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/goals.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/model-settings.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/notes.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/preferences.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/projects.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/psyche.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/questionnaires.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/rewards.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/settings.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/strategies.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/surface-layouts.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/tags.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/task-runs.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/tasks.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/users.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/weekly-reviews.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/wiki-memory.js +0 -0
- /package/dist/server/{server → apps/api}/src/repositories/work-adjustments.js +0 -0
- /package/dist/server/{server → apps/api}/src/runtime-data-root.js +0 -0
- /package/dist/server/{server → apps/api}/src/screen-time.js +0 -0
- /package/dist/server/{server → apps/api}/src/seed-demo.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/calendar-runtime.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/context.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/dashboard.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/data-management.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/devrage-scanner.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/devrage.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/git-helper.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/google-calendar-oauth-config.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/insights.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/legacy-wiki-markdown-import.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/life-force-model.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/life-force.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/macos-calendar-helper.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/openai-codex-oauth.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/projects.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/psyche.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/relations.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/reviews.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/run-recovery.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/tagging.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/task-run-watchdog.js +0 -0
- /package/dist/server/{server → apps/api}/src/services/work-time.js +0 -0
- /package/dist/server/{server → apps/api}/src/web.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/customization/utility-widgets.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/ui/info-tooltip.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/calendar/calendar-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/goals/goals-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/habits/habits-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/health/health-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/insights/insights-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/kanban/kanban-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/movement/movement-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/notes/notes-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/overview/overview-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/preferences/preferences-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/projects/projects-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/psyche/psyche-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/questionnaires/questionnaires-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/review/review-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/shared/define-workbench-box.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/shared/generic-node-view.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/strategies/strategies-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/tasks/tasks-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/today/today-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/components/workbench-boxes/wiki/wiki-boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/api-error.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/calendar-name-deduper.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/data-management-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/date-keys.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/diagnostics.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/gamification-catalog.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/knowledge-graph.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/psyche-schemas.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/psyche-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/questionnaire-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/runtime-paths.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/schemas.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/snapshot-normalizer.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/theme-system.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/utils.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/weight-loss-energy-model.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/weight-loss-types.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/boxes.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/contracts.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/nodes.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/registry.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/runtime.js +0 -0
- /package/dist/server/{src → apps/web/src}/lib/workbench/tool-catalog.js +0 -0
|
@@ -317,19 +317,22 @@ function candidateIrohBinaries() {
|
|
|
317
317
|
const binaryName = process.platform === "win32" ? "forge-companion-iroh.exe" : "forge-companion-iroh";
|
|
318
318
|
const platformKey = `${process.platform}-${process.arch}`;
|
|
319
319
|
return candidateIrohAssetRoots().flatMap((root) => [
|
|
320
|
+
path.join(root, "packages", "companion-iroh", "target", "release", binaryName),
|
|
321
|
+
path.join(root, "packages", "companion-iroh", "target", "debug", binaryName),
|
|
320
322
|
path.join(root, "companion-iroh", "target", "release", binaryName),
|
|
321
323
|
path.join(root, "companion-iroh", "target", "debug", binaryName),
|
|
322
324
|
path.join(root, "companion-iroh-src", "target", "release", binaryName),
|
|
323
325
|
path.join(root, "companion-iroh-src", "target", "debug", binaryName),
|
|
324
326
|
path.join(root, "dist", "companion-iroh-src", "target", "release", binaryName),
|
|
325
327
|
path.join(root, "dist", "companion-iroh-src", "target", "debug", binaryName),
|
|
326
|
-
path.join(root, "openclaw
|
|
328
|
+
path.join(root, "plugins/openclaw", "dist", "companion-iroh", platformKey, binaryName),
|
|
327
329
|
path.join(root, "companion-iroh", platformKey, binaryName),
|
|
328
330
|
path.join(root, "companion-iroh", binaryName)
|
|
329
331
|
]);
|
|
330
332
|
}
|
|
331
333
|
function resolveCompanionIrohManifestPath() {
|
|
332
334
|
const candidates = candidateIrohAssetRoots().flatMap((root) => [
|
|
335
|
+
path.join(root, "packages", "companion-iroh", "Cargo.toml"),
|
|
333
336
|
path.join(root, "companion-iroh", "Cargo.toml"),
|
|
334
337
|
path.join(root, "companion-iroh-src", "Cargo.toml"),
|
|
335
338
|
path.join(root, "dist", "companion-iroh-src", "Cargo.toml")
|
|
@@ -2,9 +2,9 @@ import { access, readdir } from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { getDatabase, runInTransaction } from "../db.js";
|
|
5
|
-
import { GAMIFICATION_CATALOG } from "../../../src/lib/gamification-catalog.js";
|
|
6
|
-
const
|
|
7
|
-
const migrationsDir = path.join(
|
|
5
|
+
import { GAMIFICATION_CATALOG } from "../../../web/src/lib/gamification-catalog.js";
|
|
6
|
+
const apiRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
7
|
+
const migrationsDir = path.join(apiRoot, "migrations");
|
|
8
8
|
const safeIntegrityRefreshFix = {
|
|
9
9
|
id: "settings.integrity.refresh",
|
|
10
10
|
kind: "safe_auto_fix",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z, ZodError } from "zod";
|
|
2
2
|
import { getDatabase, runInTransaction } from "../db.js";
|
|
3
3
|
import { createSleepSession, createSleepSessionSchema, createWorkoutSession, createWorkoutSessionSchema, deleteSleepSession, deleteWorkoutSession, getSleepSessionById, getWorkoutSessionById, listSleepSessions, listWorkoutSessions, updateSleepSession, updateSleepSessionSchema, updateWorkoutSession, updateWorkoutSessionSchema } from "../health.js";
|
|
4
|
+
import { artifactMetadataCreateSchema, artifactMetadataPatchSchema, createArtifactMetadata, deleteArtifactMetadata, getArtifactById, listArtifacts, updateArtifactMetadata } from "./artifacts.js";
|
|
4
5
|
import { createInsight, deleteInsight, getInsightById, listInsights, updateInsight } from "../repositories/collaboration.js";
|
|
5
6
|
import { createCalendarEvent, createTaskTimebox, createWorkBlockTemplate, deleteCalendarEvent, deleteTaskTimebox, deleteWorkBlockTemplate, getCalendarEventById, getTaskTimeboxById, getWorkBlockTemplateById, listCalendarEvents, listTaskTimeboxes, listWorkBlockTemplates, updateCalendarEvent, updateTaskTimebox, updateWorkBlockTemplate } from "../repositories/calendar.js";
|
|
6
7
|
import { createNote, deleteNote, getNoteById, listNotes, unlinkNotesForEntity, updateNote } from "../repositories/notes.js";
|
|
@@ -157,6 +158,17 @@ const CRUD_ENTITY_CAPABILITIES = {
|
|
|
157
158
|
update: (id, patch) => updateTaskTimebox(id, patch),
|
|
158
159
|
hardDelete: (id) => deleteTaskTimebox(id)
|
|
159
160
|
},
|
|
161
|
+
artifact: {
|
|
162
|
+
entityType: "artifact",
|
|
163
|
+
routeBase: "/api/v1/artifacts",
|
|
164
|
+
deleteMode: "soft_default",
|
|
165
|
+
inBin: true,
|
|
166
|
+
list: () => listArtifacts(),
|
|
167
|
+
get: (id) => getArtifactById(id),
|
|
168
|
+
create: () => createArtifactMetadata(),
|
|
169
|
+
update: (id, patch, context) => updateArtifactMetadata(id, patch, context),
|
|
170
|
+
hardDelete: (id, context) => deleteArtifactMetadata(id, context)
|
|
171
|
+
},
|
|
160
172
|
sleep_session: {
|
|
161
173
|
entityType: "sleep_session",
|
|
162
174
|
routeBase: "/api/v1/health/sleep",
|
|
@@ -370,6 +382,7 @@ const CREATE_ENTITY_SCHEMAS = {
|
|
|
370
382
|
calendar_event: createCalendarEventSchema,
|
|
371
383
|
work_block_template: createWorkBlockTemplateSchema,
|
|
372
384
|
task_timebox: createTaskTimeboxSchema,
|
|
385
|
+
artifact: artifactMetadataCreateSchema,
|
|
373
386
|
sleep_session: createSleepSessionSchema,
|
|
374
387
|
workout_session: createWorkoutSessionSchema,
|
|
375
388
|
psyche_value: createPsycheValueSchema,
|
|
@@ -400,6 +413,7 @@ const UPDATE_ENTITY_SCHEMAS = {
|
|
|
400
413
|
calendar_event: updateCalendarEventSchema,
|
|
401
414
|
work_block_template: updateWorkBlockTemplateSchema,
|
|
402
415
|
task_timebox: updateTaskTimeboxSchema,
|
|
416
|
+
artifact: artifactMetadataPatchSchema,
|
|
403
417
|
sleep_session: updateSleepSessionSchema,
|
|
404
418
|
workout_session: updateWorkoutSessionSchema,
|
|
405
419
|
psyche_value: updatePsycheValueSchema,
|
|
@@ -702,6 +716,14 @@ function matchesLinkedTo(entityType, entity, linkedTo) {
|
|
|
702
716
|
case "task_timebox":
|
|
703
717
|
return ((linkedTo.entityType === "task" && entity.taskId === linkedTo.id) ||
|
|
704
718
|
(linkedTo.entityType === "project" && entity.projectId === linkedTo.id));
|
|
719
|
+
case "artifact":
|
|
720
|
+
return (Array.isArray(entity.links) &&
|
|
721
|
+
entity.links.some((link) => typeof link === "object" &&
|
|
722
|
+
link !== null &&
|
|
723
|
+
"entityType" in link &&
|
|
724
|
+
"entityId" in link &&
|
|
725
|
+
link.entityType === linkedTo.entityType &&
|
|
726
|
+
link.entityId === linkedTo.id));
|
|
705
727
|
case "psyche_value":
|
|
706
728
|
return ((linkedTo.entityType === "goal" && Array.isArray(entity.linkedGoalIds) && entity.linkedGoalIds.includes(linkedTo.id)) ||
|
|
707
729
|
(linkedTo.entityType === "project" && Array.isArray(entity.linkedProjectIds) && entity.linkedProjectIds.includes(linkedTo.id)) ||
|
|
@@ -5,7 +5,7 @@ import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import AdmZip from "adm-zip";
|
|
7
7
|
import { getEffectiveDataRoot } from "../db.js";
|
|
8
|
-
import { GAMIFICATION_CATALOG, GAMIFICATION_MASCOT_KEYS } from "../../../src/lib/gamification-catalog.js";
|
|
8
|
+
import { GAMIFICATION_CATALOG, GAMIFICATION_MASCOT_KEYS } from "../../../web/src/lib/gamification-catalog.js";
|
|
9
9
|
const assetVersion = "0.2.59";
|
|
10
10
|
const defaultReleaseBaseUrl = "https://github.com/albertbuchard/forge/releases/download/forge-gamification-assets-v0.2.59";
|
|
11
11
|
const styleDefinitions = [
|
|
@@ -2,7 +2,7 @@ import { getDatabase } from "../db.js";
|
|
|
2
2
|
import { enqueueGamificationCelebration, getGamificationEquipment, insertGamificationUnlock, listGamificationDailyActivity, listGamificationUnlocks, listUnseenGamificationCelebrations, replaceGamificationDailyActivity, upsertGamificationEquipment } from "../repositories/gamification.js";
|
|
3
3
|
import { getDailyAmbientXp, listRewardRules, recordEntityCreationReward } from "../repositories/rewards.js";
|
|
4
4
|
import { getDefaultUser, listUsers, listUsersByIds } from "../repositories/users.js";
|
|
5
|
-
import { GAMIFICATION_CATALOG, GAMIFICATION_STREAK_AWAY_DAY_KEYS, GAMIFICATION_STREAK_POWER_DAY_KEYS } from "../../../src/lib/gamification-catalog.js";
|
|
5
|
+
import { GAMIFICATION_CATALOG, GAMIFICATION_STREAK_AWAY_DAY_KEYS, GAMIFICATION_STREAK_POWER_DAY_KEYS } from "../../../web/src/lib/gamification-catalog.js";
|
|
6
6
|
import { achievementSignalSchema, gamificationCatalogPayloadSchema, gamificationProfileSchema, milestoneRewardSchema } from "../types.js";
|
|
7
7
|
const XP_CURVE_VERSION = "smith-forge";
|
|
8
8
|
const ENTITY_CREATION_REWARD_SOURCES = [
|
|
@@ -12,9 +12,10 @@ import { listTasks } from "../repositories/tasks.js";
|
|
|
12
12
|
import { listWikiSpaces } from "../repositories/wiki-memory.js";
|
|
13
13
|
import { listProjectSummaries } from "./projects.js";
|
|
14
14
|
import { listAiConnectors } from "../repositories/ai-connectors.js";
|
|
15
|
-
import { buildKnowledgeGraphFacets, buildKnowledgeGraphFocusPayload, filterKnowledgeGraphData, selectKnowledgeGraphVisibleNodeIds } from "../../../src/lib/knowledge-graph.js";
|
|
16
|
-
import { getEntityVisual } from "../../../src/lib/entity-visuals.js";
|
|
17
|
-
import {
|
|
15
|
+
import { buildKnowledgeGraphFacets, buildKnowledgeGraphFocusPayload, filterKnowledgeGraphData, selectKnowledgeGraphVisibleNodeIds } from "../../../web/src/lib/knowledge-graph.js";
|
|
16
|
+
import { getEntityVisual } from "../../../web/src/lib/entity-visuals.js";
|
|
17
|
+
import { listArtifacts } from "./artifacts.js";
|
|
18
|
+
import { KNOWLEDGE_GRAPH_RELATION_FAMILY_MAP, buildKnowledgeGraphFocusHref, buildKnowledgeGraphNodeId, getKnowledgeGraphEntityHref } from "../../../web/src/lib/knowledge-graph-types.js";
|
|
18
19
|
const GRAPH_RANGE = {
|
|
19
20
|
from: "2000-01-01T00:00:00.000Z",
|
|
20
21
|
to: "2100-01-01T00:00:00.000Z"
|
|
@@ -34,6 +35,7 @@ const BASE_NODE_SIZE = {
|
|
|
34
35
|
calendar_event: 34,
|
|
35
36
|
work_block: 32,
|
|
36
37
|
timebox: 33,
|
|
38
|
+
artifact: 36,
|
|
37
39
|
value: 38,
|
|
38
40
|
pattern: 38,
|
|
39
41
|
behavior: 38,
|
|
@@ -243,6 +245,13 @@ export function buildKnowledgeGraph(userIds, query = {}) {
|
|
|
243
245
|
const calendarEvents = listCalendarEvents({ ...GRAPH_RANGE, userIds });
|
|
244
246
|
const workBlocks = listWorkBlockTemplates({ userIds });
|
|
245
247
|
const timeboxes = listTaskTimeboxes({ ...GRAPH_RANGE, userIds });
|
|
248
|
+
const artifacts = listArtifacts().filter((artifact) => {
|
|
249
|
+
if (selectedUserIds.size === 0) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
return Boolean((artifact.uploadedByUserId && selectedUserIds.has(artifact.uploadedByUserId)) ||
|
|
253
|
+
(artifact.actingForUserId && selectedUserIds.has(artifact.actingForUserId)));
|
|
254
|
+
});
|
|
246
255
|
const eventTypes = filterOwnedEntities("event_type", listEventTypes(), userIds);
|
|
247
256
|
const emotions = filterOwnedEntities("emotion_definition", listEmotionDefinitions(), userIds);
|
|
248
257
|
const values = filterOwnedEntities("psyche_value", listPsycheValues(), userIds);
|
|
@@ -808,6 +817,42 @@ export function buildKnowledgeGraph(userIds, query = {}) {
|
|
|
808
817
|
});
|
|
809
818
|
}
|
|
810
819
|
}
|
|
820
|
+
for (const artifact of artifacts) {
|
|
821
|
+
nodes.set(buildKnowledgeGraphNodeId("artifact", artifact.id), makeNode({
|
|
822
|
+
entityType: "artifact",
|
|
823
|
+
entityId: artifact.id,
|
|
824
|
+
entityKind: "artifact",
|
|
825
|
+
title: artifact.title,
|
|
826
|
+
subtitle: `${artifact.detectedExtension.toUpperCase()} · ${artifact.dangerLevel}`,
|
|
827
|
+
description: artifact.shortDescription || artifact.description,
|
|
828
|
+
searchText: JSON.stringify({
|
|
829
|
+
title: artifact.title,
|
|
830
|
+
shortDescription: artifact.shortDescription,
|
|
831
|
+
description: artifact.description,
|
|
832
|
+
originalFileName: artifact.originalFileName,
|
|
833
|
+
sourceLabel: artifact.sourceLabel,
|
|
834
|
+
metadata: artifact.metadata
|
|
835
|
+
}),
|
|
836
|
+
previewStats: [
|
|
837
|
+
{ label: "Format", value: artifact.formatFamily },
|
|
838
|
+
{ label: "Danger", value: `${artifact.dangerScore}/100` },
|
|
839
|
+
{ label: "Links", value: artifact.links.length }
|
|
840
|
+
],
|
|
841
|
+
href: getKnowledgeGraphEntityHref("artifact", artifact.id),
|
|
842
|
+
updatedAt: artifact.updatedAt
|
|
843
|
+
}));
|
|
844
|
+
for (const link of artifact.links) {
|
|
845
|
+
addEdge(edges, {
|
|
846
|
+
source: buildKnowledgeGraphNodeId("artifact", artifact.id),
|
|
847
|
+
target: buildKnowledgeGraphNodeId(link.targetEntityType, link.targetEntityId),
|
|
848
|
+
relationKind: "entity_link",
|
|
849
|
+
label: link.relationship || "Entity link",
|
|
850
|
+
strength: 0.7,
|
|
851
|
+
directional: true,
|
|
852
|
+
structural: false
|
|
853
|
+
});
|
|
854
|
+
}
|
|
855
|
+
}
|
|
811
856
|
for (const eventType of eventTypes) {
|
|
812
857
|
nodes.set(buildKnowledgeGraphNodeId("event_type", eventType.id), makeNode({
|
|
813
858
|
entityType: "event_type",
|
|
@@ -40,6 +40,7 @@ const ACTIVITY_ENTITY_LABELS = {
|
|
|
40
40
|
work_block: "Work block",
|
|
41
41
|
work_block_template: "Work block template",
|
|
42
42
|
task_timebox: "Task timebox",
|
|
43
|
+
artifact: "Artifact",
|
|
43
44
|
preference_catalog: "Preference catalog",
|
|
44
45
|
preference_catalog_item: "Preference concept",
|
|
45
46
|
preference_context: "Preference context",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { LEGACY_WORKBENCH_PORT_KINDS, WORKBENCH_PORT_KINDS, normalizeWorkbenchPortKind } from "../../src/lib/workbench/nodes.js";
|
|
3
|
-
import { formatLocalDateKey } from "../../src/lib/date-keys.js";
|
|
2
|
+
import { LEGACY_WORKBENCH_PORT_KINDS, WORKBENCH_PORT_KINDS, normalizeWorkbenchPortKind } from "../../web/src/lib/workbench/nodes.js";
|
|
3
|
+
import { formatLocalDateKey } from "../../web/src/lib/date-keys.js";
|
|
4
4
|
export const taskStatusSchema = z.enum([
|
|
5
5
|
"backlog",
|
|
6
6
|
"focus",
|
|
@@ -172,6 +172,7 @@ export const activityEntityTypeSchema = z.enum([
|
|
|
172
172
|
"work_block",
|
|
173
173
|
"work_block_template",
|
|
174
174
|
"task_timebox",
|
|
175
|
+
"artifact",
|
|
175
176
|
"sleep_session",
|
|
176
177
|
"workout_session"
|
|
177
178
|
]);
|
|
@@ -358,6 +359,7 @@ export const crudEntityTypeSchema = z.enum([
|
|
|
358
359
|
"calendar_event",
|
|
359
360
|
"work_block_template",
|
|
360
361
|
"task_timebox",
|
|
362
|
+
"artifact",
|
|
361
363
|
"psyche_value",
|
|
362
364
|
"behavior_pattern",
|
|
363
365
|
"behavior",
|
|
@@ -11,7 +11,7 @@ import { listProjectSummaries } from "./services/projects.js";
|
|
|
11
11
|
import { listTasks, updateTask } from "./repositories/tasks.js";
|
|
12
12
|
import { claimTaskRun, completeTaskRun, focusTaskRun, heartbeatTaskRun, listTaskRuns, releaseTaskRun } from "./repositories/task-runs.js";
|
|
13
13
|
import { createTriggerReport, listBehaviorPatterns, listBehaviors, listEmotionDefinitions, listEventTypes, listModeProfiles, listPsycheValues, listTriggerReports } from "./repositories/psyche.js";
|
|
14
|
-
import { formatLocalDateKey } from "../../src/lib/date-keys.js";
|
|
14
|
+
import { formatLocalDateKey } from "../../web/src/lib/date-keys.js";
|
|
15
15
|
const watchHistoryStateSchema = z.enum(["aligned", "unaligned", "unknown"]);
|
|
16
16
|
const watchPromptKindSchema = z.enum([
|
|
17
17
|
"new_place",
|
|
@@ -890,6 +890,75 @@ export function createNote(input) {
|
|
|
890
890
|
body: JSON.stringify(input)
|
|
891
891
|
});
|
|
892
892
|
}
|
|
893
|
+
export async function listArtifacts(options = {}) {
|
|
894
|
+
const search = new URLSearchParams();
|
|
895
|
+
if (options.query?.trim()) {
|
|
896
|
+
search.set("query", options.query.trim());
|
|
897
|
+
}
|
|
898
|
+
if (options.artifactState) {
|
|
899
|
+
search.set("artifactState", options.artifactState);
|
|
900
|
+
}
|
|
901
|
+
if (options.dangerLevel) {
|
|
902
|
+
search.set("dangerLevel", options.dangerLevel);
|
|
903
|
+
}
|
|
904
|
+
if (options.formatFamily) {
|
|
905
|
+
search.set("formatFamily", options.formatFamily);
|
|
906
|
+
}
|
|
907
|
+
if (options.linkedEntityType?.trim() && options.linkedEntityId?.trim()) {
|
|
908
|
+
search.set("linkedEntityType", options.linkedEntityType.trim());
|
|
909
|
+
search.set("linkedEntityId", options.linkedEntityId.trim());
|
|
910
|
+
}
|
|
911
|
+
if (options.limit) {
|
|
912
|
+
search.set("limit", String(options.limit));
|
|
913
|
+
}
|
|
914
|
+
const suffix = search.size > 0 ? `?${search.toString()}` : "";
|
|
915
|
+
return request(`/api/v1/artifacts${suffix}`);
|
|
916
|
+
}
|
|
917
|
+
export function getArtifact(artifactId) {
|
|
918
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}`);
|
|
919
|
+
}
|
|
920
|
+
export function uploadArtifact(input) {
|
|
921
|
+
return request("/api/v1/artifacts", {
|
|
922
|
+
method: "POST",
|
|
923
|
+
body: JSON.stringify(input)
|
|
924
|
+
});
|
|
925
|
+
}
|
|
926
|
+
export function patchArtifact(artifactId, patch) {
|
|
927
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}`, {
|
|
928
|
+
method: "PATCH",
|
|
929
|
+
body: JSON.stringify(patch)
|
|
930
|
+
});
|
|
931
|
+
}
|
|
932
|
+
export function downloadArtifact(artifactId) {
|
|
933
|
+
return requestBlob(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/download`);
|
|
934
|
+
}
|
|
935
|
+
export function rescanArtifact(artifactId) {
|
|
936
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/scan`, { method: "POST" });
|
|
937
|
+
}
|
|
938
|
+
export function enrichArtifact(artifactId, input = {}) {
|
|
939
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/enrich`, {
|
|
940
|
+
method: "POST",
|
|
941
|
+
body: JSON.stringify(input)
|
|
942
|
+
});
|
|
943
|
+
}
|
|
944
|
+
export function replaceArtifactEntityLinks(artifactId, links) {
|
|
945
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/links`, {
|
|
946
|
+
method: "POST",
|
|
947
|
+
body: JSON.stringify({ links })
|
|
948
|
+
});
|
|
949
|
+
}
|
|
950
|
+
export function patchArtifactTrust(artifactId, input) {
|
|
951
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/trust`, {
|
|
952
|
+
method: "POST",
|
|
953
|
+
body: JSON.stringify(input)
|
|
954
|
+
});
|
|
955
|
+
}
|
|
956
|
+
export function listArtifactVersions(artifactId) {
|
|
957
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/versions`);
|
|
958
|
+
}
|
|
959
|
+
export function listArtifactAuditEvents(artifactId) {
|
|
960
|
+
return request(`/api/v1/artifacts/${encodeURIComponent(artifactId)}/audit`);
|
|
961
|
+
}
|
|
893
962
|
export function getNote(noteId) {
|
|
894
963
|
return request(`/api/v1/notes/${noteId}`);
|
|
895
964
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bot, CalendarDays, Compass, FileText, FolderOpen, GitBranch, Heart, ListTodo, Network, NotebookPen, PanelTop, Quote, RefreshCw, Repeat, Route, Shapes, Sparkles, StickyNote, Target, Timer, Workflow } from "lucide-react";
|
|
1
|
+
import { Archive, Bot, CalendarDays, Compass, FileText, FolderOpen, GitBranch, Heart, ListTodo, Network, NotebookPen, PanelTop, Quote, RefreshCw, Repeat, Route, Shapes, Sparkles, StickyNote, Target, Timer, Workflow } from "lucide-react";
|
|
2
2
|
export const ENTITY_KINDS = [
|
|
3
3
|
"goal",
|
|
4
4
|
"project",
|
|
@@ -14,6 +14,7 @@ export const ENTITY_KINDS = [
|
|
|
14
14
|
"calendar_event",
|
|
15
15
|
"work_block",
|
|
16
16
|
"timebox",
|
|
17
|
+
"artifact",
|
|
17
18
|
"value",
|
|
18
19
|
"pattern",
|
|
19
20
|
"behavior",
|
|
@@ -127,6 +128,13 @@ const ENTITY_VISUAL_SEEDS = [
|
|
|
127
128
|
iconName: "Timer",
|
|
128
129
|
accentRgb: [244, 114, 182]
|
|
129
130
|
},
|
|
131
|
+
{
|
|
132
|
+
kind: "artifact",
|
|
133
|
+
label: "Artifact",
|
|
134
|
+
icon: Archive,
|
|
135
|
+
iconName: "Archive",
|
|
136
|
+
accentRgb: [45, 212, 191]
|
|
137
|
+
},
|
|
130
138
|
{
|
|
131
139
|
kind: "value",
|
|
132
140
|
label: "Value",
|
|
@@ -259,6 +267,7 @@ const CRUD_ENTITY_KIND_MAP = {
|
|
|
259
267
|
calendar_event: "calendar_event",
|
|
260
268
|
work_block_template: "work_block",
|
|
261
269
|
task_timebox: "timebox",
|
|
270
|
+
artifact: "artifact",
|
|
262
271
|
psyche_value: "value",
|
|
263
272
|
behavior_pattern: "pattern",
|
|
264
273
|
behavior: "behavior",
|
|
@@ -39,6 +39,11 @@ export const KNOWLEDGE_GRAPH_HIERARCHY_LANES = [
|
|
|
39
39
|
label: "Calendar",
|
|
40
40
|
kinds: ["calendar_event", "work_block", "timebox"]
|
|
41
41
|
},
|
|
42
|
+
{
|
|
43
|
+
id: "artifacts",
|
|
44
|
+
label: "Artifacts",
|
|
45
|
+
kinds: ["artifact"]
|
|
46
|
+
},
|
|
42
47
|
{
|
|
43
48
|
id: "values",
|
|
44
49
|
label: "Values",
|
|
@@ -95,6 +100,7 @@ export const KNOWLEDGE_GRAPH_RELATION_LABELS = {
|
|
|
95
100
|
strategy_step: "Strategy step",
|
|
96
101
|
strategy_link: "Strategy context",
|
|
97
102
|
habit_link: "Habit link",
|
|
103
|
+
entity_link: "Entity link",
|
|
98
104
|
note_link: "Note link",
|
|
99
105
|
wiki_parent: "Wiki parent",
|
|
100
106
|
wiki_link: "Wiki link",
|
|
@@ -156,6 +162,7 @@ export const KNOWLEDGE_GRAPH_RELATION_FAMILY_MAP = {
|
|
|
156
162
|
strategy_step: "structural",
|
|
157
163
|
strategy_link: "contextual",
|
|
158
164
|
habit_link: "contextual",
|
|
165
|
+
entity_link: "contextual",
|
|
159
166
|
note_link: "contextual",
|
|
160
167
|
wiki_parent: "structural",
|
|
161
168
|
wiki_link: "contextual",
|
|
@@ -236,6 +243,8 @@ export function getKnowledgeGraphEntityHref(entityType, entityId, options) {
|
|
|
236
243
|
case "work_block_template":
|
|
237
244
|
case "task_timebox":
|
|
238
245
|
return `/calendar`;
|
|
246
|
+
case "artifact":
|
|
247
|
+
return `/artifacts/${encodeURIComponent(entityId)}`;
|
|
239
248
|
case "event_type":
|
|
240
249
|
case "emotion_definition":
|
|
241
250
|
return "/psyche/reports";
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "forge-openclaw-plugin",
|
|
3
3
|
"name": "Forge",
|
|
4
4
|
"description": "Curated OpenClaw adapter for the Forge collaboration API, UI entrypoint, and localhost auto-start runtime.",
|
|
5
|
-
"version": "0.3.
|
|
5
|
+
"version": "0.3.17",
|
|
6
6
|
"activation": {
|
|
7
7
|
"onStartup": true,
|
|
8
8
|
"onCapabilities": [
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"tools": [
|
|
25
25
|
"forge_adjust_work_minutes",
|
|
26
26
|
"forge_apply_doctor_fix",
|
|
27
|
+
"forge_call_artifact_route",
|
|
27
28
|
"forge_call_life_force_route",
|
|
28
29
|
"forge_call_movement_route",
|
|
29
30
|
"forge_call_workbench_route",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forge-openclaw-plugin",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.17",
|
|
4
4
|
"description": "Curated OpenClaw adapter for the Forge collaboration API, UI entrypoint, and localhost auto-start runtime.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/albertbuchard/forge.git",
|
|
11
|
-
"directory": "openclaw
|
|
11
|
+
"directory": "plugins/openclaw"
|
|
12
12
|
},
|
|
13
|
-
"homepage": "https://github.com/albertbuchard/forge/tree/main/openclaw
|
|
13
|
+
"homepage": "https://github.com/albertbuchard/forge/tree/main/plugins/openclaw#readme",
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/albertbuchard/forge/issues"
|
|
16
16
|
},
|
package/server/index.js
CHANGED
|
@@ -4,9 +4,9 @@ import path from "node:path";
|
|
|
4
4
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
5
5
|
|
|
6
6
|
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
7
|
-
const repoRoot = path.resolve(packageRoot, "..");
|
|
8
|
-
const builtRuntimeEntry = path.join(packageRoot, "dist", "server", "
|
|
9
|
-
const devRuntimeEntry = path.join(repoRoot, "
|
|
7
|
+
const repoRoot = path.resolve(packageRoot, "..", "..");
|
|
8
|
+
const builtRuntimeEntry = path.join(packageRoot, "dist", "server", "apps", "api", "src", "index.js");
|
|
9
|
+
const devRuntimeEntry = path.join(repoRoot, "apps", "api", "src", "index.ts");
|
|
10
10
|
const devDataRootWrapper = path.join(
|
|
11
11
|
repoRoot,
|
|
12
12
|
"scripts",
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS artifact_blobs (
|
|
2
|
+
content_sha256 TEXT PRIMARY KEY,
|
|
3
|
+
storage_key TEXT NOT NULL UNIQUE,
|
|
4
|
+
byte_size INTEGER NOT NULL,
|
|
5
|
+
detected_mime_type TEXT NOT NULL DEFAULT '',
|
|
6
|
+
created_at TEXT NOT NULL
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS artifacts (
|
|
10
|
+
id TEXT PRIMARY KEY,
|
|
11
|
+
title TEXT NOT NULL,
|
|
12
|
+
short_description TEXT NOT NULL DEFAULT '',
|
|
13
|
+
description TEXT NOT NULL DEFAULT '',
|
|
14
|
+
original_file_name TEXT NOT NULL,
|
|
15
|
+
storage_key TEXT NOT NULL,
|
|
16
|
+
storage_path TEXT NOT NULL,
|
|
17
|
+
content_sha256 TEXT NOT NULL,
|
|
18
|
+
byte_size INTEGER NOT NULL,
|
|
19
|
+
detected_extension TEXT NOT NULL,
|
|
20
|
+
declared_mime_type TEXT NOT NULL DEFAULT '',
|
|
21
|
+
detected_mime_type TEXT NOT NULL DEFAULT '',
|
|
22
|
+
format_family TEXT NOT NULL,
|
|
23
|
+
source_kind TEXT NOT NULL DEFAULT 'upload',
|
|
24
|
+
source_label TEXT NOT NULL DEFAULT '',
|
|
25
|
+
uploaded_by_user_id TEXT,
|
|
26
|
+
uploaded_by_agent_id TEXT,
|
|
27
|
+
acting_for_user_id TEXT,
|
|
28
|
+
artifact_state TEXT NOT NULL DEFAULT 'active',
|
|
29
|
+
danger_score INTEGER NOT NULL DEFAULT 0,
|
|
30
|
+
danger_level TEXT NOT NULL DEFAULT 'low',
|
|
31
|
+
download_policy TEXT NOT NULL DEFAULT 'human_only',
|
|
32
|
+
scan_results_json TEXT NOT NULL DEFAULT '{}',
|
|
33
|
+
enrichment_results_json TEXT NOT NULL DEFAULT '{}',
|
|
34
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
35
|
+
created_at TEXT NOT NULL,
|
|
36
|
+
updated_at TEXT NOT NULL,
|
|
37
|
+
FOREIGN KEY (content_sha256) REFERENCES artifact_blobs(content_sha256)
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_updated
|
|
41
|
+
ON artifacts (updated_at DESC);
|
|
42
|
+
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_state_danger
|
|
44
|
+
ON artifacts (artifact_state, danger_level, updated_at DESC);
|
|
45
|
+
|
|
46
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_sha
|
|
47
|
+
ON artifacts (content_sha256, updated_at DESC);
|
|
48
|
+
|
|
49
|
+
CREATE TABLE IF NOT EXISTS artifact_versions (
|
|
50
|
+
id TEXT PRIMARY KEY,
|
|
51
|
+
artifact_id TEXT NOT NULL,
|
|
52
|
+
version_number INTEGER NOT NULL,
|
|
53
|
+
content_sha256 TEXT NOT NULL,
|
|
54
|
+
storage_key TEXT NOT NULL,
|
|
55
|
+
byte_size INTEGER NOT NULL,
|
|
56
|
+
original_file_name TEXT NOT NULL,
|
|
57
|
+
scan_results_json TEXT NOT NULL DEFAULT '{}',
|
|
58
|
+
enrichment_results_json TEXT NOT NULL DEFAULT '{}',
|
|
59
|
+
created_by_actor TEXT,
|
|
60
|
+
created_at TEXT NOT NULL,
|
|
61
|
+
FOREIGN KEY (artifact_id) REFERENCES artifacts(id) ON DELETE CASCADE,
|
|
62
|
+
FOREIGN KEY (content_sha256) REFERENCES artifact_blobs(content_sha256),
|
|
63
|
+
UNIQUE (artifact_id, version_number)
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
CREATE INDEX IF NOT EXISTS idx_artifact_versions_artifact
|
|
67
|
+
ON artifact_versions (artifact_id, version_number DESC);
|
|
68
|
+
|
|
69
|
+
CREATE TABLE IF NOT EXISTS entity_links (
|
|
70
|
+
source_entity_type TEXT NOT NULL,
|
|
71
|
+
source_entity_id TEXT NOT NULL,
|
|
72
|
+
target_entity_type TEXT NOT NULL,
|
|
73
|
+
target_entity_id TEXT NOT NULL,
|
|
74
|
+
anchor_key TEXT NOT NULL DEFAULT '',
|
|
75
|
+
relationship TEXT NOT NULL DEFAULT 'related',
|
|
76
|
+
created_by_actor TEXT,
|
|
77
|
+
created_at TEXT NOT NULL,
|
|
78
|
+
PRIMARY KEY (
|
|
79
|
+
source_entity_type,
|
|
80
|
+
source_entity_id,
|
|
81
|
+
target_entity_type,
|
|
82
|
+
target_entity_id,
|
|
83
|
+
anchor_key,
|
|
84
|
+
relationship
|
|
85
|
+
)
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
CREATE INDEX IF NOT EXISTS idx_entity_links_source
|
|
89
|
+
ON entity_links (source_entity_type, source_entity_id, created_at DESC);
|
|
90
|
+
|
|
91
|
+
CREATE INDEX IF NOT EXISTS idx_entity_links_target
|
|
92
|
+
ON entity_links (target_entity_type, target_entity_id, created_at DESC);
|
|
93
|
+
|
|
94
|
+
CREATE TABLE IF NOT EXISTS artifact_audit_events (
|
|
95
|
+
id TEXT PRIMARY KEY,
|
|
96
|
+
artifact_id TEXT NOT NULL,
|
|
97
|
+
event_type TEXT NOT NULL,
|
|
98
|
+
actor TEXT,
|
|
99
|
+
source TEXT NOT NULL,
|
|
100
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
101
|
+
created_at TEXT NOT NULL,
|
|
102
|
+
FOREIGN KEY (artifact_id) REFERENCES artifacts(id) ON DELETE CASCADE
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
CREATE INDEX IF NOT EXISTS idx_artifact_audit_events_artifact
|
|
106
|
+
ON artifact_audit_events (artifact_id, created_at DESC);
|