dreamcontext 0.14.2 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -20
- package/agents/dreamcontext-explore.md +3 -1
- package/dist/agents/dreamcontext-explore.md +3 -1
- package/dist/dashboard/assets/{BrainCanvas3D-B1Ia2HWN.js → BrainCanvas3D-Dq2AZVLs.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-B74oJzMc.js → _baseUniq-Rjr0gzcI.js} +1 -1
- package/dist/dashboard/assets/{ar-SA-G6X2FPQ2-DOKHn365.js → ar-SA-G6X2FPQ2-B6xPVLtZ.js} +1 -1
- package/dist/dashboard/assets/{arc-B-uBpPoM.js → arc-MywWiHZZ.js} +1 -1
- package/dist/dashboard/assets/{architectureDiagram-Q4EWVU46-D2lyk9NB.js → architectureDiagram-Q4EWVU46-DYku7HV_.js} +1 -1
- package/dist/dashboard/assets/{az-AZ-76LH7QW2-CgyZJLLo.js → az-AZ-76LH7QW2-DS6KjFyN.js} +1 -1
- package/dist/dashboard/assets/{bg-BG-XCXSNQG7-BPLlwY2s.js → bg-BG-XCXSNQG7-5dVZIYN7.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-DXYQGD6D-Df8Y7Srr.js → blockDiagram-DXYQGD6D-CLHIA42j.js} +1 -1
- package/dist/dashboard/assets/{bn-BD-2XOGV67Q-CY-dhlzi.js → bn-BD-2XOGV67Q-DPdctd0M.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-AHTNJAMY-D7TG6J6Q.js → c4Diagram-AHTNJAMY-KCxsjhZ-.js} +1 -1
- package/dist/dashboard/assets/{ca-ES-6MX7JW3Y-DFf13e9p.js → ca-ES-6MX7JW3Y-BwsiffyD.js} +1 -1
- package/dist/dashboard/assets/channel-C8dyNz3Z.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-DCA-ERlu.js → chunk-4BX2VUAB-CXYJqRL7.js} +1 -1
- package/dist/dashboard/assets/{chunk-4TB4RGXK-Bczdxdod.js → chunk-4TB4RGXK-64IoWLUH.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-B3649L4a.js → chunk-55IACEB6-oeTs6Ons.js} +1 -1
- package/dist/dashboard/assets/{chunk-EDXVE4YY-Bwj1fYhG.js → chunk-EDXVE4YY-DnBDiozF.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-oY1KO--2.js → chunk-FMBD7UC4-1vZj5k6I.js} +1 -1
- package/dist/dashboard/assets/{chunk-OYMX7WX6-B4MPzc-c.js → chunk-OYMX7WX6-ChzA2Qb2.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-mVSSFcuA.js → chunk-QZHKN3VN-DFD_tEP6.js} +1 -1
- package/dist/dashboard/assets/{chunk-YZCP3GAM-DeRyq2BY.js → chunk-YZCP3GAM-BHU_oH_c.js} +1 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-BAOXjBRe.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-BAOXjBRe.js +1 -0
- package/dist/dashboard/assets/clone-Cpvwh6xu.js +1 -0
- package/dist/dashboard/assets/{cose-bilkent-S5V4N54A-BTtdOgy5.js → cose-bilkent-S5V4N54A-Bg8VEGjl.js} +1 -1
- package/dist/dashboard/assets/{cs-CZ-2BRQDIVT-BzC5Rf0R.js → cs-CZ-2BRQDIVT-CwAnE7Z6.js} +1 -1
- package/dist/dashboard/assets/{da-DK-5WZEPLOC-gF4jrIY7.js → da-DK-5WZEPLOC-DsAINO0_.js} +1 -1
- package/dist/dashboard/assets/{dagre-KV5264BT-8Cpaf4My.js → dagre-KV5264BT-CdNovau5.js} +1 -1
- package/dist/dashboard/assets/{de-DE-XR44H4JA-BzHDEugW.js → de-DE-XR44H4JA-DQ5OpjQD.js} +1 -1
- package/dist/dashboard/assets/{diagram-5BDNPKRD-BUa2eqbA.js → diagram-5BDNPKRD-DIm6J283.js} +1 -1
- package/dist/dashboard/assets/{diagram-G4DWMVQ6-CsHVo990.js → diagram-G4DWMVQ6-CK08ITsx.js} +1 -1
- package/dist/dashboard/assets/{diagram-MMDJMWI5-CFdSOuIW.js → diagram-MMDJMWI5-DhJYPP7z.js} +1 -1
- package/dist/dashboard/assets/{diagram-TYMM5635-Cv2e3TBK.js → diagram-TYMM5635-C_e80UTu.js} +1 -1
- package/dist/dashboard/assets/{el-GR-BZB4AONW-Bw-xG8H1.js → el-GR-BZB4AONW-DclRqvkS.js} +1 -1
- package/dist/dashboard/assets/{erDiagram-SMLLAGMA-Di1x3Ld5.js → erDiagram-SMLLAGMA-MyfjSgFp.js} +1 -1
- package/dist/dashboard/assets/{es-ES-U4NZUMDT-BgdmgnEL.js → es-ES-U4NZUMDT-CHBzsVCs.js} +1 -1
- package/dist/dashboard/assets/{eu-ES-A7QVB2H4-C_-W1jiT.js → eu-ES-A7QVB2H4-CVStEZVJ.js} +1 -1
- package/dist/dashboard/assets/{fa-IR-HGAKTJCU-D-Z42ygz.js → fa-IR-HGAKTJCU-84UjGZiC.js} +1 -1
- package/dist/dashboard/assets/{fi-FI-Z5N7JZ37-CKqV9a_l.js → fi-FI-Z5N7JZ37-B-_lgOAU.js} +1 -1
- package/dist/dashboard/assets/{flowDiagram-DWJPFMVM-C0HsaC5L.js → flowDiagram-DWJPFMVM-nR9IojlX.js} +1 -1
- package/dist/dashboard/assets/{fr-FR-RHASNOE6-DPDm5F3m.js → fr-FR-RHASNOE6-lXmb84Qf.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-T4ZO3ILL-T-R79Oea.js → ganttDiagram-T4ZO3ILL-CDXS_k5x.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-UUTBAWPF-DmdlPMiD.js → gitGraphDiagram-UUTBAWPF-DlSCg_be.js} +1 -1
- package/dist/dashboard/assets/{gl-ES-HMX3MZ6V-c2pDP6q3.js → gl-ES-HMX3MZ6V-DsAiVwM4.js} +1 -1
- package/dist/dashboard/assets/{graph-55sHob5M.js → graph-C23F2q3y.js} +1 -1
- package/dist/dashboard/assets/{he-IL-6SHJWFNN-QzeRcOiz.js → he-IL-6SHJWFNN-CNHUnglJ.js} +1 -1
- package/dist/dashboard/assets/{hi-IN-IWLTKZ5I-CmRjYfDv.js → hi-IN-IWLTKZ5I-gkocGD33.js} +1 -1
- package/dist/dashboard/assets/{hu-HU-A5ZG7DT2-DQS4XtgQ.js → hu-HU-A5ZG7DT2-lq_pPFj9.js} +1 -1
- package/dist/dashboard/assets/{id-ID-SAP4L64H-D-BFw5MU.js → id-ID-SAP4L64H-DUKThVft.js} +1 -1
- package/dist/dashboard/assets/{index-MPnw9upZ.css → index-CVcgkdal.css} +1 -1
- package/dist/dashboard/assets/{index-C2j0AERU.js → index-DFFGxCUu.js} +1 -1
- package/dist/dashboard/assets/{index-pZP-3m96.js → index-xYYnjbSx.js} +131 -131
- package/dist/dashboard/assets/{infoDiagram-42DDH7IO-BaT4J3uc.js → infoDiagram-42DDH7IO-BIZDd3qg.js} +1 -1
- package/dist/dashboard/assets/{ishikawaDiagram-UXIWVN3A-DsizYWBB.js → ishikawaDiagram-UXIWVN3A-Bj5MHhfc.js} +1 -1
- package/dist/dashboard/assets/{it-IT-JPQ66NNP-CFAPcTjk.js → it-IT-JPQ66NNP-DIDeuYqe.js} +1 -1
- package/dist/dashboard/assets/{ja-JP-DBVTYXUO-Bzs_hBtx.js → ja-JP-DBVTYXUO-BqPEBA22.js} +1 -1
- package/dist/dashboard/assets/{journeyDiagram-VCZTEJTY-B9kB5yN9.js → journeyDiagram-VCZTEJTY-B41HNLhc.js} +1 -1
- package/dist/dashboard/assets/{kaa-6HZHGXH3-CqRi76QS.js → kaa-6HZHGXH3-CCgtE0-l.js} +1 -1
- package/dist/dashboard/assets/{kab-KAB-ZGHBKWFO-wSqF6nkL.js → kab-KAB-ZGHBKWFO-A4y6sskJ.js} +1 -1
- package/dist/dashboard/assets/{kanban-definition-6JOO6SKY-DasidrnL.js → kanban-definition-6JOO6SKY-DR-Zc9Wa.js} +1 -1
- package/dist/dashboard/assets/{kk-KZ-P5N5QNE5-ins4bRlm.js → kk-KZ-P5N5QNE5-CaXfkWxC.js} +1 -1
- package/dist/dashboard/assets/{km-KH-HSX4SM5Z-BjJepDRC.js → km-KH-HSX4SM5Z-DGfryG3j.js} +1 -1
- package/dist/dashboard/assets/{ko-KR-MTYHY66A-Cmak8rUq.js → ko-KR-MTYHY66A-CuNG6PfQ.js} +1 -1
- package/dist/dashboard/assets/{ku-TR-6OUDTVRD-Dbz6ljVD.js → ku-TR-6OUDTVRD-DZNsnhP9.js} +1 -1
- package/dist/dashboard/assets/{layout-DMQli9Le.js → layout-CThyY_Dn.js} +1 -1
- package/dist/dashboard/assets/{linear-B6VVSyMW.js → linear-DBRj6V2K.js} +1 -1
- package/dist/dashboard/assets/{lt-LT-XHIRWOB4-CEmAxA9u.js → lt-LT-XHIRWOB4-B97DldtT.js} +1 -1
- package/dist/dashboard/assets/{lv-LV-5QDEKY6T-CJR-At7g.js → lv-LV-5QDEKY6T-yrPeKaL3.js} +1 -1
- package/dist/dashboard/assets/{min-CqkwiHUc.js → min-DHVsc_O1.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-QFDTVHPH-bsYCrNtj.js → mindmap-definition-QFDTVHPH-ta1H_Vv6.js} +1 -1
- package/dist/dashboard/assets/{mr-IN-CRQNXWMA-P4spwjT8.js → mr-IN-CRQNXWMA-b3dApjRs.js} +1 -1
- package/dist/dashboard/assets/{my-MM-5M5IBNSE-a1rvArEV.js → my-MM-5M5IBNSE-BHIBHPam.js} +1 -1
- package/dist/dashboard/assets/{nb-NO-T6EIAALU-Dw_J2QCA.js → nb-NO-T6EIAALU-MhmUUkRf.js} +1 -1
- package/dist/dashboard/assets/{nl-NL-IS3SIHDZ-DyJZtP9s.js → nl-NL-IS3SIHDZ-lff3Vuu6.js} +1 -1
- package/dist/dashboard/assets/{nn-NO-6E72VCQL-4acyfJJj.js → nn-NO-6E72VCQL-DXvDarQa.js} +1 -1
- package/dist/dashboard/assets/{oc-FR-POXYY2M6-D8pDlGpO.js → oc-FR-POXYY2M6-Ckw3bKbR.js} +1 -1
- package/dist/dashboard/assets/{pa-IN-N4M65BXN-CUXWRM9Z.js → pa-IN-N4M65BXN-B2_S0arL.js} +1 -1
- package/dist/dashboard/assets/{percentages-BXMCSKIN-jDtw9CS_.js → percentages-BXMCSKIN-B3ROetXt.js} +7 -7
- package/dist/dashboard/assets/{pica-D2k8QhiT.js → pica-g7PUwtlw.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-DEJITSTG-BY5lDpxM.js → pieDiagram-DEJITSTG-CjThCCvb.js} +1 -1
- package/dist/dashboard/assets/{pl-PL-T2D74RX3-BTVl1PaU.js → pl-PL-T2D74RX3-DzkRcoZK.js} +1 -1
- package/dist/dashboard/assets/{pt-BR-5N22H2LF-CRV4c2FR.js → pt-BR-5N22H2LF-D41OxsmY.js} +1 -1
- package/dist/dashboard/assets/{pt-PT-UZXXM6DQ-Ciz73XBG.js → pt-PT-UZXXM6DQ-BuClZ87f.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-34T5L4WZ-CkCyPark.js → quadrantDiagram-34T5L4WZ-RD4818Y7.js} +1 -1
- package/dist/dashboard/assets/{requirementDiagram-MS252O5E-pkDzqMen.js → requirementDiagram-MS252O5E-CXJidhho.js} +1 -1
- package/dist/dashboard/assets/{ro-RO-JPDTUUEW-B5tB2ZMk.js → ro-RO-JPDTUUEW-DqTdk1yt.js} +1 -1
- package/dist/dashboard/assets/{ru-RU-B4JR7IUQ-CjaSKApe.js → ru-RU-B4JR7IUQ-V4DgtGOD.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-XADWPNL6-CrziMmSl.js → sankeyDiagram-XADWPNL6-C1sycfmk.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-FGHM5R23-D5zUE04i.js → sequenceDiagram-FGHM5R23-BsRhf00C.js} +1 -1
- package/dist/dashboard/assets/{si-LK-N5RQ5JYF-QK81fzaG.js → si-LK-N5RQ5JYF-BkjJVIKw.js} +1 -1
- package/dist/dashboard/assets/{sk-SK-C5VTKIMK-TANqzQvg.js → sk-SK-C5VTKIMK-CGyzVMuS.js} +1 -1
- package/dist/dashboard/assets/{sl-SI-NN7IZMDC-Dht86ddT.js → sl-SI-NN7IZMDC-B_v3LIOj.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FHFEXIEX-CcR_Q14Z.js → stateDiagram-FHFEXIEX-AHgyeSSd.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-XVTOYBBV.js +1 -0
- package/dist/dashboard/assets/{subset-shared.chunk-NAGN_SBv.js → subset-shared.chunk-Ci_oaXw-.js} +1 -1
- package/dist/dashboard/assets/{subset-worker.chunk-wsRwU71V.js → subset-worker.chunk-CVvKFWGY.js} +1 -1
- package/dist/dashboard/assets/{sv-SE-XGPEYMSR-DidGUaol.js → sv-SE-XGPEYMSR-D5t6-bQC.js} +1 -1
- package/dist/dashboard/assets/{ta-IN-2NMHFXQM-YZmBodpj.js → ta-IN-2NMHFXQM-DEKtK_gX.js} +1 -1
- package/dist/dashboard/assets/{th-TH-HPSO5L25-CVvvXQFu.js → th-TH-HPSO5L25-DRcU9LZ2.js} +1 -1
- package/dist/dashboard/assets/{timeline-definition-GMOUNBTQ-B8I1QieK.js → timeline-definition-GMOUNBTQ-PBxzQfC2.js} +1 -1
- package/dist/dashboard/assets/{tr-TR-DEFEU3FU-DjyXDfoR.js → tr-TR-DEFEU3FU-CBguuduX.js} +1 -1
- package/dist/dashboard/assets/{uk-UA-QMV73CPH-1pRnjZIi.js → uk-UA-QMV73CPH-i0PRyM7M.js} +1 -1
- package/dist/dashboard/assets/{vennDiagram-DHZGUBPP-BsBRDs0e.js → vennDiagram-DHZGUBPP-YAtaCt6v.js} +1 -1
- package/dist/dashboard/assets/{vi-VN-M7AON7JQ-CualwmWX.js → vi-VN-M7AON7JQ-NwV9F7AH.js} +1 -1
- package/dist/dashboard/assets/{wardley-RL74JXVD-BP4Ewc0H.js → wardley-RL74JXVD-fgxrOw2v.js} +1 -1
- package/dist/dashboard/assets/{wardleyDiagram-NUSXRM2D-B_WTb-rg.js → wardleyDiagram-NUSXRM2D-Dpq96Mxt.js} +1 -1
- package/dist/dashboard/assets/{xychartDiagram-5P7HB3ND-vB-uMt25.js → xychartDiagram-5P7HB3ND-DiPx1Q_d.js} +1 -1
- package/dist/dashboard/assets/{zh-CN-LNUGB5OW-CQjWtZ9Y.js → zh-CN-LNUGB5OW-DkOI6Dmv.js} +1 -1
- package/dist/dashboard/assets/{zh-HK-E62DVLB3-DzC49dFs.js → zh-HK-E62DVLB3-lIsB7f8U.js} +1 -1
- package/dist/dashboard/assets/{zh-TW-RAJ6MFWO-C4KJuhZE.js → zh-TW-RAJ6MFWO-DbxNlWLc.js} +1 -1
- package/dist/dashboard/index.html +2 -2
- package/dist/index.js +2770 -2539
- package/package.json +1 -1
- package/skill/SKILL.md +6 -4
- package/skill/references/brain-sync.md +39 -51
- package/skill/references/cli-reference.md +18 -6
- package/skill/references/integrations.md +21 -31
- package/skill-deep-research/SKILL.md +1 -0
- package/skill-sync/SKILL.md +2 -3
- package/skill-sync/references/merge-rules.md +33 -37
- package/dist/dashboard/assets/channel-CqCT8-qB.js +0 -1
- package/dist/dashboard/assets/classDiagram-6PBFFD2Q-C9WQPvu9.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-HSJHXN6E-C9WQPvu9.js +0 -1
- package/dist/dashboard/assets/clone-B0kf3g9o.js +0 -1
- package/dist/dashboard/assets/stateDiagram-v2-QKLJ7IA2-DIVPLDRd.js +0 -1
package/README.md
CHANGED
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
<a href="#lab-insights">Lab</a> ·
|
|
32
32
|
<a href="#federation">Federation</a> ·
|
|
33
33
|
<a href="#brain-cloud-sync">Brain Sync</a> ·
|
|
34
|
+
<a href="#linked-repos">Linked Repos</a> ·
|
|
34
35
|
<a href="#commands">Commands</a> ·
|
|
35
36
|
<a href="DEEP-DIVE.md">Deep Dive</a>
|
|
36
37
|
</p>
|
|
@@ -563,25 +564,37 @@ A peer is readable when your connection to it is `out`/`both`, it isn't stale, *
|
|
|
563
564
|
|
|
564
565
|
## Brain Cloud Sync
|
|
565
566
|
|
|
566
|
-
Federation lets separate projects read each other. **Brain Cloud Sync** is the other half of team collaboration: it lets a whole team work on the *same* brain.
|
|
567
|
+
Federation lets separate projects read each other. **Brain Cloud Sync** is the other half of team collaboration: it lets a whole team work on the *same* brain. When you turn it on, dreamcontext syncs the **whole project** — your code, `.claude/`, and the brain nested under `_dream_context/` — to the project's own GitHub repo, so tasks, knowledge, and features are pushed, pulled, merged, and reviewed the way you already collaborate on code. It stays local-first the entire time: the brain is still plain markdown and JSON on disk, and git is only the sync transport, not a new database.
|
|
567
568
|
|
|
568
569
|
```bash
|
|
569
|
-
dreamcontext brain
|
|
570
|
+
dreamcontext brain enable # Turn cloud sync on — whole project → its GitHub origin (needs an origin)
|
|
570
571
|
dreamcontext brain status # Mode, remote, and current sync state
|
|
571
572
|
dreamcontext brain sync # Manual fetch → merge → commit → push, outside a sleep cycle
|
|
572
|
-
dreamcontext brain
|
|
573
|
-
dreamcontext brain enable # Turn cloud sync on for this vault
|
|
574
|
-
dreamcontext brain disable # Turn it off (the brain stays local)
|
|
573
|
+
dreamcontext brain disable # Turn it off (the brain stays committed locally, never pushed)
|
|
575
574
|
```
|
|
576
575
|
|
|
577
|
-
- **Sync rides sleep.** Every `dreamcontext sleep done` automatically runs fetch → merge → commit → push against the
|
|
578
|
-
- **Deterministic files merge themselves; prose defers to an agent.** JSON (changelog, releases, config) and task status/changelog merge automatically (task changelogs union, the furthest status wins). When two people edit the same *prose* section of a knowledge or feature file, the conflict is handed to a semantic **merge agent** — the `/dream-sync` skill — which reads base/ours/theirs and writes the real merge, then hands back to commit and push.
|
|
579
|
-
- **Two modes.** `
|
|
580
|
-
- **Nothing secret or machine-local is ever pushed.** A **scrub gate** runs before every commit and push and blocks secrets and absolute local paths. The auth token is never written into the remote URL — git network calls use `GIT_ASKPASS` with a `0600` temp file, so the token never lands in `.git/config`, the environment, or a process argument. Per-machine indexes, caches, and embeddings are gitignored and rebuilt locally, so derived state never causes merge noise.
|
|
581
|
-
- **
|
|
582
|
-
- **Private by default, attach is a trust decision.** New brain repos are created **private**. Because a shared brain is a prompt-injection channel, attaching to one prints a loud trust warning and an incoming-diff preview and refuses without an explicit confirmation. Personal attribution rides the existing multi-people awareness (`person:<slug>` tags, changelog authors) rather than per-person file forks.
|
|
576
|
+
- **Sync rides sleep.** Every `dreamcontext sleep done` automatically runs fetch → merge → commit → push against the project's `origin`, so your teammates' consolidated context reaches you and yours reaches them with no extra step. A sync failure never fails the sleep.
|
|
577
|
+
- **Deterministic files merge themselves; prose defers to an agent; code goes to you.** JSON (changelog, releases, config) and task status/changelog merge automatically (task changelogs union, the furthest status wins). When two people edit the same *prose* section of a knowledge or feature file, the conflict is handed to a semantic **merge agent** — the `/dream-sync` skill — which reads base/ours/theirs and writes the real merge, then hands back to commit and push. A real **code** conflict is left for your editor with native git markers — never mangled by a merge agent.
|
|
578
|
+
- **Two modes.** `full-repo` (cloud sync on) syncs the whole project to its own `origin` on the current branch; **`in-tree`** (the safe default, cloud sync off) commits the brain inside the code repo but **never auto-pushes**. The scrub gate applies to both. Because `.claude/` and `_dream_context/` already live in the code repo, they travel together — no separate brain repo, no symlink layer.
|
|
579
|
+
- **Nothing secret or machine-local is ever pushed.** A **scrub gate** runs before every commit and push and blocks secrets and absolute local paths, and the project-root `.gitignore` is force-written with the machine-local brain excludes before every whole-project stage. The auth token is never written into the remote URL — git network calls use `GIT_ASKPASS` with a `0600` temp file, so the token never lands in `.git/config`, the environment, or a process argument. Per-machine indexes, caches, and embeddings are gitignored and rebuilt locally, so derived state never causes merge noise.
|
|
580
|
+
- **Personal attribution, no per-person forks.** Attribution rides the existing multi-people awareness (`person:<slug>` tags, changelog authors) rather than per-person file forks.
|
|
583
581
|
|
|
584
|
-
From the desktop **Launcher** the whole flow is terminal-free: **GitHub device-flow login** (with a personal-access-token fallback), **
|
|
582
|
+
From the desktop **Launcher** the whole flow is terminal-free: **GitHub device-flow login** (with a personal-access-token fallback), a Settings **"Cloud sync"** toggle that turns whole-project sync on/off, a **team-updates badge** that tells you when teammates have pushed, and a one-click **"Resolve with AI"** for a deferred prose merge. If the project has no `origin` yet, the Cloud sync panel offers **Create new** (a fresh private-by-default GitHub repo wired as `origin`) or **Connect existing** (an existing repo URL), then enables sync and does the first push for you — no `git remote add` by hand.
|
|
583
|
+
|
|
584
|
+
## Linked Repos
|
|
585
|
+
|
|
586
|
+
Federation reads across brains; Brain Cloud Sync shares one brain. **Linked Repos** is the third piece: it lets one brain **govern the bare code repos it points at** — the products or services that live in their *own* GitHub repos, with no `_dream_context/` of their own, cloned to different local paths on each teammate's machine (or not cloned at all). The brain becomes a control tower over a family of repos, decoupled from where any of them physically lives.
|
|
587
|
+
|
|
588
|
+
Linking is a **pointer, not a pipe** — it never clones, pushes, pulls, or commits the target repo. It records two things: a **shared** `{name, gitRemoteUrl}` in `.config.json` that travels with the team so everyone knows the repo exists, and a **machine-local** `url → path` mapping in `~/.dreamcontext/linked-repos.json` that says where it lives on *this* machine and **never leaves it**.
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
dreamcontext link add app-b ../app-b # Govern a repo — URL derived from its git origin (no clone/push happens)
|
|
592
|
+
dreamcontext links # List them: ✓ present (local path) / ✗ missing here
|
|
593
|
+
dreamcontext link clone app-c # Fetch a missing one to this machine — one-way, trust-gated clone
|
|
594
|
+
dreamcontext link rm app-b # Stop governing it (the machine-local path mapping is kept)
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
Each session's context snapshot shows a **Linked repos** glance — present repos hand their resolved local path to the agent so it can read and edit the governed code directly; missing ones show a one-line `link clone` hint. It's fully manageable from the dashboard (**Settings → Cloud sync → Linked repos**), with a native folder picker to bind a checkout and a trust-gated **Clone** for missing repos. GitHub-only for now, and the clone path is hardened so a team-writable URL can never turn into code execution.
|
|
585
598
|
|
|
586
599
|
## Commands
|
|
587
600
|
|
|
@@ -874,20 +887,32 @@ See the [Federation](#federation) section above for the full workflow.
|
|
|
874
887
|
### Brain (cloud sync)
|
|
875
888
|
|
|
876
889
|
```bash
|
|
877
|
-
dreamcontext brain
|
|
878
|
-
dreamcontext brain status # Show mode (
|
|
890
|
+
dreamcontext brain enable # Turn cloud sync on — whole project → its GitHub origin (full-repo)
|
|
891
|
+
dreamcontext brain status # Show mode (full-repo | in-tree), remote, and sync state
|
|
879
892
|
dreamcontext brain sync # Manual fetch → merge → commit → push outside a sleep cycle
|
|
880
|
-
dreamcontext brain
|
|
881
|
-
dreamcontext brain enable # Turn cloud sync on for this vault
|
|
882
|
-
dreamcontext brain disable # Turn cloud sync off (the brain stays local)
|
|
893
|
+
dreamcontext brain disable # Turn cloud sync off (the brain stays committed locally)
|
|
883
894
|
```
|
|
884
895
|
|
|
885
|
-
- `
|
|
886
|
-
- Every `sleep done` runs fetch → merge → commit → push; a scrub gate blocks secrets and absolute paths before every push, and the token is supplied via `GIT_ASKPASS` (never in the remote URL). Prose conflicts defer to the `/dream-sync` merge agent; JSON and task status merge automatically.
|
|
887
|
-
- Device-flow GitHub login
|
|
896
|
+
- `full-repo` mode (cloud sync on) syncs the whole project to its own `origin` with full post-`sleep done` auto-sync; **`in-tree`** (the safe default, cloud sync off) commits the brain in the code repo on sleep and never auto-pushes.
|
|
897
|
+
- Every `sleep done` runs fetch → merge → commit → push; a scrub gate blocks secrets and absolute paths before every push, and the token is supplied via `GIT_ASKPASS` (never in the remote URL). Prose conflicts defer to the `/dream-sync` merge agent; JSON and task status merge automatically; real code conflicts go to your editor.
|
|
898
|
+
- Device-flow GitHub login and a Settings "Cloud sync" toggle are available from the desktop Launcher.
|
|
888
899
|
|
|
889
900
|
See the [Brain Cloud Sync](#brain-cloud-sync) section above for the full workflow.
|
|
890
901
|
|
|
902
|
+
### Linked Repos
|
|
903
|
+
|
|
904
|
+
```bash
|
|
905
|
+
dreamcontext link add <name> <path> # Govern a bare code repo (URL from its origin, or --url); no clone/push happens
|
|
906
|
+
dreamcontext links # List governed repos: ✓ present / ✗ missing on this machine (--json)
|
|
907
|
+
dreamcontext link clone <name> # Clone a missing repo here — one-way, trust-gated (--dir, --yes)
|
|
908
|
+
dreamcontext link rm <name> # Drop it from the shared config (local path mapping kept; alias: unlink)
|
|
909
|
+
```
|
|
910
|
+
|
|
911
|
+
- A **pointer, not a sync**: `link add` records only `{name, url}` (shared) + a machine-local `url → path` (never synced). Only the explicit `link clone` touches the network.
|
|
912
|
+
- The session-start snapshot surfaces present/missing and hands resolved paths to the agent; also manageable from **Settings → Cloud sync → Linked repos**.
|
|
913
|
+
|
|
914
|
+
See the [Linked Repos](#linked-repos) section above.
|
|
915
|
+
|
|
891
916
|
### Desktop App (macOS)
|
|
892
917
|
|
|
893
918
|
```bash
|
|
@@ -67,6 +67,8 @@ directly (a connected peer is a normal directory on disk). A connection is a sta
|
|
|
67
67
|
"may read" — use it instead of reporting "not found here" when a sibling project owns
|
|
68
68
|
the answer.
|
|
69
69
|
|
|
70
|
+
**Linked code repos are reachable too.** This brain may *govern* bare code repos — products/services in their own GitHub repos, with **no `_dream_context/` of their own** — cloned at machine-local paths. `dreamcontext links` (or the SessionStart "Linked repos" glance) resolves each to its local path on this machine. When the answer lives in a governed product's *code* rather than in this repo, Grep/Read that resolved absolute path directly instead of reporting "not found here". A **missing (✗)** linked repo simply isn't checked out on this machine — say so rather than guessing.
|
|
71
|
+
|
|
70
72
|
Recall is appropriate for Track A (Documented Knowledge) and for Track B when
|
|
71
73
|
the query is about a documented concept. It is NOT a substitute for Glob/Grep
|
|
72
74
|
on raw code symbols — for "find the function that does X" go straight to
|
|
@@ -144,7 +146,7 @@ No preamble. No emojis. Absolute paths only.
|
|
|
144
146
|
|
|
145
147
|
## Bash Restrictions
|
|
146
148
|
|
|
147
|
-
Use Bash ONLY for: `ls`, `git log`, `git diff`, `git show`, `git status`, `find`, `cat`, `head`, `tail`, `wc`, `pwd`, `dreamcontext memory recall`, `dreamcontext snapshot`, `dreamcontext transcript distill`
|
|
149
|
+
Use Bash ONLY for: `ls`, `git log`, `git diff`, `git show`, `git status`, `find`, `cat`, `head`, `tail`, `wc`, `pwd`, `dreamcontext memory recall`, `dreamcontext links`, `dreamcontext snapshot`, `dreamcontext transcript distill`
|
|
148
150
|
NEVER use Bash for any command that modifies files or system state.
|
|
149
151
|
|
|
150
152
|
## Rules
|
|
@@ -67,6 +67,8 @@ directly (a connected peer is a normal directory on disk). A connection is a sta
|
|
|
67
67
|
"may read" — use it instead of reporting "not found here" when a sibling project owns
|
|
68
68
|
the answer.
|
|
69
69
|
|
|
70
|
+
**Linked code repos are reachable too.** This brain may *govern* bare code repos — products/services in their own GitHub repos, with **no `_dream_context/` of their own** — cloned at machine-local paths. `dreamcontext links` (or the SessionStart "Linked repos" glance) resolves each to its local path on this machine. When the answer lives in a governed product's *code* rather than in this repo, Grep/Read that resolved absolute path directly instead of reporting "not found here". A **missing (✗)** linked repo simply isn't checked out on this machine — say so rather than guessing.
|
|
71
|
+
|
|
70
72
|
Recall is appropriate for Track A (Documented Knowledge) and for Track B when
|
|
71
73
|
the query is about a documented concept. It is NOT a substitute for Glob/Grep
|
|
72
74
|
on raw code symbols — for "find the function that does X" go straight to
|
|
@@ -144,7 +146,7 @@ No preamble. No emojis. Absolute paths only.
|
|
|
144
146
|
|
|
145
147
|
## Bash Restrictions
|
|
146
148
|
|
|
147
|
-
Use Bash ONLY for: `ls`, `git log`, `git diff`, `git show`, `git status`, `find`, `cat`, `head`, `tail`, `wc`, `pwd`, `dreamcontext memory recall`, `dreamcontext snapshot`, `dreamcontext transcript distill`
|
|
149
|
+
Use Bash ONLY for: `ls`, `git log`, `git diff`, `git show`, `git status`, `find`, `cat`, `head`, `tail`, `wc`, `pwd`, `dreamcontext memory recall`, `dreamcontext links`, `dreamcontext snapshot`, `dreamcontext transcript distill`
|
|
148
150
|
NEVER use Bash for any command that modifies files or system state.
|
|
149
151
|
|
|
150
152
|
## Rules
|
|
@@ -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-xYYnjbSx.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-xYYnjbSx.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-B3ROetXt.js";import"./index-xYYnjbSx.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-xYYnjbSx.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};
|