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
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
isRuntimeStatePath,
|
|
10
10
|
mutatesOnlyRuntimeState,
|
|
11
11
|
} from "../../../bin/pi-branch-policy.mjs";
|
|
12
|
+
import { registerObserveHook } from "../../../bin/pi-observe-context.mjs";
|
|
12
13
|
import {
|
|
13
14
|
activityDataPath,
|
|
14
15
|
captureSessionEnd,
|
|
@@ -102,6 +103,12 @@ export default function egregore(pi) {
|
|
|
102
103
|
const hasEntryRenderer = typeof pi.registerEntryRenderer === "function";
|
|
103
104
|
const prompt = (name, args, extra = "") => workflowPrompt(name, args, extra, PRIME_SPEC);
|
|
104
105
|
|
|
106
|
+
registerObserveHook(pi, {
|
|
107
|
+
root,
|
|
108
|
+
harness: "prime",
|
|
109
|
+
shouldObserve: () => !activeWorkflow,
|
|
110
|
+
});
|
|
111
|
+
|
|
105
112
|
const appendCard = (kind, text) => {
|
|
106
113
|
const content = String(text || "").trimEnd();
|
|
107
114
|
if (hasEntryRenderer) {
|
|
@@ -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": "76c76679f791",
|
|
5
|
+
"outputHash": "f220a03bc40a",
|
|
6
6
|
"adaptations": [
|
|
7
7
|
"Prime Agent APPEND_SYSTEM delivery from .prime/agent/",
|
|
8
8
|
"Prime Agent tool_call branch gate incl. ipython classification",
|
package/runtime/prime/AGENTS.md
CHANGED
|
@@ -9,16 +9,11 @@
|
|
|
9
9
|
> Egregore skill already covers. This file exists only for runtimes that cannot
|
|
10
10
|
> read `CLAUDE.md`.
|
|
11
11
|
>
|
|
12
|
-
> **If you are Pi
|
|
13
|
-
>
|
|
14
|
-
> `.
|
|
15
|
-
> project-local
|
|
16
|
-
>
|
|
17
|
-
> **If you are Prime Agent** (the `prime-agent` harness): **stop here.** Your
|
|
18
|
-
> authoritative Egregore instructions are loaded from
|
|
19
|
-
> `.prime/agent/APPEND_SYSTEM.md`, and your workflows are exposed through the
|
|
20
|
-
> project-local `.prime/agent/` runtime. Do not follow the Codex-specific
|
|
21
|
-
> block below.
|
|
12
|
+
> **If you are Pi or Prime Agent:** **stop here.** Your authoritative
|
|
13
|
+
> Egregore instructions are loaded from `.pi/APPEND_SYSTEM.md` (Pi) or
|
|
14
|
+
> `.prime/agent/APPEND_SYSTEM.md` (Prime), and your workflows are exposed
|
|
15
|
+
> through that project-local runtime. Do not follow the Codex-specific block
|
|
16
|
+
> below.
|
|
22
17
|
>
|
|
23
18
|
> **If you are Codex or another shell-only agent:** this file is yours — continue.
|
|
24
19
|
|
|
@@ -166,7 +161,7 @@ Sequence: **intent → safe workspace → relevant context → consequential ass
|
|
|
166
161
|
When the user continues the current branch's work or asks to resume — sequence: **continuation intent → prior workspace → restored context → open threads → resumed execution**:
|
|
167
162
|
|
|
168
163
|
- Do not create a new workspace for the same topic. After confirming relevance, say: `I found your previous work on **{topic}** and restored its workspace and context.` Show `Workspace: {branch} (worktree).` secondarily.
|
|
169
|
-
-
|
|
164
|
+
- Interpret continuation from meaning, not fixed phrases. Reuse sufficient `EGREGORE_ORG_CONTEXT_V1`; otherwise make exactly one `bash bin/search.sh query "<concept>" -n 6 --compact` call. Keep the Retrieval Beat and `↳ Context restored:` receipt. Never infer context from a branch or substitute status dashboards, Git, Graph, or raw memory scans.
|
|
170
165
|
- Name only unresolved items that could change the next move, state the next outcome briefly, and continue without replaying setup.
|
|
171
166
|
|
|
172
167
|
### Handoff claiming
|
|
@@ -235,22 +230,20 @@ In connected mode, infrastructure credentials (Neo4j, Telegram) live on the API
|
|
|
235
230
|
|
|
236
231
|
---
|
|
237
232
|
|
|
238
|
-
## Knowledge Graph
|
|
239
|
-
|
|
240
|
-
**Connected mode only.** For the following intents, the named read must be the
|
|
241
|
-
first retrieval action. Run the exact command with its safe default limit before
|
|
242
|
-
opening files, running broad grep, inspecting `graph-op.sh`, or writing Cypher:
|
|
233
|
+
## Optional Knowledge Graph Projection
|
|
243
234
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
235
|
+
**Connected mode only, explicit opt-in only, and never part of default
|
|
236
|
+
retrieval.** Egregore Runtime Observe backed by the instance-owned QMD adapter
|
|
237
|
+
is the default organizational retrieval path in every mode. Never infer graph
|
|
238
|
+
use from words such as handoff, question, meeting, status, current work, or
|
|
239
|
+
lineage. Those intents still enter Runtime/QMD unless the user explicitly asks
|
|
240
|
+
for graph relationships or a workflow explicitly requests optional Connected
|
|
241
|
+
enrichment.
|
|
248
242
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
whole question.
|
|
243
|
+
For an explicit graph-projection request, use the smallest named read that
|
|
244
|
+
answers it: `open-handoffs`, `pending-questions`, `lineage`, or
|
|
245
|
+
`meeting-history`. Verify projection freshness/coverage and open its canonical
|
|
246
|
+
`evidencePath` before acting. Canonical Markdown wins on disagreement.
|
|
254
247
|
|
|
255
248
|
Run `catalog` only when the route is unclear. Named reads return bounded stable fields and exact canonical `evidencePath` pointers; open only the returned files needed to answer. When a read reports partial coverage, use `unprojectedPaths` rather than claiming those files are represented in the graph. Use `bin/graph.sh` for unsupported Neo4j queries and never construct curl calls directly. See DEVELOPMENT.md §1 for the schema. In local mode there is no graph; read `memory/` directly.
|
|
256
249
|
|
|
@@ -258,47 +251,52 @@ Run `catalog` only when the route is unclear. Named reads return bounded stable
|
|
|
258
251
|
|
|
259
252
|
## Egregore Retrieval Beat
|
|
260
253
|
|
|
261
|
-
|
|
262
|
-
agent tool use. For each user-directed lookup of organizational knowledge,
|
|
263
|
-
show exactly one visible attribution line:
|
|
254
|
+
For each user-directed organizational lookup, show exactly one visible line:
|
|
264
255
|
|
|
265
256
|
- memory-only retrieval:
|
|
266
257
|
`⌕ Egregore · searching your organization’s memory`
|
|
267
258
|
- retrieval that actually queries the connected graph:
|
|
268
259
|
`⌕ Egregore Connect · searching your organization’s memory and relationships`
|
|
269
260
|
|
|
270
|
-
|
|
261
|
+
Runtime owns retrieval; no agent feature flag does. `EGREGORE_ORG_CONTEXT_V1`
|
|
262
|
+
is only the schema label. When attached, authorized retrieval is complete:
|
|
263
|
+
never query again that turn, and state any evidence gap. `OPENED_BY_OBSERVE`
|
|
264
|
+
means the evidence is open. A later explicit search starts a new turn.
|
|
265
|
+
|
|
266
|
+
**Visibility is the contract.** Emit it verbatim as a
|
|
271
267
|
standalone assistant message before the first Bash, Grep, Glob, Read, or other
|
|
272
|
-
retrieval tool call.
|
|
273
|
-
|
|
274
|
-
replace it with generic narration such as “I’ll search org memory.”
|
|
268
|
+
retrieval tool call.
|
|
269
|
+
Shell/tool output does not satisfy this requirement. Do not paraphrase the line.
|
|
275
270
|
|
|
276
|
-
Use the memory form
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
or exploratory Cypher. Emit once for the whole retrieval episode, not once per
|
|
280
|
-
hop. The banner printed by `bin/search.sh` remains a direct-shell fallback and
|
|
281
|
-
does not replace the assistant-visible beat.
|
|
271
|
+
Use the memory form normally; use Connect only for an explicit graph traversal
|
|
272
|
+
that actually runs. Emit once per episode. A `bin/search.sh` banner is only a
|
|
273
|
+
shell fallback and does not replace this visible beat.
|
|
282
274
|
|
|
283
|
-
**Routing
|
|
284
|
-
|
|
285
|
-
|
|
275
|
+
**Routing:** Organizational recall always enters Egregore Runtime. The model is
|
|
276
|
+
the semantic intent authority, deciding from meaning rather than fixed phrases.
|
|
277
|
+
Observe is optional prefetch; a prefetch miss never means recall is unnecessary.
|
|
278
|
+
Without sufficient attached context, make exactly one Runtime/QMD call:
|
|
286
279
|
|
|
287
280
|
```bash
|
|
288
|
-
bash bin/search.sh query "<concept>" -n 6
|
|
281
|
+
bash bin/search.sh query "<concept>" -n 6 --compact
|
|
289
282
|
```
|
|
290
283
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
284
|
+
Search output is model-internal: show only the retrieval line and receipts —
|
|
285
|
+
never ranked blocks, file/rank/excerpt metadata, or raw JSON.
|
|
286
|
+
|
|
287
|
+
Do not resolve `memory/` to its sibling repo or start with raw `grep`/`ls`.
|
|
288
|
+
Search owns lexical/semantic selection and attaches no graph by default. Open a
|
|
289
|
+
source only when its excerpt cannot support a necessary claim. For current
|
|
290
|
+
team/person synthesis, retain known organization/member names and choose
|
|
291
|
+
`--recent-days` plus `--min-evidence`. Use native
|
|
292
|
+
Grep/Glob for code and exact errors. `$activity`, `$dashboard`, and `$project`
|
|
293
|
+
display bounded status surfaces only when named or directly requested as a
|
|
294
|
+
card. Questions asking for an explained synthesis of current organizational
|
|
295
|
+
work are Runtime/QMD recall, as is prior-work discovery. Do not run full
|
|
296
|
+
hybrid retrieval on unrelated prompts or infer graph from recall intent.
|
|
297
|
+
|
|
298
|
+
Do not emit the beat for code search, Git inspection, startup hydration, graph
|
|
299
|
+
writes, ingestion, background sync, maintenance, or internal queries.
|
|
302
300
|
Never name `Egregore Connect` unless a graph read will actually run.
|
|
303
301
|
|
|
304
302
|
---
|
|
@@ -398,7 +396,7 @@ Repos in `egregore.json` → `repos[]` are cloned as siblings (`../{repo}/`). Ea
|
|
|
398
396
|
|
|
399
397
|
## Working Conventions
|
|
400
398
|
|
|
401
|
-
-
|
|
399
|
+
- For unfamiliar org work, use Observe context; if absent, run `bash bin/search.sh query "topic" --compact`.
|
|
402
400
|
- Document significant decisions in `memory/knowledge/decisions/`
|
|
403
401
|
- After substantial sessions, log to `memory/handoffs/` and update `index.md`
|
|
404
402
|
|
|
@@ -422,10 +420,16 @@ Invoke commands from user intent — don't wait for the slash. Each command file
|
|
|
422
420
|
|
|
423
421
|
**Disambiguation:**
|
|
424
422
|
- 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)
|
|
425
|
-
- Finding things — **organizational recall starts with
|
|
426
|
-
|
|
423
|
+
- Finding things — **organizational recall starts with automatic Observe**.
|
|
424
|
+
Never query twice in one prompt. Without its context block, use
|
|
425
|
+
`bash bin/search.sh query`. Use Grep/Glob for code and exact errors, not org
|
|
426
|
+
recall. Do not `cd` into the sibling memory repository.
|
|
427
|
+
- 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.
|
|
427
428
|
- 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)
|
|
428
|
-
-
|
|
429
|
+
- Explicit bounded status: `$dashboard` (personal) · `$activity` (org-wide) ·
|
|
430
|
+
`$project` (named project). These display cards when named or directly
|
|
431
|
+
requested. Analytical questions about organizational work and specific
|
|
432
|
+
prior-work continuation route through Runtime/QMD recall.
|
|
429
433
|
- Ending: `$wrap` (personal closure) · `$handoff` (notes for others) · `$save` (still working)
|
|
430
434
|
- Tasks: `$todo` (personal) · `$quest` (team exploration) · `$issue` (something broken)
|
|
431
435
|
- Questions: `$ask [person]` (async) · just ask (agent answers from context)
|
|
@@ -475,7 +479,7 @@ Egregore runs in one of two configurations, set by `mode` in `egregore.json`. De
|
|
|
475
479
|
- If a feature requires the hosted service and has no upsell gate, say so plainly ("this isn't available in this configuration") and stop.
|
|
476
480
|
- Calling `bin/graph.sh` or `bin/notify.sh` in local mode is harmless — they fail soft and return empty results — but there is no need to call them; prefer reading `memory/` directly.
|
|
477
481
|
|
|
478
|
-
**Connected mode** (`"mode": "connected"`, `api_url` set) — the hosted configuration, used by organizations on the hosted service.
|
|
482
|
+
**Connected mode** (`"mode": "connected"`, `api_url` set) — the hosted configuration, used by organizations on the hosted service. Shared control-plane services include accounts, organizations, memberships, invitations, and entitlements. Optional derived graph projection, notifications, and hosted surfaces remain explicit adapters. Local organizational content and retrieval stay local unless a future capability is explicitly enabled. Use `$env` to check API key and `$checkup` for diagnostics.
|
|
479
483
|
|
|
480
484
|
---
|
|
481
485
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Recipient-scoped lifecycle actions used by /activity.
|
|
5
|
+
# Usage: bash bin/activity-action.sh <read|claim|done|expire|reopen|review> <artifact-id>
|
|
6
|
+
# [--user HANDLE]
|
|
7
|
+
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
9
|
+
ACTION="${1:-}"
|
|
10
|
+
SID="${2:-}"
|
|
11
|
+
shift 2 2>/dev/null || true
|
|
12
|
+
USER_REF=""
|
|
13
|
+
EXPECTED_REVISION=""
|
|
14
|
+
USE_LEGACY_GRAPH=false
|
|
15
|
+
|
|
16
|
+
while [[ $# -gt 0 ]]; do
|
|
17
|
+
case "$1" in
|
|
18
|
+
--user) USER_REF="${2:?missing user}"; shift 2 ;;
|
|
19
|
+
--expected-revision) EXPECTED_REVISION="${2:?missing lifecycle revision}"; shift 2 ;;
|
|
20
|
+
--graph) USE_LEGACY_GRAPH=true; shift ;;
|
|
21
|
+
*) jq -n --arg option "$1" '{error:"unknown option",option:$option}'; exit 2 ;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
|
|
25
|
+
case "$ACTION" in
|
|
26
|
+
read|claim|done|expire|reopen|review) ;;
|
|
27
|
+
*) jq -n '{error:"unsupported lifecycle action"}'; exit 2 ;;
|
|
28
|
+
esac
|
|
29
|
+
[[ -n "$SID" ]] || { jq -n '{error:"missing session id"}'; exit 2; }
|
|
30
|
+
|
|
31
|
+
if [[ "$USE_LEGACY_GRAPH" != true ]]; then
|
|
32
|
+
export PYTHONPATH="$SCRIPT_DIR${PYTHONPATH:+:$PYTHONPATH}"
|
|
33
|
+
ARGS=(action "$ACTION" "$SID" --reason explicit_user_action)
|
|
34
|
+
[ -z "$USER_REF" ] || ARGS+=(--user "$USER_REF")
|
|
35
|
+
[ -z "$EXPECTED_REVISION" ] || ARGS+=(--expected-revision "$EXPECTED_REVISION")
|
|
36
|
+
exec python3 -m egregore_runtime.lifecycle_cli "${ARGS[@]}"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
case "$ACTION" in
|
|
40
|
+
read|done|expire|reopen) ;;
|
|
41
|
+
*) jq -n '{error:"legacy graph compatibility supports read, done, expire, and reopen only"}'; exit 2 ;;
|
|
42
|
+
esac
|
|
43
|
+
|
|
44
|
+
MODE="$(jq -r '.mode // "connected"' "$SCRIPT_DIR/egregore.json" 2>/dev/null || echo connected)"
|
|
45
|
+
if [[ "$MODE" == "local" ]]; then
|
|
46
|
+
jq -n '{
|
|
47
|
+
applied:false,
|
|
48
|
+
availability:"unavailable_in_this_configuration",
|
|
49
|
+
reason:"handoff lifecycle state is graph-backed"
|
|
50
|
+
}'
|
|
51
|
+
exit 0
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
if [[ -z "$USER_REF" ]]; then
|
|
55
|
+
USER_REF="$(jq -r '.github_username // empty' "$SCRIPT_DIR/.egregore-state.json" 2>/dev/null || true)"
|
|
56
|
+
fi
|
|
57
|
+
if [[ -z "$USER_REF" ]]; then
|
|
58
|
+
USER_REF="$(git -C "$SCRIPT_DIR" config user.name 2>/dev/null || true)"
|
|
59
|
+
fi
|
|
60
|
+
[[ -n "$USER_REF" ]] || { jq -n '{error:"could not resolve current user"}'; exit 2; }
|
|
61
|
+
|
|
62
|
+
case "$ACTION" in
|
|
63
|
+
read) OP="mark-read"; EXPECTED="read" ;;
|
|
64
|
+
done) OP="mark-done"; EXPECTED="done" ;;
|
|
65
|
+
expire) OP="mark-expired"; EXPECTED="expired" ;;
|
|
66
|
+
reopen) OP="reopen-handoff"; EXPECTED="pending" ;;
|
|
67
|
+
esac
|
|
68
|
+
|
|
69
|
+
RESULT="$(bash "$SCRIPT_DIR/bin/graph-op.sh" "$OP" "$SID" "$USER_REF")"
|
|
70
|
+
if ! printf '%s\n' "$RESULT" | jq -e '.values[0][0] != null' >/dev/null 2>&1; then
|
|
71
|
+
jq -n \
|
|
72
|
+
--arg action "$ACTION" \
|
|
73
|
+
--arg id "$SID" \
|
|
74
|
+
--arg user "$USER_REF" \
|
|
75
|
+
'{applied:false,action:$action,id:$id,user:$user,
|
|
76
|
+
error:"handoff not found, not addressed to this user, or transition not allowed"}'
|
|
77
|
+
exit 3
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
printf '%s\n' "$RESULT" | jq \
|
|
81
|
+
--arg action "$ACTION" \
|
|
82
|
+
--arg expected "$EXPECTED" \
|
|
83
|
+
--arg user "$USER_REF" '
|
|
84
|
+
{
|
|
85
|
+
applied:true,
|
|
86
|
+
action:$action,
|
|
87
|
+
id:.values[0][0],
|
|
88
|
+
topic:(.values[0][1] // ""),
|
|
89
|
+
status:(.values[0][2] // $expected),
|
|
90
|
+
user:$user
|
|
91
|
+
}
|
|
92
|
+
'
|
|
@@ -1,238 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
# Returns a single JSON object with all query results.
|
|
2
|
+
# One bounded, authorized, canonical Runtime snapshot for the activity ritual.
|
|
3
|
+
set -euo pipefail
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
TMPDIR=$(mktemp -d)
|
|
8
|
-
trap "rm -rf $TMPDIR" EXIT
|
|
5
|
+
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
9
6
|
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
source "$SCRIPT_DIR/bin/lib/handoff-meta.sh" >/dev/null 2>/dev/null || true
|
|
17
|
-
|
|
18
|
-
# --- Detect user ---
|
|
19
|
-
GH_USER="${1:-}"
|
|
20
|
-
if [ -z "$GH_USER" ]; then
|
|
21
|
-
STATE_FILE="$SCRIPT_DIR/.egregore-state.json"
|
|
22
|
-
if [ -f "$STATE_FILE" ]; then
|
|
23
|
-
GH_USER=$(jq -r '.github_username // empty' "$STATE_FILE" 2>/dev/null)
|
|
24
|
-
fi
|
|
25
|
-
if [ -z "$GH_USER" ]; then
|
|
26
|
-
GH_USER=$(git -C "$SCRIPT_DIR" config user.name 2>/dev/null || echo "unknown")
|
|
27
|
-
fi
|
|
7
|
+
# Compatibility: the positional handle is intentionally ignored. Identity is
|
|
8
|
+
# resolved by Egregore Runtime, not by a GitHub username supplied by a harness.
|
|
9
|
+
if [ "${1:-}" = "--help" ]; then
|
|
10
|
+
echo "usage: bash bin/activity-data.sh"
|
|
11
|
+
exit 0
|
|
28
12
|
fi
|
|
29
13
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
# Graph data: single API call (all queries run server-side)
|
|
35
|
-
(
|
|
36
|
-
GRAPH_STATUS="offline"
|
|
37
|
-
GRAPH_REASON=""
|
|
38
|
-
if [ -z "$API_URL" ] || [ -z "$API_KEY" ]; then
|
|
39
|
-
GRAPH_REASON="missing_config"
|
|
40
|
-
else
|
|
41
|
-
# Store HTTP status code alongside response body. curl already emits 000
|
|
42
|
-
# on transport failure; keep the exit status separate so it cannot become
|
|
43
|
-
# 000000 and fall through as an invalid JSON response.
|
|
44
|
-
CURL_STATUS=0
|
|
45
|
-
HTTP_CODE=$(curl -s -o "$TMPDIR/activity_raw.json" -w "%{http_code}" \
|
|
46
|
-
"${API_URL}/api/activity/dashboard?github_username=$(printf '%s' "$GH_USER" | jq -sRr @uri)" \
|
|
47
|
-
-H "Authorization: Bearer $API_KEY" \
|
|
48
|
-
--connect-timeout 5 --max-time 15 2>/dev/null) || CURL_STATUS=$?
|
|
49
|
-
|
|
50
|
-
if [ "$CURL_STATUS" -ne 0 ] || [ "$HTTP_CODE" = "000" ] || ! [[ "$HTTP_CODE" =~ ^[0-9][0-9][0-9]$ ]]; then
|
|
51
|
-
GRAPH_REASON="unreachable"
|
|
52
|
-
elif [ "$HTTP_CODE" = "401" ] || [ "$HTTP_CODE" = "403" ]; then
|
|
53
|
-
GRAPH_REASON="auth_error"
|
|
54
|
-
elif [ "$HTTP_CODE" -ge 500 ] 2>/dev/null; then
|
|
55
|
-
GRAPH_REASON="server_error"
|
|
56
|
-
elif [ -s "$TMPDIR/activity_raw.json" ] && jq -e '.me' "$TMPDIR/activity_raw.json" >/dev/null 2>&1; then
|
|
57
|
-
cp "$TMPDIR/activity_raw.json" "$TMPDIR/activity.json"
|
|
58
|
-
GRAPH_STATUS="connected"
|
|
59
|
-
else
|
|
60
|
-
GRAPH_REASON="invalid_response"
|
|
61
|
-
fi
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
# If not connected, write status-only response
|
|
65
|
-
if [ "$GRAPH_STATUS" != "connected" ]; then
|
|
66
|
-
jq -n --arg status "$GRAPH_STATUS" --arg reason "$GRAPH_REASON" \
|
|
67
|
-
'{graph_status: $status, graph_reason: $reason}' > "$TMPDIR/activity.json"
|
|
68
|
-
else
|
|
69
|
-
# Inject graph_status into successful response
|
|
70
|
-
jq --arg status "$GRAPH_STATUS" '. + {graph_status: $status}' \
|
|
71
|
-
"$TMPDIR/activity.json" > "$TMPDIR/activity_merged.json" \
|
|
72
|
-
&& mv "$TMPDIR/activity_merged.json" "$TMPDIR/activity.json"
|
|
73
|
-
fi
|
|
74
|
-
) &
|
|
75
|
-
API_PID=$!
|
|
76
|
-
|
|
77
|
-
# Git/disk: runs in parallel (stays client-side)
|
|
78
|
-
(
|
|
79
|
-
# Refresh remote refs only. A data read must never mutate the working
|
|
80
|
-
# branch: the rebase this block used to run rewrote users' task branches as
|
|
81
|
-
# a side effect of /activity (observed rewinding a pushed branch mid-session).
|
|
82
|
-
# Workspace sync belongs to agent.sh sync / the session-start path.
|
|
83
|
-
git -C "$SCRIPT_DIR" fetch origin --quiet 2>/dev/null || true
|
|
84
|
-
|
|
85
|
-
# Memory sync
|
|
86
|
-
if [ -d "$SCRIPT_DIR/memory/.git" ] || [ -L "$SCRIPT_DIR/memory" ]; then
|
|
87
|
-
git -C "$SCRIPT_DIR/memory" fetch origin main --quiet 2>/dev/null || true
|
|
88
|
-
LOCAL=$(git -C "$SCRIPT_DIR/memory" rev-parse HEAD 2>/dev/null || echo "")
|
|
89
|
-
REMOTE=$(git -C "$SCRIPT_DIR/memory" rev-parse origin/main 2>/dev/null || echo "")
|
|
90
|
-
if [ -n "$LOCAL" ] && [ -n "$REMOTE" ] && [ "$LOCAL" != "$REMOTE" ]; then
|
|
91
|
-
git -C "$SCRIPT_DIR/memory" pull origin main --quiet 2>/dev/null || true
|
|
92
|
-
fi
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
# PRs
|
|
96
|
-
PRS=$(cd "$SCRIPT_DIR" && gh pr list --base develop --state open --json number,title,author 2>/dev/null || echo "[]")
|
|
97
|
-
echo "$PRS" > "$TMPDIR/prs.json"
|
|
98
|
-
|
|
99
|
-
# Disk cross-reference
|
|
100
|
-
MONTH=$(date +%Y-%m)
|
|
101
|
-
TODAY=$(date +%d)
|
|
102
|
-
YESTERDAY=$(date -v-1d +%d 2>/dev/null || date -d 'yesterday' +%d 2>/dev/null || echo "00")
|
|
103
|
-
HANDOFFS=$(ls -1 "$SCRIPT_DIR/memory/handoffs/$MONTH/" 2>/dev/null | grep "^${TODAY}-\|^${YESTERDAY}-" 2>/dev/null | head -10 || echo "")
|
|
104
|
-
echo "$HANDOFFS" > "$TMPDIR/disk_handoffs.txt"
|
|
105
|
-
|
|
106
|
-
DECISIONS=$(ls -1t "$SCRIPT_DIR/memory/knowledge/decisions/" 2>/dev/null | head -5 || echo "")
|
|
107
|
-
echo "$DECISIONS" > "$TMPDIR/disk_decisions.txt"
|
|
108
|
-
) &
|
|
109
|
-
GIT_PID=$!
|
|
110
|
-
|
|
111
|
-
# Local sessions: parse memory files when graph is offline (parallel)
|
|
112
|
-
(
|
|
113
|
-
GH_LC=$(echo "$GH_USER" | tr '[:upper:]' '[:lower:]')
|
|
114
|
-
DISPLAY_LC=""
|
|
115
|
-
if [ -f "$SCRIPT_DIR/.egregore-state.json" ]; then
|
|
116
|
-
DISPLAY_LC=$(jq -r '.display_name // empty' "$SCRIPT_DIR/.egregore-state.json" 2>/dev/null | tr '[:upper:]' '[:lower:]')
|
|
117
|
-
fi
|
|
118
|
-
|
|
119
|
-
CUTOFF=$(date -v-14d +%Y-%m-%d 2>/dev/null || date -d '14 days ago' +%Y-%m-%d 2>/dev/null || echo "2000-01-01")
|
|
120
|
-
MY="[]"
|
|
121
|
-
TEAM="[]"
|
|
122
|
-
|
|
123
|
-
# Scan sessions, wraps, and handoffs
|
|
124
|
-
ALL_ENTRIES=""
|
|
125
|
-
for DIR in "$SCRIPT_DIR/memory/sessions" "$SCRIPT_DIR/memory/wraps" "$SCRIPT_DIR/memory/handoffs"; do
|
|
126
|
-
[ -d "$DIR" ] || continue
|
|
127
|
-
TYPE=$(basename "$DIR")
|
|
128
|
-
find -L "$DIR" -name '*.md' -not -name 'index*' -type f 2>/dev/null | xargs ls -t 2>/dev/null | head -20 | while read -r MFILE; do
|
|
129
|
-
[ -z "$MFILE" ] && continue
|
|
130
|
-
M_AUTH=$(head -10 "$MFILE" 2>/dev/null | grep -m1 '^\*\*Author\*\*:' | sed 's/^\*\*Author\*\*:[[:space:]]*//')
|
|
131
|
-
M_DATE=$(head -10 "$MFILE" 2>/dev/null | grep -m1 '^\*\*Date\*\*:' | sed 's/^\*\*Date\*\*:[[:space:]]*//')
|
|
132
|
-
M_BRANCH=$(head -10 "$MFILE" 2>/dev/null | grep -m1 '^\*\*Branch\*\*:' | sed 's/^\*\*Branch\*\*:[[:space:]]*//')
|
|
133
|
-
M_DURATION=$(head -10 "$MFILE" 2>/dev/null | grep -m1 '^\*\*Duration\*\*:' | sed 's/^\*\*Duration\*\*:[[:space:]]*//')
|
|
134
|
-
M_TOPIC=$(head -3 "$MFILE" 2>/dev/null | grep -m1 '^# ' | sed 's/^# [^:]*:[[:space:]]*//')
|
|
135
|
-
[ -z "$M_AUTH" ] && continue
|
|
136
|
-
# Date filter
|
|
137
|
-
M_DAY="${M_DATE%%T*}"
|
|
138
|
-
[ -n "$M_DAY" ] && [ "$M_DAY" \< "$CUTOFF" ] && continue
|
|
139
|
-
echo "${M_AUTH}|${M_DATE}|${M_BRANCH}|${M_TOPIC}|${M_DURATION}|${TYPE}"
|
|
140
|
-
done
|
|
141
|
-
done | jq -Rn --arg gh "$GH_LC" --arg dn "$DISPLAY_LC" '
|
|
142
|
-
[inputs | split("|") |
|
|
143
|
-
{author: .[0], date: .[1], branch: .[2], topic: .[3], duration: .[4], type: .[5]}
|
|
144
|
-
] | {
|
|
145
|
-
my_sessions: [.[] | select((.author | ascii_downcase) == $gh or (.author | ascii_downcase) == $dn) | select($dn != "" or (.author | ascii_downcase) == $gh)],
|
|
146
|
-
team_sessions: [.[] | select((.author | ascii_downcase) != $gh and (if $dn != "" then (.author | ascii_downcase) != $dn else true end))]
|
|
147
|
-
}
|
|
148
|
-
' 2>/dev/null > "$TMPDIR/local_sessions.json" || echo '{"my_sessions":[],"team_sessions":[]}' > "$TMPDIR/local_sessions.json"
|
|
149
|
-
) &
|
|
150
|
-
LOCAL_PID=$!
|
|
151
|
-
|
|
152
|
-
# --- Wait for all ---
|
|
153
|
-
wait $API_PID $GIT_PID $LOCAL_PID 2>/dev/null || true
|
|
154
|
-
|
|
155
|
-
# --- Read results ---
|
|
156
|
-
PRS=$(cat "$TMPDIR/prs.json" 2>/dev/null || echo "[]")
|
|
157
|
-
echo "$PRS" | jq . >/dev/null 2>&1 || PRS="[]"
|
|
158
|
-
|
|
159
|
-
# Resolve PR author GitHub logins -> egregore display names. `gh pr list` returns
|
|
160
|
-
# the raw github login (e.g. "alice-gh"); without this it leaks into activity
|
|
161
|
-
# instead of the person's display name ("Alice"). Map via the graph when connected;
|
|
162
|
-
# fall back to the github profile name, then the login. Author becomes a string.
|
|
163
|
-
if [ -n "$PRS" ] && [ "$PRS" != "[]" ]; then
|
|
164
|
-
AUTHOR_MAP='{}'
|
|
165
|
-
if [ -n "$API_URL" ] && [ -n "$API_KEY" ]; then
|
|
166
|
-
MAP_RAW=$(bash "$SCRIPT_DIR/bin/graph.sh" query \
|
|
167
|
-
"MATCH (p:Person) WHERE p.github IS NOT NULL RETURN p.github AS gh, p.name AS name" 2>/dev/null)
|
|
168
|
-
AUTHOR_MAP=$(printf '%s' "$MAP_RAW" | jq -c \
|
|
169
|
-
'reduce (.values[]?) as $v ({}; .[($v[0]|ascii_downcase)] = $v[1])' 2>/dev/null || echo '{}')
|
|
170
|
-
fi
|
|
171
|
-
PRS=$(printf '%s' "$PRS" | jq -c --argjson map "$AUTHOR_MAP" '
|
|
172
|
-
map(
|
|
173
|
-
(if (.author|type)=="object" then .author else {login: (.author|tostring), name: null} end) as $a
|
|
174
|
-
| .author = ([$map[(($a.login // "") | ascii_downcase)], $a.name, $a.login]
|
|
175
|
-
| map(select(. != null and . != "")) | first // "unknown")
|
|
176
|
-
)' 2>/dev/null || printf '%s' "$PRS")
|
|
177
|
-
fi
|
|
178
|
-
DISK_HANDOFFS=$(cat "$TMPDIR/disk_handoffs.txt" 2>/dev/null || echo "")
|
|
179
|
-
DISK_DECISIONS=$(cat "$TMPDIR/disk_decisions.txt" 2>/dev/null || echo "")
|
|
180
|
-
LOCAL_SESSIONS=$(cat "$TMPDIR/local_sessions.json" 2>/dev/null || echo '{"my_sessions":[],"team_sessions":[]}')
|
|
181
|
-
echo "$LOCAL_SESSIONS" | jq . >/dev/null 2>&1 || LOCAL_SESSIONS='{"my_sessions":[],"team_sessions":[]}'
|
|
182
|
-
|
|
183
|
-
handoff_metadata_map() {
|
|
184
|
-
local json="$1"
|
|
185
|
-
|
|
186
|
-
if ! declare -F eg_handoff_metadata_json >/dev/null 2>&1; then
|
|
187
|
-
echo "{}"
|
|
188
|
-
return
|
|
189
|
-
fi
|
|
190
|
-
|
|
191
|
-
printf '%s\n' "$json" | jq -r '
|
|
192
|
-
[(.handoffs_to_me[]?.filePath // empty), (.all_handoffs[]?.filePath // empty)]
|
|
193
|
-
| map(select(. != ""))
|
|
194
|
-
| unique[]
|
|
195
|
-
' 2>/dev/null | while IFS= read -r rel; do
|
|
196
|
-
[ -z "$rel" ] && continue
|
|
197
|
-
file="$SCRIPT_DIR/memory/$rel"
|
|
198
|
-
[ -f "$file" ] || continue
|
|
199
|
-
eg_handoff_metadata_json "$file" | jq -c --arg rel "$rel" '{key:$rel, value:{author:.author, topic:.topic, date:.date}}'
|
|
200
|
-
done | jq -sc 'map({(.key): .value}) | add // {}' 2>/dev/null || echo "{}"
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
# --- Merge server response + local git/disk data ---
|
|
204
|
-
FINAL_JSON=$(jq -n \
|
|
205
|
-
--arg org "$ORG" \
|
|
206
|
-
--arg date "$DATE" \
|
|
207
|
-
--slurpfile activity "$TMPDIR/activity.json" \
|
|
208
|
-
--argjson prs "$PRS" \
|
|
209
|
-
--arg disk_handoffs "$DISK_HANDOFFS" \
|
|
210
|
-
--arg disk_decisions "$DISK_DECISIONS" \
|
|
211
|
-
--argjson local_sessions "$LOCAL_SESSIONS" \
|
|
212
|
-
'$activity[0] + {
|
|
213
|
-
org: $org,
|
|
214
|
-
date: $date,
|
|
215
|
-
prs: $prs,
|
|
216
|
-
disk: {handoffs: $disk_handoffs, decisions: $disk_decisions},
|
|
217
|
-
local_sessions: $local_sessions
|
|
218
|
-
}')
|
|
219
|
-
|
|
220
|
-
HANDOFF_META="$(handoff_metadata_map "$FINAL_JSON")"
|
|
221
|
-
[ -z "$HANDOFF_META" ] && HANDOFF_META="{}"
|
|
222
|
-
|
|
223
|
-
printf '%s\n' "$FINAL_JSON" | jq --argjson handoff_meta "$HANDOFF_META" '
|
|
224
|
-
def enrich_handoff_sender:
|
|
225
|
-
(.filePath // "") as $file
|
|
226
|
-
| if $file != "" and ($handoff_meta[$file] // null) != null then
|
|
227
|
-
($handoff_meta[$file] // {}) as $meta
|
|
228
|
-
| .author = ($meta.author // .author)
|
|
229
|
-
| .from = ($meta.author // .from)
|
|
230
|
-
| .topic = (.topic // $meta.topic)
|
|
231
|
-
| .date = (.date // $meta.date)
|
|
232
|
-
else
|
|
233
|
-
.
|
|
234
|
-
end;
|
|
235
|
-
|
|
236
|
-
.handoffs_to_me = ((.handoffs_to_me // []) | map(enrich_handoff_sender))
|
|
237
|
-
| .all_handoffs = ((.all_handoffs // []) | map(enrich_handoff_sender))
|
|
238
|
-
'
|
|
14
|
+
ARGS=(activity --time-range P7D)
|
|
15
|
+
[ "${EGREGORE_STATUS_CONNECTED_ENRICH:-0}" = "1" ] && ARGS+=(--connected-enrichment)
|
|
16
|
+
EGREGORE_ROOT="$ROOT" PYTHONPATH="$ROOT${PYTHONPATH:+:$PYTHONPATH}" \
|
|
17
|
+
exec python3 -m egregore_runtime.status_cli "${ARGS[@]}"
|