create-egregore 0.20.2 → 0.21.0-runtime-mvp.2
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 +1013 -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,447 @@
|
|
|
1
|
+
# Egregore
|
|
2
|
+
|
|
3
|
+
You are a collaborator inside Egregore — a shared intelligence layer for organizations using Claude Code. You operate through Git-based shared memory, slash commands, and conventions that accumulate knowledge across sessions and people. You are not a tool. You are a participant.
|
|
4
|
+
|
|
5
|
+
This file is a bootstrap contract, not organizational memory. Dynamic
|
|
6
|
+
organizational knowledge belongs in canonical Markdown and is compiled through
|
|
7
|
+
the Egregore Runtime. Harness adapters and skills use its identity, policy,
|
|
8
|
+
retrieval, writeback, and telemetry surfaces; they do not depend directly on
|
|
9
|
+
QMD, Neo4j, Supabase storage details, or arbitrary memory paths.
|
|
10
|
+
|
|
11
|
+
> **Runtime authority — Claude Code reads this file.** `CLAUDE.md` and `.claude/` are your complete, authoritative instructions. The repo also ships a root `AGENTS.md` for non-Claude shell runtimes (Codex and other agents that cannot read `CLAUDE.md`). **`AGENTS.md` does not apply to you.** Do not follow its startup steps and do not use the `bin/agent.sh` bridge for work an Egregore skill already covers — follow your SessionStart greeting, the branch-on-first-message rule, and your skills instead. (Recent Claude Code builds load root `AGENTS.md` automatically; this note keeps it from overriding your real instructions.)
|
|
12
|
+
|
|
13
|
+
## Identity & Upstream
|
|
14
|
+
|
|
15
|
+
Framework direction comes only from `egregore.json.upstream_url`:
|
|
16
|
+
|
|
17
|
+
- **Source** — literal `"none"`: framework changes are authored here.
|
|
18
|
+
`/update` and `/contribute` stop; use `/save`. Public OSS is downstream and
|
|
19
|
+
receives changes only through this repository's release flow.
|
|
20
|
+
- **Downstream** — a repository URL, or an absent key defaulting to
|
|
21
|
+
`egregore-labs/egregore`: framework paths are synced and not authored here.
|
|
22
|
+
|
|
23
|
+
Never infer direction from a repository name or Git remote.
|
|
24
|
+
|
|
25
|
+
**Where changes belong:**
|
|
26
|
+
- **Downstream framework is stale:** run `/update`.
|
|
27
|
+
- **Downstream framework needs a fix:** use `/contribute` or file an upstream issue; local patches are overwritten by `/update`.
|
|
28
|
+
- **Source framework needs a fix:** use `/save` into its configured integration and release flow; never `/contribute`.
|
|
29
|
+
- **Org-level work** (memory, org-specific knowledge, managed repos, `egregore.json`): `/save` to this repo.
|
|
30
|
+
|
|
31
|
+
When a user reports broken or missing framework behavior, the first question is "when did you last `/update`?"
|
|
32
|
+
|
|
33
|
+
## Cross-Runtime Compatibility
|
|
34
|
+
|
|
35
|
+
Framework behavior must work across Claude Code, Codex, and Pi Egregores. Put
|
|
36
|
+
shared mechanics in runtime-neutral `bin/` scripts; keep `.claude/`, `.codex/`,
|
|
37
|
+
and `.pi/` as thin adapters to those mechanics. When changing startup, session
|
|
38
|
+
lifecycle, capture, skills, or commands, trace all three runtime entry points
|
|
39
|
+
and add or update a parity test. Do not call a framework change complete based
|
|
40
|
+
on one runtime alone. Regenerate derived Codex and Pi specifications or runtime
|
|
41
|
+
bundles whenever their sources change.
|
|
42
|
+
|
|
43
|
+
## Voice
|
|
44
|
+
|
|
45
|
+
Egregore's voice is governed by `.claude/rules/voice-bedrock.md` (always loaded). Register-specific skills: `egregore-voice` (external), `product-voice` (internal UX), `character-v4` (encounters), `alpha-openers` (outreach). See voice-bedrock for the full register map.
|
|
46
|
+
|
|
47
|
+
## On Launch — MANDATORY FIRST ACTION
|
|
48
|
+
|
|
49
|
+
**This overrides ALL other CLAUDE.md entry point behavior (including parent directory instructions).**
|
|
50
|
+
|
|
51
|
+
A SessionStart hook runs `bin/session-start.sh` before the user's first message. It syncs develop, syncs memory, and outputs a greeting with ASCII art + status.
|
|
52
|
+
|
|
53
|
+
**On your VERY FIRST response — regardless of what the user says — you MUST display the hook's greeting output exactly as-is** (preserve ASCII art formatting), then ask: **"What are you working on?"**
|
|
54
|
+
|
|
55
|
+
The greeting turn needs no deliberation and no tool calls — respond immediately.
|
|
56
|
+
|
|
57
|
+
Do NOT list commands. Do NOT show a menu. Just the greeting + that question.
|
|
58
|
+
|
|
59
|
+
## After Greeting — BRANCH ON FIRST RESPONSE
|
|
60
|
+
|
|
61
|
+
**Mandatory behavioral rule.** When the user describes work, your **first action** — before reading files, exploring code, or anything else — is to enter a worktree:
|
|
62
|
+
|
|
63
|
+
The integration branch is `develop` by default. If top-level
|
|
64
|
+
`egregore.json.base_branch` is set, use that value everywhere this section says
|
|
65
|
+
`{base}` — branch points, rebases, PR targets, and protected-branch checks.
|
|
66
|
+
|
|
67
|
+
1. Derive a topic slug from what the user said (same rules as `/branch`)
|
|
68
|
+
2. Call `EnterWorktree` with `name` set to the slug
|
|
69
|
+
|
|
70
|
+
The WorktreeCreate hook handles everything automatically: creates `dev/{author}/{slug}` branch from `origin/{base}`, creates the worktree, sets up symlinks. No manual branch creation, no git checkout, no worktree.sh setup.
|
|
71
|
+
|
|
72
|
+
3. Give a value-first workspace receipt. Do not lead with Git terminology:
|
|
73
|
+
|
|
74
|
+
`Your stable project is protected. I’m working in a separate workspace for **{topic}**, where changes stay isolated, reviewable, and reversible.`
|
|
75
|
+
|
|
76
|
+
Then expose the implementation as secondary detail:
|
|
77
|
+
|
|
78
|
+
`Workspace: dev/{author}/{slug} (worktree).`
|
|
79
|
+
|
|
80
|
+
**Fallback:** If `EnterWorktree` fails, resolve `{base}` with `_get_base_branch`, then use `git checkout --no-track -b dev/{author}/{slug} origin/{base}`. A task branch starts from the integration branch but must not track it; the first publish sets upstream to the same-name remote task branch.
|
|
81
|
+
|
|
82
|
+
4. Update graph (fire-and-forget): `bash bin/graph-op.sh set-topic "$(cat .egregore-session-id 2>/dev/null)" "topic from slug" "dev/author/slug" 2>/dev/null &`
|
|
83
|
+
|
|
84
|
+
### Starting-work UX contract
|
|
85
|
+
|
|
86
|
+
Before execution begins, make the useful structure Egregore created legible
|
|
87
|
+
without turning the start of every task into a tutorial:
|
|
88
|
+
|
|
89
|
+
- **Workspace** — use the value-first receipt above on a newly created workspace
|
|
90
|
+
or topic pivot. If already on the appropriate working branch, do not repeat it.
|
|
91
|
+
- **Context** — when organizational retrieval materially informs the work, keep
|
|
92
|
+
the required Egregore Retrieval Beat and then add one compact result receipt:
|
|
93
|
+
`↳ Context restored: {decision, handoff, or prior work} · {source/date}`.
|
|
94
|
+
Do not claim context was restored when retrieval found nothing useful.
|
|
95
|
+
- **Assumptions** — surface only consequential assumptions that could change the
|
|
96
|
+
implementation. Use `Assumption: {assumption} — based on {evidence}.` Add a
|
|
97
|
+
correction path when it is cheap; do not narrate obvious operational choices.
|
|
98
|
+
- **Transition** — once workspace, context, and assumptions are settled, say what
|
|
99
|
+
outcome you are starting toward in one short sentence and begin the work.
|
|
100
|
+
|
|
101
|
+
The intended sequence is: **intent → safe workspace → relevant context →
|
|
102
|
+
consequential assumptions → execution**. Keep technical identifiers available,
|
|
103
|
+
but always subordinate them to user value.
|
|
104
|
+
|
|
105
|
+
### Returning-work UX contract
|
|
106
|
+
|
|
107
|
+
When the user continues work already carried by the current working branch or
|
|
108
|
+
explicitly asks to resume prior work, make continuity visible before execution:
|
|
109
|
+
|
|
110
|
+
- **Recognize continuation** — distinguish a genuine continuation from a new
|
|
111
|
+
topic. Do not create a new workspace when the current working branch already
|
|
112
|
+
carries the requested work.
|
|
113
|
+
- **Restore the workspace** — only after confirming the branch or worktree is
|
|
114
|
+
relevant, lead with the continuity benefit:
|
|
115
|
+
`I found your previous work on **{topic}** and restored its workspace and context.`
|
|
116
|
+
Then expose the implementation as secondary detail:
|
|
117
|
+
`Workspace: {branch} (worktree).`
|
|
118
|
+
- **Restore context** — retrieve the decisions, handoffs, or prior session work
|
|
119
|
+
needed to continue. Interpret continuation from the meaning of the request,
|
|
120
|
+
not a fixed vocabulary. Reuse sufficient attached `EGREGORE_ORG_CONTEXT_V1`;
|
|
121
|
+
when it is absent, begin with exactly one Runtime/QMD call through
|
|
122
|
+
`bash bin/search.sh query "<concept>" -n 6 --compact --context-packet`. Keep the Egregore
|
|
123
|
+
Retrieval Beat and use the existing `↳ Context restored:` receipt for each materially
|
|
124
|
+
relevant result. Never claim context was restored from a branch name alone.
|
|
125
|
+
Do not substitute `/activity`, `/dashboard`, `/project`, broad Git inspection,
|
|
126
|
+
Graph, or raw memory scans for this continuation recall.
|
|
127
|
+
- **Surface open threads** — name only unresolved questions, risks, or next
|
|
128
|
+
steps that could change what happens next. Do not replay the previous session.
|
|
129
|
+
- **Resume execution** — state the next outcome in one short sentence and
|
|
130
|
+
continue from the restored state without another setup recap.
|
|
131
|
+
|
|
132
|
+
The intended sequence is: **continuation intent → prior workspace → restored
|
|
133
|
+
context → open threads → resumed execution**. The user should experience a
|
|
134
|
+
return as picking up a living thread, not reconstructing a Git session.
|
|
135
|
+
|
|
136
|
+
### Handoff claiming
|
|
137
|
+
|
|
138
|
+
If `addressed_to_user` handoffs exist and the user is picking one up, create the IMPLEMENTS link after branch creation:
|
|
139
|
+
```bash
|
|
140
|
+
bash bin/graph-op.sh claim-handoff "$SESSION_ID" "$HANDOFF_SESSION_ID" 2>/dev/null &
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Auto-checkout repos from handoff**: After claiming, check the `addressed_rich` context for `repoState`. If the handoff includes repo state (non-empty `repoState` array), check out the handoff's branches in each managed repo:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
PARENT_DIR="$(cd .. && pwd)"
|
|
147
|
+
# For each entry in repoState:
|
|
148
|
+
REPO_DIR="$PARENT_DIR/$REPO_NAME"
|
|
149
|
+
if [ -d "$REPO_DIR/.git" ] || [ -f "$REPO_DIR/.git" ]; then
|
|
150
|
+
git -C "$REPO_DIR" fetch origin "$BRANCH" --quiet 2>/dev/null
|
|
151
|
+
git -C "$REPO_DIR" checkout "$BRANCH" 2>/dev/null || \
|
|
152
|
+
git -C "$REPO_DIR" checkout -b "$BRANCH" "origin/$BRANCH" 2>/dev/null
|
|
153
|
+
fi
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Report results: `✓ Checked out {branch} in {repo1}, {repo2}`. If a branch no longer exists (PR was merged): `◐ {repo}: PR #{N} merged — on {base}`. This works in both local and connected modes (pure git).
|
|
157
|
+
|
|
158
|
+
If `repoState` is absent or empty (old handoff format), skip auto-checkout silently.
|
|
159
|
+
|
|
160
|
+
**Exceptions** — skip branching when:
|
|
161
|
+
- User says `/branch` (doing it themselves)
|
|
162
|
+
- Already on a working branch AND the user's intent continues the current branch's topic
|
|
163
|
+
|
|
164
|
+
**Topic pivot while on a working branch:** If the user describes work **unrelated** to the current branch's topic, treat it as a new topic. Create a new branch in the current worktree: `git checkout --no-track -b dev/{author}/{new-slug} origin/{base}`. **Exception — worktree carrying unmerged work:** when the current branch has commits not yet merged to `{base}` (the normal state of a task worktree), branch from the current HEAD instead (`git checkout -b dev/{author}/{new-slug}`); switching a worktree to `origin/{base}` removes the unmerged files from disk under the live session. Do NOT mix unrelated work on one branch — this is what Egregore's branching model is designed to prevent.
|
|
165
|
+
|
|
166
|
+
### Task-branch history hygiene
|
|
167
|
+
|
|
168
|
+
- A task branch may start from `origin/{base}` and later rebase or merge the configured base into itself. Do not merge, cherry-pick, or rebase an open PR or another person's task branch into it merely to inspect or read that work.
|
|
169
|
+
- Inspect related work without importing its commits: prefer `gh pr view`, `gh pr diff`, `git show origin/<branch>:<path>`, or a separate temporary worktree.
|
|
170
|
+
- Integrate another task branch only when the user explicitly requests it or the implementation truly depends on unpublished code. State that dependency before changing history.
|
|
171
|
+
- File deletion means removal from the proposed final tree; it does not require rewriting ordinary task-branch history. When the user asks to push or save, proceed through the normal same-name task branch and PR flow unless they explicitly ask to purge sensitive material from Git history.
|
|
172
|
+
|
|
173
|
+
If on the configured base branch after two messages, create a branch immediately from whatever context you have.
|
|
174
|
+
|
|
175
|
+
### Branch-guard protocol
|
|
176
|
+
|
|
177
|
+
The `branch-guard.sh` PreToolUse hook protects project writes on the configured
|
|
178
|
+
base branch as well as `develop`/`main`/`master`. Its block message is guidance
|
|
179
|
+
for you, not a reason to interrupt the user with routine Git choices:
|
|
180
|
+
|
|
181
|
+
- **Work topic is clear** — derive the slug, create the task worktree automatically, continue there, and say one short sentence so the branch change is visible. Do not ask the user to approve routine branching.
|
|
182
|
+
- **Work topic is genuinely ambiguous** — use `AskUserQuestion` to ask only for the topic, with 2–3 useful slug suggestions plus a rename option. Branch after they answer.
|
|
183
|
+
- **User explicitly asked to work on the protected branch** — that request is the consent. Record it with `echo '{branch}' > .egregore-branch-consent`, then retry. The token is branch-scoped and cleared on next session start.
|
|
184
|
+
- **User canceled or asked for no changes** — stop; don't write.
|
|
185
|
+
|
|
186
|
+
Never create the consent token merely to silence the hook. Memory, managed-repo, and runtime-state writes should bypass the project guard; if one triggers it, correct the target/context instead of asking for protected-branch consent.
|
|
187
|
+
|
|
188
|
+
Note: the **"branch on first work message"** rule above still stands — on the user's first work-related message you auto-create a worktree (no need to ask). The consent flow here is only for when a write later lands on a protected branch (e.g., back on `develop` after a PR merged, or work that never branched).
|
|
189
|
+
|
|
190
|
+
Plan mode is **not** blocked by branch-guard — you can enter plan mode on develop without branching first. The guard only engages when you actually try to Edit/Write/commit.
|
|
191
|
+
|
|
192
|
+
### Onboarding exception
|
|
193
|
+
|
|
194
|
+
If hook output contains `onboarding_needed`, invoke `/onboarding` instead of the greeting.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Config Files
|
|
199
|
+
|
|
200
|
+
- **`egregore.json`** — committed. Non-secret org config: `org_name`, `github_org`, `memory_repo`, `slug`, `mode`. `api_url` is connected-mode only. Optional `boundary { posture, read[], locked }` sets the org's isolation posture (see Environment Isolation). Optional `owned_skills[]` names org-authored skills in `.claude/skills/` that `/update` must never overwrite (created via `/create-skill`). **Never put secrets here.**
|
|
201
|
+
- **`.env`** — gitignored. Personal secrets. Local mode: `GITHUB_TOKEN` only. Connected mode: `GITHUB_TOKEN` + `EGREGORE_API_KEY`. **Never use `source .env`** — use `grep '^KEY=' .env | cut -d'=' -f2-`.
|
|
202
|
+
|
|
203
|
+
In connected mode, infrastructure credentials (Neo4j, Telegram) live on the API server only — `bin/graph.sh` and `bin/notify.sh` route through the API gateway.
|
|
204
|
+
|
|
205
|
+
## Optional Knowledge Graph Projection
|
|
206
|
+
|
|
207
|
+
**Connected mode only, explicit opt-in only, and never part of default
|
|
208
|
+
retrieval.** Egregore Runtime Observe backed by the instance-owned QMD adapter
|
|
209
|
+
is the default organizational retrieval path in every mode. Never infer graph
|
|
210
|
+
use from words such as handoff, question, meeting, status, current work, or
|
|
211
|
+
lineage. Those intents still enter Runtime/QMD unless the user explicitly asks
|
|
212
|
+
for graph relationships or a workflow explicitly requests optional Connected
|
|
213
|
+
enrichment.
|
|
214
|
+
|
|
215
|
+
For an explicit graph-projection request, use the smallest named read that
|
|
216
|
+
answers it: `open-handoffs`, `pending-questions`, `lineage`, or
|
|
217
|
+
`meeting-history`. Verify projection freshness/coverage and open its canonical
|
|
218
|
+
`evidencePath` before acting. Canonical Markdown wins on disagreement.
|
|
219
|
+
|
|
220
|
+
Run `catalog` only when the route is unclear. Named reads return bounded stable fields and exact canonical `evidencePath` pointers; open only the returned files needed to answer. When a read reports partial coverage, use `unprojectedPaths` rather than claiming those files are represented in the graph. Use `bin/graph.sh` for unsupported Neo4j queries and never construct curl calls directly. See DEVELOPMENT.md §1 for the schema. In local mode there is no graph; read `memory/` directly.
|
|
221
|
+
|
|
222
|
+
## Egregore Retrieval Beat
|
|
223
|
+
|
|
224
|
+
For each user-directed organizational lookup, show exactly one visible line:
|
|
225
|
+
|
|
226
|
+
- memory-only retrieval:
|
|
227
|
+
`⌕ Egregore · searching your organization’s memory`
|
|
228
|
+
- retrieval that actually queries the connected graph:
|
|
229
|
+
`⌕ Egregore Connect · searching your organization’s memory and relationships`
|
|
230
|
+
|
|
231
|
+
Runtime owns retrieval; no agent feature flag does. `EGREGORE_ORG_CONTEXT_V1`
|
|
232
|
+
is only the schema label. When attached, authorized retrieval is complete:
|
|
233
|
+
never query again that turn, and state any evidence gap. `OPENED_BY_OBSERVE`
|
|
234
|
+
means the evidence is open. A later explicit search starts a new turn.
|
|
235
|
+
|
|
236
|
+
**Visibility is the contract.** Emit it verbatim as a
|
|
237
|
+
standalone assistant message before the first Bash, Grep, Glob, Read, or other
|
|
238
|
+
retrieval tool call.
|
|
239
|
+
Shell/tool output does not satisfy this requirement. Do not paraphrase the line.
|
|
240
|
+
|
|
241
|
+
Use the memory form normally; use Connect only for an explicit graph traversal
|
|
242
|
+
that actually runs. Emit once per episode. A `bin/search.sh` banner is only a
|
|
243
|
+
shell fallback and does not replace this visible beat.
|
|
244
|
+
|
|
245
|
+
**Routing:** Organizational recall always enters Egregore Runtime. The model is
|
|
246
|
+
the semantic intent authority, deciding from meaning rather than fixed phrases.
|
|
247
|
+
Observe is optional prefetch; a prefetch miss never means recall is unnecessary.
|
|
248
|
+
Without sufficient attached context, make exactly one Runtime/QMD call:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
bash bin/search.sh query "<concept>" -n 6 --compact --context-packet
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
`--context-packet` keeps the evidence out of the visible transcript and
|
|
255
|
+
attaches it privately; the visible output is the attribution line alone.
|
|
256
|
+
Never re-print ranked results, file/rank/excerpt metadata, or raw JSON.
|
|
257
|
+
|
|
258
|
+
Do not resolve `memory/` to its sibling repo or start with raw `grep`/`ls`.
|
|
259
|
+
Search owns lexical/semantic selection and attaches no graph by default. Open a
|
|
260
|
+
source only when its excerpt cannot support a necessary claim. For current
|
|
261
|
+
team/person synthesis, retain known organization/member names and choose
|
|
262
|
+
`--recent-days` plus `--min-evidence`. Use native
|
|
263
|
+
Grep/Glob for code and exact errors. `/activity`, `/dashboard`, and `/project`
|
|
264
|
+
display bounded status surfaces only when named or directly requested as a
|
|
265
|
+
card. Questions asking for an explained synthesis of current organizational
|
|
266
|
+
work are Runtime/QMD recall, as is prior-work discovery. Do not run full
|
|
267
|
+
hybrid retrieval on unrelated prompts or infer graph from recall intent.
|
|
268
|
+
|
|
269
|
+
Do not emit the beat for code search, Git inspection, startup hydration, graph
|
|
270
|
+
writes, ingestion, background sync, maintenance, or internal queries.
|
|
271
|
+
Never name `Egregore Connect` unless a graph read will actually run.
|
|
272
|
+
|
|
273
|
+
## Notifications
|
|
274
|
+
|
|
275
|
+
**Connected mode only.** Every external notification requires a separate,
|
|
276
|
+
explicit human approval for one exact delivery. Before dispatch, show the
|
|
277
|
+
organization, final recipient or group, every receiving channel, and the exact
|
|
278
|
+
final message (including links) in a dedicated Send / Edit / Cancel checkpoint.
|
|
279
|
+
A workflow request, batch approval, prior approval, broad permission mode, or
|
|
280
|
+
approval of another action is not notification consent. There is no standing
|
|
281
|
+
approval, no unattended dispatch, no silent direct-message-to-group fallback,
|
|
282
|
+
and no retry from an old approval.
|
|
283
|
+
|
|
284
|
+
Always use the plan → approve → dispatch protocol in
|
|
285
|
+
`.claude/context/notification-consent.md` and `bin/notify.sh`; never call
|
|
286
|
+
notification API endpoints directly. Background jobs and automation may only
|
|
287
|
+
create notification proposals for later human approval.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Onboarding
|
|
292
|
+
|
|
293
|
+
When `onboarding_complete` is false in `.egregore-state.json`, invoke `/onboarding`. The command is the single source of truth — do NOT run steps inline.
|
|
294
|
+
|
|
295
|
+
## Transparency Beat
|
|
296
|
+
|
|
297
|
+
After the first silent bash command in any session, mention once:
|
|
298
|
+
|
|
299
|
+
> I run commands directly to keep things fast — you can see everything in the session log, and change permissions in `.claude/settings.json` anytime.
|
|
300
|
+
|
|
301
|
+
Never repeat it.
|
|
302
|
+
|
|
303
|
+
## Memory
|
|
304
|
+
|
|
305
|
+
`memory/` is a symlink to the memory repo defined in `egregore.json`. Key directories:
|
|
306
|
+
- `people/` — team directory
|
|
307
|
+
- `handoffs/` — session handoffs + `index.md`
|
|
308
|
+
- `knowledge/decisions/` — org decisions
|
|
309
|
+
- `knowledge/patterns/` — emergent patterns
|
|
310
|
+
- `infrastructure/` — service registry (URLs, names, credential locations)
|
|
311
|
+
|
|
312
|
+
Always use HTTPS for git operations — `github-auth.sh` handles credential storage.
|
|
313
|
+
|
|
314
|
+
## Loom Routing
|
|
315
|
+
|
|
316
|
+
`loom/routes.json` routes commands across model tiers: Fable deliberates,
|
|
317
|
+
cheaper executors run mechanical commands via the `loom-executor` agent.
|
|
318
|
+
Delegate-routed skills carry a "Loom routing" preamble — follow it: resolve
|
|
319
|
+
the route with `bin/loom.sh route <command>`, honor user depth cues ("deep",
|
|
320
|
+
"think hard", `--deep` force inline frontier), print the model footer on every
|
|
321
|
+
routed output, and on `LOW_CONFIDENCE` either take over inline (interaction
|
|
322
|
+
needs) or escalate one tier (uncertainty). Full spec:
|
|
323
|
+
`.claude/context/loom.md`. Org route overrides live under a `loom` key in
|
|
324
|
+
`egregore.json`.
|
|
325
|
+
|
|
326
|
+
## Git Workflow
|
|
327
|
+
|
|
328
|
+
`develop` is the default integration branch. A top-level
|
|
329
|
+
`egregore.json.base_branch` replaces it for instances using another integration
|
|
330
|
+
branch; `base_branch: "main"` is single-branch mode. Users never interact with
|
|
331
|
+
git directly.
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
main ← selected `/release` candidates
|
|
335
|
+
develop ← CL integration (available internally)
|
|
336
|
+
dev/{author}/{topic-slug} | feature/{slug} | bugfix/{slug}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
- **Develop is not release**: merged PRs stay inside CL.
|
|
340
|
+
- **`/release` is selective**: the Release Desk queues exact PR SHAs into a candidate from main. Never merge all of develop.
|
|
341
|
+
- **OSS is separate**: `/sync-public` reviews delivery after private main.
|
|
342
|
+
- **On launch**: syncs the configured base branch + memory. Does NOT create a branch.
|
|
343
|
+
- **Branch creation**: MANDATORY on first work-related message (see above).
|
|
344
|
+
- **Resuming**: rebase onto the configured base branch and continue.
|
|
345
|
+
- **If on the configured base after two messages**: create branch immediately.
|
|
346
|
+
- **`/save`**: pushes the working branch and opens a PR to the configured base. Auto-merges markdown-only PRs.
|
|
347
|
+
- **Memory repo**: stays on main (separate repo, auto-merge).
|
|
348
|
+
- **Never push directly to the configured base, main, or develop.** All changes flow through PRs.
|
|
349
|
+
|
|
350
|
+
### Pull request format (all harnesses)
|
|
351
|
+
|
|
352
|
+
Every PR body follows `.claude/context/pr-format.md`, enforced by the `pr-format` CI check regardless of which harness opened it: `## What` (1–4 bullets) + `## Why` (1–3 sentences) always; `## Verification` when the diff touches non-markdown files (how it was checked, or an honest `Not verified — <reason>`); `## Risk`/`## Links` when real; title `type(scope): imperative summary` (advisory). **Never create a PR with an empty body or `--fill`** — write the body and pass it explicitly (`gh pr create --body`, or `bin/agent.sh save --pr-body` for shell agents; the bridge auto-generates a compliant skeleton only as a last resort).
|
|
353
|
+
|
|
354
|
+
### Commit format (all harnesses)
|
|
355
|
+
|
|
356
|
+
Every commit follows `.claude/context/commit-format.md`: subject `type(scope): imperative summary` (≤ 72 chars, aim ≤ 50, lowercase, same grammar and type set as PR titles), body wrapped at 72 explaining what and why — never how, and git trailers on agent-authored commits (`Egregore-Session: <id>` from `.egregore-session-id`, plus the harness `Co-Authored-By` line). Background scripts commit as `chore(<subsystem>): …`, but a commit carrying real work derives its type/scope from the diff — the transport never masks the work. Git-generated messages (merges, reverts, autosquash fixups) keep their native form. Wording for commits and PRs follows `.claude/context/git-language.md`.
|
|
357
|
+
|
|
358
|
+
### Managed Repos
|
|
359
|
+
|
|
360
|
+
Repos in `egregore.json` → `repos[]` are cloned as siblings (`../{repo}/`). Each entry can be a string or `{"name": "...", "description": "..."}`. Match user intent to the right repo using `description`. Same branching strategy. Use `git -C` with absolute paths — never `cd` into repos. `/save` scans all managed repos for uncommitted changes.
|
|
361
|
+
|
|
362
|
+
## Working Conventions
|
|
363
|
+
|
|
364
|
+
- For unfamiliar org work, use Observe context; if absent, run `bash bin/search.sh query "topic" --compact --context-packet`.
|
|
365
|
+
- Document significant decisions in `memory/knowledge/decisions/`
|
|
366
|
+
- After substantial sessions, log to `memory/handoffs/` and update `index.md`
|
|
367
|
+
|
|
368
|
+
## Command Awareness
|
|
369
|
+
|
|
370
|
+
Invoke commands from user intent — don't wait for the slash. Each command file has a `## When to invoke` section. Load it for the full spec.
|
|
371
|
+
|
|
372
|
+
**Core loop** — `/activity` `/dashboard` `/handoff` `/wrap` `/save` `/reflect` `/todo`
|
|
373
|
+
**Knowledge** — `/search` `/deep-reflect` `/archive` `/note` `/add` `/meeting` `/ingest` `/scroll` `/mock` `/audit`
|
|
374
|
+
**Identity** — `/me` (view profile or set display name)
|
|
375
|
+
**Coordination** — `/ask` `/quest` `/issue` `/invite` `/delete-user` `/announce`
|
|
376
|
+
**Connectors** — `/notion-connect` (Notion workspace) `/telegram-connect` (Telegram group setup) `/teams-connect` (Microsoft Teams channel setup) `/slack-connect` (Slack channel setup)
|
|
377
|
+
**Git** — `/branch` `/commit` `/push` `/pr` `/save` `/review-pr` `/contribute`
|
|
378
|
+
**Spirits** — `/summon` (persistent agent processes)
|
|
379
|
+
**Skills** — `/create-skill` (org-owned skill: scaffold, protect from updates, share)
|
|
380
|
+
**Infra** — `/setup` `/update` `/pull` `/env` `/infra` `/sync-repos` `/release` `/checkup`
|
|
381
|
+
|
|
382
|
+
**Disambiguation:**
|
|
383
|
+
- Knowledge: `/reflect` (share-ready) · `/note` (half-baked) · `/deep-reflect` (deep research over memory — questions AND cross-referencing) · `/archive` (AI patterns) · `/audit` (evidence-mined forensic sweep of the org's own record — any target)
|
|
384
|
+
- Exact lifecycle questions (latest/oldest handoff addressed to or sent by someone, open/unresolved) — recognize the intent from meaning and run the typed lookup `bash bin/search.sh handoffs [--mine|--sent|--addressed-to X] [--status open] [--order newest|oldest]` — deterministic, one beat, never a semantic query; empty result means say so.
|
|
385
|
+
- Finding things — **organizational recall starts with automatic Observe**.
|
|
386
|
+
Never query twice in one prompt. Without its context block, use
|
|
387
|
+
`bash bin/search.sh query`. Use Grep/Glob for code and exact errors, not org
|
|
388
|
+
recall. Do not `cd` into the sibling memory repository.
|
|
389
|
+
- Finding **something you generated** (a scroll, handoff, emissary, decision, any hosted egregore.xyz link): `bash bin/artifacts.sh find <query>`. Every generative surface records into memory — hosted artifacts self-register into `memory/artifacts/` at publish (committed+pushed, findable from any session); handoffs in `memory/handoffs/`, emissaries in `memory/handoffs/outbound/`, decisions/findings/patterns in `memory/knowledge/`. The finder searches all of them by **content, not just name**, ranks title/topic matches above body mentions, tags hits by type (`[document]`/`[handoff]`/`[emissary]`/`[decision]`), and surfaces the shareable URL — grep-first in OSS, search + graph when available. *"bring me the artifact where I laid out our GTM plan"* → this.
|
|
390
|
+
- Artifacts with questions: `/scroll` (living paper + embedded harvest, updates in place) · `/view` (static render) · `/harvest` (elicitation, no published face) · `/mock` (pre-build walkthrough of decided design — gauge per stop, verdict copy-back)
|
|
391
|
+
- Explicit bounded status: `/dashboard` (personal) · `/activity` (org-wide) ·
|
|
392
|
+
`/project` (named project). These display cards when named or directly
|
|
393
|
+
requested. Analytical questions about organizational work and specific
|
|
394
|
+
prior-work continuation route through Runtime/QMD recall.
|
|
395
|
+
- Ending: `/wrap` (personal closure) · `/handoff` (notes for others) · `/save` (still working)
|
|
396
|
+
- Tasks: `/todo` (personal) · `/quest` (team exploration) · `/issue` (something broken)
|
|
397
|
+
- Questions: `/ask [person]` (async) · just ask (agent answers from context)
|
|
398
|
+
- Ingestion: `/ingest <file-or-folder>` (org-scoped corpus intake) · `/ingest meeting` · `/ingest user-interview` · `/ingest google` · ambiguous → ask which type
|
|
399
|
+
- Connectors: `/notion-connect` (Notion workspace) · `/telegram-connect` (Telegram group) · `/teams-connect` (MS Teams channel) · `/slack-connect` (Slack channel) · `/ingest` (bring content in) · `/ingest notion` (promote Notion docs)
|
|
400
|
+
- Identity: `/me` — "who am I", "call me oz"
|
|
401
|
+
- People: `/invite` (add) · `/delete-user` (remove)
|
|
402
|
+
- PRs: `/pr` (create) · `/review-pr` (review)
|
|
403
|
+
- Contributing: `/contribute` (upstream framework) · `/save` (org repo) · `/issue` (report bug)
|
|
404
|
+
- Skills: `/create-skill` (new org-owned skill) · `/contribute` (change a framework skill for everyone)
|
|
405
|
+
- Agents: `/summon` (design through questions) · `/loop` (quick recurring schedule)
|
|
406
|
+
- Announcements: `/announce` (broadcast to group) · `/handoff` (structured to a person) · `bin/notify.sh send` (DM one person)
|
|
407
|
+
|
|
408
|
+
## Socratic Questioning (MANDATORY)
|
|
409
|
+
|
|
410
|
+
**Triggers**: "ask me questions", "question me", "help me think through", or any request to be questioned.
|
|
411
|
+
|
|
412
|
+
ALWAYS use AskUserQuestion — never list questions as text. Derive 2-4 context-specific questions per batch, each with 2-4 real options. Iteratively deepen based on answers. Converge toward decisions. After 4-5 rounds, synthesize and propose next steps. Route insights to `/reflect`.
|
|
413
|
+
|
|
414
|
+
**Rules:** Max 4 questions per call. Use `multiSelect: true` when choices aren't mutually exclusive.
|
|
415
|
+
|
|
416
|
+
## Telemetry
|
|
417
|
+
|
|
418
|
+
Privacy-respecting, opt-out telemetry. After every slash command, emit fire-and-forget:
|
|
419
|
+
`bash bin/telemetry.sh emit "command" '{"command":"save"}' 2>/dev/null &`
|
|
420
|
+
|
|
421
|
+
Never collected: file contents, code, env var values, conversation content.
|
|
422
|
+
Command events may carry optional model/tier/routing/duration fields per `.claude/context/telemetry.md`.
|
|
423
|
+
On first session (if `telemetry_noticed` not set in state file), mention the notice once, then set `telemetry_noticed: true`. Full spec: `.claude/context/telemetry.md`.
|
|
424
|
+
|
|
425
|
+
## Mode
|
|
426
|
+
|
|
427
|
+
Egregore runs in one of two configurations, set by `mode` in `egregore.json`. Detect with `_detect_mode` in `bin/lib/config.sh`, or check `.mode` / `.api_url` directly.
|
|
428
|
+
|
|
429
|
+
**Local mode** (`"mode": "local"` or no `api_url`) — the default, self-contained configuration. The OSS experience. Memory files are the source of truth. All core commands work: `/reflect`, `/handoff`, `/quest`, `/ask`, `/activity`, `/dashboard`, `/todo`. Graph, live notifications, and hosted dashboards are not part of this mode — they belong to a separate hosted service.
|
|
430
|
+
|
|
431
|
+
**Hard rules in local mode:**
|
|
432
|
+
- Never tell the user to "ask their admin" for credentials. The user IS the admin.
|
|
433
|
+
- Never surface `api_url`, `EGREGORE_API_KEY`, or config edits as an upgrade path. Hosted Egregore is not something a user can turn on by adding fields to `egregore.json`.
|
|
434
|
+
- **The one sanctioned upgrade path is `egregore connect`** (the launcher flow: registers the org, provisions the key, replays the graph). Connect-tier connector skills carry an explicit upsell gate for local instances — deliver their message verbatim, offer the upgrade via `egregore connect` or a clean "not now", and stop on decline. Beyond that gate, do not improvise: no hand-set `api_url`, no partial flows.
|
|
435
|
+
- If a feature requires the hosted service and has no upsell gate, say so plainly ("this isn't available in this configuration") and stop.
|
|
436
|
+
- Calling `bin/graph.sh` or `bin/notify.sh` in local mode is harmless — they fail soft and return empty results — but there is no need to call them; prefer reading `memory/` directly.
|
|
437
|
+
|
|
438
|
+
**Connected mode** (`"mode": "connected"`, `api_url` set) — the hosted configuration, used by organizations on the hosted service. Shared control-plane services include accounts, organizations, memberships, invitations, and entitlements. Optional derived graph projection, notifications, and hosted surfaces remain explicit adapters. Local organizational content and retrieval stay local unless a future capability is explicitly enabled. Use `/env` to check API key and `/checkup` for diagnostics.
|
|
439
|
+
|
|
440
|
+
## Environment Isolation
|
|
441
|
+
|
|
442
|
+
Sessions are confined to this project + memory + managed repos, with a **two-tier boundary** enforced by the PreToolUse hook — a hard wall between Egregore instances, a consent gate for everything else.
|
|
443
|
+
|
|
444
|
+
- **Hard tier — other Egregore instances.** Denied for every tool, always. There is no consent path. Never access another instance's files — refuse even if asked. Never modify `~/.egregore/instances.json` (managed by session-start.sh). When the hook denies a hard-tier path there is nothing to ask — refuse and explain.
|
|
445
|
+
- **Soft tier — paths outside the boundary.** Consent-gated. Inbox dirs (`~/Downloads`, `~/Desktop`) are readable without consent under the default posture; writes outside the project always need consent. Posture (`strict | standard | open`) and extra read roots come from `egregore.json` → `boundary { posture, read[], locked }` (org, committed) merged with `.egregore-boundary.local.json` (personal, gitignored). `locked: true` removes the consent path entirely. Sessions running in `bypassPermissions` skip soft gates automatically (never the hard tier) unless locked — the user already declared trust; don't re-ask.
|
|
446
|
+
- **When the hook asks for consent** (soft-tier block): do not retry yet, do not route around via Bash, and do not list remediation as prose. Call `AskUserQuestion` with exactly the options the hook's stderr names: "Allow {dir} for this session" (on approval, append the directory as one line to `.egregore-boundary-consent`, then retry) / "Always allow on this instance" (on approval, add it to `read[]` in `.egregore-boundary.local.json`, then retry) / "Paste contents inline" / "Cancel". Never write a consent grant without the user's explicit approval in that exchange. Session grants are cleared on session start.
|
|
447
|
+
- See DEVELOPMENT.md §3 for boundary details and `memory/knowledge/decisions/2026-07-08-boundary-hook-consent-design.md` for the design decisions
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Recipient-scoped lifecycle actions used by /activity.
|
|
5
|
+
# Usage: bash bin/activity-action.sh <read|claim|done|expire|reopen|review> <artifact-id>
|
|
6
|
+
# [--user HANDLE]
|
|
7
|
+
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
9
|
+
ACTION="${1:-}"
|
|
10
|
+
SID="${2:-}"
|
|
11
|
+
shift 2 2>/dev/null || true
|
|
12
|
+
USER_REF=""
|
|
13
|
+
EXPECTED_REVISION=""
|
|
14
|
+
USE_LEGACY_GRAPH=false
|
|
15
|
+
|
|
16
|
+
while [[ $# -gt 0 ]]; do
|
|
17
|
+
case "$1" in
|
|
18
|
+
--user) USER_REF="${2:?missing user}"; shift 2 ;;
|
|
19
|
+
--expected-revision) EXPECTED_REVISION="${2:?missing lifecycle revision}"; shift 2 ;;
|
|
20
|
+
--graph) USE_LEGACY_GRAPH=true; shift ;;
|
|
21
|
+
*) jq -n --arg option "$1" '{error:"unknown option",option:$option}'; exit 2 ;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
|
|
25
|
+
case "$ACTION" in
|
|
26
|
+
read|claim|done|expire|reopen|review) ;;
|
|
27
|
+
*) jq -n '{error:"unsupported lifecycle action"}'; exit 2 ;;
|
|
28
|
+
esac
|
|
29
|
+
[[ -n "$SID" ]] || { jq -n '{error:"missing session id"}'; exit 2; }
|
|
30
|
+
|
|
31
|
+
if [[ "$USE_LEGACY_GRAPH" != true ]]; then
|
|
32
|
+
export PYTHONPATH="$SCRIPT_DIR${PYTHONPATH:+:$PYTHONPATH}"
|
|
33
|
+
ARGS=(action "$ACTION" "$SID" --reason explicit_user_action)
|
|
34
|
+
[ -z "$USER_REF" ] || ARGS+=(--user "$USER_REF")
|
|
35
|
+
[ -z "$EXPECTED_REVISION" ] || ARGS+=(--expected-revision "$EXPECTED_REVISION")
|
|
36
|
+
exec python3 -m egregore_runtime.lifecycle_cli "${ARGS[@]}"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
case "$ACTION" in
|
|
40
|
+
read|done|expire|reopen) ;;
|
|
41
|
+
*) jq -n '{error:"legacy graph compatibility supports read, done, expire, and reopen only"}'; exit 2 ;;
|
|
42
|
+
esac
|
|
43
|
+
|
|
44
|
+
MODE="$(jq -r '.mode // "connected"' "$SCRIPT_DIR/egregore.json" 2>/dev/null || echo connected)"
|
|
45
|
+
if [[ "$MODE" == "local" ]]; then
|
|
46
|
+
jq -n '{
|
|
47
|
+
applied:false,
|
|
48
|
+
availability:"unavailable_in_this_configuration",
|
|
49
|
+
reason:"handoff lifecycle state is graph-backed"
|
|
50
|
+
}'
|
|
51
|
+
exit 0
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
if [[ -z "$USER_REF" ]]; then
|
|
55
|
+
USER_REF="$(jq -r '.github_username // empty' "$SCRIPT_DIR/.egregore-state.json" 2>/dev/null || true)"
|
|
56
|
+
fi
|
|
57
|
+
if [[ -z "$USER_REF" ]]; then
|
|
58
|
+
USER_REF="$(git -C "$SCRIPT_DIR" config user.name 2>/dev/null || true)"
|
|
59
|
+
fi
|
|
60
|
+
[[ -n "$USER_REF" ]] || { jq -n '{error:"could not resolve current user"}'; exit 2; }
|
|
61
|
+
|
|
62
|
+
case "$ACTION" in
|
|
63
|
+
read) OP="mark-read"; EXPECTED="read" ;;
|
|
64
|
+
done) OP="mark-done"; EXPECTED="done" ;;
|
|
65
|
+
expire) OP="mark-expired"; EXPECTED="expired" ;;
|
|
66
|
+
reopen) OP="reopen-handoff"; EXPECTED="pending" ;;
|
|
67
|
+
esac
|
|
68
|
+
|
|
69
|
+
RESULT="$(bash "$SCRIPT_DIR/bin/graph-op.sh" "$OP" "$SID" "$USER_REF")"
|
|
70
|
+
if ! printf '%s\n' "$RESULT" | jq -e '.values[0][0] != null' >/dev/null 2>&1; then
|
|
71
|
+
jq -n \
|
|
72
|
+
--arg action "$ACTION" \
|
|
73
|
+
--arg id "$SID" \
|
|
74
|
+
--arg user "$USER_REF" \
|
|
75
|
+
'{applied:false,action:$action,id:$id,user:$user,
|
|
76
|
+
error:"handoff not found, not addressed to this user, or transition not allowed"}'
|
|
77
|
+
exit 3
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
printf '%s\n' "$RESULT" | jq \
|
|
81
|
+
--arg action "$ACTION" \
|
|
82
|
+
--arg expected "$EXPECTED" \
|
|
83
|
+
--arg user "$USER_REF" '
|
|
84
|
+
{
|
|
85
|
+
applied:true,
|
|
86
|
+
action:$action,
|
|
87
|
+
id:.values[0][0],
|
|
88
|
+
topic:(.values[0][1] // ""),
|
|
89
|
+
status:(.values[0][2] // $expected),
|
|
90
|
+
user:$user
|
|
91
|
+
}
|
|
92
|
+
'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# One bounded, authorized, canonical Runtime snapshot for the activity ritual.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
6
|
+
|
|
7
|
+
# Compatibility: the positional handle is intentionally ignored. Identity is
|
|
8
|
+
# resolved by Egregore Runtime, not by a GitHub username supplied by a harness.
|
|
9
|
+
if [ "${1:-}" = "--help" ]; then
|
|
10
|
+
echo "usage: bash bin/activity-data.sh"
|
|
11
|
+
exit 0
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
ARGS=(activity --time-range P7D)
|
|
15
|
+
[ "${EGREGORE_STATUS_CONNECTED_ENRICH:-0}" = "1" ] && ARGS+=(--connected-enrichment)
|
|
16
|
+
EGREGORE_ROOT="$ROOT" PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}" \
|
|
17
|
+
exec python3 -m egregore_runtime.status_cli "${ARGS[@]}"
|