create-egregore 0.21.6 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/egregore-launcher.js +58 -6
- package/assets/egregore-launcher.sh +15 -2
- package/lib/claude-runtime.js +2 -0
- package/lib/codex-runtime.js +2 -0
- package/lib/setup.js +20 -3
- package/package.json +2 -2
- package/runtime/claude/.claude/context/commit-format.md +7 -4
- package/runtime/claude/.claude/context/handoff-claiming.md +32 -0
- package/runtime/claude/.claude/context/notification-consent.md +12 -9
- package/runtime/claude/.claude/hooks/boundary-check.sh +14 -331
- package/runtime/claude/.claude/hooks/memory-read-guard.sh +9 -1
- package/runtime/claude/.claude/rules/voice-bedrock.md +6 -2
- package/runtime/claude/.claude/settings.json +1 -1
- package/runtime/claude/.claude/skills/commit/SKILL.md +5 -3
- package/runtime/claude/.claude/skills/dark-mode/SKILL.md +48 -369
- package/runtime/claude/.claude/skills/records/SKILL.md +158 -0
- package/runtime/claude/.claude/skills/reflect/SKILL.md +50 -21
- package/runtime/claude/.claude/skills/review-pr/SKILL.md +4 -2
- package/runtime/claude/.claude/skills/save/SKILL.md +9 -3
- package/runtime/claude/.claude/skills/summon/SKILL.md +138 -207
- package/runtime/claude/.claude/skills/tui-design/SKILL.md +1 -1
- package/runtime/claude/.claude/skills/update/SKILL.md +1 -1
- package/runtime/claude/.claude/skills/view/SKILL.md +52 -16
- package/runtime/claude/.claude/skills/view/compose-scaffold.html +19 -13
- package/runtime/claude/CLAUDE.md +59 -95
- package/runtime/claude/bin/agent.sh +231 -7
- package/runtime/claude/bin/api-call.sh +44 -23
- package/runtime/claude/bin/artifact-register.sh +7 -1
- package/runtime/claude/bin/artifact-writeback.sh +1 -1
- package/runtime/claude/bin/artifacts.sh +66 -265
- package/runtime/claude/bin/attendant.sh +4 -1
- package/runtime/claude/bin/boundary-guard.cjs +1848 -0
- package/runtime/claude/bin/boundary-hook.sh +41 -0
- package/runtime/claude/bin/boundary.sh +15 -155
- package/runtime/claude/bin/capture-run.sh +32 -2
- package/runtime/claude/bin/codex-render-spec.mjs +24 -46
- package/runtime/claude/bin/codex-session-start.sh +19 -0
- package/runtime/claude/bin/codex-skill-render.mjs +18 -0
- package/runtime/claude/bin/config-get.sh +10 -1
- package/runtime/claude/bin/connect-refresh.sh +16 -0
- package/runtime/claude/bin/corpus_map.py +5 -0
- package/runtime/claude/bin/data/capabilities/claude.json +1480 -0
- package/runtime/claude/bin/genui.sh +19 -0
- package/runtime/claude/bin/graph-batch.sh +1 -1
- package/runtime/claude/bin/graph-op.sh +14 -0
- package/runtime/claude/bin/graph.sh +1 -1
- package/runtime/claude/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/claude/bin/handoff-run.sh +11 -6
- package/runtime/claude/bin/ingest-item.sh +1 -1
- package/runtime/claude/bin/ingest-surface.html +22 -4
- package/runtime/claude/bin/issue.sh +1 -1
- package/runtime/claude/bin/knowledge.sh +1 -1
- package/runtime/claude/bin/lib/card-delivery.sh +329 -0
- package/runtime/claude/bin/lib/config.sh +148 -3
- package/runtime/claude/bin/lib/context.sh +38 -67
- package/runtime/claude/bin/lib/genui-entry.py +36 -0
- package/runtime/claude/bin/lib/git-message.sh +25 -6
- package/runtime/claude/bin/lib/git-sync.sh +12 -4
- package/runtime/claude/bin/lib/greeting.sh +255 -28
- package/runtime/claude/bin/lib/handoff_meta.py +294 -0
- package/runtime/claude/bin/lib/health-footer.sh +83 -2
- package/runtime/claude/bin/lib/identity.sh +31 -10
- package/runtime/claude/bin/lib/instance-registry.sh +71 -0
- package/runtime/claude/bin/lib/local_ci_receipt.py +249 -0
- package/runtime/claude/bin/lib/metrics.sh +121 -8
- package/runtime/claude/bin/lib/notices.sh +36 -0
- package/runtime/claude/bin/lib/record_outcomes.py +729 -0
- package/runtime/claude/bin/lib/reflexes.py +267 -0
- package/runtime/claude/bin/lib/retrieval_scorecard.py +624 -0
- package/runtime/claude/bin/lib/session-record-prompt.txt +18 -0
- package/runtime/claude/bin/lib/session_record.py +3747 -0
- package/runtime/claude/bin/lib/session_trail.py +1983 -0
- package/runtime/claude/bin/lib/settings-drift.sh +8 -5
- package/runtime/claude/bin/lib/startup-restart.sh +41 -0
- package/runtime/claude/bin/lib/worktree-links.sh +92 -0
- package/runtime/claude/bin/memory-push.sh +6 -0
- package/runtime/claude/bin/merge-gate.sh +498 -0
- package/runtime/claude/bin/notify.sh +5 -2
- package/runtime/claude/bin/page-access.sh +103 -0
- package/runtime/claude/bin/person.sh +13 -2
- package/runtime/claude/bin/pi-render-spec.mjs +0 -1
- package/runtime/claude/bin/pi-spirit-discovery.mjs +34 -0
- package/runtime/claude/bin/post-update.sh +181 -0
- package/runtime/claude/bin/prime-render-spec.mjs +0 -1
- package/runtime/claude/bin/publish-artifact.sh +89 -42
- package/runtime/claude/bin/qa-inventory.sh +2 -2
- package/runtime/claude/bin/quest.sh +1 -1
- package/runtime/claude/bin/records.sh +11 -0
- package/runtime/claude/bin/reflexes/05-vitals.sh +9 -0
- package/runtime/claude/bin/reflexes/10-open-items.sh +12 -0
- package/runtime/claude/bin/reflexes/15-retrieval.sh +8 -0
- package/runtime/claude/bin/reflexes/20-nightly.sh +100 -0
- package/runtime/claude/bin/reflexes/20-sandbox.sh +85 -0
- package/runtime/claude/bin/reflexes/30-cost.py +116 -0
- package/runtime/claude/bin/reflexes/40-shells.py +51 -0
- package/runtime/claude/bin/reflexes/README.md +61 -0
- package/runtime/claude/bin/reflexes.sh +7 -0
- package/runtime/claude/bin/runtime-identity.sh +140 -42
- package/runtime/claude/bin/screenshot.sh +77 -0
- package/runtime/claude/bin/scroll.sh +1 -1
- package/runtime/claude/bin/search.sh +31 -5
- package/runtime/claude/bin/session-autosave.sh +6 -3
- package/runtime/claude/bin/session-id.sh +147 -0
- package/runtime/claude/bin/session-log.sh +19 -0
- package/runtime/claude/bin/session-record.sh +26 -0
- package/runtime/claude/bin/session-start.sh +121 -151
- package/runtime/claude/bin/settings.sh +13 -8
- package/runtime/claude/bin/spirit-discovery-claude.sh +4 -0
- package/runtime/claude/bin/spirit-discovery-codex.sh +4 -0
- package/runtime/claude/bin/spirit-discovery-pi.sh +4 -0
- package/runtime/claude/bin/spirit-discovery-prime.sh +4 -0
- package/runtime/claude/bin/spirit-discovery.sh +4 -0
- package/runtime/claude/bin/startup-check.sh +1 -1
- package/runtime/claude/bin/telemetry.sh +11 -4
- package/runtime/claude/bin/test-baseline.sh +33 -5
- package/runtime/claude/bin/todo.sh +1 -1
- package/runtime/claude/bin/worktree-create.sh +15 -45
- package/runtime/claude/bin/worktree.sh +6 -0
- package/runtime/claude/docs/spirit-discovery.md +96 -0
- package/runtime/claude/egregore_runtime/__init__.py +18 -12
- package/runtime/claude/egregore_runtime/access.py +608 -0
- package/runtime/claude/egregore_runtime/access_cli.py +190 -0
- package/runtime/claude/egregore_runtime/adapters/invitation.py +5 -3
- package/runtime/claude/egregore_runtime/adapters/qmd.py +521 -47
- package/runtime/claude/egregore_runtime/admin_entry.py +56 -0
- package/runtime/claude/egregore_runtime/artifacts.py +222 -16
- package/runtime/claude/egregore_runtime/contracts.py +27 -0
- package/runtime/claude/egregore_runtime/eligibility.py +5 -12
- package/runtime/claude/egregore_runtime/episode_binding.py +16 -5
- package/runtime/claude/egregore_runtime/github_issues.py +2 -2
- package/runtime/claude/egregore_runtime/handoff_lookup.py +9 -20
- package/runtime/claude/egregore_runtime/harness_cli.py +674 -149
- package/runtime/claude/egregore_runtime/held.py +2436 -0
- package/runtime/claude/egregore_runtime/hosted_api.py +137 -0
- package/runtime/claude/egregore_runtime/identity.py +196 -65
- package/runtime/claude/egregore_runtime/identity_transfer.py +6 -2
- package/runtime/claude/egregore_runtime/ingest_cli.py +2 -2
- package/runtime/claude/egregore_runtime/ingest_index_cli.py +4 -16
- package/runtime/claude/egregore_runtime/installation.py +119 -0
- package/runtime/claude/egregore_runtime/investigation.py +64 -41
- package/runtime/claude/egregore_runtime/investigation_guidance.py +16 -11
- package/runtime/claude/egregore_runtime/issue_cli.py +51 -32
- package/runtime/claude/egregore_runtime/issue_reporting.py +4 -3
- package/runtime/claude/egregore_runtime/issue_triage_service.py +2 -2
- package/runtime/claude/egregore_runtime/issues.py +12 -6
- package/runtime/claude/egregore_runtime/knowledge.py +331 -5
- package/runtime/claude/egregore_runtime/knowledge_cli.py +57 -17
- package/runtime/claude/egregore_runtime/lifecycle.py +88 -22
- package/runtime/claude/egregore_runtime/lifecycle_cli.py +21 -13
- package/runtime/claude/egregore_runtime/line_ids.py +10 -0
- package/runtime/claude/egregore_runtime/memory_push.py +349 -0
- package/runtime/claude/egregore_runtime/observe.py +64 -25
- package/runtime/claude/egregore_runtime/observers.py +19 -0
- package/runtime/claude/egregore_runtime/optional_modules.py +13 -0
- package/runtime/claude/egregore_runtime/outputs_cli.py +321 -0
- package/runtime/claude/egregore_runtime/policy.py +651 -24
- package/runtime/claude/egregore_runtime/private_result.py +2 -1
- package/runtime/claude/egregore_runtime/projection.py +946 -0
- package/runtime/claude/egregore_runtime/quest_cli.py +20 -23
- package/runtime/claude/egregore_runtime/question_cli.py +15 -11
- package/runtime/claude/egregore_runtime/questions.py +10 -10
- package/runtime/claude/egregore_runtime/quests.py +10 -10
- package/runtime/claude/egregore_runtime/record_publish.py +548 -0
- package/runtime/claude/egregore_runtime/record_subject.py +564 -0
- package/runtime/claude/egregore_runtime/research_ingest.py +2 -4
- package/runtime/claude/egregore_runtime/runtime.py +169 -60
- package/runtime/claude/egregore_runtime/sandbox.py +194 -0
- package/runtime/claude/egregore_runtime/scroll_cli.py +22 -32
- package/runtime/claude/egregore_runtime/scrolls.py +23 -15
- package/runtime/claude/egregore_runtime/shadow.py +262 -0
- package/runtime/claude/egregore_runtime/spirit_discovery.py +487 -0
- package/runtime/claude/egregore_runtime/spirit_discovery_cli.py +25 -0
- package/runtime/claude/egregore_runtime/spirit_discovery_transport.py +18 -0
- package/runtime/claude/egregore_runtime/status.py +101 -44
- package/runtime/claude/egregore_runtime/status_cli.py +13 -5
- package/runtime/claude/egregore_runtime/sync.py +39 -21
- package/runtime/claude/egregore_runtime/taste.py +934 -0
- package/runtime/claude/egregore_runtime/taste_cli.py +242 -0
- package/runtime/claude/egregore_runtime/taste_rules.py +91 -0
- package/runtime/claude/egregore_runtime/telemetry.py +26 -3
- package/runtime/claude/egregore_runtime/todo_cli.py +15 -12
- package/runtime/claude/egregore_runtime/todos.py +3 -2
- package/runtime/claude/egregore_runtime/upgrade.py +85 -58
- package/runtime/claude/egregore_runtime/writeback.py +330 -24
- package/runtime/claude/manifest.json +65 -5
- package/runtime/codex/.claude/context/handoff-claiming.md +32 -0
- package/runtime/codex/.claude/context/notification-consent.md +12 -9
- package/runtime/codex/.claude/skills/view/SKILL.md +438 -0
- package/runtime/codex/.codex/hooks.json +11 -0
- package/runtime/codex/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/records/SKILL.md +29 -0
- package/runtime/codex/.codex/skills/summon/SKILL.md +1 -1
- package/runtime/codex/.codex/skills/view/assets/compose-scaffold.html +19 -13
- package/runtime/codex/.codex/spec-manifest.json +13 -19
- package/runtime/codex/AGENTS.md +54 -105
- package/runtime/codex/bin/agent.sh +231 -7
- package/runtime/codex/bin/api-call.sh +44 -23
- package/runtime/codex/bin/artifact-register.sh +7 -1
- package/runtime/codex/bin/artifact-writeback.sh +1 -1
- package/runtime/codex/bin/artifacts.sh +66 -265
- package/runtime/codex/bin/attendant.sh +4 -1
- package/runtime/codex/bin/boundary-guard.cjs +1848 -0
- package/runtime/codex/bin/boundary-hook.sh +41 -0
- package/runtime/codex/bin/capture-run.sh +32 -2
- package/runtime/codex/bin/codex-render-spec.mjs +24 -46
- package/runtime/codex/bin/codex-session-start.sh +19 -0
- package/runtime/codex/bin/codex-skill-render.mjs +18 -0
- package/runtime/codex/bin/config-get.sh +10 -1
- package/runtime/codex/bin/connect-refresh.sh +16 -0
- package/runtime/codex/bin/corpus_map.py +5 -0
- package/runtime/codex/bin/data/capabilities/codex.json +1458 -0
- package/runtime/codex/bin/genui.sh +19 -0
- package/runtime/codex/bin/graph-batch.sh +1 -1
- package/runtime/codex/bin/graph-op.sh +14 -0
- package/runtime/codex/bin/graph.sh +1 -1
- package/runtime/codex/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/codex/bin/handoff-run.sh +11 -6
- package/runtime/codex/bin/ingest-item.sh +1 -1
- package/runtime/codex/bin/ingest-surface.html +22 -4
- package/runtime/codex/bin/issue.sh +1 -1
- package/runtime/codex/bin/knowledge.sh +1 -1
- package/runtime/codex/bin/lib/card-delivery.sh +329 -0
- package/runtime/codex/bin/lib/config.sh +148 -3
- package/runtime/codex/bin/lib/context.sh +38 -67
- package/runtime/codex/bin/lib/genui-entry.py +36 -0
- package/runtime/codex/bin/lib/git-message.sh +25 -6
- package/runtime/codex/bin/lib/git-sync.sh +12 -4
- package/runtime/codex/bin/lib/greeting.sh +255 -28
- package/runtime/codex/bin/lib/handoff_meta.py +294 -0
- package/runtime/codex/bin/lib/health-footer.sh +83 -2
- package/runtime/codex/bin/lib/identity.sh +31 -10
- package/runtime/codex/bin/lib/instance-registry.sh +71 -0
- package/runtime/codex/bin/lib/local_ci_receipt.py +249 -0
- package/runtime/codex/bin/lib/metrics.sh +121 -8
- package/runtime/codex/bin/lib/notices.sh +36 -0
- package/runtime/codex/bin/lib/record_outcomes.py +729 -0
- package/runtime/codex/bin/lib/reflexes.py +267 -0
- package/runtime/codex/bin/lib/retrieval_scorecard.py +624 -0
- package/runtime/codex/bin/lib/session-record-prompt.txt +18 -0
- package/runtime/codex/bin/lib/session_record.py +3747 -0
- package/runtime/codex/bin/lib/session_trail.py +1983 -0
- package/runtime/codex/bin/lib/settings-drift.sh +8 -5
- package/runtime/codex/bin/lib/startup-restart.sh +41 -0
- package/runtime/codex/bin/lib/worktree-links.sh +92 -0
- package/runtime/codex/bin/memory-push.sh +6 -0
- package/runtime/codex/bin/merge-gate.sh +498 -0
- package/runtime/codex/bin/notify.sh +5 -2
- package/runtime/codex/bin/page-access.sh +103 -0
- package/runtime/codex/bin/person.sh +13 -2
- package/runtime/codex/bin/pi-render-spec.mjs +0 -1
- package/runtime/codex/bin/pi-spirit-discovery.mjs +34 -0
- package/runtime/codex/bin/post-update.sh +181 -0
- package/runtime/codex/bin/prime-render-spec.mjs +0 -1
- package/runtime/codex/bin/publish-artifact.sh +89 -42
- package/runtime/codex/bin/qa-inventory.sh +2 -2
- package/runtime/codex/bin/quest.sh +1 -1
- package/runtime/codex/bin/records.sh +11 -0
- package/runtime/codex/bin/reflexes/05-vitals.sh +9 -0
- package/runtime/codex/bin/reflexes/10-open-items.sh +12 -0
- package/runtime/codex/bin/reflexes/15-retrieval.sh +8 -0
- package/runtime/codex/bin/reflexes/20-nightly.sh +100 -0
- package/runtime/codex/bin/reflexes/20-sandbox.sh +85 -0
- package/runtime/codex/bin/reflexes/30-cost.py +116 -0
- package/runtime/codex/bin/reflexes/40-shells.py +51 -0
- package/runtime/codex/bin/reflexes/README.md +61 -0
- package/runtime/codex/bin/reflexes.sh +7 -0
- package/runtime/codex/bin/runtime-identity.sh +140 -42
- package/runtime/codex/bin/screenshot.sh +77 -0
- package/runtime/codex/bin/scroll.sh +1 -1
- package/runtime/codex/bin/search.sh +31 -5
- package/runtime/codex/bin/session-autosave.sh +6 -3
- package/runtime/codex/bin/session-id.sh +147 -0
- package/runtime/codex/bin/session-log.sh +19 -0
- package/runtime/codex/bin/session-record.sh +26 -0
- package/runtime/codex/bin/settings.sh +13 -8
- package/runtime/codex/bin/spirit-discovery-claude.sh +4 -0
- package/runtime/codex/bin/spirit-discovery-codex.sh +4 -0
- package/runtime/codex/bin/spirit-discovery-pi.sh +4 -0
- package/runtime/codex/bin/spirit-discovery-prime.sh +4 -0
- package/runtime/codex/bin/spirit-discovery.sh +4 -0
- package/runtime/codex/bin/startup-check.sh +1 -1
- package/runtime/codex/bin/telemetry.sh +11 -4
- package/runtime/codex/bin/test-baseline.sh +33 -5
- package/runtime/codex/bin/todo.sh +1 -1
- package/runtime/codex/bin/worktree-create.sh +15 -45
- package/runtime/codex/bin/worktree.sh +6 -0
- package/runtime/codex/docs/spirit-discovery.md +96 -0
- package/runtime/codex/egregore_runtime/__init__.py +18 -12
- package/runtime/codex/egregore_runtime/access.py +608 -0
- package/runtime/codex/egregore_runtime/access_cli.py +190 -0
- package/runtime/codex/egregore_runtime/adapters/invitation.py +5 -3
- package/runtime/codex/egregore_runtime/adapters/qmd.py +521 -47
- package/runtime/codex/egregore_runtime/admin_entry.py +56 -0
- package/runtime/codex/egregore_runtime/artifacts.py +222 -16
- package/runtime/codex/egregore_runtime/contracts.py +27 -0
- package/runtime/codex/egregore_runtime/eligibility.py +5 -12
- package/runtime/codex/egregore_runtime/episode_binding.py +16 -5
- package/runtime/codex/egregore_runtime/github_issues.py +2 -2
- package/runtime/codex/egregore_runtime/handoff_lookup.py +9 -20
- package/runtime/codex/egregore_runtime/harness_cli.py +674 -149
- package/runtime/codex/egregore_runtime/held.py +2436 -0
- package/runtime/codex/egregore_runtime/hosted_api.py +137 -0
- package/runtime/codex/egregore_runtime/identity.py +196 -65
- package/runtime/codex/egregore_runtime/identity_transfer.py +6 -2
- package/runtime/codex/egregore_runtime/ingest_cli.py +2 -2
- package/runtime/codex/egregore_runtime/ingest_index_cli.py +4 -16
- package/runtime/codex/egregore_runtime/installation.py +119 -0
- package/runtime/codex/egregore_runtime/investigation.py +64 -41
- package/runtime/codex/egregore_runtime/investigation_guidance.py +16 -11
- package/runtime/codex/egregore_runtime/issue_cli.py +51 -32
- package/runtime/codex/egregore_runtime/issue_reporting.py +4 -3
- package/runtime/codex/egregore_runtime/issue_triage_service.py +2 -2
- package/runtime/codex/egregore_runtime/issues.py +12 -6
- package/runtime/codex/egregore_runtime/knowledge.py +331 -5
- package/runtime/codex/egregore_runtime/knowledge_cli.py +57 -17
- package/runtime/codex/egregore_runtime/lifecycle.py +88 -22
- package/runtime/codex/egregore_runtime/lifecycle_cli.py +21 -13
- package/runtime/codex/egregore_runtime/line_ids.py +10 -0
- package/runtime/codex/egregore_runtime/memory_push.py +349 -0
- package/runtime/codex/egregore_runtime/observe.py +64 -25
- package/runtime/codex/egregore_runtime/observers.py +19 -0
- package/runtime/codex/egregore_runtime/optional_modules.py +13 -0
- package/runtime/codex/egregore_runtime/outputs_cli.py +321 -0
- package/runtime/codex/egregore_runtime/policy.py +651 -24
- package/runtime/codex/egregore_runtime/private_result.py +2 -1
- package/runtime/codex/egregore_runtime/projection.py +946 -0
- package/runtime/codex/egregore_runtime/quest_cli.py +20 -23
- package/runtime/codex/egregore_runtime/question_cli.py +15 -11
- package/runtime/codex/egregore_runtime/questions.py +10 -10
- package/runtime/codex/egregore_runtime/quests.py +10 -10
- package/runtime/codex/egregore_runtime/record_publish.py +548 -0
- package/runtime/codex/egregore_runtime/record_subject.py +564 -0
- package/runtime/codex/egregore_runtime/research_ingest.py +2 -4
- package/runtime/codex/egregore_runtime/runtime.py +169 -60
- package/runtime/codex/egregore_runtime/sandbox.py +194 -0
- package/runtime/codex/egregore_runtime/scroll_cli.py +22 -32
- package/runtime/codex/egregore_runtime/scrolls.py +23 -15
- package/runtime/codex/egregore_runtime/shadow.py +262 -0
- package/runtime/codex/egregore_runtime/spirit_discovery.py +487 -0
- package/runtime/codex/egregore_runtime/spirit_discovery_cli.py +25 -0
- package/runtime/codex/egregore_runtime/spirit_discovery_transport.py +18 -0
- package/runtime/codex/egregore_runtime/status.py +101 -44
- package/runtime/codex/egregore_runtime/status_cli.py +13 -5
- package/runtime/codex/egregore_runtime/sync.py +39 -21
- package/runtime/codex/egregore_runtime/taste.py +934 -0
- package/runtime/codex/egregore_runtime/taste_cli.py +242 -0
- package/runtime/codex/egregore_runtime/taste_rules.py +91 -0
- package/runtime/codex/egregore_runtime/telemetry.py +26 -3
- package/runtime/codex/egregore_runtime/todo_cli.py +15 -12
- package/runtime/codex/egregore_runtime/todos.py +3 -2
- package/runtime/codex/egregore_runtime/upgrade.py +85 -58
- package/runtime/codex/egregore_runtime/writeback.py +330 -24
- package/runtime/codex/manifest.json +66 -5
- package/runtime/pi/.claude/context/handoff-claiming.md +32 -0
- package/runtime/pi/.claude/context/notification-consent.md +12 -9
- package/runtime/pi/.claude/skills/view/SKILL.md +438 -0
- package/runtime/pi/.codex/hooks.json +11 -0
- package/runtime/pi/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/records/SKILL.md +29 -0
- package/runtime/pi/.codex/skills/summon/SKILL.md +1 -1
- package/runtime/pi/.codex/skills/view/assets/compose-scaffold.html +19 -13
- package/runtime/pi/.codex/spec-manifest.json +13 -19
- package/runtime/pi/.pi/APPEND_SYSTEM.md +53 -99
- package/runtime/pi/.pi/extensions/egregore.ts +13 -1
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +54 -105
- package/runtime/pi/bin/agent.sh +231 -7
- package/runtime/pi/bin/api-call.sh +44 -23
- package/runtime/pi/bin/artifact-register.sh +7 -1
- package/runtime/pi/bin/artifact-writeback.sh +1 -1
- package/runtime/pi/bin/artifacts.sh +66 -265
- package/runtime/pi/bin/attendant.sh +4 -1
- package/runtime/pi/bin/boundary-guard.cjs +1848 -0
- package/runtime/pi/bin/boundary-hook.sh +41 -0
- package/runtime/pi/bin/capture-run.sh +32 -2
- package/runtime/pi/bin/codex-render-spec.mjs +24 -46
- package/runtime/pi/bin/codex-session-start.sh +19 -0
- package/runtime/pi/bin/codex-skill-render.mjs +18 -0
- package/runtime/pi/bin/config-get.sh +10 -1
- package/runtime/pi/bin/connect-refresh.sh +16 -0
- package/runtime/pi/bin/corpus_map.py +5 -0
- package/runtime/pi/bin/data/capabilities/pi.json +1458 -0
- package/runtime/pi/bin/genui.sh +19 -0
- package/runtime/pi/bin/graph-batch.sh +1 -1
- package/runtime/pi/bin/graph-op.sh +14 -0
- package/runtime/pi/bin/graph.sh +1 -1
- package/runtime/pi/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/pi/bin/handoff-run.sh +11 -6
- package/runtime/pi/bin/ingest-item.sh +1 -1
- package/runtime/pi/bin/ingest-surface.html +22 -4
- package/runtime/pi/bin/issue.sh +1 -1
- package/runtime/pi/bin/knowledge.sh +1 -1
- package/runtime/pi/bin/lib/card-delivery.sh +329 -0
- package/runtime/pi/bin/lib/config.sh +148 -3
- package/runtime/pi/bin/lib/context.sh +38 -67
- package/runtime/pi/bin/lib/genui-entry.py +36 -0
- package/runtime/pi/bin/lib/git-message.sh +25 -6
- package/runtime/pi/bin/lib/git-sync.sh +12 -4
- package/runtime/pi/bin/lib/greeting.sh +255 -28
- package/runtime/pi/bin/lib/handoff_meta.py +294 -0
- package/runtime/pi/bin/lib/health-footer.sh +83 -2
- package/runtime/pi/bin/lib/identity.sh +31 -10
- package/runtime/pi/bin/lib/instance-registry.sh +71 -0
- package/runtime/pi/bin/lib/local_ci_receipt.py +249 -0
- package/runtime/pi/bin/lib/metrics.sh +121 -8
- package/runtime/pi/bin/lib/notices.sh +36 -0
- package/runtime/pi/bin/lib/record_outcomes.py +729 -0
- package/runtime/pi/bin/lib/reflexes.py +267 -0
- package/runtime/pi/bin/lib/retrieval_scorecard.py +624 -0
- package/runtime/pi/bin/lib/session-record-prompt.txt +18 -0
- package/runtime/pi/bin/lib/session_record.py +3747 -0
- package/runtime/pi/bin/lib/session_trail.py +1983 -0
- package/runtime/pi/bin/lib/settings-drift.sh +8 -5
- package/runtime/pi/bin/lib/startup-restart.sh +41 -0
- package/runtime/pi/bin/lib/worktree-links.sh +92 -0
- package/runtime/pi/bin/memory-push.sh +6 -0
- package/runtime/pi/bin/merge-gate.sh +498 -0
- package/runtime/pi/bin/notify.sh +5 -2
- package/runtime/pi/bin/page-access.sh +103 -0
- package/runtime/pi/bin/person.sh +13 -2
- package/runtime/pi/bin/pi-branch-policy.mjs +37 -0
- package/runtime/pi/bin/pi-observe-context.mjs +97 -4
- package/runtime/pi/bin/pi-render-spec.mjs +0 -1
- package/runtime/pi/bin/pi-session-start.sh +4 -1
- package/runtime/pi/bin/pi-spirit-discovery.mjs +34 -0
- package/runtime/pi/bin/post-update.sh +181 -0
- package/runtime/pi/bin/prime-render-spec.mjs +0 -1
- package/runtime/pi/bin/publish-artifact.sh +89 -42
- package/runtime/pi/bin/qa-inventory.sh +2 -2
- package/runtime/pi/bin/quest.sh +1 -1
- package/runtime/pi/bin/records.sh +11 -0
- package/runtime/pi/bin/reflexes/05-vitals.sh +9 -0
- package/runtime/pi/bin/reflexes/10-open-items.sh +12 -0
- package/runtime/pi/bin/reflexes/15-retrieval.sh +8 -0
- package/runtime/pi/bin/reflexes/20-nightly.sh +100 -0
- package/runtime/pi/bin/reflexes/20-sandbox.sh +85 -0
- package/runtime/pi/bin/reflexes/30-cost.py +116 -0
- package/runtime/pi/bin/reflexes/40-shells.py +51 -0
- package/runtime/pi/bin/reflexes/README.md +61 -0
- package/runtime/pi/bin/reflexes.sh +7 -0
- package/runtime/pi/bin/runtime-identity.sh +140 -42
- package/runtime/pi/bin/screenshot.sh +77 -0
- package/runtime/pi/bin/scroll.sh +1 -1
- package/runtime/pi/bin/search.sh +31 -5
- package/runtime/pi/bin/session-autosave.sh +6 -3
- package/runtime/pi/bin/session-id.sh +147 -0
- package/runtime/pi/bin/session-log.sh +19 -0
- package/runtime/pi/bin/session-record.sh +26 -0
- package/runtime/pi/bin/settings.sh +13 -8
- package/runtime/pi/bin/spirit-discovery-claude.sh +4 -0
- package/runtime/pi/bin/spirit-discovery-codex.sh +4 -0
- package/runtime/pi/bin/spirit-discovery-pi.sh +4 -0
- package/runtime/pi/bin/spirit-discovery-prime.sh +4 -0
- package/runtime/pi/bin/spirit-discovery.sh +4 -0
- package/runtime/pi/bin/startup-check.sh +1 -1
- package/runtime/pi/bin/telemetry.sh +11 -4
- package/runtime/pi/bin/test-baseline.sh +33 -5
- package/runtime/pi/bin/todo.sh +1 -1
- package/runtime/pi/bin/worktree-create.sh +15 -45
- package/runtime/pi/bin/worktree.sh +6 -0
- package/runtime/pi/docs/spirit-discovery.md +96 -0
- package/runtime/pi/egregore_runtime/__init__.py +18 -12
- package/runtime/pi/egregore_runtime/access.py +608 -0
- package/runtime/pi/egregore_runtime/access_cli.py +190 -0
- package/runtime/pi/egregore_runtime/adapters/invitation.py +5 -3
- package/runtime/pi/egregore_runtime/adapters/qmd.py +521 -47
- package/runtime/pi/egregore_runtime/admin_entry.py +56 -0
- package/runtime/pi/egregore_runtime/artifacts.py +222 -16
- package/runtime/pi/egregore_runtime/contracts.py +27 -0
- package/runtime/pi/egregore_runtime/eligibility.py +5 -12
- package/runtime/pi/egregore_runtime/episode_binding.py +16 -5
- package/runtime/pi/egregore_runtime/github_issues.py +2 -2
- package/runtime/pi/egregore_runtime/handoff_lookup.py +9 -20
- package/runtime/pi/egregore_runtime/harness_cli.py +674 -149
- package/runtime/pi/egregore_runtime/held.py +2436 -0
- package/runtime/pi/egregore_runtime/hosted_api.py +137 -0
- package/runtime/pi/egregore_runtime/identity.py +196 -65
- package/runtime/pi/egregore_runtime/identity_transfer.py +6 -2
- package/runtime/pi/egregore_runtime/ingest_cli.py +2 -2
- package/runtime/pi/egregore_runtime/ingest_index_cli.py +4 -16
- package/runtime/pi/egregore_runtime/installation.py +119 -0
- package/runtime/pi/egregore_runtime/investigation.py +64 -41
- package/runtime/pi/egregore_runtime/investigation_guidance.py +16 -11
- package/runtime/pi/egregore_runtime/issue_cli.py +51 -32
- package/runtime/pi/egregore_runtime/issue_reporting.py +4 -3
- package/runtime/pi/egregore_runtime/issue_triage_service.py +2 -2
- package/runtime/pi/egregore_runtime/issues.py +12 -6
- package/runtime/pi/egregore_runtime/knowledge.py +331 -5
- package/runtime/pi/egregore_runtime/knowledge_cli.py +57 -17
- package/runtime/pi/egregore_runtime/lifecycle.py +88 -22
- package/runtime/pi/egregore_runtime/lifecycle_cli.py +21 -13
- package/runtime/pi/egregore_runtime/line_ids.py +10 -0
- package/runtime/pi/egregore_runtime/memory_push.py +349 -0
- package/runtime/pi/egregore_runtime/observe.py +64 -25
- package/runtime/pi/egregore_runtime/observers.py +19 -0
- package/runtime/pi/egregore_runtime/optional_modules.py +13 -0
- package/runtime/pi/egregore_runtime/outputs_cli.py +321 -0
- package/runtime/pi/egregore_runtime/policy.py +651 -24
- package/runtime/pi/egregore_runtime/private_result.py +2 -1
- package/runtime/pi/egregore_runtime/projection.py +946 -0
- package/runtime/pi/egregore_runtime/quest_cli.py +20 -23
- package/runtime/pi/egregore_runtime/question_cli.py +15 -11
- package/runtime/pi/egregore_runtime/questions.py +10 -10
- package/runtime/pi/egregore_runtime/quests.py +10 -10
- package/runtime/pi/egregore_runtime/record_publish.py +548 -0
- package/runtime/pi/egregore_runtime/record_subject.py +564 -0
- package/runtime/pi/egregore_runtime/research_ingest.py +2 -4
- package/runtime/pi/egregore_runtime/runtime.py +169 -60
- package/runtime/pi/egregore_runtime/sandbox.py +194 -0
- package/runtime/pi/egregore_runtime/scroll_cli.py +22 -32
- package/runtime/pi/egregore_runtime/scrolls.py +23 -15
- package/runtime/pi/egregore_runtime/shadow.py +262 -0
- package/runtime/pi/egregore_runtime/spirit_discovery.py +487 -0
- package/runtime/pi/egregore_runtime/spirit_discovery_cli.py +25 -0
- package/runtime/pi/egregore_runtime/spirit_discovery_transport.py +18 -0
- package/runtime/pi/egregore_runtime/status.py +101 -44
- package/runtime/pi/egregore_runtime/status_cli.py +13 -5
- package/runtime/pi/egregore_runtime/sync.py +39 -21
- package/runtime/pi/egregore_runtime/taste.py +934 -0
- package/runtime/pi/egregore_runtime/taste_cli.py +242 -0
- package/runtime/pi/egregore_runtime/taste_rules.py +91 -0
- package/runtime/pi/egregore_runtime/telemetry.py +26 -3
- package/runtime/pi/egregore_runtime/todo_cli.py +15 -12
- package/runtime/pi/egregore_runtime/todos.py +3 -2
- package/runtime/pi/egregore_runtime/upgrade.py +85 -58
- package/runtime/pi/egregore_runtime/writeback.py +330 -24
- package/runtime/pi/manifest.json +66 -5
- package/runtime/prime/.claude/context/handoff-claiming.md +32 -0
- package/runtime/prime/.claude/context/notification-consent.md +12 -9
- package/runtime/prime/.claude/skills/view/SKILL.md +438 -0
- package/runtime/prime/.codex/hooks.json +11 -0
- package/runtime/prime/.codex/skills/dark-mode/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/records/SKILL.md +29 -0
- package/runtime/prime/.codex/skills/summon/SKILL.md +1 -1
- package/runtime/prime/.codex/skills/view/assets/compose-scaffold.html +19 -13
- package/runtime/prime/.codex/spec-manifest.json +13 -19
- package/runtime/prime/.prime/agent/APPEND_SYSTEM.md +53 -99
- package/runtime/prime/.prime/agent/extensions/egregore.ts +14 -1
- package/runtime/prime/.prime/agent/skills/egregore/SKILL.md +14 -6
- package/runtime/prime/.prime/agent/skills/egregore/src/egregore/__init__.py +66 -1
- package/runtime/prime/.prime/agent/spec-manifest.json +2 -2
- package/runtime/prime/AGENTS.md +54 -105
- package/runtime/prime/bin/agent.sh +231 -7
- package/runtime/prime/bin/api-call.sh +44 -23
- package/runtime/prime/bin/artifact-register.sh +7 -1
- package/runtime/prime/bin/artifact-writeback.sh +1 -1
- package/runtime/prime/bin/artifacts.sh +66 -265
- package/runtime/prime/bin/attendant.sh +4 -1
- package/runtime/prime/bin/boundary-guard.cjs +1848 -0
- package/runtime/prime/bin/boundary-hook.sh +41 -0
- package/runtime/prime/bin/capture-run.sh +32 -2
- package/runtime/prime/bin/codex-render-spec.mjs +24 -46
- package/runtime/prime/bin/codex-session-start.sh +19 -0
- package/runtime/prime/bin/codex-skill-render.mjs +18 -0
- package/runtime/prime/bin/config-get.sh +10 -1
- package/runtime/prime/bin/connect-refresh.sh +16 -0
- package/runtime/prime/bin/corpus_map.py +5 -0
- package/runtime/prime/bin/data/capabilities/prime.json +1458 -0
- package/runtime/prime/bin/genui.sh +19 -0
- package/runtime/prime/bin/graph-batch.sh +1 -1
- package/runtime/prime/bin/graph-op.sh +14 -0
- package/runtime/prime/bin/graph.sh +1 -1
- package/runtime/prime/bin/handoff-pr-backfill.sh +1 -1
- package/runtime/prime/bin/handoff-run.sh +11 -6
- package/runtime/prime/bin/ingest-item.sh +1 -1
- package/runtime/prime/bin/ingest-surface.html +22 -4
- package/runtime/prime/bin/issue.sh +1 -1
- package/runtime/prime/bin/knowledge.sh +1 -1
- package/runtime/prime/bin/lib/card-delivery.sh +329 -0
- package/runtime/prime/bin/lib/config.sh +148 -3
- package/runtime/prime/bin/lib/context.sh +38 -67
- package/runtime/prime/bin/lib/genui-entry.py +36 -0
- package/runtime/prime/bin/lib/git-message.sh +25 -6
- package/runtime/prime/bin/lib/git-sync.sh +12 -4
- package/runtime/prime/bin/lib/greeting.sh +255 -28
- package/runtime/prime/bin/lib/handoff_meta.py +294 -0
- package/runtime/prime/bin/lib/health-footer.sh +83 -2
- package/runtime/prime/bin/lib/identity.sh +31 -10
- package/runtime/prime/bin/lib/instance-registry.sh +71 -0
- package/runtime/prime/bin/lib/local_ci_receipt.py +249 -0
- package/runtime/prime/bin/lib/metrics.sh +121 -8
- package/runtime/prime/bin/lib/notices.sh +36 -0
- package/runtime/prime/bin/lib/record_outcomes.py +729 -0
- package/runtime/prime/bin/lib/reflexes.py +267 -0
- package/runtime/prime/bin/lib/retrieval_scorecard.py +624 -0
- package/runtime/prime/bin/lib/session-record-prompt.txt +18 -0
- package/runtime/prime/bin/lib/session_record.py +3747 -0
- package/runtime/prime/bin/lib/session_trail.py +1983 -0
- package/runtime/prime/bin/lib/settings-drift.sh +8 -5
- package/runtime/prime/bin/lib/startup-restart.sh +41 -0
- package/runtime/prime/bin/lib/worktree-links.sh +92 -0
- package/runtime/prime/bin/memory-push.sh +6 -0
- package/runtime/prime/bin/merge-gate.sh +498 -0
- package/runtime/prime/bin/notify.sh +5 -2
- package/runtime/prime/bin/page-access.sh +103 -0
- package/runtime/prime/bin/person.sh +13 -2
- package/runtime/prime/bin/pi-branch-policy.mjs +37 -0
- package/runtime/prime/bin/pi-observe-context.mjs +97 -4
- package/runtime/prime/bin/pi-render-spec.mjs +0 -1
- package/runtime/prime/bin/pi-spirit-discovery.mjs +34 -0
- package/runtime/prime/bin/post-update.sh +181 -0
- package/runtime/prime/bin/prime-render-spec.mjs +0 -1
- package/runtime/prime/bin/prime-session-start.sh +3 -1
- package/runtime/prime/bin/publish-artifact.sh +89 -42
- package/runtime/prime/bin/qa-inventory.sh +2 -2
- package/runtime/prime/bin/quest.sh +1 -1
- package/runtime/prime/bin/records.sh +11 -0
- package/runtime/prime/bin/reflexes/05-vitals.sh +9 -0
- package/runtime/prime/bin/reflexes/10-open-items.sh +12 -0
- package/runtime/prime/bin/reflexes/15-retrieval.sh +8 -0
- package/runtime/prime/bin/reflexes/20-nightly.sh +100 -0
- package/runtime/prime/bin/reflexes/20-sandbox.sh +85 -0
- package/runtime/prime/bin/reflexes/30-cost.py +116 -0
- package/runtime/prime/bin/reflexes/40-shells.py +51 -0
- package/runtime/prime/bin/reflexes/README.md +61 -0
- package/runtime/prime/bin/reflexes.sh +7 -0
- package/runtime/prime/bin/runtime-identity.sh +140 -42
- package/runtime/prime/bin/screenshot.sh +77 -0
- package/runtime/prime/bin/scroll.sh +1 -1
- package/runtime/prime/bin/search.sh +31 -5
- package/runtime/prime/bin/session-autosave.sh +6 -3
- package/runtime/prime/bin/session-id.sh +147 -0
- package/runtime/prime/bin/session-log.sh +19 -0
- package/runtime/prime/bin/session-record.sh +26 -0
- package/runtime/prime/bin/settings.sh +13 -8
- package/runtime/prime/bin/spirit-discovery-claude.sh +4 -0
- package/runtime/prime/bin/spirit-discovery-codex.sh +4 -0
- package/runtime/prime/bin/spirit-discovery-pi.sh +4 -0
- package/runtime/prime/bin/spirit-discovery-prime.sh +4 -0
- package/runtime/prime/bin/spirit-discovery.sh +4 -0
- package/runtime/prime/bin/startup-check.sh +1 -1
- package/runtime/prime/bin/telemetry.sh +11 -4
- package/runtime/prime/bin/test-baseline.sh +33 -5
- package/runtime/prime/bin/todo.sh +1 -1
- package/runtime/prime/bin/worktree-create.sh +15 -45
- package/runtime/prime/bin/worktree.sh +6 -0
- package/runtime/prime/docs/spirit-discovery.md +96 -0
- package/runtime/prime/egregore_runtime/__init__.py +18 -12
- package/runtime/prime/egregore_runtime/access.py +608 -0
- package/runtime/prime/egregore_runtime/access_cli.py +190 -0
- package/runtime/prime/egregore_runtime/adapters/invitation.py +5 -3
- package/runtime/prime/egregore_runtime/adapters/qmd.py +521 -47
- package/runtime/prime/egregore_runtime/admin_entry.py +56 -0
- package/runtime/prime/egregore_runtime/artifacts.py +222 -16
- package/runtime/prime/egregore_runtime/contracts.py +27 -0
- package/runtime/prime/egregore_runtime/eligibility.py +5 -12
- package/runtime/prime/egregore_runtime/episode_binding.py +16 -5
- package/runtime/prime/egregore_runtime/github_issues.py +2 -2
- package/runtime/prime/egregore_runtime/handoff_lookup.py +9 -20
- package/runtime/prime/egregore_runtime/harness_cli.py +674 -149
- package/runtime/prime/egregore_runtime/held.py +2436 -0
- package/runtime/prime/egregore_runtime/hosted_api.py +137 -0
- package/runtime/prime/egregore_runtime/identity.py +196 -65
- package/runtime/prime/egregore_runtime/identity_transfer.py +6 -2
- package/runtime/prime/egregore_runtime/ingest_cli.py +2 -2
- package/runtime/prime/egregore_runtime/ingest_index_cli.py +4 -16
- package/runtime/prime/egregore_runtime/installation.py +119 -0
- package/runtime/prime/egregore_runtime/investigation.py +64 -41
- package/runtime/prime/egregore_runtime/investigation_guidance.py +16 -11
- package/runtime/prime/egregore_runtime/issue_cli.py +51 -32
- package/runtime/prime/egregore_runtime/issue_reporting.py +4 -3
- package/runtime/prime/egregore_runtime/issue_triage_service.py +2 -2
- package/runtime/prime/egregore_runtime/issues.py +12 -6
- package/runtime/prime/egregore_runtime/knowledge.py +331 -5
- package/runtime/prime/egregore_runtime/knowledge_cli.py +57 -17
- package/runtime/prime/egregore_runtime/lifecycle.py +88 -22
- package/runtime/prime/egregore_runtime/lifecycle_cli.py +21 -13
- package/runtime/prime/egregore_runtime/line_ids.py +10 -0
- package/runtime/prime/egregore_runtime/memory_push.py +349 -0
- package/runtime/prime/egregore_runtime/observe.py +64 -25
- package/runtime/prime/egregore_runtime/observers.py +19 -0
- package/runtime/prime/egregore_runtime/optional_modules.py +13 -0
- package/runtime/prime/egregore_runtime/outputs_cli.py +321 -0
- package/runtime/prime/egregore_runtime/policy.py +651 -24
- package/runtime/prime/egregore_runtime/private_result.py +2 -1
- package/runtime/prime/egregore_runtime/projection.py +946 -0
- package/runtime/prime/egregore_runtime/quest_cli.py +20 -23
- package/runtime/prime/egregore_runtime/question_cli.py +15 -11
- package/runtime/prime/egregore_runtime/questions.py +10 -10
- package/runtime/prime/egregore_runtime/quests.py +10 -10
- package/runtime/prime/egregore_runtime/record_publish.py +548 -0
- package/runtime/prime/egregore_runtime/record_subject.py +564 -0
- package/runtime/prime/egregore_runtime/research_ingest.py +2 -4
- package/runtime/prime/egregore_runtime/runtime.py +169 -60
- package/runtime/prime/egregore_runtime/sandbox.py +194 -0
- package/runtime/prime/egregore_runtime/scroll_cli.py +22 -32
- package/runtime/prime/egregore_runtime/scrolls.py +23 -15
- package/runtime/prime/egregore_runtime/shadow.py +262 -0
- package/runtime/prime/egregore_runtime/spirit_discovery.py +487 -0
- package/runtime/prime/egregore_runtime/spirit_discovery_cli.py +25 -0
- package/runtime/prime/egregore_runtime/spirit_discovery_transport.py +18 -0
- package/runtime/prime/egregore_runtime/status.py +101 -44
- package/runtime/prime/egregore_runtime/status_cli.py +13 -5
- package/runtime/prime/egregore_runtime/sync.py +39 -21
- package/runtime/prime/egregore_runtime/taste.py +934 -0
- package/runtime/prime/egregore_runtime/taste_cli.py +242 -0
- package/runtime/prime/egregore_runtime/taste_rules.py +91 -0
- package/runtime/prime/egregore_runtime/telemetry.py +26 -3
- package/runtime/prime/egregore_runtime/todo_cli.py +15 -12
- package/runtime/prime/egregore_runtime/todos.py +3 -2
- package/runtime/prime/egregore_runtime/upgrade.py +85 -58
- package/runtime/prime/egregore_runtime/writeback.py +330 -24
- package/runtime/prime/manifest.json +66 -5
- package/runtime/claude/bin/thread.sh +0 -9
- package/runtime/claude/egregore_runtime/admin_gate.py +0 -102
- package/runtime/claude/egregore_runtime/thread_cli.py +0 -173
- package/runtime/claude/egregore_runtime/threads.py +0 -521
- package/runtime/codex/bin/thread.sh +0 -9
- package/runtime/codex/egregore_runtime/admin_gate.py +0 -102
- package/runtime/codex/egregore_runtime/thread_cli.py +0 -173
- package/runtime/codex/egregore_runtime/threads.py +0 -521
- package/runtime/pi/bin/thread.sh +0 -9
- package/runtime/pi/egregore_runtime/admin_gate.py +0 -102
- package/runtime/pi/egregore_runtime/thread_cli.py +0 -173
- package/runtime/pi/egregore_runtime/threads.py +0 -521
- package/runtime/prime/bin/thread.sh +0 -9
- package/runtime/prime/egregore_runtime/admin_gate.py +0 -102
- package/runtime/prime/egregore_runtime/thread_cli.py +0 -173
- package/runtime/prime/egregore_runtime/threads.py +0 -521
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"section": "Cross-Runtime Compatibility",
|
|
19
|
-
"action": "
|
|
20
|
-
"sourceHash": "
|
|
21
|
-
"note": "
|
|
19
|
+
"action": "replace",
|
|
20
|
+
"sourceHash": "b321c21f213c",
|
|
21
|
+
"note": "Compact translation preserves shared mechanics, thin adapters, every-runtime tracing/parity and regeneration, and neutral discovery without authority. Full query/facet and fixed-adapter details remain in shipped docs/spirit-discovery.md. Fits the 32 KiB project-doc budget."
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"section": "Voice",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
{
|
|
30
30
|
"section": "On Launch — MANDATORY FIRST ACTION",
|
|
31
31
|
"action": "replace",
|
|
32
|
-
"sourceHash": "
|
|
32
|
+
"sourceHash": "f04b25830984",
|
|
33
33
|
"note": "Claude SessionStart hook does not run on Codex; the egregore launcher renders the card via bin/codex-session-start.sh before the session. Greeting-replay instruction dropped (card is already on screen)."
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"section": "Before Project Changes — WORKING BRANCH",
|
|
37
37
|
"action": "replace",
|
|
38
|
-
"sourceHash": "
|
|
39
|
-
"note": "EnterWorktree -> bin/agent.sh branch with git checkout fallback; AskUserQuestion -> numbered options in plain text; branch-guard mapped to .codex/hooks/branch-guard.js with instruction fallback; plan-mode note dropped (no plan mode on Codex); /branch + /onboarding -> skill tokens. Handoff claiming
|
|
38
|
+
"sourceHash": "658d0e70c090",
|
|
39
|
+
"note": "EnterWorktree -> bin/agent.sh branch with git checkout fallback; AskUserQuestion -> numbered options in plain text; branch-guard mapped to .codex/hooks/branch-guard.js with instruction fallback; plan-mode note dropped (no plan mode on Codex); /branch + /onboarding -> skill tokens. Handoff claiming points to the shared .claude/context/handoff-claiming.md procedure; surrounding prose compressed 2026-08 for the 32 KiB budget, every rule retained."
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"section": "Config Files",
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
{
|
|
48
48
|
"section": "Optional Knowledge Graph Projection",
|
|
49
49
|
"action": "keep",
|
|
50
|
-
"sourceHash": "
|
|
50
|
+
"sourceHash": "265da7565f12",
|
|
51
51
|
"note": "Kept verbatim — graph traversal remains an explicit optional adapter and canonical evidence wins."
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
"section": "Egregore Retrieval Beat",
|
|
55
55
|
"action": "keep",
|
|
56
|
-
"sourceHash": "
|
|
56
|
+
"sourceHash": "3ca2d81a686c",
|
|
57
57
|
"note": "Kept verbatim — product attribution applies across runtimes."
|
|
58
58
|
},
|
|
59
59
|
{
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
{
|
|
78
78
|
"section": "Memory",
|
|
79
79
|
"action": "keep",
|
|
80
|
-
"sourceHash": "
|
|
80
|
+
"sourceHash": "023d5186533f",
|
|
81
81
|
"note": "Kept verbatim."
|
|
82
82
|
},
|
|
83
83
|
{
|
|
@@ -89,19 +89,13 @@
|
|
|
89
89
|
{
|
|
90
90
|
"section": "Git Workflow",
|
|
91
91
|
"action": "keep",
|
|
92
|
-
"sourceHash": "
|
|
92
|
+
"sourceHash": "ed09c38ab870",
|
|
93
93
|
"note": "Kept; slash tokens rendered as $skill tokens. Branch diagram unchanged (code fence)."
|
|
94
94
|
},
|
|
95
|
-
{
|
|
96
|
-
"section": "Working Conventions",
|
|
97
|
-
"action": "keep",
|
|
98
|
-
"sourceHash": "e28cdfc77bf3",
|
|
99
|
-
"note": "Kept verbatim."
|
|
100
|
-
},
|
|
101
95
|
{
|
|
102
96
|
"section": "Command Awareness",
|
|
103
97
|
"action": "keep",
|
|
104
|
-
"sourceHash": "
|
|
98
|
+
"sourceHash": "868860642a07",
|
|
105
99
|
"note": "Prepended the Codex command surface (skill tokens, canonical workflow adapters, org-owned native support, $save abstraction); disambiguation map kept with /x -> $x token rendering. Tokens with no Codex skill (e.g. /loop, a Claude Code harness feature) are left as-is."
|
|
106
100
|
},
|
|
107
101
|
{
|
|
@@ -125,8 +119,8 @@
|
|
|
125
119
|
{
|
|
126
120
|
"section": "Environment Isolation",
|
|
127
121
|
"action": "replace",
|
|
128
|
-
"sourceHash": "
|
|
129
|
-
"note": "boundary
|
|
122
|
+
"sourceHash": "ba57e692a182",
|
|
123
|
+
"note": "The boundary policy is shared (bin/boundary-guard.cjs): Claude (boundary-check.sh) and Codex (.codex/hooks.json) run it through bin/boundary-hook.sh (PreToolUse), Pi and Prime from their tool_call gate. AskUserQuestion remediation -> numbered options, including the two consent-grant options (session grant -> .egregore-boundary-consent, instance grant -> .egregore-boundary.local.json read[], reads only)."
|
|
130
124
|
}
|
|
131
125
|
]
|
|
132
126
|
}
|
|
@@ -36,13 +36,14 @@ When a user reports broken or missing framework behavior, the first question is
|
|
|
36
36
|
|
|
37
37
|
## Cross-Runtime Compatibility
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
Share `bin/` mechanics through thin Claude/Codex/Pi/Prime adapters. Startup,
|
|
40
|
+
lifecycle, capture, skill and command changes require tracing every runtime,
|
|
41
|
+
parity tests and regenerated specs/bundles before completion.
|
|
42
|
+
|
|
43
|
+
Discover via `bash bin/spirit-discovery-codex.sh capabilities.list` (Pi/Prime:
|
|
44
|
+
registered tool). Follow `docs/spirit-discovery.md`: keep seven facets separate;
|
|
45
|
+
generic shell needs one snapshot. Discovery reads code/install evidence, not
|
|
46
|
+
memory, and grants no authority.
|
|
46
47
|
|
|
47
48
|
---
|
|
48
49
|
|
|
@@ -101,25 +102,7 @@ For continued project work: **continuation intent → prior workspace → restor
|
|
|
101
102
|
|
|
102
103
|
### Handoff claiming
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
bash bin/graph-op.sh claim-handoff "$SESSION_ID" "$HANDOFF_SESSION_ID" 2>/dev/null &
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**Auto-checkout repos from handoff**: after claiming, if `addressed_rich` carries a non-empty `repoState`, check out each entry's branch in its managed repo:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
PARENT_DIR="$(cd .. && pwd)"
|
|
113
|
-
# For each entry in repoState:
|
|
114
|
-
REPO_DIR="$PARENT_DIR/$REPO_NAME"
|
|
115
|
-
if [ -d "$REPO_DIR/.git" ] || [ -f "$REPO_DIR/.git" ]; then
|
|
116
|
-
git -C "$REPO_DIR" fetch origin "$BRANCH" --quiet 2>/dev/null
|
|
117
|
-
git -C "$REPO_DIR" checkout "$BRANCH" 2>/dev/null || \
|
|
118
|
-
git -C "$REPO_DIR" checkout -b "$BRANCH" "origin/$BRANCH" 2>/dev/null
|
|
119
|
-
fi
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Report `✓ Checked out {branch} in {repo1}, {repo2}`; for a merged-away branch, `◐ {repo}: PR #{N} merged — on {base}`. If `repoState` is absent or empty, skip silently.
|
|
105
|
+
When the user picks up a handoff addressed to them, follow `.claude/context/handoff-claiming.md` after branch creation: it claims the handoff and checks out the branches its `repoState` names in each managed repo.
|
|
123
106
|
|
|
124
107
|
**Exceptions** — skip branching when the user explicitly created or named a branch themselves, or the intent continues the current working branch's topic.
|
|
125
108
|
|
|
@@ -180,7 +163,7 @@ answers it: `open-handoffs`, `pending-questions`, `lineage`, or
|
|
|
180
163
|
`meeting-history`. Verify projection freshness/coverage and open its canonical
|
|
181
164
|
`evidencePath` before acting. Canonical Markdown wins on disagreement.
|
|
182
165
|
|
|
183
|
-
Run `catalog` only when the route is unclear.
|
|
166
|
+
Run `catalog` only when the route is unclear. Open only the returned `evidencePath` files needed to answer; on partial coverage, name `unprojectedPaths` instead of claiming them. Use `bin/graph.sh` for unsupported Neo4j queries and never construct curl calls directly (schema: DEVELOPMENT.md §1).
|
|
184
167
|
|
|
185
168
|
---
|
|
186
169
|
|
|
@@ -193,60 +176,42 @@ For each user-directed organizational lookup, show exactly one visible line:
|
|
|
193
176
|
- retrieval that actually queries the connected graph:
|
|
194
177
|
`⌕ Egregore Connect · searching your organization’s memory and relationships`
|
|
195
178
|
|
|
196
|
-
When `EGREGORE_ORG_CONTEXT_V1` is attached, reuse its authorized evidence.
|
|
197
|
-
For a remaining gap continue a Runtime investigation, preserving earlier findings.
|
|
198
|
-
Follow `.claude/context/retrieval-investigation.md`: the model chooses keyword,
|
|
199
|
-
semantic, hybrid, filename, literal, or date inventory; Runtime owns permissions,
|
|
200
|
-
evidence history, pages and per-prompt limits. Empty results allow refinements
|
|
201
|
-
within the requested dates. Never relax the date boundary to manufacture coverage.
|
|
202
|
-
|
|
203
|
-
**Scope.** Egregore Runtime is for organizational recall only: team memory,
|
|
204
|
-
decisions, handoffs, prior work. Code, files, Git, and tests use the harness's
|
|
205
|
-
normal tools, with no beat and no Runtime call.
|
|
206
|
-
|
|
207
179
|
**Visibility is the contract.** Emit it verbatim as a standalone assistant
|
|
208
180
|
message before the first tool call that performs the organizational recall
|
|
209
181
|
(the `bin/search.sh` query or a graph read). Tool output does not satisfy it.
|
|
210
|
-
Do not paraphrase the line.
|
|
182
|
+
Do not paraphrase the line. Emit once per episode.
|
|
183
|
+
Never name `Egregore Connect` unless a graph read will actually run.
|
|
211
184
|
|
|
212
|
-
|
|
213
|
-
|
|
185
|
+
**Scope.** Egregore Runtime is for organizational recall only: team memory,
|
|
186
|
+
decisions, handoffs, prior work. Code, files, Git, and tests use the harness's
|
|
187
|
+
normal tools, with no beat and no Runtime call. Startup hydration, graph
|
|
188
|
+
writes, ingestion, background sync, maintenance, and internal queries get no beat.
|
|
214
189
|
|
|
215
190
|
**Routing:** Organizational recall always enters Egregore Runtime. The model is
|
|
216
191
|
the semantic intent authority, deciding from meaning rather than fixed phrases.
|
|
192
|
+
Do not run retrieval on unrelated prompts or infer graph from recall intent.
|
|
217
193
|
Prompt hooks attach identity and guidance only; they never retrieve evidence.
|
|
218
|
-
|
|
194
|
+
The full retrieval contract arrives with the session's first prompt as
|
|
195
|
+
`EGREGORE_ACTOR_CONTEXT_V1` (later prompts carry a reminder); follow it.
|
|
196
|
+
When `EGREGORE_ORG_CONTEXT_V1` is attached, reuse its authorized evidence.
|
|
197
|
+
When the full contract is not in your context (a subagent, a missed hook, or
|
|
198
|
+
after a compaction), start with
|
|
219
199
|
|
|
220
200
|
```bash
|
|
221
201
|
bash bin/search.sh find "<query>" --kind <kind>
|
|
222
202
|
```
|
|
223
203
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
JSON operations, episode arguments, or gap explanations for normal retrieval.
|
|
229
|
-
Use `find` for model-led discovery; `query` is a compatibility command. Read
|
|
230
|
-
canonical sources through `search.sh open`, never a raw file-read tool or shell
|
|
231
|
-
read. An adequate excerpt already supports an answer; no extra open is needed.
|
|
204
|
+
and follow `.claude/context/retrieval-investigation.md`.
|
|
205
|
+
Open necessary sources together with `bash bin/search.sh open`; never read
|
|
206
|
+
memory with a raw file tool, `grep` or `ls`. Do not `cd` into the sibling memory repository.
|
|
207
|
+
Never relax the date boundary to manufacture coverage.
|
|
232
208
|
|
|
233
209
|
Search output is model-internal: show only the retrieval line and receipts —
|
|
234
210
|
never ranked blocks, file/rank/excerpt metadata, or raw JSON.
|
|
235
211
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
team/person synthesis, retain the requested subject and choose a `recent_days`
|
|
240
|
-
window. Use date filters for a known topic, or a bounded date inventory for
|
|
241
|
-
a recent-work overview. `/activity`, `/dashboard`, and `/project`
|
|
242
|
-
display bounded status surfaces only when named or directly requested as a
|
|
243
|
-
card. Explained syntheses of current organizational work and prior-work
|
|
244
|
-
discovery are Runtime/QMD recall. Do not run retrieval on unrelated prompts or
|
|
245
|
-
infer graph from recall intent.
|
|
246
|
-
|
|
247
|
-
Do not emit the beat for code search, Git inspection, startup hydration, graph
|
|
248
|
-
writes, ingestion, background sync, maintenance, or internal queries.
|
|
249
|
-
Never name `Egregore Connect` unless a graph read will actually run.
|
|
212
|
+
`/activity`, `/dashboard`, and `/project` display bounded status surfaces only
|
|
213
|
+
when named or directly requested as a card.
|
|
214
|
+
Explained syntheses of current organizational work and prior-work discovery are Runtime/QMD recall.
|
|
250
215
|
|
|
251
216
|
---
|
|
252
217
|
|
|
@@ -296,12 +261,15 @@ Never repeat it.
|
|
|
296
261
|
|
|
297
262
|
## Memory
|
|
298
263
|
|
|
299
|
-
`memory/`
|
|
300
|
-
- `people/` — team
|
|
301
|
-
- `handoffs/` —
|
|
302
|
-
- `knowledge/decisions/` —
|
|
303
|
-
- `knowledge/patterns/` —
|
|
304
|
-
- `infrastructure/` —
|
|
264
|
+
`memory/` links to the repo in `egregore.json`:
|
|
265
|
+
- `people/` — team
|
|
266
|
+
- `handoffs/` — handoffs and index
|
|
267
|
+
- `knowledge/decisions/` — decisions
|
|
268
|
+
- `knowledge/patterns/` — patterns
|
|
269
|
+
- `infrastructure/` — services and credential locations
|
|
270
|
+
|
|
271
|
+
Write memory through its commands, never the files: `/reflect` for decisions, `/handoff` for handoffs.
|
|
272
|
+
|
|
305
273
|
|
|
306
274
|
Always use HTTPS for git operations — `github-auth.sh` handles credential storage.
|
|
307
275
|
|
|
@@ -316,9 +284,8 @@ Loom is Claude-specific; skip its preambles and `bin/loom.sh` calls. Use native
|
|
|
316
284
|
## Git Workflow
|
|
317
285
|
|
|
318
286
|
`develop` is the default integration branch. A top-level
|
|
319
|
-
`egregore.json.base_branch` replaces it
|
|
320
|
-
|
|
321
|
-
git directly.
|
|
287
|
+
`egregore.json.base_branch` replaces it; `base_branch: "main"` is single-branch
|
|
288
|
+
mode. Users never interact with git directly.
|
|
322
289
|
|
|
323
290
|
```
|
|
324
291
|
main ← selected `/release` candidates
|
|
@@ -332,10 +299,9 @@ develop ← CL integration (available internally)
|
|
|
332
299
|
- **On launch**: syncs the configured base branch + memory. Does NOT create a branch.
|
|
333
300
|
- **Branch creation**: required before project changes; read-only work stays put.
|
|
334
301
|
- **Resuming**: rebase onto the configured base branch and continue.
|
|
335
|
-
- **Read-only sessions**: no branch creation based on message count.
|
|
336
302
|
- **`/save`**: pushes the working branch and opens a PR to the configured base. Auto-merges markdown-only PRs.
|
|
337
303
|
- **Memory repo**: stays on main (separate repo, auto-merge).
|
|
338
|
-
- **Never push directly to the configured base, main, or develop.**
|
|
304
|
+
- **Never push directly to the configured base, main, or develop.** Changes flow through PRs, merged with `bash bin/agent.sh merge <pr>`, never `gh pr merge`; a red check needs a receipt naming each failing job and why.
|
|
339
305
|
|
|
340
306
|
### Pull request format (all harnesses)
|
|
341
307
|
|
|
@@ -343,7 +309,7 @@ Every PR body follows `.claude/context/pr-format.md`, enforced by the `pr-format
|
|
|
343
309
|
|
|
344
310
|
### Commit format (all harnesses)
|
|
345
311
|
|
|
346
|
-
Every commit follows `.claude/context/commit-format.md`: subject `type(scope): imperative summary` (≤ 72 chars, aim ≤ 50, lowercase, same grammar and type set as PR titles), body wrapped at 72 explaining what and why — never how, and git trailers on agent-authored commits (`Egregore-Session: <id>` from
|
|
312
|
+
Every commit follows `.claude/context/commit-format.md`: subject `type(scope): imperative summary` (≤ 72 chars, aim ≤ 50, lowercase, same grammar and type set as PR titles), body wrapped at 72 explaining what and why — never how, and git trailers on agent-authored commits (`Egregore-Session: <id>` from `bash bin/session-id.sh`, plus the harness `Co-Authored-By` line). Background scripts commit as `chore(<subsystem>): …`, but a commit carrying real work derives its type/scope from the diff — the transport never masks the work. Git-generated messages (merges, reverts, autosquash fixups) keep their native form. Wording for commits and PRs follows `.claude/context/git-language.md`.
|
|
347
313
|
|
|
348
314
|
### Managed Repos
|
|
349
315
|
|
|
@@ -351,14 +317,6 @@ Repos in `egregore.json` → `repos[]` are cloned as siblings (`../{repo}/`). Ea
|
|
|
351
317
|
|
|
352
318
|
---
|
|
353
319
|
|
|
354
|
-
## Working Conventions
|
|
355
|
-
|
|
356
|
-
- For unfamiliar org work, use Observe context; if absent, run `bash bin/search.sh find` with an appropriate lookup kind.
|
|
357
|
-
- Document significant decisions in `memory/knowledge/decisions/`
|
|
358
|
-
- After substantial sessions, log to `memory/handoffs/` and update `index.md`
|
|
359
|
-
|
|
360
|
-
---
|
|
361
|
-
|
|
362
320
|
## Command Awareness
|
|
363
321
|
|
|
364
322
|
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.
|
|
@@ -373,7 +331,7 @@ Kernel shell escapes can be time-capped by the harness. Egregore `bin/` scripts
|
|
|
373
331
|
|
|
374
332
|
Invoke commands from user intent — don't wait for the slash. Each command file has a `## When to invoke` section. Load it for the full spec.
|
|
375
333
|
|
|
376
|
-
**Core loop** — `/activity` `/dashboard` `/handoff` `/wrap` `/save` `/reflect` `/todo`
|
|
334
|
+
**Core loop** — `/activity` `/dashboard` `/handoff` `/wrap` `/save` `/reflect` `/todo` `/records`
|
|
377
335
|
**Knowledge** — `/search` `/deep-reflect` `/archive` `/note` `/add` `/meeting` `/ingest` `/scroll` `/mock` `/audit`
|
|
378
336
|
**Identity** — `/me` (view profile or set display name)
|
|
379
337
|
**Coordination** — `/ask` `/quest` `/issue` `/invite` `/delete-user` `/announce`
|
|
@@ -385,16 +343,10 @@ Invoke commands from user intent — don't wait for the slash. Each command file
|
|
|
385
343
|
|
|
386
344
|
**Disambiguation:**
|
|
387
345
|
- Knowledge: `/reflect` (share-ready) · `/note` (half-baked) · `/deep-reflect` (deep research over memory — questions AND cross-referencing) · `/archive` (AI patterns) · `/audit` (evidence-mined forensic sweep of the org's own record — any target)
|
|
388
|
-
- Finding things —
|
|
389
|
-
|
|
390
|
-
Use `bash bin/search.sh find` or `open` and the shared investigation contract. Use Grep/Glob for code and exact errors, not org
|
|
391
|
-
recall. Do not `cd` into the sibling memory repository.
|
|
392
|
-
- Finding **something you generated** (a scroll, handoff, emissary, decision, any hosted egregore.xyz link): `bash bin/artifacts.sh find <query>`. Every generative surface records into memory — hosted artifacts self-register into `memory/artifacts/` at publish (committed+pushed, findable from any session); handoffs in `memory/handoffs/`, emissaries in `memory/handoffs/outbound/`, decisions/findings/patterns in `memory/knowledge/`. The finder searches all of them by **content, not just name**, ranks title/topic matches above body mentions, tags hits by type (`[document]`/`[handoff]`/`[emissary]`/`[decision]`), and surfaces the shareable URL — grep-first in OSS, search + graph when available. *"bring me the artifact where I laid out our GTM plan"* → this.
|
|
346
|
+
- Finding things — organizational recall through Runtime (Egregore Retrieval Beat); Grep/Glob for code and exact errors.
|
|
347
|
+
- Finding **something you generated** (a scroll, handoff, emissary, decision, any hosted egregore.xyz link): `bash bin/artifacts.sh find <query>` searches every generated record by content, tags its type and returns the shareable URL. *"bring me the artifact where I laid out our GTM plan"* → this.
|
|
393
348
|
- Artifacts with questions: `/scroll` (living paper + embedded harvest, updates in place) · `/view` (static render) · `/harvest` (elicitation, no published face) · `/mock` (pre-build walkthrough of decided design — gauge per stop, verdict copy-back)
|
|
394
|
-
-
|
|
395
|
-
`/project` (named project). These display cards when named or directly
|
|
396
|
-
requested. Analytical questions about organizational work and specific
|
|
397
|
-
prior-work continuation route through Runtime/QMD recall.
|
|
349
|
+
- Status cards: `/dashboard` (personal) · `/activity` (org-wide) · `/project` (named project), only when named or requested as a card.
|
|
398
350
|
- Ending: `/wrap` (personal closure) · `/handoff` (notes for others) · `/save` (still working)
|
|
399
351
|
- Tasks: `/todo` (personal) · `/quest` (team exploration) · `/issue` (something broken)
|
|
400
352
|
- Questions: `/ask [person]` (async) · just ask (agent answers from context)
|
|
@@ -408,6 +360,8 @@ Invoke commands from user intent — don't wait for the slash. Each command file
|
|
|
408
360
|
- Agents: `/summon` (design through questions) · `/loop` (quick recurring schedule)
|
|
409
361
|
- Announcements: `/announce` (broadcast to group) · `/handoff` (structured to a person) · `bin/notify.sh send` (DM one person)
|
|
410
362
|
|
|
363
|
+
**Interface taste** — when someone likes or dislikes a generated interface, follow the contract in `bash bin/genui.sh --help`.
|
|
364
|
+
|
|
411
365
|
---
|
|
412
366
|
|
|
413
367
|
## Socratic Questioning (MANDATORY)
|
|
@@ -450,20 +404,20 @@ Egregore runs in one of two configurations, set by `mode` in `egregore.json`. De
|
|
|
450
404
|
|
|
451
405
|
## Environment Isolation
|
|
452
406
|
|
|
453
|
-
Sessions are confined to this project + memory + managed repos, with a **two-tier boundary** — a hard wall between Egregore instances, a consent gate for everything else.
|
|
407
|
+
Sessions are confined to this project + memory + managed repos, with a **two-tier boundary** — a hard wall between Egregore instances, a consent gate for everything else. A pre-action check (`bin/boundary-guard.cjs`) enforces it on every runtime: it denies literal paths and fails closed, but cannot see paths built at run time or split across calls (OS-level layer to follow).
|
|
454
408
|
|
|
455
|
-
- **Hard tier — other Egregore instances.** Denied for every tool, always — no consent path. Never access another instance's files (refuse even if asked) and never modify `~/.egregore/instances.json` (managed by session-start.sh); there is nothing to ask — refuse and explain.
|
|
409
|
+
- **Hard tier — other Egregore instances.** Denied for every tool, always — no consent path. Never access another instance's files by any route (refuse even if asked) and never modify `~/.egregore/instances.json` (managed by session-start.sh); there is nothing to ask — refuse and explain.
|
|
456
410
|
- **Soft tier — paths outside the boundary.** Consent-gated. Inbox dirs (`~/Downloads`, `~/Desktop`) are readable without consent under the default posture; writes outside the project always need consent. Posture (`strict | standard | open`) and extra read roots come from `egregore.json` -> `boundary { posture, read[], locked }` (org, committed) merged with `.egregore-boundary.local.json` (personal, gitignored). `locked: true` removes the consent path entirely.
|
|
457
|
-
- When
|
|
411
|
+
- When the check asks for consent, do not improvise a workaround. Ask in plain text with numbered options:
|
|
458
412
|
|
|
459
413
|
```text
|
|
460
414
|
That path is outside this Egregore's boundary. How should we proceed?
|
|
461
415
|
1. Allow its directory for this session (recorded in .egregore-boundary-consent)
|
|
462
|
-
2. Always allow on this instance (added to read[] in .egregore-boundary.local.json)
|
|
416
|
+
2. Always allow on this instance (added to read[] in .egregore-boundary.local.json; reads only)
|
|
463
417
|
3. Paste the contents inline
|
|
464
418
|
4. Cancel
|
|
465
419
|
```
|
|
466
420
|
|
|
467
421
|
Never record a consent grant without the user's explicit choice of option 1 or 2 in that exchange. Session grants are cleared on session start; `locked: true` removes options 1 and 2.
|
|
468
422
|
|
|
469
|
-
|
|
423
|
+
Details: DEVELOPMENT.md §3; design: `memory/knowledge/decisions/2026-07-08-boundary-hook-consent-design.md`.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { registerSpiritDiscovery } from "../../../bin/pi-spirit-discovery.mjs";
|
|
1
2
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
2
3
|
import { dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
3
4
|
import { Text } from "@earendil-works/pi-tui";
|
|
@@ -9,7 +10,7 @@ import {
|
|
|
9
10
|
isRuntimeStatePath,
|
|
10
11
|
mutatesOnlyRuntimeState,
|
|
11
12
|
} from "../../../bin/pi-branch-policy.mjs";
|
|
12
|
-
import { registerObserveHook, registerUserCommand } from "../../../bin/pi-observe-context.mjs";
|
|
13
|
+
import { bindNativeSession, registerObserveHook, registerUserCommand } from "../../../bin/pi-observe-context.mjs";
|
|
13
14
|
import {
|
|
14
15
|
activityDataPath,
|
|
15
16
|
captureSessionEnd,
|
|
@@ -22,6 +23,8 @@ import {
|
|
|
22
23
|
renderView,
|
|
23
24
|
workflowPrompt,
|
|
24
25
|
} from "../../../bin/pi-product-workflows.mjs";
|
|
26
|
+
// The instance wall shared with the Claude Code and Codex pre-action hooks.
|
|
27
|
+
import boundaryGuard from "../../../bin/boundary-guard.cjs";
|
|
25
28
|
|
|
26
29
|
const PROTECTED_BRANCHES = new Set(["main", "master", "develop"]);
|
|
27
30
|
// Prime Agent built-in slash commands (README Commands table) plus
|
|
@@ -96,6 +99,7 @@ async function gitContext(pi, candidate) {
|
|
|
96
99
|
|
|
97
100
|
export default function egregore(pi) {
|
|
98
101
|
const root = process.cwd();
|
|
102
|
+
registerSpiritDiscovery(pi, { root, runtime: "prime", Type });
|
|
99
103
|
const skillsDir = join(root, ".codex", "skills");
|
|
100
104
|
let workflowCount = 0;
|
|
101
105
|
let lastSyncAt = 0;
|
|
@@ -353,6 +357,9 @@ export default function egregore(pi) {
|
|
|
353
357
|
|
|
354
358
|
setBusy(ctx, "Loading team context");
|
|
355
359
|
try {
|
|
360
|
+
// Bind Prime's own session id before the card's session start, which
|
|
361
|
+
// maps it to the Egregore id it mints so this session's commits resolve it.
|
|
362
|
+
bindNativeSession(ctx, "prime", root);
|
|
356
363
|
const card = await renderGreeting(pi, root, ctx.signal, "prime-session-start.sh");
|
|
357
364
|
lastSyncAt = Date.now();
|
|
358
365
|
appendCard("greeting", card);
|
|
@@ -384,6 +391,12 @@ export default function egregore(pi) {
|
|
|
384
391
|
});
|
|
385
392
|
|
|
386
393
|
pi.on("tool_call", async (event, ctx) => {
|
|
394
|
+
// Environment isolation first: it covers reads too, and another
|
|
395
|
+
// instance's files are denied before any branch question arises.
|
|
396
|
+
// IPython code is scanned for paths the same way as a shell command.
|
|
397
|
+
const wall = boundaryGuard.toolCallBlock(event, ctx, root);
|
|
398
|
+
if (wall) return wall;
|
|
399
|
+
|
|
387
400
|
const isFileWrite = event.toolName === "write" || event.toolName === "edit";
|
|
388
401
|
const command = String(event.input?.command || "");
|
|
389
402
|
// Prime Agent's default surface is the persistent IPython kernel: file
|
|
@@ -11,6 +11,8 @@ functions directly instead of grepping `bin/` scripts to reconstruct CLI usage:
|
|
|
11
11
|
```python
|
|
12
12
|
import egregore
|
|
13
13
|
|
|
14
|
+
egregore.capabilities_find("research") # separate installation and host evidence
|
|
15
|
+
egregore.system_explain() # visible owners and evidence gaps
|
|
14
16
|
egregore.search("pricing decision") # ranked shared-memory recall
|
|
15
17
|
egregore.activity() # team activity JSON
|
|
16
18
|
egregore.handoff(to="renc", topic="...", body="...")
|
|
@@ -21,21 +23,27 @@ egregore.notify_plan(recipient="renc", message="...") # proposal ONLY
|
|
|
21
23
|
|
|
22
24
|
Use `draft=True` while
|
|
23
25
|
implementation or review continues. After local QA and review pass, use
|
|
24
|
-
`draft=False` to push the final changes and mark the PR ready for CI
|
|
26
|
+
`draft=False` to push the final changes and mark the PR ready for CI; it
|
|
27
|
+
first runs the checks CI would select on this machine, and if one fails the
|
|
28
|
+
work is pushed, the PR stays a draft and the call raises. Omit
|
|
25
29
|
`draft` for normal non-coding auto-merge; omitting it on an existing PR
|
|
26
30
|
preserves that PR's readiness. These choices follow the work's state and do
|
|
27
31
|
not require a separate permission checkpoint.
|
|
28
32
|
|
|
29
33
|
Ground rules:
|
|
30
34
|
|
|
31
|
-
- Every function shells out to the corresponding `bin/` script
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
- Every function shells out to the corresponding `bin/` script and returns
|
|
36
|
+
text output. Business rules stay in the shared scripts.
|
|
37
|
+
- Normal bridge functions use a generous internal timeout and raise
|
|
38
|
+
`RuntimeError` with the script's stderr on failure — report the single
|
|
39
|
+
relevant line, do not debug the plumbing mid-workflow.
|
|
40
|
+
- Discovery functions use the fixed JSON request path through
|
|
41
|
+
`bin/spirit-discovery-prime.sh --json`, with a 15-second wrapper timeout.
|
|
42
|
+
Failures return bounded `egregore.capability-query-error/v1` JSON text
|
|
43
|
+
without stderr diagnostics.
|
|
34
44
|
- `notify_plan` only CREATES a notification plan. Approval and dispatch remain
|
|
35
45
|
subject to the explicit human Send / Edit / Cancel checkpoint: show the plan,
|
|
36
46
|
get the user's approval, then run `bin/notify.sh approve` / `dispatch` with
|
|
37
47
|
the plan's one-use approval token. Never call approve or dispatch without a
|
|
38
48
|
fresh human yes in this conversation.
|
|
39
|
-
- Functions raise `RuntimeError` with the script's stderr on failure — report
|
|
40
|
-
the single relevant line, do not debug the plumbing mid-workflow.
|
|
41
49
|
- `help()` on the module or any function shows signatures and semantics.
|
|
@@ -20,6 +20,11 @@ from pathlib import Path
|
|
|
20
20
|
|
|
21
21
|
__all__ = [
|
|
22
22
|
"activity",
|
|
23
|
+
"capabilities_list",
|
|
24
|
+
"capabilities_find",
|
|
25
|
+
"capabilities_describe",
|
|
26
|
+
"capabilities_explain",
|
|
27
|
+
"system_explain",
|
|
23
28
|
"branch",
|
|
24
29
|
"handoff",
|
|
25
30
|
"instance_root",
|
|
@@ -111,13 +116,15 @@ def save(
|
|
|
111
116
|
|
|
112
117
|
Set ``draft=True`` while work continues or ``draft=False`` after local
|
|
113
118
|
QA/review to mark ready. ``None`` preserves existing PR readiness.
|
|
119
|
+
Marking ready first runs the checks CI would select, which can take as
|
|
120
|
+
long as a CI run, so that save gets the longer limit.
|
|
114
121
|
"""
|
|
115
122
|
args = ["bin/agent.sh", "save", "--message", message, "--topic", topic]
|
|
116
123
|
if pr_body:
|
|
117
124
|
args += ["--pr-body", pr_body]
|
|
118
125
|
if draft is not None:
|
|
119
126
|
args += ["--draft" if draft else "--ready"]
|
|
120
|
-
return _run_script(args, timeout=300)
|
|
127
|
+
return _run_script(args, timeout=300 if draft is not False else 2 * 60 * 60)
|
|
121
128
|
|
|
122
129
|
|
|
123
130
|
def handoff(
|
|
@@ -174,3 +181,61 @@ def run() -> str:
|
|
|
174
181
|
"notify_plan(recipient, message). notify_plan is proposal-only: "
|
|
175
182
|
"approval and dispatch require an explicit human checkpoint."
|
|
176
183
|
)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def _discover_capabilities(request: dict) -> str:
|
|
187
|
+
"""Pass bounded JSON to the shared reader; selectors never become argv."""
|
|
188
|
+
error = json.dumps({
|
|
189
|
+
"schema": "egregore.capability-query-error/v1",
|
|
190
|
+
"error": "invalid-or-unavailable-discovery",
|
|
191
|
+
"execution_authority": False,
|
|
192
|
+
})
|
|
193
|
+
try:
|
|
194
|
+
# ASCII escaping transports even malformed Unicode to the shared
|
|
195
|
+
# validator. The CLI owns operation, selector and Unicode policy.
|
|
196
|
+
encoder = json.JSONEncoder(ensure_ascii=True, allow_nan=False)
|
|
197
|
+
chunks, size = [], 0
|
|
198
|
+
for chunk in encoder.iterencode(request):
|
|
199
|
+
size += len(chunk)
|
|
200
|
+
if size > 4096:
|
|
201
|
+
return error
|
|
202
|
+
chunks.append(chunk)
|
|
203
|
+
result = subprocess.run(
|
|
204
|
+
["bash", "bin/spirit-discovery-prime.sh", "--json"],
|
|
205
|
+
input="".join(chunks), cwd=instance_root(),
|
|
206
|
+
capture_output=True, encoding="utf-8", timeout=15,
|
|
207
|
+
start_new_session=True,
|
|
208
|
+
)
|
|
209
|
+
if result.returncode != 0:
|
|
210
|
+
return error
|
|
211
|
+
value = json.loads(result.stdout)
|
|
212
|
+
if not isinstance(value, dict) or value.get("schema") != "egregore.capability-query/v1" or value.get("execution_authority") is not False:
|
|
213
|
+
return error
|
|
214
|
+
return result.stdout.strip()
|
|
215
|
+
except (OSError, ValueError, TypeError, UnicodeError, RecursionError, RuntimeError, subprocess.TimeoutExpired):
|
|
216
|
+
return error
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def capabilities_list() -> str:
|
|
220
|
+
"""Read this Prime installation's capability evidence; grants no authority."""
|
|
221
|
+
return _discover_capabilities({"operation": "capabilities.list"})
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def capabilities_find(query: str) -> str:
|
|
225
|
+
"""Find declared capabilities; installation and permissions stay separate."""
|
|
226
|
+
return _discover_capabilities({"operation": "capabilities.find", "query": query})
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def capabilities_describe(identifier: str) -> str:
|
|
230
|
+
return _discover_capabilities({"operation": "capabilities.describe", "id": identifier})
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def capabilities_explain(identifier: str) -> str:
|
|
234
|
+
return _discover_capabilities({"operation": "capabilities.explain", "id": identifier})
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
def system_explain(identifier: str | None = None) -> str:
|
|
238
|
+
request = {"operation": "system.explain"}
|
|
239
|
+
if identifier is not None:
|
|
240
|
+
request["id"] = identifier
|
|
241
|
+
return _discover_capabilities(request)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generatedBy": "bin/prime-render-spec.mjs",
|
|
3
3
|
"source": "AGENTS.md generated Codex spec",
|
|
4
|
-
"sourceHash": "
|
|
5
|
-
"outputHash": "
|
|
4
|
+
"sourceHash": "ef36766dfa7a",
|
|
5
|
+
"outputHash": "5fe962c7f721",
|
|
6
6
|
"adaptations": [
|
|
7
7
|
"Prime Agent APPEND_SYSTEM delivery from .prime/agent/",
|
|
8
8
|
"Prime Agent tool_call branch gate incl. ipython classification",
|