dreamcontext 0.10.2 → 0.10.6
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 +39 -5
- package/agents/curator-auditor.md +5 -0
- package/agents/dreamcontext-explore.md +5 -1
- package/agents/initializer-ingestor.md +1 -0
- package/agents/initializer-scout.md +5 -0
- package/agents/sleep-product.md +2 -0
- package/agents/sleep-tasks.md +7 -2
- package/dist/agents/curator-auditor.md +5 -0
- package/dist/agents/dreamcontext-explore.md +5 -1
- package/dist/agents/initializer-ingestor.md +1 -0
- package/dist/agents/initializer-scout.md +5 -0
- package/dist/agents/sleep-product.md +2 -0
- package/dist/agents/sleep-tasks.md +7 -2
- package/dist/dashboard/assets/{BrainCanvas3D-BuhjqMJE.js → BrainCanvas3D-8hG96aAi.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-BFywhIrF.js → _baseUniq-b4AibH2-.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-0wtAtjf3.js → ar-SA-G6X2FPQ2-DpGPIe5Z.js} +1 -1
- package/dist/dashboard/assets/{arc-CbIZg0XW.js → arc-BHNPUsz3.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-DcA2m4dL.js → architectureDiagram-Q4EWVU46-IzEd_B2U.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-DypXzn_9.js → az-AZ-76LH7QW2-Ccf6e1ON.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-DqjNOvWi.js → bg-BG-XCXSNQG7-XnDUjubv.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-DGUYSkmu.js → blockDiagram-DXYQGD6D-CEINLAFi.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-DMT15vLO.js → bn-BD-2XOGV67Q-E9FzPBnu.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-D0ureHL0.js → c4Diagram-AHTNJAMY-VrHpmy8U.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-BIf8pakY.js → ca-ES-6MX7JW3Y-Cnp7YBQb.js} +1 -1
- package/dist/dashboard/assets/channel-DwaG7WPN.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-BpMo9p3D.js → chunk-4BX2VUAB-CuueCQHq.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK-BjWqEumI.js → chunk-4TB4RGXK-BhlZWQoi.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-CoREiws2.js → chunk-55IACEB6-ClixcVTq.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY-DWGx8NFS.js → chunk-EDXVE4YY-DUj1uWsJ.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-BPHXOHEi.js → chunk-FMBD7UC4-BZClSbG6.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-Cg-AvRQR.js → chunk-OYMX7WX6-CMMXG2K9.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-oNBf0ZAT.js → chunk-QZHKN3VN-CI5x9wkp.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-BWTEULwI.js → chunk-YZCP3GAM-DnpOMFO-.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-COGCH4LQ.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-COGCH4LQ.js +1 -0
- package/dist/dashboard/assets/clone-DwBiydth.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-CQAtltI5.js → cose-bilkent-S5V4N54A-C9xnvFgj.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-sgLhn2uw.js → cs-CZ-2BRQDIVT-BHebgNbB.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-56JnY0Ou.js → da-DK-5WZEPLOC-DYuNSWM8.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-Czzd8AFD.js → dagre-KV5264BT-Ck8mmM53.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-CLiIEbrn.js → de-DE-XR44H4JA-CMw5lMuT.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-BYQz4Ej0.js → diagram-5BDNPKRD-L4erno22.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-Bi69CX9y.js → diagram-G4DWMVQ6-Dkmwa2-B.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-C9rH4USL.js → diagram-MMDJMWI5-v2PnfbZO.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-CtGy_47Q.js → diagram-TYMM5635-1ZO4tNjc.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-DLKTMVgu.js → el-GR-BZB4AONW-PXD8ArOs.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-DYwZiwiF.js → erDiagram-SMLLAGMA-B8gV0kGN.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-B8vUZNzj.js → es-ES-U4NZUMDT-CbfskKe2.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-DOBpB_xM.js → eu-ES-A7QVB2H4-iqrfeyOI.js} +1 -1
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-BSo8AkJw.js → fa-IR-HGAKTJCU-PzU2OiC1.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-IXouAsQf.js → fi-FI-Z5N7JZ37-CbFLdQ9f.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-BfsdXM27.js → flowDiagram-DWJPFMVM-CKx3j3bI.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-Bq41-iWY.js → fr-FR-RHASNOE6-BuF2MviY.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-YFxSZdBo.js → ganttDiagram-T4ZO3ILL-CAbTd_KO.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-CzLILfBF.js → gitGraphDiagram-UUTBAWPF-Di7htCsA.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-kuzaTFsC.js → gl-ES-HMX3MZ6V-BqePaODm.js} +1 -1
- package/dist/dashboard/assets/{graph-BOf2JBnY.js → graph-CC7SYwBm.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-RQ2NxAvm.js → he-IL-6SHJWFNN-w9d4AvyL.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-D9xTaaPK.js → hi-IN-IWLTKZ5I-BwHo17vR.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-L1HNbSdl.js → hu-HU-A5ZG7DT2-Dm80xRge.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-B33X72Ml.js → id-ID-SAP4L64H-RpPM18i0.js} +1 -1
- package/dist/dashboard/assets/index-CkxvR2LH.css +32 -0
- package/dist/dashboard/assets/index-DalMBSek.js +511 -0
- package/dist/dashboard/assets/{index-B-6R-7Ot.js → index-sA_NxF_Y.js} +1 -1
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-DTWl9Wxm.js → infoDiagram-42DDH7IO-z-1I4Qyj.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-C0CAoNgB.js → ishikawaDiagram-UXIWVN3A-DWGoVsQO.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-BK_HSf6M.js → it-IT-JPQ66NNP-DhOvhKWm.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-BRVQwLJ-.js → ja-JP-DBVTYXUO-CEZ1K0xn.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-CADHnY3u.js → journeyDiagram-VCZTEJTY-Dqh8uQwc.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-CYGgpUSe.js → kaa-6HZHGXH3-DuFoQ8nX.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-LMEkvoCj.js → kab-KAB-ZGHBKWFO-BkQCP_3o.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-D1ijOIDj.js → kanban-definition-6JOO6SKY-DCs65HUc.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-JIbh9_iv.js → kk-KZ-P5N5QNE5-Dh9BXA8_.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-CrWx5kgt.js → km-KH-HSX4SM5Z-D1S2EcQ_.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-BQFjXlBC.js → ko-KR-MTYHY66A-DsI3vrEx.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-B6u43c-f.js → ku-TR-6OUDTVRD-CyjK_3XH.js} +1 -1
- package/dist/dashboard/assets/{layout-CVIUlzFz.js → layout-B_y9BOh6.js} +1 -1
- package/dist/dashboard/assets/{linear-TmytBUBH.js → linear-BdGSdQOc.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-b8AKF48V.js → lt-LT-XHIRWOB4-C6tJka1D.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-CRt75m7a.js → lv-LV-5QDEKY6T-C_xyL_ee.js} +1 -1
- package/dist/dashboard/assets/{min-CMOJsVTV.js → min-U_KGhNEt.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-DkzlAkBW.js → mindmap-definition-QFDTVHPH-sXmpEpKw.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-Bw3MaxMe.js → mr-IN-CRQNXWMA-C0TwGtAU.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-Dw_tWZWl.js → my-MM-5M5IBNSE-RlAQCiXW.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-Ci_2058Y.js → nb-NO-T6EIAALU-C1JHqr1t.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-DYyqePg6.js → nl-NL-IS3SIHDZ-B0BVD_2p.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-NdjykAxN.js → nn-NO-6E72VCQL-zQTko94P.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-DPEyc6hx.js → oc-FR-POXYY2M6-CBZRg6ku.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-D_4V8i72.js → pa-IN-N4M65BXN-7s6qpn6h.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-4Hgy5SgQ.js → percentages-BXMCSKIN-DckRvLSG.js} +7 -7
- package/dist/dashboard/assets/{pica-D6rAZEqu.js → pica-ByOjSUxE.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-BqsalDEv.js → pieDiagram-DEJITSTG-BJJsFOH9.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-CArl0OSe.js → pl-PL-T2D74RX3-QTzNyi10.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-BlA9u7zY.js → pt-BR-5N22H2LF-tntUlote.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-ByCcYKU2.js → pt-PT-UZXXM6DQ-B9M5aHl1.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-BtnExwNB.js → quadrantDiagram-34T5L4WZ-BearsU1w.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-jDWYOtpC.js → requirementDiagram-MS252O5E-BixosHER.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-CafHxA38.js → ro-RO-JPDTUUEW-qbgXrb57.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-BbJGwp-Z.js → ru-RU-B4JR7IUQ-CgX4A1Ib.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-BSU4w3_8.js → sankeyDiagram-XADWPNL6-DMSd55sU.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-DBHLScxa.js → sequenceDiagram-FGHM5R23-D2-Uwrtb.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-eDB0s9B0.js → si-LK-N5RQ5JYF-CWEkBvJB.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-qaYN0zkE.js → sk-SK-C5VTKIMK-CG8moyh9.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC-BQ4pcyGF.js → sl-SI-NN7IZMDC-CsBFEfKt.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-DqLkK6dC.js → stateDiagram-FHFEXIEX-vG3jGBpo.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-V8xCsZlI.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-Hm_CkSQB.js → subset-shared.chunk-Bin8VoC6.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-YczznLkp.js → subset-worker.chunk-mRsEjVpS.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-DD7_8pqE.js → sv-SE-XGPEYMSR-BMD7GbQV.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-Dd-RFvWz.js → ta-IN-2NMHFXQM-CjZ7GPuA.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-C7x2tZrZ.js → th-TH-HPSO5L25-BTE57yWh.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-DILCBtIX.js → timeline-definition-GMOUNBTQ-Bz7MuXCz.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-BXDs1FJQ.js → tr-TR-DEFEU3FU-CKY-uY5_.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-Bp-yEHOn.js → uk-UA-QMV73CPH-BuopbANh.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-CnQH3XJu.js → vennDiagram-DHZGUBPP-TsesBmH7.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-DQOsitU7.js → vi-VN-M7AON7JQ-CLrvMDM6.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-FdX4RiE_.js → wardley-RL74JXVD-DlttwW9K.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-CK4rbC5W.js → wardleyDiagram-NUSXRM2D-BfZXChhy.js} +1 -1
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-B6UGr9Rl.js → xychartDiagram-5P7HB3ND-jjeDn8EJ.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-BMYbdc2b.js → zh-CN-LNUGB5OW-C1MYPzyx.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-CCcVgqN7.js → zh-HK-E62DVLB3-BriaHjNV.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-C52SJlwU.js → zh-TW-RAJ6MFWO-BUDimtjA.js} +1 -1
- package/dist/dashboard/index.html +3 -3
- package/dist/index.js +2586 -1065
- package/dist/skill-packs/excalidraw/SKILL.md +19 -1
- package/dist/skill-packs/excalidraw/scripts/build_excalidraw.js +47 -8
- package/dist/skill-packs/excalidraw/scripts/lib/style.js +111 -21
- package/dist/skill-packs/goal-skill/SKILL.md +6 -0
- package/package.json +1 -1
- package/skill/SKILL.md +8 -3
- package/skill/references/cli-reference.md +20 -2
- package/skill/references/knowledge-and-recall.md +1 -0
- package/skill/references/sleep.md +6 -5
- package/skill/references/tasks-and-features.md +37 -0
- package/skill-packs/excalidraw/SKILL.md +19 -1
- package/skill-packs/excalidraw/scripts/build_excalidraw.js +47 -8
- package/skill-packs/excalidraw/scripts/lib/style.js +111 -21
- package/skill-packs/goal-skill/SKILL.md +6 -0
- package/dist/dashboard/assets/channel-C5uBjxRg.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-MwUwKREr.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-MwUwKREr.js +0 -1
- package/dist/dashboard/assets/clone-CcQlDA5C.js +0 -1
- package/dist/dashboard/assets/index--chDvBkZ.css +0 -32
- package/dist/dashboard/assets/index-CwZ3YweD.js +0 -582
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-TpuacwBg.js +0 -1
package/README.md
CHANGED
|
@@ -228,15 +228,21 @@ your-project/
|
|
|
228
228
|
│
|
|
229
229
|
├── .claude/
|
|
230
230
|
│ ├── skills/dreamcontext/
|
|
231
|
-
│ │
|
|
231
|
+
│ │ ├── SKILL.md # Teaches the agent the system
|
|
232
|
+
│ │ └── references/ # Deep-dive refs loaded on demand (cli, tasks, sleep, recall, integrations)
|
|
232
233
|
│ ├── skills/initializer/
|
|
233
234
|
│ │ └── SKILL.md # Interactive brain bootstrap (drives the initializer-* agents)
|
|
235
|
+
│ ├── skills/curator/
|
|
236
|
+
│ │ └── SKILL.md # Interactive brain refactor (drives the curator-* agents)
|
|
234
237
|
│ ├── skills/dreamcontext-deep-research/
|
|
235
238
|
│ │ └── SKILL.md # Iterative corpus synthesis (fans out dreamcontext-explore searchers)
|
|
236
239
|
│ ├── agents/
|
|
237
240
|
│ │ ├── initializer-scout.md # bootstrap: intake → ingestion manifest
|
|
238
241
|
│ │ ├── initializer-ingestor.md # bootstrap: fan-out write into the hierarchy
|
|
239
242
|
│ │ ├── initializer-verifier.md # bootstrap: PASS/FAIL gate
|
|
243
|
+
│ │ ├── curator-auditor.md # refactor: one-per-domain audit → reorg plan
|
|
244
|
+
│ │ ├── curator-worker.md # refactor: applies a confirmed reorg batch
|
|
245
|
+
│ │ ├── curator-verifier.md # refactor: PASS/FAIL gate
|
|
240
246
|
│ │ ├── dreamcontext-explore.md
|
|
241
247
|
│ │ ├── sleep-tasks.md # RemSleep specialists —
|
|
242
248
|
│ │ ├── sleep-state.md # the agent fans out to
|
|
@@ -354,12 +360,12 @@ It also ships a built-in **“What is this?”** explainer page — a full landi
|
|
|
354
360
|
<tr>
|
|
355
361
|
<td width="50%">
|
|
356
362
|
|
|
357
|
-
**Tasks board** — a drag-and-drop Kanban with **saved views** (each carrying its own persisted filter, sort, and grouping), a two-pane **include/exclude filter** menu (status, priority, tags, version, assignee) with type-ahead search, a **Versions popover** to scope to one or more planning versions, toggleable card **Properties** badges (due date, RICE score,
|
|
363
|
+
**Tasks board** — a drag-and-drop Kanban with **saved views** (each carrying its own persisted filter, sort, and grouping), a two-pane **include/exclude filter** menu (status, priority, tags, version, assignee) with type-ahead search, a **Versions popover** (with **Current / Backlog / Completed** smart buckets) to scope to one or more planning versions, toggleable card **Properties** badges (due date, RICE score, and a per-person-hued multi-assignee **AvatarStack**), and an **At-Risk alert** surfacing past-due or blocked tasks. View preferences persist two ways — shared and team-versioned in `overrides/board.json`, or private to your machine in `state/board.local.json` — so they survive the desktop app's per-launch port change. A **sprint-aware version filter** distinguishes current, planning, and released sprints, with set-current / mark-complete actions inline. The same tasks also render along the time axis: a **Timeline (Gantt)** of start→due ranges, a **Calendar**, an **Activity heatmap** of completion cadence, an **Eisenhower matrix** for priority-urgency quadrant planning, and a **RICE** prioritization view. Create tasks, update status, edit start/due dates and custom fields, and add changelog entries from a Notion-style detail panel.
|
|
358
364
|
|
|
359
365
|
</td>
|
|
360
366
|
<td width="50%">
|
|
361
367
|
|
|
362
|
-
**Core editor** with split-pane markdown editing and live preview. Knowledge manager with search and pin/unpin. Feature PRD viewer. SQL ER diagram preview. **Version manager** for planning and
|
|
368
|
+
**Core editor** with split-pane markdown editing and live preview. Knowledge manager with search and pin/unpin. Feature PRD viewer. SQL ER diagram preview. **Version manager** for planning, releasing, **renaming, and deleting** versions — a rename re-points every task on that version and moves the active-sprint pointer; a delete warns and clears references first. **Settings** for cloud-task config — enter the ClickUp/GitHub token (stored gitignored, masked, never echoed), preview-then-provision custom fields, and edit the project's task-format override and custom-field schema.
|
|
363
369
|
|
|
364
370
|
</td>
|
|
365
371
|
</tr>
|
|
@@ -404,6 +410,7 @@ dreamcontext app status # Show installed app version and state
|
|
|
404
410
|
- **Multi-vault launcher.** The app lists every registered [vault](#federation) and opens each project in its **own window** — multi-vault is multi-window over one shared Node server, with each window pinned to its vault via a request header. A per-project status dot (green up-to-date / yellow needs-update / red folder-gone) lets you run `update` from the UI.
|
|
405
411
|
- **Federation network view.** The launcher also renders your projects as an interactive board (Excalidraw-style cards) where you wire a **reads** relationship by clicking source → target: a violet wire means one project reads another's canonical memory **live** during recall (a reference, never a copy), gated by the target being Readable. A node panel and an always-on "Connections" list spell out in plain language who reads whom, each removable with one click. (Copy-based "sync" is parked on the roadmap — federation only reads, live.)
|
|
406
412
|
- **In-app onboarding, no terminal.** A quiz-style wizard creates a brand-new project (native folder picker) or initializes an existing folder, scaffolds `_dream_context/`, runs `setup`, and best-effort installs the global CLI. It's deterministic and LLM-free; the success screen hands you a prompt to paste into Claude Code for the rich enrichment pass.
|
|
413
|
+
- **In-app Agent terminal & command palette _(beta)_.** Drive a real Claude Code session inside any vault from a split-pane, multi-session terminal surface — per-pane tab bars, ⌘D drag-to-split, ⌘T/⌘W, and a minimize-to-corner dock; sessions live in a detached DOM so the PTY never remounts. Drop an image to inject it straight into the vault, and jump anywhere with a **⌘K command palette** (live BM25 recall + intelligent toggle). A first-run prerequisite installer reports and one-click-installs the Claude CLI / node-pty.
|
|
407
414
|
- **Sleepy — notch quick-capture _(beta)_.** Off by default — enable it in dashboard Settings → Sleepy. A global-hotkey companion that drops a transparent notch panel over whatever you're doing, with an animated mascot whose mood follows your sleep debt. Pick a vault, type a thought, and choose a mode:
|
|
408
415
|
- **Learn** — saves the note to project memory, then enriches it.
|
|
409
416
|
- **Ask** — one-shot Q&A about the project; nothing is saved.
|
|
@@ -553,9 +560,30 @@ dreamcontext tasks complete <name> # Mark completed
|
|
|
553
560
|
|
|
554
561
|
All flags (`--description`, `--priority`, `--status`, `--tags`, `--why`, `--urgency`, `--version`, `--start`, `--due`, `--field key=value`) are optional. Defaults to medium priority/urgency and todo status, so the command works non-interactively for agent use.
|
|
555
562
|
|
|
563
|
+
- **Roadmap objectives.** Link tasks to PO-authored roadmap objectives with `--objectives a,b` on create or `tasks objectives <name> a,b|clear`, and filter with `tasks list --objective <slug>`. The field is many-to-many and **local-only** (never synced to a remote backend). See the Roadmap section below.
|
|
556
564
|
- **Date ranges.** A task has an optional planned `start` and a `due`/end — set or clear either end independently (`tasks start`/`tasks due` accept a `clear` sentinel). Start must be on or before due; an inverted range is rejected. Setting any date removes the `backlog` tag, and the first move to `in_progress` auto-stamps `start_date` with today if it is still unset (a planned start is never overwritten). Both dates render in the dashboard Timeline (Gantt) and Calendar views, and sync to ClickUp (native start/due fields) and GitHub (a `<!-- dc:dates -->` issue-body block).
|
|
557
565
|
- **User-declared custom fields.** Drop an optional `_dream_context/overrides/task.md` to declare your own task fields (`text` / `number` / `select` / `date`) and override the scaffolded task template. Set values with `--field key=value` on create or `tasks field <name> <key> [value|clear]`; values are validated against the schema and sync to both backends — `select` as a ClickUp drop-down / GitHub `key:value` label, the rest as a ClickUp custom field / GitHub `<!-- dc:fields -->` body block. `tasks provision` creates any missing remote fields and reuses ones that already exist by name. Absent the override file, tasks behave exactly as the defaults (zero regression). Full schema → [skill reference](skill/references/tasks-and-features.md).
|
|
558
566
|
|
|
567
|
+
### Roadmap (objectives — the OKR board)
|
|
568
|
+
|
|
569
|
+
A product-owner-authored board of **objectives** (outcomes like "increase retention 20%" or "ship v0.2.3") — not a derived shadow of tasks, not a list of releases. Objectives live one file each in `core/objectives/<slug>.md`; tasks link to them **many-to-many** via `objectives:` frontmatter; the computed assist layer does the math: progress rollups, a **full-DAG dependency forecast cascade** (a slip upstream moves every transitive dependent), and **target vs forecast** slip detection. Active objectives are injected into every session snapshot and are recallable (`memory recall --types objective`), so agents always know what the project is driving toward.
|
|
570
|
+
|
|
571
|
+
```bash
|
|
572
|
+
dreamcontext roadmap # text board + regenerate knowledge/roadmap/board.md
|
|
573
|
+
dreamcontext roadmap --json # the typed RoadmapModel (queryable, no writes)
|
|
574
|
+
dreamcontext roadmap objective create increase-retention-20 --title "Increase retention by 20%" --target 2026-09-30
|
|
575
|
+
dreamcontext roadmap objective depend launch-mobile increase-retention-20 # write-time circular-dep guard
|
|
576
|
+
dreamcontext roadmap objective show increase-retention-20 # members + "if this slips, so do: …"
|
|
577
|
+
dreamcontext tasks create "Retention email drip" --objectives increase-retention-20
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
- 🟢 done · 🔵 active · 🟡 review · ⚪ not started — rolled up from the real member-task statuses; a manual `--status` override (the PO's call) wins.
|
|
581
|
+
- 🔴 **SLIPPING** = computed forecast lands after the PO's target date — surfaced on the board, in `objective show`, and in the session snapshot before the deadline.
|
|
582
|
+
- An objective with no dated member tasks is **unforecastable** (null) and never constrains its dependents; circular dependencies are rejected at write time.
|
|
583
|
+
- During sleep consolidation, agents propose `objectives:` links for unlabeled tasks (never overwriting a non-empty list) and the board is regenerated automatically.
|
|
584
|
+
|
|
585
|
+
The dashboard turns this board into a live, editable **Roadmap page**. A **forecast timeline** lays objectives on a month-gridded axis — gradient status bars span each computed forecast window, dotted diamonds mark the PO's target, and red hatching flags a target overshoot; bezier connectors trace dependencies and redden when a slip cascades through them. **Drag a bar** to reschedule and every dependent's forecast bar slides and reddens live (only the dragged objective's dates persist); **drag from a node** to link a dependency, hover-✕ to unlink. A **Board view** groups objectives into status columns, and a slide-over **detail panel** edits everything inline — title, status (with clear-override), committed start/target via a date-range picker, Impact × Effort, and dependencies — persisting each change immediately. Backed by `GET /api/roadmap`, `PATCH /api/objectives/:slug`, and `POST`/`DELETE /api/objectives/:slug/dependencies` (cycle-guarded).
|
|
586
|
+
|
|
559
587
|
#### Remote Task Backends — ClickUp or GitHub Issues
|
|
560
588
|
|
|
561
589
|
Tasks default to local markdown files. Optionally they can live in a remote
|
|
@@ -587,6 +615,12 @@ dreamcontext tasks sync-hooks install # best-effort post-commit/pr
|
|
|
587
615
|
labels. Only `completed` closes the issue, and a delete soft-closes it as
|
|
588
616
|
`not_planned` (the REST API can't hard-delete). It reuses the same pluggable
|
|
589
617
|
adapter and sync engine as ClickUp ([issue #11](https://github.com/meanllbrl/dreamcontext/issues/11)).
|
|
618
|
+
- **Local task images render on GitHub**: an image embedded by a local path
|
|
619
|
+
(e.g. an agent-drop screenshot) is uploaded to a dedicated
|
|
620
|
+
`dreamcontext-assets` branch — content-sniffed by magic bytes (never a trusted
|
|
621
|
+
extension), size-gated, and content-addressed so re-pushes dedupe — then linked
|
|
622
|
+
by its hosted URL on the wire, while the local task keeps its canonical path so
|
|
623
|
+
the reference never churns on pull.
|
|
590
624
|
- Sync is watermark-based on ClickUp **server time**: one field-level `PUT`
|
|
591
625
|
per task under the ~100 req/min rate limit, changelog entries become
|
|
592
626
|
comments (union-merged), prose merges 3-way against the last synced base.
|
|
@@ -810,10 +844,10 @@ dreamcontext install-claude-md # Legacy alias: CLAUDE.md only
|
|
|
810
844
|
|
|
811
845
|
## Works With
|
|
812
846
|
|
|
813
|
-
- **Claude Code**: full support via skill, core sub-agents (initializer, explore, the iterative `dreamcontext-deep-research` synthesis skill, the three primary RemSleep specialists — sleep-tasks, sleep-state, sleep-product — plus conditional sleep-federation and sleep-migration specialists), 7 hooks, plus optional pack sub-agents (council persona/synthesizer, multi-review specialists, goal-skill orchestrators)
|
|
847
|
+
- **Claude Code**: full support via skill, core sub-agents (the **initializer** and **curator** skill families, explore, the iterative `dreamcontext-deep-research` synthesis skill, the three primary RemSleep specialists — sleep-tasks, sleep-state, sleep-product — plus conditional sleep-federation and sleep-migration specialists), 7 hooks, plus optional pack sub-agents (council persona/synthesizer, multi-review specialists, goal-skill orchestrators)
|
|
814
848
|
- **Codex**: project-level skills (`.agents/skills`), managed `AGENTS.md`, native `.codex/agents/*.toml`, and managed `.codex/config.toml` hooks (best-effort parity where event semantics differ)
|
|
815
849
|
- **Desktop app (macOS beta)**: native Tauri 2 multi-vault launcher with in-app onboarding and the Sleepy notch quick-capture companion — wraps the same dashboard server (`dreamcontext app install`)
|
|
816
|
-
- **Web Dashboard**: local UI with
|
|
850
|
+
- **Web Dashboard**: local UI with an in-app **Agent surface** (multi-session terminals + ⌘K command palette), a Tasks board with time-axis views (Timeline/Calendar/Activity heatmap), Core editor, Knowledge, Features, Brain graph, Sleep tracker, and Council Hall (ships in the package)
|
|
817
851
|
- **Obsidian**: `_dream_context/` can be opened as an Obsidian vault; the directory is scaffolded with curated vault settings at `dreamcontext init` time
|
|
818
852
|
|
|
819
853
|
More agents coming soon.
|
|
@@ -78,6 +78,11 @@ Produce **reorg findings** a worker could execute without guessing. Your domain
|
|
|
78
78
|
RE-TYPE / fold the other (capability → feature; rationale/research → knowledge that *references*
|
|
79
79
|
the feature). Name both paths.
|
|
80
80
|
- Duplicate knowledge across folders; overlapping features. Propose the single home + redirects.
|
|
81
|
+
- **Objectives are a first-class type** (`core/objectives/*.md` — PO-authored OKR outcomes): an
|
|
82
|
+
outcome being driven → objective; a shipped capability → feature; rationale → knowledge. Never
|
|
83
|
+
propose re-typing an objective into a feature/knowledge file (or vice versa) without flagging it
|
|
84
|
+
as a PO decision. `knowledge/roadmap/board.md` is AUTO-GENERATED (`dreamcontext roadmap`) —
|
|
85
|
+
never a MERGE/COMPRESS target; exclude it from findings.
|
|
81
86
|
|
|
82
87
|
**`features`** — reconcile `status` against reality (shipped work still `in_progress`?),
|
|
83
88
|
RENAME to current vocabulary, dedup vs knowledge, flag stale/abandoned. Status vocab is read
|
|
@@ -52,7 +52,11 @@ always beats blind exploration.
|
|
|
52
52
|
4. If recall returns "No hits", fall back to Glob/Grep below.
|
|
53
53
|
5. When chaining recall into a script or programmatic step, use
|
|
54
54
|
`--json` instead of `--plain` for a machine-readable payload, and
|
|
55
|
-
`--types knowledge,feature,task,memory,changelog` to scope by corpus type.
|
|
55
|
+
`--types knowledge,feature,task,memory,changelog,objective` to scope by corpus type.
|
|
56
|
+
6. For "what are we trying to achieve / what's the roadmap / is X on track" questions:
|
|
57
|
+
objectives live in `core/objectives/*.md` (recall `--types objective`), and
|
|
58
|
+
`dreamcontext roadmap --json` returns the computed model — rollup progress,
|
|
59
|
+
dependency cascade, target-vs-forecast slip flags — without reading any file.
|
|
56
60
|
|
|
57
61
|
**Cross-vault hits are normal and useful.** Results tagged `<vault>::<type>/<slug>` come
|
|
58
62
|
from connected readable peer projects — this is expected behavior, not noise. If the
|
|
@@ -55,6 +55,7 @@ Ingest exactly the batch the orchestrator assigned — into the **confirmed hier
|
|
|
55
55
|
- `dreamcontext knowledge create "<title>" --description "<one-line>" --tags "<area>" --content "<distilled>"`
|
|
56
56
|
- `dreamcontext features create "<name>" --why "<purpose from code>" --tags "<area>" --status planning`
|
|
57
57
|
- `dreamcontext tasks create <slug> -p <pri> -w "<why>"` for genuinely open/in-flight work
|
|
58
|
+
- `dreamcontext roadmap objective create <slug> --title "<outcome>" [--target YYYY-MM-DD] [--depends-on a,b] --why "<from source>"` for manifest items typed `objective` (roadmap/OKR outcomes); link ingested tasks that serve one via `--objectives a,b` on create
|
|
58
59
|
- `dreamcontext taxonomy add domain:<concept>` · `dreamcontext config people "A" "B"`
|
|
59
60
|
- **Capture real schemas** into `knowledge/data-structures/<product>.md` — actual tables/fields
|
|
60
61
|
from Prisma/SQL/ORM, not "we use Postgres".
|
|
@@ -57,6 +57,11 @@ Produce an **ingestion manifest** an ingestor could execute without guessing.
|
|
|
57
57
|
- **Propose a `knowledge/` folder hierarchy** — group related docs into context subfolders;
|
|
58
58
|
name them in the project's own vocabulary.
|
|
59
59
|
- **Rank candidate features** by centrality (entry points, surface area, references).
|
|
60
|
+
- **Flag candidate objectives** when the source material contains roadmap/OKR items — epics,
|
|
61
|
+
quarterly goals, "increase X by Y%" outcomes, milestone boards (Jira epics, Notion goal DBs,
|
|
62
|
+
roadmap slides). Map each to target type `objective` → `core/objectives/<slug>.md` (title,
|
|
63
|
+
target date if stated, dependencies if linkable). Outcomes ≠ features: a capability the code
|
|
64
|
+
ships → feature; an outcome the team is driving toward → objective.
|
|
60
65
|
- **Dedup** against anything already in `_dream_context/` (recall first) — mark as
|
|
61
66
|
"extend existing" vs "create new".
|
|
62
67
|
|
package/agents/sleep-product.md
CHANGED
|
@@ -56,6 +56,8 @@ If none apply when you start, no-op cheaply: read the brief, scan for actual sig
|
|
|
56
56
|
| `_dream_context/knowledge/*.md` (create + edit) | core 0-6 files (sleep-state owns) |
|
|
57
57
|
| `_dream_context/knowledge/data-structures/<product>.md` (schemas, models, API contracts) | task files (sleep-tasks owns) |
|
|
58
58
|
| `_dream_context/core/features/*.md` (create + edit) | changelog, releases (sleep-state owns) |
|
|
59
|
+
| | `core/objectives/*.md` (PO-authored roadmap objectives — never edit) |
|
|
60
|
+
| | `knowledge/roadmap/board.md` (AUTO-GENERATED by `dreamcontext roadmap` — never hand-edit; the orchestrator regenerates it each sleep) |
|
|
59
61
|
| `dreamcontext knowledge create --tags "..."` | |
|
|
60
62
|
| `dreamcontext features create <name>` | |
|
|
61
63
|
| `dreamcontext features insert <name> <section>` | |
|
package/agents/sleep-tasks.md
CHANGED
|
@@ -24,9 +24,10 @@ You own `_dream_context/state/*.md` and the task lifecycle. The orchestrator gav
|
|
|
24
24
|
| You touch | You don't touch |
|
|
25
25
|
|---|---|
|
|
26
26
|
| `_dream_context/state/<slug>.md` (task files) | `core/CHANGELOG.json`, `core/RELEASES.json` |
|
|
27
|
-
| `dreamcontext tasks {create,status,log,insert}` | `core/0-6.*` files |
|
|
27
|
+
| `dreamcontext tasks {create,status,log,insert,objectives}` | `core/0-6.*` files |
|
|
28
28
|
| Workflow Mermaid node classes inside task bodies | `knowledge/*.md` |
|
|
29
|
-
|
|
|
29
|
+
| Task `objectives:` links (propose-only — see grooming (d)) | `core/features/*.md` |
|
|
30
|
+
| | `core/objectives/*.md` (PO-authored — never edit) |
|
|
30
31
|
|
|
31
32
|
If a session's work belongs in a different domain (e.g., an architectural decision worth keeping in `2.memory.md`), **mention it in your report** so the orchestrator can confirm the right specialist handled it. Do not edit it yourself.
|
|
32
33
|
|
|
@@ -210,6 +211,8 @@ dreamcontext tasks list # every non-completed task, with updated dates
|
|
|
210
211
|
|
|
211
212
|
**(c) Tagging.** Tags drive recall — sharpen them every cycle. Normalize every task's frontmatter `tags` to the taxonomy vocab (`dreamcontext taxonomy vocab`), and *add* missing facets (area / type / feature) where a task is under-tagged. A well-tagged backlog is found; a poorly-tagged one is re-derived blind.
|
|
212
213
|
|
|
214
|
+
**(d) Objective linking (only when `core/objectives/` is non-empty).** Objectives are the PO's OKR roadmap items; tasks link to them many-to-many via the `objectives:` frontmatter list. For each task you touched (or created) whose `objectives:` is **absent or empty**, judge which objective(s) the work genuinely serves — check `dreamcontext roadmap objective list` for the live set — and set them: `dreamcontext tasks objectives <slug> <a,b>` (multiple slugs when one task lifts several outcomes, e.g. revenue AND retention — that's expected, not double-counting). **HARD RULE: a non-empty `objectives:` list is a PO decision — NEVER change or extend it.** If no objective fits, leave the field empty; do not force a link. You only edit the task-side field; `core/objectives/*.md` files are PO-authored and off-limits. Rollups/forecasts recompute when the orchestrator runs `dreamcontext roadmap` after your report.
|
|
215
|
+
|
|
213
216
|
Never silently delete a task, and never `completed` a task that was never actually done — for superseded/abandoned/obsoleted work, `in_review` with an explicit reason hands the close decision to the user. List every grooming action in your report.
|
|
214
217
|
|
|
215
218
|
## Return — short report
|
|
@@ -223,6 +226,7 @@ Never silently delete a task, and never `completed` a task that was never actual
|
|
|
223
226
|
- Person attribution: <slug> tagged person:ada (multi-person project, ada drove this cycle's work) | OR: single-person project — no person tags injected
|
|
224
227
|
- Version readiness: vX.Y.Z — 4/5 tasks ready for review
|
|
225
228
|
- Backlog grooming: <slug> obsoleted by pivot → in_review ("confirm close"), <slug> re-attached v0.8.x→v0.9.0, <slug> tags normalized + facets added, <slug> priority high→medium (untouched 30d), 2 tasks left as-is (genuinely planned)
|
|
229
|
+
- Objective links: <slug> → [retention-20, revenue] (was empty), <slug> left unlinked (no objective fits) | OR: no objectives in this project — skipped
|
|
226
230
|
- Cross-domain mentions: <slug> includes a memory-worthy decision about JWT — flagging for sleep-state
|
|
227
231
|
- Skipped: <session_id> had no actionable task signal
|
|
228
232
|
|
|
@@ -239,3 +243,4 @@ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/task
|
|
|
239
243
|
6. **CLI first** for status/log/insert; **Edit** for surgical body reconciliation (including broadening `description:` / `## Why` when scope grows).
|
|
240
244
|
7. **Person attribution is multi-person only.** Read `.config.json` `people` first. If 0 or 1 entry, step 2.5 is a complete NO-OP — never inject `person:` tags on solo projects. Derived multi-person status comes from `people.length > 1`; there is no `multiPerson` key to check.
|
|
241
245
|
8. **Normalize tags via taxonomy vocab.** When writing or updating task frontmatter tags, check `dreamcontext taxonomy vocab` and use canonical forms (faceted or bare standard tags); non-canonical tags degrade recall.
|
|
246
|
+
9. **Objectives: propose for empty, never overwrite non-empty.** An existing `objectives:` value is a PO decision that sticks. You fill blanks with judgment; you never revise the PO's linking. Objective files themselves (`core/objectives/`) are outside your domain entirely.
|
|
@@ -78,6 +78,11 @@ Produce **reorg findings** a worker could execute without guessing. Your domain
|
|
|
78
78
|
RE-TYPE / fold the other (capability → feature; rationale/research → knowledge that *references*
|
|
79
79
|
the feature). Name both paths.
|
|
80
80
|
- Duplicate knowledge across folders; overlapping features. Propose the single home + redirects.
|
|
81
|
+
- **Objectives are a first-class type** (`core/objectives/*.md` — PO-authored OKR outcomes): an
|
|
82
|
+
outcome being driven → objective; a shipped capability → feature; rationale → knowledge. Never
|
|
83
|
+
propose re-typing an objective into a feature/knowledge file (or vice versa) without flagging it
|
|
84
|
+
as a PO decision. `knowledge/roadmap/board.md` is AUTO-GENERATED (`dreamcontext roadmap`) —
|
|
85
|
+
never a MERGE/COMPRESS target; exclude it from findings.
|
|
81
86
|
|
|
82
87
|
**`features`** — reconcile `status` against reality (shipped work still `in_progress`?),
|
|
83
88
|
RENAME to current vocabulary, dedup vs knowledge, flag stale/abandoned. Status vocab is read
|
|
@@ -52,7 +52,11 @@ always beats blind exploration.
|
|
|
52
52
|
4. If recall returns "No hits", fall back to Glob/Grep below.
|
|
53
53
|
5. When chaining recall into a script or programmatic step, use
|
|
54
54
|
`--json` instead of `--plain` for a machine-readable payload, and
|
|
55
|
-
`--types knowledge,feature,task,memory,changelog` to scope by corpus type.
|
|
55
|
+
`--types knowledge,feature,task,memory,changelog,objective` to scope by corpus type.
|
|
56
|
+
6. For "what are we trying to achieve / what's the roadmap / is X on track" questions:
|
|
57
|
+
objectives live in `core/objectives/*.md` (recall `--types objective`), and
|
|
58
|
+
`dreamcontext roadmap --json` returns the computed model — rollup progress,
|
|
59
|
+
dependency cascade, target-vs-forecast slip flags — without reading any file.
|
|
56
60
|
|
|
57
61
|
**Cross-vault hits are normal and useful.** Results tagged `<vault>::<type>/<slug>` come
|
|
58
62
|
from connected readable peer projects — this is expected behavior, not noise. If the
|
|
@@ -55,6 +55,7 @@ Ingest exactly the batch the orchestrator assigned — into the **confirmed hier
|
|
|
55
55
|
- `dreamcontext knowledge create "<title>" --description "<one-line>" --tags "<area>" --content "<distilled>"`
|
|
56
56
|
- `dreamcontext features create "<name>" --why "<purpose from code>" --tags "<area>" --status planning`
|
|
57
57
|
- `dreamcontext tasks create <slug> -p <pri> -w "<why>"` for genuinely open/in-flight work
|
|
58
|
+
- `dreamcontext roadmap objective create <slug> --title "<outcome>" [--target YYYY-MM-DD] [--depends-on a,b] --why "<from source>"` for manifest items typed `objective` (roadmap/OKR outcomes); link ingested tasks that serve one via `--objectives a,b` on create
|
|
58
59
|
- `dreamcontext taxonomy add domain:<concept>` · `dreamcontext config people "A" "B"`
|
|
59
60
|
- **Capture real schemas** into `knowledge/data-structures/<product>.md` — actual tables/fields
|
|
60
61
|
from Prisma/SQL/ORM, not "we use Postgres".
|
|
@@ -57,6 +57,11 @@ Produce an **ingestion manifest** an ingestor could execute without guessing.
|
|
|
57
57
|
- **Propose a `knowledge/` folder hierarchy** — group related docs into context subfolders;
|
|
58
58
|
name them in the project's own vocabulary.
|
|
59
59
|
- **Rank candidate features** by centrality (entry points, surface area, references).
|
|
60
|
+
- **Flag candidate objectives** when the source material contains roadmap/OKR items — epics,
|
|
61
|
+
quarterly goals, "increase X by Y%" outcomes, milestone boards (Jira epics, Notion goal DBs,
|
|
62
|
+
roadmap slides). Map each to target type `objective` → `core/objectives/<slug>.md` (title,
|
|
63
|
+
target date if stated, dependencies if linkable). Outcomes ≠ features: a capability the code
|
|
64
|
+
ships → feature; an outcome the team is driving toward → objective.
|
|
60
65
|
- **Dedup** against anything already in `_dream_context/` (recall first) — mark as
|
|
61
66
|
"extend existing" vs "create new".
|
|
62
67
|
|
|
@@ -56,6 +56,8 @@ If none apply when you start, no-op cheaply: read the brief, scan for actual sig
|
|
|
56
56
|
| `_dream_context/knowledge/*.md` (create + edit) | core 0-6 files (sleep-state owns) |
|
|
57
57
|
| `_dream_context/knowledge/data-structures/<product>.md` (schemas, models, API contracts) | task files (sleep-tasks owns) |
|
|
58
58
|
| `_dream_context/core/features/*.md` (create + edit) | changelog, releases (sleep-state owns) |
|
|
59
|
+
| | `core/objectives/*.md` (PO-authored roadmap objectives — never edit) |
|
|
60
|
+
| | `knowledge/roadmap/board.md` (AUTO-GENERATED by `dreamcontext roadmap` — never hand-edit; the orchestrator regenerates it each sleep) |
|
|
59
61
|
| `dreamcontext knowledge create --tags "..."` | |
|
|
60
62
|
| `dreamcontext features create <name>` | |
|
|
61
63
|
| `dreamcontext features insert <name> <section>` | |
|
|
@@ -24,9 +24,10 @@ You own `_dream_context/state/*.md` and the task lifecycle. The orchestrator gav
|
|
|
24
24
|
| You touch | You don't touch |
|
|
25
25
|
|---|---|
|
|
26
26
|
| `_dream_context/state/<slug>.md` (task files) | `core/CHANGELOG.json`, `core/RELEASES.json` |
|
|
27
|
-
| `dreamcontext tasks {create,status,log,insert}` | `core/0-6.*` files |
|
|
27
|
+
| `dreamcontext tasks {create,status,log,insert,objectives}` | `core/0-6.*` files |
|
|
28
28
|
| Workflow Mermaid node classes inside task bodies | `knowledge/*.md` |
|
|
29
|
-
|
|
|
29
|
+
| Task `objectives:` links (propose-only — see grooming (d)) | `core/features/*.md` |
|
|
30
|
+
| | `core/objectives/*.md` (PO-authored — never edit) |
|
|
30
31
|
|
|
31
32
|
If a session's work belongs in a different domain (e.g., an architectural decision worth keeping in `2.memory.md`), **mention it in your report** so the orchestrator can confirm the right specialist handled it. Do not edit it yourself.
|
|
32
33
|
|
|
@@ -210,6 +211,8 @@ dreamcontext tasks list # every non-completed task, with updated dates
|
|
|
210
211
|
|
|
211
212
|
**(c) Tagging.** Tags drive recall — sharpen them every cycle. Normalize every task's frontmatter `tags` to the taxonomy vocab (`dreamcontext taxonomy vocab`), and *add* missing facets (area / type / feature) where a task is under-tagged. A well-tagged backlog is found; a poorly-tagged one is re-derived blind.
|
|
212
213
|
|
|
214
|
+
**(d) Objective linking (only when `core/objectives/` is non-empty).** Objectives are the PO's OKR roadmap items; tasks link to them many-to-many via the `objectives:` frontmatter list. For each task you touched (or created) whose `objectives:` is **absent or empty**, judge which objective(s) the work genuinely serves — check `dreamcontext roadmap objective list` for the live set — and set them: `dreamcontext tasks objectives <slug> <a,b>` (multiple slugs when one task lifts several outcomes, e.g. revenue AND retention — that's expected, not double-counting). **HARD RULE: a non-empty `objectives:` list is a PO decision — NEVER change or extend it.** If no objective fits, leave the field empty; do not force a link. You only edit the task-side field; `core/objectives/*.md` files are PO-authored and off-limits. Rollups/forecasts recompute when the orchestrator runs `dreamcontext roadmap` after your report.
|
|
215
|
+
|
|
213
216
|
Never silently delete a task, and never `completed` a task that was never actually done — for superseded/abandoned/obsoleted work, `in_review` with an explicit reason hands the close decision to the user. List every grooming action in your report.
|
|
214
217
|
|
|
215
218
|
## Return — short report
|
|
@@ -223,6 +226,7 @@ Never silently delete a task, and never `completed` a task that was never actual
|
|
|
223
226
|
- Person attribution: <slug> tagged person:ada (multi-person project, ada drove this cycle's work) | OR: single-person project — no person tags injected
|
|
224
227
|
- Version readiness: vX.Y.Z — 4/5 tasks ready for review
|
|
225
228
|
- Backlog grooming: <slug> obsoleted by pivot → in_review ("confirm close"), <slug> re-attached v0.8.x→v0.9.0, <slug> tags normalized + facets added, <slug> priority high→medium (untouched 30d), 2 tasks left as-is (genuinely planned)
|
|
229
|
+
- Objective links: <slug> → [retention-20, revenue] (was empty), <slug> left unlinked (no objective fits) | OR: no objectives in this project — skipped
|
|
226
230
|
- Cross-domain mentions: <slug> includes a memory-worthy decision about JWT — flagging for sleep-state
|
|
227
231
|
- Skipped: <session_id> had no actionable task signal
|
|
228
232
|
|
|
@@ -239,3 +243,4 @@ Dropped-but-load-bearing self-check: <none | list any digest/auto-bookmark/task
|
|
|
239
243
|
6. **CLI first** for status/log/insert; **Edit** for surgical body reconciliation (including broadening `description:` / `## Why` when scope grows).
|
|
240
244
|
7. **Person attribution is multi-person only.** Read `.config.json` `people` first. If 0 or 1 entry, step 2.5 is a complete NO-OP — never inject `person:` tags on solo projects. Derived multi-person status comes from `people.length > 1`; there is no `multiPerson` key to check.
|
|
241
245
|
8. **Normalize tags via taxonomy vocab.** When writing or updating task frontmatter tags, check `dreamcontext taxonomy vocab` and use canonical forms (faceted or bare standard tags); non-canonical tags degrade recall.
|
|
246
|
+
9. **Objectives: propose for empty, never overwrite non-empty.** An existing `objectives:` value is a PO decision that sticks. You fill blanks with judgment; you never revise the PO's linking. Objective files themselves (`core/objectives/`) are outside your domain entirely.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{bt as jc,bu as I0,aH as pS,bv as xt,bw as Ip,bx as mS,by as gS,bz as _S,bA as xS,bB as yS,bq as vS,br as bS,bC as B0,aC as SS,bD as TS,bE as MS,bF as ES,bG as xg,bH as yg,bI as AS,bJ as k,bK as $s,bL as wS,bM as RS,bN as CS,bO as NS}from"./index-
|
|
1
|
+
import{bt as jc,bu as I0,aH as pS,bv as xt,bw as Ip,bx as mS,by as gS,bz as _S,bA as xS,bB as yS,bq as vS,br as bS,bC as B0,aC as SS,bD as TS,bE as MS,bF as ES,bG as xg,bH as yg,bI as AS,bJ as k,bK as $s,bL as wS,bM as RS,bN as CS,bO as NS}from"./index-DalMBSek.js";import{_ as Bi}from"./extends-CF3RwP-h.js";function PS(r){var e=jc(.1),t,n,i;typeof r!="function"&&(r=jc(r==null?0:+r));function s(a){for(var l=0,c=t.length,u;l<c;++l)u=t[l],u.vz+=(i[l]-u.z)*n[l]*a}function o(){if(t){var a,l=t.length;for(n=new Array(l),i=new Array(l),a=0;a<l;++a)n[a]=isNaN(i[a]=+r(t[a],a,t))?0:+e(t[a],a,t)}}return s.initialize=function(a){t=a,o()},s.strength=function(a){return arguments.length?(e=typeof a=="function"?a:jc(+a),o(),s):e},s.z=function(a){return arguments.length?(r=typeof a=="function"?a:jc(+a),o(),s):r},s}/**
|
|
2
2
|
* @license
|
|
3
3
|
* Copyright 2010-2026 Three.js Authors
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aK as A,aL as S,a_ as P,aJ as W,bY as ln,bZ as gn,b_ as dn,b$ as z,c0 as hn,bT as pn,c1 as G,b1 as N,b6 as m,b9 as R,c2 as An,b0 as U,b4 as _n,c3 as wn,bW as on,aM as V,bU as On,c4 as I}from"./index-
|
|
1
|
+
import{aK as A,aL as S,a_ as P,aJ as W,bY as ln,bZ as gn,b_ as dn,b$ as z,c0 as hn,bT as pn,c1 as G,b1 as N,b6 as m,b9 as R,c2 as An,b0 as U,b4 as _n,c3 as wn,bW as on,aM as V,bU as On,c4 as I}from"./index-DalMBSek.js";function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var K=P?P.prototype:void 0,B=K?K.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(S(n))return B?B.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Pn(){}function cn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function En(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function yn(n){return n!==n}function Tn(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?Tn(n,r,e):En(n,yn,e)}function bn(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function x(n){return W(n)?ln(n):gn(n)}var In=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ln=/^\w*$/;function M(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||S(n)?!0:Ln.test(n)||!In.test(n)||r!=null&&n in Object(r)}var Sn=500;function xn(n){var r=dn(n,function(i){return e.size===Sn&&e.clear(),i}),e=r.cache;return r}var Mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$n=/\\(\\)?/g,Cn=xn(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Mn,function(e,i,f,t){r.push(f?t.replace($n,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:M(n,r)?[n]:Cn(Dn(n))}function b(n){if(typeof n=="string"||S(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[b(r[e++])];return e&&e==i?n:void 0}function Fn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var H=P?P.isConcatSpreadable:void 0;function Gn(n){return A(n)||z(n)||!!(H&&n&&n[H])}function Kr(n,r,e,i,f){var t=-1,u=n.length;for(e||(e=Gn),f||(f=[]);++t<u;){var s=n[t];e(s)?rn(f,s):i||(f[f.length]=s)}return f}function Nn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var u=n[e];r(u,e,n)&&(t[f++]=u)}return t}function mn(){return[]}var Un=Object.prototype,Kn=Un.propertyIsEnumerable,Z=Object.getOwnPropertySymbols,Bn=Z?function(n){return n==null?[]:(n=Object(n),en(Z(n),function(r){return Kn.call(n,r)}))}:mn;function Hn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function q(n){return Hn(n,x,Bn)}var Zn="__lodash_hash_undefined__";function qn(n){return this.__data__.set(n,Zn),this}function Yn(n){return this.__data__.has(n)}function c(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new hn;++r<e;)this.add(n[r])}c.prototype.add=c.prototype.push=qn;c.prototype.has=Yn;function Jn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Xn=1,Qn=2;function fn(n,r,e,i,f,t){var u=e&Xn,s=n.length,a=r.length;if(s!=a&&!(u&&a>s))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,w=e&Qn?new c:void 0;for(t.set(n,r),t.set(r,n);++l<s;){var p=n[l],_=r[l];if(i)var o=u?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(o!==void 0){if(o)continue;d=!1;break}if(w){if(!Jn(r,function(O,v){if(!tn(w,v)&&(p===O||f(p,O,e,i,t)))return w.push(v)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Wn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function $(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var zn=1,Vn=2,kn="[object Boolean]",jn="[object Date]",nr="[object Error]",rr="[object Map]",er="[object Number]",ir="[object RegExp]",tr="[object Set]",fr="[object String]",ur="[object Symbol]",sr="[object ArrayBuffer]",ar="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function lr(n,r,e,i,f,t,u){switch(e){case ar:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case sr:return!(n.byteLength!=r.byteLength||!t(new G(n),new G(r)));case kn:case jn:case er:return pn(+n,+r);case nr:return n.name==r.name&&n.message==r.message;case ir:case fr:return n==r+"";case rr:var s=Wn;case tr:var a=i&zn;if(s||(s=$),n.size!=r.size&&!a)return!1;var h=u.get(n);if(h)return h==r;i|=Vn,u.set(n,r);var g=fn(s(n),s(r),i,f,t,u);return u.delete(n),g;case ur:if(L)return L.call(n)==L.call(r)}return!1}var gr=1,dr=Object.prototype,hr=dr.hasOwnProperty;function pr(n,r,e,i,f,t){var u=e&gr,s=q(n),a=s.length,h=q(r),g=h.length;if(a!=g&&!u)return!1;for(var l=a;l--;){var d=s[l];if(!(u?d in r:hr.call(r,d)))return!1}var w=t.get(n),p=t.get(r);if(w&&p)return w==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var o=u;++l<a;){d=s[l];var O=n[d],v=r[d];if(i)var F=u?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(F===void 0?O===v||f(O,v,e,i,t):F)){_=!1;break}o||(o=d=="constructor")}if(_&&!o){var E=n.constructor,y=r.constructor;E!=y&&"constructor"in n&&"constructor"in r&&!(typeof E=="function"&&E instanceof E&&typeof y=="function"&&y instanceof y)&&(_=!1)}return t.delete(n),t.delete(r),_}var Ar=1,J="[object Arguments]",X="[object Array]",T="[object Object]",_r=Object.prototype,Q=_r.hasOwnProperty;function wr(n,r,e,i,f,t){var u=A(n),s=A(r),a=u?X:N(n),h=s?X:N(r);a=a==J?T:a,h=h==J?T:h;var g=a==T,l=h==T,d=a==h;if(d&&m(n)){if(!m(r))return!1;u=!0,g=!1}if(d&&!g)return t||(t=new R),u||An(n)?fn(n,r,e,i,f,t):lr(n,r,a,e,i,f,t);if(!(e&Ar)){var w=g&&Q.call(n,"__wrapped__"),p=l&&Q.call(r,"__wrapped__");if(w||p){var _=w?n.value():n,o=p?r.value():r;return t||(t=new R),f(_,o,e,i,t)}}return d?(t||(t=new R),pr(n,r,e,i,f,t)):!1}function C(n,r,e,i,f){return n===r?!0:n==null||r==null||!U(n)&&!U(r)?n!==n&&r!==r:wr(n,r,e,i,C,f)}var or=1,Or=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var u=e[f];if(u[2]?u[1]!==n[u[0]]:!(u[0]in n))return!1}for(;++f<t;){u=e[f];var s=u[0],a=n[s],h=u[1];if(u[2]){if(a===void 0&&!(s in n))return!1}else{var g=new R,l;if(!(l===void 0?C(h,a,or|Or,i,g):l))return!1}}return!0}function un(n){return n===n&&!_n(n)}function Pr(n){for(var r=x(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,un(f)]}return r}function sn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function cr(n){var r=Pr(n);return r.length==1&&r[0][2]?sn(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function Er(n,r){return n!=null&&r in Object(n)}function yr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var u=b(r[i]);if(!(t=n!=null&&e(n,u)))break;n=n[u]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&on(u,f)&&(A(n)||z(n)))}function Tr(n,r){return n!=null&&yr(n,r,Er)}var Rr=1,br=2;function Ir(n,r){return M(n)&&un(r)?sn(b(n),r):function(e){var i=Fn(e,n);return i===void 0&&i===r?Tr(e,n):C(r,i,Rr|br)}}function Lr(n){return function(r){return r==null?void 0:r[n]}}function Sr(n){return function(r){return nn(r,n)}}function xr(n){return M(n)?Lr(b(n)):Sr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Ir(n[0],n[1]):cr(n):xr(n)}function Mr(n,r){return n&&On(n,r,x)}function $r(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,u=Object(e);++t<f&&i(u[t],t,u)!==!1;);return e}}var D=$r(Mr);function Cr(n){return typeof n=="function"?n:V}function Br(n,r){var e=A(n)?cn:D;return e(n,Cr(r))}function Dr(n,r){var e=[];return D(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Hr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function Fr(n,r,e,i,f){return f(n,function(t,u,s){e=i?(i=!1,t):r(e,t,u,s)}),e}function Zr(n,r,e){var i=A(n)?Nn:Fr,f=arguments.length<3;return i(n,an(r),e,f,D)}var Gr=1/0,Nr=I&&1/$(new I([,-0]))[1]==Gr?function(n){return new I(n)}:Pn,mr=200;function qr(n,r,e){var i=-1,f=bn,t=n.length,u=!0,s=[],a=s;if(t>=mr){var h=r?null:Nr(n);if(h)return $(h);u=!1,f=tn,a=new c}else a=r?[]:s;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,u&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),s.push(g)}else f(a,l,e)||(a!==s&&a.push(l),s.push(g))}return s}export{D as a,Kr as b,an as c,vn as d,rn as e,Hn as f,Bn as g,cn as h,q as i,qr as j,x as k,Hr as l,Br as m,En as n,Cr as o,Mr as p,yr as q,Zr as r,mn as s,j as t,b as u,nn as v,Tr as w,Dn as x};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./percentages-BXMCSKIN-
|
|
1
|
+
import"./percentages-BXMCSKIN-DckRvLSG.js";import"./index-DalMBSek.js";import"./extends-CF3RwP-h.js";var u={paste:"لصق",pasteAsPlaintext:"اللصق كنص عادي",pasteCharts:"لصق الرسوم البيانية",selectAll:"تحديد الكل",multiSelect:"إضافة عنصر للتحديد",moveCanvas:"نقل لوح الرسم",cut:"قص",copy:"نسخ",copyAsPng:"نسخ إلى الحافظة بصيغة PNG",copyAsSvg:"نسخ إلى الحافظة بصيغة SVG",copyText:"نسخ إلى الحافظة كنص",copySource:"",convertToCode:"",bringForward:"جلب للأمام",sendToBack:"أرسل للخلف",bringToFront:"أحضر للأمام",sendBackward:"أرسل للخلف",delete:"حذف",copyStyles:"نسخ الأنماط",pasteStyles:"لصق الأنماط",stroke:"الخط",background:"الخلفية",fill:"التعبئة",strokeWidth:"سُمك الخط",strokeStyle:"نمط الخط",strokeStyle_solid:"متصل",strokeStyle_dashed:"متقطع",strokeStyle_dotted:"منقط",sloppiness:"الإمالة",opacity:"الشفافية",textAlign:"محاذاة النص",edges:"الحواف",sharp:"حادة",round:"دائرية",arrowheads:"رؤوس الأسهم",arrowhead_none:"لا شيء",arrowhead_arrow:"سهم",arrowhead_bar:"شريط",arrowhead_circle:"",arrowhead_circle_outline:"",arrowhead_triangle:"مثلث",arrowhead_triangle_outline:"",arrowhead_diamond:"",arrowhead_diamond_outline:"",fontSize:"حجم الخط",fontFamily:"نوع الخط",addWatermark:'إضافة "مصنوعة بواسطة Excalidraw"',handDrawn:"رسم باليد",normal:"عادي",code:"رمز",small:"صغير",medium:"متوسط",large:"كبير",veryLarge:"كبير جدا",solid:"كامل",hachure:"خطوط",zigzag:"متعرج",crossHatch:"خطوط متقطعة",thin:"نحيف",bold:"داكن",left:"الـيسار",center:"وسط",right:"يمين",extraBold:"عريض",architect:"معماري",artist:"رسام",cartoonist:"كرتوني",fileTitle:"إسم الملف",colorPicker:"منتقي اللون",canvasColors:"تستخدم على القماش",canvasBackground:"خلفية اللوحة",drawingCanvas:"لوحة الرسم",layers:"الطبقات",actions:"الإجراءات",language:"اللغة",liveCollaboration:"التعاون المباشر...",duplicateSelection:"تكرار",untitled:"غير معنون",name:"الاسم",yourName:"اسمك",madeWithExcalidraw:"مصنوعة بواسطة Excalidraw",group:"تحديد مجموعة",ungroup:"إلغاء تحديد مجموعة",collaborators:"المتعاونون",showGrid:"إظهار الشبكة",addToLibrary:"أضف إلى المكتبة",removeFromLibrary:"حذف من المكتبة",libraryLoadingMessage:"جارٍ تحميل المكتبة…",libraries:"تصفح المكتبات",loadingScene:"جاري تحميل المشهد…",align:"محاذاة",alignTop:"محاذاة إلى اﻷعلى",alignBottom:"محاذاة إلى اﻷسفل",alignLeft:"محاذاة إلى اليسار",alignRight:"محاذاة إلى اليمين",centerVertically:"توسيط عمودي",centerHorizontally:"توسيط أفقي",distributeHorizontally:"التوزيع الأفقي",distributeVertically:"التوزيع عمودياً",flipHorizontal:"قلب عامودي",flipVertical:"قلب أفقي",viewMode:"نمط العرض",share:"مشاركة",showStroke:"إظهار منتقي لون الخط",showBackground:"إظهار منتقي لون الخلفية",toggleTheme:"غير النمط",personalLib:"المكتبة الشخصية",excalidrawLib:"مكتبتنا",decreaseFontSize:"تصغير حجم الخط",increaseFontSize:"تكبير حجم الخط",unbindText:"فك ربط النص",bindText:"ربط النص بالحاوية",createContainerFromText:"نص مغلف في حاوية",link:{edit:"تعديل الرابط",editEmbed:"تحرير الرابط وإدراجه",create:"إنشاء رابط",createEmbed:"إنشاء رابط و إدراجه",label:"رابط",labelEmbed:"رابط و إدراج",empty:"لم يتم تعيين رابط"},lineEditor:{edit:"تحرير السطر",exit:"الخروج من المُحرر"},elementLock:{lock:"قفل",unlock:"فتح",lockAll:"قفل الكل",unlockAll:"فتح الكل"},statusPublished:"نُشر",sidebarLock:"إبقاء الشريط الجانبي مفتوح",selectAllElementsInFrame:"تحديد جميع العناصر في الإطار",removeAllElementsFromFrame:"إزالة جميع العناصر من الإطار",eyeDropper:"اختيار اللون من القماش",textToDiagram:"",prompt:""},A={noItems:"لا توجد عناصر أضيفت بعد...",hint_emptyLibrary:"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.",hint_emptyPrivateLibrary:"حدد عنصر على القماش لإضافته هنا."},e={clearReset:"إعادة تعيين اللوحة",exportJSON:"صدر الملف",exportImage:"تصدير الصورة...",export:"حفظ إلى...",copyToClipboard:"نسخ إلى الحافظة",save:"احفظ للملف الحالي",saveAs:"حفظ كـ",load:"فتح",getShareableLink:"احصل على رابط المشاركة",close:"غلق",selectLanguage:"اختر اللغة",scrollBackToContent:"الرجوع إلى المحتوى",zoomIn:"تكبير",zoomOut:"تصغير",resetZoom:"إعادة تعيين الشاشة",menu:"القائمة",done:"تم",edit:"تعديل",undo:"تراجع",redo:"إعادة تنفيذ",resetLibrary:"إعادة ضبط المكتبة",createNewRoom:"إنشاء غرفة جديدة",fullScreen:"شاشة كاملة",darkMode:"الوضع المظلم",lightMode:"الوضع المضيء",zenMode:"وضع التأمل",objectsSnapMode:"التقط إلى العناصر",exitZenMode:"إلغاء الوضع الليلى",cancel:"إلغاء",clear:"مسح",remove:"إزالة",embed:"تبديل الإدراج",publishLibrary:"انشر",submit:"أرسل",confirm:"تأكيد",embeddableInteractionButton:"اضغط للتفاعل"},a={clearReset:"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟",couldNotCreateShareableLink:"تعذر إنشاء رابطة المشاركة.",couldNotCreateShareableLinkTooBig:"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا",couldNotLoadInvalidFile:"تعذر التحميل، الملف غير صالح",importBackendFailed:"فشل الاستيراد من الخادوم.",cannotExportEmptyCanvas:"لا يمكن تصدير لوحة فارغة.",couldNotCopyToClipboard:"تعذر النسخ إلى الحافظة.",decryptFailed:"تعذر فك تشفير البيانات.",uploadedSecurly:"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.",loadSceneOverridePrompt:"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟",collabStopOverridePrompt:`إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟
|
|
2
2
|
|
|
3
3
|
(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)`,errorAddingToLibrary:"تعذر إضافة العنصر للمكتبة",errorRemovingFromLibrary:"تعذر إزالة العنصر من المكتبة",confirmAddLibrary:"هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟",imageDoesNotContainScene:"يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟",cannotRestoreFromImage:"تعذر استعادة المشهد من ملف الصورة",invalidSceneUrl:"تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.",resetLibrary:"هذا سوف يمسح مكتبتك. هل أنت متأكد؟",removeItemsFromsLibrary:"حذف {{count}} عنصر (عناصر) من المكتبة؟",invalidEncryptionKey:"مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.",collabOfflineWarning:`لا يوجد اتصال بالانترنت.
|
|
4
4
|
لن يتم حفظ التغييرات التي قمت بها!`},r={unsupportedFileType:"نوع الملف غير مدعوم.",imageInsertError:"تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...",fileTooBig:"الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.",svgImageInsertError:"تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.",failedToFetchImage:"",invalidSVGString:"SVG غير صالح.",cannotResolveCollabServer:"تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.",importLibraryError:"تعذر تحميل المكتبة",collabSaveFailed:"تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.",collabSaveFailed_sizeExceeded:"تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.",imageToolNotSupported:"",brave_measure_text_error:{line1:"يبدو أنك تستخدم متصفح Brave مع إعداد <bold>حظر صارم لتتبع البصمة</bold>.",line2:"قد يؤدي هذا إلى كسر <bold>عناصر النص</bold> في الرسومات الخاصة بك.",line3:"من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع <link>هذه الخطوات</link> لفعل ذلك.",line4:"إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة <issueLink>بلاغ</issueLink> على حسابنا في GitHub، أو راسلنا على <discordLink>Discord</discordLink>"},libraryElementTypeError:{embeddable:"لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.",iframe:"",image:"سوف يتم دعم إضافة صور إلى المكتبة قريباً!"},asyncPasteFailedOnRead:"",asyncPasteFailedOnParse:"",copyToSystemClipboardFailed:""},o={selection:"تحديد",image:"إدراج صورة",rectangle:"مستطيل",diamond:"مضلع",ellipse:"دائرة",arrow:"سهم",line:"خط",freedraw:"رسم",text:"نص",library:"مكتبة",lock:"الحفاظ على أداة التحديد نشطة بعد الرسم",penMode:"وضع القلم - امنع اللمس",link:"إضافة/تحديث الرابط للشكل المحدد",eraser:"ممحاة",frame:"أداة الإطار",magicframe:"",embeddable:"تضمين ويب",laser:"مؤشر ليزر",hand:"يد (أداة الإزاحة)",extraTools:"المزيد من أﻷدوات",mermaidToExcalidraw:"",magicSettings:""},t={canvasActions:"إجراءات اللوحة",selectedShapeActions:"إجراءات الشكل المحدد",shapes:"الأشكال"},i={canvasPanning:"لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد",linearElement:"انقر لبدء نقاط متعددة، اسحب لخط واحد",freeDraw:"انقر واسحب، افرج عند الانتهاء",text:"نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار",embeddable:"اضغط مع السحب لإنشاء موقع ويب مضمّن",text_selected:"انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص",text_editing:"اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل",linearElementMulti:"انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء",lockAngle:"يمكنك تقييد الزاوية بالضغط على SHIFT",resize:`يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-
|
|
1
|
+
import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-DalMBSek.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|