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,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Derive Pi's project-local system appendix from the generated Codex protocol.
|
|
3
|
+
// CLAUDE.md remains canonical: CLAUDE.md -> AGENTS.md -> .pi/APPEND_SYSTEM.md.
|
|
4
|
+
// The second hop deliberately reuses the reviewed shell-runtime translation,
|
|
5
|
+
// then adapts only the harness surfaces that differ between Codex and Pi.
|
|
6
|
+
|
|
7
|
+
import crypto from "node:crypto";
|
|
8
|
+
import fs from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
|
|
12
|
+
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
13
|
+
const SOURCE = path.join(ROOT, "AGENTS.md");
|
|
14
|
+
const OUTPUT = path.join(ROOT, ".pi", "APPEND_SYSTEM.md");
|
|
15
|
+
const MANIFEST = path.join(ROOT, ".pi", "spec-manifest.json");
|
|
16
|
+
const CODEX_BEGIN = "<!-- BEGIN GENERATED EGREGORE CODEX SPEC";
|
|
17
|
+
const CODEX_END = "<!-- END GENERATED EGREGORE CODEX SPEC -->";
|
|
18
|
+
|
|
19
|
+
function hash(value) {
|
|
20
|
+
return crypto.createHash("sha256").update(value).digest("hex").slice(0, 12);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function extractSpec(source) {
|
|
24
|
+
const begin = source.indexOf(CODEX_BEGIN);
|
|
25
|
+
const contentStart = source.indexOf("\n", begin);
|
|
26
|
+
const end = source.indexOf(CODEX_END, contentStart);
|
|
27
|
+
if (begin < 0 || contentStart < 0 || end < 0) {
|
|
28
|
+
throw new Error("AGENTS.md does not contain the generated Codex spec");
|
|
29
|
+
}
|
|
30
|
+
return source.slice(contentStart + 1, end).trim();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function replaceSection(markdown, heading, body) {
|
|
34
|
+
const marker = `## ${heading}`;
|
|
35
|
+
const start = markdown.indexOf(marker);
|
|
36
|
+
if (start < 0) throw new Error(`missing section in AGENTS.md: ${heading}`);
|
|
37
|
+
const rest = markdown.slice(start + marker.length);
|
|
38
|
+
const boundary = rest.search(/\n\n---\n\n## /);
|
|
39
|
+
const end = boundary < 0 ? markdown.length : start + marker.length + boundary;
|
|
40
|
+
return `${markdown.slice(0, start)}${marker}\n\n${body}${markdown.slice(end)}`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Keep an inherited section and put runtime-specific framing in front of it.
|
|
44
|
+
// Command Awareness is the case that matters: the canonical category rows and
|
|
45
|
+
// disambiguation map live in CLAUDE.md, and a full replace here silently
|
|
46
|
+
// shipped a truncated copy that drifted for months. The Codex spec opens the
|
|
47
|
+
// section with its own skills-not-slash-commands paragraph, which is wrong for
|
|
48
|
+
// a runtime that does have slash commands, so that one paragraph is dropped.
|
|
49
|
+
function prependToSection(markdown, heading, body, dropLeadParagraphStartingWith) {
|
|
50
|
+
const marker = `## ${heading}`;
|
|
51
|
+
const start = markdown.indexOf(marker);
|
|
52
|
+
if (start < 0) throw new Error(`missing section in AGENTS.md: ${heading}`);
|
|
53
|
+
const rest = markdown.slice(start + marker.length);
|
|
54
|
+
const boundary = rest.search(/\n\n---\n\n## /);
|
|
55
|
+
const end = boundary < 0 ? markdown.length : start + marker.length + boundary;
|
|
56
|
+
let inherited = markdown.slice(start + marker.length, end).trim();
|
|
57
|
+
if (dropLeadParagraphStartingWith) {
|
|
58
|
+
if (!inherited.startsWith(dropLeadParagraphStartingWith)) {
|
|
59
|
+
throw new Error(`pi/prime-render-spec: "${heading}" no longer opens with "${dropLeadParagraphStartingWith}" — the Codex wording moved; update this adaptation`);
|
|
60
|
+
}
|
|
61
|
+
inherited = inherited.slice(inherited.indexOf("\n\n") + 2).trim();
|
|
62
|
+
}
|
|
63
|
+
return replaceSection(markdown, heading, `${body}\n\n${inherited}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const CODEX_COMMAND_LEAD = "Codex reserves leading";
|
|
67
|
+
|
|
68
|
+
function adapt(sourceSpec) {
|
|
69
|
+
// Anchored replacements: every `from` string MUST exist in the generated
|
|
70
|
+
// Codex spec. A missing anchor once no-opped silently (the tool_call gate
|
|
71
|
+
// wording vanished from this file for a whole PR cycle before a test caught
|
|
72
|
+
// it) — now it fails the render loudly so the anchor gets updated alongside
|
|
73
|
+
// the Codex text that moved.
|
|
74
|
+
const ANCHORED = [
|
|
75
|
+
["Egregore on Codex", "Egregore on Pi"],
|
|
76
|
+
["Codex-native", "Pi-native"],
|
|
77
|
+
["Codex sessions", "Pi sessions"],
|
|
78
|
+
["On Codex", "On Pi"],
|
|
79
|
+
["Codex has no", "Pi has no built-in"],
|
|
80
|
+
["bin/codex-session-start.sh", "bin/pi-session-start.sh"],
|
|
81
|
+
[".codex/hooks/branch-guard.js", ".pi/extensions/egregore.ts"],
|
|
82
|
+
["PreToolUse hook (launcher `--enable hooks`)", "`tool_call` gate (loaded after Pi project trust)"],
|
|
83
|
+
["If this Codex build does not support hooks", "If Pi project resources are disabled"],
|
|
84
|
+
["change permissions in `.claude/settings.json` anytime", "review or disable project resources in `.pi/` anytime"],
|
|
85
|
+
];
|
|
86
|
+
let text = sourceSpec;
|
|
87
|
+
for (const [from, to] of ANCHORED) {
|
|
88
|
+
if (!text.includes(from)) {
|
|
89
|
+
throw new Error(`pi-render-spec: anchor not found in generated Codex spec: "${from}" — the Codex wording moved; update this replacement`);
|
|
90
|
+
}
|
|
91
|
+
text = text.replaceAll(from, to);
|
|
92
|
+
}
|
|
93
|
+
text = text
|
|
94
|
+
.replace(/`\$([a-z][a-z0-9-]*)/g, "`/$1")
|
|
95
|
+
.replace(/\$([a-z][a-z0-9-]*)/g, "/$1");
|
|
96
|
+
|
|
97
|
+
text = replaceSection(text, "Egregore on Pi", `You are Pi running inside Egregore — a shared intelligence layer for organizations using AI coding agents. You operate through Git-based shared memory, project-local Pi resources, Egregore skills, and conventions that accumulate knowledge across sessions and people. You are not a tool. You are a participant.
|
|
98
|
+
|
|
99
|
+
This appendix is generated from the reviewed shell-runtime translation of \`CLAUDE.md\`, the behavioral source of truth. Pi loads it through \`.pi/APPEND_SYSTEM.md\` after the launcher grants project trust for this run. Egregore workflows are shared from \`.codex/skills/\` using Pi's documented cross-harness skill support and exposed as familiar slash commands by \`.pi/extensions/egregore.ts\`.`);
|
|
100
|
+
|
|
101
|
+
text = replaceSection(text, "On Launch — MANDATORY FIRST ACTION", `The project-local Pi extension renders the Egregore startup card (identity, handoffs, team activity) inside Pi via \`bin/pi-session-start.sh\`. This works for direct \`pi\` launches and launcher-managed sessions. Do not rerun startup checks and do not narrate startup. The card ends with **"What are you working on?"** — that question is already on screen; treat the user's first message as the answer to it. To re-show the card outside Pi, run \`bash bin/pi-session-start.sh --card\`.`);
|
|
102
|
+
|
|
103
|
+
text = prependToSection(text, "Command Awareness", `Egregore workflows are available as Pi slash commands such as \`/activity\`, \`/handoff\`, \`/save\`, and \`/view\`. They are registered from the shared skill inventory by \`.pi/extensions/egregore.ts\`. Pi also exposes the underlying Agent Skills as \`/skill:name\`, and natural-language requests work normally. \`/save\` is the user-facing abstraction for committing, pushing, opening or reusing pull requests, and syncing memory — never make users manage the git workflow by hand.
|
|
104
|
+
|
|
105
|
+
Read the selected skill's \`SKILL.md\` completely before acting. Codex wording inside the shared portable skills means the shell-capable runtime adapter; in Pi, run referenced \`bin/\` scripts directly, use ordinary Pi shell/network access, ignore Codex approval-channel wording, and render compact numbered questions when no Pi UI question surface is available.`, CODEX_COMMAND_LEAD);
|
|
106
|
+
|
|
107
|
+
return `# Egregore on Pi\n\nThis file is generated by \`bin/pi-render-spec.mjs\`; do not edit it by hand.\n\n${text}\n`;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const check = process.argv.includes("--check");
|
|
111
|
+
const source = fs.readFileSync(SOURCE, "utf8");
|
|
112
|
+
const sourceSpec = extractSpec(source);
|
|
113
|
+
const rendered = adapt(sourceSpec);
|
|
114
|
+
const manifest = `${JSON.stringify({
|
|
115
|
+
generatedBy: "bin/pi-render-spec.mjs",
|
|
116
|
+
source: "AGENTS.md generated Codex spec",
|
|
117
|
+
sourceHash: hash(sourceSpec),
|
|
118
|
+
outputHash: hash(rendered),
|
|
119
|
+
adaptations: [
|
|
120
|
+
"Pi project trust and APPEND_SYSTEM delivery",
|
|
121
|
+
"Pi tool_call branch gate",
|
|
122
|
+
"Pi slash-command extension over shared portable skills",
|
|
123
|
+
"plain-text question fallback and direct shell/network execution",
|
|
124
|
+
],
|
|
125
|
+
}, null, 2)}\n`;
|
|
126
|
+
|
|
127
|
+
if (check) {
|
|
128
|
+
const currentOutput = fs.existsSync(OUTPUT) ? fs.readFileSync(OUTPUT, "utf8") : "";
|
|
129
|
+
const currentManifest = fs.existsSync(MANIFEST) ? fs.readFileSync(MANIFEST, "utf8") : "";
|
|
130
|
+
if (currentOutput !== rendered || currentManifest !== manifest) {
|
|
131
|
+
console.error("pi spec out of date — run: bash bin/node-run.sh bin/pi-render-spec.mjs");
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
console.log("pi spec up to date");
|
|
135
|
+
} else {
|
|
136
|
+
fs.mkdirSync(path.dirname(OUTPUT), { recursive: true });
|
|
137
|
+
fs.writeFileSync(OUTPUT, rendered);
|
|
138
|
+
fs.writeFileSync(MANIFEST, manifest);
|
|
139
|
+
console.log(`pi spec rendered: .pi/APPEND_SYSTEM.md (${Buffer.byteLength(rendered)} bytes)`);
|
|
140
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Post-update migrations for Egregore framework.
|
|
3
|
+
#
|
|
4
|
+
# This script is synced from upstream on every /update. All migration
|
|
5
|
+
# logic lives here — not in the /update skill itself. This avoids the
|
|
6
|
+
# chicken-and-egg problem: the dumb syncer pulls this script, then
|
|
7
|
+
# this script handles whatever needs to happen.
|
|
8
|
+
#
|
|
9
|
+
# Migrations must be idempotent — they run on every update.
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
MIGRATED=0
|
|
14
|
+
|
|
15
|
+
# --- Migration: commands → skills (CC 2.0+) ---
|
|
16
|
+
# CC 2.0 dropped .claude/commands/ support. If skills exist (synced from
|
|
17
|
+
# upstream) and commands still exist locally, remove commands to prevent
|
|
18
|
+
# duplicate entries in the slash menu.
|
|
19
|
+
if [ -d ".claude/skills" ] && [ -d ".claude/commands" ]; then
|
|
20
|
+
CC_MAJOR=$(claude --version 2>/dev/null | grep -oE '^[0-9]+' || echo "0")
|
|
21
|
+
if [ "${CC_MAJOR:-0}" -ge 2 ]; then
|
|
22
|
+
git rm -r .claude/commands/ 2>/dev/null || rm -rf .claude/commands/
|
|
23
|
+
echo " ✓ Removed .claude/commands/ (migrated to skills)"
|
|
24
|
+
MIGRATED=1
|
|
25
|
+
fi
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# --- Future migrations go here ---
|
|
29
|
+
# Each migration should:
|
|
30
|
+
# 1. Check if it needs to run (idempotent guard)
|
|
31
|
+
# 2. Do the work
|
|
32
|
+
# 3. Echo a status line
|
|
33
|
+
# 4. Set MIGRATED=1
|
|
34
|
+
|
|
35
|
+
if [ "$MIGRATED" -eq 0 ]; then
|
|
36
|
+
echo " ✓ No migrations needed"
|
|
37
|
+
fi
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Derive Prime Agent's project-local system appendix from the generated Codex
|
|
3
|
+
// protocol. CLAUDE.md remains canonical:
|
|
4
|
+
// CLAUDE.md -> AGENTS.md -> .prime/agent/APPEND_SYSTEM.md.
|
|
5
|
+
// The second hop deliberately reuses the reviewed shell-runtime translation,
|
|
6
|
+
// then adapts only the harness surfaces that differ between Codex and Prime.
|
|
7
|
+
|
|
8
|
+
import crypto from "node:crypto";
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { fileURLToPath } from "node:url";
|
|
12
|
+
|
|
13
|
+
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
14
|
+
const SOURCE = path.join(ROOT, "AGENTS.md");
|
|
15
|
+
const OUTPUT = path.join(ROOT, ".prime", "agent", "APPEND_SYSTEM.md");
|
|
16
|
+
const MANIFEST = path.join(ROOT, ".prime", "agent", "spec-manifest.json");
|
|
17
|
+
const CODEX_BEGIN = "<!-- BEGIN GENERATED EGREGORE CODEX SPEC";
|
|
18
|
+
const CODEX_END = "<!-- END GENERATED EGREGORE CODEX SPEC -->";
|
|
19
|
+
|
|
20
|
+
function hash(value) {
|
|
21
|
+
return crypto.createHash("sha256").update(value).digest("hex").slice(0, 12);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function extractSpec(source) {
|
|
25
|
+
const begin = source.indexOf(CODEX_BEGIN);
|
|
26
|
+
const contentStart = source.indexOf("\n", begin);
|
|
27
|
+
const end = source.indexOf(CODEX_END, contentStart);
|
|
28
|
+
if (begin < 0 || contentStart < 0 || end < 0) {
|
|
29
|
+
throw new Error("AGENTS.md does not contain the generated Codex spec");
|
|
30
|
+
}
|
|
31
|
+
return source.slice(contentStart + 1, end).trim();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function replaceSection(markdown, heading, body) {
|
|
35
|
+
const marker = `## ${heading}`;
|
|
36
|
+
const start = markdown.indexOf(marker);
|
|
37
|
+
if (start < 0) throw new Error(`missing section in AGENTS.md: ${heading}`);
|
|
38
|
+
const rest = markdown.slice(start + marker.length);
|
|
39
|
+
const boundary = rest.search(/\n\n---\n\n## /);
|
|
40
|
+
const end = boundary < 0 ? markdown.length : start + marker.length + boundary;
|
|
41
|
+
return `${markdown.slice(0, start)}${marker}\n\n${body}${markdown.slice(end)}`;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Keep an inherited section and put runtime-specific framing in front of it.
|
|
45
|
+
// Command Awareness is the case that matters: the canonical category rows and
|
|
46
|
+
// disambiguation map live in CLAUDE.md, and a full replace here silently
|
|
47
|
+
// shipped a truncated copy that drifted for months. The Codex spec opens the
|
|
48
|
+
// section with its own skills-not-slash-commands paragraph, which is wrong for
|
|
49
|
+
// a runtime that does have slash commands, so that one paragraph is dropped.
|
|
50
|
+
function prependToSection(markdown, heading, body, dropLeadParagraphStartingWith) {
|
|
51
|
+
const marker = `## ${heading}`;
|
|
52
|
+
const start = markdown.indexOf(marker);
|
|
53
|
+
if (start < 0) throw new Error(`missing section in AGENTS.md: ${heading}`);
|
|
54
|
+
const rest = markdown.slice(start + marker.length);
|
|
55
|
+
const boundary = rest.search(/\n\n---\n\n## /);
|
|
56
|
+
const end = boundary < 0 ? markdown.length : start + marker.length + boundary;
|
|
57
|
+
let inherited = markdown.slice(start + marker.length, end).trim();
|
|
58
|
+
if (dropLeadParagraphStartingWith) {
|
|
59
|
+
if (!inherited.startsWith(dropLeadParagraphStartingWith)) {
|
|
60
|
+
throw new Error(`prime-render-spec: "${heading}" no longer opens with "${dropLeadParagraphStartingWith}" — the Codex wording moved; update this adaptation`);
|
|
61
|
+
}
|
|
62
|
+
inherited = inherited.slice(inherited.indexOf("\n\n") + 2).trim();
|
|
63
|
+
}
|
|
64
|
+
return replaceSection(markdown, heading, `${body}\n\n${inherited}`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const CODEX_COMMAND_LEAD = "Codex reserves leading";
|
|
68
|
+
|
|
69
|
+
function adapt(sourceSpec) {
|
|
70
|
+
// Anchored replacements: every `from` string MUST exist in the generated
|
|
71
|
+
// Codex spec — a missing anchor no-ops silently and drops Prime-specific
|
|
72
|
+
// wording (see the tool_call gate incident). Fail the render loudly instead.
|
|
73
|
+
const ANCHORED = [
|
|
74
|
+
["Egregore on Codex", "Egregore on Prime Agent"],
|
|
75
|
+
["Codex-native", "Prime-native"],
|
|
76
|
+
["Codex sessions", "Prime Agent sessions"],
|
|
77
|
+
["On Codex", "On Prime Agent"],
|
|
78
|
+
["Codex has no", "Prime Agent has no built-in"],
|
|
79
|
+
["bin/codex-session-start.sh", "bin/prime-session-start.sh"],
|
|
80
|
+
[".codex/hooks/branch-guard.js", ".prime/agent/extensions/egregore.ts"],
|
|
81
|
+
["PreToolUse hook (launcher `--enable hooks`)", "`tool_call` gate (loaded from the project-local extension)"],
|
|
82
|
+
["If this Codex build does not support hooks", "If Prime Agent project extensions are disabled"],
|
|
83
|
+
["change permissions in `.claude/settings.json` anytime", "review or disable project resources in `.prime/agent/` anytime"],
|
|
84
|
+
];
|
|
85
|
+
let text = sourceSpec;
|
|
86
|
+
for (const [from, to] of ANCHORED) {
|
|
87
|
+
if (!text.includes(from)) {
|
|
88
|
+
throw new Error(`prime-render-spec: anchor not found in generated Codex spec: "${from}" — the Codex wording moved; update this replacement`);
|
|
89
|
+
}
|
|
90
|
+
text = text.replaceAll(from, to);
|
|
91
|
+
}
|
|
92
|
+
text = text
|
|
93
|
+
.replace(/`\$([a-z][a-z0-9-]*)/g, "`/$1")
|
|
94
|
+
.replace(/\$([a-z][a-z0-9-]*)/g, "/$1");
|
|
95
|
+
|
|
96
|
+
text = replaceSection(text, "Egregore on Prime Agent", `You are Prime Agent running inside Egregore — a shared intelligence layer for organizations using AI coding agents. You operate through Git-based shared memory, project-local Prime Agent resources, Egregore skills, and conventions that accumulate knowledge across sessions and people. You are not a tool. You are a participant.
|
|
97
|
+
|
|
98
|
+
This appendix is generated from the reviewed shell-runtime translation of \`CLAUDE.md\`, the behavioral source of truth. Prime Agent loads it through \`.prime/agent/APPEND_SYSTEM.md\`. Egregore workflows are shared from \`.codex/skills/\` through the Agent Skills standard (via \`.agents/skills\` and project settings) and exposed as familiar slash commands by \`.prime/agent/extensions/egregore.ts\`.
|
|
99
|
+
|
|
100
|
+
Your subagent mechanism (\`rlm(...)\`) spawns Prime Agent child sessions, not Egregore Loom lanes. Ignore Loom routing preambles inside shared skills: run those workflows inline.`);
|
|
101
|
+
|
|
102
|
+
text = replaceSection(text, "On Launch — MANDATORY FIRST ACTION", `The project-local Prime Agent extension renders the Egregore startup card (identity, handoffs, team activity) inside the session via \`bin/prime-session-start.sh\`. This works for direct \`prime-agent\` launches and launcher-managed sessions. Do not rerun startup checks and do not narrate startup. The card ends with **"What are you working on?"** — that question is already on screen; treat the user's first message as the answer to it. To re-show the card outside Prime Agent, run \`bash bin/prime-session-start.sh --card\`.`);
|
|
103
|
+
|
|
104
|
+
text = prependToSection(text, "Command Awareness", `Egregore workflows are available as Prime Agent slash commands such as \`/activity\`, \`/handoff\`, \`/save\`, and \`/view\`. They are registered from the shared skill inventory by \`.prime/agent/extensions/egregore.ts\`; the duplicate \`/skill:name\` listings are disabled so each workflow appears once. Natural-language requests work normally — and are the route for any workflow whose name collides with a Prime Agent built-in: **say "update egregore" rather than typing \`/update\`**, which is Prime Agent's own self-updater. \`/save\` is the user-facing abstraction for committing, pushing, opening or reusing pull requests, and syncing memory — never make users manage the git workflow by hand.
|
|
105
|
+
|
|
106
|
+
Read the selected skill's \`SKILL.md\` completely before acting. Codex wording inside the shared portable skills means the shell-capable runtime adapter; in Prime Agent, run referenced \`bin/\` scripts through the IPython kernel (or the bash tool when active), use ordinary shell/network access, ignore Codex approval-channel wording, and render compact numbered questions when no UI question surface is available.
|
|
107
|
+
|
|
108
|
+
The \`egregore\` Python-backed skill exposes the mechanics as kernel functions — \`import egregore\`, then \`egregore.search(query)\`, \`egregore.activity()\`, \`egregore.handoff(to, topic, body)\`, \`egregore.save(message, topic)\`, \`egregore.branch(topic)\`, \`egregore.notify_plan(recipient, message)\`. Prefer these over re-deriving \`bin/\` CLI usage by reading scripts. \`notify_plan\` is proposal-only: approval and dispatch always pass through the explicit human Send / Edit / Cancel checkpoint.
|
|
109
|
+
|
|
110
|
+
"Get the latest changes" inside a session means \`/reload\` — it re-reads instructions, context files, skills, and extensions from disk. Never \`git pull\`, \`git reset\`, or \`git checkout\` the working branch to pick up updates. When pivoting topics inside a worktree that carries unmerged branch work, create the new branch from the current HEAD, not \`origin/{base}\` — branching from the configured base in such a worktree removes the unmerged files from disk.
|
|
111
|
+
|
|
112
|
+
Kernel shell escapes can be time-capped by the harness. Egregore \`bin/\` scripts that sync git state or query the connected graph legitimately run 10–120 seconds: run them with a generous timeout (a \`%%bash\` cell, or the longest limit the harness exposes). If a command dies suspiciously fast (~5s) with partial output, treat it as a timeout — rerun once with a longer limit or render the workflow's designed one-line fallback. Never debug data plumbing inside a product workflow. Connected mode works normally here: graph reads and \`bin/search.sh\` enrichment use the instance's configured credentials, and when graph data is degraded say so in one plain line rather than narrating connectivity theories.`, CODEX_COMMAND_LEAD);
|
|
113
|
+
|
|
114
|
+
return `# Egregore on Prime Agent\n\nThis file is generated by \`bin/prime-render-spec.mjs\`; do not edit it by hand.\n\n${text}\n`;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const check = process.argv.includes("--check");
|
|
118
|
+
const source = fs.readFileSync(SOURCE, "utf8");
|
|
119
|
+
const sourceSpec = extractSpec(source);
|
|
120
|
+
const rendered = adapt(sourceSpec);
|
|
121
|
+
const manifest = `${JSON.stringify({
|
|
122
|
+
generatedBy: "bin/prime-render-spec.mjs",
|
|
123
|
+
source: "AGENTS.md generated Codex spec",
|
|
124
|
+
sourceHash: hash(sourceSpec),
|
|
125
|
+
outputHash: hash(rendered),
|
|
126
|
+
adaptations: [
|
|
127
|
+
"Prime Agent APPEND_SYSTEM delivery from .prime/agent/",
|
|
128
|
+
"Prime Agent tool_call branch gate incl. ipython classification",
|
|
129
|
+
"Prime Agent slash-command extension over shared portable skills",
|
|
130
|
+
"rlm() subagents are not Loom lanes; Loom preambles run inline",
|
|
131
|
+
],
|
|
132
|
+
}, null, 2)}\n`;
|
|
133
|
+
|
|
134
|
+
if (check) {
|
|
135
|
+
const currentOutput = fs.existsSync(OUTPUT) ? fs.readFileSync(OUTPUT, "utf8") : "";
|
|
136
|
+
const currentManifest = fs.existsSync(MANIFEST) ? fs.readFileSync(MANIFEST, "utf8") : "";
|
|
137
|
+
if (currentOutput !== rendered || currentManifest !== manifest) {
|
|
138
|
+
console.error("prime spec out of date — run: bash bin/node-run.sh bin/prime-render-spec.mjs");
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
console.log("prime spec up to date");
|
|
142
|
+
} else {
|
|
143
|
+
fs.mkdirSync(path.dirname(OUTPUT), { recursive: true });
|
|
144
|
+
fs.writeFileSync(OUTPUT, rendered);
|
|
145
|
+
fs.writeFileSync(MANIFEST, manifest);
|
|
146
|
+
console.log(`prime spec rendered: .prime/agent/APPEND_SYSTEM.md (${Buffer.byteLength(rendered)} bytes)`);
|
|
147
|
+
}
|
|
@@ -41,6 +41,7 @@ DESCRIPTION=""
|
|
|
41
41
|
ARTIFACT_ID=""
|
|
42
42
|
RAW_HTML=0
|
|
43
43
|
SKIP_REFERENCES=0
|
|
44
|
+
ALLOW_ADMIN=0
|
|
44
45
|
PAIR=""
|
|
45
46
|
VERIFY_FIDELITY=0
|
|
46
47
|
FIDELITY_SOURCE=""
|
|
@@ -55,6 +56,7 @@ while [[ $# -gt 0 ]]; do
|
|
|
55
56
|
--verify-fidelity) VERIFY_FIDELITY=1; shift ;;
|
|
56
57
|
--source) FIDELITY_SOURCE="$2"; shift 2 ;;
|
|
57
58
|
--raw-html) RAW_HTML=1; shift ;;
|
|
59
|
+
--allow-admin) ALLOW_ADMIN=1; shift ;;
|
|
58
60
|
--no-references) SKIP_REFERENCES=1; shift ;;
|
|
59
61
|
*)
|
|
60
62
|
if [ -z "$TYPE" ]; then
|
|
@@ -149,6 +151,50 @@ if [ -z "$API_URL" ] || [ -z "$API_KEY" ]; then
|
|
|
149
151
|
fi
|
|
150
152
|
fi
|
|
151
153
|
|
|
154
|
+
# --- Admin-content gate (the refusal documented in bin/lib/permissions.sh) --
|
|
155
|
+
# `admin: true` sources — including backtick-referenced memory files — are
|
|
156
|
+
# refused before any render or upload. An authorized admin (stable identity,
|
|
157
|
+
# github.username alias against egregore.json admins) may proceed only with
|
|
158
|
+
# the explicit --allow-admin confirmation, which is separate from and never
|
|
159
|
+
# replaces normal publication approval. This protects the Egregore surface;
|
|
160
|
+
# repository members can still read raw Git files.
|
|
161
|
+
# shellcheck source=bin/lib/permissions.sh
|
|
162
|
+
source "$SCRIPT_DIR/bin/lib/permissions.sh"
|
|
163
|
+
ADMIN_MARKED=()
|
|
164
|
+
if _is_admin_only_file "$FILE"; then
|
|
165
|
+
ADMIN_MARKED+=("$FILE")
|
|
166
|
+
fi
|
|
167
|
+
if [ "$RAW_HTML" -eq 0 ]; then
|
|
168
|
+
while IFS= read -r ref; do
|
|
169
|
+
[ -z "$ref" ] && continue
|
|
170
|
+
rel="${ref#\`}"
|
|
171
|
+
rel="${rel%\`}"
|
|
172
|
+
if [ -f "$SCRIPT_DIR/$rel" ] && _is_admin_only_file "$SCRIPT_DIR/$rel"; then
|
|
173
|
+
ADMIN_MARKED+=("$rel")
|
|
174
|
+
fi
|
|
175
|
+
done < <(grep -Eo '`memory/[^`[:space:]]+\.(md|html)`' "$FILE" 2>/dev/null | sort -u)
|
|
176
|
+
fi
|
|
177
|
+
if [ "${#ADMIN_MARKED[@]}" -gt 0 ]; then
|
|
178
|
+
IS_ADMIN="false"
|
|
179
|
+
ADMIN_JSON=$(cd "$SCRIPT_DIR" && EGREGORE_ROOT="$SCRIPT_DIR" \
|
|
180
|
+
PYTHONPATH="$SCRIPT_DIR${PYTHONPATH:+:$PYTHONPATH}" \
|
|
181
|
+
python3 -m egregore_runtime.harness_cli admin-status 2>/dev/null) || true
|
|
182
|
+
IS_ADMIN=$(printf '%s' "$ADMIN_JSON" | jq -r '.admin // false' 2>/dev/null || echo "false")
|
|
183
|
+
if [ "$IS_ADMIN" != "true" ]; then
|
|
184
|
+
echo "publish refused: admin-marked content cannot be published by a non-admin member:" >&2
|
|
185
|
+
printf ' %s\n' "${ADMIN_MARKED[@]}" >&2
|
|
186
|
+
echo "(--allow-admin is available to organization admins only)" >&2
|
|
187
|
+
exit 5
|
|
188
|
+
fi
|
|
189
|
+
if [ "$ALLOW_ADMIN" -ne 1 ]; then
|
|
190
|
+
echo "publish refused: this content is admin-marked:" >&2
|
|
191
|
+
printf ' %s\n' "${ADMIN_MARKED[@]}" >&2
|
|
192
|
+
echo "re-run with --allow-admin to confirm publishing admin-marked content" >&2
|
|
193
|
+
echo "(this confirmation is separate from normal publication approval)" >&2
|
|
194
|
+
exit 5
|
|
195
|
+
fi
|
|
196
|
+
fi
|
|
197
|
+
|
|
152
198
|
# --- Prepare HTML ---
|
|
153
199
|
TMP_HTML="/tmp/egregore-artifacts/publish-$$.html"
|
|
154
200
|
mkdir -p /tmp/egregore-artifacts
|
|
@@ -191,13 +237,20 @@ else
|
|
|
191
237
|
LOCAL_CLI="$SCRIPT_DIR/packages/egregore-artifacts/bin/cli.js"
|
|
192
238
|
RENDER_ERROR="/tmp/egregore-artifacts/render-error-$$.log"
|
|
193
239
|
if [ "${EGREGORE_USE_PUBLISHED:-0}" != "1" ] && [ -f "$LOCAL_CLI" ] && [ -d "$SCRIPT_DIR/packages/egregore-artifacts/node_modules/react" ]; then
|
|
194
|
-
if ! node "$LOCAL_CLI" "${RENDER_ARGS[@]}" >/dev/null 2>"$RENDER_ERROR"; then
|
|
240
|
+
if ! bash "$SCRIPT_DIR/bin/node-run.sh" "$LOCAL_CLI" "${RENDER_ARGS[@]}" >/dev/null 2>"$RENDER_ERROR"; then
|
|
195
241
|
sed -n '1,4p' "$RENDER_ERROR" >&2
|
|
196
242
|
rm -f "$RENDER_ERROR"
|
|
197
243
|
exit 5
|
|
198
244
|
fi
|
|
199
245
|
else
|
|
200
|
-
|
|
246
|
+
# Installed published renderer only — never npx/@latest: a hidden
|
|
247
|
+
# registry fetch of a floating version is not an acceptable renderer.
|
|
248
|
+
PUBLISHED_CLI="$(command -v egregore-artifacts || true)"
|
|
249
|
+
if [ -z "$PUBLISHED_CLI" ]; then
|
|
250
|
+
echo "no artifact renderer available: the checked-out packages/egregore-artifacts is unusable and no installed egregore-artifacts was found" >&2
|
|
251
|
+
exit 5
|
|
252
|
+
fi
|
|
253
|
+
if ! bash "$SCRIPT_DIR/bin/node-run.sh" "$PUBLISHED_CLI" "${RENDER_ARGS[@]}" >/dev/null 2>"$RENDER_ERROR"; then
|
|
201
254
|
sed -n '1,4p' "$RENDER_ERROR" >&2
|
|
202
255
|
rm -f "$RENDER_ERROR"
|
|
203
256
|
exit 5
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
5
|
+
export EGREGORE_ROOT="$ROOT"
|
|
6
|
+
export EGREGORE_SESSION_ID="${EGREGORE_SESSION_ID:-$(cat "$ROOT/.egregore-session-id" 2>/dev/null || true)}"
|
|
7
|
+
export PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}"
|
|
8
|
+
|
|
9
|
+
exec python3 -m egregore_runtime.quest_cli "$@"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Runtime-neutral shell adapter for canonical asynchronous questions.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
6
|
+
export EGREGORE_ROOT="${EGREGORE_ROOT:-$ROOT}"
|
|
7
|
+
export PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}"
|
|
8
|
+
exec python3 -m egregore_runtime.question_cli "$@"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Typed Runtime boundary for approved meeting/interview analysis packages.
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
6
|
+
EGREGORE_ROOT="$ROOT" PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}" \
|
|
7
|
+
exec python3 -m egregore_runtime.research_ingest_cli "$@"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# restore-owned-skills.sh — keep org-owned skills intact through a framework update.
|
|
3
|
+
#
|
|
4
|
+
# Org-owned skills are declared in egregore.json → owned_skills[]. The /update
|
|
5
|
+
# overlay stamps upstream framework paths (including .claude/skills/) over the
|
|
6
|
+
# working tree. This script runs AFTER the overlay and BEFORE the update
|
|
7
|
+
# commit. For every owned skill name:
|
|
8
|
+
#
|
|
9
|
+
# - upstream does NOT ship that name → nothing to do (the overlay never
|
|
10
|
+
# touched it; local edits, committed or not, are left alone)
|
|
11
|
+
# - upstream DOES ship that name → the org's committed version wins:
|
|
12
|
+
# the skill directory is reset to HEAD and the collision is reported so
|
|
13
|
+
# the org can rename theirs or explicitly adopt upstream's
|
|
14
|
+
# - collision but no committed org version → upstream's copy stays (there is
|
|
15
|
+
# nothing to restore); the report says to commit and re-run /update
|
|
16
|
+
#
|
|
17
|
+
# Runtime-neutral: called from every harness's update flow. Idempotent; exits
|
|
18
|
+
# 0 silently when owned_skills is absent or empty.
|
|
19
|
+
#
|
|
20
|
+
# Usage: restore-owned-skills.sh [--upstream-ref <ref>] (default upstream/main)
|
|
21
|
+
|
|
22
|
+
set -uo pipefail
|
|
23
|
+
|
|
24
|
+
UPSTREAM_REF="upstream/main"
|
|
25
|
+
if [ "${1:-}" = "--upstream-ref" ] && [ -n "${2:-}" ]; then
|
|
26
|
+
UPSTREAM_REF="$2"
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
command -v jq >/dev/null 2>&1 || exit 0
|
|
30
|
+
[ -f egregore.json ] || exit 0
|
|
31
|
+
git rev-parse --git-dir >/dev/null 2>&1 || exit 0
|
|
32
|
+
|
|
33
|
+
OWNED=$(jq -r '.owned_skills // [] | .[]' egregore.json 2>/dev/null)
|
|
34
|
+
[ -n "$OWNED" ] || exit 0
|
|
35
|
+
|
|
36
|
+
while IFS= read -r name; do
|
|
37
|
+
[ -n "$name" ] || continue
|
|
38
|
+
case "$name" in
|
|
39
|
+
*/*|.*|*..*|*' '*)
|
|
40
|
+
echo " ⚠ owned_skills: invalid name '$name' — skipped" >&2
|
|
41
|
+
continue
|
|
42
|
+
;;
|
|
43
|
+
esac
|
|
44
|
+
SKILL_PATH=".claude/skills/$name"
|
|
45
|
+
|
|
46
|
+
# Only a name collision needs work — an org-only skill is never touched by
|
|
47
|
+
# the overlay, and resetting it here would destroy uncommitted local edits.
|
|
48
|
+
if ! git ls-tree -d "$UPSTREAM_REF" -- "$SKILL_PATH" 2>/dev/null | grep -q .; then
|
|
49
|
+
continue
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
if git cat-file -e "HEAD:$SKILL_PATH" 2>/dev/null; then
|
|
53
|
+
# Wipe the overlay's copy (index + tree), then restore the org's committed
|
|
54
|
+
# version. rm+checkout also drops upstream-only files inside the dir.
|
|
55
|
+
git rm -r --cached --quiet -- "$SKILL_PATH" 2>/dev/null || true
|
|
56
|
+
rm -rf "$SKILL_PATH"
|
|
57
|
+
git checkout HEAD -- "$SKILL_PATH" 2>/dev/null || true
|
|
58
|
+
echo " ◐ owned skill '$name': upstream ships a skill with this name — kept yours."
|
|
59
|
+
echo " Review upstream's version: git diff HEAD $UPSTREAM_REF -- $SKILL_PATH"
|
|
60
|
+
else
|
|
61
|
+
echo " ⚠ owned skill '$name': upstream ships this name and you have no committed version — upstream's copy is in the tree. Commit yours and re-run /update to keep it."
|
|
62
|
+
fi
|
|
63
|
+
done <<EOF
|
|
64
|
+
$OWNED
|
|
65
|
+
EOF
|
|
66
|
+
|
|
67
|
+
exit 0
|