@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,30 @@
|
|
|
1
|
+
import type { WebCoverage, WebMetricObservation } from './web-data-types.js';
|
|
2
|
+
/** Execution observations for one change plus its total recorded attempts. */
|
|
3
|
+
export interface ChangeExecutionObservation {
|
|
4
|
+
readonly attempts: number;
|
|
5
|
+
readonly observation: WebMetricObservation;
|
|
6
|
+
}
|
|
7
|
+
/** Numbered task event streams only; `change.jsonl` is never a task stream. */
|
|
8
|
+
export declare function listTaskEventFiles(folderPath: string): Promise<string[]>;
|
|
9
|
+
/** Per-task execution observations for one numbered event stream. */
|
|
10
|
+
export interface TaskEventObservation {
|
|
11
|
+
readonly attempts: number;
|
|
12
|
+
readonly cost: number | null;
|
|
13
|
+
readonly costCoverage: WebCoverage;
|
|
14
|
+
readonly duration: number | null;
|
|
15
|
+
}
|
|
16
|
+
/** Reads one numbered task stream into its task-level execution observations. */
|
|
17
|
+
export declare function observeTaskFile(folderPath: string, taskNumber: string): Promise<TaskEventObservation>;
|
|
18
|
+
/**
|
|
19
|
+
* Aggregates per-change execution evidence from numbered task streams only.
|
|
20
|
+
* `cost` stays null when no attempt reported a cost; no value is estimated.
|
|
21
|
+
*/
|
|
22
|
+
export declare function observeExecution(folderPath: string): Promise<ChangeExecutionObservation>;
|
|
23
|
+
/**
|
|
24
|
+
* Aggregates per-change planning evidence from valid `.run/plan.jsonl`
|
|
25
|
+
* lifecycle pairs. Cost coverage counts only sessions whose `usage.cost` was
|
|
26
|
+
* recorded; tokens alone yield a null cost and `reported: 0` rather than a
|
|
27
|
+
* summed zero.
|
|
28
|
+
*/
|
|
29
|
+
export declare function observePlanning(folderPath: string): Promise<WebMetricObservation>;
|
|
30
|
+
//# sourceMappingURL=web-data-observations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data-observations.d.ts","sourceRoot":"","sources":["../../../src/core/web/web-data-observations.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,8EAA8E;AAC9E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;CAC5C;AAwBD,+EAA+E;AAC/E,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAK9E;AAaD,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,iFAAiF;AACjF,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAS/B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAuC9F;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2EvF"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { readPlanningSessions } from '../report/planning.js';
|
|
4
|
+
import { asData, eventTimestampMs, observeAttempts, observeTaskStream, parseEventLines, } from '../report/report-events.js';
|
|
5
|
+
import { mergeTokenDraft, observeTokenGroups, sortedTokenGroups, } from './web-data-tokens.js';
|
|
6
|
+
/** Covered duration in seconds from valid measures start-to-end pairs. */
|
|
7
|
+
function measureDurationSeconds(events) {
|
|
8
|
+
let pendingStartMs = null;
|
|
9
|
+
let coveredMs = 0;
|
|
10
|
+
let hasDuration = false;
|
|
11
|
+
for (const event of events) {
|
|
12
|
+
if (event.type !== 'measures')
|
|
13
|
+
continue;
|
|
14
|
+
const data = asData(event);
|
|
15
|
+
if (data?.phase === 'start') {
|
|
16
|
+
pendingStartMs = eventTimestampMs(event);
|
|
17
|
+
}
|
|
18
|
+
else if (data?.phase === 'end') {
|
|
19
|
+
const endMs = eventTimestampMs(event);
|
|
20
|
+
if (pendingStartMs !== null && endMs !== null && endMs >= pendingStartMs) {
|
|
21
|
+
coveredMs += endMs - pendingStartMs;
|
|
22
|
+
hasDuration = true;
|
|
23
|
+
}
|
|
24
|
+
pendingStartMs = null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return hasDuration ? coveredMs / 1000 : null;
|
|
28
|
+
}
|
|
29
|
+
/** Numbered task event streams only; `change.jsonl` is never a task stream. */
|
|
30
|
+
export async function listTaskEventFiles(folderPath) {
|
|
31
|
+
const entries = await fs.readdir(path.join(folderPath, '.run', 'events')).catch(() => []);
|
|
32
|
+
return entries
|
|
33
|
+
.filter((entry) => /^\d+\.jsonl$/.test(entry))
|
|
34
|
+
.sort((a, b) => Number.parseInt(a, 10) - Number.parseInt(b, 10));
|
|
35
|
+
}
|
|
36
|
+
async function readEvents(folderPath, file) {
|
|
37
|
+
const content = await fs
|
|
38
|
+
.readFile(path.join(folderPath, '.run', 'events', file), 'utf8')
|
|
39
|
+
.catch(() => '');
|
|
40
|
+
return parseEventLines(content);
|
|
41
|
+
}
|
|
42
|
+
function sum(values) {
|
|
43
|
+
return values.reduce((total, value) => total + value, 0);
|
|
44
|
+
}
|
|
45
|
+
/** Reads one numbered task stream into its task-level execution observations. */
|
|
46
|
+
export async function observeTaskFile(folderPath, taskNumber) {
|
|
47
|
+
const events = await readEvents(folderPath, `${taskNumber}.jsonl`);
|
|
48
|
+
const stream = observeTaskStream(events);
|
|
49
|
+
return {
|
|
50
|
+
attempts: stream.attempts,
|
|
51
|
+
cost: stream.costReportedAttempts === 0 ? null : sum(stream.costValues),
|
|
52
|
+
costCoverage: { reported: stream.costReportedAttempts, total: stream.attempts },
|
|
53
|
+
duration: measureDurationSeconds(events),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Aggregates per-change execution evidence from numbered task streams only.
|
|
58
|
+
* `cost` stays null when no attempt reported a cost; no value is estimated.
|
|
59
|
+
*/
|
|
60
|
+
export async function observeExecution(folderPath) {
|
|
61
|
+
const files = await listTaskEventFiles(folderPath);
|
|
62
|
+
const groups = new Map();
|
|
63
|
+
const costValues = [];
|
|
64
|
+
const durations = [];
|
|
65
|
+
let attempts = 0;
|
|
66
|
+
let reported = 0;
|
|
67
|
+
let passTotal = 0;
|
|
68
|
+
let passPassed = 0;
|
|
69
|
+
for (const file of files) {
|
|
70
|
+
const events = await readEvents(folderPath, file);
|
|
71
|
+
const stream = observeTaskStream(events);
|
|
72
|
+
attempts += stream.attempts;
|
|
73
|
+
reported += stream.costReportedAttempts;
|
|
74
|
+
costValues.push(...stream.costValues);
|
|
75
|
+
const duration = measureDurationSeconds(events);
|
|
76
|
+
if (duration !== null)
|
|
77
|
+
durations.push(duration);
|
|
78
|
+
const attempt = observeAttempts(events);
|
|
79
|
+
if (attempt.attempts > 0) {
|
|
80
|
+
passTotal++;
|
|
81
|
+
if (attempt.firstAttemptPass)
|
|
82
|
+
passPassed++;
|
|
83
|
+
}
|
|
84
|
+
for (const [key, draft] of observeTokenGroups(events))
|
|
85
|
+
groups.set(key, draft);
|
|
86
|
+
}
|
|
87
|
+
const costCoverage = { reported, total: attempts };
|
|
88
|
+
return {
|
|
89
|
+
attempts,
|
|
90
|
+
observation: {
|
|
91
|
+
cost: reported === 0 ? null : sum(costValues),
|
|
92
|
+
costCoverage,
|
|
93
|
+
tokens: sortedTokenGroups(groups),
|
|
94
|
+
durations,
|
|
95
|
+
firstAttemptPass: { reported: passPassed, total: passTotal },
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Aggregates per-change planning evidence from valid `.run/plan.jsonl`
|
|
101
|
+
* lifecycle pairs. Cost coverage counts only sessions whose `usage.cost` was
|
|
102
|
+
* recorded; tokens alone yield a null cost and `reported: 0` rather than a
|
|
103
|
+
* summed zero.
|
|
104
|
+
*/
|
|
105
|
+
export async function observePlanning(folderPath) {
|
|
106
|
+
const sessions = (await readPlanningSessions(folderPath)).filter((session) => session.started);
|
|
107
|
+
if (sessions.length === 0) {
|
|
108
|
+
return {
|
|
109
|
+
cost: null,
|
|
110
|
+
costCoverage: { reported: 0, total: 0 },
|
|
111
|
+
tokens: [],
|
|
112
|
+
durations: [],
|
|
113
|
+
firstAttemptPass: { reported: 0, total: 0 },
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const groups = new Map();
|
|
117
|
+
const durations = [];
|
|
118
|
+
const costValues = [];
|
|
119
|
+
let reported = 0;
|
|
120
|
+
for (const session of sessions) {
|
|
121
|
+
const started = session.started;
|
|
122
|
+
if (!started)
|
|
123
|
+
continue;
|
|
124
|
+
const exited = session.exited;
|
|
125
|
+
if (!exited)
|
|
126
|
+
continue;
|
|
127
|
+
const usage = exited.data.usage;
|
|
128
|
+
const harness = started.data.harness || '';
|
|
129
|
+
const model = started.data.model;
|
|
130
|
+
if (usage.inputTokens !== null) {
|
|
131
|
+
mergeTokenDraft(groups, harness, model, {
|
|
132
|
+
input: usage.inputTokens,
|
|
133
|
+
cachedInput: 0,
|
|
134
|
+
output: 0,
|
|
135
|
+
reasoning: 0,
|
|
136
|
+
total: usage.inputTokens,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (usage.outputTokens !== null) {
|
|
140
|
+
mergeTokenDraft(groups, harness, model, {
|
|
141
|
+
input: 0,
|
|
142
|
+
cachedInput: 0,
|
|
143
|
+
output: usage.outputTokens,
|
|
144
|
+
reasoning: 0,
|
|
145
|
+
total: usage.outputTokens,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
if (usage.cachedTokens !== null) {
|
|
149
|
+
mergeTokenDraft(groups, harness, model, {
|
|
150
|
+
input: 0,
|
|
151
|
+
cachedInput: usage.cachedTokens,
|
|
152
|
+
output: 0,
|
|
153
|
+
reasoning: 0,
|
|
154
|
+
total: 0,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (usage.reasoningTokens !== null) {
|
|
158
|
+
mergeTokenDraft(groups, harness, model, {
|
|
159
|
+
input: 0,
|
|
160
|
+
cachedInput: 0,
|
|
161
|
+
output: 0,
|
|
162
|
+
reasoning: usage.reasoningTokens,
|
|
163
|
+
total: 0,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (usage.cost !== null) {
|
|
167
|
+
costValues.push(usage.cost);
|
|
168
|
+
reported++;
|
|
169
|
+
}
|
|
170
|
+
if (Number.isFinite(exited.data.wallSeconds))
|
|
171
|
+
durations.push(exited.data.wallSeconds);
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
cost: reported === 0 ? null : sum(costValues),
|
|
175
|
+
costCoverage: { reported, total: sessions.length },
|
|
176
|
+
tokens: sortedTokenGroups(groups),
|
|
177
|
+
durations,
|
|
178
|
+
firstAttemptPass: { reported: 0, total: 0 },
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=web-data-observations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data-observations.js","sourceRoot":"","sources":["../../../src/core/web/web-data-observations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { WebTokenGroup } from './web-data-types.js';
|
|
2
|
+
/** Mutable accumulator for one harness/model token group. */
|
|
3
|
+
export interface TokenDraft {
|
|
4
|
+
harness: string;
|
|
5
|
+
model: string | null;
|
|
6
|
+
input: number;
|
|
7
|
+
cachedInput: number;
|
|
8
|
+
output: number;
|
|
9
|
+
reasoning: number;
|
|
10
|
+
total: number;
|
|
11
|
+
}
|
|
12
|
+
/** Adds one token delta to its harness/model group, creating it when absent. */
|
|
13
|
+
export declare function mergeTokenDraft(groups: Map<string, TokenDraft>, harness: string, model: string | null, delta: {
|
|
14
|
+
input: number;
|
|
15
|
+
cachedInput: number;
|
|
16
|
+
output: number;
|
|
17
|
+
reasoning: number;
|
|
18
|
+
total: number;
|
|
19
|
+
}): void;
|
|
20
|
+
/** Materializes one token group map in stable harness/model order. */
|
|
21
|
+
export declare function sortedTokenGroups(groups: Map<string, TokenDraft>): WebTokenGroup[];
|
|
22
|
+
/**
|
|
23
|
+
* Groups token counters by the recorded harness and nullable model. The current
|
|
24
|
+
* provenance comes from the most recent `started` event unless a token event
|
|
25
|
+
* explicitly carries its own; keys include both fields so unlike provenance is
|
|
26
|
+
* never merged.
|
|
27
|
+
*/
|
|
28
|
+
export declare function observeTokenGroups(events: readonly Record<string, unknown>[]): Map<string, TokenDraft>;
|
|
29
|
+
//# sourceMappingURL=web-data-tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data-tokens.d.ts","sourceRoot":"","sources":["../../../src/core/web/web-data-tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,gFAAgF;AAChF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9F,IAAI,CAiBN;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,aAAa,EAAE,CAMlF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACzC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAwBzB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { asData, parseTokenEvent } from '../report/report-events.js';
|
|
2
|
+
function tokenGroupKey(harness, model) {
|
|
3
|
+
return `${harness}\u0000${model ?? ''}`;
|
|
4
|
+
}
|
|
5
|
+
/** Adds one token delta to its harness/model group, creating it when absent. */
|
|
6
|
+
export function mergeTokenDraft(groups, harness, model, delta) {
|
|
7
|
+
const key = tokenGroupKey(harness, model);
|
|
8
|
+
const draft = groups.get(key) ?? {
|
|
9
|
+
harness,
|
|
10
|
+
model,
|
|
11
|
+
input: 0,
|
|
12
|
+
cachedInput: 0,
|
|
13
|
+
output: 0,
|
|
14
|
+
reasoning: 0,
|
|
15
|
+
total: 0,
|
|
16
|
+
};
|
|
17
|
+
draft.input += delta.input;
|
|
18
|
+
draft.cachedInput += delta.cachedInput;
|
|
19
|
+
draft.output += delta.output;
|
|
20
|
+
draft.reasoning += delta.reasoning;
|
|
21
|
+
draft.total += delta.total;
|
|
22
|
+
groups.set(key, draft);
|
|
23
|
+
}
|
|
24
|
+
/** Materializes one token group map in stable harness/model order. */
|
|
25
|
+
export function sortedTokenGroups(groups) {
|
|
26
|
+
return [...groups.values()]
|
|
27
|
+
.map((draft) => ({ ...draft }))
|
|
28
|
+
.sort((a, b) => a.harness.localeCompare(b.harness) || (a.model ?? '').localeCompare(b.model ?? ''));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Groups token counters by the recorded harness and nullable model. The current
|
|
32
|
+
* provenance comes from the most recent `started` event unless a token event
|
|
33
|
+
* explicitly carries its own; keys include both fields so unlike provenance is
|
|
34
|
+
* never merged.
|
|
35
|
+
*/
|
|
36
|
+
export function observeTokenGroups(events) {
|
|
37
|
+
const groups = new Map();
|
|
38
|
+
let harness = '';
|
|
39
|
+
let model = null;
|
|
40
|
+
for (const event of events) {
|
|
41
|
+
const data = asData(event);
|
|
42
|
+
if (!data)
|
|
43
|
+
continue;
|
|
44
|
+
if (event.type === 'started') {
|
|
45
|
+
if (typeof data.harness === 'string')
|
|
46
|
+
harness = data.harness;
|
|
47
|
+
model = typeof data.model === 'string' && data.model ? data.model : null;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (event.type !== 'tokens')
|
|
51
|
+
continue;
|
|
52
|
+
const eventHarness = typeof data.harness === 'string' && data.harness ? data.harness : harness;
|
|
53
|
+
const eventModel = typeof data.model === 'string' && data.model
|
|
54
|
+
? data.model
|
|
55
|
+
: data.model === null
|
|
56
|
+
? null
|
|
57
|
+
: model;
|
|
58
|
+
mergeTokenDraft(groups, eventHarness, eventModel, parseTokenEvent(data));
|
|
59
|
+
}
|
|
60
|
+
return groups;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=web-data-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data-tokens.js","sourceRoot":"","sources":["../../../src/core/web/web-data-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public read-only web documents derived from the current project tree. These
|
|
3
|
+
* contracts are data only: no function in this module performs I/O, caches an
|
|
4
|
+
* index, or estimates a missing observation.
|
|
5
|
+
*/
|
|
6
|
+
/** Where a change folder currently lives. */
|
|
7
|
+
export type WebLocation = 'active' | 'archived' | 'rejected';
|
|
8
|
+
/** Typed selector failure consumed by the HTTP layer without string parsing. */
|
|
9
|
+
export type WebDataErrorKind = 'not-found' | 'ambiguous';
|
|
10
|
+
/** Distinguishable selector failure for absent and ambiguous changes. */
|
|
11
|
+
export declare class WebDataError extends Error {
|
|
12
|
+
readonly kind: WebDataErrorKind;
|
|
13
|
+
constructor(kind: WebDataErrorKind, message: string);
|
|
14
|
+
}
|
|
15
|
+
/** One current `openspec/specs/<id>/spec.md` capability with its full text. */
|
|
16
|
+
export interface WebCapabilityNode {
|
|
17
|
+
readonly kind: 'capability';
|
|
18
|
+
readonly id: string;
|
|
19
|
+
readonly folderKey: string;
|
|
20
|
+
/** Complete UTF-8 contents of the living capability spec. */
|
|
21
|
+
readonly spec: string;
|
|
22
|
+
}
|
|
23
|
+
/** Token totals grouped by recorded harness and nullable model. */
|
|
24
|
+
export interface WebTokenGroup {
|
|
25
|
+
readonly harness: string;
|
|
26
|
+
readonly model: string | null;
|
|
27
|
+
readonly input: number;
|
|
28
|
+
readonly cachedInput: number;
|
|
29
|
+
readonly output: number;
|
|
30
|
+
readonly reasoning: number;
|
|
31
|
+
readonly total: number;
|
|
32
|
+
}
|
|
33
|
+
/** `reported of total` coverage for one cost or pass observation. */
|
|
34
|
+
export interface WebCoverage {
|
|
35
|
+
readonly reported: number;
|
|
36
|
+
readonly total: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* One compact observation series. `cost` is null when no valid record exists;
|
|
40
|
+
* it is never estimated and never a fabricated zero.
|
|
41
|
+
*/
|
|
42
|
+
export interface WebMetricObservation {
|
|
43
|
+
readonly cost: number | null;
|
|
44
|
+
readonly costCoverage: WebCoverage;
|
|
45
|
+
readonly tokens: readonly WebTokenGroup[];
|
|
46
|
+
/** Observed durations in seconds, one per covered task or session. */
|
|
47
|
+
readonly durations: readonly number[];
|
|
48
|
+
readonly firstAttemptPass: WebCoverage;
|
|
49
|
+
}
|
|
50
|
+
interface WebChangeNodeBase {
|
|
51
|
+
readonly kind: 'change';
|
|
52
|
+
/** Preserved directory basename; stable identity within its location. */
|
|
53
|
+
readonly folderKey: string;
|
|
54
|
+
readonly id: number | null;
|
|
55
|
+
readonly slug: string;
|
|
56
|
+
readonly title: string;
|
|
57
|
+
readonly state: WebLocation;
|
|
58
|
+
readonly created: string | null;
|
|
59
|
+
readonly approved: string | null;
|
|
60
|
+
readonly landed: string | null;
|
|
61
|
+
readonly rejection: {
|
|
62
|
+
readonly reason: string;
|
|
63
|
+
readonly timestamp: string;
|
|
64
|
+
} | null;
|
|
65
|
+
readonly planner: string | null;
|
|
66
|
+
readonly taskCount: number;
|
|
67
|
+
/**
|
|
68
|
+
* Tasks with a done marker, manual done included; same derivation as
|
|
69
|
+
* `osq status`. Derived graph documents always set it.
|
|
70
|
+
*/
|
|
71
|
+
readonly doneCount?: number;
|
|
72
|
+
readonly attempts: number;
|
|
73
|
+
readonly execution: WebMetricObservation;
|
|
74
|
+
readonly planning: WebMetricObservation;
|
|
75
|
+
}
|
|
76
|
+
/** One change folder projected for the archive graph. */
|
|
77
|
+
export type WebChangeNode = WebChangeNodeBase;
|
|
78
|
+
export type WebEdgeKind = 'depends_on' | 'reads' | 'writes';
|
|
79
|
+
/** One typed relationship between a change and a change or capability. */
|
|
80
|
+
export interface WebGraphEdge {
|
|
81
|
+
readonly key: string;
|
|
82
|
+
readonly kind: WebEdgeKind;
|
|
83
|
+
readonly from: string;
|
|
84
|
+
readonly to: string;
|
|
85
|
+
}
|
|
86
|
+
/** Deterministically ordered capability/change nodes plus typed edges. */
|
|
87
|
+
export interface WebGraph {
|
|
88
|
+
readonly capabilities: readonly WebCapabilityNode[];
|
|
89
|
+
readonly changes: readonly WebChangeNode[];
|
|
90
|
+
readonly edges: readonly WebGraphEdge[];
|
|
91
|
+
}
|
|
92
|
+
/** One resolved scope declaration with its readable path when it exists. */
|
|
93
|
+
export interface WebResolvedScope {
|
|
94
|
+
readonly relativePath: string;
|
|
95
|
+
readonly absolutePath: string | null;
|
|
96
|
+
}
|
|
97
|
+
/** Attribution for one differing path in a human recertification. */
|
|
98
|
+
export interface WebRecertificationAttribution {
|
|
99
|
+
readonly path: string;
|
|
100
|
+
readonly attribution: string;
|
|
101
|
+
}
|
|
102
|
+
/** One typed human recertification decision. */
|
|
103
|
+
export interface WebRecertification {
|
|
104
|
+
readonly taskNumber: string;
|
|
105
|
+
readonly timestamp: string | null;
|
|
106
|
+
readonly outcome: 'passed' | 'requeued' | null;
|
|
107
|
+
readonly actor: 'human';
|
|
108
|
+
readonly differingPaths: readonly string[];
|
|
109
|
+
readonly attribution: readonly WebRecertificationAttribution[];
|
|
110
|
+
readonly verify: string | null;
|
|
111
|
+
readonly exitCode: number | null;
|
|
112
|
+
readonly timedOut: boolean | null;
|
|
113
|
+
}
|
|
114
|
+
/** One task in a detailed change document. */
|
|
115
|
+
export interface WebTask {
|
|
116
|
+
readonly taskNumber: string;
|
|
117
|
+
readonly title: string;
|
|
118
|
+
readonly declaredScope: readonly string[];
|
|
119
|
+
readonly resolvedScope: readonly WebResolvedScope[];
|
|
120
|
+
readonly acceptance: readonly string[];
|
|
121
|
+
readonly verify: string;
|
|
122
|
+
readonly state: string;
|
|
123
|
+
readonly attempts: number;
|
|
124
|
+
readonly reason: string | null;
|
|
125
|
+
readonly runningStart: string | null;
|
|
126
|
+
readonly runningElapsedSeconds: number | null;
|
|
127
|
+
readonly duration: number | null;
|
|
128
|
+
readonly cost: number | null;
|
|
129
|
+
readonly costCoverage: WebCoverage;
|
|
130
|
+
readonly recertifications: readonly WebRecertification[];
|
|
131
|
+
readonly result: string | null;
|
|
132
|
+
}
|
|
133
|
+
/** One unambiguous change with its proposal, brief, and task detail. */
|
|
134
|
+
export interface WebChange {
|
|
135
|
+
readonly folderKey: string;
|
|
136
|
+
readonly id: number | null;
|
|
137
|
+
readonly slug: string;
|
|
138
|
+
readonly title: string;
|
|
139
|
+
readonly state: WebLocation;
|
|
140
|
+
readonly location: WebLocation;
|
|
141
|
+
readonly planner: string | null;
|
|
142
|
+
readonly brief: string | null;
|
|
143
|
+
readonly goal: string;
|
|
144
|
+
readonly rejection: {
|
|
145
|
+
readonly reason: string;
|
|
146
|
+
readonly timestamp: string;
|
|
147
|
+
} | null;
|
|
148
|
+
readonly dependsOn: readonly string[];
|
|
149
|
+
readonly reads: readonly string[];
|
|
150
|
+
readonly writes: readonly string[];
|
|
151
|
+
/** Derivation timestamp supplied by the caller. */
|
|
152
|
+
readonly asOf: string;
|
|
153
|
+
readonly tasks: readonly WebTask[];
|
|
154
|
+
}
|
|
155
|
+
export {};
|
|
156
|
+
//# sourceMappingURL=web-data-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data-types.d.ts","sourceRoot":"","sources":["../../../src/core/web/web-data-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public read-only web documents derived from the current project tree. These
|
|
3
|
+
* contracts are data only: no function in this module performs I/O, caches an
|
|
4
|
+
* index, or estimates a missing observation.
|
|
5
|
+
*/
|
|
6
|
+
/** Distinguishable selector failure for absent and ambiguous changes. */
|
|
7
|
+
export class WebDataError extends Error {
|
|
8
|
+
kind;
|
|
9
|
+
constructor(kind, message) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'WebDataError';
|
|
12
|
+
this.kind = kind;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=web-data-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data-types.js","sourceRoot":"","sources":["../../../src/core/web/web-data-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,yEAAyE;AACzE,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAmB;IAEhC,YAAY,IAAsB,EAAE,OAAe;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public read-only web inspection entrypoints. Both derive every document from
|
|
3
|
+
* the current project tree, store no index, and estimate no absent evidence.
|
|
4
|
+
*/
|
|
5
|
+
export { getWebGraph } from './web-data-graph.js';
|
|
6
|
+
export { getWebChange } from './web-data-change.js';
|
|
7
|
+
export { WebDataError } from './web-data-types.js';
|
|
8
|
+
export type { WebDataErrorKind } from './web-data-types.js';
|
|
9
|
+
export type { WebCapabilityNode, WebChange, WebChangeNode, WebCoverage, WebEdgeKind, WebGraph, WebGraphEdge, WebLocation, WebMetricObservation, WebRecertification, WebRecertificationAttribution, WebResolvedScope, WebTask, WebTokenGroup, } from './web-data-types.js';
|
|
10
|
+
//# sourceMappingURL=web-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data.d.ts","sourceRoot":"","sources":["../../../src/core/web/web-data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,YAAY,EACV,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,6BAA6B,EAC7B,gBAAgB,EAChB,OAAO,EACP,aAAa,GACd,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public read-only web inspection entrypoints. Both derive every document from
|
|
3
|
+
* the current project tree, store no index, and estimate no absent evidence.
|
|
4
|
+
*/
|
|
5
|
+
export { getWebGraph } from './web-data-graph.js';
|
|
6
|
+
export { getWebChange } from './web-data-change.js';
|
|
7
|
+
export { WebDataError } from './web-data-types.js';
|
|
8
|
+
//# sourceMappingURL=web-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-data.js","sourceRoot":"","sources":["../../../src/core/web/web-data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type http from 'node:http';
|
|
2
|
+
/** Framed invalidation payload: affected numeric ids, empty for shared documents. */
|
|
3
|
+
export interface InvalidationBatch {
|
|
4
|
+
readonly ids: readonly number[];
|
|
5
|
+
}
|
|
6
|
+
/** Watcher events that can change dashboard documents. */
|
|
7
|
+
export type WatchEvent = 'add' | 'change' | 'unlink' | 'addDir' | 'unlinkDir' | 'error';
|
|
8
|
+
/** Minimal chokidar-compatible seam so focused tests can inject a fake watcher. */
|
|
9
|
+
export interface WatcherLike {
|
|
10
|
+
on(event: WatchEvent, listener: (target: string) => void): unknown;
|
|
11
|
+
close(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export interface WatchOptions {
|
|
14
|
+
readonly ignoreInitial: boolean;
|
|
15
|
+
}
|
|
16
|
+
export type WatcherFactory = (paths: readonly string[], options: WatchOptions) => WatcherLike;
|
|
17
|
+
/** Cancellable debounce timer seam for deterministic tests. */
|
|
18
|
+
export interface TimerHandle {
|
|
19
|
+
cancel(): void;
|
|
20
|
+
}
|
|
21
|
+
export type ScheduleFn = (callback: () => void, delayMs: number) => TimerHandle;
|
|
22
|
+
export interface InvalidationHubOptions {
|
|
23
|
+
readonly projectRoot: string;
|
|
24
|
+
readonly openspecRoot: string;
|
|
25
|
+
readonly debounceMs: number;
|
|
26
|
+
readonly watch?: WatcherFactory;
|
|
27
|
+
readonly schedule?: ScheduleFn;
|
|
28
|
+
}
|
|
29
|
+
/** One server-owned subscription surface; clients never create a watcher. */
|
|
30
|
+
export interface InvalidationHub {
|
|
31
|
+
subscribe(listener: (batch: InvalidationBatch) => void): () => void;
|
|
32
|
+
cancelPending(): void;
|
|
33
|
+
close(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
/** SSE response headers shared by GET and HEAD. */
|
|
36
|
+
export declare const SSE_HEADERS: http.OutgoingHttpHeaders;
|
|
37
|
+
/**
|
|
38
|
+
* Leading numeric id for a path inside exactly one change folder, or `null`
|
|
39
|
+
* when the path belongs to shared state: capability specs, root layout, or an
|
|
40
|
+
* unrecognized folder.
|
|
41
|
+
*/
|
|
42
|
+
export declare function classifyChangePath(target: string, changesDir: string, archiveDir: string, rejectedDir: string): number | null;
|
|
43
|
+
/** Create the one watcher and debounce accumulator owned by a server. */
|
|
44
|
+
export declare function createInvalidationHub(options: InvalidationHubOptions): InvalidationHub;
|
|
45
|
+
/** The exact wire frame for one debounced invalidation. */
|
|
46
|
+
export declare function formatChangedEvent(ids: readonly number[]): string;
|
|
47
|
+
/** One broadcast surface for every connected `/api/events` response. */
|
|
48
|
+
export interface EventStream {
|
|
49
|
+
handle(res: http.ServerResponse, head: boolean): void;
|
|
50
|
+
close(): void;
|
|
51
|
+
}
|
|
52
|
+
/** Track connected SSE responses and fan out one frame per derived batch. */
|
|
53
|
+
export declare function createEventStream(hub: InvalidationHub): EventStream;
|
|
54
|
+
//# sourceMappingURL=web-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-events.d.ts","sourceRoot":"","sources":["../../../src/core/web/web-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAMlC,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAExF,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,KAAK,WAAW,CAAC;AAE9F,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,WAAW,CAAC;AAEhF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;CAChC;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpE,aAAa,IAAI,IAAI,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,mDAAmD;AACnD,eAAO,MAAM,WAAW,EAAE,IAAI,CAAC,mBAI9B,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAQf;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAuEtF;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEjE;AAED,wEAAwE;AACxE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACtD,KAAK,IAAI,IAAI,CAAC;CACf;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,WAAW,CAgCnE"}
|