@caupulican/pi-adaptative 0.81.38 → 0.81.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +131 -0
- package/README.md +2 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/README.md +18 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts +133 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +198 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +311 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +31 -2
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +823 -79
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +1043 -86
- package/dist/bundled-resources/runtimes/pi-shell-engine/commands/__init__.py +43 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/commands/fs.py +270 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/commands/search.py +252 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/commands/strings.py +399 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/commands/text.py +575 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/context.py +52 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/errors.py +49 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/exec.py +734 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/expand.py +238 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/main.py +132 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/nodes.py +116 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/parser.py +287 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/proc.py +137 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/state.py +100 -0
- package/dist/bundled-resources/runtimes/pi-shell-engine/tokens.py +579 -0
- package/dist/bundled-resources/skills/tool-call-repair/SKILL.md +19 -9
- package/dist/bundled-resources/skills/tool-call-repair/references/failure-grammar.md +22 -5
- package/dist/bundled-resources/skills/tool-call-repair/references/repair-catalogue.md +7 -7
- package/dist/bundled-resources/skills/tool-call-repair/references/text-protocol-grammar.md +28 -7
- package/dist/cli/args.d.ts +5 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +24 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-directory-layout.d.ts +15 -0
- package/dist/core/agent-directory-layout.d.ts.map +1 -0
- package/dist/core/agent-directory-layout.js +72 -0
- package/dist/core/agent-directory-layout.js.map +1 -0
- package/dist/core/agent-paths.d.ts +66 -0
- package/dist/core/agent-paths.d.ts.map +1 -0
- package/dist/core/agent-paths.js +170 -0
- package/dist/core/agent-paths.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +52 -8
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +397 -79
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +4 -3
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +255 -103
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +754 -1173
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autonomy/approval-gate.d.ts +3 -2
- package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
- package/dist/core/autonomy/approval-gate.js +6 -28
- package/dist/core/autonomy/approval-gate.js.map +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
- package/dist/core/autonomy/bounded-completion.js +1 -1
- package/dist/core/autonomy/bounded-completion.js.map +1 -1
- package/dist/core/autonomy/contracts.d.ts +26 -9
- package/dist/core/autonomy/contracts.d.ts.map +1 -1
- package/dist/core/autonomy/contracts.js.map +1 -1
- package/dist/core/autonomy/foreground-envelope.d.ts +8 -2
- package/dist/core/autonomy/foreground-envelope.d.ts.map +1 -1
- package/dist/core/autonomy/foreground-envelope.js +8 -25
- package/dist/core/autonomy/foreground-envelope.js.map +1 -1
- package/dist/core/autonomy/gates.d.ts.map +1 -1
- package/dist/core/autonomy/gates.js +8 -10
- package/dist/core/autonomy/gates.js.map +1 -1
- package/dist/core/autonomy/lane-private-paths.d.ts +2 -0
- package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -0
- package/dist/core/autonomy/lane-private-paths.js +16 -0
- package/dist/core/autonomy/lane-private-paths.js.map +1 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts +10 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +46 -8
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/autonomy/lane-tracker.d.ts +24 -1
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +43 -1
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/autonomy/risk-assessment.d.ts +1 -2
- package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
- package/dist/core/autonomy/risk-assessment.js +1 -123
- package/dist/core/autonomy/risk-assessment.js.map +1 -1
- package/dist/core/autonomy/session-lane-record.d.ts +4 -4
- package/dist/core/autonomy/session-lane-record.d.ts.map +1 -1
- package/dist/core/autonomy/session-lane-record.js +16 -29
- package/dist/core/autonomy/session-lane-record.js.map +1 -1
- package/dist/core/autonomy/telemetry-events.d.ts +1 -1
- package/dist/core/autonomy/telemetry-events.d.ts.map +1 -1
- package/dist/core/autonomy/telemetry-events.js +1 -1
- package/dist/core/autonomy/telemetry-events.js.map +1 -1
- package/dist/core/autonomy-telemetry.d.ts +7 -7
- package/dist/core/autonomy-telemetry.d.ts.map +1 -1
- package/dist/core/autonomy-telemetry.js +9 -9
- package/dist/core/autonomy-telemetry.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +90 -156
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +192 -968
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/bash-execution-controller.d.ts +4 -0
- package/dist/core/bash-execution-controller.d.ts.map +1 -1
- package/dist/core/bash-execution-controller.js +7 -1
- package/dist/core/bash-execution-controller.js.map +1 -1
- package/dist/core/capability-contract.d.ts +4 -0
- package/dist/core/capability-contract.d.ts.map +1 -0
- package/dist/core/capability-contract.js +28 -0
- package/dist/core/capability-contract.js.map +1 -0
- package/dist/core/compaction-controller.d.ts +90 -0
- package/dist/core/compaction-controller.d.ts.map +1 -0
- package/dist/core/compaction-controller.js +452 -0
- package/dist/core/compaction-controller.js.map +1 -0
- package/dist/core/compaction-support.d.ts +24 -13
- package/dist/core/compaction-support.d.ts.map +1 -1
- package/dist/core/compaction-support.js +43 -7
- package/dist/core/compaction-support.js.map +1 -1
- package/dist/core/context/context-artifacts.d.ts +6 -2
- package/dist/core/context/context-artifacts.d.ts.map +1 -1
- package/dist/core/context/context-artifacts.js +34 -2
- package/dist/core/context/context-artifacts.js.map +1 -1
- package/dist/core/context/context-audit.d.ts +33 -1
- package/dist/core/context/context-audit.d.ts.map +1 -1
- package/dist/core/context/context-audit.js +31 -5
- package/dist/core/context/context-audit.js.map +1 -1
- package/dist/core/context/context-store-retention.d.ts +8 -2
- package/dist/core/context/context-store-retention.d.ts.map +1 -1
- package/dist/core/context/context-store-retention.js +158 -35
- package/dist/core/context/context-store-retention.js.map +1 -1
- package/dist/core/context/okf-memory.d.ts.map +1 -1
- package/dist/core/context/okf-memory.js +9 -11
- package/dist/core/context/okf-memory.js.map +1 -1
- package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -1
- package/dist/core/context/sqlite-runtime-index.js +6 -8
- package/dist/core/context/sqlite-runtime-index.js.map +1 -1
- package/dist/core/context-gc.d.ts +3 -0
- package/dist/core/context-gc.d.ts.map +1 -1
- package/dist/core/context-gc.js +26 -6
- package/dist/core/context-gc.js.map +1 -1
- package/dist/core/context-pipeline.d.ts +26 -4
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +146 -18
- package/dist/core/context-pipeline.js.map +1 -1
- package/dist/core/cost-guard.d.ts +19 -3
- package/dist/core/cost-guard.d.ts.map +1 -1
- package/dist/core/cost-guard.js +18 -3
- package/dist/core/cost-guard.js.map +1 -1
- package/dist/core/default-tool-surface.d.ts.map +1 -1
- package/dist/core/default-tool-surface.js +1 -0
- package/dist/core/default-tool-surface.js.map +1 -1
- package/dist/core/delegation/managed-lane-controller.d.ts +34 -0
- package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -0
- package/dist/core/delegation/managed-lane-controller.js +217 -0
- package/dist/core/delegation/managed-lane-controller.js.map +1 -0
- package/dist/core/delegation/session-worker-claim.d.ts +44 -0
- package/dist/core/delegation/session-worker-claim.d.ts.map +1 -0
- package/dist/core/delegation/session-worker-claim.js +98 -0
- package/dist/core/delegation/session-worker-claim.js.map +1 -0
- package/dist/core/delegation/worker-actions.d.ts +7 -5
- package/dist/core/delegation/worker-actions.d.ts.map +1 -1
- package/dist/core/delegation/worker-actions.js +20 -4
- package/dist/core/delegation/worker-actions.js.map +1 -1
- package/dist/core/delegation/worker-claim.d.ts +56 -0
- package/dist/core/delegation/worker-claim.d.ts.map +1 -0
- package/dist/core/delegation/worker-claim.js +239 -0
- package/dist/core/delegation/worker-claim.js.map +1 -0
- package/dist/core/delegation/worker-delegation-controller.d.ts +110 -0
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -0
- package/dist/core/delegation/worker-delegation-controller.js +861 -0
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -0
- package/dist/core/delegation/worker-delegation-request.d.ts +11 -0
- package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -0
- package/dist/core/delegation/worker-delegation-request.js +2 -0
- package/dist/core/delegation/worker-delegation-request.js.map +1 -0
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts +40 -0
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -0
- package/dist/core/delegation/worker-dispatch-scheduler.js +93 -0
- package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -0
- package/dist/core/delegation/worker-execution-policy.d.ts +62 -0
- package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -0
- package/dist/core/delegation/worker-execution-policy.js +160 -0
- package/dist/core/delegation/worker-execution-policy.js.map +1 -0
- package/dist/core/delegation/worker-lane-projection.d.ts +14 -0
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -0
- package/dist/core/delegation/worker-lane-projection.js +100 -0
- package/dist/core/delegation/worker-lane-projection.js.map +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts +97 -0
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -0
- package/dist/core/delegation/worker-lifecycle.js +339 -0
- package/dist/core/delegation/worker-lifecycle.js.map +1 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts +36 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -0
- package/dist/core/delegation/worker-notification-coordinator.js +90 -0
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -0
- package/dist/core/delegation/worker-profile-resolver.d.ts +55 -0
- package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -0
- package/dist/core/delegation/worker-profile-resolver.js +113 -0
- package/dist/core/delegation/worker-profile-resolver.js.map +1 -0
- package/dist/core/delegation/worker-runner.d.ts +25 -14
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +122 -53
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-task-label.d.ts +3 -0
- package/dist/core/delegation/worker-task-label.d.ts.map +1 -0
- package/dist/core/delegation/worker-task-label.js +11 -0
- package/dist/core/delegation/worker-task-label.js.map +1 -0
- package/dist/core/doctor.d.ts +8 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +32 -1
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +5 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +68 -13
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +7 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/storage.d.ts +8 -0
- package/dist/core/extensions/storage.d.ts.map +1 -0
- package/dist/core/extensions/storage.js +28 -0
- package/dist/core/extensions/storage.js.map +1 -0
- package/dist/core/extensions/types.d.ts +101 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/failure-corpus.d.ts +1 -15
- package/dist/core/failure-corpus.d.ts.map +1 -1
- package/dist/core/failure-corpus.js +9 -37
- package/dist/core/failure-corpus.js.map +1 -1
- package/dist/core/foreground-recovery-controller.d.ts +52 -0
- package/dist/core/foreground-recovery-controller.d.ts.map +1 -0
- package/dist/core/foreground-recovery-controller.js +111 -0
- package/dist/core/foreground-recovery-controller.js.map +1 -0
- package/dist/core/gateways/channel-provider.d.ts +3 -0
- package/dist/core/gateways/channel-provider.d.ts.map +1 -1
- package/dist/core/gateways/channel-provider.js +31 -6
- package/dist/core/gateways/channel-provider.js.map +1 -1
- package/dist/core/goal-loop-controller.d.ts +17 -1
- package/dist/core/goal-loop-controller.d.ts.map +1 -1
- package/dist/core/goal-loop-controller.js +79 -11
- package/dist/core/goal-loop-controller.js.map +1 -1
- package/dist/core/goals/goal-acceptance.d.ts +11 -0
- package/dist/core/goals/goal-acceptance.d.ts.map +1 -0
- package/dist/core/goals/goal-acceptance.js +25 -0
- package/dist/core/goals/goal-acceptance.js.map +1 -0
- package/dist/core/goals/goal-auto-continue-controller.d.ts +27 -0
- package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -0
- package/dist/core/goals/goal-auto-continue-controller.js +93 -0
- package/dist/core/goals/goal-auto-continue-controller.js.map +1 -0
- package/dist/core/goals/goal-continuation-controller.d.ts +48 -2
- package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-controller.js +87 -0
- package/dist/core/goals/goal-continuation-controller.js.map +1 -1
- package/dist/core/goals/goal-continuation-defaults.d.ts +39 -0
- package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-defaults.js +42 -0
- package/dist/core/goals/goal-continuation-defaults.js.map +1 -1
- package/dist/core/goals/goal-continuation-prompt.d.ts +5 -1
- package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-prompt.js +56 -15
- package/dist/core/goals/goal-continuation-prompt.js.map +1 -1
- package/dist/core/goals/goal-lifecycle.d.ts +20 -0
- package/dist/core/goals/goal-lifecycle.d.ts.map +1 -0
- package/dist/core/goals/goal-lifecycle.js +17 -0
- package/dist/core/goals/goal-lifecycle.js.map +1 -0
- package/dist/core/goals/goal-runtime-snapshot.d.ts +105 -4
- package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -1
- package/dist/core/goals/goal-runtime-snapshot.js +91 -6
- package/dist/core/goals/goal-runtime-snapshot.js.map +1 -1
- package/dist/core/goals/goal-state.d.ts +90 -1
- package/dist/core/goals/goal-state.d.ts.map +1 -1
- package/dist/core/goals/goal-state.js +78 -15
- package/dist/core/goals/goal-state.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +58 -2
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +82 -6
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/goals/session-goal-state.d.ts +13 -6
- package/dist/core/goals/session-goal-state.d.ts.map +1 -1
- package/dist/core/goals/session-goal-state.js +20 -28
- package/dist/core/goals/session-goal-state.js.map +1 -1
- package/dist/core/human-input.d.ts +100 -0
- package/dist/core/human-input.d.ts.map +1 -0
- package/dist/core/human-input.js +362 -0
- package/dist/core/human-input.js.map +1 -0
- package/dist/core/index.d.ts +9 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +9 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/{telemetry.d.ts → install-telemetry.d.ts} +1 -1
- package/dist/core/install-telemetry.d.ts.map +1 -0
- package/dist/core/{telemetry.js → install-telemetry.js} +1 -1
- package/dist/core/install-telemetry.js.map +1 -0
- package/dist/core/keybindings.d.ts +27 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +34 -8
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/learning/learning-audit.d.ts +2 -4
- package/dist/core/learning/learning-audit.d.ts.map +1 -1
- package/dist/core/learning/learning-audit.js +9 -29
- package/dist/core/learning/learning-audit.js.map +1 -1
- package/dist/core/learning/learning-gate.d.ts.map +1 -1
- package/dist/core/learning/learning-gate.js +1 -6
- package/dist/core/learning/learning-gate.js.map +1 -1
- package/dist/core/learning/observation-store.d.ts +12 -3
- package/dist/core/learning/observation-store.d.ts.map +1 -1
- package/dist/core/learning/observation-store.js +30 -15
- package/dist/core/learning/observation-store.js.map +1 -1
- package/dist/core/learning/session-learning-decision.d.ts +2 -4
- package/dist/core/learning/session-learning-decision.d.ts.map +1 -1
- package/dist/core/learning/session-learning-decision.js +9 -29
- package/dist/core/learning/session-learning-decision.js.map +1 -1
- package/dist/core/learning/skill-curator.d.ts +5 -1
- package/dist/core/learning/skill-curator.d.ts.map +1 -1
- package/dist/core/learning/skill-curator.js +21 -19
- package/dist/core/learning/skill-curator.js.map +1 -1
- package/dist/core/local-runtime-controller.d.ts +65 -3
- package/dist/core/local-runtime-controller.d.ts.map +1 -1
- package/dist/core/local-runtime-controller.js +186 -26
- package/dist/core/local-runtime-controller.js.map +1 -1
- package/dist/core/memory/providers/file-store.d.ts +1 -1
- package/dist/core/memory/providers/file-store.d.ts.map +1 -1
- package/dist/core/memory/providers/file-store.js +6 -6
- package/dist/core/memory/providers/file-store.js.map +1 -1
- package/dist/core/memory-controller.d.ts.map +1 -1
- package/dist/core/memory-controller.js +4 -4
- package/dist/core/memory-controller.js.map +1 -1
- package/dist/core/model-capability.d.ts +34 -0
- package/dist/core/model-capability.d.ts.map +1 -1
- package/dist/core/model-capability.js +43 -1
- package/dist/core/model-capability.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +6 -9
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-router/intent-classifier.d.ts +1 -4
- package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
- package/dist/core/model-router/intent-classifier.js +1 -156
- package/dist/core/model-router/intent-classifier.js.map +1 -1
- package/dist/core/model-router/tool-escalation.d.ts +15 -0
- package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
- package/dist/core/model-router/tool-escalation.js +23 -1
- package/dist/core/model-router/tool-escalation.js.map +1 -1
- package/dist/core/model-router-controller.d.ts +34 -7
- package/dist/core/model-router-controller.d.ts.map +1 -1
- package/dist/core/model-router-controller.js +95 -16
- package/dist/core/model-router-controller.js.map +1 -1
- package/dist/core/model-selection-controller.d.ts +4 -4
- package/dist/core/model-selection-controller.d.ts.map +1 -1
- package/dist/core/model-selection-controller.js.map +1 -1
- package/dist/core/model-tool-protocol.d.ts +23 -0
- package/dist/core/model-tool-protocol.d.ts.map +1 -0
- package/dist/core/model-tool-protocol.js +43 -0
- package/dist/core/model-tool-protocol.js.map +1 -0
- package/dist/core/models/adaptation-store.d.ts +10 -5
- package/dist/core/models/adaptation-store.d.ts.map +1 -1
- package/dist/core/models/adaptation-store.js +129 -81
- package/dist/core/models/adaptation-store.js.map +1 -1
- package/dist/core/models/default-model-suggestions.d.ts.map +1 -1
- package/dist/core/models/default-model-suggestions.js +17 -0
- package/dist/core/models/default-model-suggestions.js.map +1 -1
- package/dist/core/models/fitness-store.d.ts +4 -11
- package/dist/core/models/fitness-store.d.ts.map +1 -1
- package/dist/core/models/fitness-store.js +87 -51
- package/dist/core/models/fitness-store.js.map +1 -1
- package/dist/core/models/host-state-store.d.ts +34 -0
- package/dist/core/models/host-state-store.d.ts.map +1 -0
- package/dist/core/models/host-state-store.js +86 -0
- package/dist/core/models/host-state-store.js.map +1 -0
- package/dist/core/models/llamacpp-runtime.d.ts +180 -0
- package/dist/core/models/llamacpp-runtime.d.ts.map +1 -0
- package/dist/core/models/llamacpp-runtime.js +475 -0
- package/dist/core/models/llamacpp-runtime.js.map +1 -0
- package/dist/core/models/local-registration.d.ts +40 -0
- package/dist/core/models/local-registration.d.ts.map +1 -1
- package/dist/core/models/local-registration.js +94 -5
- package/dist/core/models/local-registration.js.map +1 -1
- package/dist/core/models/local-runtime.d.ts.map +1 -1
- package/dist/core/models/local-runtime.js +6 -5
- package/dist/core/models/local-runtime.js.map +1 -1
- package/dist/core/models/model-ref.d.ts +7 -0
- package/dist/core/models/model-ref.d.ts.map +1 -1
- package/dist/core/models/model-ref.js +26 -0
- package/dist/core/models/model-ref.js.map +1 -1
- package/dist/core/models/needle-runtime.d.ts +257 -0
- package/dist/core/models/needle-runtime.d.ts.map +1 -0
- package/dist/core/models/needle-runtime.js +519 -0
- package/dist/core/models/needle-runtime.js.map +1 -0
- package/dist/core/models/prism-llamacpp-lifecycle.d.ts +89 -0
- package/dist/core/models/prism-llamacpp-lifecycle.d.ts.map +1 -0
- package/dist/core/models/prism-llamacpp-lifecycle.js +121 -0
- package/dist/core/models/prism-llamacpp-lifecycle.js.map +1 -0
- package/dist/core/orchestration/agent-resume.d.ts +24 -0
- package/dist/core/orchestration/agent-resume.d.ts.map +1 -0
- package/dist/core/orchestration/agent-resume.js +90 -0
- package/dist/core/orchestration/agent-resume.js.map +1 -0
- package/dist/core/orchestration/capability-gateway.d.ts +61 -0
- package/dist/core/orchestration/capability-gateway.d.ts.map +1 -0
- package/dist/core/orchestration/capability-gateway.js +152 -0
- package/dist/core/orchestration/capability-gateway.js.map +1 -0
- package/dist/core/orchestration/contracts.d.ts +343 -0
- package/dist/core/orchestration/contracts.d.ts.map +1 -0
- package/dist/core/orchestration/contracts.js +135 -0
- package/dist/core/orchestration/contracts.js.map +1 -0
- package/dist/core/orchestration/delegation-ledger.d.ts +56 -0
- package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -0
- package/dist/core/orchestration/delegation-ledger.js +197 -0
- package/dist/core/orchestration/delegation-ledger.js.map +1 -0
- package/dist/core/orchestration/event-store.d.ts +83 -0
- package/dist/core/orchestration/event-store.d.ts.map +1 -0
- package/dist/core/orchestration/event-store.js +560 -0
- package/dist/core/orchestration/event-store.js.map +1 -0
- package/dist/core/orchestration/lane-tool-manifests.d.ts +9 -0
- package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -0
- package/dist/core/orchestration/lane-tool-manifests.js +37 -0
- package/dist/core/orchestration/lane-tool-manifests.js.map +1 -0
- package/dist/core/orchestration/model-binding.d.ts +15 -0
- package/dist/core/orchestration/model-binding.d.ts.map +1 -0
- package/dist/core/orchestration/model-binding.js +29 -0
- package/dist/core/orchestration/model-binding.js.map +1 -0
- package/dist/core/orchestration/policy-compiler.d.ts +49 -0
- package/dist/core/orchestration/policy-compiler.d.ts.map +1 -0
- package/dist/core/orchestration/policy-compiler.js +191 -0
- package/dist/core/orchestration/policy-compiler.js.map +1 -0
- package/dist/core/orchestration/policy-gate.d.ts +18 -0
- package/dist/core/orchestration/policy-gate.d.ts.map +1 -0
- package/dist/core/orchestration/policy-gate.js +24 -0
- package/dist/core/orchestration/policy-gate.js.map +1 -0
- package/dist/core/orchestration/profile-registry.d.ts +51 -0
- package/dist/core/orchestration/profile-registry.d.ts.map +1 -0
- package/dist/core/orchestration/profile-registry.js +393 -0
- package/dist/core/orchestration/profile-registry.js.map +1 -0
- package/dist/core/orchestration/profile-store.d.ts +31 -0
- package/dist/core/orchestration/profile-store.d.ts.map +1 -0
- package/dist/core/orchestration/profile-store.js +136 -0
- package/dist/core/orchestration/profile-store.js.map +1 -0
- package/dist/core/orchestration/risk-budget.d.ts +9 -0
- package/dist/core/orchestration/risk-budget.d.ts.map +1 -0
- package/dist/core/orchestration/risk-budget.js +48 -0
- package/dist/core/orchestration/risk-budget.js.map +1 -0
- package/dist/core/orchestration/task-runtime.d.ts +168 -0
- package/dist/core/orchestration/task-runtime.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime.js +1600 -0
- package/dist/core/orchestration/task-runtime.js.map +1 -0
- package/dist/core/orchestration/work-state-projection.d.ts +32 -0
- package/dist/core/orchestration/work-state-projection.d.ts.map +1 -0
- package/dist/core/orchestration/work-state-projection.js +116 -0
- package/dist/core/orchestration/work-state-projection.js.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts +21 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.js +179 -0
- package/dist/core/orchestration/worker-execution-contract.js.map +1 -0
- package/dist/core/orchestration/worker-result-adapter.d.ts +21 -0
- package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -0
- package/dist/core/orchestration/worker-result-adapter.js +109 -0
- package/dist/core/orchestration/worker-result-adapter.js.map +1 -0
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +11 -10
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/process-identity.d.ts +11 -0
- package/dist/core/process-identity.d.ts.map +1 -0
- package/dist/core/process-identity.js +26 -0
- package/dist/core/process-identity.js.map +1 -0
- package/dist/core/process-matrix/codes.d.ts +83 -0
- package/dist/core/process-matrix/codes.d.ts.map +1 -0
- package/dist/core/process-matrix/codes.js +15 -0
- package/dist/core/process-matrix/codes.js.map +1 -0
- package/dist/core/process-matrix/resume-launcher.d.ts +26 -0
- package/dist/core/process-matrix/resume-launcher.d.ts.map +1 -0
- package/dist/core/process-matrix/resume-launcher.js +62 -0
- package/dist/core/process-matrix/resume-launcher.js.map +1 -0
- package/dist/core/process-matrix/runtime.d.ts +78 -0
- package/dist/core/process-matrix/runtime.d.ts.map +1 -0
- package/dist/core/process-matrix/runtime.js +633 -0
- package/dist/core/process-matrix/runtime.js.map +1 -0
- package/dist/core/process-matrix/store.d.ts +25 -0
- package/dist/core/process-matrix/store.d.ts.map +1 -0
- package/dist/core/process-matrix/store.js +189 -0
- package/dist/core/process-matrix/store.js.map +1 -0
- package/dist/core/process-matrix/supervisor.d.ts +75 -0
- package/dist/core/process-matrix/supervisor.d.ts.map +1 -0
- package/dist/core/process-matrix/supervisor.js +161 -0
- package/dist/core/process-matrix/supervisor.js.map +1 -0
- package/dist/core/profile-registry.d.ts +7 -0
- package/dist/core/profile-registry.d.ts.map +1 -1
- package/dist/core/profile-registry.js +25 -7
- package/dist/core/profile-registry.js.map +1 -1
- package/dist/core/python-runtime.d.ts.map +1 -1
- package/dist/core/python-runtime.js +3 -3
- package/dist/core/python-runtime.js.map +1 -1
- package/dist/core/reflection-controller.d.ts +33 -9
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +217 -127
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/reload-blockers.d.ts +36 -0
- package/dist/core/reload-blockers.d.ts.map +1 -1
- package/dist/core/reload-blockers.js +50 -8
- package/dist/core/reload-blockers.js.map +1 -1
- package/dist/core/research/evidence-bundle.d.ts.map +1 -1
- package/dist/core/research/evidence-bundle.js +1 -6
- package/dist/core/research/evidence-bundle.js.map +1 -1
- package/dist/core/research/lane-model-resolver.d.ts +33 -0
- package/dist/core/research/lane-model-resolver.d.ts.map +1 -0
- package/dist/core/research/lane-model-resolver.js +65 -0
- package/dist/core/research/lane-model-resolver.js.map +1 -0
- package/dist/core/research/model-fitness-controller.d.ts +38 -0
- package/dist/core/research/model-fitness-controller.d.ts.map +1 -0
- package/dist/core/research/model-fitness-controller.js +106 -0
- package/dist/core/research/model-fitness-controller.js.map +1 -0
- package/dist/core/research/model-fitness.d.ts +1 -1
- package/dist/core/research/model-fitness.d.ts.map +1 -1
- package/dist/core/research/model-fitness.js +4 -4
- package/dist/core/research/model-fitness.js.map +1 -1
- package/dist/core/research/research-gate.d.ts.map +1 -1
- package/dist/core/research/research-gate.js +7 -7
- package/dist/core/research/research-gate.js.map +1 -1
- package/dist/core/research/research-lane-controller.d.ts +62 -0
- package/dist/core/research/research-lane-controller.d.ts.map +1 -0
- package/dist/core/research/research-lane-controller.js +292 -0
- package/dist/core/research/research-lane-controller.js.map +1 -0
- package/dist/core/research/session-evidence-bundle.d.ts +2 -4
- package/dist/core/research/session-evidence-bundle.d.ts.map +1 -1
- package/dist/core/research/session-evidence-bundle.js +10 -46
- package/dist/core/research/session-evidence-bundle.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +15 -9
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/risk-classifier.d.ts +6 -0
- package/dist/core/risk-classifier.d.ts.map +1 -0
- package/dist/core/risk-classifier.js +225 -0
- package/dist/core/risk-classifier.js.map +1 -0
- package/dist/core/runtime-builder.d.ts +76 -17
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +367 -124
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/scout-controller.d.ts +6 -0
- package/dist/core/scout-controller.d.ts.map +1 -1
- package/dist/core/scout-controller.js +66 -52
- package/dist/core/scout-controller.js.map +1 -1
- package/dist/core/sdk.d.ts +6 -3
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +64 -27
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-analytics.d.ts.map +1 -1
- package/dist/core/session-analytics.js +28 -1
- package/dist/core/session-analytics.js.map +1 -1
- package/dist/core/session-image-store.d.ts +33 -0
- package/dist/core/session-image-store.d.ts.map +1 -0
- package/dist/core/session-image-store.js +283 -0
- package/dist/core/session-image-store.js.map +1 -0
- package/dist/core/session-role.d.ts +33 -0
- package/dist/core/session-role.d.ts.map +1 -0
- package/dist/core/session-role.js +58 -0
- package/dist/core/session-role.js.map +1 -0
- package/dist/core/session-snapshot.d.ts +34 -0
- package/dist/core/session-snapshot.d.ts.map +1 -0
- package/dist/core/session-snapshot.js +68 -0
- package/dist/core/session-snapshot.js.map +1 -0
- package/dist/core/session-supervision-runtime.d.ts +31 -0
- package/dist/core/session-supervision-runtime.d.ts.map +1 -0
- package/dist/core/session-supervision-runtime.js +97 -0
- package/dist/core/session-supervision-runtime.js.map +1 -0
- package/dist/core/settings-manager.d.ts +51 -7
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +168 -82
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt-builder.d.ts +12 -0
- package/dist/core/system-prompt-builder.d.ts.map +1 -1
- package/dist/core/system-prompt-builder.js +6 -0
- package/dist/core/system-prompt-builder.js.map +1 -1
- package/dist/core/system-prompt.d.ts +14 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +20 -3
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tasks/session-task-state.d.ts +13 -6
- package/dist/core/tasks/session-task-state.d.ts.map +1 -1
- package/dist/core/tasks/session-task-state.js +20 -22
- package/dist/core/tasks/session-task-state.js.map +1 -1
- package/dist/core/tasks/task-contract-monitor.d.ts +45 -0
- package/dist/core/tasks/task-contract-monitor.d.ts.map +1 -0
- package/dist/core/tasks/task-contract-monitor.js +56 -0
- package/dist/core/tasks/task-contract-monitor.js.map +1 -0
- package/dist/core/tasks/task-projection.d.ts +20 -0
- package/dist/core/tasks/task-projection.d.ts.map +1 -0
- package/dist/core/tasks/task-projection.js +47 -0
- package/dist/core/tasks/task-projection.js.map +1 -0
- package/dist/core/tasks/task-state.d.ts +12 -0
- package/dist/core/tasks/task-state.d.ts.map +1 -1
- package/dist/core/tasks/task-state.js +56 -12
- package/dist/core/tasks/task-state.js.map +1 -1
- package/dist/core/tool-capability-policy.d.ts +13 -0
- package/dist/core/tool-capability-policy.d.ts.map +1 -0
- package/dist/core/tool-capability-policy.js +85 -0
- package/dist/core/tool-capability-policy.js.map +1 -0
- package/dist/core/tool-gate-controller.d.ts.map +1 -1
- package/dist/core/tool-gate-controller.js +5 -0
- package/dist/core/tool-gate-controller.js.map +1 -1
- package/dist/core/tool-protocol-controller.d.ts +91 -0
- package/dist/core/tool-protocol-controller.d.ts.map +1 -0
- package/dist/core/tool-protocol-controller.js +512 -0
- package/dist/core/tool-protocol-controller.js.map +1 -0
- package/dist/core/tool-recovery-log-records.d.ts +6 -0
- package/dist/core/tool-recovery-log-records.d.ts.map +1 -1
- package/dist/core/tool-recovery-log-records.js +13 -31
- package/dist/core/tool-recovery-log-records.js.map +1 -1
- package/dist/core/tool-selection/promotion.d.ts +54 -0
- package/dist/core/tool-selection/promotion.d.ts.map +1 -0
- package/dist/core/tool-selection/promotion.js +81 -0
- package/dist/core/tool-selection/promotion.js.map +1 -0
- package/dist/core/tool-selection/tool-performance-store.d.ts +39 -6
- package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -1
- package/dist/core/tool-selection/tool-performance-store.js +153 -110
- package/dist/core/tool-selection/tool-performance-store.js.map +1 -1
- package/dist/core/tool-selection/tool-selection-controller.d.ts +45 -0
- package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -1
- package/dist/core/tool-selection/tool-selection-controller.js +96 -0
- package/dist/core/tool-selection/tool-selection-controller.js.map +1 -1
- package/dist/core/tools/ask-question.d.ts +124 -0
- package/dist/core/tools/ask-question.d.ts.map +1 -0
- package/dist/core/tools/ask-question.js +693 -0
- package/dist/core/tools/ask-question.js.map +1 -0
- package/dist/core/tools/bash.d.ts +18 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +95 -16
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +44 -2
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +214 -19
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +15 -13
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +124 -22
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/extensionify.d.ts.map +1 -1
- package/dist/core/tools/extensionify.js +1 -0
- package/dist/core/tools/extensionify.js.map +1 -1
- package/dist/core/tools/goal.d.ts +94 -3
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +165 -15
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/model-fitness.d.ts +7 -0
- package/dist/core/tools/model-fitness.d.ts.map +1 -1
- package/dist/core/tools/model-fitness.js +4 -4
- package/dist/core/tools/model-fitness.js.map +1 -1
- package/dist/core/tools/orchestration-panel.d.ts +43 -0
- package/dist/core/tools/orchestration-panel.d.ts.map +1 -0
- package/dist/core/tools/orchestration-panel.js +168 -0
- package/dist/core/tools/orchestration-panel.js.map +1 -0
- package/dist/core/tools/run-process.d.ts +26 -0
- package/dist/core/tools/run-process.d.ts.map +1 -0
- package/dist/core/tools/run-process.js +138 -0
- package/dist/core/tools/run-process.js.map +1 -0
- package/dist/core/tools/shell-contract-router.d.ts +6 -1
- package/dist/core/tools/shell-contract-router.d.ts.map +1 -1
- package/dist/core/tools/shell-contract-router.js +23 -2
- package/dist/core/tools/shell-contract-router.js.map +1 -1
- package/dist/core/tools/shell-session.d.ts +89 -0
- package/dist/core/tools/shell-session.d.ts.map +1 -0
- package/dist/core/tools/shell-session.js +432 -0
- package/dist/core/tools/shell-session.js.map +1 -0
- package/dist/core/tools/task-steps.d.ts +6 -0
- package/dist/core/tools/task-steps.d.ts.map +1 -1
- package/dist/core/tools/task-steps.js +165 -8
- package/dist/core/tools/task-steps.js.map +1 -1
- package/dist/core/tools/tmux-dispatch.d.ts +84 -0
- package/dist/core/tools/tmux-dispatch.d.ts.map +1 -0
- package/dist/core/tools/tmux-dispatch.js +91 -0
- package/dist/core/tools/tmux-dispatch.js.map +1 -0
- package/dist/core/tools/windows-shell-engine.d.ts +42 -0
- package/dist/core/tools/windows-shell-engine.d.ts.map +1 -0
- package/dist/core/tools/windows-shell-engine.js +151 -0
- package/dist/core/tools/windows-shell-engine.js.map +1 -0
- package/dist/core/tools/windows-shell-state.d.ts +40 -0
- package/dist/core/tools/windows-shell-state.d.ts.map +1 -0
- package/dist/core/tools/windows-shell-state.js +59 -0
- package/dist/core/tools/windows-shell-state.js.map +1 -0
- package/dist/core/tools/worktree-sync.d.ts +24 -0
- package/dist/core/tools/worktree-sync.d.ts.map +1 -0
- package/dist/core/tools/worktree-sync.js +338 -0
- package/dist/core/tools/worktree-sync.js.map +1 -0
- package/dist/core/trust-manager.d.ts +4 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +20 -2
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/core/util/atomic-file.d.ts +55 -0
- package/dist/core/util/atomic-file.d.ts.map +1 -0
- package/dist/core/util/atomic-file.js +255 -0
- package/dist/core/util/atomic-file.js.map +1 -0
- package/dist/core/util/bounded-jsonl.d.ts +10 -0
- package/dist/core/util/bounded-jsonl.d.ts.map +1 -0
- package/dist/core/util/bounded-jsonl.js +75 -0
- package/dist/core/util/bounded-jsonl.js.map +1 -0
- package/dist/core/util/minimatch-cache.d.ts +33 -0
- package/dist/core/util/minimatch-cache.d.ts.map +1 -0
- package/dist/core/util/minimatch-cache.js +0 -0
- package/dist/core/util/minimatch-cache.js.map +1 -0
- package/dist/core/util/value-guards.d.ts +5 -0
- package/dist/core/util/value-guards.d.ts.map +1 -0
- package/dist/core/util/value-guards.js +12 -0
- package/dist/core/util/value-guards.js.map +1 -0
- package/dist/core/worktree-sync/codes.d.ts +227 -0
- package/dist/core/worktree-sync/codes.d.ts.map +1 -0
- package/dist/core/worktree-sync/codes.js +14 -0
- package/dist/core/worktree-sync/codes.js.map +1 -0
- package/dist/core/worktree-sync/git-engine.d.ts +156 -0
- package/dist/core/worktree-sync/git-engine.d.ts.map +1 -0
- package/dist/core/worktree-sync/git-engine.js +1191 -0
- package/dist/core/worktree-sync/git-engine.js.map +1 -0
- package/dist/core/worktree-sync/lane-gate.d.ts +75 -0
- package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -0
- package/dist/core/worktree-sync/lane-gate.js +360 -0
- package/dist/core/worktree-sync/lane-gate.js.map +1 -0
- package/dist/core/worktree-sync/runtime.d.ts +47 -0
- package/dist/core/worktree-sync/runtime.d.ts.map +1 -0
- package/dist/core/worktree-sync/runtime.js +96 -0
- package/dist/core/worktree-sync/runtime.js.map +1 -0
- package/dist/core/worktree-sync/store.d.ts +69 -0
- package/dist/core/worktree-sync/store.d.ts.map +1 -0
- package/dist/core/worktree-sync/store.js +252 -0
- package/dist/core/worktree-sync/store.js.map +1 -0
- package/dist/core/worktree-sync/watcher.d.ts +29 -0
- package/dist/core/worktree-sync/watcher.d.ts.map +1 -0
- package/dist/core/worktree-sync/watcher.js +93 -0
- package/dist/core/worktree-sync/watcher.js.map +1 -0
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +179 -1
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +7 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +197 -1
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.d.ts +16 -1
- package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.js +50 -8
- package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
- package/dist/modes/interactive/clipboard-input.d.ts +7 -1
- package/dist/modes/interactive/clipboard-input.d.ts.map +1 -1
- package/dist/modes/interactive/clipboard-input.js +44 -6
- package/dist/modes/interactive/clipboard-input.js.map +1 -1
- package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/profile-resource-editor.js +23 -1
- package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +2 -2
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/config-backup.d.ts.map +1 -1
- package/dist/modes/interactive/config-backup.js +5 -4
- package/dist/modes/interactive/config-backup.js.map +1 -1
- package/dist/modes/interactive/extension-ui-host.d.ts +14 -0
- package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
- package/dist/modes/interactive/extension-ui-host.js +76 -15
- package/dist/modes/interactive/extension-ui-host.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +67 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/key-handlers.js +1 -1
- package/dist/modes/interactive/key-handlers.js.map +1 -1
- package/dist/modes/interactive/local-model-commands.d.ts +43 -0
- package/dist/modes/interactive/local-model-commands.d.ts.map +1 -1
- package/dist/modes/interactive/local-model-commands.js +290 -3
- package/dist/modes/interactive/local-model-commands.js.map +1 -1
- package/dist/modes/interactive/profile-menu-controller.d.ts.map +1 -1
- package/dist/modes/interactive/profile-menu-controller.js +7 -7
- package/dist/modes/interactive/profile-menu-controller.js.map +1 -1
- package/dist/modes/interactive/report-commands.d.ts.map +1 -1
- package/dist/modes/interactive/report-commands.js +21 -0
- package/dist/modes/interactive/report-commands.js.map +1 -1
- package/dist/modes/interactive/session-flow-commands.d.ts +17 -2
- package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-flow-commands.js +74 -21
- package/dist/modes/interactive/session-flow-commands.js.map +1 -1
- package/dist/modes/interactive/session-io-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-io-commands.js +16 -6
- package/dist/modes/interactive/session-io-commands.js.map +1 -1
- package/dist/modes/interactive/session-replacement-errors.d.ts +7 -0
- package/dist/modes/interactive/session-replacement-errors.d.ts.map +1 -0
- package/dist/modes/interactive/session-replacement-errors.js +15 -0
- package/dist/modes/interactive/session-replacement-errors.js.map +1 -0
- package/dist/modes/interactive/startup-checks.d.ts.map +1 -1
- package/dist/modes/interactive/startup-checks.js +1 -1
- package/dist/modes/interactive/startup-checks.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +82 -23
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +15 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js +138 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +2 -13
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +1 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +1 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +52 -1
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/fs-watch.d.ts +11 -0
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/fs-watch.js +20 -2
- package/dist/utils/fs-watch.js.map +1 -1
- package/dist/utils/highlight-js-languages.d.ts +4 -0
- package/dist/utils/highlight-js-languages.d.ts.map +1 -0
- package/dist/utils/highlight-js-languages.js +573 -0
- package/dist/utils/highlight-js-languages.js.map +1 -0
- package/dist/utils/platform.d.ts +3 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +8 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/shell.d.ts +7 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +21 -6
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.js +53 -5
- package/dist/utils/syntax-highlight.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +112 -1
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/work-directory.d.ts +11 -0
- package/dist/utils/work-directory.d.ts.map +1 -1
- package/dist/utils/work-directory.js +30 -9
- package/dist/utils/work-directory.js.map +1 -1
- package/docs/UI_POLISH_ORCHESTRATION.md +44 -0
- package/docs/UI_QUALITY_ORCHESTRATION.md +30 -0
- package/docs/docs.json +4 -0
- package/docs/extensions.md +62 -2
- package/docs/harness-architecture.md +156 -0
- package/docs/keybindings.md +11 -1
- package/docs/process-matrix.md +153 -0
- package/docs/rpc.md +45 -2
- package/docs/sessions.md +15 -0
- package/docs/settings.md +128 -11
- package/docs/task-steps.md +8 -0
- package/docs/telemetry.md +19 -0
- package/docs/tmux-agent-manager.md +92 -2
- package/docs/ui-reference/README.md +9 -0
- package/docs/ui-reference/orchestration-after.txt +7 -0
- package/docs/ui-reference/orchestration-before.txt +7 -0
- package/docs/ui-reference/orchestration-reference.txt +6 -0
- package/docs/usage.md +14 -2
- package/docs/windows.md +52 -3
- package/docs/work-directory.md +42 -2
- package/docs/worktree-sync.md +250 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/question.ts +34 -245
- package/examples/extensions/questionnaire.ts +41 -407
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +10 -4
- package/dist/core/delegation/session-worker-result.d.ts +0 -16
- package/dist/core/delegation/session-worker-result.d.ts.map +0 -1
- package/dist/core/delegation/session-worker-result.js +0 -53
- package/dist/core/delegation/session-worker-result.js.map +0 -1
- package/dist/core/delegation/worker-result.d.ts +0 -15
- package/dist/core/delegation/worker-result.d.ts.map +0 -1
- package/dist/core/delegation/worker-result.js +0 -161
- package/dist/core/delegation/worker-result.js.map +0 -1
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js.map +0 -1
- package/docs/integration-sweep-builder-blueprint-2026-07-09.md +0 -365
- package/docs/integration-sweep-resume-2026-07-09.md +0 -407
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-learn-controller.js","sourceRoot":"","sources":["../../../src/modes/interactive/auto-learn-controller.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Auto-Learn / Native-Reflection controller.\n *\n * Extracted verbatim from interactive-mode.ts (god-file decomposition). Owns the disk-backed\n * Auto Learn run-state machine (state.json + lockfile), the background-learner spawn/prune\n * lifecycle, and the in-process native reflection pass. It takes narrow deps (a live session\n * accessor, a self-modification-source resolver that stays in the host, and a small UI callback\n * surface) rather than the whole InteractiveMode instance.\n */\n\nimport * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentMessage } from \"@caupulican/pi-agent-core\";\nimport { isAutoLearnSessionId } from \"@caupulican/pi-agent-core/node\";\nimport type { Model } from \"@caupulican/pi-ai\";\nimport type { SelectItem } from \"@caupulican/pi-tui\";\nimport { spawn } from \"child_process\";\nimport lockfile from \"proper-lockfile\";\nimport { getAgentDir } from \"../../config.ts\";\nimport type { AgentSession } from \"../../core/agent-session.ts\";\nimport { readAutoLearnSessionIdFromFile, reportCompletedAutoLearnUsageHelper } from \"../../core/cost/session-usage.ts\";\nimport { resolveCliModel } from \"../../core/model-resolver.ts\";\nimport { getPendingReloadBlockers } from \"../../core/reload-blockers.ts\";\nimport type { AutoLearnSettings, AutonomyMode } from \"../../core/settings-manager.ts\";\nimport { getProcessWorkRun } from \"../../utils/work-directory.ts\";\nimport { theme } from \"./theme/theme.ts\";\n\nconst AUTO_LEARN_DEFAULTS = {\n\tenabled: false,\n\tmodel: \"active\",\n\tthinkingLevel: \"low\",\n\tlongSessionMessages: 32,\n\tlongSessionContextPercent: 70,\n\tcooldownMinutes: 24 * 60,\n\tleaseMinutes: 90,\n\tmaxConcurrentLearners: 1,\n\tapplyHighConfidence: false,\n\treflectionReview: true,\n\treflectionMinToolCalls: 12,\n\treflectionCooldownMinutes: 24 * 60,\n\tcomplexTaskToolCalls: 12,\n} as const satisfies Required<AutoLearnSettings>;\n\nconst AUTONOMY_AUTO_LEARN_PRESETS = {\n\toff: { ...AUTO_LEARN_DEFAULTS, enabled: false, reflectionReview: false },\n\tsafe: {\n\t\t...AUTO_LEARN_DEFAULTS,\n\t\tenabled: false,\n\t\tlongSessionMessages: 64,\n\t\tlongSessionContextPercent: 85,\n\t\tcooldownMinutes: 24 * 60,\n\t\tleaseMinutes: 60,\n\t\tmaxConcurrentLearners: 1,\n\t\tapplyHighConfidence: false,\n\t\treflectionReview: false,\n\t\treflectionMinToolCalls: 12,\n\t\treflectionCooldownMinutes: 24 * 60,\n\t\tcomplexTaskToolCalls: 12,\n\t},\n\tbalanced: {\n\t\t...AUTO_LEARN_DEFAULTS,\n\t\tenabled: false,\n\t\tlongSessionMessages: 64,\n\t\tlongSessionContextPercent: 85,\n\t\tcooldownMinutes: 24 * 60,\n\t\tleaseMinutes: 90,\n\t\tmaxConcurrentLearners: 1,\n\t\tapplyHighConfidence: false,\n\t\treflectionReview: false,\n\t\treflectionMinToolCalls: 12,\n\t\treflectionCooldownMinutes: 24 * 60,\n\t\tcomplexTaskToolCalls: 12,\n\t},\n\tfull: {\n\t\t...AUTO_LEARN_DEFAULTS,\n\t\tenabled: true,\n\t\tlongSessionMessages: 64,\n\t\tlongSessionContextPercent: 85,\n\t\tcooldownMinutes: 24 * 60,\n\t\tleaseMinutes: 90,\n\t\tmaxConcurrentLearners: 1,\n\t\tapplyHighConfidence: true,\n\t\treflectionReview: true,\n\t\treflectionMinToolCalls: 12,\n\t\treflectionCooldownMinutes: 24 * 60,\n\t\tcomplexTaskToolCalls: 12,\n\t},\n} as const satisfies Record<AutonomyMode, Required<AutoLearnSettings>>;\n\nexport const AUTONOMY_MODES: AutonomyMode[] = [\"off\", \"safe\", \"balanced\", \"full\"];\nconst AUTO_LEARN_RESERVATION_MS = 2 * 60 * 1000;\nexport const AUTO_LEARN_HISTORY_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;\n\nexport interface AutoLearnHistoryPruneResult {\n\tpromptFiles: number;\n\tlogFiles: number;\n\tsessionFiles: number;\n\terrors: number;\n}\n\nexport interface AutoLearnHistoryPruneOptions {\n\tdataDir: string;\n\tnow?: number;\n\tretentionMs?: number;\n\tactiveRunIds?: Iterable<string | undefined>;\n\tactiveSessionIds?: Iterable<string | undefined>;\n}\n\ntype AutoLearnHistoryPruneCounter = Exclude<keyof AutoLearnHistoryPruneResult, \"errors\">;\n\nfunction definedStringSet(values: Iterable<string | undefined> | undefined): Set<string> {\n\tconst set = new Set<string>();\n\tif (!values) return set;\n\tfor (const value of values) {\n\t\tif (typeof value === \"string\" && value.length > 0) set.add(value);\n\t}\n\treturn set;\n}\n\nfunction sanitizeAutoLearnPathPart(input: string | undefined, fallback: string): string {\n\tconst cleaned = (input || fallback)\n\t\t.replace(/[^a-zA-Z0-9._-]+/g, \"-\")\n\t\t.replace(/-+/g, \"-\")\n\t\t.replace(/^-+|-+$/g, \"\")\n\t\t.slice(0, 80);\n\treturn cleaned || fallback;\n}\n\nfunction isOldAutoLearnArtifact(filePath: string, now: number, retentionMs: number): boolean {\n\tconst stats = fs.lstatSync(filePath);\n\treturn stats.isFile() && now - stats.mtimeMs > retentionMs;\n}\n\nfunction removeOldAutoLearnArtifact(\n\tfilePath: string,\n\tresult: AutoLearnHistoryPruneResult,\n\tcounter: AutoLearnHistoryPruneCounter,\n): void {\n\ttry {\n\t\tfs.rmSync(filePath, { force: true });\n\t\tresult[counter]++;\n\t} catch {\n\t\tresult.errors++;\n\t}\n}\n\nfunction isPathInside(target: string, root: string): boolean {\n\tconst resolvedTarget = path.resolve(target);\n\tconst resolvedRoot = path.resolve(root);\n\treturn resolvedTarget === resolvedRoot || resolvedTarget.startsWith(`${resolvedRoot}${path.sep}`);\n}\n\nfunction removeAutoLearnArtifactPath(filePath: string, root: string): boolean {\n\tif (!isPathInside(filePath, root)) return false;\n\ttry {\n\t\tfs.rmSync(filePath, { recursive: true, force: true });\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getAutoLearnSessionIdFromFileName(fileName: string): string | undefined {\n\treturn fileName.match(/_(auto-learn-[A-Za-z0-9._-]+)\\.jsonl$/)?.[1];\n}\n\nfunction pruneAutoLearnSessionFiles(\n\tdir: string,\n\tactiveSessionIds: ReadonlySet<string>,\n\tnow: number,\n\tretentionMs: number,\n\tresult: AutoLearnHistoryPruneResult,\n): void {\n\tlet entries: fs.Dirent[];\n\ttry {\n\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn;\n\t}\n\n\tfor (const entry of entries) {\n\t\tconst filePath = path.join(dir, entry.name);\n\t\tif (entry.isDirectory()) {\n\t\t\tpruneAutoLearnSessionFiles(filePath, activeSessionIds, now, retentionMs, result);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!entry.isFile() || !entry.name.endsWith(\".jsonl\")) continue;\n\t\tlet shouldPrune = false;\n\t\ttry {\n\t\t\tshouldPrune = isOldAutoLearnArtifact(filePath, now, retentionMs);\n\t\t} catch {\n\t\t\tresult.errors++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!shouldPrune) continue;\n\t\tconst sessionId = readAutoLearnSessionIdFromFile(filePath) ?? getAutoLearnSessionIdFromFileName(entry.name);\n\t\tif (!sessionId || !isAutoLearnSessionId(sessionId) || activeSessionIds.has(sessionId)) continue;\n\t\tremoveOldAutoLearnArtifact(filePath, result, \"sessionFiles\");\n\t}\n}\n\nfunction pruneAutoLearnRunArtifacts(\n\tdir: string,\n\tactiveRunIds: ReadonlySet<string>,\n\tnow: number,\n\tretentionMs: number,\n\tresult: AutoLearnHistoryPruneResult,\n): void {\n\tlet entries: fs.Dirent[];\n\ttry {\n\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn;\n\t}\n\n\tfor (const entry of entries) {\n\t\tconst filePath = path.join(dir, entry.name);\n\t\tif (entry.isDirectory()) {\n\t\t\tpruneAutoLearnRunArtifacts(filePath, activeRunIds, now, retentionMs, result);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!entry.isFile()) continue;\n\t\tconst promptRunId = entry.name.endsWith(\".prompt.md\") ? entry.name.slice(0, -\".prompt.md\".length) : undefined;\n\t\tconst logRunId = entry.name.endsWith(\".log\") ? entry.name.slice(0, -\".log\".length) : undefined;\n\t\tconst runId = promptRunId ?? logRunId;\n\t\tif (!runId || activeRunIds.has(runId)) continue;\n\t\tlet shouldPrune = false;\n\t\ttry {\n\t\t\tshouldPrune = isOldAutoLearnArtifact(filePath, now, retentionMs);\n\t\t} catch {\n\t\t\tresult.errors++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!shouldPrune) continue;\n\t\tremoveOldAutoLearnArtifact(filePath, result, promptRunId ? \"promptFiles\" : \"logFiles\");\n\t}\n}\n\nexport function pruneAutoLearnConversationHistory(options: AutoLearnHistoryPruneOptions): AutoLearnHistoryPruneResult {\n\tconst result: AutoLearnHistoryPruneResult = { promptFiles: 0, logFiles: 0, sessionFiles: 0, errors: 0 };\n\tconst dataDir = path.resolve(options.dataDir);\n\tconst now = options.now ?? Date.now();\n\tconst retentionMs = options.retentionMs ?? AUTO_LEARN_HISTORY_RETENTION_MS;\n\tconst activeRunIds = definedStringSet(options.activeRunIds);\n\tconst activeSessionIds = definedStringSet(options.activeSessionIds);\n\tif (retentionMs <= 0 || !fs.existsSync(dataDir)) return result;\n\n\tpruneAutoLearnRunArtifacts(dataDir, activeRunIds, now, retentionMs, result);\n\tpruneAutoLearnSessionFiles(dataDir, activeSessionIds, now, retentionMs, result);\n\treturn result;\n}\n\nexport interface AutoLearnRunRecord {\n\ttenant: string;\n\tpid?: number;\n\tmodel: string;\n\treason: string;\n\tstartedAt: number;\n\texpiresAt: number;\n\tcwd: string;\n\tlogPath: string;\n\tsessionDir?: string;\n\tsessionId?: string;\n\tpromptPath?: string;\n\tkind?: \"auto\" | \"reflection\";\n\tautonomyMode?: AutonomyMode;\n\tauthority?: string;\n\tstatus?: \"reserved\" | \"running\";\n}\n\nexport interface AutoLearnState {\n\tlastLaunchByTenant?: Record<string, number>;\n\tlastReflectionByTenant?: Record<string, number>;\n\truns?: Record<string, AutoLearnRunRecord>;\n}\n\ninterface AutoLearnStateLockResult<T> {\n\tresult: T;\n\tnext?: AutoLearnState;\n}\n\ninterface AutoLearnDecision {\n\tshouldRun: boolean;\n\treason: string;\n\tmessageCount: number;\n\tcontextPercent: number | null;\n\tcooldownRemainingMs: number;\n\trunningCount: number;\n\tbypassCooldown?: boolean;\n}\n\ninterface AutoLearnReservation {\n\trunId: string;\n\tstartedAt: number;\n}\n\ntype AutoLearnReservationResult = { ok: true; reservation: AutoLearnReservation } | { ok: false; reason: string };\n\ninterface AutonomyReviewDecision extends AutoLearnDecision {\n\ttoolCalls: number;\n\tdigest?: string;\n}\n\nexport interface AutoLearnSpawnTarget {\n\tcommand: string;\n\targsPrefix: string[];\n}\n\nexport interface AutoLearnSpawnArgsOptions {\n\tname: string;\n\tmodelPattern: string;\n\tthinkingLevel?: string;\n\tsessionDir: string;\n\tsessionId: string;\n\tpromptPath: string;\n}\n\nexport function buildAutoLearnSpawnArgs(\n\tspawnTarget: AutoLearnSpawnTarget,\n\toptions: AutoLearnSpawnArgsOptions,\n): string[] {\n\treturn [\n\t\t...spawnTarget.argsPrefix,\n\t\t\"--print\",\n\t\t\"--name\",\n\t\toptions.name,\n\t\t\"--model\",\n\t\toptions.modelPattern,\n\t\t...(options.thinkingLevel ? [\"--thinking\", options.thinkingLevel] : []),\n\t\t\"--session-dir\",\n\t\toptions.sessionDir,\n\t\t\"--session-id\",\n\t\toptions.sessionId,\n\t\t`@${options.promptPath}`,\n\t];\n}\n\nexport function findAutoLearnSpawnNullByteInput(command: string, args: readonly string[]): string | undefined {\n\tif (command.includes(\"\\0\")) return \"command\";\n\tconst argIndex = args.findIndex((arg) => arg.includes(\"\\0\"));\n\treturn argIndex === -1 ? undefined : `args[${argIndex}]`;\n}\n\nexport interface AutoLearnControllerUi {\n\tshowStatus(message: string): void;\n\treadonly footerDataProvider: { setExtensionStatus(key: string, text: string | undefined): void };\n\tinvalidateFooter(): void;\n\trequestRender(): void;\n}\n\nexport interface AutoLearnControllerDeps {\n\tgetSession(): AgentSession;\n\tresolveSelfModificationSource(settings: { sourcePath?: string; sourcePaths?: string[] }): string | undefined;\n\tui: AutoLearnControllerUi;\n}\n\nexport class AutoLearnController {\n\t// Native-reflection debounce: prevents back-to-back/overlapping background reflection passes (cost\n\t// guard). `_nativeReflectionInFlight` blocks a second pass while one runs; `_lastNativeReflectionAt`\n\t// enforces a minimum gap between passes. A debounce-skipped turn's text is BUFFERED in\n\t// `_pendingReflectionText` (not dropped) and folded into the next pass, so no corrective feedback is\n\t// lost — reflection sees only the current turn's messages, so dropping a skipped turn would lose its\n\t// learning entirely (bug #29).\n\tprivate _nativeReflectionInFlight = false;\n\tprivate _lastNativeReflectionAt = 0;\n\tprivate _pendingReflectionText: string[] = [];\n\tprivate static readonly NATIVE_REFLECTION_MIN_INTERVAL_MS = 45_000;\n\tprivate static readonly PENDING_REFLECTION_MAX_CHARS = 12_000;\n\n\tprivate readonly deps: AutoLearnControllerDeps;\n\n\tconstructor(deps: AutoLearnControllerDeps) {\n\t\tthis.deps = deps;\n\t}\n\n\tprivate get session(): AgentSession {\n\t\treturn this.deps.getSession();\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.deps.getSession().sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.deps.getSession().settingsManager;\n\t}\n\tprivate get ui(): AutoLearnControllerUi {\n\t\treturn this.deps.ui;\n\t}\n\n\tprivate getAutoLearnModelAuthPriority(model: Model<any>): number {\n\t\tif (this.session.model && model.provider === this.session.model.provider && model.id === this.session.model.id) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst credential = this.session.modelRegistry.authStorage.get(model.provider);\n\t\tif (credential?.type === \"oauth\") return 1;\n\t\tif (credential?.type === \"api_key\") return 2;\n\n\t\tconst authStatus = this.session.modelRegistry.getProviderAuthStatus(model.provider);\n\t\tswitch (authStatus.source) {\n\t\t\tcase \"runtime\":\n\t\t\t\treturn 3;\n\t\t\tcase \"environment\":\n\t\t\t\treturn 4;\n\t\t\tcase \"models_json_key\":\n\t\t\tcase \"models_json_command\":\n\t\t\tcase \"fallback\":\n\t\t\t\treturn 5;\n\t\t\tdefault:\n\t\t\t\treturn 6;\n\t\t}\n\t}\n\n\tprivate getAutoLearnModelAuthLabel(model: Model<any>): string {\n\t\tconst credential = this.session.modelRegistry.authStorage.get(model.provider);\n\t\tif (credential?.type === \"oauth\") return \"subscription\";\n\t\tif (credential?.type === \"api_key\") return \"API key\";\n\n\t\tconst authStatus = this.session.modelRegistry.getProviderAuthStatus(model.provider);\n\t\tswitch (authStatus.source) {\n\t\t\tcase \"runtime\":\n\t\t\t\treturn authStatus.label ? `runtime ${authStatus.label}` : \"runtime API key\";\n\t\t\tcase \"environment\":\n\t\t\t\treturn authStatus.label ? `env ${authStatus.label}` : \"environment API key\";\n\t\t\tcase \"models_json_key\":\n\t\t\t\treturn \"models.json API key\";\n\t\t\tcase \"models_json_command\":\n\t\t\t\treturn \"models.json command\";\n\t\t\tcase \"fallback\":\n\t\t\t\treturn authStatus.label ?? \"custom provider config\";\n\t\t\tdefault:\n\t\t\t\treturn \"configured\";\n\t\t}\n\t}\n\n\tgetAutoLearnModelOptions(): SelectItem[] {\n\t\tthis.session.modelRegistry.refresh();\n\t\tconst availableModels = this.session.modelRegistry.getAvailable();\n\t\tconst sortedModels = [...availableModels].sort((a, b) => {\n\t\t\tconst priorityDelta = this.getAutoLearnModelAuthPriority(a) - this.getAutoLearnModelAuthPriority(b);\n\t\t\tif (priorityDelta !== 0) return priorityDelta;\n\t\t\tconst providerDelta = this.session.modelRegistry\n\t\t\t\t.getProviderDisplayName(a.provider)\n\t\t\t\t.localeCompare(this.session.modelRegistry.getProviderDisplayName(b.provider));\n\t\t\tif (providerDelta !== 0) return providerDelta;\n\t\t\treturn a.id.localeCompare(b.id);\n\t\t});\n\n\t\treturn sortedModels.map((model) => {\n\t\t\tconst providerName = this.session.modelRegistry.getProviderDisplayName(model.provider);\n\t\t\tconst authLabel = this.getAutoLearnModelAuthLabel(model);\n\t\t\tconst modelPattern = `${model.provider}/${model.id}`;\n\t\t\tconst currentLabel =\n\t\t\t\tthis.session.model && model.provider === this.session.model.provider && model.id === this.session.model.id\n\t\t\t\t\t? \" · current\"\n\t\t\t\t\t: \"\";\n\t\t\tconst displayName = model.name && model.name !== model.id ? ` · ${model.name}` : \"\";\n\t\t\treturn {\n\t\t\t\tvalue: modelPattern,\n\t\t\t\tlabel: modelPattern,\n\t\t\t\tdescription: `${providerName} · ${authLabel}${currentLabel}${displayName}`,\n\t\t\t};\n\t\t});\n\t}\n\n\tgetAutoLearnDataDir(): string {\n\t\treturn getProcessWorkRun(getAgentDir(), \"learning\", \"auto-learn\", \"state\").path;\n\t}\n\n\tprivate getAutoLearnStatePath(): string {\n\t\treturn path.join(this.getAutoLearnDataDir(), \"state.json\");\n\t}\n\n\tprivate ensureAutoLearnStateFile(): void {\n\t\tconst dir = this.getAutoLearnDataDir();\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t\tconst statePath = this.getAutoLearnStatePath();\n\t\tif (!fs.existsSync(statePath)) {\n\t\t\tfs.writeFileSync(statePath, \"{}\\n\", \"utf-8\");\n\t\t}\n\t}\n\n\tprivate readAutoLearnState(): AutoLearnState {\n\t\ttry {\n\t\t\tconst statePath = this.getAutoLearnStatePath();\n\t\t\tif (!fs.existsSync(statePath)) return {};\n\t\t\treturn JSON.parse(fs.readFileSync(statePath, \"utf-8\")) as AutoLearnState;\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tprivate writeAutoLearnState(state: AutoLearnState): void {\n\t\tconst dir = this.getAutoLearnDataDir();\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t\tfs.writeFileSync(this.getAutoLearnStatePath(), `${JSON.stringify(state, null, 2)}\\n`, \"utf-8\");\n\t}\n\n\tprivate acquireAutoLearnStateLock(): () => void {\n\t\tthis.ensureAutoLearnStateFile();\n\t\tconst statePath = this.getAutoLearnStatePath();\n\t\tconst maxAttempts = 20;\n\t\tconst delayMs = 25;\n\t\tlet lastError: unknown;\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn lockfile.lockSync(statePath, { realpath: false, stale: 30000 });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst code =\n\t\t\t\t\terror && typeof error === \"object\" && \"code\" in error ? String((error as { code?: unknown }).code) : \"\";\n\t\t\t\tif (code !== \"ELOCKED\" || attempt === maxAttempts) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tlastError = error;\n\t\t\t\tconst start = Date.now();\n\t\t\t\twhile (Date.now() - start < delayMs) {\n\t\t\t\t\t// Synchronous callers need a synchronous lock retry loop.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow lastError instanceof Error ? lastError : new Error(\"Failed to acquire Auto Learn state lock\");\n\t}\n\n\tprivate withAutoLearnStateLock<T>(fn: (state: AutoLearnState) => AutoLearnStateLockResult<T>): T {\n\t\tlet release: (() => void) | undefined;\n\t\ttry {\n\t\t\trelease = this.acquireAutoLearnStateLock();\n\t\t\tconst { result, next } = fn(this.readAutoLearnState());\n\t\t\tif (next !== undefined) {\n\t\t\t\tthis.writeAutoLearnState(next);\n\t\t\t}\n\t\t\treturn result;\n\t\t} finally {\n\t\t\trelease?.();\n\t\t}\n\t}\n\n\tprivate appendAutoLearnLog(logPath: string, message: string): void {\n\t\ttry {\n\t\t\tfs.appendFileSync(logPath, `${message}\\n`, \"utf-8\");\n\t\t} catch {\n\t\t\t// Logging must never turn a background learner startup failure into an interactive crash.\n\t\t}\n\t}\n\n\tprivate isAutoLearnPidAlive(pid: number | undefined): boolean {\n\t\tif (typeof pid !== \"number\" || pid <= 0) return false;\n\t\ttry {\n\t\t\tprocess.kill(pid, 0);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconst code =\n\t\t\t\terror && typeof error === \"object\" && \"code\" in error ? String((error as { code?: unknown }).code) : \"\";\n\t\t\treturn code === \"EPERM\";\n\t\t}\n\t}\n\n\tprivate pruneAutoLearnState(state: AutoLearnState, now = Date.now()): AutoLearnState {\n\t\tconst runs = { ...(state.runs ?? {}) };\n\t\tfor (const [id, run] of Object.entries(runs)) {\n\t\t\tif (run.expiresAt <= now) {\n\t\t\t\tdelete runs[id];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (run.status === \"reserved\" && run.pid === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!this.isAutoLearnPidAlive(run.pid)) {\n\t\t\t\tdelete runs[id];\n\t\t\t}\n\t\t}\n\t\treturn { ...state, runs };\n\t}\n\n\tprivate pruneAutoLearnHistoryFromState(state: AutoLearnState, now = Date.now()): AutoLearnState {\n\t\tconst prunedState = this.pruneAutoLearnState(state, now);\n\t\tpruneAutoLearnConversationHistory({\n\t\t\tdataDir: this.getAutoLearnDataDir(),\n\t\t\tnow,\n\t\t\tactiveRunIds: Object.keys(prunedState.runs ?? {}),\n\t\t\tactiveSessionIds: Object.values(prunedState.runs ?? {}).map((run) => run.sessionId),\n\t\t});\n\t\treturn prunedState;\n\t}\n\n\tgetPrunedAutoLearnState(): AutoLearnState {\n\t\treturn this.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current);\n\t\t\treturn { result: state, next: state };\n\t\t});\n\t}\n\n\tgetAutoLearnPresetForAutonomyMode(mode: AutonomyMode, current: AutoLearnSettings = {}): Required<AutoLearnSettings> {\n\t\tconst preset = AUTONOMY_AUTO_LEARN_PRESETS[mode] ?? AUTONOMY_AUTO_LEARN_PRESETS.off;\n\t\treturn { ...preset, model: current.model?.trim() || preset.model };\n\t}\n\n\tgetEffectiveAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\tconst settings = this.settingsManager.getAutoLearnSettings();\n\t\tconst preset = this.getAutoLearnPresetForAutonomyMode(this.settingsManager.getAutonomySettings().mode, settings);\n\t\treturn {\n\t\t\tenabled: settings.enabled ?? preset.enabled,\n\t\t\tmodel: settings.model?.trim() || preset.model,\n\t\t\tlongSessionMessages: settings.longSessionMessages ?? preset.longSessionMessages,\n\t\t\tlongSessionContextPercent: settings.longSessionContextPercent ?? preset.longSessionContextPercent,\n\t\t\tcooldownMinutes: settings.cooldownMinutes ?? preset.cooldownMinutes,\n\t\t\tleaseMinutes: settings.leaseMinutes ?? preset.leaseMinutes,\n\t\t\tmaxConcurrentLearners: settings.maxConcurrentLearners ?? preset.maxConcurrentLearners,\n\t\t\tapplyHighConfidence: settings.applyHighConfidence ?? preset.applyHighConfidence,\n\t\t\treflectionReview: settings.reflectionReview ?? preset.reflectionReview,\n\t\t\treflectionMinToolCalls: settings.reflectionMinToolCalls ?? preset.reflectionMinToolCalls,\n\t\t\treflectionCooldownMinutes: settings.reflectionCooldownMinutes ?? preset.reflectionCooldownMinutes,\n\t\t\tcomplexTaskToolCalls: settings.complexTaskToolCalls ?? preset.complexTaskToolCalls,\n\t\t\tthinkingLevel: settings.thinkingLevel ?? preset.thinkingLevel,\n\t\t};\n\t}\n\n\tgetCurrentAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\treturn this.getEffectiveAutoLearnSettings();\n\t}\n\n\tgetAutoLearnTenantKey(): string {\n\t\treturn `${this.sessionManager.getCwd()}::${this.session.sessionId}`;\n\t}\n\n\tprivate getAutoLearnTenantId(): string {\n\t\tconst cwdHash = crypto.createHash(\"sha256\").update(this.sessionManager.getCwd()).digest(\"hex\").slice(0, 8);\n\t\tconst sessionPart = sanitizeAutoLearnPathPart(this.session.sessionId, \"session\");\n\t\treturn `${sessionPart}-${cwdHash}`;\n\t}\n\n\tgetAutoLearnTenantDataDir(): string {\n\t\treturn path.join(this.getAutoLearnDataDir(), \"tenants\", this.getAutoLearnTenantId());\n\t}\n\n\tprivate getAutoLearnMessageCount(): number {\n\t\treturn this.sessionManager.getBranch().filter((entry) => entry.type === \"message\").length;\n\t}\n\n\tprivate buildAutoLearnDecisionFromState(\n\t\tstate: AutoLearnState,\n\t\tsettings: Required<AutoLearnSettings>,\n\t\tforce = false,\n\t): AutoLearnDecision {\n\t\tconst now = Date.now();\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst runningCount = Object.values(state.runs ?? {}).filter((run) => run.tenant === tenant).length;\n\t\tconst lastLaunch = state.lastLaunchByTenant?.[tenant] ?? 0;\n\t\tconst cooldownMs = settings.cooldownMinutes * 60 * 1000;\n\t\tconst cooldownRemainingMs = Math.max(0, lastLaunch + cooldownMs - now);\n\t\tconst messageCount = this.getAutoLearnMessageCount();\n\t\tconst contextPercent = this.session.getContextUsage()?.percent ?? null;\n\n\t\tif (!settings.enabled && !force) {\n\t\t\treturn {\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: \"disabled\",\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (runningCount >= settings.maxConcurrentLearners) {\n\t\t\treturn {\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: `max tenant learners running (${runningCount}/${settings.maxConcurrentLearners})`,\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (!force && cooldownRemainingMs > 0) {\n\t\t\treturn {\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: \"cooldown\",\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (force) {\n\t\t\treturn { shouldRun: true, reason: \"manual\", messageCount, contextPercent, cooldownRemainingMs, runningCount };\n\t\t}\n\t\tif (messageCount >= settings.longSessionMessages) {\n\t\t\treturn {\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `message trigger (${messageCount}/${settings.longSessionMessages})`,\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (contextPercent !== null && contextPercent >= settings.longSessionContextPercent) {\n\t\t\treturn {\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `context trigger (${contextPercent.toFixed(1)}%/${settings.longSessionContextPercent}%)`,\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tshouldRun: false,\n\t\t\treason: \"thresholds not met\",\n\t\t\tmessageCount,\n\t\t\tcontextPercent,\n\t\t\tcooldownRemainingMs,\n\t\t\trunningCount,\n\t\t};\n\t}\n\n\tprivate resolveAutoLearnModelPattern(settings: Required<AutoLearnSettings>): string | undefined {\n\t\tif (settings.model === \"active\") {\n\t\t\treturn this.session.model ? `${this.session.model.provider}/${this.session.model.id}` : undefined;\n\t\t}\n\t\treturn settings.model;\n\t}\n\n\tprivate getAutoLearnSpawnTarget(): AutoLearnSpawnTarget | undefined {\n\t\tconst overridePath = process.env.PI_AUTO_LEARN_CLI_PATH?.trim();\n\t\tif (overridePath) {\n\t\t\treturn { command: overridePath, argsPrefix: [] };\n\t\t}\n\n\t\tconst execBase = path.basename(process.execPath).toLowerCase();\n\t\tconst isScriptRuntime =\n\t\t\texecBase === \"node\" || execBase === \"node.exe\" || execBase === \"bun\" || execBase === \"bun.exe\";\n\t\tif (!isScriptRuntime) {\n\t\t\treturn { command: process.execPath, argsPrefix: [] };\n\t\t}\n\n\t\tconst cliPath = process.argv[1];\n\t\tif (!cliPath || cliPath.startsWith(\"-\")) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn { command: process.execPath, argsPrefix: [cliPath] };\n\t}\n\n\tvalidateAutoLearnModelValue(value: string | undefined): string | undefined {\n\t\tconst modelValue = value?.trim();\n\t\tif (!modelValue || modelValue === \"active\") return undefined;\n\t\tconst available = this.session.modelRegistry.getAvailable();\n\t\tif (modelValue.includes(\"/\")) {\n\t\t\tconst [provider, modelId] = modelValue.split(\"/\", 2);\n\t\t\tif (available.some((model) => model.provider === provider && model.id === modelId)) return undefined;\n\t\t\treturn `Auto Learn model \"${modelValue}\" is not in configured subscription/API models; saved as manual/unverified.`;\n\t\t}\n\t\tif (available.some((model) => model.id === modelValue)) return undefined;\n\t\treturn `Auto Learn model \"${modelValue}\" is not in configured subscription/API models; saved as manual/unverified.`;\n\t}\n\n\tprivate evaluateAutoLearn(force = false): AutoLearnDecision {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\treturn this.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current);\n\t\t\treturn { result: this.buildAutoLearnDecisionFromState(state, settings, force), next: state };\n\t\t});\n\t}\n\n\tprivate buildAutonomyAuthorityPrompt(): string {\n\t\tconst autonomy = this.settingsManager.getAutonomySettings();\n\t\tconst selfModification = this.settingsManager.getSelfModificationSettings();\n\t\tif (autonomy.mode !== \"full\") {\n\t\t\treturn [\n\t\t\t\t\"Authority mode: proposal-gated.\",\n\t\t\t\t\"- You may autonomously query memory and run bounded learning tools.\",\n\t\t\t\t\"- Durable memory writes require the configured high-confidence policy; skills, extensions, source, settings, publishing, tagging, and releases remain proposals unless the foreground user explicitly asks.\",\n\t\t\t].join(\"\\n\");\n\t\t}\n\n\t\tconst selfModificationSource = selfModification.enabled\n\t\t\t? this.deps.resolveSelfModificationSource(selfModification)\n\t\t\t: undefined;\n\t\tconst sourceAuthority =\n\t\t\tselfModification.enabled && selfModificationSource\n\t\t\t\t? `- Pi source: standing authority to edit the authorized selfModification source (${selfModificationSource}) for self-evolution improvements; inspect git status first, preserve unrelated user changes, run focused validation, and leave a clear rollback/test summary.`\n\t\t\t\t: \"- Pi source: no standing source-edit authority until selfModification.enabled and selfModification.sourcePaths are set.\";\n\t\treturn [\n\t\t\t\"Authority mode: FULL AUTONOMOUS standing grant.\",\n\t\t\t\"- Memory: may apply high-confidence durable Automata memory/corrections after duplicate and corroboration checks.\",\n\t\t\t\"- Skills: may create or patch user/project-owned procedural skills and support files; prefer updating existing umbrella skills; do not delete skills without making a recoverable archive/backup.\",\n\t\t\t\"- User/project extensions and tools: may create or patch small scoped extensions/tools under Pi user/project roots when they address repeated workflow/tooling gaps; validate and keep changes auditable.\",\n\t\t\t\"- Settings: may auto-tune autonomy/autoLearn settings to reduce bottlenecks; do not modify credentials, provider auth, package sources, or unrelated user preferences.\",\n\t\t\tsourceAuthority,\n\t\t\t\"- Hard stops without explicit foreground approval: publish, npm release, git push, tag creation, credential changes, destructive user-data deletion, network-exposed services, or authority expansion beyond this policy.\",\n\t\t\t\"- Audit: final output must list changed paths/settings, commands/tests run, evidence, residual risks, and rollback guidance. If no safe validation is possible, leave the change as a proposal instead of applying it.\",\n\t\t].join(\"\\n\");\n\t}\n\n\tprivate buildAutoLearnPrompt(\n\t\treason: string,\n\t\tsettings: Required<AutoLearnSettings>,\n\t\toptions: { kind?: \"auto\" | \"reflection\"; turnDigest?: string } = {},\n\t): string {\n\t\tconst authorityBlock = this.buildAutonomyAuthorityPrompt();\n\t\tconst reflectionBlock =\n\t\t\toptions.kind === \"reflection\" && options.turnDigest\n\t\t\t\t? `\\n\\nLatest completed turn digest (bounded; use only as current-session evidence, not as longitudinal proof):\\n<turn_digest>\\n${options.turnDigest}\\n</turn_digest>`\n\t\t\t\t: \"\";\n\t\tconst objective =\n\t\t\toptions.kind === \"reflection\"\n\t\t\t\t? \"review the latest completed turn for durable memory, skill, validation, tooling, and code-baked self-improvement cues, then run one bounded continuous-learning pass if the learning tools are available\"\n\t\t\t\t: \"run one bounded continuous-learning pass for this Pi tenant\";\n\t\treturn `You are Pi Auto Learn running as a background learner.\\n\\nObjective: ${objective}.\\nTrigger: ${reason}.\\n\\n${authorityBlock}\\n\\nRequired workflow:\\n1. Query existing durable memory/rules first when tools allow it. Memory confrontation is mandatory before accepting, merging, upgrading, or rejecting learning candidates.\\n2. Run the available Auto Learn tooling, preferably learning_run_auto, with applyHighConfidence=${settings.applyHighConfidence}. Process candidate validation in vectorized chunks/batches; avoid scalar per-candidate memory queries except for final selected writes.\\n3. Apply the learning validation tree to each candidate chunk: (a) Why is this good for the user? (b) Is it unique, or similar to existing memory/skills/agents so it should merge or upgrade existing knowledge? (c) Will this make Pi a better agent? Candidates that cannot answer all three are noise.\\n4. Hermes-style learning cycle: after a complex task (${settings.complexTaskToolCalls}+ tool calls), user correction, repeated steering pattern, non-trivial fix/workaround/debugging path, loaded-skill defect, trigger gap, tool gap, or harness workflow defect, actively create or update durable learning artifacts. Memory stores compact facts/preferences/state; skills/prompts/agents/extensions/source store procedural behavior. When a lesson changes how Pi should act on a future class of task, memory alone is not completion.\\n5. Skill update preference order: (1) patch the currently loaded or consulted skill that governed the task; (2) patch an existing class-level umbrella skill/agent/prompt; (3) add a support file under references/, templates/, or scripts/ and add a SKILL.md pointer; (4) create a new class-level umbrella skill only when no existing artifact fits. Never create one-off PR/error/codename/session skills.\\n6. Behavioral self-improvement is code-baked by default: prefer the lowest durable executable layer that fixes the behavior — patch an existing skill/prompt/agent/extension/tool, tune an approved setting, or edit the authorized Pi source when source authority is available. Use Automata only for concise facts/evidence pointers that support the baked change.\\n7. Do not harden transient or environment-dependent failures into durable behavior: missing binaries, fresh-install package gaps, credentials not configured, path mismatches, one-off task narratives, or negative tool-broken claims should become setup/troubleshooting fixes only when the fix itself is reusable.\\n8. Treat the latest-turn digest as current-session evidence only; do not auto-commit one-off cues unless deterministic tooling and memory confrontation corroborate them.\\n9. In mode=full, apply safe memory/skill/user-extension/authorized-source improvements under the standing grant above; otherwise keep them proposal-gated.\\n10. Never cross hard-stop boundaries from the authority policy.\\n11. If the learning tools are unavailable, report BLOCKED with the missing tool names and do not improvise.\\n12. Finish with PASS, BLOCKED, or FAIL and concise evidence, including chunk counts, merge/upgrade/code-bake decisions, changed paths/settings, validation, and cleanup/purge status.${reflectionBlock}`;\n\t}\n\n\tprivate reserveAutoLearnRun(params: {\n\t\tsettings: Required<AutoLearnSettings>;\n\t\tforce: boolean;\n\t\tcooldownKind?: \"auto\" | \"reflection\";\n\t\tbypassReflectionCooldown?: boolean;\n\t\trunId: string;\n\t\tmodelPattern: string;\n\t\treason: string;\n\t\tlogPath: string;\n\t\tsessionDir: string;\n\t\tsessionId: string;\n\t\tpromptPath: string;\n\t\tkind: \"auto\" | \"reflection\";\n\t}): AutoLearnReservationResult {\n\t\treturn this.withAutoLearnStateLock<AutoLearnReservationResult>((current) => {\n\t\t\tconst now = Date.now();\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current, now);\n\t\t\tconst tenant = this.getAutoLearnTenantKey();\n\n\t\t\tif (params.cooldownKind === \"reflection\" && !params.bypassReflectionCooldown) {\n\t\t\t\tconst lastReflection = state.lastReflectionByTenant?.[tenant] ?? 0;\n\t\t\t\tconst cooldownMs = params.settings.reflectionCooldownMinutes * 60 * 1000;\n\t\t\t\tif (Math.max(0, lastReflection + cooldownMs - now) > 0) {\n\t\t\t\t\treturn { result: { ok: false, reason: \"reflection cooldown\" }, next: state };\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst decision = this.buildAutoLearnDecisionFromState(state, params.settings, params.force);\n\t\t\tif (!decision.shouldRun) {\n\t\t\t\treturn { result: { ok: false, reason: decision.reason }, next: state };\n\t\t\t}\n\n\t\t\tconst run: AutoLearnRunRecord = {\n\t\t\t\ttenant,\n\t\t\t\tmodel: params.modelPattern,\n\t\t\t\treason: params.reason,\n\t\t\t\tstartedAt: now,\n\t\t\t\texpiresAt: now + AUTO_LEARN_RESERVATION_MS,\n\t\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\t\tlogPath: params.logPath,\n\t\t\t\tsessionDir: params.sessionDir,\n\t\t\t\tsessionId: params.sessionId,\n\t\t\t\tpromptPath: params.promptPath,\n\t\t\t\tkind: params.kind,\n\t\t\t\tautonomyMode: this.settingsManager.getAutonomySettings().mode,\n\t\t\t\tauthority:\n\t\t\t\t\tthis.settingsManager.getAutonomySettings().mode === \"full\"\n\t\t\t\t\t\t? \"standing-full-autonomous\"\n\t\t\t\t\t\t: \"proposal-gated\",\n\t\t\t\tstatus: \"reserved\",\n\t\t\t};\n\t\t\tconst next: AutoLearnState = {\n\t\t\t\t...state,\n\t\t\t\truns: { ...(state.runs ?? {}), [params.runId]: run },\n\t\t\t};\n\t\t\tif (params.cooldownKind === \"reflection\") {\n\t\t\t\tnext.lastReflectionByTenant = { ...(state.lastReflectionByTenant ?? {}), [tenant]: now };\n\t\t\t} else {\n\t\t\t\tnext.lastLaunchByTenant = { ...(state.lastLaunchByTenant ?? {}), [tenant]: now };\n\t\t\t}\n\t\t\treturn { result: { ok: true, reservation: { runId: params.runId, startedAt: now } }, next };\n\t\t});\n\t}\n\n\tprivate releaseAutoLearnReservation(reservation: AutoLearnReservation, cooldownKind?: \"auto\" | \"reflection\"): void {\n\t\tthis.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current);\n\t\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\t\tconst runs = { ...(state.runs ?? {}) };\n\t\t\tdelete runs[reservation.runId];\n\t\t\tconst next: AutoLearnState = { ...state, runs };\n\t\t\tif (cooldownKind === \"reflection\" && next.lastReflectionByTenant?.[tenant] === reservation.startedAt) {\n\t\t\t\tnext.lastReflectionByTenant = { ...next.lastReflectionByTenant };\n\t\t\t\tdelete next.lastReflectionByTenant[tenant];\n\t\t\t} else if (cooldownKind !== \"reflection\" && next.lastLaunchByTenant?.[tenant] === reservation.startedAt) {\n\t\t\t\tnext.lastLaunchByTenant = { ...next.lastLaunchByTenant };\n\t\t\t\tdelete next.lastLaunchByTenant[tenant];\n\t\t\t}\n\t\t\treturn { result: undefined, next };\n\t\t});\n\t}\n\n\tprivate reportCompletedAutoLearnUsage(runId: string, sessionDir: string, sessionId: string, logPath: string): void {\n\t\ttry {\n\t\t\treportCompletedAutoLearnUsageHelper({\n\t\t\t\trunId,\n\t\t\t\tsessionDir,\n\t\t\t\tsessionId,\n\t\t\t\tlogPath,\n\t\t\t\tparentSession: this.session,\n\t\t\t\tappendLog: (p, msg) => this.appendAutoLearnLog(p, msg),\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn usage report failed: ${message}`);\n\t\t}\n\t}\n\n\tprivate cleanupCompletedAutoLearnRun(\n\t\trunId: string,\n\t\toptions: {\n\t\t\tartifactPaths: string[];\n\t\t\tsessionDir: string;\n\t\t\tsessionId: string;\n\t\t\tlogPath: string;\n\t\t},\n\t): void {\n\t\tthis.reportCompletedAutoLearnUsage(runId, options.sessionDir, options.sessionId, options.logPath);\n\t\tconst dataDir = this.getAutoLearnDataDir();\n\t\tfor (const filePath of options.artifactPaths) removeAutoLearnArtifactPath(filePath, dataDir);\n\t\tthis.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnState(current);\n\t\t\tconst runs = { ...(state.runs ?? {}) };\n\t\t\tdelete runs[runId];\n\t\t\treturn { result: undefined, next: { ...state, runs } };\n\t\t});\n\t\tthis.updateAutoLearnFooter();\n\t}\n\n\tprivate markAutoLearnReservationRunning(\n\t\treservation: AutoLearnReservation,\n\t\tpid: number,\n\t\tsettings: Required<AutoLearnSettings>,\n\t): void {\n\t\tthis.withAutoLearnStateLock((current) => {\n\t\t\tconst now = Date.now();\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current, now);\n\t\t\tconst run = state.runs?.[reservation.runId];\n\t\t\tif (!run) {\n\t\t\t\treturn { result: undefined, next: state };\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tresult: undefined,\n\t\t\t\tnext: {\n\t\t\t\t\t...state,\n\t\t\t\t\truns: {\n\t\t\t\t\t\t...(state.runs ?? {}),\n\t\t\t\t\t\t[reservation.runId]: {\n\t\t\t\t\t\t\t...run,\n\t\t\t\t\t\t\tpid,\n\t\t\t\t\t\t\texpiresAt: now + settings.leaseMinutes * 60 * 1000,\n\t\t\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tlaunchAutoLearn(\n\t\treason: string,\n\t\tforce = false,\n\t\toptions: {\n\t\t\tcooldownKind?: \"auto\" | \"reflection\";\n\t\t\tpromptKind?: \"auto\" | \"reflection\";\n\t\t\tturnDigest?: string;\n\t\t\tbypassReflectionCooldown?: boolean;\n\t\t} = {},\n\t): string {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst modelPattern = this.resolveAutoLearnModelPattern(settings);\n\t\tif (!modelPattern) {\n\t\t\treturn \"Auto Learn not started: no active model is available for model=active.\";\n\t\t}\n\t\tconst spawnTarget = this.getAutoLearnSpawnTarget();\n\t\tif (!spawnTarget) {\n\t\t\treturn \"Auto Learn not started: could not resolve current pi CLI path.\";\n\t\t}\n\n\t\tconst dir = this.getAutoLearnTenantDataDir();\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t\tconst runId = `${Date.now()}-${crypto.randomUUID().slice(0, 8)}`;\n\t\tconst logPath = path.join(dir, `${runId}.log`);\n\t\tconst promptPath = path.join(dir, `${runId}.prompt.md`);\n\t\tconst kind = options.promptKind ?? \"auto\";\n\t\tconst sessionDir = path.join(dir, \"sessions\", runId);\n\t\tconst sessionId = `auto-learn-${kind}-${this.getAutoLearnTenantId()}-${runId}`;\n\t\tfs.mkdirSync(sessionDir, { recursive: true });\n\t\tconst prompt = this.buildAutoLearnPrompt(reason, settings, {\n\t\t\tkind,\n\t\t\tturnDigest: options.turnDigest,\n\t\t});\n\t\tconst args = buildAutoLearnSpawnArgs(spawnTarget, {\n\t\t\tname: `Auto Learn ${runId}`,\n\t\t\tmodelPattern,\n\t\t\tthinkingLevel: settings.thinkingLevel ?? \"low\",\n\t\t\tsessionDir,\n\t\t\tsessionId,\n\t\t\tpromptPath,\n\t\t});\n\t\tconst invalidSpawnInput = findAutoLearnSpawnNullByteInput(spawnTarget.command, args);\n\t\tif (invalidSpawnInput) {\n\t\t\tconst message = `Auto Learn not started: ${invalidSpawnInput} contains a null byte.`;\n\t\t\tthis.appendAutoLearnLog(logPath, message);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `${message} Log: ${logPath}`;\n\t\t}\n\n\t\tconst reservationResult = this.reserveAutoLearnRun({\n\t\t\tsettings,\n\t\t\tforce,\n\t\t\tcooldownKind: options.cooldownKind,\n\t\t\tbypassReflectionCooldown: options.bypassReflectionCooldown,\n\t\t\trunId,\n\t\t\tmodelPattern,\n\t\t\treason,\n\t\t\tlogPath,\n\t\t\tsessionDir,\n\t\t\tsessionId,\n\t\t\tpromptPath,\n\t\t\tkind,\n\t\t});\n\t\tif (!reservationResult.ok) {\n\t\t\treturn `Auto Learn not started: ${reservationResult.reason}`;\n\t\t}\n\t\tconst { reservation } = reservationResult;\n\n\t\ttry {\n\t\t\tfs.writeFileSync(promptPath, prompt, \"utf-8\");\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.releaseAutoLearnReservation(reservation, options.cooldownKind);\n\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn failed to write prompt file: ${message}`);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `Auto Learn not started: failed to write prompt file (${message}). Log: ${logPath}`;\n\t\t}\n\n\t\tlet child: ReturnType<typeof spawn> | undefined;\n\t\tlet outFd: number | undefined;\n\t\ttry {\n\t\t\toutFd = fs.openSync(logPath, \"a\");\n\t\t\tconst sourceSessionFile = this.sessionManager.getSessionFile();\n\t\t\tchild = spawn(spawnTarget.command, args, {\n\t\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\t\tdetached: true,\n\t\t\t\tstdio: [\"ignore\", outFd, outFd],\n\t\t\t\tenv: {\n\t\t\t\t\t...process.env,\n\t\t\t\t\tPI_AUTO_LEARN_CHILD: \"1\",\n\t\t\t\t\t...(sourceSessionFile ? { PI_AUTO_LEARN_SOURCE_SESSION_FILE: sourceSessionFile } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn failed to start: ${message}`);\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.releaseAutoLearnReservation(reservation, options.cooldownKind);\n\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn failed to start: ${message}`);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `Auto Learn not started: failed to spawn background learner (${message}). Log: ${logPath}`;\n\t\t} finally {\n\t\t\tif (outFd !== undefined) {\n\t\t\t\ttry {\n\t\t\t\t\tfs.closeSync(outFd);\n\t\t\t\t} catch {\n\t\t\t\t\t// The child has already been spawned or startup has already failed; ignore close errors here.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!child || typeof child.pid !== \"number\" || child.pid <= 0) {\n\t\t\tthis.releaseAutoLearnReservation(reservation, options.cooldownKind);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `Auto Learn not started: failed to spawn background learner. Log: ${logPath}`;\n\t\t}\n\t\tconst childPid = child.pid;\n\t\tchild.once(\"exit\", (code) => {\n\t\t\tif (code === 0) {\n\t\t\t\tthis.cleanupCompletedAutoLearnRun(reservation.runId, {\n\t\t\t\t\tartifactPaths: [promptPath, logPath, sessionDir],\n\t\t\t\t\tsessionDir,\n\t\t\t\t\tsessionId,\n\t\t\t\t\tlogPath,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tchild.unref();\n\t\tthis.markAutoLearnReservationRunning(reservation, childPid, settings);\n\n\t\tthis.updateAutoLearnFooter();\n\t\treturn `Auto Learn started. Log: ${logPath}`;\n\t}\n\n\tprivate sanitizeAutoLearnDigestText(text: string): string {\n\t\treturn text\n\t\t\t.replace(\n\t\t\t\t/-----BEGIN [A-Z ]*(?:PRIVATE|OPENSSH|RSA|DSA|EC) KEY-----[\\s\\S]*?-----END [A-Z ]*(?:PRIVATE|OPENSSH|RSA|DSA|EC) KEY-----/g,\n\t\t\t\t\"[redacted-private-key]\",\n\t\t\t)\n\t\t\t.replace(/\\b(?:sk|pk)-(?:proj-)?[A-Za-z0-9_-]{12,}/g, \"[redacted-api-key]\")\n\t\t\t.replace(/\\bsk-ant-[A-Za-z0-9_-]{12,}/g, \"[redacted-api-key]\")\n\t\t\t.replace(/\\b(?:ghp|gho|ghu|ghs|github_pat)_[A-Za-z0-9_]{20,}/g, \"[redacted-github-token]\")\n\t\t\t.replace(/\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b/g, \"[redacted-aws-access-key]\")\n\t\t\t.replace(/(?:Bearer\\s+)[A-Za-z0-9._-]{16,}/gi, \"Bearer [redacted]\")\n\t\t\t.replace(/([?&](?:key|token|api_key|access_token|secret|password)=)[^&\\s]+/gi, \"$1[redacted]\")\n\t\t\t.replace(\n\t\t\t\t/((?:access|refresh|token|apiKey|api_key|password|secret|authorization|auth)\\s*[:=]\\s*)[^\\s,'\"}]{8,}/gi,\n\t\t\t\t\"$1[redacted]\",\n\t\t\t);\n\t}\n\n\tprivate capAutoLearnDigestText(text: string, maxChars: number): string {\n\t\tconst compact = this.sanitizeAutoLearnDigestText(text).replace(/\\s+/g, \" \").trim();\n\t\tif (compact.length <= maxChars) return compact;\n\t\treturn `${compact.slice(0, Math.max(0, maxChars - 20)).trimEnd()} …[truncated]`;\n\t}\n\n\tprivate getAgentMessagePlainText(message: AgentMessage): string {\n\t\tconst raw = message as unknown as Record<string, unknown>;\n\t\tconst content = raw.content;\n\t\tif (typeof content === \"string\") return content;\n\t\tif (!Array.isArray(content)) return \"\";\n\t\tconst parts: string[] = [];\n\t\tfor (const block of content) {\n\t\t\tif (!block || typeof block !== \"object\") continue;\n\t\t\tconst item = block as Record<string, unknown>;\n\t\t\tif (item.type === \"text\" && typeof item.text === \"string\") parts.push(item.text);\n\t\t\tif (item.type === \"toolCall\" && typeof item.name === \"string\") parts.push(`[tool call: ${item.name}]`);\n\t\t}\n\t\treturn parts.join(\"\\n\");\n\t}\n\n\tprivate countAgentToolCalls(messages: AgentMessage[]): number {\n\t\tlet toolCalls = 0;\n\t\tlet toolResults = 0;\n\t\tfor (const message of messages) {\n\t\t\tconst raw = message as unknown as Record<string, unknown>;\n\t\t\tconst role = String(raw.role ?? \"\");\n\t\t\tif (role === \"toolResult\" || role === \"bashExecution\") toolResults++;\n\t\t\tconst content = raw.content;\n\t\t\tif (!Array.isArray(content)) continue;\n\t\t\tfor (const block of content) {\n\t\t\t\tif (block && typeof block === \"object\" && (block as Record<string, unknown>).type === \"toolCall\") {\n\t\t\t\t\ttoolCalls++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Math.max(toolCalls, toolResults);\n\t}\n\n\tprivate buildAutonomyReviewDigest(messages: AgentMessage[]): string {\n\t\tconst lines: string[] = [];\n\t\tfor (const message of messages.slice(-18)) {\n\t\t\tconst raw = message as unknown as Record<string, unknown>;\n\t\t\tconst role = String(raw.role ?? \"message\");\n\t\t\tconst label = role === \"toolResult\" && typeof raw.toolName === \"string\" ? `toolResult:${raw.toolName}` : role;\n\t\t\tconst text = this.capAutoLearnDigestText(this.getAgentMessagePlainText(message), 700);\n\t\t\tif (text) lines.push(`${label}: ${text}`);\n\t\t}\n\t\tconst digest = lines.join(\"\\n---\\n\");\n\t\treturn this.capAutoLearnDigestText(digest || \"[No textual turn digest available.]\", 6000);\n\t}\n\n\tprivate evaluateAutonomyReview(messages: AgentMessage[]): AutonomyReviewDecision {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst state = this.withAutoLearnStateLock((current) => {\n\t\t\tconst pruned = this.pruneAutoLearnHistoryFromState(current);\n\t\t\treturn { result: pruned, next: pruned };\n\t\t});\n\t\tconst now = Date.now();\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst runningCount = Object.values(state.runs ?? {}).filter((run) => run.tenant === tenant).length;\n\t\tconst lastReflection = state.lastReflectionByTenant?.[tenant] ?? 0;\n\t\tconst cooldownMs = settings.reflectionCooldownMinutes * 60 * 1000;\n\t\tconst cooldownRemainingMs = Math.max(0, lastReflection + cooldownMs - now);\n\t\tconst messageCount = this.getAutoLearnMessageCount();\n\t\tconst contextPercent = this.session.getContextUsage()?.percent ?? null;\n\t\tconst toolCalls = this.countAgentToolCalls(messages);\n\t\tconst userText = messages\n\t\t\t.filter((message) => String((message as unknown as Record<string, unknown>).role ?? \"\") === \"user\")\n\t\t\t.map((message) => this.getAgentMessagePlainText(message))\n\t\t\t.join(\"\\n\");\n\t\tconst correctionSignal =\n\t\t\t/\\b(next time|for future|from now on|remember this|don't|do not|avoid|instead|you should|should have|you forgot|you missed|not what i asked|wrong again)\\b/i.test(\n\t\t\t\tuserText,\n\t\t\t);\n\t\tconst behavioralSelfImprovementSignal =\n\t\t\t/\\b(harness|pi|agent|autonomy|autonomous|self[- ]?improv(?:e|ement|ing)?|steer(?:ing)?|trigger(?:s)?|skill(?:s)?|code[- ]?bak(?:e|ed)|bake(?:d)? into code|not (?:automata|memory)|reference agent|hermes)\\b/i.test(\n\t\t\t\tuserText,\n\t\t\t) &&\n\t\t\t/\\b(improve|automatic(?:ally)?|autonomous|trigger|fire|skill|steer|self[- ]?improv(?:e|ement|ing)?|code[- ]?bak(?:e|ed)|bake(?:d)?|too much|less)\\b/i.test(\n\t\t\t\tuserText,\n\t\t\t);\n\t\tconst complexTaskThreshold = Math.max(1, settings.complexTaskToolCalls ?? 12);\n\t\tconst complexTaskSignal = toolCalls >= complexTaskThreshold;\n\t\tconst bypassCooldown = correctionSignal || behavioralSelfImprovementSignal || complexTaskSignal;\n\t\tconst base = { messageCount, contextPercent, cooldownRemainingMs, runningCount, toolCalls };\n\t\tif (!settings.enabled) return { ...base, shouldRun: false, reason: \"disabled\" };\n\t\tif (!settings.reflectionReview) return { ...base, shouldRun: false, reason: \"reflection disabled\" };\n\t\tif (runningCount >= settings.maxConcurrentLearners) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: `max tenant learners running (${runningCount}/${settings.maxConcurrentLearners})`,\n\t\t\t};\n\t\t}\n\t\tif (cooldownRemainingMs > 0 && !bypassCooldown) {\n\t\t\treturn { ...base, shouldRun: false, reason: \"reflection cooldown\" };\n\t\t}\n\t\tif (behavioralSelfImprovementSignal) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: \"reflection behavioral self-improvement signal\",\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t\tbypassCooldown: true,\n\t\t\t};\n\t\t}\n\t\tif (correctionSignal) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: \"reflection correction signal\",\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t\tbypassCooldown: true,\n\t\t\t};\n\t\t}\n\t\tif (complexTaskSignal) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `reflection complex task learning signal (${toolCalls}/${complexTaskThreshold} tool calls)`,\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t\tbypassCooldown: true,\n\t\t\t};\n\t\t}\n\t\t// Full autonomy expands allowed action scope for triggered reviews; it does not make every turn a review trigger.\n\t\tif (toolCalls >= settings.reflectionMinToolCalls) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `reflection tool trigger (${toolCalls}/${settings.reflectionMinToolCalls})`,\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t};\n\t\t}\n\t\treturn { ...base, shouldRun: false, reason: \"reflection thresholds not met\" };\n\t}\n\n\t/**\n\t * Native reflection (R2) is the in-process replacement for the buggy `continuous-learning`\n\t * subprocess. It runs when auto-learn is enabled and is not killed via `PI_NATIVE_REFLECTION=0`.\n\t */\n\tisNativeReflectionEnabled(): boolean {\n\t\tif (process.env.PI_NATIVE_REFLECTION === \"0\") return false;\n\t\tif (process.env.PI_AUTO_LEARN_CHILD === \"1\") return false;\n\t\treturn this.getEffectiveAutoLearnSettings().enabled;\n\t}\n\n\t/** Heuristic: does the user's turn text read like a correction/steer worth learning from? */\n\tprivate hasCorrectionSignal(userText: string): boolean {\n\t\treturn /\\b(next time|for future|from now on|remember this|don't|do not|avoid|instead|you should|should have|you forgot|you missed|not what i asked|wrong again)\\b/i.test(\n\t\t\tuserText,\n\t\t);\n\t}\n\n\t/**\n\t * End-of-loop native reflection: demand-gate the just-finished turn (zero-I/O) and, when\n\t * warranted, run the in-process {@link AgentSession.runReflectionPass} as a fire-and-forget\n\t * background microtask. No subprocess, no blocking of the UI.\n\t */\n\t/**\n\t * Resolve the model + thinking level the native reflection pass should use, from auto-learn\n\t * settings (`model`, `thinkingLevel`). The configured model is honored only when its provider is\n\t * AVAILABLE (api key / logged in) — otherwise we fall back to the session model (undefined). This\n\t * lets the user pick a balanced/cheaper reflection model without risking an unusable one.\n\t */\n\tprivate _resolveReflectionModel(settings: Required<AutoLearnSettings>) {\n\t\tlet model: Model<any> | undefined;\n\t\tif (settings.model && settings.model !== \"active\") {\n\t\t\tconst resolved = resolveCliModel({ cliModel: settings.model, modelRegistry: this.session.modelRegistry });\n\t\t\tif (resolved.model && this.session.modelRegistry.hasConfiguredAuth(resolved.model)) {\n\t\t\t\tmodel = resolved.model;\n\t\t\t}\n\t\t}\n\t\tconst thinkingLevel = settings.thinkingLevel ?? \"low\";\n\t\treturn { model, thinkingLevel };\n\t}\n\n\t/** Buffer a debounce-skipped turn's text so its learning is folded into the next pass (bug #29). */\n\tprivate _bufferPendingReflection(text: string): void {\n\t\tconst t = text.trim();\n\t\tif (!t) return;\n\t\tthis._pendingReflectionText.push(t);\n\t\t// Bound the buffer so a long skipped streak can't grow unbounded; drop oldest past the budget\n\t\t// (the most recent corrections matter most).\n\t\tlet total = this._pendingReflectionText.reduce((n, s) => n + s.length + 1, 0);\n\t\twhile (this._pendingReflectionText.length > 1 && total > AutoLearnController.PENDING_REFLECTION_MAX_CHARS) {\n\t\t\ttotal -= (this._pendingReflectionText.shift()?.length ?? 0) + 1;\n\t\t}\n\t}\n\n\tprivate _drainPendingReflection(): string {\n\t\tif (this._pendingReflectionText.length === 0) return \"\";\n\t\tconst joined = this._pendingReflectionText.join(\"\\n\");\n\t\tthis._pendingReflectionText = [];\n\t\treturn joined;\n\t}\n\n\tmaybeRunNativeReflection(messages: AgentMessage[]): void {\n\t\tif (!this.isNativeReflectionEnabled()) return;\n\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst toolCallCount = this.countAgentToolCalls(messages);\n\t\tconst contextPercent = this.session.getContextUsage()?.percent ?? 0;\n\t\tconst contextHeadroomPct = Math.max(0, 100 - contextPercent);\n\n\t\tconst userText = messages\n\t\t\t.filter((m) => String((m as unknown as Record<string, unknown>).role ?? \"\") === \"user\")\n\t\t\t.map((m) => this.getAgentMessagePlainText(m))\n\t\t\t.join(\"\\n\");\n\t\tconst hadCorrection = this.hasCorrectionSignal(userText);\n\n\t\t// A correction is worth learning from even on a short turn; otherwise require a complex turn.\n\t\tconst trigger: \"complex\" | \"corrective\" | \"none\" = hadCorrection\n\t\t\t? \"corrective\"\n\t\t\t: toolCallCount >= Math.max(1, settings.complexTaskToolCalls ?? 12)\n\t\t\t\t? \"complex\"\n\t\t\t\t: \"none\";\n\t\tif (trigger === \"none\") return;\n\n\t\tconst recentTurnText = messages\n\t\t\t.map((m) =>\n\t\t\t\t`${String((m as unknown as Record<string, unknown>).role ?? \"\")}: ${this.getAgentMessagePlainText(m)}`.trim(),\n\t\t\t)\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\\n\");\n\n\t\t// Debounce (cost guard): never run two background reflection passes at once, and never start one\n\t\t// within the min interval of the last — a multi-turn correction session would otherwise spawn\n\t\t// overlapping passes that re-reason the same task. A skipped turn is NOT dropped: its text is\n\t\t// buffered and folded into the next pass, so the corrective feedback is still learned (bug #29).\n\t\tconst now = Date.now();\n\t\tconst debounced =\n\t\t\tthis._nativeReflectionInFlight ||\n\t\t\tnow - this._lastNativeReflectionAt < AutoLearnController.NATIVE_REFLECTION_MIN_INTERVAL_MS;\n\t\tif (debounced) {\n\t\t\tthis._bufferPendingReflection(recentTurnText);\n\t\t\treturn;\n\t\t}\n\n\t\t// Fold any buffered (previously debounced) turns into this pass so nothing learned is lost.\n\t\tconst pending = this._drainPendingReflection();\n\t\tconst reflectionText = pending ? `${pending}\\n${recentTurnText}` : recentTurnText;\n\n\t\t// Stable per-turn id so a duplicate scheduling/retry can't double-count the reflection cost.\n\t\t// AgentMessage does not guarantee a top-level id on the real path, so derive a digest from fields\n\t\t// that are present on persisted user/assistant messages and stable across duplicate agent_end calls.\n\t\tconst turnDigest = crypto\n\t\t\t.createHash(\"sha256\")\n\t\t\t.update(\n\t\t\t\tmessages\n\t\t\t\t\t.map((message) =>\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tmessage.role,\n\t\t\t\t\t\t\t\"timestamp\" in message ? String(message.timestamp ?? \"\") : \"\",\n\t\t\t\t\t\t\tthis.getAgentMessagePlainText(message),\n\t\t\t\t\t\t].join(\"\\0\"),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\\n\"),\n\t\t\t)\n\t\t\t.digest(\"hex\")\n\t\t\t.slice(0, 24);\n\t\tconst reportId = `reflection:${turnDigest}`;\n\n\t\t// User-configurable reflection model + thinking (auto-learn settings), restricted to AVAILABLE\n\t\t// (authed) models — falls back to the session model when unset or unavailable.\n\t\tconst { model, thinkingLevel } = this._resolveReflectionModel(settings);\n\n\t\tthis._nativeReflectionInFlight = true;\n\t\tthis._lastNativeReflectionAt = now;\n\t\tvoid this.session\n\t\t\t.runReflectionPass({\n\t\t\t\tsignals: { trigger, toolCallCount, hadCorrection, contextHeadroomPct, usefulLately: 0 },\n\t\t\t\trecentTurnText: reflectionText,\n\t\t\t\treportId,\n\t\t\t\tmodel,\n\t\t\t\tthinkingLevel,\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// best-effort background learning; never disrupt the session\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis._nativeReflectionInFlight = false;\n\t\t\t});\n\t}\n\n\tmaybeStartAutoLearn(): boolean {\n\t\tif (process.env.PI_AUTO_LEARN_CHILD === \"1\") return false;\n\t\tconst decision = this.evaluateAutoLearn(false);\n\t\tif (!decision.shouldRun) {\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn false;\n\t\t}\n\t\tconst message = this.launchAutoLearn(decision.reason, false);\n\t\tif (!message.startsWith(\"Auto Learn started\")) this.ui.showStatus(message);\n\t\treturn message.startsWith(\"Auto Learn started\");\n\t}\n\n\tmaybeStartAutonomyReview(messages: AgentMessage[]): boolean {\n\t\tif (process.env.PI_AUTO_LEARN_CHILD === \"1\") return false;\n\t\tconst decision = this.evaluateAutonomyReview(messages);\n\t\tif (!decision.shouldRun) return false;\n\t\tconst message = this.launchAutoLearn(decision.reason, true, {\n\t\t\tcooldownKind: \"reflection\",\n\t\t\tpromptKind: \"reflection\",\n\t\t\tturnDigest: decision.digest,\n\t\t\tbypassReflectionCooldown: decision.bypassCooldown,\n\t\t});\n\t\tif (!message.startsWith(\"Auto Learn started\")) this.ui.showStatus(message);\n\t\treturn message.startsWith(\"Auto Learn started\");\n\t}\n\n\tupdateAutoLearnFooter(): void {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tif (!settings.enabled) {\n\t\t\tthis.ui.footerDataProvider.setExtensionStatus(\"auto-learn\", undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst state = this.getPrunedAutoLearnState();\n\t\tconst hasActiveRun = Object.values(state.runs ?? {}).some(\n\t\t\t(run) => run.tenant === tenant && this.isAutoLearnPidAlive(run.pid),\n\t\t);\n\t\tthis.ui.footerDataProvider.setExtensionStatus(\n\t\t\t\"auto-learn\",\n\t\t\thasActiveRun ? theme.fg(\"warning\", \"(learning)\") : undefined,\n\t\t);\n\t\tthis.ui.invalidateFooter();\n\t\tthis.ui.requestRender();\n\t}\n\n\tformatAutoLearnStatus(): string {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst decision = this.evaluateAutoLearn(false);\n\t\tconst state = this.getPrunedAutoLearnState();\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst runs = Object.entries(state.runs ?? {}).filter(([, run]) => run.tenant === tenant);\n\t\tconst otherTenantRuns = Object.values(state.runs ?? {}).filter((run) => run.tenant !== tenant).length;\n\t\tconst contextText = decision.contextPercent === null ? \"unknown\" : `${decision.contextPercent.toFixed(1)}%`;\n\t\tconst cooldownText =\n\t\t\tdecision.cooldownRemainingMs > 0 ? `${Math.ceil(decision.cooldownRemainingMs / 60000)}m remaining` : \"ready\";\n\t\tconst runLines = runs.length\n\t\t\t? runs\n\t\t\t\t\t.map(([id, run]) => {\n\t\t\t\t\t\tconst session = [\n\t\t\t\t\t\t\trun.sessionId ? `session=${run.sessionId}` : \"\",\n\t\t\t\t\t\t\trun.sessionDir ? `sessionDir=${run.sessionDir}` : \"\",\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\t\tconst sessionText = session ? `, ${session}` : \"\";\n\t\t\t\t\t\treturn `- ${id}: ${run.model}, kind=${run.kind ?? \"auto\"}, status=${run.status ?? \"running\"}, authority=${run.authority ?? \"unknown\"}, pid=${run.pid ?? \"?\"}${sessionText}, log=${run.logPath}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\\n\")\n\t\t\t: \"- none\";\n\t\tconst reloadBlockers = getPendingReloadBlockers({\n\t\t\townPid: process.pid,\n\t\t\townSessionId: this.sessionManager.getSessionId(),\n\t\t\townSessionFile: this.sessionManager.getSessionFile(),\n\t\t});\n\t\tconst reloadBlockerLines = reloadBlockers.pending\n\t\t\t? reloadBlockers.descriptions.map((description) => `- ${description}`).join(\"\\n\")\n\t\t\t: \"- none\";\n\t\tconst reflectionLast = state.lastReflectionByTenant?.[this.getAutoLearnTenantKey()] ?? 0;\n\t\tconst reflectionCooldownRemainingMs = Math.max(\n\t\t\t0,\n\t\t\treflectionLast + settings.reflectionCooldownMinutes * 60 * 1000 - Date.now(),\n\t\t);\n\t\tconst reflectionCooldownText =\n\t\t\treflectionCooldownRemainingMs > 0 ? `${Math.ceil(reflectionCooldownRemainingMs / 60000)}m remaining` : \"ready\";\n\t\treturn `Auto Learn status\\nEnabled: ${settings.enabled}\\nModel: ${settings.model}\\nNext decision: ${decision.shouldRun ? \"ready\" : decision.reason}\\nMessages: ${decision.messageCount}/${settings.longSessionMessages}\\nContext: ${contextText}/${settings.longSessionContextPercent}%\\nCooldown: ${cooldownText}\\nReflection review: ${settings.reflectionReview ? \"enabled\" : \"disabled\"} (tool trigger ${settings.reflectionMinToolCalls}, cooldown ${reflectionCooldownText})\\nHistory retention: 7 days for internal Auto Learn prompts/logs/sessions\\nRunning tenant leases: ${runs.length}/${settings.maxConcurrentLearners}\\nOther tenant leases: ${otherTenantRuns}\\nTenant artifact dir: ${this.getAutoLearnTenantDataDir()}\\nPi auto-reload blockers: ${reloadBlockers.pending ? reloadBlockers.reason : \"none\"}\\n${reloadBlockerLines}\\nRuns:\\n${runLines}`;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"auto-learn-controller.js","sourceRoot":"","sources":["../../../src/modes/interactive/auto-learn-controller.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Auto-Learn / Native-Reflection controller.\n *\n * Extracted verbatim from interactive-mode.ts (god-file decomposition). Owns the disk-backed\n * Auto Learn run-state machine (state.json + lockfile), the background-learner spawn/prune\n * lifecycle, and the in-process native reflection pass. It takes narrow deps (a live session\n * accessor, a self-modification-source resolver that stays in the host, and a small UI callback\n * surface) rather than the whole InteractiveMode instance.\n */\n\nimport * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AgentMessage } from \"@caupulican/pi-agent-core\";\nimport { isAutoLearnSessionId } from \"@caupulican/pi-agent-core/node\";\nimport type { Model } from \"@caupulican/pi-ai\";\nimport type { SelectItem } from \"@caupulican/pi-tui\";\nimport { spawn } from \"child_process\";\nimport lockfile from \"proper-lockfile\";\nimport { getAgentDir } from \"../../config.ts\";\nimport type { AgentSession } from \"../../core/agent-session.ts\";\nimport { readAutoLearnSessionIdFromFile, reportCompletedAutoLearnUsageHelper } from \"../../core/cost/session-usage.ts\";\nimport { resolveCliModel } from \"../../core/model-resolver.ts\";\nimport {\n\tdescribeInFlightWorkUnit,\n\tgetInFlightWorkUnits,\n\tgetPendingReloadBlockers,\n} from \"../../core/reload-blockers.ts\";\nimport type { AutoLearnSettings, AutonomyMode } from \"../../core/settings-manager.ts\";\nimport {\n\tcheckTaskStepsContract,\n\tINITIAL_TASK_CONTRACT_STREAK,\n\ttype TaskContractStreak,\n} from \"../../core/tasks/task-contract-monitor.ts\";\nimport { getProcessWorkRun } from \"../../utils/work-directory.ts\";\nimport { theme } from \"./theme/theme.ts\";\n\nconst AUTO_LEARN_DEFAULTS = {\n\tenabled: false,\n\tmodel: \"active\",\n\tthinkingLevel: \"low\",\n\tlongSessionMessages: 32,\n\tlongSessionContextPercent: 70,\n\tcooldownMinutes: 24 * 60,\n\tleaseMinutes: 90,\n\tmaxConcurrentLearners: 1,\n\tapplyHighConfidence: false,\n\treflectionReview: true,\n\treflectionMinToolCalls: 12,\n\treflectionCooldownMinutes: 24 * 60,\n\tcomplexTaskToolCalls: 12,\n} as const satisfies Required<AutoLearnSettings>;\n\nconst AUTONOMY_AUTO_LEARN_PRESETS = {\n\toff: { ...AUTO_LEARN_DEFAULTS, enabled: true, reflectionReview: true },\n\tsafe: {\n\t\t...AUTO_LEARN_DEFAULTS,\n\t\tenabled: true,\n\t\tlongSessionMessages: 64,\n\t\tlongSessionContextPercent: 85,\n\t\tcooldownMinutes: 24 * 60,\n\t\tleaseMinutes: 60,\n\t\tmaxConcurrentLearners: 1,\n\t\tapplyHighConfidence: false,\n\t\treflectionReview: true,\n\t\treflectionMinToolCalls: 12,\n\t\treflectionCooldownMinutes: 24 * 60,\n\t\tcomplexTaskToolCalls: 12,\n\t},\n\tbalanced: {\n\t\t...AUTO_LEARN_DEFAULTS,\n\t\tenabled: true,\n\t\tlongSessionMessages: 64,\n\t\tlongSessionContextPercent: 85,\n\t\tcooldownMinutes: 24 * 60,\n\t\tleaseMinutes: 90,\n\t\tmaxConcurrentLearners: 1,\n\t\tapplyHighConfidence: false,\n\t\treflectionReview: true,\n\t\treflectionMinToolCalls: 12,\n\t\treflectionCooldownMinutes: 24 * 60,\n\t\tcomplexTaskToolCalls: 12,\n\t},\n\tfull: {\n\t\t...AUTO_LEARN_DEFAULTS,\n\t\tenabled: true,\n\t\tlongSessionMessages: 64,\n\t\tlongSessionContextPercent: 85,\n\t\tcooldownMinutes: 24 * 60,\n\t\tleaseMinutes: 90,\n\t\tmaxConcurrentLearners: 1,\n\t\tapplyHighConfidence: true,\n\t\treflectionReview: true,\n\t\treflectionMinToolCalls: 12,\n\t\treflectionCooldownMinutes: 24 * 60,\n\t\tcomplexTaskToolCalls: 12,\n\t},\n} as const satisfies Record<AutonomyMode, Required<AutoLearnSettings>>;\n\nexport const AUTONOMY_MODES: AutonomyMode[] = [\"off\", \"safe\", \"balanced\", \"full\"];\nconst AUTO_LEARN_RESERVATION_MS = 2 * 60 * 1000;\nexport const AUTO_LEARN_HISTORY_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;\n\nexport interface AutoLearnHistoryPruneResult {\n\tpromptFiles: number;\n\tlogFiles: number;\n\tsessionFiles: number;\n\terrors: number;\n}\n\nexport interface AutoLearnHistoryPruneOptions {\n\tdataDir: string;\n\tnow?: number;\n\tretentionMs?: number;\n\tactiveRunIds?: Iterable<string | undefined>;\n\tactiveSessionIds?: Iterable<string | undefined>;\n}\n\ntype AutoLearnHistoryPruneCounter = Exclude<keyof AutoLearnHistoryPruneResult, \"errors\">;\n\nfunction definedStringSet(values: Iterable<string | undefined> | undefined): Set<string> {\n\tconst set = new Set<string>();\n\tif (!values) return set;\n\tfor (const value of values) {\n\t\tif (typeof value === \"string\" && value.length > 0) set.add(value);\n\t}\n\treturn set;\n}\n\nfunction sanitizeAutoLearnPathPart(input: string | undefined, fallback: string): string {\n\tconst cleaned = (input || fallback)\n\t\t.replace(/[^a-zA-Z0-9._-]+/g, \"-\")\n\t\t.replace(/-+/g, \"-\")\n\t\t.replace(/^-+|-+$/g, \"\")\n\t\t.slice(0, 80);\n\treturn cleaned || fallback;\n}\n\nfunction isOldAutoLearnArtifact(filePath: string, now: number, retentionMs: number): boolean {\n\tconst stats = fs.lstatSync(filePath);\n\treturn stats.isFile() && now - stats.mtimeMs > retentionMs;\n}\n\nfunction removeOldAutoLearnArtifact(\n\tfilePath: string,\n\tresult: AutoLearnHistoryPruneResult,\n\tcounter: AutoLearnHistoryPruneCounter,\n): void {\n\ttry {\n\t\tfs.rmSync(filePath, { force: true });\n\t\tresult[counter]++;\n\t} catch {\n\t\tresult.errors++;\n\t}\n}\n\nfunction isPathInside(target: string, root: string): boolean {\n\tconst resolvedTarget = path.resolve(target);\n\tconst resolvedRoot = path.resolve(root);\n\treturn resolvedTarget === resolvedRoot || resolvedTarget.startsWith(`${resolvedRoot}${path.sep}`);\n}\n\nfunction removeAutoLearnArtifactPath(filePath: string, root: string): boolean {\n\tif (!isPathInside(filePath, root)) return false;\n\ttry {\n\t\tfs.rmSync(filePath, { recursive: true, force: true });\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getAutoLearnSessionIdFromFileName(fileName: string): string | undefined {\n\treturn fileName.match(/_(auto-learn-[A-Za-z0-9._-]+)\\.jsonl$/)?.[1];\n}\n\nfunction pruneAutoLearnSessionFiles(\n\tdir: string,\n\tactiveSessionIds: ReadonlySet<string>,\n\tnow: number,\n\tretentionMs: number,\n\tresult: AutoLearnHistoryPruneResult,\n): void {\n\tlet entries: fs.Dirent[];\n\ttry {\n\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn;\n\t}\n\n\tfor (const entry of entries) {\n\t\tconst filePath = path.join(dir, entry.name);\n\t\tif (entry.isDirectory()) {\n\t\t\tpruneAutoLearnSessionFiles(filePath, activeSessionIds, now, retentionMs, result);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!entry.isFile() || !entry.name.endsWith(\".jsonl\")) continue;\n\t\tlet shouldPrune = false;\n\t\ttry {\n\t\t\tshouldPrune = isOldAutoLearnArtifact(filePath, now, retentionMs);\n\t\t} catch {\n\t\t\tresult.errors++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!shouldPrune) continue;\n\t\tconst sessionId = readAutoLearnSessionIdFromFile(filePath) ?? getAutoLearnSessionIdFromFileName(entry.name);\n\t\tif (!sessionId || !isAutoLearnSessionId(sessionId) || activeSessionIds.has(sessionId)) continue;\n\t\tremoveOldAutoLearnArtifact(filePath, result, \"sessionFiles\");\n\t}\n}\n\nfunction pruneAutoLearnRunArtifacts(\n\tdir: string,\n\tactiveRunIds: ReadonlySet<string>,\n\tnow: number,\n\tretentionMs: number,\n\tresult: AutoLearnHistoryPruneResult,\n): void {\n\tlet entries: fs.Dirent[];\n\ttry {\n\t\tentries = fs.readdirSync(dir, { withFileTypes: true });\n\t} catch {\n\t\treturn;\n\t}\n\n\tfor (const entry of entries) {\n\t\tconst filePath = path.join(dir, entry.name);\n\t\tif (entry.isDirectory()) {\n\t\t\tpruneAutoLearnRunArtifacts(filePath, activeRunIds, now, retentionMs, result);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!entry.isFile()) continue;\n\t\tconst promptRunId = entry.name.endsWith(\".prompt.md\") ? entry.name.slice(0, -\".prompt.md\".length) : undefined;\n\t\tconst logRunId = entry.name.endsWith(\".log\") ? entry.name.slice(0, -\".log\".length) : undefined;\n\t\tconst runId = promptRunId ?? logRunId;\n\t\tif (!runId || activeRunIds.has(runId)) continue;\n\t\tlet shouldPrune = false;\n\t\ttry {\n\t\t\tshouldPrune = isOldAutoLearnArtifact(filePath, now, retentionMs);\n\t\t} catch {\n\t\t\tresult.errors++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!shouldPrune) continue;\n\t\tremoveOldAutoLearnArtifact(filePath, result, promptRunId ? \"promptFiles\" : \"logFiles\");\n\t}\n}\n\nexport function pruneAutoLearnConversationHistory(options: AutoLearnHistoryPruneOptions): AutoLearnHistoryPruneResult {\n\tconst result: AutoLearnHistoryPruneResult = { promptFiles: 0, logFiles: 0, sessionFiles: 0, errors: 0 };\n\tconst dataDir = path.resolve(options.dataDir);\n\tconst now = options.now ?? Date.now();\n\tconst retentionMs = options.retentionMs ?? AUTO_LEARN_HISTORY_RETENTION_MS;\n\tconst activeRunIds = definedStringSet(options.activeRunIds);\n\tconst activeSessionIds = definedStringSet(options.activeSessionIds);\n\tif (retentionMs <= 0 || !fs.existsSync(dataDir)) return result;\n\n\tpruneAutoLearnRunArtifacts(dataDir, activeRunIds, now, retentionMs, result);\n\tpruneAutoLearnSessionFiles(dataDir, activeSessionIds, now, retentionMs, result);\n\treturn result;\n}\n\nexport interface AutoLearnRunRecord {\n\ttenant: string;\n\tpid?: number;\n\tmodel: string;\n\treason: string;\n\tstartedAt: number;\n\texpiresAt: number;\n\tcwd: string;\n\tlogPath: string;\n\tsessionDir?: string;\n\tsessionId?: string;\n\tpromptPath?: string;\n\tkind?: \"auto\" | \"reflection\";\n\tautonomyMode?: AutonomyMode;\n\tauthority?: string;\n\tstatus?: \"reserved\" | \"running\";\n}\n\nexport interface AutoLearnState {\n\tlastLaunchByTenant?: Record<string, number>;\n\tlastReflectionByTenant?: Record<string, number>;\n\truns?: Record<string, AutoLearnRunRecord>;\n}\n\ninterface AutoLearnStateLockResult<T> {\n\tresult: T;\n\tnext?: AutoLearnState;\n}\n\ninterface AutoLearnDecision {\n\tshouldRun: boolean;\n\treason: string;\n\tmessageCount: number;\n\tcontextPercent: number | null;\n\tcooldownRemainingMs: number;\n\trunningCount: number;\n\tbypassCooldown?: boolean;\n}\n\ninterface AutoLearnReservation {\n\trunId: string;\n\tstartedAt: number;\n}\n\ntype AutoLearnReservationResult = { ok: true; reservation: AutoLearnReservation } | { ok: false; reason: string };\n\ninterface AutonomyReviewDecision extends AutoLearnDecision {\n\ttoolCalls: number;\n\tdigest?: string;\n}\n\nexport interface AutoLearnSpawnTarget {\n\tcommand: string;\n\targsPrefix: string[];\n}\n\nexport interface AutoLearnSpawnArgsOptions {\n\tname: string;\n\tmodelPattern: string;\n\tthinkingLevel?: string;\n\tsessionDir: string;\n\tsessionId: string;\n\tpromptPath: string;\n}\n\nexport function buildAutoLearnSpawnArgs(\n\tspawnTarget: AutoLearnSpawnTarget,\n\toptions: AutoLearnSpawnArgsOptions,\n): string[] {\n\treturn [\n\t\t...spawnTarget.argsPrefix,\n\t\t\"--print\",\n\t\t\"--name\",\n\t\toptions.name,\n\t\t\"--model\",\n\t\toptions.modelPattern,\n\t\t...(options.thinkingLevel ? [\"--thinking\", options.thinkingLevel] : []),\n\t\t\"--session-dir\",\n\t\toptions.sessionDir,\n\t\t\"--session-id\",\n\t\toptions.sessionId,\n\t\t`@${options.promptPath}`,\n\t];\n}\n\nexport function findAutoLearnSpawnNullByteInput(command: string, args: readonly string[]): string | undefined {\n\tif (command.includes(\"\\0\")) return \"command\";\n\tconst argIndex = args.findIndex((arg) => arg.includes(\"\\0\"));\n\treturn argIndex === -1 ? undefined : `args[${argIndex}]`;\n}\n\nexport interface AutoLearnControllerUi {\n\tshowStatus(message: string): void;\n\treadonly footerDataProvider: { setExtensionStatus(key: string, text: string | undefined): void };\n\tinvalidateFooter(): void;\n\trequestRender(): void;\n}\n\nexport interface AutoLearnControllerDeps {\n\tgetSession(): AgentSession;\n\tresolveSelfModificationSource(settings: { sourcePath?: string; sourcePaths?: string[] }): string | undefined;\n\tui: AutoLearnControllerUi;\n}\n\nexport class AutoLearnController {\n\t// Native-reflection debounce: prevents back-to-back/overlapping background reflection passes (cost\n\t// guard). `_nativeReflectionInFlight` blocks a second pass while one runs; `_lastNativeReflectionAt`\n\t// enforces a minimum gap between passes. A debounce-skipped turn's text is BUFFERED in\n\t// `_pendingReflectionText` (not dropped) and folded into the next pass, so no corrective feedback is\n\t// lost — reflection sees only the current turn's messages, so dropping a skipped turn would lose its\n\t// learning entirely (bug #29).\n\tprivate _nativeReflectionInFlight = false;\n\tprivate _lastNativeReflectionAt = 0;\n\tprivate _pendingReflectionText: string[] = [];\n\tprivate static readonly NATIVE_REFLECTION_MIN_INTERVAL_MS = 45_000;\n\tprivate static readonly PENDING_REFLECTION_MAX_CHARS = 12_000;\n\n\t// Cheap turn-boundary task_steps contract nudge. Tracks the consecutive-violation streak\n\t// across turns so `checkTaskStepsContractNudge` (invoked from the existing per-turn `agent_end`\n\t// pass below) can fire exactly one advisory harness note per sustained-violation streak. No model\n\t// calls; best-effort coupling to whichever per-turn branch runs (native reflection or the\n\t// auto-learn/autonomy-review pair) — see `checkTaskStepsContractNudge` for the rationale.\n\tprivate _taskContractStreak: TaskContractStreak = INITIAL_TASK_CONTRACT_STREAK;\n\n\tprivate readonly deps: AutoLearnControllerDeps;\n\n\tconstructor(deps: AutoLearnControllerDeps) {\n\t\tthis.deps = deps;\n\t}\n\n\tprivate get session(): AgentSession {\n\t\treturn this.deps.getSession();\n\t}\n\tprivate get sessionManager() {\n\t\treturn this.deps.getSession().sessionManager;\n\t}\n\tprivate get settingsManager() {\n\t\treturn this.deps.getSession().settingsManager;\n\t}\n\tprivate get ui(): AutoLearnControllerUi {\n\t\treturn this.deps.ui;\n\t}\n\n\tprivate getAutoLearnModelAuthPriority(model: Model<any>): number {\n\t\tif (this.session.model && model.provider === this.session.model.provider && model.id === this.session.model.id) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst credential = this.session.modelRegistry.authStorage.get(model.provider);\n\t\tif (credential?.type === \"oauth\") return 1;\n\t\tif (credential?.type === \"api_key\") return 2;\n\n\t\tconst authStatus = this.session.modelRegistry.getProviderAuthStatus(model.provider);\n\t\tswitch (authStatus.source) {\n\t\t\tcase \"runtime\":\n\t\t\t\treturn 3;\n\t\t\tcase \"environment\":\n\t\t\t\treturn 4;\n\t\t\tcase \"models_json_key\":\n\t\t\tcase \"models_json_command\":\n\t\t\tcase \"fallback\":\n\t\t\t\treturn 5;\n\t\t\tdefault:\n\t\t\t\treturn 6;\n\t\t}\n\t}\n\n\tprivate getAutoLearnModelAuthLabel(model: Model<any>): string {\n\t\tconst credential = this.session.modelRegistry.authStorage.get(model.provider);\n\t\tif (credential?.type === \"oauth\") return \"subscription\";\n\t\tif (credential?.type === \"api_key\") return \"API key\";\n\n\t\tconst authStatus = this.session.modelRegistry.getProviderAuthStatus(model.provider);\n\t\tswitch (authStatus.source) {\n\t\t\tcase \"runtime\":\n\t\t\t\treturn authStatus.label ? `runtime ${authStatus.label}` : \"runtime API key\";\n\t\t\tcase \"environment\":\n\t\t\t\treturn authStatus.label ? `env ${authStatus.label}` : \"environment API key\";\n\t\t\tcase \"models_json_key\":\n\t\t\t\treturn \"models.json API key\";\n\t\t\tcase \"models_json_command\":\n\t\t\t\treturn \"models.json command\";\n\t\t\tcase \"fallback\":\n\t\t\t\treturn authStatus.label ?? \"custom provider config\";\n\t\t\tdefault:\n\t\t\t\treturn \"configured\";\n\t\t}\n\t}\n\n\tgetAutoLearnModelOptions(): SelectItem[] {\n\t\tthis.session.modelRegistry.refresh();\n\t\tconst availableModels = this.session.modelRegistry.getAvailable();\n\t\tconst sortedModels = [...availableModels].sort((a, b) => {\n\t\t\tconst priorityDelta = this.getAutoLearnModelAuthPriority(a) - this.getAutoLearnModelAuthPriority(b);\n\t\t\tif (priorityDelta !== 0) return priorityDelta;\n\t\t\tconst providerDelta = this.session.modelRegistry\n\t\t\t\t.getProviderDisplayName(a.provider)\n\t\t\t\t.localeCompare(this.session.modelRegistry.getProviderDisplayName(b.provider));\n\t\t\tif (providerDelta !== 0) return providerDelta;\n\t\t\treturn a.id.localeCompare(b.id);\n\t\t});\n\n\t\treturn sortedModels.map((model) => {\n\t\t\tconst providerName = this.session.modelRegistry.getProviderDisplayName(model.provider);\n\t\t\tconst authLabel = this.getAutoLearnModelAuthLabel(model);\n\t\t\tconst modelPattern = `${model.provider}/${model.id}`;\n\t\t\tconst currentLabel =\n\t\t\t\tthis.session.model && model.provider === this.session.model.provider && model.id === this.session.model.id\n\t\t\t\t\t? \" · current\"\n\t\t\t\t\t: \"\";\n\t\t\tconst displayName = model.name && model.name !== model.id ? ` · ${model.name}` : \"\";\n\t\t\treturn {\n\t\t\t\tvalue: modelPattern,\n\t\t\t\tlabel: modelPattern,\n\t\t\t\tdescription: `${providerName} · ${authLabel}${currentLabel}${displayName}`,\n\t\t\t};\n\t\t});\n\t}\n\n\tgetAutoLearnDataDir(): string {\n\t\treturn getProcessWorkRun(getAgentDir(), \"learning\", \"auto-learn\", \"state\").path;\n\t}\n\n\tprivate getAutoLearnStatePath(): string {\n\t\treturn path.join(this.getAutoLearnDataDir(), \"state.json\");\n\t}\n\n\tprivate ensureAutoLearnStateFile(): void {\n\t\tconst dir = this.getAutoLearnDataDir();\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t\tconst statePath = this.getAutoLearnStatePath();\n\t\tif (!fs.existsSync(statePath)) {\n\t\t\tfs.writeFileSync(statePath, \"{}\\n\", \"utf-8\");\n\t\t}\n\t}\n\n\tprivate readAutoLearnState(): AutoLearnState {\n\t\ttry {\n\t\t\tconst statePath = this.getAutoLearnStatePath();\n\t\t\tif (!fs.existsSync(statePath)) return {};\n\t\t\treturn JSON.parse(fs.readFileSync(statePath, \"utf-8\")) as AutoLearnState;\n\t\t} catch {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tprivate writeAutoLearnState(state: AutoLearnState): void {\n\t\tconst dir = this.getAutoLearnDataDir();\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t\tfs.writeFileSync(this.getAutoLearnStatePath(), `${JSON.stringify(state, null, 2)}\\n`, \"utf-8\");\n\t}\n\n\tprivate acquireAutoLearnStateLock(): () => void {\n\t\tthis.ensureAutoLearnStateFile();\n\t\tconst statePath = this.getAutoLearnStatePath();\n\t\tconst maxAttempts = 20;\n\t\tconst delayMs = 25;\n\t\tlet lastError: unknown;\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn lockfile.lockSync(statePath, { realpath: false, stale: 30000 });\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst code =\n\t\t\t\t\terror && typeof error === \"object\" && \"code\" in error ? String((error as { code?: unknown }).code) : \"\";\n\t\t\t\tif (code !== \"ELOCKED\" || attempt === maxAttempts) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tlastError = error;\n\t\t\t\tconst start = Date.now();\n\t\t\t\twhile (Date.now() - start < delayMs) {\n\t\t\t\t\t// Synchronous callers need a synchronous lock retry loop.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow lastError instanceof Error ? lastError : new Error(\"Failed to acquire Auto Learn state lock\");\n\t}\n\n\tprivate withAutoLearnStateLock<T>(fn: (state: AutoLearnState) => AutoLearnStateLockResult<T>): T {\n\t\tlet release: (() => void) | undefined;\n\t\ttry {\n\t\t\trelease = this.acquireAutoLearnStateLock();\n\t\t\tconst { result, next } = fn(this.readAutoLearnState());\n\t\t\tif (next !== undefined) {\n\t\t\t\tthis.writeAutoLearnState(next);\n\t\t\t}\n\t\t\treturn result;\n\t\t} finally {\n\t\t\trelease?.();\n\t\t}\n\t}\n\n\tprivate appendAutoLearnLog(logPath: string, message: string): void {\n\t\ttry {\n\t\t\tfs.appendFileSync(logPath, `${message}\\n`, \"utf-8\");\n\t\t} catch {\n\t\t\t// Logging must never turn a background learner startup failure into an interactive crash.\n\t\t}\n\t}\n\n\tprivate isAutoLearnPidAlive(pid: number | undefined): boolean {\n\t\tif (typeof pid !== \"number\" || pid <= 0) return false;\n\t\ttry {\n\t\t\tprocess.kill(pid, 0);\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconst code =\n\t\t\t\terror && typeof error === \"object\" && \"code\" in error ? String((error as { code?: unknown }).code) : \"\";\n\t\t\treturn code === \"EPERM\";\n\t\t}\n\t}\n\n\tprivate pruneAutoLearnState(state: AutoLearnState, now = Date.now()): AutoLearnState {\n\t\tconst runs = { ...(state.runs ?? {}) };\n\t\tfor (const [id, run] of Object.entries(runs)) {\n\t\t\tif (run.expiresAt <= now) {\n\t\t\t\tdelete runs[id];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (run.status === \"reserved\" && run.pid === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!this.isAutoLearnPidAlive(run.pid)) {\n\t\t\t\tdelete runs[id];\n\t\t\t}\n\t\t}\n\t\treturn { ...state, runs };\n\t}\n\n\tprivate pruneAutoLearnHistoryFromState(state: AutoLearnState, now = Date.now()): AutoLearnState {\n\t\tconst prunedState = this.pruneAutoLearnState(state, now);\n\t\tpruneAutoLearnConversationHistory({\n\t\t\tdataDir: this.getAutoLearnDataDir(),\n\t\t\tnow,\n\t\t\tactiveRunIds: Object.keys(prunedState.runs ?? {}),\n\t\t\tactiveSessionIds: Object.values(prunedState.runs ?? {}).map((run) => run.sessionId),\n\t\t});\n\t\treturn prunedState;\n\t}\n\n\tgetPrunedAutoLearnState(): AutoLearnState {\n\t\treturn this.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current);\n\t\t\treturn { result: state, next: state };\n\t\t});\n\t}\n\n\tgetAutoLearnPresetForAutonomyMode(mode: AutonomyMode, current: AutoLearnSettings = {}): Required<AutoLearnSettings> {\n\t\tconst preset = AUTONOMY_AUTO_LEARN_PRESETS[mode] ?? AUTONOMY_AUTO_LEARN_PRESETS.off;\n\t\treturn { ...preset, model: current.model?.trim() || preset.model };\n\t}\n\n\tgetEffectiveAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\tconst settings = this.settingsManager.getAutoLearnSettings();\n\t\tconst preset = this.getAutoLearnPresetForAutonomyMode(this.settingsManager.getAutonomySettings().mode, settings);\n\t\treturn {\n\t\t\tenabled: settings.enabled ?? preset.enabled,\n\t\t\tmodel: settings.model?.trim() || preset.model,\n\t\t\tlongSessionMessages: settings.longSessionMessages ?? preset.longSessionMessages,\n\t\t\tlongSessionContextPercent: settings.longSessionContextPercent ?? preset.longSessionContextPercent,\n\t\t\tcooldownMinutes: settings.cooldownMinutes ?? preset.cooldownMinutes,\n\t\t\tleaseMinutes: settings.leaseMinutes ?? preset.leaseMinutes,\n\t\t\tmaxConcurrentLearners: settings.maxConcurrentLearners ?? preset.maxConcurrentLearners,\n\t\t\tapplyHighConfidence: settings.applyHighConfidence ?? preset.applyHighConfidence,\n\t\t\treflectionReview: settings.reflectionReview ?? preset.reflectionReview,\n\t\t\treflectionMinToolCalls: settings.reflectionMinToolCalls ?? preset.reflectionMinToolCalls,\n\t\t\treflectionCooldownMinutes: settings.reflectionCooldownMinutes ?? preset.reflectionCooldownMinutes,\n\t\t\tcomplexTaskToolCalls: settings.complexTaskToolCalls ?? preset.complexTaskToolCalls,\n\t\t\tthinkingLevel: settings.thinkingLevel ?? preset.thinkingLevel,\n\t\t};\n\t}\n\n\tgetCurrentAutoLearnSettings(): Required<AutoLearnSettings> {\n\t\treturn this.getEffectiveAutoLearnSettings();\n\t}\n\n\tgetAutoLearnTenantKey(): string {\n\t\treturn `${this.sessionManager.getCwd()}::${this.session.sessionId}`;\n\t}\n\n\tprivate getAutoLearnTenantId(): string {\n\t\tconst cwdHash = crypto.createHash(\"sha256\").update(this.sessionManager.getCwd()).digest(\"hex\").slice(0, 8);\n\t\tconst sessionPart = sanitizeAutoLearnPathPart(this.session.sessionId, \"session\");\n\t\treturn `${sessionPart}-${cwdHash}`;\n\t}\n\n\tgetAutoLearnTenantDataDir(): string {\n\t\treturn path.join(this.getAutoLearnDataDir(), \"tenants\", this.getAutoLearnTenantId());\n\t}\n\n\tprivate getAutoLearnMessageCount(): number {\n\t\treturn this.sessionManager.getBranch().filter((entry) => entry.type === \"message\").length;\n\t}\n\n\tprivate buildAutoLearnDecisionFromState(\n\t\tstate: AutoLearnState,\n\t\tsettings: Required<AutoLearnSettings>,\n\t\tforce = false,\n\t): AutoLearnDecision {\n\t\tconst now = Date.now();\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst runningCount = Object.values(state.runs ?? {}).filter((run) => run.tenant === tenant).length;\n\t\tconst lastLaunch = state.lastLaunchByTenant?.[tenant] ?? 0;\n\t\tconst cooldownMs = settings.cooldownMinutes * 60 * 1000;\n\t\tconst cooldownRemainingMs = Math.max(0, lastLaunch + cooldownMs - now);\n\t\tconst messageCount = this.getAutoLearnMessageCount();\n\t\tconst contextPercent = this.session.getContextUsage()?.percent ?? null;\n\n\t\tif (!settings.enabled && !force) {\n\t\t\treturn {\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: \"disabled\",\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (runningCount >= settings.maxConcurrentLearners) {\n\t\t\treturn {\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: `max tenant learners running (${runningCount}/${settings.maxConcurrentLearners})`,\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (!force && cooldownRemainingMs > 0) {\n\t\t\treturn {\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: \"cooldown\",\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (force) {\n\t\t\treturn { shouldRun: true, reason: \"manual\", messageCount, contextPercent, cooldownRemainingMs, runningCount };\n\t\t}\n\t\tif (messageCount >= settings.longSessionMessages) {\n\t\t\treturn {\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `message trigger (${messageCount}/${settings.longSessionMessages})`,\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\tif (contextPercent !== null && contextPercent >= settings.longSessionContextPercent) {\n\t\t\treturn {\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `context trigger (${contextPercent.toFixed(1)}%/${settings.longSessionContextPercent}%)`,\n\t\t\t\tmessageCount,\n\t\t\t\tcontextPercent,\n\t\t\t\tcooldownRemainingMs,\n\t\t\t\trunningCount,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tshouldRun: false,\n\t\t\treason: \"thresholds not met\",\n\t\t\tmessageCount,\n\t\t\tcontextPercent,\n\t\t\tcooldownRemainingMs,\n\t\t\trunningCount,\n\t\t};\n\t}\n\n\tprivate resolveAutoLearnModelPattern(settings: Required<AutoLearnSettings>): string | undefined {\n\t\tif (settings.model === \"active\") {\n\t\t\treturn this.session.model ? `${this.session.model.provider}/${this.session.model.id}` : undefined;\n\t\t}\n\t\treturn settings.model;\n\t}\n\n\tprivate getAutoLearnSpawnTarget(): AutoLearnSpawnTarget | undefined {\n\t\tconst overridePath = process.env.PI_AUTO_LEARN_CLI_PATH?.trim();\n\t\tif (overridePath) {\n\t\t\treturn { command: overridePath, argsPrefix: [] };\n\t\t}\n\n\t\tconst execBase = path.basename(process.execPath).toLowerCase();\n\t\tconst isScriptRuntime =\n\t\t\texecBase === \"node\" || execBase === \"node.exe\" || execBase === \"bun\" || execBase === \"bun.exe\";\n\t\tif (!isScriptRuntime) {\n\t\t\treturn { command: process.execPath, argsPrefix: [] };\n\t\t}\n\n\t\tconst cliPath = process.argv[1];\n\t\tif (!cliPath || cliPath.startsWith(\"-\")) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn { command: process.execPath, argsPrefix: [cliPath] };\n\t}\n\n\tvalidateAutoLearnModelValue(value: string | undefined): string | undefined {\n\t\tconst modelValue = value?.trim();\n\t\tif (!modelValue || modelValue === \"active\") return undefined;\n\t\tconst available = this.session.modelRegistry.getAvailable();\n\t\tif (modelValue.includes(\"/\")) {\n\t\t\tconst [provider, modelId] = modelValue.split(\"/\", 2);\n\t\t\tif (available.some((model) => model.provider === provider && model.id === modelId)) return undefined;\n\t\t\treturn `Auto Learn model \"${modelValue}\" is not in configured subscription/API models; saved as manual/unverified.`;\n\t\t}\n\t\tif (available.some((model) => model.id === modelValue)) return undefined;\n\t\treturn `Auto Learn model \"${modelValue}\" is not in configured subscription/API models; saved as manual/unverified.`;\n\t}\n\n\tprivate evaluateAutoLearn(force = false): AutoLearnDecision {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\treturn this.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current);\n\t\t\treturn { result: this.buildAutoLearnDecisionFromState(state, settings, force), next: state };\n\t\t});\n\t}\n\n\tprivate buildAutonomyAuthorityPrompt(): string {\n\t\tconst autonomy = this.settingsManager.getAutonomySettings();\n\t\tconst selfModification = this.settingsManager.getSelfModificationSettings();\n\t\tif (autonomy.mode !== \"full\") {\n\t\t\treturn [\n\t\t\t\t\"Authority mode: proposal-gated.\",\n\t\t\t\t\"- You may autonomously query memory and run bounded learning tools.\",\n\t\t\t\t\"- Durable memory writes require the configured high-confidence policy; skills, extensions, source, settings, publishing, tagging, and releases remain proposals unless the foreground user explicitly asks.\",\n\t\t\t].join(\"\\n\");\n\t\t}\n\n\t\tconst selfModificationSource = selfModification.enabled\n\t\t\t? this.deps.resolveSelfModificationSource(selfModification)\n\t\t\t: undefined;\n\t\tconst sourceAuthority =\n\t\t\tselfModification.enabled && selfModificationSource\n\t\t\t\t? `- Pi source: standing authority to edit the authorized selfModification source (${selfModificationSource}) for self-evolution improvements; inspect git status first, preserve unrelated user changes, run focused validation, and leave a clear rollback/test summary.`\n\t\t\t\t: \"- Pi source: no standing source-edit authority until selfModification.enabled and selfModification.sourcePaths are set.\";\n\t\treturn [\n\t\t\t\"Authority mode: FULL AUTONOMOUS standing grant.\",\n\t\t\t\"- Memory: may apply high-confidence durable Automata memory/corrections after duplicate and corroboration checks.\",\n\t\t\t\"- Skills: may create or patch user/project-owned procedural skills and support files; prefer updating existing umbrella skills; do not delete skills without making a recoverable archive/backup.\",\n\t\t\t\"- User/project extensions and tools: may create or patch small scoped extensions/tools under Pi user/project roots when they address repeated workflow/tooling gaps; validate and keep changes auditable.\",\n\t\t\t\"- Settings: may auto-tune autonomy/autoLearn settings to reduce bottlenecks; do not modify credentials, provider auth, package sources, or unrelated user preferences.\",\n\t\t\tsourceAuthority,\n\t\t\t\"- Hard stops without explicit foreground approval: publish, npm release, git push, tag creation, credential changes, destructive user-data deletion, network-exposed services, or authority expansion beyond this policy.\",\n\t\t\t\"- Audit: final output must list changed paths/settings, commands/tests run, evidence, residual risks, and rollback guidance. If no safe validation is possible, leave the change as a proposal instead of applying it.\",\n\t\t].join(\"\\n\");\n\t}\n\n\tprivate buildAutoLearnPrompt(\n\t\treason: string,\n\t\tsettings: Required<AutoLearnSettings>,\n\t\toptions: { kind?: \"auto\" | \"reflection\"; turnDigest?: string } = {},\n\t): string {\n\t\tconst authorityBlock = this.buildAutonomyAuthorityPrompt();\n\t\tconst reflectionBlock =\n\t\t\toptions.kind === \"reflection\" && options.turnDigest\n\t\t\t\t? `\\n\\nLatest completed turn digest (bounded; use only as current-session evidence, not as longitudinal proof):\\n<turn_digest>\\n${options.turnDigest}\\n</turn_digest>`\n\t\t\t\t: \"\";\n\t\tconst objective =\n\t\t\toptions.kind === \"reflection\"\n\t\t\t\t? \"review the latest completed turn for durable memory, skill, validation, tooling, and code-baked self-improvement cues, then run one bounded continuous-learning pass if the learning tools are available\"\n\t\t\t\t: \"run one bounded continuous-learning pass for this Pi tenant\";\n\t\treturn `You are Pi Auto Learn running as a background learner.\\n\\nObjective: ${objective}.\\nTrigger: ${reason}.\\n\\n${authorityBlock}\\n\\nRequired workflow:\\n1. Query existing durable memory/rules first when tools allow it. Memory confrontation is mandatory before accepting, merging, upgrading, or rejecting learning candidates.\\n2. Run the available Auto Learn tooling, preferably learning_run_auto, with applyHighConfidence=${settings.applyHighConfidence}. Process candidate validation in vectorized chunks/batches; avoid scalar per-candidate memory queries except for final selected writes.\\n3. Apply the learning validation tree to each candidate chunk: (a) Why is this good for the user? (b) Is it unique, or similar to existing memory/skills/agents so it should merge or upgrade existing knowledge? (c) Will this make Pi a better agent? Candidates that cannot answer all three are noise.\\n4. Hermes-style learning cycle: after a complex task (${settings.complexTaskToolCalls}+ tool calls), user correction, repeated steering pattern, non-trivial fix/workaround/debugging path, loaded-skill defect, trigger gap, tool gap, or harness workflow defect, actively create or update durable learning artifacts. Memory stores compact facts/preferences/state; skills/prompts/agents/extensions/source store procedural behavior. When a lesson changes how Pi should act on a future class of task, memory alone is not completion.\\n5. Skill update preference order: (1) patch the currently loaded or consulted skill that governed the task; (2) patch an existing class-level umbrella skill/agent/prompt; (3) add a support file under references/, templates/, or scripts/ and add a SKILL.md pointer; (4) create a new class-level umbrella skill only when no existing artifact fits. Never create one-off PR/error/codename/session skills.\\n6. Behavioral self-improvement is code-baked by default: prefer the lowest durable executable layer that fixes the behavior — patch an existing skill/prompt/agent/extension/tool, tune an approved setting, or edit the authorized Pi source when source authority is available. Use Automata only for concise facts/evidence pointers that support the baked change.\\n7. Do not harden transient or environment-dependent failures into durable behavior: missing binaries, fresh-install package gaps, credentials not configured, path mismatches, one-off task narratives, or negative tool-broken claims should become setup/troubleshooting fixes only when the fix itself is reusable.\\n8. Treat the latest-turn digest as current-session evidence only; do not auto-commit one-off cues unless deterministic tooling and memory confrontation corroborate them.\\n9. In mode=full, apply safe memory/skill/user-extension/authorized-source improvements under the standing grant above; otherwise keep them proposal-gated.\\n10. Never cross hard-stop boundaries from the authority policy.\\n11. If the learning tools are unavailable, report BLOCKED with the missing tool names and do not improvise.\\n12. Finish with PASS, BLOCKED, or FAIL and concise evidence, including chunk counts, merge/upgrade/code-bake decisions, changed paths/settings, validation, and cleanup/purge status.${reflectionBlock}`;\n\t}\n\n\tprivate reserveAutoLearnRun(params: {\n\t\tsettings: Required<AutoLearnSettings>;\n\t\tforce: boolean;\n\t\tcooldownKind?: \"auto\" | \"reflection\";\n\t\tbypassReflectionCooldown?: boolean;\n\t\trunId: string;\n\t\tmodelPattern: string;\n\t\treason: string;\n\t\tlogPath: string;\n\t\tsessionDir: string;\n\t\tsessionId: string;\n\t\tpromptPath: string;\n\t\tkind: \"auto\" | \"reflection\";\n\t}): AutoLearnReservationResult {\n\t\treturn this.withAutoLearnStateLock<AutoLearnReservationResult>((current) => {\n\t\t\tconst now = Date.now();\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current, now);\n\t\t\tconst tenant = this.getAutoLearnTenantKey();\n\n\t\t\tif (params.cooldownKind === \"reflection\" && !params.bypassReflectionCooldown) {\n\t\t\t\tconst lastReflection = state.lastReflectionByTenant?.[tenant] ?? 0;\n\t\t\t\tconst cooldownMs = params.settings.reflectionCooldownMinutes * 60 * 1000;\n\t\t\t\tif (Math.max(0, lastReflection + cooldownMs - now) > 0) {\n\t\t\t\t\treturn { result: { ok: false, reason: \"reflection cooldown\" }, next: state };\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst decision = this.buildAutoLearnDecisionFromState(state, params.settings, params.force);\n\t\t\tif (!decision.shouldRun) {\n\t\t\t\treturn { result: { ok: false, reason: decision.reason }, next: state };\n\t\t\t}\n\n\t\t\tconst run: AutoLearnRunRecord = {\n\t\t\t\ttenant,\n\t\t\t\tmodel: params.modelPattern,\n\t\t\t\treason: params.reason,\n\t\t\t\tstartedAt: now,\n\t\t\t\texpiresAt: now + AUTO_LEARN_RESERVATION_MS,\n\t\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\t\tlogPath: params.logPath,\n\t\t\t\tsessionDir: params.sessionDir,\n\t\t\t\tsessionId: params.sessionId,\n\t\t\t\tpromptPath: params.promptPath,\n\t\t\t\tkind: params.kind,\n\t\t\t\tautonomyMode: this.settingsManager.getAutonomySettings().mode,\n\t\t\t\tauthority:\n\t\t\t\t\tthis.settingsManager.getAutonomySettings().mode === \"full\"\n\t\t\t\t\t\t? \"standing-full-autonomous\"\n\t\t\t\t\t\t: \"proposal-gated\",\n\t\t\t\tstatus: \"reserved\",\n\t\t\t};\n\t\t\tconst next: AutoLearnState = {\n\t\t\t\t...state,\n\t\t\t\truns: { ...(state.runs ?? {}), [params.runId]: run },\n\t\t\t};\n\t\t\tif (params.cooldownKind === \"reflection\") {\n\t\t\t\tnext.lastReflectionByTenant = { ...(state.lastReflectionByTenant ?? {}), [tenant]: now };\n\t\t\t} else {\n\t\t\t\tnext.lastLaunchByTenant = { ...(state.lastLaunchByTenant ?? {}), [tenant]: now };\n\t\t\t}\n\t\t\treturn { result: { ok: true, reservation: { runId: params.runId, startedAt: now } }, next };\n\t\t});\n\t}\n\n\tprivate releaseAutoLearnReservation(reservation: AutoLearnReservation, cooldownKind?: \"auto\" | \"reflection\"): void {\n\t\tthis.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current);\n\t\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\t\tconst runs = { ...(state.runs ?? {}) };\n\t\t\tdelete runs[reservation.runId];\n\t\t\tconst next: AutoLearnState = { ...state, runs };\n\t\t\tif (cooldownKind === \"reflection\" && next.lastReflectionByTenant?.[tenant] === reservation.startedAt) {\n\t\t\t\tnext.lastReflectionByTenant = { ...next.lastReflectionByTenant };\n\t\t\t\tdelete next.lastReflectionByTenant[tenant];\n\t\t\t} else if (cooldownKind !== \"reflection\" && next.lastLaunchByTenant?.[tenant] === reservation.startedAt) {\n\t\t\t\tnext.lastLaunchByTenant = { ...next.lastLaunchByTenant };\n\t\t\t\tdelete next.lastLaunchByTenant[tenant];\n\t\t\t}\n\t\t\treturn { result: undefined, next };\n\t\t});\n\t}\n\n\tprivate reportCompletedAutoLearnUsage(runId: string, sessionDir: string, sessionId: string, logPath: string): void {\n\t\ttry {\n\t\t\treportCompletedAutoLearnUsageHelper({\n\t\t\t\trunId,\n\t\t\t\tsessionDir,\n\t\t\t\tsessionId,\n\t\t\t\tlogPath,\n\t\t\t\tparentSession: this.session,\n\t\t\t\tappendLog: (p, msg) => this.appendAutoLearnLog(p, msg),\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn usage report failed: ${message}`);\n\t\t}\n\t}\n\n\tprivate cleanupCompletedAutoLearnRun(\n\t\trunId: string,\n\t\toptions: {\n\t\t\tartifactPaths: string[];\n\t\t\tsessionDir: string;\n\t\t\tsessionId: string;\n\t\t\tlogPath: string;\n\t\t},\n\t): void {\n\t\tthis.reportCompletedAutoLearnUsage(runId, options.sessionDir, options.sessionId, options.logPath);\n\t\tconst dataDir = this.getAutoLearnDataDir();\n\t\tfor (const filePath of options.artifactPaths) removeAutoLearnArtifactPath(filePath, dataDir);\n\t\tthis.withAutoLearnStateLock((current) => {\n\t\t\tconst state = this.pruneAutoLearnState(current);\n\t\t\tconst runs = { ...(state.runs ?? {}) };\n\t\t\tdelete runs[runId];\n\t\t\treturn { result: undefined, next: { ...state, runs } };\n\t\t});\n\t\tthis.updateAutoLearnFooter();\n\t}\n\n\tprivate markAutoLearnReservationRunning(\n\t\treservation: AutoLearnReservation,\n\t\tpid: number,\n\t\tsettings: Required<AutoLearnSettings>,\n\t): void {\n\t\tthis.withAutoLearnStateLock((current) => {\n\t\t\tconst now = Date.now();\n\t\t\tconst state = this.pruneAutoLearnHistoryFromState(current, now);\n\t\t\tconst run = state.runs?.[reservation.runId];\n\t\t\tif (!run) {\n\t\t\t\treturn { result: undefined, next: state };\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tresult: undefined,\n\t\t\t\tnext: {\n\t\t\t\t\t...state,\n\t\t\t\t\truns: {\n\t\t\t\t\t\t...(state.runs ?? {}),\n\t\t\t\t\t\t[reservation.runId]: {\n\t\t\t\t\t\t\t...run,\n\t\t\t\t\t\t\tpid,\n\t\t\t\t\t\t\texpiresAt: now + settings.leaseMinutes * 60 * 1000,\n\t\t\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\t}\n\n\tlaunchAutoLearn(\n\t\treason: string,\n\t\tforce = false,\n\t\toptions: {\n\t\t\tcooldownKind?: \"auto\" | \"reflection\";\n\t\t\tpromptKind?: \"auto\" | \"reflection\";\n\t\t\tturnDigest?: string;\n\t\t\tbypassReflectionCooldown?: boolean;\n\t\t} = {},\n\t): string {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst modelPattern = this.resolveAutoLearnModelPattern(settings);\n\t\tif (!modelPattern) {\n\t\t\treturn \"Auto Learn not started: no active model is available for model=active.\";\n\t\t}\n\t\tconst spawnTarget = this.getAutoLearnSpawnTarget();\n\t\tif (!spawnTarget) {\n\t\t\treturn \"Auto Learn not started: could not resolve current pi CLI path.\";\n\t\t}\n\n\t\tconst dir = this.getAutoLearnTenantDataDir();\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t\tconst runId = `${Date.now()}-${crypto.randomUUID().slice(0, 8)}`;\n\t\tconst logPath = path.join(dir, `${runId}.log`);\n\t\tconst promptPath = path.join(dir, `${runId}.prompt.md`);\n\t\tconst kind = options.promptKind ?? \"auto\";\n\t\tconst sessionDir = path.join(dir, \"sessions\", runId);\n\t\tconst sessionId = `auto-learn-${kind}-${this.getAutoLearnTenantId()}-${runId}`;\n\t\tfs.mkdirSync(sessionDir, { recursive: true });\n\t\tconst prompt = this.buildAutoLearnPrompt(reason, settings, {\n\t\t\tkind,\n\t\t\tturnDigest: options.turnDigest,\n\t\t});\n\t\tconst args = buildAutoLearnSpawnArgs(spawnTarget, {\n\t\t\tname: `Auto Learn ${runId}`,\n\t\t\tmodelPattern,\n\t\t\tthinkingLevel: settings.thinkingLevel ?? \"low\",\n\t\t\tsessionDir,\n\t\t\tsessionId,\n\t\t\tpromptPath,\n\t\t});\n\t\tconst invalidSpawnInput = findAutoLearnSpawnNullByteInput(spawnTarget.command, args);\n\t\tif (invalidSpawnInput) {\n\t\t\tconst message = `Auto Learn not started: ${invalidSpawnInput} contains a null byte.`;\n\t\t\tthis.appendAutoLearnLog(logPath, message);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `${message} Log: ${logPath}`;\n\t\t}\n\n\t\tconst reservationResult = this.reserveAutoLearnRun({\n\t\t\tsettings,\n\t\t\tforce,\n\t\t\tcooldownKind: options.cooldownKind,\n\t\t\tbypassReflectionCooldown: options.bypassReflectionCooldown,\n\t\t\trunId,\n\t\t\tmodelPattern,\n\t\t\treason,\n\t\t\tlogPath,\n\t\t\tsessionDir,\n\t\t\tsessionId,\n\t\t\tpromptPath,\n\t\t\tkind,\n\t\t});\n\t\tif (!reservationResult.ok) {\n\t\t\treturn `Auto Learn not started: ${reservationResult.reason}`;\n\t\t}\n\t\tconst { reservation } = reservationResult;\n\n\t\ttry {\n\t\t\tfs.writeFileSync(promptPath, prompt, \"utf-8\");\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.releaseAutoLearnReservation(reservation, options.cooldownKind);\n\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn failed to write prompt file: ${message}`);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `Auto Learn not started: failed to write prompt file (${message}). Log: ${logPath}`;\n\t\t}\n\n\t\tlet child: ReturnType<typeof spawn> | undefined;\n\t\tlet outFd: number | undefined;\n\t\ttry {\n\t\t\toutFd = fs.openSync(logPath, \"a\");\n\t\t\tconst sourceSessionFile = this.sessionManager.getSessionFile();\n\t\t\tchild = spawn(spawnTarget.command, args, {\n\t\t\t\tcwd: this.sessionManager.getCwd(),\n\t\t\t\tdetached: true,\n\t\t\t\tstdio: [\"ignore\", outFd, outFd],\n\t\t\t\tenv: {\n\t\t\t\t\t...process.env,\n\t\t\t\t\tPI_AUTO_LEARN_CHILD: \"1\",\n\t\t\t\t\t...(sourceSessionFile ? { PI_AUTO_LEARN_SOURCE_SESSION_FILE: sourceSessionFile } : {}),\n\t\t\t\t},\n\t\t\t});\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn failed to start: ${message}`);\n\t\t\t});\n\t\t} catch (error: unknown) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.releaseAutoLearnReservation(reservation, options.cooldownKind);\n\t\t\tthis.appendAutoLearnLog(logPath, `Auto Learn failed to start: ${message}`);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `Auto Learn not started: failed to spawn background learner (${message}). Log: ${logPath}`;\n\t\t} finally {\n\t\t\tif (outFd !== undefined) {\n\t\t\t\ttry {\n\t\t\t\t\tfs.closeSync(outFd);\n\t\t\t\t} catch {\n\t\t\t\t\t// The child has already been spawned or startup has already failed; ignore close errors here.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!child || typeof child.pid !== \"number\" || child.pid <= 0) {\n\t\t\tthis.releaseAutoLearnReservation(reservation, options.cooldownKind);\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn `Auto Learn not started: failed to spawn background learner. Log: ${logPath}`;\n\t\t}\n\t\tconst childPid = child.pid;\n\t\tchild.once(\"exit\", (code) => {\n\t\t\tif (code === 0) {\n\t\t\t\tthis.cleanupCompletedAutoLearnRun(reservation.runId, {\n\t\t\t\t\tartifactPaths: [promptPath, logPath, sessionDir],\n\t\t\t\t\tsessionDir,\n\t\t\t\t\tsessionId,\n\t\t\t\t\tlogPath,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tchild.unref();\n\t\tthis.markAutoLearnReservationRunning(reservation, childPid, settings);\n\n\t\tthis.updateAutoLearnFooter();\n\t\treturn `Auto Learn started. Log: ${logPath}`;\n\t}\n\n\tprivate sanitizeAutoLearnDigestText(text: string): string {\n\t\treturn text\n\t\t\t.replace(\n\t\t\t\t/-----BEGIN [A-Z ]*(?:PRIVATE|OPENSSH|RSA|DSA|EC) KEY-----[\\s\\S]*?-----END [A-Z ]*(?:PRIVATE|OPENSSH|RSA|DSA|EC) KEY-----/g,\n\t\t\t\t\"[redacted-private-key]\",\n\t\t\t)\n\t\t\t.replace(/\\b(?:sk|pk)-(?:proj-)?[A-Za-z0-9_-]{12,}/g, \"[redacted-api-key]\")\n\t\t\t.replace(/\\bsk-ant-[A-Za-z0-9_-]{12,}/g, \"[redacted-api-key]\")\n\t\t\t.replace(/\\b(?:ghp|gho|ghu|ghs|github_pat)_[A-Za-z0-9_]{20,}/g, \"[redacted-github-token]\")\n\t\t\t.replace(/\\b(?:AKIA|ASIA)[0-9A-Z]{16}\\b/g, \"[redacted-aws-access-key]\")\n\t\t\t.replace(/(?:Bearer\\s+)[A-Za-z0-9._-]{16,}/gi, \"Bearer [redacted]\")\n\t\t\t.replace(/([?&](?:key|token|api_key|access_token|secret|password)=)[^&\\s]+/gi, \"$1[redacted]\")\n\t\t\t.replace(\n\t\t\t\t/((?:access|refresh|token|apiKey|api_key|password|secret|authorization|auth)\\s*[:=]\\s*)[^\\s,'\"}]{8,}/gi,\n\t\t\t\t\"$1[redacted]\",\n\t\t\t);\n\t}\n\n\tprivate capAutoLearnDigestText(text: string, maxChars: number): string {\n\t\tconst compact = this.sanitizeAutoLearnDigestText(text).replace(/\\s+/g, \" \").trim();\n\t\tif (compact.length <= maxChars) return compact;\n\t\treturn `${compact.slice(0, Math.max(0, maxChars - 20)).trimEnd()} …[truncated]`;\n\t}\n\n\tprivate getAgentMessagePlainText(message: AgentMessage): string {\n\t\tconst raw = message as unknown as Record<string, unknown>;\n\t\tconst content = raw.content;\n\t\tif (typeof content === \"string\") return content;\n\t\tif (!Array.isArray(content)) return \"\";\n\t\tconst parts: string[] = [];\n\t\tfor (const block of content) {\n\t\t\tif (!block || typeof block !== \"object\") continue;\n\t\t\tconst item = block as Record<string, unknown>;\n\t\t\tif (item.type === \"text\" && typeof item.text === \"string\") parts.push(item.text);\n\t\t\tif (item.type === \"toolCall\" && typeof item.name === \"string\") parts.push(`[tool call: ${item.name}]`);\n\t\t}\n\t\treturn parts.join(\"\\n\");\n\t}\n\n\tprivate countAgentToolCalls(messages: AgentMessage[]): number {\n\t\tlet toolCalls = 0;\n\t\tlet toolResults = 0;\n\t\tfor (const message of messages) {\n\t\t\tconst raw = message as unknown as Record<string, unknown>;\n\t\t\tconst role = String(raw.role ?? \"\");\n\t\t\tif (role === \"toolResult\" || role === \"bashExecution\") toolResults++;\n\t\t\tconst content = raw.content;\n\t\t\tif (!Array.isArray(content)) continue;\n\t\t\tfor (const block of content) {\n\t\t\t\tif (block && typeof block === \"object\" && (block as Record<string, unknown>).type === \"toolCall\") {\n\t\t\t\t\ttoolCalls++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Math.max(toolCalls, toolResults);\n\t}\n\n\tprivate buildAutonomyReviewDigest(messages: AgentMessage[]): string {\n\t\tconst lines: string[] = [];\n\t\tfor (const message of messages.slice(-18)) {\n\t\t\tconst raw = message as unknown as Record<string, unknown>;\n\t\t\tconst role = String(raw.role ?? \"message\");\n\t\t\tconst label = role === \"toolResult\" && typeof raw.toolName === \"string\" ? `toolResult:${raw.toolName}` : role;\n\t\t\tconst text = this.capAutoLearnDigestText(this.getAgentMessagePlainText(message), 700);\n\t\t\tif (text) lines.push(`${label}: ${text}`);\n\t\t}\n\t\tconst digest = lines.join(\"\\n---\\n\");\n\t\treturn this.capAutoLearnDigestText(digest || \"[No textual turn digest available.]\", 6000);\n\t}\n\n\tprivate evaluateAutonomyReview(messages: AgentMessage[]): AutonomyReviewDecision {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst state = this.withAutoLearnStateLock((current) => {\n\t\t\tconst pruned = this.pruneAutoLearnHistoryFromState(current);\n\t\t\treturn { result: pruned, next: pruned };\n\t\t});\n\t\tconst now = Date.now();\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst runningCount = Object.values(state.runs ?? {}).filter((run) => run.tenant === tenant).length;\n\t\tconst lastReflection = state.lastReflectionByTenant?.[tenant] ?? 0;\n\t\tconst cooldownMs = settings.reflectionCooldownMinutes * 60 * 1000;\n\t\tconst cooldownRemainingMs = Math.max(0, lastReflection + cooldownMs - now);\n\t\tconst messageCount = this.getAutoLearnMessageCount();\n\t\tconst contextPercent = this.session.getContextUsage()?.percent ?? null;\n\t\tconst toolCalls = this.countAgentToolCalls(messages);\n\t\tconst userText = messages\n\t\t\t.filter((message) => String((message as unknown as Record<string, unknown>).role ?? \"\") === \"user\")\n\t\t\t.map((message) => this.getAgentMessagePlainText(message))\n\t\t\t.join(\"\\n\");\n\t\tconst correctionSignal =\n\t\t\t/\\b(next time|for future|from now on|remember this|don't|do not|avoid|instead|you should|should have|you forgot|you missed|not what i asked|wrong again)\\b/i.test(\n\t\t\t\tuserText,\n\t\t\t);\n\t\tconst behavioralSelfImprovementSignal =\n\t\t\t/\\b(harness|pi|agent|autonomy|autonomous|self[- ]?improv(?:e|ement|ing)?|steer(?:ing)?|trigger(?:s)?|skill(?:s)?|code[- ]?bak(?:e|ed)|bake(?:d)? into code|not (?:automata|memory)|reference agent|hermes)\\b/i.test(\n\t\t\t\tuserText,\n\t\t\t) &&\n\t\t\t/\\b(improve|automatic(?:ally)?|autonomous|trigger|fire|skill|steer|self[- ]?improv(?:e|ement|ing)?|code[- ]?bak(?:e|ed)|bake(?:d)?|too much|less)\\b/i.test(\n\t\t\t\tuserText,\n\t\t\t);\n\t\tconst complexTaskThreshold = Math.max(1, settings.complexTaskToolCalls ?? 12);\n\t\tconst complexTaskSignal = toolCalls >= complexTaskThreshold;\n\t\tconst bypassCooldown = correctionSignal || behavioralSelfImprovementSignal || complexTaskSignal;\n\t\tconst base = { messageCount, contextPercent, cooldownRemainingMs, runningCount, toolCalls };\n\t\tif (!settings.enabled) return { ...base, shouldRun: false, reason: \"disabled\" };\n\t\tif (!settings.reflectionReview) return { ...base, shouldRun: false, reason: \"reflection disabled\" };\n\t\tif (runningCount >= settings.maxConcurrentLearners) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: false,\n\t\t\t\treason: `max tenant learners running (${runningCount}/${settings.maxConcurrentLearners})`,\n\t\t\t};\n\t\t}\n\t\tif (cooldownRemainingMs > 0 && !bypassCooldown) {\n\t\t\treturn { ...base, shouldRun: false, reason: \"reflection cooldown\" };\n\t\t}\n\t\tif (behavioralSelfImprovementSignal) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: \"reflection behavioral self-improvement signal\",\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t\tbypassCooldown: true,\n\t\t\t};\n\t\t}\n\t\tif (correctionSignal) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: \"reflection correction signal\",\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t\tbypassCooldown: true,\n\t\t\t};\n\t\t}\n\t\tif (complexTaskSignal) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `reflection complex task learning signal (${toolCalls}/${complexTaskThreshold} tool calls)`,\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t\tbypassCooldown: true,\n\t\t\t};\n\t\t}\n\t\t// Full autonomy expands allowed action scope for triggered reviews; it does not make every turn a review trigger.\n\t\tif (toolCalls >= settings.reflectionMinToolCalls) {\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\tshouldRun: true,\n\t\t\t\treason: `reflection tool trigger (${toolCalls}/${settings.reflectionMinToolCalls})`,\n\t\t\t\tdigest: this.buildAutonomyReviewDigest(messages),\n\t\t\t};\n\t\t}\n\t\treturn { ...base, shouldRun: false, reason: \"reflection thresholds not met\" };\n\t}\n\n\t/**\n\t * Native reflection is the in-process replacement for the buggy `continuous-learning`\n\t * subprocess. It runs when auto-learn is enabled and is not killed via `PI_NATIVE_REFLECTION=0`.\n\t */\n\tisNativeReflectionEnabled(): boolean {\n\t\tif (process.env.PI_NATIVE_REFLECTION === \"0\") return false;\n\t\tif (process.env.PI_AUTO_LEARN_CHILD === \"1\") return false;\n\t\treturn this.getEffectiveAutoLearnSettings().enabled;\n\t}\n\n\t/** Heuristic: does the user's turn text read like a correction/steer worth learning from? */\n\tprivate hasCorrectionSignal(userText: string): boolean {\n\t\treturn /\\b(next time|for future|from now on|remember this|don't|do not|avoid|instead|you should|should have|you forgot|you missed|not what i asked|wrong again)\\b/i.test(\n\t\t\tuserText,\n\t\t);\n\t}\n\n\t/**\n\t * End-of-loop native reflection: demand-gate the just-finished turn (zero-I/O) and, when\n\t * warranted, run the in-process {@link AgentSession.runReflectionPass} as a fire-and-forget\n\t * background microtask. No subprocess, no blocking of the UI.\n\t */\n\t/**\n\t * Resolve the model + thinking level the native reflection pass should use, from auto-learn\n\t * settings (`model`, `thinkingLevel`). The configured model is honored only when its provider is\n\t * AVAILABLE (api key / logged in) — otherwise we fall back to the session model (undefined). This\n\t * lets the user pick a balanced/cheaper reflection model without risking an unusable one.\n\t */\n\tprivate _resolveReflectionModel(settings: Required<AutoLearnSettings>) {\n\t\tlet model: Model<any> | undefined;\n\t\tif (settings.model && settings.model !== \"active\") {\n\t\t\tconst resolved = resolveCliModel({ cliModel: settings.model, modelRegistry: this.session.modelRegistry });\n\t\t\tif (resolved.model && this.session.modelRegistry.hasConfiguredAuth(resolved.model)) {\n\t\t\t\tmodel = resolved.model;\n\t\t\t}\n\t\t}\n\t\tconst thinkingLevel = settings.thinkingLevel ?? \"low\";\n\t\treturn { model, thinkingLevel };\n\t}\n\n\t/** Buffer a debounce-skipped turn's text so its learning is folded into the next pass (bug #29). */\n\tprivate _bufferPendingReflection(text: string): void {\n\t\tconst t = text.trim();\n\t\tif (!t) return;\n\t\tthis._pendingReflectionText.push(t);\n\t\t// Bound the buffer so a long skipped streak can't grow unbounded; drop oldest past the budget\n\t\t// (the most recent corrections matter most).\n\t\tlet total = this._pendingReflectionText.reduce((n, s) => n + s.length + 1, 0);\n\t\twhile (this._pendingReflectionText.length > 1 && total > AutoLearnController.PENDING_REFLECTION_MAX_CHARS) {\n\t\t\ttotal -= (this._pendingReflectionText.shift()?.length ?? 0) + 1;\n\t\t}\n\t}\n\n\tprivate _drainPendingReflection(): string {\n\t\tif (this._pendingReflectionText.length === 0) return \"\";\n\t\tconst joined = this._pendingReflectionText.join(\"\\n\");\n\t\tthis._pendingReflectionText = [];\n\t\treturn joined;\n\t}\n\n\t/**\n\t * Cheap turn-boundary task_steps contract check. Reads the current task_steps snapshot,\n\t * advances the pure `checkTaskStepsContract` streak, and — on the exact turn a sustained\n\t * violation first reaches the threshold — delivers a ONE-LINE advisory harness note through the\n\t * session's existing next-turn message surface (`sendCustomMessage(..., {deliverAs:\"nextTurn\"})`,\n\t * the same mechanism `_pendingNextTurnMessages` already injects `memory_context`/\n\t * `task_steps_context` pages through). Zero model calls; a delivery failure is swallowed so this\n\t * best-effort nudge can never disrupt the turn.\n\t *\n\t * Called from both `maybeRunNativeReflection` and `maybeStartAutoLearn` — the mutually exclusive\n\t * `agent_end` branches in interactive-mode.ts — so it runs on every turn regardless of whether\n\t * native reflection or legacy auto-learn is enabled, without adding a new turn-boundary hook.\n\t */\n\tprivate checkTaskStepsContractNudge(): void {\n\t\tconst state = this.session.getTaskStepsStateSnapshot();\n\t\tconst outcome = checkTaskStepsContract(state, this._taskContractStreak);\n\t\tthis._taskContractStreak = outcome.streak;\n\t\tif (!outcome.note) return;\n\t\tvoid this.session\n\t\t\t.sendCustomMessage(\n\t\t\t\t{ customType: \"task_contract_nudge\", content: outcome.note, display: false },\n\t\t\t\t{ deliverAs: \"nextTurn\" },\n\t\t\t)\n\t\t\t.catch(() => {\n\t\t\t\t// Advisory-only harness note; delivery failure must never disrupt the session.\n\t\t\t});\n\t}\n\n\tmaybeRunNativeReflection(messages: AgentMessage[]): void {\n\t\tthis.checkTaskStepsContractNudge();\n\t\tif (!this.isNativeReflectionEnabled()) return;\n\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst toolCallCount = this.countAgentToolCalls(messages);\n\t\tconst contextPercent = this.session.getContextUsage()?.percent ?? 0;\n\t\tconst contextHeadroomPct = Math.max(0, 100 - contextPercent);\n\n\t\tconst userText = messages\n\t\t\t.filter((m) => String((m as unknown as Record<string, unknown>).role ?? \"\") === \"user\")\n\t\t\t.map((m) => this.getAgentMessagePlainText(m))\n\t\t\t.join(\"\\n\");\n\t\tconst hadCorrection = this.hasCorrectionSignal(userText);\n\n\t\t// A correction is worth learning from even on a short turn; otherwise require a complex turn.\n\t\tconst trigger: \"complex\" | \"corrective\" | \"none\" = hadCorrection\n\t\t\t? \"corrective\"\n\t\t\t: toolCallCount >= Math.max(1, settings.complexTaskToolCalls ?? 12)\n\t\t\t\t? \"complex\"\n\t\t\t\t: \"none\";\n\t\tif (trigger === \"none\") return;\n\n\t\tconst recentTurnText = messages\n\t\t\t.map((m) =>\n\t\t\t\t`${String((m as unknown as Record<string, unknown>).role ?? \"\")}: ${this.getAgentMessagePlainText(m)}`.trim(),\n\t\t\t)\n\t\t\t.filter(Boolean)\n\t\t\t.join(\"\\n\");\n\n\t\t// Debounce (cost guard): never run two background reflection passes at once, and never start one\n\t\t// within the min interval of the last — a multi-turn correction session would otherwise spawn\n\t\t// overlapping passes that re-reason the same task. A skipped turn is NOT dropped: its text is\n\t\t// buffered and folded into the next pass, so the corrective feedback is still learned (bug #29).\n\t\tconst now = Date.now();\n\t\tconst debounced =\n\t\t\tthis._nativeReflectionInFlight ||\n\t\t\tnow - this._lastNativeReflectionAt < AutoLearnController.NATIVE_REFLECTION_MIN_INTERVAL_MS;\n\t\tif (debounced) {\n\t\t\tthis._bufferPendingReflection(recentTurnText);\n\t\t\treturn;\n\t\t}\n\n\t\t// Fold any buffered (previously debounced) turns into this pass so nothing learned is lost.\n\t\tconst pending = this._drainPendingReflection();\n\t\tconst reflectionText = pending ? `${pending}\\n${recentTurnText}` : recentTurnText;\n\n\t\t// Stable per-turn id so a duplicate scheduling/retry can't double-count the reflection cost.\n\t\t// AgentMessage does not guarantee a top-level id on the real path, so derive a digest from fields\n\t\t// that are present on persisted user/assistant messages and stable across duplicate agent_end calls.\n\t\tconst turnDigest = crypto\n\t\t\t.createHash(\"sha256\")\n\t\t\t.update(\n\t\t\t\tmessages\n\t\t\t\t\t.map((message) =>\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tmessage.role,\n\t\t\t\t\t\t\t\"timestamp\" in message ? String(message.timestamp ?? \"\") : \"\",\n\t\t\t\t\t\t\tthis.getAgentMessagePlainText(message),\n\t\t\t\t\t\t].join(\"\\0\"),\n\t\t\t\t\t)\n\t\t\t\t\t.join(\"\\n\"),\n\t\t\t)\n\t\t\t.digest(\"hex\")\n\t\t\t.slice(0, 24);\n\t\tconst reportId = `reflection:${turnDigest}`;\n\n\t\t// User-configurable reflection model + thinking (auto-learn settings), restricted to AVAILABLE\n\t\t// (authed) models — falls back to the session model when unset or unavailable.\n\t\tconst { model, thinkingLevel } = this._resolveReflectionModel(settings);\n\n\t\tthis._nativeReflectionInFlight = true;\n\t\tthis._lastNativeReflectionAt = now;\n\t\tvoid this.session\n\t\t\t.runReflectionPass({\n\t\t\t\tsignals: { trigger, toolCallCount, hadCorrection, contextHeadroomPct, usefulLately: 0 },\n\t\t\t\trecentTurnText: reflectionText,\n\t\t\t\treportId,\n\t\t\t\tmodel,\n\t\t\t\tthinkingLevel,\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// best-effort background learning; never disrupt the session\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis._nativeReflectionInFlight = false;\n\t\t\t});\n\t}\n\n\tmaybeStartAutoLearn(): boolean {\n\t\t// The other mutually exclusive `agent_end` branch (see `checkTaskStepsContractNudge`) — runs\n\t\t// unconditionally here so the contract nudge fires every turn regardless of auto-learn settings.\n\t\tthis.checkTaskStepsContractNudge();\n\t\tif (process.env.PI_AUTO_LEARN_CHILD === \"1\") return false;\n\t\tconst decision = this.evaluateAutoLearn(false);\n\t\tif (!decision.shouldRun) {\n\t\t\tthis.updateAutoLearnFooter();\n\t\t\treturn false;\n\t\t}\n\t\tconst message = this.launchAutoLearn(decision.reason, false);\n\t\tif (!message.startsWith(\"Auto Learn started\")) this.ui.showStatus(message);\n\t\treturn message.startsWith(\"Auto Learn started\");\n\t}\n\n\tmaybeStartAutonomyReview(messages: AgentMessage[]): boolean {\n\t\tif (process.env.PI_AUTO_LEARN_CHILD === \"1\") return false;\n\t\tconst decision = this.evaluateAutonomyReview(messages);\n\t\tif (!decision.shouldRun) return false;\n\t\tconst message = this.launchAutoLearn(decision.reason, true, {\n\t\t\tcooldownKind: \"reflection\",\n\t\t\tpromptKind: \"reflection\",\n\t\t\tturnDigest: decision.digest,\n\t\t\tbypassReflectionCooldown: decision.bypassCooldown,\n\t\t});\n\t\tif (!message.startsWith(\"Auto Learn started\")) this.ui.showStatus(message);\n\t\treturn message.startsWith(\"Auto Learn started\");\n\t}\n\n\tupdateAutoLearnFooter(): void {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tif (!settings.enabled) {\n\t\t\tthis.ui.footerDataProvider.setExtensionStatus(\"auto-learn\", undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst state = this.getPrunedAutoLearnState();\n\t\tconst hasActiveRun = Object.values(state.runs ?? {}).some(\n\t\t\t(run) => run.tenant === tenant && this.isAutoLearnPidAlive(run.pid),\n\t\t);\n\t\tthis.ui.footerDataProvider.setExtensionStatus(\n\t\t\t\"auto-learn\",\n\t\t\thasActiveRun ? theme.fg(\"warning\", \"(learning)\") : undefined,\n\t\t);\n\t\tthis.ui.invalidateFooter();\n\t\tthis.ui.requestRender();\n\t}\n\n\tformatAutoLearnStatus(): string {\n\t\tconst settings = this.getEffectiveAutoLearnSettings();\n\t\tconst decision = this.evaluateAutoLearn(false);\n\t\tconst state = this.getPrunedAutoLearnState();\n\t\tconst tenant = this.getAutoLearnTenantKey();\n\t\tconst runs = Object.entries(state.runs ?? {}).filter(([, run]) => run.tenant === tenant);\n\t\tconst otherTenantRuns = Object.values(state.runs ?? {}).filter((run) => run.tenant !== tenant).length;\n\t\tconst contextText = decision.contextPercent === null ? \"unknown\" : `${decision.contextPercent.toFixed(1)}%`;\n\t\tconst cooldownText =\n\t\t\tdecision.cooldownRemainingMs > 0 ? `${Math.ceil(decision.cooldownRemainingMs / 60000)}m remaining` : \"ready\";\n\t\tconst runLines = runs.length\n\t\t\t? runs\n\t\t\t\t\t.map(([id, run]) => {\n\t\t\t\t\t\tconst session = [\n\t\t\t\t\t\t\trun.sessionId ? `session=${run.sessionId}` : \"\",\n\t\t\t\t\t\t\trun.sessionDir ? `sessionDir=${run.sessionDir}` : \"\",\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\t\tconst sessionText = session ? `, ${session}` : \"\";\n\t\t\t\t\t\treturn `- ${id}: ${run.model}, kind=${run.kind ?? \"auto\"}, status=${run.status ?? \"running\"}, authority=${run.authority ?? \"unknown\"}, pid=${run.pid ?? \"?\"}${sessionText}, log=${run.logPath}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\\n\")\n\t\t\t: \"- none\";\n\t\tconst reloadBlockers = getPendingReloadBlockers({\n\t\t\townPid: process.pid,\n\t\t\townSessionId: this.sessionManager.getSessionId(),\n\t\t\townSessionFile: this.sessionManager.getSessionFile(),\n\t\t});\n\t\tconst reloadBlockerLines = reloadBlockers.pending\n\t\t\t? reloadBlockers.descriptions.map((description) => `- ${description}`).join(\"\\n\")\n\t\t\t: \"- none\";\n\t\t// In-process quiesce registry (background lanes, scout runs, isolated completions) — the\n\t\t// reload gate's OTHER source of blockers, distinct from the cross-process ones above.\n\t\tconst inFlightWork = getInFlightWorkUnits(getAgentDir());\n\t\tconst inFlightWorkLines = inFlightWork.length\n\t\t\t? inFlightWork.map((unit) => `- ${describeInFlightWorkUnit(unit)}`).join(\"\\n\")\n\t\t\t: \"- none\";\n\t\tconst reflectionLast = state.lastReflectionByTenant?.[this.getAutoLearnTenantKey()] ?? 0;\n\t\tconst reflectionCooldownRemainingMs = Math.max(\n\t\t\t0,\n\t\t\treflectionLast + settings.reflectionCooldownMinutes * 60 * 1000 - Date.now(),\n\t\t);\n\t\tconst reflectionCooldownText =\n\t\t\treflectionCooldownRemainingMs > 0 ? `${Math.ceil(reflectionCooldownRemainingMs / 60000)}m remaining` : \"ready\";\n\t\treturn `Auto Learn status\\nEnabled: ${settings.enabled}\\nModel: ${settings.model}\\nNext decision: ${decision.shouldRun ? \"ready\" : decision.reason}\\nMessages: ${decision.messageCount}/${settings.longSessionMessages}\\nContext: ${contextText}/${settings.longSessionContextPercent}%\\nCooldown: ${cooldownText}\\nReflection review: ${settings.reflectionReview ? \"enabled\" : \"disabled\"} (tool trigger ${settings.reflectionMinToolCalls}, cooldown ${reflectionCooldownText})\\nHistory retention: 7 days for internal Auto Learn prompts/logs/sessions\\nRunning tenant leases: ${runs.length}/${settings.maxConcurrentLearners}\\nOther tenant leases: ${otherTenantRuns}\\nTenant artifact dir: ${this.getAutoLearnTenantDataDir()}\\nPi auto-reload blockers: ${reloadBlockers.pending ? reloadBlockers.reason : \"none\"}\\n${reloadBlockerLines}\\nIn-process reload-gate work: ${inFlightWork.length ? `${inFlightWork.length} unit(s)` : \"none\"}\\n${inFlightWorkLines}\\nRuns:\\n${runLines}`;\n\t}\n}\n"]}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import type { ImageContent } from "@caupulican/pi-ai";
|
|
12
12
|
import type { EditorComponent, TUI } from "@caupulican/pi-tui";
|
|
13
|
+
import type { SessionImageStore } from "../../core/session-image-store.ts";
|
|
13
14
|
export type UserInputSubmission = {
|
|
14
15
|
text: string;
|
|
15
16
|
images?: ImageContent[];
|
|
@@ -21,10 +22,15 @@ export type PendingClipboardImage = {
|
|
|
21
22
|
export interface ClipboardQueueHost {
|
|
22
23
|
pendingClipboardImages: PendingClipboardImage[];
|
|
23
24
|
clipboardImageCounter: number;
|
|
25
|
+
readonly clipboardImageStore?: Pick<SessionImageStore, "resolveReferences">;
|
|
24
26
|
}
|
|
25
27
|
export interface ClipboardInputHost extends ClipboardQueueHost {
|
|
26
|
-
readonly editor: Pick<EditorComponent, "insertTextAtCursor">;
|
|
28
|
+
readonly editor: Pick<EditorComponent, "handleInput" | "insertTextAtCursor">;
|
|
27
29
|
readonly ui: Pick<TUI, "requestRender">;
|
|
30
|
+
readonly autoResizeImages: boolean;
|
|
31
|
+
readonly blockImages: boolean;
|
|
32
|
+
readonly blockImagesReason?: string;
|
|
33
|
+
readonly imageStore?: Pick<SessionImageStore, "write">;
|
|
28
34
|
showStatus(message: string): void;
|
|
29
35
|
showWarning(message: string): void;
|
|
30
36
|
}
|