@caupulican/pi-adaptative 0.81.40 → 0.81.41
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 +25 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +1 -0
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +1 -1
- package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +1 -0
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +22 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-paths.d.ts +6 -0
- package/dist/core/agent-paths.d.ts.map +1 -1
- package/dist/core/agent-paths.js +12 -0
- package/dist/core/agent-paths.js.map +1 -1
- package/dist/core/agent-session-contracts.d.ts +293 -0
- package/dist/core/agent-session-contracts.d.ts.map +1 -0
- package/dist/core/agent-session-contracts.js +26 -0
- package/dist/core/agent-session-contracts.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +26 -405
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +86 -307
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +3 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +2 -1
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +3 -1
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +1 -0
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/bedrock-sso-login.d.ts +16 -0
- package/dist/core/bedrock-sso-login.d.ts.map +1 -0
- package/dist/core/bedrock-sso-login.js +98 -0
- package/dist/core/bedrock-sso-login.js.map +1 -0
- package/dist/core/compaction-controller.d.ts.map +1 -1
- package/dist/core/compaction-controller.js +1 -1
- package/dist/core/compaction-controller.js.map +1 -1
- package/dist/core/compaction-support.d.ts +3 -8
- package/dist/core/compaction-support.d.ts.map +1 -1
- package/dist/core/compaction-support.js +3 -3
- package/dist/core/compaction-support.js.map +1 -1
- package/dist/core/context-pipeline.d.ts +1 -1
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +7 -33
- package/dist/core/context-pipeline.js.map +1 -1
- package/dist/core/cost/cost-summary.d.ts.map +1 -1
- package/dist/core/cost/cost-summary.js +5 -3
- package/dist/core/cost/cost-summary.js.map +1 -1
- package/dist/core/cost/daily-usage.d.ts.map +1 -1
- package/dist/core/cost/daily-usage.js +4 -5
- package/dist/core/cost/daily-usage.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/extension-import-authority.d.ts +6 -0
- package/dist/core/extension-import-authority.d.ts.map +1 -0
- package/dist/core/extension-import-authority.js +10 -0
- package/dist/core/extension-import-authority.js.map +1 -0
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +2 -3
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +14 -5
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/stale-context.d.ts +2 -0
- package/dist/core/extensions/stale-context.d.ts.map +1 -0
- package/dist/core/extensions/stale-context.js +2 -0
- package/dist/core/extensions/stale-context.js.map +1 -0
- package/dist/core/extensions/types.d.ts +8 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/foreground-recovery-controller.d.ts +1 -0
- package/dist/core/foreground-recovery-controller.d.ts.map +1 -1
- package/dist/core/foreground-recovery-controller.js +13 -13
- package/dist/core/foreground-recovery-controller.js.map +1 -1
- package/dist/core/goal-loop-controller.d.ts +14 -9
- package/dist/core/goal-loop-controller.d.ts.map +1 -1
- package/dist/core/goal-loop-controller.js +47 -75
- package/dist/core/goal-loop-controller.js.map +1 -1
- package/dist/core/goals/compact-goal-context.d.ts +11 -0
- package/dist/core/goals/compact-goal-context.d.ts.map +1 -0
- package/dist/core/goals/compact-goal-context.js +59 -0
- package/dist/core/goals/compact-goal-context.js.map +1 -0
- package/dist/core/goals/goal-acceptance.d.ts.map +1 -1
- package/dist/core/goals/goal-acceptance.js +2 -0
- package/dist/core/goals/goal-acceptance.js.map +1 -1
- package/dist/core/goals/goal-auto-continue-controller.d.ts +2 -1
- package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-auto-continue-controller.js +5 -8
- package/dist/core/goals/goal-auto-continue-controller.js.map +1 -1
- package/dist/core/goals/goal-continuation-controller.d.ts +2 -2
- package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-controller.js +42 -11
- package/dist/core/goals/goal-continuation-controller.js.map +1 -1
- package/dist/core/goals/goal-continuation-defaults.d.ts +4 -29
- package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-defaults.js +4 -32
- package/dist/core/goals/goal-continuation-defaults.js.map +1 -1
- package/dist/core/goals/goal-continuation-prompt.d.ts +8 -18
- package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-prompt.js +9 -179
- package/dist/core/goals/goal-continuation-prompt.js.map +1 -1
- package/dist/core/goals/goal-lifecycle.d.ts +35 -12
- package/dist/core/goals/goal-lifecycle.d.ts.map +1 -1
- package/dist/core/goals/goal-lifecycle.js +98 -13
- package/dist/core/goals/goal-lifecycle.js.map +1 -1
- package/dist/core/goals/goal-record.d.ts +17 -0
- package/dist/core/goals/goal-record.d.ts.map +1 -0
- package/dist/core/goals/goal-record.js +31 -0
- package/dist/core/goals/goal-record.js.map +1 -0
- package/dist/core/goals/goal-session-controller.d.ts +42 -0
- package/dist/core/goals/goal-session-controller.d.ts.map +1 -0
- package/dist/core/goals/goal-session-controller.js +128 -0
- package/dist/core/goals/goal-session-controller.js.map +1 -0
- package/dist/core/goals/goal-state.d.ts +45 -25
- package/dist/core/goals/goal-state.d.ts.map +1 -1
- package/dist/core/goals/goal-state.js +85 -15
- package/dist/core/goals/goal-state.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +1 -4
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +49 -34
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/goals/session-goal-state.d.ts +18 -8
- package/dist/core/goals/session-goal-state.d.ts.map +1 -1
- package/dist/core/goals/session-goal-state.js +134 -11
- package/dist/core/goals/session-goal-state.js.map +1 -1
- package/dist/core/human-input-controller.d.ts +47 -0
- package/dist/core/human-input-controller.d.ts.map +1 -0
- package/dist/core/human-input-controller.js +181 -0
- package/dist/core/human-input-controller.js.map +1 -0
- package/dist/core/local-runtime-controller.d.ts +1 -1
- package/dist/core/local-runtime-controller.d.ts.map +1 -1
- package/dist/core/local-runtime-controller.js.map +1 -1
- package/dist/core/model-capability.d.ts +0 -19
- package/dist/core/model-capability.d.ts.map +1 -1
- package/dist/core/model-capability.js +0 -19
- package/dist/core/model-capability.js.map +1 -1
- package/dist/core/model-registry.d.ts +6 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +13 -5
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +16 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +32 -16
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-router-controller.d.ts +1 -1
- package/dist/core/model-router-controller.d.ts.map +1 -1
- package/dist/core/model-router-controller.js.map +1 -1
- package/dist/core/model-selection-controller.d.ts +1 -1
- package/dist/core/model-selection-controller.d.ts.map +1 -1
- package/dist/core/model-selection-controller.js.map +1 -1
- package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -1
- package/dist/core/orchestration/delegation-ledger.js +3 -0
- package/dist/core/orchestration/delegation-ledger.js.map +1 -1
- package/dist/core/orchestration/work-state-projection.d.ts.map +1 -1
- package/dist/core/orchestration/work-state-projection.js +1 -1
- package/dist/core/orchestration/work-state-projection.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +20 -3
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/profile-filter-controller.d.ts +8 -1
- package/dist/core/profile-filter-controller.d.ts.map +1 -1
- package/dist/core/profile-filter-controller.js +23 -5
- package/dist/core/profile-filter-controller.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +1 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +18 -29
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/reflection-controller.d.ts +1 -1
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +3 -1
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/request-auth.d.ts +7 -0
- package/dist/core/request-auth.d.ts.map +1 -0
- package/dist/core/request-auth.js +8 -0
- package/dist/core/request-auth.js.map +1 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +16 -6
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/risk-classifier.d.ts.map +1 -1
- package/dist/core/risk-classifier.js +8 -0
- package/dist/core/risk-classifier.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +15 -3
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +132 -79
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +7 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/secrets/credential-exposure-guard.d.ts +9 -0
- package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -0
- package/dist/core/secrets/credential-exposure-guard.js +241 -0
- package/dist/core/secrets/credential-exposure-guard.js.map +1 -0
- package/dist/core/secrets/secret-dotenv.d.ts +27 -0
- package/dist/core/secrets/secret-dotenv.d.ts.map +1 -0
- package/dist/core/secrets/secret-dotenv.js +183 -0
- package/dist/core/secrets/secret-dotenv.js.map +1 -0
- package/dist/core/secrets/secret-vault-format.d.ts +112 -0
- package/dist/core/secrets/secret-vault-format.d.ts.map +1 -0
- package/dist/core/secrets/secret-vault-format.js +397 -0
- package/dist/core/secrets/secret-vault-format.js.map +1 -0
- package/dist/core/secrets/secret-vault.d.ts +72 -0
- package/dist/core/secrets/secret-vault.d.ts.map +1 -0
- package/dist/core/secrets/secret-vault.js +671 -0
- package/dist/core/secrets/secret-vault.js.map +1 -0
- package/dist/core/session-analytics.d.ts +4 -23
- package/dist/core/session-analytics.d.ts.map +1 -1
- package/dist/core/session-analytics.js +39 -69
- package/dist/core/session-analytics.js.map +1 -1
- package/dist/core/session-role.d.ts +5 -0
- package/dist/core/session-role.d.ts.map +1 -1
- package/dist/core/session-role.js +14 -1
- package/dist/core/session-role.js.map +1 -1
- package/dist/core/session-tree-navigator.d.ts +4 -6
- package/dist/core/session-tree-navigator.d.ts.map +1 -1
- package/dist/core/session-tree-navigator.js +4 -1
- package/dist/core/session-tree-navigator.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -2
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tool-capability-policy.d.ts.map +1 -1
- package/dist/core/tool-capability-policy.js +1 -0
- package/dist/core/tool-capability-policy.js.map +1 -1
- package/dist/core/tool-gate-controller.d.ts.map +1 -1
- package/dist/core/tool-gate-controller.js +8 -2
- package/dist/core/tool-gate-controller.js.map +1 -1
- package/dist/core/tool-protocol-controller.d.ts +2 -4
- package/dist/core/tool-protocol-controller.d.ts.map +1 -1
- package/dist/core/tool-protocol-controller.js.map +1 -1
- package/dist/core/tool-recovery-stats.d.ts +21 -1
- package/dist/core/tool-recovery-stats.d.ts.map +1 -1
- package/dist/core/tool-recovery-stats.js.map +1 -1
- package/dist/core/tools/bash.d.ts +5 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +59 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +6 -7
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +6 -8
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/git-filter.d.ts +1 -8
- package/dist/core/tools/git-filter.d.ts.map +1 -1
- package/dist/core/tools/git-filter.js +2 -63
- package/dist/core/tools/git-filter.js.map +1 -1
- package/dist/core/tools/goal.d.ts +5 -3
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +97 -19
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/orchestration-panel.d.ts +1 -4
- package/dist/core/tools/orchestration-panel.d.ts.map +1 -1
- package/dist/core/tools/orchestration-panel.js +0 -44
- package/dist/core/tools/orchestration-panel.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +11 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +36 -3
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/python.d.ts +2 -0
- package/dist/core/tools/python.d.ts.map +1 -1
- package/dist/core/tools/python.js +3 -1
- package/dist/core/tools/python.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/search-command-guard.d.ts +14 -0
- package/dist/core/tools/search-command-guard.d.ts.map +1 -0
- package/dist/core/tools/search-command-guard.js +333 -0
- package/dist/core/tools/search-command-guard.js.map +1 -0
- package/dist/core/tools/secret-store.d.ts +38 -0
- package/dist/core/tools/secret-store.d.ts.map +1 -0
- package/dist/core/tools/secret-store.js +412 -0
- package/dist/core/tools/secret-store.js.map +1 -0
- package/dist/core/tools/shell-command-parser.d.ts +16 -0
- package/dist/core/tools/shell-command-parser.d.ts.map +1 -0
- package/dist/core/tools/shell-command-parser.js +113 -0
- package/dist/core/tools/shell-command-parser.js.map +1 -0
- package/dist/core/tools/task-steps.d.ts.map +1 -1
- package/dist/core/tools/task-steps.js +4 -7
- package/dist/core/tools/task-steps.js.map +1 -1
- package/dist/core/util/atomic-file.d.ts +6 -2
- package/dist/core/util/atomic-file.d.ts.map +1 -1
- package/dist/core/util/atomic-file.js +4 -4
- package/dist/core/util/atomic-file.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +25 -11
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/auth-dialogs-controller.d.ts +4 -0
- package/dist/modes/interactive/auth-dialogs-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auth-dialogs-controller.js +60 -1
- package/dist/modes/interactive/auth-dialogs-controller.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts +55 -0
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -0
- package/dist/modes/interactive/components/activity-lane.js +304 -0
- package/dist/modes/interactive/components/activity-lane.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +19 -10
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/expandable-text.d.ts +12 -0
- package/dist/modes/interactive/components/expandable-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/expandable-text.js +17 -0
- package/dist/modes/interactive/components/expandable-text.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +15 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +30 -21
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +6 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +23 -14
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +4 -4
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +19 -11
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +53 -20
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-group.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-group.js +3 -0
- package/dist/modes/interactive/components/tool-group.js.map +1 -1
- package/dist/modes/interactive/components/usage-action-selector.d.ts +16 -0
- package/dist/modes/interactive/components/usage-action-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/usage-action-selector.js +46 -0
- package/dist/modes/interactive/components/usage-action-selector.js.map +1 -0
- package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
- package/dist/modes/interactive/extension-ui-host.js +1 -0
- package/dist/modes/interactive/extension-ui-host.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts +15 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +27 -19
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/history-reload-math.d.ts +6 -2
- package/dist/modes/interactive/history-reload-math.d.ts.map +1 -1
- package/dist/modes/interactive/history-reload-math.js +10 -5
- package/dist/modes/interactive/history-reload-math.js.map +1 -1
- package/dist/modes/interactive/interactive-event-controller.d.ts +74 -0
- package/dist/modes/interactive/interactive-event-controller.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-event-controller.js +328 -0
- package/dist/modes/interactive/interactive-event-controller.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +20 -25
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +196 -608
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/loaded-resources-view.d.ts +20 -0
- package/dist/modes/interactive/loaded-resources-view.d.ts.map +1 -0
- package/dist/modes/interactive/loaded-resources-view.js +147 -0
- package/dist/modes/interactive/loaded-resources-view.js.map +1 -0
- package/dist/modes/interactive/resource-display.d.ts.map +1 -1
- package/dist/modes/interactive/resource-display.js +8 -2
- package/dist/modes/interactive/resource-display.js.map +1 -1
- package/dist/modes/interactive/resource-shell-commands.d.ts +1 -5
- package/dist/modes/interactive/resource-shell-commands.d.ts.map +1 -1
- package/dist/modes/interactive/resource-shell-commands.js +0 -5
- package/dist/modes/interactive/resource-shell-commands.js.map +1 -1
- package/dist/modes/interactive/session-flow-commands.d.ts +10 -6
- package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-flow-commands.js +123 -70
- package/dist/modes/interactive/session-flow-commands.js.map +1 -1
- package/dist/modes/interactive/usage-commands.d.ts +34 -0
- package/dist/modes/interactive/usage-commands.d.ts.map +1 -0
- package/dist/modes/interactive/usage-commands.js +225 -0
- package/dist/modes/interactive/usage-commands.js.map +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +5 -3
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +3 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/UI_POLISH_ORCHESTRATION.md +25 -31
- package/docs/UI_QUALITY_ORCHESTRATION.md +22 -24
- package/docs/providers.md +9 -1
- package/docs/ui-reference/README.md +6 -6
- package/docs/ui-reference/orchestration-after.txt +14 -7
- package/docs/ui-reference/orchestration-before.txt +12 -6
- package/docs/ui-reference/orchestration-reference.txt +15 -5
- package/docs/usage.md +9 -1
- 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/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 +13 -13
- package/package.json +4 -4
|
@@ -10,10 +10,11 @@
|
|
|
10
10
|
* `handleSessionCommand`) take their own minimal host shapes so their behaviour
|
|
11
11
|
* tests keep exercising them through interactive-mode's thin wrappers unchanged.
|
|
12
12
|
*/
|
|
13
|
+
import { randomUUID } from "node:crypto";
|
|
13
14
|
import { Loader, Spacer, Text } from "@caupulican/pi-tui";
|
|
14
|
-
import {
|
|
15
|
+
import { cancelPersistedGoal, clearPersistedGoal, editPersistedGoal, getGoalStateRevision, pausePersistedGoal, replaceGoal, resumeGoal, resumePersistedGoal, } from "../../core/goals/goal-lifecycle.js";
|
|
15
16
|
import { applyGoalAction, completeGoalManually } from "../../core/goals/goal-tool-core.js";
|
|
16
|
-
import { findExactModelReferenceMatch, resolveModelScope } from "../../core/model-resolver.js";
|
|
17
|
+
import { findExactModelReferenceMatch, resolveModelScope, resolveModelScopeWithDiagnostics, } from "../../core/model-resolver.js";
|
|
17
18
|
import { MissingSessionCwdError } from "../../core/session-cwd.js";
|
|
18
19
|
import { listAllSessions, listSessions, openSession } from "../../core/session-manager-factory.js";
|
|
19
20
|
import { parseTaskCommand } from "../../core/tasks/task-command.js";
|
|
@@ -67,12 +68,17 @@ export async function showModelsSelector(host) {
|
|
|
67
68
|
// Get all available models
|
|
68
69
|
host.session.modelRegistry.refresh();
|
|
69
70
|
const allModels = host.session.modelRegistry.getAvailable();
|
|
70
|
-
|
|
71
|
+
const allModelIds = new Set(allModels.map((model) => `${model.provider}/${model.id}`));
|
|
72
|
+
const configuredPatterns = host.settingsManager.getEnabledModels();
|
|
73
|
+
const sessionScopedModels = host.session.scopedModels;
|
|
74
|
+
if (allModels.length === 0 && !configuredPatterns?.length && sessionScopedModels.length === 0) {
|
|
71
75
|
host.showStatus("No models available");
|
|
72
76
|
return;
|
|
73
77
|
}
|
|
78
|
+
const configuredScope = configuredPatterns?.length
|
|
79
|
+
? await resolveModelScopeWithDiagnostics(configuredPatterns, host.session.modelRegistry)
|
|
80
|
+
: undefined;
|
|
74
81
|
// Check if session has scoped models (from previous session-only changes or CLI --models)
|
|
75
|
-
const sessionScopedModels = host.session.scopedModels;
|
|
76
82
|
const hasSessionScope = sessionScopedModels.length > 0;
|
|
77
83
|
// Build enabled model IDs from session state or settings
|
|
78
84
|
let currentEnabledIds = null;
|
|
@@ -80,18 +86,22 @@ export async function showModelsSelector(host) {
|
|
|
80
86
|
// Use current session's scoped models
|
|
81
87
|
currentEnabledIds = sessionScopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`);
|
|
82
88
|
}
|
|
83
|
-
else {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
else if (configuredScope) {
|
|
90
|
+
currentEnabledIds = configuredScope.scopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`);
|
|
91
|
+
}
|
|
92
|
+
for (const diagnostic of configuredScope?.diagnostics ?? []) {
|
|
93
|
+
if (diagnostic.code !== "no-match")
|
|
94
|
+
continue;
|
|
95
|
+
currentEnabledIds ??= [];
|
|
96
|
+
if (!currentEnabledIds.includes(diagnostic.pattern))
|
|
97
|
+
currentEnabledIds.push(diagnostic.pattern);
|
|
90
98
|
}
|
|
91
99
|
// Helper to update session's scoped models (session-only, no persist)
|
|
92
100
|
const updateSessionModels = async (enabledIds) => {
|
|
93
101
|
currentEnabledIds = enabledIds === null ? null : [...enabledIds];
|
|
94
|
-
|
|
102
|
+
const hasEnabledAvailableModel = enabledIds?.some((id) => allModelIds.has(id)) ?? false;
|
|
103
|
+
const allAvailableModelsEnabled = enabledIds !== null && [...allModelIds].every((id) => enabledIds.includes(id));
|
|
104
|
+
if (enabledIds && hasEnabledAvailableModel && !allAvailableModelsEnabled) {
|
|
95
105
|
const newScopedModels = await resolveModelScope(enabledIds, host.session.modelRegistry);
|
|
96
106
|
host.session.setScopedModels(newScopedModels.map((sm) => ({
|
|
97
107
|
model: sm.model,
|
|
@@ -115,9 +125,10 @@ export async function showModelsSelector(host) {
|
|
|
115
125
|
},
|
|
116
126
|
onPersist: (enabledIds) => {
|
|
117
127
|
// Persist to settings
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
128
|
+
const allEnabled = enabledIds !== null &&
|
|
129
|
+
enabledIds.length === allModels.length &&
|
|
130
|
+
enabledIds.every((id) => allModelIds.has(id));
|
|
131
|
+
const newPatterns = enabledIds === null || allEnabled ? undefined : enabledIds;
|
|
121
132
|
host.settingsManager.setEnabledModels(newPatterns ? [...newPatterns] : undefined);
|
|
122
133
|
host.showStatus("Model selection saved to settings");
|
|
123
134
|
},
|
|
@@ -313,19 +324,30 @@ export function showSessionSelector(host) {
|
|
|
313
324
|
return { component: selector, focus: selector };
|
|
314
325
|
});
|
|
315
326
|
}
|
|
316
|
-
async function
|
|
317
|
-
|
|
318
|
-
const result = await host.runtimeHost.switchSession(sessionPath, {
|
|
327
|
+
async function switchSession(host, sessionPath, options, cwdOverride) {
|
|
328
|
+
return host.runtimeHost.switchSession(sessionPath, {
|
|
319
329
|
cwdOverride,
|
|
320
|
-
beforeSessionResourcesStart: (session) => {
|
|
321
|
-
const resumed = resumeBlockedGoalAfterSessionSwitch(session, () => host.refreshAutonomyFooterStatus());
|
|
322
|
-
if (!resumed.ok)
|
|
323
|
-
throw new Error(`Goal resume failed: ${resumed.error}`);
|
|
324
|
-
goalResume = resumed;
|
|
325
|
-
},
|
|
326
330
|
withSession: options?.withSession,
|
|
327
331
|
});
|
|
328
|
-
|
|
332
|
+
}
|
|
333
|
+
async function offerRestoredGoalResume(host) {
|
|
334
|
+
const state = host.session.getGoalStateSnapshot();
|
|
335
|
+
if (!state || (state.status !== "paused" && state.status !== "blocked" && state.status !== "usage_limited")) {
|
|
336
|
+
host.session.restoreGoalRuntimeAfterResume();
|
|
337
|
+
return false;
|
|
338
|
+
}
|
|
339
|
+
const choice = await host.extensionUiHost?.showExtensionSelector("Resume stopped goal?", [
|
|
340
|
+
"Resume goal",
|
|
341
|
+
"Leave stopped",
|
|
342
|
+
]);
|
|
343
|
+
if (choice !== "Resume goal")
|
|
344
|
+
return false;
|
|
345
|
+
const resumed = resumePersistedGoal(host.session);
|
|
346
|
+
if (!resumed.ok)
|
|
347
|
+
throw new Error(`Goal resume failed: ${resumed.error}`);
|
|
348
|
+
host.session.restoreGoalRuntimeAfterResume();
|
|
349
|
+
host.refreshAutonomyFooterStatus();
|
|
350
|
+
return true;
|
|
329
351
|
}
|
|
330
352
|
export async function handleResumeSession(host, sessionPath, options) {
|
|
331
353
|
if (host.loadingAnimation) {
|
|
@@ -334,12 +356,13 @@ export async function handleResumeSession(host, sessionPath, options) {
|
|
|
334
356
|
}
|
|
335
357
|
host.statusContainer.clear();
|
|
336
358
|
try {
|
|
337
|
-
const result = await
|
|
359
|
+
const result = await switchSession(host, sessionPath, options);
|
|
338
360
|
if (result.cancelled) {
|
|
339
361
|
return result;
|
|
340
362
|
}
|
|
341
363
|
host.renderCurrentSessionState();
|
|
342
|
-
|
|
364
|
+
const goalResumed = await offerRestoredGoalResume(host);
|
|
365
|
+
host.showStatus(goalResumed ? "Resumed session and goal" : "Resumed session; goal state preserved");
|
|
343
366
|
return result;
|
|
344
367
|
}
|
|
345
368
|
catch (error) {
|
|
@@ -353,12 +376,15 @@ export async function handleResumeSession(host, sessionPath, options) {
|
|
|
353
376
|
return { cancelled: true };
|
|
354
377
|
}
|
|
355
378
|
try {
|
|
356
|
-
const result = await
|
|
379
|
+
const result = await switchSession(host, sessionPath, options, selectedCwd);
|
|
357
380
|
if (result.cancelled) {
|
|
358
381
|
return result;
|
|
359
382
|
}
|
|
360
383
|
host.renderCurrentSessionState();
|
|
361
|
-
|
|
384
|
+
const goalResumed = await offerRestoredGoalResume(host);
|
|
385
|
+
host.showStatus(goalResumed
|
|
386
|
+
? "Resumed session and goal in current cwd"
|
|
387
|
+
: "Resumed session in current cwd; goal state preserved");
|
|
362
388
|
return result;
|
|
363
389
|
}
|
|
364
390
|
catch (retryError) {
|
|
@@ -425,15 +451,10 @@ export function resumeCurrentGoal(host, now = new Date().toISOString()) {
|
|
|
425
451
|
const resumed = resumePersistedGoal(host.session, now);
|
|
426
452
|
if (!resumed.ok)
|
|
427
453
|
return resumed;
|
|
454
|
+
host.session.restoreGoalRuntimeAfterResume();
|
|
428
455
|
host.refreshAutonomyFooterStatus();
|
|
429
456
|
return { ok: true, resumed: true, state: resumed.state };
|
|
430
457
|
}
|
|
431
|
-
function resumeBlockedGoalAfterSessionSwitch(session, refreshAutonomyFooterStatus) {
|
|
432
|
-
const resumed = resumeBlockedPersistedGoal(session);
|
|
433
|
-
if (resumed.ok && resumed.resumed)
|
|
434
|
-
refreshAutonomyFooterStatus();
|
|
435
|
-
return resumed;
|
|
436
|
-
}
|
|
437
458
|
function formatGoalStatus(snapshot) {
|
|
438
459
|
const state = snapshot.goalState;
|
|
439
460
|
if (!state)
|
|
@@ -444,12 +465,17 @@ function formatGoalStatus(snapshot) {
|
|
|
444
465
|
});
|
|
445
466
|
const blockedReason = state.blockedReason ? `\nBlocked reason: ${state.blockedReason}` : "";
|
|
446
467
|
const requirementDetails = requirements.length > 0 ? `\n${requirements.join("\n")}` : "";
|
|
447
|
-
|
|
468
|
+
const tokenUsage = state.tokenBudget !== undefined
|
|
469
|
+
? `\nTokens: ${state.tokensUsed ?? 0}/${state.tokenBudget}`
|
|
470
|
+
: (state.tokensUsed ?? 0) > 0
|
|
471
|
+
? `\nTokens: ${state.tokensUsed ?? 0}`
|
|
472
|
+
: "";
|
|
473
|
+
return `Goal: ${state.userGoal}\nStatus: ${state.status}${blockedReason}${tokenUsage}\nRequirements: open ${snapshot.continuation.openRequirementIds.length}, blocked ${snapshot.continuation.blockedRequirementIds.length}, satisfied ${snapshot.continuation.satisfiedRequirementIds.length}${requirementDetails}\nContinuation: ${snapshot.continuation.action}/${snapshot.continuation.reasonCode}\nControls: /goal edit | /goal pause | /goal resume | /goal reopen <requirement-id> | /goal complete | /goal clear | /goal override <text>`;
|
|
448
474
|
}
|
|
449
475
|
export async function handleGoalCommand(host, text) {
|
|
450
476
|
const input = text.replace(/^\/goal\s*/, "").trim();
|
|
451
477
|
if (!input || input === "status") {
|
|
452
|
-
host.showStatus(formatGoalStatus(host.session.getGoalRuntimeSnapshot({ maxStallTurns: 20 })));
|
|
478
|
+
host.showStatus(formatGoalStatus(host.session.getGoalRuntimeSnapshot({ maxStallTurns: host.getMaxStallTurns?.() ?? 20 })));
|
|
453
479
|
return;
|
|
454
480
|
}
|
|
455
481
|
const now = new Date().toISOString();
|
|
@@ -463,24 +489,61 @@ export async function handleGoalCommand(host, text) {
|
|
|
463
489
|
host.showStatus("Goal resumed.");
|
|
464
490
|
return;
|
|
465
491
|
}
|
|
492
|
+
if (input === "pause") {
|
|
493
|
+
const paused = pausePersistedGoal(host.session, now);
|
|
494
|
+
if (!paused.ok) {
|
|
495
|
+
host.showError(paused.error);
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
host.showStatus("Goal paused.");
|
|
499
|
+
host.refreshAutonomyFooterStatus();
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
if (input === "edit" || input.startsWith("edit ")) {
|
|
503
|
+
const inlineObjective = input.slice("edit".length).trim();
|
|
504
|
+
const objective = inlineObjective || (current ? await host.promptForGoalEdit?.(current.userGoal) : undefined);
|
|
505
|
+
if (!objective) {
|
|
506
|
+
host.showError(current ? "Usage: /goal edit <objective>" : "No goal exists to edit.");
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
const edited = editPersistedGoal(host.session, { userGoal: objective }, now);
|
|
510
|
+
if (!edited.ok) {
|
|
511
|
+
host.showError(edited.error);
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
if (edited.state.status === "active")
|
|
515
|
+
host.session.restoreGoalRuntimeAfterResume();
|
|
516
|
+
host.showStatus("Goal updated.");
|
|
517
|
+
host.refreshAutonomyFooterStatus();
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
466
520
|
if (input === "complete") {
|
|
467
521
|
const completed = completeGoalManually(current, now);
|
|
468
522
|
if (!completed.ok) {
|
|
469
523
|
host.showError(completed.error);
|
|
470
524
|
return;
|
|
471
525
|
}
|
|
472
|
-
host.session.saveGoalStateSnapshot(completed.state);
|
|
526
|
+
host.session.saveGoalStateSnapshot(completed.state, current ? getGoalStateRevision(current) : undefined);
|
|
473
527
|
host.showStatus("Goal completed manually.");
|
|
474
528
|
host.refreshAutonomyFooterStatus();
|
|
475
529
|
return;
|
|
476
530
|
}
|
|
531
|
+
if (input === "clear") {
|
|
532
|
+
const cleared = clearPersistedGoal(host.session, now);
|
|
533
|
+
if (!cleared.ok) {
|
|
534
|
+
host.showError(cleared.error);
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
host.showStatus(cleared.cleared ? "Goal cleared." : "No goal exists to clear.");
|
|
538
|
+
host.refreshAutonomyFooterStatus();
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
477
541
|
if (input === "close" || input === "cancel") {
|
|
478
|
-
const cancelled =
|
|
542
|
+
const cancelled = cancelPersistedGoal(host.session, now);
|
|
479
543
|
if (!cancelled.ok) {
|
|
480
544
|
host.showError(cancelled.error);
|
|
481
545
|
return;
|
|
482
546
|
}
|
|
483
|
-
host.session.saveGoalStateSnapshot(cancelled.state);
|
|
484
547
|
host.showStatus("Goal closed.");
|
|
485
548
|
host.refreshAutonomyFooterStatus();
|
|
486
549
|
return;
|
|
@@ -504,7 +567,7 @@ export async function handleGoalCommand(host, text) {
|
|
|
504
567
|
}
|
|
505
568
|
let active = current;
|
|
506
569
|
if (active.status === "blocked") {
|
|
507
|
-
const resumed =
|
|
570
|
+
const resumed = resumeGoal(active, now);
|
|
508
571
|
if (!resumed.ok) {
|
|
509
572
|
host.showError(resumed.error);
|
|
510
573
|
return;
|
|
@@ -516,7 +579,9 @@ export async function handleGoalCommand(host, text) {
|
|
|
516
579
|
host.showError(reopened.error);
|
|
517
580
|
return;
|
|
518
581
|
}
|
|
519
|
-
host.session.saveGoalStateSnapshot(reopened.state);
|
|
582
|
+
host.session.saveGoalStateSnapshot(reopened.state, getGoalStateRevision(current));
|
|
583
|
+
if (reopened.state.status === "active")
|
|
584
|
+
host.session.restoreGoalRuntimeAfterResume();
|
|
520
585
|
host.showStatus(`Requirement '${requirementId}' reopened${current.status === "blocked" ? " and goal resumed" : ""}.`);
|
|
521
586
|
host.refreshAutonomyFooterStatus();
|
|
522
587
|
return;
|
|
@@ -527,40 +592,26 @@ export async function handleGoalCommand(host, text) {
|
|
|
527
592
|
host.showError("Usage: /goal override <text>");
|
|
528
593
|
return;
|
|
529
594
|
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
host.showError(cancelled.error);
|
|
535
|
-
return;
|
|
536
|
-
}
|
|
537
|
-
startFrom = cancelled.state;
|
|
538
|
-
host.session.saveGoalStateSnapshot(startFrom);
|
|
539
|
-
}
|
|
540
|
-
const goalId = `goal-${Date.now().toString(36)}`;
|
|
541
|
-
const started = applyGoalAction(startFrom, { action: "start", goalId, userGoal: goalText }, now);
|
|
595
|
+
const goalId = `goal-${randomUUID()}`;
|
|
596
|
+
const started = overriding
|
|
597
|
+
? replaceGoal({ goalId, userGoal: goalText }, now)
|
|
598
|
+
: applyGoalAction(current, { action: "start", goalId, userGoal: goalText }, now);
|
|
542
599
|
if (!started.ok) {
|
|
543
600
|
host.showError(`${started.error} Use /goal override <text> to replace it explicitly.`);
|
|
544
601
|
return;
|
|
545
602
|
}
|
|
546
|
-
host.session.saveGoalStateSnapshot(started.state);
|
|
547
|
-
// Deterministic producer completion: a goal with zero open requirements evaluates to
|
|
548
|
-
// finalize/no_open_requirements, so the loop would be undrivable whenever the model skips
|
|
549
|
-
// decomposition (observed in the field). Seed one requirement from the goal text itself —
|
|
550
|
-
// the model's decomposition below refines alongside it.
|
|
551
|
-
const seeded = applyGoalAction(started.state, { action: "add_requirement", requirementId: `${goalId}-r1`, text: goalText }, now);
|
|
552
|
-
if (seeded.ok) {
|
|
553
|
-
host.session.saveGoalStateSnapshot(seeded.state);
|
|
554
|
-
}
|
|
555
|
-
await host.session.sendUserMessage(`Start goal: ${goalText}\n\nUse the goal tool this turn to decompose this goal into concrete open requirements with add_requirement actions, and satisfy_requirement ${goalId}-r1 once the decomposed requirements cover it.`);
|
|
603
|
+
host.session.saveGoalStateSnapshot(started.state, current ? getGoalStateRevision(current) : undefined);
|
|
556
604
|
const verb = overriding ? "overridden" : "started";
|
|
557
605
|
try {
|
|
558
|
-
|
|
606
|
+
// Submit one bootstrap pass, then yield to the event-driven idle scheduler. This is a scheduling
|
|
607
|
+
// quantum, not a goal ceiling: an active goal is immediately rearmed and the configured goal turn
|
|
608
|
+
// limit (unbounded by default) governs subsequent continuation.
|
|
609
|
+
const result = await host.session.continueGoalLoop({
|
|
610
|
+
maxTurns: 1,
|
|
611
|
+
maxStallTurns: host.getMaxStallTurns?.() ?? 20,
|
|
612
|
+
maxWallClockMinutes: 0,
|
|
613
|
+
});
|
|
559
614
|
if (result.stopReason === "already_continuing") {
|
|
560
|
-
// The idle autosteer timer armed by `sendUserMessage` above already won the single-flight
|
|
561
|
-
// guard (`BackgroundLaneController.continueGoalLoopExclusive`) — this request never ran a
|
|
562
|
-
// pass, so reporting `finalSnapshot.continuation` here would misleadingly imply a fresh
|
|
563
|
-
// decision was made.
|
|
564
615
|
host.showStatus(`Goal ${verb}: the autonomy loop is already continuing this goal.`);
|
|
565
616
|
}
|
|
566
617
|
else if (result.stopReason === "session_disposed") {
|
|
@@ -569,6 +620,8 @@ export async function handleGoalCommand(host, text) {
|
|
|
569
620
|
else {
|
|
570
621
|
const continuation = result.finalSnapshot.continuation;
|
|
571
622
|
host.showStatus(`Goal ${verb}: ${continuation.action}/${continuation.reasonCode}.`);
|
|
623
|
+
if (continuation.action === "continue")
|
|
624
|
+
host.session.restoreGoalRuntimeAfterResume();
|
|
572
625
|
}
|
|
573
626
|
}
|
|
574
627
|
catch (error) {
|
|
@@ -625,7 +678,7 @@ export async function handleGoalContinueCommand(host, text) {
|
|
|
625
678
|
host.showError(parsed.error);
|
|
626
679
|
return;
|
|
627
680
|
}
|
|
628
|
-
host.showStatus(`Goal continuation started: up to ${parsed.maxTurns} turn(s), stall limit ${parsed.maxStallTurns}, wall-clock limit ${parsed.maxWallClockMinutes || "disabled"} minute(s).`);
|
|
681
|
+
host.showStatus(`Goal continuation started: ${parsed.maxTurns === 0 ? "unbounded turns" : `up to ${parsed.maxTurns} turn(s)`}, stall limit ${parsed.maxStallTurns}, wall-clock limit ${parsed.maxWallClockMinutes || "disabled"} minute(s).`);
|
|
629
682
|
try {
|
|
630
683
|
const result = await host.session.continueGoalLoop({
|
|
631
684
|
maxTurns: parsed.maxTurns,
|