create-egregore 0.20.2 → 0.21.0-runtime-mvp.1
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/assets/egregore-launcher.js +1011 -16
- package/bin/cli.js +11 -0
- package/lib/claude-runtime.js +192 -0
- package/lib/local.js +38 -31
- package/lib/pi-runtime.js +1 -0
- package/lib/prime-runtime.js +1 -0
- package/lib/runtime-identity.js +146 -0
- package/lib/setup.js +116 -17
- package/package.json +10 -6
- package/runtime/claude/.claude/context/commit-format.md +110 -0
- package/runtime/claude/.claude/context/git-language.md +46 -0
- package/runtime/claude/.claude/context/notification-consent.md +66 -0
- package/runtime/claude/.claude/context/pr-format.md +67 -0
- package/runtime/claude/.claude/context/telemetry.md +133 -0
- package/runtime/claude/.claude/hooks/boundary-check.sh +333 -0
- package/runtime/claude/.claude/hooks/branch-guard.sh +231 -0
- package/runtime/claude/.claude/hooks/card-context.sh +38 -0
- package/runtime/claude/.claude/hooks/emissary-detect.sh +53 -0
- package/runtime/claude/.claude/hooks/memory-refresh.sh +67 -0
- package/runtime/claude/.claude/hooks/onboarding-guard.sh +86 -0
- package/runtime/claude/.claude/hooks/retrieval-context.sh +43 -0
- package/runtime/claude/.claude/rules/voice-bedrock.md +73 -0
- package/runtime/claude/.claude/settings.json +131 -0
- package/runtime/claude/.claude/skills/activity/SKILL.md +68 -0
- package/runtime/claude/.claude/skills/announce/SKILL.md +54 -0
- package/runtime/claude/.claude/skills/archive/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/branch/SKILL.md +147 -0
- package/runtime/claude/.claude/skills/checkup/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/commit/SKILL.md +103 -0
- package/runtime/claude/.claude/skills/contribute/SKILL.md +343 -0
- package/runtime/claude/.claude/skills/create-skill/SKILL.md +135 -0
- package/runtime/claude/.claude/skills/dark-mode/SKILL.md +410 -0
- package/runtime/claude/.claude/skills/dashboard/SKILL.md +43 -0
- package/runtime/claude/.claude/skills/deep-reflect/REPORT.md +140 -0
- package/runtime/claude/.claude/skills/deep-reflect/RESEARCH.md +132 -0
- package/runtime/claude/.claude/skills/deep-reflect/ROLES.md +104 -0
- package/runtime/claude/.claude/skills/deep-reflect/SKILL.md +170 -0
- package/runtime/claude/.claude/skills/delete-user/SKILL.md +150 -0
- package/runtime/claude/.claude/skills/emissary/SKILL.md +220 -0
- package/runtime/claude/.claude/skills/handoff/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/harvest/AUDIT.md +546 -0
- package/runtime/claude/.claude/skills/harvest/FORMAT.md +436 -0
- package/runtime/claude/.claude/skills/harvest/PROCESS.md +395 -0
- package/runtime/claude/.claude/skills/harvest/QUESTION_PALETTE.md +76 -0
- package/runtime/claude/.claude/skills/harvest/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/ingest/SKILL.md +112 -0
- package/runtime/claude/.claude/skills/ingest-corpus/SKILL.md +187 -0
- package/runtime/claude/.claude/skills/ingest-notion/SKILL.md +214 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/SKILL.md +65 -0
- package/runtime/claude/.claude/skills/ingest-user-interview/references/analysis-contract.md +125 -0
- package/runtime/claude/.claude/skills/invite/SKILL.md +111 -0
- package/runtime/claude/.claude/skills/issue/SKILL.md +104 -0
- package/runtime/claude/.claude/skills/me/SKILL.md +81 -0
- package/runtime/claude/.claude/skills/meeting/SKILL.md +76 -0
- package/runtime/claude/.claude/skills/meeting/references/analysis-contract.md +102 -0
- package/runtime/claude/.claude/skills/note/SKILL.md +71 -0
- package/runtime/claude/.claude/skills/notion-connect/SKILL.md +124 -0
- package/runtime/claude/.claude/skills/onboarding/SKILL.md +159 -0
- package/runtime/claude/.claude/skills/pr/SKILL.md +85 -0
- package/runtime/claude/.claude/skills/pull/SKILL.md +79 -0
- package/runtime/claude/.claude/skills/push/SKILL.md +47 -0
- package/runtime/claude/.claude/skills/quest/SKILL.md +121 -0
- package/runtime/claude/.claude/skills/reflect/SKILL.md +69 -0
- package/runtime/claude/.claude/skills/review-pr/SKILL.md +276 -0
- package/runtime/claude/.claude/skills/save/SKILL.md +92 -0
- package/runtime/claude/.claude/skills/slack-connect/SKILL.md +148 -0
- package/runtime/claude/.claude/skills/summon/SKILL.md +240 -0
- package/runtime/claude/.claude/skills/sync-repos/SKILL.md +82 -0
- package/runtime/claude/.claude/skills/teams-connect/SKILL.md +216 -0
- package/runtime/claude/.claude/skills/telegram-connect/SKILL.md +110 -0
- package/runtime/claude/.claude/skills/telemetry/SKILL.md +117 -0
- package/runtime/claude/.claude/skills/test/SKILL.md +87 -0
- package/runtime/claude/.claude/skills/the-spiral/SKILL.md +492 -0
- package/runtime/claude/.claude/skills/tui-design/SKILL.md +188 -0
- package/runtime/claude/.claude/skills/tutorial/SKILL.md +100 -0
- package/runtime/claude/.claude/skills/update/SKILL.md +265 -0
- package/runtime/claude/.claude/skills/view/SKILL.md +393 -0
- package/runtime/claude/.claude/skills/view/compose-scaffold.html +221 -0
- package/runtime/claude/.claude/skills/visual-explain/SKILL.md +132 -0
- package/runtime/claude/.claude/skills/wrap/SKILL.md +98 -0
- package/runtime/claude/CLAUDE.md +447 -0
- package/runtime/claude/bin/activity-action.sh +92 -0
- package/runtime/claude/bin/activity-data.sh +17 -0
- package/runtime/claude/bin/agent.sh +783 -0
- package/runtime/claude/bin/artifact-register.sh +164 -0
- package/runtime/claude/bin/artifact-writeback.sh +53 -0
- package/runtime/claude/bin/artifacts.sh +288 -0
- package/runtime/claude/bin/attendant.sh +707 -0
- package/runtime/claude/bin/autosave.sh +112 -0
- package/runtime/claude/bin/boundary.sh +253 -0
- package/runtime/claude/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/claude/bin/capture-reconcile.sh +69 -0
- package/runtime/claude/bin/capture-run.sh +357 -0
- package/runtime/claude/bin/codex-install-skills.sh +78 -0
- package/runtime/claude/bin/codex-render-spec.mjs +462 -0
- package/runtime/claude/bin/codex-session-start.sh +275 -0
- package/runtime/claude/bin/codex-skill-render.mjs +349 -0
- package/runtime/claude/bin/codex-sync-skills.sh +237 -0
- package/runtime/claude/bin/connect-refresh.sh +33 -0
- package/runtime/claude/bin/contribute-guard.sh +79 -0
- package/runtime/claude/bin/corpus_map.py +806 -0
- package/runtime/claude/bin/corpus_survey.py +304 -0
- package/runtime/claude/bin/dashboard-data.sh +18 -0
- package/runtime/claude/bin/github-auth.sh +121 -0
- package/runtime/claude/bin/graph-batch.sh +86 -0
- package/runtime/claude/bin/graph-op.sh +1106 -0
- package/runtime/claude/bin/graph-projection.sh +54 -0
- package/runtime/claude/bin/graph-wal.sh +242 -0
- package/runtime/claude/bin/graph.sh +267 -0
- package/runtime/claude/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/claude/bin/handoff-lifecycle.sh +280 -0
- package/runtime/claude/bin/handoff-pr-backfill.sh +86 -0
- package/runtime/claude/bin/handoff-preview.sh +169 -0
- package/runtime/claude/bin/handoff-run.sh +692 -0
- package/runtime/claude/bin/handoff-save-egregore.sh +224 -0
- package/runtime/claude/bin/index-handoff.sh +322 -0
- package/runtime/claude/bin/ingest-graph.sh +86 -0
- package/runtime/claude/bin/ingest-item.sh +10 -0
- package/runtime/claude/bin/ingest-surface.html +495 -0
- package/runtime/claude/bin/ingest.py +1011 -0
- package/runtime/claude/bin/ingest.sh +308 -0
- package/runtime/claude/bin/ingest_graph.py +856 -0
- package/runtime/claude/bin/ingest_surface.py +544 -0
- package/runtime/claude/bin/invite.sh +6 -0
- package/runtime/claude/bin/issue.sh +10 -0
- package/runtime/claude/bin/knowledge.sh +10 -0
- package/runtime/claude/bin/lib/artifact-id.sh +46 -0
- package/runtime/claude/bin/lib/config.sh +136 -0
- package/runtime/claude/bin/lib/context.sh +642 -0
- package/runtime/claude/bin/lib/dashboard-artifact.sh +242 -0
- package/runtime/claude/bin/lib/ensure-develop.sh +183 -0
- package/runtime/claude/bin/lib/git-message.sh +37 -0
- package/runtime/claude/bin/lib/git-sync.sh +494 -0
- package/runtime/claude/bin/lib/greeting.sh +548 -0
- package/runtime/claude/bin/lib/handoff-meta.sh +97 -0
- package/runtime/claude/bin/lib/hash.sh +13 -0
- package/runtime/claude/bin/lib/identity.sh +213 -0
- package/runtime/claude/bin/lib/metrics.sh +374 -0
- package/runtime/claude/bin/lib/noncode.sh +31 -0
- package/runtime/claude/bin/lib/permissions.sh +106 -0
- package/runtime/claude/bin/lib/time.sh +56 -0
- package/runtime/claude/bin/lib/worktree-links.sh +85 -0
- package/runtime/claude/bin/node-run.sh +42 -0
- package/runtime/claude/bin/notification.sh +6 -0
- package/runtime/claude/bin/notify.sh +636 -0
- package/runtime/claude/bin/observe-context.sh +14 -0
- package/runtime/claude/bin/onboarding.sh +6 -0
- package/runtime/claude/bin/person.py +634 -0
- package/runtime/claude/bin/person.sh +481 -0
- package/runtime/claude/bin/pi-render-spec.mjs +140 -0
- package/runtime/claude/bin/post-update.sh +37 -0
- package/runtime/claude/bin/prime-render-spec.mjs +147 -0
- package/runtime/claude/bin/publish-artifact.sh +324 -0
- package/runtime/claude/bin/publish-references.sh +144 -0
- package/runtime/claude/bin/quest.sh +9 -0
- package/runtime/claude/bin/question.sh +8 -0
- package/runtime/claude/bin/repo-state.sh +96 -0
- package/runtime/claude/bin/research-ingest.sh +7 -0
- package/runtime/claude/bin/restore-owned-skills.sh +67 -0
- package/runtime/claude/bin/retrieval_eval.py +385 -0
- package/runtime/claude/bin/runtime-identity.sh +70 -0
- package/runtime/claude/bin/runtime-upgrade.sh +43 -0
- package/runtime/claude/bin/scroll.sh +9 -0
- package/runtime/claude/bin/search.sh +318 -0
- package/runtime/claude/bin/session-autosave.sh +220 -0
- package/runtime/claude/bin/session-log.sh +199 -0
- package/runtime/claude/bin/session-start.sh +696 -0
- package/runtime/claude/bin/settings.sh +532 -0
- package/runtime/claude/bin/startup-check.sh +136 -0
- package/runtime/claude/bin/statusline.sh +41 -0
- package/runtime/claude/bin/telemetry.sh +666 -0
- package/runtime/claude/bin/test-changes.sh +344 -0
- package/runtime/claude/bin/thread.sh +9 -0
- package/runtime/claude/bin/todo.sh +9 -0
- package/runtime/claude/bin/view-render.sh +126 -0
- package/runtime/claude/bin/worktree-create.sh +145 -0
- package/runtime/claude/bin/worktree-remove.sh +50 -0
- package/runtime/claude/bin/worktree.sh +198 -0
- package/runtime/claude/egregore_runtime/__init__.py +228 -0
- package/runtime/claude/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/claude/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/claude/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/claude/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/claude/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/claude/egregore_runtime/admin_gate.py +102 -0
- package/runtime/claude/egregore_runtime/artifacts.py +523 -0
- package/runtime/claude/egregore_runtime/contracts.py +499 -0
- package/runtime/claude/egregore_runtime/entitlements.py +85 -0
- package/runtime/claude/egregore_runtime/errors.py +10 -0
- package/runtime/claude/egregore_runtime/graph.py +356 -0
- package/runtime/claude/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/claude/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/claude/egregore_runtime/identity.py +734 -0
- package/runtime/claude/egregore_runtime/identity_cli.py +91 -0
- package/runtime/claude/egregore_runtime/ingest.py +575 -0
- package/runtime/claude/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/claude/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/claude/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/claude/egregore_runtime/invitations.py +116 -0
- package/runtime/claude/egregore_runtime/issue_cli.py +305 -0
- package/runtime/claude/egregore_runtime/issues.py +359 -0
- package/runtime/claude/egregore_runtime/knowledge.py +376 -0
- package/runtime/claude/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/claude/egregore_runtime/lifecycle.py +888 -0
- package/runtime/claude/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/claude/egregore_runtime/notification_cli.py +125 -0
- package/runtime/claude/egregore_runtime/notifications.py +230 -0
- package/runtime/claude/egregore_runtime/observe.py +342 -0
- package/runtime/claude/egregore_runtime/onboarding.py +290 -0
- package/runtime/claude/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/claude/egregore_runtime/policy.py +144 -0
- package/runtime/claude/egregore_runtime/profile.py +193 -0
- package/runtime/claude/egregore_runtime/quest_cli.py +216 -0
- package/runtime/claude/egregore_runtime/question_cli.py +180 -0
- package/runtime/claude/egregore_runtime/questions.py +304 -0
- package/runtime/claude/egregore_runtime/quests.py +419 -0
- package/runtime/claude/egregore_runtime/readiness.py +379 -0
- package/runtime/claude/egregore_runtime/research_ingest.py +256 -0
- package/runtime/claude/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/claude/egregore_runtime/runtime.py +464 -0
- package/runtime/claude/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/claude/egregore_runtime/scrolls.py +726 -0
- package/runtime/claude/egregore_runtime/status.py +412 -0
- package/runtime/claude/egregore_runtime/status_cli.py +174 -0
- package/runtime/claude/egregore_runtime/sync.py +218 -0
- package/runtime/claude/egregore_runtime/teamsync.py +139 -0
- package/runtime/claude/egregore_runtime/telemetry.py +640 -0
- package/runtime/claude/egregore_runtime/thread_cli.py +173 -0
- package/runtime/claude/egregore_runtime/threads.py +517 -0
- package/runtime/claude/egregore_runtime/todo_cli.py +142 -0
- package/runtime/claude/egregore_runtime/todos.py +244 -0
- package/runtime/claude/egregore_runtime/upgrade.py +770 -0
- package/runtime/claude/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/claude/egregore_runtime/writeback.py +391 -0
- package/runtime/claude/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/claude/manifest.json +284 -0
- package/runtime/codex/.codex/hooks/search-hint.js +21 -52
- package/runtime/codex/.codex/hooks.json +3 -3
- package/runtime/codex/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/codex/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/codex/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/codex/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/codex/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/codex/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/codex/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/codex/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/codex/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/codex/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/codex/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/codex/.codex/skills/me/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/codex/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/codex/.codex/skills/note/SKILL.md +30 -25
- package/runtime/codex/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/codex/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/codex/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/codex/.codex/skills/save/SKILL.md +2 -2
- package/runtime/codex/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/test/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/codex/.codex/skills/view/SKILL.md +115 -111
- package/runtime/codex/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/codex/.codex/spec-manifest.json +9 -9
- package/runtime/codex/AGENTS.md +62 -58
- package/runtime/codex/bin/activity-action.sh +92 -0
- package/runtime/codex/bin/activity-data.sh +12 -233
- package/runtime/codex/bin/agent.sh +84 -100
- package/runtime/codex/bin/artifact-register.sh +164 -0
- package/runtime/codex/bin/artifact-writeback.sh +53 -0
- package/runtime/codex/bin/artifacts.sh +288 -0
- package/runtime/codex/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/codex/bin/capture-run.sh +18 -2
- package/runtime/codex/bin/codex-render-spec.mjs +41 -16
- package/runtime/codex/bin/codex-session-start.sh +14 -4
- package/runtime/codex/bin/codex-skill-render.mjs +9 -7
- package/runtime/codex/bin/corpus_map.py +806 -0
- package/runtime/codex/bin/corpus_survey.py +304 -0
- package/runtime/codex/bin/dashboard-data.sh +11 -171
- package/runtime/codex/bin/github-auth.sh +121 -0
- package/runtime/codex/bin/graph-batch.sh +7 -0
- package/runtime/codex/bin/graph-op.sh +4 -0
- package/runtime/codex/bin/graph-projection.sh +54 -0
- package/runtime/codex/bin/graph-wal.sh +13 -0
- package/runtime/codex/bin/graph.sh +44 -0
- package/runtime/codex/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/codex/bin/handoff-lifecycle.sh +280 -0
- package/runtime/codex/bin/handoff-preview.sh +169 -0
- package/runtime/codex/bin/handoff-run.sh +42 -26
- package/runtime/codex/bin/ingest-graph.sh +6 -0
- package/runtime/codex/bin/ingest-item.sh +10 -0
- package/runtime/codex/bin/ingest.sh +59 -30
- package/runtime/codex/bin/invite.sh +6 -0
- package/runtime/codex/bin/issue.sh +10 -0
- package/runtime/codex/bin/knowledge.sh +10 -0
- package/runtime/codex/bin/lib/config.sh +20 -0
- package/runtime/codex/bin/lib/context.sh +46 -25
- package/runtime/codex/bin/lib/git-sync.sh +70 -6
- package/runtime/codex/bin/lib/greeting.sh +34 -5
- package/runtime/codex/bin/lib/handoff-meta.sh +97 -0
- package/runtime/codex/bin/lib/worktree-links.sh +6 -0
- package/runtime/codex/bin/node-run.sh +42 -0
- package/runtime/codex/bin/notification.sh +6 -0
- package/runtime/codex/bin/observe-context.sh +14 -0
- package/runtime/codex/bin/onboarding.sh +6 -0
- package/runtime/codex/bin/person.py +4 -0
- package/runtime/codex/bin/person.sh +43 -10
- package/runtime/codex/bin/pi-render-spec.mjs +140 -0
- package/runtime/codex/bin/post-update.sh +37 -0
- package/runtime/codex/bin/prime-render-spec.mjs +147 -0
- package/runtime/codex/bin/publish-artifact.sh +55 -2
- package/runtime/codex/bin/quest.sh +9 -0
- package/runtime/codex/bin/question.sh +8 -0
- package/runtime/codex/bin/research-ingest.sh +7 -0
- package/runtime/codex/bin/restore-owned-skills.sh +67 -0
- package/runtime/codex/bin/retrieval_eval.py +385 -0
- package/runtime/codex/bin/runtime-identity.sh +70 -0
- package/runtime/codex/bin/runtime-upgrade.sh +43 -0
- package/runtime/codex/bin/scroll.sh +9 -0
- package/runtime/codex/bin/search.sh +231 -195
- package/runtime/codex/bin/settings.sh +174 -5
- package/runtime/codex/bin/startup-check.sh +136 -0
- package/runtime/codex/bin/telemetry.sh +522 -247
- package/runtime/codex/bin/test-changes.sh +344 -0
- package/runtime/codex/bin/thread.sh +9 -0
- package/runtime/codex/bin/todo.sh +9 -0
- package/runtime/codex/bin/view-render.sh +126 -0
- package/runtime/codex/bin/worktree-create.sh +19 -5
- package/runtime/codex/egregore_runtime/__init__.py +228 -0
- package/runtime/codex/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/codex/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/codex/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/codex/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/codex/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/codex/egregore_runtime/admin_gate.py +102 -0
- package/runtime/codex/egregore_runtime/artifacts.py +523 -0
- package/runtime/codex/egregore_runtime/contracts.py +499 -0
- package/runtime/codex/egregore_runtime/entitlements.py +85 -0
- package/runtime/codex/egregore_runtime/errors.py +10 -0
- package/runtime/codex/egregore_runtime/graph.py +356 -0
- package/runtime/codex/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/codex/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/codex/egregore_runtime/identity.py +734 -0
- package/runtime/codex/egregore_runtime/identity_cli.py +91 -0
- package/runtime/codex/egregore_runtime/ingest.py +575 -0
- package/runtime/codex/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/codex/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/codex/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/codex/egregore_runtime/invitations.py +116 -0
- package/runtime/codex/egregore_runtime/issue_cli.py +305 -0
- package/runtime/codex/egregore_runtime/issues.py +359 -0
- package/runtime/codex/egregore_runtime/knowledge.py +376 -0
- package/runtime/codex/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/codex/egregore_runtime/lifecycle.py +888 -0
- package/runtime/codex/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/codex/egregore_runtime/notification_cli.py +125 -0
- package/runtime/codex/egregore_runtime/notifications.py +230 -0
- package/runtime/codex/egregore_runtime/observe.py +342 -0
- package/runtime/codex/egregore_runtime/onboarding.py +290 -0
- package/runtime/codex/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/codex/egregore_runtime/policy.py +144 -0
- package/runtime/codex/egregore_runtime/profile.py +193 -0
- package/runtime/codex/egregore_runtime/quest_cli.py +216 -0
- package/runtime/codex/egregore_runtime/question_cli.py +180 -0
- package/runtime/codex/egregore_runtime/questions.py +304 -0
- package/runtime/codex/egregore_runtime/quests.py +419 -0
- package/runtime/codex/egregore_runtime/readiness.py +379 -0
- package/runtime/codex/egregore_runtime/research_ingest.py +256 -0
- package/runtime/codex/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/codex/egregore_runtime/runtime.py +464 -0
- package/runtime/codex/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/codex/egregore_runtime/scrolls.py +726 -0
- package/runtime/codex/egregore_runtime/status.py +412 -0
- package/runtime/codex/egregore_runtime/status_cli.py +174 -0
- package/runtime/codex/egregore_runtime/sync.py +218 -0
- package/runtime/codex/egregore_runtime/teamsync.py +139 -0
- package/runtime/codex/egregore_runtime/telemetry.py +640 -0
- package/runtime/codex/egregore_runtime/thread_cli.py +173 -0
- package/runtime/codex/egregore_runtime/threads.py +517 -0
- package/runtime/codex/egregore_runtime/todo_cli.py +142 -0
- package/runtime/codex/egregore_runtime/todos.py +244 -0
- package/runtime/codex/egregore_runtime/upgrade.py +770 -0
- package/runtime/codex/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/codex/egregore_runtime/writeback.py +391 -0
- package/runtime/codex/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/codex/manifest.json +98 -1
- package/runtime/pi/.codex/hooks/search-hint.js +21 -52
- package/runtime/pi/.codex/hooks.json +3 -3
- package/runtime/pi/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/pi/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/pi/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/pi/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/pi/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/pi/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/pi/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/pi/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/pi/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/pi/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/pi/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/pi/.codex/skills/me/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/pi/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/pi/.codex/skills/note/SKILL.md +30 -25
- package/runtime/pi/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/pi/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/pi/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/pi/.codex/skills/save/SKILL.md +2 -2
- package/runtime/pi/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/test/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/pi/.codex/skills/view/SKILL.md +115 -111
- package/runtime/pi/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/pi/.codex/spec-manifest.json +9 -9
- package/runtime/pi/.pi/APPEND_SYSTEM.md +57 -48
- package/runtime/pi/.pi/extensions/egregore.ts +7 -0
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +62 -58
- package/runtime/pi/bin/activity-action.sh +92 -0
- package/runtime/pi/bin/activity-data.sh +12 -233
- package/runtime/pi/bin/agent.sh +84 -100
- package/runtime/pi/bin/artifact-register.sh +164 -0
- package/runtime/pi/bin/artifact-writeback.sh +53 -0
- package/runtime/pi/bin/artifacts.sh +288 -0
- package/runtime/pi/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/pi/bin/capture-run.sh +18 -2
- package/runtime/pi/bin/codex-render-spec.mjs +41 -16
- package/runtime/pi/bin/codex-session-start.sh +14 -4
- package/runtime/pi/bin/codex-skill-render.mjs +9 -7
- package/runtime/pi/bin/corpus_map.py +806 -0
- package/runtime/pi/bin/corpus_survey.py +304 -0
- package/runtime/pi/bin/dashboard-data.sh +11 -171
- package/runtime/pi/bin/github-auth.sh +121 -0
- package/runtime/pi/bin/graph-batch.sh +7 -0
- package/runtime/pi/bin/graph-op.sh +4 -0
- package/runtime/pi/bin/graph-projection.sh +54 -0
- package/runtime/pi/bin/graph-wal.sh +13 -0
- package/runtime/pi/bin/graph.sh +44 -0
- package/runtime/pi/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/pi/bin/handoff-lifecycle.sh +280 -0
- package/runtime/pi/bin/handoff-preview.sh +169 -0
- package/runtime/pi/bin/handoff-run.sh +42 -26
- package/runtime/pi/bin/ingest-graph.sh +6 -0
- package/runtime/pi/bin/ingest-item.sh +10 -0
- package/runtime/pi/bin/ingest.sh +59 -30
- package/runtime/pi/bin/invite.sh +6 -0
- package/runtime/pi/bin/issue.sh +10 -0
- package/runtime/pi/bin/knowledge.sh +10 -0
- package/runtime/pi/bin/lib/config.sh +20 -0
- package/runtime/pi/bin/lib/context.sh +46 -25
- package/runtime/pi/bin/lib/git-sync.sh +70 -6
- package/runtime/pi/bin/lib/greeting.sh +34 -5
- package/runtime/pi/bin/lib/handoff-meta.sh +97 -0
- package/runtime/pi/bin/lib/worktree-links.sh +6 -0
- package/runtime/pi/bin/node-run.sh +42 -0
- package/runtime/pi/bin/notification.sh +6 -0
- package/runtime/pi/bin/observe-context.sh +14 -0
- package/runtime/pi/bin/onboarding.sh +6 -0
- package/runtime/pi/bin/person.py +4 -0
- package/runtime/pi/bin/person.sh +43 -10
- package/runtime/pi/bin/pi-observe-context.mjs +93 -0
- package/runtime/pi/bin/pi-product-workflows.mjs +1 -1
- package/runtime/pi/bin/pi-render-spec.mjs +1 -1
- package/runtime/pi/bin/post-update.sh +37 -0
- package/runtime/pi/bin/prime-render-spec.mjs +147 -0
- package/runtime/pi/bin/publish-artifact.sh +55 -2
- package/runtime/pi/bin/quest.sh +9 -0
- package/runtime/pi/bin/question.sh +8 -0
- package/runtime/pi/bin/research-ingest.sh +7 -0
- package/runtime/pi/bin/restore-owned-skills.sh +67 -0
- package/runtime/pi/bin/retrieval_eval.py +385 -0
- package/runtime/pi/bin/runtime-identity.sh +70 -0
- package/runtime/pi/bin/runtime-upgrade.sh +43 -0
- package/runtime/pi/bin/scroll.sh +9 -0
- package/runtime/pi/bin/search.sh +231 -195
- package/runtime/pi/bin/settings.sh +174 -5
- package/runtime/pi/bin/startup-check.sh +136 -0
- package/runtime/pi/bin/telemetry.sh +522 -247
- package/runtime/pi/bin/test-changes.sh +344 -0
- package/runtime/pi/bin/thread.sh +9 -0
- package/runtime/pi/bin/todo.sh +9 -0
- package/runtime/pi/bin/view-render.sh +126 -0
- package/runtime/pi/bin/worktree-create.sh +19 -5
- package/runtime/pi/egregore_runtime/__init__.py +228 -0
- package/runtime/pi/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/pi/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/pi/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/pi/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/pi/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/pi/egregore_runtime/admin_gate.py +102 -0
- package/runtime/pi/egregore_runtime/artifacts.py +523 -0
- package/runtime/pi/egregore_runtime/contracts.py +499 -0
- package/runtime/pi/egregore_runtime/entitlements.py +85 -0
- package/runtime/pi/egregore_runtime/errors.py +10 -0
- package/runtime/pi/egregore_runtime/graph.py +356 -0
- package/runtime/pi/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/pi/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/pi/egregore_runtime/identity.py +734 -0
- package/runtime/pi/egregore_runtime/identity_cli.py +91 -0
- package/runtime/pi/egregore_runtime/ingest.py +575 -0
- package/runtime/pi/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/pi/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/pi/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/pi/egregore_runtime/invitations.py +116 -0
- package/runtime/pi/egregore_runtime/issue_cli.py +305 -0
- package/runtime/pi/egregore_runtime/issues.py +359 -0
- package/runtime/pi/egregore_runtime/knowledge.py +376 -0
- package/runtime/pi/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/pi/egregore_runtime/lifecycle.py +888 -0
- package/runtime/pi/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/pi/egregore_runtime/notification_cli.py +125 -0
- package/runtime/pi/egregore_runtime/notifications.py +230 -0
- package/runtime/pi/egregore_runtime/observe.py +342 -0
- package/runtime/pi/egregore_runtime/onboarding.py +290 -0
- package/runtime/pi/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/pi/egregore_runtime/policy.py +144 -0
- package/runtime/pi/egregore_runtime/profile.py +193 -0
- package/runtime/pi/egregore_runtime/quest_cli.py +216 -0
- package/runtime/pi/egregore_runtime/question_cli.py +180 -0
- package/runtime/pi/egregore_runtime/questions.py +304 -0
- package/runtime/pi/egregore_runtime/quests.py +419 -0
- package/runtime/pi/egregore_runtime/readiness.py +379 -0
- package/runtime/pi/egregore_runtime/research_ingest.py +256 -0
- package/runtime/pi/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/pi/egregore_runtime/runtime.py +464 -0
- package/runtime/pi/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/pi/egregore_runtime/scrolls.py +726 -0
- package/runtime/pi/egregore_runtime/status.py +412 -0
- package/runtime/pi/egregore_runtime/status_cli.py +174 -0
- package/runtime/pi/egregore_runtime/sync.py +218 -0
- package/runtime/pi/egregore_runtime/teamsync.py +139 -0
- package/runtime/pi/egregore_runtime/telemetry.py +640 -0
- package/runtime/pi/egregore_runtime/thread_cli.py +173 -0
- package/runtime/pi/egregore_runtime/threads.py +517 -0
- package/runtime/pi/egregore_runtime/todo_cli.py +142 -0
- package/runtime/pi/egregore_runtime/todos.py +244 -0
- package/runtime/pi/egregore_runtime/upgrade.py +770 -0
- package/runtime/pi/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/pi/egregore_runtime/writeback.py +391 -0
- package/runtime/pi/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/pi/manifest.json +98 -1
- package/runtime/prime/.codex/hooks/search-hint.js +21 -52
- package/runtime/prime/.codex/hooks.json +3 -3
- package/runtime/prime/.codex/skills/activity/SKILL.md +23 -66
- package/runtime/prime/.codex/skills/announce/SKILL.md +27 -50
- package/runtime/prime/.codex/skills/archive/SKILL.md +21 -36
- package/runtime/prime/.codex/skills/checkup/SKILL.md +77 -36
- package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/dashboard/SKILL.md +17 -47
- package/runtime/prime/.codex/skills/handoff/SKILL.md +84 -133
- package/runtime/prime/.codex/skills/harvest/SKILL.md +32 -117
- package/runtime/prime/.codex/skills/ingest/SKILL.md +47 -25
- package/runtime/prime/.codex/skills/ingest-user-interview/SKILL.md +18 -36
- package/runtime/prime/.codex/skills/ingest-user-interview/references/analysis-contract.md +42 -0
- package/runtime/prime/.codex/skills/invite/SKILL.md +21 -35
- package/runtime/prime/.codex/skills/issue/SKILL.md +60 -41
- package/runtime/prime/.codex/skills/me/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/meeting/SKILL.md +16 -36
- package/runtime/prime/.codex/skills/meeting/references/analysis-contract.md +48 -0
- package/runtime/prime/.codex/skills/note/SKILL.md +30 -25
- package/runtime/prime/.codex/skills/onboarding/SKILL.md +36 -41
- package/runtime/prime/.codex/skills/pull/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/quest/SKILL.md +27 -66
- package/runtime/prime/.codex/skills/reflect/SKILL.md +22 -36
- package/runtime/prime/.codex/skills/save/SKILL.md +2 -2
- package/runtime/prime/.codex/skills/telemetry/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/test/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/tutorial/SKILL.md +40 -41
- package/runtime/prime/.codex/skills/view/SKILL.md +115 -111
- package/runtime/prime/.codex/skills/wrap/SKILL.md +45 -41
- package/runtime/prime/.codex/spec-manifest.json +9 -9
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +57 -48
- package/runtime/prime/.prime/agent/extensions/egregore.ts +7 -0
- package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
- package/runtime/prime/AGENTS.md +62 -58
- package/runtime/prime/bin/activity-action.sh +92 -0
- package/runtime/prime/bin/activity-data.sh +12 -233
- package/runtime/prime/bin/agent.sh +84 -100
- package/runtime/prime/bin/artifact-register.sh +164 -0
- package/runtime/prime/bin/artifact-writeback.sh +53 -0
- package/runtime/prime/bin/artifacts.sh +288 -0
- package/runtime/prime/bin/build-sealed-dataroom.mjs +722 -0
- package/runtime/prime/bin/capture-run.sh +18 -2
- package/runtime/prime/bin/codex-render-spec.mjs +41 -16
- package/runtime/prime/bin/codex-session-start.sh +14 -4
- package/runtime/prime/bin/codex-skill-render.mjs +9 -7
- package/runtime/prime/bin/corpus_map.py +806 -0
- package/runtime/prime/bin/corpus_survey.py +304 -0
- package/runtime/prime/bin/dashboard-data.sh +11 -171
- package/runtime/prime/bin/github-auth.sh +121 -0
- package/runtime/prime/bin/graph-batch.sh +7 -0
- package/runtime/prime/bin/graph-op.sh +4 -0
- package/runtime/prime/bin/graph-projection.sh +54 -0
- package/runtime/prime/bin/graph-wal.sh +13 -0
- package/runtime/prime/bin/graph.sh +44 -0
- package/runtime/prime/bin/handoff-lifecycle-job.sh +146 -0
- package/runtime/prime/bin/handoff-lifecycle.sh +280 -0
- package/runtime/prime/bin/handoff-preview.sh +169 -0
- package/runtime/prime/bin/handoff-run.sh +42 -26
- package/runtime/prime/bin/ingest-graph.sh +6 -0
- package/runtime/prime/bin/ingest-item.sh +10 -0
- package/runtime/prime/bin/ingest.sh +59 -30
- package/runtime/prime/bin/invite.sh +6 -0
- package/runtime/prime/bin/issue.sh +10 -0
- package/runtime/prime/bin/knowledge.sh +10 -0
- package/runtime/prime/bin/lib/config.sh +20 -0
- package/runtime/prime/bin/lib/context.sh +46 -25
- package/runtime/prime/bin/lib/git-sync.sh +70 -6
- package/runtime/prime/bin/lib/greeting.sh +34 -5
- package/runtime/prime/bin/lib/handoff-meta.sh +97 -0
- package/runtime/prime/bin/lib/worktree-links.sh +6 -0
- package/runtime/prime/bin/node-run.sh +42 -0
- package/runtime/prime/bin/notification.sh +6 -0
- package/runtime/prime/bin/observe-context.sh +14 -0
- package/runtime/prime/bin/onboarding.sh +6 -0
- package/runtime/prime/bin/person.py +4 -0
- package/runtime/prime/bin/person.sh +43 -10
- package/runtime/prime/bin/pi-observe-context.mjs +93 -0
- package/runtime/prime/bin/pi-product-workflows.mjs +1 -1
- package/runtime/prime/bin/pi-render-spec.mjs +140 -0
- package/runtime/prime/bin/post-update.sh +37 -0
- package/runtime/prime/bin/prime-render-spec.mjs +1 -1
- package/runtime/prime/bin/publish-artifact.sh +55 -2
- package/runtime/prime/bin/quest.sh +9 -0
- package/runtime/prime/bin/question.sh +8 -0
- package/runtime/prime/bin/research-ingest.sh +7 -0
- package/runtime/prime/bin/restore-owned-skills.sh +67 -0
- package/runtime/prime/bin/retrieval_eval.py +385 -0
- package/runtime/prime/bin/runtime-identity.sh +70 -0
- package/runtime/prime/bin/runtime-upgrade.sh +43 -0
- package/runtime/prime/bin/scroll.sh +9 -0
- package/runtime/prime/bin/search.sh +231 -195
- package/runtime/prime/bin/settings.sh +174 -5
- package/runtime/prime/bin/startup-check.sh +136 -0
- package/runtime/prime/bin/telemetry.sh +522 -247
- package/runtime/prime/bin/test-changes.sh +344 -0
- package/runtime/prime/bin/thread.sh +9 -0
- package/runtime/prime/bin/todo.sh +9 -0
- package/runtime/prime/bin/view-render.sh +126 -0
- package/runtime/prime/bin/worktree-create.sh +19 -5
- package/runtime/prime/egregore_runtime/__init__.py +228 -0
- package/runtime/prime/egregore_runtime/adapters/__init__.py +5 -0
- package/runtime/prime/egregore_runtime/adapters/invitation.py +237 -0
- package/runtime/prime/egregore_runtime/adapters/notification.py +59 -0
- package/runtime/prime/egregore_runtime/adapters/qmd.py +1701 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_cli.py +210 -0
- package/runtime/prime/egregore_runtime/adapters/qmd_embed_worker.py +59 -0
- package/runtime/prime/egregore_runtime/admin_gate.py +102 -0
- package/runtime/prime/egregore_runtime/artifacts.py +523 -0
- package/runtime/prime/egregore_runtime/contracts.py +499 -0
- package/runtime/prime/egregore_runtime/entitlements.py +85 -0
- package/runtime/prime/egregore_runtime/errors.py +10 -0
- package/runtime/prime/egregore_runtime/graph.py +356 -0
- package/runtime/prime/egregore_runtime/handoff_lookup.py +196 -0
- package/runtime/prime/egregore_runtime/harness_cli.py +1221 -0
- package/runtime/prime/egregore_runtime/identity.py +734 -0
- package/runtime/prime/egregore_runtime/identity_cli.py +91 -0
- package/runtime/prime/egregore_runtime/ingest.py +575 -0
- package/runtime/prime/egregore_runtime/ingest_cli.py +254 -0
- package/runtime/prime/egregore_runtime/ingest_index_cli.py +147 -0
- package/runtime/prime/egregore_runtime/invitation_cli.py +51 -0
- package/runtime/prime/egregore_runtime/invitations.py +116 -0
- package/runtime/prime/egregore_runtime/issue_cli.py +305 -0
- package/runtime/prime/egregore_runtime/issues.py +359 -0
- package/runtime/prime/egregore_runtime/knowledge.py +376 -0
- package/runtime/prime/egregore_runtime/knowledge_cli.py +173 -0
- package/runtime/prime/egregore_runtime/lifecycle.py +888 -0
- package/runtime/prime/egregore_runtime/lifecycle_cli.py +269 -0
- package/runtime/prime/egregore_runtime/notification_cli.py +125 -0
- package/runtime/prime/egregore_runtime/notifications.py +230 -0
- package/runtime/prime/egregore_runtime/observe.py +342 -0
- package/runtime/prime/egregore_runtime/onboarding.py +290 -0
- package/runtime/prime/egregore_runtime/onboarding_cli.py +110 -0
- package/runtime/prime/egregore_runtime/policy.py +144 -0
- package/runtime/prime/egregore_runtime/profile.py +193 -0
- package/runtime/prime/egregore_runtime/quest_cli.py +216 -0
- package/runtime/prime/egregore_runtime/question_cli.py +180 -0
- package/runtime/prime/egregore_runtime/questions.py +304 -0
- package/runtime/prime/egregore_runtime/quests.py +419 -0
- package/runtime/prime/egregore_runtime/readiness.py +379 -0
- package/runtime/prime/egregore_runtime/research_ingest.py +256 -0
- package/runtime/prime/egregore_runtime/research_ingest_cli.py +44 -0
- package/runtime/prime/egregore_runtime/runtime.py +464 -0
- package/runtime/prime/egregore_runtime/scroll_cli.py +185 -0
- package/runtime/prime/egregore_runtime/scrolls.py +726 -0
- package/runtime/prime/egregore_runtime/status.py +412 -0
- package/runtime/prime/egregore_runtime/status_cli.py +174 -0
- package/runtime/prime/egregore_runtime/sync.py +218 -0
- package/runtime/prime/egregore_runtime/teamsync.py +139 -0
- package/runtime/prime/egregore_runtime/telemetry.py +640 -0
- package/runtime/prime/egregore_runtime/thread_cli.py +173 -0
- package/runtime/prime/egregore_runtime/threads.py +517 -0
- package/runtime/prime/egregore_runtime/todo_cli.py +142 -0
- package/runtime/prime/egregore_runtime/todos.py +244 -0
- package/runtime/prime/egregore_runtime/upgrade.py +770 -0
- package/runtime/prime/egregore_runtime/upgrade_worker.py +53 -0
- package/runtime/prime/egregore_runtime/writeback.py +391 -0
- package/runtime/prime/egregore_runtime/writeback_cli.py +114 -0
- package/runtime/prime/manifest.json +98 -1
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dark-mode
|
|
3
|
+
description: "Use when authoring or modifying browser-rendered visual output: HTML, CSS, React SSR, artifact templates, markdown renderers, design tokens, themes, or composed pages. Do not invoke for an ordinary /view render—the checked-in renderer already owns its theme contract. The load-bearing rule is that theme-sensitive colors must be emitted as `var(--token)`, never resolved inline hex."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dark Mode
|
|
7
|
+
|
|
8
|
+
## Voice Complex
|
|
9
|
+
|
|
10
|
+
This skill governs BROWSER VISUAL RENDERING — warm palette, CSS token system, theme behavior. The warm-brown base (#1D1611) and terracotta accent (#D4875A) are the visual expression of the same warmth that runs through all Egregore registers.
|
|
11
|
+
Shared aesthetic: voice-bedrock (`.claude/rules/voice-bedrock.md`).
|
|
12
|
+
For terminal rendering: `tui-design` skill.
|
|
13
|
+
For product copy in rendered pages: `product-voice` skill.
|
|
14
|
+
For prose content in rendered pages: `egregore-voice` skill.
|
|
15
|
+
|
|
16
|
+
This skill is a behavioral constraint system for Egregore visual output. It exists to stop the most common failure mode before it happens: an otherwise correct dark palette being defeated by SSR-emitted inline styles.
|
|
17
|
+
|
|
18
|
+
## When to invoke
|
|
19
|
+
|
|
20
|
+
User says: "dark mode", "theme toggle", "color system", "card surface", "make this work in dark mode", or any request to generate or modify browser-rendered visual output (HTML, CSS, React SSR, Egregore artifacts, design tokens)
|
|
21
|
+
Not this: TUI terminal output → `tui-design` · plain markdown files with no styled HTML
|
|
22
|
+
|
|
23
|
+
## The Bitter Lesson
|
|
24
|
+
|
|
25
|
+
**If React SSR renders `style="color:#2A2A2A"`, dark mode loses.** CSS variable overrides only work when the rendered value is itself a variable reference. If a color must adapt across themes, emit `var(--token)` at the render site. Not in comments. Not in a later stylesheet. In the actual rendered style.
|
|
26
|
+
|
|
27
|
+
Treat this as a hard constraint:
|
|
28
|
+
|
|
29
|
+
1. Every theme-sensitive color in CSS or inline `style` props must use `var(--token)`.
|
|
30
|
+
2. Theme state lives on `<html data-theme="...">`.
|
|
31
|
+
3. Theme restoration happens before paint, in `<head>`.
|
|
32
|
+
|
|
33
|
+
Everything else is secondary.
|
|
34
|
+
|
|
35
|
+
## When To Invoke
|
|
36
|
+
|
|
37
|
+
- Generating standalone HTML
|
|
38
|
+
- Building or editing React SSR output
|
|
39
|
+
- Writing CSS for Egregore artifacts
|
|
40
|
+
- Modifying markdown renderers that emit inline styles
|
|
41
|
+
- Adding a theme toggle
|
|
42
|
+
- Extending the design system with dark surfaces
|
|
43
|
+
- Producing any browser-rendered visual artifact
|
|
44
|
+
|
|
45
|
+
## Not This
|
|
46
|
+
|
|
47
|
+
- An ordinary deterministic `/view` render; the checked-in renderer already
|
|
48
|
+
owns and tests its theme contract
|
|
49
|
+
- TUI terminal output; use `/tui-design`
|
|
50
|
+
- Plain markdown files that do not render styled HTML
|
|
51
|
+
- Backend or CLI code with no visual surface
|
|
52
|
+
- Non-rendered config changes unrelated to color or theme behavior
|
|
53
|
+
|
|
54
|
+
## The Egregore Dark Palette
|
|
55
|
+
|
|
56
|
+
The palette stays warm. The base dark background is `#1D1611`, not pure black. Accent colors stay the same in both modes because terracotta and muted blue already survive the transition cleanly.
|
|
57
|
+
|
|
58
|
+
### Core CSS Variables
|
|
59
|
+
|
|
60
|
+
| Token | Light | Dark | Role |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| `--cream` | `#F5F2ED` | `#1D1611` | Page background; inverted selection text in dark |
|
|
63
|
+
| `--black` | `#16100B` | `rgba(255, 255, 255, 0.92)` | Primary text, titles, completed badges |
|
|
64
|
+
| `--dark` | `#2A2A2A` | `rgba(255, 255, 255, 0.75)` | Body text, secondary copy, blocked badge fill |
|
|
65
|
+
| `--border` | `#E0D8CC` | `rgba(255, 255, 255, 0.06)` | Rules, card borders, checkbox outlines |
|
|
66
|
+
| `--muted` | `#8a8578` | `rgba(255, 255, 255, 0.50)` | Metadata, labels, de-emphasized text |
|
|
67
|
+
| `--warm-gray` | `#d4cfc5` | `rgba(255, 255, 255, 0.30)` | Tertiary marks, dim text, faint structure |
|
|
68
|
+
| `--terminal-bg` | `#1D1611` | `#161210` | Code blocks and terminal surfaces |
|
|
69
|
+
|
|
70
|
+
### Dark-Only Surface Helpers
|
|
71
|
+
|
|
72
|
+
Use these when a component needs separation beyond the base variable set. The current artifacts shell uses `--card-bg` and `--code-bg`; `--elevated-bg` and `--strong-border` come from the same shipped token palette and are the right extensions when extra depth is needed.
|
|
73
|
+
|
|
74
|
+
| Token | Light Fallback | Dark | Role |
|
|
75
|
+
|---|---|---|---|
|
|
76
|
+
| `--card-bg` | `#FFFFFF` | `#241E19` | Cards, pills, theme toggle background |
|
|
77
|
+
| `--code-bg` | `rgba(59, 45, 33, 0.06)` | `rgba(212, 135, 90, 0.08)` | Inline code background |
|
|
78
|
+
| `--elevated-bg` | `#FFFFFF` | `#2A231D` | Raised panels or overlays above cards |
|
|
79
|
+
| `--strong-border` | `#d4cfc5` | `rgba(255, 255, 255, 0.10)` | Emphasized borders when `--border` is too faint |
|
|
80
|
+
|
|
81
|
+
### Palette Rules
|
|
82
|
+
|
|
83
|
+
- Warm character first: dark surfaces are brown-black, not blue-black and not pure black.
|
|
84
|
+
- Text opacity hierarchy is fixed: `0.92` primary, `0.75` secondary, `0.50` muted, `0.30` dim.
|
|
85
|
+
- `--terracotta` stays `#D4875A` in both modes.
|
|
86
|
+
- `--blue-muted` stays `#7B9DB7` in both modes.
|
|
87
|
+
- Selection inverts: terracotta highlight remains, but dark mode switches the selected text to `#1D1611`.
|
|
88
|
+
|
|
89
|
+
## Anti-Patterns
|
|
90
|
+
|
|
91
|
+
| Pattern | Why It Breaks | Instead |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| `style={{ color: colors.black }}` | React resolves `colors.black` to a hex during SSR, so dark CSS cannot override it later | `style={{ color: 'var(--black)' }}` or a class that resolves to `var(--black)` |
|
|
94
|
+
| `style={{ color: colors.muted }}` in markdown or components | Same SSR trap, just less obvious because muted copy often escapes review | Emit `style={{ color: 'var(--muted)' }}` |
|
|
95
|
+
| `background: white` on cards | The card stays white in dark mode and blows out contrast | `background: var(--card-bg, white)` with a dark override on `[data-theme="dark"]` |
|
|
96
|
+
| `border-bottom: 1px solid rgba(224, 216, 204, 0.5)` | You hardcoded a light border into a supposedly themeable component | `border-bottom: 1px solid var(--border)` or `var(--strong-border, var(--border))` |
|
|
97
|
+
| `#000000` or `#111111` for dark backgrounds | Cold, dead black clashes with Egregore's warm substrate | Use `#1D1611` or `var(--cream)` once dark mode remaps it |
|
|
98
|
+
| `opacity: 0.5` on already-colored text | Multiplies contrast unpredictably and usually makes dark text too faint | Use the precomputed text tokens: `var(--muted)` or `var(--warm-gray)` |
|
|
99
|
+
| `@media (prefers-color-scheme: dark)` as the only mechanism | No manual override, no persistence, no explicit state | Use a three-state `light / auto / dark` system |
|
|
100
|
+
| Separate `.dark-*` classes for every component | Duplicates the design system and drifts fast | Override variables once under `[data-theme="dark"]` and keep component styles shared |
|
|
101
|
+
| Putting theme state on `body` or a wrapper div | Inconsistent scope; portals, overlays, and SSR shells can fall out of sync | Put `data-theme` on `<html>` |
|
|
102
|
+
| Restoring the saved theme after the page renders | Causes a flash of the wrong theme | Apply the saved theme in a blocking `<head>` script before paint |
|
|
103
|
+
| Converting CSS files to variables but leaving inline `colors.*` references behind | Mixed models create false confidence; one stray inline color is enough to break dark mode | Grep every render path for `colors.` and hardcoded hex in inline styles, then replace with `var(--token)` |
|
|
104
|
+
|
|
105
|
+
## Signature Patterns
|
|
106
|
+
|
|
107
|
+
1. Variable-first inline styles. Inline styles are allowed only when they emit CSS variables, never resolved palette values.
|
|
108
|
+
2. `data-theme` on `<html>`. No `body.dark`, no component-local theme root.
|
|
109
|
+
3. Three-state theme toggle. Support `light`, `auto`, and `dark`, with persistence.
|
|
110
|
+
4. Auto resolves OS preference first, then local-clock fallback. If the system exposes no preference, dark runs from `19:00` to `07:00`.
|
|
111
|
+
5. No-flash initialization. Restore theme state in `<head>` before anything visible paints.
|
|
112
|
+
6. Card elevation through background lightness, not shadow stacks. In dark mode, depth comes from surface contrast.
|
|
113
|
+
7. Accent colors stay stable. Terracotta and muted blue do not get separate dark variants unless there is a proven contrast failure.
|
|
114
|
+
8. Selection highlight inversion. The highlight stays terracotta; selected text flips to the dark background color.
|
|
115
|
+
|
|
116
|
+
## Context Modes
|
|
117
|
+
|
|
118
|
+
### Egregore Artifacts (React SSR)
|
|
119
|
+
|
|
120
|
+
- Start from `packages/egregore-artifacts/lib/shell.js`, `markdown.js`, `components.js`, and `tokens.js`.
|
|
121
|
+
- In render functions, replace `colors.black`, `colors.muted`, `colors.dark`, and similar inline values with `'var(--black)'`, `'var(--muted)'`, `'var(--dark)'`, and so on.
|
|
122
|
+
- Keep structural values such as spacing, font families, and dimensions in JS as normal. The rule is specifically about theme-sensitive colors.
|
|
123
|
+
- Put the dark variable remap in the shell, not on individual components.
|
|
124
|
+
|
|
125
|
+
### Standalone HTML
|
|
126
|
+
|
|
127
|
+
- Emit a full `:root` block plus a `[data-theme="dark"]` override block.
|
|
128
|
+
- Put the theme restore script in `<head>` before visible markup.
|
|
129
|
+
- Mount the toggle in fixed position and hide it in print.
|
|
130
|
+
- Use CSS variable strings in any inline HTML styles you generate.
|
|
131
|
+
|
|
132
|
+
### Tailwind CSS
|
|
133
|
+
|
|
134
|
+
- Configure `darkMode: ['selector', '[data-theme=\"dark\"]']`.
|
|
135
|
+
- Keep the root selector on `<html>`.
|
|
136
|
+
- Prefer CSS custom properties for brand tokens, then map Tailwind utilities to those variables.
|
|
137
|
+
- Do not sneak theme-sensitive hex colors into JSX `style` props just because the rest of the page uses Tailwind.
|
|
138
|
+
|
|
139
|
+
### Vanilla CSS
|
|
140
|
+
|
|
141
|
+
- Define light tokens in `:root`.
|
|
142
|
+
- Override only variables under `[data-theme="dark"]`.
|
|
143
|
+
- Component rules should read like `color: var(--black)` and `border-color: var(--border)`.
|
|
144
|
+
|
|
145
|
+
### Email HTML
|
|
146
|
+
|
|
147
|
+
- This is the one context where `@media (prefers-color-scheme: dark)` with `!important` is correct.
|
|
148
|
+
- Do not build a JS toggle for email.
|
|
149
|
+
- Accept that support is partial and optimize for legibility, not full parity.
|
|
150
|
+
|
|
151
|
+
## Calibration Examples
|
|
152
|
+
|
|
153
|
+
### 1. React Component Color Reference
|
|
154
|
+
|
|
155
|
+
**Off target**
|
|
156
|
+
|
|
157
|
+
```js
|
|
158
|
+
h('span', { style: { color: colors.muted, fontSize: '13px' } }, `(${author})`)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**On point**
|
|
162
|
+
|
|
163
|
+
```js
|
|
164
|
+
h('span', { style: { color: 'var(--muted)', fontSize: '13px' } }, `(${author})`)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Why: the first version serializes to a fixed hex during SSR. The second survives theme remapping.
|
|
168
|
+
|
|
169
|
+
### 2. Card Background And Elevation
|
|
170
|
+
|
|
171
|
+
**Off target**
|
|
172
|
+
|
|
173
|
+
```css
|
|
174
|
+
.card {
|
|
175
|
+
background: white;
|
|
176
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.24);
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**On point**
|
|
181
|
+
|
|
182
|
+
```css
|
|
183
|
+
.card {
|
|
184
|
+
background: var(--card-bg, white);
|
|
185
|
+
border: 1px solid var(--border);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
[data-theme="dark"] .card {
|
|
189
|
+
--card-bg: #241E19;
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Why: dark separation comes from a warmer surface step, not a generic shadow preset.
|
|
194
|
+
|
|
195
|
+
### 3. Code Block In A Markdown Renderer
|
|
196
|
+
|
|
197
|
+
**Off target**
|
|
198
|
+
|
|
199
|
+
```js
|
|
200
|
+
h('code', {
|
|
201
|
+
style: {
|
|
202
|
+
background: 'rgba(59, 45, 33, 0.06)',
|
|
203
|
+
color: colors.black,
|
|
204
|
+
padding: '2px 5px',
|
|
205
|
+
},
|
|
206
|
+
}, text)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**On point**
|
|
210
|
+
|
|
211
|
+
```js
|
|
212
|
+
h('code', {
|
|
213
|
+
className: 'eg-code',
|
|
214
|
+
}, text)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
```css
|
|
218
|
+
.eg-code {
|
|
219
|
+
background: var(--code-bg, rgba(59, 45, 33, 0.06));
|
|
220
|
+
color: var(--black);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
[data-theme="dark"] .eg-code {
|
|
224
|
+
--code-bg: rgba(212, 135, 90, 0.08);
|
|
225
|
+
color: var(--terracotta);
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Why: inline code needs a dedicated surface token in dark mode; a light-only rgba wash will disappear.
|
|
230
|
+
|
|
231
|
+
## Toggle Reference Implementation
|
|
232
|
+
|
|
233
|
+
This is the canonical Egregore pattern: one HTML attribute, one variable override block, one small engine. Keep the structure; adapt only if the host environment forces it.
|
|
234
|
+
|
|
235
|
+
### JS Engine
|
|
236
|
+
|
|
237
|
+
```html
|
|
238
|
+
<script>
|
|
239
|
+
(function() {
|
|
240
|
+
var MODES = ['light', 'auto', 'dark'];
|
|
241
|
+
var ICONS = ['\u2600', '\u25D0', '\u263D'];
|
|
242
|
+
var LABELS = ['light', 'auto', 'dark'];
|
|
243
|
+
|
|
244
|
+
function resolveAuto() {
|
|
245
|
+
if (window.matchMedia('(prefers-color-scheme: dark)').matches) return 'dark';
|
|
246
|
+
if (window.matchMedia('(prefers-color-scheme: light)').matches) return 'light';
|
|
247
|
+
var h = new Date().getHours();
|
|
248
|
+
return (h >= 19 || h < 7) ? 'dark' : 'light';
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function applyTheme(mode) {
|
|
252
|
+
var resolved = mode === 'auto' ? resolveAuto() : mode;
|
|
253
|
+
document.documentElement.setAttribute('data-theme', resolved);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function updateToggle(mode) {
|
|
257
|
+
var idx = MODES.indexOf(mode);
|
|
258
|
+
var btn = document.querySelector('.eg-theme-toggle');
|
|
259
|
+
if (!btn) return;
|
|
260
|
+
btn.querySelector('.eg-t-icon').textContent = ICONS[idx];
|
|
261
|
+
btn.querySelector('.eg-t-label').textContent = LABELS[idx];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
var saved = localStorage.getItem('eg-theme-mode') || 'auto';
|
|
265
|
+
applyTheme(saved);
|
|
266
|
+
|
|
267
|
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function() {
|
|
268
|
+
if ((localStorage.getItem('eg-theme-mode') || 'auto') === 'auto') applyTheme('auto');
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
window.__egTheme = {
|
|
272
|
+
cycle: function() {
|
|
273
|
+
var cur = localStorage.getItem('eg-theme-mode') || 'auto';
|
|
274
|
+
var next = MODES[(MODES.indexOf(cur) + 1) % 3];
|
|
275
|
+
localStorage.setItem('eg-theme-mode', next);
|
|
276
|
+
applyTheme(next);
|
|
277
|
+
updateToggle(next);
|
|
278
|
+
},
|
|
279
|
+
init: function() { updateToggle(saved); }
|
|
280
|
+
};
|
|
281
|
+
})();
|
|
282
|
+
</script>
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### CSS Shell
|
|
286
|
+
|
|
287
|
+
```css
|
|
288
|
+
:root {
|
|
289
|
+
--cream: #F5F2ED;
|
|
290
|
+
--black: #16100B;
|
|
291
|
+
--dark: #2A2A2A;
|
|
292
|
+
--border: #E0D8CC;
|
|
293
|
+
--muted: #8a8578;
|
|
294
|
+
--warm-gray: #d4cfc5;
|
|
295
|
+
--terminal-bg: #1D1611;
|
|
296
|
+
--terracotta: #D4875A;
|
|
297
|
+
--blue-muted: #7B9DB7;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
[data-theme="dark"] {
|
|
301
|
+
--cream: #1D1611;
|
|
302
|
+
--black: rgba(255, 255, 255, 0.92);
|
|
303
|
+
--dark: rgba(255, 255, 255, 0.75);
|
|
304
|
+
--border: rgba(255, 255, 255, 0.06);
|
|
305
|
+
--muted: rgba(255, 255, 255, 0.50);
|
|
306
|
+
--warm-gray: rgba(255, 255, 255, 0.30);
|
|
307
|
+
--terminal-bg: #161210;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
::selection { background: var(--terracotta); color: var(--cream); }
|
|
311
|
+
[data-theme="dark"] ::selection { color: #1D1611; }
|
|
312
|
+
|
|
313
|
+
.eg-theme-toggle {
|
|
314
|
+
position: fixed;
|
|
315
|
+
top: 1.25rem;
|
|
316
|
+
right: 1.25rem;
|
|
317
|
+
width: 36px;
|
|
318
|
+
height: 36px;
|
|
319
|
+
border-radius: 50px;
|
|
320
|
+
border: 1px solid var(--border);
|
|
321
|
+
background: var(--card-bg, white);
|
|
322
|
+
cursor: pointer;
|
|
323
|
+
display: flex;
|
|
324
|
+
align-items: center;
|
|
325
|
+
justify-content: center;
|
|
326
|
+
font-size: 15px;
|
|
327
|
+
line-height: 1;
|
|
328
|
+
transition: background 0.2s, border-color 0.2s, width 0.2s;
|
|
329
|
+
z-index: 100;
|
|
330
|
+
padding: 0;
|
|
331
|
+
gap: 6px;
|
|
332
|
+
overflow: hidden;
|
|
333
|
+
}
|
|
334
|
+
.eg-theme-toggle:hover {
|
|
335
|
+
border-color: var(--terracotta);
|
|
336
|
+
width: 92px;
|
|
337
|
+
padding: 0 12px;
|
|
338
|
+
}
|
|
339
|
+
[data-theme="dark"] .eg-theme-toggle { --card-bg: #241E19; }
|
|
340
|
+
.eg-theme-toggle .eg-t-icon { flex-shrink: 0; }
|
|
341
|
+
.eg-theme-toggle .eg-t-label {
|
|
342
|
+
font-family: var(--font-mono);
|
|
343
|
+
font-size: 10px;
|
|
344
|
+
letter-spacing: 0.04em;
|
|
345
|
+
color: var(--muted);
|
|
346
|
+
white-space: nowrap;
|
|
347
|
+
width: 0;
|
|
348
|
+
overflow: hidden;
|
|
349
|
+
transition: width 0.2s, opacity 0.2s;
|
|
350
|
+
opacity: 0;
|
|
351
|
+
}
|
|
352
|
+
.eg-theme-toggle:hover .eg-t-label { width: 32px; opacity: 1; }
|
|
353
|
+
|
|
354
|
+
@media print {
|
|
355
|
+
body { background: white; }
|
|
356
|
+
.eg-artifact { padding: 1rem; max-width: none; }
|
|
357
|
+
.eg-card { break-inside: avoid; }
|
|
358
|
+
.eg-theme-toggle { display: none; }
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
@media (max-width: 640px) {
|
|
362
|
+
.eg-artifact { padding: 2rem 1.25rem 3rem; }
|
|
363
|
+
.eg-title { font-size: 28px; }
|
|
364
|
+
.eg-section-title { font-size: 20px; }
|
|
365
|
+
.eg-meta-row { gap: 10px; }
|
|
366
|
+
.eg-theme-toggle { top: 0.75rem; right: 0.75rem; width: 32px; height: 32px; font-size: 14px; }
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### HTML Hookup
|
|
371
|
+
|
|
372
|
+
```html
|
|
373
|
+
<html lang="en" data-theme="light">
|
|
374
|
+
<head>
|
|
375
|
+
<!-- theme restore script goes here -->
|
|
376
|
+
</head>
|
|
377
|
+
<body>
|
|
378
|
+
<button class="eg-theme-toggle" aria-label="Toggle theme" onclick="__egTheme.cycle()">
|
|
379
|
+
<span class="eg-t-icon">◐</span>
|
|
380
|
+
<span class="eg-t-label">auto</span>
|
|
381
|
+
</button>
|
|
382
|
+
<script>__egTheme.init();</script>
|
|
383
|
+
</body>
|
|
384
|
+
</html>
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
## Pre-Ship Checklist
|
|
388
|
+
|
|
389
|
+
1. Grep for hardcoded hex colors and `colors.` references in render paths that emit inline styles.
|
|
390
|
+
2. Verify every theme-sensitive inline color is a `var(--token)` string.
|
|
391
|
+
3. Verify both `:root` and `[data-theme="dark"]` blocks exist.
|
|
392
|
+
4. Verify `data-theme` is set on `<html>`, not `body`.
|
|
393
|
+
5. Verify the saved theme is restored in `<head>` before visible markup paints.
|
|
394
|
+
6. Verify the toggle cycles `light -> auto -> dark` and persists to `localStorage`.
|
|
395
|
+
7. Verify auto mode follows OS preference first and local time second.
|
|
396
|
+
8. Verify no surface uses pure black or a cool gray dark background.
|
|
397
|
+
9. Verify cards, code, and elevated surfaces separate by warm lightness steps rather than shadow spam.
|
|
398
|
+
10. Verify selection, print, and mobile behavior still work after the theme system is added.
|
|
399
|
+
|
|
400
|
+
## Reference Files
|
|
401
|
+
|
|
402
|
+
Read these conditionally, depending on the task:
|
|
403
|
+
|
|
404
|
+
- `packages/egregore-artifacts/lib/shell.js` for the canonical shell structure, variable overrides, and toggle wiring.
|
|
405
|
+
- `packages/egregore-artifacts/lib/tokens.js` for the shipped light and dark token values.
|
|
406
|
+
- `packages/egregore-artifacts/lib/markdown.js` for the inline-style `var(--token)` conversion pattern.
|
|
407
|
+
- `packages/egregore-artifacts/lib/components.js` for component-level inline style usage that must stay variable-first.
|
|
408
|
+
- `packages/design-system/tokens.css` for the broader design-system token vocabulary.
|
|
409
|
+
|
|
410
|
+
If the current checkout does not yet contain the merged dark-mode implementation in those artifact files, inspect the shipped worktree copies under `.claude/worktrees/soul-document-design/packages/egregore-artifacts/lib/`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dashboard
|
|
3
|
+
description: "Explicit personal-status surface for /dashboard or a direct request for the whole personal overview. Do not use it to find or resume one specific prior handoff, project, or work thread; that is semantic organizational recall through Runtime/QMD."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dashboard
|
|
7
|
+
|
|
8
|
+
Use this bounded status card only when the user explicitly asks for Dashboard
|
|
9
|
+
or the whole personal overview. A request to return to one earlier piece of
|
|
10
|
+
work must use attached `EGREGORE_ORG_CONTEXT_V1` evidence or exactly one Search
|
|
11
|
+
workflow query when that evidence is absent. Never use Dashboard as discovery
|
|
12
|
+
fallback.
|
|
13
|
+
|
|
14
|
+
Render the personal view immediately. The renderer's stdout IS the product
|
|
15
|
+
card: it is fully visible the moment rendering finishes, and it must appear
|
|
16
|
+
exactly once in the conversation. Never copy, regenerate, summarize, or
|
|
17
|
+
repeat the card — or any of its rows — in your reply; add nothing beyond an
|
|
18
|
+
answer to something the user separately asked.
|
|
19
|
+
|
|
20
|
+
Map the requested range to `P1D`, `P7D`, `P30D`, or `P365D`, then fetch and
|
|
21
|
+
render exactly one authorized Runtime snapshot:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
bash bin/dashboard-data.sh "$TIME_RANGE" 2>/dev/null \
|
|
25
|
+
| bash bin/node-run.sh bin/codex-skill-render.mjs dashboard-card -
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Do not sync repositories, query memory again, or call implementation
|
|
29
|
+
infrastructure directly. The snapshot owns actor resolution,
|
|
30
|
+
authorization, bounds, canonical lifecycle state, and presentation data.
|
|
31
|
+
|
|
32
|
+
Connected enrichment is separate and explicit. Set
|
|
33
|
+
`EGREGORE_STATUS_CONNECTED_ENRICH=1` only when the user requests projected
|
|
34
|
+
Connected status. It is capability/permission gated and cannot replace
|
|
35
|
+
canonical handoffs, questions, quests, todos, sessions, or lifecycle metadata.
|
|
36
|
+
|
|
37
|
+
Never print raw JSON or narrate routine commands. Preserve the shared
|
|
38
|
+
72-column card, omit graph/setup messaging in Local mode, end with `What's
|
|
39
|
+
next?`, and act on the reply in the next turn.
|
|
40
|
+
|
|
41
|
+
## When to invoke
|
|
42
|
+
|
|
43
|
+
Explicit personal-status surface for /dashboard or a direct request for the whole personal overview. Do not use it to find or resume one specific prior handoff, project, or work thread; that is semantic organizational recall through Runtime/QMD.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# REPORT.md — synthesis, presentation, capture
|
|
2
|
+
|
|
3
|
+
What the user sees, what gets saved, and how. The engine (`RESEARCH.md`) produces a verified claims table + patterns + gaps; this contract turns them into a report.
|
|
4
|
+
|
|
5
|
+
## Pattern pruning (before synthesis)
|
|
6
|
+
|
|
7
|
+
PATTERN ran on pending claims; VERIFY then changed some verdicts. Prune before synthesizing:
|
|
8
|
+
- A pattern whose supporting claims are ALL `killed` → dropped.
|
|
9
|
+
- Some support survives → the pattern's weight caps at the best surviving claim's weight.
|
|
10
|
+
- Support consists only of `downgraded`/`dated` claims → the pattern caps at `secondary`.
|
|
11
|
+
- Bonus-wave claims join a pattern's support only if `verified`/`corrected`.
|
|
12
|
+
|
|
13
|
+
## Synthesis register
|
|
14
|
+
|
|
15
|
+
**Stance, not summary.** 2-4 paragraphs that tell the user something they don't already know — this justifies the compute. If it could have been written from the finding list alone, rewrite it.
|
|
16
|
+
|
|
17
|
+
Address, in whatever order the material demands:
|
|
18
|
+
- **What the answer actually is.** Answer the question first. In cross-ref mode, say plainly how the insight sits: confirmed, contradicted, already known, or genuinely new.
|
|
19
|
+
- **Where the evidence is strong and where it's thin.** Dismiss weak findings explicitly rather than giving everything equal weight.
|
|
20
|
+
- **What's missing.** The insufficiency map is a headline deliverable, not an apology — what the org doesn't know, with the probes that prove it.
|
|
21
|
+
- **One thing to do.** One action that matters most. Everything else is context.
|
|
22
|
+
|
|
23
|
+
**Register: analyst, not critic.** "The memory shows X" — never "the team is failing to Y." No manufactured drama; positive patterns matter as much as tensions. Never adversarial, never patronizing, never coaching verbs ("crystallizing", "emerging", "sensing").
|
|
24
|
+
|
|
25
|
+
Anti-patterns: "This is an interesting question…" (you have nothing to say) · "The findings cluster around…" (describing data, not interpreting it) · "worth watching" (demands action or doesn't).
|
|
26
|
+
|
|
27
|
+
## Derived confidence
|
|
28
|
+
|
|
29
|
+
Never self-reported. Per finding:
|
|
30
|
+
- **high** — verified + ≥3 independent sources (distinct authors OR distinct top-level dirs) + no `dated` demotion
|
|
31
|
+
- **medium** — verified + 2 sources, or any source `dated`/`corrected`
|
|
32
|
+
- **single-source** — always labeled as such, regardless of how convincing the one source is
|
|
33
|
+
|
|
34
|
+
Overall confidence (TUI + frontmatter): **high** = every primary finding is high · **mixed** = findings span levels, or an analyst disagreement survived · **medium** = otherwise.
|
|
35
|
+
|
|
36
|
+
Analyst disagreement is never averaged into a middle confidence — it ships as a finding under Tensions.
|
|
37
|
+
|
|
38
|
+
## Chat presentation (in order)
|
|
39
|
+
|
|
40
|
+
1. **ANSWER** — the synthesis paragraphs.
|
|
41
|
+
2. **FINDINGS** — `◆` primary / `◇` secondary, each with inline `path` citations. Ambient findings go to the report file only.
|
|
42
|
+
3. **TENSIONS & DISAGREEMENTS** — contradictions, drift, supersession; analyst disagreement preserved and named.
|
|
43
|
+
4. **WHAT MEMORY DOESN'T HOLD** — verified gaps + the probes that prove them + nearest adjacent work.
|
|
44
|
+
5. **Provenance footer** — one line: `{N} waves · {N} docs read · {N} cited · {N} claims cut in verification · stopped: {stop_reason}`. `claims cut` counts claim verdicts `killed` only; gap refutations are reported separately (they ADD a doc, they don't cut a claim). Docs found by refuted gaps count in docs read.
|
|
45
|
+
|
|
46
|
+
The **evidence appendix** (per-finding path + excerpt table) goes in the report FILE only — on a deep run it is exactly the terminal wall progressive disclosure forbids.
|
|
47
|
+
|
|
48
|
+
Then the capture gate fires, writeback runs per the verdict, and the **TUI box renders LAST, reflecting the actual outcome**.
|
|
49
|
+
|
|
50
|
+
## TUI box
|
|
51
|
+
|
|
52
|
+
72-char width, exactly 4 line patterns (top `┌`+70×`─`+`┐` · separator `├`+70×`─`+`┤` · content `│`+2 spaces+text padded to 68+`│` · bottom `└`+70×`─`+`┘`). No sub-boxes. Sigil: `◈ DEEP REFLECT` (the faceted eye — looking inward with structure); header right: `{author} · {Mon DD}`.
|
|
53
|
+
|
|
54
|
+
Body lines: `Q: {question truncated ~55 chars}` · `◆ N primary · ◇ N secondary findings · confidence: {overall}` · `{N} waves · {N} docs read · {N} cited · {N} claims cut in verification`.
|
|
55
|
+
|
|
56
|
+
Footer after a separator — pick by ACTUAL outcome:
|
|
57
|
+
- Saved, connected, graph writes succeeded: `✓ Saved · graphed · pushed`
|
|
58
|
+
- Saved, local mode — or connected with a failed/offline graph write (add one line: `graph write failed — file is canonical` on capture-time failure): `✓ Saved · pushed`
|
|
59
|
+
- Skipped: `◦ Not saved — ledger at .egregore/research-runs/`
|
|
60
|
+
|
|
61
|
+
Then `Visible in /activity.` (saved runs only). The word "graphed" appears ONLY when the artifact upsert call actually returned success.
|
|
62
|
+
|
|
63
|
+
**Output the TUI box directly as a code block. Do not narrate or explain it. DO NOT count characters — approximate padding is fine.**
|
|
64
|
+
|
|
65
|
+
## Capture gate
|
|
66
|
+
|
|
67
|
+
One AskUserQuestion, always (unless `--no-capture`, which implies Skip):
|
|
68
|
+
|
|
69
|
+
- **Save** (default) — write the report, graph it (connected), push
|
|
70
|
+
- **Edit first** — apply the user's edits, then Save
|
|
71
|
+
- **File follow-ups** — for each verified gap: append a 2-3 line stub (`### Open: {gap}` / `Probes that came up empty: {probes}` / `From research run {run-id}`) to the matched quest file — matched = the `--quest` slug if given, else the quest lead most cited in the gap's source claims; no match → offer creating a quest. Gaps about what people think → draft a `/harvest` brief instead. Then re-offer Save/Skip for the report itself (this follow-up branch lives INSIDE the capture gate's dialogue budget)
|
|
72
|
+
- **Skip** — nothing touches `memory/` or the graph; the local ledger is the only residue
|
|
73
|
+
|
|
74
|
+
`--brief` and probe-collapsed sparse runs default to terminal-only output with a two-option **Save / Skip** gate; Save writes the standard file. This keeps `memory/knowledge/research/` from silting with one-hop lookups.
|
|
75
|
+
|
|
76
|
+
## Report file
|
|
77
|
+
|
|
78
|
+
Path: `memory/knowledge/research/{YYYY-MM-DD}-{author}-{slug}.md` (slug ≤50 chars; collision → append 4-char hex). Write via Bash heredoc (`cat > memory/... << 'EOF'`) — memory/ is a symlink outside the project.
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
---
|
|
82
|
+
title: {question, statement-cased}
|
|
83
|
+
date: {YYYY-MM-DD}
|
|
84
|
+
author: {author}
|
|
85
|
+
type: research
|
|
86
|
+
question: "{the question as researched}"
|
|
87
|
+
mode: {question|crossref}
|
|
88
|
+
band: {brief|standard|deep}
|
|
89
|
+
stop_reason: {answered|saturated|dry|budget|sparse}
|
|
90
|
+
confidence: {high|medium|mixed}
|
|
91
|
+
waves: {N}
|
|
92
|
+
docs_read: {N}
|
|
93
|
+
claims_killed: {N}
|
|
94
|
+
run_id: {dr-...}
|
|
95
|
+
builds_on: [{prior research report paths, if compounding fired}]
|
|
96
|
+
artifacts_consulted: [{every path read}]
|
|
97
|
+
artifacts_cited: [{paths that survived into findings}]
|
|
98
|
+
null_regions:
|
|
99
|
+
- gap: "{verified gap}"
|
|
100
|
+
probes: ["{probe}", "{probe}"]
|
|
101
|
+
quests: [{--quest slug or dominant quest leads}]
|
|
102
|
+
topics: [{3-5 topics}]
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
{ANSWER — the synthesis, verbatim from chat}
|
|
106
|
+
|
|
107
|
+
## Findings
|
|
108
|
+
{findings with citations, including ambient}
|
|
109
|
+
|
|
110
|
+
## Tensions
|
|
111
|
+
## What memory doesn't hold
|
|
112
|
+
## Evidence appendix
|
|
113
|
+
| Finding | Source | Excerpt |
|
|
114
|
+
{every surviving claim}
|
|
115
|
+
|
|
116
|
+
## Provenance
|
|
117
|
+
{waves, probes run, agents spawned, kill/correction counts, stop reason, run id}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
`null_regions` is the machine-readable face of "What memory doesn't hold" — future runs' compounding step re-audits it (`RESEARCH.md` §Compounding).
|
|
121
|
+
|
|
122
|
+
## Writeback (Save path)
|
|
123
|
+
|
|
124
|
+
1. **Dedupe probe**: `grep -ril "{question terms}" memory/knowledge/research/ | head -3` (same mechanism as compounding) — a near-duplicate prior report surfaces as "extends {path}?"; on confirm, stamp `builds_on` and continue.
|
|
125
|
+
2. **Write the file** (heredoc, above). Progress: `[1/3] ✓ Writing knowledge/research/{date}-{slug}.md`.
|
|
126
|
+
3. **Graph writes — CONNECTED MODE ONLY, all non-fatal** (`2>/dev/null || true`; the file is the canonical record). Do NOT use `bin/graph-op.sh register-artifact` — that op is for published hosted artifacts (requires a URL, sets `published: true`, never sets `filePath`). Instead MERGE the artifact the way `bin/sync-graph.sh` does for knowledge files:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
bash bin/graph.sh query "MERGE (a:Artifact {id: \$id}) SET a.title = \$title, a.type = 'research', a.topics = \$topics, a.filePath = \$filePath, a.created = coalesce(a.created, datetime()) WITH a MATCH (p:Person {name: \$author}) MERGE (a)-[:CONTRIBUTED_BY]->(p) RETURN a.id" '{"id": "{filename stem}", "title": "...", "topics": [...], "filePath": "knowledge/research/{filename}", "author": "{author}"}' 2>/dev/null || true
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`id` = filename stem; `filePath` makes the node reachable by search enrichment and future hop rails. (`sync-graph.sh` also scans `knowledge/research/` on `/save`, so a failed write self-heals on the next save.) Then, same non-fatality:
|
|
133
|
+
- `PART_OF` → Quest when `--quest` given or quest leads dominated the ledger
|
|
134
|
+
- `BUILDS_ON` → each prior report in `builds_on`
|
|
135
|
+
- **Cross-ref mode, verified claims only**: edges from the new report's Artifact node to each cited artifact — `RELATES_TO {signal_type: relation, confidence, weight, run_id}` for `supports`/`duplicates`/`depends-on`, `TENSION_WITH {signal_type: relation, confidence, weight, run_id}` for `contradicts`/`supersedes` — skeptic-surviving edges only, so the cross-reference web grows with quality control
|
|
136
|
+
- Progress: `[2/3] ✓ Indexed in knowledge graph ({N} edges)` on success; on failure print nothing here and use the local footer + failure note (omit this line entirely in local mode)
|
|
137
|
+
4. **Auto-save**: full `/save` flow — commit memory repo, push to main (pull-rebase-push with retry); commit any egregore-repo changes, push working branch + PR to develop. Progress: `[3/3] ✓ Auto-saved`.
|
|
138
|
+
5. **Telemetry** per `SKILL.md` §Telemetry.
|
|
139
|
+
|
|
140
|
+
Optional follow-up offer after save: "Render as a `/view` artifact?" — reuses the existing artifact pipeline; never build a bespoke one here.
|