pi-crew 0.9.51 → 0.9.52
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/CHANGELOG.md +35 -0
- package/README.md +216 -20
- package/dist/build-meta.json +2090 -1638
- package/dist/index.mjs +18057 -17119
- package/docs/actions-reference.md +431 -1
- package/package.json +19 -9
- package/schema.json +41 -0
- package/scripts/check-bundle-size.mjs +38 -0
- package/scripts/test-runner.mjs +11 -1
- package/dist/index.mjs.map +0 -7
- package/docs/FEATURE_INTAKE.md +0 -126
- package/docs/HARNESS.md +0 -87
- package/docs/HARNESS_BACKLOG.md +0 -89
- package/docs/PROJECT_REVIEW.md +0 -270
- package/docs/PROJECT_REVIEW_FIXES.md +0 -342
- package/docs/PROJECT_REVIEW_ROUND4.md +0 -156
- package/docs/PROJECT_REVIEW_ROUND5.md +0 -86
- package/docs/REVIEW-FINDINGS-2026-06 +0 -357
- package/docs/REVIEW-FINDINGS-2026-07-CORE.md +0 -139
- package/docs/REVIEW-FINDINGS-2026-07.md +0 -125
- package/docs/TEST_MATRIX.md +0 -51
- package/docs/archive/README.md +0 -91
- package/docs/archive/followup-review-round3-2026-05-12.md +0 -342
- package/docs/archive/followup-review-round4-2026-05-13.md +0 -107
- package/docs/archive/pi-crew-bugs.md +0 -961
- package/docs/archive/pi-crew-test-final.md +0 -120
- package/docs/archive/pi-crew-test-results.md +0 -260
- package/docs/archive/pi-crew-test-round2.md +0 -136
- package/docs/archive/pi-crew-test-round4.md +0 -100
- package/docs/archive/pi-crew-test-round5.md +0 -70
- package/docs/archive/pi-crew-test-round6.md +0 -110
- package/docs/archive/pi-crew-v0.5.10-audit-fix-plan.md +0 -60
- package/docs/archive/pi-crew-v0.5.11-audit-fix-plan.md +0 -92
- package/docs/archive/pi-crew-v0.5.12-audit-fix-plan.md +0 -76
- package/docs/archive/pi-crew-v0.5.13-audit-fix-plan.md +0 -75
- package/docs/archive/pi-crew-v0.5.14-audit-fix-plan.md +0 -75
- package/docs/archive/pi-crew-v0.5.16-audit-fix-plan.md +0 -35
- package/docs/archive/pi-crew-v0.5.17-audit-fix-plan.md +0 -80
- package/docs/archive/pi-crew-v0.5.5-audit-fix-plan.md +0 -133
- package/docs/archive/pi-crew-v0.5.9-audit-fix-plan.md +0 -88
- package/docs/archive/pi-mono-opportunities.md +0 -969
- package/docs/archive/pi-mono-review.md +0 -291
- package/docs/archive/pi-subagent4-comparison.md +0 -261
- package/docs/archive/pi-subagents3-deep-analysis.md +0 -508
- package/docs/bugs/bug-021-notification-badge-counter-misleading.md +0 -293
- package/docs/bugs/bug-023-chain-windows-path-resolution.md +0 -106
- package/docs/bugs/bug-quota-display-truncation.md +0 -223
- package/docs/bugs/cross-session-notification-leakage.md +0 -82
- package/docs/code-review-2026-05-11.md +0 -592
- package/docs/coding-agent-optimization.md +0 -268
- package/docs/comparison-pi-subagents-vs-pi-crew.md +0 -303
- package/docs/decisions/0001-durable-state.md +0 -41
- package/docs/decisions/0002-child-process-for-async.md +0 -42
- package/docs/decisions/0003-depth-guard.md +0 -36
- package/docs/decisions/0004-execfile-over-exec.md +0 -34
- package/docs/decisions/0005-no-parameter-properties.md +0 -49
- package/docs/decisions/0006-publish-bundled-esm.md +0 -63
- package/docs/decisions/0007-active-run-binary-index.md +0 -54
- package/docs/decisions/0008-child-pi-warm-pool.md +0 -61
- package/docs/decisions/2026-07-21-broker-phase4-default-on.md +0 -77
- package/docs/decisions/2026-07-21-broker-windows-perms.md +0 -91
- package/docs/decisions/2026-07-22-broker-phase4-gated-on.md +0 -99
- package/docs/decisions/2026-07-24-oidc-trusted-publishing.md +0 -112
- package/docs/decisions/2026-07-26-c6-mascot-visibility-not-wired.md +0 -84
- package/docs/decisions/README.md +0 -26
- package/docs/deep-review-report.md +0 -384
- package/docs/distillation/cybersecurity-patterns.md +0 -294
- package/docs/feature-analysis-subagent4.md +0 -305
- package/docs/fix-plan-disabletools-exit-null.md +0 -219
- package/docs/fixes/BATCH_A_H1_H2.md +0 -86
- package/docs/fixes/bug-006-foreground-cancel-concurrent.md +0 -78
- package/docs/fixes/bug-007-async-notifier-stale-ctx.md +0 -112
- package/docs/fixes/bug-008-child-process-silent-timeout.md +0 -100
- package/docs/fixes/bug-009-executor-yield-limit-needs-attention.md +0 -75
- package/docs/fixes/bug-010-child-process-api-key-filtered.md +0 -109
- package/docs/fixes/bug-011-spawn-pi-enoent.md +0 -92
- package/docs/fixes/bug-012-essential-env-stripped.md +0 -89
- package/docs/fixes/bug-013-background-runner-death.md +0 -84
- package/docs/fixes/bug-014-infinite-retry-loop-needs-attention.md +0 -82
- package/docs/fixes/bug-015-background-runner-sigterm.md +0 -65
- package/docs/fixes/bug-017-background-runner-session-shutdown.md +0 -66
- package/docs/fixes/bug-017-background-runner-sigkill-double-fork.md +0 -28
- package/docs/fixes/bug-018-child-pi-worker-stdin-hang.md +0 -61
- package/docs/fixes/bug-019-phantom-runs-temp-workspace.md +0 -52
- package/docs/fixes/bug-020-infinite-retry-loop-needs-attention.md +0 -47
- package/docs/fixes/v0.9.10/locks-fix-verify.md +0 -3
- package/docs/fixes/v0.9.10/smoke-test.md +0 -12
- package/docs/followup-plan-2026-05-12.md +0 -463
- package/docs/followup-review-2026-05-12.md +0 -297
- package/docs/goals.md +0 -59
- package/docs/implementation-plan-top3.md +0 -333
- package/docs/issue-29-analysis.md +0 -189
- package/docs/live-mailbox-runtime.md +0 -36
- package/docs/migration/atomic-write-v2-migration.md +0 -299
- package/docs/next-upgrade-roadmap.md +0 -808
- package/docs/oh-my-pi-research.md +0 -509
- package/docs/optimization-plan-2026-07.md +0 -366
- package/docs/optimization-plan.md +0 -644
- package/docs/patterns/command-agent-skill.md +0 -71
- package/docs/perf/baseline-2026-05.md +0 -113
- package/docs/perf/final-report-2026-05.md +0 -206
- package/docs/perf/optimization-plan-2026-07-verified.md +0 -396
- package/docs/perf/performance-audit-report-2026-07.md +0 -948
- package/docs/perf/performance-review-2026-07.md +0 -287
- package/docs/perf/sprint-1-report.md +0 -71
- package/docs/perf/sprint-2-report.md +0 -81
- package/docs/perf/sprint-2.5-report.md +0 -53
- package/docs/perf/sprint-3-report.md +0 -36
- package/docs/perf/sprint-4-report.md +0 -47
- package/docs/perf/sprint-5-report.md +0 -51
- package/docs/perf/sprint-6-report.md +0 -94
- package/docs/perf/sprint-7-report.md +0 -74
- package/docs/perf/upgrade-plan-2026-05.md +0 -147
- package/docs/performance-optimization-execution-plan.md +0 -520
- package/docs/phase4-triage.md +0 -58
- package/docs/pi-crew-investigation-report.md +0 -411
- package/docs/product/README.md +0 -31
- package/docs/product/platform.md +0 -27
- package/docs/product/runtime-safety.md +0 -37
- package/docs/product/team-run.md +0 -39
- package/docs/product/team-tool.md +0 -37
- package/docs/runtime-analysis-child-vs-live.md +0 -171
- package/docs/runtime-migration-in-process-analysis.md +0 -250
- package/docs/skills/REFERENCE.md +0 -138
- package/docs/stories/README.md +0 -32
- package/docs/stories/US-DEPS-major-upgrade.md +0 -62
- package/docs/stories/backlog.md +0 -36
- package/docs/superpowers/plans/2026-06-09-fallow-patterns-adoption.md +0 -1270
- package/docs/templates/decision.md +0 -27
- package/docs/templates/story.md +0 -44
- package/docs/templates/validation-report.md +0 -32
- package/docs/ui-optimization-plan.md +0 -447
- package/src/adapters/claude-adapter.ts +0 -23
- package/src/adapters/codex-adapter.ts +0 -21
- package/src/adapters/cursor-adapter.ts +0 -17
- package/src/adapters/export-util.ts +0 -143
- package/src/adapters/index.ts +0 -15
- package/src/adapters/registry.ts +0 -18
- package/src/adapters/types.ts +0 -23
- package/src/agents/agent-config.ts +0 -194
- package/src/agents/agent-search.ts +0 -98
- package/src/agents/agent-serializer.ts +0 -38
- package/src/agents/discover-agents.ts +0 -623
- package/src/benchmark/benchmark-runner.ts +0 -313
- package/src/benchmark/feedback-loop.ts +0 -73
- package/src/config/config.ts +0 -1269
- package/src/config/defaults.ts +0 -193
- package/src/config/drift-detector.ts +0 -290
- package/src/config/markers.ts +0 -330
- package/src/config/resilient-parser.ts +0 -117
- package/src/config/role-tools.ts +0 -118
- package/src/config/suggestions.ts +0 -75
- package/src/config/types.ts +0 -278
- package/src/errors.ts +0 -194
- package/src/extension/action-suggestions.ts +0 -117
- package/src/extension/async-notifier.ts +0 -179
- package/src/extension/autonomous-policy.ts +0 -209
- package/src/extension/command-completions.ts +0 -120
- package/src/extension/context-status-injection.ts +0 -185
- package/src/extension/crew-autocomplete.ts +0 -131
- package/src/extension/crew-cleanup.ts +0 -168
- package/src/extension/crew-input-router.ts +0 -93
- package/src/extension/crew-shortcuts.ts +0 -87
- package/src/extension/crew-vibes/cat-frames.ts +0 -18
- package/src/extension/crew-vibes/config.ts +0 -195
- package/src/extension/crew-vibes/figures.ts +0 -101
- package/src/extension/crew-vibes/font-detect.ts +0 -71
- package/src/extension/crew-vibes/footer.ts +0 -292
- package/src/extension/crew-vibes/index.ts +0 -432
- package/src/extension/crew-vibes/provider-usage.ts +0 -396
- package/src/extension/crew-vibes/render.ts +0 -206
- package/src/extension/crew-vibes/speed.ts +0 -286
- package/src/extension/cross-extension-rpc.ts +0 -350
- package/src/extension/help.ts +0 -62
- package/src/extension/import-index.ts +0 -74
- package/src/extension/knowledge-injection.ts +0 -402
- package/src/extension/management.ts +0 -571
- package/src/extension/message-renderers.ts +0 -108
- package/src/extension/notification-router.ts +0 -152
- package/src/extension/notification-sink.ts +0 -54
- package/src/extension/pi-api.ts +0 -56
- package/src/extension/plan-orchestrate.ts +0 -302
- package/src/extension/project-init.ts +0 -170
- package/src/extension/register.ts +0 -113
- package/src/extension/registration/artifact-cleanup.ts +0 -20
- package/src/extension/registration/command-registration.ts +0 -58
- package/src/extension/registration/command-utils.ts +0 -58
- package/src/extension/registration/commands.ts +0 -1228
- package/src/extension/registration/compaction-guard.ts +0 -333
- package/src/extension/registration/context-builder.ts +0 -135
- package/src/extension/registration/crash-recovery-cache.ts +0 -54
- package/src/extension/registration/foreground-run-controller.ts +0 -238
- package/src/extension/registration/hook-registration.ts +0 -119
- package/src/extension/registration/lazy-configurers.ts +0 -124
- package/src/extension/registration/lifecycle-handlers.ts +0 -923
- package/src/extension/registration/lifecycle.ts +0 -259
- package/src/extension/registration/observability.ts +0 -322
- package/src/extension/registration/registration-types.ts +0 -158
- package/src/extension/registration/runtime-cleanup.ts +0 -230
- package/src/extension/registration/subagent-helpers.ts +0 -125
- package/src/extension/registration/subagent-manager-setup.ts +0 -330
- package/src/extension/registration/subagent-tools.ts +0 -456
- package/src/extension/registration/team-tool.ts +0 -220
- package/src/extension/registration/tool-registration.ts +0 -50
- package/src/extension/registration/ui.ts +0 -172
- package/src/extension/registration/viewers.ts +0 -121
- package/src/extension/registration/wire-cross-extension.ts +0 -37
- package/src/extension/result-watcher.ts +0 -139
- package/src/extension/rpc-hmac.ts +0 -256
- package/src/extension/run-bundle-schema.ts +0 -104
- package/src/extension/run-export.ts +0 -97
- package/src/extension/run-import.ts +0 -168
- package/src/extension/run-index.ts +0 -131
- package/src/extension/run-maintenance.ts +0 -190
- package/src/extension/session-summary.ts +0 -18
- package/src/extension/team-manager-command.ts +0 -153
- package/src/extension/team-onboard.ts +0 -177
- package/src/extension/team-recommendation.ts +0 -288
- package/src/extension/team-tool/anchor.ts +0 -172
- package/src/extension/team-tool/api.ts +0 -1244
- package/src/extension/team-tool/auto-summarize.ts +0 -142
- package/src/extension/team-tool/cache-control.ts +0 -19
- package/src/extension/team-tool/cancel.ts +0 -337
- package/src/extension/team-tool/chain-dispatch.ts +0 -95
- package/src/extension/team-tool/chain-executor.ts +0 -379
- package/src/extension/team-tool/config-patch.ts +0 -50
- package/src/extension/team-tool/context.ts +0 -149
- package/src/extension/team-tool/destructive-gate.ts +0 -52
- package/src/extension/team-tool/doctor.ts +0 -431
- package/src/extension/team-tool/explain.ts +0 -282
- package/src/extension/team-tool/failure-patterns.ts +0 -118
- package/src/extension/team-tool/goal-wrap.ts +0 -330
- package/src/extension/team-tool/goal.ts +0 -556
- package/src/extension/team-tool/handle-schedule.ts +0 -332
- package/src/extension/team-tool/handle-settings.ts +0 -520
- package/src/extension/team-tool/health-monitor.ts +0 -481
- package/src/extension/team-tool/inspect.ts +0 -88
- package/src/extension/team-tool/intent-policy.ts +0 -45
- package/src/extension/team-tool/lifecycle-actions.ts +0 -615
- package/src/extension/team-tool/orchestrate.ts +0 -98
- package/src/extension/team-tool/parallel-dispatch.ts +0 -183
- package/src/extension/team-tool/plan.ts +0 -50
- package/src/extension/team-tool/respond.ts +0 -150
- package/src/extension/team-tool/run-not-found.ts +0 -49
- package/src/extension/team-tool/run.ts +0 -1035
- package/src/extension/team-tool/status.ts +0 -260
- package/src/extension/team-tool/workflow-manage.ts +0 -261
- package/src/extension/team-tool-types.ts +0 -26
- package/src/extension/team-tool.ts +0 -1116
- package/src/extension/tool-result.ts +0 -16
- package/src/extension/validate-resources.ts +0 -108
- package/src/hooks/registry.ts +0 -200
- package/src/hooks/types.ts +0 -69
- package/src/i18n.ts +0 -212
- package/src/observability/correlation.ts +0 -50
- package/src/observability/event-bus.ts +0 -86
- package/src/observability/event-to-metric.ts +0 -170
- package/src/observability/exporters/adapter.ts +0 -27
- package/src/observability/exporters/otlp-exporter.ts +0 -356
- package/src/observability/exporters/prometheus-exporter.ts +0 -54
- package/src/observability/metric-registry.ts +0 -100
- package/src/observability/metric-retention.ts +0 -64
- package/src/observability/metric-sink.ts +0 -99
- package/src/observability/metrics-primitives.ts +0 -219
- package/src/plugins/plugin-define.ts +0 -6
- package/src/plugins/plugin-registry.ts +0 -32
- package/src/plugins/plugins/index.ts +0 -3
- package/src/plugins/plugins/nextjs.ts +0 -19
- package/src/plugins/plugins/vite.ts +0 -10
- package/src/plugins/plugins/vitest.ts +0 -9
- package/src/prompt/prompt-runtime.ts +0 -380
- package/src/runtime/adaptive-plan.ts +0 -563
- package/src/runtime/agent-control.ts +0 -215
- package/src/runtime/agent-memory.ts +0 -81
- package/src/runtime/agent-observability.ts +0 -122
- package/src/runtime/anchor-manager.ts +0 -475
- package/src/runtime/async-marker.ts +0 -32
- package/src/runtime/async-runner.ts +0 -381
- package/src/runtime/attention-events.ts +0 -28
- package/src/runtime/auto-summarize.ts +0 -344
- package/src/runtime/background-runner.ts +0 -837
- package/src/runtime/batch-barrier.ts +0 -147
- package/src/runtime/broker-issuer.ts +0 -37
- package/src/runtime/cancellation-token.ts +0 -99
- package/src/runtime/cancellation.ts +0 -99
- package/src/runtime/capability-inventory.ts +0 -137
- package/src/runtime/chain-parser.ts +0 -237
- package/src/runtime/chain-runner.ts +0 -606
- package/src/runtime/checkpoint.ts +0 -291
- package/src/runtime/child-pi-constants.ts +0 -42
- package/src/runtime/child-pi-kill.ts +0 -180
- package/src/runtime/child-pi-pool.ts +0 -68
- package/src/runtime/child-pi-spawn.ts +0 -287
- package/src/runtime/child-pi-steering.ts +0 -128
- package/src/runtime/child-pi-streams.ts +0 -296
- package/src/runtime/child-pi-transcript.ts +0 -169
- package/src/runtime/child-pi.ts +0 -1105
- package/src/runtime/coalesce-tasks.ts +0 -268
- package/src/runtime/code-summary.ts +0 -292
- package/src/runtime/command-trace.ts +0 -105
- package/src/runtime/compact-pipeline.ts +0 -56
- package/src/runtime/compact-stages/ansi-strip-stage.ts +0 -25
- package/src/runtime/compact-stages/blank-collapse-stage.ts +0 -31
- package/src/runtime/compact-stages/deduplicate-stage.ts +0 -34
- package/src/runtime/compact-stages/head-snap-stage.ts +0 -57
- package/src/runtime/compact-stages/index.ts +0 -23
- package/src/runtime/compact-stages/tail-capture-stage.ts +0 -77
- package/src/runtime/compact-stages/truncation-stage.ts +0 -74
- package/src/runtime/compaction-summary.ts +0 -278
- package/src/runtime/completion-guard.ts +0 -207
- package/src/runtime/concurrency.ts +0 -58
- package/src/runtime/crash-classification.ts +0 -229
- package/src/runtime/crash-recovery.ts +0 -577
- package/src/runtime/crew-agent-records.ts +0 -593
- package/src/runtime/crew-agent-runtime.ts +0 -62
- package/src/runtime/crew-broker-child.ts +0 -88
- package/src/runtime/crew-broker-client.ts +0 -673
- package/src/runtime/crew-broker-tokens.ts +0 -84
- package/src/runtime/crew-broker.ts +0 -1276
- package/src/runtime/crew-hooks.ts +0 -227
- package/src/runtime/cross-extension-rpc.ts +0 -143
- package/src/runtime/custom-tools/irc-tool.ts +0 -282
- package/src/runtime/custom-tools/submit-result-tool.ts +0 -102
- package/src/runtime/deadletter.ts +0 -47
- package/src/runtime/delivery-coordinator.ts +0 -211
- package/src/runtime/delta-conflict.ts +0 -348
- package/src/runtime/deterministic-ast.ts +0 -161
- package/src/runtime/diagnostic-export.ts +0 -171
- package/src/runtime/direct-run.ts +0 -45
- package/src/runtime/dwf-state-store.ts +0 -102
- package/src/runtime/dynamic-workflow-context.ts +0 -1016
- package/src/runtime/dynamic-workflow-runner.ts +0 -310
- package/src/runtime/effectiveness.ts +0 -90
- package/src/runtime/errors/crew-errors.ts +0 -162
- package/src/runtime/event-stream-bridge.ts +0 -98
- package/src/runtime/foreground-control.ts +0 -193
- package/src/runtime/foreground-watchdog.ts +0 -132
- package/src/runtime/global-worker-cap.ts +0 -96
- package/src/runtime/goal-achievement.ts +0 -148
- package/src/runtime/goal-evaluator.ts +0 -361
- package/src/runtime/goal-loop-runner.ts +0 -828
- package/src/runtime/goal-state-store.ts +0 -219
- package/src/runtime/green-contract.ts +0 -55
- package/src/runtime/group-join.ts +0 -267
- package/src/runtime/handoff-manager.ts +0 -598
- package/src/runtime/heartbeat-gradient.ts +0 -36
- package/src/runtime/heartbeat-watcher.ts +0 -239
- package/src/runtime/hidden-handoff.ts +0 -407
- package/src/runtime/important-line-classifier.ts +0 -140
- package/src/runtime/intercom-bridge.ts +0 -187
- package/src/runtime/iteration-hooks.ts +0 -305
- package/src/runtime/live-agent-control.ts +0 -136
- package/src/runtime/live-agent-manager.ts +0 -704
- package/src/runtime/live-control-realtime.ts +0 -56
- package/src/runtime/live-extension-bridge.ts +0 -148
- package/src/runtime/live-irc.ts +0 -97
- package/src/runtime/live-session-health.ts +0 -108
- package/src/runtime/live-session-runtime.ts +0 -1139
- package/src/runtime/loop-gates.ts +0 -128
- package/src/runtime/manifest-cache.ts +0 -375
- package/src/runtime/mcp-proxy.ts +0 -105
- package/src/runtime/metric-parser.ts +0 -36
- package/src/runtime/model-fallback.ts +0 -409
- package/src/runtime/model-resolver.ts +0 -126
- package/src/runtime/model-scope.ts +0 -158
- package/src/runtime/orphan-worker-registry.ts +0 -465
- package/src/runtime/output-validator.ts +0 -202
- package/src/runtime/overflow-recovery.ts +0 -206
- package/src/runtime/parallel-research.ts +0 -68
- package/src/runtime/parallel-utils.ts +0 -160
- package/src/runtime/parent-guard.ts +0 -134
- package/src/runtime/path-overlap.ts +0 -150
- package/src/runtime/peer-dep.ts +0 -292
- package/src/runtime/per-write-validator.ts +0 -181
- package/src/runtime/phase-progress.ts +0 -217
- package/src/runtime/phase-tracker.ts +0 -385
- package/src/runtime/pi-args.ts +0 -655
- package/src/runtime/pi-json-output.ts +0 -170
- package/src/runtime/pi-spawn.ts +0 -273
- package/src/runtime/pipeline-runner.ts +0 -523
- package/src/runtime/plan-templates.ts +0 -201
- package/src/runtime/policy-engine.ts +0 -115
- package/src/runtime/post-checks.ts +0 -142
- package/src/runtime/post-exit-stdio-guard.ts +0 -104
- package/src/runtime/process-lifecycle.ts +0 -491
- package/src/runtime/process-status.ts +0 -154
- package/src/runtime/progress-event-coalescer.ts +0 -44
- package/src/runtime/progress-tracker.ts +0 -124
- package/src/runtime/prose-compressor.ts +0 -162
- package/src/runtime/recovery-recipes.ts +0 -203
- package/src/runtime/replace.ts +0 -570
- package/src/runtime/resilient-edit.ts +0 -153
- package/src/runtime/result-extractor.ts +0 -213
- package/src/runtime/retry-executor.ts +0 -100
- package/src/runtime/retry-runner.ts +0 -336
- package/src/runtime/role-permission.ts +0 -59
- package/src/runtime/run-coalesced-task-group.ts +0 -308
- package/src/runtime/run-drift.ts +0 -219
- package/src/runtime/run-tracker.ts +0 -116
- package/src/runtime/runtime-policy.ts +0 -29
- package/src/runtime/runtime-resolver.ts +0 -172
- package/src/runtime/runtime-warmup.ts +0 -160
- package/src/runtime/scheduler.ts +0 -353
- package/src/runtime/semaphore.ts +0 -141
- package/src/runtime/sensitive-paths.ts +0 -93
- package/src/runtime/session-resources.ts +0 -25
- package/src/runtime/session-snapshot.ts +0 -59
- package/src/runtime/session-usage.ts +0 -79
- package/src/runtime/settings-store.ts +0 -155
- package/src/runtime/sidechain-output.ts +0 -35
- package/src/runtime/single-agent-compose.ts +0 -84
- package/src/runtime/skill-effectiveness.ts +0 -524
- package/src/runtime/skill-instructions.ts +0 -391
- package/src/runtime/stale-reconciler.ts +0 -680
- package/src/runtime/stream-preview.ts +0 -184
- package/src/runtime/streaming-output.ts +0 -50
- package/src/runtime/subagent-manager.ts +0 -561
- package/src/runtime/subprocess-tool-registry.ts +0 -70
- package/src/runtime/supervisor-contact.ts +0 -64
- package/src/runtime/task-display.ts +0 -52
- package/src/runtime/task-graph-scheduler.ts +0 -227
- package/src/runtime/task-graph.ts +0 -290
- package/src/runtime/task-health.ts +0 -83
- package/src/runtime/task-id.ts +0 -161
- package/src/runtime/task-output-context.ts +0 -602
- package/src/runtime/task-packet.ts +0 -268
- package/src/runtime/task-quality.ts +0 -199
- package/src/runtime/task-runner/capabilities.ts +0 -78
- package/src/runtime/task-runner/context-retrieval.ts +0 -163
- package/src/runtime/task-runner/live-executor.ts +0 -227
- package/src/runtime/task-runner/output-splitter.ts +0 -152
- package/src/runtime/task-runner/progress.ts +0 -157
- package/src/runtime/task-runner/prompt-builder.ts +0 -278
- package/src/runtime/task-runner/prompt-pipeline.ts +0 -88
- package/src/runtime/task-runner/result-utils.ts +0 -16
- package/src/runtime/task-runner/retrieval-orchestrator.ts +0 -310
- package/src/runtime/task-runner/run-projection.ts +0 -125
- package/src/runtime/task-runner/state-helpers.ts +0 -176
- package/src/runtime/task-runner/tail-read.ts +0 -34
- package/src/runtime/task-runner.ts +0 -1420
- package/src/runtime/team-runner-artifacts.ts +0 -13
- package/src/runtime/team-runner.ts +0 -1993
- package/src/runtime/tool-output-pruner.ts +0 -333
- package/src/runtime/tool-progress.ts +0 -278
- package/src/runtime/usage-tracker.ts +0 -73
- package/src/runtime/verification-gates.ts +0 -571
- package/src/runtime/verification-integrity.ts +0 -105
- package/src/runtime/verification-worktree.ts +0 -186
- package/src/runtime/worker-heartbeat.ts +0 -25
- package/src/runtime/worker-startup.ts +0 -83
- package/src/runtime/workflow-state.ts +0 -195
- package/src/runtime/workspace-lock.ts +0 -443
- package/src/runtime/workspace-tree.ts +0 -312
- package/src/runtime/yield-handler.ts +0 -224
- package/src/runtime/zombie-scanner.ts +0 -298
- package/src/schema/config-schema.ts +0 -327
- package/src/schema/team-tool-schema.ts +0 -415
- package/src/schema/validation-types.ts +0 -159
- package/src/skills/discover-skills.ts +0 -197
- package/src/skills/skill-templates.ts +0 -456
- package/src/skills/validate.ts +0 -285
- package/src/state/active-run-registry.ts +0 -439
- package/src/state/artifact-store.ts +0 -176
- package/src/state/atomic-write.ts +0 -903
- package/src/state/blob-store.ts +0 -308
- package/src/state/contracts.ts +0 -158
- package/src/state/crew-init.ts +0 -269
- package/src/state/decision-ledger.ts +0 -345
- package/src/state/event-log-rotation.ts +0 -342
- package/src/state/event-log.ts +0 -1311
- package/src/state/event-reconstructor.ts +0 -229
- package/src/state/gitignore-manager.ts +0 -46
- package/src/state/health-store.ts +0 -79
- package/src/state/hook-instinct-bridge.ts +0 -94
- package/src/state/hook-integrations.ts +0 -51
- package/src/state/instinct-store.ts +0 -275
- package/src/state/jsonl-writer.ts +0 -107
- package/src/state/locks.ts +0 -562
- package/src/state/mailbox.ts +0 -916
- package/src/state/observation-store.ts +0 -176
- package/src/state/run-cache.ts +0 -193
- package/src/state/run-graph.ts +0 -183
- package/src/state/run-metrics.ts +0 -165
- package/src/state/schedule.ts +0 -166
- package/src/state/session-state-map.ts +0 -51
- package/src/state/state-store.ts +0 -958
- package/src/state/task-claims.ts +0 -61
- package/src/state/tiered-eval.ts +0 -480
- package/src/state/types-eval.ts +0 -58
- package/src/state/types.ts +0 -440
- package/src/state/usage.ts +0 -138
- package/src/state/worker-atomic-writer.ts +0 -194
- package/src/subagents/async-entry.ts +0 -1
- package/src/subagents/index.ts +0 -3
- package/src/subagents/live/control.ts +0 -1
- package/src/subagents/live/manager.ts +0 -1
- package/src/subagents/live/realtime.ts +0 -1
- package/src/subagents/live/session-runtime.ts +0 -1
- package/src/subagents/manager.ts +0 -1
- package/src/subagents/spawn.ts +0 -1
- package/src/teams/discover-teams.ts +0 -187
- package/src/teams/team-config.ts +0 -27
- package/src/teams/team-serializer.ts +0 -38
- package/src/tools/safe-bash-extension.ts +0 -54
- package/src/tools/safe-bash.ts +0 -505
- package/src/types/diff.d.ts +0 -18
- package/src/types/new-api-types.ts +0 -35
- package/src/ui/agent-management-overlay.ts +0 -160
- package/src/ui/card-colors.ts +0 -139
- package/src/ui/crew-footer.ts +0 -102
- package/src/ui/crew-select-list.ts +0 -111
- package/src/ui/dashboard-panes/agents-pane.ts +0 -164
- package/src/ui/dashboard-panes/cancellation-pane.ts +0 -66
- package/src/ui/dashboard-panes/capability-pane.ts +0 -77
- package/src/ui/dashboard-panes/health-pane.ts +0 -31
- package/src/ui/dashboard-panes/mailbox-pane.ts +0 -35
- package/src/ui/dashboard-panes/metrics-pane.ts +0 -37
- package/src/ui/dashboard-panes/progress-pane.ts +0 -38
- package/src/ui/dashboard-panes/transcript-pane.ts +0 -10
- package/src/ui/deploy-bundled-themes.ts +0 -71
- package/src/ui/dwf-phase-display.ts +0 -151
- package/src/ui/dynamic-border.ts +0 -35
- package/src/ui/heartbeat-aggregator.ts +0 -74
- package/src/ui/key-utils.ts +0 -42
- package/src/ui/keybinding-map.ts +0 -248
- package/src/ui/layout-primitives.ts +0 -106
- package/src/ui/live-conversation-overlay.ts +0 -183
- package/src/ui/live-duration.ts +0 -55
- package/src/ui/live-run-sidebar.ts +0 -293
- package/src/ui/loaders.ts +0 -6
- package/src/ui/mascot.ts +0 -449
- package/src/ui/overlays/agent-picker-overlay.ts +0 -65
- package/src/ui/overlays/confirm-overlay.ts +0 -60
- package/src/ui/overlays/help-overlay.ts +0 -177
- package/src/ui/overlays/mailbox-compose-overlay.ts +0 -181
- package/src/ui/overlays/mailbox-compose-preview.ts +0 -78
- package/src/ui/overlays/mailbox-detail-overlay.ts +0 -154
- package/src/ui/pi-ui-compat.ts +0 -68
- package/src/ui/powerbar-publisher.ts +0 -459
- package/src/ui/render-coalescer.ts +0 -101
- package/src/ui/render-diff.ts +0 -160
- package/src/ui/render-scheduler.ts +0 -278
- package/src/ui/run-action-dispatcher.ts +0 -182
- package/src/ui/run-dashboard.ts +0 -904
- package/src/ui/run-event-bus.ts +0 -381
- package/src/ui/run-snapshot-cache.ts +0 -1057
- package/src/ui/settings-overlay.ts +0 -1067
- package/src/ui/shared-overlay-scheduler.ts +0 -96
- package/src/ui/snapshot-types.ts +0 -90
- package/src/ui/spinner.ts +0 -17
- package/src/ui/status-colors.ts +0 -143
- package/src/ui/syntax-highlight.ts +0 -136
- package/src/ui/terminal-status.ts +0 -269
- package/src/ui/theme-adapter.ts +0 -271
- package/src/ui/theme-discovery.ts +0 -199
- package/src/ui/tool-progress-formatter.ts +0 -93
- package/src/ui/tool-render.ts +0 -453
- package/src/ui/tool-renderers/brief-mode.ts +0 -225
- package/src/ui/tool-renderers/index.ts +0 -726
- package/src/ui/transcript-cache.ts +0 -128
- package/src/ui/transcript-entries.ts +0 -256
- package/src/ui/transcript-viewer.ts +0 -424
- package/src/ui/widget/index.ts +0 -391
- package/src/ui/widget/widget-formatters.ts +0 -182
- package/src/ui/widget/widget-model.ts +0 -110
- package/src/ui/widget/widget-renderer.ts +0 -182
- package/src/ui/widget/widget-types.ts +0 -36
- package/src/utils/bm25-search.ts +0 -235
- package/src/utils/completion-dedupe.ts +0 -63
- package/src/utils/conflict-detect.ts +0 -668
- package/src/utils/env-allowlist.ts +0 -30
- package/src/utils/env-filter.ts +0 -155
- package/src/utils/file-coalescer.ts +0 -98
- package/src/utils/fingerprint.ts +0 -180
- package/src/utils/frontmatter.ts +0 -70
- package/src/utils/fs-watch.ts +0 -37
- package/src/utils/gh-protocol.ts +0 -556
- package/src/utils/git.ts +0 -260
- package/src/utils/guards.ts +0 -107
- package/src/utils/ids.ts +0 -24
- package/src/utils/incremental-reader.ts +0 -220
- package/src/utils/internal-error.ts +0 -10
- package/src/utils/names.ts +0 -36
- package/src/utils/ndjson.ts +0 -115
- package/src/utils/paths.ts +0 -227
- package/src/utils/project-detector.ts +0 -160
- package/src/utils/redaction.ts +0 -347
- package/src/utils/resolve-shell.ts +0 -36
- package/src/utils/run-watcher-registry.ts +0 -152
- package/src/utils/safe-paths.ts +0 -383
- package/src/utils/scan-cache.ts +0 -144
- package/src/utils/session-utils.ts +0 -110
- package/src/utils/sleep.ts +0 -54
- package/src/utils/socket-path.ts +0 -127
- package/src/utils/sse-parser.ts +0 -129
- package/src/utils/task-name-generator.ts +0 -337
- package/src/utils/timings.ts +0 -33
- package/src/utils/token-counter.ts +0 -200
- package/src/utils/visual.ts +0 -207
- package/src/workflows/cost-estimator.ts +0 -34
- package/src/workflows/discover-workflows.ts +0 -290
- package/src/workflows/intermediate-store.ts +0 -166
- package/src/workflows/preflight-validator.ts +0 -168
- package/src/workflows/topology-analyzer.ts +0 -203
- package/src/workflows/validate-workflow.ts +0 -50
- package/src/workflows/workflow-config.ts +0 -70
- package/src/workflows/workflow-serializer.ts +0 -32
- package/src/worktree/branch-freshness.ts +0 -112
- package/src/worktree/cleanup.ts +0 -341
- package/src/worktree/worktree-manager.ts +0 -1200
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
# Pi-Crew Communication-Layer Optimization Plan
|
|
2
|
-
|
|
3
|
-
**Created**: 2026-07-16
|
|
4
|
-
**Scope**: Tối ưu hóa hot-path truyền thông (child-pi transcript, JSON parse, event-log I/O, polling loops)
|
|
5
|
-
**Basis**: Code-verified review (xem `docs/optimization-findings-2026-07.md`)
|
|
6
|
-
|
|
7
|
-
## Mục tiêu & Nguyên tắc
|
|
8
|
-
|
|
9
|
-
- **Behavior-preserving**: mỗi fix không đổi output quan sát được. Regression net là test hiện có + benchmark before/after.
|
|
10
|
-
- **An toàn trước**: fix bảo mật (redaction) chỉ động khi benchmark chứng minh bottleneck, vì rò rỉ secret > chậm.
|
|
11
|
-
- **Build constraint**: sau mỗi phase chạy `npm run build:bundle` (bundle `dist/index.mjs` mới có hiệu lực). Test dùng `PI_CREW_USE_BUNDLE=0` để chạy source trực tiếp.
|
|
12
|
-
- **Indent**: TABS (theo `.crew/knowledge.md`).
|
|
13
|
-
|
|
14
|
-
## Thứ tự phase (theo effort/risk)
|
|
15
|
-
|
|
16
|
-
| Phase | Fix | Effort | Risk | Gate |
|
|
17
|
-
|-------|-----|--------|------|------|
|
|
18
|
-
| 1 | #6 Dead code | Trivial | Thấp | test green |
|
|
19
|
-
| 2 | #1 Double parse | Nhỏ | Thấp | benchmark + test green |
|
|
20
|
-
| 3 | #2 Transcript batching | TB | TB | integration transcript tests green |
|
|
21
|
-
| 4 | #3 Event-log async migration | TB | TB | event-ordering tests green |
|
|
22
|
-
| 5 | #4a fs.watch pollRunToTerminal | TB | TB | stuck-blocked tests green |
|
|
23
|
-
| 6 | #4b Coalesce steer+control poll | Cao | TB | live-session tests green |
|
|
24
|
-
| 7 | #5 Redaction trust-boundary | TB | **CAO** | chỉ khi benchmark chứng minh; security review |
|
|
25
|
-
| 8 | Build bundle + full suite | — | — | `npm test` + rebuild |
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Phase 0 — Baseline & benchmark setup
|
|
30
|
-
|
|
31
|
-
**Mục đích**: có số liệu "before" để chứng minh win & phát hiện regression.
|
|
32
|
-
|
|
33
|
-
**Tasks**:
|
|
34
|
-
1. Viết micro-benchmark `bench/child-pi-parse.bench.mjs`:
|
|
35
|
-
- Feed 200 JSON event dòng (mix message/tool_result/message_end) qua `ChildPiLineObserver`.
|
|
36
|
-
- Đo: wall-time, JSON.parse count (wrap tạm để count), syscall count (via `strace -c` hoặc process I/O counters).
|
|
37
|
-
2. Chạy `PI_CREW_USE_BUNDLE=0 npm test` baseline → lưu output vào `bench/baseline.txt`.
|
|
38
|
-
3. Ghi nhận: parse count/event, transcript syscalls/100-events, p95 appendEvent latency.
|
|
39
|
-
|
|
40
|
-
**Gate**: có file `bench/baseline.txt` commit.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Phase 1 — Fix #6: Xóa dead code `drainIrcMessages`
|
|
45
|
-
|
|
46
|
-
**Files**: `src/runtime/live-agent-manager.ts`
|
|
47
|
-
|
|
48
|
-
**Why first**: trivial, giảm noise trước khi refactor vùng code lân cận.
|
|
49
|
-
|
|
50
|
-
**Changes**:
|
|
51
|
-
- Xóa hàm `drainIrcMessages` (line ~497-503).
|
|
52
|
-
- Verify không có import/export nào tham chiếu (grep đã confirm 0 caller).
|
|
53
|
-
- Giữ `pendingMessages` array (vẫn dùng cho bookkeeping + cap shift) — chỉ xóa hàm drain không dùng.
|
|
54
|
-
|
|
55
|
-
**Tests**:
|
|
56
|
-
- `test/unit/live-agent-manager.test.ts` (nếu có) vẫn pass.
|
|
57
|
-
- `npm test`.
|
|
58
|
-
|
|
59
|
-
**Risk**: Không. Dead code.
|
|
60
|
-
**Rollback**: git revert 1 file.
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Phase 2 — Fix #1: Double `JSON.parse` → parse 1 lần
|
|
65
|
-
|
|
66
|
-
**Files**: `src/runtime/child-pi.ts`
|
|
67
|
-
|
|
68
|
-
**Root cause**: `emitLine()` parse raw (line 743) rồi `compactChildPiLine(line)` parse lại (line 654).
|
|
69
|
-
|
|
70
|
-
**Changes**:
|
|
71
|
-
|
|
72
|
-
1. Sửa signature `compactChildPiLine`:
|
|
73
|
-
```ts
|
|
74
|
-
function compactChildPiLine(line: string, preParsed?: unknown): {
|
|
75
|
-
persistedLine: string;
|
|
76
|
-
event?: unknown;
|
|
77
|
-
displayLine?: string;
|
|
78
|
-
json: boolean;
|
|
79
|
-
} {
|
|
80
|
-
let parsed = preParsed;
|
|
81
|
-
if (parsed === undefined) {
|
|
82
|
-
try { parsed = JSON.parse(line); }
|
|
83
|
-
catch { return { json: false, persistedLine: line, displayLine: line }; }
|
|
84
|
-
}
|
|
85
|
-
const compact = compactChildPiEvent(parsed);
|
|
86
|
-
return {
|
|
87
|
-
json: true,
|
|
88
|
-
event: compact,
|
|
89
|
-
persistedLine: compact ? JSON.stringify(compact) : "",
|
|
90
|
-
displayLine: displayTextFromCompactEvent(compact),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
2. Sửa `emitLine` parse **một lần** rồi truyền xuống cả 2 path:
|
|
96
|
-
```ts
|
|
97
|
-
private emitLine(line: string): void {
|
|
98
|
-
if (!line.trim()) return;
|
|
99
|
-
let parsed: unknown;
|
|
100
|
-
try { parsed = JSON.parse(line); } catch { parsed = undefined; }
|
|
101
|
-
// path 1: raw assistant text extraction (dùng parsed)
|
|
102
|
-
if (parsed !== undefined) {
|
|
103
|
-
const rawTexts = extractText(parsed);
|
|
104
|
-
if (rawTexts.length > 0) { /* push ring buffer — giữ nguyên logic */ }
|
|
105
|
-
}
|
|
106
|
-
// path 2: compact (nhận parsed, KHÔNG parse lại)
|
|
107
|
-
const compact = compactChildPiLine(line, parsed);
|
|
108
|
-
/* rest unchanged */
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**Tests**:
|
|
113
|
-
- `test/unit/child-pi-hardening.test.ts`, `raw-final-text.test.ts`, `child-pi-timeout.test.ts` — phải green không đổi.
|
|
114
|
-
- Thêm `test/unit/child-pi-emit-line.test.ts`: feed cùng 50 dòng → assert output persistedLine/displayLine/event giống hệt version cũ (snapshot). Thêm assert: parse count = 1/dòng (instrument tạm).
|
|
115
|
-
- Benchmark Phase 0 re-run → expect ~40-50% giảm wall-time hot-path.
|
|
116
|
-
|
|
117
|
-
**Gate**: snapshot match + benchmark improvement + `npm test` green.
|
|
118
|
-
|
|
119
|
-
**Risk**: Thấp. Pure refactor. Edge case: non-JSON line (parsed=undefined → fallback path giữ nguyên behavior).
|
|
120
|
-
**Rollback**: git revert.
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Phase 3 — Fix #2: Transcript batching (bỏ open/write/close mỗi dòng)
|
|
125
|
-
|
|
126
|
-
**Files**: `src/runtime/child-pi.ts`
|
|
127
|
-
|
|
128
|
-
**Approach**: **Option A (batched buffer)** — thấp risk nhất, dùng lại cơ chế `pendingTranscriptWrites` Set + `flushPendingTranscriptWrites`.
|
|
129
|
-
|
|
130
|
-
**Changes**:
|
|
131
|
-
|
|
132
|
-
1. Module-scoped batch buffer keyed by path:
|
|
133
|
-
```ts
|
|
134
|
-
const transcriptBatches = new Map<string, string[]>();
|
|
135
|
-
let transcriptFlushTimer: ReturnType<typeof setTimeout> | undefined;
|
|
136
|
-
const TRANSCRIPT_FLUSH_MS = 50;
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
2. `trackTranscriptWrite` thêm vào buffer thay vì open/close ngay:
|
|
140
|
-
```ts
|
|
141
|
-
function trackTranscriptWrite(safePath: string, line: string): void {
|
|
142
|
-
let batch = transcriptBatches.get(safePath);
|
|
143
|
-
if (!batch) { batch = []; transcriptBatches.set(safePath, batch); }
|
|
144
|
-
batch.push(`${redactJsonLine(line)}\n`);
|
|
145
|
-
scheduleTranscriptFlush();
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
3. `scheduleTranscriptFlush` (debounced 50ms) gộp toàn bộ batch thành **một** open/write/close:
|
|
150
|
-
```ts
|
|
151
|
-
function scheduleTranscriptFlush(): void {
|
|
152
|
-
if (transcriptFlushTimer) return;
|
|
153
|
-
transcriptFlushTimer = setTimeout(() => {
|
|
154
|
-
transcriptFlushTimer = undefined;
|
|
155
|
-
void flushTranscriptBatches();
|
|
156
|
-
}, TRANSCRIPT_FLUSH_MS);
|
|
157
|
-
transcriptFlushTimer.unref?.();
|
|
158
|
-
}
|
|
159
|
-
async function flushTranscriptBatches(): Promise<void> {
|
|
160
|
-
const entries = [...transcriptBatches.entries()];
|
|
161
|
-
transcriptBatches.clear();
|
|
162
|
-
await Promise.allSettled(entries.map(async ([path, lines]) => {
|
|
163
|
-
const content = lines.join("");
|
|
164
|
-
// một open/write/close cho cả batch
|
|
165
|
-
const fd = await fs.promises.open(path, O_WRONLY|O_NOFOLLOW|O_CREAT|O_APPEND, 0o600);
|
|
166
|
-
try { await fd.write(content); } finally { await fd.close(); }
|
|
167
|
-
}));
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
4. `flushPendingTranscriptWrites` (drain lifecycle) → gọi thêm `flushTranscriptBatches()` và await cả timer.
|
|
172
|
-
|
|
173
|
-
**Critical invariants phải giữ**:
|
|
174
|
-
- `O_NOFOLLOW | O_CREAT | O_APPEND` security flags không đổi.
|
|
175
|
-
- `redactJsonLine` vẫn áp per-line (trước khi push).
|
|
176
|
-
- Integration tests đọc transcript ngay sau `await observer.flush()` (phase3/phase4) → `flush()` phải drain buffer synchronously-enough. Test kỹ.
|
|
177
|
-
- Max batch size cap (vd 1000 dòng) để chatty worker không giữ buffer vô hạn giữa các flush.
|
|
178
|
-
|
|
179
|
-
**Tests**:
|
|
180
|
-
- `test/integration/phase3-runtime.test.ts`, `phase4-runtime.test.ts` — đọc transcript sau flush, phải thấy full content.
|
|
181
|
-
- Thêm `test/unit/transcript-batch.test.ts`: emit 100 dòng → flush → assert file có đúng 100 dòng, đúng thứ tự, content redacted.
|
|
182
|
-
- Benchmark: syscalls/100-events giảm từ ~300 → ~3.
|
|
183
|
-
|
|
184
|
-
**Gate**: integration transcript tests green + ordering preserved.
|
|
185
|
-
**Risk**: TB. Ordering (A_APPEND đảm bảo order per-fd; batch join giữ thứ tự). Crash giữa buffer & flush = mất ≤50ms dữ liệu (acceptable: transcript là telemetry best-effort, code comment đã nói rõ).
|
|
186
|
-
**Rollback**: git revert.
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Phase 4 — Fix #3: Migrate sync `appendEvent` → async (bỏ `sleepSync` busy-wait)
|
|
191
|
-
|
|
192
|
-
**Scope**: 94 sync `appendEvent` callers. **KHÔNG migrate tất cả** — triage.
|
|
193
|
-
|
|
194
|
-
**Triage rules**:
|
|
195
|
-
- **Giữ sync** cho: terminal events (task.completed/failed), signal handlers (SIGTERM/SIGINT trong background-runner — cần write đồng bộ trước exit), crash-recovery. Lý do: đảm bảo thứ tự + write-before-exit.
|
|
196
|
-
- **Migrate async** cho: progress/non-critical/high-frequency events. Lý do: bỏ busy-wait, unblock abort.
|
|
197
|
-
|
|
198
|
-
**Audit output** (cần sinh ra): bảng `file:line → keep-sync | migrate-async | reason`.
|
|
199
|
-
|
|
200
|
-
**Files chính cần migrate** (hot path, non-terminal):
|
|
201
|
-
- `src/runtime/task-runner.ts`: `task.progress` đã dùng `appendEventBuffered` ✓. Audit các appendEvent còn lại.
|
|
202
|
-
- `src/runtime/adaptive-plan.ts` (6 calls): đa số non-terminal → migrate `appendEventFireAndForget` hoặc `appendEventAsync`.
|
|
203
|
-
- `src/runtime/attention-events.ts`: progress-style → migrate.
|
|
204
|
-
|
|
205
|
-
**Changes per caller**:
|
|
206
|
-
```ts
|
|
207
|
-
// before
|
|
208
|
-
appendEvent(eventsPath, { type: "task.needs_attention", ... });
|
|
209
|
-
// after (non-critical)
|
|
210
|
-
appendEventFireAndForget(eventsPath, { type: "task.needs_attention", ... });
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
**Tests**:
|
|
214
|
-
- `test/unit/event-log-*.test.ts` + `test/integration/event-ordering*.test.ts` (nếu có, nếu không thì thêm).
|
|
215
|
-
- Thêm test: phát `MaxListenersExceededWarning` / unhandledRejection không xuất hiện sau migrate.
|
|
216
|
-
- Benchmark: p95 appendEvent latency dưới contention giảm.
|
|
217
|
-
|
|
218
|
-
**Gate**: event-ordering tests green (đặc biệt terminal events vẫn đúng thứ tự) + no new warnings.
|
|
219
|
-
**Risk**: TB. Ordering của non-critical events có thể xê dịch vài ms (acceptable). **PHẢI** giữ sync cho terminal + signal-handler paths.
|
|
220
|
-
**Rollback**: per-file revert.
|
|
221
|
-
|
|
222
|
-
**Sub-gate**: sau Phase 4, review lại xem `withEventLogLockSync`/`sleepSync` còn dùng ở đâu — nếu chỉ còn cho terminal events, cân nhắc document rõ.
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## Phase 5 — Fix #4a: `pollRunToTerminal` → fs.watch
|
|
227
|
-
|
|
228
|
-
**Files**: `src/runtime/subagent-manager.ts`, reuse `src/utils/run-watcher-registry.ts` + `src/utils/fs-watch.ts`
|
|
229
|
-
|
|
230
|
-
**Current**: `pollRunToTerminal` while-loop + `setTimeout(pollIntervalMs=1000)` đọc disk mỗi giây/subagent.
|
|
231
|
-
|
|
232
|
-
**Changes**:
|
|
233
|
-
1. Thay vì poll, subscribe manifest change:
|
|
234
|
-
```ts
|
|
235
|
-
// trong SubagentManager, inject dependency watchManifest(cwd, runId, cb)
|
|
236
|
-
private async pollRunToTerminal(cwd, record) {
|
|
237
|
-
// fallback poll giữ làm safety-net (ví dụ fs.watch không reliable trên NFS)
|
|
238
|
-
const pollFallback = ...;
|
|
239
|
-
const watcher = watchManifestFile(cwd, record.runId, () => this.checkTerminal(cwd, record));
|
|
240
|
-
// checkTerminal đọc manifest 1 lần, xử lý chuyển trạng thái
|
|
241
|
-
}
|
|
242
|
-
```
|
|
243
|
-
2. Giữ **fallback poll với interval dài hơn** (vd 5s) cho FS không hỗ trợ fs.watch (NFS, Docker macOS bind mount).
|
|
244
|
-
|
|
245
|
-
**Reuse**: `watchWithErrorHandler` (fs-watch.ts) đã handle SIGTERM/retry/error.
|
|
246
|
-
|
|
247
|
-
**Tests**:
|
|
248
|
-
- `test/unit/subagent-manager.test.ts` (stuck-blocked notify) — phải vẫn fire đúng timeout.
|
|
249
|
-
- Thêm test: manifest write → callback fire trong <100ms (vs 1000ms poll cũ) trên FS hỗ trợ watch.
|
|
250
|
-
- Test fallback: force `fs.watch` throw → fallback poll vẫn hoạt động.
|
|
251
|
-
|
|
252
|
-
**Gate**: stuck-blocked notify tests green + latency cải thiện.
|
|
253
|
-
**Risk**: TB. fs.watch không portable (macOS Docker, NFS). **Fallback poll bắt buộc**.
|
|
254
|
-
**Rollback**: git revert.
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## Phase 6 — Fix #4b: Coalesce steer + control poll (live-session)
|
|
259
|
-
|
|
260
|
-
**Files**: `src/runtime/live-session-runtime.ts`, `src/prompt/prompt-runtime.ts`
|
|
261
|
-
|
|
262
|
-
**Current**: mỗi live agent có `pollControl` 500ms (control JSONL) + mỗi worker có `pollSteering` 500ms (steer JSONL). 2 loop độc lập.
|
|
263
|
-
|
|
264
|
-
**Changes**:
|
|
265
|
-
1. Unified `AgentTick` 500ms đọc cả steering + control file cùng lúc (per agent).
|
|
266
|
-
2. `prompt-runtime.ts` (worker side, cross-process) — KHÔNG gộp được (khác process). Chỉ gộp được phần in-process `pollControl`.
|
|
267
|
-
3. Giảm từ 2 interval/agent → 1 interval/agent.
|
|
268
|
-
|
|
269
|
-
**Tests**: live-session runtime tests.
|
|
270
|
-
**Gate**: steer/follow-up/control latency không tăng + interval count giảm 50%.
|
|
271
|
-
**Risk**: TB. Phải đảm bảo control request không bị trễ do gộp tick.
|
|
272
|
-
**Rollback**: git revert.
|
|
273
|
-
|
|
274
|
-
> **Đánh giá**: Phase 6 win nhỏ (1 interval/agent giảm). Cân nhắc **skip** nếu benchmark Phase 0 cho thấy I/O polling không phải bottleneck chính.
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## Phase 7 — Fix #5: Redaction chỉ ở trust boundary (DEFER)
|
|
279
|
-
|
|
280
|
-
**⚠️ RỦI RO CAO — chỉ làm nếu Phase 0-6 benchmark chứng minh redaction là bottleneck.**
|
|
281
|
-
|
|
282
|
-
**Current**: `redactSecrets(fullEvent)` mỗi event-log write + `redactJsonLine(line)` mỗi transcript line.
|
|
283
|
-
|
|
284
|
-
**Risk**: Bỏ redact ở nhầm chỗ = leak secret ra artifact/log. **Bắt buộc security review** (skill `security-review`) trước khi merge.
|
|
285
|
-
|
|
286
|
-
**Proposed (nếu cần)**:
|
|
287
|
-
- Đánh dấu event đã redact (flag `__redacted: true`), skip re-redact.
|
|
288
|
-
- Chỉ redact khi content cross process boundary (artifact write, cross-process message).
|
|
289
|
-
- In-process event-log: trust source (event produce trong same process) → skip.
|
|
290
|
-
|
|
291
|
-
**Gate**: security-review skill pass + secret-leak test (feed fake API key, assert không xuất hiện ở output).
|
|
292
|
-
**Rollback**: immediate revert nếu leak detected.
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Phase 8 — Build bundle + full verification
|
|
297
|
-
|
|
298
|
-
1. `npm run build:bundle` (rebuild `dist/index.mjs`).
|
|
299
|
-
2. `git add -f dist/` (bundle gitignored nhưng commit lịch sử).
|
|
300
|
-
3. `npm test` full suite (bundle mode).
|
|
301
|
-
4. `PI_CREW_USE_BUNDLE=0 npm test` (source mode) — confirm cả 2 mode green.
|
|
302
|
-
5. Re-run benchmark Phase 0 → so sánh before/after, viết `bench/after.txt`.
|
|
303
|
-
6. Update CHANGELOG + version bump (theo `AGENTS.md` pre-commit checklist).
|
|
304
|
-
|
|
305
|
-
**Final gate**: benchmark improvement documented + full suite green + CHANGELOG updated.
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## Rủi ro tổng & mitigation
|
|
310
|
-
|
|
311
|
-
| Rủi ro | Mitigation |
|
|
312
|
-
|--------|-----------|
|
|
313
|
-
| Transcript ordering vỡ (Phase 3) | O_APPEND + join giữ thứ tự; integration test assert order |
|
|
314
|
-
| Terminal event xê thứ tự (Phase 4) | Giữ sync cho terminal; test ordering |
|
|
315
|
-
| fs.watch không portable (Phase 5) | Fallback poll bắt buộc |
|
|
316
|
-
| Secret leak (Phase 7) | Security review skill + leak test; DEFER unless needed |
|
|
317
|
-
| Bundle stale (toàn bộ) | Rebuild + commit `dist/` mỗi phase merge |
|
|
318
|
-
|
|
319
|
-
## Thứ tự đề nghị thực thi
|
|
320
|
-
|
|
321
|
-
**Sprint 1 (an toàn, win nhanh)**: Phase 0 → 1 → 2 → 8(partial)
|
|
322
|
-
**Sprint 2 (I/O win)**: Phase 3 → 4 → 8
|
|
323
|
-
**Sprint 3 (polling, tùy benchmark)**: Phase 5 → (6 optional)
|
|
324
|
-
**Sprint 4 (chỉ nếu cần)**: Phase 7
|
|
325
|
-
|
|
326
|
-
## Verification checkpoints (mỗi phase)
|
|
327
|
-
|
|
328
|
-
- [ ] `PI_CREW_USE_BUNDLE=0 npm test` green
|
|
329
|
-
- [ ] Benchmark so với baseline không regression
|
|
330
|
-
- [ ] Code review (skill `review`) cho diff
|
|
331
|
-
- [ ] Update `bench/baseline.txt`/`after.txt`
|
|
332
|
-
- [ ] Commit riêng per-phase (git history sạch)
|
|
333
|
-
|
|
334
|
-
## Phụ lục: skill nên dùng
|
|
335
|
-
|
|
336
|
-
- `verify-before-complete`: mỗi phase phải có evidence trước khi claim done.
|
|
337
|
-
- `review`: review diff trước merge.
|
|
338
|
-
- `security-review`: bắt buộc cho Phase 5/7.
|
|
339
|
-
- `tdd`: Phase 2-5 nên red-green (viết test snapshot trước, refactor sau).
|
|
340
|
-
|
|
341
|
-
## Phase 5 outcome (2026-07-16): DEFERRED
|
|
342
|
-
|
|
343
|
-
Phase 5 (pollRunToTerminal → fs.watch) was attempted but reverted before review rounds. Reasons:
|
|
344
|
-
- Test path resolution issue: `loadRunManifestById` uses `resolveRunStateRoot` internally; test setup didn't match the real path scheme
|
|
345
|
-
- Implementation complexity: async watcher coordination with promise-based wake + polling fallback is high-risk
|
|
346
|
-
- Time/context budget: debugging the test setup would have consumed resources better spent on the remaining phases
|
|
347
|
-
|
|
348
|
-
**Recommendation**: Phase 5 is a good follow-up but requires dedicated test infrastructure (a helper to set up a run stateRoot correctly) before it's safe to implement. The polling code works correctly; the win is latency reduction (1s → <100ms) for subagent terminal detection, not correctness.
|
|
349
|
-
|
|
350
|
-
## Phases 6-8 outcome (2026-07-16): SKIPPED (context budget)
|
|
351
|
-
|
|
352
|
-
- **Phase 6** (coalesce steer+control poll): optional per plan, skipped
|
|
353
|
-
- **Phase 7** (redaction trust-boundary): explicitly DEFER per plan
|
|
354
|
-
- **Phase 8** (build bundle + full verification): completed in final commit
|
|
355
|
-
|
|
356
|
-
## Final summary
|
|
357
|
-
|
|
358
|
-
- ✅ Phase 0: Baseline (2.0 parse/line)
|
|
359
|
-
- ✅ Phase 1: Dead code (3 functions removed)
|
|
360
|
-
- ✅ Phase 2: Double-parse → 1.0 parse/line (~27% faster)
|
|
361
|
-
- ✅ Phase 3: Transcript batching (3 syscalls/line → 3/flush)
|
|
362
|
-
- ✅ Phase 4: Event-log async migration (4 calls, 1 upgraded, 2 reverted after review)
|
|
363
|
-
- ⚠️ Phase 5: DEFERRED (reverted before review — see above)
|
|
364
|
-
- ⏭️ Phase 6: SKIPPED (optional)
|
|
365
|
-
- ⏭️ Phase 7: SKIPPED (explicitly DEFER)
|
|
366
|
-
- ✅ Phase 8: Build bundle + final verification
|