@ouro.bot/cli 0.1.0-alpha.55 → 0.1.0-alpha.551
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/README.md +133 -19
- package/RepairGuide.ouro/agent.json +5 -0
- package/RepairGuide.ouro/psyche/IDENTITY.md +19 -0
- package/RepairGuide.ouro/psyche/SOUL.md +55 -0
- package/RepairGuide.ouro/skills/diagnose-bootstrap-drift.md +54 -0
- package/RepairGuide.ouro/skills/diagnose-broken-remote.md +63 -0
- package/RepairGuide.ouro/skills/diagnose-stacked-typed-issues.md +35 -0
- package/RepairGuide.ouro/skills/diagnose-sync-blocked.md +54 -0
- package/RepairGuide.ouro/skills/diagnose-vault-expired.md +60 -0
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/agent.json +4 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/SOUL.md +2 -2
- package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-serpent.md +1 -1
- package/changelog.json +3561 -0
- package/dist/arc/attention-types.js +8 -0
- package/dist/arc/cares.js +140 -0
- package/dist/arc/episodes.js +117 -0
- package/dist/arc/intentions.js +133 -0
- package/dist/arc/json-store.js +117 -0
- package/dist/arc/obligations.js +237 -0
- package/dist/arc/packets.js +193 -0
- package/dist/arc/presence.js +185 -0
- package/dist/arc/task-lifecycle.js +65 -0
- package/dist/heart/active-work.js +837 -26
- package/dist/heart/agent-entry.js +58 -3
- package/dist/heart/attachments/image-normalize.js +194 -0
- package/dist/heart/attachments/materialize.js +97 -0
- package/dist/heart/attachments/originals.js +88 -0
- package/dist/heart/attachments/render.js +29 -0
- package/dist/heart/attachments/sources/adapter.js +2 -0
- package/dist/heart/attachments/sources/bluebubbles.js +156 -0
- package/dist/heart/attachments/sources/cli-local-file.js +78 -0
- package/dist/heart/attachments/sources/index.js +16 -0
- package/dist/heart/attachments/store.js +103 -0
- package/dist/heart/attachments/types.js +93 -0
- package/dist/heart/auth/auth-flow.js +479 -0
- package/dist/heart/background-operations.js +281 -0
- package/dist/heart/bundle-state.js +168 -0
- package/dist/heart/commitments.js +111 -0
- package/dist/heart/config-registry.js +304 -0
- package/dist/heart/config.js +114 -118
- package/dist/heart/core.js +925 -246
- package/dist/heart/cross-chat-delivery.js +3 -18
- package/dist/heart/daemon/agent-config-check.js +512 -0
- package/dist/heart/daemon/agent-discovery.js +102 -3
- package/dist/heart/daemon/agent-service.js +522 -0
- package/dist/heart/daemon/agentic-repair.js +554 -0
- package/dist/heart/daemon/bluebubbles-health-diagnostics.js +122 -0
- package/dist/heart/daemon/boot-sync-probe.js +197 -0
- package/dist/heart/daemon/cadence.js +70 -0
- package/dist/heart/daemon/cli-defaults.js +665 -0
- package/dist/heart/daemon/cli-exec.js +7565 -0
- package/dist/heart/daemon/cli-help.js +498 -0
- package/dist/heart/daemon/cli-parse.js +1590 -0
- package/dist/heart/daemon/cli-render-doctor.js +57 -0
- package/dist/heart/daemon/cli-render.js +775 -0
- package/dist/heart/daemon/cli-types.js +8 -0
- package/dist/heart/daemon/connect-bay.js +323 -0
- package/dist/heart/daemon/daemon-cli.js +29 -1672
- package/dist/heart/daemon/daemon-entry.js +417 -2
- package/dist/heart/daemon/daemon-health.js +183 -0
- package/dist/heart/daemon/daemon-rollup.js +58 -0
- package/dist/heart/daemon/daemon-runtime-sync.js +87 -13
- package/dist/heart/daemon/daemon-tombstone.js +236 -0
- package/dist/heart/daemon/daemon.js +796 -71
- package/dist/heart/daemon/dns-workflow.js +394 -0
- package/dist/heart/daemon/doctor-types.js +8 -0
- package/dist/heart/daemon/doctor.js +844 -0
- package/dist/heart/daemon/drift-detection.js +146 -0
- package/dist/heart/daemon/health-monitor.js +122 -1
- package/dist/heart/daemon/hooks/agent-config-v2.js +33 -0
- package/dist/heart/daemon/hooks/bundle-meta.js +115 -1
- package/dist/heart/daemon/http-health-probe.js +80 -0
- package/dist/heart/daemon/human-command-screens.js +234 -0
- package/dist/heart/daemon/human-readiness.js +114 -0
- package/dist/heart/daemon/inner-status.js +102 -0
- package/dist/heart/daemon/interactive-repair.js +394 -0
- package/dist/heart/daemon/launchd.js +37 -8
- package/dist/heart/daemon/log-tailer.js +82 -12
- package/dist/heart/daemon/logs-prune.js +110 -0
- package/dist/heart/daemon/mcp-canary.js +297 -0
- package/dist/heart/daemon/message-router.js +2 -2
- package/dist/heart/daemon/os-cron-deps.js +135 -0
- package/dist/heart/daemon/os-cron.js +14 -12
- package/dist/heart/daemon/ouro-bot-entry.js +4 -2
- package/dist/heart/daemon/ouro-entry.js +3 -1
- package/dist/heart/daemon/process-manager.js +375 -33
- package/dist/heart/daemon/provider-discovery.js +137 -0
- package/dist/heart/daemon/provider-ping-progress.js +83 -0
- package/dist/heart/daemon/pulse.js +475 -0
- package/dist/heart/daemon/readiness-repair.js +365 -0
- package/dist/heart/daemon/run-hooks.js +2 -0
- package/dist/heart/daemon/runtime-logging.js +67 -16
- package/dist/heart/daemon/runtime-metadata.js +3 -31
- package/dist/heart/daemon/safe-mode.js +161 -0
- package/dist/heart/daemon/sense-manager.js +353 -38
- package/dist/heart/daemon/session-id-resolver.js +131 -0
- package/dist/heart/daemon/skill-management-installer.js +94 -0
- package/dist/heart/daemon/socket-client.js +158 -11
- package/dist/heart/daemon/stale-bundle-prune.js +96 -0
- package/dist/heart/daemon/startup-tui.js +330 -0
- package/dist/heart/daemon/task-scheduler.js +3 -25
- package/dist/heart/daemon/terminal-ui.js +499 -0
- package/dist/heart/daemon/thoughts.js +162 -17
- package/dist/heart/daemon/up-progress.js +366 -0
- package/dist/heart/daemon/vault-items.js +56 -0
- package/dist/heart/delegation.js +1 -1
- package/dist/heart/habits/habit-migration.js +189 -0
- package/dist/heart/habits/habit-parser.js +140 -0
- package/dist/heart/habits/habit-runtime-state.js +100 -0
- package/dist/heart/habits/habit-scheduler.js +372 -0
- package/dist/heart/{daemon → hatch}/hatch-flow.js +52 -117
- package/dist/heart/{daemon → hatch}/hatch-specialist.js +6 -8
- package/dist/heart/{daemon → hatch}/specialist-prompt.js +12 -9
- package/dist/heart/{daemon → hatch}/specialist-tools.js +35 -12
- package/dist/heart/identity.js +200 -51
- package/dist/heart/kept-notes.js +357 -0
- package/dist/heart/kicks.js +1 -1
- package/dist/heart/machine-identity.js +161 -0
- package/dist/heart/mail-import-discovery.js +353 -0
- package/dist/heart/mailbox/mailbox-http-hooks.js +66 -0
- package/dist/heart/mailbox/mailbox-http-response.js +7 -0
- package/dist/heart/mailbox/mailbox-http-routes.js +246 -0
- package/dist/heart/mailbox/mailbox-http-static.js +103 -0
- package/dist/heart/mailbox/mailbox-http-transport.js +116 -0
- package/dist/heart/mailbox/mailbox-http.js +99 -0
- package/dist/heart/mailbox/mailbox-read.js +31 -0
- package/dist/heart/mailbox/mailbox-types.js +27 -0
- package/dist/heart/mailbox/mailbox-view.js +195 -0
- package/dist/heart/mailbox/readers/agent-machine.js +382 -0
- package/dist/heart/mailbox/readers/continuity-readers.js +338 -0
- package/dist/heart/mailbox/readers/mail.js +362 -0
- package/dist/heart/mailbox/readers/runtime-readers.js +651 -0
- package/dist/heart/mailbox/readers/sessions.js +232 -0
- package/dist/heart/mailbox/readers/shared.js +111 -0
- package/dist/heart/mcp/mcp-server.js +683 -0
- package/dist/heart/migrate-config.js +100 -0
- package/dist/heart/model-capabilities.js +19 -0
- package/dist/heart/platform.js +81 -0
- package/dist/heart/provider-attempt.js +134 -0
- package/dist/heart/provider-binding-resolver.js +255 -0
- package/dist/heart/provider-credentials.js +425 -0
- package/dist/heart/provider-failover.js +301 -0
- package/dist/heart/provider-models.js +81 -0
- package/dist/heart/provider-ping.js +262 -0
- package/dist/heart/provider-state.js +216 -0
- package/dist/heart/provider-visibility.js +188 -0
- package/dist/heart/providers/anthropic-token.js +131 -0
- package/dist/heart/providers/anthropic.js +139 -52
- package/dist/heart/providers/azure.js +97 -13
- package/dist/heart/providers/error-classification.js +127 -0
- package/dist/heart/providers/github-copilot.js +145 -0
- package/dist/heart/providers/minimax-vlm.js +189 -0
- package/dist/heart/providers/minimax.js +26 -8
- package/dist/heart/providers/openai-codex.js +55 -40
- package/dist/heart/runtime-capability-check.js +170 -0
- package/dist/heart/runtime-credentials.js +367 -0
- package/dist/heart/runtime-cwd.js +87 -0
- package/dist/heart/sense-truth.js +11 -4
- package/dist/heart/session-activity.js +43 -22
- package/dist/heart/session-events.js +1149 -0
- package/dist/heart/session-playback-cli-main.js +5 -0
- package/dist/heart/session-playback-cli.js +36 -0
- package/dist/heart/session-playback.js +231 -0
- package/dist/heart/session-stats-cli-main.js +5 -0
- package/dist/heart/session-stats.js +182 -0
- package/dist/heart/session-transcript.js +243 -0
- package/dist/heart/start-of-turn-packet.js +345 -0
- package/dist/heart/streaming.js +44 -27
- package/dist/heart/sync-classification.js +176 -0
- package/dist/heart/sync.js +449 -0
- package/dist/heart/target-resolution.js +9 -5
- package/dist/heart/tempo.js +93 -0
- package/dist/heart/temporal-view.js +41 -0
- package/dist/heart/timeouts.js +101 -0
- package/dist/heart/tool-activity-callbacks.js +59 -0
- package/dist/heart/tool-description.js +139 -0
- package/dist/heart/tool-friction.js +55 -0
- package/dist/heart/tool-loop.js +200 -0
- package/dist/heart/turn-context.js +381 -0
- package/dist/heart/{daemon → versioning}/ouro-bot-global-installer.js +6 -5
- package/dist/heart/{daemon → versioning}/ouro-bot-wrapper.js +1 -1
- package/dist/heart/versioning/ouro-path-installer.js +426 -0
- package/dist/heart/versioning/ouro-version-manager.js +295 -0
- package/dist/heart/{daemon → versioning}/staged-restart.js +40 -8
- package/dist/heart/{daemon → versioning}/update-checker.js +6 -1
- package/dist/heart/{daemon → versioning}/update-hooks.js +63 -59
- package/dist/mailbox-ui/assets/index-BPr5vNuM.css +1 -0
- package/dist/mailbox-ui/assets/index-Cm51CY9W.js +61 -0
- package/dist/mailbox-ui/index.html +15 -0
- package/dist/mailroom/attention.js +167 -0
- package/dist/mailroom/autonomy.js +209 -0
- package/dist/mailroom/blob-store.js +674 -0
- package/dist/mailroom/body-cache.js +61 -0
- package/dist/mailroom/core.js +720 -0
- package/dist/mailroom/entry.js +160 -0
- package/dist/mailroom/file-store.js +430 -0
- package/dist/mailroom/mbox-import.js +383 -0
- package/dist/mailroom/outbound.js +380 -0
- package/dist/mailroom/policy.js +263 -0
- package/dist/mailroom/reader.js +233 -0
- package/dist/mailroom/search-cache.js +256 -0
- package/dist/mailroom/search-relevance.js +319 -0
- package/dist/mailroom/smtp-ingress.js +176 -0
- package/dist/mailroom/source-state.js +176 -0
- package/dist/mailroom/thread.js +109 -0
- package/dist/mailroom/travel-extract.js +89 -0
- package/dist/mind/bundle-manifest.js +7 -1
- package/dist/mind/context.js +165 -101
- package/dist/mind/diary-integrity.js +60 -0
- package/dist/mind/{memory.js → diary.js} +62 -75
- package/dist/mind/embedding-provider.js +60 -0
- package/dist/mind/file-state.js +179 -0
- package/dist/mind/friends/channel.js +30 -0
- package/dist/mind/friends/resolver.js +54 -2
- package/dist/mind/friends/store-file.js +39 -3
- package/dist/mind/friends/types.js +2 -2
- package/dist/mind/journal-index.js +161 -0
- package/dist/mind/note-search.js +268 -0
- package/dist/mind/obligation-steering.js +221 -0
- package/dist/mind/pending.js +4 -0
- package/dist/mind/prompt-refresh.js +3 -2
- package/dist/mind/prompt.js +995 -123
- package/dist/mind/provenance-trust.js +26 -0
- package/dist/mind/scrutiny.js +173 -0
- package/dist/nerves/cli-logging.js +7 -1
- package/dist/nerves/coverage/audit-rules.js +15 -6
- package/dist/nerves/coverage/audit.js +28 -2
- package/dist/nerves/coverage/cli.js +1 -1
- package/dist/nerves/coverage/contract.js +5 -5
- package/dist/nerves/coverage/file-completeness.js +139 -5
- package/dist/nerves/coverage/run-artifacts.js +1 -1
- package/dist/nerves/event-buffer.js +111 -0
- package/dist/nerves/index.js +224 -4
- package/dist/nerves/observation.js +20 -0
- package/dist/nerves/redact.js +79 -0
- package/dist/nerves/review/cli-main.js +5 -0
- package/dist/nerves/review/cli.js +156 -0
- package/dist/nerves/review/core.js +152 -0
- package/dist/nerves/runtime.js +5 -1
- package/dist/repertoire/ado-client.js +15 -56
- package/dist/repertoire/ado-semantic.js +11 -10
- package/dist/repertoire/api-client.js +97 -0
- package/dist/repertoire/bitwarden-store.js +816 -0
- package/dist/repertoire/bundle-templates.js +72 -0
- package/dist/repertoire/bw-installer.js +180 -0
- package/dist/repertoire/coding/codex-jsonl.js +64 -0
- package/dist/repertoire/coding/context-pack.js +330 -0
- package/dist/repertoire/coding/feedback.js +197 -30
- package/dist/repertoire/coding/manager.js +158 -9
- package/dist/repertoire/coding/spawner.js +55 -9
- package/dist/repertoire/coding/tools.js +170 -7
- package/dist/repertoire/commerce-errors.js +109 -0
- package/dist/repertoire/commerce-self-test.js +156 -0
- package/dist/repertoire/credential-access.js +111 -0
- package/dist/repertoire/duffel-client.js +185 -0
- package/dist/repertoire/github-client.js +14 -55
- package/dist/repertoire/graph-client.js +11 -52
- package/dist/repertoire/guardrails.js +396 -0
- package/dist/repertoire/mcp-client.js +295 -0
- package/dist/repertoire/mcp-manager.js +362 -0
- package/dist/repertoire/mcp-tools.js +63 -0
- package/dist/repertoire/shell-sessions.js +133 -0
- package/dist/repertoire/skills.js +15 -24
- package/dist/repertoire/stripe-client.js +131 -0
- package/dist/repertoire/tasks/board.js +31 -5
- package/dist/repertoire/tasks/fix.js +182 -0
- package/dist/repertoire/tasks/index.js +16 -4
- package/dist/repertoire/tasks/lifecycle.js +2 -2
- package/dist/repertoire/tasks/parser.js +3 -2
- package/dist/repertoire/tasks/scanner.js +194 -37
- package/dist/repertoire/tasks/transitions.js +16 -78
- package/dist/repertoire/tool-results.js +29 -0
- package/dist/repertoire/tools-attachments.js +317 -0
- package/dist/repertoire/tools-base.js +47 -1075
- package/dist/repertoire/tools-bluebubbles.js +1 -0
- package/dist/repertoire/tools-bridge.js +142 -0
- package/dist/repertoire/tools-bundle.js +984 -0
- package/dist/repertoire/tools-config.js +185 -0
- package/dist/repertoire/tools-continuity.js +248 -0
- package/dist/repertoire/tools-credential.js +381 -0
- package/dist/repertoire/tools-files.js +342 -0
- package/dist/repertoire/tools-flight.js +224 -0
- package/dist/repertoire/tools-flow.js +119 -0
- package/dist/repertoire/tools-github.js +1 -7
- package/dist/repertoire/tools-mail.js +1857 -0
- package/dist/repertoire/tools-notes.js +421 -0
- package/dist/repertoire/tools-session.js +750 -0
- package/dist/repertoire/tools-shell.js +120 -0
- package/dist/repertoire/tools-stripe.js +180 -0
- package/dist/repertoire/tools-surface.js +243 -0
- package/dist/repertoire/tools-teams.js +9 -39
- package/dist/repertoire/tools-travel.js +125 -0
- package/dist/repertoire/tools-trip.js +604 -0
- package/dist/repertoire/tools-user-profile.js +144 -0
- package/dist/repertoire/tools-vault.js +40 -0
- package/dist/repertoire/tools.js +108 -100
- package/dist/repertoire/travel-api-client.js +360 -0
- package/dist/repertoire/user-profile.js +131 -0
- package/dist/repertoire/vault-setup.js +246 -0
- package/dist/repertoire/vault-unlock.js +561 -0
- package/dist/scripts/claude-code-hook.js +41 -0
- package/dist/scripts/claude-code-stop-hook.js +47 -0
- package/dist/senses/attention-queue.js +116 -0
- package/dist/senses/bluebubbles/active-turns.js +216 -0
- package/dist/senses/bluebubbles/attachment-cache.js +53 -0
- package/dist/senses/bluebubbles/attachment-download.js +137 -0
- package/dist/senses/{bluebubbles-client.js → bluebubbles/client.js} +219 -18
- package/dist/senses/bluebubbles/entry.js +77 -0
- package/dist/senses/{bluebubbles-inbound-log.js → bluebubbles/inbound-log.js} +20 -3
- package/dist/senses/bluebubbles/index.js +2305 -0
- package/dist/senses/{bluebubbles-media.js → bluebubbles/media.js} +121 -70
- package/dist/senses/{bluebubbles-model.js → bluebubbles/model.js} +33 -12
- package/dist/senses/{bluebubbles-mutation-log.js → bluebubbles/mutation-log.js} +3 -3
- package/dist/senses/bluebubbles/processed-log.js +133 -0
- package/dist/senses/bluebubbles/replay.js +137 -0
- package/dist/senses/{bluebubbles-runtime-state.js → bluebubbles/runtime-state.js} +30 -2
- package/dist/senses/{bluebubbles-session-cleanup.js → bluebubbles/session-cleanup.js} +1 -1
- package/dist/senses/cli/bracketed-paste.js +82 -0
- package/dist/senses/cli/image-paste.js +287 -0
- package/dist/senses/cli/image-ref-navigation.js +75 -0
- package/dist/senses/cli/ink-app.js +156 -0
- package/dist/senses/cli/inline-diff.js +64 -0
- package/dist/senses/cli/input-keys.js +174 -0
- package/dist/senses/cli/kill-ring.js +86 -0
- package/dist/senses/cli/message-list.js +51 -0
- package/dist/senses/cli/ouro-tui.js +607 -0
- package/dist/senses/cli/spinner-imperative.js +135 -0
- package/dist/senses/cli/spinner.js +101 -0
- package/dist/senses/cli/status-line.js +60 -0
- package/dist/senses/cli/streaming-markdown.js +526 -0
- package/dist/senses/cli/tool-display.js +85 -0
- package/dist/senses/cli/tool-render.js +85 -0
- package/dist/senses/cli/tui-store.js +240 -0
- package/dist/senses/cli/virtual-list.js +35 -0
- package/dist/senses/cli-entry.js +60 -8
- package/dist/senses/cli-layout.js +187 -0
- package/dist/senses/cli.js +520 -209
- package/dist/senses/commands.js +66 -3
- package/dist/senses/habit-turn-message.js +108 -0
- package/dist/senses/inner-dialog-worker.js +175 -21
- package/dist/senses/inner-dialog.js +330 -27
- package/dist/senses/mail-entry.js +66 -0
- package/dist/senses/mail.js +379 -0
- package/dist/senses/pipeline.js +569 -182
- package/dist/senses/proactive-content-guard.js +51 -0
- package/dist/senses/shared-turn.js +248 -0
- package/dist/senses/surface-tool.js +68 -0
- package/dist/senses/teams-entry.js +60 -8
- package/dist/senses/teams.js +387 -98
- package/dist/senses/trust-gate.js +100 -5
- package/dist/trips/core.js +138 -0
- package/dist/trips/store.js +146 -0
- package/package.json +38 -7
- package/skills/agent-commerce.md +106 -0
- package/skills/browser-navigation.md +117 -0
- package/skills/commerce-setup-guide.md +116 -0
- package/skills/commerce-setup.md +84 -0
- package/skills/configure-dev-tools.md +101 -0
- package/skills/travel-planning.md +138 -0
- package/dist/heart/daemon/ouro-path-installer.js +0 -178
- package/dist/heart/daemon/subagent-installer.js +0 -166
- package/dist/heart/session-recall.js +0 -116
- package/dist/mind/associative-recall.js +0 -209
- package/dist/senses/bluebubbles-entry.js +0 -13
- package/dist/senses/bluebubbles.js +0 -1177
- package/dist/senses/debug-activity.js +0 -148
- package/subagents/README.md +0 -86
- package/subagents/work-doer.md +0 -237
- package/subagents/work-merger.md +0 -618
- package/subagents/work-planner.md +0 -390
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/basilisk.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jafar.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/jormungandr.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/kaa.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/medusa.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/monty.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/nagini.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/ouroboros.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/python.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/quetzalcoatl.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/sir-hiss.md +0 -0
- /package/{AdoptionSpecialist.ouro → SerpentGuide.ouro}/psyche/identities/the-snake.md +0 -0
- /package/dist/heart/{daemon → hatch}/hatch-animation.js +0 -0
- /package/dist/heart/{daemon → hatch}/specialist-orchestrator.js +0 -0
- /package/dist/heart/{daemon → versioning}/ouro-uti.js +0 -0
- /package/dist/heart/{daemon → versioning}/wrapper-publish-guard.js +0 -0
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createDebugActivityController = createDebugActivityController;
|
|
4
|
-
const format_1 = require("../mind/format");
|
|
5
|
-
const phrases_1 = require("../mind/phrases");
|
|
6
|
-
const runtime_1 = require("../nerves/runtime");
|
|
7
|
-
const progress_story_1 = require("../heart/progress-story");
|
|
8
|
-
function createDebugActivityController(options) {
|
|
9
|
-
let queue = Promise.resolve();
|
|
10
|
-
let statusMessageGuid;
|
|
11
|
-
let typingActive = false;
|
|
12
|
-
let hadToolRun = false;
|
|
13
|
-
let followupShown = false;
|
|
14
|
-
let lastPhrase = "";
|
|
15
|
-
function reportTransportError(operation, error) {
|
|
16
|
-
(0, runtime_1.emitNervesEvent)({
|
|
17
|
-
level: "warn",
|
|
18
|
-
component: "senses",
|
|
19
|
-
event: "senses.debug_activity_transport_error",
|
|
20
|
-
message: "debug activity transport failed",
|
|
21
|
-
meta: {
|
|
22
|
-
operation,
|
|
23
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
options.onTransportError?.(operation, error);
|
|
27
|
-
}
|
|
28
|
-
function enqueue(operation, task) {
|
|
29
|
-
queue = queue
|
|
30
|
-
.then(task)
|
|
31
|
-
.catch((error) => {
|
|
32
|
-
reportTransportError(operation, error);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function nextPhrase(pool) {
|
|
36
|
-
const phrase = (0, phrases_1.pickPhrase)(pool, lastPhrase);
|
|
37
|
-
lastPhrase = phrase;
|
|
38
|
-
return phrase;
|
|
39
|
-
}
|
|
40
|
-
function startTypingNow() {
|
|
41
|
-
if (typingActive) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
typingActive = true;
|
|
45
|
-
enqueue("typing_start", async () => {
|
|
46
|
-
await options.transport.setTyping(true);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
function setStatus(text) {
|
|
50
|
-
(0, runtime_1.emitNervesEvent)({
|
|
51
|
-
component: "senses",
|
|
52
|
-
event: "senses.debug_activity_update",
|
|
53
|
-
message: "debug activity status updated",
|
|
54
|
-
meta: {
|
|
55
|
-
hasStatusGuid: Boolean(statusMessageGuid),
|
|
56
|
-
textLength: text.length,
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
const shouldStartTyping = !typingActive;
|
|
60
|
-
if (shouldStartTyping) {
|
|
61
|
-
typingActive = true;
|
|
62
|
-
}
|
|
63
|
-
enqueue("status_update", async () => {
|
|
64
|
-
if (statusMessageGuid) {
|
|
65
|
-
await options.transport.editStatus(statusMessageGuid, text);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
statusMessageGuid = await options.transport.sendStatus(text);
|
|
69
|
-
}
|
|
70
|
-
if (shouldStartTyping) {
|
|
71
|
-
await options.transport.setTyping(true);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
onModelStart() {
|
|
77
|
-
const pool = hadToolRun ? options.followupPhrases : options.thinkingPhrases;
|
|
78
|
-
if (options.startTypingOnModelStart) {
|
|
79
|
-
startTypingNow();
|
|
80
|
-
}
|
|
81
|
-
if (options.suppressInitialModelStatus && !statusMessageGuid && !hadToolRun) {
|
|
82
|
-
nextPhrase(pool);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
setStatus((0, progress_story_1.renderProgressStory)((0, progress_story_1.buildProgressStory)({
|
|
86
|
-
scope: "shared-work",
|
|
87
|
-
phase: "processing",
|
|
88
|
-
objective: `${nextPhrase(pool)}...`,
|
|
89
|
-
})));
|
|
90
|
-
},
|
|
91
|
-
onToolStart(name, args) {
|
|
92
|
-
hadToolRun = true;
|
|
93
|
-
followupShown = false;
|
|
94
|
-
const argSummary = Object.values(args).join(", ");
|
|
95
|
-
const detail = argSummary ? ` (${argSummary})` : "";
|
|
96
|
-
setStatus((0, progress_story_1.renderProgressStory)((0, progress_story_1.buildProgressStory)({
|
|
97
|
-
scope: "shared-work",
|
|
98
|
-
phase: "processing",
|
|
99
|
-
objective: `running ${name}${detail}...`,
|
|
100
|
-
})));
|
|
101
|
-
},
|
|
102
|
-
onToolEnd(name, summary, success) {
|
|
103
|
-
hadToolRun = true;
|
|
104
|
-
followupShown = false;
|
|
105
|
-
setStatus((0, progress_story_1.renderProgressStory)((0, progress_story_1.buildProgressStory)({
|
|
106
|
-
scope: "shared-work",
|
|
107
|
-
phase: "processing",
|
|
108
|
-
objective: (0, format_1.formatToolResult)(name, summary, success),
|
|
109
|
-
})));
|
|
110
|
-
},
|
|
111
|
-
onTextChunk(text) {
|
|
112
|
-
if (!text || !hadToolRun || followupShown) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
followupShown = true;
|
|
116
|
-
if (options.suppressFollowupPhraseStatus) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
setStatus((0, progress_story_1.renderProgressStory)((0, progress_story_1.buildProgressStory)({
|
|
120
|
-
scope: "shared-work",
|
|
121
|
-
phase: "processing",
|
|
122
|
-
objective: `${nextPhrase(options.followupPhrases)}...`,
|
|
123
|
-
})));
|
|
124
|
-
},
|
|
125
|
-
onError(error) {
|
|
126
|
-
setStatus((0, progress_story_1.renderProgressStory)((0, progress_story_1.buildProgressStory)({
|
|
127
|
-
scope: "shared-work",
|
|
128
|
-
phase: "errored",
|
|
129
|
-
outcomeText: (0, format_1.formatError)(error),
|
|
130
|
-
})));
|
|
131
|
-
this.finish();
|
|
132
|
-
},
|
|
133
|
-
async drain() {
|
|
134
|
-
await queue;
|
|
135
|
-
},
|
|
136
|
-
async finish() {
|
|
137
|
-
if (!typingActive) {
|
|
138
|
-
await queue;
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
typingActive = false;
|
|
142
|
-
enqueue("typing_stop", async () => {
|
|
143
|
-
await options.transport.setTyping(false);
|
|
144
|
-
});
|
|
145
|
-
await queue;
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
package/subagents/README.md
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
# Workflow Helpers
|
|
2
|
-
|
|
3
|
-
These files are the source-of-truth workflow helpers for:
|
|
4
|
-
|
|
5
|
-
- `work-planner`
|
|
6
|
-
- `work-doer`
|
|
7
|
-
- `work-merger`
|
|
8
|
-
|
|
9
|
-
They are written to stay generic enough for different agent shells, while following this repo’s local rules through `AGENTS.md`.
|
|
10
|
-
|
|
11
|
-
## What They Do
|
|
12
|
-
|
|
13
|
-
- `work-planner.md`
|
|
14
|
-
Creates and refines planning docs, then converts approved plans into doing docs.
|
|
15
|
-
- `work-doer.md`
|
|
16
|
-
Executes approved doing docs unit by unit with strict validation discipline.
|
|
17
|
-
- `work-merger.md`
|
|
18
|
-
Syncs with `main`, resolves conflicts, creates the PR, handles CI, and merges.
|
|
19
|
-
|
|
20
|
-
## Important Repo-Specific Truth
|
|
21
|
-
|
|
22
|
-
These helpers do not hardcode task-doc paths. They are expected to read project instructions to discover them.
|
|
23
|
-
|
|
24
|
-
In this repo, that means:
|
|
25
|
-
|
|
26
|
-
- task docs live in `~/AgentBundles/<agent>.ouro/tasks/one-shots/`
|
|
27
|
-
- not inside the repo
|
|
28
|
-
|
|
29
|
-
## Installing For Claude Code
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
mkdir -p ~/.claude/agents
|
|
33
|
-
cp subagents/*.md ~/.claude/agents/
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Installing For Codex-Style Skills
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
mkdir -p ~/.agents/skills/work-planner ~/.agents/skills/work-doer ~/.agents/skills/work-merger
|
|
40
|
-
|
|
41
|
-
# Hard-link to keep one source of truth
|
|
42
|
-
ln -f "$(pwd)/subagents/work-planner.md" ~/.agents/skills/work-planner/SKILL.md
|
|
43
|
-
ln -f "$(pwd)/subagents/work-doer.md" ~/.agents/skills/work-doer/SKILL.md
|
|
44
|
-
ln -f "$(pwd)/subagents/work-merger.md" ~/.agents/skills/work-merger/SKILL.md
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Important:** For Codex/OpenAI skill installs, use the generic `~/.agents/skills` root and use hard links (`ln`, not `ln -s`). Installing the same skill into both `~/.agents/skills` and `~/.codex/skills` can produce duplicate entries in Codex. Symlinked `SKILL.md` files may load but are not advertised reliably by Codex surfaces. Hard-links break when editors save by replacing the file (new inode). After editing any `subagents/*.md` file, re-run the `ln -f` command for that file to restore the link. You can verify with `stat -f '%i'` — both files should share the same inode.
|
|
48
|
-
|
|
49
|
-
Optional UI metadata:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
mkdir -p ~/.agents/skills/work-planner/agents ~/.agents/skills/work-doer/agents ~/.agents/skills/work-merger/agents
|
|
53
|
-
cat > ~/.agents/skills/work-planner/agents/openai.yaml << 'EOF'
|
|
54
|
-
interface:
|
|
55
|
-
display_name: "Work Planner"
|
|
56
|
-
short_description: "Create and gate planning/doing task docs"
|
|
57
|
-
default_prompt: "Use $work-planner to create or update a planning doc, then stop at NEEDS_REVIEW."
|
|
58
|
-
EOF
|
|
59
|
-
cat > ~/.agents/skills/work-doer/agents/openai.yaml << 'EOF'
|
|
60
|
-
interface:
|
|
61
|
-
display_name: "Work Doer"
|
|
62
|
-
short_description: "Execute approved doing docs with strict TDD"
|
|
63
|
-
default_prompt: "Use $work-doer to execute an approved doing doc unit by unit."
|
|
64
|
-
EOF
|
|
65
|
-
cat > ~/.agents/skills/work-merger/agents/openai.yaml << 'EOF'
|
|
66
|
-
interface:
|
|
67
|
-
display_name: "Work Merger"
|
|
68
|
-
short_description: "Merge feature branch into main via PR after work-doer completes"
|
|
69
|
-
default_prompt: "Use $work-merger to merge the current feature branch into main."
|
|
70
|
-
EOF
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Keeping Local Skill Copies Fresh
|
|
74
|
-
|
|
75
|
-
After editing any `subagents/*.md` file, resync your local installed copies.
|
|
76
|
-
|
|
77
|
-
The repo workflow usually checks this with diffs like:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
diff -q ~/.agents/skills/work-planner/SKILL.md subagents/work-planner.md
|
|
81
|
-
diff -q ~/.agents/skills/work-doer/SKILL.md subagents/work-doer.md
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Restart Behavior
|
|
85
|
-
|
|
86
|
-
Some tools only discover new skills on startup. If a shell/app does not see updates immediately, restart that shell/app after syncing.
|
package/subagents/work-doer.md
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: work-doer
|
|
3
|
-
description: Executes doing.md units sequentially with strict TDD. Reads the doing doc, works through each unit, commits after each. Use after planning is complete and doing.md exists.
|
|
4
|
-
model: opus
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
You are a task executor. Read a doing.md file and execute all units sequentially until complete or blocked.
|
|
8
|
-
|
|
9
|
-
## On Startup
|
|
10
|
-
|
|
11
|
-
1. **Find task-doc directory**: Read project instructions (for example `AGENTS.md`) to determine where planning/doing docs live for this repo
|
|
12
|
-
2. **Confirm worktree**: Run from the dedicated task worktree required by the project. If the current checkout is shared, ambiguous, or not on the task branch, switch/create the correct worktree first when project instructions allow it. Only STOP to ask the user when they explicitly want to control naming/layout or automatic creation fails.
|
|
13
|
-
3. **Find doing doc**: Look for `YYYY-MM-DD-HHMM-doing-*.md` in that project-defined task-doc directory
|
|
14
|
-
4. If multiple found, ask which one
|
|
15
|
-
5. If none found, ask user for location
|
|
16
|
-
6. **Check execution_mode**: Read the doing doc's `Execution Mode` field
|
|
17
|
-
7. **Verify artifacts directory exists**: `{task-name}/` next to `{task-name}.md`
|
|
18
|
-
- If missing, create it: `mkdir {task-name}`
|
|
19
|
-
8. **Detect resume vs fresh start:**
|
|
20
|
-
- Count completed units (✅) vs total units
|
|
21
|
-
- Check git status for uncommitted changes
|
|
22
|
-
|
|
23
|
-
8. **Announce status clearly:**
|
|
24
|
-
|
|
25
|
-
**If fresh start (0 units complete):**
|
|
26
|
-
```
|
|
27
|
-
found: YYYY-MM-DD-HHMM-doing-{name}.md
|
|
28
|
-
execution_mode: [pending|spawn|direct]
|
|
29
|
-
artifacts: ./{task-name}/
|
|
30
|
-
status: fresh start
|
|
31
|
-
units: 0/X complete
|
|
32
|
-
starting Unit 0...
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**If resuming (some units complete):**
|
|
36
|
-
```
|
|
37
|
-
found: YYYY-MM-DD-HHMM-doing-{name}.md
|
|
38
|
-
execution_mode: [pending|spawn|direct]
|
|
39
|
-
status: RESUMING
|
|
40
|
-
units: Y/X complete (✅ Unit 0, 1a, 1b...)
|
|
41
|
-
uncommitted changes: [yes/no]
|
|
42
|
-
resuming from Unit Z...
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**If uncommitted changes detected:**
|
|
46
|
-
```
|
|
47
|
-
⚠️ uncommitted changes found
|
|
48
|
-
recommend: commit or stash before continuing
|
|
49
|
-
proceed anyway? (y/n)
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## Timestamp & Commit Pattern
|
|
55
|
-
|
|
56
|
-
**All timestamps come from git commits for audit trail.**
|
|
57
|
-
|
|
58
|
-
To get timestamp for progress log entries:
|
|
59
|
-
```bash
|
|
60
|
-
git log -1 --format="%Y-%m-%d %H:%M"
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
After any edit to doing doc:
|
|
64
|
-
1. Stage: `git add doing-*.md`
|
|
65
|
-
2. Commit: `git commit -m "docs(doing): <what changed>"`
|
|
66
|
-
3. Get timestamp from git log
|
|
67
|
-
4. Use that timestamp in progress log entry
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Execution Loop
|
|
72
|
-
|
|
73
|
-
For each unit in order:
|
|
74
|
-
|
|
75
|
-
### 1. Announce
|
|
76
|
-
```
|
|
77
|
-
starting Unit Xa: [name]
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 2. Execute (TDD strictly enforced)
|
|
81
|
-
|
|
82
|
-
**General execution rules:**
|
|
83
|
-
- Save all outputs, logs, and data to `{task-name}/` artifacts directory
|
|
84
|
-
- If execution_mode is `pending`, wait for user approval before starting each unit
|
|
85
|
-
- If execution_mode is `spawn`, spawn a sub-agent for each unit
|
|
86
|
-
- If execution_mode is `direct`, proceed immediately
|
|
87
|
-
|
|
88
|
-
**For test units (Xa):**
|
|
89
|
-
1. Write failing tests for the feature
|
|
90
|
-
2. Run tests — **must FAIL (red)**
|
|
91
|
-
3. If tests pass immediately, something is wrong — investigate
|
|
92
|
-
4. Commit: `git commit -m "test(scope): Unit Xa - [description]"`
|
|
93
|
-
5. Push
|
|
94
|
-
|
|
95
|
-
**For implementation units (Xb):**
|
|
96
|
-
1. Write minimal code to make tests pass
|
|
97
|
-
2. **Do NOT modify tests** — implementation must satisfy existing tests
|
|
98
|
-
3. Run tests — **must PASS (green)**
|
|
99
|
-
4. **Run the build** (e.g. `npm run build`, `cargo build`, `go build`) — the project must compile with no errors. Tests alone are not sufficient (test runners may handle imports/modules differently than the real compiler).
|
|
100
|
-
5. No warnings allowed
|
|
101
|
-
6. Commit: `git commit -m "feat(scope): Unit Xb - [description]"`
|
|
102
|
-
7. Push
|
|
103
|
-
|
|
104
|
-
**For verify/refactor units (Xc):**
|
|
105
|
-
1. Run coverage report
|
|
106
|
-
2. **Must be 100% on new code** — if not, add tests
|
|
107
|
-
3. Check edge cases: null, empty, boundary values
|
|
108
|
-
4. Check all error paths tested
|
|
109
|
-
5. Refactor if needed, keep tests green
|
|
110
|
-
6. **Run the build** — verify the project compiles clean
|
|
111
|
-
7. Commit: `git commit -m "refactor(scope): Unit Xc - [description]"` (if changes made)
|
|
112
|
-
8. Push
|
|
113
|
-
|
|
114
|
-
**For non-coding units:**
|
|
115
|
-
1. Complete work as described
|
|
116
|
-
2. Produce specified output
|
|
117
|
-
3. Verify acceptance criteria
|
|
118
|
-
4. Commit relevant files
|
|
119
|
-
5. Push
|
|
120
|
-
|
|
121
|
-
### 3. Update doing.md
|
|
122
|
-
- Change unit status: `⬜` → `✅`
|
|
123
|
-
- Update `Completion Criteria` checkboxes that are now satisfied by this unit's evidence
|
|
124
|
-
- Commit: `git commit -m "docs(doing): complete Unit Xa"`
|
|
125
|
-
- Get timestamp: `git log -1 --format="%Y-%m-%d %H:%M"`
|
|
126
|
-
- Add progress log entry with that timestamp:
|
|
127
|
-
```
|
|
128
|
-
- 2026-02-03 14:25 Unit Xa complete: [brief summary]
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### 4. Context management
|
|
132
|
-
- Run `/compact` between units if context growing large
|
|
133
|
-
- Each unit should be independent
|
|
134
|
-
- Re-read files if you need prior context
|
|
135
|
-
|
|
136
|
-
### 5. Continue to next unit
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Code Coverage Requirements
|
|
141
|
-
|
|
142
|
-
**MANDATORY: 100% coverage on all new code.**
|
|
143
|
-
|
|
144
|
-
Before marking any implementation unit complete:
|
|
145
|
-
1. Run coverage report
|
|
146
|
-
2. Verify 100% on new/modified files
|
|
147
|
-
3. No `[ExcludeFromCodeCoverage]` or equivalent on new code
|
|
148
|
-
4. All branches covered (if/else, switch, try/catch)
|
|
149
|
-
5. All error paths have tests
|
|
150
|
-
6. If coverage < 100%, add tests before proceeding
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## TDD Requirements
|
|
155
|
-
|
|
156
|
-
**Strict TDD — no exceptions:**
|
|
157
|
-
|
|
158
|
-
1. **Tests first**: Write failing tests BEFORE any implementation
|
|
159
|
-
2. **Red**: Run tests, confirm they FAIL
|
|
160
|
-
3. **Green**: Write minimal code to pass
|
|
161
|
-
4. **Refactor**: Clean up, tests stay green
|
|
162
|
-
5. **Never skip**: No implementation without failing test first
|
|
163
|
-
6. **Never modify tests to pass**: Implementation satisfies tests, not vice versa
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Blocker Handling
|
|
168
|
-
|
|
169
|
-
**For simple fixes or test failures:**
|
|
170
|
-
1. **Spawn sub-agent immediately** — don't ask, just do it
|
|
171
|
-
2. Sub-agent analyzes error, fixes issue, commits, pushes
|
|
172
|
-
3. Sub-agent reports back when done
|
|
173
|
-
4. Continue with next unit
|
|
174
|
-
|
|
175
|
-
**For actual blockers (requirements unclear, external dependency, design decision needed):**
|
|
176
|
-
1. Mark unit as `❌ Blocked` in doing.md
|
|
177
|
-
2. Commit: `git commit -m "docs(doing): Unit Xa blocked"`
|
|
178
|
-
3. Get timestamp from git
|
|
179
|
-
4. Add progress log entry with error details
|
|
180
|
-
5. Output:
|
|
181
|
-
```
|
|
182
|
-
❌ blocked on Unit Xa
|
|
183
|
-
error: [description]
|
|
184
|
-
tried: [what you attempted]
|
|
185
|
-
need: [what would help]
|
|
186
|
-
```
|
|
187
|
-
6. **STOP** — do not proceed until user resolves
|
|
188
|
-
|
|
189
|
-
**Rule of thumb:**
|
|
190
|
-
- Code error / test failure → spawn sub-agent
|
|
191
|
-
- Requirement unclear / need user input → mark blocked and stop
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Completion
|
|
196
|
-
|
|
197
|
-
When all units are `✅`:
|
|
198
|
-
1. Run full test suite one final time
|
|
199
|
-
2. Verify all tests pass, no warnings
|
|
200
|
-
3. Mark all satisfied `Completion Criteria` checkboxes in doing doc as `[x]`
|
|
201
|
-
4. If `Planning:` doc path exists, sync its `Completion Criteria` checkboxes to `[x]` based on final evidence
|
|
202
|
-
5. Update doing.md Status to `done`
|
|
203
|
-
6. Commit: `git commit -m "docs(doing): all units complete"`
|
|
204
|
-
7. Get timestamp from git
|
|
205
|
-
8. Add final progress log entry
|
|
206
|
-
9. Output:
|
|
207
|
-
```
|
|
208
|
-
✅ all units complete
|
|
209
|
-
tests: [X passing]
|
|
210
|
-
coverage: [X%]
|
|
211
|
-
status: done
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## Rules
|
|
217
|
-
|
|
218
|
-
1. **File naming**: Expect `YYYY-MM-DD-HHMM-doing-{name}.md` format
|
|
219
|
-
2. **Location**: Read and update doing docs in the project-defined task-doc directory, which may live outside the repo
|
|
220
|
-
3. **Artifacts directory**: Use `{task-name}/` for all outputs, logs, data
|
|
221
|
-
4. **Execution mode**: Honor `pending | spawn | direct` from doing doc
|
|
222
|
-
5. **Respect the approved structure**: A `READY_FOR_EXECUTION` doing doc should already be ambiguity-clean. Do not rewrite unit structure unless the user changes scope or the doing doc is actually blocked/inaccurate.
|
|
223
|
-
6. **TDD strictly enforced** — tests before implementation, always
|
|
224
|
-
7. **100% coverage** — no exceptions, no exclude attributes
|
|
225
|
-
8. **Atomic commits** — one logical unit per commit, push after each
|
|
226
|
-
9. **Timestamps from git** — `git log -1 --format="%Y-%m-%d %H:%M"`
|
|
227
|
-
10. **Push after each unit phase complete**
|
|
228
|
-
11. **Update doing.md after each unit** — status and progress log
|
|
229
|
-
12. **Spawn sub-agents for fixes** — don't ask, just do it
|
|
230
|
-
13. **Update docs immediately** — when decisions made, commit right away
|
|
231
|
-
14. **Stop on actual blocker** — unclear requirements or need user input
|
|
232
|
-
15. **/compact proactively** — preserve context between units
|
|
233
|
-
16. **No warnings** — treat warnings as errors
|
|
234
|
-
17. **Run full test suite** — before marking unit complete, not just new tests
|
|
235
|
-
18. **Always compile** — run the project's build command after every implementation/refactor unit. Tests passing is necessary but not sufficient.
|
|
236
|
-
19. **Checklist hygiene is mandatory** — keep doing/planning `Completion Criteria` checklists synchronized with verified completion evidence.
|
|
237
|
-
19. **Verify APIs before importing** — before writing `import { Foo } from './bar'`, use `grep` or `read_file` to confirm `Foo` is actually exported from that module. Never assume an export exists — always check the source first. This prevents wasted cycles on "module has no exported member" errors.
|