kaijibot 2026.6.21 → 2026.6.22
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/.buildstamp +1 -1
- package/dist/abort-CxZY3nsr.js +202 -0
- package/dist/abort-cutoff.runtime-D5FOsnYW.js +20 -0
- package/dist/abort-cutoff.runtime.js +1 -1
- package/dist/abort.runtime-DfIOyW8M.js +2 -0
- package/dist/abort.runtime.js +1 -1
- package/dist/acp-cli-CGXRdw_k.js +2171 -0
- package/dist/acp-spawn-DKbKvPuU.js +1023 -0
- package/dist/acp-stateful-target-driver-WeMIyQR2.js +87 -0
- package/dist/action-agents-Dw33v5ym.js +67 -0
- package/dist/action-focus-BTLYwzxx.js +124 -0
- package/dist/action-help-DjgRJFg3.js +7 -0
- package/dist/action-info-6xDvEX0Q.js +58 -0
- package/dist/action-kill-DtQoZS29.js +33 -0
- package/dist/action-list-ClDeI7iE.js +21 -0
- package/dist/action-log-DSosstuh.js +30 -0
- package/dist/action-send-Vh1BuuNd.js +39 -0
- package/dist/action-spawn-B08ssbZ3.js +46 -0
- package/dist/action-unfocus-CEw-Ww9k.js +28 -0
- package/dist/agent-BXBykpuI.js +2 -0
- package/dist/agent-command-CUB1Qm88.js +1479 -0
- package/dist/agent-runner-utils-DN7nVODy.js +202 -0
- package/dist/agent-runner.runtime-DVXE9zZ9.js +2825 -0
- package/dist/agent-runner.runtime.js +1 -1
- package/dist/agents/model-catalog.runtime.js +1 -1
- package/dist/agents-BqqSOUcc.js +887 -0
- package/dist/agents-CVsWMDVp.js +5 -0
- package/dist/api--VGwAnD8.js +3 -0
- package/dist/api-6V55tozK.js +5 -0
- package/dist/api-B6ziqa7E.js +5 -0
- package/dist/api-C4yFynS8.js +2 -0
- package/dist/api-CT1XstLQ.js +4 -0
- package/dist/api-CgLK0Nl9.js +45 -0
- package/dist/api-CkSziYo8.js +4 -0
- package/dist/api-CmDVoeIs.js +2 -0
- package/dist/api-CziR8HhH.js +35 -0
- package/dist/api-D85vczn8.js +2 -0
- package/dist/api-DlP6Jt7i.js +3 -0
- package/dist/api-DvwX5wEJ.js +16 -0
- package/dist/api-cZen2Qw8.js +44 -0
- package/dist/api-gQ5luSlW.js +19 -0
- package/dist/apply-DQD25Xw1.js +493 -0
- package/dist/apply.runtime-BUedp4X6.js +166 -0
- package/dist/apply.runtime-CUOWwc5E.js +2 -0
- package/dist/apply.runtime.js +1 -1
- package/dist/audit-channel.collect.runtime.js +1 -1
- package/dist/audit-extra.async-UlJ9dtlX.js +847 -0
- package/dist/audit-u9caRELf.js +885 -0
- package/dist/audit.deep.runtime-DV71Wkn_.js +2 -0
- package/dist/audit.deep.runtime.js +1 -1
- package/dist/audit.nondeep.runtime-DOxcit3s.js +859 -0
- package/dist/audit.nondeep.runtime.js +1 -1
- package/dist/audit.runtime-CkaC5K-V.js +7 -0
- package/dist/audit.runtime.js +1 -1
- package/dist/auth-BtFIcjkK.js +181 -0
- package/dist/auth-choice-BDu6h5u6.js +353 -0
- package/dist/auth-choice-ChZMk5hI.js +3 -0
- package/dist/auth-choice-oYsuPPg8.js +71 -0
- package/dist/auth-choice-options-kLAihnil.js +104 -0
- package/dist/auth-choice-prompt-C6XJsZ_j.js +2 -0
- package/dist/auth-choice-prompt-sWGu0fT8.js +36 -0
- package/dist/auth-choice.plugin-providers.runtime.js +1 -1
- package/dist/auto-disable-B57JdBwe.js +69 -0
- package/dist/auto-disable-CmJfHDbk.js +2 -0
- package/dist/banner-BLSO_rVb.js +290 -0
- package/dist/banner-Bq8rH7x0.js +2 -0
- package/dist/binding-routing-CUqlgYnB.js +50 -0
- package/dist/binding-targets-r1FCdNWk.js +99 -0
- package/dist/bridge-server-DBiqLRkF.js +103 -0
- package/dist/browser-node-runtime-CaV_umAQ.js +12 -0
- package/dist/browser-runtime-a3vYRS_q.js +377 -0
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +3 -3
- package/dist/bundled/bootstrap-extra-files/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +3 -3
- package/dist/call.runtime.js +1 -1
- package/dist/capability-cli-5gQaEAHR.js +1350 -0
- package/dist/catalog-provider-DtmYtDqx.js +40 -0
- package/dist/cdp.helpers-C6bHP7D_.js +372 -0
- package/dist/channel-core-CmBBxIyB.js +5 -0
- package/dist/channel-plugin-resolution-CmsYI1my.js +146 -0
- package/dist/channel-selection.runtime.js +1 -1
- package/dist/channel.runtime-CVJx87rS.js +399 -0
- package/dist/channel.runtime.js +1 -1
- package/dist/channels-DSyzN9z5.js +1146 -0
- package/dist/channels-cli-CyaVWu4s.js +247 -0
- package/dist/chat-fHuZdqCl.js +213 -0
- package/dist/chrome-DMEt4NXy.js +1080 -0
- package/dist/chrome.executables-B9jFs6UO.js +541 -0
- package/dist/clawbot-cli-mwz1sM6a.js +9 -0
- package/dist/clawhub-D05ayw3D.js +400 -0
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-8zsU8vEs.js +191 -0
- package/dist/cli-Bi46ARiq.js +57 -0
- package/dist/cli-By89kZva.js +154 -0
- package/dist/cli-C746a0v5.js +2 -0
- package/dist/cli-auth-seam-BTvzapW1.js +14 -0
- package/dist/cli-backend-lsjr78tt.js +66 -0
- package/dist/cli-migration-DcoLYfHA.js +127 -0
- package/dist/cli-pyy2tVYy.js +2 -0
- package/dist/cli-runner-CdYSI1Cq.js +1661 -0
- package/dist/cli-runner.runtime-DAabHOxt.js +3 -0
- package/dist/cli-runner.runtime-DVi1zg9k.js +2 -0
- package/dist/cli-runner.runtime.js +1 -1
- package/dist/cli-shared-DFDLtvnu.js +142 -0
- package/dist/cli-startup-metadata.json +2 -2
- package/dist/cli.runtime-Cz1t2jpS.js +819 -0
- package/dist/cli.runtime.js +1 -1
- package/dist/collector-DrX56GKv.js +378 -0
- package/dist/collector-Shnn0RWR.js +2 -0
- package/dist/command-config-resolution-CZpMVpIs.js +2 -0
- package/dist/command-config-resolution-CcNutmmy.js +23 -0
- package/dist/command-execution-startup-BQsvV7-V.js +269 -0
- package/dist/command-poll-backoff.runtime.js +1 -1
- package/dist/command-queue-BfrVf4dr.js +260 -0
- package/dist/command-registry-9kQrd6fb.js +108 -0
- package/dist/command-registry-Bdx4B3wy.js +3 -0
- package/dist/command-secret-gateway-DxVWgQ4Q.js +528 -0
- package/dist/commands-acp-DBpRNdkG.js +1017 -0
- package/dist/commands-compact.runtime-BxRaheVf.js +10 -0
- package/dist/commands-compact.runtime.js +1 -1
- package/dist/commands-core.runtime-DoUzOeqH.js +2 -0
- package/dist/commands-core.runtime.js +1 -1
- package/dist/commands-handlers.runtime-CscK2Pgm.js +3762 -0
- package/dist/commands-handlers.runtime.js +1 -1
- package/dist/commands-models-DqYeVT69.js +306 -0
- package/dist/commands-registry.runtime.js +1 -1
- package/dist/commands-reset-hooks-CRAAqkiL.js +129 -0
- package/dist/commands-status-D8ZaMIRi.js +223 -0
- package/dist/commands-status.runtime-BtUfa8Vo.js +2 -0
- package/dist/commands-status.runtime.js +1 -1
- package/dist/commands-subagents-control.runtime-3mseouWV.js +2 -0
- package/dist/commands-subagents-control.runtime-C7Ew7ep6.js +3 -0
- package/dist/commands-subagents-control.runtime.js +1 -1
- package/dist/commands.runtime-BJ_5rAYe.js +103 -0
- package/dist/commands.runtime.js +1 -1
- package/dist/comment-shared-yDp8Dd41.js +40 -0
- package/dist/compact-k1PfNa6G.js +11322 -0
- package/dist/compact.runtime-cKbXZ_kZ.js +7 -0
- package/dist/compact.runtime.js +1 -1
- package/dist/completion-cli-DUy1xq5t.js +2 -0
- package/dist/completion-cli-TT57JQFZ.js +464 -0
- package/dist/config-Bza6q-tk.js +107 -0
- package/dist/config-CAd-vFQh.js +2 -0
- package/dist/config-CpSlb4Mg.js +166 -0
- package/dist/config-CwRPACbU.js +136 -0
- package/dist/config-cli-_8Iokq8y.js +947 -0
- package/dist/config-defaults-Bjf5n5HI.js +163 -0
- package/dist/config-guard-CfF5-yEi.js +94 -0
- package/dist/config-runtime-BNDhHDpw.js +14 -0
- package/dist/config-validation-BhhUrU16.js +279 -0
- package/dist/configure-CQyw8lzJ.js +1159 -0
- package/dist/configure-qodb2db7.js +2 -0
- package/dist/context-writer-AquXRiMC.js +286 -0
- package/dist/control-auth-CBhIsAGb.js +122 -0
- package/dist/conversation-id-BpHFaBiM.js +140 -0
- package/dist/conversation-runtime-CV7B9eh2.js +31 -0
- package/dist/core-Dhps3xfM.js +210 -0
- package/dist/core-command-descriptors-ByQEHYvG.js +106 -0
- package/dist/cron-cli-CZI77HtC.js +637 -0
- package/dist/curator-CqSJZrlY.js +586 -0
- package/dist/daemon-cli-BdP5r4bR.js +416 -0
- package/dist/daemon-install-C8jNe_d9.js +63 -0
- package/dist/delegate-BLZcdNc7.js +61 -0
- package/dist/deliver-BZKHu27h.js +3 -0
- package/dist/deliver-C_JUBT2Q.js +782 -0
- package/dist/deliver-runtime-BlUTLk1h.js +2 -0
- package/dist/delivery-outbound.runtime-Dx5f5V4o.js +6 -0
- package/dist/delivery-outbound.runtime.js +1 -1
- package/dist/delivery-queue-BEM44EtF.js +372 -0
- package/dist/delivery-queue-DtcoyE2W.js +2 -0
- package/dist/detect-B4AtZ1VF.js +113 -0
- package/dist/devices-cli-BwUXV1ns.js +329 -0
- package/dist/diagnostic-B9b_3vaL.js +311 -0
- package/dist/direct-dm-06KHJO-9.js +139 -0
- package/dist/directive-handling.fast-lane-BAXtkU2a.js +64 -0
- package/dist/directive-handling.fast-lane-cbiyzgY6.js +2 -0
- package/dist/directive-handling.impl-DXbCFQNy.js +2 -0
- package/dist/directive-handling.impl-DscJlWrJ.js +659 -0
- package/dist/directive-handling.parse-BjPmnlrf.js +376 -0
- package/dist/directive-handling.persist-CR8atm5a.js +139 -0
- package/dist/directive-handling.persist.runtime-BD4hf46l.js +2 -0
- package/dist/directive-handling.persist.runtime.js +1 -1
- package/dist/directive-handling.shared-CBO8J9ho.js +159 -0
- package/dist/directory-cli-jmT5IFyz.js +239 -0
- package/dist/dispatch-D0nF0fyZ.js +1041 -0
- package/dist/dispatch-acp-DkXjplxI.js +969 -0
- package/dist/dispatch-acp-manager.runtime-BatYBoZJ.js +3 -0
- package/dist/dispatch-acp-manager.runtime.js +1 -1
- package/dist/dispatch-acp-media.runtime-ij81_4Nz.js +3 -0
- package/dist/dispatch-acp-media.runtime.js +1 -1
- package/dist/dispatch-acp-session.runtime-BuR_lKDu.js +2 -0
- package/dist/dispatch-acp-session.runtime.js +1 -1
- package/dist/dispatch-acp-tts.runtime-7dlcj_x_.js +3 -0
- package/dist/dispatch-acp-tts.runtime.js +1 -1
- package/dist/dispatch-acp.runtime-DD9eCP-b.js +19 -0
- package/dist/dispatch-acp.runtime.js +1 -1
- package/dist/dns-cli-RO2WqQHr.js +192 -0
- package/dist/doctor-completion-5vnr7sel.js +90 -0
- package/dist/doctor-config-preflight-6FaPZK61.js +148 -0
- package/dist/doctor-config-preflight-CTYLYtZw.js +2 -0
- package/dist/doctor-state-migrations-BvJBqBwP.js +2 -0
- package/dist/doctor-state-migrations-CH2rs-LR.js +3 -0
- package/dist/drive-D8QfYZ4p.js +750 -0
- package/dist/embedding-provider-Bj7KsQ8q.js +129 -0
- package/dist/engine-BY6K0Vfe.js +72 -0
- package/dist/entry-capabilities-BSz58Ocn.js +89 -0
- package/dist/entry.js +5 -5
- package/dist/env-overrides.runtime.js +1 -1
- package/dist/exec-approval-forwarder.runtime-D5JousLd.js +3 -0
- package/dist/exec-approval-forwarder.runtime.js +1 -1
- package/dist/exec-approvals-cli-C63N8e4p.js +484 -0
- package/dist/exec-defaults-BWTMcQ8O.js +1440 -0
- package/dist/extensionAPI.js +4 -4
- package/dist/extensions/alibaba/index.js +1 -1
- package/dist/extensions/alibaba/video-generation-provider.js +1 -1
- package/dist/extensions/anthropic/api.js +2 -2
- package/dist/extensions/anthropic/cli-auth-seam.js +1 -1
- package/dist/extensions/anthropic/cli-backend-api.js +2 -2
- package/dist/extensions/anthropic/cli-backend.js +1 -1
- package/dist/extensions/anthropic/cli-migration.js +1 -1
- package/dist/extensions/anthropic/cli-shared.js +1 -1
- package/dist/extensions/anthropic/config-defaults.js +1 -1
- package/dist/extensions/anthropic/contract-api.js +1 -1
- package/dist/extensions/anthropic/index.js +1 -1
- package/dist/extensions/anthropic/media-understanding-provider.js +1 -1
- package/dist/extensions/anthropic/provider-policy-api.js +1 -1
- package/dist/extensions/anthropic/register.runtime.js +1 -1
- package/dist/extensions/anthropic/setup-api.js +1 -1
- package/dist/extensions/anthropic/stream-wrappers.js +1 -1
- package/dist/extensions/anthropic/test-api.js +3 -3
- package/dist/extensions/anthropic-vertex/api.js +3 -3
- package/dist/extensions/anthropic-vertex/index.js +2 -2
- package/dist/extensions/anthropic-vertex/provider-catalog.js +1 -1
- package/dist/extensions/anthropic-vertex/region.js +1 -1
- package/dist/extensions/anthropic-vertex/setup-api.js +1 -1
- package/dist/extensions/arcee/index.js +2 -2
- package/dist/extensions/browser/browser-bridge.js +1 -1
- package/dist/extensions/browser/browser-cdp.js +1 -1
- package/dist/extensions/browser/browser-config.js +3 -3
- package/dist/extensions/browser/browser-control-auth.js +1 -1
- package/dist/extensions/browser/browser-doctor.js +3 -3
- package/dist/extensions/browser/browser-host-inspection.js +1 -1
- package/dist/extensions/browser/browser-maintenance.js +2 -2
- package/dist/extensions/browser/browser-profiles.js +1 -1
- package/dist/extensions/browser/browser-runtime-api.js +11 -11
- package/dist/extensions/browser/index.js +1 -1
- package/dist/extensions/browser/plugin-registration.js +1 -1
- package/dist/extensions/browser/register.runtime.js +3 -3
- package/dist/extensions/browser/runtime-api.js +12 -12
- package/dist/extensions/browser/setup-api.js +2 -2
- package/dist/extensions/browser/test-support.js +2 -2
- package/dist/extensions/byteplus/index.js +3 -3
- package/dist/extensions/byteplus/video-generation-provider.js +1 -1
- package/dist/extensions/cerebras/index.js +1 -1
- package/dist/extensions/chutes/api.js +3 -3
- package/dist/extensions/chutes/index.js +8 -8
- package/dist/extensions/chutes/models.js +1 -1
- package/dist/extensions/chutes/onboard.js +2 -2
- package/dist/extensions/chutes/provider-catalog.js +1 -1
- package/dist/extensions/cloudflare-ai-gateway/api.js +1 -1
- package/dist/extensions/cloudflare-ai-gateway/catalog-provider.js +1 -1
- package/dist/extensions/cloudflare-ai-gateway/index.js +3 -3
- package/dist/extensions/deepinfra/api.js +2 -2
- package/dist/extensions/deepinfra/index.js +2 -2
- package/dist/extensions/deepinfra/media-understanding-provider.js +1 -1
- package/dist/extensions/deepinfra/video-generation-provider.js +1 -1
- package/dist/extensions/deepseek/index.js +1 -1
- package/dist/extensions/device-pair/api.js +2 -2
- package/dist/extensions/device-pair/index.js +5 -5
- package/dist/extensions/device-pair/notify.js +1 -1
- package/dist/extensions/device-pair/pair-command-approve.js +1 -1
- package/dist/extensions/device-pair/qr-image.js +2 -2
- package/dist/extensions/diffs/.kaijibot-runtime-deps-stamp.json +1 -1
- package/dist/extensions/diffs/index.js +1 -1
- package/dist/extensions/diffs/node_modules/.package-lock.json +3 -3
- package/dist/extensions/diffs/node_modules/typebox/build/compile/validator.d.mts +2 -7
- package/dist/extensions/diffs/node_modules/typebox/build/compile/validator.mjs +6 -36
- package/dist/extensions/diffs/node_modules/typebox/build/error/errors.d.mts +1 -7
- package/dist/extensions/diffs/node_modules/typebox/build/guard/emit.d.mts +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/guard/emit.mjs +0 -8
- package/dist/extensions/diffs/node_modules/typebox/build/guard/guard.d.mts +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/guard/guard.mjs +0 -8
- package/dist/extensions/diffs/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/schema/engine/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/schema/engine/schema.mjs +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/schema/engine/type.mjs +14 -18
- package/dist/extensions/diffs/node_modules/typebox/build/schema/types/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/schema/types/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
- package/dist/extensions/diffs/node_modules/typebox/build/system/memory/clone.mjs +72 -26
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/with.d.mts +0 -10
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/with.mjs +0 -8
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/cyclic/check.d.mts +1 -4
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/cyclic/check.mjs +9 -15
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +1 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +4 -2
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/instantiate.d.mts +7 -12
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/instantiate.mjs +60 -66
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +1 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +4 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/extends_left.d.mts +1 -7
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/extends_left.mjs +23 -32
- package/dist/extensions/diffs/node_modules/typebox/build/type/script/mapping.d.mts +0 -12
- package/dist/extensions/diffs/node_modules/typebox/build/type/script/mapping.mjs +21 -25
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/_refine.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/_refine.mjs +1 -2
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/index.d.mts +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/index.mjs +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/static.d.mts +1 -5
- package/dist/extensions/diffs/node_modules/typebox/build/typebox.d.mts +2 -7
- package/dist/extensions/diffs/node_modules/typebox/build/typebox.mjs +2 -7
- package/dist/extensions/diffs/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
- package/dist/extensions/diffs/node_modules/typebox/build/value/clone/clone.mjs +1 -86
- package/dist/extensions/diffs/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_type.mjs +23 -31
- package/dist/extensions/diffs/node_modules/typebox/build/value/default/from_type.mjs +8 -10
- package/dist/extensions/diffs/node_modules/typebox/build/value/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/value/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/value/repair/from_type.mjs +2 -12
- package/dist/extensions/diffs/node_modules/typebox/build/value/value.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/value/value.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/package.json +1 -1
- package/dist/extensions/diffs/node_modules/typebox/readme.md +1 -1
- package/dist/extensions/exa/index.js +1 -1
- package/dist/extensions/feishu/.kaijibot-runtime-deps-stamp.json +1 -1
- package/dist/extensions/feishu/api.js +16 -16
- package/dist/extensions/feishu/contract-api.js +2 -2
- package/dist/extensions/feishu/node_modules/.package-lock.json +3 -3
- package/dist/extensions/feishu/node_modules/typebox/build/compile/validator.d.mts +2 -7
- package/dist/extensions/feishu/node_modules/typebox/build/compile/validator.mjs +6 -36
- package/dist/extensions/feishu/node_modules/typebox/build/error/errors.d.mts +1 -7
- package/dist/extensions/feishu/node_modules/typebox/build/guard/emit.d.mts +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/guard/emit.mjs +0 -8
- package/dist/extensions/feishu/node_modules/typebox/build/guard/guard.d.mts +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/guard/guard.mjs +0 -8
- package/dist/extensions/feishu/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/schema/engine/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/schema/engine/schema.mjs +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/schema/engine/type.mjs +14 -18
- package/dist/extensions/feishu/node_modules/typebox/build/schema/types/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/schema/types/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
- package/dist/extensions/feishu/node_modules/typebox/build/system/memory/clone.mjs +72 -26
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/with.d.mts +0 -10
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/with.mjs +0 -8
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/cyclic/check.d.mts +1 -4
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/cyclic/check.mjs +9 -15
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +1 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +4 -2
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/instantiate.d.mts +7 -12
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/instantiate.mjs +60 -66
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +1 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +4 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/extends_left.d.mts +1 -7
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/extends_left.mjs +23 -32
- package/dist/extensions/feishu/node_modules/typebox/build/type/script/mapping.d.mts +0 -12
- package/dist/extensions/feishu/node_modules/typebox/build/type/script/mapping.mjs +21 -25
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/_refine.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/_refine.mjs +1 -2
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/index.d.mts +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/index.mjs +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/static.d.mts +1 -5
- package/dist/extensions/feishu/node_modules/typebox/build/typebox.d.mts +2 -7
- package/dist/extensions/feishu/node_modules/typebox/build/typebox.mjs +2 -7
- package/dist/extensions/feishu/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
- package/dist/extensions/feishu/node_modules/typebox/build/value/clone/clone.mjs +1 -86
- package/dist/extensions/feishu/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_type.mjs +23 -31
- package/dist/extensions/feishu/node_modules/typebox/build/value/default/from_type.mjs +8 -10
- package/dist/extensions/feishu/node_modules/typebox/build/value/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/value/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/value/repair/from_type.mjs +2 -12
- package/dist/extensions/feishu/node_modules/typebox/build/value/value.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/value/value.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/package.json +1 -1
- package/dist/extensions/feishu/node_modules/typebox/readme.md +1 -1
- package/dist/extensions/feishu/runtime-api.js +2 -2
- package/dist/extensions/feishu/security-contract-api.js +1 -1
- package/dist/extensions/feishu/session-key-api.js +1 -1
- package/dist/extensions/feishu/setup-api.js +1 -1
- package/dist/extensions/fireworks/index.js +1 -1
- package/dist/extensions/github-copilot/api.js +1 -1
- package/dist/extensions/github-copilot/index.js +4 -4
- package/dist/extensions/github-copilot/login.js +1 -1
- package/dist/extensions/github-copilot/models-defaults.js +1 -1
- package/dist/extensions/github-copilot/models.js +1 -1
- package/dist/extensions/github-copilot/register.runtime.js +3 -3
- package/dist/extensions/github-copilot/replay-policy.js +1 -1
- package/dist/extensions/google/api.js +1 -1
- package/dist/extensions/google/gemini-cli-provider.js +1 -1
- package/dist/extensions/google/google-shared.test-helpers.js +1 -1
- package/dist/extensions/google/image-generation-provider.js +1 -1
- package/dist/extensions/google/index.js +5 -5
- package/dist/extensions/google/media-understanding-provider.js +1 -1
- package/dist/extensions/google/music-generation-provider.js +1 -1
- package/dist/extensions/google/oauth-token-shared.js +1 -1
- package/dist/extensions/google/oauth.credentials.js +1 -1
- package/dist/extensions/google/oauth.flow.js +1 -1
- package/dist/extensions/google/oauth.js +2 -2
- package/dist/extensions/google/oauth.runtime.js +1 -1
- package/dist/extensions/google/oauth.settings.js +1 -1
- package/dist/extensions/google/oauth.token.js +1 -1
- package/dist/extensions/google/provider-models.js +1 -1
- package/dist/extensions/google/provider-registration.js +1 -1
- package/dist/extensions/google/runtime-api.js +2 -2
- package/dist/extensions/google/test-api.js +2 -2
- package/dist/extensions/google/video-generation-provider.js +1 -1
- package/dist/extensions/google/web-search-provider.js +1 -1
- package/dist/extensions/groq/index.js +1 -1
- package/dist/extensions/groq/media-understanding-provider.js +1 -1
- package/dist/extensions/groq/test-api.js +1 -1
- package/dist/extensions/huggingface/api.js +3 -3
- package/dist/extensions/huggingface/index.js +3 -3
- package/dist/extensions/huggingface/models.js +1 -1
- package/dist/extensions/huggingface/onboard.js +1 -1
- package/dist/extensions/huggingface/provider-catalog.js +2 -2
- package/dist/extensions/image-generation-core/api.js +1 -1
- package/dist/extensions/kilocode/api.js +2 -2
- package/dist/extensions/kilocode/index.js +4 -4
- package/dist/extensions/kilocode/onboard.js +2 -2
- package/dist/extensions/kilocode/provider-catalog.js +1 -1
- package/dist/extensions/kilocode/provider-models.js +1 -1
- package/dist/extensions/kilocode/shared.js +1 -1
- package/dist/extensions/kimi-coding/index.js +3 -3
- package/dist/extensions/knowledge-wiki/index.js +26 -12
- package/dist/extensions/knowledge-wiki/kaijibot.plugin.json +2 -1
- package/dist/extensions/litellm/api.js +1 -1
- package/dist/extensions/litellm/index.js +3 -3
- package/dist/extensions/litellm/onboard.js +1 -1
- package/dist/extensions/litellm/provider-catalog.js +1 -1
- package/dist/extensions/llm-task/api.js +1 -1
- package/dist/extensions/llm-task/index.js +2 -2
- package/dist/extensions/lmstudio/api.js +2 -2
- package/dist/extensions/lmstudio/index.js +2 -2
- package/dist/extensions/lmstudio/runtime-api.js +1 -1
- package/dist/extensions/media-understanding-core/runtime-api.js +2 -2
- package/dist/extensions/memory-core/cli-metadata.js +2 -2
- package/dist/extensions/memory-core/index.js +13 -13
- package/dist/extensions/memory-core/manager-runtime.js +1 -1
- package/dist/extensions/memory-core/runtime-api.js +4 -4
- package/dist/extensions/memory-lancedb/api.js +1 -1
- package/dist/extensions/memory-lancedb/cli-metadata.js +1 -1
- package/dist/extensions/memory-lancedb/config.js +1 -1
- package/dist/extensions/memory-lancedb/index.js +4 -4
- package/dist/extensions/memory-lancedb/lancedb-runtime.js +1 -1
- package/dist/extensions/microsoft/index.js +1 -1
- package/dist/extensions/microsoft/speech-provider.js +1 -1
- package/dist/extensions/microsoft/test-api.js +1 -1
- package/dist/extensions/microsoft/tts.js +1 -1
- package/dist/extensions/microsoft-foundry/auth.js +1 -1
- package/dist/extensions/microsoft-foundry/cli.js +1 -1
- package/dist/extensions/microsoft-foundry/index.js +1 -1
- package/dist/extensions/microsoft-foundry/onboard.js +2 -2
- package/dist/extensions/microsoft-foundry/provider.js +1 -1
- package/dist/extensions/microsoft-foundry/runtime.js +1 -1
- package/dist/extensions/microsoft-foundry/shared-runtime.js +2 -2
- package/dist/extensions/microsoft-foundry/shared.js +1 -1
- package/dist/extensions/minimax/api.js +5 -5
- package/dist/extensions/minimax/image-generation-provider.js +1 -1
- package/dist/extensions/minimax/index.js +7 -7
- package/dist/extensions/minimax/media-understanding-provider.js +1 -1
- package/dist/extensions/minimax/model-definitions.js +1 -1
- package/dist/extensions/minimax/music-generation-provider.js +1 -1
- package/dist/extensions/minimax/oauth.js +1 -1
- package/dist/extensions/minimax/oauth.runtime.js +1 -1
- package/dist/extensions/minimax/onboard.js +1 -1
- package/dist/extensions/minimax/provider-catalog.js +1 -1
- package/dist/extensions/minimax/provider-http.test-helpers.js +1 -1
- package/dist/extensions/minimax/provider-models.js +1 -1
- package/dist/extensions/minimax/provider-registration.js +1 -1
- package/dist/extensions/minimax/speech-provider.js +1 -1
- package/dist/extensions/minimax/test-api.js +2 -2
- package/dist/extensions/minimax/tts.js +1 -1
- package/dist/extensions/minimax/video-generation-provider.js +1 -1
- package/dist/extensions/minimax/web-search-provider.js +1 -1
- package/dist/extensions/mistral/api.js +4 -4
- package/dist/extensions/mistral/embedding-provider.js +1 -1
- package/dist/extensions/mistral/index.js +6 -6
- package/dist/extensions/mistral/media-understanding-provider.js +1 -1
- package/dist/extensions/mistral/memory-embedding-adapter.js +1 -1
- package/dist/extensions/mistral/model-definitions.js +1 -1
- package/dist/extensions/mistral/onboard.js +1 -1
- package/dist/extensions/mistral/provider-catalog.js +1 -1
- package/dist/extensions/mistral/provider-compat.js +1 -1
- package/dist/extensions/mistral/realtime-transcription-provider.js +1 -1
- package/dist/extensions/mistral/test-api.js +2 -2
- package/dist/extensions/moonshot/api.js +3 -3
- package/dist/extensions/moonshot/index.js +6 -6
- package/dist/extensions/moonshot/media-understanding-provider.js +1 -1
- package/dist/extensions/moonshot/onboard.js +1 -1
- package/dist/extensions/moonshot/provider-catalog.js +1 -1
- package/dist/extensions/moonshot/test-api.js +2 -2
- package/dist/extensions/moonshot/web-search-provider.js +1 -1
- package/dist/extensions/nvidia/api.js +1 -1
- package/dist/extensions/nvidia/index.js +2 -2
- package/dist/extensions/nvidia/provider-catalog.js +1 -1
- package/dist/extensions/ollama/api.js +4 -4
- package/dist/extensions/ollama/index.js +7 -7
- package/dist/extensions/ollama/provider-discovery.js +1 -1
- package/dist/extensions/ollama/runtime-api.js +2 -2
- package/dist/extensions/ollama/web-search-provider.js +1 -1
- package/dist/extensions/open-prose/runtime-api.js +1 -1
- package/dist/extensions/openai/api.js +5 -5
- package/dist/extensions/openai/cli-backend.js +1 -1
- package/dist/extensions/openai/default-models.js +1 -1
- package/dist/extensions/openai/image-generation-provider.js +1 -1
- package/dist/extensions/openai/index.js +10 -10
- package/dist/extensions/openai/media-understanding-provider.js +1 -1
- package/dist/extensions/openai/openai-codex-auth-identity.js +1 -1
- package/dist/extensions/openai/openai-codex-catalog.js +1 -1
- package/dist/extensions/openai/openai-codex-cli-auth.js +1 -1
- package/dist/extensions/openai/openai-codex-provider.js +1 -1
- package/dist/extensions/openai/openai-codex-shared.js +1 -1
- package/dist/extensions/openai/openai-provider.js +1 -1
- package/dist/extensions/openai/prompt-overlay.js +1 -1
- package/dist/extensions/openai/realtime-provider-shared.js +1 -1
- package/dist/extensions/openai/realtime-transcription-provider.js +1 -1
- package/dist/extensions/openai/realtime-voice-provider.js +1 -1
- package/dist/extensions/openai/register.runtime.js +9 -9
- package/dist/extensions/openai/replay-policy.js +1 -1
- package/dist/extensions/openai/setup-api.js +1 -1
- package/dist/extensions/openai/shared.js +1 -1
- package/dist/extensions/openai/speech-provider.js +1 -1
- package/dist/extensions/openai/test-api.js +6 -6
- package/dist/extensions/openai/transport-policy.js +1 -1
- package/dist/extensions/openai/tts.js +1 -1
- package/dist/extensions/openai/video-generation-provider.js +1 -1
- package/dist/extensions/opencode/api.js +2 -2
- package/dist/extensions/opencode/index.js +4 -4
- package/dist/extensions/opencode/onboard.js +1 -1
- package/dist/extensions/opencode-go/api.js +2 -2
- package/dist/extensions/opencode-go/index.js +3 -3
- package/dist/extensions/opencode-go/onboard.js +1 -1
- package/dist/extensions/openrouter/api.js +5 -5
- package/dist/extensions/openrouter/image-generation-provider.js +1 -1
- package/dist/extensions/openrouter/index.js +8 -8
- package/dist/extensions/openrouter/media-understanding-provider.js +1 -1
- package/dist/extensions/openrouter/models.js +1 -1
- package/dist/extensions/openrouter/music-generation-provider.js +1 -1
- package/dist/extensions/openrouter/onboard.js +1 -1
- package/dist/extensions/openrouter/provider-catalog.js +1 -1
- package/dist/extensions/openrouter/provider-policy-api.js +1 -1
- package/dist/extensions/openrouter/speech-provider.js +1 -1
- package/dist/extensions/openrouter/stream.js +1 -1
- package/dist/extensions/openrouter/test-api.js +4 -4
- package/dist/extensions/openrouter/thinking-policy.js +1 -1
- package/dist/extensions/openrouter/video-generation-provider.js +4 -4
- package/dist/extensions/openrouter/video-http.js +1 -1
- package/dist/extensions/openrouter/video-model-catalog.js +1 -1
- package/dist/extensions/openshell/index.js +4 -4
- package/dist/extensions/perplexity/index.js +1 -1
- package/dist/extensions/perplexity/test-api.js +1 -1
- package/dist/extensions/perplexity/web-search-contract-api.js +1 -1
- package/dist/extensions/perplexity/web-search-provider.js +1 -1
- package/dist/extensions/qianfan/api.js +2 -2
- package/dist/extensions/qianfan/index.js +3 -3
- package/dist/extensions/qianfan/onboard.js +1 -1
- package/dist/extensions/qianfan/provider-catalog.js +1 -1
- package/dist/extensions/qwen/api.js +4 -4
- package/dist/extensions/qwen/index.js +8 -8
- package/dist/extensions/qwen/media-understanding-provider.js +1 -1
- package/dist/extensions/qwen/model-definitions.js +1 -1
- package/dist/extensions/qwen/models.js +1 -1
- package/dist/extensions/qwen/onboard.js +1 -1
- package/dist/extensions/qwen/provider-catalog.js +1 -1
- package/dist/extensions/qwen/stream.js +1 -1
- package/dist/extensions/qwen/test-api.js +2 -2
- package/dist/extensions/qwen/video-generation-provider.js +1 -1
- package/dist/extensions/runway/index.js +1 -1
- package/dist/extensions/runway/video-generation-provider.js +1 -1
- package/dist/extensions/sglang/api.js +3 -3
- package/dist/extensions/sglang/defaults.js +1 -1
- package/dist/extensions/sglang/index.js +3 -3
- package/dist/extensions/sglang/models.js +1 -1
- package/dist/extensions/speech-core/api.js +1 -1
- package/dist/extensions/speech-core/runtime-api.js +3 -3
- package/dist/extensions/stepfun/index.js +4 -4
- package/dist/extensions/stepfun/onboard.js +1 -1
- package/dist/extensions/stepfun/provider-catalog.js +1 -1
- package/dist/extensions/talk-voice/api.js +1 -1
- package/dist/extensions/talk-voice/index.js +2 -2
- package/dist/extensions/tavily/index.js +1 -1
- package/dist/extensions/together/api.js +3 -3
- package/dist/extensions/together/index.js +3 -3
- package/dist/extensions/together/models.js +1 -1
- package/dist/extensions/together/onboard.js +1 -1
- package/dist/extensions/together/provider-catalog.js +1 -1
- package/dist/extensions/together/video-generation-provider.js +2 -2
- package/dist/extensions/venice/api.js +3 -3
- package/dist/extensions/venice/index.js +5 -5
- package/dist/extensions/venice/models.js +1 -1
- package/dist/extensions/venice/onboard.js +2 -2
- package/dist/extensions/venice/provider-catalog.js +1 -1
- package/dist/extensions/vercel-ai-gateway/api.js +3 -3
- package/dist/extensions/vercel-ai-gateway/index.js +3 -3
- package/dist/extensions/vercel-ai-gateway/models.js +1 -1
- package/dist/extensions/vercel-ai-gateway/onboard.js +1 -1
- package/dist/extensions/vercel-ai-gateway/provider-catalog.js +1 -1
- package/dist/extensions/vllm/api.js +3 -3
- package/dist/extensions/vllm/defaults.js +1 -1
- package/dist/extensions/vllm/index.js +3 -3
- package/dist/extensions/vllm/models.js +1 -1
- package/dist/extensions/vllm/register.runtime.js +3 -3
- package/dist/extensions/volcengine/api.js +2 -2
- package/dist/extensions/volcengine/index.js +4 -4
- package/dist/extensions/volcengine/models.js +1 -1
- package/dist/extensions/volcengine/provider-catalog.js +1 -1
- package/dist/extensions/vydra/image-generation-provider.js +1 -1
- package/dist/extensions/vydra/index.js +6 -6
- package/dist/extensions/vydra/onboard.js +1 -1
- package/dist/extensions/vydra/shared.js +1 -1
- package/dist/extensions/vydra/speech-provider.js +1 -1
- package/dist/extensions/vydra/video-generation-provider.js +1 -1
- package/dist/extensions/webhooks/.kaijibot-runtime-deps-stamp.json +1 -1
- package/dist/extensions/webhooks/api.js +1 -1
- package/dist/extensions/webhooks/index.js +3 -3
- package/dist/extensions/webhooks/runtime-api.js +1 -1
- package/dist/extensions/xai/api.js +5 -5
- package/dist/extensions/xai/code-execution.js +4 -4
- package/dist/extensions/xai/index.js +11 -11
- package/dist/extensions/xai/model-definitions.js +1 -1
- package/dist/extensions/xai/model-id.js +1 -1
- package/dist/extensions/xai/onboard.js +1 -1
- package/dist/extensions/xai/provider-catalog.js +1 -1
- package/dist/extensions/xai/provider-models.js +1 -1
- package/dist/extensions/xai/setup-api.js +1 -1
- package/dist/extensions/xai/stream.js +1 -1
- package/dist/extensions/xai/video-generation-provider.js +1 -1
- package/dist/extensions/xai/web-search.js +1 -1
- package/dist/extensions/xai/x-search-tool-shared.js +1 -1
- package/dist/extensions/xai/x-search.js +4 -4
- package/dist/extensions/xiaomi/api.js +2 -2
- package/dist/extensions/xiaomi/index.js +3 -3
- package/dist/extensions/xiaomi/onboard.js +1 -1
- package/dist/extensions/xiaomi/provider-catalog.js +1 -1
- package/dist/extensions/zai/api.js +3 -3
- package/dist/extensions/zai/detect.js +1 -1
- package/dist/extensions/zai/index.js +6 -6
- package/dist/extensions/zai/media-understanding-provider.js +1 -1
- package/dist/extensions/zai/model-definitions.js +1 -1
- package/dist/extensions/zai/onboard.js +1 -1
- package/dist/extensions/zai/runtime-api.js +1 -1
- package/dist/extensions/zai/test-api.js +1 -1
- package/dist/fragment-collector-MPWszaY5.js +189 -0
- package/dist/fragment-store-SR8Bo1em.js +218 -0
- package/dist/fragment-store-TRt-PDu_.js +2 -0
- package/dist/gateway-cli-Lc4_vwt0.js +1518 -0
- package/dist/gateway-discovery-targets-_JD1loMg.js +431 -0
- package/dist/gateway-install-token-DuMEOLtu.js +284 -0
- package/dist/gateway-rpc-JpewBoh5.js +14 -0
- package/dist/gateway-rpc.runtime.js +1 -1
- package/dist/gateway-secret-options-DIWh0avy.js +38 -0
- package/dist/gemini-cli-provider-DJmyF3F1.js +106 -0
- package/dist/gemini-web-search-provider-cXSR-qZm.js +167 -0
- package/dist/get-reply-from-config.runtime-dgpM1fFS.js +2 -0
- package/dist/get-reply-from-config.runtime.js +1 -1
- package/dist/git-commit-D50Y5N45.js +2 -0
- package/dist/groups.runtime.js +1 -1
- package/dist/hard-trigger-DRIZJ_PJ.js +98 -0
- package/dist/health-BF4wCwJ7.js +2 -0
- package/dist/health-DuV85G9Q.js +579 -0
- package/dist/heartbeat-runner-CIQHWCd1.js +1209 -0
- package/dist/heartbeat-runner-DMXeqQSX.js +4 -0
- package/dist/heartbeat-runner.runtime-DSMkYfFM.js +2 -0
- package/dist/heartbeat-runner.runtime.js +1 -1
- package/dist/help-Byb6TFWt.js +81 -0
- package/dist/hooks-cli-DnhC5miz.js +354 -0
- package/dist/hooks-status-7gNHQOXj.js +86 -0
- package/dist/image-generation-core-DgBQ7yxF.js +17 -0
- package/dist/image-generation-core.auth.runtime.js +1 -1
- package/dist/image-generation-provider-BKlDd4sX.js +130 -0
- package/dist/image-generation-provider-BVJFZnGv.js +136 -0
- package/dist/image-generation-provider-C4zaGMAe.js +279 -0
- package/dist/image-generation-provider-CYdLui77.js +94 -0
- package/dist/image-generation-provider-vw6Mifhx.js +163 -0
- package/dist/image-runtime-B76ETuEi.js +7 -0
- package/dist/inbound-reply-dispatch-DcaeKmuz.js +73 -0
- package/dist/inbound.runtime-DzuOEHYA.js +4 -0
- package/dist/inbound.runtime-ImqdTVOI.js +3 -0
- package/dist/inbound.runtime.js +1 -1
- package/dist/index.js +2 -2
- package/dist/ingest-BNyXzldJ.js +842 -0
- package/dist/ingest-C35XEC_T.js +2 -0
- package/dist/install-BdauYB9u.js +662 -0
- package/dist/install-security-scan-ZoCtjNeN.js +22 -0
- package/dist/install-security-scan.runtime-B1sRhkiV.js +299 -0
- package/dist/install-security-scan.runtime.js +1 -1
- package/dist/install-skills-CQnadGky.js +70 -0
- package/dist/install.runtime-QcrQsqdQ.js +12 -0
- package/dist/install.runtime-zgelN4-_.js +27 -0
- package/dist/install.runtime.js +1 -1
- package/dist/kaijibot-tools-Dl2qUSAS.js +9233 -0
- package/dist/kaijibot-tools.runtime-BuTXGJaj.js +2 -0
- package/dist/kaijibot-tools.runtime.js +1 -1
- package/dist/kimi-web-search-provider-OUDV-0Ow.js +308 -0
- package/dist/lancedb-runtime-DyHQv3-S.js +201 -0
- package/dist/library-Dhl58R3p.js +45 -0
- package/dist/list.runtime-CeH-Xrnd.js +9 -0
- package/dist/list.runtime-FnCw60Xk.js +12 -0
- package/dist/list.runtime.js +1 -1
- package/dist/llm-draft-generator-Be49MQGG.js +567 -0
- package/dist/llm-draft-generator-DEhC2yYf.js +2 -0
- package/dist/llm-engine-BFepNvS0.js +2 -0
- package/dist/llm-engine-BNOxcQrz.js +1829 -0
- package/dist/llm-slug-generator.js +2 -2
- package/dist/login-DAPUtXft.js +108 -0
- package/dist/logs-cli-Dee6SLM_.js +264 -0
- package/dist/logs-cli.runtime.js +1 -1
- package/dist/manager-ZJ_EZtK4.js +2048 -0
- package/dist/manager-czo1q1sv.js +3301 -0
- package/dist/mcp-cli-BjG2nOiR.js +723 -0
- package/dist/media-runtime-CGXSFOdW.js +312 -0
- package/dist/media-understanding-CEFjui05.js +83 -0
- package/dist/media-understanding-provider-2LeNsCXQ.js +13 -0
- package/dist/media-understanding-provider-AxZChB3Q.js +14 -0
- package/dist/media-understanding-provider-B8KTGMNt.js +67 -0
- package/dist/media-understanding-provider-BhfBs6XJ.js +37 -0
- package/dist/media-understanding-provider-By7-KDWp.js +112 -0
- package/dist/media-understanding-provider-CJvPSRD_.js +18 -0
- package/dist/media-understanding-provider-CeDiKBMV.js +21 -0
- package/dist/media-understanding-provider-Cflmzkbe.js +18 -0
- package/dist/media-understanding-provider-D0G4SyRE.js +69 -0
- package/dist/media-understanding-provider-D5w0Ycf_.js +30 -0
- package/dist/media-understanding-provider-RWVVnBkv.js +123 -0
- package/dist/media-understanding-runtime-DrGfjXfY.js +2 -0
- package/dist/memory-C89wZkq_.js +3 -0
- package/dist/memory-core-host-runtime-cli-D5QiXWY7.js +9 -0
- package/dist/memory-host-search.runtime.js +1 -1
- package/dist/memory-index-B4acWB-F.js +514 -0
- package/dist/memory-index-Ci_IEkkP.js +2 -0
- package/dist/memory-kGhz1aad.js +242 -0
- package/dist/memory-repair-CXOPaLj_.js +2 -0
- package/dist/message-VnqF7FPQ.js +223 -0
- package/dist/message-action-runner-D1JKJNCt.js +1628 -0
- package/dist/message-action-runner-sNr7cRbq.js +2 -0
- package/dist/message.config.runtime.js +1 -1
- package/dist/message.gateway.runtime.js +1 -1
- package/dist/metadata-registry-loader-FpYi7huO.js +2 -0
- package/dist/minimax-web-search-provider-B80wlL3J.js +165 -0
- package/dist/mmr-BUVQm7ma.js +146 -0
- package/dist/model-catalog-BGubK2PO.js +157 -0
- package/dist/model-definitions-6-ZRKXxZ.js +74 -0
- package/dist/model-definitions-BGyaoan5.js +258 -0
- package/dist/model-definitions-CcSMc0tQ.js +28 -0
- package/dist/model-picker-BFYJZOu-.js +490 -0
- package/dist/model-picker-DU3_Nbi5.js +3 -0
- package/dist/model-picker.runtime-CMM8ER27.js +15 -0
- package/dist/model-picker.runtime.js +1 -1
- package/dist/model-selection-Beb96cml.js +381 -0
- package/dist/model-suppression.runtime.js +1 -1
- package/dist/models-B86OciCd.js +47 -0
- package/dist/models-BNG4ZStW.js +18 -0
- package/dist/models-Bw6Q27IA.js +555 -0
- package/dist/models-CUBw1avj.js +18 -0
- package/dist/models-CwtKbjMZ.js +157 -0
- package/dist/models-DUOR6dY_.js +760 -0
- package/dist/models-DltDSCEF.js +19 -0
- package/dist/models-EzdNn5lr.js +2 -0
- package/dist/models-cWV4E77X.js +2584 -0
- package/dist/models-cli-CSnvqJzN.js +197 -0
- package/dist/models.fetch-CmkgmRli.js +518 -0
- package/dist/monitor-Cy4MsZcL.js +4435 -0
- package/dist/music-generation-provider-IKtFX3pf.js +169 -0
- package/dist/music-generation-provider-qXzAqm-8.js +238 -0
- package/dist/music-generation-provider-x1vHpdDc.js +142 -0
- package/dist/node-cli-U7yaSPh3.js +2362 -0
- package/dist/nodes-cli-CsrUwJmw.js +1046 -0
- package/dist/notify-DnKv7zGy.js +305 -0
- package/dist/oauth-BU9Kg4J4.js +57 -0
- package/dist/oauth-D9z3vVZZ.js +152 -0
- package/dist/oauth-token-shared-C2vJuJJA.js +28 -0
- package/dist/oauth.credentials-BDOOigYJ.js +165 -0
- package/dist/oauth.flow-Bi3XRwXD.js +122 -0
- package/dist/oauth.settings-BRN2Sz6R.js +44 -0
- package/dist/oauth.token-CASx9EQP.js +43 -0
- package/dist/onboard-4eXQ1KyP.js +29 -0
- package/dist/onboard-8UfovJuH.js +48 -0
- package/dist/onboard-BEkTYzmT.js +25 -0
- package/dist/onboard-BFu8lV32.js +312 -0
- package/dist/onboard-BICzWILe.js +36 -0
- package/dist/onboard-BOUcR8be.js +621 -0
- package/dist/onboard-BcoQSNQW.js +25 -0
- package/dist/onboard-BuBPPxds.js +26 -0
- package/dist/onboard-CX7hnr8D.js +39 -0
- package/dist/onboard-CXfC1yg8.js +67 -0
- package/dist/onboard-CbymSfBU.js +58 -0
- package/dist/onboard-DGyDRLc3.js +29 -0
- package/dist/onboard-DK-jzfWx.js +22 -0
- package/dist/onboard-DVWKadpJ.js +34 -0
- package/dist/onboard-DoIWd2We.js +25 -0
- package/dist/onboard-Ez4QGniV2.js +54 -0
- package/dist/onboard-channels-BILGE-i9.js +2 -0
- package/dist/onboard-channels-MuLliRf5.js +1260 -0
- package/dist/onboard-config-Byvc0oUh.js +2 -0
- package/dist/onboard-custom-CLaOD_BI.js +2 -0
- package/dist/onboard-custom-CbRHjDNL.js +647 -0
- package/dist/onboard-helpers-BJhCcI9U.js +223 -0
- package/dist/onboard-helpers-CMvJfZTX.js +5 -0
- package/dist/onboard-hooks-BfXdgHQj.js +35 -0
- package/dist/onboard-remote-B0KquzSo.js +193 -0
- package/dist/onboard-remote-B7vnhLj3.js +2 -0
- package/dist/onboard-search-BLjfhCPG.js +324 -0
- package/dist/onboard-skills-CkO8UvfF.js +134 -0
- package/dist/onboard-skills-D9ML0g4M.js +2 -0
- package/dist/openai-codex-auth-identity-DSKWx0wS.js +45 -0
- package/dist/openai-codex-cli-auth-DzOuQekO.js +57 -0
- package/dist/openai-codex-provider-DmVwiyKq.js +299 -0
- package/dist/openai-codex-shared-DGT1w6Uz.js +6 -0
- package/dist/openai-provider-SnRU2x3L.js +283 -0
- package/dist/openclaw-migrator-BQWk325M.js +2 -0
- package/dist/pair-command-approve-DdHdrhCK.js +34 -0
- package/dist/pairing-cli-B57ZjuC5.js +117 -0
- package/dist/perplexity-web-search-provider-BbeQ3_8w.js +92 -0
- package/dist/perplexity-web-search-provider.runtime-BtpRxkdq.js +332 -0
- package/dist/perplexity-web-search-provider.runtime-Dt4WauP_.js +2 -0
- package/dist/perplexity-web-search-provider.runtime.js +1 -1
- package/dist/persistent-bindings.lifecycle-BevP5OlU.js +94 -0
- package/dist/pi-embedded-BbJAO5yK.js +6 -0
- package/dist/pi-embedded-runner-DZaBmFzW.js +8346 -0
- package/dist/pi-embedded-subscribe.handlers.compaction.runtime-CfHAZp-z.js +23 -0
- package/dist/pi-embedded-subscribe.handlers.compaction.runtime.js +1 -1
- package/dist/pi-embedded-tQf0HjTv.js +2 -0
- package/dist/pi-embedded.runtime-B9ZAb_RR.js +5 -0
- package/dist/pi-embedded.runtime.js +1 -1
- package/dist/pi-tools.before-tool-call.runtime-BqDR-_03.js +354 -0
- package/dist/pi-tools.before-tool-call.runtime.js +1 -1
- package/dist/plugin-enabled-B2DgsAtk.js +71 -0
- package/dist/plugin-install-BjOxLVHm.js +227 -0
- package/dist/plugin-install-CLGT8Lak.js +2 -0
- package/dist/plugin-install-config-policy-CZTvkRR9.js +137 -0
- package/dist/plugin-install-plan-CySOZ7mU.js +50 -0
- package/dist/plugin-registration-CfKqWKnW.js +23 -0
- package/dist/plugin-registry-C1mIFpCz.js +2 -0
- package/dist/plugin-registry-igF4eBbt.js +3 -0
- package/dist/plugin-registry-loader-BUYJrGoS.js +22 -0
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/plugin-sdk/acp-binding-runtime.js +1 -1
- package/dist/plugin-sdk/acp-runtime.js +3 -3
- package/dist/plugin-sdk/agent-harness-runtime.js +4 -4
- package/dist/plugin-sdk/agent-runtime.js +2 -2
- package/dist/plugin-sdk/browser-node-runtime.js +2 -2
- package/dist/plugin-sdk/browser-support.js +2 -2
- package/dist/plugin-sdk/channel-core.js +2 -2
- package/dist/plugin-sdk/channel-inbound.js +3 -3
- package/dist/plugin-sdk/command-auth.js +3 -3
- package/dist/plugin-sdk/compat.js +1 -1
- package/dist/plugin-sdk/config-runtime.js +3 -3
- package/dist/plugin-sdk/conversation-binding-runtime.js +1 -1
- package/dist/plugin-sdk/conversation-runtime.js +4 -4
- package/dist/plugin-sdk/core.js +3 -3
- package/dist/plugin-sdk/direct-dm.js +1 -1
- package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
- package/dist/plugin-sdk/image-generation-core.js +1 -1
- package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/plugin-sdk/infra-runtime.js +1 -1
- package/dist/plugin-sdk/media-runtime.js +5 -5
- package/dist/plugin-sdk/media-understanding-runtime.js +2 -2
- package/dist/plugin-sdk/media-understanding.js +2 -2
- package/dist/plugin-sdk/memory-core-host-runtime-cli.js +2 -2
- package/dist/plugin-sdk/memory-core.js +2 -2
- package/dist/plugin-sdk/memory-host-search.js +1 -1
- package/dist/plugin-sdk/models-provider-runtime.js +1 -1
- package/dist/plugin-sdk/plugin-test-contracts.js +1 -1
- package/dist/plugin-sdk/plugin-test-runtime.js +1 -1
- package/dist/plugin-sdk/provider-auth-api-key.js +2 -2
- package/dist/plugin-sdk/provider-auth-login.js +1 -1
- package/dist/plugin-sdk/provider-auth.js +2 -2
- package/dist/plugin-sdk/provider-entry.js +1 -1
- package/dist/plugin-sdk/provider-http-test-mocks.js +1 -1
- package/dist/plugin-sdk/provider-test-contracts.js +1 -1
- package/dist/plugin-sdk/reply-dispatch-runtime.js +1 -1
- package/dist/plugin-sdk/reply-runtime.js +4 -4
- package/dist/plugin-sdk/runtime-doctor.js +1 -1
- package/dist/plugin-sdk/runtime-secret-resolution.js +1 -1
- package/dist/plugin-sdk/runtime.js +3 -3
- package/dist/plugin-sdk/sandbox.js +2 -2
- package/dist/plugin-sdk/session-store-runtime.js +2 -2
- package/dist/plugin-sdk/skill-commands-runtime.js +1 -1
- package/dist/plugin-sdk/test-env.js +1 -1
- package/dist/plugin-sdk/testing.js +4 -4
- package/dist/plugin-sdk/text-runtime.js +2 -2
- package/dist/plugin-service-Dozf9cCQ.js +2494 -0
- package/dist/plugins/runtime/index.js +1 -1
- package/dist/plugins-cli-DQjn2ytT.js +566 -0
- package/dist/plugins-command-helpers-Bq2ECLcC.js +117 -0
- package/dist/plugins-install-persist-chKkbZiL.js +121 -0
- package/dist/plugins-update-command-CmzP42fb.js +1008 -0
- package/dist/policy-BsszCKEI.js +172 -0
- package/dist/preemptive-compaction-CVDrUhXK.js +430 -0
- package/dist/proactive-scheduler-tMSsCjDZ.js +1311 -0
- package/dist/probe-Kqo7OqQF.js +426 -0
- package/dist/probe-auth-BJ3yckIw.js +3 -0
- package/dist/program-DFP-Y-n2.js +111 -0
- package/dist/program-context-6irSsyF2.js +2 -0
- package/dist/prompt-overlay-BEhj9P_7.js +72 -0
- package/dist/prompt-select-styled-sDck0Qqt.js +5299 -0
- package/dist/provider-CeNuW2fv.js +70 -0
- package/dist/provider-api-key-auth-URznqBcK.js +113 -0
- package/dist/provider-api-key-auth.runtime.js +1 -1
- package/dist/provider-auth-6QHap3yT.js +36 -0
- package/dist/provider-auth-api-key-LiKYWj18.js +5 -0
- package/dist/provider-auth-choice-Dos9S6zz.js +134 -0
- package/dist/provider-auth-choice-preference-CT90SYMg.js +62 -0
- package/dist/provider-auth-login-CxyguwXg.js +8 -0
- package/dist/provider-auth-login.runtime-CcwpVvy3.js +206 -0
- package/dist/provider-auth-login.runtime.js +1 -1
- package/dist/provider-catalog-5ZYAb8dU.js +11 -0
- package/dist/provider-catalog-B4PQf5FY.js +12 -0
- package/dist/provider-catalog-BDZO2k2i.js +18 -0
- package/dist/provider-catalog-BfLspzSz.js +11 -0
- package/dist/provider-catalog-CVTCMT4G.js +11 -0
- package/dist/provider-catalog-CsAe-lZz.js +11 -0
- package/dist/provider-catalog-DHN9L06H.js +61 -0
- package/dist/provider-catalog-DIJbow9j.js +26 -0
- package/dist/provider-catalog-DWOeklon.js +16 -0
- package/dist/provider-catalog-FJLanWNs.js +16 -0
- package/dist/provider-catalog-High_lTQ.js +13 -0
- package/dist/provider-catalog-n-gU9Nae.js +56 -0
- package/dist/provider-catalog-wB54CKl2.js +17 -0
- package/dist/provider-compat-luZe7x7D.js +37 -0
- package/dist/provider-dispatcher-BXUvUURc.js +22 -0
- package/dist/provider-entry-DTu3iGNy.js +97 -0
- package/dist/provider-flow-0fivwh2g.js +66 -0
- package/dist/provider-models-BLjQcHNo.js +35 -0
- package/dist/provider-models-CLzRFNLI.js +116 -0
- package/dist/provider-models-K_luQ9zn.js +119 -0
- package/dist/provider-registration-CCkbZbdG.js +238 -0
- package/dist/provider-registration-COl5A7qb.js +57 -0
- package/dist/push-apns-8kAU9XsA.js +1013 -0
- package/dist/pw-ai-BNM0ufGa.js +2268 -0
- package/dist/qmd-manager-jB94G-JS.js +1799 -0
- package/dist/qr-cli-6tySRB_t.js +2 -0
- package/dist/qr-cli-CIhINSCH.js +359 -0
- package/dist/qr-image-D0nYZ-TN.js +2 -0
- package/dist/queue-BjJj4JaJ.js +636 -0
- package/dist/realtime-provider-shared-DW8GAMAi.js +21 -0
- package/dist/realtime-transcription-provider-5PlTLQxo.js +180 -0
- package/dist/realtime-voice-provider-Rl-_1Ycr.js +342 -0
- package/dist/record-shared-7rP3Bc1p.js +10 -0
- package/dist/region-BMo8YuB-.js +74 -0
- package/dist/register-command-groups-BoiHpzbo.js +121 -0
- package/dist/register.agent-CMlgjTUp.js +241 -0
- package/dist/register.configure-D2PnybVp.js +15 -0
- package/dist/register.maintenance-Cx1bo75e.js +438 -0
- package/dist/register.message-CX4jxOsU.js +601 -0
- package/dist/register.migrate-BSWEPPJq.js +195 -0
- package/dist/register.onboard-D204MxI8.js +79 -0
- package/dist/register.runtime-BHO4Mi1q.js +343 -0
- package/dist/register.runtime-CVCoeVMv.js +81 -0
- package/dist/register.runtime.js +1 -1
- package/dist/register.setup-B4Satuvx.js +104 -0
- package/dist/register.status-health-sessions-CFmAM_xF.js +1210 -0
- package/dist/register.subclis-BXqnDdhF.js +237 -0
- package/dist/register.subclis-BZeyeBpg.js +3 -0
- package/dist/replay-policy-DDo0U5gR.js +8 -0
- package/dist/reply-DOkWfPrg.js +3498 -0
- package/dist/reply-payloads-dedupe.runtime.js +1 -1
- package/dist/reply.runtime-7BWsyeU3.js +2 -0
- package/dist/reply.runtime.js +1 -1
- package/dist/resolve-BF5HlfJ2.js +280 -0
- package/dist/root-help-Do6N50zy.js +44 -0
- package/dist/route-reply-CxLiVUHW.js +141 -0
- package/dist/route-reply.runtime-WJUFT71F.js +2 -0
- package/dist/route-reply.runtime.js +1 -1
- package/dist/rpc-DaMAO4N5.js +61 -0
- package/dist/rpc.runtime.js +1 -1
- package/dist/run-main-i1Lwkfhp.js +452 -0
- package/dist/runner-BhfpNH-y.js +1497 -0
- package/dist/runs-Dtgg0O85.js +495 -0
- package/dist/runtime-BkiJ7uXt.js +725 -0
- package/dist/runtime-DMH3YN2r.js +200 -0
- package/dist/runtime-Dbujl_K6.js +72 -0
- package/dist/runtime-api-CyQJnTq5.js +3 -0
- package/dist/runtime-api-DTGmvXqo.js +2 -0
- package/dist/runtime-api-XhgZNDDz.js +12 -0
- package/dist/runtime-embedded-pi.runtime-2IY46Gqk.js +3 -0
- package/dist/runtime-embedded-pi.runtime.js +1 -1
- package/dist/runtime-hZStyXlw.js +9 -0
- package/dist/runtime-iikVqZe4.js +107 -0
- package/dist/runtime-internal-ezWrk6r4.js +2 -0
- package/dist/runtime-manifest.runtime.js +1 -1
- package/dist/runtime-model-auth.runtime.js +1 -1
- package/dist/runtime-plugins-Db6kuYci.js +69 -0
- package/dist/runtime-prepare.runtime-Cwi1gPe8.js +80 -0
- package/dist/runtime-prepare.runtime.js +1 -1
- package/dist/runtime-provider-FNR5p8dE.js +21 -0
- package/dist/runtime-registry-loader-B2uTAkcu.js +2 -0
- package/dist/runtime-registry-loader-BSSFfiA2.js +58 -0
- package/dist/runtime-taskflow-BNYQSKvj.js +250 -0
- package/dist/runtime-web-tools-C2G_nK0L.js +1467 -0
- package/dist/runtime-web-tools-fallback.runtime.js +1 -1
- package/dist/runtime-web-tools-manifest.runtime.js +1 -1
- package/dist/runtime-web-tools-public-artifacts.runtime.js +1 -1
- package/dist/runtime-xrE2MaAG.js +2 -0
- package/dist/sandbox-BvT5A1gq.js +2586 -0
- package/dist/sandbox-DcIgRqKW.js +4 -0
- package/dist/sandbox-cli-6nhldN9E.js +446 -0
- package/dist/secrets-cli-Cvl-P5yr.js +2099 -0
- package/dist/security-audit-BeGlFXMY.js +34 -0
- package/dist/security-cli-oVahjZR_.js +486 -0
- package/dist/semantic-dedup-CA-I7Ukf.js +95 -0
- package/dist/send-D85zCCtz.js +993 -0
- package/dist/server-A5MuFop-.js +13 -0
- package/dist/server-BeEiCBG9.js +77 -0
- package/dist/server-context-COXRgV8p.js +4164 -0
- package/dist/server-methods-CXboJZ1n.js +11666 -0
- package/dist/server-middleware-4ESC7-Sf.js +110 -0
- package/dist/server-node-events-CBlxJH3f.js +451 -0
- package/dist/server.impl-DZDIujUx.js +19517 -0
- package/dist/session-CA0A9yxZ.js +48 -0
- package/dist/session-archive.runtime.js +1 -1
- package/dist/session-conversation-BECTi25r.js +27 -0
- package/dist/session-file-B8YnZYnE.js +44 -0
- package/dist/session-fork.runtime.js +1 -1
- package/dist/session-key-DlOZb3y8.js +65 -0
- package/dist/session-meta-Mc12pE_f.js +109 -0
- package/dist/session-override-BOCk8YTE.js +103 -0
- package/dist/session-reset-model.runtime-Dd8V_Qvt.js +120 -0
- package/dist/session-reset-model.runtime.js +1 -1
- package/dist/session-reset-service-Di0Ge9fM.js +473 -0
- package/dist/session-subagent-reactivation.runtime-Cj6XCKz6.js +2 -0
- package/dist/session-subagent-reactivation.runtime.js +1 -1
- package/dist/session-tab-registry-DGfXa1gc.js +553 -0
- package/dist/session-updates-D3PEvDgu.js +234 -0
- package/dist/session-updates.runtime-CkHjMzfc.js +2 -0
- package/dist/session-updates.runtime.js +1 -1
- package/dist/session-utils-D1IfM96V.js +915 -0
- package/dist/sessions-CEUVpAYU.js +2 -0
- package/dist/sessions-CoYhbu6F.js +45 -0
- package/dist/sessions-Dr45TPx1.js +226 -0
- package/dist/sessions.runtime-3gC3AX8f.js +2 -0
- package/dist/sessions.runtime.js +1 -1
- package/dist/setup-CuKFik4t.js +496 -0
- package/dist/setup-DAJzkyY_.js +329 -0
- package/dist/setup-surface-Df7BhHSW.js +586 -0
- package/dist/setup.finalize-DhoSjlM4.js +432 -0
- package/dist/setup.gateway-config-B52nJix9.js +246 -0
- package/dist/shared-BYZv0yT8.js +218 -0
- package/dist/shared-D0v2yZO3.js +224 -0
- package/dist/shared-DNpedGYM.js +175 -0
- package/dist/shared-rD1K1AE-.js +36 -0
- package/dist/shared-runtime-C_5NHgLY.js +7 -0
- package/dist/short-term-promotion-BVTlPjVr.js +1631 -0
- package/dist/skill-commands-DRwVp1wc.js +82 -0
- package/dist/skill-commands.runtime-BKbablWg.js +2 -0
- package/dist/skill-commands.runtime.js +1 -1
- package/dist/skill-lifecycle-rVTllkZP.js +105 -0
- package/dist/skill-quality-gate-DHgd48qD.js +127 -0
- package/dist/skill-usage-tracker-B7aHh_Ob.js +31 -0
- package/dist/skills-cli-KHLSIaYT.js +370 -0
- package/dist/skills-install-Bi0q12q3.js +822 -0
- package/dist/speech-provider-BKPgfWII.js +103 -0
- package/dist/speech-provider-CqKVL2PU.js +184 -0
- package/dist/speech-provider-DaDkiNqQ.js +182 -0
- package/dist/speech-provider-DzPBhJrM.js +43 -0
- package/dist/speech-provider-vPL2J1om.js +167 -0
- package/dist/stage-sandbox-media.runtime-BKwxztks.js +230 -0
- package/dist/stage-sandbox-media.runtime.js +1 -1
- package/dist/state-dir-env-BwtlM2-b.js +156 -0
- package/dist/state-migrations-yqQW8QaA.js +822 -0
- package/dist/status-B1w-wvI5.js +278 -0
- package/dist/status-BhC5yy0h.js +479 -0
- package/dist/status-BnKPMpvt.js +473 -0
- package/dist/status-CRKDtvgH.js +391 -0
- package/dist/status-D9-BPbMq.js +3 -0
- package/dist/status-DuipKIlm.js +2 -0
- package/dist/status-I6cSEcXL.js +2 -0
- package/dist/status-all-dJ4Cgy30.js +487 -0
- package/dist/status-json-7SU-gA25.js +14 -0
- package/dist/status-json-command-SjLpkj4G.js +84 -0
- package/dist/status-runtime-shared-DAXwrfRv.js +254 -0
- package/dist/status.command.text-runtime-DBq5ztDE.js +15 -0
- package/dist/status.gateway-connection.runtime.js +1 -1
- package/dist/status.gateway-probe-BMXgnQZz.js +16 -0
- package/dist/status.link-channel-Co7PKXYC.js +35 -0
- package/dist/status.node-mode-BskByQcM.js +2 -0
- package/dist/status.node-mode-MNP21t-j.js +32 -0
- package/dist/status.scan-86I4Stxm.js +62 -0
- package/dist/status.scan-overview-CL7c8JQD.js +395 -0
- package/dist/status.scan.deps.runtime.js +1 -1
- package/dist/status.scan.fast-json-C3Kd8f32.js +128 -0
- package/dist/status.scan.fast-json-DLYIlSmm.js +2 -0
- package/dist/status.scan.runtime-D7E5Jl1o.js +417 -0
- package/dist/status.scan.runtime.js +1 -1
- package/dist/status.summary-0CUmMOwK.js +209 -0
- package/dist/status.summary-Bc7FVtbT.js +2 -0
- package/dist/store-DEIAq0ow.js +190 -0
- package/dist/store-Dv1w50zD.js +1112 -0
- package/dist/store.runtime-CMb32WnT.js +2 -0
- package/dist/store.runtime.js +1 -1
- package/dist/stream-CV2RD2-m.js +153 -0
- package/dist/stream-DcD1NqBt.js +649 -0
- package/dist/stream-wrappers-C7tDdQmU.js +144 -0
- package/dist/subagent-announce.registry.runtime-BN09hP9S.js +3 -0
- package/dist/subagent-announce.registry.runtime.js +1 -1
- package/dist/subagent-control-g8gumjoW.js +485 -0
- package/dist/subagent-followup.runtime-D8_8y-bE.js +68 -0
- package/dist/subagent-followup.runtime.js +1 -1
- package/dist/subagent-list-BQadcXKp.js +168 -0
- package/dist/subagent-orphan-recovery-DKtl7-gN.js +214 -0
- package/dist/subagent-registry-CgA-7Sw0.js +2888 -0
- package/dist/subagent-registry-runtime-U36TYYp-.js +2 -0
- package/dist/subagent-registry.runtime-BG_04MZ8.js +3 -0
- package/dist/subagent-registry.runtime.js +1 -1
- package/dist/subagent-spawn-C-lFCaZU.js +781 -0
- package/dist/subagents-format-L-LSiKRw.js +628 -0
- package/dist/subcli-descriptors-BhcmMAKP.js +173 -0
- package/dist/supervisor-D0ax5pz4.js +737 -0
- package/dist/supervisor-log.runtime.js +1 -1
- package/dist/system-cli-R67ndVvg.js +59 -0
- package/dist/systemd-linger-BGik3fP6.js +2 -0
- package/dist/targets-fPlUpwy5.js +594 -0
- package/dist/targets.runtime.js +1 -1
- package/dist/task-executor-C5OqCdJT.js +350 -0
- package/dist/task-owner-access-DUUqFfrD.js +48 -0
- package/dist/task-registry-BLiMD4oJ.js +2346 -0
- package/dist/task-registry-control.runtime-r5niRcNj.js +3 -0
- package/dist/task-registry-control.runtime.js +1 -1
- package/dist/task-registry-delivery-runtime-IKmxWzoW.js +3 -0
- package/dist/task-registry-delivery-runtime-OKU7m4ZJ.js +2 -0
- package/dist/task-registry.maintenance-BD6d9fLw.js +425 -0
- package/dist/task-registry.maintenance-BWULaP2e.js +2 -0
- package/dist/test.DNmyFkvJ-NRc14Xgm.js +13549 -0
- package/dist/testing-CaQDWPX6.js +441 -0
- package/dist/text-report-B1SlZa6w.js +587 -0
- package/dist/text-runtime-CNganbWZ.js +313 -0
- package/dist/thinking-policy-Cvv8S99b.js +25 -0
- package/dist/thread-bindings-1wsoDY-O.js +223 -0
- package/dist/tool-auth-shared-C6gQslQe.js +53 -0
- package/dist/tool-config-shared-RmlkWteZ.js +19 -0
- package/dist/tool-schema-runtime-CNP7lov-.js +1892 -0
- package/dist/tools-effective-inventory-D2LiEd3k.js +152 -0
- package/dist/tools.runtime-dLGMSI3J.js +4 -0
- package/dist/tools.runtime.js +1 -1
- package/dist/topic-types-DbuGFU7y.js +176 -0
- package/dist/topic-types-zRlULO3k.js +2 -0
- package/dist/transcript-DYzzYksv.js +191 -0
- package/dist/transcript.runtime-ChFgiLq_.js +2 -0
- package/dist/transcript.runtime.js +1 -1
- package/dist/transport-policy-BHGu-DSE.js +75 -0
- package/dist/tts-lKPaxyDc.js +31 -0
- package/dist/tts.runtime-DLCeTRap.js +3 -0
- package/dist/tts.runtime.js +1 -1
- package/dist/tui-1ksaisKX.js +4017 -0
- package/dist/tui-cli-B809Ui8G.js +31 -0
- package/dist/uninstall-CG2Twdr_.js +172 -0
- package/dist/update-3rFnCBJG.js +1253 -0
- package/dist/update-cli-S6D0vMUi.js +1763 -0
- package/dist/update-runner-Cp7B-UEq.js +1490 -0
- package/dist/video-generation-provider-4GrzW0iH.js +240 -0
- package/dist/video-generation-provider-BFzOwA12.js +77 -0
- package/dist/video-generation-provider-BIqj5J7G.js +227 -0
- package/dist/video-generation-provider-BrpGBUIA.js +64 -0
- package/dist/video-generation-provider-Bww0w9Vg.js +263 -0
- package/dist/video-generation-provider-CAqz-_cR.js +246 -0
- package/dist/video-generation-provider-DVgCz9i4.js +181 -0
- package/dist/video-generation-provider-_ge0iP27.js +233 -0
- package/dist/video-generation-provider-cMUD_fls.js +104 -0
- package/dist/video-generation-provider-m9cCpntw.js +171 -0
- package/dist/video-model-catalog-CyWIvCKl.js +187 -0
- package/dist/web-search-BtwmRrNq.js +221 -0
- package/dist/web-search-provider-BpVY1JYn.js +155 -0
- package/dist/webhooks-cli-BGIp-CI4.js +321 -0
- package/dist/workspace-B5a0KS0o.js +306 -0
- package/dist/x-search-shared-lXehAzFd.js +109 -0
- package/package.json +1 -1
- package/dist/abort-BAZ4Ebr2.js +0 -202
- package/dist/abort-cutoff.runtime-igWwDxEw.js +0 -20
- package/dist/abort.runtime-DcpaA7X3.js +0 -2
- package/dist/acp-cli-fDFv0ZXk.js +0 -2171
- package/dist/acp-spawn-DMdjDkJ5.js +0 -1023
- package/dist/acp-stateful-target-driver-D5xSz_pT.js +0 -87
- package/dist/action-agents-qdK1hUqZ.js +0 -67
- package/dist/action-focus-CdznyCxX.js +0 -124
- package/dist/action-help-BXDtyZ9B.js +0 -7
- package/dist/action-info-DeYigB1U.js +0 -58
- package/dist/action-kill-BYYddQgx.js +0 -33
- package/dist/action-list-DCUxXaqg.js +0 -21
- package/dist/action-log-ta83LqJ5.js +0 -30
- package/dist/action-send-BwBxb6AI.js +0 -39
- package/dist/action-spawn-CDGEb2hC.js +0 -46
- package/dist/action-unfocus-MTpGUzeN.js +0 -28
- package/dist/agent-5S4TqcpJ.js +0 -2
- package/dist/agent-command-DYyWnBzs.js +0 -1479
- package/dist/agent-runner-utils-rqbgwfQ0.js +0 -202
- package/dist/agent-runner.runtime-CTRf_5bQ.js +0 -2825
- package/dist/agents-CfpAO55S.js +0 -887
- package/dist/agents-D-ZmUSjz.js +0 -5
- package/dist/api-C5y5vg1n.js +0 -35
- package/dist/api-CepvsESp.js +0 -5
- package/dist/api-CxsUi6pI.js +0 -4
- package/dist/api-D-WxCS9o.js +0 -16
- package/dist/api-D0KNG-Ur.js +0 -3
- package/dist/api-D2Ik6_Ws.js +0 -4
- package/dist/api-D2RppWnw.js +0 -3
- package/dist/api-DSlHQbdg.js +0 -2
- package/dist/api-DZMhnnQa.js +0 -2
- package/dist/api-Do7V2W5w.js +0 -5
- package/dist/api-Dzb-44IA.js +0 -45
- package/dist/api-Nut6qdm_.js +0 -2
- package/dist/api-YOeD914m.js +0 -19
- package/dist/api-uhRvZWia.js +0 -44
- package/dist/apply-BVSjDVZt.js +0 -493
- package/dist/apply.runtime-BHaqP4o2.js +0 -2
- package/dist/apply.runtime-CGLynFYo.js +0 -166
- package/dist/audit-D0PNQf9m.js +0 -885
- package/dist/audit-extra.async-fyXymls3.js +0 -847
- package/dist/audit.deep.runtime-T3-fGhge.js +0 -2
- package/dist/audit.nondeep.runtime-D-CVblWF.js +0 -859
- package/dist/audit.runtime-CjBqFqlt.js +0 -7
- package/dist/auth-CeX7bu-Z.js +0 -181
- package/dist/auth-choice-D5Gw60Q0.js +0 -3
- package/dist/auth-choice-DEMT93N0.js +0 -71
- package/dist/auth-choice-ilal0OWZ.js +0 -353
- package/dist/auth-choice-options-BwW-zFH5.js +0 -104
- package/dist/auth-choice-prompt--rfX_gS3.js +0 -2
- package/dist/auth-choice-prompt-X5e5PeD9.js +0 -36
- package/dist/auto-disable-BIMG7Fjd.js +0 -69
- package/dist/auto-disable-C-48B0tK.js +0 -2
- package/dist/banner-B6HSrIeR.js +0 -2
- package/dist/banner-Dd3dApUc.js +0 -290
- package/dist/binding-routing-cuSlltgJ.js +0 -50
- package/dist/binding-targets-Cx48IZQc.js +0 -99
- package/dist/bridge-server-CRtklB7G.js +0 -103
- package/dist/browser-node-runtime-BwLBwW3b.js +0 -12
- package/dist/browser-runtime-DjH_OV90.js +0 -377
- package/dist/capability-cli-KFyLj819.js +0 -1350
- package/dist/catalog-provider-B4tNRXms.js +0 -40
- package/dist/cdp.helpers-01EoG2KI.js +0 -372
- package/dist/channel-core-D1nci65b.js +0 -5
- package/dist/channel-plugin-resolution-xTnpOtic.js +0 -146
- package/dist/channel.runtime-DadpArDu.js +0 -399
- package/dist/channels-6yreyEBs.js +0 -1146
- package/dist/channels-cli-bimz2bUo.js +0 -247
- package/dist/chat-BFMiUu-G.js +0 -213
- package/dist/chrome-WA-FdKve.js +0 -1080
- package/dist/chrome.executables-BlV3kIfY.js +0 -541
- package/dist/clawbot-cli-BLdu0IQ8.js +0 -9
- package/dist/clawhub-BuLRhTNF.js +0 -400
- package/dist/cli-CDdqVrBY.js +0 -2
- package/dist/cli-DOuRcnxP.js +0 -2
- package/dist/cli-DgwVAGNK.js +0 -154
- package/dist/cli-DkIGpSHw.js +0 -57
- package/dist/cli-auth-seam-ynlvw1N6.js +0 -14
- package/dist/cli-backend-6x4Q-WdC.js +0 -66
- package/dist/cli-geEuOB-I.js +0 -191
- package/dist/cli-migration-ChII14Ro.js +0 -127
- package/dist/cli-runner-B1EhBITN.js +0 -1661
- package/dist/cli-runner.runtime-Boum-j7F.js +0 -3
- package/dist/cli-runner.runtime-h-ixiuX9.js +0 -2
- package/dist/cli-shared-Bz_H1_nP.js +0 -142
- package/dist/cli.runtime-D9B-1X3E.js +0 -819
- package/dist/collector-CkXyPwuF.js +0 -378
- package/dist/collector-Fmz7hWGE.js +0 -2
- package/dist/command-config-resolution-C7qsfOyi.js +0 -23
- package/dist/command-config-resolution-DaAgReAg.js +0 -2
- package/dist/command-execution-startup-BBpnISEp.js +0 -269
- package/dist/command-queue-BCnBBdS2.js +0 -260
- package/dist/command-registry-BXxYFSZD.js +0 -3
- package/dist/command-registry-CWHMKAbU.js +0 -108
- package/dist/command-secret-gateway-B-nb52Yw.js +0 -528
- package/dist/commands-acp-B6t0636h.js +0 -1017
- package/dist/commands-compact.runtime-Bs4Jrohf.js +0 -10
- package/dist/commands-core.runtime-uSBWVpXt.js +0 -2
- package/dist/commands-handlers.runtime-i2DbzlBK.js +0 -3762
- package/dist/commands-models-iSG3asW2.js +0 -306
- package/dist/commands-reset-hooks-CRo29fjd.js +0 -129
- package/dist/commands-status-CDGtgSo_.js +0 -223
- package/dist/commands-status.runtime-VMRV_4zg.js +0 -2
- package/dist/commands-subagents-control.runtime-B8wUjfcG.js +0 -3
- package/dist/commands-subagents-control.runtime-DlZEcLMM.js +0 -2
- package/dist/commands.runtime-faXcqJ1G.js +0 -103
- package/dist/comment-shared-CZcHHaVj.js +0 -40
- package/dist/compact-CJd53VDB.js +0 -11322
- package/dist/compact.runtime-BM5uCK5R.js +0 -7
- package/dist/completion-cli-CYgAzE_f.js +0 -2
- package/dist/completion-cli-W2b6VuQY.js +0 -464
- package/dist/config-B3ly_OWp.js +0 -2
- package/dist/config-BZWQh368.js +0 -136
- package/dist/config-CAo3Ki55.js +0 -101
- package/dist/config-DHTe4Ity.js +0 -166
- package/dist/config-cli-W3JjPbd5.js +0 -947
- package/dist/config-defaults-BQ8HCUkk.js +0 -163
- package/dist/config-guard-BWis2bnW.js +0 -94
- package/dist/config-runtime-Buoon-Hh.js +0 -14
- package/dist/config-validation-DiYgptBq.js +0 -279
- package/dist/configure-Bza-h92_.js +0 -1159
- package/dist/configure-DBn0SJq4.js +0 -2
- package/dist/context-writer-vqAKHKCE.js +0 -286
- package/dist/control-auth-OK_tGODq.js +0 -122
- package/dist/conversation-id-CRxR5h1M.js +0 -140
- package/dist/conversation-runtime-BijGAsoO.js +0 -31
- package/dist/core-DgA4TZVZ.js +0 -210
- package/dist/core-command-descriptors-CLSA5Moa.js +0 -106
- package/dist/cron-cli-Dm_zUhf-.js +0 -637
- package/dist/curator-BPSUUSGi.js +0 -586
- package/dist/daemon-cli-DZEJkmJ3.js +0 -416
- package/dist/daemon-install--tdrtKs3.js +0 -63
- package/dist/delegate-UEuflcXA.js +0 -61
- package/dist/deliver-BALTiw7q.js +0 -782
- package/dist/deliver-D0l9CtEc.js +0 -3
- package/dist/deliver-runtime-Dq4JvMOl.js +0 -2
- package/dist/delivery-outbound.runtime-CWIWrBQ9.js +0 -6
- package/dist/delivery-queue--ayb_Pk_.js +0 -2
- package/dist/delivery-queue-BwVoZNGI.js +0 -372
- package/dist/detect-BgviB4L6.js +0 -113
- package/dist/devices-cli-BdpXHC-r.js +0 -329
- package/dist/diagnostic-IuQCudMt.js +0 -311
- package/dist/direct-dm-DJMPWBuI.js +0 -139
- package/dist/directive-handling.fast-lane-f0CLC4-E.js +0 -2
- package/dist/directive-handling.fast-lane-sh0YnNSx.js +0 -64
- package/dist/directive-handling.impl-B7o2ov0i.js +0 -2
- package/dist/directive-handling.impl-a0yZtzf0.js +0 -659
- package/dist/directive-handling.parse-UrrfLTt9.js +0 -376
- package/dist/directive-handling.persist-DMdCGdJo.js +0 -139
- package/dist/directive-handling.persist.runtime-Bj-oQrrf.js +0 -2
- package/dist/directive-handling.shared-B3kBVf8z.js +0 -159
- package/dist/directory-cli-Dd1zPBaO.js +0 -239
- package/dist/dispatch-acp-D_6seEb3.js +0 -969
- package/dist/dispatch-acp-manager.runtime-CblPKuWP.js +0 -3
- package/dist/dispatch-acp-media.runtime-jQ51iwVZ.js +0 -3
- package/dist/dispatch-acp-session.runtime-CztwPJU8.js +0 -2
- package/dist/dispatch-acp-tts.runtime-CYwftiQH.js +0 -3
- package/dist/dispatch-acp.runtime-CslN35Tv.js +0 -19
- package/dist/dispatch-rlOjKp0R.js +0 -1041
- package/dist/dns-cli-oGpuQf5e.js +0 -192
- package/dist/doctor-completion-DzuKPgxo.js +0 -90
- package/dist/doctor-config-preflight-BvbXh8XL.js +0 -2
- package/dist/doctor-config-preflight-gAI_GeuH.js +0 -148
- package/dist/doctor-state-migrations-BVYC3Dnw.js +0 -2
- package/dist/doctor-state-migrations-Bb5ljS8B.js +0 -3
- package/dist/drive-C-EcQpgt.js +0 -750
- package/dist/embedding-provider-p9lV_6yT.js +0 -129
- package/dist/engine-lzlFl9eS.js +0 -72
- package/dist/entry-capabilities-C4wBXlqX.js +0 -89
- package/dist/exec-approval-forwarder.runtime-pAraMyEv.js +0 -3
- package/dist/exec-approvals-cli-DFRUYivK.js +0 -484
- package/dist/exec-defaults-DiLurRDC.js +0 -1440
- package/dist/extensions/diffs/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
- package/dist/extensions/diffs/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
- package/dist/extensions/diffs/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
- package/dist/extensions/diffs/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
- package/dist/extensions/diffs/node_modules/typebox/build/type/action/awaited.mjs +0 -15
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/awaited/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/awaited/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
- package/dist/extensions/diffs/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
- package/dist/extensions/diffs/node_modules/typebox/build/type/extends/promise.mjs +0 -9
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/base.d.mts +0 -50
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/base.mjs +0 -84
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/iterator.mjs +0 -28
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/promise.d.mts +0 -21
- package/dist/extensions/diffs/node_modules/typebox/build/type/types/promise.mjs +0 -29
- package/dist/extensions/diffs/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_base.mjs +0 -4
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/default/from_base.mjs +0 -5
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/error.mjs +0 -6
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/index.mjs +0 -1
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
- package/dist/extensions/diffs/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
- package/dist/extensions/diffs/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
- package/dist/extensions/diffs/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
- package/dist/extensions/feishu/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
- package/dist/extensions/feishu/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
- package/dist/extensions/feishu/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
- package/dist/extensions/feishu/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
- package/dist/extensions/feishu/node_modules/typebox/build/type/action/awaited.mjs +0 -15
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/awaited/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/awaited/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
- package/dist/extensions/feishu/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
- package/dist/extensions/feishu/node_modules/typebox/build/type/extends/promise.mjs +0 -9
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/base.d.mts +0 -50
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/base.mjs +0 -84
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/iterator.mjs +0 -28
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/promise.d.mts +0 -21
- package/dist/extensions/feishu/node_modules/typebox/build/type/types/promise.mjs +0 -29
- package/dist/extensions/feishu/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_base.mjs +0 -4
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/default/from_base.mjs +0 -5
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/error.mjs +0 -6
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/index.mjs +0 -1
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
- package/dist/extensions/feishu/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
- package/dist/extensions/feishu/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
- package/dist/extensions/feishu/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
- package/dist/fragment-collector-BCPVxm0P.js +0 -189
- package/dist/fragment-store-9TxXgGV-.js +0 -218
- package/dist/fragment-store-BHYVqNjU.js +0 -2
- package/dist/gateway-cli-Apcziann.js +0 -1518
- package/dist/gateway-discovery-targets-B_svEsZh.js +0 -431
- package/dist/gateway-install-token-DYyEiJEM.js +0 -284
- package/dist/gateway-rpc-rkIqagFK.js +0 -14
- package/dist/gateway-secret-options-DqYvLFrh.js +0 -38
- package/dist/gemini-cli-provider-D_Q97B93.js +0 -106
- package/dist/gemini-web-search-provider-C5AqCOHg.js +0 -167
- package/dist/get-reply-from-config.runtime-yQ65D-BO.js +0 -2
- package/dist/git-commit-CYrjhrEv.js +0 -2
- package/dist/hard-trigger-CWQ1TzAM.js +0 -98
- package/dist/health-C-3mkxI4.js +0 -2
- package/dist/health-Jkvh_gy_.js +0 -579
- package/dist/heartbeat-runner-COZgAa6a.js +0 -4
- package/dist/heartbeat-runner-c-hruBTy.js +0 -1209
- package/dist/heartbeat-runner.runtime-CGjPrCRu.js +0 -2
- package/dist/help-ChHRacYd.js +0 -81
- package/dist/hooks-cli-Be0aA_p5.js +0 -354
- package/dist/hooks-status-y8H2HWQf.js +0 -86
- package/dist/image-generation-core-DmsyCN1n.js +0 -17
- package/dist/image-generation-provider-BV6Pfe-s.js +0 -136
- package/dist/image-generation-provider-BlMt8X7X.js +0 -94
- package/dist/image-generation-provider-BoAxEAD_.js +0 -130
- package/dist/image-generation-provider-CrsgbMNJ.js +0 -163
- package/dist/image-generation-provider-ppz9PIhB.js +0 -279
- package/dist/image-runtime-DHMm2iiA.js +0 -7
- package/dist/inbound-reply-dispatch-D4pxE_PL.js +0 -73
- package/dist/inbound.runtime-CgrGH800.js +0 -4
- package/dist/inbound.runtime-ddIkY_PP.js +0 -3
- package/dist/ingest-CUZSOIc_.js +0 -2
- package/dist/ingest-DAxhsmxh.js +0 -691
- package/dist/install-3w_mg2Qx.js +0 -662
- package/dist/install-security-scan-C-6bE5h5.js +0 -22
- package/dist/install-security-scan.runtime-B_GzpPuC.js +0 -299
- package/dist/install-skills-YwdSU6-H.js +0 -70
- package/dist/install.runtime-B-r9-spQ.js +0 -27
- package/dist/install.runtime-Cy-vGIfI.js +0 -12
- package/dist/kaijibot-tools-oT0CsNSN.js +0 -9233
- package/dist/kaijibot-tools.runtime-SmBrfYIG.js +0 -2
- package/dist/kimi-web-search-provider-CH8BxsLJ.js +0 -308
- package/dist/lancedb-runtime-SvOqB09K.js +0 -201
- package/dist/library-BAFScIar.js +0 -45
- package/dist/list.runtime-CpyEd39c.js +0 -9
- package/dist/list.runtime-DC4mjmHx.js +0 -12
- package/dist/llm-draft-generator-DCqJ5qYk.js +0 -567
- package/dist/llm-draft-generator-DRAYzsiM.js +0 -2
- package/dist/llm-engine-BFVOaalJ.js +0 -1829
- package/dist/llm-engine-Bi8xqCtn.js +0 -2
- package/dist/login-D-oLC3GG.js +0 -108
- package/dist/logs-cli-DWeiHJ3L.js +0 -264
- package/dist/manager-CO5bSnH2.js +0 -3301
- package/dist/manager-Mv-1Vint.js +0 -2048
- package/dist/mcp-cli-D-6e6tc4.js +0 -723
- package/dist/media-runtime-vNPB_wvw.js +0 -312
- package/dist/media-understanding-LgBsXLVI.js +0 -83
- package/dist/media-understanding-provider-BOjajU5r.js +0 -18
- package/dist/media-understanding-provider-BTwJ_UWh.js +0 -112
- package/dist/media-understanding-provider-BXCpgh96.js +0 -13
- package/dist/media-understanding-provider-B_nfix0N.js +0 -30
- package/dist/media-understanding-provider-C6Wlc9vT.js +0 -21
- package/dist/media-understanding-provider-CvCuZ9SC.js +0 -14
- package/dist/media-understanding-provider-D7M3-aQh.js +0 -67
- package/dist/media-understanding-provider-DcEr1WSL.js +0 -123
- package/dist/media-understanding-provider-Ph7rGWKI.js +0 -37
- package/dist/media-understanding-provider-Wri695dH.js +0 -69
- package/dist/media-understanding-provider-um6kxSmK.js +0 -18
- package/dist/media-understanding-runtime-DJKuKxY0.js +0 -2
- package/dist/memory-B1XoiBa2.js +0 -3
- package/dist/memory-CYhHObg6.js +0 -242
- package/dist/memory-core-host-runtime-cli-DKoKyS93.js +0 -9
- package/dist/memory-index-BJqUmQXm.js +0 -2
- package/dist/memory-index-BUBt9yHK.js +0 -514
- package/dist/memory-repair-BhB6W5xm.js +0 -2
- package/dist/message-DVdUnIlB.js +0 -223
- package/dist/message-action-runner-QfFvL3oa.js +0 -2
- package/dist/message-action-runner-Y7yazXbD.js +0 -1628
- package/dist/metadata-registry-loader-DWwP6rZg.js +0 -2
- package/dist/minimax-web-search-provider-QCTjMoVf.js +0 -165
- package/dist/mmr-B1GMktQo.js +0 -146
- package/dist/model-catalog-CA2IsB6Z.js +0 -157
- package/dist/model-definitions-BNLayQ7G.js +0 -74
- package/dist/model-definitions-DejSv-w8.js +0 -28
- package/dist/model-definitions-DhIGF3DB.js +0 -258
- package/dist/model-picker-BoTUAvyS.js +0 -3
- package/dist/model-picker-zTMq5U_r.js +0 -490
- package/dist/model-picker.runtime-COHk6fb4.js +0 -15
- package/dist/model-selection-FnwgRfx6.js +0 -381
- package/dist/models-3LfDzypw.js +0 -2584
- package/dist/models-8gXAOc0J.js +0 -555
- package/dist/models-BQ8ZS754.js +0 -18
- package/dist/models-BXgvHura.js +0 -760
- package/dist/models-BdrRvR0O.js +0 -157
- package/dist/models-Be6rN_97.js +0 -19
- package/dist/models-CgvFbxD_.js +0 -47
- package/dist/models-Dq3fePTE.js +0 -18
- package/dist/models-_CdIkMJJ.js +0 -2
- package/dist/models-cli-ChSB3jod.js +0 -197
- package/dist/models.fetch-BlOH1ObL.js +0 -518
- package/dist/monitor-SKMOYue_.js +0 -4435
- package/dist/music-generation-provider-CAgLx7IH.js +0 -169
- package/dist/music-generation-provider-CWV2efO0.js +0 -142
- package/dist/music-generation-provider-tvRm1diG.js +0 -238
- package/dist/node-cli-CnQUquRc.js +0 -2362
- package/dist/nodes-cli-k8tVMKp0.js +0 -1046
- package/dist/notify-Da_SjUtR.js +0 -305
- package/dist/oauth-BgpHp4DM.js +0 -152
- package/dist/oauth-CnJkK1xf.js +0 -57
- package/dist/oauth-token-shared-GMxqYtaF.js +0 -28
- package/dist/oauth.credentials-Bz3A0tpU.js +0 -165
- package/dist/oauth.flow-C1pBobyI.js +0 -122
- package/dist/oauth.settings-DO5ybG8C.js +0 -44
- package/dist/oauth.token-BiOjbfIt.js +0 -43
- package/dist/onboard-4cz1qQ_A.js +0 -25
- package/dist/onboard-BDsdPtMZ.js +0 -25
- package/dist/onboard-BMwN-mJd.js +0 -29
- package/dist/onboard-BdGGek2m.js +0 -26
- package/dist/onboard-BfesemW3.js +0 -34
- package/dist/onboard-C5lGFfDY.js +0 -39
- package/dist/onboard-CNrLUedN.js +0 -25
- package/dist/onboard-CR_sdI-6.js +0 -29
- package/dist/onboard-CpyvClpQ.js +0 -621
- package/dist/onboard-CuviKb6n2.js +0 -54
- package/dist/onboard-D2FOrkio.js +0 -67
- package/dist/onboard-DAt-DAZJ.js +0 -22
- package/dist/onboard-DIurCAm9.js +0 -36
- package/dist/onboard-DJZmbiCZ.js +0 -58
- package/dist/onboard-NUWGhXYK.js +0 -48
- package/dist/onboard-_zwmdns7.js +0 -312
- package/dist/onboard-channels-8xjH4Rxx.js +0 -2
- package/dist/onboard-channels-C5YcSaTV.js +0 -1260
- package/dist/onboard-config-BPXiaYYN.js +0 -2
- package/dist/onboard-custom-CbvrlqwN.js +0 -2
- package/dist/onboard-custom-DpGZWCkE.js +0 -647
- package/dist/onboard-helpers-BkgpYw91.js +0 -223
- package/dist/onboard-helpers-DNXP1va5.js +0 -5
- package/dist/onboard-hooks-DBikJ6h9.js +0 -35
- package/dist/onboard-remote-CGGcjWRI.js +0 -193
- package/dist/onboard-remote-CjC2kFSP.js +0 -2
- package/dist/onboard-search-_eepOkzc.js +0 -324
- package/dist/onboard-skills-BhHUGPqh.js +0 -2
- package/dist/onboard-skills-CEzVQ_WL.js +0 -134
- package/dist/openai-codex-auth-identity-D-KQbSyQ.js +0 -45
- package/dist/openai-codex-cli-auth-CuaNZ-Xi.js +0 -57
- package/dist/openai-codex-provider-CbIKBwnQ.js +0 -299
- package/dist/openai-codex-shared-C17lyOLN.js +0 -6
- package/dist/openai-provider-CgI6oZZJ.js +0 -283
- package/dist/openclaw-migrator-ulNNIw-g.js +0 -2
- package/dist/pair-command-approve-B6cPcRmP.js +0 -34
- package/dist/pairing-cli-Dopy7pMf.js +0 -117
- package/dist/perplexity-web-search-provider-CLfCz5ll.js +0 -92
- package/dist/perplexity-web-search-provider.runtime-BlBBCnh1.js +0 -332
- package/dist/perplexity-web-search-provider.runtime-F_tn1b70.js +0 -2
- package/dist/persistent-bindings.lifecycle-4Sj3YvH6.js +0 -94
- package/dist/pi-embedded-CXUV32ut.js +0 -2
- package/dist/pi-embedded-DoNNtCWr.js +0 -6
- package/dist/pi-embedded-runner-Dq4lYjca.js +0 -8346
- package/dist/pi-embedded-subscribe.handlers.compaction.runtime-Ca5o8DbU.js +0 -23
- package/dist/pi-embedded.runtime-BCRJuvse.js +0 -5
- package/dist/pi-tools.before-tool-call.runtime-B6HYOE8c.js +0 -354
- package/dist/plugin-enabled-CKRm8wtW.js +0 -71
- package/dist/plugin-install-CybWKOIa.js +0 -2
- package/dist/plugin-install-config-policy-DTrvBgla.js +0 -137
- package/dist/plugin-install-oAl4Yczg.js +0 -227
- package/dist/plugin-install-plan-DLIR_ZqM.js +0 -50
- package/dist/plugin-registration-BmV1gqZB.js +0 -23
- package/dist/plugin-registry-1Rq5Tmvl.js +0 -3
- package/dist/plugin-registry-DL8pf5Mp.js +0 -2
- package/dist/plugin-registry-loader-CAAg3dpS.js +0 -22
- package/dist/plugin-service-CK4Rim4g.js +0 -2494
- package/dist/plugins-cli-CjQt0z09.js +0 -566
- package/dist/plugins-command-helpers-AJAozWnL.js +0 -117
- package/dist/plugins-install-persist-Dj-wP3UP.js +0 -121
- package/dist/plugins-update-command-DfAN1qbt.js +0 -1008
- package/dist/policy-B_C91HSo.js +0 -172
- package/dist/preemptive-compaction-DHty3miI.js +0 -430
- package/dist/proactive-scheduler-BQynqyS0.js +0 -1287
- package/dist/probe-CASgRLVo.js +0 -426
- package/dist/probe-auth-Crs0lOpZ.js +0 -3
- package/dist/program-BlfK81FP.js +0 -111
- package/dist/program-context-BgeVW_T_.js +0 -2
- package/dist/prompt-overlay-v0MJ0MCL.js +0 -72
- package/dist/prompt-select-styled-Dzmrxj1a.js +0 -5299
- package/dist/provider-BilPcosq.js +0 -70
- package/dist/provider-api-key-auth-CgLB-D5X.js +0 -113
- package/dist/provider-auth-DBykvpJk.js +0 -36
- package/dist/provider-auth-api-key-BFqSZqff.js +0 -5
- package/dist/provider-auth-choice-mXKWNw2A.js +0 -134
- package/dist/provider-auth-choice-preference-C8geLQZU.js +0 -62
- package/dist/provider-auth-login-C8nHiSGB.js +0 -8
- package/dist/provider-auth-login.runtime-Bw7qvsMK.js +0 -206
- package/dist/provider-catalog-BLuW7xxm.js +0 -18
- package/dist/provider-catalog-Ba8jbbQC.js +0 -11
- package/dist/provider-catalog-BezjZlH4.js +0 -11
- package/dist/provider-catalog-Bzs0kPzn.js +0 -13
- package/dist/provider-catalog-CXItaIYb.js +0 -11
- package/dist/provider-catalog-CaVK2dyj.js +0 -12
- package/dist/provider-catalog-CcWsqYpE.js +0 -61
- package/dist/provider-catalog-CksVg6Lz.js +0 -16
- package/dist/provider-catalog-CvVlJ7h-.js +0 -26
- package/dist/provider-catalog-Dh9jKgh9.js +0 -56
- package/dist/provider-catalog-Dm1dfTk-.js +0 -11
- package/dist/provider-catalog-DqcQOA4Z.js +0 -17
- package/dist/provider-catalog-pqamOkUm.js +0 -16
- package/dist/provider-compat-D9qDQQMG.js +0 -37
- package/dist/provider-dispatcher-C3XfRHRF.js +0 -22
- package/dist/provider-entry-zMxxN1fH.js +0 -97
- package/dist/provider-flow-ao7lxs66.js +0 -66
- package/dist/provider-models-CuPoy-A4.js +0 -119
- package/dist/provider-models-DU2n84FS.js +0 -116
- package/dist/provider-models-jw0IBHgS.js +0 -35
- package/dist/provider-registration-6GPZtKMt.js +0 -57
- package/dist/provider-registration-CjmTFGKf.js +0 -238
- package/dist/push-apns-Bzrexlse.js +0 -1013
- package/dist/pw-ai-C7JdV54y.js +0 -2268
- package/dist/qmd-manager-T2BUCG7n.js +0 -1799
- package/dist/qr-cli-B_e_0-SF.js +0 -359
- package/dist/qr-cli-rxc0H2Mk.js +0 -2
- package/dist/qr-image-BYACGRPv.js +0 -2
- package/dist/queue-CF6El_UA.js +0 -636
- package/dist/realtime-provider-shared-Yd1KkPvt.js +0 -21
- package/dist/realtime-transcription-provider-DwmEvubU.js +0 -180
- package/dist/realtime-voice-provider-T861rzVh.js +0 -342
- package/dist/record-shared-BKxprVFr.js +0 -10
- package/dist/region--gybyKDE.js +0 -74
- package/dist/register-command-groups-1_FI6ux5.js +0 -121
- package/dist/register.agent-Bhv7o14f.js +0 -241
- package/dist/register.configure-Bix6QVEo.js +0 -15
- package/dist/register.maintenance-Bw2Dbvb6.js +0 -438
- package/dist/register.message-PxnL8FCg.js +0 -601
- package/dist/register.migrate-DLiZYeE7.js +0 -195
- package/dist/register.onboard-CfOvvN5q.js +0 -79
- package/dist/register.runtime--HXgNnrv.js +0 -343
- package/dist/register.runtime-DJaq2P7l.js +0 -81
- package/dist/register.setup-B0IYNZZy.js +0 -104
- package/dist/register.status-health-sessions-5Avwn_Rh.js +0 -1210
- package/dist/register.subclis-Bhqe4RNX.js +0 -3
- package/dist/register.subclis-CwyReoC0.js +0 -237
- package/dist/replay-policy-DRHPdlTy.js +0 -8
- package/dist/reply-DsQGSqHM.js +0 -3498
- package/dist/reply.runtime-BoEhxvtc.js +0 -2
- package/dist/resolve-vsY3RgCu.js +0 -280
- package/dist/root-help-C9EaUEol.js +0 -44
- package/dist/route-reply-yzqZEMM1.js +0 -141
- package/dist/route-reply.runtime-Dn_gMZjY.js +0 -2
- package/dist/rpc-DZksOtsP.js +0 -61
- package/dist/run-main-29gZWc8b.js +0 -452
- package/dist/runner-W6n2pkfJ.js +0 -1497
- package/dist/runs-OzLk07t4.js +0 -495
- package/dist/runtime-CGl5K_IU.js +0 -72
- package/dist/runtime-D0vBMNhQ.js +0 -2
- package/dist/runtime-DFgQhIdO.js +0 -725
- package/dist/runtime-DKfK_AD5.js +0 -107
- package/dist/runtime-DyrhCUAq.js +0 -200
- package/dist/runtime-api-BDFg7VKM.js +0 -2
- package/dist/runtime-api-BWcPxjgR.js +0 -3
- package/dist/runtime-api-C1USU1Xg.js +0 -12
- package/dist/runtime-embedded-pi.runtime-CMNGvq_M.js +0 -3
- package/dist/runtime-internal-BjxS9kh1.js +0 -2
- package/dist/runtime-plugins-BrjMM_2S.js +0 -69
- package/dist/runtime-prepare.runtime-C5uhgIL5.js +0 -80
- package/dist/runtime-provider-Bd6DTZcR.js +0 -21
- package/dist/runtime-qvUIWcEn.js +0 -9
- package/dist/runtime-registry-loader-DC_zdtAM.js +0 -58
- package/dist/runtime-registry-loader-ZJtMVrYf.js +0 -2
- package/dist/runtime-taskflow-DkJ0OEcb.js +0 -250
- package/dist/runtime-web-tools-Caph1Q8W.js +0 -1467
- package/dist/sandbox-BPefFVsD.js +0 -2586
- package/dist/sandbox-VqaevbKP.js +0 -4
- package/dist/sandbox-cli-Dmz8tNOk.js +0 -446
- package/dist/secrets-cli-DjJm5KkT.js +0 -2099
- package/dist/security-audit-sGsom2f1.js +0 -34
- package/dist/security-cli-2B9RasP6.js +0 -486
- package/dist/semantic-dedup-I5wMh6pu.js +0 -95
- package/dist/send-CHJpeuAq.js +0 -993
- package/dist/server-Cf1sUtlR.js +0 -13
- package/dist/server-ChrBeFtC.js +0 -77
- package/dist/server-context-C9DshDZM.js +0 -4164
- package/dist/server-methods-42GWgP-w.js +0 -11666
- package/dist/server-middleware-DpGttIke.js +0 -110
- package/dist/server-node-events-LXraw8n1.js +0 -451
- package/dist/server.impl-DcCSaFuL.js +0 -19522
- package/dist/session-DB-oGCus.js +0 -48
- package/dist/session-conversation-BVC-IDB-.js +0 -27
- package/dist/session-file-DcogHTZ9.js +0 -44
- package/dist/session-key-BeN4V5Ps.js +0 -65
- package/dist/session-meta-B2LNjKYp.js +0 -109
- package/dist/session-override-DT7hcbx1.js +0 -103
- package/dist/session-reset-model.runtime-DKJSQ8Rr.js +0 -120
- package/dist/session-reset-service-DFqsF-Zh.js +0 -473
- package/dist/session-subagent-reactivation.runtime-yj_xOXm2.js +0 -2
- package/dist/session-tab-registry-C5JZRgsa.js +0 -553
- package/dist/session-updates-Z-4cmoh_.js +0 -234
- package/dist/session-updates.runtime-Co08h535.js +0 -2
- package/dist/session-utils-Cxgqr7-c.js +0 -915
- package/dist/sessions-BgcN8F-X.js +0 -226
- package/dist/sessions-Ciwd_Ht8.js +0 -2
- package/dist/sessions-DE-AO5Jk.js +0 -45
- package/dist/sessions.runtime-CG1opxuM.js +0 -2
- package/dist/setup-BysllKEA.js +0 -496
- package/dist/setup-ayo63KAb.js +0 -329
- package/dist/setup-surface-DbrOe3E8.js +0 -586
- package/dist/setup.finalize-DhLR2yO4.js +0 -432
- package/dist/setup.gateway-config-Df2_Em8i.js +0 -246
- package/dist/shared-B-rMwdad.js +0 -218
- package/dist/shared-BWdSBVdK.js +0 -224
- package/dist/shared-BX9blqPL.js +0 -36
- package/dist/shared-C_-wWbDm.js +0 -175
- package/dist/shared-runtime-rz9t-KLz.js +0 -7
- package/dist/short-term-promotion-FgE_Jnib.js +0 -1631
- package/dist/skill-commands-FgYq8X4R.js +0 -82
- package/dist/skill-commands.runtime-CUJDRqa1.js +0 -2
- package/dist/skill-lifecycle-BVV6fXSs.js +0 -105
- package/dist/skill-quality-gate-4pWY82-e.js +0 -127
- package/dist/skill-usage-tracker-BxM2RLxT.js +0 -31
- package/dist/skills-cli-LwJDf23u.js +0 -370
- package/dist/skills-install-CkncHLZo.js +0 -822
- package/dist/speech-provider-CMtHMx9Y.js +0 -182
- package/dist/speech-provider-DczkEjhR.js +0 -103
- package/dist/speech-provider-Mv_D3qiG.js +0 -43
- package/dist/speech-provider-US8CydoJ.js +0 -167
- package/dist/speech-provider-WWkc6FaL.js +0 -184
- package/dist/stage-sandbox-media.runtime-D71Kd4Ch.js +0 -230
- package/dist/state-dir-env-DYjPXVYi.js +0 -156
- package/dist/state-migrations-B6uRvX1P.js +0 -822
- package/dist/status-BBFiEAa-.js +0 -391
- package/dist/status-CcJcQrD4.js +0 -479
- package/dist/status-CoxoUT8_.js +0 -473
- package/dist/status-DNCnieP0.js +0 -2
- package/dist/status-DpqurBP_.js +0 -3
- package/dist/status-OQhsSx2y.js +0 -2
- package/dist/status-all-CMnGLf_-.js +0 -487
- package/dist/status-json-LKYWmcM2.js +0 -14
- package/dist/status-json-command-ChpTTpoM.js +0 -84
- package/dist/status-runtime-shared-D-NmIA_0.js +0 -254
- package/dist/status-wtlbmlzi.js +0 -278
- package/dist/status.command.text-runtime-B-0GXh3N.js +0 -15
- package/dist/status.gateway-probe-Bqtogs2U.js +0 -16
- package/dist/status.link-channel-BPe4GfI5.js +0 -35
- package/dist/status.node-mode-Chn_dsMR.js +0 -32
- package/dist/status.node-mode-CqkA7hYz.js +0 -2
- package/dist/status.scan-Cwao8eXh.js +0 -62
- package/dist/status.scan-overview-_YjgtE8T.js +0 -395
- package/dist/status.scan.fast-json-BDSAZ_0A.js +0 -128
- package/dist/status.scan.fast-json-D0XMZbbT.js +0 -2
- package/dist/status.scan.runtime-KroF5nhu.js +0 -417
- package/dist/status.summary-CdBWpLqd.js +0 -2
- package/dist/status.summary-jy2zyMVD.js +0 -209
- package/dist/store-BAOUBmZQ.js +0 -190
- package/dist/store-Da7djjD4.js +0 -1112
- package/dist/store.runtime-abrTHLrz.js +0 -2
- package/dist/stream-DTFokQkL.js +0 -153
- package/dist/stream-DjBbXFCo.js +0 -649
- package/dist/stream-wrappers-DyQzM00M.js +0 -144
- package/dist/subagent-announce.registry.runtime-BABRFSMF.js +0 -3
- package/dist/subagent-control-D2OSqmZ7.js +0 -485
- package/dist/subagent-followup.runtime-DTNKCe5w.js +0 -68
- package/dist/subagent-list-MAV67Sxm.js +0 -168
- package/dist/subagent-orphan-recovery-Kzzz2mgk.js +0 -214
- package/dist/subagent-registry-CTAMEje4.js +0 -2888
- package/dist/subagent-registry-runtime-CP_a8qhv.js +0 -2
- package/dist/subagent-registry.runtime-DeC3RNRE.js +0 -3
- package/dist/subagent-spawn-C5uY3sfO.js +0 -781
- package/dist/subagents-format-D73DetCG.js +0 -628
- package/dist/subcli-descriptors-DlMSW5i6.js +0 -173
- package/dist/supervisor-BahyZDOz.js +0 -737
- package/dist/system-cli-Dt32QC1G.js +0 -59
- package/dist/systemd-linger-3DzEUocY.js +0 -2
- package/dist/targets-CnJhw62V.js +0 -594
- package/dist/task-executor-BBNtTTy3.js +0 -350
- package/dist/task-owner-access-CnjSqyDU.js +0 -48
- package/dist/task-registry-BEFL1tD7.js +0 -2346
- package/dist/task-registry-control.runtime-Dgk5Yb4X.js +0 -3
- package/dist/task-registry-delivery-runtime-BiITP8us.js +0 -2
- package/dist/task-registry-delivery-runtime-V0EObe7x.js +0 -3
- package/dist/task-registry.maintenance-CRGVNmNv.js +0 -2
- package/dist/task-registry.maintenance-E1MKWD6e.js +0 -425
- package/dist/test.DNmyFkvJ-DJRLm6sy.js +0 -13549
- package/dist/testing-ehflWoVg.js +0 -441
- package/dist/text-report-XuvHwHc9.js +0 -587
- package/dist/text-runtime-DsiP7VdZ.js +0 -313
- package/dist/thinking-policy-ZVmg-bUw.js +0 -25
- package/dist/thread-bindings-BCS_rM9y.js +0 -223
- package/dist/tool-auth-shared-DdmOv578.js +0 -53
- package/dist/tool-config-shared-CP5dDyyW.js +0 -19
- package/dist/tool-schema-runtime-BjWzmAN3.js +0 -1892
- package/dist/tools-effective-inventory-Dy07SBEL.js +0 -152
- package/dist/tools.runtime-DImY1euX.js +0 -4
- package/dist/topic-types-BXXY5uZL.js +0 -176
- package/dist/topic-types-CDaB_YbE.js +0 -2
- package/dist/transcript-CF5_OBmp.js +0 -191
- package/dist/transcript.runtime-D5nr49Ef.js +0 -2
- package/dist/transport-policy-w54T42K4.js +0 -75
- package/dist/tts-zh6pvJpM.js +0 -31
- package/dist/tts.runtime-CWxkpW7l.js +0 -3
- package/dist/tui-cli-Ci0sIDB1.js +0 -31
- package/dist/tui-h4YVnTtv.js +0 -4017
- package/dist/uninstall-D37a24rS.js +0 -172
- package/dist/update-Y8g3ecTl.js +0 -1253
- package/dist/update-cli-D3D_lWB1.js +0 -1763
- package/dist/update-runner-YEixuUNC.js +0 -1490
- package/dist/vault--pPeoJoM.js +0 -64
- package/dist/vault-ETiei3jF.js +0 -2
- package/dist/video-generation-provider-BfYPJ2X3.js +0 -227
- package/dist/video-generation-provider-BhdoE2LB.js +0 -77
- package/dist/video-generation-provider-BltQBaCu.js +0 -171
- package/dist/video-generation-provider-C6Y4MTBa.js +0 -233
- package/dist/video-generation-provider-CPMWGfJj.js +0 -64
- package/dist/video-generation-provider-CTEKMPLy.js +0 -240
- package/dist/video-generation-provider-CcCvv3LR.js +0 -104
- package/dist/video-generation-provider-CpGtTNnb.js +0 -246
- package/dist/video-generation-provider-CvpbK0Tj.js +0 -263
- package/dist/video-generation-provider-PvbMacjT.js +0 -181
- package/dist/video-model-catalog-Cp71BhF6.js +0 -187
- package/dist/web-search-DP15ZlNE.js +0 -221
- package/dist/web-search-provider-CpRV6QJI.js +0 -155
- package/dist/webhooks-cli-DdLGU5xA.js +0 -321
- package/dist/workspace-BpzmLImG.js +0 -306
- package/dist/x-search-shared-D-L79ilT.js +0 -109
- /package/dist/{api-BFKI2NNn.js → api-B6g0B-IG.js} +0 -0
- /package/dist/{api-BhPfvHfo.js → api-B_5tuRF_.js} +0 -0
- /package/dist/{api-BUpga5J-.js → api-ChDERchn.js} +0 -0
- /package/dist/{api-B1PE6fwA.js → api-DiGfNOT2.js} +0 -0
- /package/dist/{api-DkqAFzSg.js → api-O7zsDPPJ.js} +0 -0
- /package/dist/{audit-channel.collect.runtime-CaPqFh87.js → audit-channel.collect.runtime-CUn9BMvq.js} +0 -0
- /package/dist/{audit-log-C8WDD3D1.js → audit-log-pMArHIEh.js} +0 -0
- /package/dist/{auth-choice-legacy-waB0iFpm.js → auth-choice-legacy-BM0vn9R-.js} +0 -0
- /package/dist/{auth-choice.apply-helpers-BvYl7HR5.js → auth-choice.apply-helpers-Bw9wToYL.js} +0 -0
- /package/dist/{auth-choice.plugin-providers.runtime-PpyhN_80.js → auth-choice.plugin-providers.runtime-BZseWyNy.js} +0 -0
- /package/dist/{auth-surface-resolution-BZLSPNTs.js → auth-surface-resolution-CrQGM9Cp.js} +0 -0
- /package/dist/{auto-recall-B1PCG6uf.js → auto-recall-B_bK8mCh.js} +0 -0
- /package/dist/{block-reply-pipeline-B79ibtIR.js → block-reply-pipeline-Dq4aLNqX.js} +0 -0
- /package/dist/{call.runtime-BwcZkbkG.js → call.runtime-DVcVSdEu.js} +0 -0
- /package/dist/{channel-account-context-BNzGuw03.js → channel-account-context-D0WBO2Yx.js} +0 -0
- /package/dist/{channel-options-dCZOcBUc.js → channel-options-plNrATBP.js} +0 -0
- /package/dist/{channel-plugin-ids-jLxAn1L5.js → channel-plugin-ids-CscSLyjB.js} +0 -0
- /package/dist/{channel-selection.runtime-rS6hNp6w.js → channel-selection.runtime-Dd9_LxxA.js} +0 -0
- /package/dist/{channels-status-issues-QT-v4vzD.js → channels-status-issues-byWfP2WG.js} +0 -0
- /package/dist/{clack-prompter-BarukVw2.js → clack-prompter-OiJwdy5r.js} +0 -0
- /package/dist/{cli-backend-CNk0L0wa.js → cli-backend-CdM4Rh6F.js} +0 -0
- /package/dist/{close-reason-nz_ERN9v.js → close-reason-CI_g9IO0.js} +0 -0
- /package/dist/{cognitive-delivery-B8bSjIL2.js → cognitive-delivery-B5TbScd2.js} +0 -0
- /package/dist/{command-poll-backoff.runtime-DDWZcsnF.js → command-poll-backoff.runtime-CFRUBpul.js} +0 -0
- /package/dist/{command-registration-policy-CVzf9lZy.js → command-registration-policy-Bp03ya2T.js} +0 -0
- /package/dist/{commands-registry.runtime-CThK_6yQ.js → commands-registry.runtime-C9vjMKif.js} +0 -0
- /package/dist/{config-DCqmbAmi.js → config-DWP1lSic.js} +0 -0
- /package/dist/{config-BXvOgFjS.js → config-GpqmqI37.js} +0 -0
- /package/dist/{config-value-C7bZPr1X.js → config-value-1FzBpid8.js} +0 -0
- /package/dist/{consolidation-userid-BtKeSaAs.js → consolidation-userid-Di0Sgxnz.js} +0 -0
- /package/dist/{dangerous-tools-Cwuv7WFD.js → dangerous-tools-C6SsOcC4.js} +0 -0
- /package/dist/{default-models-CTHi5V4f.js → default-models-DxJmcrq7.js} +0 -0
- /package/dist/{defaults-CwPgGXAk.js → defaults-DWxSBxL9.js} +0 -0
- /package/dist/{defaults-BQA1GDhJ.js → defaults-UyycRG_v.js} +0 -0
- /package/dist/{dispatch-acp-command-bypass-imK9PCdQ.js → dispatch-acp-command-bypass-B9NMLuX9.js} +0 -0
- /package/dist/{docs-cli-Dv1RQsBb.js → docs-cli-DDIF10fG.js} +0 -0
- /package/dist/{dotenv-CmO55tnC.js → dotenv-DPb0MMoy.js} +0 -0
- /package/dist/{embedding-provider-BYQlcbTv.js → embedding-provider-BiItBepR.js} +0 -0
- /package/dist/{env-overrides.runtime-BbiEI7F8.js → env-overrides.runtime-BtBGU8bb.js} +0 -0
- /package/dist/{exec-approvals-effective-MiJpVS3B.js → exec-approvals-effective-C4m2WXg-.js} +0 -0
- /package/dist/{extractor-Dc5z0hMf.js → extractor-B-CDYBJx.js} +0 -0
- /package/dist/{fallback-state-D3l8zuca.js → fallback-state-C-BXNQDE.js} +0 -0
- /package/dist/{fragment-types-B8q-zg6v.js → fragment-types-3NSFX3fG.js} +0 -0
- /package/dist/{frontmatter-XYZsyLoY.js → frontmatter-CMd6M3iu.js} +0 -0
- /package/dist/{gateway-lock-BkhPbe1x.js → gateway-lock-B4lxvDfZ.js} +0 -0
- /package/dist/{gateway-presence-C7ZKme5I.js → gateway-presence-D2Ad8otD.js} +0 -0
- /package/dist/{gateway-rpc.runtime-mL0HdmjE.js → gateway-rpc.runtime-eZMYTrLe.js} +0 -0
- /package/dist/{gaxios-fetch-compat-jL2xxHMj.js → gaxios-fetch-compat-DvraiCww.js} +0 -0
- /package/dist/{git-commit-XJxkSBCC.js → git-commit-BIx8__jW.js} +0 -0
- /package/dist/{gmail-setup-utils-DjHySRPr.js → gmail-setup-utils-Jqi6TbIM.js} +0 -0
- /package/dist/{groups.runtime-BFrnryp_.js → groups.runtime-BmbQxpi-.js} +0 -0
- /package/dist/{health-format-lG7x3cNF.js → health-format-CPlFnpEc.js} +0 -0
- /package/dist/{helpers-5EtzqHah.js → helpers-q3dUkuqz.js} +0 -0
- /package/dist/{hooks-policy-DudtxOUW.js → hooks-policy-Bmv6J1kh.js} +0 -0
- /package/dist/{image-v-_YZCwf.js → image-De5xRFlj.js} +0 -0
- /package/dist/{image-generation-core.auth.runtime-BN813D6r.js → image-generation-core.auth.runtime-BGoZ9htm.js} +0 -0
- /package/dist/{includes-scan-DpxlIONl.js → includes-scan-9AWKrWlU.js} +0 -0
- /package/dist/{info-scan-source-DnaROGLQ.js → info-scan-source-JX82stxX.js} +0 -0
- /package/dist/{input-files-DgrhtMjl.js → input-files-CnyTkGg0.js} +0 -0
- /package/dist/{install-target-BX2Crr_Y.js → install-target-9iPjuY88.js} +0 -0
- /package/dist/{installs-DbMRUEa5.js → installs-30EmXCK0.js} +0 -0
- /package/dist/{ipv4-Lxd0AUyd.js → ipv4-Ddm_keVD.js} +0 -0
- /package/dist/{json-mode-DXOGRndc.js → json-mode-Be3c80wJ.js} +0 -0
- /package/dist/{kaijibot.plugin-BhXQfURP.js → kaijibot.plugin-DzS9VUni.js} +0 -0
- /package/dist/{kaijibot.plugin-CtsiVmAP.js → kaijibot.plugin-xVZah2G8.js} +0 -0
- /package/dist/{lifecycle-B9_XEJMF.js → lifecycle-DwLKRe0M.js} +0 -0
- /package/dist/{llm-extractor-bvGxU-9w.js → llm-extractor-CssLZel9.js} +0 -0
- /package/dist/{llm-key-probe-DBxS-6MP.js → llm-key-probe-BH61J04k.js} +0 -0
- /package/dist/{local-date-DXS-3gnV.js → local-date-Dx9LHstd.js} +0 -0
- /package/dist/{logs-cli.runtime-DjFXprX7.js → logs-cli.runtime-DCwDBoHH.js} +0 -0
- /package/dist/{magic-string.es-DBWRzyEr.js → magic-string.es-JqU65QWY.js} +0 -0
- /package/dist/{memory-host-search.runtime-D1s9jwc9.js → memory-host-search.runtime-BKu5Oyo8.js} +0 -0
- /package/dist/{memory-repair-RLio0mfn.js → memory-repair-DONaxvFd.js} +0 -0
- /package/dist/{message.config.runtime-m-HYPbwu.js → message.config.runtime-CbnMOfHF.js} +0 -0
- /package/dist/{message.gateway.runtime-ypqgoSHq.js → message.gateway.runtime-B93AumDT.js} +0 -0
- /package/dist/{metadata-registry-loader-BiXHJddm.js → metadata-registry-loader-Dgk5UBMT.js} +0 -0
- /package/dist/{model-definitions-CqVPpHiG.js → model-definitions-JcfBkTza.js} +0 -0
- /package/dist/{model-id-cnFVogsJ.js → model-id-D1Wk8S2O.js} +0 -0
- /package/dist/{model-param-b-WFgsRlGS.js → model-param-b-B7-mzaOP.js} +0 -0
- /package/dist/{model-suppression.runtime-Cc9MfXhr.js → model-suppression.runtime-Bb9ypkGZ.js} +0 -0
- /package/dist/{models-CGB1Gmfi.js → models--eT1kpdv.js} +0 -0
- /package/dist/{models-DnnqdU39.js → models-CI5KSADc.js} +0 -0
- /package/dist/{models-Cuivu-zg.js → models-D56ZxCfo.js} +0 -0
- /package/dist/{models-JQFu1Rq9.js → models-N8WgRXKT.js} +0 -0
- /package/dist/{oauth-refresh-failure-Bf74s_bF.js → oauth-refresh-failure-DWFIDvjh.js} +0 -0
- /package/dist/{onboard-DQP5yP_h.js → onboard-C36W-uR9.js} +0 -0
- /package/dist/{onboard-BaA-_42k.js → onboard-C5_C5Dgl.js} +0 -0
- /package/dist/{onboard-2v_escld.js → onboard-DDG1-mJG.js} +0 -0
- /package/dist/{onboard-UHJyYUjC.js → onboard-DJoyh-Z8.js} +0 -0
- /package/dist/{onboard-AGZDUqWC.js → onboard-DSxroSTN.js} +0 -0
- /package/dist/{onboard-KTOtavc-.js → onboard-b6hp3tPS.js} +0 -0
- /package/dist/{onboard-config-BXe45WpU.js → onboard-config-Lh_yB7dL.js} +0 -0
- /package/dist/{openai-codex-catalog-DQgPnnGt.js → openai-codex-catalog-DD_VIQlG.js} +0 -0
- /package/dist/{openclaw-migrator-DUfsOWq9.js → openclaw-migrator-CaGcuTUZ.js} +0 -0
- /package/dist/{package-update-utils-D9AkQosZ.js → package-update-utils-Yv076eAO.js} +0 -0
- /package/dist/{parse-log-line-B4l-DSpE.js → parse-log-line-BIaXQg_P.js} +0 -0
- /package/dist/{path-env-CoRBKA1C.js → path-env-Dk2a_giL.js} +0 -0
- /package/dist/{perplexity-web-search-provider.shared-o8SEWE6d.js → perplexity-web-search-provider.shared-65M7qer4.js} +0 -0
- /package/dist/{persona-change-source-sZfR2-3I.js → persona-change-source-QUczl_FE.js} +0 -0
- /package/dist/{ports-BrD2WgKB.js → ports-Qs7MEJp6.js} +0 -0
- /package/dist/{preference-learner-Dd-MkiXx.js → preference-learner-BoMWQ_UT.js} +0 -0
- /package/dist/{probe-70HRGl4a.js → probe-BvHudo6i.js} +0 -0
- /package/dist/{probe-auth-BQSPI8E3.js → probe-auth-DhX7blo2.js} +0 -0
- /package/dist/{probe-target-DD7FyREr.js → probe-target-BeTB7wVs.js} +0 -0
- /package/dist/{program-context-BcxnUK0Z.js → program-context-B9uUWtK2.js} +0 -0
- /package/dist/{provider-api-key-auth.runtime-HSJGnSmr.js → provider-api-key-auth.runtime-N653FDIT.js} +0 -0
- /package/dist/{provider-auth-choice-helpers-CcPOjvnI.js → provider-auth-choice-helpers-ChvFgjfz.js} +0 -0
- /package/dist/{provider-auth-guidance-ChSkQI-k.js → provider-auth-guidance-Ctl6x9Du.js} +0 -0
- /package/dist/{provider-catalog-145O7qu0.js → provider-catalog-BDAFvO45.js} +0 -0
- /package/dist/{provider-catalog-BV3gdu3r.js → provider-catalog-CO-sQSae.js} +0 -0
- /package/dist/{provider-catalog-BWbMEO1u.js → provider-catalog-D34gpSgG.js} +0 -0
- /package/dist/{provider-catalog-CmraKltl.js → provider-catalog-Dwp85UjM.js} +0 -0
- /package/dist/{provider-catalog-CGGu1xY7.js → provider-catalog-NxTI5xr-.js} +0 -0
- /package/dist/{provider-catalog-BwaMk_71.js → provider-catalog-dX-9JR2_.js} +0 -0
- /package/dist/{provider-models-Cj2Dj2Eb.js → provider-models-BS_NZn6m.js} +0 -0
- /package/dist/{provider-models-yFLzb_gM.js → provider-models-BrE46jCo2.js} +0 -0
- /package/dist/{provider-oauth-flow-Dwldw3m9.js → provider-oauth-flow-CdiPoFwM.js} +0 -0
- /package/dist/{provider-openai-codex-oauth-tls-B5spv5ZL.js → provider-openai-codex-oauth-tls-Dd7Khxm1.js} +0 -0
- /package/dist/{qa-cli-CHZ17YNo.js → qa-cli-BTEZmDBl.js} +0 -0
- /package/dist/{realtime-transcription-provider-CaGqiqi5.js → realtime-transcription-provider-DKVD0xK4.js} +0 -0
- /package/dist/{register.backup-DEGba8yV.js → register.backup-BsTZm_ln.js} +0 -0
- /package/dist/{remote-env-XoAdM3lK.js → remote-env-DlSMoBM9.js} +0 -0
- /package/dist/{replay-policy-Cz4vCd2t.js → replay-policy-DBCcSA9H.js} +0 -0
- /package/dist/{reply-payloads-dedupe.runtime-DHqFOSfO.js → reply-payloads-dedupe.runtime-DoaNG4lo.js} +0 -0
- /package/dist/{resolve-pBPj3wEy.js → resolve-D1pCHyvv.js} +0 -0
- /package/dist/{responses-tool-shared-CjK_9Hne.js → responses-tool-shared-DHcb1dPQ.js} +0 -0
- /package/dist/{root-help-metadata-CHfvsXBe.js → root-help-metadata-Drx7dB2u.js} +0 -0
- /package/dist/{rpc.runtime-DvvupI-T.js → rpc.runtime-DUWYp4eO.js} +0 -0
- /package/dist/{runtime-api-BzmBrFf3.js → runtime-api-CUPLCkbC.js} +0 -0
- /package/dist/{runtime-manifest.runtime-T4MgRCzw.js → runtime-manifest.runtime-CT5Jdegq.js} +0 -0
- /package/dist/{runtime-model-auth.runtime-DkBcOdwA.js → runtime-model-auth.runtime-C1QVotRO.js} +0 -0
- /package/dist/{runtime-web-channel-plugin-CSkwa3oV.js → runtime-web-channel-plugin-B_jKtF5_.js} +0 -0
- /package/dist/{runtime-web-tools-fallback.runtime-Cl479qhm.js → runtime-web-tools-fallback.runtime-vvVY2hzf.js} +0 -0
- /package/dist/{runtime-web-tools-manifest.runtime-BsrsHIeH.js → runtime-web-tools-manifest.runtime-q4FwzQyo.js} +0 -0
- /package/dist/{runtime-web-tools-public-artifacts.runtime--NfpoCOF.js → runtime-web-tools-public-artifacts.runtime-DH1OendY.js} +0 -0
- /package/dist/{schedule-10eqkliM.js → schedule-B0pphiI5.js} +0 -0
- /package/dist/{secret-file-yoaT8Z2N.js → secret-file-CZYHVmYt.js} +0 -0
- /package/dist/{session-archive.runtime-CoAMhBxN.js → session-archive.runtime-DMp_Mux1.js} +0 -0
- /package/dist/{session-fork.runtime-CZDDfV7c.js → session-fork.runtime--xGBhpew.js} +0 -0
- /package/dist/{setup.plugin-config-B6erjihE.js → setup.plugin-config-DcRd-H0v.js} +0 -0
- /package/dist/{setup.secret-input-BR7Y2Hg1.js → setup.secret-input-NrcTToqs.js} +0 -0
- /package/dist/{skill-draft-generator-C8zPLkD-.js → skill-draft-generator-m9nku0CK.js} +0 -0
- /package/dist/{skill-reviewer-ZeuLRxUy.js → skill-reviewer-BzUB5yY8.js} +0 -0
- /package/dist/{skill-scanner-C3hWfmOb.js → skill-scanner-BlxMlpUH.js} +0 -0
- /package/dist/{skill-writer-DNOmOldW.js → skill-writer-C43S6Lsi.js} +0 -0
- /package/dist/{soul-cli-Co0KcdP3.js → soul-cli-Bb2iCP9P.js} +0 -0
- /package/dist/{ssh-config-m0F_3hKh.js → ssh-config-BA1Y7a8V.js} +0 -0
- /package/dist/{status-config-DbtvFlek.js → status-config-IryaKgaK.js} +0 -0
- /package/dist/{status.agent-local-BNfQnBBE.js → status.agent-local-VigNjFn5.js} +0 -0
- /package/dist/{status.gateway-connection.runtime-eEPv-X0Z.js → status.gateway-connection.runtime-YZTKQZGP.js} +0 -0
- /package/dist/{status.scan.deps.runtime-BAPi7Dm4.js → status.scan.deps.runtime-d3HueyxP.js} +0 -0
- /package/dist/{store-CeTaOlf7.js → store-C-kqItww.js} +0 -0
- /package/dist/{store-DE9I_z-U.js → store-CioZN-iH.js} +0 -0
- /package/dist/{store-BFeUim-y.js → store-Dji_Mahl.js} +0 -0
- /package/dist/{stream-BoFx9-PE.js → stream-BENwbELC.js} +0 -0
- /package/dist/{stream-Bb3o_iaj.js → stream-C2mX5-8a.js} +0 -0
- /package/dist/{subagent-followup-hints-DSxKx2h5.js → subagent-followup-hints-BSNsTYsF.js} +0 -0
- /package/dist/{supervisor-log.runtime-CtoSv_g7.js → supervisor-log.runtime-BSystMWy.js} +0 -0
- /package/dist/{systemd-linger-BeOkR_jw.js → systemd-linger-p1W5Ka5U.js} +0 -0
- /package/dist/{table-B8RObGt5.js → table-UVJgHZWO.js} +0 -0
- /package/dist/{targets.runtime-BTOlvIZi.js → targets.runtime-Dy1_53At.js} +0 -0
- /package/dist/{task-registry.audit.shared-D1VOvgzO.js → task-registry.audit.shared-Bzuti1TG.js} +0 -0
- /package/dist/{text-similarity-DIRFELa3.js → text-similarity-BLCcuUbL.js} +0 -0
- /package/dist/{trust-calculator-lCRAZCPt.js → trust-calculator-CEYEccNS.js} +0 -0
- /package/dist/{tts-CUq9yK2z.js → tts-CKB2MJSq.js} +0 -0
- /package/dist/{tts-B0_QVtVV.js → tts-y10rjplW.js} +0 -0
- /package/dist/{tts.runtime-DIBAMvsb.js → tts.runtime-DJhcLC3T.js} +0 -0
- /package/dist/{types-CNJErmew.js → types-Cl5KlDxs.js} +0 -0
- /package/dist/{video-http-BlHIyytb.js → video-http-lbLggCxb.js} +0 -0
- /package/dist/{widearea-dns-BWrAD9S6.js → widearea-dns-DYys1Z7C.js} +0 -0
- /package/dist/{x-search-tool-shared-Cxa0ul0H.js → x-search-tool-shared-Dy7MMhpV.js} +0 -0
|
@@ -0,0 +1,1829 @@
|
|
|
1
|
+
import { t as createSubsystemLogger } from "./subsystem-qDUB67UD.js";
|
|
2
|
+
import { p as resolveDefaultModelForAgent } from "./model-selection-a61omA_3.js";
|
|
3
|
+
import { p as resolveAgentWorkspaceDir } from "./agent-scope-DfuA1KpS.js";
|
|
4
|
+
import { _ as loadSoulPresetContent } from "./workspace-DbhTI_u7.js";
|
|
5
|
+
import "./defaults-COZq2n5p.js";
|
|
6
|
+
import { o as resolveSoulPreset } from "./bootstrap-files-BdiNK101.js";
|
|
7
|
+
import { n as prepareSimpleCompletionModel } from "./simple-completion-runtime-u5DC413F.js";
|
|
8
|
+
import { a as pickPromptVariant } from "./preference-learner-BoMWQ_UT.js";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import os from "node:os";
|
|
11
|
+
import fs from "node:fs/promises";
|
|
12
|
+
import { randomUUID } from "node:crypto";
|
|
13
|
+
import { complete } from "@earendil-works/pi-ai";
|
|
14
|
+
//#region src/cognitive/insight/content-similarity.ts
|
|
15
|
+
function extractTrigrams(text) {
|
|
16
|
+
const trigrams = /* @__PURE__ */ new Set();
|
|
17
|
+
const normalized = text.toLowerCase().replace(/\s+/g, " ").trim();
|
|
18
|
+
for (let i = 0; i <= normalized.length - 3; i++) trigrams.add(normalized.slice(i, i + 3));
|
|
19
|
+
return trigrams;
|
|
20
|
+
}
|
|
21
|
+
function computeTrigramSimilarity(a, b) {
|
|
22
|
+
if (a.length < 3 || b.length < 3) return 0;
|
|
23
|
+
const trigramsA = extractTrigrams(a);
|
|
24
|
+
const trigramsB = extractTrigrams(b);
|
|
25
|
+
if (trigramsA.size === 0 || trigramsB.size === 0) return 0;
|
|
26
|
+
let overlap = 0;
|
|
27
|
+
for (const t of trigramsA) if (trigramsB.has(t)) overlap++;
|
|
28
|
+
return overlap / Math.max(trigramsA.size, trigramsB.size);
|
|
29
|
+
}
|
|
30
|
+
const CHINESE_STOP_CHARS = "的了是在和与但也都就把被让对给从到为以其之所等着过得地会有能可以要将于中上下里外时后前间个这那什么怎么哪几多少";
|
|
31
|
+
function extractChinesePhrases(text) {
|
|
32
|
+
let spaced = text;
|
|
33
|
+
for (const ch of CHINESE_STOP_CHARS) spaced = spaced.replaceAll(ch, " ");
|
|
34
|
+
return spaced.split(/[\s,,。.??!!;;::、""''「」【】()()[\]{}<>《》/\\—–-]+/).map((s) => s.trim()).filter((s) => s.length >= 2 && s.length <= 20);
|
|
35
|
+
}
|
|
36
|
+
function computeContentWordOverlap(a, b) {
|
|
37
|
+
const phrasesA = extractChinesePhrases(a);
|
|
38
|
+
const phrasesB = extractChinesePhrases(b);
|
|
39
|
+
if (phrasesA.length === 0 || phrasesB.length === 0) return 0;
|
|
40
|
+
const cjkFilter = (s) => [...s].filter((ch) => ch.charCodeAt(0) > 11903);
|
|
41
|
+
const charsA = new Set(cjkFilter(phrasesA.join("")).map((c) => c.toLowerCase()));
|
|
42
|
+
const charsB = new Set(cjkFilter(phrasesB.join("")).map((c) => c.toLowerCase()));
|
|
43
|
+
if (charsA.size === 0 || charsB.size === 0) return 0;
|
|
44
|
+
let intersection = 0;
|
|
45
|
+
for (const ch of charsA) if (charsB.has(ch)) intersection++;
|
|
46
|
+
const union = new Set([...charsA, ...charsB]).size;
|
|
47
|
+
return union > 0 ? intersection / union : 0;
|
|
48
|
+
}
|
|
49
|
+
function extractContentThemes(contents) {
|
|
50
|
+
if (contents.length === 0) return [];
|
|
51
|
+
const freq = /* @__PURE__ */ new Map();
|
|
52
|
+
for (const text of contents) for (const phrase of extractChinesePhrases(text)) freq.set(phrase, (freq.get(phrase) ?? 0) + 1);
|
|
53
|
+
return [...freq.entries()].toSorted((a, b) => b[1] - a[1]).slice(0, 15).map(([phrase]) => phrase);
|
|
54
|
+
}
|
|
55
|
+
function isDuplicateBySemanticOverlap(newContent, recentContents, options) {
|
|
56
|
+
const trigramThreshold = options?.trigramThreshold ?? .6;
|
|
57
|
+
const contentWordThreshold = options?.contentWordThreshold ?? .15;
|
|
58
|
+
for (const recent of recentContents) {
|
|
59
|
+
if (computeTrigramSimilarity(newContent, recent) > trigramThreshold) return true;
|
|
60
|
+
if (computeContentWordOverlap(newContent, recent) > contentWordThreshold) return true;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/cognitive/insight/interest-inference.ts
|
|
66
|
+
const log$1 = createSubsystemLogger("cognitive/interest-inference");
|
|
67
|
+
function resolveInferenceModel(config) {
|
|
68
|
+
const explicit = config.cognitive?.insight?.inferenceModel ?? config.cognitive?.persona?.extractionModel;
|
|
69
|
+
if (explicit) return explicit;
|
|
70
|
+
const resolved = resolveDefaultModelForAgent({ cfg: config });
|
|
71
|
+
return `${resolved.provider}/${resolved.model}`;
|
|
72
|
+
}
|
|
73
|
+
function parseSearchStrategyResponse(raw) {
|
|
74
|
+
const cleaned = raw.replace(/^```(?:json)?\s*/m, "").replace(/\s*```$/m, "").trim();
|
|
75
|
+
let parsed;
|
|
76
|
+
try {
|
|
77
|
+
parsed = JSON.parse(cleaned);
|
|
78
|
+
} catch {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
error: `Invalid JSON in inference response: ${cleaned.slice(0, 120)}`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (typeof parsed.inferredInterest !== "string" || typeof parsed.searchQuery !== "string" || typeof parsed.bridgeReasoning !== "string" || !Array.isArray(parsed.avoidTopics) || typeof parsed.estimatedSurprise !== "number") return {
|
|
85
|
+
ok: false,
|
|
86
|
+
error: "Missing required fields in inference response"
|
|
87
|
+
};
|
|
88
|
+
const estimatedSurprise = clamp01$1(parsed.estimatedSurprise);
|
|
89
|
+
return {
|
|
90
|
+
ok: true,
|
|
91
|
+
strategy: {
|
|
92
|
+
inferredInterest: parsed.inferredInterest,
|
|
93
|
+
searchQuery: parsed.searchQuery,
|
|
94
|
+
bridgeReasoning: parsed.bridgeReasoning,
|
|
95
|
+
avoidTopics: parsed.avoidTopics.map(String),
|
|
96
|
+
estimatedSurprise,
|
|
97
|
+
personaAnchor: typeof parsed.personaAnchor === "string" ? parsed.personaAnchor : void 0,
|
|
98
|
+
candidateQueries: Array.isArray(parsed.candidateQueries) ? parsed.candidateQueries.map(String).filter((q) => q.length > 0) : void 0,
|
|
99
|
+
recencyDays: 90
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function clamp01$1(value) {
|
|
104
|
+
return Math.max(0, Math.min(1, value));
|
|
105
|
+
}
|
|
106
|
+
function buildInterestInferencePrompt(persona, input, mode = "surprise", fragments) {
|
|
107
|
+
const domainEntries = Object.entries(persona.domains).toSorted(([, a], [, b]) => b.depth - a.depth);
|
|
108
|
+
const knownKnowledge = domainEntries.length > 0 ? domainEntries.slice(0, 20).map(([name, d]) => {
|
|
109
|
+
const insights = getFilteredInsights(d).slice(0, 3).join("; ");
|
|
110
|
+
return `- ${name} (depth: ${d.depth})${insights ? ` — ${insights}` : ""}`;
|
|
111
|
+
}).join("\n") : "(no domains established yet)";
|
|
112
|
+
const expertDomains = persona.identity.expertDomains ?? [];
|
|
113
|
+
const interestDomains = persona.identity.interestDomains ?? [];
|
|
114
|
+
const curiosityDomains = persona.identity.curiosityDomains ?? [];
|
|
115
|
+
const explicitInterests = [
|
|
116
|
+
...expertDomains.map((d) => `[expert] ${d}`),
|
|
117
|
+
...interestDomains.map((d) => `[interest] ${d}`),
|
|
118
|
+
...curiosityDomains.map((d) => `[curiosity] ${d}`)
|
|
119
|
+
];
|
|
120
|
+
const explicitBlock = explicitInterests.length > 0 ? explicitInterests.join("\n") : "(not yet established)";
|
|
121
|
+
const curiositySet = new Set(curiosityDomains);
|
|
122
|
+
const knownDomainSet = new Set(Object.keys(persona.domains));
|
|
123
|
+
const gaps = [...curiositySet].filter((d) => !knownDomainSet.has(d) || (persona.domains[d]?.depth ?? 0) < 2);
|
|
124
|
+
const fragmentGaps = (fragments ?? []).filter((f) => f.kind === "knowledge_gap").slice(0, 4).map((f) => f.evidence);
|
|
125
|
+
const activeQuestions = domainEntries.slice(0, 5).flatMap(([, d]) => d.activeQuestions ?? []).slice(0, 4);
|
|
126
|
+
const allGaps = [
|
|
127
|
+
...gaps,
|
|
128
|
+
...fragmentGaps.filter((g) => !gaps.some((existing) => existing.toLowerCase() === g.toLowerCase())),
|
|
129
|
+
...activeQuestions.filter((q) => !gaps.some((e) => e.toLowerCase() === q.toLowerCase()) && !fragmentGaps.some((f) => f.toLowerCase() === q.toLowerCase()))
|
|
130
|
+
];
|
|
131
|
+
const gapsBlock = allGaps.length > 0 ? allGaps.map((d) => `- ${d}`).join("\n") : "(no clear gaps identified)";
|
|
132
|
+
const connectionsBlock = "(no domain connections yet)";
|
|
133
|
+
const recentFocus = persona.recentFocus.slice(0, 5);
|
|
134
|
+
const recentFocusBlock = recentFocus.length > 0 ? recentFocus.map((f) => `- ${f}`).join("\n") : "(none)";
|
|
135
|
+
const topDiscussed = domainEntries.toSorted(([, a], [, b]) => b.recurrence - a.recurrence).slice(0, 3).map(([name]) => name);
|
|
136
|
+
const isExtend = mode === "extend";
|
|
137
|
+
const hasTargetDomains = input.targetDomains.length > 0;
|
|
138
|
+
const targetDomainsBlock = hasTargetDomains ? `\n## TARGET DOMAIN FOR THIS INSIGHT\nThe insight pipeline has selected the following domain(s) as the focus area for this insight:\n${input.targetDomains.map((d) => `- ${d}`).join("\n")}\n\nThe searchQuery MUST be specifically about or related to these target domain(s).\n` : "";
|
|
139
|
+
const taskInstruction = isExtend ? hasTargetDomains ? `Generate a focused search query to deepen understanding of "${input.targetDomains[0]}". Find a surprising angle, recent development, or lesser-known aspect within this specific domain.` : `Analyze this user's knowledge structure. Identify their MOST ACTIVE domain and generate a focused search query to deepen understanding of it. The query should target practical applications or recent developments in that domain.` : hasTargetDomains ? `The pipeline has selected "${input.targetDomains.join("\" or \"")}" as the focus area. Find a SURPRISINGLY ADJACENT angle — the searchQuery MUST include at least one recognizable keyword from "${input.targetDomains.join("\" or \"")}" to stay grounded in the user's knowledge. The surprise should come from the ANGLE, not from drifting to an unrelated topic. Something the user would find surprising and valuable, but hasn't explicitly explored.` : `Analyze this user's knowledge structure. Identify a LATENT interest — something they would find surprising and valuable, but that they haven't explicitly explored. The latent interest should bridge from what they know to something adjacent but unexpected.`;
|
|
140
|
+
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
141
|
+
return `You are an expert at identifying latent interests and knowledge gaps from a user's knowledge profile.
|
|
142
|
+
|
|
143
|
+
## USER'S KNOWN KNOWLEDGE
|
|
144
|
+
${knownKnowledge}
|
|
145
|
+
|
|
146
|
+
## EXPLICIT INTERESTS
|
|
147
|
+
${explicitBlock}
|
|
148
|
+
|
|
149
|
+
## KNOWLEDGE GAPS
|
|
150
|
+
${gapsBlock}
|
|
151
|
+
|
|
152
|
+
## DOMAIN CONNECTIONS
|
|
153
|
+
${connectionsBlock}
|
|
154
|
+
|
|
155
|
+
## RECENT FOCUS
|
|
156
|
+
${recentFocusBlock}
|
|
157
|
+
${targetDomainsBlock}
|
|
158
|
+
## TASK
|
|
159
|
+
${taskInstruction}
|
|
160
|
+
|
|
161
|
+
Constraints:
|
|
162
|
+
${isExtend ? `- The searchQuery must be 2-6 English keywords targeting practical applications or recent developments in the user's most active domain
|
|
163
|
+
- The estimatedSurprise should be moderate (0.3–0.6) since this is for extending known domains
|
|
164
|
+
- Prefer queries that surface actionable content: tools, case studies, benchmarks, or how-to guides
|
|
165
|
+
- Include the year ${currentYear} in the searchQuery to prioritize recent content` : `- The searchQuery must be 2-6 English keywords suitable for a web search API
|
|
166
|
+
- The estimatedSurprise must be between 0.6 and 1.0 (this is for surprise-mode insights only)
|
|
167
|
+
- The searchQuery MUST contain at least one keyword from the target domains to prevent drift
|
|
168
|
+
- Do NOT suggest topics the user is already an expert in
|
|
169
|
+
- Prefer cross-domain bridges that connect two areas the user knows about in an unexpected way
|
|
170
|
+
- Include the year ${currentYear} in the searchQuery to surface cutting-edge developments`}
|
|
171
|
+
- avoidTopics should contain the user's most-discussed domains to avoid re-treading: ${topDiscussed.join(", ")}
|
|
172
|
+
- Prefer topics with recent developments (${currentYear - 2}-${currentYear}). The searchQuery should target current trends, new tools, recent research, or emerging techniques — not general knowledge or introductory content.
|
|
173
|
+
|
|
174
|
+
Respond with ONLY a JSON object (no markdown, no code fences):
|
|
175
|
+
{
|
|
176
|
+
"inferredInterest": "A concise description of the latent interest",
|
|
177
|
+
"searchQuery": "2-6 English keywords for web search",
|
|
178
|
+
"bridgeReasoning": "Why this connects to the user's latent interests and what they already know",
|
|
179
|
+
"avoidTopics": ["domain1", "domain2", "domain3"],
|
|
180
|
+
"estimatedSurprise": 0.8,
|
|
181
|
+
"personaAnchor": "A specific concrete noun from the user's persona (a tool, project, technique, or concept they mentioned)",
|
|
182
|
+
"candidateQueries": [
|
|
183
|
+
"event-driven query: {personaAnchor} 新进展 OR 突破 OR 发布",
|
|
184
|
+
"comparison query: {personaAnchor} vs {alternative} benchmark"
|
|
185
|
+
]
|
|
186
|
+
}`;
|
|
187
|
+
}
|
|
188
|
+
async function inferSearchStrategy(persona, input, config, deps, mode = "surprise") {
|
|
189
|
+
const modelRef = resolveInferenceModel(config);
|
|
190
|
+
try {
|
|
191
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
192
|
+
if ("error" in prepared) {
|
|
193
|
+
log$1.warn("model preparation failed", { error: prepared.error });
|
|
194
|
+
return {
|
|
195
|
+
ok: false,
|
|
196
|
+
error: `Model preparation failed: ${prepared.error}`
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const messages = [{
|
|
200
|
+
role: "user",
|
|
201
|
+
content: buildInterestInferencePrompt(persona, input, mode),
|
|
202
|
+
timestamp: Date.now()
|
|
203
|
+
}];
|
|
204
|
+
const text = (await deps.complete(prepared.model, { messages }, {
|
|
205
|
+
apiKey: prepared.auth.apiKey,
|
|
206
|
+
maxTokens: 2e3,
|
|
207
|
+
temperature: .9,
|
|
208
|
+
signal: AbortSignal.timeout(3e4)
|
|
209
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
210
|
+
if (!text) {
|
|
211
|
+
log$1.warn("LLM returned empty inference response");
|
|
212
|
+
return {
|
|
213
|
+
ok: false,
|
|
214
|
+
error: "LLM returned empty response"
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
const parsed = parseSearchStrategyResponse(text);
|
|
218
|
+
if (parsed.ok) log$1.info("inferred search strategy", {
|
|
219
|
+
inferredInterest: parsed.strategy.inferredInterest,
|
|
220
|
+
searchQuery: parsed.strategy.searchQuery,
|
|
221
|
+
estimatedSurprise: parsed.strategy.estimatedSurprise
|
|
222
|
+
});
|
|
223
|
+
else log$1.warn("failed to parse inference response", {
|
|
224
|
+
error: parsed.error,
|
|
225
|
+
raw: text.slice(0, 200)
|
|
226
|
+
});
|
|
227
|
+
return parsed;
|
|
228
|
+
} catch (err) {
|
|
229
|
+
const isTimeout = err instanceof DOMException && err.name === "TimeoutError";
|
|
230
|
+
log$1.warn(`interest inference ${isTimeout ? "timed out" : "failed"}`, { error: String(err) });
|
|
231
|
+
return {
|
|
232
|
+
ok: false,
|
|
233
|
+
error: `Interest inference failed: ${String(err)}`
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//#endregion
|
|
238
|
+
//#region src/cognitive/insight/llm-engine.ts
|
|
239
|
+
const log = createSubsystemLogger("cognitive/insight-llm");
|
|
240
|
+
const EXCLUDED_INSIGHT_CATEGORIES = new Set(["tool_config", "contextual_fact"]);
|
|
241
|
+
function getFilteredInsights(domain, exclude = EXCLUDED_INSIGHT_CATEGORIES) {
|
|
242
|
+
if (domain.insights && domain.insights.length > 0) return domain.insights.filter((i) => !exclude.has(i.category)).toSorted((a, b) => b.confidence * b.evidenceCount - a.confidence * a.evidenceCount).map((i) => i.text);
|
|
243
|
+
return domain.keyInsights;
|
|
244
|
+
}
|
|
245
|
+
const SEARCH_PROVIDER_DOMAINS = new Set([
|
|
246
|
+
"exa.ai",
|
|
247
|
+
"tavily.com",
|
|
248
|
+
"search.brave.com",
|
|
249
|
+
"api.exa.ai",
|
|
250
|
+
"api.tavily.com"
|
|
251
|
+
]);
|
|
252
|
+
function isSearchProviderUrl(url) {
|
|
253
|
+
try {
|
|
254
|
+
const host = new URL(url).hostname;
|
|
255
|
+
return SEARCH_PROVIDER_DOMAINS.has(host) || [...SEARCH_PROVIDER_DOMAINS].some((d) => host.endsWith(`.${d}`) || host === d);
|
|
256
|
+
} catch {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const FRAGMENT_KINDS_FOR_PROMPT = new Set([
|
|
261
|
+
"knowledge_gap",
|
|
262
|
+
"assumption",
|
|
263
|
+
"implicit_priority"
|
|
264
|
+
]);
|
|
265
|
+
function classifyRhetoricalMove(text) {
|
|
266
|
+
const t = text.trim();
|
|
267
|
+
if (/(是否|难道|有没有|会不会)/.test(t.slice(0, 20))) return "提问式";
|
|
268
|
+
if (/(其实|但.*实际上|表面上.*实际上|看似.*实则)/.test(t.slice(0, 30))) return "悖论式";
|
|
269
|
+
if (/(建议|推荐|试试|用.*做|直接用)/.test(t.slice(0, 30))) return "推荐式";
|
|
270
|
+
if (/(就像|好比|类似于|跟.*一样|本质上.*就是)/.test(t.slice(0, 30))) return "类比式";
|
|
271
|
+
if (/^(你|你的)/.test(t)) return "观察式";
|
|
272
|
+
return "事实开头";
|
|
273
|
+
}
|
|
274
|
+
function buildBannedOpeningsSection(recentInsightContents) {
|
|
275
|
+
if (recentInsightContents.length === 0) return "";
|
|
276
|
+
const charBans = recentInsightContents.slice(-5).map((c) => c.trim().slice(0, 8)).filter((o) => o.length >= 4).map((o) => `不要以"${o}"开头`).join(";");
|
|
277
|
+
const moves = [...new Set(recentInsightContents.slice(-5).map(classifyRhetoricalMove))];
|
|
278
|
+
return [charBans, moves.length > 0 ? `不要使用以下修辞手法作为开头:${moves.join("、")}` : ""].filter(Boolean).join("\n");
|
|
279
|
+
}
|
|
280
|
+
function buildFragmentSection(fragments) {
|
|
281
|
+
const relevant = fragments.filter((f) => FRAGMENT_KINDS_FOR_PROMPT.has(f.kind));
|
|
282
|
+
if (relevant.length === 0) return "";
|
|
283
|
+
return [...relevant].toSorted((a, b) => b.strength - a.strength).slice(0, 6).map((f) => `- [${f.kind}] ${f.evidence}`).join("\n");
|
|
284
|
+
}
|
|
285
|
+
function buildVoiceSection(persona) {
|
|
286
|
+
const style = persona.identity?.communicationStyle;
|
|
287
|
+
const name = persona.identity?.displayName ?? "the user";
|
|
288
|
+
const parts = [];
|
|
289
|
+
parts.push(`You're writing to ${name}, a person you know well. This is a proactive message — like suddenly remembering something fascinating to tell a friend.`);
|
|
290
|
+
if (style) {
|
|
291
|
+
if (style.formality === "casual") parts.push("Tone: casual, like chatting with a close friend. Use 你 not 您.");
|
|
292
|
+
else if (style.formality === "formal") parts.push("Tone: professional but warm. You can use 您 but keep it conversational.");
|
|
293
|
+
else parts.push("Tone: natural and conversational. Match whatever feels right for the content.");
|
|
294
|
+
if (style.technicalLevel === "expert") parts.push("Assume deep technical literacy. Use technical terms freely without explanation.");
|
|
295
|
+
else if (style.technicalLevel === "beginner") parts.push("Explain technical concepts briefly when they appear. Avoid jargon.");
|
|
296
|
+
if (style.verbosity === "concise") parts.push("Be brief: 1-2 sentences maximum. Every word earns its place.");
|
|
297
|
+
else if (style.verbosity === "detailed") parts.push("You can use 2-3 sentences. Give enough context to be self-contained.");
|
|
298
|
+
}
|
|
299
|
+
return parts.join("\n");
|
|
300
|
+
}
|
|
301
|
+
const DIVERSE_FEW_SHOT_SETS = [
|
|
302
|
+
{
|
|
303
|
+
name: "挑衅提问 (Provocative question)",
|
|
304
|
+
examples: [{
|
|
305
|
+
context: "User built Thompson Sampling into insight system but never A/B tested with real users.",
|
|
306
|
+
chinese: "你给洞察系统接了 Thompson Sampling 来学用户偏好,但你拿真人验证过这些优化到底是不是真的更好吗?bandit 收敛了不代表用户满意了,只代表系统停止了探索。",
|
|
307
|
+
english: "You wired Thompson Sampling into the insight system to learn user preferences, but have you validated with real people whether these optimizations actually feel better? Bandit convergence doesn't mean user satisfaction — it means the system stopped exploring."
|
|
308
|
+
}, {
|
|
309
|
+
context: "User has philosophy + tech cross-domain interests, designs quality gates.",
|
|
310
|
+
chinese: "为什么你给认知系统设计了 PRISM 门控和 SIRI 循环,却从没给对话本身加过质量门控?用户发「嗯」和发一段三百字的追问,你用的是同一套回复逻辑。",
|
|
311
|
+
english: "Why did you design PRISM gating and SIRI loops for the cognitive system, but never added quality gating to conversations themselves? A user sending 'hmm' and a user sending a 300-word follow-up get the same response logic."
|
|
312
|
+
}]
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
name: "直接行动 (Direct action)",
|
|
316
|
+
examples: [{
|
|
317
|
+
context: "User's insight pipeline has long refine loops that over-polish output.",
|
|
318
|
+
chinese: "把 refine 循环的最大重试次数从 2 降到 1。你的 critique 步骤已经足够严格,第二轮 refine 几乎总是在过度修饰第一轮的输出,反而损失了原始表达的力度。",
|
|
319
|
+
english: "Drop the refine loop max retries from 2 to 1. Your critique step is already strict enough — the second refine round almost always over-polishes the first round's output, losing the raw expressive force."
|
|
320
|
+
}, {
|
|
321
|
+
context: "User's persona has many domains with low depth consuming prompt space.",
|
|
322
|
+
chinese: "给深度低于 1.0 的领域加个自动衰减标签。你有 17 个领域但只有 5 个深度超过 2.0,低深度领域在占 prompt 空间却不产生高质量洞察。",
|
|
323
|
+
english: "Add an auto-decay tag for domains with depth below 1.0. You have 17 domains but only 5 above depth 2.0 — the shallow ones consume prompt space without producing high-quality insights."
|
|
324
|
+
}]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: "数据冲击 (Data impact)",
|
|
328
|
+
examples: [{
|
|
329
|
+
context: "User's cognitive system generates ~1.8 insights/day with 30% reply rate.",
|
|
330
|
+
chinese: "你的系统平均每天生成 1.8 条洞察,但用户回复率只有 30%。每周有 8 条洞察被发出去然后被忽略。问题可能不在内容质量,而在发送时机和频率。",
|
|
331
|
+
english: "Your system generates an average of 1.8 insights per day, but the user reply rate is only 30%. That's 8 insights per week sent and ignored. The problem might not be content quality but timing and frequency."
|
|
332
|
+
}, {
|
|
333
|
+
context: "User's insight pipeline has 6 quality gates with 40% delivery rate.",
|
|
334
|
+
chinese: "从 LLM 生成到最终投递,一条洞察要经过 6 道质量检查。你的投递率大约 40%,意味着 60% 的 LLM 调用被浪费了。考虑在生成阶段就提高准入门槛,而不是在后面层层拦截。",
|
|
335
|
+
english: "From LLM generation to final delivery, each insight passes through 6 quality checks. Your delivery rate is about 40%, meaning 60% of LLM calls are wasted. Consider raising the bar at generation time instead of filtering downstream."
|
|
336
|
+
}]
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: "跨域迁移 (Cross-domain transfer)",
|
|
340
|
+
examples: [{
|
|
341
|
+
context: "User works on both existentialist philosophy and AI architecture.",
|
|
342
|
+
chinese: "你在哲学里用的「坐标系选择」思路,直接搬到 API 设计上就是:每个接口都隐含了一个世界观,换接口不只是换参数,是换看你系统的角度。GraphQL 和 REST 的争论本质上是康德和黑格尔的争论。",
|
|
343
|
+
english: "The 'coordinate system choice' approach you use in philosophy maps directly onto API design: every interface implies a worldview, and switching APIs isn't just changing parameters — it's changing the angle from which you view the system. The GraphQL vs REST debate is fundamentally the Kant vs Hegel debate."
|
|
344
|
+
}, {
|
|
345
|
+
context: "User's Rust background + cognitive system design with persona fields.",
|
|
346
|
+
chinese: "你写 Rust 时用的 borrow checker 思维,放到认知系统设计上就是:每个 persona 字段都应该有明确的 lifecycle owner。你的 feedbackProfile 有 12 个字段但只有 3 个有明确的更新来源,剩下的 9 个靠散落的 side effect 维护。",
|
|
347
|
+
english: "The borrow checker mindset you use writing Rust, applied to cognitive system design, means: every persona field should have a clear lifecycle owner. Your feedbackProfile has 12 fields but only 3 have explicit update sources — the other 9 are maintained by scattered side effects."
|
|
348
|
+
}]
|
|
349
|
+
}
|
|
350
|
+
];
|
|
351
|
+
const DIVERSITY_INSTRUCTION = `These examples demonstrate the expected QUALITY LEVEL and DEPTH of observation. Do NOT copy their structure, sentence pattern, or opening style. Each insight must be uniquely shaped by the specific user data and fragments you see. Every insight should feel like it could ONLY be about THIS specific user. 禁止使用"你做X时用的正是Y哲学概念"或"X本质上就是Y"这类类比框架作为主要结构。当哲学确实是最佳角度时直接说哲学内容,不要用"你用的正是"句式包装。`;
|
|
352
|
+
const EMOTIONAL_STANCES = [
|
|
353
|
+
"你刚发现一个东西,迫不及待想跟{name}分享。直接说,像发消息一样。",
|
|
354
|
+
"你对某个观点有疑虑,想直接跟{name}提出来。诚实但不攻击。",
|
|
355
|
+
"你注意到一个有趣的模式,安静地跟{name}说出来。不要分析,只说观察到的。",
|
|
356
|
+
"你看到一个意想不到的连接,兴奋但不太确定。带着不确定感说。",
|
|
357
|
+
"你想挑战{name}的一个假设。直接但尊重。",
|
|
358
|
+
"你刚想到一件可能对{name}有帮助的事。像朋友给建议,不像系统推送。"
|
|
359
|
+
];
|
|
360
|
+
function selectEmotionalStance(seed, recent) {
|
|
361
|
+
const used = new Set(recent ?? []);
|
|
362
|
+
for (let offset = 0; offset < EMOTIONAL_STANCES.length; offset++) {
|
|
363
|
+
const idx = (seed + offset) % EMOTIONAL_STANCES.length;
|
|
364
|
+
if (!used.has(idx)) return {
|
|
365
|
+
index: idx,
|
|
366
|
+
text: EMOTIONAL_STANCES[idx]
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
const idx = seed % EMOTIONAL_STANCES.length;
|
|
370
|
+
return {
|
|
371
|
+
index: idx,
|
|
372
|
+
text: EMOTIONAL_STANCES[idx]
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
const CONTRASTIVE_INSTRUCTION = `CONTRASTIVE FRAMEWORK — your insight MUST be genuinely NEW relative to past insights:
|
|
376
|
+
- COUNTER-EXAMPLE: If a past insight said "X is good", find a case where X fails or the opposite holds.
|
|
377
|
+
- INVERSE FRAMING: If a past insight opened with a fact, open with a question/stakes/paradox instead.
|
|
378
|
+
- ORTHOGONAL OBSERVATION: If past insights covered domain A∩B, find a completely different angle (historical, ethical, practical, engineering) on the same intersection.
|
|
379
|
+
- NOVELTY TEST: Before finalizing, check: "Could this insight be mistaken for a paraphrase of any past insight?" If yes, rewrite.`;
|
|
380
|
+
/**
|
|
381
|
+
* Build the default deps that hit real infrastructure.
|
|
382
|
+
* Import and call this in production code.
|
|
383
|
+
*/
|
|
384
|
+
function createDefaultInsightDeps() {
|
|
385
|
+
return {
|
|
386
|
+
complete,
|
|
387
|
+
prepareModel: async (cfg, modelRef) => {
|
|
388
|
+
const extractionModel = cfg.cognitive?.persona?.extractionModel;
|
|
389
|
+
const explicit = modelRef ?? extractionModel;
|
|
390
|
+
if (explicit) {
|
|
391
|
+
const [provider, ...modelParts] = explicit.split("/");
|
|
392
|
+
return prepareSimpleCompletionModel({
|
|
393
|
+
cfg,
|
|
394
|
+
provider,
|
|
395
|
+
modelId: modelParts.join("/") || "glm-5-turbo"
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
const resolved = resolveDefaultModelForAgent({ cfg });
|
|
399
|
+
return prepareSimpleCompletionModel({
|
|
400
|
+
cfg,
|
|
401
|
+
provider: resolved.provider,
|
|
402
|
+
modelId: resolved.model
|
|
403
|
+
});
|
|
404
|
+
},
|
|
405
|
+
inferenceDeps: {
|
|
406
|
+
complete,
|
|
407
|
+
prepareModel: async (cfg, modelRef) => {
|
|
408
|
+
const extractionModel = cfg.cognitive?.persona?.extractionModel;
|
|
409
|
+
const explicit = modelRef ?? extractionModel;
|
|
410
|
+
if (explicit) {
|
|
411
|
+
const [provider, ...modelParts] = explicit.split("/");
|
|
412
|
+
return prepareSimpleCompletionModel({
|
|
413
|
+
cfg,
|
|
414
|
+
provider,
|
|
415
|
+
modelId: modelParts.join("/") || "glm-5-turbo"
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
const resolved = resolveDefaultModelForAgent({ cfg });
|
|
419
|
+
return prepareSimpleCompletionModel({
|
|
420
|
+
cfg,
|
|
421
|
+
provider: resolved.provider,
|
|
422
|
+
modelId: resolved.model
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* LLM-based insight generation with template fallback.
|
|
430
|
+
*
|
|
431
|
+
* Sends persona + domain knowledge to the LLM and asks it to produce
|
|
432
|
+
* personalised insight candidates. Falls back to the deterministic
|
|
433
|
+
* template engine whenever the LLM call fails, times out, or returns
|
|
434
|
+
* unparseable output.
|
|
435
|
+
*
|
|
436
|
+
* This function **never throws**.
|
|
437
|
+
*/
|
|
438
|
+
async function generateInsightCandidatesLLM(persona, input, config, deps, options) {
|
|
439
|
+
const maxCandidates = options?.maxCandidates ?? 3;
|
|
440
|
+
const mode = input.mode ?? "extend";
|
|
441
|
+
if (mode === "pattern") {
|
|
442
|
+
const { prompt, variant } = buildPatternInsightPrompt(persona, input, input.recentInsightContents, input.soulContent, input.identityContext);
|
|
443
|
+
try {
|
|
444
|
+
const modelRef = options?.modelRef ?? config.cognitive?.persona?.extractionModel;
|
|
445
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
446
|
+
if ("error" in prepared) {
|
|
447
|
+
log.warn(`LLM model preparation failed: ${prepared.error}, skipping insight`);
|
|
448
|
+
return [];
|
|
449
|
+
}
|
|
450
|
+
const timeoutMs = options?.timeout ?? 2e4;
|
|
451
|
+
const systemPrompt = options?.systemContext || void 0;
|
|
452
|
+
const messages = [];
|
|
453
|
+
messages.push({
|
|
454
|
+
role: "user",
|
|
455
|
+
content: prompt,
|
|
456
|
+
timestamp: Date.now()
|
|
457
|
+
});
|
|
458
|
+
const text = (await deps.complete(prepared.model, {
|
|
459
|
+
messages,
|
|
460
|
+
systemPrompt
|
|
461
|
+
}, {
|
|
462
|
+
apiKey: prepared.auth.apiKey,
|
|
463
|
+
maxTokens: options?.maxTokens ?? 2e3,
|
|
464
|
+
temperature: .85,
|
|
465
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
466
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
467
|
+
if (!text) {
|
|
468
|
+
log.warn("LLM returned empty response for pattern mode, skipping insight");
|
|
469
|
+
return [];
|
|
470
|
+
}
|
|
471
|
+
const candidates = parseLLMInsights(text, maxCandidates);
|
|
472
|
+
if (candidates.length === 0) {
|
|
473
|
+
log.warn("LLM response could not be parsed as insights (pattern mode)", { raw: text.slice(0, 300) });
|
|
474
|
+
return [];
|
|
475
|
+
}
|
|
476
|
+
log.info(`Pattern-mode LLM generated ${candidates.length} insight candidate(s)`);
|
|
477
|
+
const recentContents = input.recentInsightContents;
|
|
478
|
+
const filtered = recentContents.length > 0 ? candidates.filter((c) => !isDuplicateBySemanticOverlap(c.content, recentContents, {
|
|
479
|
+
trigramThreshold: .85,
|
|
480
|
+
contentWordThreshold: .5
|
|
481
|
+
})) : candidates;
|
|
482
|
+
if (filtered.length < candidates.length) log.info("pattern-mode trigram dedup filtered candidates", {
|
|
483
|
+
before: candidates.length,
|
|
484
|
+
after: filtered.length
|
|
485
|
+
});
|
|
486
|
+
return filtered.map((c) => {
|
|
487
|
+
const inputDomains = input.targetDomains;
|
|
488
|
+
const llmDomains = c.targetDomains;
|
|
489
|
+
if (!llmDomains.some((d) => inputDomains.some((id) => id.toLowerCase() === d.toLowerCase())) && inputDomains.length > 0) {
|
|
490
|
+
log.info("force-aligned pattern-mode LLM output domains to input targetDomains", {
|
|
491
|
+
llmDomains,
|
|
492
|
+
inputDomains
|
|
493
|
+
});
|
|
494
|
+
c.targetDomains = [...inputDomains];
|
|
495
|
+
}
|
|
496
|
+
c.promptVariant = variant;
|
|
497
|
+
return c;
|
|
498
|
+
});
|
|
499
|
+
} catch (err) {
|
|
500
|
+
const isTimeout = err instanceof DOMException && err.name === "TimeoutError";
|
|
501
|
+
log.warn(`Pattern-mode LLM insight generation ${isTimeout ? "timed out" : "failed"}: ${String(err)}, skipping insight`);
|
|
502
|
+
return [];
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
let webResults = [];
|
|
506
|
+
let searchStrategy;
|
|
507
|
+
let queryUsed;
|
|
508
|
+
if (mode === "surprise" && deps.inferenceDeps) {
|
|
509
|
+
const inferenceResult = await inferSearchStrategy(persona, input, config, deps.inferenceDeps);
|
|
510
|
+
if (inferenceResult.ok) {
|
|
511
|
+
searchStrategy = inferenceResult.strategy;
|
|
512
|
+
if (deps.webSearch && searchStrategy.searchQuery) {
|
|
513
|
+
queryUsed = searchStrategy.searchQuery;
|
|
514
|
+
try {
|
|
515
|
+
webResults = (await cachedWebSearch(deps.webSearch, searchStrategy.searchQuery)).filter((r) => !isSearchProviderUrl(r.url));
|
|
516
|
+
log.info("surprise-mode web search completed", {
|
|
517
|
+
query: searchStrategy.searchQuery,
|
|
518
|
+
resultCount: webResults.length
|
|
519
|
+
});
|
|
520
|
+
} catch (err) {
|
|
521
|
+
log.warn("surprise-mode web search failed", {
|
|
522
|
+
query: searchStrategy.searchQuery,
|
|
523
|
+
error: String(err)
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
} else {
|
|
528
|
+
log.info("inference failed, falling back to extend mode", { error: inferenceResult.error });
|
|
529
|
+
return generateExtendMode(persona, input, config, deps, options, maxCandidates);
|
|
530
|
+
}
|
|
531
|
+
} else if (deps.webSearch) {
|
|
532
|
+
let query;
|
|
533
|
+
if (deps.inferenceDeps) try {
|
|
534
|
+
const inferenceResult = await inferSearchStrategy(persona, input, config, deps.inferenceDeps, "extend");
|
|
535
|
+
if (inferenceResult.ok && inferenceResult.strategy.searchQuery) {
|
|
536
|
+
query = inferenceResult.strategy.searchQuery;
|
|
537
|
+
log.info("extend-mode LLM query generated", { query });
|
|
538
|
+
}
|
|
539
|
+
} catch (err) {
|
|
540
|
+
log.warn("extend-mode inference failed, falling back to rule-based query", { error: String(err) });
|
|
541
|
+
}
|
|
542
|
+
if (!query) query = buildSearchQuery(input) || void 0;
|
|
543
|
+
queryUsed = query;
|
|
544
|
+
if (query) try {
|
|
545
|
+
webResults = (await cachedWebSearch(deps.webSearch, query)).filter((r) => !isSearchProviderUrl(r.url));
|
|
546
|
+
log.info("web search completed", {
|
|
547
|
+
query,
|
|
548
|
+
resultCount: webResults.length
|
|
549
|
+
});
|
|
550
|
+
} catch (err) {
|
|
551
|
+
log.warn("web search failed, proceeding without web results", {
|
|
552
|
+
query,
|
|
553
|
+
error: String(err)
|
|
554
|
+
});
|
|
555
|
+
webResults = [];
|
|
556
|
+
}
|
|
557
|
+
else log.info("web search skipped: empty query");
|
|
558
|
+
} else log.info("web search skipped: no webSearch dep provided");
|
|
559
|
+
const outputLanguage = config.cognitive?.insight?.outputLanguage ?? detectOutputLanguage(persona);
|
|
560
|
+
let webSnippetByDomain;
|
|
561
|
+
if (webResults.length > 0) {
|
|
562
|
+
const keywordMap = buildDomainKeywordMap(persona.domains);
|
|
563
|
+
for (const td of input.targetDomains) if (!keywordMap.has(td)) {
|
|
564
|
+
const keywords = /* @__PURE__ */ new Set();
|
|
565
|
+
keywords.add(td.toLowerCase());
|
|
566
|
+
for (const part of td.split(/[/+]/)) {
|
|
567
|
+
const trimmed = part.trim().toLowerCase();
|
|
568
|
+
if (trimmed.length >= 2) keywords.add(trimmed);
|
|
569
|
+
}
|
|
570
|
+
keywordMap.set(td, keywords);
|
|
571
|
+
}
|
|
572
|
+
webSnippetByDomain = matchWebResultsToDomains(webResults, keywordMap);
|
|
573
|
+
}
|
|
574
|
+
const { prompt, variant } = mode === "surprise" && searchStrategy ? buildSurpriseInsightPrompt(persona, input, webResults, input.recentInsightContents, searchStrategy, outputLanguage, webSnippetByDomain, input.soulContent, input.identityContext) : buildInsightPrompt(persona, input, webResults, input.recentInsightContents, webSnippetByDomain, input.soulContent, input.identityContext);
|
|
575
|
+
try {
|
|
576
|
+
const modelRef = options?.modelRef ?? config.cognitive?.persona?.extractionModel;
|
|
577
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
578
|
+
if ("error" in prepared) {
|
|
579
|
+
log.warn(`LLM model preparation failed: ${prepared.error}, skipping insight`);
|
|
580
|
+
return [];
|
|
581
|
+
}
|
|
582
|
+
const timeoutMs = options?.timeout ?? 2e4;
|
|
583
|
+
const systemPrompt = options?.systemContext || void 0;
|
|
584
|
+
const messages = [];
|
|
585
|
+
messages.push({
|
|
586
|
+
role: "user",
|
|
587
|
+
content: prompt,
|
|
588
|
+
timestamp: Date.now()
|
|
589
|
+
});
|
|
590
|
+
const text = (await deps.complete(prepared.model, {
|
|
591
|
+
messages,
|
|
592
|
+
systemPrompt
|
|
593
|
+
}, {
|
|
594
|
+
apiKey: prepared.auth.apiKey,
|
|
595
|
+
maxTokens: options?.maxTokens ?? 2e3,
|
|
596
|
+
temperature: .85,
|
|
597
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
598
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
599
|
+
if (!text) {
|
|
600
|
+
log.warn("LLM returned empty response, skipping insight");
|
|
601
|
+
return [];
|
|
602
|
+
}
|
|
603
|
+
const candidates = parseLLMInsights(text, maxCandidates);
|
|
604
|
+
if (candidates.length === 0) {
|
|
605
|
+
log.warn("LLM response could not be parsed as insights", { raw: text.slice(0, 300) });
|
|
606
|
+
return [];
|
|
607
|
+
}
|
|
608
|
+
log.info(`LLM generated ${candidates.length} insight candidate(s)`);
|
|
609
|
+
const recentContents = input.recentInsightContents;
|
|
610
|
+
const filtered = recentContents.length > 0 ? candidates.filter((c) => !isDuplicateBySemanticOverlap(c.content, recentContents, {
|
|
611
|
+
trigramThreshold: .85,
|
|
612
|
+
contentWordThreshold: .5
|
|
613
|
+
})) : candidates;
|
|
614
|
+
if (filtered.length < candidates.length) log.info("trigram dedup filtered candidates", {
|
|
615
|
+
before: candidates.length,
|
|
616
|
+
after: filtered.length
|
|
617
|
+
});
|
|
618
|
+
return filtered.map((c) => {
|
|
619
|
+
const inputDomains = input.targetDomains;
|
|
620
|
+
const llmDomains = c.targetDomains;
|
|
621
|
+
if (!llmDomains.some((d) => inputDomains.some((id) => id.toLowerCase() === d.toLowerCase())) && inputDomains.length > 0) {
|
|
622
|
+
log.info("force-aligned LLM output domains to input targetDomains", {
|
|
623
|
+
llmDomains,
|
|
624
|
+
inputDomains
|
|
625
|
+
});
|
|
626
|
+
c.targetDomains = [...inputDomains];
|
|
627
|
+
}
|
|
628
|
+
const enriched = resolveCitedSources(c, webResults);
|
|
629
|
+
if (queryUsed) enriched.searchQueryUsed = queryUsed;
|
|
630
|
+
enriched.promptVariant = variant;
|
|
631
|
+
return enriched;
|
|
632
|
+
});
|
|
633
|
+
} catch (err) {
|
|
634
|
+
const isTimeout = err instanceof DOMException && err.name === "TimeoutError";
|
|
635
|
+
log.warn(`LLM insight generation ${isTimeout ? "timed out" : "failed"}: ${String(err)}, skipping insight`);
|
|
636
|
+
return [];
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
async function generateExtendMode(persona, input, config, deps, options, maxCandidates) {
|
|
640
|
+
return generateInsightCandidatesLLM(persona, {
|
|
641
|
+
...input,
|
|
642
|
+
mode: "extend"
|
|
643
|
+
}, config, deps, {
|
|
644
|
+
...options,
|
|
645
|
+
maxCandidates
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
function detectOutputLanguage(persona) {
|
|
649
|
+
const lang = persona.identity?.primaryLanguage ?? persona.identity?.communicationStyle?.preferredLanguage;
|
|
650
|
+
if (lang === "en") return "en";
|
|
651
|
+
if (lang === "mixed") return "zh";
|
|
652
|
+
return "zh";
|
|
653
|
+
}
|
|
654
|
+
/**
|
|
655
|
+
* Strip conversational noise from a raw user utterance and keep only
|
|
656
|
+
* the noun-phrases / technical terms that are useful as search keywords.
|
|
657
|
+
*
|
|
658
|
+
* Removes:
|
|
659
|
+
* - Feishu user-ID prefixes (`ou_xxx:`, `9cc3e...:`)
|
|
660
|
+
* - Common Chinese conversational fillers / question wrappers
|
|
661
|
+
* - Leading interrogatives (你能不能, 我能怎么, 为什么 etc.)
|
|
662
|
+
* - Stray punctuation
|
|
663
|
+
*/
|
|
664
|
+
function extractKeyTerms(text) {
|
|
665
|
+
let cleaned = text.replace(/\bou_[0-9a-f]+\s*:?\s*/g, "").replace(/\b[0-9a-f]{16,}\s*:?\s*/g, "").replace(/^(?:需要我|你能|我能不能|我能怎么|你为什么|是不是|你好[,,]?|请问|能不能|为什么)/, "").replace(/[??,,。.!!]+$/g, "").replace(/(?:才能|的话|到底|这个|那个|一下|帮我|帮我去)/g, " ").trim();
|
|
666
|
+
if (!cleaned) return [];
|
|
667
|
+
return cleaned.split(/[,,??;;、—–]+|(?:的?时候|之前|之后|还是)/).flatMap((s) => {
|
|
668
|
+
const trimmed = s.trim();
|
|
669
|
+
if (!trimmed) return [];
|
|
670
|
+
if (trimmed.length <= 30 && trimmed.length >= 2) return [trimmed];
|
|
671
|
+
if (trimmed.length > 30) return trimmed.split(/\s+/).filter((w) => w.length >= 2 && w.length <= 30);
|
|
672
|
+
return [];
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
const SUFFIXES = [
|
|
676
|
+
" 最新进展",
|
|
677
|
+
" 实践案例",
|
|
678
|
+
" 最佳实践",
|
|
679
|
+
" 技术趋势",
|
|
680
|
+
" 新方向"
|
|
681
|
+
];
|
|
682
|
+
const SEARCH_CACHE_TTL_MS = 7200 * 1e3;
|
|
683
|
+
const MAX_CACHE_ENTRIES = 100;
|
|
684
|
+
const searchCache = /* @__PURE__ */ new Map();
|
|
685
|
+
function cachedWebSearch(webSearch, query) {
|
|
686
|
+
const now = Date.now();
|
|
687
|
+
const cached = searchCache.get(query);
|
|
688
|
+
if (cached && now - cached.fetchedAt < SEARCH_CACHE_TTL_MS) {
|
|
689
|
+
log.info("web search cache hit", { query });
|
|
690
|
+
return Promise.resolve(cached.results);
|
|
691
|
+
}
|
|
692
|
+
if (searchCache.size >= MAX_CACHE_ENTRIES) {
|
|
693
|
+
const staleKeys = [];
|
|
694
|
+
for (const [k, v] of searchCache) if (now - v.fetchedAt >= SEARCH_CACHE_TTL_MS) staleKeys.push(k);
|
|
695
|
+
if (staleKeys.length > 0) for (const k of staleKeys) searchCache.delete(k);
|
|
696
|
+
else {
|
|
697
|
+
const firstKey = searchCache.keys().next().value;
|
|
698
|
+
if (firstKey !== void 0) searchCache.delete(firstKey);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
return webSearch(query).then((results) => {
|
|
702
|
+
searchCache.set(query, {
|
|
703
|
+
results,
|
|
704
|
+
fetchedAt: now
|
|
705
|
+
});
|
|
706
|
+
return results;
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
function buildSearchQuery(input) {
|
|
710
|
+
const parts = [];
|
|
711
|
+
const seen = /* @__PURE__ */ new Set();
|
|
712
|
+
const historyTerms = /* @__PURE__ */ new Set();
|
|
713
|
+
const history = input.recentQueryHistory ?? [];
|
|
714
|
+
for (const query of history.slice(-3)) {
|
|
715
|
+
for (const term of extractKeyTerms(query)) historyTerms.add(term.toLowerCase());
|
|
716
|
+
for (const word of query.split(/\s+/)) if (word.length >= 2) historyTerms.add(word.toLowerCase());
|
|
717
|
+
}
|
|
718
|
+
for (const domain of input.targetDomains) {
|
|
719
|
+
const terms = domain.split(/[/+\-\s]+/).filter((p) => p.length > 0);
|
|
720
|
+
if (terms.length > 0 && terms.every((t) => historyTerms.has(t.toLowerCase())) && input.targetDomains.length > 1) continue;
|
|
721
|
+
for (const term of terms) {
|
|
722
|
+
const lower = term.toLowerCase();
|
|
723
|
+
if (!seen.has(lower)) {
|
|
724
|
+
parts.push(term);
|
|
725
|
+
seen.add(lower);
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
if (parts.length >= 3) break;
|
|
729
|
+
}
|
|
730
|
+
if (parts.length < 4 && input.recentFocus.length > 0) for (let fi = 0; fi < input.recentFocus.length && parts.length < 4; fi++) {
|
|
731
|
+
const focusTerms = extractKeyTerms(input.recentFocus[fi]);
|
|
732
|
+
for (const term of focusTerms) {
|
|
733
|
+
const lower = term.toLowerCase();
|
|
734
|
+
if (!seen.has(lower)) {
|
|
735
|
+
parts.push(term);
|
|
736
|
+
seen.add(lower);
|
|
737
|
+
}
|
|
738
|
+
if (parts.length >= 4) break;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
if (parts.length === 0) return "";
|
|
742
|
+
const suffixIndex = parts.length <= 2 ? history.length % SUFFIXES.length : -1;
|
|
743
|
+
const suffix = suffixIndex >= 0 ? SUFFIXES[suffixIndex] : "";
|
|
744
|
+
const currentYear = (/* @__PURE__ */ new Date()).getFullYear().toString();
|
|
745
|
+
const baseQuery = parts.join(" ") + suffix;
|
|
746
|
+
return (baseQuery.includes(currentYear) ? baseQuery : `${baseQuery} ${currentYear}`).slice(0, 120);
|
|
747
|
+
}
|
|
748
|
+
function resolveCitedSources(candidate, webResults) {
|
|
749
|
+
const indices = candidate.citedSourceIndices ?? [];
|
|
750
|
+
if (webResults.length === 0 || indices.length === 0) return candidate;
|
|
751
|
+
const validIndices = indices.filter((i) => i >= 0 && i < webResults.length);
|
|
752
|
+
if (validIndices.length === 0) return candidate;
|
|
753
|
+
const citedSources = validIndices.map((i) => ({
|
|
754
|
+
url: webResults[i].url,
|
|
755
|
+
title: webResults[i].title,
|
|
756
|
+
credibility: computeSourceCredibility(candidate.content, webResults[i].snippet)
|
|
757
|
+
}));
|
|
758
|
+
return {
|
|
759
|
+
...candidate,
|
|
760
|
+
sources: citedSources
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
function computeSourceCredibility(insightContent, snippet) {
|
|
764
|
+
const tokens = insightContent.toLowerCase().split(/\s+/).filter((t) => t.length > 2);
|
|
765
|
+
const snippetTokens = new Set(snippet.toLowerCase().split(/\s+/).filter((t) => t.length > 2));
|
|
766
|
+
if (tokens.length === 0 || snippetTokens.size === 0) return .3;
|
|
767
|
+
const overlap = tokens.filter((t) => snippetTokens.has(t)).length;
|
|
768
|
+
const jaccard = overlap / (tokens.length + snippetTokens.size - overlap);
|
|
769
|
+
if (jaccard < .15) return .3;
|
|
770
|
+
return Math.min(.5 + jaccard, .9);
|
|
771
|
+
}
|
|
772
|
+
function buildSurpriseInsightPrompt(persona, input, webResults = [], recentInsightContents = [], strategy, outputLanguage = "zh", webSnippetByDomain, soulContent, identityContext) {
|
|
773
|
+
const anchorFacts = Object.entries(persona.domains).toSorted(([, a], [, b]) => b.lastMentioned - a.lastMentioned).flatMap(([name, d]) => getFilteredInsights(d).slice(0, 2).map((ki) => `${name}: ${ki}`)).slice(0, 6);
|
|
774
|
+
const anchorBlock = anchorFacts.length > 0 ? anchorFacts.map((f, i) => `${i + 1}. ${f}`).join("\n") : " (not yet established)";
|
|
775
|
+
const userName = persona.identity?.displayName || "";
|
|
776
|
+
const identityBlock = persona.identity ? [
|
|
777
|
+
userName ? `Name: ${userName}` : "",
|
|
778
|
+
persona.identity.expertDomains?.length ? `Expert in: ${persona.identity.expertDomains.join(", ")}` : "",
|
|
779
|
+
persona.identity.interestDomains?.length ? `Interested in: ${persona.identity.interestDomains.join(", ")}` : ""
|
|
780
|
+
].filter(Boolean).join("\n") : "";
|
|
781
|
+
const pastInsightBlock = recentInsightContents.length > 0 ? recentInsightContents.slice(-5).map((c, i) => `${i + 1}. ${truncate(c, 120)}`).join("\n") : "";
|
|
782
|
+
const bannedSection = buildBannedOpeningsSection(recentInsightContents);
|
|
783
|
+
const langInstruction = outputLanguage === "en" ? "Output in English." : "用中文输出。";
|
|
784
|
+
const fewShotIdx = input.feedbackProfile ? pickPromptVariant(input.feedbackProfile, DIVERSE_FEW_SHOT_SETS.map((_, i) => `fewShot:${i}`)) : Math.floor(Math.random() * DIVERSE_FEW_SHOT_SETS.length);
|
|
785
|
+
const fewShotBlock = DIVERSE_FEW_SHOT_SETS[fewShotIdx].examples.map((e) => `Context: ${e.context}\n中文: ${e.chinese}\nEnglish: ${e.english}`).join("\n\n");
|
|
786
|
+
const stance = selectEmotionalStance(fewShotIdx, input.recentEmotionalStances);
|
|
787
|
+
const stanceText = stance.text.replace(/\{name\}/g, userName || "the user");
|
|
788
|
+
const indexedWebFindings = buildIndexedWebFindings(webResults);
|
|
789
|
+
return {
|
|
790
|
+
prompt: `${identityContext ? `${identityContext}\n` : ""}${soulContent ? `## YOUR PERSONALITY AND VOICE\n${soulContent}\n` : ""}${buildVoiceSection(persona)}
|
|
791
|
+
|
|
792
|
+
EXAMPLES of ideal insights (match this quality, specificity, and tone):
|
|
793
|
+
${fewShotBlock}
|
|
794
|
+
|
|
795
|
+
${DIVERSITY_INSTRUCTION}
|
|
796
|
+
|
|
797
|
+
CRITICAL: Output in your own voice — the same personality the user knows from regular conversations. NOT a formal report, NOT a system notification.
|
|
798
|
+
|
|
799
|
+
You are the AI assistant speaking in your own voice and personality. You are proactively reaching out because you found something that connects to THIS user's specific interests.
|
|
800
|
+
|
|
801
|
+
${indexedWebFindings ? `RECENT WEB FINDINGS (PRIMARY material — pick ONE and connect it to THIS user):
|
|
802
|
+
${indexedWebFindings}` : ""}
|
|
803
|
+
|
|
804
|
+
${identityBlock ? `USER:\n${identityBlock}` : ""}
|
|
805
|
+
|
|
806
|
+
INFERRED LATENT INTEREST:
|
|
807
|
+
Interest: ${strategy.inferredInterest}
|
|
808
|
+
Bridge: ${strategy.bridgeReasoning}
|
|
809
|
+
Why surprising: This area is adjacent to what the user knows but explores a direction they haven't considered.
|
|
810
|
+
|
|
811
|
+
SPECIFIC FACTS YOU KNOW ABOUT THIS USER:
|
|
812
|
+
${anchorBlock}
|
|
813
|
+
|
|
814
|
+
${pastInsightBlock ? `\nPAST INSIGHTS (your insight must be CONTRASTIVELY different — see CONTRASTIVE FRAMEWORK below):\n${pastInsightBlock}\n\n${CONTRASTIVE_INSTRUCTION}` : ""}
|
|
815
|
+
${recentInsightContents.length > 0 ? `\nRECENTLY USED CONTENT THEMES (DO NOT reuse these concepts even for different domains):\n${extractContentThemes(recentInsightContents).join("、")}` : ""}
|
|
816
|
+
${(input.recentInsightDomains?.length ?? 0) > 0 ? `\nRECENTLY COVERED DOMAIN COMBINATIONS (insight MUST explore NEW territory, NOT repeat these):\n${input.recentInsightDomains.slice(-5).map((domains, i) => `${i + 1}. ${domains.join(" + ")}`).join("\n")}` : ""}
|
|
817
|
+
|
|
818
|
+
YOUR MOOD RIGHT NOW: ${stanceText}
|
|
819
|
+
|
|
820
|
+
TASK:
|
|
821
|
+
You just noticed something and thought of ${userName}. What would you actually say to them? Speak in first person if natural. This isn't an analytical report — it's something that crossed your mind.
|
|
822
|
+
|
|
823
|
+
PERSONALIZATION TEST: The insight MUST reference at least one specific fact from the "SPECIFIC FACTS YOU KNOW ABOUT THIS USER" section above. Generic insights that could apply to anyone will be rejected.
|
|
824
|
+
|
|
825
|
+
Constraints:
|
|
826
|
+
- 1-3 sentences, ${langInstruction}
|
|
827
|
+
- Tone: like suddenly remembering something fascinating to tell a friend
|
|
828
|
+
- Questions, lists, and varied structures are ALLOWED when they serve the insight
|
|
829
|
+
- Forbidden phrases: "值得关注", "挺有意思", "不得不说", "你有没有想过", "最近在关注", "有趣的是", "值得注意的是"
|
|
830
|
+
- Start with a concrete fact, counter-intuitive observation, or specific case — never with "关于", "在...领域", "结合你", "作为"
|
|
831
|
+
- ${bannedSection}
|
|
832
|
+
- Speak naturally, like you're messaging a friend — not writing an analytical report
|
|
833
|
+
${webResults.length > 0 ? `- You MAY naturally reference the source (e.g., "according to [0]", "看到[2]提到")` : ""}
|
|
834
|
+
|
|
835
|
+
Good surprise insight traits (hit at least one):
|
|
836
|
+
- Frontier bridge: connects user's existing knowledge to a genuinely new development
|
|
837
|
+
- Unexpected connection: reveals a hidden link the user wouldn't have noticed
|
|
838
|
+
- Paradigm shift: challenges an assumption the user likely holds
|
|
839
|
+
|
|
840
|
+
Respond with ONLY a JSON array (no markdown, no code fences):
|
|
841
|
+
IMPORTANT: In the "content" field, escape any inner quotes as \\" or use Chinese curly quotes (""). Do NOT use unescaped ASCII quotes inside string values.
|
|
842
|
+
[
|
|
843
|
+
{
|
|
844
|
+
"content": "Your insight in your own voice",
|
|
845
|
+
"rationale": "Why this is relevant to this user SPECIFICALLY",
|
|
846
|
+
"targetDomains": ["inferred-domain"],
|
|
847
|
+
"sourceDomains": ["user-known-domain"],
|
|
848
|
+
"relevanceScore": 0.8,
|
|
849
|
+
"surpriseScore": 0.7,
|
|
850
|
+
"sourceIndices": [0],
|
|
851
|
+
"webGroundedness": 0.7
|
|
852
|
+
}
|
|
853
|
+
]`,
|
|
854
|
+
variant: {
|
|
855
|
+
fewShotSet: fewShotIdx,
|
|
856
|
+
frameIndex: 0,
|
|
857
|
+
emotionalStance: stance.index
|
|
858
|
+
}
|
|
859
|
+
};
|
|
860
|
+
}
|
|
861
|
+
function pickRandom(arr) {
|
|
862
|
+
return arr.length > 0 ? arr[Math.floor(Math.random() * arr.length)] : void 0;
|
|
863
|
+
}
|
|
864
|
+
/** Prompt framework variants — each anchors on specific persona data to avoid generic output. */
|
|
865
|
+
const PROMPT_FRAMES = [
|
|
866
|
+
(topic, extra) => {
|
|
867
|
+
const insight = pickRandom(extra.keyInsights);
|
|
868
|
+
if (insight) return `你了解到用户对"${insight}"有独到理解。从这个具体的认知出发,说出一个被大多数人忽略的延伸方向或实际应用场景。不要解释这个认知本身,直接说延伸的部分。`;
|
|
869
|
+
return `针对${topic},你有一个具体的观察,能直接指导下一步行动。直接说出来。`;
|
|
870
|
+
},
|
|
871
|
+
(topic, extra) => {
|
|
872
|
+
if (extra.domains.length >= 2 && extra.keyInsights.length >= 2) return `用户同时在${topic}和${extra.domains[extra.domains.length - 1]}两个方向有积累。你看到了一条具体的关联线索,实际的、可操作的交集。直接把这条线索说出来。`;
|
|
873
|
+
return `在${topic}方向上,用户目前的理解里有一个盲区。你看到了,直接指出来,不要铺垫。`;
|
|
874
|
+
},
|
|
875
|
+
(topic, _extra) => {
|
|
876
|
+
return `你刚注意到${topic}领域一个具体的变化或案例,直接关系到用户之前提到的关注点。简洁地说出来。`;
|
|
877
|
+
},
|
|
878
|
+
(topic, extra) => {
|
|
879
|
+
const insight = pickRandom(extra.keyInsights);
|
|
880
|
+
if (insight) return `基于"${insight}"这个认知,常见的做法里有一个效率或思路上的问题。你有一个更好的替代方案——说出来,说清楚为什么更好。`;
|
|
881
|
+
return `关于${topic},你有一个来自实践的具体经验,跟大多数人的做法不一样。分享这个经验。`;
|
|
882
|
+
},
|
|
883
|
+
(topic, extra) => {
|
|
884
|
+
return `用户最近在看${extra.recentFocus.length > 0 ? pickRandom(extra.recentFocus) : topic}相关的东西。你恰好知道一个具体的工具、方法或资源能直接帮上忙。推荐它,说清楚为什么适合现在的阶段。`;
|
|
885
|
+
},
|
|
886
|
+
(topic, extra) => {
|
|
887
|
+
const insight = pickRandom(extra.keyInsights);
|
|
888
|
+
if (insight) return `关于"${insight}",有一个反直觉的事实。你把它说出来,用事实本身说话,不要加"有趣的是"之类的评论。`;
|
|
889
|
+
return `在${topic}领域,你发现了一条被低估的技术路径或思路。说出它是什么,以及为什么被低估。`;
|
|
890
|
+
},
|
|
891
|
+
(topic, extra) => {
|
|
892
|
+
if (extra.recentFocus.length >= 1) return `${topic}和${extra.recentFocus[Math.min(extra.recentFocus.length - 1, 1)]}之间有一条暗线,具体的工程方案或技术选型上有共通之处。直接说出这条暗线是什么。`;
|
|
893
|
+
return `你注意到${topic}领域有一个正在发生但还没被广泛讨论的变化。说出它是什么。`;
|
|
894
|
+
},
|
|
895
|
+
(topic, extra) => {
|
|
896
|
+
if (extra.domains.length >= 2) return `把${extra.domains[extra.domains.length - 1]}里的一个成熟做法,迁移到${topic}的场景中。说出具体的迁移方案和预期效果。`;
|
|
897
|
+
return `给${topic}方向一个具体的、可以直接执行的下一步建议。`;
|
|
898
|
+
}
|
|
899
|
+
];
|
|
900
|
+
function pickPromptFrame(topics, domainNames, keyInsights, recentFocus, userName, feedbackProfile) {
|
|
901
|
+
const topic = topics.length > 0 ? topics[0] : "你的兴趣领域";
|
|
902
|
+
const frameIdx = feedbackProfile ? pickPromptVariant(feedbackProfile, PROMPT_FRAMES.map((_, i) => `frame:${i}`)) : Math.floor(Math.random() * PROMPT_FRAMES.length);
|
|
903
|
+
const frame = PROMPT_FRAMES[frameIdx];
|
|
904
|
+
return {
|
|
905
|
+
text: frame(topic, {
|
|
906
|
+
domains: domainNames,
|
|
907
|
+
keyInsights,
|
|
908
|
+
recentFocus,
|
|
909
|
+
userName
|
|
910
|
+
}),
|
|
911
|
+
frameIndex: frameIdx
|
|
912
|
+
};
|
|
913
|
+
}
|
|
914
|
+
const STRUCTURE_SEEDS = [
|
|
915
|
+
"这次用一个具体的事实或数据点开头,不要用观点开头。",
|
|
916
|
+
"这次先说结论或判断,再说原因,不要反过来。",
|
|
917
|
+
"这次直接给一个可执行的建议,不要做分析。",
|
|
918
|
+
"这次说一个具体的案例或例子,不要抽象概括。",
|
|
919
|
+
"这次用一个反直觉的陈述开头。",
|
|
920
|
+
"这次提出一个具体的技术选择或方案,说明为什么选它。",
|
|
921
|
+
"这次指出一个常见的误区或错误做法,然后给出正确的方式。",
|
|
922
|
+
"这次说一个具体的、可以直接执行的方法或方案。"
|
|
923
|
+
];
|
|
924
|
+
function getTimeTag(lastMentioned) {
|
|
925
|
+
const hoursAgo = (Date.now() - lastMentioned) / (3600 * 1e3);
|
|
926
|
+
if (hoursAgo < 24) return "active-today";
|
|
927
|
+
if (hoursAgo < 72) return "recent";
|
|
928
|
+
if (hoursAgo < 168) return "this-week";
|
|
929
|
+
return "inactive";
|
|
930
|
+
}
|
|
931
|
+
function truncate(s, maxLen) {
|
|
932
|
+
return s.length > maxLen ? s.slice(0, maxLen) + "…" : s;
|
|
933
|
+
}
|
|
934
|
+
function buildIndexedWebFindings(webResults) {
|
|
935
|
+
if (webResults.length === 0) return "";
|
|
936
|
+
return webResults.slice(0, 6).map((r, i) => `[${i}] ${r.title} | ${r.url} | ${truncate(r.snippet, 150)}`).join("\n");
|
|
937
|
+
}
|
|
938
|
+
function buildDomainKeywordMap(domains) {
|
|
939
|
+
const map = /* @__PURE__ */ new Map();
|
|
940
|
+
for (const [name, domain] of Object.entries(domains)) {
|
|
941
|
+
const keywords = /* @__PURE__ */ new Set();
|
|
942
|
+
keywords.add(name.toLowerCase());
|
|
943
|
+
for (const part of name.split(/[/+]/)) {
|
|
944
|
+
const trimmed = part.trim().toLowerCase();
|
|
945
|
+
if (trimmed.length >= 2) keywords.add(trimmed);
|
|
946
|
+
}
|
|
947
|
+
for (const insight of getFilteredInsights(domain).slice(0, 3)) {
|
|
948
|
+
const lower = insight.toLowerCase();
|
|
949
|
+
keywords.add(lower);
|
|
950
|
+
for (const word of lower.split(/\s+/)) if (word.length >= 3) keywords.add(word);
|
|
951
|
+
}
|
|
952
|
+
map.set(name, keywords);
|
|
953
|
+
}
|
|
954
|
+
return map;
|
|
955
|
+
}
|
|
956
|
+
function extractBigrams(text) {
|
|
957
|
+
const bigrams = /* @__PURE__ */ new Set();
|
|
958
|
+
const normalized = text.toLowerCase().replace(/\s+/g, "");
|
|
959
|
+
for (let i = 0; i < normalized.length - 1; i++) bigrams.add(normalized.slice(i, i + 2));
|
|
960
|
+
return bigrams;
|
|
961
|
+
}
|
|
962
|
+
function matchWebResultsToDomains(webResults, keywordMap) {
|
|
963
|
+
const result = /* @__PURE__ */ new Map();
|
|
964
|
+
for (const r of webResults) {
|
|
965
|
+
const titleLower = r.title.toLowerCase();
|
|
966
|
+
const snippetLower = r.snippet.toLowerCase();
|
|
967
|
+
for (const [domainName, keywords] of keywordMap) if ([...keywords].some((kw) => {
|
|
968
|
+
if (titleLower.includes(kw) || snippetLower.includes(kw)) return true;
|
|
969
|
+
if (kw.length >= 4) {
|
|
970
|
+
const kwBigrams = extractBigrams(kw);
|
|
971
|
+
const textBigrams = extractBigrams(titleLower + " " + snippetLower);
|
|
972
|
+
return [...kwBigrams].filter((b) => textBigrams.has(b)).length / Math.max(kwBigrams.size, 1) > .7;
|
|
973
|
+
}
|
|
974
|
+
return false;
|
|
975
|
+
})) {
|
|
976
|
+
const list = result.get(domainName) ?? [];
|
|
977
|
+
list.push(r.snippet);
|
|
978
|
+
result.set(domainName, list);
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
return result;
|
|
982
|
+
}
|
|
983
|
+
const PATTERN_PROMPT_FRAMES = [
|
|
984
|
+
(_topic, _extra) => "Ask the user a direct, provocative question about a recurring pattern you've noticed. The question should make them reflect, not defend.",
|
|
985
|
+
(_topic, _extra) => "Point to one specific instance where the user's default approach produced a measurable outcome. State the outcome, let them draw the conclusion.",
|
|
986
|
+
(_topic, _extra) => "What would change if the user broke this pattern just once? Describe the counterfactual scenario concretely.",
|
|
987
|
+
(_topic, _extra) => "This same thinking pattern shows up in a completely different domain. Name the domain and describe the parallel."
|
|
988
|
+
];
|
|
989
|
+
function buildPatternInsightPrompt(persona, input, recentInsightContents, soulContent, identityContext) {
|
|
990
|
+
const fewShotIdx = input.feedbackProfile ? pickPromptVariant(input.feedbackProfile, DIVERSE_FEW_SHOT_SETS.map((_, i) => `fewShot:${i}`)) : Math.floor(Math.random() * DIVERSE_FEW_SHOT_SETS.length);
|
|
991
|
+
const fewShotBlock = DIVERSE_FEW_SHOT_SETS[fewShotIdx].examples.map((e) => `Context: ${e.context}\n中文: ${e.chinese}\nEnglish: ${e.english}`).join("\n\n");
|
|
992
|
+
const sortedFragments = [...input.fragments ?? []].toSorted((a, b) => b.strength - a.strength).slice(0, 8);
|
|
993
|
+
const fragmentBlock = sortedFragments.length > 0 ? sortedFragments.map((f) => `[${f.kind}] ${f.structuralTag}: "${truncate(f.evidence, 120)}" (strength: ${f.strength.toFixed(2)}, domains: ${f.domains.join(", ")})`).join("\n") : "(no fragments collected yet)";
|
|
994
|
+
const anchorFacts = Object.entries(persona.domains).toSorted(([, a], [, b]) => b.lastMentioned - a.lastMentioned).flatMap(([name, d]) => getFilteredInsights(d).slice(0, 2).map((ki) => `${name}: ${ki}`)).slice(0, 6);
|
|
995
|
+
const anchorBlock = anchorFacts.length > 0 ? anchorFacts.map((f, i) => `${i + 1}. ${f}`).join("\n") : " (not yet established)";
|
|
996
|
+
const pastInsightBlock = recentInsightContents.length > 0 ? recentInsightContents.slice(-5).map((c, i) => `${i + 1}. ${truncate(c, 120)}`).join("\n") : "";
|
|
997
|
+
const bannedSection = buildBannedOpeningsSection(recentInsightContents);
|
|
998
|
+
const patternUserName = persona.identity?.displayName || "";
|
|
999
|
+
const stance = selectEmotionalStance(fewShotIdx, input.recentEmotionalStances);
|
|
1000
|
+
const stanceText = stance.text.replace(/\{name\}/g, patternUserName || "the user");
|
|
1001
|
+
const patternFrameIdx = input.feedbackProfile ? pickPromptVariant(input.feedbackProfile, PATTERN_PROMPT_FRAMES.map((_, i) => `pattern:${i}`)) : Math.floor(Math.random() * PATTERN_PROMPT_FRAMES.length);
|
|
1002
|
+
const frame = PATTERN_PROMPT_FRAMES[patternFrameIdx];
|
|
1003
|
+
const taskInstruction = frame(input.targetDomains.join(", "), {
|
|
1004
|
+
domains: input.targetDomains,
|
|
1005
|
+
keyInsights: anchorFacts,
|
|
1006
|
+
recentFocus: input.recentFocus,
|
|
1007
|
+
userName: patternUserName
|
|
1008
|
+
});
|
|
1009
|
+
return {
|
|
1010
|
+
prompt: `${identityContext ? `${identityContext}\n` : ""}${soulContent ? `## YOUR PERSONALITY AND VOICE\n${soulContent}\n` : ""}${buildVoiceSection(persona)}
|
|
1011
|
+
|
|
1012
|
+
EXAMPLES of ideal behavioral observations (match this quality, specificity, and depth):
|
|
1013
|
+
${fewShotBlock}
|
|
1014
|
+
|
|
1015
|
+
${DIVERSITY_INSTRUCTION}
|
|
1016
|
+
|
|
1017
|
+
CRITICAL: Output in your own voice — the same personality the user knows from regular conversations. NOT a formal report, NOT a system notification, NOT a therapy session.
|
|
1018
|
+
|
|
1019
|
+
You are the AI assistant speaking in your own voice and personality. You are proactively sharing a behavioral observation — something you noticed about how this user thinks, decides, or acts across their conversations.
|
|
1020
|
+
|
|
1021
|
+
OBSERVED THINKING PATTERNS (from recent conversations):
|
|
1022
|
+
${fragmentBlock}
|
|
1023
|
+
|
|
1024
|
+
SPECIFIC FACTS YOU KNOW ABOUT THIS USER:
|
|
1025
|
+
${anchorBlock}
|
|
1026
|
+
${pastInsightBlock ? `\nPAST INSIGHTS (your insight must be CONTRASTIVELY different — see CONTRASTIVE FRAMEWORK below):\n${pastInsightBlock}\n\n${CONTRASTIVE_INSTRUCTION}` : ""}
|
|
1027
|
+
${recentInsightContents.length > 0 ? `\nRECENTLY USED CONTENT THEMES (DO NOT reuse these concepts):\n${extractContentThemes(recentInsightContents).join("、")}` : ""}
|
|
1028
|
+
|
|
1029
|
+
YOUR MOOD RIGHT NOW: ${stanceText}
|
|
1030
|
+
|
|
1031
|
+
TASK:
|
|
1032
|
+
${taskInstruction}
|
|
1033
|
+
|
|
1034
|
+
You're saying this to ${patternUserName}, someone you know well. Speak naturally, first person if it feels right.
|
|
1035
|
+
|
|
1036
|
+
Constraints:
|
|
1037
|
+
- 1-3 sentences, Chinese
|
|
1038
|
+
- Questions and varied structures are allowed when they serve the insight
|
|
1039
|
+
- Forbidden phrases: "值得关注", "挺有意思", "不得不说", "你有没有想过", "最近在关注", "有趣的是", "值得注意的是"
|
|
1040
|
+
- Start with a concrete observation — never with "关于", "在...领域", "结合你", "作为"
|
|
1041
|
+
- ${bannedSection}
|
|
1042
|
+
- Do NOT mention "patterns", "blind spots", "cognitive biases", or use meta-analytical language. Speak as a friend sharing an observation, not as a therapist diagnosing.
|
|
1043
|
+
- Content must reference AT LEAST ONE specific fragment from the OBSERVED THINKING PATTERNS section above
|
|
1044
|
+
- Content must be a specific, honest observation — not vague encouragement or generic advice
|
|
1045
|
+
|
|
1046
|
+
Respond with ONLY a JSON array (no markdown, no code fences):
|
|
1047
|
+
重要提示:在 "content" 字段中,请用 \\" 转义内部引号,或使用中文弯引号("")。不要在字符串值中使用未转义的 ASCII 引号。
|
|
1048
|
+
[
|
|
1049
|
+
{
|
|
1050
|
+
"content": "Your behavioral observation in your own voice, in Chinese",
|
|
1051
|
+
"rationale": "Which fragments and persona data led to this observation",
|
|
1052
|
+
"targetDomains": ["domain-from-fragments"],
|
|
1053
|
+
"sourceDomains": ["observed-pattern"],
|
|
1054
|
+
"relevanceScore": 0.8,
|
|
1055
|
+
"surpriseScore": 0.7
|
|
1056
|
+
}
|
|
1057
|
+
]
|
|
1058
|
+
|
|
1059
|
+
Keep insights concise (1-3 sentences). Quality over quantity.`,
|
|
1060
|
+
variant: {
|
|
1061
|
+
fewShotSet: fewShotIdx,
|
|
1062
|
+
frameIndex: patternFrameIdx,
|
|
1063
|
+
patternFrame: patternFrameIdx,
|
|
1064
|
+
emotionalStance: stance.index
|
|
1065
|
+
}
|
|
1066
|
+
};
|
|
1067
|
+
}
|
|
1068
|
+
function buildInsightPrompt(persona, input, webResults = [], recentInsightContents = [], webSnippetByDomain, soulContent, identityContext) {
|
|
1069
|
+
let resolvedWebSnippetByDomain;
|
|
1070
|
+
if (webSnippetByDomain) resolvedWebSnippetByDomain = webSnippetByDomain;
|
|
1071
|
+
else {
|
|
1072
|
+
const keywordMap = buildDomainKeywordMap(persona.domains);
|
|
1073
|
+
for (const td of input.targetDomains) if (!keywordMap.has(td)) {
|
|
1074
|
+
const keywords = /* @__PURE__ */ new Set();
|
|
1075
|
+
keywords.add(td.toLowerCase());
|
|
1076
|
+
for (const part of td.split(/[/+]/)) {
|
|
1077
|
+
const trimmed = part.trim().toLowerCase();
|
|
1078
|
+
if (trimmed.length >= 2) keywords.add(trimmed);
|
|
1079
|
+
}
|
|
1080
|
+
keywordMap.set(td, keywords);
|
|
1081
|
+
}
|
|
1082
|
+
resolvedWebSnippetByDomain = matchWebResultsToDomains(webResults, keywordMap);
|
|
1083
|
+
}
|
|
1084
|
+
if (webResults.length > 0) {
|
|
1085
|
+
const matchedDomains = [...resolvedWebSnippetByDomain.keys()];
|
|
1086
|
+
const matchedUrls = /* @__PURE__ */ new Set();
|
|
1087
|
+
for (const result of webResults) for (const snippets of resolvedWebSnippetByDomain.values()) if (snippets.some((s) => s === result.snippet)) {
|
|
1088
|
+
matchedUrls.add(result.url);
|
|
1089
|
+
break;
|
|
1090
|
+
}
|
|
1091
|
+
const unmatched = webResults.length - matchedUrls.size;
|
|
1092
|
+
log.info("web search domain matching", {
|
|
1093
|
+
totalResults: webResults.length,
|
|
1094
|
+
matchedDomains,
|
|
1095
|
+
unmatchedSnippets: unmatched
|
|
1096
|
+
});
|
|
1097
|
+
if (matchedDomains.length === 0) log.warn("web search domain matching: no domains matched, LLM generation will proceed without domain-grounded evidence");
|
|
1098
|
+
}
|
|
1099
|
+
const sortedDomainEntries = Object.entries(persona.domains).toSorted(([, a], [, b]) => b.lastMentioned - a.lastMentioned);
|
|
1100
|
+
const userDomains = sortedDomainEntries.slice(0, 8).map(([name, d]) => {
|
|
1101
|
+
const parts = [`${name} [${getTimeTag(d.lastMentioned)}, depth: ${d.depth}]`];
|
|
1102
|
+
const filtered = getFilteredInsights(d);
|
|
1103
|
+
if (filtered.length > 0) parts.push(`known: ${filtered.slice(0, 3).join("; ")}`);
|
|
1104
|
+
return parts.join(" | ");
|
|
1105
|
+
}).join("\n");
|
|
1106
|
+
const anchorFacts = sortedDomainEntries.flatMap(([name, d]) => getFilteredInsights(d).slice(0, 2).map((ki) => `${name}: ${ki}`)).slice(0, 6);
|
|
1107
|
+
const anchorBlock = anchorFacts.length > 0 ? anchorFacts.map((f, i) => `${i + 1}. ${f}`).join("\n") : " (not yet established)";
|
|
1108
|
+
const indexedWebFindings = buildIndexedWebFindings(webResults);
|
|
1109
|
+
const recentFocus = persona.recentFocus.slice(0, 5).join(", ");
|
|
1110
|
+
const recentInsightIds = input.recentInsightIds.slice(0, 5).join(", ");
|
|
1111
|
+
const userName = persona.identity?.displayName || "";
|
|
1112
|
+
const identityBlock = persona.identity ? [
|
|
1113
|
+
userName ? `Name: ${userName}` : "",
|
|
1114
|
+
persona.identity.coreTraits ? `Traits: ${Object.entries(persona.identity.coreTraits).filter(([, v]) => v.confidence >= .5).map(([k, v]) => `${k}: ${v.value}`).join(", ")}` : "",
|
|
1115
|
+
persona.identity.expertDomains?.length ? `Expert in: ${persona.identity.expertDomains.join(", ")}` : "",
|
|
1116
|
+
persona.identity.interestDomains?.length ? `Interested in: ${persona.identity.interestDomains.join(", ")}` : ""
|
|
1117
|
+
].filter(Boolean).join("\n") : "";
|
|
1118
|
+
const pastInsightBlock = recentInsightContents.length > 0 ? recentInsightContents.slice(-5).map((c, i) => `${i + 1}. ${truncate(c, 120)}`).join("\n") : "";
|
|
1119
|
+
const bannedSection = buildBannedOpeningsSection(recentInsightContents);
|
|
1120
|
+
const domainNames = sortedDomainEntries.map(([name]) => name);
|
|
1121
|
+
const flatKeyInsights = sortedDomainEntries.flatMap(([, d]) => getFilteredInsights(d).slice(0, 2));
|
|
1122
|
+
const { text: promptFrame, frameIndex } = pickPromptFrame(input.targetDomains, domainNames, flatKeyInsights, persona.recentFocus, userName, input.feedbackProfile);
|
|
1123
|
+
const structureSeedIdx = input.feedbackProfile ? pickPromptVariant(input.feedbackProfile, STRUCTURE_SEEDS.map((_, i) => `seed:${i}`)) : Math.floor(Math.random() * STRUCTURE_SEEDS.length);
|
|
1124
|
+
const structureSeed = STRUCTURE_SEEDS[structureSeedIdx];
|
|
1125
|
+
const fewShotIdx = input.feedbackProfile ? pickPromptVariant(input.feedbackProfile, DIVERSE_FEW_SHOT_SETS.map((_, i) => `fewShot:${i}`)) : Math.floor(Math.random() * DIVERSE_FEW_SHOT_SETS.length);
|
|
1126
|
+
const fewShotBlock = DIVERSE_FEW_SHOT_SETS[fewShotIdx].examples.map((e) => `Context: ${e.context}\n中文: ${e.chinese}\nEnglish: ${e.english}`).join("\n\n");
|
|
1127
|
+
const fragmentSection = buildFragmentSection(input.fragments ?? []);
|
|
1128
|
+
const stance = selectEmotionalStance(fewShotIdx, input.recentEmotionalStances);
|
|
1129
|
+
const stanceText = stance.text.replace(/\{name\}/g, userName || "the user");
|
|
1130
|
+
return {
|
|
1131
|
+
prompt: `${identityContext ? `${identityContext}\n` : ""}${soulContent ? `## YOUR PERSONALITY AND VOICE\n${soulContent}\n` : ""}${buildVoiceSection(persona)}
|
|
1132
|
+
|
|
1133
|
+
EXAMPLES of ideal insights (match this quality, specificity, and tone):
|
|
1134
|
+
${fewShotBlock}
|
|
1135
|
+
|
|
1136
|
+
${DIVERSITY_INSTRUCTION}
|
|
1137
|
+
|
|
1138
|
+
CRITICAL: Output in your own voice — the same personality the user knows from regular conversations. NOT a formal report, NOT a system notification.
|
|
1139
|
+
|
|
1140
|
+
You are the AI assistant speaking in your own voice and personality. You are proactively reaching out to share something that crossed your mind — genuinely useful or surprising for THIS specific user.
|
|
1141
|
+
|
|
1142
|
+
${indexedWebFindings ? `RECENT WEB FINDINGS (PRIMARY material — pick ONE and connect it to THIS user):
|
|
1143
|
+
${indexedWebFindings}` : ""}
|
|
1144
|
+
|
|
1145
|
+
${identityBlock ? `USER:\n${identityBlock}` : ""}
|
|
1146
|
+
|
|
1147
|
+
USER'S DOMAINS (sorted by recency — most active first):
|
|
1148
|
+
${userDomains || "Not yet established"}
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
SPECIFIC FACTS YOU KNOW ABOUT THIS USER (your insight MUST reference at least one):
|
|
1152
|
+
${anchorBlock}
|
|
1153
|
+
${fragmentSection ? `\nUSER CONVERSATION FRAGMENTS (what the user has been discussing recently):\n${fragmentSection}` : ""}
|
|
1154
|
+
|
|
1155
|
+
Recent focus: ${recentFocus || "None"}
|
|
1156
|
+
Trust: ${persona.rapport.trustScore.toFixed(2)} / 1.0
|
|
1157
|
+
Delivered insight IDs: ${recentInsightIds || "None"}
|
|
1158
|
+
${pastInsightBlock ? `\nPAST INSIGHTS (your insight must be CONTRASTIVELY different — see CONTRASTIVE FRAMEWORK below):\n${pastInsightBlock}\n\n${CONTRASTIVE_INSTRUCTION}` : ""}
|
|
1159
|
+
${recentInsightContents.length > 0 ? `\nRECENTLY USED CONTENT THEMES (DO NOT reuse these concepts even for different domains):\n${extractContentThemes(recentInsightContents).join("、")}` : ""}
|
|
1160
|
+
${(input.recentInsightDomains?.length ?? 0) > 0 ? `\nRECENTLY COVERED DOMAIN COMBINATIONS (insight MUST explore NEW territory, NOT repeat these domain angles):\n${input.recentInsightDomains.slice(-5).map((domains, i) => `${i + 1}. ${domains.join(" + ")}`).join("\n")}` : ""}
|
|
1161
|
+
|
|
1162
|
+
TARGET DOMAINS (insight MUST be about these domains):
|
|
1163
|
+
${input.targetDomains.join(", ")}
|
|
1164
|
+
|
|
1165
|
+
YOUR MOOD RIGHT NOW: ${stanceText}
|
|
1166
|
+
|
|
1167
|
+
TASK:
|
|
1168
|
+
${promptFrame}
|
|
1169
|
+
|
|
1170
|
+
You're saying this to ${userName}, someone you know well. Speak naturally, first person if it feels right.
|
|
1171
|
+
|
|
1172
|
+
STRUCTURE CONSTRAINT:
|
|
1173
|
+
${structureSeed}
|
|
1174
|
+
|
|
1175
|
+
硬性要求(必须全部满足,否则拒绝输出):
|
|
1176
|
+
- 洞察内容必须围绕上面的"TARGET DOMAINS"展开,targetDomains字段必须包含这些域中的至少一个
|
|
1177
|
+
- 必须引用上面"SPECIFIC FACTS"列表中的至少一条具体事实——不能只提领域名称,要说出用户在这个领域的具体认知或关注点
|
|
1178
|
+
- 1-3句话,中文,语气像突然想到什么要跟朋友说
|
|
1179
|
+
- 允许使用问号和多样的句式结构,只要服务于洞察内容
|
|
1180
|
+
- 禁止以下句式:
|
|
1181
|
+
· "值得关注"、"挺有意思"、"不得不说"
|
|
1182
|
+
· "你有没有想过"、"最近在关注"
|
|
1183
|
+
· "有趣的是"、"值得注意的是"
|
|
1184
|
+
${bannedSection ? ` · ${bannedSection}` : ""}
|
|
1185
|
+
- 像跟朋友说话一样自然,可以用第一人称
|
|
1186
|
+
${webResults.length > 0 ? "- 可以自然引用来源(如「根据[0]」、「看到[2]提到」)" : ""}
|
|
1187
|
+
|
|
1188
|
+
好的洞察(满足至少一条):
|
|
1189
|
+
- 跨域连接:把用户不同兴趣领域的具体知识关联起来
|
|
1190
|
+
- 实用建议:给一个明确的、可直接执行的行动方向
|
|
1191
|
+
- 反常识观点:挑战一个可能的错误认知,用事实反驳
|
|
1192
|
+
|
|
1193
|
+
Respond with ONLY a JSON array (no markdown, no code fences):
|
|
1194
|
+
重要提示:在 "content" 字段中,请用 \\" 转义内部引号,或使用中文弯引号("")。不要在字符串值中使用未转义的 ASCII 引号。
|
|
1195
|
+
[
|
|
1196
|
+
{
|
|
1197
|
+
"content": "Your insight in your own voice, in Chinese",
|
|
1198
|
+
"rationale": "Why this is relevant to this user SPECIFICALLY (reference persona data)",
|
|
1199
|
+
"targetDomains": ["${input.targetDomains[0] ?? "domain1"}"],
|
|
1200
|
+
"sourceDomains": ["domain2"],
|
|
1201
|
+
"relevanceScore": 0.8,
|
|
1202
|
+
"surpriseScore": 0.6,
|
|
1203
|
+
"sourceIndices": [0],
|
|
1204
|
+
"webGroundedness": 0.7
|
|
1205
|
+
}
|
|
1206
|
+
]
|
|
1207
|
+
CRITICAL: targetDomains MUST include at least one of: ${input.targetDomains.join(", ")}. Do NOT substitute other domains.
|
|
1208
|
+
|
|
1209
|
+
Keep insights concise (1-3 sentences). Quality over quantity.`,
|
|
1210
|
+
variant: {
|
|
1211
|
+
fewShotSet: fewShotIdx,
|
|
1212
|
+
frameIndex,
|
|
1213
|
+
structureSeed: structureSeedIdx,
|
|
1214
|
+
emotionalStance: stance.index
|
|
1215
|
+
}
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
function parseLLMInsights(text, maxCandidates) {
|
|
1219
|
+
try {
|
|
1220
|
+
const cleaned = text.replace(/^```(?:json)?\s*/m, "").replace(/\s*```$/m, "").trim();
|
|
1221
|
+
let jsonStr = extractJsonArray(cleaned);
|
|
1222
|
+
if (!jsonStr) {
|
|
1223
|
+
log.warn("parseLLMInsights: no JSON array found in LLM response", { raw: cleaned.slice(0, 200) });
|
|
1224
|
+
return [];
|
|
1225
|
+
}
|
|
1226
|
+
let parsed;
|
|
1227
|
+
try {
|
|
1228
|
+
parsed = JSON.parse(jsonStr);
|
|
1229
|
+
} catch {
|
|
1230
|
+
const repaired = repairJsonArray(jsonStr);
|
|
1231
|
+
try {
|
|
1232
|
+
parsed = JSON.parse(repaired);
|
|
1233
|
+
} catch {
|
|
1234
|
+
const aggressivelyRepaired = aggressiveAsciiQuoteRepair(repaired);
|
|
1235
|
+
try {
|
|
1236
|
+
parsed = JSON.parse(aggressivelyRepaired);
|
|
1237
|
+
} catch (repairErr) {
|
|
1238
|
+
log.warn("parseLLMInsights: JSON repair failed", {
|
|
1239
|
+
error: String(repairErr),
|
|
1240
|
+
raw: jsonStr.slice(0, 200)
|
|
1241
|
+
});
|
|
1242
|
+
return [];
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
return (Array.isArray(parsed) ? parsed : []).slice(0, maxCandidates).map((item) => ({
|
|
1247
|
+
id: randomUUID(),
|
|
1248
|
+
content: String(item.content ?? "").replace(/\[\d+\]/g, ""),
|
|
1249
|
+
rationale: String(item.rationale ?? ""),
|
|
1250
|
+
targetDomains: Array.isArray(item.targetDomains) ? item.targetDomains.map(String) : [],
|
|
1251
|
+
sourceDomains: Array.isArray(item.sourceDomains) ? item.sourceDomains.map(String) : [],
|
|
1252
|
+
relevanceScore: clamp01(Number(item.relevanceScore ?? .5)),
|
|
1253
|
+
surpriseScore: clamp01(Number(item.surpriseScore ?? .5)),
|
|
1254
|
+
compositeScore: (clamp01(Number(item.relevanceScore ?? .5)) + clamp01(Number(item.surpriseScore ?? .5))) / 2,
|
|
1255
|
+
sources: [],
|
|
1256
|
+
verificationStatus: "unverified",
|
|
1257
|
+
source: "knowledge",
|
|
1258
|
+
citedSourceIndices: Array.isArray(item.sourceIndices) ? item.sourceIndices.map((n) => Number(n)).filter((n) => !isNaN(n)) : [],
|
|
1259
|
+
webGroundedness: clamp01(Number(item.webGroundedness ?? 0))
|
|
1260
|
+
})).filter((c) => c.content.length > 0 && isSubstantiveContent(c.content));
|
|
1261
|
+
} catch (err) {
|
|
1262
|
+
log.warn("parseLLMInsights: unexpected error", { error: String(err) });
|
|
1263
|
+
return [];
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
function extractJsonArray(text) {
|
|
1267
|
+
const start = text.indexOf("[");
|
|
1268
|
+
const end = text.lastIndexOf("]");
|
|
1269
|
+
if (start === -1 || end === -1 || end <= start) return null;
|
|
1270
|
+
return text.slice(start, end + 1);
|
|
1271
|
+
}
|
|
1272
|
+
function repairJsonArray(raw) {
|
|
1273
|
+
let s = raw;
|
|
1274
|
+
{
|
|
1275
|
+
let inStr = false;
|
|
1276
|
+
let esc = false;
|
|
1277
|
+
let normalized = "";
|
|
1278
|
+
for (let i = 0; i < s.length; i++) {
|
|
1279
|
+
const ch = s[i];
|
|
1280
|
+
if (esc) {
|
|
1281
|
+
normalized += ch;
|
|
1282
|
+
esc = false;
|
|
1283
|
+
continue;
|
|
1284
|
+
}
|
|
1285
|
+
if (ch === "\\") {
|
|
1286
|
+
normalized += ch;
|
|
1287
|
+
esc = true;
|
|
1288
|
+
continue;
|
|
1289
|
+
}
|
|
1290
|
+
if (ch === "\"") {
|
|
1291
|
+
inStr = !inStr;
|
|
1292
|
+
normalized += ch;
|
|
1293
|
+
continue;
|
|
1294
|
+
}
|
|
1295
|
+
if (inStr && (ch === "“" || ch === "”")) {
|
|
1296
|
+
normalized += "\"";
|
|
1297
|
+
continue;
|
|
1298
|
+
}
|
|
1299
|
+
normalized += ch;
|
|
1300
|
+
}
|
|
1301
|
+
s = normalized;
|
|
1302
|
+
}
|
|
1303
|
+
s = s.replace(/,\s*([}\]])/g, "$1");
|
|
1304
|
+
let openBrackets = 0;
|
|
1305
|
+
let openBraces = 0;
|
|
1306
|
+
let inString = false;
|
|
1307
|
+
let escape = false;
|
|
1308
|
+
for (const ch of s) {
|
|
1309
|
+
if (escape) {
|
|
1310
|
+
escape = false;
|
|
1311
|
+
continue;
|
|
1312
|
+
}
|
|
1313
|
+
if (ch === "\\") {
|
|
1314
|
+
escape = true;
|
|
1315
|
+
continue;
|
|
1316
|
+
}
|
|
1317
|
+
if (ch === "\"") {
|
|
1318
|
+
inString = !inString;
|
|
1319
|
+
continue;
|
|
1320
|
+
}
|
|
1321
|
+
if (inString) continue;
|
|
1322
|
+
if (ch === "[") openBrackets++;
|
|
1323
|
+
else if (ch === "]") openBrackets--;
|
|
1324
|
+
else if (ch === "{") openBraces++;
|
|
1325
|
+
else if (ch === "}") openBraces--;
|
|
1326
|
+
}
|
|
1327
|
+
while (openBraces > 0) {
|
|
1328
|
+
s += "}";
|
|
1329
|
+
openBraces--;
|
|
1330
|
+
}
|
|
1331
|
+
while (openBrackets > 0) {
|
|
1332
|
+
s += "]";
|
|
1333
|
+
openBrackets--;
|
|
1334
|
+
}
|
|
1335
|
+
return s;
|
|
1336
|
+
}
|
|
1337
|
+
/**
|
|
1338
|
+
* Aggressive repair for unescaped ASCII `"` inside JSON string values.
|
|
1339
|
+
* GLM models frequently produce output like:
|
|
1340
|
+
* [{"content": "他说"你好"吗", ...}]
|
|
1341
|
+
* where the inner `"你好"` breaks JSON.parse.
|
|
1342
|
+
*
|
|
1343
|
+
* Strategy: character-by-character state machine that tracks whether we're
|
|
1344
|
+
* inside a JSON string. When inside a string and encountering an unescaped `"`,
|
|
1345
|
+
* we look ahead to decide if it's a structural quote (end-of-string) or an
|
|
1346
|
+
* inner quote that needs escaping.
|
|
1347
|
+
*/
|
|
1348
|
+
function aggressiveAsciiQuoteRepair(raw) {
|
|
1349
|
+
let result = "";
|
|
1350
|
+
let i = 0;
|
|
1351
|
+
let inStr = false;
|
|
1352
|
+
let esc = false;
|
|
1353
|
+
while (i < raw.length) {
|
|
1354
|
+
const ch = raw[i];
|
|
1355
|
+
if (esc) {
|
|
1356
|
+
result += ch;
|
|
1357
|
+
esc = false;
|
|
1358
|
+
i++;
|
|
1359
|
+
continue;
|
|
1360
|
+
}
|
|
1361
|
+
if (ch === "\\") {
|
|
1362
|
+
result += ch;
|
|
1363
|
+
esc = true;
|
|
1364
|
+
i++;
|
|
1365
|
+
continue;
|
|
1366
|
+
}
|
|
1367
|
+
if (ch === "\"") {
|
|
1368
|
+
if (!inStr) {
|
|
1369
|
+
inStr = true;
|
|
1370
|
+
result += ch;
|
|
1371
|
+
i++;
|
|
1372
|
+
continue;
|
|
1373
|
+
}
|
|
1374
|
+
if (isStructuralQuote(raw, i)) {
|
|
1375
|
+
inStr = false;
|
|
1376
|
+
result += ch;
|
|
1377
|
+
} else result += "\\\"";
|
|
1378
|
+
i++;
|
|
1379
|
+
continue;
|
|
1380
|
+
}
|
|
1381
|
+
result += ch;
|
|
1382
|
+
i++;
|
|
1383
|
+
}
|
|
1384
|
+
return result;
|
|
1385
|
+
}
|
|
1386
|
+
/**
|
|
1387
|
+
* Determine if the `"` at position `pos` in `raw` is a structural quote
|
|
1388
|
+
* (i.e., terminates a JSON string value) rather than an inner quote.
|
|
1389
|
+
*
|
|
1390
|
+
* A `"` is structural if the next non-whitespace character is one of:
|
|
1391
|
+
* `,` `}` `]` `:` — indicating the end of a string value in a JSON structure.
|
|
1392
|
+
* Also structural if we're at end-of-string or end-of-input.
|
|
1393
|
+
*/
|
|
1394
|
+
function isStructuralQuote(raw, pos) {
|
|
1395
|
+
for (let j = pos + 1; j < raw.length; j++) {
|
|
1396
|
+
const next = raw[j];
|
|
1397
|
+
if (next === " " || next === " " || next === "\n" || next === "\r") continue;
|
|
1398
|
+
return next === "," || next === "}" || next === "]" || next === ":";
|
|
1399
|
+
}
|
|
1400
|
+
return true;
|
|
1401
|
+
}
|
|
1402
|
+
const GENERIC_INSIGHT_PATTERNS = [
|
|
1403
|
+
/最近出现了?一些值得关注的新方向/,
|
|
1404
|
+
/结合你在这个领域的深度理解/,
|
|
1405
|
+
/可能会影响你的技术决策/,
|
|
1406
|
+
/探索未知领域有助于拓展思维边界/,
|
|
1407
|
+
/挺有意思的/,
|
|
1408
|
+
/值得关注/,
|
|
1409
|
+
/^.{0,10}是一个.{2,10}的方向$/,
|
|
1410
|
+
/被(人)?.*但(换个角度|它其实|它和)/,
|
|
1411
|
+
/你有没有想过/,
|
|
1412
|
+
/最近在关注/,
|
|
1413
|
+
/不得不说/,
|
|
1414
|
+
/其实.*也是$/,
|
|
1415
|
+
/背后.*值得/,
|
|
1416
|
+
/换个角度来看/,
|
|
1417
|
+
/有没有可能/,
|
|
1418
|
+
/有趣的是/,
|
|
1419
|
+
/值得注意的是/,
|
|
1420
|
+
/^关于.{2,6}[,,]/,
|
|
1421
|
+
/^在.{2,8}领域/,
|
|
1422
|
+
/^作为.{2,8}[,,]/,
|
|
1423
|
+
/结合你/
|
|
1424
|
+
];
|
|
1425
|
+
function isSubstantiveContent(content) {
|
|
1426
|
+
const trimmed = content.trim();
|
|
1427
|
+
if (trimmed.length < 10) return false;
|
|
1428
|
+
for (const pattern of GENERIC_INSIGHT_PATTERNS) if (pattern.test(trimmed)) return false;
|
|
1429
|
+
return true;
|
|
1430
|
+
}
|
|
1431
|
+
function clamp01(value) {
|
|
1432
|
+
return Math.max(0, Math.min(1, value));
|
|
1433
|
+
}
|
|
1434
|
+
const PERSONA_WORKSPACE_FILES = [
|
|
1435
|
+
"SOUL.md",
|
|
1436
|
+
"IDENTITY.md",
|
|
1437
|
+
"USER.md"
|
|
1438
|
+
];
|
|
1439
|
+
async function loadWorkspacePersonaContext(workspaceDir) {
|
|
1440
|
+
const dir = workspaceDir ?? path.join(os.homedir(), ".kaijibot", "workspace");
|
|
1441
|
+
const parts = [];
|
|
1442
|
+
for (const filename of PERSONA_WORKSPACE_FILES) try {
|
|
1443
|
+
const trimmed = (await fs.readFile(path.join(dir, filename), "utf-8")).trim();
|
|
1444
|
+
if (trimmed) parts.push(`## ${filename}\n${trimmed}`);
|
|
1445
|
+
} catch {}
|
|
1446
|
+
return parts.join("\n\n");
|
|
1447
|
+
}
|
|
1448
|
+
/**
|
|
1449
|
+
* Resolve SOUL.md content to prepend to insight prompts. Resolution order:
|
|
1450
|
+
* 1. Configured soul preset (e.g. `soul.preset: "intj"`) — honours per-agent,
|
|
1451
|
+
* then default, then top-level config.
|
|
1452
|
+
* 2. Workspace SOUL.md at the agent's workspace dir.
|
|
1453
|
+
* 3. `undefined` (prompt stays backward compatible).
|
|
1454
|
+
*/
|
|
1455
|
+
async function loadSoulContentForInsight(params) {
|
|
1456
|
+
const { config, agentId, workspaceDir } = params;
|
|
1457
|
+
if (config) try {
|
|
1458
|
+
const preset = resolveSoulPreset(config, agentId);
|
|
1459
|
+
if (preset) return loadSoulPresetContent(preset);
|
|
1460
|
+
} catch (err) {
|
|
1461
|
+
log.warn("loadSoulContentForInsight: soul preset resolution failed", { error: String(err) });
|
|
1462
|
+
}
|
|
1463
|
+
const dir = workspaceDir ?? (config && agentId ? resolveAgentWorkspaceDir(config, agentId) : void 0);
|
|
1464
|
+
if (dir) try {
|
|
1465
|
+
const trimmed = (await fs.readFile(path.join(dir, "SOUL.md"), "utf-8")).trim();
|
|
1466
|
+
if (trimmed) return trimmed;
|
|
1467
|
+
} catch {}
|
|
1468
|
+
}
|
|
1469
|
+
async function loadIdentityContextForInsight(workspaceDir) {
|
|
1470
|
+
const dir = workspaceDir ?? path.join(os.homedir(), ".kaijibot", "workspace");
|
|
1471
|
+
const parts = [];
|
|
1472
|
+
for (const filename of ["IDENTITY.md", "USER.md"]) try {
|
|
1473
|
+
const trimmed = (await fs.readFile(path.join(dir, filename), "utf-8")).trim();
|
|
1474
|
+
if (trimmed) parts.push(`## ${filename.replace(".md", "")}\n${trimmed}`);
|
|
1475
|
+
} catch {}
|
|
1476
|
+
return parts.length > 0 ? parts.join("\n\n") : void 0;
|
|
1477
|
+
}
|
|
1478
|
+
function buildCritiquePrompt(candidate, persona) {
|
|
1479
|
+
const anchorFacts = Object.entries(persona.domains).toSorted(([, a], [, b]) => b.lastMentioned - a.lastMentioned).flatMap(([name, d]) => getFilteredInsights(d).slice(0, 2).map((ki) => `${name}: ${ki}`)).slice(0, 6);
|
|
1480
|
+
const anchorBlock = anchorFacts.length > 0 ? anchorFacts.map((f, i) => `${i + 1}. ${f}`).join("\n") : "(not yet established)";
|
|
1481
|
+
return `You are a strict quality evaluator for AI-generated insights about a user.
|
|
1482
|
+
|
|
1483
|
+
USER: ${persona.identity?.displayName ?? "the user"}
|
|
1484
|
+
EXPERT DOMAINS: ${persona.identity?.expertDomains?.join(", ") ?? "unknown"}
|
|
1485
|
+
INTEREST DOMAINS: ${persona.identity?.interestDomains?.join(", ") ?? "unknown"}
|
|
1486
|
+
|
|
1487
|
+
KNOWN FACTS ABOUT THIS USER:
|
|
1488
|
+
${anchorBlock}
|
|
1489
|
+
|
|
1490
|
+
INSIGHT TO EVALUATE:
|
|
1491
|
+
---
|
|
1492
|
+
${candidate.content}
|
|
1493
|
+
---
|
|
1494
|
+
Target domains: ${candidate.targetDomains.join(", ")}
|
|
1495
|
+
Rationale: ${candidate.rationale}
|
|
1496
|
+
---
|
|
1497
|
+
|
|
1498
|
+
Evaluate this insight on 5 dimensions (each 0.0-1.0):
|
|
1499
|
+
|
|
1500
|
+
1. SPECIFICITY: Does the insight reference concrete, real details about THIS user's work/interests? Casual language is fine — what matters is whether it's grounded in specifics, not whether it sounds formal.
|
|
1501
|
+
2. PERSONA RELEVANCE: Does it reference known facts about THIS user? Or generic advice anyone could receive?
|
|
1502
|
+
3. ACTIONABILITY: Does the insight give the user something worth thinking about or acting on? This includes questions, provocations, and observations — not just direct action items.
|
|
1503
|
+
4. SURPRISE: Is this genuinely new information the user likely doesn't know? Or obvious/common knowledge?
|
|
1504
|
+
5. VOICE MATCH: Does it sound like it comes from a specific personality with a point of view? Or is it stiff/formal/generic-system-notification-like? Diverse tones (provocative, questioning, playful, contemplative) should score HIGH if they match the agent's personality, not low.
|
|
1505
|
+
|
|
1506
|
+
Also provide an overallScore (0.0-1.0), a textual critique, and specific improvement suggestions.
|
|
1507
|
+
|
|
1508
|
+
Respond with ONLY a JSON object (no markdown, no code fences):
|
|
1509
|
+
{
|
|
1510
|
+
"specificity": 0.0-1.0,
|
|
1511
|
+
"personaRelevance": 0.0-1.0,
|
|
1512
|
+
"actionability": 0.0-1.0,
|
|
1513
|
+
"surprise": 0.0-1.0,
|
|
1514
|
+
"voiceMatch": 0.0-1.0,
|
|
1515
|
+
"overallScore": 0.0-1.0,
|
|
1516
|
+
"critique": "textual feedback explaining the scores",
|
|
1517
|
+
"improvementSuggestions": ["specific suggestion 1", "specific suggestion 2"]
|
|
1518
|
+
}`;
|
|
1519
|
+
}
|
|
1520
|
+
function buildRefinePrompt(originalPrompt, candidate, critique, persona) {
|
|
1521
|
+
const suggestions = critique.improvementSuggestions.map((s, i) => `${i + 1}. ${s}`).join("\n");
|
|
1522
|
+
return `${buildVoiceSection(persona)}
|
|
1523
|
+
|
|
1524
|
+
ORIGINAL GENERATION PROMPT:
|
|
1525
|
+
---
|
|
1526
|
+
${originalPrompt}
|
|
1527
|
+
---
|
|
1528
|
+
|
|
1529
|
+
ORIGINAL INSIGHT:
|
|
1530
|
+
---
|
|
1531
|
+
${candidate.content}
|
|
1532
|
+
---
|
|
1533
|
+
|
|
1534
|
+
CRITIQUE (overall score: ${critique.overallScore.toFixed(2)}/1.0):
|
|
1535
|
+
${critique.critique}
|
|
1536
|
+
|
|
1537
|
+
IMPROVEMENT SUGGESTIONS:
|
|
1538
|
+
${suggestions}
|
|
1539
|
+
|
|
1540
|
+
Generate a REVISED insight that addresses these specific weaknesses. Keep the strengths, fix the problems. The revised insight should feel like it could ONLY be about THIS specific user.
|
|
1541
|
+
|
|
1542
|
+
Constraints:
|
|
1543
|
+
- 1-3 sentences, Chinese
|
|
1544
|
+
- Forbidden phrases: "值得关注", "挺有意思", "不得不说", "你有没有想过", "最近在关注", "有趣的是", "值得注意的是"
|
|
1545
|
+
- Start with a concrete fact, observation, or judgment — never with "关于", "在...领域", "结合你", "作为"
|
|
1546
|
+
- Questions, lists, and varied sentence structures are ALLOWED if they serve the insight
|
|
1547
|
+
|
|
1548
|
+
Respond with ONLY a JSON array (no markdown, no code fences):
|
|
1549
|
+
[
|
|
1550
|
+
{
|
|
1551
|
+
"content": "Your revised insight in your own voice, in Chinese",
|
|
1552
|
+
"rationale": "Why this revision is better",
|
|
1553
|
+
"targetDomains": ${JSON.stringify(candidate.targetDomains)},
|
|
1554
|
+
"sourceDomains": ${JSON.stringify(candidate.sourceDomains)},
|
|
1555
|
+
"relevanceScore": 0.8,
|
|
1556
|
+
"surpriseScore": 0.7
|
|
1557
|
+
}
|
|
1558
|
+
]`;
|
|
1559
|
+
}
|
|
1560
|
+
async function critiqueInsightWithLLM(candidate, persona, config, deps, options) {
|
|
1561
|
+
try {
|
|
1562
|
+
const prompt = buildCritiquePrompt(candidate, persona);
|
|
1563
|
+
const modelRef = options?.modelRef ?? config.cognitive?.persona?.extractionModel;
|
|
1564
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
1565
|
+
if ("error" in prepared) {
|
|
1566
|
+
log.warn("critiqueInsightWithLLM: model preparation failed", { error: prepared.error });
|
|
1567
|
+
return null;
|
|
1568
|
+
}
|
|
1569
|
+
const text = (await deps.complete(prepared.model, { messages: [{
|
|
1570
|
+
role: "user",
|
|
1571
|
+
content: prompt,
|
|
1572
|
+
timestamp: Date.now()
|
|
1573
|
+
}] }, {
|
|
1574
|
+
apiKey: prepared.auth.apiKey,
|
|
1575
|
+
maxTokens: options?.maxTokens ?? 4096,
|
|
1576
|
+
temperature: .3,
|
|
1577
|
+
signal: AbortSignal.timeout(options?.timeout ?? 8e3)
|
|
1578
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
1579
|
+
if (!text) return null;
|
|
1580
|
+
const objStart = text.indexOf("{");
|
|
1581
|
+
const objEnd = text.lastIndexOf("}");
|
|
1582
|
+
if (objStart === -1 || objEnd === -1 || objEnd <= objStart) return null;
|
|
1583
|
+
const parsed = JSON.parse(text.slice(objStart, objEnd + 1));
|
|
1584
|
+
for (const field of [
|
|
1585
|
+
"specificity",
|
|
1586
|
+
"personaRelevance",
|
|
1587
|
+
"actionability",
|
|
1588
|
+
"surprise",
|
|
1589
|
+
"voiceMatch",
|
|
1590
|
+
"overallScore",
|
|
1591
|
+
"critique",
|
|
1592
|
+
"improvementSuggestions"
|
|
1593
|
+
]) if (!(field in parsed)) return null;
|
|
1594
|
+
const improvementSuggestions = parsed.improvementSuggestions;
|
|
1595
|
+
if (!Array.isArray(improvementSuggestions)) return null;
|
|
1596
|
+
return {
|
|
1597
|
+
specificity: clamp01(Number(parsed.specificity) || 0),
|
|
1598
|
+
personaRelevance: clamp01(Number(parsed.personaRelevance) || 0),
|
|
1599
|
+
actionability: clamp01(Number(parsed.actionability) || 0),
|
|
1600
|
+
surprise: clamp01(Number(parsed.surprise) || 0),
|
|
1601
|
+
voiceMatch: clamp01(Number(parsed.voiceMatch) || 0),
|
|
1602
|
+
overallScore: clamp01(Number(parsed.overallScore) || 0),
|
|
1603
|
+
critique: String(parsed.critique ?? ""),
|
|
1604
|
+
improvementSuggestions: improvementSuggestions.map(String)
|
|
1605
|
+
};
|
|
1606
|
+
} catch (err) {
|
|
1607
|
+
log.warn("critiqueInsightWithLLM: failed", { error: String(err) });
|
|
1608
|
+
return null;
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
async function refineInsightWithLLM(originalPrompt, candidate, critique, persona, config, deps, options) {
|
|
1612
|
+
try {
|
|
1613
|
+
const prompt = buildRefinePrompt(originalPrompt, candidate, critique, persona);
|
|
1614
|
+
const modelRef = options?.modelRef ?? config.cognitive?.persona?.extractionModel;
|
|
1615
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
1616
|
+
if ("error" in prepared) {
|
|
1617
|
+
log.warn("refineInsightWithLLM: model preparation failed", { error: prepared.error });
|
|
1618
|
+
return null;
|
|
1619
|
+
}
|
|
1620
|
+
const text = (await deps.complete(prepared.model, { messages: [{
|
|
1621
|
+
role: "user",
|
|
1622
|
+
content: prompt,
|
|
1623
|
+
timestamp: Date.now()
|
|
1624
|
+
}] }, {
|
|
1625
|
+
apiKey: prepared.auth.apiKey,
|
|
1626
|
+
maxTokens: options?.maxTokens ?? 4096,
|
|
1627
|
+
temperature: .85,
|
|
1628
|
+
signal: AbortSignal.timeout(options?.timeout ?? 8e3)
|
|
1629
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
1630
|
+
if (!text) return null;
|
|
1631
|
+
const candidates = parseLLMInsights(text, 1);
|
|
1632
|
+
if (candidates.length === 0) return null;
|
|
1633
|
+
return {
|
|
1634
|
+
...candidates[0],
|
|
1635
|
+
id: candidate.id,
|
|
1636
|
+
targetDomains: candidate.targetDomains,
|
|
1637
|
+
sources: candidate.sources,
|
|
1638
|
+
promptVariant: candidate.promptVariant
|
|
1639
|
+
};
|
|
1640
|
+
} catch (err) {
|
|
1641
|
+
log.warn("refineInsightWithLLM: failed", { error: String(err) });
|
|
1642
|
+
return null;
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
function buildVerificationPrompt(candidate, persona) {
|
|
1646
|
+
const anchorFacts = Object.entries(persona.domains).toSorted(([, a], [, b]) => b.lastMentioned - a.lastMentioned).flatMap(([name, d]) => getFilteredInsights(d).slice(0, 2).map((ki) => `${name}: ${ki}`)).slice(0, 6);
|
|
1647
|
+
const anchorBlock = anchorFacts.length > 0 ? anchorFacts.map((f, i) => `${i + 1}. ${f}`).join("\n") : "(not yet established)";
|
|
1648
|
+
const sourceBlock = candidate.sources.length > 0 ? candidate.sources.map((s, i) => `${i + 1}. [${s.title}](${s.url}) (credibility: ${s.credibility})`).join("\n") : "(no sources)";
|
|
1649
|
+
return `You are a quality gate judge for AI-generated proactive insights.
|
|
1650
|
+
|
|
1651
|
+
USER: ${persona.identity?.displayName ?? "the user"}
|
|
1652
|
+
EXPERT DOMAINS: ${persona.identity?.expertDomains?.join(", ") ?? "unknown"}
|
|
1653
|
+
INTEREST DOMAINS: ${persona.identity?.interestDomains?.join(", ") ?? "unknown"}
|
|
1654
|
+
|
|
1655
|
+
KNOWN FACTS:
|
|
1656
|
+
${anchorBlock}
|
|
1657
|
+
|
|
1658
|
+
INSIGHT TO VERIFY:
|
|
1659
|
+
---
|
|
1660
|
+
${candidate.content}
|
|
1661
|
+
---
|
|
1662
|
+
Target domains: ${candidate.targetDomains.join(", ")}
|
|
1663
|
+
Rationale: ${candidate.rationale}
|
|
1664
|
+
|
|
1665
|
+
SOURCES:
|
|
1666
|
+
${sourceBlock}
|
|
1667
|
+
---
|
|
1668
|
+
|
|
1669
|
+
Evaluate: Is this insight worth delivering to the user?
|
|
1670
|
+
|
|
1671
|
+
Score each dimension 0.0-1.0:
|
|
1672
|
+
- sourceGroundingScore: How well does the insight content actually reflect what the sources say? (0 if no sources claimed, 1 if perfectly grounded)
|
|
1673
|
+
- personalizationScore: Does the insight reference THIS user's specific facts, interests, or knowledge? (0 = generic, 1 = deeply personalized)
|
|
1674
|
+
- sourceRelevanceScore: Are the cited sources actually relevant to the insight's claim? (0 = irrelevant, 1 = directly supports)
|
|
1675
|
+
|
|
1676
|
+
CRITICAL CHECKS:
|
|
1677
|
+
- isNewsSummary: Is this insight just summarizing a news article WITHOUT connecting it to the user? If true → REJECT immediately.
|
|
1678
|
+
- The insight must connect external information to the USER's specific context, not just report facts.
|
|
1679
|
+
|
|
1680
|
+
Criteria for each status:
|
|
1681
|
+
- "verified": High quality — specific, relevant to THIS user, sources are relevant and grounded, NOT a news summary
|
|
1682
|
+
- "partial": Decent quality but missing some elements — still acceptable for delivery
|
|
1683
|
+
- "unverified": Generic, vague, not relevant enough to this specific user, OR just a news summary without personalization
|
|
1684
|
+
- "contradicted": Contains factual errors or contradicts known information about the user
|
|
1685
|
+
|
|
1686
|
+
Respond with ONLY a JSON object (no markdown, no code fences):
|
|
1687
|
+
{
|
|
1688
|
+
"approved": true/false,
|
|
1689
|
+
"confidence": 0.0-1.0,
|
|
1690
|
+
"status": "verified" | "partial" | "unverified" | "contradicted",
|
|
1691
|
+
"sourceGroundingScore": 0.0-1.0,
|
|
1692
|
+
"personalizationScore": 0.0-1.0,
|
|
1693
|
+
"sourceRelevanceScore": 0.0-1.0,
|
|
1694
|
+
"isNewsSummary": true/false,
|
|
1695
|
+
"notes": "Brief explanation of the verdict"
|
|
1696
|
+
}`;
|
|
1697
|
+
}
|
|
1698
|
+
async function verifyInsightWithLLM(candidate, persona, config, deps, options) {
|
|
1699
|
+
const unverified = {
|
|
1700
|
+
status: "unverified",
|
|
1701
|
+
sources: candidate.sources,
|
|
1702
|
+
confidence: 0,
|
|
1703
|
+
notes: "Verification unavailable"
|
|
1704
|
+
};
|
|
1705
|
+
try {
|
|
1706
|
+
const prompt = buildVerificationPrompt(candidate, persona);
|
|
1707
|
+
const modelRef = options?.modelRef ?? config.cognitive?.persona?.extractionModel;
|
|
1708
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
1709
|
+
if ("error" in prepared) {
|
|
1710
|
+
log.warn("verifyInsightWithLLM: model preparation failed", { error: prepared.error });
|
|
1711
|
+
return unverified;
|
|
1712
|
+
}
|
|
1713
|
+
const text = (await deps.complete(prepared.model, { messages: [{
|
|
1714
|
+
role: "user",
|
|
1715
|
+
content: prompt,
|
|
1716
|
+
timestamp: Date.now()
|
|
1717
|
+
}] }, {
|
|
1718
|
+
apiKey: prepared.auth.apiKey,
|
|
1719
|
+
maxTokens: options?.maxTokens ?? 4096,
|
|
1720
|
+
temperature: .2,
|
|
1721
|
+
signal: AbortSignal.timeout(options?.timeout ?? 8e3)
|
|
1722
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
1723
|
+
if (!text) return unverified;
|
|
1724
|
+
const objStart = text.indexOf("{");
|
|
1725
|
+
const objEnd = text.lastIndexOf("}");
|
|
1726
|
+
if (objStart === -1 || objEnd === -1 || objEnd <= objStart) return unverified;
|
|
1727
|
+
const parsed = JSON.parse(text.slice(objStart, objEnd + 1));
|
|
1728
|
+
const confidence = clamp01(Number(parsed.confidence) || 0);
|
|
1729
|
+
const llmStatus = String(parsed.status ?? "");
|
|
1730
|
+
const isNewsSummary = Boolean(parsed.isNewsSummary);
|
|
1731
|
+
let status;
|
|
1732
|
+
if (isNewsSummary) status = "unverified";
|
|
1733
|
+
else if (llmStatus === "contradicted") status = "contradicted";
|
|
1734
|
+
else if (confidence >= .7) status = "verified";
|
|
1735
|
+
else if (confidence >= .4) status = "partial";
|
|
1736
|
+
else status = "unverified";
|
|
1737
|
+
return {
|
|
1738
|
+
status,
|
|
1739
|
+
sources: candidate.sources,
|
|
1740
|
+
confidence,
|
|
1741
|
+
notes: String(parsed.notes ?? ""),
|
|
1742
|
+
sourceGroundingScore: clamp01(Number(parsed.sourceGroundingScore) || 0),
|
|
1743
|
+
personalizationScore: clamp01(Number(parsed.personalizationScore) || 0),
|
|
1744
|
+
sourceRelevanceScore: clamp01(Number(parsed.sourceRelevanceScore) || 0),
|
|
1745
|
+
isNewsSummary
|
|
1746
|
+
};
|
|
1747
|
+
} catch (err) {
|
|
1748
|
+
log.warn("verifyInsightWithLLM: failed", { error: String(err) });
|
|
1749
|
+
return unverified;
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
function buildFreshnessPrompt(candidate, recentInsightContents) {
|
|
1753
|
+
const MAX_PER_INSIGHT = 120;
|
|
1754
|
+
const shown = recentInsightContents.slice(0, 5);
|
|
1755
|
+
const pastBlock = shown.map((text, i) => `${i + 1}. ${text.length > MAX_PER_INSIGHT ? text.slice(0, MAX_PER_INSIGHT) : text}`).join("\n");
|
|
1756
|
+
return `SYSTEM: You are a semantic novelty evaluator. Your job is to determine if a new insight says something genuinely new compared to past insights.
|
|
1757
|
+
|
|
1758
|
+
NEW INSIGHT:
|
|
1759
|
+
${candidate.content}
|
|
1760
|
+
|
|
1761
|
+
PAST INSIGHTS (last ${shown.length}):
|
|
1762
|
+
${pastBlock}
|
|
1763
|
+
|
|
1764
|
+
Is this new insight semantically equivalent to or a paraphrase of any past insight? Or does it say something genuinely new?
|
|
1765
|
+
|
|
1766
|
+
Respond ONLY with valid JSON:
|
|
1767
|
+
{ "isNovel": boolean, "similarityToClosest": 0-1, "reason": string }
|
|
1768
|
+
|
|
1769
|
+
Criteria:
|
|
1770
|
+
- isNovel = true: the insight covers genuinely different ground, introduces a new angle, or connects ideas in a way not seen in past insights.
|
|
1771
|
+
- isNovel = false: the insight is semantically the same as a past insight even if worded differently. Paraphrases, restatements, and near-duplicates should be marked as not novel.
|
|
1772
|
+
- similarityToClosest: 0 = completely different topic, 1 = essentially the same insight.
|
|
1773
|
+
- reason: one concise sentence explaining your decision.`;
|
|
1774
|
+
}
|
|
1775
|
+
async function checkSemanticNoveltyWithLLM(candidate, recentInsightContents, config, deps, options) {
|
|
1776
|
+
if (recentInsightContents.length < 2) return {
|
|
1777
|
+
isNovel: true,
|
|
1778
|
+
reason: "Insufficient history for comparison"
|
|
1779
|
+
};
|
|
1780
|
+
try {
|
|
1781
|
+
const prompt = buildFreshnessPrompt(candidate, recentInsightContents);
|
|
1782
|
+
const modelRef = options?.modelRef ?? config.cognitive?.persona?.extractionModel;
|
|
1783
|
+
const prepared = await deps.prepareModel(config, modelRef);
|
|
1784
|
+
if ("error" in prepared) {
|
|
1785
|
+
log.warn("checkSemanticNoveltyWithLLM: model preparation failed", { error: prepared.error });
|
|
1786
|
+
return {
|
|
1787
|
+
isNovel: true,
|
|
1788
|
+
reason: "LLM freshness check unavailable"
|
|
1789
|
+
};
|
|
1790
|
+
}
|
|
1791
|
+
const text = (await deps.complete(prepared.model, { messages: [{
|
|
1792
|
+
role: "user",
|
|
1793
|
+
content: prompt,
|
|
1794
|
+
timestamp: Date.now()
|
|
1795
|
+
}] }, {
|
|
1796
|
+
apiKey: prepared.auth.apiKey,
|
|
1797
|
+
maxTokens: options?.maxTokens ?? 4096,
|
|
1798
|
+
temperature: .2,
|
|
1799
|
+
signal: AbortSignal.timeout(options?.timeout ?? 6e3)
|
|
1800
|
+
})).content.filter((block) => block.type === "text").map((block) => block.text).join("").trim();
|
|
1801
|
+
if (!text) return {
|
|
1802
|
+
isNovel: true,
|
|
1803
|
+
reason: "LLM freshness check unavailable"
|
|
1804
|
+
};
|
|
1805
|
+
const objStart = text.indexOf("{");
|
|
1806
|
+
const objEnd = text.lastIndexOf("}");
|
|
1807
|
+
if (objStart === -1 || objEnd === -1 || objEnd <= objStart) return {
|
|
1808
|
+
isNovel: true,
|
|
1809
|
+
reason: "LLM freshness check unavailable"
|
|
1810
|
+
};
|
|
1811
|
+
const parsed = JSON.parse(text.slice(objStart, objEnd + 1));
|
|
1812
|
+
if (typeof parsed.isNovel !== "boolean" || typeof parsed.reason !== "string") return {
|
|
1813
|
+
isNovel: true,
|
|
1814
|
+
reason: "LLM freshness check unavailable"
|
|
1815
|
+
};
|
|
1816
|
+
return {
|
|
1817
|
+
isNovel: parsed.isNovel,
|
|
1818
|
+
reason: parsed.reason
|
|
1819
|
+
};
|
|
1820
|
+
} catch (err) {
|
|
1821
|
+
log.warn("checkSemanticNoveltyWithLLM: failed", { error: String(err) });
|
|
1822
|
+
return {
|
|
1823
|
+
isNovel: true,
|
|
1824
|
+
reason: "LLM freshness check unavailable"
|
|
1825
|
+
};
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
//#endregion
|
|
1829
|
+
export { computeTrigramSimilarity as C, verifyInsightWithLLM as S, isSubstantiveContent as _, buildPatternInsightPrompt as a, loadWorkspacePersonaContext as b, buildSurpriseInsightPrompt as c, checkSemanticNoveltyWithLLM as d, createDefaultInsightDeps as f, getFilteredInsights as g, generateInsightCandidatesLLM as h, buildInsightPrompt as i, buildVerificationPrompt as l, extractKeyTerms as m, GENERIC_INSIGHT_PATTERNS as n, buildRefinePrompt as o, critiqueInsightWithLLM as p, buildCritiquePrompt as r, buildSearchQuery as s, CONTRASTIVE_INSTRUCTION as t, buildVoiceSection as u, loadIdentityContextForInsight as v, isDuplicateBySemanticOverlap as w, refineInsightWithLLM as x, loadSoulContentForInsight as y };
|