@mclawnet/swarm 0.1.12 → 0.1.14
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/dist/__tests__/always-on-activity-reader.test.d.ts +2 -0
- package/dist/__tests__/always-on-activity-reader.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-activity-reader.test.js +193 -0
- package/dist/__tests__/always-on-activity-reader.test.js.map +1 -0
- package/dist/__tests__/always-on-config.test.d.ts +2 -0
- package/dist/__tests__/always-on-config.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-config.test.js +285 -0
- package/dist/__tests__/always-on-config.test.js.map +1 -0
- package/dist/__tests__/always-on-manager.test.d.ts +2 -0
- package/dist/__tests__/always-on-manager.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-manager.test.js +797 -0
- package/dist/__tests__/always-on-manager.test.js.map +1 -0
- package/dist/__tests__/always-on-parity.test.d.ts +2 -0
- package/dist/__tests__/always-on-parity.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-parity.test.js +20 -0
- package/dist/__tests__/always-on-parity.test.js.map +1 -0
- package/dist/__tests__/cascade-picker.test.d.ts +2 -0
- package/dist/__tests__/cascade-picker.test.d.ts.map +1 -0
- package/dist/__tests__/cascade-picker.test.js +122 -0
- package/dist/__tests__/cascade-picker.test.js.map +1 -0
- package/dist/__tests__/coordinator-shipment.test.d.ts +2 -0
- package/dist/__tests__/coordinator-shipment.test.d.ts.map +1 -0
- package/dist/__tests__/coordinator-shipment.test.js +280 -0
- package/dist/__tests__/coordinator-shipment.test.js.map +1 -0
- package/dist/__tests__/coordinator-workspace-recover.test.d.ts +2 -0
- package/dist/__tests__/coordinator-workspace-recover.test.d.ts.map +1 -0
- package/dist/__tests__/coordinator-workspace-recover.test.js +140 -0
- package/dist/__tests__/coordinator-workspace-recover.test.js.map +1 -0
- package/dist/__tests__/coordinator-workspace.test.d.ts +2 -0
- package/dist/__tests__/coordinator-workspace.test.d.ts.map +1 -0
- package/dist/__tests__/coordinator-workspace.test.js +135 -0
- package/dist/__tests__/coordinator-workspace.test.js.map +1 -0
- package/dist/__tests__/default-runner-epipe.test.d.ts +2 -0
- package/dist/__tests__/default-runner-epipe.test.d.ts.map +1 -0
- package/dist/__tests__/default-runner-epipe.test.js +43 -0
- package/dist/__tests__/default-runner-epipe.test.js.map +1 -0
- package/dist/__tests__/discovery-scheduler.test.d.ts +2 -0
- package/dist/__tests__/discovery-scheduler.test.d.ts.map +1 -0
- package/dist/__tests__/discovery-scheduler.test.js +367 -0
- package/dist/__tests__/discovery-scheduler.test.js.map +1 -0
- package/dist/__tests__/env-forward-e2e.test.d.ts +2 -0
- package/dist/__tests__/env-forward-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/env-forward-e2e.test.js +57 -0
- package/dist/__tests__/env-forward-e2e.test.js.map +1 -0
- package/dist/__tests__/gh-pr-creator.test.d.ts +2 -0
- package/dist/__tests__/gh-pr-creator.test.d.ts.map +1 -0
- package/dist/__tests__/gh-pr-creator.test.js +107 -0
- package/dist/__tests__/gh-pr-creator.test.js.map +1 -0
- package/dist/__tests__/git-worktree-provider.test.d.ts +2 -0
- package/dist/__tests__/git-worktree-provider.test.d.ts.map +1 -0
- package/dist/__tests__/git-worktree-provider.test.js +98 -0
- package/dist/__tests__/git-worktree-provider.test.js.map +1 -0
- package/dist/__tests__/gitignore-check.test.d.ts +2 -0
- package/dist/__tests__/gitignore-check.test.d.ts.map +1 -0
- package/dist/__tests__/gitignore-check.test.js +39 -0
- package/dist/__tests__/gitignore-check.test.js.map +1 -0
- package/dist/__tests__/idea-research-source.test.d.ts +2 -0
- package/dist/__tests__/idea-research-source.test.d.ts.map +1 -0
- package/dist/__tests__/idea-research-source.test.js +425 -0
- package/dist/__tests__/idea-research-source.test.js.map +1 -0
- package/dist/__tests__/idea-todo-source.test.d.ts +2 -0
- package/dist/__tests__/idea-todo-source.test.d.ts.map +1 -0
- package/dist/__tests__/idea-todo-source.test.js +258 -0
- package/dist/__tests__/idea-todo-source.test.js.map +1 -0
- package/dist/__tests__/inbox-store-notbefore.test.d.ts +2 -0
- package/dist/__tests__/inbox-store-notbefore.test.d.ts.map +1 -0
- package/dist/__tests__/inbox-store-notbefore.test.js +47 -0
- package/dist/__tests__/inbox-store-notbefore.test.js.map +1 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts +2 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts.map +1 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.js +32 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.js.map +1 -0
- package/dist/__tests__/introspection-dedupe.test.d.ts +2 -0
- package/dist/__tests__/introspection-dedupe.test.d.ts.map +1 -0
- package/dist/__tests__/introspection-dedupe.test.js +484 -0
- package/dist/__tests__/introspection-dedupe.test.js.map +1 -0
- package/dist/__tests__/introspection-source.test.d.ts +2 -0
- package/dist/__tests__/introspection-source.test.d.ts.map +1 -0
- package/dist/__tests__/introspection-source.test.js +1051 -0
- package/dist/__tests__/introspection-source.test.js.map +1 -0
- package/dist/__tests__/migration-roles.test.js +1 -22
- package/dist/__tests__/migration-roles.test.js.map +1 -1
- package/dist/__tests__/reconcile-researching.test.d.ts +2 -0
- package/dist/__tests__/reconcile-researching.test.d.ts.map +1 -0
- package/dist/__tests__/reconcile-researching.test.js +224 -0
- package/dist/__tests__/reconcile-researching.test.js.map +1 -0
- package/dist/__tests__/role-loader-editor.test.js +40 -10
- package/dist/__tests__/role-loader-editor.test.js.map +1 -1
- package/dist/__tests__/role-loader-preamble-all.test.js +3 -1
- package/dist/__tests__/role-loader-preamble-all.test.js.map +1 -1
- package/dist/__tests__/role-loader.test.js +95 -0
- package/dist/__tests__/role-loader.test.js.map +1 -1
- package/dist/__tests__/role-prompt-no-legacy-protocol.test.js +3 -1
- package/dist/__tests__/role-prompt-no-legacy-protocol.test.js.map +1 -1
- package/dist/__tests__/secret-scrub.test.d.ts +2 -0
- package/dist/__tests__/secret-scrub.test.d.ts.map +1 -0
- package/dist/__tests__/secret-scrub.test.js +55 -0
- package/dist/__tests__/secret-scrub.test.js.map +1 -0
- package/dist/__tests__/shipment-actions.test.d.ts +2 -0
- package/dist/__tests__/shipment-actions.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-actions.test.js +378 -0
- package/dist/__tests__/shipment-actions.test.js.map +1 -0
- package/dist/__tests__/shipment-persistence.test.d.ts +2 -0
- package/dist/__tests__/shipment-persistence.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-persistence.test.js +120 -0
- package/dist/__tests__/shipment-persistence.test.js.map +1 -0
- package/dist/__tests__/shipment-pipeline.test.d.ts +2 -0
- package/dist/__tests__/shipment-pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-pipeline.test.js +392 -0
- package/dist/__tests__/shipment-pipeline.test.js.map +1 -0
- package/dist/__tests__/shipment-report.test.d.ts +2 -0
- package/dist/__tests__/shipment-report.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-report.test.js +78 -0
- package/dist/__tests__/shipment-report.test.js.map +1 -0
- package/dist/__tests__/shipment-stdin-integration.test.d.ts +2 -0
- package/dist/__tests__/shipment-stdin-integration.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-stdin-integration.test.js +49 -0
- package/dist/__tests__/shipment-stdin-integration.test.js.map +1 -0
- package/dist/__tests__/shipment-type-parity.test.d.ts +2 -0
- package/dist/__tests__/shipment-type-parity.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-type-parity.test.js +10 -0
- package/dist/__tests__/shipment-type-parity.test.js.map +1 -0
- package/dist/__tests__/snapshot-copy-provider.test.d.ts +2 -0
- package/dist/__tests__/snapshot-copy-provider.test.d.ts.map +1 -0
- package/dist/__tests__/snapshot-copy-provider.test.js +88 -0
- package/dist/__tests__/snapshot-copy-provider.test.js.map +1 -0
- package/dist/__tests__/swarm-coordinator-backend.test.js +153 -0
- package/dist/__tests__/swarm-coordinator-backend.test.js.map +1 -1
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.d.ts +2 -0
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.d.ts.map +1 -0
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.js +111 -0
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.js.map +1 -0
- package/dist/__tests__/task-store-source.test.d.ts +2 -0
- package/dist/__tests__/task-store-source.test.d.ts.map +1 -0
- package/dist/__tests__/task-store-source.test.js +56 -0
- package/dist/__tests__/task-store-source.test.js.map +1 -0
- package/dist/__tests__/template-loader-editor.test.js +28 -13
- package/dist/__tests__/template-loader-editor.test.js.map +1 -1
- package/dist/__tests__/transport-detect.test.d.ts +2 -0
- package/dist/__tests__/transport-detect.test.d.ts.map +1 -0
- package/dist/__tests__/transport-detect.test.js +92 -0
- package/dist/__tests__/transport-detect.test.js.map +1 -0
- package/dist/__tests__/wakeup-end-to-end.test.d.ts +2 -0
- package/dist/__tests__/wakeup-end-to-end.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-end-to-end.test.js +80 -0
- package/dist/__tests__/wakeup-end-to-end.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.js +33 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.js +62 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler.test.js +65 -0
- package/dist/__tests__/wakeup-scheduler.test.js.map +1 -0
- package/dist/__tests__/watch-manager.test.d.ts +2 -0
- package/dist/__tests__/watch-manager.test.d.ts.map +1 -0
- package/dist/__tests__/watch-manager.test.js +203 -0
- package/dist/__tests__/watch-manager.test.js.map +1 -0
- package/dist/__tests__/workcycle-runner-cascade.test.d.ts +2 -0
- package/dist/__tests__/workcycle-runner-cascade.test.d.ts.map +1 -0
- package/dist/__tests__/workcycle-runner-cascade.test.js +203 -0
- package/dist/__tests__/workcycle-runner-cascade.test.js.map +1 -0
- package/dist/__tests__/workcycle-runner.test.d.ts +2 -0
- package/dist/__tests__/workcycle-runner.test.d.ts.map +1 -0
- package/dist/__tests__/workcycle-runner.test.js +369 -0
- package/dist/__tests__/workcycle-runner.test.js.map +1 -0
- package/dist/__tests__/workspace-diff.test.d.ts +2 -0
- package/dist/__tests__/workspace-diff.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-diff.test.js +62 -0
- package/dist/__tests__/workspace-diff.test.js.map +1 -0
- package/dist/__tests__/workspace-manager.test.d.ts +2 -0
- package/dist/__tests__/workspace-manager.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-manager.test.js +120 -0
- package/dist/__tests__/workspace-manager.test.js.map +1 -0
- package/dist/__tests__/workspace-types.test.d.ts +2 -0
- package/dist/__tests__/workspace-types.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-types.test.js +37 -0
- package/dist/__tests__/workspace-types.test.js.map +1 -0
- package/dist/__tests__/worktree-gc.test.d.ts +2 -0
- package/dist/__tests__/worktree-gc.test.d.ts.map +1 -0
- package/dist/__tests__/worktree-gc.test.js +183 -0
- package/dist/__tests__/worktree-gc.test.js.map +1 -0
- package/dist/always-on/activity-reader.d.ts +27 -0
- package/dist/always-on/activity-reader.d.ts.map +1 -0
- package/dist/always-on/activity-reader.js +95 -0
- package/dist/always-on/activity-reader.js.map +1 -0
- package/dist/always-on/always-on-manager.d.ts +170 -0
- package/dist/always-on/always-on-manager.d.ts.map +1 -0
- package/dist/always-on/always-on-manager.js +538 -0
- package/dist/always-on/always-on-manager.js.map +1 -0
- package/dist/always-on/config.d.ts +141 -0
- package/dist/always-on/config.d.ts.map +1 -0
- package/dist/always-on/config.js +324 -0
- package/dist/always-on/config.js.map +1 -0
- package/dist/always-on/discovery-scheduler.d.ts +60 -0
- package/dist/always-on/discovery-scheduler.d.ts.map +1 -0
- package/dist/always-on/discovery-scheduler.js +287 -0
- package/dist/always-on/discovery-scheduler.js.map +1 -0
- package/dist/always-on/ideas-client.d.ts +23 -0
- package/dist/always-on/ideas-client.d.ts.map +1 -0
- package/dist/always-on/ideas-client.js +13 -0
- package/dist/always-on/ideas-client.js.map +1 -0
- package/dist/always-on/reconcile-researching.d.ts +42 -0
- package/dist/always-on/reconcile-researching.d.ts.map +1 -0
- package/dist/always-on/reconcile-researching.js +133 -0
- package/dist/always-on/reconcile-researching.js.map +1 -0
- package/dist/always-on/task-sources/cascade-picker.d.ts +42 -0
- package/dist/always-on/task-sources/cascade-picker.d.ts.map +1 -0
- package/dist/always-on/task-sources/cascade-picker.js +65 -0
- package/dist/always-on/task-sources/cascade-picker.js.map +1 -0
- package/dist/always-on/task-sources/idea-dedupe.d.ts +62 -0
- package/dist/always-on/task-sources/idea-dedupe.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-dedupe.js +130 -0
- package/dist/always-on/task-sources/idea-dedupe.js.map +1 -0
- package/dist/always-on/task-sources/idea-research-source.d.ts +46 -0
- package/dist/always-on/task-sources/idea-research-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-research-source.js +308 -0
- package/dist/always-on/task-sources/idea-research-source.js.map +1 -0
- package/dist/always-on/task-sources/idea-sort.d.ts +3 -0
- package/dist/always-on/task-sources/idea-sort.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-sort.js +25 -0
- package/dist/always-on/task-sources/idea-sort.js.map +1 -0
- package/dist/always-on/task-sources/idea-todo-source.d.ts +48 -0
- package/dist/always-on/task-sources/idea-todo-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-todo-source.js +226 -0
- package/dist/always-on/task-sources/idea-todo-source.js.map +1 -0
- package/dist/always-on/task-sources/introspection-source.d.ts +101 -0
- package/dist/always-on/task-sources/introspection-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/introspection-source.js +695 -0
- package/dist/always-on/task-sources/introspection-source.js.map +1 -0
- package/dist/always-on/task-sources/task-store-source.d.ts +15 -0
- package/dist/always-on/task-sources/task-store-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/task-store-source.js +59 -0
- package/dist/always-on/task-sources/task-store-source.js.map +1 -0
- package/dist/always-on/task-sources/types.d.ts +108 -0
- package/dist/always-on/task-sources/types.d.ts.map +1 -0
- package/dist/always-on/task-sources/types.js +13 -0
- package/dist/always-on/task-sources/types.js.map +1 -0
- package/dist/always-on/types.d.ts +76 -0
- package/dist/always-on/types.d.ts.map +1 -0
- package/dist/always-on/types.js +17 -0
- package/dist/always-on/types.js.map +1 -0
- package/dist/always-on/workcycle-runner.d.ts +115 -0
- package/dist/always-on/workcycle-runner.d.ts.map +1 -0
- package/dist/always-on/workcycle-runner.js +285 -0
- package/dist/always-on/workcycle-runner.js.map +1 -0
- package/dist/always-on/worktree-gc.d.ts +41 -0
- package/dist/always-on/worktree-gc.d.ts.map +1 -0
- package/dist/always-on/worktree-gc.js +167 -0
- package/dist/always-on/worktree-gc.js.map +1 -0
- package/dist/inbox-store.d.ts +7 -0
- package/dist/inbox-store.d.ts.map +1 -1
- package/dist/inbox-store.js +8 -1
- package/dist/inbox-store.js.map +1 -1
- package/dist/index.d.ts +29 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/dist/persistence.d.ts +37 -1
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +48 -0
- package/dist/persistence.js.map +1 -1
- package/dist/retrospective.d.ts.map +1 -1
- package/dist/retrospective.js +6 -0
- package/dist/retrospective.js.map +1 -1
- package/dist/roles/role-loader.d.ts +31 -6
- package/dist/roles/role-loader.d.ts.map +1 -1
- package/dist/roles/role-loader.js +58 -32
- package/dist/roles/role-loader.js.map +1 -1
- package/dist/roles/types.d.ts +12 -0
- package/dist/roles/types.d.ts.map +1 -1
- package/dist/shipment/gh-pr-creator.d.ts +28 -0
- package/dist/shipment/gh-pr-creator.d.ts.map +1 -0
- package/dist/shipment/gh-pr-creator.js +80 -0
- package/dist/shipment/gh-pr-creator.js.map +1 -0
- package/dist/shipment/report.d.ts +27 -0
- package/dist/shipment/report.d.ts.map +1 -0
- package/dist/shipment/report.js +41 -0
- package/dist/shipment/report.js.map +1 -0
- package/dist/shipment/secret-scrub.d.ts +12 -0
- package/dist/shipment/secret-scrub.d.ts.map +1 -0
- package/dist/shipment/secret-scrub.js +30 -0
- package/dist/shipment/secret-scrub.js.map +1 -0
- package/dist/shipment/shipment-actions.d.ts +85 -0
- package/dist/shipment/shipment-actions.d.ts.map +1 -0
- package/dist/shipment/shipment-actions.js +190 -0
- package/dist/shipment/shipment-actions.js.map +1 -0
- package/dist/shipment/shipment-pipeline.d.ts +48 -0
- package/dist/shipment/shipment-pipeline.d.ts.map +1 -0
- package/dist/shipment/shipment-pipeline.js +256 -0
- package/dist/shipment/shipment-pipeline.js.map +1 -0
- package/dist/shipment/transport-detect.d.ts +16 -0
- package/dist/shipment/transport-detect.d.ts.map +1 -0
- package/dist/shipment/transport-detect.js +54 -0
- package/dist/shipment/transport-detect.js.map +1 -0
- package/dist/shipment/workspace-diff.d.ts +39 -0
- package/dist/shipment/workspace-diff.d.ts.map +1 -0
- package/dist/shipment/workspace-diff.js +64 -0
- package/dist/shipment/workspace-diff.js.map +1 -0
- package/dist/swarm-coordinator.d.ts +20 -1
- package/dist/swarm-coordinator.d.ts.map +1 -1
- package/dist/swarm-coordinator.js +193 -10
- package/dist/swarm-coordinator.js.map +1 -1
- package/dist/templates/template-loader.d.ts +23 -9
- package/dist/templates/template-loader.d.ts.map +1 -1
- package/dist/templates/template-loader.js +33 -26
- package/dist/templates/template-loader.js.map +1 -1
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wakeup-scheduler.d.ts +36 -0
- package/dist/wakeup-scheduler.d.ts.map +1 -0
- package/dist/wakeup-scheduler.js +107 -0
- package/dist/wakeup-scheduler.js.map +1 -0
- package/dist/watch-manager.d.ts +32 -0
- package/dist/watch-manager.d.ts.map +1 -0
- package/dist/watch-manager.js +153 -0
- package/dist/watch-manager.js.map +1 -0
- package/dist/workspace/git-worktree-provider.d.ts +11 -0
- package/dist/workspace/git-worktree-provider.d.ts.map +1 -0
- package/dist/workspace/git-worktree-provider.js +123 -0
- package/dist/workspace/git-worktree-provider.js.map +1 -0
- package/dist/workspace/gitignore-check.d.ts +10 -0
- package/dist/workspace/gitignore-check.d.ts.map +1 -0
- package/dist/workspace/gitignore-check.js +25 -0
- package/dist/workspace/gitignore-check.js.map +1 -0
- package/dist/workspace/index.d.ts +5 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +5 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/snapshot-copy-provider.d.ts +11 -0
- package/dist/workspace/snapshot-copy-provider.d.ts.map +1 -0
- package/dist/workspace/snapshot-copy-provider.js +66 -0
- package/dist/workspace/snapshot-copy-provider.js.map +1 -0
- package/dist/workspace/types.d.ts +36 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/dist/workspace/types.js +2 -0
- package/dist/workspace/types.js.map +1 -0
- package/dist/workspace/workspace-manager.d.ts +30 -0
- package/dist/workspace/workspace-manager.d.ts.map +1 -0
- package/dist/workspace/workspace-manager.js +104 -0
- package/dist/workspace/workspace-manager.js.map +1 -0
- package/package.json +5 -5
- package/roles/queen.md +1 -0
- package/templates/introspection.md +64 -0
- package/templates/research-only.md +58 -0
- package/roles/preset-analyst-simons.md +0 -39
- package/roles/preset-architect-knuth.md +0 -39
- package/roles/preset-designer-norman.md +0 -39
- package/roles/preset-designer.md +0 -39
- package/roles/preset-dev-carmack.md +0 -39
- package/roles/preset-dev-gosling.md +0 -39
- package/roles/preset-developer.md +0 -52
- package/roles/preset-manager-grove.md +0 -39
- package/roles/preset-manager-musk.md +0 -39
- package/roles/preset-pm.md +0 -78
- package/roles/preset-researcher-feynman.md +0 -39
- package/roles/preset-reviewer.md +0 -46
- package/roles/preset-strategist-buffett.md +0 -39
- package/roles/preset-strategist-munger.md +0 -39
- package/roles/preset-strategist-sunzi.md +0 -39
- package/roles/preset-tester-beck.md +0 -40
- package/roles/preset-tester.md +0 -47
- package/roles/preset-writer-orwell.md +0 -39
- package/roles/preset-writer.md +0 -39
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipment-actions.js","sourceRoot":"","sources":["../../src/shipment/shipment-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SwarmInstance } from "../types.js";
|
|
2
|
+
import { type CommandRunnerWithStdin } from "./gh-pr-creator.js";
|
|
3
|
+
export interface ShipmentInput {
|
|
4
|
+
swarm: SwarmInstance;
|
|
5
|
+
/** Optional LLM caller for title/summary generation. Falls back to swarmId/diffStat if absent. */
|
|
6
|
+
generateText?: (prompt: string) => Promise<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Test injection: command runner for git/gh/cp commands. Supports stdin so
|
|
9
|
+
* `gh pr create --body-file -` receives the rendered report body.
|
|
10
|
+
* For backwards compatibility, runners that only accept (cmd, args) or
|
|
11
|
+
* (cmd, args, cwd) work for non-stdin commands.
|
|
12
|
+
*/
|
|
13
|
+
runner?: CommandRunnerWithStdin;
|
|
14
|
+
/** Test injection: file writer (for fallback diff.patch + report.md). */
|
|
15
|
+
writeFile?: (path: string, contents: string) => Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface ShipmentResult {
|
|
18
|
+
strategy: "pr" | "diff-only" | "skipped";
|
|
19
|
+
/** ISO timestamp when shipment ran. M6.2 UI uses this for display. */
|
|
20
|
+
createdAt: string;
|
|
21
|
+
/** PR title (LLM-generated or fallback). M6.2 UI surface. */
|
|
22
|
+
title?: string;
|
|
23
|
+
/** PR summary (first ~200 chars; full version lives in report.md). M6.2 UI surface. */
|
|
24
|
+
summary?: string;
|
|
25
|
+
prUrl?: string;
|
|
26
|
+
branchName?: string;
|
|
27
|
+
diffPath?: string;
|
|
28
|
+
reportPath?: string;
|
|
29
|
+
/** Populated when strategy=diff-only because a PR attempt failed; carries the gh error. */
|
|
30
|
+
prAttemptError?: string;
|
|
31
|
+
error?: string;
|
|
32
|
+
/**
|
|
33
|
+
* ISO timestamp stamped by `mergeShipment()` when the user marks the PR as
|
|
34
|
+
* merged. Lives on the on-disk JSON; M6.3's history view surfaces it as the
|
|
35
|
+
* "Merged" filter. Optional because most shipments are never marked merged
|
|
36
|
+
* and pre-M6.2.3 shipment.json files don't have the field at all.
|
|
37
|
+
*/
|
|
38
|
+
mergedAt?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Stdin-aware default runner. When `opts.stdin` is set, opens a stdin pipe so
|
|
42
|
+
* `gh pr create --body-file -` can read the rendered report body. Mirrors
|
|
43
|
+
* gh-pr-creator's own defaultRunner so production wiring actually delivers
|
|
44
|
+
* stdin to subprocesses.
|
|
45
|
+
*/
|
|
46
|
+
export declare const defaultRunnerWithStdin: CommandRunnerWithStdin;
|
|
47
|
+
export declare function runShipment(input: ShipmentInput): Promise<ShipmentResult>;
|
|
48
|
+
//# sourceMappingURL=shipment-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipment-pipeline.d.ts","sourceRoot":"","sources":["../../src/shipment/shipment-pipeline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AA+BhF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,kGAAkG;IAClG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;IAChC,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC;IACzC,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AAKH,eAAO,MAAM,sBAAsB,EAAE,sBAwBpC,CAAC;AAEF,wBAAsB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA8L/E"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { writeFile as fsWriteFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { createLogger } from "@mclawnet/logger";
|
|
4
|
+
import { computeWorkspaceDiff } from "./workspace-diff.js";
|
|
5
|
+
import { renderReport } from "./report.js";
|
|
6
|
+
import { detectTransport } from "./transport-detect.js";
|
|
7
|
+
import { createDraftPR } from "./gh-pr-creator.js";
|
|
8
|
+
import { scrubSecrets } from "./secret-scrub.js";
|
|
9
|
+
const log = createLogger({ module: "swarm/shipment/pipeline" });
|
|
10
|
+
/**
|
|
11
|
+
* Auto-commit identity. Surfaces in `git log`/`git blame` so reviewers can
|
|
12
|
+
* distinguish swarm-generated commits from human work without inspecting
|
|
13
|
+
* the message body.
|
|
14
|
+
*/
|
|
15
|
+
const COMMIT_AUTHOR_NAME = "ClawNet Swarm";
|
|
16
|
+
const COMMIT_AUTHOR_EMAIL = "swarm@clawnet.local";
|
|
17
|
+
/** GitHub caps PR bodies near 65KB. 60KB leaves headroom for trailing markers. */
|
|
18
|
+
const MAX_PR_BODY = 60_000;
|
|
19
|
+
function commitArgs(message, extra = []) {
|
|
20
|
+
return [
|
|
21
|
+
"-c",
|
|
22
|
+
`user.name=${COMMIT_AUTHOR_NAME}`,
|
|
23
|
+
"-c",
|
|
24
|
+
`user.email=${COMMIT_AUTHOR_EMAIL}`,
|
|
25
|
+
"commit",
|
|
26
|
+
"--author",
|
|
27
|
+
`${COMMIT_AUTHOR_NAME} <${COMMIT_AUTHOR_EMAIL}>`,
|
|
28
|
+
...extra,
|
|
29
|
+
"-m",
|
|
30
|
+
message,
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Stdin-aware default runner. When `opts.stdin` is set, opens a stdin pipe so
|
|
35
|
+
* `gh pr create --body-file -` can read the rendered report body. Mirrors
|
|
36
|
+
* gh-pr-creator's own defaultRunner so production wiring actually delivers
|
|
37
|
+
* stdin to subprocesses.
|
|
38
|
+
*/
|
|
39
|
+
// Exported (not `const` private) so the EPIPE regression suite can pin the
|
|
40
|
+
// stdin error-listener behavior against the real runner instead of an inline
|
|
41
|
+
// copy. Default-runner overrides for tests still flow through
|
|
42
|
+
// `ShipmentInput.runner`; only the test layer touches this export directly.
|
|
43
|
+
export const defaultRunnerWithStdin = async (cmd, args, opts) => {
|
|
44
|
+
const { spawn } = await import("node:child_process");
|
|
45
|
+
return new Promise((resolve) => {
|
|
46
|
+
const child = spawn(cmd, args, {
|
|
47
|
+
cwd: opts.cwd,
|
|
48
|
+
stdio: [opts.stdin === undefined ? "ignore" : "pipe", "pipe", "pipe"],
|
|
49
|
+
});
|
|
50
|
+
let stdout = "";
|
|
51
|
+
let stderr = "";
|
|
52
|
+
child.stdout?.on("data", (c) => (stdout += c.toString("utf-8")));
|
|
53
|
+
child.stderr?.on("data", (c) => (stderr += c.toString("utf-8")));
|
|
54
|
+
child.on("error", (e) => resolve({ exitCode: -1, stdout, stderr: e.message }));
|
|
55
|
+
child.on("close", (code) => resolve({ exitCode: code ?? -1, stdout, stderr }));
|
|
56
|
+
if (opts.stdin !== undefined && child.stdin) {
|
|
57
|
+
// EPIPE safety (matches claude-process PR #181 pattern): if the child
|
|
58
|
+
// dies before we finish writing, stdin emits 'error' and — without a
|
|
59
|
+
// listener — Node crashes the agent process. Route to the same resolve
|
|
60
|
+
// path as spawn errors. Promise dedupes naturally so a later close()
|
|
61
|
+
// resolve() is a no-op.
|
|
62
|
+
child.stdin.on("error", (e) => resolve({ exitCode: -1, stdout, stderr: e.message }));
|
|
63
|
+
child.stdin.write(opts.stdin);
|
|
64
|
+
child.stdin.end();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
export async function runShipment(input) {
|
|
69
|
+
const createdAt = new Date().toISOString();
|
|
70
|
+
try {
|
|
71
|
+
const swarm = input.swarm;
|
|
72
|
+
const ws = swarm.workspace;
|
|
73
|
+
if (!ws)
|
|
74
|
+
return { strategy: "skipped", createdAt, error: "no workspace" };
|
|
75
|
+
if (ws.strategy !== "git-worktree") {
|
|
76
|
+
return {
|
|
77
|
+
strategy: "skipped",
|
|
78
|
+
createdAt,
|
|
79
|
+
error: `${ws.strategy} not supported in M6.1 (git-worktree only)`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const runner = input.runner ?? defaultRunnerWithStdin;
|
|
83
|
+
// Facade for code paths that historically used (cmd, args, cwd) — drops stdin.
|
|
84
|
+
const runnerNoStdin = (cmd, args, cwd) => runner(cmd, args, { cwd });
|
|
85
|
+
const writeFile = input.writeFile ??
|
|
86
|
+
(async (p, c) => {
|
|
87
|
+
await fsWriteFile(p, c, "utf-8");
|
|
88
|
+
});
|
|
89
|
+
// 2. Auto-commit any uncommitted changes
|
|
90
|
+
await runnerNoStdin("git", ["add", "-A"], ws.cwd).catch(() => null);
|
|
91
|
+
const status = await runnerNoStdin("git", ["status", "--porcelain"], ws.cwd).catch(() => null);
|
|
92
|
+
if (status && status.exitCode === 0 && status.stdout.trim().length > 0) {
|
|
93
|
+
// Observability for S4: surface the file list so users can spot junk
|
|
94
|
+
// (e.g. .DS_Store, editor swap files) that crept in via `git add -A`.
|
|
95
|
+
// Not filtered here — opt-in filtering would need user config.
|
|
96
|
+
log.info({
|
|
97
|
+
swarmId: swarm.id,
|
|
98
|
+
files: status.stdout.trim().split("\n").slice(0, 50),
|
|
99
|
+
}, "shipment: about to auto-commit changes");
|
|
100
|
+
const commitMsg = `swarm output: ${swarm.id}`;
|
|
101
|
+
let commit = await runnerNoStdin("git", commitArgs(commitMsg), ws.cwd).catch(() => null);
|
|
102
|
+
if (!commit || commit.exitCode !== 0) {
|
|
103
|
+
log.warn({ swarmId: swarm.id, stderr: commit?.stderr }, "shipment: git commit failed (likely pre-commit hook); retrying with --no-verify");
|
|
104
|
+
commit = await runnerNoStdin("git", commitArgs(`${commitMsg} (no-verify after hook failure)`, ["--no-verify"]), ws.cwd).catch(() => null);
|
|
105
|
+
if (!commit || commit.exitCode !== 0) {
|
|
106
|
+
log.warn({ swarmId: swarm.id, stderr: commit?.stderr }, "shipment: git commit --no-verify also failed; continuing with HEAD as-is");
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// 3. Diff
|
|
111
|
+
const diff = await computeWorkspaceDiff({
|
|
112
|
+
worktreeCwd: ws.cwd,
|
|
113
|
+
baseCommit: ws.metadata.baseCommit,
|
|
114
|
+
runner: runnerNoStdin,
|
|
115
|
+
});
|
|
116
|
+
if (diff.error)
|
|
117
|
+
return { strategy: "skipped", createdAt, error: diff.error };
|
|
118
|
+
if (diff.files.length === 0)
|
|
119
|
+
return { strategy: "skipped", createdAt, error: "no changes" };
|
|
120
|
+
// Scrub secrets from diff text BEFORE it reaches the LLM or report. Common
|
|
121
|
+
// patterns only (GitHub/Slack/OpenAI/AWS tokens + KEY=value lines); manual
|
|
122
|
+
// review is still required and the report makes this explicit.
|
|
123
|
+
const scrubbedDiff = {
|
|
124
|
+
...diff,
|
|
125
|
+
stat: scrubSecrets(diff.stat),
|
|
126
|
+
patch: scrubSecrets(diff.patch),
|
|
127
|
+
};
|
|
128
|
+
// 4. LLM title/summary or fallback
|
|
129
|
+
let title = `swarm: ${swarm.id}`;
|
|
130
|
+
let summary = `Swarm produced ${scrubbedDiff.files.length} file change(s).\n\n${scrubbedDiff.stat}`;
|
|
131
|
+
if (input.generateText) {
|
|
132
|
+
try {
|
|
133
|
+
const t = (await input.generateText(buildTitlePrompt(swarm, scrubbedDiff)))
|
|
134
|
+
.trim()
|
|
135
|
+
.split("\n")[0];
|
|
136
|
+
if (t)
|
|
137
|
+
title = t;
|
|
138
|
+
const s = (await input.generateText(buildSummaryPrompt(swarm, scrubbedDiff))).trim();
|
|
139
|
+
if (s)
|
|
140
|
+
summary = s;
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
log.warn({ err, swarmId: swarm.id }, "shipment: LLM generateText failed; using fallback");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Re-scrub LLM output: model could re-emit a leaked secret it saw in the diff.
|
|
147
|
+
title = scrubSecrets(title);
|
|
148
|
+
summary = scrubSecrets(summary);
|
|
149
|
+
// 5. Render report
|
|
150
|
+
const report = renderReport({
|
|
151
|
+
swarmId: swarm.id,
|
|
152
|
+
swarmDisplayName: swarm.displayName,
|
|
153
|
+
teamName: swarm.teamName ?? "default",
|
|
154
|
+
baseBranch: ws.metadata.baseBranch ?? "main",
|
|
155
|
+
baseCommit: ws.metadata.baseCommit,
|
|
156
|
+
branchName: ws.metadata.branchName,
|
|
157
|
+
startedAt: getStartedAt(swarm, createdAt),
|
|
158
|
+
endedAt: createdAt,
|
|
159
|
+
status: mapStatus(swarm.status),
|
|
160
|
+
diffStat: scrubbedDiff.stat,
|
|
161
|
+
changedFiles: scrubbedDiff.files,
|
|
162
|
+
title,
|
|
163
|
+
summary,
|
|
164
|
+
roles: [...swarm.roles.values()].map((r) => ({
|
|
165
|
+
instanceId: r.instanceId,
|
|
166
|
+
roleName: r.roleName,
|
|
167
|
+
})),
|
|
168
|
+
});
|
|
169
|
+
// 6. Transport
|
|
170
|
+
const transport = await detectTransport(ws.cwd, { runner: runnerNoStdin });
|
|
171
|
+
const branchName = ws.metadata.branchName;
|
|
172
|
+
// 7. PR path
|
|
173
|
+
let prAttemptError;
|
|
174
|
+
if (transport.kind === "pr") {
|
|
175
|
+
// GitHub caps PR bodies around 65KB. Truncate with a clear pointer to
|
|
176
|
+
// the full report on disk so reviewers know nothing was silently dropped.
|
|
177
|
+
let body = report;
|
|
178
|
+
if (body.length > MAX_PR_BODY) {
|
|
179
|
+
body =
|
|
180
|
+
body.substring(0, MAX_PR_BODY) +
|
|
181
|
+
"\n\n... (truncated — full report at `report.md` in the worktree)\n";
|
|
182
|
+
}
|
|
183
|
+
const pr = await createDraftPR({
|
|
184
|
+
cwd: ws.cwd,
|
|
185
|
+
branchName,
|
|
186
|
+
baseBranch: transport.defaultBranch ?? "main",
|
|
187
|
+
title,
|
|
188
|
+
bodyMarkdown: body,
|
|
189
|
+
}, { runner });
|
|
190
|
+
if (pr.ok) {
|
|
191
|
+
log.info({ swarmId: swarm.id, prUrl: pr.url }, "shipment: PR created");
|
|
192
|
+
return {
|
|
193
|
+
strategy: "pr",
|
|
194
|
+
createdAt,
|
|
195
|
+
title,
|
|
196
|
+
summary: summary.substring(0, 200),
|
|
197
|
+
prUrl: pr.url,
|
|
198
|
+
branchName,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
prAttemptError = `${pr.step}: ${pr.error}`;
|
|
202
|
+
log.warn({ swarmId: swarm.id, step: pr.step, err: pr.error }, "shipment: PR creation failed; falling back to diff-only");
|
|
203
|
+
// fall through
|
|
204
|
+
}
|
|
205
|
+
// 8. Diff-only fallback
|
|
206
|
+
const diffPath = join(ws.cwd, "diff.patch");
|
|
207
|
+
const reportPath = join(ws.cwd, "report.md");
|
|
208
|
+
await writeFile(diffPath, scrubbedDiff.patch);
|
|
209
|
+
await writeFile(reportPath, report);
|
|
210
|
+
log.info({ swarmId: swarm.id, diffPath, reportPath }, "shipment: diff+report written to worktree");
|
|
211
|
+
return {
|
|
212
|
+
strategy: "diff-only",
|
|
213
|
+
createdAt,
|
|
214
|
+
title,
|
|
215
|
+
summary: summary.substring(0, 200),
|
|
216
|
+
diffPath,
|
|
217
|
+
reportPath,
|
|
218
|
+
branchName,
|
|
219
|
+
prAttemptError,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
log.warn({ err, swarmId: input.swarm.id }, "shipment: unexpected failure");
|
|
224
|
+
return { strategy: "skipped", createdAt, error: err?.message ?? String(err) };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function buildTitlePrompt(swarm, diff) {
|
|
228
|
+
return (`You are summarizing a swarm's work as a one-line PR title.\n\n` +
|
|
229
|
+
`Swarm id: ${swarm.id}\n` +
|
|
230
|
+
`Files changed:\n${diff.stat}\n\n` +
|
|
231
|
+
`Output a single short title (max 60 chars), no quotes, no trailing period.`);
|
|
232
|
+
}
|
|
233
|
+
function buildSummaryPrompt(swarm, diff) {
|
|
234
|
+
return (`Write a 1-3 paragraph summary of what this swarm accomplished, suitable for a PR description.\n\n` +
|
|
235
|
+
`Swarm id: ${swarm.id}\n` +
|
|
236
|
+
`Files changed:\n${diff.stat}\n\n` +
|
|
237
|
+
`Diff (truncated to 4000 chars):\n${diff.patch.substring(0, 4000)}\n\n` +
|
|
238
|
+
`Write the summary in markdown. Do not include a heading.`);
|
|
239
|
+
}
|
|
240
|
+
function getStartedAt(swarm, fallback) {
|
|
241
|
+
const candidate = swarm.createdAt;
|
|
242
|
+
if (typeof candidate === "string")
|
|
243
|
+
return candidate;
|
|
244
|
+
if (typeof candidate === "number")
|
|
245
|
+
return new Date(candidate).toISOString();
|
|
246
|
+
// No createdAt → use endedAt instead of 1970-01-01 epoch zero (cosmetic fix).
|
|
247
|
+
return fallback;
|
|
248
|
+
}
|
|
249
|
+
function mapStatus(s) {
|
|
250
|
+
if (s === "completed")
|
|
251
|
+
return "completed";
|
|
252
|
+
if (s === "failed")
|
|
253
|
+
return "failed";
|
|
254
|
+
return "cancelled";
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=shipment-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipment-pipeline.js","sourceRoot":"","sources":["../../src/shipment/shipment-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface TransportDetectResult {
|
|
2
|
+
kind: "pr" | "diff-only" | "no-remote";
|
|
3
|
+
reason: string;
|
|
4
|
+
defaultBranch?: string;
|
|
5
|
+
remoteUrl?: string;
|
|
6
|
+
}
|
|
7
|
+
export type CommandRunner = (cmd: string, args: string[], cwd?: string) => Promise<{
|
|
8
|
+
exitCode: number;
|
|
9
|
+
stdout: string;
|
|
10
|
+
stderr: string;
|
|
11
|
+
}>;
|
|
12
|
+
export interface TransportDetectOptions {
|
|
13
|
+
runner?: CommandRunner;
|
|
14
|
+
}
|
|
15
|
+
export declare function detectTransport(cwd: string, opts?: TransportDetectOptions): Promise<TransportDetectResult>;
|
|
16
|
+
//# sourceMappingURL=transport-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-detect.d.ts","sourceRoot":"","sources":["../../src/shipment/transport-detect.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,MAAM,KACT,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAkBD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,qBAAqB,CAAC,CAkDhC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
const INSTALL_HINTS = "macOS: brew install gh | " +
|
|
3
|
+
"Linux: see https://github.com/cli/cli/blob/trunk/docs/install_linux.md | " +
|
|
4
|
+
"Windows: winget install --id GitHub.cli";
|
|
5
|
+
const defaultRunner = (cmd, args, cwd) => new Promise((resolve) => {
|
|
6
|
+
const child = spawn(cmd, args, { cwd, stdio: ["ignore", "pipe", "pipe"] });
|
|
7
|
+
let stdout = "";
|
|
8
|
+
let stderr = "";
|
|
9
|
+
child.stdout?.on("data", (c) => (stdout += c.toString("utf-8")));
|
|
10
|
+
child.stderr?.on("data", (c) => (stderr += c.toString("utf-8")));
|
|
11
|
+
child.on("error", (e) => resolve({ exitCode: -1, stdout, stderr: e.message }));
|
|
12
|
+
child.on("close", (code) => resolve({ exitCode: code ?? -1, stdout, stderr }));
|
|
13
|
+
});
|
|
14
|
+
export async function detectTransport(cwd, opts = {}) {
|
|
15
|
+
const run = opts.runner ?? defaultRunner;
|
|
16
|
+
// 1. Origin remote
|
|
17
|
+
const remote = await run("git", ["remote", "get-url", "origin"], cwd).catch(() => null);
|
|
18
|
+
if (!remote || remote.exitCode !== 0 || !remote.stdout.trim()) {
|
|
19
|
+
return { kind: "no-remote", reason: "no 'origin' remote configured" };
|
|
20
|
+
}
|
|
21
|
+
const remoteUrl = remote.stdout.trim();
|
|
22
|
+
// 2. gh CLI
|
|
23
|
+
const gh = await run("gh", ["--version"]).catch(() => null);
|
|
24
|
+
if (!gh || gh.exitCode !== 0) {
|
|
25
|
+
return {
|
|
26
|
+
kind: "diff-only",
|
|
27
|
+
reason: `gh CLI not installed; install with: ${INSTALL_HINTS}`,
|
|
28
|
+
remoteUrl,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// 3. Default branch
|
|
32
|
+
const symref = await run("git", ["symbolic-ref", "refs/remotes/origin/HEAD"], cwd).catch(() => null);
|
|
33
|
+
let defaultBranch = "main";
|
|
34
|
+
if (symref && symref.exitCode === 0 && symref.stdout.trim()) {
|
|
35
|
+
defaultBranch =
|
|
36
|
+
symref.stdout.trim().replace(/^refs\/remotes\/origin\//, "") || "main";
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Fresh clones often have origin/HEAD unset → symbolic-ref exits non-zero.
|
|
40
|
+
// Ask gh for the repo's declared default branch before falling back to "main"
|
|
41
|
+
// (which is wrong on legacy master repos and breaks PR creation).
|
|
42
|
+
const ghDefault = await run("gh", ["repo", "view", "--json", "defaultBranchRef", "-q", ".defaultBranchRef.name"], cwd).catch(() => null);
|
|
43
|
+
if (ghDefault && ghDefault.exitCode === 0 && ghDefault.stdout.trim()) {
|
|
44
|
+
defaultBranch = ghDefault.stdout.trim();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
kind: "pr",
|
|
49
|
+
reason: "remote + gh ok",
|
|
50
|
+
defaultBranch,
|
|
51
|
+
remoteUrl,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=transport-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-detect.js","sourceRoot":"","sources":["../../src/shipment/transport-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type DiffCommandRunner = (cmd: string, args: string[], cwd?: string) => Promise<{
|
|
2
|
+
exitCode: number;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
}>;
|
|
6
|
+
export interface WorkspaceDiffFile {
|
|
7
|
+
path: string;
|
|
8
|
+
added: number;
|
|
9
|
+
removed: number;
|
|
10
|
+
}
|
|
11
|
+
export interface WorkspaceDiff {
|
|
12
|
+
/** Human-readable `git diff --stat` body. Empty when no changes. */
|
|
13
|
+
stat: string;
|
|
14
|
+
/** Full unified diff (may be empty). */
|
|
15
|
+
patch: string;
|
|
16
|
+
/** Structured per-file additions/removals. */
|
|
17
|
+
files: WorkspaceDiffFile[];
|
|
18
|
+
/** Set when the underlying git command failed. */
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ComputeWorkspaceDiffInput {
|
|
22
|
+
/** Absolute path to the worktree. */
|
|
23
|
+
worktreeCwd: string;
|
|
24
|
+
/** Base commit (the commit the worktree was created from). */
|
|
25
|
+
baseCommit: string;
|
|
26
|
+
/** Optional injected runner (defaults to internal spawn-based git). */
|
|
27
|
+
runner?: DiffCommandRunner;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compute the diff of a worktree relative to its base commit. Includes both
|
|
31
|
+
* committed (HEAD vs baseCommit) and uncommitted (workdir + index vs HEAD)
|
|
32
|
+
* changes — `git diff <baseCommit>` covers both naturally.
|
|
33
|
+
*
|
|
34
|
+
* Returns an error result (not throws) on non-git dirs / git failures, so the
|
|
35
|
+
* caller (ShipmentPipeline) can gracefully fall back to a "skipped" outcome
|
|
36
|
+
* instead of aborting the swarm destroy flow.
|
|
37
|
+
*/
|
|
38
|
+
export declare function computeWorkspaceDiff(input: ComputeWorkspaceDiffInput): Promise<WorkspaceDiff>;
|
|
39
|
+
//# sourceMappingURL=workspace-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-diff.d.ts","sourceRoot":"","sources":["../../src/shipment/workspace-diff.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,CAAC,EAAE,MAAM,KACT,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAyCxB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { createLogger } from "@mclawnet/logger";
|
|
3
|
+
const log = createLogger({ module: "swarm/shipment/workspace-diff" });
|
|
4
|
+
/**
|
|
5
|
+
* Compute the diff of a worktree relative to its base commit. Includes both
|
|
6
|
+
* committed (HEAD vs baseCommit) and uncommitted (workdir + index vs HEAD)
|
|
7
|
+
* changes — `git diff <baseCommit>` covers both naturally.
|
|
8
|
+
*
|
|
9
|
+
* Returns an error result (not throws) on non-git dirs / git failures, so the
|
|
10
|
+
* caller (ShipmentPipeline) can gracefully fall back to a "skipped" outcome
|
|
11
|
+
* instead of aborting the swarm destroy flow.
|
|
12
|
+
*/
|
|
13
|
+
export async function computeWorkspaceDiff(input) {
|
|
14
|
+
const run = input.runner ?? ((cmd, args, cwd) => defaultSpawn(cmd, args, cwd));
|
|
15
|
+
const stat = await run("git", ["diff", "--stat", input.baseCommit], input.worktreeCwd).catch(() => null);
|
|
16
|
+
if (!stat || stat.exitCode !== 0) {
|
|
17
|
+
return {
|
|
18
|
+
stat: "",
|
|
19
|
+
patch: "",
|
|
20
|
+
files: [],
|
|
21
|
+
error: stat?.stderr || "git diff --stat failed",
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const patch = await run("git", ["diff", input.baseCommit], input.worktreeCwd).catch(() => null);
|
|
25
|
+
if (!patch || patch.exitCode !== 0) {
|
|
26
|
+
return {
|
|
27
|
+
stat: "",
|
|
28
|
+
patch: "",
|
|
29
|
+
files: [],
|
|
30
|
+
error: patch?.stderr || "git diff failed",
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const numstat = await run("git", ["diff", "--numstat", input.baseCommit], input.worktreeCwd).catch(() => null);
|
|
34
|
+
const files = [];
|
|
35
|
+
if (numstat && numstat.exitCode === 0) {
|
|
36
|
+
for (const line of numstat.stdout.split("\n")) {
|
|
37
|
+
if (!line.trim())
|
|
38
|
+
continue;
|
|
39
|
+
const parts = line.split("\t");
|
|
40
|
+
if (parts.length < 3)
|
|
41
|
+
continue;
|
|
42
|
+
const [a, r, ...rest] = parts;
|
|
43
|
+
const path = rest.join("\t");
|
|
44
|
+
// For binary files git emits "-" "-" — treat as 0/0
|
|
45
|
+
const added = a === "-" ? 0 : parseInt(a, 10) || 0;
|
|
46
|
+
const removed = r === "-" ? 0 : parseInt(r, 10) || 0;
|
|
47
|
+
files.push({ path, added, removed });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
log.debug({ worktreeCwd: input.worktreeCwd, baseCommit: input.baseCommit, fileCount: files.length }, "computeWorkspaceDiff ok");
|
|
51
|
+
return { stat: stat.stdout, patch: patch.stdout, files };
|
|
52
|
+
}
|
|
53
|
+
function defaultSpawn(cmd, args, cwd) {
|
|
54
|
+
return new Promise((resolve) => {
|
|
55
|
+
const child = spawn(cmd, args, { cwd, stdio: ["ignore", "pipe", "pipe"] });
|
|
56
|
+
let stdout = "";
|
|
57
|
+
let stderr = "";
|
|
58
|
+
child.stdout?.on("data", (c) => (stdout += c.toString("utf-8")));
|
|
59
|
+
child.stderr?.on("data", (c) => (stderr += c.toString("utf-8")));
|
|
60
|
+
child.on("error", (e) => resolve({ exitCode: -1, stdout, stderr: e.message }));
|
|
61
|
+
child.on("close", (code) => resolve({ exitCode: code ?? -1, stdout, stderr }));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=workspace-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-diff.js","sourceRoot":"","sources":["../../src/shipment/workspace-diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { InboxWatcher } from "./inbox-watcher.js";
|
|
|
4
4
|
import { TaskStore } from "@mclawnet/task";
|
|
5
5
|
import type { SwarmInstance, RoleInstance, SwarmCreateOptions, CustomRoleDefinition } from "./types.js";
|
|
6
6
|
import { type SandboxLevel } from "@mclawnet/shared";
|
|
7
|
+
import { WorkspaceManager } from "./workspace/index.js";
|
|
7
8
|
/**
|
|
8
9
|
* SwarmCoordinator — orchestrates multi-role Claude CLI swarms.
|
|
9
10
|
*
|
|
@@ -30,6 +31,14 @@ export declare class SwarmCoordinator {
|
|
|
30
31
|
* inline call sites still honour `CLAWNET_HOME` env var as before.
|
|
31
32
|
*/
|
|
32
33
|
private home?;
|
|
34
|
+
/**
|
|
35
|
+
* Optional WorkspaceManager (M6). Used to prepare an isolated workspace
|
|
36
|
+
* (git worktree or snapshot copy) per swarm on create(), and to dispose
|
|
37
|
+
* it on destroy(). When omitted, a default WorkspaceManager is created
|
|
38
|
+
* (git-worktree → snapshot-copy fallback). Workspace prepare is
|
|
39
|
+
* best-effort: if it fails the swarm continues using `workDir` as before.
|
|
40
|
+
*/
|
|
41
|
+
private workspaceManager;
|
|
33
42
|
private swarms;
|
|
34
43
|
readonly inboxRelay: InboxRelay;
|
|
35
44
|
readonly inboxWatcher: InboxWatcher;
|
|
@@ -61,7 +70,15 @@ export declare class SwarmCoordinator {
|
|
|
61
70
|
* `homedir()` and write files into the real `~/.clawnet`. When omitted,
|
|
62
71
|
* inline call sites still honour `CLAWNET_HOME` env var as before.
|
|
63
72
|
*/
|
|
64
|
-
home?: string | undefined
|
|
73
|
+
home?: string | undefined,
|
|
74
|
+
/**
|
|
75
|
+
* Optional WorkspaceManager (M6). Used to prepare an isolated workspace
|
|
76
|
+
* (git worktree or snapshot copy) per swarm on create(), and to dispose
|
|
77
|
+
* it on destroy(). When omitted, a default WorkspaceManager is created
|
|
78
|
+
* (git-worktree → snapshot-copy fallback). Workspace prepare is
|
|
79
|
+
* best-effort: if it fails the swarm continues using `workDir` as before.
|
|
80
|
+
*/
|
|
81
|
+
workspaceManager?: WorkspaceManager);
|
|
65
82
|
/** Resolve the user-home root used for InboxStore / TaskStore lookups. */
|
|
66
83
|
private resolveHome;
|
|
67
84
|
/**
|
|
@@ -144,6 +161,8 @@ export declare class SwarmCoordinator {
|
|
|
144
161
|
presetInstanceId?: string;
|
|
145
162
|
backendOverride?: "claude" | "codex";
|
|
146
163
|
sandboxOverride?: SandboxLevel;
|
|
164
|
+
modelOverride?: string;
|
|
165
|
+
modeOverride?: string;
|
|
147
166
|
isDynamicAdd?: boolean;
|
|
148
167
|
}): Promise<RoleInstance>;
|
|
149
168
|
/** Spawn a new role instance in a swarm (real implementation, serialized by spawnRole). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-coordinator.d.ts","sourceRoot":"","sources":["../src/swarm-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,SAAS,EAA+J,MAAM,gBAAgB,CAAC;AAMxM,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"swarm-coordinator.d.ts","sourceRoot":"","sources":["../src/swarm-coordinator.ts"],"names":[],"mappings":"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"}
|