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,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-pr
|
|
3
|
+
description: "Use when the user says 'review PR', 'is this PR safe to merge', or 'audit PR' — runs a CTO-level 10-point review checklist on one or more pull requests. Not creating a PR (/pr) or validating local changes (/test)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Review a pull request with CTO-level scrutiny. Designed for vibe-coded PRs.
|
|
7
|
+
|
|
8
|
+
Arguments: $ARGUMENTS
|
|
9
|
+
|
|
10
|
+
## When to invoke
|
|
11
|
+
|
|
12
|
+
User says: "review PR", "check this PR", "review #123", "is this PR safe to merge", "audit PR", "review cem's PRs"
|
|
13
|
+
Not this: "/pr" (create a PR), "/test" (validate local changes)
|
|
14
|
+
|
|
15
|
+
## Execution rules
|
|
16
|
+
|
|
17
|
+
**CRITICAL: Suppress raw output.** Never show raw JSON, raw diffs, or unformatted gh output. All output should be structured assessment.
|
|
18
|
+
|
|
19
|
+
**Use Agent tool for diff review.** Each PR gets its own background agent for parallel analysis. The agent fetches the diff, analyzes it, and returns a structured verdict.
|
|
20
|
+
|
|
21
|
+
**Auth:** All `gh` commands need: `GITHUB_TOKEN=$(grep '^GITHUB_TOKEN=' .env | cut -d'=' -f2-)`
|
|
22
|
+
|
|
23
|
+
## Step 0: Determine scope
|
|
24
|
+
|
|
25
|
+
Parse `$ARGUMENTS`:
|
|
26
|
+
- **PR number** (e.g. `123`, `#123`) → review that single PR
|
|
27
|
+
- **Author** (e.g. `alice`, `bob`) → list all open PRs from that author
|
|
28
|
+
- **`--all`** → list all open PRs
|
|
29
|
+
- **Empty** → list all open PRs targeting develop
|
|
30
|
+
|
|
31
|
+
Get org/repo:
|
|
32
|
+
```bash
|
|
33
|
+
GITHUB_ORG=$(jq -r '.github_org' egregore.json)
|
|
34
|
+
REPO_NAME=$(jq -r '.repo_name // "egregore"' egregore.json)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Step 1: Fetch PR metadata
|
|
38
|
+
|
|
39
|
+
### Single PR
|
|
40
|
+
```bash
|
|
41
|
+
GITHUB_TOKEN=$TOKEN gh pr view $PR_NUM --json title,author,additions,deletions,changedFiles,headRefName,body,createdAt,state --repo $GITHUB_ORG/$REPO_NAME
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Multiple PRs (author or --all)
|
|
45
|
+
```bash
|
|
46
|
+
GITHUB_TOKEN=$TOKEN gh pr list --state open --json number,title,author,additions,deletions,changedFiles,headRefName,createdAt --limit 50 --repo $GITHUB_ORG/$REPO_NAME
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Filter by author login if specified.
|
|
50
|
+
|
|
51
|
+
## Step 2: For each PR, run the 10-point checklist
|
|
52
|
+
|
|
53
|
+
Launch an Agent (subagent_type: general-purpose) per PR for parallel review. Give each agent:
|
|
54
|
+
1. The PR number
|
|
55
|
+
2. The repo
|
|
56
|
+
3. The GITHUB_TOKEN retrieval command
|
|
57
|
+
4. The full checklist below
|
|
58
|
+
|
|
59
|
+
### The 10-Point CTO Checklist
|
|
60
|
+
|
|
61
|
+
Each agent must fetch the diff (`gh pr diff $PR_NUM`) and evaluate:
|
|
62
|
+
|
|
63
|
+
#### 1. Does it actually work?
|
|
64
|
+
- Check that all imports reference functions/modules that exist
|
|
65
|
+
- Check that Cypher syntax is valid (balanced parentheses, proper MATCH/RETURN/WHERE structure)
|
|
66
|
+
- Check that shell scripts use correct flags for the target platform (e.g. `base64 -d` vs `-D` on macOS)
|
|
67
|
+
- Check that referenced files/scripts actually exist in the codebase (e.g. `bin/graph-batch.sh`, `bin/graph-op.sh`)
|
|
68
|
+
|
|
69
|
+
#### 2. Side effects on shared state
|
|
70
|
+
- Does it modify `.claude/settings.json`? (hook changes affect every session)
|
|
71
|
+
- Does it modify `CLAUDE.md`? (behavioral changes affect every session)
|
|
72
|
+
- Does it modify `bin/graph-op.sh`? (new operations must not break existing ones)
|
|
73
|
+
- Does it modify `bin/session-start.sh`? (startup changes affect every session)
|
|
74
|
+
- Does it modify `.env`, `egregore.json`, or auth flows?
|
|
75
|
+
|
|
76
|
+
#### 3. Overlap detection
|
|
77
|
+
- Are there other open PRs touching the same files?
|
|
78
|
+
- Is this PR a subset of a larger mega-PR? (common with vibe coding — person keeps working, creates multiple PRs from evolving branch)
|
|
79
|
+
- Would merging this and another PR cause conflicts?
|
|
80
|
+
|
|
81
|
+
#### 4. Destructive operations
|
|
82
|
+
- Graph: Any `DELETE`, `DETACH DELETE` that could remove data?
|
|
83
|
+
- Files: Any file deletions that could break other commands? Check if deleted files are referenced elsewhere.
|
|
84
|
+
- Endpoints: Any API endpoint removals that could break the website or other consumers?
|
|
85
|
+
- Schema: Any node/relationship type removals?
|
|
86
|
+
|
|
87
|
+
#### 5. Security regression
|
|
88
|
+
- Does it remove boundary rules, permission checks, or security guards?
|
|
89
|
+
- Does it remove `.syncignore` entries (controls what gets synced to public repo)?
|
|
90
|
+
- Does it weaken auth flows or token validation?
|
|
91
|
+
- Does it expose secrets (hardcoded tokens, API keys, credentials)?
|
|
92
|
+
- Does it add world-readable temp files with sensitive content?
|
|
93
|
+
|
|
94
|
+
#### 6. Schema consistency
|
|
95
|
+
- New node types or relationships must be declared in CLAUDE.md schema line
|
|
96
|
+
- Property naming must follow existing conventions (camelCase, not snake_case)
|
|
97
|
+
- Relationships must use UPPER_SNAKE_CASE
|
|
98
|
+
|
|
99
|
+
#### 7. Idempotency
|
|
100
|
+
- Graph writes must use `MERGE` not `CREATE` for edges/nodes that could be created twice
|
|
101
|
+
- Scripts that run on schedule or can be retried must produce the same result on re-run
|
|
102
|
+
- Exception: `CREATE` is OK for truly unique entities (e.g. new Session per session)
|
|
103
|
+
|
|
104
|
+
#### 8. Error handling in critical path
|
|
105
|
+
- Does `set -euo pipefail` at script top risk killing the script before essential output?
|
|
106
|
+
- Are graph queries guarded with `|| true` or fallback values?
|
|
107
|
+
- Do hooks always `exit 0` (observe/report hooks must never block)?
|
|
108
|
+
|
|
109
|
+
#### 9. Convention violations
|
|
110
|
+
- `.env` must never be sourced (`source .env` breaks on spaces) — use `grep '^KEY=' .env | cut -d'=' -f2-`
|
|
111
|
+
- Hardcoded absolute paths from developer's machine (e.g. `/Users/cemdagdelen/...`)
|
|
112
|
+
- Committed lock files, `.DS_Store`, or session-specific state
|
|
113
|
+
- Dead code (unreachable cases, unused imports)
|
|
114
|
+
|
|
115
|
+
#### 10. Stale base
|
|
116
|
+
- How far behind `develop` is the branch?
|
|
117
|
+
- Are there guaranteed merge conflicts with current develop?
|
|
118
|
+
- Has the same file been modified on develop since the PR was created?
|
|
119
|
+
|
|
120
|
+
### Agent output format
|
|
121
|
+
|
|
122
|
+
Each agent must return a structured assessment:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
PR: #NNN — Title
|
|
126
|
+
Author: name
|
|
127
|
+
Branch: branch-name
|
|
128
|
+
Size: +X/-Y, N files
|
|
129
|
+
Created: date
|
|
130
|
+
|
|
131
|
+
CHECKLIST:
|
|
132
|
+
1. Works: PASS/FAIL/WARN — details
|
|
133
|
+
2. Side effects: PASS/FAIL/WARN — details
|
|
134
|
+
3. Overlap: PASS/FAIL/WARN — details
|
|
135
|
+
4. Destructive: PASS/FAIL/WARN — details
|
|
136
|
+
5. Security: PASS/FAIL/WARN — details
|
|
137
|
+
6. Schema: PASS/FAIL/WARN — details
|
|
138
|
+
7. Idempotency: PASS/FAIL/WARN — details
|
|
139
|
+
8. Error handling: PASS/FAIL/WARN — details
|
|
140
|
+
9. Conventions: PASS/FAIL/WARN — details
|
|
141
|
+
10. Stale base: PASS/FAIL/WARN — details
|
|
142
|
+
|
|
143
|
+
BLOCKING ISSUES:
|
|
144
|
+
- [list or "None"]
|
|
145
|
+
|
|
146
|
+
RISK: LOW / MEDIUM / HIGH
|
|
147
|
+
VERDICT: MERGE / FIX THEN MERGE / NEEDS WORK / REJECT
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Step 3: Compile results
|
|
151
|
+
|
|
152
|
+
Wait for all agents to complete. Sort PRs into tiers:
|
|
153
|
+
|
|
154
|
+
### Tier classification
|
|
155
|
+
|
|
156
|
+
| Tier | Criteria | Action |
|
|
157
|
+
|------|----------|--------|
|
|
158
|
+
| **Tier 1: Easy merge** | 0 FAILs, 0-2 WARNs, LOW risk | Merge immediately |
|
|
159
|
+
| **Tier 2: Fix then merge** | 1-2 FAILs (minor), MEDIUM risk | Fix specific issues, then merge |
|
|
160
|
+
| **Tier 3: Needs work** | 3+ FAILs or HIGH risk | Send back with fix list |
|
|
161
|
+
| **Tier 4: Reject** | Security regression, broken imports, or fundamentally wrong approach | Close with explanation |
|
|
162
|
+
|
|
163
|
+
### Overlap resolution
|
|
164
|
+
|
|
165
|
+
If multiple PRs touch the same files:
|
|
166
|
+
1. Identify which is the "superset" (mega-PR)
|
|
167
|
+
2. Recommend merge order to minimize conflicts
|
|
168
|
+
3. Flag PRs that should be closed as superseded
|
|
169
|
+
|
|
170
|
+
## Step 4: Render summary
|
|
171
|
+
|
|
172
|
+
### Single PR review
|
|
173
|
+
```
|
|
174
|
+
┌──────────────────────────────────────────────────────────────────────┐
|
|
175
|
+
│ ✧ REVIEW oz · Mar 11 │
|
|
176
|
+
├──────────────────────────────────────────────────────────────────────┤
|
|
177
|
+
│ │
|
|
178
|
+
│ PR #241 — Fix session date sort │
|
|
179
|
+
│ Author: cem · Branch: dev/cem/identity-fragmentation-fix │
|
|
180
|
+
│ Size: +11/-11 · 4 files · Created: Mar 6 │
|
|
181
|
+
│ │
|
|
182
|
+
│ CHECKLIST │
|
|
183
|
+
│ ✓ Works Correct Cypher pattern │
|
|
184
|
+
│ ✓ Side effects API files only │
|
|
185
|
+
│ ✓ Overlap None │
|
|
186
|
+
│ ✓ Destructive No deletes │
|
|
187
|
+
│ ✓ Security No regression │
|
|
188
|
+
│ ✓ Schema No changes │
|
|
189
|
+
│ ✓ Idempotency N/A (read queries) │
|
|
190
|
+
│ ✓ Error handling Existing guards preserved │
|
|
191
|
+
│ ✓ Conventions Clean │
|
|
192
|
+
│ ⚠ Stale base 5 days old, low conflict risk │
|
|
193
|
+
│ │
|
|
194
|
+
│ BLOCKING: None │
|
|
195
|
+
│ │
|
|
196
|
+
├──────────────────────────────────────────────────────────────────────┤
|
|
197
|
+
│ Risk: LOW · Verdict: MERGE │
|
|
198
|
+
└──────────────────────────────────────────────────────────────────────┘
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Multi-PR review (sorted by tier)
|
|
202
|
+
```
|
|
203
|
+
┌──────────────────────────────────────────────────────────────────────┐
|
|
204
|
+
│ ✧ REVIEW oz · Mar 11 │
|
|
205
|
+
│ 14 open PRs from cem · 10 unique (4 superseded) │
|
|
206
|
+
├──────────────────────────────────────────────────────────────────────┤
|
|
207
|
+
│ │
|
|
208
|
+
│ TIER 1 — EASY MERGE │
|
|
209
|
+
│ #241 Fix session date sort +11/-11 LOW MERGE │
|
|
210
|
+
│ #267 Handoff claiming +58/-2 LOW MERGE │
|
|
211
|
+
│ #185 Rewrite /meeting +586/-734 LOW MERGE │
|
|
212
|
+
│ │
|
|
213
|
+
│ TIER 2 — FIX THEN MERGE │
|
|
214
|
+
│ #266 PR graph nodes +167/-7 MED FIX │
|
|
215
|
+
│ → Cypher bug: LIMIT before SKIP │
|
|
216
|
+
│ #265 /summon command +207/-0 LOW FIX │
|
|
217
|
+
│ → Missing schema declaration │
|
|
218
|
+
│ │
|
|
219
|
+
│ TIER 3 — NEEDS WORK │
|
|
220
|
+
│ #244 Deep-reflect redesign +604/-711 MED-HI WORK │
|
|
221
|
+
│ → Non-idempotent edges, bash YAML parsing │
|
|
222
|
+
│ #269 Granola API upgrade +1096/-228 MED WORK │
|
|
223
|
+
│ → Bundled unrelated changes, User-Agent spoof │
|
|
224
|
+
│ │
|
|
225
|
+
│ TIER 4 — REJECT / CLOSE │
|
|
226
|
+
│ #202 Extract CLAUDE.md into skills +299/-247 HIGH REJCT │
|
|
227
|
+
│ → Security rules deleted, not extracted │
|
|
228
|
+
│ #268 Coder workspace cleanup +179/-488 HIGH REJCT │
|
|
229
|
+
│ → .syncignore deleted, missing import, role overwrite │
|
|
230
|
+
│ │
|
|
231
|
+
│ SUPERSEDED (close) │
|
|
232
|
+
│ #264 → by #256 │
|
|
233
|
+
│ #265 → by #256 │
|
|
234
|
+
│ #272 → by #256 │
|
|
235
|
+
│ │
|
|
236
|
+
├──────────────────────────────────────────────────────────────────────┤
|
|
237
|
+
│ Merge order: #241 → #267 → #185 → #266 → #265 │
|
|
238
|
+
│ 3 ready · 2 fixable · 2 need work · 2 reject · 3 superseded │
|
|
239
|
+
└──────────────────────────────────────────────────────────────────────┘
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Step 5: Offer next actions
|
|
243
|
+
|
|
244
|
+
After showing the summary, offer:
|
|
245
|
+
- **"Start merging Tier 1?"** — if there are easy merges
|
|
246
|
+
- **"Show details for #NNN?"** — deep dive on a specific PR
|
|
247
|
+
- **"Fix #NNN?"** — checkout the branch, apply fixes, push
|
|
248
|
+
|
|
249
|
+
## Merge execution (when user confirms)
|
|
250
|
+
|
|
251
|
+
For each PR to merge:
|
|
252
|
+
```bash
|
|
253
|
+
GITHUB_TOKEN=$TOKEN gh pr merge $PR_NUM --merge --repo $GITHUB_ORG/$REPO_NAME
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
After merge, update local develop:
|
|
257
|
+
```bash
|
|
258
|
+
git fetch origin develop --quiet
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
For PRs to close (superseded):
|
|
262
|
+
```bash
|
|
263
|
+
GITHUB_TOKEN=$TOKEN gh pr close $PR_NUM --comment "Superseded by #NNN" --repo $GITHUB_ORG/$REPO_NAME
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Edge cases
|
|
267
|
+
|
|
268
|
+
| Scenario | Handling |
|
|
269
|
+
|----------|----------|
|
|
270
|
+
| PR already merged | Skip, note in output |
|
|
271
|
+
| PR has merge conflicts | Flag in stale-base check, cannot auto-merge |
|
|
272
|
+
| PR targets main (not develop) | Warning — all PRs should target develop |
|
|
273
|
+
| Author is maintainer (oz) | Still run full checklist, but note trusted author |
|
|
274
|
+
| Mega-PR detected | Identify sub-PRs, recommend close superseded |
|
|
275
|
+
| No open PRs | "No open PRs found." |
|
|
276
|
+
| Graph offline | Skip Cypher validation checks, note limitation |
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: save
|
|
3
|
+
description: "Save current Egregore work: validate distribution, commit the task branch, push it, and create or reuse a PR against the configured integration branch."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Save work without asking the user to manage Git mechanics.
|
|
7
|
+
|
|
8
|
+
## When to invoke
|
|
9
|
+
|
|
10
|
+
Use for “save”, “commit and push”, “push this work”, or `$save`. When the user
|
|
11
|
+
is ending a session and needs a durable continuation record, use `handoff` or
|
|
12
|
+
`wrap` first; their canonical writes are already independently durable.
|
|
13
|
+
|
|
14
|
+
## Contract
|
|
15
|
+
|
|
16
|
+
- `bin/agent.sh save` is the one runtime-neutral Git transaction for Claude,
|
|
17
|
+
Codex, Pi, and Prime.
|
|
18
|
+
- Resolve the integration branch from `egregore.json`; never hardcode
|
|
19
|
+
`develop` or `main`.
|
|
20
|
+
- Do not scan or mutate the graph before/after saving. Canonical lifecycle and
|
|
21
|
+
projection repair are separate Runtime operations.
|
|
22
|
+
- Do not repeat canonical artifact writeback. Save only outstanding repository
|
|
23
|
+
changes and already-created memory records.
|
|
24
|
+
- The current Git/GitHub transport remains valid but is behind the sync
|
|
25
|
+
boundary; GitHub identity is not ActorIdentity.
|
|
26
|
+
|
|
27
|
+
## Flow
|
|
28
|
+
|
|
29
|
+
1. Inspect branch, working-tree changes, memory changes, ahead count, and an
|
|
30
|
+
existing PR. A clean tree can still need a push/PR when the branch is ahead.
|
|
31
|
+
2. Resolve the configured base once:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
BASE=$(bash -c 'SCRIPT_DIR="$PWD"; CONFIG="$PWD/egregore.json"; . "$PWD/bin/lib/config.sh" && _get_base_branch')
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Stop before mutation if it cannot be resolved.
|
|
38
|
+
|
|
39
|
+
3. Run the product-distribution checkpoint when its registry exists — the
|
|
40
|
+
guard is real: installed instances do not ship the distribution engine,
|
|
41
|
+
and its absence there is correct, not an error to chase:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
if [ -f bin/capability-distribution.mjs ] && [ -f capability-distribution.json ]; then
|
|
45
|
+
bash bin/node-run.sh bin/capability-distribution.mjs validate --root .
|
|
46
|
+
bash bin/node-run.sh bin/capability-distribution.mjs changes --root . --base "origin/$BASE" --json
|
|
47
|
+
bash bin/node-run.sh bin/capability-distribution.mjs runtime-skill-audit --root . --strict-contract
|
|
48
|
+
fi
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Ask one placement question only for a genuinely new/unclassified component or
|
|
52
|
+
an explicit placement change. Ordinary edits to an existing component do not
|
|
53
|
+
prompt.
|
|
54
|
+
|
|
55
|
+
4. Derive:
|
|
56
|
+
|
|
57
|
+
- a short topic;
|
|
58
|
+
- a commit subject/body under `.claude/context/commit-format.md`;
|
|
59
|
+
- a PR body under `.claude/context/pr-format.md`, including honest
|
|
60
|
+
verification for non-Markdown changes.
|
|
61
|
+
|
|
62
|
+
If unrelated changes make the save scope ambiguous, show one Save all / Narrow
|
|
63
|
+
scope checkpoint. Otherwise continue without ritual confirmation.
|
|
64
|
+
|
|
65
|
+
5. Execute exactly once:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
bin/agent.sh save \
|
|
69
|
+
--message "$MESSAGE" \
|
|
70
|
+
--topic "$TOPIC" \
|
|
71
|
+
--pr-body "$PR_BODY"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The bridge owns branch safety, exact commits, push, PR create/reuse, and memory
|
|
75
|
+
sync. Do not run manual Git commands around it or trigger a graph scan.
|
|
76
|
+
|
|
77
|
+
6. Report only the branch, commit/push outcome, PR URL/reuse, memory sync, and
|
|
78
|
+
any failed step. Local commits remain safe if transport fails.
|
|
79
|
+
|
|
80
|
+
## Rules
|
|
81
|
+
|
|
82
|
+
- Never push directly to a protected integration/stable branch.
|
|
83
|
+
- Never use destructive Git commands.
|
|
84
|
+
- Never auto-close handoffs or todos during save.
|
|
85
|
+
- Never publish or notify as an implied side effect.
|
|
86
|
+
- Do not spend a Loom/model-routing turn on deterministic save mechanics.
|
|
87
|
+
|
|
88
|
+
Emit content-free command telemetry after the bridge returns:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
bash bin/telemetry.sh emit "command" '{"command":"save"}' 2>/dev/null &
|
|
92
|
+
```
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slack-connect
|
|
3
|
+
description: "Set up Slack as a notification channel for your Egregore — creates the workspace app, invites the bot, and binds a channel. Use for /slack-connect, 'connect slack', or 'set up slack notifications'."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Set up Slack as a notification channel for your Egregore.
|
|
7
|
+
|
|
8
|
+
Arguments: $ARGUMENTS (none expected)
|
|
9
|
+
|
|
10
|
+
## When to invoke
|
|
11
|
+
|
|
12
|
+
**Trigger phrases:**
|
|
13
|
+
- "set up slack", "connect slack", "slack-connect"
|
|
14
|
+
- "add slack notifications", "slack channel", "notify us on slack"
|
|
15
|
+
|
|
16
|
+
**Disambiguation:**
|
|
17
|
+
- "set up telegram" → `/telegram-connect`
|
|
18
|
+
- "set up teams" → `/teams-connect`
|
|
19
|
+
- "send a message to slack" → NOT this — use the separate notification
|
|
20
|
+
consent protocol in `.claude/context/notification-consent.md`
|
|
21
|
+
|
|
22
|
+
## What this does
|
|
23
|
+
|
|
24
|
+
Connects one Slack channel to Egregore notifications using an app the org
|
|
25
|
+
creates in its own workspace. After this, everything that plans a group
|
|
26
|
+
notification may also resolve Slack as a receiving channel; all resolved
|
|
27
|
+
channels are shown before separate dispatch approval.
|
|
28
|
+
|
|
29
|
+
The privacy contract, stated plainly to the user: **the install screen will
|
|
30
|
+
say only "Send messages as @Egregore." The app cannot read messages — the
|
|
31
|
+
manifest requests one scope, `chat:write`.** The workspace owns the app and
|
|
32
|
+
the token; revoking either cuts Egregore off instantly.
|
|
33
|
+
|
|
34
|
+
**Works in both modes.** Check which one first:
|
|
35
|
+
```bash
|
|
36
|
+
MODE=$(jq -r '.mode // "connected"' egregore.json 2>/dev/null)
|
|
37
|
+
```
|
|
38
|
+
- **local** — the token stays in the gitignored `.env` on this machine and
|
|
39
|
+
messages go straight from here to Slack. No Egregore server is in the path.
|
|
40
|
+
- **connected** — the token is stored on the org's row so the hosted service
|
|
41
|
+
can deliver group notifications from any member's session.
|
|
42
|
+
|
|
43
|
+
Only Step 5 differs between the modes.
|
|
44
|
+
|
|
45
|
+
## Step 0: Prerequisites
|
|
46
|
+
|
|
47
|
+
1. A Slack workspace where this person can install apps. Some workspaces
|
|
48
|
+
require admin approval for new apps — if theirs does, the install in
|
|
49
|
+
Step 2 turns into a request the admin must approve first.
|
|
50
|
+
2. Nothing to install locally. No CLI, no cloud account.
|
|
51
|
+
|
|
52
|
+
## Step 1: Create the app from the manifest (human, ~1 min)
|
|
53
|
+
|
|
54
|
+
Show the manifest:
|
|
55
|
+
```bash
|
|
56
|
+
cat slack-app/manifest.yml
|
|
57
|
+
```
|
|
58
|
+
(If this instance doesn't carry `slack-app/`, fetch it from the framework repo.)
|
|
59
|
+
|
|
60
|
+
Guide them: **https://api.slack.com/apps** → **Create New App** →
|
|
61
|
+
**From a manifest** → pick their workspace → paste the manifest → **Create**.
|
|
62
|
+
|
|
63
|
+
## Step 2: Install and copy the bot token (human, 2 clicks + 1 paste)
|
|
64
|
+
|
|
65
|
+
**Settings → Install App → Install to Workspace** → **Allow**.
|
|
66
|
+
|
|
67
|
+
Then copy the **Bot User OAuth Token** from the same page. It starts with
|
|
68
|
+
`xoxb-`. Validate the prefix when they paste it:
|
|
69
|
+
- `xoxb-` — correct.
|
|
70
|
+
- `xoxp-` (user token) or `xapp-` (app-level token) — wrong item on the
|
|
71
|
+
page; point them back to **Install App → Bot User OAuth Token**.
|
|
72
|
+
|
|
73
|
+
Do not store it anywhere yet.
|
|
74
|
+
|
|
75
|
+
## Step 3: Invite the bot to the channel (human, 1 line)
|
|
76
|
+
|
|
77
|
+
In the target channel: `/invite @Egregore` (or channel name → **Integrations**
|
|
78
|
+
→ **Add apps**). With only `chat:write`, the bot can post solely in channels
|
|
79
|
+
it is a member of — skipping this yields `not_in_channel` at send time.
|
|
80
|
+
|
|
81
|
+
## Step 4: Channel ID (human pastes, agent validates)
|
|
82
|
+
|
|
83
|
+
Ask for the channel ID: channel name → **About** tab → **Channel ID** at the
|
|
84
|
+
bottom (or the `/archives/C…` segment of a channel link).
|
|
85
|
+
|
|
86
|
+
Validate: must match `^[CG][A-Z0-9]{6,}$`. A `D…` id is a DM — not supported;
|
|
87
|
+
ask for a channel.
|
|
88
|
+
|
|
89
|
+
Smoke-test the token before persisting anything (no message is sent):
|
|
90
|
+
```bash
|
|
91
|
+
curl -sS https://slack.com/api/auth.test -H "Authorization: Bearer <TOKEN>"
|
|
92
|
+
```
|
|
93
|
+
`"ok":true` proves the token and names the workspace — confirm it is the one
|
|
94
|
+
they expect. `invalid_auth` here means a mispasted or revoked token; fix now,
|
|
95
|
+
not at send time.
|
|
96
|
+
|
|
97
|
+
## Step 5: Persist
|
|
98
|
+
|
|
99
|
+
**Local mode** — token to `.env` (gitignored — never commit), channel to
|
|
100
|
+
`.egregore-state.json` (NOT `egregore.json` — the state file is untracked and
|
|
101
|
+
shared across worktrees):
|
|
102
|
+
```bash
|
|
103
|
+
printf 'SLACK_BOT_TOKEN=%s\n' '<TOKEN>' >> .env
|
|
104
|
+
jq '.slack_channel_id = "<CHANNEL_ID>" | .slack_channel_name = "<#channel-name>"' \
|
|
105
|
+
.egregore-state.json > .egregore-state.json.tmp && mv .egregore-state.json.tmp .egregore-state.json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Connected mode** — store on the org so any member's session can deliver:
|
|
109
|
+
```bash
|
|
110
|
+
API_URL=$(jq -r '.api_url' egregore.json)
|
|
111
|
+
KEY=$(grep '^EGREGORE_API_KEY=' .env | cut -d= -f2-)
|
|
112
|
+
curl -sS -X POST "$API_URL/api/org/slack" \
|
|
113
|
+
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
|
|
114
|
+
-d '{"channel_id":"<CHANNEL_ID>","bot_token":"<TOKEN>","channel_name":"<#channel-name>"}'
|
|
115
|
+
```
|
|
116
|
+
Expect `{"status":"connected", …}`.
|
|
117
|
+
|
|
118
|
+
## Step 6: Verify with separate exact notification consent
|
|
119
|
+
|
|
120
|
+
Follow `.claude/context/notification-consent.md`. Connecting Slack is not
|
|
121
|
+
consent to send a test message. Prepare after configuration is final:
|
|
122
|
+
```bash
|
|
123
|
+
PLAN_JSON=$(bash bin/notify.sh plan group "Slack channel connected — this message reached you through Egregore.")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Show every resolved receiving channel—potentially Telegram, Teams, and
|
|
127
|
+
Slack—and the exact message in a dedicated Send / Edit / Cancel checkpoint.
|
|
128
|
+
Only dispatch after Send is selected for that preview.
|
|
129
|
+
|
|
130
|
+
## Troubleshooting quick table
|
|
131
|
+
|
|
132
|
+
| Symptom | Cause → fix |
|
|
133
|
+
|---|---|
|
|
134
|
+
| `invalid_auth` | Wrong, revoked, or other-workspace token → Step 2, re-copy from Install App |
|
|
135
|
+
| `not_in_channel` | Bot not invited to the channel → Step 3 |
|
|
136
|
+
| `channel_not_found` | Wrong channel ID, or a private channel the bot isn't in → Step 4 / invite it |
|
|
137
|
+
| `missing_scope` | App not created from the manifest → recreate from Step 1, reinstall |
|
|
138
|
+
| `account_inactive` | App was uninstalled from the workspace → reinstall |
|
|
139
|
+
| `ratelimited` | Transient — retried automatically |
|
|
140
|
+
| Install becomes an approval request | Workspace requires admin approval → the admin approves, then continue |
|
|
141
|
+
| Local plan omits slack from channels | Half-configured: `SLACK_BOT_TOKEN` missing from `.env` or `slack_channel_id` missing from `.egregore-state.json` |
|
|
142
|
+
|
|
143
|
+
## After
|
|
144
|
+
|
|
145
|
+
Emit telemetry (fire-and-forget):
|
|
146
|
+
```bash
|
|
147
|
+
bash bin/telemetry.sh emit "slack-connect" '{"command":"slack-connect"}' 2>/dev/null &
|
|
148
|
+
```
|