qlogicagent 2.13.5 → 2.13.6
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/dist/cli.js +303 -304
- package/dist/index.js +1268 -15
- package/dist/permissions.js +1 -1
- package/dist/pet-contracts.js +1 -1
- package/dist/types/cli/community-skill-installer.d.ts +2 -0
- package/dist/types/cli/handlers/community-handler.d.ts +6 -0
- package/dist/types/cli/runtime-dependency-catalog.d.ts +38 -12
- package/dist/types/cli/skills-query-service.d.ts +4 -0
- package/dist/types/config/cn-mirror.d.ts +23 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/protocol/methods.d.ts +27 -3
- package/dist/types/runtime/community/community-consent-client.d.ts +58 -1
- package/dist/types/runtime/community/community-telemetry-types.d.ts +1 -1
- package/dist/types/runtime/community/package-materialize.d.ts +19 -0
- package/dist/types/runtime/community/ranged-download.d.ts +15 -0
- package/dist/types/runtime/community/registry-signature.d.ts +41 -0
- package/dist/types/runtime/infra/llmrouter-catalog.d.ts +3 -3
- package/dist/types/runtime/infra/model-registry.d.ts +17 -2
- package/dist/types/runtime/pet/pet-community-assets.d.ts +14 -1
- package/package.json +110 -110
- package/dist/agent/agent.d.ts +0 -48
- package/dist/agent/agent.js +0 -197
- package/dist/agent/memory-recall-context.d.ts +0 -18
- package/dist/agent/memory-recall-context.js +0 -139
- package/dist/agent/memory-recall-context.test.d.ts +0 -1
- package/dist/agent/memory-recall-context.test.js +0 -58
- package/dist/agent/memory-recall-injection.d.ts +0 -34
- package/dist/agent/memory-recall-injection.js +0 -66
- package/dist/agent/runtime-vars.d.ts +0 -48
- package/dist/agent/runtime-vars.js +0 -54
- package/dist/agent/tool-access.d.ts +0 -1
- package/dist/agent/tool-access.js +0 -1
- package/dist/agent/tool-loop/artifact-events.d.ts +0 -17
- package/dist/agent/tool-loop/artifact-events.js +0 -75
- package/dist/agent/tool-loop/budget-continuation-policy.d.ts +0 -22
- package/dist/agent/tool-loop/budget-continuation-policy.js +0 -44
- package/dist/agent/tool-loop/completion-action-policy.d.ts +0 -19
- package/dist/agent/tool-loop/completion-action-policy.js +0 -68
- package/dist/agent/tool-loop/completion-action-policy.test.d.ts +0 -1
- package/dist/agent/tool-loop/completion-action-policy.test.js +0 -77
- package/dist/agent/tool-loop/completion-stop-policy.d.ts +0 -19
- package/dist/agent/tool-loop/completion-stop-policy.js +0 -31
- package/dist/agent/tool-loop/compression-pipeline.d.ts +0 -44
- package/dist/agent/tool-loop/compression-pipeline.js +0 -68
- package/dist/agent/tool-loop/loop-helpers.d.ts +0 -15
- package/dist/agent/tool-loop/loop-helpers.js +0 -86
- package/dist/agent/tool-loop/recovery-helpers.d.ts +0 -18
- package/dist/agent/tool-loop/recovery-helpers.js +0 -42
- package/dist/agent/tool-loop/single-round.d.ts +0 -2
- package/dist/agent/tool-loop/single-round.js +0 -43
- package/dist/agent/tool-loop/skill-instruction-policy.d.ts +0 -7
- package/dist/agent/tool-loop/skill-instruction-policy.js +0 -18
- package/dist/agent/tool-loop/stream-error-recovery.d.ts +0 -59
- package/dist/agent/tool-loop/stream-error-recovery.js +0 -93
- package/dist/agent/tool-loop/tool-failure-policy.d.ts +0 -22
- package/dist/agent/tool-loop/tool-failure-policy.js +0 -46
- package/dist/agent/tool-loop/tool-result-events.d.ts +0 -11
- package/dist/agent/tool-loop/tool-result-events.js +0 -59
- package/dist/agent/tool-loop/tool-result-events.test.d.ts +0 -1
- package/dist/agent/tool-loop/tool-result-events.test.js +0 -30
- package/dist/agent/tool-loop.contract.test.d.ts +0 -1
- package/dist/agent/tool-loop.contract.test.js +0 -254
- package/dist/agent/tool-loop.d.ts +0 -121
- package/dist/agent/tool-loop.js +0 -1017
- package/dist/agent/tool-loop.policy-architecture.test.d.ts +0 -1
- package/dist/agent/tool-loop.policy-architecture.test.js +0 -21
- package/dist/agent/tool-loop.states.test.d.ts +0 -1
- package/dist/agent/tool-loop.states.test.js +0 -211
- package/dist/agent/tunable-defaults.d.ts +0 -1
- package/dist/agent/tunable-defaults.js +0 -1
- package/dist/agent/types.d.ts +0 -311
- package/dist/agent/types.js +0 -8
- package/dist/cli/acp-commands.d.ts +0 -32
- package/dist/cli/acp-commands.js +0 -145
- package/dist/cli/acp-commands.test.d.ts +0 -1
- package/dist/cli/acp-commands.test.js +0 -89
- package/dist/cli/acp-extended-handlers.d.ts +0 -69
- package/dist/cli/acp-extended-handlers.js +0 -484
- package/dist/cli/acp-extended-handlers.product-confirm.test.d.ts +0 -1
- package/dist/cli/acp-extended-handlers.product-confirm.test.js +0 -56
- package/dist/cli/acp-extended-handlers.product-project.test.d.ts +0 -1
- package/dist/cli/acp-extended-handlers.product-project.test.js +0 -66
- package/dist/cli/acp-extended-handlers.solo-project.test.d.ts +0 -1
- package/dist/cli/acp-extended-handlers.solo-project.test.js +0 -51
- package/dist/cli/acp-extended-handlers.specchat.test.d.ts +0 -1
- package/dist/cli/acp-extended-handlers.specchat.test.js +0 -62
- package/dist/cli/acp-extended-handlers.workflowchat.test.d.ts +0 -1
- package/dist/cli/acp-extended-handlers.workflowchat.test.js +0 -49
- package/dist/cli/acp-extended-host-adapter.d.ts +0 -29
- package/dist/cli/acp-extended-host-adapter.js +0 -40
- package/dist/cli/acp-extended-host-adapter.test.d.ts +0 -1
- package/dist/cli/acp-extended-host-adapter.test.js +0 -63
- package/dist/cli/acp-message-router.d.ts +0 -8
- package/dist/cli/acp-message-router.js +0 -40
- package/dist/cli/acp-message-router.test.d.ts +0 -1
- package/dist/cli/acp-message-router.test.js +0 -30
- package/dist/cli/acp-session-handlers.d.ts +0 -41
- package/dist/cli/acp-session-handlers.js +0 -304
- package/dist/cli/acp-session-handlers.test.d.ts +0 -1
- package/dist/cli/acp-session-handlers.test.js +0 -346
- package/dist/cli/acp-session-host.d.ts +0 -48
- package/dist/cli/acp-session-host.js +0 -1
- package/dist/cli/agent-config-coordinator.d.ts +0 -16
- package/dist/cli/agent-config-coordinator.js +0 -56
- package/dist/cli/agent-config-coordinator.test.d.ts +0 -1
- package/dist/cli/agent-config-coordinator.test.js +0 -51
- package/dist/cli/agent-config-runtime.d.ts +0 -11
- package/dist/cli/agent-config-runtime.js +0 -4
- package/dist/cli/agent-runner-factory.d.ts +0 -2
- package/dist/cli/agent-runner-factory.js +0 -11
- package/dist/cli/agent-runtime-bootstrap.d.ts +0 -67
- package/dist/cli/agent-runtime-bootstrap.js +0 -104
- package/dist/cli/agent-runtime-ports-adapter.d.ts +0 -2
- package/dist/cli/agent-runtime-ports-adapter.js +0 -22
- package/dist/cli/agent-runtime-session-state.d.ts +0 -24
- package/dist/cli/agent-runtime-session-state.js +0 -51
- package/dist/cli/agent-status-notifier.d.ts +0 -11
- package/dist/cli/agent-status-notifier.js +0 -26
- package/dist/cli/agent-status-notifier.test.d.ts +0 -1
- package/dist/cli/agent-status-notifier.test.js +0 -33
- package/dist/cli/base-tool-bootstrap.d.ts +0 -16
- package/dist/cli/base-tool-bootstrap.js +0 -20
- package/dist/cli/cli-acp-request-handler.d.ts +0 -11
- package/dist/cli/cli-acp-request-handler.js +0 -61
- package/dist/cli/cli-acp-request-handler.test.d.ts +0 -1
- package/dist/cli/cli-acp-request-handler.test.js +0 -58
- package/dist/cli/cli-agent-builder.d.ts +0 -35
- package/dist/cli/cli-agent-builder.js +0 -33
- package/dist/cli/community-resource-installer.d.ts +0 -30
- package/dist/cli/community-resource-installer.js +0 -66
- package/dist/cli/community-resource-installer.test.d.ts +0 -1
- package/dist/cli/community-resource-installer.test.js +0 -175
- package/dist/cli/community-skill-installer.d.ts +0 -12
- package/dist/cli/community-skill-installer.js +0 -220
- package/dist/cli/community-skill-installer.test.d.ts +0 -1
- package/dist/cli/community-skill-installer.test.js +0 -179
- package/dist/cli/community-workflow-installer.d.ts +0 -29
- package/dist/cli/community-workflow-installer.js +0 -69
- package/dist/cli/conversation-context.d.ts +0 -30
- package/dist/cli/conversation-context.js +0 -69
- package/dist/cli/conversation-context.test.d.ts +0 -1
- package/dist/cli/conversation-context.test.js +0 -61
- package/dist/cli/core-tool-coordinator.d.ts +0 -41
- package/dist/cli/core-tool-coordinator.js +0 -55
- package/dist/cli/core-tools/agent-tool-bootstrap.d.ts +0 -12
- package/dist/cli/core-tools/agent-tool-bootstrap.js +0 -5
- package/dist/cli/core-tools/agent-tool-service.background.test.d.ts +0 -1
- package/dist/cli/core-tools/agent-tool-service.background.test.js +0 -212
- package/dist/cli/core-tools/agent-tool-service.d.ts +0 -36
- package/dist/cli/core-tools/agent-tool-service.js +0 -152
- package/dist/cli/core-tools/checkpoint-tool-bootstrap.d.ts +0 -9
- package/dist/cli/core-tools/checkpoint-tool-bootstrap.js +0 -8
- package/dist/cli/core-tools/checkpoint-tool-service.d.ts +0 -7
- package/dist/cli/core-tools/checkpoint-tool-service.js +0 -5
- package/dist/cli/core-tools/config-tool-bootstrap.d.ts +0 -5
- package/dist/cli/core-tools/config-tool-bootstrap.js +0 -5
- package/dist/cli/core-tools/config-tool-service.d.ts +0 -11
- package/dist/cli/core-tools/config-tool-service.js +0 -86
- package/dist/cli/core-tools/config-tool-service.test.d.ts +0 -1
- package/dist/cli/core-tools/config-tool-service.test.js +0 -69
- package/dist/cli/core-tools/cron-tool-bootstrap.d.ts +0 -8
- package/dist/cli/core-tools/cron-tool-bootstrap.js +0 -8
- package/dist/cli/core-tools/cron-workflow-service.d.ts +0 -7
- package/dist/cli/core-tools/cron-workflow-service.js +0 -206
- package/dist/cli/core-tools/cron-workflow-service.test.d.ts +0 -1
- package/dist/cli/core-tools/cron-workflow-service.test.js +0 -78
- package/dist/cli/core-tools/fork-system-prompt.d.ts +0 -45
- package/dist/cli/core-tools/fork-system-prompt.js +0 -66
- package/dist/cli/core-tools/fork-system-prompt.test.d.ts +0 -1
- package/dist/cli/core-tools/fork-system-prompt.test.js +0 -77
- package/dist/cli/core-tools/monitor-tool-bootstrap.d.ts +0 -7
- package/dist/cli/core-tools/monitor-tool-bootstrap.js +0 -8
- package/dist/cli/core-tools/monitor-tool-service.d.ts +0 -6
- package/dist/cli/core-tools/monitor-tool-service.js +0 -74
- package/dist/cli/core-tools/registry.d.ts +0 -8
- package/dist/cli/core-tools/registry.js +0 -60
- package/dist/cli/core-tools/session-tool-manifest.d.ts +0 -12
- package/dist/cli/core-tools/session-tool-manifest.js +0 -19
- package/dist/cli/core-tools/team-registry.d.ts +0 -62
- package/dist/cli/core-tools/team-registry.js +0 -85
- package/dist/cli/core-tools/team-registry.test.d.ts +0 -1
- package/dist/cli/core-tools/team-registry.test.js +0 -79
- package/dist/cli/core-tools/team-tool-bootstrap.d.ts +0 -11
- package/dist/cli/core-tools/team-tool-bootstrap.js +0 -8
- package/dist/cli/core-tools/team-tool-service.d.ts +0 -43
- package/dist/cli/core-tools/team-tool-service.js +0 -326
- package/dist/cli/core-tools/team-tool-service.test.d.ts +0 -1
- package/dist/cli/core-tools/team-tool-service.test.js +0 -48
- package/dist/cli/credential-vault.d.ts +0 -62
- package/dist/cli/credential-vault.js +0 -190
- package/dist/cli/credential-vault.test.d.ts +0 -6
- package/dist/cli/credential-vault.test.js +0 -130
- package/dist/cli/default-project-bootstrap.d.ts +0 -8
- package/dist/cli/default-project-bootstrap.js +0 -39
- package/dist/cli/dev-tool-bootstrap.d.ts +0 -8
- package/dist/cli/dev-tool-bootstrap.js +0 -19
- package/dist/cli/dev-tools/dev-tool-bootstrap-service.d.ts +0 -6
- package/dist/cli/dev-tools/dev-tool-bootstrap-service.js +0 -6
- package/dist/cli/dev-tools/dev-tool-registry.d.ts +0 -6
- package/dist/cli/dev-tools/dev-tool-registry.js +0 -7
- package/dist/cli/dev-tools/lsp-tool-service.d.ts +0 -5
- package/dist/cli/dev-tools/lsp-tool-service.js +0 -30
- package/dist/cli/dev-tools/lsp-tool-service.test.d.ts +0 -1
- package/dist/cli/dev-tools/lsp-tool-service.test.js +0 -14
- package/dist/cli/dream-host-adapter.d.ts +0 -23
- package/dist/cli/dream-host-adapter.js +0 -33
- package/dist/cli/gateway-rpc-connection.d.ts +0 -50
- package/dist/cli/gateway-rpc-connection.js +0 -133
- package/dist/cli/handlers/agents-handler.d.ts +0 -51
- package/dist/cli/handlers/agents-handler.js +0 -769
- package/dist/cli/handlers/community-handler.d.ts +0 -39
- package/dist/cli/handlers/community-handler.js +0 -671
- package/dist/cli/handlers/community-handler.test.d.ts +0 -1
- package/dist/cli/handlers/community-handler.test.js +0 -1602
- package/dist/cli/handlers/config-handler.d.ts +0 -28
- package/dist/cli/handlers/config-handler.js +0 -438
- package/dist/cli/handlers/config-handler.test.d.ts +0 -1
- package/dist/cli/handlers/config-handler.test.js +0 -140
- package/dist/cli/handlers/config-handler.tools-list.test.d.ts +0 -1
- package/dist/cli/handlers/config-handler.tools-list.test.js +0 -93
- package/dist/cli/handlers/control-handler.d.ts +0 -23
- package/dist/cli/handlers/control-handler.js +0 -88
- package/dist/cli/handlers/dream-handler.d.ts +0 -31
- package/dist/cli/handlers/dream-handler.js +0 -235
- package/dist/cli/handlers/files-handler.d.ts +0 -22
- package/dist/cli/handlers/files-handler.instructions.test.d.ts +0 -1
- package/dist/cli/handlers/files-handler.instructions.test.js +0 -127
- package/dist/cli/handlers/files-handler.js +0 -593
- package/dist/cli/handlers/media-handler.d.ts +0 -19
- package/dist/cli/handlers/media-handler.js +0 -212
- package/dist/cli/handlers/media-handler.test.d.ts +0 -1
- package/dist/cli/handlers/media-handler.test.js +0 -107
- package/dist/cli/handlers/memory-handler.d.ts +0 -61
- package/dist/cli/handlers/memory-handler.js +0 -792
- package/dist/cli/handlers/pet-confirm-handler.d.ts +0 -7
- package/dist/cli/handlers/pet-confirm-handler.js +0 -6
- package/dist/cli/handlers/pet-handler.d.ts +0 -47
- package/dist/cli/handlers/pet-handler.js +0 -455
- package/dist/cli/handlers/pet-handler.test.d.ts +0 -1
- package/dist/cli/handlers/pet-handler.test.js +0 -620
- package/dist/cli/handlers/product-handler.d.ts +0 -37
- package/dist/cli/handlers/product-handler.js +0 -393
- package/dist/cli/handlers/project-handler.d.ts +0 -28
- package/dist/cli/handlers/project-handler.js +0 -421
- package/dist/cli/handlers/session-handler.channel.test.d.ts +0 -1
- package/dist/cli/handlers/session-handler.channel.test.js +0 -157
- package/dist/cli/handlers/session-handler.d.ts +0 -58
- package/dist/cli/handlers/session-handler.delete.test.d.ts +0 -1
- package/dist/cli/handlers/session-handler.delete.test.js +0 -38
- package/dist/cli/handlers/session-handler.js +0 -833
- package/dist/cli/handlers/session-handler.resume.test.d.ts +0 -1
- package/dist/cli/handlers/session-handler.resume.test.js +0 -66
- package/dist/cli/handlers/settings-handler.d.ts +0 -19
- package/dist/cli/handlers/settings-handler.js +0 -710
- package/dist/cli/handlers/settings-handler.remote-catalog.test.d.ts +0 -1
- package/dist/cli/handlers/settings-handler.remote-catalog.test.js +0 -1247
- package/dist/cli/handlers/skills-handler.d.ts +0 -29
- package/dist/cli/handlers/skills-handler.js +0 -368
- package/dist/cli/handlers/skills-handler.profile.test.d.ts +0 -1
- package/dist/cli/handlers/skills-handler.profile.test.js +0 -70
- package/dist/cli/handlers/solo-handler.d.ts +0 -38
- package/dist/cli/handlers/solo-handler.js +0 -351
- package/dist/cli/handlers/turn-handler.d.ts +0 -52
- package/dist/cli/handlers/turn-handler.js +0 -574
- package/dist/cli/handlers/turn-handler.test.d.ts +0 -1
- package/dist/cli/handlers/turn-handler.test.js +0 -22
- package/dist/cli/handlers/workflow-handler.d.ts +0 -181
- package/dist/cli/handlers/workflow-handler.events.test.d.ts +0 -1
- package/dist/cli/handlers/workflow-handler.events.test.js +0 -113
- package/dist/cli/handlers/workflow-handler.js +0 -1449
- package/dist/cli/handlers/workflow-handler.multiroot.test.d.ts +0 -12
- package/dist/cli/handlers/workflow-handler.multiroot.test.js +0 -745
- package/dist/cli/idle-dream-coordinator.d.ts +0 -47
- package/dist/cli/idle-dream-coordinator.js +0 -126
- package/dist/cli/idle-dream-coordinator.test.d.ts +0 -1
- package/dist/cli/idle-dream-coordinator.test.js +0 -125
- package/dist/cli/main.d.ts +0 -15
- package/dist/cli/main.js +0 -112
- package/dist/cli/mcp-bootstrap.d.ts +0 -20
- package/dist/cli/mcp-bootstrap.js +0 -66
- package/dist/cli/mcp-plugin-bootstrap.d.ts +0 -2
- package/dist/cli/mcp-plugin-bootstrap.js +0 -2
- package/dist/cli/mcp-plugin-bootstrap.test.d.ts +0 -1
- package/dist/cli/mcp-plugin-bootstrap.test.js +0 -38
- package/dist/cli/mcp-tool-proxy.d.ts +0 -7
- package/dist/cli/mcp-tool-proxy.js +0 -15
- package/dist/cli/media-capability-schema.d.ts +0 -49
- package/dist/cli/media-capability-schema.js +0 -384
- package/dist/cli/media-capability-schema.test.d.ts +0 -1
- package/dist/cli/media-capability-schema.test.js +0 -103
- package/dist/cli/media-file-api-service.d.ts +0 -73
- package/dist/cli/media-file-api-service.js +0 -143
- package/dist/cli/media-file-api-service.test.d.ts +0 -1
- package/dist/cli/media-file-api-service.test.js +0 -119
- package/dist/cli/media-file-tool-service.d.ts +0 -13
- package/dist/cli/media-file-tool-service.js +0 -63
- package/dist/cli/media-runtime-capability.test.d.ts +0 -1
- package/dist/cli/media-runtime-capability.test.js +0 -106
- package/dist/cli/media-runtime-facade.d.ts +0 -51
- package/dist/cli/media-runtime-facade.js +0 -389
- package/dist/cli/media-runtime-facade.test.d.ts +0 -1
- package/dist/cli/media-runtime-facade.test.js +0 -42
- package/dist/cli/memory-candidate-service.d.ts +0 -83
- package/dist/cli/memory-candidate-service.js +0 -341
- package/dist/cli/memory-coordinator.d.ts +0 -37
- package/dist/cli/memory-coordinator.js +0 -85
- package/dist/cli/memory-coordinator.test.d.ts +0 -1
- package/dist/cli/memory-coordinator.test.js +0 -78
- package/dist/cli/memory-multimodal.test.d.ts +0 -1
- package/dist/cli/memory-multimodal.test.js +0 -137
- package/dist/cli/model-client-resolver.d.ts +0 -31
- package/dist/cli/model-client-resolver.js +0 -173
- package/dist/cli/model-client-resolver.test.d.ts +0 -1
- package/dist/cli/model-client-resolver.test.js +0 -105
- package/dist/cli/multi-agent-handler-host.d.ts +0 -27
- package/dist/cli/multi-agent-handler-host.js +0 -55
- package/dist/cli/multi-agent-handler-host.test.d.ts +0 -1
- package/dist/cli/multi-agent-handler-host.test.js +0 -63
- package/dist/cli/multi-agent-state-coordinator.d.ts +0 -11
- package/dist/cli/multi-agent-state-coordinator.js +0 -7
- package/dist/cli/permission-approval-bridge.d.ts +0 -15
- package/dist/cli/permission-approval-bridge.js +0 -66
- package/dist/cli/permission-approval-bridge.test.d.ts +0 -1
- package/dist/cli/permission-approval-bridge.test.js +0 -100
- package/dist/cli/permission-bootstrap.d.ts +0 -40
- package/dist/cli/permission-bootstrap.js +0 -58
- package/dist/cli/permission-bootstrap.test.d.ts +0 -1
- package/dist/cli/permission-bootstrap.test.js +0 -129
- package/dist/cli/permission-runtime-service.d.ts +0 -9
- package/dist/cli/permission-runtime-service.js +0 -11
- package/dist/cli/permission-settings-store.d.ts +0 -1
- package/dist/cli/permission-settings-store.js +0 -3
- package/dist/cli/permission-settings-store.test.d.ts +0 -1
- package/dist/cli/permission-settings-store.test.js +0 -65
- package/dist/cli/pet-confirm-coordinator.d.ts +0 -20
- package/dist/cli/pet-confirm-coordinator.js +0 -32
- package/dist/cli/pet-confirm-coordinator.test.d.ts +0 -1
- package/dist/cli/pet-confirm-coordinator.test.js +0 -34
- package/dist/cli/pet-runtime.d.ts +0 -55
- package/dist/cli/pet-runtime.js +0 -220
- package/dist/cli/pet-runtime.test.d.ts +0 -1
- package/dist/cli/pet-runtime.test.js +0 -46
- package/dist/cli/plugin-bootstrap.d.ts +0 -15
- package/dist/cli/plugin-bootstrap.js +0 -63
- package/dist/cli/product-coordinator.d.ts +0 -34
- package/dist/cli/product-coordinator.js +0 -124
- package/dist/cli/product-coordinator.test.d.ts +0 -1
- package/dist/cli/product-coordinator.test.js +0 -51
- package/dist/cli/project-command-service.d.ts +0 -28
- package/dist/cli/project-command-service.js +0 -99
- package/dist/cli/project-context.d.ts +0 -1
- package/dist/cli/project-context.js +0 -4
- package/dist/cli/project-memory-store-factory.d.ts +0 -2
- package/dist/cli/project-memory-store-factory.js +0 -11
- package/dist/cli/project-template-seeder.d.ts +0 -5
- package/dist/cli/project-template-seeder.js +0 -43
- package/dist/cli/provider-core-facade.d.ts +0 -31
- package/dist/cli/provider-core-facade.js +0 -51
- package/dist/cli/provider-core-facade.test.d.ts +0 -1
- package/dist/cli/provider-core-facade.test.js +0 -9
- package/dist/cli/resolved-agent-cache.d.ts +0 -47
- package/dist/cli/resolved-agent-cache.js +0 -38
- package/dist/cli/rpc-registry.community.test.d.ts +0 -1
- package/dist/cli/rpc-registry.community.test.js +0 -45
- package/dist/cli/rpc-registry.d.ts +0 -62
- package/dist/cli/rpc-registry.js +0 -243
- package/dist/cli/runtime-dependency-catalog.d.ts +0 -56
- package/dist/cli/runtime-dependency-catalog.js +0 -110
- package/dist/cli/runtime-hook-bootstrap.d.ts +0 -38
- package/dist/cli/runtime-hook-bootstrap.js +0 -71
- package/dist/cli/runtime-watcher-bootstrap.d.ts +0 -15
- package/dist/cli/runtime-watcher-bootstrap.js +0 -30
- package/dist/cli/session-context.d.ts +0 -32
- package/dist/cli/session-context.js +0 -15
- package/dist/cli/session-coordinator.d.ts +0 -22
- package/dist/cli/session-coordinator.js +0 -47
- package/dist/cli/session-coordinator.test.d.ts +0 -1
- package/dist/cli/session-coordinator.test.js +0 -61
- package/dist/cli/session-history-coordinator.d.ts +0 -8
- package/dist/cli/session-history-coordinator.js +0 -57
- package/dist/cli/session-history-coordinator.test.d.ts +0 -1
- package/dist/cli/session-history-coordinator.test.js +0 -39
- package/dist/cli/session-query-service.d.ts +0 -24
- package/dist/cli/session-query-service.js +0 -57
- package/dist/cli/skill-meta-subturn-service.d.ts +0 -26
- package/dist/cli/skill-meta-subturn-service.js +0 -93
- package/dist/cli/skill-meta-tool-bootstrap.d.ts +0 -34
- package/dist/cli/skill-meta-tool-bootstrap.js +0 -295
- package/dist/cli/skill-meta-tool-bootstrap.test.d.ts +0 -1
- package/dist/cli/skill-meta-tool-bootstrap.test.js +0 -42
- package/dist/cli/skill-supporting-file.test.d.ts +0 -1
- package/dist/cli/skill-supporting-file.test.js +0 -97
- package/dist/cli/skills-query-service.d.ts +0 -29
- package/dist/cli/skills-query-service.js +0 -38
- package/dist/cli/stdio-acp-protocol-coordinator.d.ts +0 -18
- package/dist/cli/stdio-acp-protocol-coordinator.js +0 -33
- package/dist/cli/stdio-acp-request-host.d.ts +0 -28
- package/dist/cli/stdio-acp-request-host.js +0 -82
- package/dist/cli/stdio-acp-request-host.test.d.ts +0 -1
- package/dist/cli/stdio-acp-request-host.test.js +0 -61
- package/dist/cli/stdio-agent-session-bootstrap.d.ts +0 -80
- package/dist/cli/stdio-agent-session-bootstrap.js +0 -74
- package/dist/cli/stdio-rpc-handler-hosts.d.ts +0 -50
- package/dist/cli/stdio-rpc-handler-hosts.js +0 -135
- package/dist/cli/stdio-rpc-handler-hosts.test.d.ts +0 -1
- package/dist/cli/stdio-rpc-handler-hosts.test.js +0 -10
- package/dist/cli/stdio-runtime-bootstrap.d.ts +0 -16
- package/dist/cli/stdio-runtime-bootstrap.js +0 -17
- package/dist/cli/stdio-runtime-services.d.ts +0 -36
- package/dist/cli/stdio-runtime-services.js +0 -53
- package/dist/cli/stdio-server.architecture.test.d.ts +0 -1
- package/dist/cli/stdio-server.architecture.test.js +0 -18
- package/dist/cli/stdio-server.contract.test.d.ts +0 -1
- package/dist/cli/stdio-server.contract.test.js +0 -96
- package/dist/cli/stdio-server.d.ts +0 -211
- package/dist/cli/stdio-server.js +0 -731
- package/dist/cli/stdio-session-runtime-coordinator.d.ts +0 -19
- package/dist/cli/stdio-session-runtime-coordinator.js +0 -21
- package/dist/cli/test-support/tool-catalog-fixture.d.ts +0 -3
- package/dist/cli/test-support/tool-catalog-fixture.js +0 -98
- package/dist/cli/tool-bootstrap-core-registration.d.ts +0 -30
- package/dist/cli/tool-bootstrap-core-registration.js +0 -555
- package/dist/cli/tool-bootstrap-media-registration.d.ts +0 -8
- package/dist/cli/tool-bootstrap-media-registration.js +0 -348
- package/dist/cli/tool-bootstrap-paths.d.ts +0 -7
- package/dist/cli/tool-bootstrap-paths.js +0 -17
- package/dist/cli/tool-bootstrap-providers.d.ts +0 -3
- package/dist/cli/tool-bootstrap-providers.js +0 -10
- package/dist/cli/tool-bootstrap-web-registration.d.ts +0 -13
- package/dist/cli/tool-bootstrap-web-registration.js +0 -144
- package/dist/cli/tool-bootstrap-workflow-registration.d.ts +0 -7
- package/dist/cli/tool-bootstrap-workflow-registration.js +0 -65
- package/dist/cli/tool-bootstrap.background-exec.test.d.ts +0 -1
- package/dist/cli/tool-bootstrap.background-exec.test.js +0 -83
- package/dist/cli/tool-bootstrap.cwd.test.d.ts +0 -1
- package/dist/cli/tool-bootstrap.cwd.test.js +0 -37
- package/dist/cli/tool-bootstrap.d.ts +0 -63
- package/dist/cli/tool-bootstrap.instructions.test.d.ts +0 -1
- package/dist/cli/tool-bootstrap.instructions.test.js +0 -37
- package/dist/cli/tool-bootstrap.js +0 -255
- package/dist/cli/tool-bootstrap.media-provider-alias.test.d.ts +0 -1
- package/dist/cli/tool-bootstrap.media-provider-alias.test.js +0 -90
- package/dist/cli/tool-bootstrap.test.d.ts +0 -1
- package/dist/cli/tool-bootstrap.test.js +0 -94
- package/dist/cli/tool-catalog.d.ts +0 -4
- package/dist/cli/tool-catalog.js +0 -14
- package/dist/cli/tool-invoker-factory.d.ts +0 -12
- package/dist/cli/tool-invoker-factory.js +0 -45
- package/dist/cli/tool-registration-modules.contract.test.d.ts +0 -1
- package/dist/cli/tool-registration-modules.contract.test.js +0 -75
- package/dist/cli/tool-registry-adapter.d.ts +0 -5
- package/dist/cli/tool-registry-adapter.js +0 -27
- package/dist/cli/tool-result-processor.d.ts +0 -14
- package/dist/cli/tool-result-processor.js +0 -83
- package/dist/cli/tool-result-processor.test.d.ts +0 -1
- package/dist/cli/tool-result-processor.test.js +0 -69
- package/dist/cli/transport.d.ts +0 -30
- package/dist/cli/transport.js +0 -68
- package/dist/cli/tunable-store.d.ts +0 -26
- package/dist/cli/tunable-store.js +0 -105
- package/dist/cli/turn-ask-user-setup.d.ts +0 -24
- package/dist/cli/turn-ask-user-setup.js +0 -46
- package/dist/cli/turn-ask-user-setup.test.d.ts +0 -1
- package/dist/cli/turn-ask-user-setup.test.js +0 -39
- package/dist/cli/turn-core.d.ts +0 -57
- package/dist/cli/turn-core.js +0 -58
- package/dist/cli/turn-event-forwarder.d.ts +0 -10
- package/dist/cli/turn-event-forwarder.js +0 -136
- package/dist/cli/turn-lifecycle.d.ts +0 -19
- package/dist/cli/turn-lifecycle.js +0 -53
- package/dist/cli/turn-lifecycle.test.d.ts +0 -1
- package/dist/cli/turn-lifecycle.test.js +0 -32
- package/dist/cli/turn-media-setup.d.ts +0 -19
- package/dist/cli/turn-media-setup.js +0 -71
- package/dist/cli/turn-media-setup.test.d.ts +0 -1
- package/dist/cli/turn-media-setup.test.js +0 -280
- package/dist/cli/turn-permission-sync.d.ts +0 -6
- package/dist/cli/turn-permission-sync.js +0 -7
- package/dist/cli/turn-permission-sync.test.d.ts +0 -1
- package/dist/cli/turn-permission-sync.test.js +0 -20
- package/dist/cli/turn-project-router.d.ts +0 -22
- package/dist/cli/turn-project-router.js +0 -141
- package/dist/cli/turn-project-router.test.d.ts +0 -1
- package/dist/cli/turn-project-router.test.js +0 -79
- package/dist/cli/turn-skill-autopersist.d.ts +0 -47
- package/dist/cli/turn-skill-autopersist.js +0 -262
- package/dist/cli/turn-skill-autopersist.test.d.ts +0 -1
- package/dist/cli/turn-skill-autopersist.test.js +0 -222
- package/dist/cli/turn-suggestion-generator.d.ts +0 -15
- package/dist/cli/turn-suggestion-generator.js +0 -34
- package/dist/cli/workflow-host-adapter.d.ts +0 -29
- package/dist/cli/workflow-host-adapter.js +0 -15
- package/dist/cli/workflow-host-adapter.test.d.ts +0 -1
- package/dist/cli/workflow-host-adapter.test.js +0 -35
- package/dist/config/config.d.ts +0 -17
- package/dist/config/config.js +0 -21
- package/dist/contracts/fire-hook.d.ts +0 -14
- package/dist/contracts/fire-hook.js +0 -14
- package/dist/contracts/fire-hook.test.d.ts +0 -1
- package/dist/contracts/fire-hook.test.js +0 -34
- package/dist/contracts/hooks.d.ts +0 -186
- package/dist/contracts/hooks.js +0 -7
- package/dist/contracts/index.d.ts +0 -4
- package/dist/contracts/index.js +0 -4
- package/dist/index.d.ts +0 -15
- package/dist/orchestration/agent-instance.d.ts +0 -84
- package/dist/orchestration/agent-instance.js +0 -535
- package/dist/orchestration/context/context-collapse.d.ts +0 -58
- package/dist/orchestration/context/context-collapse.js +0 -134
- package/dist/orchestration/context/reactive-compact.d.ts +0 -73
- package/dist/orchestration/context/reactive-compact.js +0 -78
- package/dist/orchestration/context/turn-loop-guard.d.ts +0 -86
- package/dist/orchestration/context/turn-loop-guard.js +0 -100
- package/dist/orchestration/dag-scheduler.d.ts +0 -167
- package/dist/orchestration/dag-scheduler.js +0 -546
- package/dist/orchestration/error-handling/error-classification.d.ts +0 -3
- package/dist/orchestration/error-handling/error-classification.js +0 -35
- package/dist/orchestration/error-handling/failover-classification.d.ts +0 -8
- package/dist/orchestration/error-handling/failover-classification.js +0 -381
- package/dist/orchestration/error-handling/retry-loop.d.ts +0 -69
- package/dist/orchestration/error-handling/retry-loop.js +0 -96
- package/dist/orchestration/index.d.ts +0 -15
- package/dist/orchestration/index.js +0 -18
- package/dist/orchestration/product-budget.d.ts +0 -56
- package/dist/orchestration/product-budget.js +0 -112
- package/dist/orchestration/product-checkpoint.d.ts +0 -46
- package/dist/orchestration/product-checkpoint.js +0 -74
- package/dist/orchestration/product-dag-mutation-applier.d.ts +0 -10
- package/dist/orchestration/product-dag-mutation-applier.js +0 -91
- package/dist/orchestration/product-persistence.d.ts +0 -35
- package/dist/orchestration/product-persistence.js +0 -55
- package/dist/orchestration/product-planner.d.ts +0 -146
- package/dist/orchestration/product-planner.js +0 -379
- package/dist/orchestration/product-run-coordinator.d.ts +0 -31
- package/dist/orchestration/product-run-coordinator.js +0 -31
- package/dist/orchestration/product-worktree.d.ts +0 -12
- package/dist/orchestration/product-worktree.js +0 -69
- package/dist/orchestration/skill-improvement.d.ts +0 -129
- package/dist/orchestration/skill-improvement.js +0 -243
- package/dist/orchestration/solo-evaluator.d.ts +0 -124
- package/dist/orchestration/solo-evaluator.js +0 -611
- package/dist/orchestration/solo-persistence.d.ts +0 -48
- package/dist/orchestration/solo-persistence.js +0 -67
- package/dist/orchestration/solo-spec-builder.d.ts +0 -48
- package/dist/orchestration/solo-spec-builder.js +0 -139
- package/dist/orchestration/subagent/agent-registry.d.ts +0 -46
- package/dist/orchestration/subagent/agent-registry.js +0 -129
- package/dist/orchestration/subagent/fork-subagent.d.ts +0 -100
- package/dist/orchestration/subagent/fork-subagent.js +0 -101
- package/dist/orchestration/subagent/task-types.d.ts +0 -1
- package/dist/orchestration/subagent/task-types.js +0 -1
- package/dist/orchestration/tool-cascade.d.ts +0 -49
- package/dist/orchestration/tool-cascade.js +0 -86
- package/dist/orchestration/tool-loop/conversation-repair.d.ts +0 -61
- package/dist/orchestration/tool-loop/conversation-repair.js +0 -429
- package/dist/orchestration/tool-loop/tool-choice-policy.d.ts +0 -54
- package/dist/orchestration/tool-loop/tool-choice-policy.js +0 -164
- package/dist/orchestration/tool-loop/tool-loop-state.d.ts +0 -50
- package/dist/orchestration/tool-loop/tool-loop-state.js +0 -133
- package/dist/orchestration/tool-loop/tool-schema.d.ts +0 -46
- package/dist/orchestration/tool-loop/tool-schema.js +0 -208
- package/dist/orchestration/workflow/budget-permission-gate.d.ts +0 -85
- package/dist/orchestration/workflow/budget-permission-gate.js +0 -134
- package/dist/orchestration/workflow/builtin-executors.d.ts +0 -18
- package/dist/orchestration/workflow/builtin-executors.js +0 -191
- package/dist/orchestration/workflow/capability-catalog.d.ts +0 -64
- package/dist/orchestration/workflow/capability-catalog.js +0 -166
- package/dist/orchestration/workflow/cron-schedule.d.ts +0 -37
- package/dist/orchestration/workflow/cron-schedule.js +0 -199
- package/dist/orchestration/workflow/data-item.d.ts +0 -39
- package/dist/orchestration/workflow/data-item.js +0 -52
- package/dist/orchestration/workflow/expression.d.ts +0 -60
- package/dist/orchestration/workflow/expression.js +0 -474
- package/dist/orchestration/workflow/host-executors.d.ts +0 -15
- package/dist/orchestration/workflow/host-executors.js +0 -207
- package/dist/orchestration/workflow/n8n-expression.d.ts +0 -48
- package/dist/orchestration/workflow/n8n-expression.js +0 -95
- package/dist/orchestration/workflow/n8n-import.d.ts +0 -68
- package/dist/orchestration/workflow/n8n-import.js +0 -319
- package/dist/orchestration/workflow/node-registry.d.ts +0 -19
- package/dist/orchestration/workflow/node-registry.js +0 -45
- package/dist/orchestration/workflow/node-schema.d.ts +0 -232
- package/dist/orchestration/workflow/node-schema.js +0 -29
- package/dist/orchestration/workflow/qla-executor-host.d.ts +0 -77
- package/dist/orchestration/workflow/qla-executor-host.js +0 -124
- package/dist/orchestration/workflow/run-checkpoint-store.d.ts +0 -53
- package/dist/orchestration/workflow/run-checkpoint-store.js +0 -59
- package/dist/orchestration/workflow/run-history-store.d.ts +0 -65
- package/dist/orchestration/workflow/run-history-store.js +0 -104
- package/dist/orchestration/workflow/trigger-validation.d.ts +0 -22
- package/dist/orchestration/workflow/trigger-validation.js +0 -241
- package/dist/orchestration/workflow/workflow-audit-store.d.ts +0 -31
- package/dist/orchestration/workflow/workflow-audit-store.js +0 -55
- package/dist/orchestration/workflow/workflow-bundle.d.ts +0 -65
- package/dist/orchestration/workflow/workflow-bundle.js +0 -168
- package/dist/orchestration/workflow/workflow-controller.d.ts +0 -219
- package/dist/orchestration/workflow/workflow-controller.js +0 -522
- package/dist/orchestration/workflow/workflow-patch.d.ts +0 -116
- package/dist/orchestration/workflow/workflow-patch.js +0 -369
- package/dist/orchestration/workflow/workflow-render.d.ts +0 -41
- package/dist/orchestration/workflow/workflow-render.js +0 -108
- package/dist/orchestration/workflow/workflow-runtime.d.ts +0 -171
- package/dist/orchestration/workflow/workflow-runtime.js +0 -474
- package/dist/orchestration/workflow/workflow-scheduler.d.ts +0 -111
- package/dist/orchestration/workflow/workflow-scheduler.js +0 -230
- package/dist/orchestration/workflow/workflow-service.d.ts +0 -14
- package/dist/orchestration/workflow/workflow-service.js +0 -18
- package/dist/orchestration/workflow/workflow-store.d.ts +0 -81
- package/dist/orchestration/workflow/workflow-store.js +0 -123
- package/dist/orchestration/workflow/workflow-trigger.d.ts +0 -35
- package/dist/orchestration/workflow/workflow-trigger.js +0 -1
- package/dist/orchestration/workflow-chat-builder.d.ts +0 -57
- package/dist/orchestration/workflow-chat-builder.js +0 -202
- package/dist/permissions.d.ts +0 -2
- package/dist/permissions.public-api.test.d.ts +0 -1
- package/dist/permissions.public-api.test.js +0 -32
- package/dist/pet-contracts.d.ts +0 -1
- package/dist/protocol/index.d.ts +0 -7
- package/dist/protocol/index.js +0 -7
- package/dist/protocol/methods.d.ts +0 -1190
- package/dist/protocol/methods.js +0 -110
- package/dist/protocol/notifications.d.ts +0 -9
- package/dist/protocol/notifications.js +0 -9
- package/dist/protocol/wire/acp-agent-management.d.ts +0 -456
- package/dist/protocol/wire/acp-agent-management.js +0 -7
- package/dist/protocol/wire/acp-protocol.d.ts +0 -369
- package/dist/protocol/wire/acp-protocol.js +0 -120
- package/dist/protocol/wire/agent-events.d.ts +0 -32
- package/dist/protocol/wire/agent-events.js +0 -113
- package/dist/protocol/wire/agent-methods.d.ts +0 -564
- package/dist/protocol/wire/agent-methods.js +0 -11
- package/dist/protocol/wire/agent-rpc.d.ts +0 -100
- package/dist/protocol/wire/agent-rpc.js +0 -72
- package/dist/protocol/wire/capability-manifest.d.ts +0 -112
- package/dist/protocol/wire/capability-manifest.js +0 -149
- package/dist/protocol/wire/capability-transport.d.ts +0 -207
- package/dist/protocol/wire/capability-transport.js +0 -1
- package/dist/protocol/wire/channel-ingress.d.ts +0 -29
- package/dist/protocol/wire/channel-ingress.js +0 -1
- package/dist/protocol/wire/channel.d.ts +0 -89
- package/dist/protocol/wire/channel.js +0 -1
- package/dist/protocol/wire/chat-types.d.ts +0 -106
- package/dist/protocol/wire/chat-types.js +0 -7
- package/dist/protocol/wire/checkpoint-runtime.d.ts +0 -61
- package/dist/protocol/wire/checkpoint-runtime.js +0 -499
- package/dist/protocol/wire/checkpoint.d.ts +0 -72
- package/dist/protocol/wire/checkpoint.js +0 -12
- package/dist/protocol/wire/execution.d.ts +0 -391
- package/dist/protocol/wire/execution.js +0 -1
- package/dist/protocol/wire/gateway-contract.d.ts +0 -61
- package/dist/protocol/wire/gateway-contract.js +0 -236
- package/dist/protocol/wire/gateway-contract.test.d.ts +0 -1
- package/dist/protocol/wire/gateway-contract.test.js +0 -123
- package/dist/protocol/wire/gateway-rpc.d.ts +0 -652
- package/dist/protocol/wire/gateway-rpc.js +0 -58
- package/dist/protocol/wire/gateway.d.ts +0 -62
- package/dist/protocol/wire/gateway.js +0 -1
- package/dist/protocol/wire/hook-protocol.d.ts +0 -37
- package/dist/protocol/wire/hook-protocol.js +0 -2
- package/dist/protocol/wire/index.d.ts +0 -28
- package/dist/protocol/wire/index.js +0 -27
- package/dist/protocol/wire/memory-provider-lifecycle.d.ts +0 -82
- package/dist/protocol/wire/memory-provider-lifecycle.js +0 -24
- package/dist/protocol/wire/notification-payloads.d.ts +0 -918
- package/dist/protocol/wire/notification-payloads.js +0 -13
- package/dist/protocol/wire/pet-contracts.d.ts +0 -76
- package/dist/protocol/wire/pet-contracts.js +0 -23
- package/dist/protocol/wire/provider-runtime-contract.d.ts +0 -66
- package/dist/protocol/wire/provider-runtime-contract.js +0 -23
- package/dist/protocol/wire/provider-runtime-core.d.ts +0 -147
- package/dist/protocol/wire/provider-runtime-core.js +0 -488
- package/dist/protocol/wire/provider-runtime-io.d.ts +0 -20
- package/dist/protocol/wire/provider-runtime-io.js +0 -57
- package/dist/protocol/wire/resource-manifest.d.ts +0 -68
- package/dist/protocol/wire/resource-manifest.js +0 -174
- package/dist/protocol/wire/session.d.ts +0 -32
- package/dist/protocol/wire/session.js +0 -1
- package/dist/protocol/wire/thread-protocol.d.ts +0 -145
- package/dist/protocol/wire/thread-protocol.js +0 -13
- package/dist/protocol/wire/transport.d.ts +0 -57
- package/dist/protocol/wire/transport.js +0 -1
- package/dist/protocol/wire/turn.d.ts +0 -208
- package/dist/protocol/wire/turn.js +0 -1
- package/dist/protocol/wire/web-capability.d.ts +0 -54
- package/dist/protocol/wire/web-capability.js +0 -52
- package/dist/runtime/community/community-consent-client.d.ts +0 -142
- package/dist/runtime/community/community-consent-client.js +0 -381
- package/dist/runtime/community/community-consent-client.test.d.ts +0 -1
- package/dist/runtime/community/community-consent-client.test.js +0 -491
- package/dist/runtime/community/community-desensitization-red-team-cli.d.ts +0 -7
- package/dist/runtime/community/community-desensitization-red-team-cli.js +0 -43
- package/dist/runtime/community/community-desensitization-red-team-cli.test.d.ts +0 -1
- package/dist/runtime/community/community-desensitization-red-team-cli.test.js +0 -23
- package/dist/runtime/community/community-desensitization.d.ts +0 -29
- package/dist/runtime/community/community-desensitization.js +0 -81
- package/dist/runtime/community/community-desensitization.test.d.ts +0 -1
- package/dist/runtime/community/community-desensitization.test.js +0 -43
- package/dist/runtime/community/community-discovery-cache.d.ts +0 -24
- package/dist/runtime/community/community-discovery-cache.js +0 -52
- package/dist/runtime/community/community-discovery-coordinator.d.ts +0 -33
- package/dist/runtime/community/community-discovery-coordinator.js +0 -84
- package/dist/runtime/community/community-discovery-coordinator.test.d.ts +0 -1
- package/dist/runtime/community/community-discovery-coordinator.test.js +0 -97
- package/dist/runtime/community/community-pet-publisher.d.ts +0 -30
- package/dist/runtime/community/community-pet-publisher.js +0 -53
- package/dist/runtime/community/community-pet-publisher.test.d.ts +0 -1
- package/dist/runtime/community/community-pet-publisher.test.js +0 -53
- package/dist/runtime/community/community-signal-reporter.d.ts +0 -33
- package/dist/runtime/community/community-signal-reporter.js +0 -85
- package/dist/runtime/community/community-signal-reporter.test.d.ts +0 -1
- package/dist/runtime/community/community-signal-reporter.test.js +0 -100
- package/dist/runtime/community/community-telemetry-metadata.d.ts +0 -4
- package/dist/runtime/community/community-telemetry-metadata.js +0 -42
- package/dist/runtime/community/community-telemetry-recorder.d.ts +0 -6
- package/dist/runtime/community/community-telemetry-recorder.js +0 -31
- package/dist/runtime/community/community-telemetry-types.d.ts +0 -1
- package/dist/runtime/community/community-telemetry-types.js +0 -1
- package/dist/runtime/config/tunable-defaults.d.ts +0 -255
- package/dist/runtime/config/tunable-defaults.js +0 -293
- package/dist/runtime/context/context-compression-strategies.d.ts +0 -301
- package/dist/runtime/context/context-compression-strategies.js +0 -860
- package/dist/runtime/execution/dream-agent.d.ts +0 -260
- package/dist/runtime/execution/dream-agent.js +0 -974
- package/dist/runtime/execution/dream-category-context.d.ts +0 -47
- package/dist/runtime/execution/dream-category-context.js +0 -226
- package/dist/runtime/execution/dream-lock.test.d.ts +0 -1
- package/dist/runtime/execution/dream-lock.test.js +0 -54
- package/dist/runtime/execution/fork-context.d.ts +0 -14
- package/dist/runtime/execution/fork-context.js +0 -20
- package/dist/runtime/execution/fork-context.test.d.ts +0 -1
- package/dist/runtime/execution/fork-context.test.js +0 -101
- package/dist/runtime/execution/forked-agent.d.ts +0 -111
- package/dist/runtime/execution/forked-agent.js +0 -172
- package/dist/runtime/execution/index.d.ts +0 -7
- package/dist/runtime/execution/index.js +0 -8
- package/dist/runtime/execution/memory-decay.d.ts +0 -69
- package/dist/runtime/execution/memory-decay.js +0 -80
- package/dist/runtime/execution/progress-tracker.d.ts +0 -78
- package/dist/runtime/execution/progress-tracker.js +0 -107
- package/dist/runtime/execution/streaming-tool-executor.d.ts +0 -102
- package/dist/runtime/execution/streaming-tool-executor.js +0 -345
- package/dist/runtime/execution/streaming-tool-executor.test.d.ts +0 -1
- package/dist/runtime/execution/streaming-tool-executor.test.js +0 -49
- package/dist/runtime/execution/tool-eligibility.d.ts +0 -36
- package/dist/runtime/execution/tool-eligibility.js +0 -94
- package/dist/runtime/execution/tool-eligibility.test.d.ts +0 -1
- package/dist/runtime/execution/tool-eligibility.test.js +0 -96
- package/dist/runtime/execution/tool-result-storage.d.ts +0 -87
- package/dist/runtime/execution/tool-result-storage.js +0 -274
- package/dist/runtime/hooks/context-compression.d.ts +0 -61
- package/dist/runtime/hooks/context-compression.js +0 -334
- package/dist/runtime/hooks/hook-registry.d.ts +0 -12
- package/dist/runtime/hooks/hook-registry.js +0 -61
- package/dist/runtime/hooks/hook-registry.test.d.ts +0 -1
- package/dist/runtime/hooks/hook-registry.test.js +0 -51
- package/dist/runtime/hooks/index.d.ts +0 -4
- package/dist/runtime/hooks/index.js +0 -5
- package/dist/runtime/hooks/memory-hooks.d.ts +0 -75
- package/dist/runtime/hooks/memory-hooks.js +0 -356
- package/dist/runtime/hooks/skill-recall-hooks.d.ts +0 -37
- package/dist/runtime/hooks/skill-recall-hooks.js +0 -263
- package/dist/runtime/hooks/skill-recall-hooks.test.d.ts +0 -1
- package/dist/runtime/hooks/skill-recall-hooks.test.js +0 -52
- package/dist/runtime/index.d.ts +0 -5
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/infra/acp-detector.d.ts +0 -133
- package/dist/runtime/infra/acp-detector.js +0 -862
- package/dist/runtime/infra/acp-detector.test.d.ts +0 -1
- package/dist/runtime/infra/acp-detector.test.js +0 -164
- package/dist/runtime/infra/acp-host-handler.d.ts +0 -31
- package/dist/runtime/infra/acp-host-handler.js +0 -123
- package/dist/runtime/infra/acp-host-handler.test.d.ts +0 -1
- package/dist/runtime/infra/acp-host-handler.test.js +0 -64
- package/dist/runtime/infra/acp-protocol-adapter.d.ts +0 -146
- package/dist/runtime/infra/acp-protocol-adapter.js +0 -382
- package/dist/runtime/infra/acp-protocol-adapter.test.d.ts +0 -1
- package/dist/runtime/infra/acp-protocol-adapter.test.js +0 -180
- package/dist/runtime/infra/acp-usage-tracker.d.ts +0 -46
- package/dist/runtime/infra/acp-usage-tracker.js +0 -92
- package/dist/runtime/infra/agent-catalog.test.d.ts +0 -1
- package/dist/runtime/infra/agent-catalog.test.js +0 -174
- package/dist/runtime/infra/agent-config-store.d.ts +0 -30
- package/dist/runtime/infra/agent-config-store.js +0 -115
- package/dist/runtime/infra/agent-install-runner.d.ts +0 -57
- package/dist/runtime/infra/agent-install-runner.js +0 -123
- package/dist/runtime/infra/agent-install-runner.test.d.ts +0 -1
- package/dist/runtime/infra/agent-install-runner.test.js +0 -103
- package/dist/runtime/infra/agent-paths.d.ts +0 -67
- package/dist/runtime/infra/agent-paths.js +0 -167
- package/dist/runtime/infra/agent-paths.test.d.ts +0 -1
- package/dist/runtime/infra/agent-paths.test.js +0 -49
- package/dist/runtime/infra/agent-process.d.ts +0 -299
- package/dist/runtime/infra/agent-process.js +0 -1318
- package/dist/runtime/infra/background-tasks.d.ts +0 -115
- package/dist/runtime/infra/background-tasks.js +0 -249
- package/dist/runtime/infra/background-tasks.test.d.ts +0 -1
- package/dist/runtime/infra/background-tasks.test.js +0 -242
- package/dist/runtime/infra/checkpoint-backend.d.ts +0 -8
- package/dist/runtime/infra/checkpoint-backend.js +0 -110
- package/dist/runtime/infra/cleanup-registry.d.ts +0 -23
- package/dist/runtime/infra/cleanup-registry.js +0 -34
- package/dist/runtime/infra/default-path-service.d.ts +0 -33
- package/dist/runtime/infra/default-path-service.js +0 -76
- package/dist/runtime/infra/default-path-service.test.d.ts +0 -1
- package/dist/runtime/infra/default-path-service.test.js +0 -31
- package/dist/runtime/infra/disk-storage.d.ts +0 -20
- package/dist/runtime/infra/disk-storage.js +0 -64
- package/dist/runtime/infra/external-agent-approvals.d.ts +0 -41
- package/dist/runtime/infra/external-agent-approvals.js +0 -101
- package/dist/runtime/infra/external-agent-approvals.test.d.ts +0 -1
- package/dist/runtime/infra/external-agent-approvals.test.js +0 -99
- package/dist/runtime/infra/external-agent-pool.d.ts +0 -54
- package/dist/runtime/infra/external-agent-pool.js +0 -0
- package/dist/runtime/infra/external-agent-pool.test.d.ts +0 -1
- package/dist/runtime/infra/external-agent-pool.test.js +0 -102
- package/dist/runtime/infra/file-watcher.d.ts +0 -72
- package/dist/runtime/infra/file-watcher.js +0 -154
- package/dist/runtime/infra/index.d.ts +0 -19
- package/dist/runtime/infra/index.js +0 -19
- package/dist/runtime/infra/key-injection.test.d.ts +0 -1
- package/dist/runtime/infra/key-injection.test.js +0 -88
- package/dist/runtime/infra/key-pool.d.ts +0 -122
- package/dist/runtime/infra/key-pool.js +0 -378
- package/dist/runtime/infra/key-pool.test.d.ts +0 -1
- package/dist/runtime/infra/key-pool.test.js +0 -36
- package/dist/runtime/infra/llmrouter-catalog.d.ts +0 -84
- package/dist/runtime/infra/llmrouter-catalog.js +0 -287
- package/dist/runtime/infra/llmrouter-catalog.test.d.ts +0 -1
- package/dist/runtime/infra/llmrouter-catalog.test.js +0 -80
- package/dist/runtime/infra/llmrouter-zero-config.test.d.ts +0 -1
- package/dist/runtime/infra/llmrouter-zero-config.test.js +0 -64
- package/dist/runtime/infra/mcp-bridge.d.ts +0 -166
- package/dist/runtime/infra/mcp-bridge.js +0 -161
- package/dist/runtime/infra/media-persistence.d.ts +0 -87
- package/dist/runtime/infra/media-persistence.js +0 -278
- package/dist/runtime/infra/migrate-project-skills.d.ts +0 -21
- package/dist/runtime/infra/migrate-project-skills.js +0 -131
- package/dist/runtime/infra/migrate-project-skills.test.d.ts +0 -1
- package/dist/runtime/infra/migrate-project-skills.test.js +0 -69
- package/dist/runtime/infra/model-id-translator.d.ts +0 -22
- package/dist/runtime/infra/model-id-translator.js +0 -74
- package/dist/runtime/infra/model-registry.d.ts +0 -148
- package/dist/runtime/infra/model-registry.js +0 -529
- package/dist/runtime/infra/model-registry.test.d.ts +0 -1
- package/dist/runtime/infra/model-registry.test.js +0 -253
- package/dist/runtime/infra/process-config-port.d.ts +0 -2
- package/dist/runtime/infra/process-config-port.js +0 -5
- package/dist/runtime/infra/profile-storage.test.d.ts +0 -1
- package/dist/runtime/infra/profile-storage.test.js +0 -41
- package/dist/runtime/infra/project-instructions-store.d.ts +0 -30
- package/dist/runtime/infra/project-instructions-store.js +0 -124
- package/dist/runtime/infra/project-skill-manifest.d.ts +0 -32
- package/dist/runtime/infra/project-skill-manifest.js +0 -160
- package/dist/runtime/infra/project-skill-manifest.test.d.ts +0 -1
- package/dist/runtime/infra/project-skill-manifest.test.js +0 -42
- package/dist/runtime/infra/project-store.d.ts +0 -48
- package/dist/runtime/infra/project-store.js +0 -284
- package/dist/runtime/infra/secure-storage.d.ts +0 -81
- package/dist/runtime/infra/secure-storage.js +0 -117
- package/dist/runtime/infra/skill-injector.d.ts +0 -59
- package/dist/runtime/infra/skill-injector.js +0 -155
- package/dist/runtime/infra/skill-injector.test.d.ts +0 -1
- package/dist/runtime/infra/skill-injector.test.js +0 -9
- package/dist/runtime/infra/skill-resolver.d.ts +0 -51
- package/dist/runtime/infra/skill-resolver.js +0 -109
- package/dist/runtime/infra/skill-resolver.test.d.ts +0 -1
- package/dist/runtime/infra/skill-resolver.test.js +0 -72
- package/dist/runtime/infra/task-runtime.d.ts +0 -71
- package/dist/runtime/infra/task-runtime.js +0 -181
- package/dist/runtime/infra/token-budget.d.ts +0 -92
- package/dist/runtime/infra/token-budget.js +0 -170
- package/dist/runtime/infra/worktree-backend.d.ts +0 -86
- package/dist/runtime/infra/worktree-backend.js +0 -522
- package/dist/runtime/memory/categories.d.ts +0 -5
- package/dist/runtime/memory/categories.js +0 -4
- package/dist/runtime/memory/find-relevant-memories.d.ts +0 -70
- package/dist/runtime/memory/find-relevant-memories.js +0 -270
- package/dist/runtime/memory/implicit-extraction.d.ts +0 -58
- package/dist/runtime/memory/implicit-extraction.js +0 -187
- package/dist/runtime/memory/recall-category-filter.d.ts +0 -54
- package/dist/runtime/memory/recall-category-filter.js +0 -215
- package/dist/runtime/permission-model.d.ts +0 -19
- package/dist/runtime/permission-model.js +0 -24
- package/dist/runtime/permission-model.test.d.ts +0 -1
- package/dist/runtime/permission-model.test.js +0 -32
- package/dist/runtime/pet/hatch-pet-runner.d.ts +0 -18
- package/dist/runtime/pet/hatch-pet-runner.js +0 -120
- package/dist/runtime/pet/hatch-pet-runner.test.d.ts +0 -1
- package/dist/runtime/pet/hatch-pet-runner.test.js +0 -28
- package/dist/runtime/pet/index.d.ts +0 -18
- package/dist/runtime/pet/index.js +0 -9
- package/dist/runtime/pet/pet-community-assets.d.ts +0 -13
- package/dist/runtime/pet/pet-community-assets.js +0 -106
- package/dist/runtime/pet/pet-file-loader.d.ts +0 -5
- package/dist/runtime/pet/pet-file-loader.js +0 -11
- package/dist/runtime/pet/pet-growth-engine.d.ts +0 -2
- package/dist/runtime/pet/pet-growth-engine.js +0 -1
- package/dist/runtime/pet/pet-profile-service.d.ts +0 -91
- package/dist/runtime/pet/pet-profile-service.js +0 -296
- package/dist/runtime/pet/pet-profile-service.test.d.ts +0 -1
- package/dist/runtime/pet/pet-profile-service.test.js +0 -171
- package/dist/runtime/pet/pet-reaction-engine.d.ts +0 -11
- package/dist/runtime/pet/pet-reaction-engine.js +0 -11
- package/dist/runtime/pet/pet-reaction-engine.test.d.ts +0 -1
- package/dist/runtime/pet/pet-reaction-engine.test.js +0 -12
- package/dist/runtime/pet/pet-soul-service.d.ts +0 -21
- package/dist/runtime/pet/pet-soul-service.js +0 -63
- package/dist/runtime/pet/pet-soul-service.test.d.ts +0 -1
- package/dist/runtime/pet/pet-soul-service.test.js +0 -115
- package/dist/runtime/pet/pet-types.d.ts +0 -1
- package/dist/runtime/pet/pet-types.js +0 -1
- package/dist/runtime/pet/petdex-asset.d.ts +0 -32
- package/dist/runtime/pet/petdex-asset.js +0 -242
- package/dist/runtime/pet/petdex-asset.test.d.ts +0 -1
- package/dist/runtime/pet/petdex-asset.test.js +0 -257
- package/dist/runtime/pet/petdex-forge-service.d.ts +0 -19
- package/dist/runtime/pet/petdex-forge-service.js +0 -820
- package/dist/runtime/pet/petdex-forge-service.test.d.ts +0 -1
- package/dist/runtime/pet/petdex-forge-service.test.js +0 -142
- package/dist/runtime/ports/agent-execution-contracts.d.ts +0 -182
- package/dist/runtime/ports/agent-execution-contracts.js +0 -1
- package/dist/runtime/ports/agent-runtime-ports.d.ts +0 -76
- package/dist/runtime/ports/agent-runtime-ports.js +0 -1
- package/dist/runtime/ports/checkpoint-contracts.d.ts +0 -19
- package/dist/runtime/ports/checkpoint-contracts.js +0 -1
- package/dist/runtime/ports/config-port.d.ts +0 -4
- package/dist/runtime/ports/config-port.js +0 -5
- package/dist/runtime/ports/index.d.ts +0 -19
- package/dist/runtime/ports/index.js +0 -5
- package/dist/runtime/ports/memory-provider.d.ts +0 -181
- package/dist/runtime/ports/memory-provider.js +0 -1
- package/dist/runtime/ports/memory-recall-source.d.ts +0 -3
- package/dist/runtime/ports/memory-recall-source.js +0 -1
- package/dist/runtime/ports/memory-writer.d.ts +0 -21
- package/dist/runtime/ports/memory-writer.js +0 -1
- package/dist/runtime/ports/model-transport-contracts.d.ts +0 -125
- package/dist/runtime/ports/model-transport-contracts.js +0 -9
- package/dist/runtime/ports/path-service.d.ts +0 -31
- package/dist/runtime/ports/path-service.js +0 -1
- package/dist/runtime/ports/permission-contracts.d.ts +0 -128
- package/dist/runtime/ports/permission-contracts.js +0 -5
- package/dist/runtime/ports/project-memory-store.d.ts +0 -44
- package/dist/runtime/ports/project-memory-store.js +0 -1
- package/dist/runtime/ports/source-provider.d.ts +0 -39
- package/dist/runtime/ports/source-provider.js +0 -4
- package/dist/runtime/ports/tool-call-contracts.d.ts +0 -16
- package/dist/runtime/ports/tool-call-contracts.js +0 -13
- package/dist/runtime/ports/tool-contracts.d.ts +0 -87
- package/dist/runtime/ports/tool-contracts.js +0 -3
- package/dist/runtime/ports/tool-risk.d.ts +0 -7
- package/dist/runtime/ports/tool-risk.js +0 -16
- package/dist/runtime/ports/web-search-contracts.d.ts +0 -21
- package/dist/runtime/ports/web-search-contracts.js +0 -1
- package/dist/runtime/ports/worktree-contracts.d.ts +0 -22
- package/dist/runtime/ports/worktree-contracts.js +0 -1
- package/dist/runtime/prompt/environment-context.d.ts +0 -60
- package/dist/runtime/prompt/environment-context.js +0 -410
- package/dist/runtime/prompt/environment-context.test.d.ts +0 -1
- package/dist/runtime/prompt/environment-context.test.js +0 -75
- package/dist/runtime/prompt/fresh-workspace-evidence.d.ts +0 -21
- package/dist/runtime/prompt/fresh-workspace-evidence.js +0 -224
- package/dist/runtime/prompt/fresh-workspace-evidence.test.d.ts +0 -1
- package/dist/runtime/prompt/fresh-workspace-evidence.test.js +0 -163
- package/dist/runtime/prompt/index.d.ts +0 -5
- package/dist/runtime/prompt/index.js +0 -6
- package/dist/runtime/prompt/instruction-loader.d.ts +0 -70
- package/dist/runtime/prompt/instruction-loader.js +0 -515
- package/dist/runtime/prompt/instruction-loader.test.d.ts +0 -1
- package/dist/runtime/prompt/instruction-loader.test.js +0 -64
- package/dist/runtime/prompt/prompt-policy.d.ts +0 -12
- package/dist/runtime/prompt/prompt-policy.js +0 -40
- package/dist/runtime/prompt/system-prompt-sections.d.ts +0 -65
- package/dist/runtime/prompt/system-prompt-sections.js +0 -93
- package/dist/runtime/prompt/task-domain.d.ts +0 -82
- package/dist/runtime/prompt/task-domain.js +0 -248
- package/dist/runtime/sandbox/index.d.ts +0 -2
- package/dist/runtime/sandbox/index.js +0 -2
- package/dist/runtime/sandbox/skill-sandbox.d.ts +0 -53
- package/dist/runtime/sandbox/skill-sandbox.js +0 -93
- package/dist/runtime/sandbox/skill-sandbox.test.d.ts +0 -1
- package/dist/runtime/sandbox/skill-sandbox.test.js +0 -172
- package/dist/runtime/sandbox/windows-skill-sandbox.d.ts +0 -78
- package/dist/runtime/sandbox/windows-skill-sandbox.js +0 -128
- package/dist/runtime/session/group-session-split.d.ts +0 -38
- package/dist/runtime/session/group-session-split.js +0 -99
- package/dist/runtime/session/index.d.ts +0 -4
- package/dist/runtime/session/index.js +0 -5
- package/dist/runtime/session/session-catalog.d.ts +0 -4
- package/dist/runtime/session/session-catalog.js +0 -59
- package/dist/runtime/session/session-locator.d.ts +0 -26
- package/dist/runtime/session/session-locator.js +0 -91
- package/dist/runtime/session/session-locator.test.d.ts +0 -1
- package/dist/runtime/session/session-locator.test.js +0 -59
- package/dist/runtime/session/session-metadata-store.d.ts +0 -8
- package/dist/runtime/session/session-metadata-store.js +0 -167
- package/dist/runtime/session/session-paths.d.ts +0 -9
- package/dist/runtime/session/session-paths.js +0 -27
- package/dist/runtime/session/session-persistence.d.ts +0 -16
- package/dist/runtime/session/session-persistence.js +0 -16
- package/dist/runtime/session/session-persistence.test.d.ts +0 -1
- package/dist/runtime/session/session-persistence.test.js +0 -237
- package/dist/runtime/session/session-resume.d.ts +0 -4
- package/dist/runtime/session/session-resume.js +0 -60
- package/dist/runtime/session/session-schema.d.ts +0 -10
- package/dist/runtime/session/session-schema.js +0 -35
- package/dist/runtime/session/session-state.d.ts +0 -96
- package/dist/runtime/session/session-state.js +0 -180
- package/dist/runtime/session/session-summary.d.ts +0 -5
- package/dist/runtime/session/session-summary.js +0 -67
- package/dist/runtime/session/session-transcript-store.d.ts +0 -13
- package/dist/runtime/session/session-transcript-store.js +0 -109
- package/dist/runtime/session/session-types.d.ts +0 -77
- package/dist/runtime/session/session-types.js +0 -1
- package/dist/runtime/session/session-write-queue.d.ts +0 -2
- package/dist/runtime/session/session-write-queue.js +0 -48
- package/dist/runtime/tasks/task-types.d.ts +0 -166
- package/dist/runtime/tasks/task-types.js +0 -64
- package/dist/server/search-svc.d.ts +0 -1
- package/dist/server/search-svc.js +0 -113
- package/dist/skills/index.d.ts +0 -6
- package/dist/skills/index.js +0 -5
- package/dist/skills/mcp/index.d.ts +0 -1
- package/dist/skills/mcp/index.js +0 -3
- package/dist/skills/mcp/mcp-manager.d.ts +0 -75
- package/dist/skills/mcp/mcp-manager.js +0 -358
- package/dist/skills/mcp/mcp-tool-metadata.d.ts +0 -18
- package/dist/skills/mcp/mcp-tool-metadata.js +0 -48
- package/dist/skills/memory/categories.d.ts +0 -1
- package/dist/skills/memory/categories.js +0 -1
- package/dist/skills/memory/find-relevant-memories.d.ts +0 -1
- package/dist/skills/memory/find-relevant-memories.js +0 -1
- package/dist/skills/memory/implicit-extraction.d.ts +0 -1
- package/dist/skills/memory/implicit-extraction.js +0 -1
- package/dist/skills/memory/local-embedding.d.ts +0 -80
- package/dist/skills/memory/local-embedding.js +0 -210
- package/dist/skills/memory/local-memory-provider.d.ts +0 -257
- package/dist/skills/memory/local-memory-provider.js +0 -486
- package/dist/skills/memory/local-store-records.d.ts +0 -184
- package/dist/skills/memory/local-store-records.js +0 -1
- package/dist/skills/memory/local-store.d.ts +0 -479
- package/dist/skills/memory/local-store.js +0 -1022
- package/dist/skills/memory/memdir.d.ts +0 -93
- package/dist/skills/memory/memdir.js +0 -530
- package/dist/skills/memory/memory-attachment-store.d.ts +0 -62
- package/dist/skills/memory/memory-attachment-store.js +0 -0
- package/dist/skills/memory/memory-consolidation.d.ts +0 -43
- package/dist/skills/memory/memory-consolidation.js +0 -462
- package/dist/skills/memory/memory-db-path.d.ts +0 -13
- package/dist/skills/memory/memory-db-path.js +0 -27
- package/dist/skills/memory/memory-embedding-config.d.ts +0 -31
- package/dist/skills/memory/memory-embedding-config.js +0 -66
- package/dist/skills/memory/memory-provider-factory.d.ts +0 -33
- package/dist/skills/memory/memory-provider-factory.js +0 -79
- package/dist/skills/memory/memory-tool.d.ts +0 -85
- package/dist/skills/memory/memory-tool.js +0 -326
- package/dist/skills/memory/memory-vector-utils.d.ts +0 -2
- package/dist/skills/memory/memory-vector-utils.js +0 -19
- package/dist/skills/memory/recall-category-filter.d.ts +0 -1
- package/dist/skills/memory/recall-category-filter.js +0 -1
- package/dist/skills/memory/sqlite-memory-mappers.d.ts +0 -6
- package/dist/skills/memory/sqlite-memory-mappers.js +0 -104
- package/dist/skills/memory/sqlite-memory-schema.d.ts +0 -3
- package/dist/skills/memory/sqlite-memory-schema.js +0 -152
- package/dist/skills/permissions/bash-classifier.d.ts +0 -30
- package/dist/skills/permissions/bash-classifier.js +0 -174
- package/dist/skills/permissions/classifier-cache.d.ts +0 -51
- package/dist/skills/permissions/classifier-cache.js +0 -103
- package/dist/skills/permissions/community-sandbox-policy.d.ts +0 -3
- package/dist/skills/permissions/community-sandbox-policy.js +0 -233
- package/dist/skills/permissions/community-sandbox-red-team-cli.d.ts +0 -7
- package/dist/skills/permissions/community-sandbox-red-team-cli.js +0 -43
- package/dist/skills/permissions/community-sandbox-red-team.d.ts +0 -32
- package/dist/skills/permissions/community-sandbox-red-team.js +0 -221
- package/dist/skills/permissions/denial-audit-log.d.ts +0 -52
- package/dist/skills/permissions/denial-audit-log.js +0 -80
- package/dist/skills/permissions/denial-tracking.d.ts +0 -42
- package/dist/skills/permissions/denial-tracking.js +0 -60
- package/dist/skills/permissions/group-security-policy.d.ts +0 -15
- package/dist/skills/permissions/group-security-policy.js +0 -60
- package/dist/skills/permissions/hook-runner.d.ts +0 -120
- package/dist/skills/permissions/hook-runner.js +0 -545
- package/dist/skills/permissions/index.d.ts +0 -13
- package/dist/skills/permissions/index.js +0 -8
- package/dist/skills/permissions/operation-classifier.d.ts +0 -43
- package/dist/skills/permissions/operation-classifier.js +0 -251
- package/dist/skills/permissions/permission-classifier.d.ts +0 -41
- package/dist/skills/permissions/permission-classifier.js +0 -186
- package/dist/skills/permissions/rule-engine.d.ts +0 -49
- package/dist/skills/permissions/rule-engine.js +0 -285
- package/dist/skills/permissions/settings-watcher.d.ts +0 -19
- package/dist/skills/permissions/settings-watcher.js +0 -121
- package/dist/skills/permissions/types.d.ts +0 -2
- package/dist/skills/permissions/types.js +0 -1
- package/dist/skills/plugins/index.d.ts +0 -2
- package/dist/skills/plugins/index.js +0 -3
- package/dist/skills/plugins/plugin-api.d.ts +0 -38
- package/dist/skills/plugins/plugin-api.js +0 -18
- package/dist/skills/plugins/plugin-loader.d.ts +0 -57
- package/dist/skills/plugins/plugin-loader.js +0 -254
- package/dist/skills/plugins/plugin-marketplace.d.ts +0 -61
- package/dist/skills/plugins/plugin-marketplace.js +0 -229
- package/dist/skills/portable-tool.d.ts +0 -165
- package/dist/skills/portable-tool.js +0 -34
- package/dist/skills/skill-system/skill-frontmatter.d.ts +0 -19
- package/dist/skills/skill-system/skill-frontmatter.js +0 -344
- package/dist/skills/skill-system/skill-guard.d.ts +0 -23
- package/dist/skills/skill-system/skill-guard.js +0 -229
- package/dist/skills/skill-system/skill-lifecycle.d.ts +0 -93
- package/dist/skills/skill-system/skill-lifecycle.js +0 -236
- package/dist/skills/skill-system/skill-source.d.ts +0 -38
- package/dist/skills/skill-system/skill-source.js +0 -75
- package/dist/skills/skill-system/skill-types.d.ts +0 -140
- package/dist/skills/skill-system/skill-types.js +0 -6
- package/dist/skills/skill-system/skill-validation.d.ts +0 -29
- package/dist/skills/skill-system/skill-validation.js +0 -154
- package/dist/skills/tool-access.d.ts +0 -30
- package/dist/skills/tool-access.js +0 -58
- package/dist/skills/tools/agent-tool.d.ts +0 -102
- package/dist/skills/tools/agent-tool.js +0 -159
- package/dist/skills/tools/ask-user-tool.d.ts +0 -80
- package/dist/skills/tools/ask-user-tool.js +0 -121
- package/dist/skills/tools/brief-tool.d.ts +0 -74
- package/dist/skills/tools/brief-tool.js +0 -95
- package/dist/skills/tools/browser-tool.d.ts +0 -114
- package/dist/skills/tools/browser-tool.js +0 -160
- package/dist/skills/tools/checkpoint-tool.d.ts +0 -66
- package/dist/skills/tools/checkpoint-tool.js +0 -102
- package/dist/skills/tools/config-tool.d.ts +0 -61
- package/dist/skills/tools/config-tool.js +0 -123
- package/dist/skills/tools/cron-tool.d.ts +0 -96
- package/dist/skills/tools/cron-tool.js +0 -165
- package/dist/skills/tools/edit-tool.d.ts +0 -43
- package/dist/skills/tools/edit-tool.js +0 -72
- package/dist/skills/tools/exec-tool.d.ts +0 -117
- package/dist/skills/tools/exec-tool.js +0 -354
- package/dist/skills/tools/file-management-tool.d.ts +0 -90
- package/dist/skills/tools/file-management-tool.js +0 -166
- package/dist/skills/tools/image-generate-tool.d.ts +0 -74
- package/dist/skills/tools/image-generate-tool.js +0 -91
- package/dist/skills/tools/instructions-tool.d.ts +0 -65
- package/dist/skills/tools/instructions-tool.js +0 -209
- package/dist/skills/tools/lsp-tool.d.ts +0 -153
- package/dist/skills/tools/lsp-tool.js +0 -230
- package/dist/skills/tools/media-cancel-tool.d.ts +0 -30
- package/dist/skills/tools/media-cancel-tool.js +0 -46
- package/dist/skills/tools/monitor-tool.d.ts +0 -113
- package/dist/skills/tools/monitor-tool.js +0 -129
- package/dist/skills/tools/music-generate-tool.d.ts +0 -80
- package/dist/skills/tools/music-generate-tool.js +0 -98
- package/dist/skills/tools/notebook-edit-tool.d.ts +0 -15
- package/dist/skills/tools/notebook-edit-tool.js +0 -206
- package/dist/skills/tools/patch-tool.d.ts +0 -52
- package/dist/skills/tools/patch-tool.js +0 -556
- package/dist/skills/tools/petdex-create-tool.d.ts +0 -47
- package/dist/skills/tools/petdex-create-tool.js +0 -95
- package/dist/skills/tools/plan-mode-tool.d.ts +0 -98
- package/dist/skills/tools/plan-mode-tool.js +0 -164
- package/dist/skills/tools/read-tool.d.ts +0 -51
- package/dist/skills/tools/read-tool.js +0 -88
- package/dist/skills/tools/search-tool.d.ts +0 -112
- package/dist/skills/tools/search-tool.js +0 -226
- package/dist/skills/tools/shell/bash-provider.d.ts +0 -26
- package/dist/skills/tools/shell/bash-provider.js +0 -125
- package/dist/skills/tools/shell/command-classification.d.ts +0 -44
- package/dist/skills/tools/shell/command-classification.js +0 -119
- package/dist/skills/tools/shell/command-semantics.d.ts +0 -14
- package/dist/skills/tools/shell/command-semantics.js +0 -87
- package/dist/skills/tools/shell/destructive-command-warning.d.ts +0 -10
- package/dist/skills/tools/shell/destructive-command-warning.js +0 -80
- package/dist/skills/tools/shell/exec-permissions.d.ts +0 -52
- package/dist/skills/tools/shell/exec-permissions.js +0 -277
- package/dist/skills/tools/shell/index.d.ts +0 -18
- package/dist/skills/tools/shell/index.js +0 -18
- package/dist/skills/tools/shell/powershell-provider.d.ts +0 -15
- package/dist/skills/tools/shell/powershell-provider.js +0 -80
- package/dist/skills/tools/shell/sandbox/helper-resolver.d.ts +0 -7
- package/dist/skills/tools/shell/sandbox/helper-resolver.js +0 -20
- package/dist/skills/tools/shell/sandbox/landlock-argv.d.ts +0 -6
- package/dist/skills/tools/shell/sandbox/landlock-argv.js +0 -13
- package/dist/skills/tools/shell/sandbox/platform.d.ts +0 -3
- package/dist/skills/tools/shell/sandbox/platform.js +0 -13
- package/dist/skills/tools/shell/sandbox/sandbox-launcher.d.ts +0 -15
- package/dist/skills/tools/shell/sandbox/sandbox-launcher.js +0 -59
- package/dist/skills/tools/shell/sandbox/sandbox-scope.d.ts +0 -6
- package/dist/skills/tools/shell/sandbox/sandbox-scope.js +0 -17
- package/dist/skills/tools/shell/sandbox/sandbox-types.d.ts +0 -47
- package/dist/skills/tools/shell/sandbox/sandbox-types.js +0 -1
- package/dist/skills/tools/shell/sandbox/seatbelt-profile.d.ts +0 -6
- package/dist/skills/tools/shell/sandbox/seatbelt-profile.js +0 -28
- package/dist/skills/tools/shell/shell-command.d.ts +0 -54
- package/dist/skills/tools/shell/shell-command.js +0 -347
- package/dist/skills/tools/shell/shell-exec.d.ts +0 -38
- package/dist/skills/tools/shell/shell-exec.js +0 -202
- package/dist/skills/tools/shell/shell-provider.d.ts +0 -85
- package/dist/skills/tools/shell/shell-provider.js +0 -38
- package/dist/skills/tools/shell/subprocess-env.d.ts +0 -6
- package/dist/skills/tools/shell/subprocess-env.js +0 -87
- package/dist/skills/tools/shell/task-output.d.ts +0 -44
- package/dist/skills/tools/shell/task-output.js +0 -137
- package/dist/skills/tools/skill-tool.d.ts +0 -106
- package/dist/skills/tools/skill-tool.js +0 -265
- package/dist/skills/tools/sleep-tool.d.ts +0 -49
- package/dist/skills/tools/sleep-tool.js +0 -81
- package/dist/skills/tools/structured-output-tool.d.ts +0 -116
- package/dist/skills/tools/structured-output-tool.js +0 -176
- package/dist/skills/tools/stt-tool.d.ts +0 -33
- package/dist/skills/tools/stt-tool.js +0 -58
- package/dist/skills/tools/task-tool.d.ts +0 -125
- package/dist/skills/tools/task-tool.js +0 -390
- package/dist/skills/tools/team-tool.d.ts +0 -156
- package/dist/skills/tools/team-tool.js +0 -173
- package/dist/skills/tools/three-d-generate-tool.d.ts +0 -46
- package/dist/skills/tools/three-d-generate-tool.js +0 -66
- package/dist/skills/tools/tool-search-tool.d.ts +0 -62
- package/dist/skills/tools/tool-search-tool.js +0 -187
- package/dist/skills/tools/tts-tool.d.ts +0 -50
- package/dist/skills/tools/tts-tool.js +0 -58
- package/dist/skills/tools/video-edit-tool.d.ts +0 -72
- package/dist/skills/tools/video-edit-tool.js +0 -84
- package/dist/skills/tools/video-generate-tool.d.ts +0 -162
- package/dist/skills/tools/video-generate-tool.js +0 -178
- package/dist/skills/tools/video-merge-tool.d.ts +0 -105
- package/dist/skills/tools/video-merge-tool.js +0 -95
- package/dist/skills/tools/video-upscale-tool.d.ts +0 -45
- package/dist/skills/tools/video-upscale-tool.js +0 -57
- package/dist/skills/tools/voice-clone-tool.d.ts +0 -40
- package/dist/skills/tools/voice-clone-tool.js +0 -58
- package/dist/skills/tools/web-answer-tool.d.ts +0 -27
- package/dist/skills/tools/web-answer-tool.js +0 -124
- package/dist/skills/tools/web-fetch-tool.d.ts +0 -80
- package/dist/skills/tools/web-fetch-tool.js +0 -95
- package/dist/skills/tools/web-research-tool.d.ts +0 -48
- package/dist/skills/tools/web-research-tool.js +0 -254
- package/dist/skills/tools/web-search-tool.d.ts +0 -46
- package/dist/skills/tools/web-search-tool.js +0 -95
- package/dist/skills/tools/workflow-tool.d.ts +0 -45
- package/dist/skills/tools/workflow-tool.js +0 -113
- package/dist/skills/tools/worktree-tool.d.ts +0 -69
- package/dist/skills/tools/worktree-tool.js +0 -147
- package/dist/skills/tools/write-tool.d.ts +0 -45
- package/dist/skills/tools/write-tool.js +0 -83
- package/dist/skills/tools.d.ts +0 -45
- package/dist/skills/tools.js +0 -165
- package/dist/skills/web-search/brave-source.d.ts +0 -2
- package/dist/skills/web-search/brave-source.js +0 -36
- package/dist/skills/web-search/crawl4ai-extractor.d.ts +0 -15
- package/dist/skills/web-search/crawl4ai-extractor.js +0 -92
- package/dist/skills/web-search/embedding-rerank.d.ts +0 -13
- package/dist/skills/web-search/embedding-rerank.js +0 -44
- package/dist/skills/web-search/exa-source.d.ts +0 -2
- package/dist/skills/web-search/exa-source.js +0 -43
- package/dist/skills/web-search/multi-source-backend.d.ts +0 -23
- package/dist/skills/web-search/multi-source-backend.js +0 -99
- package/dist/skills/web-search/redis-source-cache.d.ts +0 -6
- package/dist/skills/web-search/redis-source-cache.js +0 -44
- package/dist/skills/web-search/search-svc-source.d.ts +0 -4
- package/dist/skills/web-search/search-svc-source.js +0 -64
- package/dist/skills/web-search/searxng-source.d.ts +0 -2
- package/dist/skills/web-search/searxng-source.js +0 -91
- package/dist/skills/web-search/serper-source.d.ts +0 -2
- package/dist/skills/web-search/serper-source.js +0 -33
- package/dist/skills/web-search/source-factory.d.ts +0 -5
- package/dist/skills/web-search/source-factory.js +0 -15
- package/dist/skills/web-search/stability.d.ts +0 -26
- package/dist/skills/web-search/stability.js +0 -57
- package/dist/transport/acp-event-emitter.d.ts +0 -21
- package/dist/transport/acp-event-emitter.js +0 -142
- package/dist/transport/acp-event-emitter.test.d.ts +0 -1
- package/dist/transport/acp-event-emitter.test.js +0 -87
- package/dist/transport/acp-server.d.ts +0 -169
- package/dist/transport/acp-server.js +0 -480
- package/dist/transport/acp-server.test.d.ts +0 -1
- package/dist/transport/acp-server.test.js +0 -230
- package/dist/transport/index.d.ts +0 -7
- package/dist/transport/index.js +0 -5
- package/dist/transport/io-transport.d.ts +0 -19
- package/dist/transport/io-transport.js +0 -8
package/dist/agent/tool-loop.js
DELETED
|
@@ -1,1017 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool loop state machine - CC query.ts aligned.
|
|
3
|
-
*
|
|
4
|
-
* Architecture:
|
|
5
|
-
* - Infinite while(true) loop with centralized State object (CC parity)
|
|
6
|
-
* - 7 labeled continue sites matching CC's query loop transitions
|
|
7
|
-
* - Error Withholding: 413 / max_output_tokens / media errors are
|
|
8
|
-
* withheld from callers during recovery attempts
|
|
9
|
-
* - Context Collapse drain: staged collapses committed on 413
|
|
10
|
-
* BEFORE falling through to reactive compact
|
|
11
|
-
* - Media error recovery: image/media errors -> reactive compact retry
|
|
12
|
-
* - Hermes delta suppression preserved
|
|
13
|
-
* - StreamingToolExecutor preserved
|
|
14
|
-
* - Sub-agent fork depth preserved
|
|
15
|
-
* - Skill learning evaluation preserved
|
|
16
|
-
*
|
|
17
|
-
* CC reference: src/query.ts queryLoop()
|
|
18
|
-
*
|
|
19
|
-
* Zero imports from express/pg/ioredis/ws.
|
|
20
|
-
*/
|
|
21
|
-
import { accumulateToolCalls } from "../runtime/ports/index.js";
|
|
22
|
-
import { fireHook } from "../contracts/fire-hook.js";
|
|
23
|
-
import { advanceToolLoopState, applyToolChoicePolicy, buildAssistantToolCallMessage, buildToolResultMessage, recoverToolLoopStateFromChatConversation, settleToolLoopState, calculateTokenWarningState, resolveApiErrorRecovery, resolveOutputTokenEscalation, shouldAbortTurn, createTurnLoopGuardState, shouldAttemptReactiveCompact, createReactiveCompactState, classifyError, createCollapseStore, recoverContextCollapseFromOverflow, } from "../orchestration/index.js";
|
|
24
|
-
import { DEFAULT_TEMPERATURE, MAX_CONSECUTIVE_FAILURES, MAX_IDENTICAL_CALL_REPEATS, DEFAULT_CONTEXT_WINDOW_TOKENS, RESPONSE_BUFFER_TOKENS, DEFAULT_MAX_OUTPUT_TOKENS, DEFAULT_MODEL_MAX_OUTPUT_TOKENS, MAX_OUTPUT_TOKENS_RECOVERY_LIMIT, ESCALATED_MAX_OUTPUT_TOKENS, MAX_API_RETRIES, } from "./tunable-defaults.js";
|
|
25
|
-
import { createToolMediaResultEvents, createToolResultEvent } from "./tool-loop/tool-result-events.js";
|
|
26
|
-
import { createToolSidecarEvents } from "./tool-loop/artifact-events.js";
|
|
27
|
-
import { findLastToolError, isEmptyToolResult, resolveToolLoopBudget, summarizeToolInput, synthesizeFallbackContent, } from "./tool-loop/loop-helpers.js";
|
|
28
|
-
import { isMaxOutputTokensTruncation, isMediaSizeError, isPromptTooLongError, } from "./tool-loop/recovery-helpers.js";
|
|
29
|
-
import { executeSingleLLMRound } from "./tool-loop/single-round.js";
|
|
30
|
-
import { runCompressionPipeline } from "./tool-loop/compression-pipeline.js";
|
|
31
|
-
import { handleStreamError } from "./tool-loop/stream-error-recovery.js";
|
|
32
|
-
import { resolveCompletionActionPolicy } from "./tool-loop/completion-action-policy.js";
|
|
33
|
-
import { resolveCompletionStopPolicy } from "./tool-loop/completion-stop-policy.js";
|
|
34
|
-
import { resolveBudgetContinuationPolicy } from "./tool-loop/budget-continuation-policy.js";
|
|
35
|
-
import { resolveToolUsageSkillInstruction } from "./tool-loop/skill-instruction-policy.js";
|
|
36
|
-
import { newVariantFailureNudges, recordToolFailureResult, splitVariantToolCalls, variantBlockNudge, } from "./tool-loop/tool-failure-policy.js";
|
|
37
|
-
// - Main tool loop -
|
|
38
|
-
/**
|
|
39
|
-
* Execute the tool loop -CC query.ts queryLoop() aligned.
|
|
40
|
-
*
|
|
41
|
-
* Yields TurnEvent stream. The caller (Agent class) wraps this with
|
|
42
|
-
* start/end lifecycle and error handling.
|
|
43
|
-
*
|
|
44
|
-
* Architecture: infinite while(true) with centralized State + 7 continue
|
|
45
|
-
* labels. Error withholding gates recoverable errors through collapse
|
|
46
|
-
* drain ->reactive compact ->escalation ->recovery message pipeline
|
|
47
|
-
* before surfacing to callers.
|
|
48
|
-
*/
|
|
49
|
-
export async function* executeToolLoop(params, transport, toolInvoker, log) {
|
|
50
|
-
const { turnId, sessionId, messages: inputMessages, tools, model, apiKey, temperature = DEFAULT_TEMPERATURE, hooks, signal, } = params;
|
|
51
|
-
const hookCtx = { sessionId, turnId };
|
|
52
|
-
const maxTurns = params.maxTurns ?? 0;
|
|
53
|
-
const querySource = params.querySource;
|
|
54
|
-
// - Tool eligibility filtering (allow/ask/deny + unified risk) -
|
|
55
|
-
const eligibility = params.runtimePorts.resolveToolEligibility(tools, params.toolEligibilityContext);
|
|
56
|
-
const effectiveTools = eligibility.eligibleTools;
|
|
57
|
-
// Emit blocked tool events
|
|
58
|
-
for (const blocked of eligibility.blockedTools) {
|
|
59
|
-
yield { type: "tool_blocked", turnId, callId: "", name: blocked.toolName, reason: "blocked-by-policy" };
|
|
60
|
-
}
|
|
61
|
-
// - No tools: single LLM call, no loop -
|
|
62
|
-
if (!effectiveTools.length) {
|
|
63
|
-
yield* executeSingleLLMRound(turnId, model, inputMessages, apiKey, temperature, signal, transport, log);
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
// - Immutable setup -
|
|
67
|
-
const toolBudget = resolveToolLoopBudget(params.maxRounds);
|
|
68
|
-
// Turn-loop-guard config (CC-aligned)
|
|
69
|
-
const guardConfig = {
|
|
70
|
-
contextWindowTokens: params.contextWindowTokens ?? DEFAULT_CONTEXT_WINDOW_TOKENS,
|
|
71
|
-
responseBufferTokens: RESPONSE_BUFFER_TOKENS,
|
|
72
|
-
maxOutputTokens: params.maxOutputTokens ?? DEFAULT_MAX_OUTPUT_TOKENS,
|
|
73
|
-
abortSignal: signal,
|
|
74
|
-
reactiveCompactEnabled: true,
|
|
75
|
-
outputEscalationEnabled: true,
|
|
76
|
-
};
|
|
77
|
-
// Skill learning metrics (loop-local, not on State)
|
|
78
|
-
const distinctToolNames = new Set();
|
|
79
|
-
let totalToolCallCount = 0;
|
|
80
|
-
// Mutable tool list -refreshed between turns if refreshTools callback provided (CC parity)
|
|
81
|
-
let currentTools = effectiveTools;
|
|
82
|
-
// Pending tool use summary -fire-and-forget promise from previous turn (CC pendingToolUseSummary parity)
|
|
83
|
-
let pendingToolUseSummary;
|
|
84
|
-
let requiredToolChoiceSatisfied = false;
|
|
85
|
-
let requiredToolChoiceRetryCount = 0;
|
|
86
|
-
// - Mutable cross-iteration state (CC State parity) -
|
|
87
|
-
// The loop body destructures this at the top of each iteration.
|
|
88
|
-
// Continue sites write `state = { ...next }` instead of N separate assignments.
|
|
89
|
-
let state = {
|
|
90
|
-
messages: [...inputMessages],
|
|
91
|
-
maxOutputTokensRecoveryCount: 0,
|
|
92
|
-
hasAttemptedReactiveCompact: false,
|
|
93
|
-
maxOutputTokensOverride: undefined,
|
|
94
|
-
turnCount: 1,
|
|
95
|
-
transition: undefined,
|
|
96
|
-
guardState: createTurnLoopGuardState(guardConfig),
|
|
97
|
-
reactiveCompactState: createReactiveCompactState(),
|
|
98
|
-
toolLoopState: recoverToolLoopStateFromChatConversation({
|
|
99
|
-
maxRounds: toolBudget,
|
|
100
|
-
replayMessages: [...inputMessages],
|
|
101
|
-
}).state,
|
|
102
|
-
consecutiveFailedRounds: 0,
|
|
103
|
-
finalText: "",
|
|
104
|
-
totalUsage: { inputTokens: 0, outputTokens: 0 },
|
|
105
|
-
collapseStore: createCollapseStore(),
|
|
106
|
-
currentModel: model,
|
|
107
|
-
consecutive529Errors: 0,
|
|
108
|
-
consecutiveApiRetries: 0,
|
|
109
|
-
stopHookActive: undefined,
|
|
110
|
-
lastResponseId: undefined,
|
|
111
|
-
snipRemovedIds: new Set(),
|
|
112
|
-
contentReplacementState: params.runtimePorts.createContentReplacementState(),
|
|
113
|
-
budgetContinuationCount: 0,
|
|
114
|
-
lastBudgetDeltaTokens: 0,
|
|
115
|
-
lastBudgetGlobalTokens: 0,
|
|
116
|
-
identicalCallCounts: new Map(),
|
|
117
|
-
toolFailureCounts: new Map(),
|
|
118
|
-
fileReadCounts: new Map(),
|
|
119
|
-
recoveryTrace: new Map(),
|
|
120
|
-
};
|
|
121
|
-
// P0: hard iteration cap -safety net against infinite recovery loops.
|
|
122
|
-
// Unlike turnCount (only incremented on successful tool-call rounds),
|
|
123
|
-
// this counter increments on EVERY while-loop iteration including
|
|
124
|
-
// recovery retries. CC relies on bounded retry limits per recovery path;
|
|
125
|
-
// this provides a catch-all for any path that might loop unboundedly.
|
|
126
|
-
const MAX_TOTAL_ITERATIONS = Math.max(maxTurns * 5, 200);
|
|
127
|
-
let totalIterations = 0;
|
|
128
|
-
// Record + emit a recovery event. Centralizes the per-turn recovery trace so the
|
|
129
|
-
// path a turn took is observable (surfaced on the final `end` event). Named
|
|
130
|
-
// emitRecovery, not `recovery`, to avoid shadowing the local resolveApiErrorRecovery
|
|
131
|
-
// result inside the stream-error handler.
|
|
132
|
-
const emitRecovery = (action, detail) => {
|
|
133
|
-
state.recoveryTrace.set(action, (state.recoveryTrace.get(action) ?? 0) + 1);
|
|
134
|
-
return { type: "recovery", turnId, action, detail };
|
|
135
|
-
};
|
|
136
|
-
// Build the terminal `end` event, attaching the recovery trace when non-empty.
|
|
137
|
-
const endEvent = (content) => ({
|
|
138
|
-
type: "end",
|
|
139
|
-
turnId,
|
|
140
|
-
content,
|
|
141
|
-
usage: state.totalUsage,
|
|
142
|
-
model: state.currentModel,
|
|
143
|
-
...(state.recoveryTrace.size > 0 ? { recoveryTrace: Object.fromEntries(state.recoveryTrace) } : {}),
|
|
144
|
-
});
|
|
145
|
-
// - Main loop (CC while(true) parity) -
|
|
146
|
-
// eslint-disable-next-line no-constant-condition
|
|
147
|
-
while (true) {
|
|
148
|
-
// P0: hard iteration cap -terminate if recovery loops go unbounded
|
|
149
|
-
totalIterations++;
|
|
150
|
-
if (totalIterations > MAX_TOTAL_ITERATIONS) {
|
|
151
|
-
log.info(`hard iteration cap reached (${MAX_TOTAL_ITERATIONS}), forcing completion`);
|
|
152
|
-
const endContent = state.finalText || synthesizeFallbackContent(state.messages, log);
|
|
153
|
-
yield endEvent(endContent);
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
// Destructure state at the top of each iteration (CC pattern)
|
|
157
|
-
const { messages, maxOutputTokensRecoveryCount, maxOutputTokensOverride, turnCount, guardState, reactiveCompactState, collapseStore, } = state;
|
|
158
|
-
let { toolLoopState } = state;
|
|
159
|
-
// - Pre-round checks -
|
|
160
|
-
// Yield pending tool use summary from previous turn (CC pendingToolUseSummary parity)
|
|
161
|
-
if (pendingToolUseSummary) {
|
|
162
|
-
try {
|
|
163
|
-
const summary = await pendingToolUseSummary;
|
|
164
|
-
if (summary) {
|
|
165
|
-
yield { type: "tool_use_summary", turnId, summary };
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
catch { /* non-blocking */ }
|
|
169
|
-
pendingToolUseSummary = undefined;
|
|
170
|
-
}
|
|
171
|
-
// Tool refresh between turns (CC refreshTools parity)
|
|
172
|
-
if (params.refreshTools && turnCount > 1) {
|
|
173
|
-
const refreshed = params.refreshTools();
|
|
174
|
-
if (refreshed !== currentTools) {
|
|
175
|
-
currentTools = refreshed;
|
|
176
|
-
log.debug(`tools refreshed: ${refreshed.length} tools`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// Abort check
|
|
180
|
-
if (shouldAbortTurn(guardState, guardConfig)) {
|
|
181
|
-
log.info(`turn aborted by guard at turn ${turnCount}`);
|
|
182
|
-
yield { type: "error", turnId, error: "Turn aborted", code: "ABORTED", usage: state.totalUsage };
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
// Token budget pre-check
|
|
186
|
-
const tokenWarning = calculateTokenWarningState(guardState, guardConfig);
|
|
187
|
-
if (tokenWarning.level === "blocking") {
|
|
188
|
-
if (tokenWarning.reason === "prompt_too_long" &&
|
|
189
|
-
shouldAttemptReactiveCompact(reactiveCompactState)) {
|
|
190
|
-
reactiveCompactState.attemptedThisTurn = true;
|
|
191
|
-
guardState.hasAttemptedReactiveCompact = true;
|
|
192
|
-
log.info(`token budget blocking (${tokenWarning.reason}), reactive compact needed`);
|
|
193
|
-
yield emitRecovery("reactive_compact", "token budget pre-check");
|
|
194
|
-
}
|
|
195
|
-
log.info(`token budget blocking (${tokenWarning.reason}), ending tool loop`);
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
198
|
-
if (tokenWarning.level === "warning") {
|
|
199
|
-
log.info(`token budget warning: ${tokenWarning.usagePercent}% used, ${tokenWarning.remainingTokens} remaining`);
|
|
200
|
-
}
|
|
201
|
-
// - Context compression pipeline (CC query.ts parity) -
|
|
202
|
-
// tool-result-budget → snip → microcompact → collapse → autocompact → whitespace
|
|
203
|
-
// filter. Extracted to tool-loop/compression-pipeline.ts (see it for stage detail);
|
|
204
|
-
// no control-flow escape, so it is a clean `yield*` boundary.
|
|
205
|
-
let messagesForQuery = yield* runCompressionPipeline({
|
|
206
|
-
messages,
|
|
207
|
-
contentReplacementState: state.contentReplacementState,
|
|
208
|
-
snipRemovedIds: state.snipRemovedIds,
|
|
209
|
-
collapseStore,
|
|
210
|
-
guardState,
|
|
211
|
-
guardConfig,
|
|
212
|
-
runtimePorts: params.runtimePorts,
|
|
213
|
-
hooks,
|
|
214
|
-
hookCtx,
|
|
215
|
-
sessionId,
|
|
216
|
-
currentModel: state.currentModel,
|
|
217
|
-
log,
|
|
218
|
-
recovery: emitRecovery,
|
|
219
|
-
onAutocompact: () => { state.hasAttemptedReactiveCompact = false; },
|
|
220
|
-
});
|
|
221
|
-
// - Build tool loop request -
|
|
222
|
-
const roundToolChoice = params.toolChoice === "required" && requiredToolChoiceSatisfied
|
|
223
|
-
? "auto"
|
|
224
|
-
: (params.toolChoice ?? "auto");
|
|
225
|
-
const toolChoiceResult = applyToolChoicePolicy({
|
|
226
|
-
tools: currentTools,
|
|
227
|
-
toolChoice: roundToolChoice,
|
|
228
|
-
});
|
|
229
|
-
const repaired = recoverToolLoopStateFromChatConversation({
|
|
230
|
-
maxRounds: toolBudget,
|
|
231
|
-
replayMessages: messagesForQuery,
|
|
232
|
-
lastStopReason: toolLoopState.lastStopReason,
|
|
233
|
-
options: { stopReason: toolLoopState.lastStopReason },
|
|
234
|
-
});
|
|
235
|
-
const requestMessages = toolChoiceResult.extraSystemPrompt
|
|
236
|
-
? [
|
|
237
|
-
{ role: "system", content: toolChoiceResult.extraSystemPrompt },
|
|
238
|
-
...repaired.state.replayMessages,
|
|
239
|
-
]
|
|
240
|
-
: repaired.state.replayMessages;
|
|
241
|
-
toolLoopState = repaired.state;
|
|
242
|
-
if (repaired.recoveryActions.length > 0) {
|
|
243
|
-
log.debug(`tool loop recovery: ${repaired.recoveryActions.map((a) => a.detail ?? a.kind).join("; ")}`);
|
|
244
|
-
}
|
|
245
|
-
log.debug(`turn ${turnCount}, messages: ${requestMessages.length}`);
|
|
246
|
-
// Hook: turn.before_inference
|
|
247
|
-
fireHook(hooks, "turn.before_inference", { ...hookCtx, model: state.currentModel }, log);
|
|
248
|
-
// - Streaming LLM round with Hermes delta suppression -
|
|
249
|
-
let hasToolCalls = false;
|
|
250
|
-
const textChunks = [];
|
|
251
|
-
const toolCallAccumulator = new Map();
|
|
252
|
-
let finishReason = "stop";
|
|
253
|
-
let roundUsage;
|
|
254
|
-
let streamError = null;
|
|
255
|
-
// Error Withholding: track whether the response is a recoverable error
|
|
256
|
-
let withheldError = false;
|
|
257
|
-
let sawTerminalChunk = false;
|
|
258
|
-
// Anthropic thinking blocks -accumulated for passback in subsequent requests
|
|
259
|
-
const thinkingChunks = [];
|
|
260
|
-
const thinkingBlocks = [];
|
|
261
|
-
try {
|
|
262
|
-
for await (const chunk of transport.stream({
|
|
263
|
-
model: state.currentModel,
|
|
264
|
-
messages: requestMessages,
|
|
265
|
-
tools: toolChoiceResult.tools,
|
|
266
|
-
toolChoice: toolChoiceResult.normalizedToolChoice ??
|
|
267
|
-
"auto",
|
|
268
|
-
temperature,
|
|
269
|
-
maxTokens: (maxOutputTokensOverride ?? guardState.currentMaxOutputTokens) || undefined,
|
|
270
|
-
streamRequired: params.streamRequired,
|
|
271
|
-
previousResponseId: state.lastResponseId,
|
|
272
|
-
reasoning: params.reasoning,
|
|
273
|
-
promptCacheKey: params.promptCacheKey,
|
|
274
|
-
promptCacheRetention: params.promptCacheRetention,
|
|
275
|
-
serviceTier: params.serviceTier,
|
|
276
|
-
openaiBuiltinTools: params.openaiBuiltinTools,
|
|
277
|
-
maxToolCalls: params.maxToolCalls,
|
|
278
|
-
parallelToolCalls: params.parallelToolCalls,
|
|
279
|
-
textVerbosity: params.textVerbosity,
|
|
280
|
-
}, apiKey, signal)) {
|
|
281
|
-
switch (chunk.type) {
|
|
282
|
-
case "delta":
|
|
283
|
-
textChunks.push(chunk.text);
|
|
284
|
-
break;
|
|
285
|
-
case "tool_call_delta":
|
|
286
|
-
hasToolCalls = true;
|
|
287
|
-
accumulateToolCalls(toolCallAccumulator, chunk);
|
|
288
|
-
break;
|
|
289
|
-
case "reasoning_delta":
|
|
290
|
-
thinkingChunks.push(chunk.text);
|
|
291
|
-
break;
|
|
292
|
-
case "reasoning_block_complete":
|
|
293
|
-
// Finalize thinking block with accumulated text + signature.
|
|
294
|
-
// CC parity (stripSignatureBlocks): only store blocks with
|
|
295
|
-
// valid signatures. DeepSeek may not emit signature_delta,
|
|
296
|
-
// leaving signature as "". Sending empty signatures back
|
|
297
|
-
// to the API causes 400 errors.
|
|
298
|
-
if (chunk.signature) {
|
|
299
|
-
thinkingBlocks.push({
|
|
300
|
-
thinking: thinkingChunks.join(""),
|
|
301
|
-
signature: chunk.signature,
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
thinkingChunks.length = 0;
|
|
305
|
-
break;
|
|
306
|
-
case "usage":
|
|
307
|
-
roundUsage = {
|
|
308
|
-
inputTokens: chunk.promptTokens,
|
|
309
|
-
outputTokens: chunk.completionTokens,
|
|
310
|
-
reasoningTokens: chunk.reasoningTokens,
|
|
311
|
-
cacheRead: chunk.cacheReadTokens,
|
|
312
|
-
cacheWrite: chunk.cacheCreationTokens,
|
|
313
|
-
};
|
|
314
|
-
break;
|
|
315
|
-
case "response_id":
|
|
316
|
-
// Capture for server-side context chain (previous_response_id)
|
|
317
|
-
state.lastResponseId = chunk.id;
|
|
318
|
-
break;
|
|
319
|
-
case "annotations":
|
|
320
|
-
// Forward citation annotations to UI
|
|
321
|
-
yield { type: "annotations", turnId, annotations: chunk.annotations };
|
|
322
|
-
break;
|
|
323
|
-
case "builtin_tool_status":
|
|
324
|
-
// Forward platform builtin tool progress as heartbeat
|
|
325
|
-
yield { type: "heartbeat", turnId, message: `${chunk.toolType}: ${chunk.event}` };
|
|
326
|
-
break;
|
|
327
|
-
case "done":
|
|
328
|
-
sawTerminalChunk = true;
|
|
329
|
-
finishReason = chunk.finishReason;
|
|
330
|
-
break;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// Hook: turn.after_inference (success path)
|
|
334
|
-
if (!hasToolCalls) {
|
|
335
|
-
fireHook(hooks, "turn.after_inference", { ...hookCtx, model: state.currentModel }, log);
|
|
336
|
-
}
|
|
337
|
-
// Post-sampling hooks -fire-and-forget (CC executePostSamplingHooks parity)
|
|
338
|
-
if (params.postSamplingHooks && params.postSamplingHooks.length > 0) {
|
|
339
|
-
const pshModel = state.currentModel;
|
|
340
|
-
for (const hook of params.postSamplingHooks) {
|
|
341
|
-
try {
|
|
342
|
-
void hook({ messages: [...messagesForQuery], model: pshModel, sessionId });
|
|
343
|
-
}
|
|
344
|
-
catch { /* non-blocking */ }
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
catch (err) {
|
|
349
|
-
// Stream-error recovery (FallbackTriggeredError / stale-connection / max_tokens
|
|
350
|
-
// overflow / 429·529 transient) is extracted to tool-loop/stream-error-recovery.ts.
|
|
351
|
-
// It yields any user-facing events and returns a control-flow decision the loop
|
|
352
|
-
// applies here — keeping the loop's densest branch behind one named boundary.
|
|
353
|
-
const decision = yield* handleStreamError(err, {
|
|
354
|
-
state,
|
|
355
|
-
guardState,
|
|
356
|
-
fallbackModel: params.fallbackModel,
|
|
357
|
-
signal,
|
|
358
|
-
querySource,
|
|
359
|
-
turnId,
|
|
360
|
-
log,
|
|
361
|
-
emitRecovery,
|
|
362
|
-
});
|
|
363
|
-
if (decision.kind === "return")
|
|
364
|
-
return;
|
|
365
|
-
if (decision.kind === "continue") {
|
|
366
|
-
state = { ...state, ...decision.patch };
|
|
367
|
-
continue;
|
|
368
|
-
}
|
|
369
|
-
streamError = decision.streamError;
|
|
370
|
-
}
|
|
371
|
-
if (!streamError && !sawTerminalChunk) {
|
|
372
|
-
const message = "LLM stream closed before a terminal event; the response was likely truncated upstream.";
|
|
373
|
-
fireHook(hooks, "stop.failure", { sessionId, reason: "RETRYABLE_TRANSIENT", error: message }, log);
|
|
374
|
-
yield { type: "error", turnId, error: message, code: "RETRYABLE_TRANSIENT", usage: state.totalUsage };
|
|
375
|
-
return;
|
|
376
|
-
}
|
|
377
|
-
// Hook: turn.after_inference (error path)
|
|
378
|
-
if (streamError) {
|
|
379
|
-
fireHook(hooks, "turn.after_inference", { ...hookCtx, model: state.currentModel, response: { error: streamError.message } }, log);
|
|
380
|
-
}
|
|
381
|
-
// - Handle LLM errors with Error Withholding (CC parity) -
|
|
382
|
-
if (streamError) {
|
|
383
|
-
// Check if this is a recoverable prompt-too-long error
|
|
384
|
-
if (isPromptTooLongError(streamError)) {
|
|
385
|
-
// Withhold the error -attempt recovery before surfacing
|
|
386
|
-
withheldError = true;
|
|
387
|
-
log.info(`withheld prompt_too_long error (status=${streamError.status})`);
|
|
388
|
-
}
|
|
389
|
-
else if (isMediaSizeError(streamError)) {
|
|
390
|
-
// P1: Media error withholding (CC ImageSizeError/ImageResizeError parity)
|
|
391
|
-
// Withhold for reactive compact strip-retry
|
|
392
|
-
withheldError = true;
|
|
393
|
-
log.info(`withheld media_size error (status=${streamError.status})`);
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
// Non-recoverable errors: handle via turn-loop-guard
|
|
397
|
-
const recovery = resolveApiErrorRecovery({ status: streamError.status ?? 500, message: streamError.message }, guardState, guardConfig);
|
|
398
|
-
if (recovery.action === "reactive_compact" &&
|
|
399
|
-
shouldAttemptReactiveCompact(reactiveCompactState)) {
|
|
400
|
-
reactiveCompactState.attemptedThisTurn = true;
|
|
401
|
-
guardState.hasAttemptedReactiveCompact = true;
|
|
402
|
-
yield emitRecovery("reactive_compact", `API ${streamError.status ?? 500}: ${streamError.message}`);
|
|
403
|
-
}
|
|
404
|
-
if (recovery.action === "retry") {
|
|
405
|
-
const nextRetries = (state.consecutiveApiRetries ?? 0) + 1;
|
|
406
|
-
if (nextRetries > MAX_API_RETRIES) {
|
|
407
|
-
log.info(`API retry limit reached (${MAX_API_RETRIES}), aborting`);
|
|
408
|
-
const category = classifyError(streamError.status, streamError.message);
|
|
409
|
-
yield { type: "error", turnId, error: streamError.message, code: category, usage: state.totalUsage };
|
|
410
|
-
return;
|
|
411
|
-
}
|
|
412
|
-
yield emitRecovery("retry", recovery.reason);
|
|
413
|
-
state = { ...state, consecutiveApiRetries: nextRetries, transition: undefined };
|
|
414
|
-
continue;
|
|
415
|
-
}
|
|
416
|
-
// Unrecoverable
|
|
417
|
-
const category = classifyError(streamError.status, streamError.message);
|
|
418
|
-
fireHook(hooks, "stop.failure", { sessionId, reason: category, error: streamError.message }, log);
|
|
419
|
-
yield { type: "error", turnId, error: streamError.message, code: category, usage: state.totalUsage };
|
|
420
|
-
return;
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
// Accumulate usage
|
|
424
|
-
if (roundUsage) {
|
|
425
|
-
state.totalUsage.inputTokens += roundUsage.inputTokens;
|
|
426
|
-
state.totalUsage.outputTokens += roundUsage.outputTokens;
|
|
427
|
-
if (roundUsage.reasoningTokens) {
|
|
428
|
-
state.totalUsage.reasoningTokens = (state.totalUsage.reasoningTokens ?? 0) + roundUsage.reasoningTokens;
|
|
429
|
-
}
|
|
430
|
-
// CC accumulateUsage parity: forward cache tokens
|
|
431
|
-
if (roundUsage.cacheRead) {
|
|
432
|
-
state.totalUsage.cacheRead = (state.totalUsage.cacheRead ?? 0) + roundUsage.cacheRead;
|
|
433
|
-
}
|
|
434
|
-
if (roundUsage.cacheWrite) {
|
|
435
|
-
state.totalUsage.cacheWrite = (state.totalUsage.cacheWrite ?? 0) + roundUsage.cacheWrite;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
// Turn-loop-guard: update token state from usage feedback
|
|
439
|
-
if (roundUsage?.inputTokens) {
|
|
440
|
-
guardState.promptTokens = roundUsage.inputTokens;
|
|
441
|
-
}
|
|
442
|
-
const roundText = textChunks.join("");
|
|
443
|
-
// Convert accumulated tool call deltas to OpenAiToolCall[]
|
|
444
|
-
let toolCalls = [...toolCallAccumulator.values()].map((tc) => ({
|
|
445
|
-
id: tc.id || `tc_${turnId}_${turnCount}_${Math.random().toString(36).slice(2, 8)}`,
|
|
446
|
-
type: "function",
|
|
447
|
-
function: { name: tc.name, arguments: tc.arguments },
|
|
448
|
-
}));
|
|
449
|
-
// - No tool calls: recovery checks + completion -
|
|
450
|
-
if (toolCalls.length === 0 && !hasToolCalls) {
|
|
451
|
-
if (roundText) {
|
|
452
|
-
state.finalText = roundText;
|
|
453
|
-
}
|
|
454
|
-
if (params.toolChoice === "required" &&
|
|
455
|
-
!requiredToolChoiceSatisfied &&
|
|
456
|
-
currentTools.length > 0 &&
|
|
457
|
-
requiredToolChoiceRetryCount < 2) {
|
|
458
|
-
requiredToolChoiceRetryCount++;
|
|
459
|
-
const toolNames = currentTools
|
|
460
|
-
.map((tool) => tool.function.name)
|
|
461
|
-
.filter(Boolean)
|
|
462
|
-
.slice(0, 8)
|
|
463
|
-
.join(", ");
|
|
464
|
-
state = {
|
|
465
|
-
...state,
|
|
466
|
-
messages: [
|
|
467
|
-
...messages,
|
|
468
|
-
{
|
|
469
|
-
role: "user",
|
|
470
|
-
content: `You must call one available tool before answering. ` +
|
|
471
|
-
`Available tools for this request: ${toolNames}. ` +
|
|
472
|
-
`Do not answer from memory, prior context, or guesses.`,
|
|
473
|
-
},
|
|
474
|
-
],
|
|
475
|
-
finalText: "",
|
|
476
|
-
transition: { reason: "next_turn" },
|
|
477
|
-
};
|
|
478
|
-
continue;
|
|
479
|
-
}
|
|
480
|
-
// - 1. Withheld prompt-too-long recovery (CC collapse_drain_retry + reactive_compact_retry) -
|
|
481
|
-
if (withheldError && streamError && isPromptTooLongError(streamError)) {
|
|
482
|
-
// CC label: collapse_drain_retry
|
|
483
|
-
// First: drain all staged context-collapses.
|
|
484
|
-
// Skip if we already drained on the previous iteration.
|
|
485
|
-
if (state.transition?.reason !== "collapse_drain_retry") {
|
|
486
|
-
const drained = recoverContextCollapseFromOverflow(messagesForQuery, collapseStore);
|
|
487
|
-
if (drained.committed > 0) {
|
|
488
|
-
log.info(`collapse drain: committed ${drained.committed} stages`);
|
|
489
|
-
yield emitRecovery("collapse_drain", `${drained.committed} stages committed`);
|
|
490
|
-
state = {
|
|
491
|
-
...state,
|
|
492
|
-
messages: drained.messages,
|
|
493
|
-
transition: { reason: "collapse_drain_retry", committed: drained.committed },
|
|
494
|
-
};
|
|
495
|
-
continue; // CC: collapse_drain_retry
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
// CC label: reactive_compact_retry
|
|
499
|
-
// Collapse drain exhausted or insufficient -try reactive compact.
|
|
500
|
-
if (shouldAttemptReactiveCompact(reactiveCompactState)) {
|
|
501
|
-
reactiveCompactState.attemptedThisTurn = true;
|
|
502
|
-
guardState.hasAttemptedReactiveCompact = true;
|
|
503
|
-
log.info("withheld 413: reactive compact attempt");
|
|
504
|
-
yield emitRecovery("reactive_compact", "withheld prompt_too_long");
|
|
505
|
-
state = {
|
|
506
|
-
...state,
|
|
507
|
-
hasAttemptedReactiveCompact: true,
|
|
508
|
-
transition: { reason: "reactive_compact_retry" },
|
|
509
|
-
};
|
|
510
|
-
continue; // CC: reactive_compact_retry
|
|
511
|
-
}
|
|
512
|
-
// Recovery exhausted -surface the withheld error
|
|
513
|
-
log.info("withheld 413: recovery exhausted, surfacing error");
|
|
514
|
-
// CC executeStopFailureHooks parity: fire stop.failure on recovery exhaustion
|
|
515
|
-
fireHook(hooks, "stop.failure", { sessionId, reason: "prompt_too_long", error: streamError.message }, log);
|
|
516
|
-
yield { type: "error", turnId, error: streamError.message, code: "PROMPT_TOO_LONG", usage: state.totalUsage };
|
|
517
|
-
return;
|
|
518
|
-
}
|
|
519
|
-
// - 1b. Withheld media error recovery (CC ImageSizeError strip-retry) -
|
|
520
|
-
if (withheldError && streamError && isMediaSizeError(streamError)) {
|
|
521
|
-
if (shouldAttemptReactiveCompact(reactiveCompactState)) {
|
|
522
|
-
reactiveCompactState.attemptedThisTurn = true;
|
|
523
|
-
guardState.hasAttemptedReactiveCompact = true;
|
|
524
|
-
log.info("withheld media error: reactive compact strip-retry");
|
|
525
|
-
yield emitRecovery("reactive_compact", "media error strip-retry");
|
|
526
|
-
state = {
|
|
527
|
-
...state,
|
|
528
|
-
hasAttemptedReactiveCompact: true,
|
|
529
|
-
transition: { reason: "reactive_compact_retry" },
|
|
530
|
-
};
|
|
531
|
-
continue; // CC: reactive_compact_retry (media variant)
|
|
532
|
-
}
|
|
533
|
-
// Recovery exhausted -surface as image_error
|
|
534
|
-
log.info("withheld media error: recovery exhausted");
|
|
535
|
-
fireHook(hooks, "stop.failure", { sessionId, reason: "media_error", error: streamError.message }, log);
|
|
536
|
-
yield { type: "error", turnId, error: streamError.message, code: "IMAGE_ERROR", usage: state.totalUsage };
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
// - 2. Max output tokens recovery (CC max_output_tokens_escalate + max_output_tokens_recovery) -
|
|
540
|
-
if (isMaxOutputTokensTruncation(finishReason)) {
|
|
541
|
-
// Turn-loop-guard: escalate output budget
|
|
542
|
-
guardState.consecutiveTruncations += 1;
|
|
543
|
-
const modelMaxOutput = params.modelMaxOutputTokens ?? DEFAULT_MODEL_MAX_OUTPUT_TOKENS;
|
|
544
|
-
const escalation = resolveOutputTokenEscalation(guardState, guardConfig, modelMaxOutput);
|
|
545
|
-
// CC label: max_output_tokens_escalate
|
|
546
|
-
// First escalation: retry with higher output token limit (no message injection)
|
|
547
|
-
if (escalation.shouldEscalate &&
|
|
548
|
-
maxOutputTokensOverride === undefined) {
|
|
549
|
-
guardState.currentMaxOutputTokens = escalation.newMax;
|
|
550
|
-
log.info(`max_output_tokens escalate: ${escalation.newMax} tokens`);
|
|
551
|
-
yield emitRecovery("output_escalation", `${escalation.newMax} tokens`);
|
|
552
|
-
state = {
|
|
553
|
-
...state,
|
|
554
|
-
maxOutputTokensOverride: ESCALATED_MAX_OUTPUT_TOKENS,
|
|
555
|
-
transition: { reason: "max_output_tokens_escalate" },
|
|
556
|
-
};
|
|
557
|
-
continue; // CC: max_output_tokens_escalate
|
|
558
|
-
}
|
|
559
|
-
// CC label: max_output_tokens_recovery
|
|
560
|
-
// Escalation exhausted or already escalated -inject recovery message
|
|
561
|
-
if (maxOutputTokensRecoveryCount < MAX_OUTPUT_TOKENS_RECOVERY_LIMIT) {
|
|
562
|
-
const recoveryMsg = {
|
|
563
|
-
role: "user",
|
|
564
|
-
content: "Output token limit hit. Resume directly - no apology, no recap of what you were doing. " +
|
|
565
|
-
"Pick up mid-thought if that is where the cut happened. Break remaining work into smaller pieces.",
|
|
566
|
-
};
|
|
567
|
-
log.info(`max_output_tokens recovery #${maxOutputTokensRecoveryCount + 1}`);
|
|
568
|
-
yield emitRecovery("max_output_tokens_recovery", `attempt ${maxOutputTokensRecoveryCount + 1}`);
|
|
569
|
-
state = {
|
|
570
|
-
...state,
|
|
571
|
-
messages: [...messagesForQuery, recoveryMsg],
|
|
572
|
-
maxOutputTokensRecoveryCount: maxOutputTokensRecoveryCount + 1,
|
|
573
|
-
maxOutputTokensOverride: undefined,
|
|
574
|
-
transition: { reason: "max_output_tokens_recovery", attempt: maxOutputTokensRecoveryCount + 1 },
|
|
575
|
-
};
|
|
576
|
-
continue; // CC: max_output_tokens_recovery
|
|
577
|
-
}
|
|
578
|
-
// Recovery exhausted -surface truncation as completion
|
|
579
|
-
log.info("max_output_tokens recovery exhausted, completing with partial content");
|
|
580
|
-
}
|
|
581
|
-
else {
|
|
582
|
-
guardState.consecutiveTruncations = 0;
|
|
583
|
-
}
|
|
584
|
-
// - 3. Normal completion path -
|
|
585
|
-
toolLoopState = settleToolLoopState(toolLoopState, {
|
|
586
|
-
replayMessages: messages,
|
|
587
|
-
lastStopReason: "completed",
|
|
588
|
-
});
|
|
589
|
-
const stopPolicy = await resolveCompletionStopPolicy({
|
|
590
|
-
hooks,
|
|
591
|
-
sessionId,
|
|
592
|
-
messages,
|
|
593
|
-
finalText: state.finalText,
|
|
594
|
-
thinkingBlocks,
|
|
595
|
-
log,
|
|
596
|
-
});
|
|
597
|
-
if (stopPolicy?.action === "end") {
|
|
598
|
-
yield endEvent(stopPolicy.content);
|
|
599
|
-
return;
|
|
600
|
-
}
|
|
601
|
-
if (stopPolicy?.action === "continue") {
|
|
602
|
-
state = {
|
|
603
|
-
...state,
|
|
604
|
-
messages: stopPolicy.messages,
|
|
605
|
-
stopHookActive: stopPolicy.stopHookActive,
|
|
606
|
-
transition: stopPolicy.transition,
|
|
607
|
-
};
|
|
608
|
-
continue;
|
|
609
|
-
}
|
|
610
|
-
const budgetPolicy = resolveBudgetContinuationPolicy({
|
|
611
|
-
tokenBudget: params.tokenBudget,
|
|
612
|
-
totalUsage: state.totalUsage,
|
|
613
|
-
budgetContinuationCount: state.budgetContinuationCount,
|
|
614
|
-
lastBudgetDeltaTokens: state.lastBudgetDeltaTokens,
|
|
615
|
-
lastBudgetGlobalTokens: state.lastBudgetGlobalTokens,
|
|
616
|
-
messages,
|
|
617
|
-
finalText: state.finalText,
|
|
618
|
-
thinkingBlocks,
|
|
619
|
-
getBudgetContinuationMessage: params.runtimePorts.getBudgetContinuationMessage,
|
|
620
|
-
log,
|
|
621
|
-
});
|
|
622
|
-
if (budgetPolicy) {
|
|
623
|
-
yield emitRecovery("budget_continuation", budgetPolicy.recoveryDetail);
|
|
624
|
-
state = {
|
|
625
|
-
...state,
|
|
626
|
-
messages: budgetPolicy.messages,
|
|
627
|
-
budgetContinuationCount: budgetPolicy.budgetContinuationCount,
|
|
628
|
-
lastBudgetDeltaTokens: budgetPolicy.lastBudgetDeltaTokens,
|
|
629
|
-
lastBudgetGlobalTokens: budgetPolicy.lastBudgetGlobalTokens,
|
|
630
|
-
transition: budgetPolicy.transition,
|
|
631
|
-
};
|
|
632
|
-
continue;
|
|
633
|
-
}
|
|
634
|
-
const completionPolicy = resolveCompletionActionPolicy({
|
|
635
|
-
inputMessages,
|
|
636
|
-
messages,
|
|
637
|
-
finalText: state.finalText,
|
|
638
|
-
thinkingBlocks,
|
|
639
|
-
stopHookActive: state.stopHookActive,
|
|
640
|
-
totalToolCallCount,
|
|
641
|
-
distinctToolNames,
|
|
642
|
-
log,
|
|
643
|
-
});
|
|
644
|
-
if (completionPolicy) {
|
|
645
|
-
state = {
|
|
646
|
-
...state,
|
|
647
|
-
messages: completionPolicy.messages,
|
|
648
|
-
stopHookActive: completionPolicy.stopHookActive,
|
|
649
|
-
transition: completionPolicy.transition,
|
|
650
|
-
};
|
|
651
|
-
continue;
|
|
652
|
-
}
|
|
653
|
-
const skillInstruction = resolveToolUsageSkillInstruction({
|
|
654
|
-
totalToolCallCount,
|
|
655
|
-
distinctToolNames,
|
|
656
|
-
projectRoot: params.projectRoot,
|
|
657
|
-
});
|
|
658
|
-
if (skillInstruction) {
|
|
659
|
-
yield { type: "skill_instruction", turnId, instruction: skillInstruction };
|
|
660
|
-
}
|
|
661
|
-
// OpenAI format compensation (CC parity): when LLM ends with empty text
|
|
662
|
-
// after tool execution rounds, synthesize content from tool results so
|
|
663
|
-
// the user doesn't see a blank response.
|
|
664
|
-
const endContent = state.finalText || synthesizeFallbackContent(messages, log);
|
|
665
|
-
for (const text of textChunks) {
|
|
666
|
-
yield { type: "delta", turnId, text };
|
|
667
|
-
}
|
|
668
|
-
yield endEvent(endContent);
|
|
669
|
-
return;
|
|
670
|
-
}
|
|
671
|
-
// - Has tool calls ->execute them -
|
|
672
|
-
// Emit tool_call events for allowed calls (non-variant-blocked).
|
|
673
|
-
// Variant-blocked calls are suppressed from the event stream to prevent
|
|
674
|
-
// inflating the client's tool_call count with synthetic blocked responses.
|
|
675
|
-
// NOTE: This emission is done BEFORE blocking checks for the allowed subset,
|
|
676
|
-
// so we need to re-emit only for the final variantAllowed set below.
|
|
677
|
-
// Build assistant message with tool calls.
|
|
678
|
-
// CC parity: preserve text alongside tool_use (Anthropic content block coexistence).
|
|
679
|
-
// In OpenAI streaming, text deltas may arrive before tool_call_deltas;
|
|
680
|
-
// we keep that text so the LLM can reference its own reasoning in subsequent turns.
|
|
681
|
-
// A3 parity: For OpenAI-chat transport, reasoning_delta events accumulate in
|
|
682
|
-
// thinkingChunks but no reasoning_block_complete is emitted (Anthropic-only).
|
|
683
|
-
// Pass leftover thinkingChunks as reasoning_content so GLM/DeepSeek can see
|
|
684
|
-
// the model's reasoning chain across tool-call rounds.
|
|
685
|
-
const leftoverReasoning = thinkingBlocks.length === 0 && thinkingChunks.length > 0
|
|
686
|
-
? thinkingChunks.join("")
|
|
687
|
-
: undefined;
|
|
688
|
-
messages.push(buildAssistantToolCallMessage(toolCalls, undefined, thinkingBlocks.length > 0 ? thinkingBlocks : undefined, leftoverReasoning));
|
|
689
|
-
// Advance tool loop state
|
|
690
|
-
toolLoopState = advanceToolLoopState(toolLoopState, {
|
|
691
|
-
replayMessages: messages,
|
|
692
|
-
pendingToolCallIds: toolCalls.map((tc) => tc.id),
|
|
693
|
-
completedToolCallIds: toolLoopState.completedToolCallIds,
|
|
694
|
-
lastStopReason: "tool_calls",
|
|
695
|
-
});
|
|
696
|
-
// - AP4: Pre-execution identical call detection -
|
|
697
|
-
// Block calls that exceed MAX_IDENTICAL_CALL_REPEATS BEFORE execution.
|
|
698
|
-
// This saves time (no wasted API/disk calls) and forces the LLM to adapt.
|
|
699
|
-
const identicalCallCounts = state.identicalCallCounts;
|
|
700
|
-
const allowedCalls = [];
|
|
701
|
-
const blockedByAP4 = [];
|
|
702
|
-
let identicalCallNudgeInjected = false;
|
|
703
|
-
for (const tc of toolCalls) {
|
|
704
|
-
const callKey = `${tc.function.name}::${tc.function.arguments}`;
|
|
705
|
-
const prev = identicalCallCounts.get(callKey) ?? 0;
|
|
706
|
-
identicalCallCounts.set(callKey, prev + 1);
|
|
707
|
-
if (prev + 1 > MAX_IDENTICAL_CALL_REPEATS) {
|
|
708
|
-
blockedByAP4.push(tc);
|
|
709
|
-
if (!identicalCallNudgeInjected) {
|
|
710
|
-
identicalCallNudgeInjected = true;
|
|
711
|
-
log.info(`AP4 blocked: ${tc.function.name} repeated ${prev + 1}x`);
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
else {
|
|
715
|
-
allowedCalls.push(tc);
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
// Synthesize error results for blocked calls (before executor runs)
|
|
719
|
-
const executedToolCallIds = [];
|
|
720
|
-
for (const tc of blockedByAP4) {
|
|
721
|
-
const repeatCount = identicalCallCounts.get(`${tc.function.name}::${tc.function.arguments}`);
|
|
722
|
-
// Extract last error from previous tool results for the same tool
|
|
723
|
-
const lastError = findLastToolError(messages, tc.function.name);
|
|
724
|
-
const errorMsg = lastError
|
|
725
|
-
? `This exact tool call has been attempted ${repeatCount} times. Last error: ${lastError}. Do not retry. Report this error to the user.`
|
|
726
|
-
: `This exact tool call has been attempted ${repeatCount} times and keeps failing. Do not retry it. Report the issue to the user or try a completely different approach.`;
|
|
727
|
-
const msg = buildToolResultMessage(tc.id, { ok: false, error: errorMsg });
|
|
728
|
-
messages.push(msg);
|
|
729
|
-
executedToolCallIds.push(tc.id);
|
|
730
|
-
distinctToolNames.add(tc.function.name);
|
|
731
|
-
totalToolCallCount++;
|
|
732
|
-
yield {
|
|
733
|
-
type: "tool_result",
|
|
734
|
-
turnId,
|
|
735
|
-
callId: tc.id,
|
|
736
|
-
name: tc.function.name,
|
|
737
|
-
ok: false,
|
|
738
|
-
error: errorMsg,
|
|
739
|
-
};
|
|
740
|
-
}
|
|
741
|
-
// Inject nudge if any calls were blocked
|
|
742
|
-
if (blockedByAP4.length > 0) {
|
|
743
|
-
const lastToolError = findLastToolError(messages, blockedByAP4[0].function.name);
|
|
744
|
-
const nudgeMsg = {
|
|
745
|
-
role: "user",
|
|
746
|
-
content: `Tool calls were blocked because you repeated them with identical arguments too many times. ` +
|
|
747
|
-
(lastToolError
|
|
748
|
-
? `The error was: "${lastToolError}". Tell the user about this error. `
|
|
749
|
-
: `The operation is not working. `) +
|
|
750
|
-
`Stop retrying and report the result to the user.`,
|
|
751
|
-
};
|
|
752
|
-
messages.push(nudgeMsg);
|
|
753
|
-
}
|
|
754
|
-
const variantPolicy = splitVariantToolCalls(allowedCalls, state.toolFailureCounts);
|
|
755
|
-
const variantAllowed = variantPolicy.allowed;
|
|
756
|
-
if (variantPolicy.blocked.length > 0) {
|
|
757
|
-
for (const blocked of variantPolicy.blocked) {
|
|
758
|
-
const tc = blocked.call;
|
|
759
|
-
const msg = buildToolResultMessage(tc.id, { ok: false, error: blocked.error });
|
|
760
|
-
messages.push(msg);
|
|
761
|
-
executedToolCallIds.push(tc.id);
|
|
762
|
-
distinctToolNames.add(tc.function.name);
|
|
763
|
-
totalToolCallCount++;
|
|
764
|
-
yield {
|
|
765
|
-
type: "tool_result",
|
|
766
|
-
turnId,
|
|
767
|
-
callId: tc.id,
|
|
768
|
-
name: tc.function.name,
|
|
769
|
-
ok: false,
|
|
770
|
-
error: blocked.error,
|
|
771
|
-
};
|
|
772
|
-
log.info(`variant tool blocked: ${tc.function.name} failed ${blocked.failCount}x with different args`);
|
|
773
|
-
}
|
|
774
|
-
messages.push(variantBlockNudge());
|
|
775
|
-
}
|
|
776
|
-
// - Emit tool_call events for non-blocked calls only -
|
|
777
|
-
// Deferred from above: only emit for calls that will actually be attempted.
|
|
778
|
-
for (const tc of variantAllowed) {
|
|
779
|
-
let emittedArguments = tc.function.arguments;
|
|
780
|
-
const toolDef = currentTools.find((t) => t.function.name === tc.function.name);
|
|
781
|
-
if (toolDef?.backfillObservableInput) {
|
|
782
|
-
try {
|
|
783
|
-
const parsed = JSON.parse(tc.function.arguments);
|
|
784
|
-
const copy = { ...parsed };
|
|
785
|
-
toolDef.backfillObservableInput(copy);
|
|
786
|
-
const addedFields = Object.keys(copy).some((k) => !(k in parsed));
|
|
787
|
-
if (addedFields) {
|
|
788
|
-
emittedArguments = JSON.stringify(copy);
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
catch { /* parse failure - emit original */ }
|
|
792
|
-
}
|
|
793
|
-
yield {
|
|
794
|
-
type: "tool_call",
|
|
795
|
-
turnId,
|
|
796
|
-
callId: tc.id,
|
|
797
|
-
name: tc.function.name,
|
|
798
|
-
arguments: emittedArguments,
|
|
799
|
-
inputSummary: summarizeToolInput(emittedArguments),
|
|
800
|
-
};
|
|
801
|
-
}
|
|
802
|
-
// - Execute tool calls via StreamingToolExecutor (CC parity) -
|
|
803
|
-
// Snapshot failure counts before execution so we can detect threshold crossings after
|
|
804
|
-
const variantFailureSnapshot = new Map(state.toolFailureCounts);
|
|
805
|
-
try {
|
|
806
|
-
const executor = params.runtimePorts.createStreamingToolExecutor({
|
|
807
|
-
toolInvoker,
|
|
808
|
-
hooks,
|
|
809
|
-
sessionId,
|
|
810
|
-
turnId,
|
|
811
|
-
log,
|
|
812
|
-
signal,
|
|
813
|
-
maxConcurrentTools: params?.maxConcurrentTools,
|
|
814
|
-
});
|
|
815
|
-
// Feed only allowed (non-blocked) tool calls into the executor
|
|
816
|
-
for (const tc of variantAllowed) {
|
|
817
|
-
executor.addTool(tc);
|
|
818
|
-
}
|
|
819
|
-
// Drain results as tools complete
|
|
820
|
-
for await (const r of executor.getRemainingResults()) {
|
|
821
|
-
if (r.blocked) {
|
|
822
|
-
yield { type: "tool_blocked", turnId, callId: r.callId, name: r.toolName, reason: r.blockReason ?? "blocked" };
|
|
823
|
-
}
|
|
824
|
-
messages.push(r.message);
|
|
825
|
-
executedToolCallIds.push(r.callId);
|
|
826
|
-
distinctToolNames.add(r.toolName);
|
|
827
|
-
totalToolCallCount++;
|
|
828
|
-
recordToolFailureResult({
|
|
829
|
-
toolFailureCounts: state.toolFailureCounts,
|
|
830
|
-
toolName: r.toolName,
|
|
831
|
-
ok: r.ok,
|
|
832
|
-
softEmpty: r.ok && isEmptyToolResult(r),
|
|
833
|
-
});
|
|
834
|
-
// AP5: file read cycle detection -track file paths read and detect circular traversal
|
|
835
|
-
if (r.ok && r.toolName === "read") {
|
|
836
|
-
const originalCall = variantAllowed.find(tc => tc.id === r.callId);
|
|
837
|
-
if (originalCall) {
|
|
838
|
-
try {
|
|
839
|
-
const args = JSON.parse(originalCall.function.arguments);
|
|
840
|
-
const filePath = (args.file_path ?? args.path ?? args.filePath ?? "");
|
|
841
|
-
if (filePath) {
|
|
842
|
-
const prev = state.fileReadCounts.get(filePath) ?? 0;
|
|
843
|
-
state.fileReadCounts.set(filePath, prev + 1);
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
catch { /* ignore parse errors */ }
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
yield createToolResultEvent(turnId, r);
|
|
850
|
-
for (const event of createToolMediaResultEvents(turnId, r)) {
|
|
851
|
-
yield event;
|
|
852
|
-
}
|
|
853
|
-
// - Sidecar event emission: plan_update + artifact -
|
|
854
|
-
for (const event of createToolSidecarEvents({ turnId, result: r, toolCalls })) {
|
|
855
|
-
yield event;
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
catch (err) {
|
|
860
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
861
|
-
yield { type: "error", turnId, error: message, code: "TOOL_EXECUTION_ERROR", usage: state.totalUsage };
|
|
862
|
-
return;
|
|
863
|
-
}
|
|
864
|
-
messages.push(...newVariantFailureNudges({
|
|
865
|
-
toolFailureCounts: state.toolFailureCounts,
|
|
866
|
-
snapshot: variantFailureSnapshot,
|
|
867
|
-
}));
|
|
868
|
-
// Settle tool loop state
|
|
869
|
-
toolLoopState = settleToolLoopState(toolLoopState, {
|
|
870
|
-
replayMessages: messages,
|
|
871
|
-
completedToolCallIds: [
|
|
872
|
-
...toolLoopState.completedToolCallIds,
|
|
873
|
-
...executedToolCallIds,
|
|
874
|
-
],
|
|
875
|
-
lastStopReason: "tool_calls",
|
|
876
|
-
});
|
|
877
|
-
if (params.toolChoice === "required" && toolCalls.length > 0) {
|
|
878
|
-
requiredToolChoiceSatisfied = true;
|
|
879
|
-
}
|
|
880
|
-
// Fire-and-forget tool use summary (CC generateToolUseSummary parity)
|
|
881
|
-
// Promise resolves during next turn's LLM streaming (~5-30s), yielded at iteration start.
|
|
882
|
-
if (params.generateToolUseSummary && toolCalls.length > 0) {
|
|
883
|
-
const summaryInput = toolCalls.map((tc) => ({
|
|
884
|
-
name: tc.function.name,
|
|
885
|
-
arguments: tc.function.arguments,
|
|
886
|
-
}));
|
|
887
|
-
pendingToolUseSummary = params.generateToolUseSummary(summaryInput).catch(() => null);
|
|
888
|
-
}
|
|
889
|
-
// - Consecutive failure tracking -
|
|
890
|
-
// Check all tool results from this round (both AP4-blocked and executor results).
|
|
891
|
-
// AP4-blocked calls always fail. Executor results check content prefix.
|
|
892
|
-
const allFailed = toolCalls.length > 0 && toolCalls.every((tc) => {
|
|
893
|
-
// Find the tool result message for this call ID
|
|
894
|
-
const resultMsg = messages.find((m) => m?.role === "tool" &&
|
|
895
|
-
m?.tool_call_id === tc.id);
|
|
896
|
-
if (!resultMsg)
|
|
897
|
-
return true; // missing = failed
|
|
898
|
-
const content = resultMsg.content;
|
|
899
|
-
return typeof content === "string" && content.startsWith("Error: ");
|
|
900
|
-
});
|
|
901
|
-
let nextConsecutiveFailedRounds = state.consecutiveFailedRounds;
|
|
902
|
-
if (allFailed) {
|
|
903
|
-
nextConsecutiveFailedRounds += 1;
|
|
904
|
-
if (nextConsecutiveFailedRounds >= MAX_CONSECUTIVE_FAILURES) {
|
|
905
|
-
// CC parity: exit early on repeated tool failures -don't burn iterations
|
|
906
|
-
// waiting for the model to give up. Use synthesizeFallbackContent when
|
|
907
|
-
// LLM hasn't produced any text yet (e.g. sandbox/injection paths that
|
|
908
|
-
// fail immediately, before any assistant text block).
|
|
909
|
-
const endContent = state.finalText || synthesizeFallbackContent(messages, log);
|
|
910
|
-
log.info(`early exit: ${nextConsecutiveFailedRounds} consecutive failed rounds, returning ${state.finalText ? "partial" : "fallback"} response`);
|
|
911
|
-
yield endEvent(endContent);
|
|
912
|
-
return;
|
|
913
|
-
}
|
|
914
|
-
}
|
|
915
|
-
else {
|
|
916
|
-
nextConsecutiveFailedRounds = 0;
|
|
917
|
-
}
|
|
918
|
-
// - AP5: File read cycle detection -
|
|
919
|
-
// If any single file has been read 3+ times this turn, the LLM is likely
|
|
920
|
-
// stuck in a circular import/dependency chain. Inject a nudge and force
|
|
921
|
-
// one final round to let it summarize.
|
|
922
|
-
const MAX_FILE_READS = 3;
|
|
923
|
-
const cycledFiles = [...state.fileReadCounts.entries()].filter(([, count]) => count >= MAX_FILE_READS);
|
|
924
|
-
if (cycledFiles.length > 0) {
|
|
925
|
-
const fileNames = cycledFiles.map(([f]) => f).join(", ");
|
|
926
|
-
log.info(`AP5: file read cycle detected on ${fileNames}, injecting nudge`);
|
|
927
|
-
const nudge = {
|
|
928
|
-
role: "user",
|
|
929
|
-
content: `You are reading the same files repeatedly (${fileNames}). This indicates a circular dependency or cycle. ` +
|
|
930
|
-
`Stop reading files, summarize your findings so far, and explain the circular structure to the user.`,
|
|
931
|
-
};
|
|
932
|
-
messages.push(nudge);
|
|
933
|
-
// Clear counts so we don't re-trigger on the final round
|
|
934
|
-
state.fileReadCounts.clear();
|
|
935
|
-
}
|
|
936
|
-
// - Max turns check (CC maxTurns parity) -
|
|
937
|
-
const nextTurnCount = turnCount + 1;
|
|
938
|
-
if (maxTurns > 0 && nextTurnCount > maxTurns) {
|
|
939
|
-
log.info(`max turns reached (${maxTurns}), completing`);
|
|
940
|
-
// CC multi-reason stop hook parity: fire stop hook on max_turns
|
|
941
|
-
if (hooks) {
|
|
942
|
-
const stopResult = await hooks.invoke("stop", { sessionId, reason: "max_turns" });
|
|
943
|
-
if (stopResult.action === "abort") {
|
|
944
|
-
const reason = stopResult.reason ?? "Stop hook requested continuation after max_turns";
|
|
945
|
-
const maxTurnsAssistantMsg = { role: "assistant", content: state.finalText, ...(thinkingBlocks.length > 0 && { thinkingBlocks: [...thinkingBlocks] }) };
|
|
946
|
-
state = {
|
|
947
|
-
...state,
|
|
948
|
-
messages: [...messages, maxTurnsAssistantMsg, { role: "user", content: reason }],
|
|
949
|
-
stopHookActive: true,
|
|
950
|
-
transition: { reason: "stop_hook_blocking" },
|
|
951
|
-
};
|
|
952
|
-
continue;
|
|
953
|
-
}
|
|
954
|
-
}
|
|
955
|
-
// OpenAI format compensation: when LLM only produced tool_calls (no text),
|
|
956
|
-
// finalText is empty. Synthesize from last tool results so user doesn't
|
|
957
|
-
// see blank. CC doesn't need this -Anthropic text+tool_use coexist.
|
|
958
|
-
const endContent = state.finalText || synthesizeFallbackContent(messages, log);
|
|
959
|
-
yield endEvent(endContent);
|
|
960
|
-
return;
|
|
961
|
-
}
|
|
962
|
-
// - Tool budget exhaustion check (CC max_turns parity) -
|
|
963
|
-
// CC returns directly on budget exhaustion -no forced text-only round.
|
|
964
|
-
// OpenAI format note: unlike Anthropic where text+tool_use blocks coexist,
|
|
965
|
-
// OpenAI responses often have null content when tool_calls are present.
|
|
966
|
-
// We synthesize fallback content from tool results when finalText is empty.
|
|
967
|
-
if (nextTurnCount > toolBudget) {
|
|
968
|
-
log.info(`tool loop budget exhausted (${toolBudget} rounds), returning`);
|
|
969
|
-
const skillInstruction = resolveToolUsageSkillInstruction({
|
|
970
|
-
totalToolCallCount,
|
|
971
|
-
distinctToolNames,
|
|
972
|
-
projectRoot: params.projectRoot,
|
|
973
|
-
});
|
|
974
|
-
if (skillInstruction) {
|
|
975
|
-
yield { type: "skill_instruction", turnId, instruction: skillInstruction };
|
|
976
|
-
}
|
|
977
|
-
const endContent = state.finalText || synthesizeFallbackContent(messages, log);
|
|
978
|
-
yield endEvent(endContent);
|
|
979
|
-
return;
|
|
980
|
-
}
|
|
981
|
-
// - CC label: next_turn -
|
|
982
|
-
state = {
|
|
983
|
-
messages,
|
|
984
|
-
maxOutputTokensRecoveryCount: 0,
|
|
985
|
-
hasAttemptedReactiveCompact: false,
|
|
986
|
-
maxOutputTokensOverride: undefined,
|
|
987
|
-
turnCount: nextTurnCount,
|
|
988
|
-
transition: { reason: "next_turn" },
|
|
989
|
-
guardState,
|
|
990
|
-
reactiveCompactState,
|
|
991
|
-
toolLoopState,
|
|
992
|
-
consecutiveFailedRounds: nextConsecutiveFailedRounds,
|
|
993
|
-
finalText: state.finalText,
|
|
994
|
-
totalUsage: state.totalUsage,
|
|
995
|
-
collapseStore,
|
|
996
|
-
// Propagate P0 state across iterations
|
|
997
|
-
currentModel: state.currentModel,
|
|
998
|
-
consecutive529Errors: 0, // reset on successful tool round
|
|
999
|
-
consecutiveApiRetries: 0, // reset on successful tool round
|
|
1000
|
-
stopHookActive: state.stopHookActive,
|
|
1001
|
-
lastResponseId: state.lastResponseId,
|
|
1002
|
-
snipRemovedIds: state.snipRemovedIds,
|
|
1003
|
-
contentReplacementState: state.contentReplacementState,
|
|
1004
|
-
// Propagate across rounds: budget policy bounds total continuation
|
|
1005
|
-
// nudges per TURN. Resetting per tool round defeated the cap (model alternating
|
|
1006
|
-
// tool-call/done could be nudged forever) and broke diminishing-returns
|
|
1007
|
-
// detection (which compares usage deltas across checks).
|
|
1008
|
-
budgetContinuationCount: state.budgetContinuationCount,
|
|
1009
|
-
lastBudgetDeltaTokens: state.lastBudgetDeltaTokens,
|
|
1010
|
-
lastBudgetGlobalTokens: state.lastBudgetGlobalTokens,
|
|
1011
|
-
identicalCallCounts, // propagate across rounds
|
|
1012
|
-
toolFailureCounts: state.toolFailureCounts, // propagate across rounds
|
|
1013
|
-
fileReadCounts: state.fileReadCounts, // propagate across rounds
|
|
1014
|
-
recoveryTrace: state.recoveryTrace, // propagate across rounds
|
|
1015
|
-
};
|
|
1016
|
-
} // while (true)
|
|
1017
|
-
}
|