@quickchatai/quickreview 0.0.0-stage → 1.1.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/LICENSE +23 -0
- package/README.md +385 -2
- package/THIRD-PARTY-NOTICES.md +134 -0
- package/agents/pass-abstraction.md +64 -0
- package/agents/pass-ask-human.md +134 -0
- package/agents/pass-backcompat.md +67 -0
- package/agents/pass-baseline.md +61 -0
- package/agents/pass-behaviour-delta.md +64 -0
- package/agents/pass-bounds.md +36 -0
- package/agents/pass-claims.md +31 -0
- package/agents/pass-concurrency.md +168 -0
- package/agents/pass-consistency.md +57 -0
- package/agents/pass-contracts.md +30 -0
- package/agents/pass-data-safety.md +54 -0
- package/agents/pass-deferred.md +35 -0
- package/agents/pass-delivery.md +37 -0
- package/agents/pass-duplication.md +60 -0
- package/agents/pass-intent.md +63 -0
- package/agents/pass-lint-conformance.md +46 -0
- package/agents/pass-maintainability.md +67 -0
- package/agents/pass-placement.md +68 -0
- package/agents/pass-prod-risk.md +24 -0
- package/agents/pass-rollout.md +32 -0
- package/agents/pass-roundtrip.md +46 -0
- package/agents/pass-security.md +31 -0
- package/agents/pass-simplicity.md +68 -0
- package/agents/pass-statelessness.md +27 -0
- package/agents/pass-style.md +37 -0
- package/agents/pass-sweep.md +57 -0
- package/agents/pass-tests.md +58 -0
- package/agents/pass-ui.md +23 -0
- package/agents/pass-validate.md +50 -0
- package/agents/pass-widened.md +46 -0
- package/agents/scan/pass-scan.md +86 -0
- package/bin/qcr.js +11 -0
- package/config.example.toml +1067 -0
- package/deploy/ansible/README.md +356 -0
- package/deploy/ansible/group_vars/all.yml +212 -0
- package/deploy/ansible/inventory.example.ini +25 -0
- package/deploy/ansible/playbook.yml +360 -0
- package/deploy/collect-secrets.sh +289 -0
- package/deploy/collect-slack-secrets.mjs +1190 -0
- package/deploy/github-app-manifest.json +31 -0
- package/deploy/manifest.schema.json +75 -0
- package/deploy/qcr-update.sh +803 -0
- package/deploy/reviewer/AGENTS.override.md +12 -0
- package/dist/extensions/cli/bash-guard-ambient.js +42 -0
- package/dist/extensions/cli/bash-guard-ambient.js.map +1 -0
- package/dist/extensions/cli/bash-guard.js +5 -0
- package/dist/extensions/cli/bash-guard.js.map +1 -0
- package/dist/extensions/cli/companion-guard.js +5 -0
- package/dist/extensions/cli/companion-guard.js.map +1 -0
- package/dist/extensions/cli/debug-round.js +8 -0
- package/dist/extensions/cli/debug-round.js.map +1 -0
- package/dist/extensions/cli/inject-bridge.js +5 -0
- package/dist/extensions/cli/inject-bridge.js.map +1 -0
- package/dist/extensions/cli/ledger-pin.js +5 -0
- package/dist/extensions/cli/ledger-pin.js.map +1 -0
- package/dist/extensions/cli/lens.js +13 -0
- package/dist/extensions/cli/lens.js.map +1 -0
- package/dist/extensions/cli/muted-theme.js +5 -0
- package/dist/extensions/cli/muted-theme.js.map +1 -0
- package/dist/extensions/cli/onboarding.js +5 -0
- package/dist/extensions/cli/onboarding.js.map +1 -0
- package/dist/extensions/cli/setup.js +5 -0
- package/dist/extensions/cli/setup.js.map +1 -0
- package/dist/extensions/cli/tui-view.js +5 -0
- package/dist/extensions/cli/tui-view.js.map +1 -0
- package/dist/extensions/companion-guard.js +361 -0
- package/dist/extensions/companion-guard.js.map +1 -0
- package/dist/extensions/debug-round.js +204 -0
- package/dist/extensions/debug-round.js.map +1 -0
- package/dist/extensions/inject-bridge.js +603 -0
- package/dist/extensions/inject-bridge.js.map +1 -0
- package/dist/extensions/muted-theme.js +12 -0
- package/dist/extensions/muted-theme.js.map +1 -0
- package/dist/extensions/onboarding.js +175 -0
- package/dist/extensions/onboarding.js.map +1 -0
- package/dist/extensions/setup-replay.js +269 -0
- package/dist/extensions/setup-replay.js.map +1 -0
- package/dist/extensions/setup-scan.js +998 -0
- package/dist/extensions/setup-scan.js.map +1 -0
- package/dist/extensions/setup-triage.js +175 -0
- package/dist/extensions/setup-triage.js.map +1 -0
- package/dist/extensions/setup.js +1160 -0
- package/dist/extensions/setup.js.map +1 -0
- package/dist/extensions/tui-view.js +389 -0
- package/dist/extensions/tui-view.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/client.js +376 -0
- package/dist/extensions/vendor/openviking-pi/client.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/config.js +189 -0
- package/dist/extensions/vendor/openviking-pi/config.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/index.js +421 -0
- package/dist/extensions/vendor/openviking-pi/index.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/lib/capture-adapter.mjs +86 -0
- package/dist/extensions/vendor/openviking-pi/lib/capture-adapter.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/lib/takeover-core.mjs +408 -0
- package/dist/extensions/vendor/openviking-pi/lib/takeover-core.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/lib/uri-guard-adapter.mjs +41 -0
- package/dist/extensions/vendor/openviking-pi/lib/uri-guard-adapter.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hint.js +290 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hint.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-honest.js +148 -0
- package/dist/extensions/vendor/openviking-pi/qcr-honest.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hooks.js +68 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hooks.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-leaf.js +77 -0
- package/dist/extensions/vendor/openviking-pi/qcr-leaf.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-lesson.js +216 -0
- package/dist/extensions/vendor/openviking-pi/qcr-lesson.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-namespaces.js +154 -0
- package/dist/extensions/vendor/openviking-pi/qcr-namespaces.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-recall.js +254 -0
- package/dist/extensions/vendor/openviking-pi/qcr-recall.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-shim.js +94 -0
- package/dist/extensions/vendor/openviking-pi/qcr-shim.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-write.js +333 -0
- package/dist/extensions/vendor/openviking-pi/qcr-write.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/recall.js +108 -0
- package/dist/extensions/vendor/openviking-pi/recall.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/capture-utils.mjs +529 -0
- package/dist/extensions/vendor/openviking-pi/shared/capture-utils.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/credentials.mjs +205 -0
- package/dist/extensions/vendor/openviking-pi/shared/credentials.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/pending-queue.mjs +442 -0
- package/dist/extensions/vendor/openviking-pi/shared/pending-queue.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/profile-inject.mjs +286 -0
- package/dist/extensions/vendor/openviking-pi/shared/profile-inject.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-compress-core.mjs +189 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-compress-core.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-core.mjs +580 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-core.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/retryable.mjs +11 -0
- package/dist/extensions/vendor/openviking-pi/shared/retryable.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/session-model.mjs +63 -0
- package/dist/extensions/vendor/openviking-pi/shared/session-model.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/uri-guard.mjs +58 -0
- package/dist/extensions/vendor/openviking-pi/shared/uri-guard.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/workspace-peer.mjs +16 -0
- package/dist/extensions/vendor/openviking-pi/shared/workspace-peer.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/sync.js +127 -0
- package/dist/extensions/vendor/openviking-pi/sync.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/takeover.js +25 -0
- package/dist/extensions/vendor/openviking-pi/takeover.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/tools.js +417 -0
- package/dist/extensions/vendor/openviking-pi/tools.js.map +1 -0
- package/dist/src/anomalies.js +483 -0
- package/dist/src/anomalies.js.map +1 -0
- package/dist/src/answerworker.js +180 -0
- package/dist/src/answerworker.js.map +1 -0
- package/dist/src/appstamp.js +68 -0
- package/dist/src/appstamp.js.map +1 -0
- package/dist/src/archive/admission.js +3 -0
- package/dist/src/archive/admission.js.map +1 -0
- package/dist/src/archive/archivedb.js +474 -0
- package/dist/src/archive/archivedb.js.map +1 -0
- package/dist/src/archive/archiver.js +1770 -0
- package/dist/src/archive/archiver.js.map +1 -0
- package/dist/src/archive/archivewrite.js +198 -0
- package/dist/src/archive/archivewrite.js.map +1 -0
- package/dist/src/archive/bundle.js +266 -0
- package/dist/src/archive/bundle.js.map +1 -0
- package/dist/src/archive/dbmove.js +638 -0
- package/dist/src/archive/dbmove.js.map +1 -0
- package/dist/src/archive/duplicatecounts.js +80 -0
- package/dist/src/archive/duplicatecounts.js.map +1 -0
- package/dist/src/archive/eligibility.js +113 -0
- package/dist/src/archive/eligibility.js.map +1 -0
- package/dist/src/archive/extract.js +288 -0
- package/dist/src/archive/extract.js.map +1 -0
- package/dist/src/archive/fsutil.js +330 -0
- package/dist/src/archive/fsutil.js.map +1 -0
- package/dist/src/archive/gzfile.js +277 -0
- package/dist/src/archive/gzfile.js.map +1 -0
- package/dist/src/archive/kinds.js +22 -0
- package/dist/src/archive/kinds.js.map +1 -0
- package/dist/src/archive/livecheckpoint.js +178 -0
- package/dist/src/archive/livecheckpoint.js.map +1 -0
- package/dist/src/archive/liveretention.js +145 -0
- package/dist/src/archive/liveretention.js.map +1 -0
- package/dist/src/archive/manifest.js +284 -0
- package/dist/src/archive/manifest.js.map +1 -0
- package/dist/src/archive/overseer.js +283 -0
- package/dist/src/archive/overseer.js.map +1 -0
- package/dist/src/archive/piglobal.js +129 -0
- package/dist/src/archive/piglobal.js.map +1 -0
- package/dist/src/archive/plan.js +398 -0
- package/dist/src/archive/plan.js.map +1 -0
- package/dist/src/archive/prarchive.js +831 -0
- package/dist/src/archive/prarchive.js.map +1 -0
- package/dist/src/archive/prfiles.js +303 -0
- package/dist/src/archive/prfiles.js.map +1 -0
- package/dist/src/archive/report.js +169 -0
- package/dist/src/archive/report.js.map +1 -0
- package/dist/src/archive/restore.js +276 -0
- package/dist/src/archive/restore.js.map +1 -0
- package/dist/src/archive/rows.js +106 -0
- package/dist/src/archive/rows.js.map +1 -0
- package/dist/src/archive/seal.js +480 -0
- package/dist/src/archive/seal.js.map +1 -0
- package/dist/src/archive/status.js +528 -0
- package/dist/src/archive/status.js.map +1 -0
- package/dist/src/archive/storepass.js +409 -0
- package/dist/src/archive/storepass.js.map +1 -0
- package/dist/src/backfill.js +217 -0
- package/dist/src/backfill.js.map +1 -0
- package/dist/src/bench/cost.js +87 -0
- package/dist/src/bench/exec.js +76 -0
- package/dist/src/bench/values.js +14 -0
- package/dist/src/botcontrol.js +127 -0
- package/dist/src/botcontrol.js.map +1 -0
- package/dist/src/botworker.js +805 -0
- package/dist/src/botworker.js.map +1 -0
- package/dist/src/capture.js +234 -0
- package/dist/src/capture.js.map +1 -0
- package/dist/src/cases.js +1491 -0
- package/dist/src/cases.js.map +1 -0
- package/dist/src/channelfs.js +27 -0
- package/dist/src/channelfs.js.map +1 -0
- package/dist/src/checklist.js +312 -0
- package/dist/src/checklist.js.map +1 -0
- package/dist/src/ciretry.js +91 -0
- package/dist/src/ciretry.js.map +1 -0
- package/dist/src/cli.js +1916 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/cliops.js +333 -0
- package/dist/src/cliops.js.map +1 -0
- package/dist/src/clonedir.js +15 -0
- package/dist/src/clonedir.js.map +1 -0
- package/dist/src/commandeffects.js +43 -0
- package/dist/src/commandeffects.js.map +1 -0
- package/dist/src/commands.js +1312 -0
- package/dist/src/commands.js.map +1 -0
- package/dist/src/companioninbox.js +203 -0
- package/dist/src/companioninbox.js.map +1 -0
- package/dist/src/compare.js +673 -0
- package/dist/src/compare.js.map +1 -0
- package/dist/src/config.js +1027 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/configcheck.js +111 -0
- package/dist/src/configcheck.js.map +1 -0
- package/dist/src/coreext.js +43 -0
- package/dist/src/coreext.js.map +1 -0
- package/dist/src/daemon.js +929 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/debuground.js +731 -0
- package/dist/src/debuground.js.map +1 -0
- package/dist/src/debugroundpi.js +219 -0
- package/dist/src/debugroundpi.js.map +1 -0
- package/dist/src/diagnostics.js +14 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/digest.js +139 -0
- package/dist/src/digest.js.map +1 -0
- package/dist/src/dispatch.js +1726 -0
- package/dist/src/dispatch.js.map +1 -0
- package/dist/src/engine/answerguard.js +18 -0
- package/dist/src/engine/answerguard.js.map +1 -0
- package/dist/src/engine/botsdk.js +262 -0
- package/dist/src/engine/botsdk.js.map +1 -0
- package/dist/src/engine/caserunner-sdk.js +332 -0
- package/dist/src/engine/caserunner-sdk.js.map +1 -0
- package/dist/src/engine/debugpi.js +194 -0
- package/dist/src/engine/debugpi.js.map +1 -0
- package/dist/src/eod.js +473 -0
- package/dist/src/eod.js.map +1 -0
- package/dist/src/eodpinwatch.js +391 -0
- package/dist/src/eodpinwatch.js.map +1 -0
- package/dist/src/escalation.js +1009 -0
- package/dist/src/escalation.js.map +1 -0
- package/dist/src/eventloop.js +779 -0
- package/dist/src/eventloop.js.map +1 -0
- package/dist/src/execboundary.js +430 -0
- package/dist/src/execboundary.js.map +1 -0
- package/dist/src/feedback.js +915 -0
- package/dist/src/feedback.js.map +1 -0
- package/dist/src/findingscheck.js +200 -0
- package/dist/src/findingscheck.js.map +1 -0
- package/dist/src/fsdenied.js +26 -0
- package/dist/src/fsdenied.js.map +1 -0
- package/dist/src/ghread.js +181 -0
- package/dist/src/ghread.js.map +1 -0
- package/dist/src/github.js +1063 -0
- package/dist/src/github.js.map +1 -0
- package/dist/src/homes.js +103 -0
- package/dist/src/homes.js.map +1 -0
- package/dist/src/hostroute.js +24 -0
- package/dist/src/hostroute.js.map +1 -0
- package/dist/src/improvements.js +625 -0
- package/dist/src/improvements.js.map +1 -0
- package/dist/src/install.js +946 -0
- package/dist/src/install.js.map +1 -0
- package/dist/src/installkind.js +40 -0
- package/dist/src/installkind.js.map +1 -0
- package/dist/src/ipc/capability.js +286 -0
- package/dist/src/ipc/capability.js.map +1 -0
- package/dist/src/ipc/client.js +226 -0
- package/dist/src/ipc/client.js.map +1 -0
- package/dist/src/ipc/control.js +70 -0
- package/dist/src/ipc/control.js.map +1 -0
- package/dist/src/ipc/ghreadshim.js +77 -0
- package/dist/src/ipc/ghreadshim.js.map +1 -0
- package/dist/src/ipc/launcher.js +65 -0
- package/dist/src/ipc/launcher.js.map +1 -0
- package/dist/src/ipc/permits.js +293 -0
- package/dist/src/ipc/permits.js.map +1 -0
- package/dist/src/ipc/postshim.js +137 -0
- package/dist/src/ipc/postshim.js.map +1 -0
- package/dist/src/ipc/protocol.js +239 -0
- package/dist/src/ipc/protocol.js.map +1 -0
- package/dist/src/ipc/server.js +312 -0
- package/dist/src/ipc/server.js.map +1 -0
- package/dist/src/ipc/workerspec.js +148 -0
- package/dist/src/ipc/workerspec.js.map +1 -0
- package/dist/src/learner/learner.js +1272 -0
- package/dist/src/learner/learner.js.map +1 -0
- package/dist/src/learner/miner.js +948 -0
- package/dist/src/learner/miner.js.map +1 -0
- package/dist/src/learner/packet.js +216 -0
- package/dist/src/learner/packet.js.map +1 -0
- package/dist/src/learner/receipt.js +135 -0
- package/dist/src/learner/receipt.js.map +1 -0
- package/dist/src/learner/status.js +38 -0
- package/dist/src/learner/status.js.map +1 -0
- package/dist/src/ledgercheck.js +120 -0
- package/dist/src/ledgercheck.js.map +1 -0
- package/dist/src/lessonledger.js +451 -0
- package/dist/src/lessonledger.js.map +1 -0
- package/dist/src/lessonselect.js +639 -0
- package/dist/src/lessonselect.js.map +1 -0
- package/dist/src/lessonshadow.js +540 -0
- package/dist/src/lessonshadow.js.map +1 -0
- package/dist/src/levers.js +302 -0
- package/dist/src/levers.js.map +1 -0
- package/dist/src/live/projection.js +450 -0
- package/dist/src/live/projection.js.map +1 -0
- package/dist/src/live/publish.js +83 -0
- package/dist/src/live/publish.js.map +1 -0
- package/dist/src/live/read.js +60 -0
- package/dist/src/live/read.js.map +1 -0
- package/dist/src/livecli.js +288 -0
- package/dist/src/livecli.js.map +1 -0
- package/dist/src/loginhint.js +42 -0
- package/dist/src/loginhint.js.map +1 -0
- package/dist/src/loginrefresh/atomic.js +66 -0
- package/dist/src/loginrefresh/atomic.js.map +1 -0
- package/dist/src/loginrefresh/lock.js +93 -0
- package/dist/src/loginrefresh/lock.js.map +1 -0
- package/dist/src/loginrefresh/main.js +58 -0
- package/dist/src/loginrefresh/main.js.map +1 -0
- package/dist/src/loginrefresh/pirefresh.js +49 -0
- package/dist/src/loginrefresh/pirefresh.js.map +1 -0
- package/dist/src/loginrefresh/refresher.js +286 -0
- package/dist/src/loginrefresh/refresher.js.map +1 -0
- package/dist/src/loginrefresh/supervisor.js +253 -0
- package/dist/src/loginrefresh/supervisor.js.map +1 -0
- package/dist/src/loginrefresh/types.js +4 -0
- package/dist/src/loginrefresh/types.js.map +1 -0
- package/dist/src/memory/context.js +251 -0
- package/dist/src/memory/context.js.map +1 -0
- package/dist/src/memory/datafence.js +5 -0
- package/dist/src/memory/datafence.js.map +1 -0
- package/dist/src/memory/delivery.js +131 -0
- package/dist/src/memory/delivery.js.map +1 -0
- package/dist/src/memory/eventtags.js +81 -0
- package/dist/src/memory/eventtags.js.map +1 -0
- package/dist/src/memory/health.js +713 -0
- package/dist/src/memory/health.js.map +1 -0
- package/dist/src/memory/import.js +504 -0
- package/dist/src/memory/import.js.map +1 -0
- package/dist/src/memory/layout.js +252 -0
- package/dist/src/memory/layout.js.map +1 -0
- package/dist/src/memory/legacy-file.js +100 -0
- package/dist/src/memory/legacy-file.js.map +1 -0
- package/dist/src/memory/lessons.js +370 -0
- package/dist/src/memory/lessons.js.map +1 -0
- package/dist/src/memory/ovsession.js +449 -0
- package/dist/src/memory/ovsession.js.map +1 -0
- package/dist/src/memory/relayout.js +259 -0
- package/dist/src/memory/relayout.js.map +1 -0
- package/dist/src/memory/roundactivity.js +180 -0
- package/dist/src/memory/roundactivity.js.map +1 -0
- package/dist/src/memory/selection.js +690 -0
- package/dist/src/memory/selection.js.map +1 -0
- package/dist/src/memory/shadowstatus.js +69 -0
- package/dist/src/memory/shadowstatus.js.map +1 -0
- package/dist/src/memory/store.js +83 -0
- package/dist/src/memory/store.js.map +1 -0
- package/dist/src/memory/textidentity.js +8 -0
- package/dist/src/memory/textidentity.js.map +1 -0
- package/dist/src/metrics.js +773 -0
- package/dist/src/metrics.js.map +1 -0
- package/dist/src/missingconfig.js +8 -0
- package/dist/src/missingconfig.js.map +1 -0
- package/dist/src/npmverbs.js +226 -0
- package/dist/src/npmverbs.js.map +1 -0
- package/dist/src/onboard/choices.js +191 -0
- package/dist/src/onboard/choices.js.map +1 -0
- package/dist/src/onboard/engine.js +344 -0
- package/dist/src/onboard/engine.js.map +1 -0
- package/dist/src/onboard/launch.js +83 -0
- package/dist/src/onboard/launch.js.map +1 -0
- package/dist/src/onboard/steps/appslug.js +211 -0
- package/dist/src/onboard/steps/appslug.js.map +1 -0
- package/dist/src/onboard/steps/bringup.js +408 -0
- package/dist/src/onboard/steps/bringup.js.map +1 -0
- package/dist/src/onboard/steps/compose.js +343 -0
- package/dist/src/onboard/steps/compose.js.map +1 -0
- package/dist/src/onboard/steps/configdelivery.js +50 -0
- package/dist/src/onboard/steps/configdelivery.js.map +1 -0
- package/dist/src/onboard/steps/configfill.js +1148 -0
- package/dist/src/onboard/steps/configfill.js.map +1 -0
- package/dist/src/onboard/steps/deploysh.js +80 -0
- package/dist/src/onboard/steps/deploysh.js.map +1 -0
- package/dist/src/onboard/steps/embeddings.js +472 -0
- package/dist/src/onboard/steps/embeddings.js.map +1 -0
- package/dist/src/onboard/steps/escalation.js +571 -0
- package/dist/src/onboard/steps/escalation.js.map +1 -0
- package/dist/src/onboard/steps/githubapp.js +1092 -0
- package/dist/src/onboard/steps/githubapp.js.map +1 -0
- package/dist/src/onboard/steps/golive.js +506 -0
- package/dist/src/onboard/steps/golive.js.map +1 -0
- package/dist/src/onboard/steps/index.js +67 -0
- package/dist/src/onboard/steps/index.js.map +1 -0
- package/dist/src/onboard/steps/ingress.js +762 -0
- package/dist/src/onboard/steps/ingress.js.map +1 -0
- package/dist/src/onboard/steps/inventory.js +420 -0
- package/dist/src/onboard/steps/inventory.js.map +1 -0
- package/dist/src/onboard/steps/llmauth.js +893 -0
- package/dist/src/onboard/steps/llmauth.js.map +1 -0
- package/dist/src/onboard/steps/memory.js +1060 -0
- package/dist/src/onboard/steps/memory.js.map +1 -0
- package/dist/src/onboard/steps/memorykeys.js +43 -0
- package/dist/src/onboard/steps/memorykeys.js.map +1 -0
- package/dist/src/onboard/steps/preflight.js +172 -0
- package/dist/src/onboard/steps/preflight.js.map +1 -0
- package/dist/src/onboard/steps/proof.js +502 -0
- package/dist/src/onboard/steps/proof.js.map +1 -0
- package/dist/src/onboard/steps/ssh.js +300 -0
- package/dist/src/onboard/steps/ssh.js.map +1 -0
- package/dist/src/onboard/steps/topology.js +291 -0
- package/dist/src/onboard/steps/topology.js.map +1 -0
- package/dist/src/onboard/steps/transport.js +511 -0
- package/dist/src/onboard/steps/transport.js.map +1 -0
- package/dist/src/onboard/steps/verifyup.js +362 -0
- package/dist/src/onboard/steps/verifyup.js.map +1 -0
- package/dist/src/onboard/steps/vmdeploy.js +368 -0
- package/dist/src/onboard/steps/vmdeploy.js.map +1 -0
- package/dist/src/onboard/toml.js +53 -0
- package/dist/src/onboard/toml.js.map +1 -0
- package/dist/src/opencli.js +508 -0
- package/dist/src/opencli.js.map +1 -0
- package/dist/src/openpr.js +457 -0
- package/dist/src/openpr.js.map +1 -0
- package/dist/src/openviking/client.js +821 -0
- package/dist/src/openviking/client.js.map +1 -0
- package/dist/src/openviking/context.js +218 -0
- package/dist/src/openviking/context.js.map +1 -0
- package/dist/src/openviking/embedder.js +457 -0
- package/dist/src/openviking/embedder.js.map +1 -0
- package/dist/src/openviking/gapsink.js +38 -0
- package/dist/src/openviking/gapsink.js.map +1 -0
- package/dist/src/openviking/health.js +69 -0
- package/dist/src/openviking/health.js.map +1 -0
- package/dist/src/openviking/index.js +24 -0
- package/dist/src/openviking/index.js.map +1 -0
- package/dist/src/openviking/lessonfind.js +54 -0
- package/dist/src/openviking/lessonfind.js.map +1 -0
- package/dist/src/openviking/probe.js +89 -0
- package/dist/src/openviking/probe.js.map +1 -0
- package/dist/src/openviking/proc.js +95 -0
- package/dist/src/openviking/proc.js.map +1 -0
- package/dist/src/openviking/provisionreport.js +144 -0
- package/dist/src/openviking/provisionreport.js.map +1 -0
- package/dist/src/openviking/reembed.js +317 -0
- package/dist/src/openviking/reembed.js.map +1 -0
- package/dist/src/openviking/relayout.js +153 -0
- package/dist/src/openviking/relayout.js.map +1 -0
- package/dist/src/openviking/sidecar-main.js +39 -0
- package/dist/src/openviking/sidecar-main.js.map +1 -0
- package/dist/src/openviking/sidecar.js +79 -0
- package/dist/src/openviking/sidecar.js.map +1 -0
- package/dist/src/openviking/store.js +1758 -0
- package/dist/src/openviking/store.js.map +1 -0
- package/dist/src/openviking/supervisor.js +422 -0
- package/dist/src/openviking/supervisor.js.map +1 -0
- package/dist/src/openviking/types.js +5 -0
- package/dist/src/openviking/types.js.map +1 -0
- package/dist/src/operator-recovery.js +172 -0
- package/dist/src/operator-recovery.js.map +1 -0
- package/dist/src/operatormessage.js +44 -0
- package/dist/src/operatormessage.js.map +1 -0
- package/dist/src/outcomes.js +1361 -0
- package/dist/src/outcomes.js.map +1 -0
- package/dist/src/piauthcopy.js +5 -0
- package/dist/src/piauthcopy.js.map +1 -0
- package/dist/src/picli.js +45 -0
- package/dist/src/picli.js.map +1 -0
- package/dist/src/picwd.js +25 -0
- package/dist/src/picwd.js.map +1 -0
- package/dist/src/pilogin.js +35 -0
- package/dist/src/pilogin.js.map +1 -0
- package/dist/src/pingpong.js +1028 -0
- package/dist/src/pingpong.js.map +1 -0
- package/dist/src/posting-journal.js +441 -0
- package/dist/src/posting-journal.js.map +1 -0
- package/dist/src/posting-outbox.js +662 -0
- package/dist/src/posting-outbox.js.map +1 -0
- package/dist/src/posting-receipt.js +203 -0
- package/dist/src/posting-receipt.js.map +1 -0
- package/dist/src/posting.js +348 -0
- package/dist/src/posting.js.map +1 -0
- package/dist/src/postops.js +637 -0
- package/dist/src/postops.js.map +1 -0
- package/dist/src/pr-activity.js +11 -0
- package/dist/src/pr-activity.js.map +1 -0
- package/dist/src/pr-author.js +5 -0
- package/dist/src/pr-author.js.map +1 -0
- package/dist/src/pr-conversation.js +355 -0
- package/dist/src/pr-conversation.js.map +1 -0
- package/dist/src/pr-session-lifecycle.js +542 -0
- package/dist/src/pr-session-lifecycle.js.map +1 -0
- package/dist/src/preflight.js +341 -0
- package/dist/src/preflight.js.map +1 -0
- package/dist/src/priorresolve.js +275 -0
- package/dist/src/priorresolve.js.map +1 -0
- package/dist/src/qcrbin.js +180 -0
- package/dist/src/qcrbin.js.map +1 -0
- package/dist/src/recheck.js +1398 -0
- package/dist/src/recheck.js.map +1 -0
- package/dist/src/reconcile.js +820 -0
- package/dist/src/reconcile.js.map +1 -0
- package/dist/src/recordedfindings.js +15 -0
- package/dist/src/recordedfindings.js.map +1 -0
- package/dist/src/regression.js +546 -0
- package/dist/src/regression.js.map +1 -0
- package/dist/src/replay.js +598 -0
- package/dist/src/replay.js.map +1 -0
- package/dist/src/requiredpasses.js +113 -0
- package/dist/src/requiredpasses.js.map +1 -0
- package/dist/src/resumecheck.js +168 -0
- package/dist/src/resumecheck.js.map +1 -0
- package/dist/src/reviewcli.js +671 -0
- package/dist/src/reviewcli.js.map +1 -0
- package/dist/src/reviewcontext.js +22 -0
- package/dist/src/reviewcontext.js.map +1 -0
- package/dist/src/reviewdetach.js +574 -0
- package/dist/src/reviewdetach.js.map +1 -0
- package/dist/src/reviewhistory.js +284 -0
- package/dist/src/reviewhistory.js.map +1 -0
- package/dist/src/reviewhome.js +26 -0
- package/dist/src/reviewhome.js.map +1 -0
- package/dist/src/reviewmemory.js +110 -0
- package/dist/src/reviewmemory.js.map +1 -0
- package/dist/src/reviewrendercli.js +104 -0
- package/dist/src/reviewrendercli.js.map +1 -0
- package/dist/src/round-work.js +20 -0
- package/dist/src/round-work.js.map +1 -0
- package/dist/src/runhost.js +72 -0
- package/dist/src/runhost.js.map +1 -0
- package/dist/src/scanauth.js +25 -0
- package/dist/src/scanauth.js.map +1 -0
- package/dist/src/scanbox.js +846 -0
- package/dist/src/scanbox.js.map +1 -0
- package/dist/src/scancli.js +1074 -0
- package/dist/src/scancli.js.map +1 -0
- package/dist/src/scandriverlog.js +30 -0
- package/dist/src/scandriverlog.js.map +1 -0
- package/dist/src/session-bridge.js +75 -0
- package/dist/src/session-bridge.js.map +1 -0
- package/dist/src/session-command-payload.js +29 -0
- package/dist/src/session-command-payload.js.map +1 -0
- package/dist/src/session-command-supervisor.js +939 -0
- package/dist/src/session-command-supervisor.js.map +1 -0
- package/dist/src/sessionjsonl.js +85 -0
- package/dist/src/sessionjsonl.js.map +1 -0
- package/dist/src/sessions.js +541 -0
- package/dist/src/sessions.js.map +1 -0
- package/dist/src/setup/adapters.js +330 -0
- package/dist/src/setup/adapters.js.map +1 -0
- package/dist/src/setup/baselines.js +64 -0
- package/dist/src/setup/baselines.js.map +1 -0
- package/dist/src/setup/caserunner.js +554 -0
- package/dist/src/setup/caserunner.js.map +1 -0
- package/dist/src/setup/configcommit.js +358 -0
- package/dist/src/setup/configcommit.js.map +1 -0
- package/dist/src/setup/engine.js +672 -0
- package/dist/src/setup/engine.js.map +1 -0
- package/dist/src/setup/facts.js +593 -0
- package/dist/src/setup/facts.js.map +1 -0
- package/dist/src/setup/findings.js +948 -0
- package/dist/src/setup/findings.js.map +1 -0
- package/dist/src/setup/history.js +338 -0
- package/dist/src/setup/history.js.map +1 -0
- package/dist/src/setup/interview.js +185 -0
- package/dist/src/setup/interview.js.map +1 -0
- package/dist/src/setup/ledger.js +207 -0
- package/dist/src/setup/ledger.js.map +1 -0
- package/dist/src/setup/pins.js +43 -0
- package/dist/src/setup/pins.js.map +1 -0
- package/dist/src/setup/portrait.js +432 -0
- package/dist/src/setup/portrait.js.map +1 -0
- package/dist/src/setup/presentation.js +9 -0
- package/dist/src/setup/presentation.js.map +1 -0
- package/dist/src/setup/profile.js +417 -0
- package/dist/src/setup/profile.js.map +1 -0
- package/dist/src/setup/replay.js +240 -0
- package/dist/src/setup/replay.js.map +1 -0
- package/dist/src/setup/replaybuild.js +311 -0
- package/dist/src/setup/replaybuild.js.map +1 -0
- package/dist/src/setup/replayrun.js +806 -0
- package/dist/src/setup/replayrun.js.map +1 -0
- package/dist/src/setup/replaysource.js +169 -0
- package/dist/src/setup/replaysource.js.map +1 -0
- package/dist/src/setup/retune.js +333 -0
- package/dist/src/setup/retune.js.map +1 -0
- package/dist/src/setup/retunelog.js +51 -0
- package/dist/src/setup/retunelog.js.map +1 -0
- package/dist/src/setup/scan.js +725 -0
- package/dist/src/setup/scan.js.map +1 -0
- package/dist/src/setup/scanbuild.js +133 -0
- package/dist/src/setup/scanbuild.js.map +1 -0
- package/dist/src/setup/scanfacts.js +96 -0
- package/dist/src/setup/scanfacts.js.map +1 -0
- package/dist/src/setup/scanlease.js +251 -0
- package/dist/src/setup/scanlease.js.map +1 -0
- package/dist/src/setup/scanreport.js +289 -0
- package/dist/src/setup/scanreport.js.map +1 -0
- package/dist/src/setup/scanrun.js +1733 -0
- package/dist/src/setup/scanrun.js.map +1 -0
- package/dist/src/setup/scantree.js +257 -0
- package/dist/src/setup/scantree.js.map +1 -0
- package/dist/src/setup/stage2.js +617 -0
- package/dist/src/setup/stage2.js.map +1 -0
- package/dist/src/setup/stage2request.js +259 -0
- package/dist/src/setup/stage2request.js.map +1 -0
- package/dist/src/setup/survey.js +307 -0
- package/dist/src/setup/survey.js.map +1 -0
- package/dist/src/setup/surveyrun.js +549 -0
- package/dist/src/setup/surveyrun.js.map +1 -0
- package/dist/src/setup/textsniff.js +89 -0
- package/dist/src/setup/textsniff.js.map +1 -0
- package/dist/src/setup/trackersink.js +395 -0
- package/dist/src/setup/trackersink.js.map +1 -0
- package/dist/src/setup/triage.js +636 -0
- package/dist/src/setup/triage.js.map +1 -0
- package/dist/src/setup/tuning.js +585 -0
- package/dist/src/setup/tuning.js.map +1 -0
- package/dist/src/setup/unitcut.js +437 -0
- package/dist/src/setup/unitcut.js.map +1 -0
- package/dist/src/singleflight.js +72 -0
- package/dist/src/singleflight.js.map +1 -0
- package/dist/src/slack/announce.js +725 -0
- package/dist/src/slack/announce.js.map +1 -0
- package/dist/src/slack/api.js +227 -0
- package/dist/src/slack/api.js.map +1 -0
- package/dist/src/slack/messages.js +158 -0
- package/dist/src/slack/messages.js.map +1 -0
- package/dist/src/slack/origin.js +550 -0
- package/dist/src/slack/origin.js.map +1 -0
- package/dist/src/slack/policy.js +225 -0
- package/dist/src/slack/policy.js.map +1 -0
- package/dist/src/slack/reply.js +153 -0
- package/dist/src/slack/reply.js.map +1 -0
- package/dist/src/slack/router.js +189 -0
- package/dist/src/slack/router.js.map +1 -0
- package/dist/src/slack/socket.js +323 -0
- package/dist/src/slack/socket.js.map +1 -0
- package/dist/src/slack/types.js +11 -0
- package/dist/src/slack/types.js.map +1 -0
- package/dist/src/sqlitehint.js +30 -0
- package/dist/src/sqlitehint.js.map +1 -0
- package/dist/src/ssh-observation.js +25 -0
- package/dist/src/ssh-observation.js.map +1 -0
- package/dist/src/state.js +5869 -0
- package/dist/src/state.js.map +1 -0
- package/dist/src/statemachine.js +220 -0
- package/dist/src/statemachine.js.map +1 -0
- package/dist/src/stubs.js +52 -0
- package/dist/src/stubs.js.map +1 -0
- package/dist/src/takeover.js +506 -0
- package/dist/src/takeover.js.map +1 -0
- package/dist/src/takeoverpi.js +249 -0
- package/dist/src/takeoverpi.js.map +1 -0
- package/dist/src/terminal-failure.js +26 -0
- package/dist/src/terminal-failure.js.map +1 -0
- package/dist/src/thread-resolution-refusal.js +4 -0
- package/dist/src/thread-resolution-refusal.js.map +1 -0
- package/dist/src/tmux.js +126 -0
- package/dist/src/tmux.js.map +1 -0
- package/dist/src/trackerid.js +43 -0
- package/dist/src/trackerid.js.map +1 -0
- package/dist/src/transcriptindex.js +512 -0
- package/dist/src/transcriptindex.js.map +1 -0
- package/dist/src/tui/actions.js +404 -0
- package/dist/src/tui/actions.js.map +1 -0
- package/dist/src/tui/alerts.js +523 -0
- package/dist/src/tui/alerts.js.map +1 -0
- package/dist/src/tui/app.js +1835 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/archiveops.js +164 -0
- package/dist/src/tui/archiveops.js.map +1 -0
- package/dist/src/tui/autofile.js +191 -0
- package/dist/src/tui/autofile.js.map +1 -0
- package/dist/src/tui/board.js +1143 -0
- package/dist/src/tui/board.js.map +1 -0
- package/dist/src/tui/candidates.js +699 -0
- package/dist/src/tui/candidates.js.map +1 -0
- package/dist/src/tui/cellwidth.js +151 -0
- package/dist/src/tui/cellwidth.js.map +1 -0
- package/dist/src/tui/changelog-store.js +404 -0
- package/dist/src/tui/changelog-store.js.map +1 -0
- package/dist/src/tui/chord.js +26 -0
- package/dist/src/tui/chord.js.map +1 -0
- package/dist/src/tui/clipboard.js +81 -0
- package/dist/src/tui/clipboard.js.map +1 -0
- package/dist/src/tui/cmdbar.js +253 -0
- package/dist/src/tui/cmdbar.js.map +1 -0
- package/dist/src/tui/companion.js +1275 -0
- package/dist/src/tui/companion.js.map +1 -0
- package/dist/src/tui/companionplan.js +200 -0
- package/dist/src/tui/companionplan.js.map +1 -0
- package/dist/src/tui/companiontab.js +61 -0
- package/dist/src/tui/companiontab.js.map +1 -0
- package/dist/src/tui/confighome.js +105 -0
- package/dist/src/tui/confighome.js.map +1 -0
- package/dist/src/tui/connect.js +44 -0
- package/dist/src/tui/connect.js.map +1 -0
- package/dist/src/tui/deploy-ceremony.js +75 -0
- package/dist/src/tui/deploy-ceremony.js.map +1 -0
- package/dist/src/tui/deploy-drain.js +93 -0
- package/dist/src/tui/deploy-drain.js.map +1 -0
- package/dist/src/tui/deploy-process.js +234 -0
- package/dist/src/tui/deploy-process.js.map +1 -0
- package/dist/src/tui/deploytab.js +1263 -0
- package/dist/src/tui/deploytab.js.map +1 -0
- package/dist/src/tui/design.js +111 -0
- package/dist/src/tui/design.js.map +1 -0
- package/dist/src/tui/digesttab.js +148 -0
- package/dist/src/tui/digesttab.js.map +1 -0
- package/dist/src/tui/emptystate.js +32 -0
- package/dist/src/tui/emptystate.js.map +1 -0
- package/dist/src/tui/evidence.js +790 -0
- package/dist/src/tui/evidence.js.map +1 -0
- package/dist/src/tui/feed.js +415 -0
- package/dist/src/tui/feed.js.map +1 -0
- package/dist/src/tui/feedbacktab.js +907 -0
- package/dist/src/tui/feedbacktab.js.map +1 -0
- package/dist/src/tui/filters.js +72 -0
- package/dist/src/tui/filters.js.map +1 -0
- package/dist/src/tui/ghread.js +272 -0
- package/dist/src/tui/ghread.js.map +1 -0
- package/dist/src/tui/historypull.js +61 -0
- package/dist/src/tui/historypull.js.map +1 -0
- package/dist/src/tui/inboxpull.js +197 -0
- package/dist/src/tui/inboxpull.js.map +1 -0
- package/dist/src/tui/index.js +1425 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/issuesink.js +206 -0
- package/dist/src/tui/issuesink.js.map +1 -0
- package/dist/src/tui/jsonfile.js +32 -0
- package/dist/src/tui/jsonfile.js.map +1 -0
- package/dist/src/tui/keys.js +97 -0
- package/dist/src/tui/keys.js.map +1 -0
- package/dist/src/tui/layout.js +70 -0
- package/dist/src/tui/layout.js.map +1 -0
- package/dist/src/tui/learning.js +469 -0
- package/dist/src/tui/learning.js.map +1 -0
- package/dist/src/tui/lessonswitch.js +103 -0
- package/dist/src/tui/lessonswitch.js.map +1 -0
- package/dist/src/tui/livecontrol.js +167 -0
- package/dist/src/tui/livecontrol.js.map +1 -0
- package/dist/src/tui/memforward.js +310 -0
- package/dist/src/tui/memforward.js.map +1 -0
- package/dist/src/tui/memincident.js +287 -0
- package/dist/src/tui/memincident.js.map +1 -0
- package/dist/src/tui/memory.js +485 -0
- package/dist/src/tui/memory.js.map +1 -0
- package/dist/src/tui/memtab.js +513 -0
- package/dist/src/tui/memtab.js.map +1 -0
- package/dist/src/tui/metricstab.js +979 -0
- package/dist/src/tui/metricstab.js.map +1 -0
- package/dist/src/tui/model.js +104 -0
- package/dist/src/tui/model.js.map +1 -0
- package/dist/src/tui/mouse.js +83 -0
- package/dist/src/tui/mouse.js.map +1 -0
- package/dist/src/tui/msg.js +196 -0
- package/dist/src/tui/msg.js.map +1 -0
- package/dist/src/tui/nativecompanion.js +321 -0
- package/dist/src/tui/nativecompanion.js.map +1 -0
- package/dist/src/tui/openurl.js +17 -0
- package/dist/src/tui/openurl.js.map +1 -0
- package/dist/src/tui/paint.js +501 -0
- package/dist/src/tui/paint.js.map +1 -0
- package/dist/src/tui/panes.js +74 -0
- package/dist/src/tui/panes.js.map +1 -0
- package/dist/src/tui/pipane.js +166 -0
- package/dist/src/tui/pipane.js.map +1 -0
- package/dist/src/tui/poll-hooks.js +11 -0
- package/dist/src/tui/poll-hooks.js.map +1 -0
- package/dist/src/tui/poll.js +113 -0
- package/dist/src/tui/poll.js.map +1 -0
- package/dist/src/tui/proposals.js +715 -0
- package/dist/src/tui/proposals.js.map +1 -0
- package/dist/src/tui/prpause.js +132 -0
- package/dist/src/tui/prpause.js.map +1 -0
- package/dist/src/tui/reload.js +351 -0
- package/dist/src/tui/reload.js.map +1 -0
- package/dist/src/tui/remote.js +312 -0
- package/dist/src/tui/remote.js.map +1 -0
- package/dist/src/tui/rollover.js +767 -0
- package/dist/src/tui/rollover.js.map +1 -0
- package/dist/src/tui/scantab.js +1053 -0
- package/dist/src/tui/scantab.js.map +1 -0
- package/dist/src/tui/setupentry.js +81 -0
- package/dist/src/tui/setupentry.js.map +1 -0
- package/dist/src/tui/sidebar.js +602 -0
- package/dist/src/tui/sidebar.js.map +1 -0
- package/dist/src/tui/sshtriage.js +393 -0
- package/dist/src/tui/sshtriage.js.map +1 -0
- package/dist/src/tui/startup.js +172 -0
- package/dist/src/tui/startup.js.map +1 -0
- package/dist/src/tui/tabs.js +41 -0
- package/dist/src/tui/tabs.js.map +1 -0
- package/dist/src/tui/termmirror.js +217 -0
- package/dist/src/tui/termmirror.js.map +1 -0
- package/dist/src/tui/theme.js +95 -0
- package/dist/src/tui/theme.js.map +1 -0
- package/dist/src/tui/ticketstab.js +224 -0
- package/dist/src/tui/ticketstab.js.map +1 -0
- package/dist/src/tui/tmuxsocket.js +101 -0
- package/dist/src/tui/tmuxsocket.js.map +1 -0
- package/dist/src/tui/trackertickets.js +77 -0
- package/dist/src/tui/trackertickets.js.map +1 -0
- package/dist/src/tui/unwedge.js +245 -0
- package/dist/src/tui/unwedge.js.map +1 -0
- package/dist/src/tui/viewer.js +479 -0
- package/dist/src/tui/viewer.js.map +1 -0
- package/dist/src/tui/viewerinput.js +125 -0
- package/dist/src/tui/viewerinput.js.map +1 -0
- package/dist/src/updatenotice.js +143 -0
- package/dist/src/updatenotice.js.map +1 -0
- package/dist/src/usage.js +1007 -0
- package/dist/src/usage.js.map +1 -0
- package/dist/src/verdicts.js +3848 -0
- package/dist/src/verdicts.js.map +1 -0
- package/dist/src/version.js +58 -0
- package/dist/src/version.js.map +1 -0
- package/dist/src/wakes.js +411 -0
- package/dist/src/wakes.js.map +1 -0
- package/dist/src/webhook.js +725 -0
- package/dist/src/webhook.js.map +1 -0
- package/dist/src/webhookheal.js +238 -0
- package/dist/src/webhookheal.js.map +1 -0
- package/dist/src/wire.js +1801 -0
- package/dist/src/wire.js.map +1 -0
- package/dist/src/worker-session-host.js +531 -0
- package/dist/src/worker-session-host.js.map +1 -0
- package/dist/src/workerbreaker.js +112 -0
- package/dist/src/workerbreaker.js.map +1 -0
- package/dist/src/workercontrol.js +49 -0
- package/dist/src/workercontrol.js.map +1 -0
- package/dist/src/workerlease.js +351 -0
- package/dist/src/workerlease.js.map +1 -0
- package/dist/src/workerliveness.js +84 -0
- package/dist/src/workerliveness.js.map +1 -0
- package/dist/src/workerlog.js +65 -0
- package/dist/src/workerlog.js.map +1 -0
- package/dist/src/workerruntime.js +10 -0
- package/dist/src/workerruntime.js.map +1 -0
- package/dist/src/workersupervisor.js +1206 -0
- package/dist/src/workersupervisor.js.map +1 -0
- package/dist/src/workerusage.js +23 -0
- package/dist/src/workerusage.js.map +1 -0
- package/dist/src/workerworld.js +332 -0
- package/dist/src/workerworld.js.map +1 -0
- package/dist/src/worktrees.js +984 -0
- package/dist/src/worktrees.js.map +1 -0
- package/docker/Dockerfile +284 -0
- package/docker/Dockerfile.dockerignore +35 -0
- package/docker/README.md +221 -0
- package/docker/companion/Dockerfile +139 -0
- package/docker/companion/agents/evidence.md +34 -0
- package/docker/companion/agents/explore.md +26 -0
- package/docker/companion/agents/pass-survey.md +49 -0
- package/docker/companion/agents/study.md +26 -0
- package/docker/companion/entrypoint.sh +343 -0
- package/docker/companion/memory-health.mjs +269 -0
- package/docker/entrypoint.sh +782 -0
- package/docker/memory/Dockerfile +191 -0
- package/docker/memory/Dockerfile.dockerignore +20 -0
- package/docker/memory/README.md +60 -0
- package/docker/memory/entrypoint.sh +163 -0
- package/docker/setid/qcr-setid.c +109 -0
- package/docker/tunnel/Dockerfile.cloudflared +51 -0
- package/docker/tunnel/Dockerfile.ngrok +40 -0
- package/docker/tunnel/sidecar.mjs +411 -0
- package/docker/vm/tmux.conf +26 -0
- package/docker-compose.yml +348 -0
- package/extensions/cli/bash-guard-ambient.ts +71 -0
- package/extensions/cli/bash-guard.ts +12 -0
- package/extensions/cli/companion-guard.ts +8 -0
- package/extensions/cli/debug-round.ts +9 -0
- package/extensions/cli/inject-bridge.ts +8 -0
- package/extensions/cli/ledger-pin.ts +13 -0
- package/extensions/cli/lens.ts +22 -0
- package/extensions/cli/muted-theme.ts +9 -0
- package/extensions/cli/onboarding.ts +8 -0
- package/extensions/cli/setup.ts +8 -0
- package/extensions/cli/tui-view.ts +8 -0
- package/extensions/companion-guard.ts +411 -0
- package/extensions/debug-round.ts +281 -0
- package/extensions/inject-bridge.ts +630 -0
- package/extensions/inline-bash.ts +102 -0
- package/extensions/muted-theme.json +68 -0
- package/extensions/muted-theme.ts +23 -0
- package/extensions/onboarding.ts +233 -0
- package/extensions/setup-replay.ts +336 -0
- package/extensions/setup-scan.ts +1236 -0
- package/extensions/setup-triage.ts +190 -0
- package/extensions/setup.ts +1428 -0
- package/extensions/tui-view.ts +489 -0
- package/extensions/vendor/openviking-pi/LICENSE +201 -0
- package/extensions/vendor/openviking-pi/NOTICE +68 -0
- package/extensions/vendor/openviking-pi/README.md +550 -0
- package/extensions/vendor/openviking-pi/client.ts +588 -0
- package/extensions/vendor/openviking-pi/config.json +28 -0
- package/extensions/vendor/openviking-pi/config.ts +271 -0
- package/extensions/vendor/openviking-pi/index.ts +523 -0
- package/extensions/vendor/openviking-pi/lib/capture-adapter.d.mts +10 -0
- package/extensions/vendor/openviking-pi/lib/capture-adapter.mjs +88 -0
- package/extensions/vendor/openviking-pi/lib/takeover-core.d.mts +80 -0
- package/extensions/vendor/openviking-pi/lib/takeover-core.mjs +406 -0
- package/extensions/vendor/openviking-pi/lib/uri-guard-adapter.d.mts +1 -0
- package/extensions/vendor/openviking-pi/lib/uri-guard-adapter.mjs +42 -0
- package/extensions/vendor/openviking-pi/patches/0000-vendoring-and-build-conformance.patch +726 -0
- package/extensions/vendor/openviking-pi/patches/0001-remove-session-before-compact-handler.patch +101 -0
- package/extensions/vendor/openviking-pi/patches/0002-no-ambient-work-in-subagent-leaves.patch +202 -0
- package/extensions/vendor/openviking-pi/patches/0003-never-auto-create-openviking-sessions.patch +120 -0
- package/extensions/vendor/openviking-pi/patches/0004-viking-write-durable-batch-write.patch +521 -0
- package/extensions/vendor/openviking-pi/patches/0005-second-memory-namespace.patch +786 -0
- package/extensions/vendor/openviking-pi/patches/0006-writes-that-stick-and-honest-errors.patch +996 -0
- package/extensions/vendor/openviking-pi/patches/0007-bounded-recall-no-commit.patch +794 -0
- package/extensions/vendor/openviking-pi/patches/0008-pr-derived-recall.patch +379 -0
- package/extensions/vendor/openviking-pi/patches/0009-pr-session-tools-in-round-areas.patch +375 -0
- package/extensions/vendor/openviking-pi/patches/0010-typed-lessons.patch +448 -0
- package/extensions/vendor/openviking-pi/patches/0011-review-session-memory-boundary.patch +382 -0
- package/extensions/vendor/openviking-pi/patches/0012-typecheck-against-the-real-pi.patch +129 -0
- package/extensions/vendor/openviking-pi/patches/0013-createopenviking-factory.patch +1168 -0
- package/extensions/vendor/openviking-pi/qcr-hint.ts +313 -0
- package/extensions/vendor/openviking-pi/qcr-honest.ts +183 -0
- package/extensions/vendor/openviking-pi/qcr-hooks.ts +87 -0
- package/extensions/vendor/openviking-pi/qcr-leaf.ts +78 -0
- package/extensions/vendor/openviking-pi/qcr-lesson.ts +231 -0
- package/extensions/vendor/openviking-pi/qcr-namespaces.ts +198 -0
- package/extensions/vendor/openviking-pi/qcr-recall.ts +288 -0
- package/extensions/vendor/openviking-pi/qcr-shim.ts +142 -0
- package/extensions/vendor/openviking-pi/qcr-write.ts +427 -0
- package/extensions/vendor/openviking-pi/recall.ts +149 -0
- package/extensions/vendor/openviking-pi/shared/capture-utils.d.mts +9 -0
- package/extensions/vendor/openviking-pi/shared/capture-utils.mjs +515 -0
- package/extensions/vendor/openviking-pi/shared/credentials.d.mts +14 -0
- package/extensions/vendor/openviking-pi/shared/credentials.mjs +228 -0
- package/extensions/vendor/openviking-pi/shared/pending-queue.d.mts +19 -0
- package/extensions/vendor/openviking-pi/shared/pending-queue.mjs +458 -0
- package/extensions/vendor/openviking-pi/shared/profile-inject.d.mts +17 -0
- package/extensions/vendor/openviking-pi/shared/profile-inject.mjs +294 -0
- package/extensions/vendor/openviking-pi/shared/recall-compress-core.mjs +195 -0
- package/extensions/vendor/openviking-pi/shared/recall-core.d.mts +13 -0
- package/extensions/vendor/openviking-pi/shared/recall-core.mjs +609 -0
- package/extensions/vendor/openviking-pi/shared/retryable.mjs +9 -0
- package/extensions/vendor/openviking-pi/shared/session-model.d.mts +3 -0
- package/extensions/vendor/openviking-pi/shared/session-model.mjs +57 -0
- package/extensions/vendor/openviking-pi/shared/uri-guard.mjs +56 -0
- package/extensions/vendor/openviking-pi/shared/workspace-peer.d.mts +5 -0
- package/extensions/vendor/openviking-pi/shared/workspace-peer.mjs +16 -0
- package/extensions/vendor/openviking-pi/sync.ts +163 -0
- package/extensions/vendor/openviking-pi/takeover.ts +36 -0
- package/extensions/vendor/openviking-pi/tools.ts +479 -0
- package/extensions/vendor/openviking-pi/upstream.json +48 -0
- package/package.json +138 -4
- package/profiles/default/README.md +21 -0
- package/profiles/default/addenda/.gitkeep +0 -0
- package/profiles/default/profile.toml +17 -0
- package/profiles/example-django/README.md +21 -0
- package/profiles/example-django/addenda/10-migration-discipline.md +13 -0
- package/profiles/example-django/addenda/20-new-column-nullability.md +12 -0
- package/profiles/example-django/addenda/30-test-doctrine.md +12 -0
- package/profiles/example-django/addenda/40-orm-usage.md +19 -0
- package/profiles/example-django/addenda/50-declared-shape.md +10 -0
- package/profiles/example-django/addenda/60-config-placement.md +14 -0
- package/profiles/example-django/heuristics.toml +24 -0
- package/profiles/example-django/profile.toml +9 -0
- package/profiles/fast/README.md +24 -0
- package/profiles/fast/profile.toml +59 -0
- package/profiles/minimal/README.md +17 -0
- package/profiles/minimal/addenda/.gitkeep +0 -0
- package/profiles/minimal/profile.toml +8 -0
- package/profiles/snappy/README.md +24 -0
- package/profiles/snappy/addenda/10-race-as-question.md +6 -0
- package/profiles/snappy/profile.toml +46 -0
- package/prompts/companion-day-open.md +46 -0
- package/prompts/companion-first-run.md +104 -0
- package/prompts/companion.md +821 -0
- package/prompts/conversation-system.md +117 -0
- package/prompts/eod-sweep.md +120 -0
- package/prompts/onboarding.md +74 -0
- package/prompts/pass-common.md +52 -0
- package/prompts/pass-quality-common.md +22 -0
- package/prompts/round-first.md +874 -0
- package/prompts/round-follow-up.md +991 -0
- package/prompts/round-re-review.md +889 -0
- package/prompts/round-recheck.md +196 -0
- package/prompts/round-staleness.md +856 -0
- package/schemas/review-result.v1.json +391 -0
- package/schemas/scan-result.v1.json +421 -0
- package/schemas/version.v1.json +57 -0
- package/scripts/approve-pr.sh +16 -0
- package/scripts/build-stamp.mjs +67 -0
- package/scripts/commit-verdict.sh +155 -0
- package/scripts/companion-e2e.sh +250 -0
- package/scripts/companion-memory-forward.mjs +1966 -0
- package/scripts/config-fingerprint.sh +28 -0
- package/scripts/deploy-manifest.mjs +141 -0
- package/scripts/deploy.sh +1435 -0
- package/scripts/directory-lock.mjs +193 -0
- package/scripts/heartbeat-fresh.mjs +54 -0
- package/scripts/install-locator.sh +328 -0
- package/scripts/install-wrapper.sh +76 -0
- package/scripts/memory-search-check.mjs +98 -0
- package/scripts/mint-token.sh +212 -0
- package/scripts/openviking-embedder.py +392 -0
- package/scripts/openviking-ov-conf.mjs +161 -0
- package/scripts/openviking-provision.mjs +1122 -0
- package/scripts/openviking-reembed.mjs +1154 -0
- package/scripts/post-review.sh +16 -0
- package/scripts/pr-checks.sh +256 -0
- package/scripts/pr-context.py +174 -0
- package/scripts/pr-context.sh +63 -0
- package/scripts/pr-self.sh +144 -0
- package/scripts/pr-threads.sh +145 -0
- package/scripts/qcr +15 -0
- package/scripts/qcr-host.sh +769 -0
- package/scripts/render-review.sh +24 -0
- package/scripts/reply-thread.sh +16 -0
- package/scripts/required-passes.py +112 -0
- package/scripts/smoke-companion.sh +211 -0
- package/scripts/tui-deploy-runner.mjs +61 -0
- package/scripts/verify-dist.mjs +201 -0
- package/scripts/vm-ghcr-login.sh +188 -0
- package/seeds/agents/pass-baseline.md +61 -0
- package/seeds/agents/pass-contracts.md +30 -0
- package/seeds/agents/pass-data-safety.md +54 -0
- package/seeds/agents/pass-delivery.md +37 -0
- package/seeds/agents/pass-prod-risk.md +24 -0
- package/seeds/agents/pass-security.md +31 -0
- package/seeds/agents/pass-statelessness.md +27 -0
- package/seeds/agents/pass-ui.md +23 -0
- package/seeds/agents/pass-validate.md +50 -0
- package/seeds/prompts/conversation-system.md +117 -0
- package/seeds/prompts/eod-sweep.md +120 -0
- package/seeds/prompts/pass-common.md +52 -0
- package/skills/companion/adjudicate/SKILL.md +247 -0
- package/skills/companion/evidence/SKILL.md +150 -0
- package/skills/companion/land/SKILL.md +200 -0
- package/skills/companion/replay/SKILL.md +138 -0
- package/skills/companion/setup/SKILL.md +167 -0
- package/skills/companion/survey/SKILL.md +160 -0
- package/skills/selfimprove/README.md +34 -0
- package/skills/selfimprove/SKILL.md +127 -0
- package/skills/selfimprove/agents/openai.yaml +2 -0
- package/skills/selfimprove/commands/selfimprove.md +6 -0
- package/skills/selfimprove/references/fix-loop.md +49 -0
- package/skills/selfimprove/references/ledger.md +20 -0
- package/skills/selfimprove/references/setup.md +40 -0
- package/src/anomalies.ts +566 -0
- package/src/answerworker.ts +251 -0
- package/src/appstamp.ts +65 -0
- package/src/archive/admission.ts +3 -0
- package/src/archive/archivedb.ts +548 -0
- package/src/archive/archiver.ts +1963 -0
- package/src/archive/archivewrite.ts +279 -0
- package/src/archive/bundle.ts +333 -0
- package/src/archive/dbmove.ts +911 -0
- package/src/archive/duplicatecounts.ts +98 -0
- package/src/archive/eligibility.ts +181 -0
- package/src/archive/extract.ts +342 -0
- package/src/archive/fsutil.ts +415 -0
- package/src/archive/gzfile.ts +370 -0
- package/src/archive/kinds.ts +21 -0
- package/src/archive/livecheckpoint.ts +217 -0
- package/src/archive/liveretention.ts +180 -0
- package/src/archive/manifest.ts +519 -0
- package/src/archive/overseer.ts +336 -0
- package/src/archive/piglobal.ts +174 -0
- package/src/archive/plan.ts +612 -0
- package/src/archive/prarchive.ts +984 -0
- package/src/archive/prfiles.ts +406 -0
- package/src/archive/report.ts +252 -0
- package/src/archive/restore.ts +330 -0
- package/src/archive/rows.ts +187 -0
- package/src/archive/seal.ts +630 -0
- package/src/archive/status.ts +719 -0
- package/src/archive/storepass.ts +581 -0
- package/src/backfill.ts +362 -0
- package/src/bench/cost.ts +113 -0
- package/src/bench/exec.ts +90 -0
- package/src/bench/values.ts +13 -0
- package/src/botcontrol.ts +176 -0
- package/src/botworker.ts +953 -0
- package/src/capture.ts +321 -0
- package/src/cases.ts +1789 -0
- package/src/channelfs.ts +26 -0
- package/src/checklist.ts +506 -0
- package/src/ciretry.ts +141 -0
- package/src/cli.ts +2271 -0
- package/src/cliops.ts +384 -0
- package/src/clonedir.ts +15 -0
- package/src/commandeffects.ts +57 -0
- package/src/commands.ts +1678 -0
- package/src/companioninbox.ts +239 -0
- package/src/compare.ts +957 -0
- package/src/config.ts +2050 -0
- package/src/configcheck.ts +133 -0
- package/src/coreext.ts +47 -0
- package/src/daemon.ts +1302 -0
- package/src/debuground.ts +927 -0
- package/src/debugroundpi.ts +262 -0
- package/src/diagnostics.ts +14 -0
- package/src/digest.ts +183 -0
- package/src/dispatch.ts +2250 -0
- package/src/engine/answerguard.ts +27 -0
- package/src/engine/botsdk.ts +336 -0
- package/src/engine/caserunner-sdk.ts +423 -0
- package/src/engine/debugpi.ts +235 -0
- package/src/eod.ts +669 -0
- package/src/eodpinwatch.ts +556 -0
- package/src/escalation.ts +1253 -0
- package/src/eventloop.ts +1045 -0
- package/src/execboundary.ts +633 -0
- package/src/feedback.ts +1162 -0
- package/src/findingscheck.ts +298 -0
- package/src/fsdenied.ts +24 -0
- package/src/ghread.ts +242 -0
- package/src/github.ts +1497 -0
- package/src/homes.ts +175 -0
- package/src/hostroute.ts +53 -0
- package/src/improvements.ts +787 -0
- package/src/install.ts +1103 -0
- package/src/installkind.ts +50 -0
- package/src/ipc/capability.ts +333 -0
- package/src/ipc/client.ts +269 -0
- package/src/ipc/control.ts +90 -0
- package/src/ipc/ghreadshim.ts +94 -0
- package/src/ipc/launcher.ts +65 -0
- package/src/ipc/permits.ts +362 -0
- package/src/ipc/postshim.ts +164 -0
- package/src/ipc/protocol.ts +342 -0
- package/src/ipc/server.ts +371 -0
- package/src/ipc/workerspec.ts +218 -0
- package/src/learner/learner.ts +1655 -0
- package/src/learner/miner.ts +1290 -0
- package/src/learner/packet.ts +340 -0
- package/src/learner/receipt.ts +168 -0
- package/src/learner/status.ts +107 -0
- package/src/ledgercheck.ts +157 -0
- package/src/lessonledger.ts +703 -0
- package/src/lessonselect.ts +888 -0
- package/src/lessonshadow.ts +810 -0
- package/src/levers.ts +393 -0
- package/src/live/projection.ts +491 -0
- package/src/live/publish.ts +92 -0
- package/src/live/read.ts +86 -0
- package/src/livecli.ts +336 -0
- package/src/loginhint.ts +56 -0
- package/src/loginrefresh/atomic.ts +76 -0
- package/src/loginrefresh/lock.ts +104 -0
- package/src/loginrefresh/main.ts +59 -0
- package/src/loginrefresh/pirefresh.ts +57 -0
- package/src/loginrefresh/refresher.ts +326 -0
- package/src/loginrefresh/supervisor.ts +273 -0
- package/src/loginrefresh/types.ts +35 -0
- package/src/memory/context.ts +385 -0
- package/src/memory/datafence.ts +9 -0
- package/src/memory/delivery.ts +171 -0
- package/src/memory/eventtags.ts +80 -0
- package/src/memory/health.ts +953 -0
- package/src/memory/import.ts +664 -0
- package/src/memory/layout.ts +261 -0
- package/src/memory/legacy-file.ts +104 -0
- package/src/memory/lessons.ts +447 -0
- package/src/memory/ovsession.ts +601 -0
- package/src/memory/relayout.ts +335 -0
- package/src/memory/roundactivity.ts +209 -0
- package/src/memory/selection.ts +989 -0
- package/src/memory/shadowstatus.ts +125 -0
- package/src/memory/store.ts +275 -0
- package/src/memory/textidentity.ts +8 -0
- package/src/metrics.ts +1056 -0
- package/src/missingconfig.ts +7 -0
- package/src/npmverbs.ts +264 -0
- package/src/onboard/choices.ts +222 -0
- package/src/onboard/engine.ts +518 -0
- package/src/onboard/launch.ts +115 -0
- package/src/onboard/steps/appslug.ts +265 -0
- package/src/onboard/steps/bringup.ts +482 -0
- package/src/onboard/steps/compose.ts +459 -0
- package/src/onboard/steps/configdelivery.ts +58 -0
- package/src/onboard/steps/configfill.ts +1352 -0
- package/src/onboard/steps/deploysh.ts +105 -0
- package/src/onboard/steps/embeddings.ts +550 -0
- package/src/onboard/steps/escalation.ts +640 -0
- package/src/onboard/steps/githubapp.ts +1414 -0
- package/src/onboard/steps/golive.ts +577 -0
- package/src/onboard/steps/index.ts +71 -0
- package/src/onboard/steps/ingress.ts +907 -0
- package/src/onboard/steps/inventory.ts +526 -0
- package/src/onboard/steps/llmauth.ts +1095 -0
- package/src/onboard/steps/memory.ts +1290 -0
- package/src/onboard/steps/memorykeys.ts +85 -0
- package/src/onboard/steps/preflight.ts +191 -0
- package/src/onboard/steps/proof.ts +624 -0
- package/src/onboard/steps/ssh.ts +377 -0
- package/src/onboard/steps/topology.ts +337 -0
- package/src/onboard/steps/transport.ts +665 -0
- package/src/onboard/steps/verifyup.ts +448 -0
- package/src/onboard/steps/vmdeploy.ts +442 -0
- package/src/onboard/toml.ts +50 -0
- package/src/opencli.ts +591 -0
- package/src/openpr.ts +568 -0
- package/src/openviking/client.ts +1131 -0
- package/src/openviking/context.ts +263 -0
- package/src/openviking/embedder.ts +516 -0
- package/src/openviking/gapsink.ts +63 -0
- package/src/openviking/health.ts +83 -0
- package/src/openviking/index.ts +119 -0
- package/src/openviking/lessonfind.ts +92 -0
- package/src/openviking/probe.ts +129 -0
- package/src/openviking/proc.ts +110 -0
- package/src/openviking/provisionreport.ts +160 -0
- package/src/openviking/reembed.ts +412 -0
- package/src/openviking/relayout.ts +177 -0
- package/src/openviking/sidecar-main.ts +38 -0
- package/src/openviking/sidecar.ts +106 -0
- package/src/openviking/store.ts +2025 -0
- package/src/openviking/supervisor.ts +474 -0
- package/src/openviking/types.ts +174 -0
- package/src/operator-recovery.ts +237 -0
- package/src/operatormessage.ts +52 -0
- package/src/outcomes.ts +1670 -0
- package/src/piauthcopy.ts +12 -0
- package/src/picli.ts +49 -0
- package/src/picwd.ts +25 -0
- package/src/pilogin.ts +37 -0
- package/src/pingpong.ts +1339 -0
- package/src/posting-journal.ts +549 -0
- package/src/posting-outbox.ts +802 -0
- package/src/posting-receipt.ts +324 -0
- package/src/posting.ts +603 -0
- package/src/postops.ts +832 -0
- package/src/pr-activity.ts +20 -0
- package/src/pr-author.ts +6 -0
- package/src/pr-conversation.ts +432 -0
- package/src/pr-session-lifecycle.ts +631 -0
- package/src/preflight.ts +391 -0
- package/src/priorresolve.ts +343 -0
- package/src/qcrbin.ts +186 -0
- package/src/recheck.ts +1775 -0
- package/src/reconcile.ts +1030 -0
- package/src/recordedfindings.ts +27 -0
- package/src/regression.ts +833 -0
- package/src/replay.ts +816 -0
- package/src/requiredpasses.ts +148 -0
- package/src/resumecheck.ts +246 -0
- package/src/reviewcli.ts +787 -0
- package/src/reviewcontext.ts +35 -0
- package/src/reviewdetach.ts +734 -0
- package/src/reviewhistory.ts +427 -0
- package/src/reviewhome.ts +36 -0
- package/src/reviewmemory.ts +133 -0
- package/src/reviewrendercli.ts +139 -0
- package/src/round-work.ts +42 -0
- package/src/runhost.ts +108 -0
- package/src/scanauth.ts +36 -0
- package/src/scanbox.ts +1081 -0
- package/src/scancli.ts +1296 -0
- package/src/scandriverlog.ts +32 -0
- package/src/session-bridge.ts +139 -0
- package/src/session-command-payload.ts +35 -0
- package/src/session-command-supervisor.ts +1142 -0
- package/src/sessionjsonl.ts +88 -0
- package/src/sessions.ts +659 -0
- package/src/setup/adapters.ts +335 -0
- package/src/setup/baselines.ts +110 -0
- package/src/setup/caserunner.ts +611 -0
- package/src/setup/configcommit.ts +443 -0
- package/src/setup/engine.ts +1001 -0
- package/src/setup/facts.ts +627 -0
- package/src/setup/findings.ts +1264 -0
- package/src/setup/history.ts +443 -0
- package/src/setup/interview.ts +243 -0
- package/src/setup/ledger.ts +324 -0
- package/src/setup/pins.ts +66 -0
- package/src/setup/portrait.ts +635 -0
- package/src/setup/presentation.ts +18 -0
- package/src/setup/profile.ts +508 -0
- package/src/setup/replay.ts +370 -0
- package/src/setup/replaybuild.ts +392 -0
- package/src/setup/replayrun.ts +1096 -0
- package/src/setup/replaysource.ts +198 -0
- package/src/setup/retune.ts +415 -0
- package/src/setup/retunelog.ts +95 -0
- package/src/setup/scan.ts +1033 -0
- package/src/setup/scanbuild.ts +168 -0
- package/src/setup/scanfacts.ts +107 -0
- package/src/setup/scanlease.ts +297 -0
- package/src/setup/scanreport.ts +373 -0
- package/src/setup/scanrun.ts +2268 -0
- package/src/setup/scantree.ts +259 -0
- package/src/setup/stage2.ts +926 -0
- package/src/setup/stage2request.ts +347 -0
- package/src/setup/survey.ts +458 -0
- package/src/setup/surveyrun.ts +758 -0
- package/src/setup/textsniff.ts +95 -0
- package/src/setup/trackersink.ts +433 -0
- package/src/setup/triage.ts +768 -0
- package/src/setup/tuning.ts +766 -0
- package/src/setup/unitcut.ts +523 -0
- package/src/singleflight.ts +86 -0
- package/src/slack/announce.ts +911 -0
- package/src/slack/api.ts +303 -0
- package/src/slack/messages.ts +288 -0
- package/src/slack/origin.ts +599 -0
- package/src/slack/policy.ts +354 -0
- package/src/slack/reply.ts +201 -0
- package/src/slack/router.ts +285 -0
- package/src/slack/socket.ts +384 -0
- package/src/slack/types.ts +108 -0
- package/src/sqlitehint.ts +32 -0
- package/src/ssh-observation.ts +30 -0
- package/src/state.ts +8243 -0
- package/src/statemachine.ts +369 -0
- package/src/stubs.ts +68 -0
- package/src/takeover.ts +634 -0
- package/src/takeoverpi.ts +293 -0
- package/src/terminal-failure.ts +41 -0
- package/src/thread-resolution-refusal.ts +2 -0
- package/src/tmux.ts +153 -0
- package/src/trackerid.ts +41 -0
- package/src/transcriptindex.ts +665 -0
- package/src/tui/actions.ts +484 -0
- package/src/tui/alerts.ts +666 -0
- package/src/tui/app.ts +1979 -0
- package/src/tui/archiveops.ts +192 -0
- package/src/tui/autofile.ts +233 -0
- package/src/tui/board.ts +1432 -0
- package/src/tui/candidates.ts +889 -0
- package/src/tui/cellwidth.ts +148 -0
- package/src/tui/changelog-store.ts +503 -0
- package/src/tui/chord.ts +25 -0
- package/src/tui/clipboard.ts +92 -0
- package/src/tui/cmdbar.ts +296 -0
- package/src/tui/companion.ts +1427 -0
- package/src/tui/companionplan.ts +247 -0
- package/src/tui/companiontab.ts +83 -0
- package/src/tui/confighome.ts +155 -0
- package/src/tui/connect.ts +68 -0
- package/src/tui/deploy-ceremony.ts +104 -0
- package/src/tui/deploy-drain.ts +129 -0
- package/src/tui/deploy-process.ts +265 -0
- package/src/tui/deploytab.ts +1523 -0
- package/src/tui/design.ts +125 -0
- package/src/tui/digesttab.ts +214 -0
- package/src/tui/emptystate.ts +39 -0
- package/src/tui/evidence.ts +999 -0
- package/src/tui/feed.ts +604 -0
- package/src/tui/feedbacktab.ts +1077 -0
- package/src/tui/filters.ts +90 -0
- package/src/tui/ghread.ts +321 -0
- package/src/tui/historypull.ts +81 -0
- package/src/tui/inboxpull.ts +236 -0
- package/src/tui/index.ts +1565 -0
- package/src/tui/issuesink.ts +238 -0
- package/src/tui/jsonfile.ts +42 -0
- package/src/tui/keys.ts +109 -0
- package/src/tui/layout.ts +108 -0
- package/src/tui/learning.ts +627 -0
- package/src/tui/lessonswitch.ts +118 -0
- package/src/tui/livecontrol.ts +228 -0
- package/src/tui/memforward.ts +443 -0
- package/src/tui/memincident.ts +363 -0
- package/src/tui/memory.ts +620 -0
- package/src/tui/memtab.ts +606 -0
- package/src/tui/metricstab.ts +1177 -0
- package/src/tui/model.ts +131 -0
- package/src/tui/mouse.ts +98 -0
- package/src/tui/msg.ts +268 -0
- package/src/tui/nativecompanion.ts +417 -0
- package/src/tui/openurl.ts +21 -0
- package/src/tui/paint.ts +511 -0
- package/src/tui/panes.ts +98 -0
- package/src/tui/pipane.ts +219 -0
- package/src/tui/poll-hooks.ts +12 -0
- package/src/tui/poll.ts +147 -0
- package/src/tui/proposals.ts +838 -0
- package/src/tui/prpause.ts +150 -0
- package/src/tui/reload.ts +436 -0
- package/src/tui/remote.ts +413 -0
- package/src/tui/rollover.ts +969 -0
- package/src/tui/scantab.ts +1290 -0
- package/src/tui/setupentry.ts +93 -0
- package/src/tui/sidebar.ts +749 -0
- package/src/tui/sshtriage.ts +510 -0
- package/src/tui/startup.ts +231 -0
- package/src/tui/tabs.ts +45 -0
- package/src/tui/termmirror.ts +224 -0
- package/src/tui/theme.ts +95 -0
- package/src/tui/ticketstab.ts +310 -0
- package/src/tui/tmuxsocket.ts +129 -0
- package/src/tui/trackertickets.ts +84 -0
- package/src/tui/unwedge.ts +286 -0
- package/src/tui/viewer.ts +575 -0
- package/src/tui/viewerinput.ts +173 -0
- package/src/updatenotice.ts +178 -0
- package/src/usage.ts +1154 -0
- package/src/verdicts.ts +4689 -0
- package/src/version.ts +80 -0
- package/src/wakes.ts +476 -0
- package/src/webhook.ts +942 -0
- package/src/webhookheal.ts +276 -0
- package/src/wire.ts +2153 -0
- package/src/worker-session-host.ts +602 -0
- package/src/workerbreaker.ts +156 -0
- package/src/workercontrol.ts +104 -0
- package/src/workerlease.ts +441 -0
- package/src/workerliveness.ts +103 -0
- package/src/workerlog.ts +79 -0
- package/src/workerruntime.ts +30 -0
- package/src/workersupervisor.ts +1538 -0
- package/src/workerusage.ts +42 -0
- package/src/workerworld.ts +427 -0
- package/src/worktrees.ts +1138 -0
- package/tests/fixtures/regression-cases.json +795 -0
- package/tests/fixtures/seed-manifest.json +19 -0
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
# openviking-pi — vendored, patched fork
|
|
2
|
+
|
|
3
|
+
The OpenViking pi extension our sessions load. Vendored, not depended on:
|
|
4
|
+
upstream ships it as an `examples/` directory, not a package, and we need twelve
|
|
5
|
+
behaviour changes that upstream has no reason to make.
|
|
6
|
+
|
|
7
|
+
| | |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Upstream | `github.com/volcengine/OpenViking` |
|
|
10
|
+
| Path | `examples/pi-coding-agent-extension` |
|
|
11
|
+
| Tag | `v0.4.15` |
|
|
12
|
+
| **Base commit** | **`d436baa23c83938b22bb0aab08b0ce48568b5ff4`** |
|
|
13
|
+
| Licence | Apache-2.0 (`LICENSE`, `NOTICE`) — the OpenViking *server* is AGPLv3, `examples/` is not |
|
|
14
|
+
| Entry point | `index.ts` (pi loads TypeScript sources directly) |
|
|
15
|
+
| Loaded by | `src/sessions.ts` → `extensionPaths()` → `pi --extension <path>` |
|
|
16
|
+
|
|
17
|
+
The base commit is pinned in `config.toml [openviking] extension_commit`, next
|
|
18
|
+
to the server `version` it must move with, and `tests/openviking-fork.test.ts`
|
|
19
|
+
fails on drift between the two.
|
|
20
|
+
|
|
21
|
+
## Why a fork rather than configuration
|
|
22
|
+
|
|
23
|
+
Every one of the twelve patches was tried as configuration first and does not
|
|
24
|
+
exist there. The evidence is a spike against a **running v0.4.15 server plus
|
|
25
|
+
the pinned pi 0.84.1**, with transcripts, kept with the project's design
|
|
26
|
+
records. The short version: several of its findings contradict the OpenViking
|
|
27
|
+
docs, which lead the tag, so test against a running server before changing
|
|
28
|
+
anything here.
|
|
29
|
+
|
|
30
|
+
## The patch series
|
|
31
|
+
|
|
32
|
+
Twelve numbered behaviour patches, applied in order over the vendored upstream
|
|
33
|
+
files, plus two unnumbered build patches (0000 scaffolding, 0012 typing). They live in `patches/` as
|
|
34
|
+
`git apply`-able diffs — verified by applying the first thirteen, in order, to a
|
|
35
|
+
pristine `v0.4.15` extraction and diffing the result against this directory:
|
|
36
|
+
byte-identical. (0013 is checked to apply on the tree the first thirteen
|
|
37
|
+
produce; the full pristine-extraction replay has not been re-run with it.) (`patches/` and `upstream.json` are meta and are not themselves
|
|
38
|
+
part of the reproduced tree.) Every hunk they add carries a greppable marker:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
grep -rn "QCR PATCH" extensions/vendor/openviking-pi
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 0000 — vendoring and build conformance *(not a behaviour patch)*
|
|
45
|
+
|
|
46
|
+
* Fork banner in `index.ts`; `NOTICE` (Apache-2.0 §4(b) requires stating that
|
|
47
|
+
the files were modified); this README.
|
|
48
|
+
* `vendor-pi-types.d.ts` — ambient declarations for
|
|
49
|
+
`@earendil-works/pi-coding-agent` (`ExtensionAPI`), `typebox` and
|
|
50
|
+
`@earendil-works/pi-ai`, written while pi was not installed here. Retired
|
|
51
|
+
by 0012. This repo's `tsconfig.json` compiles `extensions/**/*.ts`, so the
|
|
52
|
+
fork is typechecked even though it is never emitted.
|
|
53
|
+
* Three `[QCR build conformance]` fixes in `client.ts` for `strict` +
|
|
54
|
+
`noUncheckedIndexedAccess`.
|
|
55
|
+
* `shared/setup-wizard.mjs`, `shared/plugin-config.mjs`,
|
|
56
|
+
`shared/debug-log.mjs` deleted — unreachable from `index.ts`. The wizard in
|
|
57
|
+
particular is an interactive installer, which has no place in a daemon.
|
|
58
|
+
* **Root-key guard** in `config.ts` (`withoutRootKey`). Upstream's credential
|
|
59
|
+
resolver falls back to `ov.conf`'s `server.root_api_key`, and in our
|
|
60
|
+
container `~/.openviking` is a symlink to the state volume holding the
|
|
61
|
+
*server's own* ov.conf — so the fallback would silently authenticate every
|
|
62
|
+
review session as ROOT. The phase rule is absolute: never an ADMIN or ROOT
|
|
63
|
+
key anywhere (findings §1). If the resolved key is the server's root key it
|
|
64
|
+
is dropped; the client then 401s and the extension reports "not reachable",
|
|
65
|
+
which is loud. Keep this on any rebase.
|
|
66
|
+
* Only the files `index.ts` reaches are vendored — `scripts/`, upstream
|
|
67
|
+
`tests/`, `DESIGN.md`, `TAKEOVER.md` and the upstream `README.md` are not.
|
|
68
|
+
`upstream.json` lists exactly what was taken and what was left.
|
|
69
|
+
* `tsc` also *emits* the fork into `dist/extensions/vendor/openviking-pi/`.
|
|
70
|
+
That output is dead: pi loads the `.ts` here, and the emitted `.js` would not
|
|
71
|
+
even resolve its `.mjs` siblings (they are not copied). Ignore it.
|
|
72
|
+
|
|
73
|
+
### 0001 — `session_before_compact` is deleted
|
|
74
|
+
|
|
75
|
+
`extensions/ledger-pin.ts` is the sole owner of compaction. It re-pins the
|
|
76
|
+
review ledger block that pi's token-driven compaction would otherwise
|
|
77
|
+
summarise away; pi does not document how two registered handlers merge, and
|
|
78
|
+
the failure mode is losing the ledger — the one thing ledger-pin exists to
|
|
79
|
+
protect.
|
|
80
|
+
|
|
81
|
+
**Do not "restore and disable" via `takeover.enabled: false`.** Verified on
|
|
82
|
+
the running server (findings §4.2): upstream registers the handler
|
|
83
|
+
**unconditionally**. The knob only changed what it did — with takeover off it
|
|
84
|
+
still ran a synchronous `sync.commit()` on the compaction path — and takeover
|
|
85
|
+
defaults **on** (`config.takeoverEnabled = config.takeoverEnabled !== false`).
|
|
86
|
+
|
|
87
|
+
The same patch forces `takeoverEnabled = false` in `config.ts`, in code.
|
|
88
|
+
Takeover exists to *replace* compaction; with the handler gone, a takeover
|
|
89
|
+
that still advances its boundary on `turn_end` and rewrites `context` would be
|
|
90
|
+
the worst of both. `config.json` also says `takeover.enabled: false`, which is
|
|
91
|
+
belt-and-braces only — a config knob is something an operator can flip, and
|
|
92
|
+
this one is structural.
|
|
93
|
+
|
|
94
|
+
Touches: `index.ts` (handler + the `compacted` flag it set), `config.ts`,
|
|
95
|
+
`config.json`.
|
|
96
|
+
|
|
97
|
+
### 0002 — no ambient work in a subagent/leaf process
|
|
98
|
+
|
|
99
|
+
A pi-subagents child running one lens pass gets the read tools and nothing
|
|
100
|
+
else: no recall injection, no profile block, no turn sync, no commit.
|
|
101
|
+
|
|
102
|
+
Two reasons. The single-shepherd invariant (`docs/single-shepherd-invariant.md`) makes the
|
|
103
|
+
PR's one main pi the owner of the review; a pass is a stateless evaluator of a
|
|
104
|
+
diff and memory injected under it is unaccounted context. And a commit from a
|
|
105
|
+
leaf would archive the **shepherd's** session, because the OV session id
|
|
106
|
+
reaches the child through the inherited environment.
|
|
107
|
+
|
|
108
|
+
pi-subagents builds child argv with `--no-extensions` (findings §4.3), so a
|
|
109
|
+
leaf structurally never loads this file — that is layer one. This patch is
|
|
110
|
+
layer two, and it keys off **argv**, not env: the child inherits the parent's
|
|
111
|
+
environment, so an env marker would read as "main" inside every leaf. See
|
|
112
|
+
`qcr-leaf.ts` for the flag set and the fail direction (unknown argv ⇒ main).
|
|
113
|
+
|
|
114
|
+
Touches: `qcr-leaf.ts` (new), `index.ts` (five guards + the `registerTools`
|
|
115
|
+
call sites), `tools.ts` (the `leaf` option and the write-tool gate).
|
|
116
|
+
|
|
117
|
+
### 0003 — the extension never creates an OpenViking session
|
|
118
|
+
|
|
119
|
+
`client.createSession()` is deleted, `getSession()` lost its `auto_create`
|
|
120
|
+
query parameter, and `sync.ensureSession()` no longer derives an id from pi's
|
|
121
|
+
session id — it **attaches** to an id the daemon put in the environment
|
|
122
|
+
(`OPENVIKING_SESSION_ID`, or `QCR_OV_SESSION_ID` which survives
|
|
123
|
+
`src/sessions.ts`'s `QCR_`-only argv prefix) and verifies it exists.
|
|
124
|
+
|
|
125
|
+
The daemon owns session lifecycle because creation carries a payload only it
|
|
126
|
+
knows: the extraction-disabling `memory_policy`
|
|
127
|
+
(`{self,peer,working_memory}.enabled = false`). Our deployment configures no
|
|
128
|
+
`vlm`, so a session created without it leaves a **failed background task on
|
|
129
|
+
every commit** (findings §2.3 / §2.5) while looking perfectly healthy.
|
|
130
|
+
|
|
131
|
+
No session id is a normal, non-fatal state: ambient sync is off, the memory
|
|
132
|
+
tools still work. Degrading memory-less is always allowed; blocking a review
|
|
133
|
+
round on memory never is.
|
|
134
|
+
|
|
135
|
+
Touches: `client.ts`, `sync.ts`, `index.ts` (the call site).
|
|
136
|
+
|
|
137
|
+
### 0004 — `viking_write`, the only write tool
|
|
138
|
+
|
|
139
|
+
Upstream's `viking_remember` is **not a write**: it appends
|
|
140
|
+
`[Remember — <category>] …` as a session message and relies on commit-time
|
|
141
|
+
extraction to promote it — i.e. on the `vlm` we deliberately do not configure.
|
|
142
|
+
Verified: nothing durable is produced (findings §3.2). Since sessions
|
|
143
|
+
authoring their own memories is the ratified design, they need a real write
|
|
144
|
+
tool.
|
|
145
|
+
|
|
146
|
+
`viking_write(uri, content, tags?, mode?, expect_hash?, wait?)`:
|
|
147
|
+
|
|
148
|
+
* **`content/batch-write` only, never `content/write`.** For memory targets
|
|
149
|
+
`content/write` appends a server-side `MEMORY_FIELDS` footer that
|
|
150
|
+
`content/read` strips again, so `read → sha256 → replace_if_hash` 409s
|
|
151
|
+
forever and no API returns the stored hash. Files written through
|
|
152
|
+
batch-write carry no footer and round-trip (findings §3.3).
|
|
153
|
+
* **Preconditions always.** `mode: "create"` sends `create_if_absent`;
|
|
154
|
+
`mode: "replace"` **requires** `expect_hash` and sends `replace_if_hash`.
|
|
155
|
+
There is no blind-overwrite path — a memory file is a shared document (the
|
|
156
|
+
EOD curator and the TUI write it too) and a lost update is silent. A 409 is
|
|
157
|
+
reported as a distinct outcome, with instructions to re-read rather than
|
|
158
|
+
retry.
|
|
159
|
+
* **The response carries the hash of the bytes just written**, so a follow-up
|
|
160
|
+
replace needs no read.
|
|
161
|
+
* **Tags** are rendered into the body as a visible `Tags: #a #b` line — plain
|
|
162
|
+
text is what search indexes and what `content/read` returns unmodified — and
|
|
163
|
+
*additionally* pushed to the retrieval tag list via `fs/attrs/set_tags`,
|
|
164
|
+
best-effort, after the durable write. A `set_tags` failure narrows
|
|
165
|
+
retrieval; it never loses the memory.
|
|
166
|
+
* **`wait: false` by default.** `wait` blocks on the semantic/vector refresh,
|
|
167
|
+
measured at ~1.6 **core-seconds** per write on the 2-CPU container quota
|
|
168
|
+
(findings §6). The bytes are durable either way; only searchability lags.
|
|
169
|
+
|
|
170
|
+
The patch also deletes `viking_forget` (curation belongs to the EOD sweep and
|
|
171
|
+
the TUI; retire is a tag+directory convention, not an `rm`, and a fuzzy
|
|
172
|
+
`>0.8`-match delete is a silent data-loss path) and `viking_add_resource` (the
|
|
173
|
+
reviewer reads code and CI results, it does not ingest the web —
|
|
174
|
+
and this was an unreviewed egress path).
|
|
175
|
+
|
|
176
|
+
Remaining tool set: `viking_search`, `viking_read`, `viking_browse`,
|
|
177
|
+
`viking_write`, `viking_archive_expand`. In a leaf, the same minus
|
|
178
|
+
`viking_write`.
|
|
179
|
+
|
|
180
|
+
The pure half — URI/tag validation, body rendering, hashing, request assembly
|
|
181
|
+
— lives in `qcr-write.ts` so it can be unit-tested; `tools.ts` cannot be
|
|
182
|
+
imported from a test because it pulls `typebox` and `@earendil-works/pi-ai`.
|
|
183
|
+
|
|
184
|
+
Touches: `qcr-write.ts` (new), `client.ts` (`batchWrite`, `setTags`),
|
|
185
|
+
`tools.ts`, `index.ts` (the advertised tool list).
|
|
186
|
+
|
|
187
|
+
### 0005 — a second memory namespace (the companion's reviewer key)
|
|
188
|
+
|
|
189
|
+
Upstream builds ONE `OVClient` from ONE key, so a pi reaches exactly the user
|
|
190
|
+
tree that key owns. The ratified design is asymmetric: **the companion
|
|
191
|
+
and the TUI can do everything with memory — full read and write over every piece
|
|
192
|
+
of it** — while automated review sessions hold the reviewer key alone and stay
|
|
193
|
+
confined server-side. The companion container already receives the second USER
|
|
194
|
+
key as `OPENVIKING_REVIEWER_KEY` (`docs/companion-memory-access.md`); this patch
|
|
195
|
+
is what consumes it.
|
|
196
|
+
|
|
197
|
+
`qcr-namespaces.ts` resolves the extra namespaces and routes each tool call to
|
|
198
|
+
one; `index.ts` builds one `OVClient` per namespace (same endpoint, same
|
|
199
|
+
account, same actor peer — only the bearer key and `X-OpenViking-User` differ,
|
|
200
|
+
which is the pairing the server confines) and `tools.ts` addresses whichever one
|
|
201
|
+
the call names. The shape is the TUI's, not a second invention:
|
|
202
|
+
`src/tui/memory.ts` already runs one client per namespace with the namespace
|
|
203
|
+
prefixed onto every address.
|
|
204
|
+
|
|
205
|
+
Four properties are the patch:
|
|
206
|
+
|
|
207
|
+
* **Absence is normal.** No `OPENVIKING_REVIEWER_KEY` ⇒ no second namespace, no
|
|
208
|
+
error, no `namespace` parameter in any tool schema, unprefixed answers — i.e.
|
|
209
|
+
every review session keeps today's behaviour exactly, down to the tool
|
|
210
|
+
descriptions the model sees.
|
|
211
|
+
* **The call says which tree it touches.** `namespace: "reviewer"` or a
|
|
212
|
+
`viking://user/reviewer/…` URI; if both are given and disagree the call is
|
|
213
|
+
REFUSED rather than resolved by a precedence rule, and every answer is
|
|
214
|
+
prefixed `[<namespace>]`. Silently writing the wrong memory tree is the one
|
|
215
|
+
failure here that is both invisible and durable.
|
|
216
|
+
* **`withoutRootKey` covers BOTH keys.** It is generic and `env`-parameterised
|
|
217
|
+
now; the reviewer key goes through it before a client is built. A new key must
|
|
218
|
+
not reopen the hole 0000 closed.
|
|
219
|
+
* **A leaf gains nothing.** `resolveExtraNamespaces` returns `[]` for a leaf,
|
|
220
|
+
`index.ts` does not construct the clients in the leaf path, and
|
|
221
|
+
`registerTools` discards namespaces handed to a leaf. Ambient work (recall,
|
|
222
|
+
sync, commit) stays on the primary client in all cases — a second namespace is
|
|
223
|
+
a TOOL surface only, never a second session.
|
|
224
|
+
|
|
225
|
+
Touches: `qcr-namespaces.ts` (new), `config.ts` (`withoutRootKey` generic +
|
|
226
|
+
`env`), `index.ts` (client construction, health probe, the advertised
|
|
227
|
+
namespaces), `tools.ts` (routing, the `namespace` parameter, prefixed answers).
|
|
228
|
+
|
|
229
|
+
### 0006 — writes that stick, errors that say so (S2)
|
|
230
|
+
|
|
231
|
+
Four changes, one reason: memory writes were dropped and memory failures were
|
|
232
|
+
read as empty answers.
|
|
233
|
+
|
|
234
|
+
* **A busy 409 is retried; a precondition 409 is not.** The server's
|
|
235
|
+
batch-write takes a zero-timeout try-lock on its root directory, and a
|
|
236
|
+
second writer into the same directory gets `409 CONFLICT` with
|
|
237
|
+
`details.conflict_type = "path_busy"` and `retryable: true` — nothing was
|
|
238
|
+
checked or written. The tool used to answer every 409 with "someone else
|
|
239
|
+
edited the file — re-read it, never retry", for files nobody had touched:
|
|
240
|
+
6 of the 8 EOD writes on 2026-10-05 died that way. `batchWrite` and
|
|
241
|
+
`setTags` now retry exactly that answer, jittered and bounded (≤10 s,
|
|
242
|
+
`qcr-honest.ts` `BUSY_RETRY`, the same rule as the daemon's client); a
|
|
243
|
+
hash-precondition 409 carries no `path_busy` and stays a refusal.
|
|
244
|
+
* **`viking_write` takes several entries as ONE batch-write.** `entries[]`
|
|
245
|
+
(or the old `uri` + `content` for one) — one request under the entries'
|
|
246
|
+
deepest common directory, so a day's lessons take the directory lock once
|
|
247
|
+
and land whole or not at all. The frozen EOD seed already said "it batches,
|
|
248
|
+
so write today's entries in one call"; now it is true. A batch is routed by
|
|
249
|
+
its entries' own addresses (`routeWrite`): in a two-key process (the
|
|
250
|
+
companion) a batch of reviewer-tree entries goes to the reviewer key
|
|
251
|
+
without naming the namespace, and one that straddles both trees is refused.
|
|
252
|
+
* **No failure reads as "No results found".** `find()` returns the envelope
|
|
253
|
+
instead of collapsing every failure to `[]`, and `viking_search`,
|
|
254
|
+
`viking_read` and `viking_browse` name a refused key, a dead server or a
|
|
255
|
+
busy directory as what it is (`failureText`): before this, every failed
|
|
256
|
+
memory call came back "No results found." or "No content at …", so an
|
|
257
|
+
authentication outage read as an empty memory. "No content" / "Not found" /
|
|
258
|
+
"Empty directory" now mean exactly that (a NOT_FOUND or an empty answer).
|
|
259
|
+
* **A refused key is re-read once.** The primary client's key is re-resolved
|
|
260
|
+
from its source after an auth failure (`rereadApiKey` in `config.ts`) and
|
|
261
|
+
the request retried once, only if the key actually changed — the daemon
|
|
262
|
+
rewrites the sessions' `ovcli.conf` when its key rotates, and a running
|
|
263
|
+
session used to keep sending the dead one until it died.
|
|
264
|
+
|
|
265
|
+
Touches: `qcr-honest.ts` (new), `qcr-write.ts` (`buildBatchWriteRequest`,
|
|
266
|
+
`routeWrite`),
|
|
267
|
+
`client.ts` (`rekey`, busy retry, `find` / `readLevel` / `lsResponse` /
|
|
268
|
+
`statResponse` envelopes), `config.ts` (`rereadApiKey`), `tools.ts`,
|
|
269
|
+
`index.ts` (the banner, the re-reader).
|
|
270
|
+
|
|
271
|
+
### 0007 — bounded recall, no commit (S3)
|
|
272
|
+
|
|
273
|
+
By the owner's ruling, PR sessions keep this extension, bounded — the
|
|
274
|
+
per-turn recall wait is capped at 500 ms and query expansion is off. Four
|
|
275
|
+
changes:
|
|
276
|
+
|
|
277
|
+
* **The `context` hook waits at most 500 ms for recall.** It used to await
|
|
278
|
+
the whole recall before every provider request: a context search that could
|
|
279
|
+
spend a 15 s expansion fuse, then a `/search/recall` fallback with its own
|
|
280
|
+
10 s, then a raw find — against a server whose local embedder blocks its one
|
|
281
|
+
event loop (search p50 22 s, max 155 s, 2026-10-03..06). Now every request
|
|
282
|
+
of one recall runs on ONE deadline (`qcr-recall.ts` `budgetedFetch`): each
|
|
283
|
+
gets the time left as its own timeout, and once none is left the next
|
|
284
|
+
request is not sent — the fetch throws, which ends the fallback chain where
|
|
285
|
+
it stands. `raceBudget` returns the hook on time whatever the chain is doing.
|
|
286
|
+
A recall that misses the deadline leaves this run without a block; a late
|
|
287
|
+
answer is dropped, never injected into a later turn (that would rewrite a
|
|
288
|
+
message the provider has already cached). A caller may ask for less than
|
|
289
|
+
`RECALL_WAIT_MS`, never more.
|
|
290
|
+
* **Query expansion is off — in code.** `config.json` says
|
|
291
|
+
`"recallQueryExpansion": "off"`, and `config.ts` forces it (and the
|
|
292
|
+
`Configured` flag that makes the request body carry it) after every
|
|
293
|
+
override, including `OPENVIKING_RECALL_QUERY_EXPANSION`, the way PATCH 1
|
|
294
|
+
forces takeover: a ruling is not a knob. Expansion is a model call the
|
|
295
|
+
server makes before retrieval whenever a search carries a session id; this
|
|
296
|
+
deployment runs no model for it. (`ov.conf retrieval.enable_intent = false`
|
|
297
|
+
turns the server's own query planning off too — the entrypoints.)
|
|
298
|
+
* **A retired entry is never recalled.** Retire is a `#retired` header tag and
|
|
299
|
+
the file stays in the indexed root. The daemon publishes the retired URIs
|
|
300
|
+
it sees beside the sessions' ovcli.conf (`QCR_OV_RETIRED_FILE`,
|
|
301
|
+
`src/memory/ovsession.ts` `writeRetiredUris`), and the TUI publishes the
|
|
302
|
+
companion tree's into the state home the companion mounts (the same
|
|
303
|
+
variable, set on the companion's pi); `retiredGuard` sends them as
|
|
304
|
+
`exclude_uris` on a context search (never on list mode, which rejects the
|
|
305
|
+
field) and drops any recalled entry whose own text opens with the tag,
|
|
306
|
+
re-rendering the block in the server's envelope. The header rule is
|
|
307
|
+
`parseHashTags`', pinned against it by test — a `#retired` quoted in prose
|
|
308
|
+
is not a retirement.
|
|
309
|
+
* **Nothing commits a session.**: commit exists to promote session
|
|
310
|
+
notes into memories through an extraction model this deployment does not
|
|
311
|
+
run, so every commit archived the raw notes and produced nothing (143
|
|
312
|
+
archives on the VM, 0 overviews). The 20k-token threshold commit (and the
|
|
313
|
+
session GET after every synced turn that decided it), the commit on
|
|
314
|
+
`session_shutdown` and the `/viking commit` command are gone;
|
|
315
|
+
`SyncManager.commit()` sends nothing and queues nothing, and a commit an
|
|
316
|
+
older build queued on disk is answered with a final refusal on replay, so
|
|
317
|
+
it is dropped, never sent. Per-turn sync STAYS (same ruling); the raw tier ages out
|
|
318
|
+
by the daemon's DELETE when the PR closes (and its reconcile sweep).
|
|
319
|
+
|
|
320
|
+
Touches: `qcr-recall.ts` (new), `recall.ts` (the bounded, retired-aware
|
|
321
|
+
search), `sync.ts` (no commit, the replay refusal), `index.ts` (the hook's
|
|
322
|
+
budget, the retired list, no shutdown commit, the command, the banner),
|
|
323
|
+
`config.ts` (expansion forced off), `config.json`.
|
|
324
|
+
|
|
325
|
+
### 0008 — PR-derived recall (S5)
|
|
326
|
+
|
|
327
|
+
The per-prompt recall queried with the WHOLE delivered message. In a PR
|
|
328
|
+
session that is a 55–80k-character round order, and the local embedder (S4)
|
|
329
|
+
embeds a query's first 128 tokens — the round template's fixed header, the
|
|
330
|
+
same for every PR — so every PR recalled the same ops notes and feedback
|
|
331
|
+
events, from every scope. The daemon already builds a PR-derived query for the
|
|
332
|
+
round's own context block (`roundContextQuery`: the PR title plus the areas
|
|
333
|
+
and file kinds the PR touches) and now publishes it, with the memory areas a
|
|
334
|
+
round may search (`experiences/` alone, the §1 layout built in S5), to
|
|
335
|
+
a per-session file (`QCR_OV_RECALL_HINT_FILE`, `src/memory/ovsession.ts`
|
|
336
|
+
`writeRecallHint`, rewritten at every round's dispatch).
|
|
337
|
+
|
|
338
|
+
* **A PR session recalls for its PR.** `before_agent_start` reads the hint
|
|
339
|
+
(`qcr-hint.ts` `readRecallHint` — total, and fail-closed to the old
|
|
340
|
+
behaviour: no file, a garbled one, an empty query or no usable area = no
|
|
341
|
+
hint) and queues the hint's query instead of the prompt.
|
|
342
|
+
* **…and only where a round may look.** `scopeGuard` sends a context search
|
|
343
|
+
or the `/search/recall` preset quotas naming the hint's areas alone, drops
|
|
344
|
+
any recalled entry from outside them (re-rendering the block in the
|
|
345
|
+
server's envelope), and keeps only in-area memories from the raw-find
|
|
346
|
+
fallback.
|
|
347
|
+
* **Nothing else changes.** No hint (the overseer, the companion, a session
|
|
348
|
+
born before its first round): the prompt, unscoped, as upstream. PATCH 7's
|
|
349
|
+
500 ms budget, retired-entry exclusion and no-commit rules wrap the same
|
|
350
|
+
chain.
|
|
351
|
+
|
|
352
|
+
Touches: `qcr-hint.ts` (new), `recall.ts` (`queueSearch`'s scope, the guard
|
|
353
|
+
in the chain), `index.ts` (the hint, the banner).
|
|
354
|
+
|
|
355
|
+
### 0009 — a PR session's memory tools stay in the round's areas (S7)
|
|
356
|
+
|
|
357
|
+
PATCH 8 kept the per-prompt RECALL inside the round's areas, but a PR session
|
|
358
|
+
also holds the explicit tools, and `viking_search` sent whatever `scope` the
|
|
359
|
+
model chose straight to the server — so a review round could reach the
|
|
360
|
+
daemon's finding cases (`finding-cases/`, which quote PR authors' replies: untrusted
|
|
361
|
+
text) and the full-text `[feedback]` events, both of which the spec keeps out
|
|
362
|
+
of a round until S9 decides how they are delivered.
|
|
363
|
+
|
|
364
|
+
* **Scoped where the daemon publishes a hint.** `toolScopeAreas` (qcr-hint.ts)
|
|
365
|
+
reads the same per-session file as PATCH 8 — set on a PR session only — and
|
|
366
|
+
answers its areas; a PR session whose hint cannot be read yet FAILS CLOSED
|
|
367
|
+
to the round's areas (`DEFAULT_ROUND_AREAS`, pinned equal to the daemon's
|
|
368
|
+
`ROUND_SEARCH_AREAS`). No hint variable (the overseer, the companion):
|
|
369
|
+
unscoped, as upstream.
|
|
370
|
+
* **What the tools do in scope.** `viking_search` keeps only hits inside the
|
|
371
|
+
areas and refuses a `scope` that names another area; `viking_read` reads
|
|
372
|
+
only inside them; `viking_browse` lists them, the memories root (area names
|
|
373
|
+
only) and anything outside memories, never another area. A `.`/`..` segment
|
|
374
|
+
or an encoded dot is refused outright. The system prompt says so in one
|
|
375
|
+
line, so a refusal is never a surprise.
|
|
376
|
+
* **Nothing else changes.** `viking_write` is untouched (a PR session writes
|
|
377
|
+
where the conversation template tells it to; the server confines the key);
|
|
378
|
+
`viking_archive_expand` addresses sessions, not memory.
|
|
379
|
+
|
|
380
|
+
Touches: `qcr-hint.ts` (the scope rules), `tools.ts` (the three read tools),
|
|
381
|
+
`index.ts` (the provider, the prompt line, the banner).
|
|
382
|
+
|
|
383
|
+
### 0010 — typed lessons: `viking_write` writes the header (S8)
|
|
384
|
+
|
|
385
|
+
The EOD curator wrote its lessons as prose — 10 of 17 with no machine header,
|
|
386
|
+
the rest spelling type, lens and evidence three ways in the body — so nothing
|
|
387
|
+
could tell which lens a lesson was for, whether it said "look for X" or "do not
|
|
388
|
+
raise X", or which candidate it adopted.
|
|
389
|
+
|
|
390
|
+
* **A structured `lesson` parameter** (top level for one entry, and per entry
|
|
391
|
+
of `entries`): `{kind, lens, class, paths, evidence}`. The tool renders
|
|
392
|
+
`#lesson kind=… lens=… class=… paths=… evidence=…` as the entry's FIRST line
|
|
393
|
+
(`qcr-lesson.ts`), tags the entry `lesson`, and writes the author's prose
|
|
394
|
+
after it. The daemon's reader is `src/memory/lessons.ts` `parseLesson`; the
|
|
395
|
+
fork test pins the two against each other.
|
|
396
|
+
* **Refusals, before anything is sent:** an unknown lens id (the list is
|
|
397
|
+
`LESSON_LENS_IDS`, pinned equal to the daemon's `ALL_PASSES`; a short
|
|
398
|
+
`baseline` reads as `pass-baseline`), a kind outside the four, a class that
|
|
399
|
+
is not a slug, a glob or ref with whitespace or a comma, no evidence, a
|
|
400
|
+
target outside `memories/experiences/`, and `content` that opens with a
|
|
401
|
+
header of its own.
|
|
402
|
+
* **Nothing else changes.** An entry without `lesson` is written exactly as
|
|
403
|
+
before; a batch may mix the two.
|
|
404
|
+
|
|
405
|
+
Touches: `qcr-lesson.ts` (new), `qcr-write.ts` (the builder), `tools.ts` (the
|
|
406
|
+
schema and one guideline).
|
|
407
|
+
|
|
408
|
+
### 0011 — the review session's memory boundary, closed (integration review)
|
|
409
|
+
|
|
410
|
+
PATCHES 8 and 9 drew the boundary — a PR session's recall and tools reach the
|
|
411
|
+
round's areas (`experiences/`) only — and the integration review found three
|
|
412
|
+
ways through it once the case backfill filled `finding-cases/`:
|
|
413
|
+
|
|
414
|
+
* **The recall failed OPEN.** With no hint file yet — a recheck or ping-pong
|
|
415
|
+
wake before the PR's next full round, i.e. every live PR right after the
|
|
416
|
+
deploy, or a hint write that failed — the recall searched the whole tree,
|
|
417
|
+
cases and full-text `[feedback]` events included, while the tools in the
|
|
418
|
+
same state already failed closed. `recallScope` (qcr-hint.ts) now asks with
|
|
419
|
+
the prompt INSIDE the round's areas whenever the hint variable is set; only a
|
|
420
|
+
session without the variable (the overseer, the companion) is unscoped.
|
|
421
|
+
* **A scoped search ranked across the tree and filtered afterwards.** `find`
|
|
422
|
+
answered the top K of the WHOLE user root and the tool dropped what lay
|
|
423
|
+
outside the areas — with ~1,800 cases beside ~180 curated entries, mostly
|
|
424
|
+
"No results found." `viking_search` and the recall's raw-find fallback now
|
|
425
|
+
send the areas as the server's `target_uri` LIST (`scopedFindTargets`;
|
|
426
|
+
`client.find` takes a list), so the server ranks inside them; the fallback's
|
|
427
|
+
skills source is not asked at all in a scoped session. The post-filter stays
|
|
428
|
+
as the belt.
|
|
429
|
+
* **A PR session could write what reaches every round.** `viking_write` in a
|
|
430
|
+
scoped session refuses `experiences/`, `preferences/` (the pinned head
|
|
431
|
+
included) and `finding-cases/` (`scopedWriteRefusal`): a review session
|
|
432
|
+
reads untrusted PR text, and a lesson is curated from people's outcomes, not
|
|
433
|
+
from its conclusions. And in ANY session a hand-typed `#lesson` header (no
|
|
434
|
+
`lesson` parameter) is refused (`handTypedLessonRefusal`) — the header is the
|
|
435
|
+
tool's to write; a typed one would adopt learner candidates unchecked.
|
|
436
|
+
|
|
437
|
+
Touches: `qcr-hint.ts`, `qcr-lesson.ts`, `qcr-write.ts`, `tools.ts`,
|
|
438
|
+
`index.ts`, `client.ts`.
|
|
439
|
+
|
|
440
|
+
### 0012 — typechecked against the real pi *(not a behaviour patch)*
|
|
441
|
+
|
|
442
|
+
pi and pi-ai are exact dependencies of this repo (package.json), so the fork is
|
|
443
|
+
typechecked against pi's own types and `vendor-pi-types.d.ts` is deleted. The
|
|
444
|
+
one type error that surfaced is `event.prompt` in `index.ts`'s
|
|
445
|
+
`before_agent_start` hook: pi 1.3.0 types that event as a union whose custom
|
|
446
|
+
variant has no `prompt`. The read is cast, not changed, so a custom event still
|
|
447
|
+
passes `undefined` exactly as before. Marked `[QCR build conformance]`.
|
|
448
|
+
|
|
449
|
+
Touches: `index.ts`, `vendor-pi-types.d.ts` (deleted), this README.
|
|
450
|
+
|
|
451
|
+
### 0013 — `createOpenViking(cfg)`: a factory over a value (`[QCR PATCH 12]`)
|
|
452
|
+
|
|
453
|
+
The extension no longer reads the process. `index.ts` exports
|
|
454
|
+
`createOpenViking(cfg): ExtensionFactory`, and its default export is the shim:
|
|
455
|
+
it reads the process once (`qcr-shim.ts`) and calls the factory, so a tmux pi
|
|
456
|
+
that loads this file by path and an SDK session that attaches the factory run
|
|
457
|
+
the same code. `cfg` (`OpenVikingConfig`) carries the resolved `OVConfig`, the
|
|
458
|
+
leaf flag, the extra namespaces' credentials, the credential env the key
|
|
459
|
+
re-reader resolves from, the daemon's OV session id, the cwd, the retired-URI
|
|
460
|
+
and recall-hint files, the debug log and the offline queue's settings.
|
|
461
|
+
|
|
462
|
+
* **The overlay moves.** The env overlay in `config.ts` `loadConfig` (the
|
|
463
|
+
workspace-peer and recall overrides) is now `envOverlay` in `qcr-shim.ts`,
|
|
464
|
+
passed to `loadConfig` as an option and applied at the same point. Its first
|
|
465
|
+
five lines re-assigned what the credential resolver had already read from the
|
|
466
|
+
same env, and are dropped. Old and new `loadConfig` were compared on ten
|
|
467
|
+
environments and agree field for field.
|
|
468
|
+
* **The pending queue's home moves.** `shared/pending-queue.mjs` no longer
|
|
469
|
+
reads `OPENVIKING_PENDING_*` or the home directory; each function takes the
|
|
470
|
+
queue's `{ dir, maxRetries?, ttlDays?, replayLimit? }`. Without a `dir` the
|
|
471
|
+
queue is off. `SyncManager` takes it, and the debug log, as constructor
|
|
472
|
+
options.
|
|
473
|
+
* **Leaf detection is shim-only.** `isLeafProcess(argv, env)` has no process
|
|
474
|
+
defaults and only `qcr-shim.ts` calls it; the factory takes `leaf` as a
|
|
475
|
+
value. The stale comment in `qcr-leaf.ts` (it said a leaf "structurally
|
|
476
|
+
never loads this file" and cited pi 0.84.1 as the pin) is rewritten.
|
|
477
|
+
* **Every hook gets a deadline and a catch** (`qcr-hooks.ts`
|
|
478
|
+
`boundedHook`, defaults in `HOOK_TIMEOUT_MS`). A hook that throws or misses
|
|
479
|
+
its deadline carries on as though it had done nothing, and says so in the
|
|
480
|
+
debug log. `tool_call` is a guard and fails closed instead: a failure
|
|
481
|
+
refuses the call, which is also what pi does with a throwing handler.
|
|
482
|
+
|
|
483
|
+
Not moved: `shared/credentials.mjs` still resolves `~/.openviking` through the
|
|
484
|
+
home directory and `shared/recall-core.mjs` still reads `OPENVIKING_STATE_DIR`
|
|
485
|
+
for its legacy cache; both are upstream files outside this patch's scope.
|
|
486
|
+
|
|
487
|
+
Touches: `index.ts`, `config.ts`, `sync.ts`, `qcr-leaf.ts`, `qcr-shim.ts`
|
|
488
|
+
(new), `qcr-hooks.ts` (new), `shared/pending-queue.mjs` and `.d.mts`, `NOTICE`,
|
|
489
|
+
this README.
|
|
490
|
+
|
|
491
|
+
## Rebasing onto a newer upstream
|
|
492
|
+
|
|
493
|
+
```sh
|
|
494
|
+
git clone --filter=blob:none https://github.com/volcengine/OpenViking /tmp/ov
|
|
495
|
+
git -C /tmp/ov checkout <new-tag>
|
|
496
|
+
# 1. Refresh the vendored files (only the ones listed by `git ls-files` here):
|
|
497
|
+
# copy examples/pi-coding-agent-extension/{index,config,client,recall,sync,
|
|
498
|
+
# tools,takeover}.ts, config.json, lib/, shared/ and examples/LICENSE.
|
|
499
|
+
# 2. Re-apply, in order:
|
|
500
|
+
for p in extensions/vendor/openviking-pi/patches/0*.patch; do
|
|
501
|
+
git apply --3way "$p" || echo "RESOLVE: $p"
|
|
502
|
+
done
|
|
503
|
+
# 3. Re-verify all eleven patches, then:
|
|
504
|
+
timeout 900 npm test && npm run build
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
Then update `extension_commit` and `version` in `config.toml [openviking]`,
|
|
508
|
+
the base commit in `NOTICE` and in the table above, and re-run the live
|
|
509
|
+
verification below. A bump re-verifies **all ten** patches — a patch that no
|
|
510
|
+
longer applies is a patch whose reason may have changed, not a patch to drop.
|
|
511
|
+
|
|
512
|
+
`tests/openviking-fork.test.ts` is the guard rail: it asserts the ten patches
|
|
513
|
+
are still present (markers, and the *absence* of what each one removed) and
|
|
514
|
+
that the pinned commit here matches `config.toml`. It cannot tell you whether
|
|
515
|
+
upstream grew a *new* compaction handler or a *new* write tool — read the
|
|
516
|
+
upstream diff for those two things specifically.
|
|
517
|
+
|
|
518
|
+
## What is verified, and what is not
|
|
519
|
+
|
|
520
|
+
Verified on a running v0.4.15 + pi 0.84.1 (findings, with transcripts):
|
|
521
|
+
the extension loads on our pinned pi and registers its tools; `takeover.enabled
|
|
522
|
+
: false` does not unhook `session_before_compact`; `viking_remember` is not a
|
|
523
|
+
durable write; `batch-write` preconditions 409 correctly and the
|
|
524
|
+
`MEMORY_FIELDS` footgun is real; pi-subagents children carry `--no-extensions`;
|
|
525
|
+
`OPENVIKING_PEER_ID` overrides the path-derived peer id.
|
|
526
|
+
|
|
527
|
+
Also verified, for 0005: the reviewer USER key reaches `user/reviewer/` and is
|
|
528
|
+
refused on `user/companion/` when paired with the other user's header — that is
|
|
529
|
+
the four-cell matrix `node scripts/companion-memory-forward.mjs verify` runs,
|
|
530
|
+
and it is what makes two USER keys safe. What it proves is the SERVER's
|
|
531
|
+
confinement, not this extension's plumbing.
|
|
532
|
+
|
|
533
|
+
**Not yet verified end to end** (needs a session smoke on the VM, where a real
|
|
534
|
+
model provider exists): that a `viking_write` entry is readable through the
|
|
535
|
+
daemon's client against a live server, and that the ledger block survives a
|
|
536
|
+
real compaction with this fork loaded. The second half of that is the open
|
|
537
|
+
item — "does a no-op second handler drop ledger-pin's pinned block?" —
|
|
538
|
+
which this patch series makes moot by construction rather than by measurement.
|
|
539
|
+
Fold both into `npm run smoke:session`.
|
|
540
|
+
|
|
541
|
+
Also unverified live, for 0007: that pi awaits the `context` handler before
|
|
542
|
+
the provider request exactly as upstream's comment says (the 500 ms bound is
|
|
543
|
+
unit-tested on the recall manager and pinned structurally on the hook), and
|
|
544
|
+
that the pinned server takes `exclude_uris` on the context face as the
|
|
545
|
+
daemon's own search already does. Fold both into the session smoke.
|
|
546
|
+
|
|
547
|
+
Also unverified live: a `viking_read`/`viking_write` through the SECOND
|
|
548
|
+
(reviewer) client from the companion's pi. The key and the server-side
|
|
549
|
+
confinement are proven; the extension-side routing is covered by unit tests
|
|
550
|
+
only. Fold it into the companion smoke (`npm run smoke:companion`).
|