@matteeh/osq 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +415 -72
- package/dist/cli/approve.d.ts +13 -3
- package/dist/cli/approve.d.ts.map +1 -1
- package/dist/cli/approve.js +59 -4
- package/dist/cli/approve.js.map +1 -1
- package/dist/cli/bin.js +0 -0
- package/dist/cli/confirm.d.ts +21 -0
- package/dist/cli/confirm.d.ts.map +1 -0
- package/dist/cli/confirm.js +28 -0
- package/dist/cli/confirm.js.map +1 -0
- package/dist/cli/doctor.d.ts +13 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +23 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/done.d.ts +12 -0
- package/dist/cli/done.d.ts.map +1 -0
- package/dist/cli/done.js +26 -0
- package/dist/cli/done.js.map +1 -0
- package/dist/cli/inbox.d.ts +22 -0
- package/dist/cli/inbox.d.ts.map +1 -0
- package/dist/cli/inbox.js +41 -0
- package/dist/cli/inbox.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +127 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +1 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +9 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/lint.d.ts +26 -0
- package/dist/cli/lint.d.ts.map +1 -0
- package/dist/cli/lint.js +60 -0
- package/dist/cli/lint.js.map +1 -0
- package/dist/cli/migrate.d.ts +18 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +42 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/new.js +1 -1
- package/dist/cli/new.js.map +1 -1
- package/dist/cli/plan-queue.d.ts +50 -0
- package/dist/cli/plan-queue.d.ts.map +1 -0
- package/dist/cli/plan-queue.js +167 -0
- package/dist/cli/plan-queue.js.map +1 -0
- package/dist/cli/plan.d.ts +35 -0
- package/dist/cli/plan.d.ts.map +1 -0
- package/dist/cli/plan.js +153 -0
- package/dist/cli/plan.js.map +1 -0
- package/dist/cli/queue.d.ts +9 -0
- package/dist/cli/queue.d.ts.map +1 -0
- package/dist/cli/queue.js +24 -0
- package/dist/cli/queue.js.map +1 -0
- package/dist/cli/reject.d.ts +8 -0
- package/dist/cli/reject.d.ts.map +1 -0
- package/dist/cli/reject.js +18 -0
- package/dist/cli/reject.js.map +1 -0
- package/dist/cli/report.d.ts +1 -1
- package/dist/cli/report.d.ts.map +1 -1
- package/dist/cli/report.js +141 -14
- package/dist/cli/report.js.map +1 -1
- package/dist/cli/retry.d.ts +7 -0
- package/dist/cli/retry.d.ts.map +1 -0
- package/dist/cli/retry.js +29 -0
- package/dist/cli/retry.js.map +1 -0
- package/dist/cli/serve.d.ts +30 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +136 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +7 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/show.d.ts +2 -1
- package/dist/cli/show.d.ts.map +1 -1
- package/dist/cli/show.js +20 -3
- package/dist/cli/show.js.map +1 -1
- package/dist/cli/status.d.ts +1 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +2 -2
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/watch.d.ts +9 -6
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +15 -2
- package/dist/cli/watch.js.map +1 -1
- package/dist/core/foundation/config-codex.d.ts +22 -0
- package/dist/core/foundation/config-codex.d.ts.map +1 -0
- package/dist/core/foundation/config-codex.js +58 -0
- package/dist/core/foundation/config-codex.js.map +1 -0
- package/dist/core/foundation/config-doctor.d.ts +14 -0
- package/dist/core/foundation/config-doctor.d.ts.map +1 -0
- package/dist/core/foundation/config-doctor.js +29 -0
- package/dist/core/foundation/config-doctor.js.map +1 -0
- package/dist/core/foundation/config-env.d.ts +3 -0
- package/dist/core/foundation/config-env.d.ts.map +1 -0
- package/dist/core/foundation/config-env.js +22 -0
- package/dist/core/foundation/config-env.js.map +1 -0
- package/dist/core/foundation/config-gates.d.ts +22 -0
- package/dist/core/foundation/config-gates.d.ts.map +1 -0
- package/dist/core/foundation/config-gates.js +43 -0
- package/dist/core/foundation/config-gates.js.map +1 -0
- package/dist/core/foundation/config-pi.d.ts +64 -0
- package/dist/core/foundation/config-pi.d.ts.map +1 -0
- package/dist/core/foundation/config-pi.js +131 -0
- package/dist/core/foundation/config-pi.js.map +1 -0
- package/dist/core/foundation/config-planning.d.ts +24 -0
- package/dist/core/foundation/config-planning.d.ts.map +1 -0
- package/dist/core/foundation/config-planning.js +60 -0
- package/dist/core/foundation/config-planning.js.map +1 -0
- package/dist/core/foundation/config-queue.d.ts +15 -0
- package/dist/core/foundation/config-queue.d.ts.map +1 -0
- package/dist/core/foundation/config-queue.js +24 -0
- package/dist/core/foundation/config-queue.js.map +1 -0
- package/dist/core/foundation/config-serve.d.ts +20 -0
- package/dist/core/foundation/config-serve.d.ts.map +1 -0
- package/dist/core/foundation/config-serve.js +35 -0
- package/dist/core/foundation/config-serve.js.map +1 -0
- package/dist/core/{config.d.ts → foundation/config.d.ts} +34 -3
- package/dist/core/foundation/config.d.ts.map +1 -0
- package/dist/core/{config.js → foundation/config.js} +35 -18
- package/dist/core/foundation/config.js.map +1 -0
- package/dist/core/foundation/doctor-managed.d.ts +13 -0
- package/dist/core/foundation/doctor-managed.d.ts.map +1 -0
- package/dist/core/foundation/doctor-managed.js +77 -0
- package/dist/core/foundation/doctor-managed.js.map +1 -0
- package/dist/core/foundation/doctor.d.ts +19 -0
- package/dist/core/foundation/doctor.d.ts.map +1 -0
- package/dist/core/foundation/doctor.js +187 -0
- package/dist/core/foundation/doctor.js.map +1 -0
- package/dist/core/foundation/harness-catalog.d.ts +96 -0
- package/dist/core/foundation/harness-catalog.d.ts.map +1 -0
- package/dist/core/foundation/harness-catalog.js +182 -0
- package/dist/core/foundation/harness-catalog.js.map +1 -0
- package/dist/core/foundation/init-blocks.d.ts +33 -0
- package/dist/core/foundation/init-blocks.d.ts.map +1 -0
- package/dist/core/foundation/init-blocks.js +165 -0
- package/dist/core/foundation/init-blocks.js.map +1 -0
- package/dist/core/foundation/init-managed.d.ts +10 -0
- package/dist/core/foundation/init-managed.d.ts.map +1 -0
- package/dist/core/foundation/init-managed.js +115 -0
- package/dist/core/foundation/init-managed.js.map +1 -0
- package/dist/core/foundation/init.d.ts +18 -0
- package/dist/core/foundation/init.d.ts.map +1 -0
- package/dist/core/foundation/init.js +113 -0
- package/dist/core/foundation/init.js.map +1 -0
- package/dist/core/{logger.d.ts → foundation/logger.d.ts} +1 -0
- package/dist/core/foundation/logger.d.ts.map +1 -0
- package/dist/core/{logger.js → foundation/logger.js} +18 -2
- package/dist/core/foundation/logger.js.map +1 -0
- package/dist/core/{new.d.ts → foundation/new.d.ts} +3 -0
- package/dist/core/foundation/new.d.ts.map +1 -0
- package/dist/core/foundation/new.js +206 -0
- package/dist/core/foundation/new.js.map +1 -0
- package/dist/core/foundation/package-root.d.ts +9 -0
- package/dist/core/foundation/package-root.d.ts.map +1 -0
- package/dist/core/foundation/package-root.js +11 -0
- package/dist/core/foundation/package-root.js.map +1 -0
- package/dist/core/lifecycle/done.d.ts +17 -0
- package/dist/core/lifecycle/done.d.ts.map +1 -0
- package/dist/core/lifecycle/done.js +97 -0
- package/dist/core/lifecycle/done.js.map +1 -0
- package/dist/core/lifecycle/reject.d.ts +26 -0
- package/dist/core/lifecycle/reject.d.ts.map +1 -0
- package/dist/core/lifecycle/reject.js +83 -0
- package/dist/core/lifecycle/reject.js.map +1 -0
- package/dist/core/lifecycle/retry-transition.d.ts +23 -0
- package/dist/core/lifecycle/retry-transition.d.ts.map +1 -0
- package/dist/core/lifecycle/retry-transition.js +41 -0
- package/dist/core/lifecycle/retry-transition.js.map +1 -0
- package/dist/core/lifecycle/retry.d.ts +18 -0
- package/dist/core/lifecycle/retry.d.ts.map +1 -0
- package/dist/core/lifecycle/retry.js +179 -0
- package/dist/core/lifecycle/retry.js.map +1 -0
- package/dist/core/report/approval-flags.d.ts +29 -0
- package/dist/core/report/approval-flags.d.ts.map +1 -0
- package/dist/core/report/approval-flags.js +138 -0
- package/dist/core/report/approval-flags.js.map +1 -0
- package/dist/core/report/planning-economics.d.ts +39 -0
- package/dist/core/report/planning-economics.d.ts.map +1 -0
- package/dist/core/report/planning-economics.js +168 -0
- package/dist/core/report/planning-economics.js.map +1 -0
- package/dist/core/report/planning-observed.d.ts +59 -0
- package/dist/core/report/planning-observed.d.ts.map +1 -0
- package/dist/core/report/planning-observed.js +135 -0
- package/dist/core/report/planning-observed.js.map +1 -0
- package/dist/core/report/planning-records.d.ts +69 -0
- package/dist/core/report/planning-records.d.ts.map +1 -0
- package/dist/core/report/planning-records.js +149 -0
- package/dist/core/report/planning-records.js.map +1 -0
- package/dist/core/report/planning-slice-lookup.d.ts +13 -0
- package/dist/core/report/planning-slice-lookup.d.ts.map +1 -0
- package/dist/core/report/planning-slice-lookup.js +146 -0
- package/dist/core/report/planning-slice-lookup.js.map +1 -0
- package/dist/core/report/planning-slice-measures.d.ts +17 -0
- package/dist/core/report/planning-slice-measures.d.ts.map +1 -0
- package/dist/core/report/planning-slice-measures.js +85 -0
- package/dist/core/report/planning-slice-measures.js.map +1 -0
- package/dist/core/report/planning-slice-record.d.ts +4 -0
- package/dist/core/report/planning-slice-record.d.ts.map +1 -0
- package/dist/core/report/planning-slice-record.js +66 -0
- package/dist/core/report/planning-slice-record.js.map +1 -0
- package/dist/core/report/planning-slice-turns.d.ts +13 -0
- package/dist/core/report/planning-slice-turns.d.ts.map +1 -0
- package/dist/core/report/planning-slice-turns.js +41 -0
- package/dist/core/report/planning-slice-turns.js.map +1 -0
- package/dist/core/report/planning-slice.d.ts +70 -0
- package/dist/core/report/planning-slice.d.ts.map +1 -0
- package/dist/core/report/planning-slice.js +147 -0
- package/dist/core/report/planning-slice.js.map +1 -0
- package/dist/core/report/planning.d.ts +31 -0
- package/dist/core/report/planning.d.ts.map +1 -0
- package/dist/core/report/planning.js +75 -0
- package/dist/core/report/planning.js.map +1 -0
- package/dist/core/report/report-events.d.ts +52 -0
- package/dist/core/report/report-events.d.ts.map +1 -0
- package/dist/core/report/report-events.js +198 -0
- package/dist/core/report/report-events.js.map +1 -0
- package/dist/core/report/report-pre-spawn.d.ts +25 -0
- package/dist/core/report/report-pre-spawn.d.ts.map +1 -0
- package/dist/core/report/report-pre-spawn.js +40 -0
- package/dist/core/report/report-pre-spawn.js.map +1 -0
- package/dist/core/report/report-retries.d.ts +30 -0
- package/dist/core/report/report-retries.d.ts.map +1 -0
- package/dist/core/report/report-retries.js +100 -0
- package/dist/core/report/report-retries.js.map +1 -0
- package/dist/core/report/report.d.ts +276 -0
- package/dist/core/report/report.d.ts.map +1 -0
- package/dist/core/report/report.js +1421 -0
- package/dist/core/report/report.js.map +1 -0
- package/dist/core/{lock.d.ts → run/lock.d.ts} +6 -0
- package/dist/core/run/lock.d.ts.map +1 -0
- package/dist/core/{lock.js → run/lock.js} +7 -15
- package/dist/core/run/lock.js.map +1 -0
- package/dist/core/run/manifest.d.ts +39 -0
- package/dist/core/run/manifest.d.ts.map +1 -0
- package/dist/core/run/manifest.js +137 -0
- package/dist/core/run/manifest.js.map +1 -0
- package/dist/core/run/scope-hash.d.ts +71 -0
- package/dist/core/run/scope-hash.d.ts.map +1 -0
- package/dist/core/run/scope-hash.js +177 -0
- package/dist/core/run/scope-hash.js.map +1 -0
- package/dist/core/run/scope.d.ts +30 -0
- package/dist/core/run/scope.d.ts.map +1 -0
- package/dist/core/run/scope.js +193 -0
- package/dist/core/run/scope.js.map +1 -0
- package/dist/core/run/summary.d.ts +8 -0
- package/dist/core/run/summary.d.ts.map +1 -0
- package/dist/core/run/summary.js +25 -0
- package/dist/core/run/summary.js.map +1 -0
- package/dist/core/run/verification.d.ts +23 -0
- package/dist/core/run/verification.d.ts.map +1 -0
- package/dist/core/run/verification.js +78 -0
- package/dist/core/run/verification.js.map +1 -0
- package/dist/core/spec/approve.d.ts +31 -0
- package/dist/core/spec/approve.d.ts.map +1 -0
- package/dist/core/spec/approve.js +111 -0
- package/dist/core/spec/approve.js.map +1 -0
- package/dist/core/spec/delta.d.ts +77 -0
- package/dist/core/spec/delta.d.ts.map +1 -0
- package/dist/core/spec/delta.js +581 -0
- package/dist/core/spec/delta.js.map +1 -0
- package/dist/core/spec/digest-flags.d.ts +21 -0
- package/dist/core/spec/digest-flags.d.ts.map +1 -0
- package/dist/core/spec/digest-flags.js +194 -0
- package/dist/core/spec/digest-flags.js.map +1 -0
- package/dist/core/spec/digest-verify-starts.d.ts +5 -0
- package/dist/core/spec/digest-verify-starts.d.ts.map +1 -0
- package/dist/core/spec/digest-verify-starts.js +31 -0
- package/dist/core/spec/digest-verify-starts.js.map +1 -0
- package/dist/core/spec/digest.d.ts +42 -0
- package/dist/core/spec/digest.d.ts.map +1 -0
- package/dist/core/spec/digest.js +170 -0
- package/dist/core/spec/digest.js.map +1 -0
- package/dist/core/spec/hasher.d.ts +11 -0
- package/dist/core/spec/hasher.d.ts.map +1 -0
- package/dist/core/{hasher.js → spec/hasher.js} +27 -3
- package/dist/core/spec/hasher.js.map +1 -0
- package/dist/core/spec/linter.d.ts +79 -0
- package/dist/core/spec/linter.d.ts.map +1 -0
- package/dist/core/spec/linter.js +826 -0
- package/dist/core/spec/linter.js.map +1 -0
- package/dist/core/spec/migrate.d.ts +54 -0
- package/dist/core/spec/migrate.d.ts.map +1 -0
- package/dist/core/spec/migrate.js +297 -0
- package/dist/core/spec/migrate.js.map +1 -0
- package/dist/core/spec/openspec-version.d.ts +30 -0
- package/dist/core/spec/openspec-version.d.ts.map +1 -0
- package/dist/core/spec/openspec-version.js +118 -0
- package/dist/core/spec/openspec-version.js.map +1 -0
- package/dist/core/spec/parser.d.ts +82 -0
- package/dist/core/spec/parser.d.ts.map +1 -0
- package/dist/core/spec/parser.js +221 -0
- package/dist/core/spec/parser.js.map +1 -0
- package/dist/core/spec/verify-paths.d.ts +18 -0
- package/dist/core/spec/verify-paths.d.ts.map +1 -0
- package/dist/core/spec/verify-paths.js +139 -0
- package/dist/core/spec/verify-paths.js.map +1 -0
- package/dist/core/spec/verify-starts.d.ts +45 -0
- package/dist/core/spec/verify-starts.d.ts.map +1 -0
- package/dist/core/spec/verify-starts.js +61 -0
- package/dist/core/spec/verify-starts.js.map +1 -0
- package/dist/core/status/inbox-cursor.d.ts +10 -0
- package/dist/core/status/inbox-cursor.d.ts.map +1 -0
- package/dist/core/status/inbox-cursor.js +33 -0
- package/dist/core/status/inbox-cursor.js.map +1 -0
- package/dist/core/status/inbox-projection.d.ts +15 -0
- package/dist/core/status/inbox-projection.d.ts.map +1 -0
- package/dist/core/status/inbox-projection.js +20 -0
- package/dist/core/status/inbox-projection.js.map +1 -0
- package/dist/core/status/inbox-text.d.ts +4 -0
- package/dist/core/status/inbox-text.d.ts.map +1 -0
- package/dist/core/status/inbox-text.js +48 -0
- package/dist/core/status/inbox-text.js.map +1 -0
- package/dist/core/status/inbox.d.ts +53 -0
- package/dist/core/status/inbox.d.ts.map +1 -0
- package/dist/core/status/inbox.js +167 -0
- package/dist/core/status/inbox.js.map +1 -0
- package/dist/core/status/layout.d.ts +29 -0
- package/dist/core/status/layout.d.ts.map +1 -0
- package/dist/core/status/layout.js +77 -0
- package/dist/core/status/layout.js.map +1 -0
- package/dist/core/status/queue-parser.d.ts +13 -0
- package/dist/core/status/queue-parser.d.ts.map +1 -0
- package/dist/core/status/queue-parser.js +88 -0
- package/dist/core/status/queue-parser.js.map +1 -0
- package/dist/core/status/queue-planning.d.ts +62 -0
- package/dist/core/status/queue-planning.d.ts.map +1 -0
- package/dist/core/status/queue-planning.js +158 -0
- package/dist/core/status/queue-planning.js.map +1 -0
- package/dist/core/status/queue-report-detail.d.ts +50 -0
- package/dist/core/status/queue-report-detail.d.ts.map +1 -0
- package/dist/core/status/queue-report-detail.js +140 -0
- package/dist/core/status/queue-report-detail.js.map +1 -0
- package/dist/core/status/queue-report.d.ts +14 -0
- package/dist/core/status/queue-report.d.ts.map +1 -0
- package/dist/core/status/queue-report.js +41 -0
- package/dist/core/status/queue-report.js.map +1 -0
- package/dist/core/status/queue-state.d.ts +53 -0
- package/dist/core/status/queue-state.d.ts.map +1 -0
- package/dist/core/status/queue-state.js +167 -0
- package/dist/core/status/queue-state.js.map +1 -0
- package/dist/core/status/queue.d.ts +7 -0
- package/dist/core/status/queue.d.ts.map +1 -0
- package/dist/core/status/queue.js +4 -0
- package/dist/core/status/queue.js.map +1 -0
- package/dist/core/status/show.d.ts +102 -0
- package/dist/core/status/show.d.ts.map +1 -0
- package/dist/core/status/show.js +704 -0
- package/dist/core/status/show.js.map +1 -0
- package/dist/core/status/state.d.ts +56 -0
- package/dist/core/status/state.d.ts.map +1 -0
- package/dist/core/status/state.js +187 -0
- package/dist/core/status/state.js.map +1 -0
- package/dist/core/status/status.d.ts +23 -0
- package/dist/core/status/status.d.ts.map +1 -0
- package/dist/core/status/status.js +173 -0
- package/dist/core/status/status.js.map +1 -0
- package/dist/core/web/web-data-change.d.ts +10 -0
- package/dist/core/web/web-data-change.d.ts.map +1 -0
- package/dist/core/web/web-data-change.js +106 -0
- package/dist/core/web/web-data-change.js.map +1 -0
- package/dist/core/web/web-data-folders.d.ts +39 -0
- package/dist/core/web/web-data-folders.d.ts.map +1 -0
- package/dist/core/web/web-data-folders.js +125 -0
- package/dist/core/web/web-data-folders.js.map +1 -0
- package/dist/core/web/web-data-graph.d.ts +8 -0
- package/dist/core/web/web-data-graph.d.ts.map +1 -0
- package/dist/core/web/web-data-graph.js +113 -0
- package/dist/core/web/web-data-graph.js.map +1 -0
- package/dist/core/web/web-data-lifecycle.d.ts +43 -0
- package/dist/core/web/web-data-lifecycle.d.ts.map +1 -0
- package/dist/core/web/web-data-lifecycle.js +141 -0
- package/dist/core/web/web-data-lifecycle.js.map +1 -0
- package/dist/core/web/web-data-observations.d.ts +30 -0
- package/dist/core/web/web-data-observations.d.ts.map +1 -0
- package/dist/core/web/web-data-observations.js +181 -0
- package/dist/core/web/web-data-observations.js.map +1 -0
- package/dist/core/web/web-data-tokens.d.ts +29 -0
- package/dist/core/web/web-data-tokens.d.ts.map +1 -0
- package/dist/core/web/web-data-tokens.js +62 -0
- package/dist/core/web/web-data-tokens.js.map +1 -0
- package/dist/core/web/web-data-types.d.ts +156 -0
- package/dist/core/web/web-data-types.d.ts.map +1 -0
- package/dist/core/web/web-data-types.js +15 -0
- package/dist/core/web/web-data-types.js.map +1 -0
- package/dist/core/web/web-data.d.ts +10 -0
- package/dist/core/web/web-data.d.ts.map +1 -0
- package/dist/core/web/web-data.js +8 -0
- package/dist/core/web/web-data.js.map +1 -0
- package/dist/core/web/web-events.d.ts +54 -0
- package/dist/core/web/web-events.d.ts.map +1 -0
- package/dist/core/web/web-events.js +162 -0
- package/dist/core/web/web-events.js.map +1 -0
- package/dist/core/web/web-export.d.ts +18 -0
- package/dist/core/web/web-export.d.ts.map +1 -0
- package/dist/core/web/web-export.js +112 -0
- package/dist/core/web/web-export.js.map +1 -0
- package/dist/core/web/web-server.d.ts +34 -0
- package/dist/core/web/web-server.d.ts.map +1 -0
- package/dist/core/web/web-server.js +182 -0
- package/dist/core/web/web-server.js.map +1 -0
- package/dist/core/web/web-static.d.ts +20 -0
- package/dist/core/web/web-static.d.ts.map +1 -0
- package/dist/core/web/web-static.js +104 -0
- package/dist/core/web/web-static.js.map +1 -0
- package/dist/harness/{agy.d.ts → agy/agy.d.ts} +8 -6
- package/dist/harness/agy/agy.d.ts.map +1 -0
- package/dist/harness/{agy.js → agy/agy.js} +49 -34
- package/dist/harness/agy/agy.js.map +1 -0
- package/dist/harness/claude/claude-turns.d.ts +29 -0
- package/dist/harness/claude/claude-turns.d.ts.map +1 -0
- package/dist/harness/claude/claude-turns.js +162 -0
- package/dist/harness/claude/claude-turns.js.map +1 -0
- package/dist/harness/claude/claude-usage.d.ts +12 -0
- package/dist/harness/claude/claude-usage.d.ts.map +1 -0
- package/dist/harness/claude/claude-usage.js +144 -0
- package/dist/harness/claude/claude-usage.js.map +1 -0
- package/dist/harness/codex/codex-observe-usage.d.ts +6 -0
- package/dist/harness/codex/codex-observe-usage.d.ts.map +1 -0
- package/dist/harness/codex/codex-observe-usage.js +215 -0
- package/dist/harness/codex/codex-observe-usage.js.map +1 -0
- package/dist/harness/codex/codex-prompt.d.ts +17 -0
- package/dist/harness/codex/codex-prompt.d.ts.map +1 -0
- package/dist/harness/codex/codex-prompt.js +43 -0
- package/dist/harness/codex/codex-prompt.js.map +1 -0
- package/dist/harness/codex/codex-stream.d.ts +23 -0
- package/dist/harness/codex/codex-stream.d.ts.map +1 -0
- package/dist/harness/codex/codex-stream.js +182 -0
- package/dist/harness/codex/codex-stream.js.map +1 -0
- package/dist/harness/codex/codex-usage.d.ts +26 -0
- package/dist/harness/codex/codex-usage.d.ts.map +1 -0
- package/dist/harness/codex/codex-usage.js +122 -0
- package/dist/harness/codex/codex-usage.js.map +1 -0
- package/dist/harness/codex/codex.d.ts +16 -0
- package/dist/harness/codex/codex.d.ts.map +1 -0
- package/dist/harness/codex/codex.js +92 -0
- package/dist/harness/codex/codex.js.map +1 -0
- package/dist/harness/index.d.ts +11 -2
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +24 -9
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/mock.d.ts +5 -2
- package/dist/harness/mock.d.ts.map +1 -1
- package/dist/harness/mock.js +10 -11
- package/dist/harness/mock.js.map +1 -1
- package/dist/harness/opencode/opencode-observe-usage.d.ts +4 -0
- package/dist/harness/opencode/opencode-observe-usage.d.ts.map +1 -0
- package/dist/harness/opencode/opencode-observe-usage.js +100 -0
- package/dist/harness/opencode/opencode-observe-usage.js.map +1 -0
- package/dist/harness/opencode/opencode-usage.d.ts +24 -0
- package/dist/harness/opencode/opencode-usage.d.ts.map +1 -0
- package/dist/harness/opencode/opencode-usage.js +181 -0
- package/dist/harness/opencode/opencode-usage.js.map +1 -0
- package/dist/harness/{opencode.d.ts → opencode/opencode.d.ts} +10 -7
- package/dist/harness/opencode/opencode.d.ts.map +1 -0
- package/dist/harness/{opencode.js → opencode/opencode.js} +159 -70
- package/dist/harness/opencode/opencode.js.map +1 -0
- package/dist/harness/pi/pi-args.d.ts +9 -0
- package/dist/harness/pi/pi-args.d.ts.map +1 -0
- package/dist/harness/pi/pi-args.js +33 -0
- package/dist/harness/pi/pi-args.js.map +1 -0
- package/dist/harness/pi/pi-stream.d.ts +27 -0
- package/dist/harness/pi/pi-stream.d.ts.map +1 -0
- package/dist/harness/pi/pi-stream.js +176 -0
- package/dist/harness/pi/pi-stream.js.map +1 -0
- package/dist/harness/pi/pi-tools.d.ts +5 -0
- package/dist/harness/pi/pi-tools.d.ts.map +1 -0
- package/dist/harness/pi/pi-tools.js +31 -0
- package/dist/harness/pi/pi-tools.js.map +1 -0
- package/dist/harness/pi/pi.d.ts +11 -0
- package/dist/harness/pi/pi.d.ts.map +1 -0
- package/dist/harness/pi/pi.js +109 -0
- package/dist/harness/pi/pi.js.map +1 -0
- package/dist/harness/prompt.d.ts +11 -0
- package/dist/harness/prompt.d.ts.map +1 -0
- package/dist/harness/prompt.js +105 -0
- package/dist/harness/prompt.js.map +1 -0
- package/dist/harness/types.d.ts +287 -8
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +125 -0
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/watcher/archive-verify.d.ts +9 -0
- package/dist/watcher/archive-verify.d.ts.map +1 -0
- package/dist/watcher/archive-verify.js +80 -0
- package/dist/watcher/archive-verify.js.map +1 -0
- package/dist/watcher/archiver.d.ts +14 -2
- package/dist/watcher/archiver.d.ts.map +1 -1
- package/dist/watcher/archiver.js +112 -33
- package/dist/watcher/archiver.js.map +1 -1
- package/dist/watcher/attempt.d.ts +19 -0
- package/dist/watcher/attempt.d.ts.map +1 -0
- package/dist/watcher/attempt.js +94 -0
- package/dist/watcher/attempt.js.map +1 -0
- package/dist/watcher/auto-retry.d.ts +11 -0
- package/dist/watcher/auto-retry.d.ts.map +1 -0
- package/dist/watcher/auto-retry.js +180 -0
- package/dist/watcher/auto-retry.js.map +1 -0
- package/dist/watcher/build.d.ts +24 -0
- package/dist/watcher/build.d.ts.map +1 -0
- package/dist/watcher/build.js +169 -0
- package/dist/watcher/build.js.map +1 -0
- package/dist/watcher/change-verify.d.ts +25 -0
- package/dist/watcher/change-verify.d.ts.map +1 -0
- package/dist/watcher/change-verify.js +57 -0
- package/dist/watcher/change-verify.js.map +1 -0
- package/dist/watcher/dev.d.ts +51 -0
- package/dist/watcher/dev.d.ts.map +1 -0
- package/dist/watcher/dev.js +124 -0
- package/dist/watcher/dev.js.map +1 -0
- package/dist/watcher/failure-reason.d.ts +7 -0
- package/dist/watcher/failure-reason.d.ts.map +1 -0
- package/dist/watcher/failure-reason.js +2 -0
- package/dist/watcher/failure-reason.js.map +1 -0
- package/dist/watcher/fingerprint.d.ts +19 -0
- package/dist/watcher/fingerprint.d.ts.map +1 -0
- package/dist/watcher/fingerprint.js +53 -0
- package/dist/watcher/fingerprint.js.map +1 -0
- package/dist/watcher/heartbeat.d.ts +33 -0
- package/dist/watcher/heartbeat.d.ts.map +1 -0
- package/dist/watcher/heartbeat.js +135 -0
- package/dist/watcher/heartbeat.js.map +1 -0
- package/dist/watcher/lock.d.ts +10 -0
- package/dist/watcher/lock.d.ts.map +1 -0
- package/dist/watcher/lock.js +14 -0
- package/dist/watcher/lock.js.map +1 -0
- package/dist/watcher/loop.d.ts +26 -6
- package/dist/watcher/loop.d.ts.map +1 -1
- package/dist/watcher/loop.js +154 -37
- package/dist/watcher/loop.js.map +1 -1
- package/dist/watcher/measures.d.ts +46 -0
- package/dist/watcher/measures.d.ts.map +1 -0
- package/dist/watcher/measures.js +203 -0
- package/dist/watcher/measures.js.map +1 -0
- package/dist/watcher/outcome.d.ts +32 -0
- package/dist/watcher/outcome.d.ts.map +1 -0
- package/dist/watcher/outcome.js +127 -0
- package/dist/watcher/outcome.js.map +1 -0
- package/dist/watcher/regression.d.ts +43 -0
- package/dist/watcher/regression.d.ts.map +1 -0
- package/dist/watcher/regression.js +175 -0
- package/dist/watcher/regression.js.map +1 -0
- package/dist/watcher/runner.d.ts +6 -68
- package/dist/watcher/runner.d.ts.map +1 -1
- package/dist/watcher/runner.js +74 -523
- package/dist/watcher/runner.js.map +1 -1
- package/dist/watcher/spawn.d.ts +48 -0
- package/dist/watcher/spawn.d.ts.map +1 -0
- package/dist/watcher/spawn.js +130 -0
- package/dist/watcher/spawn.js.map +1 -0
- package/dist/watcher/task-verify.d.ts +59 -0
- package/dist/watcher/task-verify.d.ts.map +1 -0
- package/dist/watcher/task-verify.js +108 -0
- package/dist/watcher/task-verify.js.map +1 -0
- package/dist/watcher/verify.d.ts +44 -0
- package/dist/watcher/verify.d.ts.map +1 -0
- package/dist/watcher/verify.js +156 -0
- package/dist/watcher/verify.js.map +1 -0
- package/package.json +21 -9
- package/templates/PLANNER.md +77 -0
- package/templates/openspec/config.yaml +24 -0
- package/templates/openspec/schemas/osq/README.md +30 -0
- package/templates/openspec/schemas/osq/schema.yaml +133 -0
- package/templates/openspec/schemas/osq/templates/proposal.md +66 -0
- package/templates/openspec/schemas/osq/templates/spec.md +13 -0
- package/templates/openspec/schemas/osq/templates/tasks.md +11 -0
- package/templates/proposal.md +66 -0
- package/templates/tasks.md +5 -0
- package/ui/dist/assets/index-CZYeQ8la.js +9 -0
- package/ui/dist/assets/index-D6zVSjO7.css +1 -0
- package/ui/dist/index.html +14 -0
- package/dist/core/approve.d.ts +0 -11
- package/dist/core/approve.d.ts.map +0 -1
- package/dist/core/approve.js +0 -52
- package/dist/core/approve.js.map +0 -1
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js.map +0 -1
- package/dist/core/hasher.d.ts +0 -4
- package/dist/core/hasher.d.ts.map +0 -1
- package/dist/core/hasher.js.map +0 -1
- package/dist/core/init.d.ts +0 -12
- package/dist/core/init.d.ts.map +0 -1
- package/dist/core/init.js +0 -151
- package/dist/core/init.js.map +0 -1
- package/dist/core/linter.d.ts +0 -8
- package/dist/core/linter.d.ts.map +0 -1
- package/dist/core/linter.js +0 -100
- package/dist/core/linter.js.map +0 -1
- package/dist/core/lock.d.ts.map +0 -1
- package/dist/core/lock.js.map +0 -1
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/new.d.ts.map +0 -1
- package/dist/core/new.js +0 -79
- package/dist/core/new.js.map +0 -1
- package/dist/core/parser.d.ts +0 -32
- package/dist/core/parser.d.ts.map +0 -1
- package/dist/core/parser.js +0 -87
- package/dist/core/parser.js.map +0 -1
- package/dist/core/report.d.ts +0 -54
- package/dist/core/report.d.ts.map +0 -1
- package/dist/core/report.js +0 -475
- package/dist/core/report.js.map +0 -1
- package/dist/core/show.d.ts +0 -50
- package/dist/core/show.d.ts.map +0 -1
- package/dist/core/show.js +0 -374
- package/dist/core/show.js.map +0 -1
- package/dist/core/state.d.ts +0 -25
- package/dist/core/state.d.ts.map +0 -1
- package/dist/core/state.js +0 -180
- package/dist/core/state.js.map +0 -1
- package/dist/core/status.d.ts +0 -10
- package/dist/core/status.d.ts.map +0 -1
- package/dist/core/status.js +0 -106
- package/dist/core/status.js.map +0 -1
- package/dist/harness/agy.d.ts.map +0 -1
- package/dist/harness/agy.js.map +0 -1
- package/dist/harness/opencode.d.ts.map +0 -1
- package/dist/harness/opencode.js.map +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { firstNonEmptyString } from '../stream.js';
|
|
3
|
+
const SUMMARY_MAX = 60;
|
|
4
|
+
/** Relativize an absolute path under the project root, leaving relative paths. */
|
|
5
|
+
export function toProjectRelative(target, projectRoot) {
|
|
6
|
+
return path.isAbsolute(target) ? path.relative(projectRoot, target) : target;
|
|
7
|
+
}
|
|
8
|
+
/** Short, human-readable tool summary following Pi's tool argument shapes. */
|
|
9
|
+
export function piToolSummary(toolName, args) {
|
|
10
|
+
const a = args ?? {};
|
|
11
|
+
let raw;
|
|
12
|
+
switch (toolName) {
|
|
13
|
+
case 'bash':
|
|
14
|
+
raw = firstNonEmptyString(a.command);
|
|
15
|
+
break;
|
|
16
|
+
case 'read':
|
|
17
|
+
case 'edit':
|
|
18
|
+
case 'write':
|
|
19
|
+
raw = firstNonEmptyString(a.path);
|
|
20
|
+
break;
|
|
21
|
+
case 'grep':
|
|
22
|
+
case 'find':
|
|
23
|
+
case 'ls':
|
|
24
|
+
raw = firstNonEmptyString(a.pattern, a.path);
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
raw = JSON.stringify(a);
|
|
28
|
+
}
|
|
29
|
+
return (raw ?? '').slice(0, SUMMARY_MAX);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=pi-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-tools.js","sourceRoot":"","sources":["../../../src/harness/pi/pi-tools.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,kFAAkF;AAClF,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,WAAmB;IACnE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/E,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAyC;IACvF,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,IAAI,GAAuB,CAAC;IAC5B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI;YACP,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM;QACR;YACE,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type OsqConfig } from '../../core/foundation/config.js';
|
|
2
|
+
import type { HarnessAdapter, SpawnResult, SpawnTaskOptions } from '../types.js';
|
|
3
|
+
/** Probe `pi --version`, warn outside the tested range, and check credentials. */
|
|
4
|
+
export declare function preflightPi(projectRoot: string, config: OsqConfig): Promise<void>;
|
|
5
|
+
export declare class PiAdapter implements HarnessAdapter {
|
|
6
|
+
readonly name = "pi";
|
|
7
|
+
setup(_projectRoot: string, _config: OsqConfig): Promise<void>;
|
|
8
|
+
preflight(projectRoot: string, config: OsqConfig): Promise<void>;
|
|
9
|
+
spawn(options: SpawnTaskOptions): Promise<SpawnResult>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=pi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../src/harness/pi/pi.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,iCAAiC,CAAC;AAG7E,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA2BjF,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF;AAED,qBAAa,SAAU,YAAW,cAAc;IAC9C,QAAQ,CAAC,IAAI,QAAQ;IAEf,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;CAqE7D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { assessPiVersion, resolvePiBinary, runPiAuthCheck, } from '../../core/foundation/config-pi.js';
|
|
2
|
+
import { loadConfig } from '../../core/foundation/config.js';
|
|
3
|
+
import { DEFAULT_KILL_GRACE_PERIOD_MS, spawnWithTimeout } from '../process.js';
|
|
4
|
+
import { EventStreamParser } from '../stream.js';
|
|
5
|
+
import { buildPiArgs } from './pi-args.js';
|
|
6
|
+
import { createPiStreamState, processPiStdoutLine } from './pi-stream.js';
|
|
7
|
+
const MISSING_KEY_MARKER = 'No API key found';
|
|
8
|
+
async function probePiVersion(bin, projectRoot, timeoutSeconds, killGracePeriodMs) {
|
|
9
|
+
const result = await spawnWithTimeout({
|
|
10
|
+
command: bin,
|
|
11
|
+
args: ['--version'],
|
|
12
|
+
cwd: projectRoot,
|
|
13
|
+
timeoutSeconds,
|
|
14
|
+
killGracePeriodMs,
|
|
15
|
+
});
|
|
16
|
+
if (result.exitCode !== 0)
|
|
17
|
+
return undefined;
|
|
18
|
+
return (result.stdout || result.stderr).trim().split('\n')[0]?.trim();
|
|
19
|
+
}
|
|
20
|
+
function missingCredentialsHint(provider) {
|
|
21
|
+
return `Pi credentials are missing. Run: pi auth check --provider ${provider ?? 'default'}`;
|
|
22
|
+
}
|
|
23
|
+
/** Probe `pi --version`, warn outside the tested range, and check credentials. */
|
|
24
|
+
export async function preflightPi(projectRoot, config) {
|
|
25
|
+
const bin = resolvePiBinary(config);
|
|
26
|
+
const timeoutSeconds = config.timeouts?.harnessPreflightSeconds ?? 10;
|
|
27
|
+
const version = await probePiVersion(bin, projectRoot, timeoutSeconds, config.timeouts?.harnessKillGracePeriodMs);
|
|
28
|
+
if (version === undefined) {
|
|
29
|
+
throw new Error(`Pi binary not found or failed: ${bin}`);
|
|
30
|
+
}
|
|
31
|
+
const assessment = assessPiVersion(version);
|
|
32
|
+
if (!assessment.tested) {
|
|
33
|
+
console.warn(assessment.warning ?? `Pi ${version} is outside the tested range`);
|
|
34
|
+
}
|
|
35
|
+
const provider = config.pi?.provider?.trim();
|
|
36
|
+
if (!provider)
|
|
37
|
+
return;
|
|
38
|
+
const auth = await runPiAuthCheck(bin, projectRoot, provider, timeoutSeconds);
|
|
39
|
+
if (!auth.ok) {
|
|
40
|
+
throw new Error(`Pi credentials not ready for provider ${provider}: ${auth.reason ?? auth.status}. ` +
|
|
41
|
+
`Run: pi auth check --provider ${provider}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class PiAdapter {
|
|
45
|
+
name = 'pi';
|
|
46
|
+
async setup(_projectRoot, _config) {
|
|
47
|
+
// Pi reads AGENTS.md itself; osq writes no Pi files.
|
|
48
|
+
}
|
|
49
|
+
async preflight(projectRoot, config) {
|
|
50
|
+
await preflightPi(projectRoot, config);
|
|
51
|
+
}
|
|
52
|
+
async spawn(options) {
|
|
53
|
+
const { projectRoot, specFolderPath, taskNumber } = options;
|
|
54
|
+
const resolved = options.config ?? (await loadConfig(projectRoot).catch(() => undefined));
|
|
55
|
+
const bin = resolvePiBinary(resolved);
|
|
56
|
+
const args = buildPiArgs(options, resolved);
|
|
57
|
+
const state = createPiStreamState();
|
|
58
|
+
const parser = new EventStreamParser((line) => processPiStdoutLine(line, { specFolderPath, taskNumber, projectRoot, logger: options.logger }, state));
|
|
59
|
+
const killGraceMs = resolved?.timeouts?.harnessKillGracePeriodMs ?? DEFAULT_KILL_GRACE_PERIOD_MS;
|
|
60
|
+
const version = await probePiVersion(bin, projectRoot, resolved?.timeouts?.harnessPreflightSeconds ?? 10, resolved?.timeouts?.harnessKillGracePeriodMs);
|
|
61
|
+
let pid;
|
|
62
|
+
let finished = false;
|
|
63
|
+
let graceTimer;
|
|
64
|
+
state.onSettled = () => {
|
|
65
|
+
if (graceTimer)
|
|
66
|
+
return;
|
|
67
|
+
graceTimer = setTimeout(() => {
|
|
68
|
+
if (!finished && pid !== undefined) {
|
|
69
|
+
try {
|
|
70
|
+
process.kill(pid, 'SIGTERM');
|
|
71
|
+
}
|
|
72
|
+
catch { }
|
|
73
|
+
}
|
|
74
|
+
}, killGraceMs);
|
|
75
|
+
};
|
|
76
|
+
const result = await spawnWithTimeout({
|
|
77
|
+
command: bin,
|
|
78
|
+
args,
|
|
79
|
+
cwd: projectRoot,
|
|
80
|
+
env: { ...process.env, OSQ_TASK_NUMBER: taskNumber, OSQ_SPEC_FOLDER: specFolderPath },
|
|
81
|
+
timeoutSeconds: options.timeoutSeconds ?? resolved?.timeouts?.taskTimeoutSeconds ?? 1800,
|
|
82
|
+
killGracePeriodMs: resolved?.timeouts?.harnessKillGracePeriodMs,
|
|
83
|
+
onStdout: (chunk) => parser.feed(chunk),
|
|
84
|
+
onSpawn: (childPid) => {
|
|
85
|
+
pid = childPid;
|
|
86
|
+
options.onSpawn?.(childPid, version ? { harnessVersion: version } : undefined);
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
finished = true;
|
|
90
|
+
if (graceTimer)
|
|
91
|
+
clearTimeout(graceTimer);
|
|
92
|
+
await parser.flush();
|
|
93
|
+
const settled = state.settled;
|
|
94
|
+
const failed = !settled && result.exitCode !== 0;
|
|
95
|
+
const missingKey = failed && result.stderr.includes(MISSING_KEY_MARKER);
|
|
96
|
+
const error = missingKey
|
|
97
|
+
? `${result.stderr.trim()}\n${missingCredentialsHint(resolved?.pi?.provider)}`
|
|
98
|
+
: result.error;
|
|
99
|
+
return {
|
|
100
|
+
exitCode: settled ? 0 : result.exitCode,
|
|
101
|
+
timedOut: settled ? false : result.timedOut,
|
|
102
|
+
signal: result.signal,
|
|
103
|
+
error: settled ? undefined : error,
|
|
104
|
+
pid: result.pid,
|
|
105
|
+
elapsedMs: result.elapsedMs,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=pi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/harness/pi/pi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type SpawnTaskOptions } from './types.js';
|
|
2
|
+
/** Delta spec paths written by the change, in deterministic capability order. */
|
|
3
|
+
export declare function deltaSpecPaths(options: SpawnTaskOptions): string[];
|
|
4
|
+
/**
|
|
5
|
+
* Living capability specs referenced by the parent change: the reads declared by
|
|
6
|
+
* the proposal plus the capabilities written by the change's delta specs.
|
|
7
|
+
*/
|
|
8
|
+
export declare function livingSpecPaths(options: SpawnTaskOptions): string[];
|
|
9
|
+
/** Full one-attempt executor prompt naming every file the task needs. */
|
|
10
|
+
export declare function buildExecutorPrompt(options: SpawnTaskOptions): string;
|
|
11
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/harness/prompt.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,YAAY,CAAC;AAEpB,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAclE;AAoBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAkBnE;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAyCrE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import fsSync from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { EXECUTOR_EXIT_LINES, EXECUTOR_STEPS } from '../core/foundation/init-blocks.js';
|
|
4
|
+
import { parseSpecMd } from '../core/spec/parser.js';
|
|
5
|
+
import { capabilityRuleLines, priorContextLines, resolveCapabilityRules, } from './types.js';
|
|
6
|
+
/** Delta spec paths written by the change, in deterministic capability order. */
|
|
7
|
+
export function deltaSpecPaths(options) {
|
|
8
|
+
const { projectRoot, specFolderPath } = options;
|
|
9
|
+
const dir = path.join(specFolderPath, 'specs');
|
|
10
|
+
let entries;
|
|
11
|
+
try {
|
|
12
|
+
entries = fsSync.readdirSync(dir, { withFileTypes: true });
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
return entries
|
|
18
|
+
.filter((entry) => entry.isDirectory())
|
|
19
|
+
.map((entry) => entry.name)
|
|
20
|
+
.sort()
|
|
21
|
+
.map((name) => path.relative(projectRoot, path.join(dir, name, 'spec.md')));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Reads the `features.reads` names from `proposal.md`. A missing or malformed
|
|
25
|
+
* proposal contributes no reads, exactly as the previous async loader did.
|
|
26
|
+
*/
|
|
27
|
+
function proposalReads(specFolderPath) {
|
|
28
|
+
let content;
|
|
29
|
+
try {
|
|
30
|
+
content = fsSync.readFileSync(path.join(specFolderPath, 'proposal.md'), 'utf8');
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return [];
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return parseSpecMd(content).features.reads;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Living capability specs referenced by the parent change: the reads declared by
|
|
44
|
+
* the proposal plus the capabilities written by the change's delta specs.
|
|
45
|
+
*/
|
|
46
|
+
export function livingSpecPaths(options) {
|
|
47
|
+
const { projectRoot, specFolderPath, config } = options;
|
|
48
|
+
const names = new Set();
|
|
49
|
+
for (const name of proposalReads(specFolderPath)) {
|
|
50
|
+
if (name.trim())
|
|
51
|
+
names.add(name.trim());
|
|
52
|
+
}
|
|
53
|
+
for (const delta of deltaSpecPaths(options)) {
|
|
54
|
+
const parts = delta.split(path.sep);
|
|
55
|
+
if (parts.length >= 2)
|
|
56
|
+
names.add(parts[parts.length - 2]);
|
|
57
|
+
}
|
|
58
|
+
const featuresDir = config?.paths?.features || 'openspec/specs';
|
|
59
|
+
const paths = [];
|
|
60
|
+
for (const name of [...names].sort()) {
|
|
61
|
+
const relative = path.join(featuresDir, name, 'spec.md');
|
|
62
|
+
if (fsSync.existsSync(path.resolve(projectRoot, relative)))
|
|
63
|
+
paths.push(relative);
|
|
64
|
+
}
|
|
65
|
+
return paths;
|
|
66
|
+
}
|
|
67
|
+
/** Full one-attempt executor prompt naming every file the task needs. */
|
|
68
|
+
export function buildExecutorPrompt(options) {
|
|
69
|
+
const { projectRoot, specFolderPath, taskNumber, taskTitle, scope, entry, verifyCommand } = options;
|
|
70
|
+
const taskRel = path.relative(projectRoot, path.resolve(specFolderPath, 'tasks', `${taskNumber}.md`));
|
|
71
|
+
const specRel = path.relative(projectRoot, path.resolve(specFolderPath, 'proposal.md'));
|
|
72
|
+
const resultAbs = path.resolve(specFolderPath, '.run', 'results', `${taskNumber}.md`);
|
|
73
|
+
const resultRel = path.relative(projectRoot, resultAbs);
|
|
74
|
+
const priorResult = fsSync.existsSync(resultAbs) ? resultRel : undefined;
|
|
75
|
+
const deltas = deltaSpecPaths(options);
|
|
76
|
+
const living = livingSpecPaths(options);
|
|
77
|
+
return [
|
|
78
|
+
'You are a coding agent working autonomously on an osq task. Follow AGENTS.md strictly.',
|
|
79
|
+
`Task File: ${taskRel}`,
|
|
80
|
+
`Parent Spec: ${specRel}`,
|
|
81
|
+
`Task Title: ${taskTitle}`,
|
|
82
|
+
`Scope: ${scope.join(', ')}`,
|
|
83
|
+
`Entry: ${entry.join(', ')}`,
|
|
84
|
+
`Verify Command: ${verifyCommand}`,
|
|
85
|
+
`Result Destination: ${resultRel}`,
|
|
86
|
+
...priorContextLines({
|
|
87
|
+
attempt: options.attempt,
|
|
88
|
+
reason: options.priorFailureReason,
|
|
89
|
+
output: options.priorFailureOutput,
|
|
90
|
+
resultPath: priorResult,
|
|
91
|
+
}),
|
|
92
|
+
...(deltas.length > 0 ? ['', 'Delta Specs:', ...deltas.map((p) => `- ${p}`)] : []),
|
|
93
|
+
...(living.length > 0 ? ['', 'Living Capability Specs:', ...living.map((p) => `- ${p}`)] : []),
|
|
94
|
+
'',
|
|
95
|
+
'Rules:',
|
|
96
|
+
...EXECUTOR_STEPS,
|
|
97
|
+
...capabilityRuleLines(resolveCapabilityRules(options)),
|
|
98
|
+
'',
|
|
99
|
+
'Exiting:',
|
|
100
|
+
...EXECUTOR_EXIT_LINES,
|
|
101
|
+
'',
|
|
102
|
+
`CRITICAL: Before exiting, you MUST write ${resultRel} as the Exiting rules above describe. Change no file outside Scope except that result file.`,
|
|
103
|
+
].join('\n');
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/harness/prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/types.d.ts
CHANGED
|
@@ -1,6 +1,38 @@
|
|
|
1
|
-
import type { OsqConfig } from '../core/config.js';
|
|
2
|
-
import type { Logger } from '../core/logger.js';
|
|
3
|
-
|
|
1
|
+
import type { OsqConfig } from '../core/foundation/config.js';
|
|
2
|
+
import type { Logger } from '../core/foundation/logger.js';
|
|
3
|
+
import type { ScopePathAttribution } from '../core/run/scope-hash.js';
|
|
4
|
+
import type { SCOPE_RESOLVER_VERSION } from '../core/run/scope.js';
|
|
5
|
+
export type { ScopePathAttribution } from '../core/run/scope-hash.js';
|
|
6
|
+
export type HarnessEventType = 'started' | 'tokens' | 'tool' | 'text' | 'file_changed' | 'verify_ran' | 'result_written' | 'exited' | 'measures' | 'done' | 'done_manual' | 'dead' | 'regressed' | 'retry' | 'stuck' | 'harness_retry' | 'recertification' | 'rejected';
|
|
7
|
+
/** Payload of the lifecycle `started` event emitted by the runner. */
|
|
8
|
+
export interface StartedEventData {
|
|
9
|
+
harness: string;
|
|
10
|
+
model: string;
|
|
11
|
+
osqVersion: string;
|
|
12
|
+
/** Target-wide execution attempt; initial execution is 1. */
|
|
13
|
+
attempt: number;
|
|
14
|
+
commit?: string;
|
|
15
|
+
pid?: number;
|
|
16
|
+
timeoutSeconds: number;
|
|
17
|
+
version?: string;
|
|
18
|
+
/** First line of the harness binary's `--version`, when the adapter supplies it. */
|
|
19
|
+
harnessVersion?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Legacy `started` payloads emitted by adapters before the runner owned it. */
|
|
22
|
+
export type StartedEventPayload = StartedEventData | Record<string, unknown>;
|
|
23
|
+
/** Payload of a `tokens` event accumulated from the agent stream. */
|
|
24
|
+
export interface TokensEventData {
|
|
25
|
+
promptTokens: number;
|
|
26
|
+
candidateTokens: number;
|
|
27
|
+
totalTokens?: number;
|
|
28
|
+
cachedTokens?: number;
|
|
29
|
+
reasoningTokens?: number;
|
|
30
|
+
cost?: number;
|
|
31
|
+
/** Provider Pi reported for the response, when it reported one. */
|
|
32
|
+
provider?: string;
|
|
33
|
+
/** Model Pi reported for the response, when it reported one. */
|
|
34
|
+
model?: string;
|
|
35
|
+
}
|
|
4
36
|
export interface ToolEventData {
|
|
5
37
|
tool: string;
|
|
6
38
|
summary: string;
|
|
@@ -8,17 +40,191 @@ export interface ToolEventData {
|
|
|
8
40
|
export interface TextEventData {
|
|
9
41
|
readonly text: string;
|
|
10
42
|
}
|
|
43
|
+
export interface FileChangedEventData {
|
|
44
|
+
path: string;
|
|
45
|
+
}
|
|
46
|
+
export interface VerifyRanEventData {
|
|
47
|
+
command: string;
|
|
48
|
+
exitCode: number;
|
|
49
|
+
duration: number;
|
|
50
|
+
/** Legacy field name retained so older emitted lines still type-check. */
|
|
51
|
+
verifyCommand?: string;
|
|
52
|
+
output?: string;
|
|
53
|
+
/** Present only on pre-spawn runs: the declared start state and verdict. */
|
|
54
|
+
phase?: 'pre_spawn';
|
|
55
|
+
expected?: 'red' | 'green' | 'any';
|
|
56
|
+
mismatch?: boolean;
|
|
57
|
+
/** Present only when a named path is absent before spawn, in command order. */
|
|
58
|
+
missingPaths?: string[];
|
|
59
|
+
}
|
|
60
|
+
export interface ResultWrittenEventData {
|
|
61
|
+
path: string;
|
|
62
|
+
synthesized?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface ExitedEventData {
|
|
65
|
+
exitCode: number;
|
|
66
|
+
pid?: number;
|
|
67
|
+
signal?: string;
|
|
68
|
+
timedOut?: boolean;
|
|
69
|
+
elapsedSeconds?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Raw measures captured at task start and end. Values are stored as observed;
|
|
73
|
+
* no rates or aggregates are derived here.
|
|
74
|
+
*/
|
|
75
|
+
export interface MeasuresEventData {
|
|
76
|
+
phase: 'start' | 'end';
|
|
77
|
+
/** Deterministic scope resolver version that produced the scope-derived fields. */
|
|
78
|
+
scopeResolver: typeof SCOPE_RESOLVER_VERSION;
|
|
79
|
+
scopeFiles: number;
|
|
80
|
+
scopeLines: number;
|
|
81
|
+
repoFiles: number;
|
|
82
|
+
repoLines: number;
|
|
83
|
+
importFanIn: number;
|
|
84
|
+
proposalWords: number;
|
|
85
|
+
taskWords: number;
|
|
86
|
+
deltaRequirements: number;
|
|
87
|
+
deltaScenarios: number;
|
|
88
|
+
changedFiles?: number;
|
|
89
|
+
changedLines?: number;
|
|
90
|
+
scopeHashes?: Record<string, {
|
|
91
|
+
before: string | null;
|
|
92
|
+
after: string | null;
|
|
93
|
+
}>;
|
|
94
|
+
}
|
|
11
95
|
export interface DoneEventData {
|
|
12
96
|
readonly task: string;
|
|
13
97
|
}
|
|
98
|
+
export interface DoneManualEventData {
|
|
99
|
+
readonly task: string;
|
|
100
|
+
readonly reason: string;
|
|
101
|
+
}
|
|
14
102
|
export interface DeadEventData {
|
|
15
103
|
readonly task: string;
|
|
16
104
|
readonly reason: string;
|
|
17
105
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
106
|
+
/** Payload of a `regressed` event recording a scope or verification regression. */
|
|
107
|
+
export interface RegressedEventData {
|
|
108
|
+
task?: string;
|
|
109
|
+
exitCode?: number;
|
|
110
|
+
duration?: number;
|
|
111
|
+
command?: string;
|
|
112
|
+
differingPaths?: string[];
|
|
113
|
+
/** Paths a verify named that did not exist; set on `verify_path_missing` regressions. */
|
|
114
|
+
missingPaths?: string[];
|
|
115
|
+
reason?: string;
|
|
116
|
+
/** Structured per-path attribution detected by the scope recertification audit. */
|
|
117
|
+
attribution?: ScopePathAttribution[];
|
|
118
|
+
recordedHash?: string;
|
|
119
|
+
currentHash?: string;
|
|
120
|
+
/** Recorded resolver version (null when legacy or malformed) and current version. */
|
|
121
|
+
recordedResolver?: number | null;
|
|
122
|
+
currentResolver?: number;
|
|
123
|
+
output?: string;
|
|
124
|
+
timedOut?: boolean;
|
|
125
|
+
verificationPassed?: boolean;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Payload of a `retry` event recording an explicit retry transition. `attempt`
|
|
129
|
+
* is the following execution attempt, so the next `started` event for the
|
|
130
|
+
* target carries the same number.
|
|
131
|
+
*/
|
|
132
|
+
export interface RetryEventData {
|
|
133
|
+
readonly target: string;
|
|
134
|
+
readonly reason: string;
|
|
135
|
+
readonly attempt: number;
|
|
136
|
+
/** True only when the watcher, rather than a human, requested the retry. */
|
|
137
|
+
readonly automatic?: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Payload of a `stuck` event: the watcher observed the same failure twice and
|
|
141
|
+
* stopped retrying the task automatically.
|
|
142
|
+
*/
|
|
143
|
+
export interface StuckEventData {
|
|
144
|
+
readonly task: string;
|
|
145
|
+
readonly fingerprint: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Payload of a `harness_retry` event translated from a harness's own automatic
|
|
149
|
+
* retry records (Pi's `auto_retry_start` and `auto_retry_end`).
|
|
150
|
+
*/
|
|
151
|
+
export interface HarnessRetryEventData {
|
|
152
|
+
readonly phase: 'start' | 'end';
|
|
153
|
+
readonly attempt: number;
|
|
154
|
+
readonly maxAttempts?: number;
|
|
155
|
+
readonly delayMs?: number;
|
|
156
|
+
readonly success?: boolean;
|
|
157
|
+
readonly error?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Payload of a `recertification` event recording a human retry of an active
|
|
161
|
+
* scope regression. `passed` refreshes the trusted done record without an agent
|
|
162
|
+
* or execution attempt; `requeued` retains both markers and carries the next
|
|
163
|
+
* attempt and failed output so a restarted watcher can rebuild the executor
|
|
164
|
+
* context from append-only state alone.
|
|
165
|
+
*/
|
|
166
|
+
export interface RecertificationEventData {
|
|
167
|
+
readonly task: string;
|
|
168
|
+
readonly outcome: 'passed' | 'requeued';
|
|
169
|
+
readonly differingPaths: string[];
|
|
170
|
+
readonly attribution: ScopePathAttribution[];
|
|
171
|
+
readonly command: string;
|
|
172
|
+
readonly exitCode: number;
|
|
173
|
+
readonly output: string;
|
|
174
|
+
readonly timedOut: boolean;
|
|
175
|
+
/** Recorded hash before the change, or the original trusted hash. */
|
|
176
|
+
readonly recordedHash: string;
|
|
177
|
+
readonly currentHash: string;
|
|
178
|
+
/** Next execution attempt; present only for a requeue. */
|
|
179
|
+
readonly attempt?: number;
|
|
180
|
+
/** Failure reason carried to the next executor; present only for a requeue. */
|
|
181
|
+
readonly reason?: string;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Payload of a `rejected` event recording a change moved into rejected history.
|
|
185
|
+
* The event's top-level timestamp is the authoritative rejection time; the data
|
|
186
|
+
* carries the same non-empty reason persisted to `.run/rejected.md`.
|
|
187
|
+
*/
|
|
188
|
+
export interface RejectedEventData {
|
|
189
|
+
readonly reason: string;
|
|
190
|
+
}
|
|
191
|
+
/** Event type to payload mapping for every lifecycle and observed event. */
|
|
192
|
+
export interface OsqEventData {
|
|
193
|
+
started: StartedEventPayload;
|
|
194
|
+
tokens: TokensEventData;
|
|
195
|
+
tool: ToolEventData;
|
|
196
|
+
text: TextEventData;
|
|
197
|
+
file_changed: FileChangedEventData;
|
|
198
|
+
verify_ran: VerifyRanEventData;
|
|
199
|
+
result_written: ResultWrittenEventData;
|
|
200
|
+
exited: ExitedEventData;
|
|
201
|
+
measures: MeasuresEventData;
|
|
202
|
+
done: DoneEventData;
|
|
203
|
+
done_manual: DoneManualEventData;
|
|
204
|
+
dead: DeadEventData;
|
|
205
|
+
regressed: RegressedEventData;
|
|
206
|
+
retry: RetryEventData;
|
|
207
|
+
stuck: StuckEventData;
|
|
208
|
+
harness_retry: HarnessRetryEventData;
|
|
209
|
+
recertification: RecertificationEventData;
|
|
210
|
+
rejected: RejectedEventData;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Typed discriminated union over `type` with per-event payloads. Every event
|
|
214
|
+
* written to `.run/events/<n>.jsonl` must conform to one of these members.
|
|
215
|
+
*/
|
|
216
|
+
export type OsqEvent = {
|
|
217
|
+
[K in HarnessEventType]: {
|
|
218
|
+
type: K;
|
|
219
|
+
timestamp: string;
|
|
220
|
+
data: OsqEventData[K];
|
|
221
|
+
};
|
|
222
|
+
}[HarnessEventType];
|
|
223
|
+
/** Backwards-compatible alias for {@link OsqEvent}. */
|
|
224
|
+
export type HarnessEvent = OsqEvent;
|
|
225
|
+
/** Optional attribution an adapter can add when the child process exists. */
|
|
226
|
+
export interface SpawnDetails {
|
|
227
|
+
readonly harnessVersion?: string;
|
|
22
228
|
}
|
|
23
229
|
export interface SpawnTaskOptions {
|
|
24
230
|
projectRoot: string;
|
|
@@ -33,7 +239,14 @@ export interface SpawnTaskOptions {
|
|
|
33
239
|
timeoutSeconds?: number;
|
|
34
240
|
config?: OsqConfig;
|
|
35
241
|
logger?: Logger;
|
|
36
|
-
onSpawn?: (pid: number) => Promise<void> | void;
|
|
242
|
+
onSpawn?: (pid: number, details?: SpawnDetails) => Promise<void> | void;
|
|
243
|
+
capabilityRules?: string[];
|
|
244
|
+
/** Target-wide execution attempt; initial execution is 1, post-retry is 2+. */
|
|
245
|
+
attempt?: number;
|
|
246
|
+
/** Failure reason carried from the preceding retry transition, when any. */
|
|
247
|
+
priorFailureReason?: string;
|
|
248
|
+
/** Failed verification output carried from a requeued recertification, when any. */
|
|
249
|
+
priorFailureOutput?: string;
|
|
37
250
|
}
|
|
38
251
|
export interface SpawnResult {
|
|
39
252
|
exitCode: number;
|
|
@@ -43,11 +256,77 @@ export interface SpawnResult {
|
|
|
43
256
|
pid?: number;
|
|
44
257
|
elapsedMs?: number;
|
|
45
258
|
}
|
|
259
|
+
export interface InteractiveSessionOptions {
|
|
260
|
+
prompt: string;
|
|
261
|
+
cwd: string;
|
|
262
|
+
model?: string;
|
|
263
|
+
agent?: string;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Observed-only usage for one interactive planning session. Every field is
|
|
267
|
+
* independently nullable: missing artifacts, malformed data, ambiguous matches,
|
|
268
|
+
* or absent harness support yield `null` rather than an estimate.
|
|
269
|
+
*/
|
|
270
|
+
export interface InteractiveUsage {
|
|
271
|
+
readonly inputTokens: number | null;
|
|
272
|
+
readonly outputTokens: number | null;
|
|
273
|
+
readonly cachedTokens: number | null;
|
|
274
|
+
readonly reasoningTokens: number | null;
|
|
275
|
+
readonly cost: number | null;
|
|
276
|
+
}
|
|
277
|
+
/** Explicit all-null value for harnesses without a confirmed usage artifact. */
|
|
278
|
+
export declare const NULL_INTERACTIVE_USAGE: InteractiveUsage;
|
|
279
|
+
export interface ReadInteractiveUsageOptions {
|
|
280
|
+
readonly cwd: string;
|
|
281
|
+
readonly startedAt: string;
|
|
282
|
+
readonly endedAt: string;
|
|
283
|
+
}
|
|
46
284
|
export interface HarnessAdapter {
|
|
47
285
|
readonly name: string;
|
|
48
286
|
setup(projectRoot: string, config: OsqConfig): Promise<void>;
|
|
49
287
|
spawn(options: SpawnTaskOptions): Promise<SpawnResult>;
|
|
288
|
+
spawnInteractive?(options: InteractiveSessionOptions): Promise<number>;
|
|
289
|
+
/**
|
|
290
|
+
* Optional post-session usage observation. Receives the project working
|
|
291
|
+
* directory and the observed session interval and never changes the planner
|
|
292
|
+
* process exit result.
|
|
293
|
+
*/
|
|
294
|
+
readInteractiveUsage?(options: ReadInteractiveUsageOptions): Promise<InteractiveUsage>;
|
|
50
295
|
preflight?(projectRoot: string, config: OsqConfig): Promise<void>;
|
|
51
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Extracts capability-specific rules from the delta specs a change writes under
|
|
299
|
+
* `specs/<capability>/spec.md`. Each rule is rendered as
|
|
300
|
+
* `<capability>: <requirement title> — <requirement statement>`. Capabilities
|
|
301
|
+
* are visited in sorted order and requirements keep document order, so the
|
|
302
|
+
* resulting prompt is deterministic. Returns an empty array when the change
|
|
303
|
+
* folder has no delta specs.
|
|
304
|
+
*/
|
|
305
|
+
export declare function extractCapabilityRules(specFolderPath: string): string[];
|
|
306
|
+
/**
|
|
307
|
+
* Resolves the capability rules for a task. An explicit `capabilityRules`
|
|
308
|
+
* option always wins, including an explicit empty array; when the option is
|
|
309
|
+
* absent the change folder's delta specs are parsed.
|
|
310
|
+
*/
|
|
311
|
+
export declare function resolveCapabilityRules(options: SpawnTaskOptions): string[];
|
|
312
|
+
/**
|
|
313
|
+
* Shared `Rules:` sub-section listing capability-specific requirements. Returns
|
|
314
|
+
* no lines when there are no rules so a prompt never carries an empty header.
|
|
315
|
+
*/
|
|
316
|
+
export declare function capabilityRuleLines(rules: readonly string[]): string[];
|
|
317
|
+
export interface PriorContext {
|
|
318
|
+
readonly attempt?: number;
|
|
319
|
+
readonly reason?: string;
|
|
320
|
+
/** Failed verification output to bound and render inside the prior context. */
|
|
321
|
+
readonly output?: string;
|
|
322
|
+
readonly resultPath?: string;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Shared prior-context block for every textual executor prompt. It is rendered
|
|
326
|
+
* when a retry or requeued recertification supplied an attempt, failure reason,
|
|
327
|
+
* or failed output, or when a prior result file still exists, so a fresh process
|
|
328
|
+
* reconstructs why it is running again.
|
|
329
|
+
*/
|
|
330
|
+
export declare function priorContextLines(context: PriorContext): string[];
|
|
52
331
|
export declare function appendHarnessEvent(specFolderPath: string, taskNumber: string, event: HarnessEvent): Promise<void>;
|
|
53
332
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/harness/types.ts"],"names":[],"mappings":"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"}
|