@mastra/server 1.67.0 → 1.68.0-alpha.5
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/_types/@internal_core/dist/storage/index.d.ts +3 -3
- package/dist/_types/@internal_core/package.json +1 -0
- package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/routes/index.d.ts +1 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/checks.d.ts +1 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/compat.d.ts +9 -11
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/deep-partial.d.ts +14 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/errors.d.ts +3 -4
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/external.d.ts +5 -2
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/in-out.d.ts +8 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/index.d.ts +1 -2
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/iso.d.ts +2 -17
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/parse.d.ts +17 -4
- package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/schemas.d.ts +68 -19
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/api.d.ts +22 -12
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/checks.d.ts +29 -13
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/compile.d.ts +65 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/core.d.ts +16 -4
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/doc.d.ts +3 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/errors.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/index.d.ts +3 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema-generator.d.ts +2 -2
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema-processors.d.ts +16 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema.d.ts +2 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/memoizer.d.ts +15 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/parse.d.ts +14 -11
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/regexes.d.ts +5 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/schemas.d.ts +123 -34
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/to-json-schema.d.ts +45 -5
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/util.d.ts +79 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/core/versions.d.ts +1 -1
- package/dist/_types/@internal_voice/dist/_types/zod/v4/index.d.cts +2 -2
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/bn.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ckb.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/gu.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/hi.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/index.d.ts +11 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/kn.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ne.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/nn.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/pt-BR.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/sk.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/tg.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/tk.d.ts +4 -0
- package/dist/_types/@internal_voice/dist/routes/index.d.ts +15 -15
- package/dist/_types/@internal_voice/package.json +1 -0
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v4/dist/index.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/dist/provider-compats/anthropic.d.ts +2 -2
- package/dist/_types/@mastra_schema-compat/dist/provider-compats/deepseek.d.ts +2 -2
- package/dist/_types/@mastra_schema-compat/dist/provider-compats/google.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/dist/provider-compats/meta.d.ts +2 -2
- package/dist/_types/@mastra_schema-compat/dist/provider-compats/openai.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/dist/schema.types.d.ts +4 -4
- package/dist/_types/@mastra_schema-compat/dist/standard-schema/standard-schema.d.ts +2 -2
- package/dist/_types/@mastra_schema-compat/dist/standard-schema/standard-schema.types.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/dist/zod-to-json.d.ts +1 -1
- package/dist/_types/@mastra_schema-compat/package.json +1 -0
- package/dist/{a2a-8C4O2dVJ.js → a2a-BS0gTQk3.js} +94 -14
- package/dist/a2a-BS0gTQk3.js.map +1 -0
- package/dist/{a2a-MPoM5lzS.cjs → a2a-CBl-c-lm.cjs} +105 -13
- package/dist/a2a-CBl-c-lm.cjs.map +1 -0
- package/dist/{a2a-DQ8GeDz4.cjs → a2a-Cr-pxMJm.cjs} +151 -47
- package/dist/a2a-Cr-pxMJm.cjs.map +1 -0
- package/dist/{a2a-DUBjstWk.js → a2a-D2AP2MGB.js} +151 -47
- package/dist/a2a-D2AP2MGB.js.map +1 -0
- package/dist/{agent-versions-D99q4Gos.cjs → agent-versions-DisdqzzB.cjs} +2 -2
- package/dist/{agent-versions-D99q4Gos.cjs.map → agent-versions-DisdqzzB.cjs.map} +1 -1
- package/dist/{agent-versions-NGajm4l5.js → agent-versions-f5zi5A-V.js} +2 -2
- package/dist/{agent-versions-NGajm4l5.js.map → agent-versions-f5zi5A-V.js.map} +1 -1
- package/dist/{agents-CZE_MSQE.cjs → agents-B9H0fBkm.cjs} +24 -6
- package/dist/agents-B9H0fBkm.cjs.map +1 -0
- package/dist/{agents-ssoMemNs.js → agents-Bic13NAO.js} +24 -6
- package/dist/agents-Bic13NAO.js.map +1 -0
- package/dist/{api-schema-manifest-CeREx1dB.js → api-schema-manifest-DDpGD3_2.js} +3 -3
- package/dist/{api-schema-manifest-CeREx1dB.js.map → api-schema-manifest-DDpGD3_2.js.map} +1 -1
- package/dist/{api-schema-manifest-DzWP4nLu.cjs → api-schema-manifest-Wh8dZzaC.cjs} +3 -3
- package/dist/{api-schema-manifest-DzWP4nLu.cjs.map → api-schema-manifest-Wh8dZzaC.cjs.map} +1 -1
- package/dist/{background-tasks-kXPoCvgG.js → background-tasks-D7X7M0TU.js} +2 -2
- package/dist/{background-tasks-kXPoCvgG.js.map → background-tasks-D7X7M0TU.js.map} +1 -1
- package/dist/{background-tasks-CFJ0vNgp.cjs → background-tasks-NjqWJcUw.cjs} +2 -2
- package/dist/{background-tasks-CFJ0vNgp.cjs.map → background-tasks-NjqWJcUw.cjs.map} +1 -1
- package/dist/{builder-registry-DI3Ysclf.js → builder-registry-D6MI5ZLX.js} +3 -3
- package/dist/{builder-registry-DI3Ysclf.js.map → builder-registry-D6MI5ZLX.js.map} +1 -1
- package/dist/{builder-registry-r71f11_E.cjs → builder-registry-DYGJZJTi.cjs} +3 -3
- package/dist/{builder-registry-r71f11_E.cjs.map → builder-registry-DYGJZJTi.cjs.map} +1 -1
- package/dist/{channels-CGDo0Prv.cjs → channels-pCkdvG0z.cjs} +2 -2
- package/dist/{channels-CGDo0Prv.cjs.map → channels-pCkdvG0z.cjs.map} +1 -1
- package/dist/{channels-B_K1oJ7S.js → channels-uSO1ySnT.js} +2 -2
- package/dist/{channels-B_K1oJ7S.js.map → channels-uSO1ySnT.js.map} +1 -1
- package/dist/{conversations-DstENx2x.cjs → conversations-DHgZXodJ.cjs} +2 -2
- package/dist/{conversations-DstENx2x.cjs.map → conversations-DHgZXodJ.cjs.map} +1 -1
- package/dist/{conversations-b3vJRHF3.js → conversations-DzzjfNa9.js} +2 -2
- package/dist/{conversations-b3vJRHF3.js.map → conversations-DzzjfNa9.js.map} +1 -1
- package/dist/{dist-BKxbtiJd.cjs → dist-B4HiqHgK.cjs} +874 -192
- package/dist/dist-B4HiqHgK.cjs.map +1 -0
- package/dist/{dist-D6F_HzDS.cjs → dist-BAojQuHp.cjs} +4 -4
- package/dist/{dist-D6F_HzDS.cjs.map → dist-BAojQuHp.cjs.map} +1 -1
- package/dist/{dist-k6UeNFHu.js → dist-BMjWLpRz.js} +3 -3
- package/dist/{dist-k6UeNFHu.js.map → dist-BMjWLpRz.js.map} +1 -1
- package/dist/{dist-C76EmJsT.cjs → dist-BNvS3nzI.cjs} +3 -3
- package/dist/{dist-C76EmJsT.cjs.map → dist-BNvS3nzI.cjs.map} +1 -1
- package/dist/{dist-C9yKk16g.cjs → dist-BoTiXJuB.cjs} +3 -3
- package/dist/{dist-C9yKk16g.cjs.map → dist-BoTiXJuB.cjs.map} +1 -1
- package/dist/{dist-Da8AufS5.js → dist-ByqJiZWY.js} +4 -4
- package/dist/{dist-Da8AufS5.js.map → dist-ByqJiZWY.js.map} +1 -1
- package/dist/{dist-Wjq6PT76.js → dist-C0MIGUJb.js} +3 -3
- package/dist/{dist-Wjq6PT76.js.map → dist-C0MIGUJb.js.map} +1 -1
- package/dist/{dist-DOpm-tIl.js → dist-C3lMsO1Z.js} +871 -189
- package/dist/dist-C3lMsO1Z.js.map +1 -0
- package/dist/{dist-CLQt62Pi.cjs → dist-CAeHwEQg.cjs} +3 -3
- package/dist/{dist-CLQt62Pi.cjs.map → dist-CAeHwEQg.cjs.map} +1 -1
- package/dist/{dist-DoTDZ7wF.js → dist-Cdj_Yiml.js} +3 -3
- package/dist/{dist-DoTDZ7wF.js.map → dist-Cdj_Yiml.js.map} +1 -1
- package/dist/{dist-Chgswf37.js → dist-DANO75MK.js} +2 -2
- package/dist/{dist-Chgswf37.js.map → dist-DANO75MK.js.map} +1 -1
- package/dist/{dist-XnA2Lowr.js → dist-DazAtske.js} +3 -3
- package/dist/{dist-XnA2Lowr.js.map → dist-DazAtske.js.map} +1 -1
- package/dist/{dist-B6qmZNb0.cjs → dist-Diq8iAfv.cjs} +2 -2
- package/dist/{dist-B6qmZNb0.cjs.map → dist-Diq8iAfv.cjs.map} +1 -1
- package/dist/{dist-DpM-6UBk.cjs → dist-DrjjAvjG.cjs} +3 -3
- package/dist/{dist-DpM-6UBk.cjs.map → dist-DrjjAvjG.cjs.map} +1 -1
- package/dist/docs/SKILL.md +2 -2
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-connections-a2a.md +4 -3
- package/dist/docs/references/docs-server-custom-adapters.md +43 -0
- package/dist/docs/references/reference-observability-tracing-trace-query.md +219 -46
- package/dist/{dynamic-workflows-DeUG3lA2.cjs → dynamic-workflows-BiX72mRA.cjs} +2 -2
- package/dist/{dynamic-workflows-DeUG3lA2.cjs.map → dynamic-workflows-BiX72mRA.cjs.map} +1 -1
- package/dist/{dynamic-workflows-C3DXgmSP.js → dynamic-workflows-CVrxi8y7.js} +2 -2
- package/dist/{dynamic-workflows-C3DXgmSP.js.map → dynamic-workflows-CVrxi8y7.js.map} +1 -1
- package/dist/{editor-builder-BI5yHrbT.js → editor-builder-BRRYGWMU.js} +3 -3
- package/dist/{editor-builder-BI5yHrbT.js.map → editor-builder-BRRYGWMU.js.map} +1 -1
- package/dist/{editor-builder-D6P_hq7c.js → editor-builder-D2gMZkny.js} +2 -2
- package/dist/{editor-builder-D6P_hq7c.js.map → editor-builder-D2gMZkny.js.map} +1 -1
- package/dist/{editor-builder-CKAeON9r.cjs → editor-builder-DZAS7tNU.cjs} +3 -3
- package/dist/{editor-builder-CKAeON9r.cjs.map → editor-builder-DZAS7tNU.cjs.map} +1 -1
- package/dist/{editor-builder-BHf-g7q9.cjs → editor-builder-ITPZxpzq.cjs} +2 -2
- package/dist/{editor-builder-BHf-g7q9.cjs.map → editor-builder-ITPZxpzq.cjs.map} +1 -1
- package/dist/{mcp-BPmrXX9r.cjs → mcp-CdZzch5c.cjs} +11 -3
- package/dist/mcp-CdZzch5c.cjs.map +1 -0
- package/dist/{mcp-B_OMG3Ol.js → mcp-ea7f_n2D.js} +11 -3
- package/dist/mcp-ea7f_n2D.js.map +1 -0
- package/dist/{memory-CDYtqQnE.cjs → memory-BNvFGYtR.cjs} +4 -2
- package/dist/memory-BNvFGYtR.cjs.map +1 -0
- package/dist/{memory-BvKPIpyH.js → memory-CxfzZmoW.js} +4 -2
- package/dist/memory-CxfzZmoW.js.map +1 -0
- package/dist/message-history-CkUYxSaS.cjs +22 -0
- package/dist/message-history-CkUYxSaS.cjs.map +1 -0
- package/dist/message-history-_kbQlA4r.js +11 -0
- package/dist/message-history-_kbQlA4r.js.map +1 -0
- package/dist/{observability-new-endpoints-I2OxQzfY.cjs → observability-new-endpoints-BUC8-mAb.cjs} +230 -6
- package/dist/observability-new-endpoints-BUC8-mAb.cjs.map +1 -0
- package/dist/{observability-new-endpoints-pIq_OWa8.js → observability-new-endpoints-CZyppvEy.js} +214 -8
- package/dist/observability-new-endpoints-CZyppvEy.js.map +1 -0
- package/dist/{route-builder-DupY8fkI.cjs → route-builder-CbCx1upL.cjs} +5 -5
- package/dist/{route-builder-DupY8fkI.cjs.map → route-builder-CbCx1upL.cjs.map} +1 -1
- package/dist/{route-builder-BukcT_Kp.js → route-builder-DDOjv0sM.js} +3 -3
- package/dist/{route-builder-BukcT_Kp.js.map → route-builder-DDOjv0sM.js.map} +1 -1
- package/dist/{routes-PJ3eKHbs.cjs → routes-7alDuT9Q.cjs} +14 -11
- package/dist/routes-7alDuT9Q.cjs.map +1 -0
- package/dist/{routes-BJZtqLVx.js → routes-gccKFI1D.js} +14 -11
- package/dist/routes-gccKFI1D.js.map +1 -0
- package/dist/{schedules-DaEv0Usj.cjs → schedules-ByXP9Fgm.cjs} +15 -9
- package/dist/schedules-ByXP9Fgm.cjs.map +1 -0
- package/dist/{schedules-BzymFGR_.js → schedules-Cy6FhkZX.js} +15 -9
- package/dist/schedules-Cy6FhkZX.js.map +1 -0
- package/dist/{schema-D_ikovK6-DQrOVw5N.cjs → schema-BwlBcZRB-BLwYP0BY.cjs} +6 -6
- package/dist/{schema-D_ikovK6-DQrOVw5N.cjs.map → schema-BwlBcZRB-BLwYP0BY.cjs.map} +1 -1
- package/dist/{schema-D_ikovK6-BzTeMhWf.js → schema-BwlBcZRB-DUSSQ9TD.js} +6 -6
- package/dist/{schema-D_ikovK6-BzTeMhWf.js.map → schema-BwlBcZRB-DUSSQ9TD.js.map} +1 -1
- package/dist/schema-DM4T8wfR.cjs +1 -0
- package/dist/schema-Fa9iirVJ.js +2 -0
- package/dist/{scorer-versions-B6U7batJ.cjs → scorer-versions-C8xZh_o9.cjs} +2 -2
- package/dist/{scorer-versions-B6U7batJ.cjs.map → scorer-versions-C8xZh_o9.cjs.map} +1 -1
- package/dist/{scorer-versions-Dh2iaz4Y.js → scorer-versions-hHzTJTa-.js} +2 -2
- package/dist/{scorer-versions-Dh2iaz4Y.js.map → scorer-versions-hHzTJTa-.js.map} +1 -1
- package/dist/server/a2a/agent-card-signing.d.ts +8 -4
- package/dist/server/a2a/agent-card-signing.d.ts.map +1 -1
- package/dist/server/a2a/agent-card-v1.d.ts +6 -0
- package/dist/server/a2a/agent-card-v1.d.ts.map +1 -0
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.d.ts +205 -61
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +4 -4
- package/dist/server/handlers/agent-builder.d.ts +64 -64
- package/dist/server/handlers/agent-builder.js +4 -4
- package/dist/server/handlers/agent-controller.cjs +4 -5
- package/dist/server/handlers/agent-controller.cjs.map +1 -1
- package/dist/server/handlers/agent-controller.d.ts +145 -145
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +4 -5
- package/dist/server/handlers/agent-controller.js.map +1 -1
- package/dist/server/handlers/agent-versions.cjs +3 -3
- package/dist/server/handlers/agent-versions.d.ts +88 -24
- package/dist/server/handlers/agent-versions.d.ts.map +1 -1
- package/dist/server/handlers/agent-versions.js +3 -3
- package/dist/server/handlers/agents.cjs +7 -7
- package/dist/server/handlers/agents.d.ts +224 -148
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +6 -6
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.d.ts +80 -80
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.d.ts +12 -12
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +1 -1
- package/dist/server/handlers/builder-registry.d.ts +20 -20
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +1 -1
- package/dist/server/handlers/channels.d.ts +16 -16
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +2 -2
- package/dist/server/handlers/conversations.d.ts +16 -16
- package/dist/server/handlers/conversations.js +2 -2
- package/dist/server/handlers/datasets.cjs +3 -3
- package/dist/server/handlers/datasets.cjs.map +1 -1
- package/dist/server/handlers/datasets.d.ts +142 -142
- package/dist/server/handlers/datasets.js +3 -3
- package/dist/server/handlers/datasets.js.map +1 -1
- package/dist/server/handlers/dynamic-workflows.cjs +1 -1
- package/dist/server/handlers/dynamic-workflows.d.ts +76 -76
- package/dist/server/handlers/dynamic-workflows.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.d.ts +12 -12
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/logs.cjs +1 -1
- package/dist/server/handlers/logs.d.ts +12 -12
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +2 -2
- package/dist/server/handlers/mcp-client-versions.d.ts +28 -28
- package/dist/server/handlers/mcp-client-versions.js +2 -2
- package/dist/server/handlers/mcp.cjs +24 -3
- package/dist/server/handlers/mcp.cjs.map +1 -1
- package/dist/server/handlers/mcp.d.ts +55 -42
- package/dist/server/handlers/mcp.d.ts.map +1 -1
- package/dist/server/handlers/mcp.js +24 -3
- package/dist/server/handlers/mcp.js.map +1 -1
- package/dist/server/handlers/memory.cjs +3 -4
- package/dist/server/handlers/memory.cjs.map +1 -1
- package/dist/server/handlers/memory.d.ts +160 -152
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +3 -4
- package/dist/server/handlers/memory.js.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +4 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +974 -518
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +2 -2
- package/dist/server/handlers/observability-shared.cjs +41 -2
- package/dist/server/handlers/observability-shared.cjs.map +1 -1
- package/dist/server/handlers/observability-shared.d.ts +24 -0
- package/dist/server/handlers/observability-shared.d.ts.map +1 -1
- package/dist/server/handlers/observability-shared.js +37 -2
- package/dist/server/handlers/observability-shared.js.map +1 -1
- package/dist/server/handlers/observability.cjs +8 -2
- package/dist/server/handlers/observability.cjs.map +1 -1
- package/dist/server/handlers/observability.d.ts +33 -27
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +6 -3
- package/dist/server/handlers/observability.js.map +1 -1
- package/dist/server/handlers/plans.cjs +2 -2
- package/dist/server/handlers/plans.d.ts +4 -4
- package/dist/server/handlers/plans.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +1 -1
- package/dist/server/handlers/processor-providers.d.ts +8 -8
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +1 -1
- package/dist/server/handlers/processors.d.ts +12 -12
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +2 -2
- package/dist/server/handlers/prompt-block-versions.d.ts +28 -28
- package/dist/server/handlers/prompt-block-versions.js +2 -2
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.d.ts +23 -23
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/schedules.cjs +1 -1
- package/dist/server/handlers/schedules.d.ts +52 -36
- package/dist/server/handlers/schedules.d.ts.map +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +3 -3
- package/dist/server/handlers/scorer-versions.d.ts +28 -28
- package/dist/server/handlers/scorer-versions.js +3 -3
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.d.ts +24 -24
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
- package/dist/server/handlers/stored-agent-favorites.d.ts +8 -8
- package/dist/server/handlers/stored-agent-favorites.js +4 -4
- package/dist/server/handlers/stored-agents.cjs +4 -4
- package/dist/server/handlers/stored-agents.d.ts +92 -28
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +4 -4
- package/dist/server/handlers/stored-mcp-clients.cjs +2 -2
- package/dist/server/handlers/stored-mcp-clients.d.ts +20 -20
- package/dist/server/handlers/stored-mcp-clients.js +2 -2
- package/dist/server/handlers/stored-prompt-blocks.cjs +2 -2
- package/dist/server/handlers/stored-prompt-blocks.d.ts +20 -20
- package/dist/server/handlers/stored-prompt-blocks.js +2 -2
- package/dist/server/handlers/stored-scorers.cjs +3 -3
- package/dist/server/handlers/stored-scorers.d.ts +20 -20
- package/dist/server/handlers/stored-scorers.js +3 -3
- package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
- package/dist/server/handlers/stored-skill-favorites.d.ts +8 -8
- package/dist/server/handlers/stored-skill-favorites.js +3 -3
- package/dist/server/handlers/stored-skills.cjs +3 -3
- package/dist/server/handlers/stored-skills.d.ts +24 -24
- package/dist/server/handlers/stored-skills.js +3 -3
- package/dist/server/handlers/stored-workspaces.cjs +2 -2
- package/dist/server/handlers/stored-workspaces.d.ts +20 -20
- package/dist/server/handlers/stored-workspaces.js +2 -2
- package/dist/server/handlers/system.cjs +7 -5
- package/dist/server/handlers/system.cjs.map +1 -1
- package/dist/server/handlers/system.d.ts +10 -8
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +7 -5
- package/dist/server/handlers/system.js.map +1 -1
- package/dist/server/handlers/tool-providers.cjs +1 -1
- package/dist/server/handlers/tool-providers.d.ts +52 -52
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.d.ts +26 -20
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +5 -5
- package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
- package/dist/server/handlers/validate-agent-instructions.js +1 -1
- package/dist/server/handlers/vector.cjs +1 -1
- package/dist/server/handlers/vector.d.ts +32 -32
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.d.ts +8 -8
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +3 -3
- package/dist/server/handlers/workflows.d.ts +108 -108
- package/dist/server/handlers/workflows.js +3 -3
- package/dist/server/handlers/workspace.cjs +1 -1
- package/dist/server/handlers/workspace.d.ts +160 -160
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +2 -2
- package/dist/server/handlers.js +2 -2
- package/dist/server/schemas/a2a.d.ts +165 -9
- package/dist/server/schemas/a2a.d.ts.map +1 -1
- package/dist/server/schemas/agent-versions.d.ts +40 -0
- package/dist/server/schemas/agent-versions.d.ts.map +1 -1
- package/dist/server/schemas/agents.d.ts +48 -1
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/datasets.d.ts +4 -4
- package/dist/server/schemas/feedback.d.ts +3 -3
- package/dist/server/schemas/index.cjs +11 -11
- package/dist/server/schemas/index.js +11 -11
- package/dist/server/schemas/mcp.d.ts +8 -2
- package/dist/server/schemas/mcp.d.ts.map +1 -1
- package/dist/server/schemas/memory-config.d.ts +4 -0
- package/dist/server/schemas/memory-config.d.ts.map +1 -1
- package/dist/server/schemas/memory.d.ts +32 -28
- package/dist/server/schemas/memory.d.ts.map +1 -1
- package/dist/server/schemas/message-history.d.ts +7 -0
- package/dist/server/schemas/message-history.d.ts.map +1 -0
- package/dist/server/schemas/schedules.d.ts +9 -3
- package/dist/server/schemas/schedules.d.ts.map +1 -1
- package/dist/server/schemas/stored-agents.d.ts +80 -0
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/schemas/system.d.ts +2 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/server-adapter/api-schema-manifest.d.ts +1 -1
- package/dist/server/server-adapter/index.cjs +3 -3
- package/dist/server/server-adapter/index.js +3 -3
- package/dist/server/server-adapter/openapi-utils.d.ts +1 -1
- package/dist/server/server-adapter/routes/a2a.d.ts +193 -59
- package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/agent-builder.d.ts +64 -64
- package/dist/server/server-adapter/routes/channels.d.ts +16 -16
- package/dist/server/server-adapter/routes/conversations.d.ts +19 -19
- package/dist/server/server-adapter/routes/datasets.d.ts +142 -142
- package/dist/server/server-adapter/routes/editor-builder.d.ts +40 -40
- package/dist/server/server-adapter/routes/legacy.d.ts +16 -16
- package/dist/server/server-adapter/routes/logs.d.ts +12 -12
- package/dist/server/server-adapter/routes/mcp.d.ts +54 -42
- package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/memory.d.ts +160 -152
- package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +593 -286
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/processor-providers.d.ts +8 -8
- package/dist/server/server-adapter/routes/processors.d.ts +12 -12
- package/dist/server/server-adapter/routes/responses.d.ts +12 -12
- package/dist/server/server-adapter/routes/scorers.d.ts +24 -24
- package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +48 -48
- package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +48 -48
- package/dist/server/server-adapter/routes/stored-scorers.d.ts +48 -48
- package/dist/server/server-adapter/routes/stored-skills.d.ts +32 -32
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts +20 -20
- package/dist/server/server-adapter/routes/system.d.ts +10 -8
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/tool-providers.d.ts +52 -52
- package/dist/server/server-adapter/routes/tools.d.ts +16 -12
- package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/vectors.d.ts +32 -32
- package/dist/server/server-adapter/routes/workflows.d.ts +100 -100
- package/dist/server/server-adapter/routes/workspace.d.ts +107 -107
- package/dist/{stored-agents-AC0najKd.js → stored-agents-Bp76o0XY.js} +4 -2
- package/dist/stored-agents-Bp76o0XY.js.map +1 -0
- package/dist/{stored-agents-BJMM5f9A.cjs → stored-agents-CN9E52bJ.cjs} +4 -2
- package/dist/stored-agents-CN9E52bJ.cjs.map +1 -0
- package/dist/{stored-scorers-CWxW1_mY.cjs → stored-scorers-DSZRCvM3.cjs} +2 -2
- package/dist/{stored-scorers-CWxW1_mY.cjs.map → stored-scorers-DSZRCvM3.cjs.map} +1 -1
- package/dist/{stored-scorers-B8QVQCCs.js → stored-scorers-vssJQZiO.js} +2 -2
- package/dist/{stored-scorers-B8QVQCCs.js.map → stored-scorers-vssJQZiO.js.map} +1 -1
- package/dist/{system-Cfo5a63a.cjs → system-D85p7-oz.cjs} +3 -2
- package/dist/system-D85p7-oz.cjs.map +1 -0
- package/dist/{system-DT2JfUun.js → system-DMAG21IT.js} +3 -2
- package/dist/system-DMAG21IT.js.map +1 -0
- package/dist/{utils-WcR0QSUB.cjs → utils-DbHFc3hG.cjs} +5 -5
- package/dist/{utils-WcR0QSUB.cjs.map → utils-DbHFc3hG.cjs.map} +1 -1
- package/dist/{utils-Duk4hfT_.js → utils-mRt04Bqa.js} +3 -3
- package/dist/{utils-Duk4hfT_.js.map → utils-mRt04Bqa.js.map} +1 -1
- package/dist/{workflow-builder-D5dPsrog.cjs → workflow-builder-B6FVVlj_.cjs} +4 -4
- package/dist/{workflow-builder-D5dPsrog.cjs.map → workflow-builder-B6FVVlj_.cjs.map} +1 -1
- package/dist/{workflow-builder-Eape8SyU.js → workflow-builder-Cu0uWpzj.js} +4 -4
- package/dist/{workflow-builder-Eape8SyU.js.map → workflow-builder-Cu0uWpzj.js.map} +1 -1
- package/package.json +12 -12
- package/dist/a2a-8C4O2dVJ.js.map +0 -1
- package/dist/a2a-DQ8GeDz4.cjs.map +0 -1
- package/dist/a2a-DUBjstWk.js.map +0 -1
- package/dist/a2a-MPoM5lzS.cjs.map +0 -1
- package/dist/agents-CZE_MSQE.cjs.map +0 -1
- package/dist/agents-ssoMemNs.js.map +0 -1
- package/dist/dist-BKxbtiJd.cjs.map +0 -1
- package/dist/dist-DOpm-tIl.js.map +0 -1
- package/dist/mcp-BPmrXX9r.cjs.map +0 -1
- package/dist/mcp-B_OMG3Ol.js.map +0 -1
- package/dist/memory-BvKPIpyH.js.map +0 -1
- package/dist/memory-CDYtqQnE.cjs.map +0 -1
- package/dist/observability-new-endpoints-I2OxQzfY.cjs.map +0 -1
- package/dist/observability-new-endpoints-pIq_OWa8.js.map +0 -1
- package/dist/routes-BJZtqLVx.js.map +0 -1
- package/dist/routes-PJ3eKHbs.cjs.map +0 -1
- package/dist/schedules-BzymFGR_.js.map +0 -1
- package/dist/schedules-DaEv0Usj.cjs.map +0 -1
- package/dist/schema-BF_cZG0Y.js +0 -2
- package/dist/schema-C7CvwM1d.cjs +0 -1
- package/dist/stored-agents-AC0najKd.js.map +0 -1
- package/dist/stored-agents-BJMM5f9A.cjs.map +0 -1
- package/dist/system-Cfo5a63a.cjs.map +0 -1
- package/dist/system-DT2JfUun.js.map +0 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { o as __toESM$1, t as __commonJSMin$1 } from "./rolldown-runtime-maW3aOIk.js";
|
|
2
|
-
import { n as standardSchemaToJSONSchema, r as toStandardSchema$1, t as isStandardSchemaWithJSON$1 } from "./schema-
|
|
3
|
-
import "./schema-
|
|
2
|
+
import { n as standardSchemaToJSONSchema, r as toStandardSchema$1, t as isStandardSchemaWithJSON$1 } from "./schema-BwlBcZRB-DUSSQ9TD.js";
|
|
3
|
+
import "./schema-Fa9iirVJ.js";
|
|
4
4
|
import { t as require_sync } from "./sync-BG15Yae1.js";
|
|
5
|
-
import { openai } from "./dist-
|
|
5
|
+
import { openai } from "./dist-Cdj_Yiml.js";
|
|
6
6
|
import { createRequire } from "module";
|
|
7
7
|
import * as z4 from "zod/v4";
|
|
8
8
|
import { z } from "zod/v4";
|
|
9
9
|
import { isStandardSchemaWithJSON, toStandardSchema } from "@mastra/core/schema";
|
|
10
10
|
import { ZodFirstPartyTypeKind } from "zod/v3";
|
|
11
11
|
import { z as z$2 } from "zod";
|
|
12
|
-
import { MastraMemory, getThreadOMMetadata, parseMemoryRequestContext, setThreadOMMetadata } from "@mastra/core/memory";
|
|
12
|
+
import { MastraMemory, getMemoryTokenBoundary, getThreadOMMetadata, isAfterMemoryTokenBoundary, isThreadTitlePinned, loadMessageHistory, normalizeMessageHistoryConfig, parseMemoryRequestContext, setThreadOMMetadata } from "@mastra/core/memory";
|
|
13
13
|
import { Agent, MessageList, isSupportedLanguageModel, tryGenerateWithJsonFallback, tryStreamWithJsonFallback } from "@mastra/core/agent";
|
|
14
14
|
import { ErrorCategory, ErrorDomain, MastraError } from "@mastra/core/error";
|
|
15
|
-
import { ModelRouterLanguageModel, modelSupportsAttachments, resolveModelConfig } from "@mastra/core/llm";
|
|
15
|
+
import { ModelRouterLanguageModel, modelSupportsAttachments, modelSupportsTemperature, resolveModelConfig } from "@mastra/core/llm";
|
|
16
16
|
import { createTool } from "@mastra/core/tools";
|
|
17
17
|
import { inspect, promisify } from "util";
|
|
18
18
|
import crypto$1, { createHash, randomBytes, randomUUID } from "crypto";
|
|
@@ -21,7 +21,7 @@ import { generateEmptyFromSchema } from "@mastra/core/utils";
|
|
|
21
21
|
import { InMemoryStore, MAX_KNOWLEDGE_NODE_DESCRIPTION_LENGTH, assertKnowledgeScopeWithinCeiling, canonicalizeKnowledgeScope, createKnowledgeNodeCursor, expandKnowledgeScope, isKnowledgeScopeVisible, knowledgeScopeKey } from "@mastra/core/storage";
|
|
22
22
|
import { coreFeatures } from "@mastra/core/features";
|
|
23
23
|
import { EntityType, SpanType, createObservabilityContext, getOrCreateSpan } from "@mastra/core/observability";
|
|
24
|
-
import { MessageHistory } from "@mastra/core/processors";
|
|
24
|
+
import { MessageHistory, TokenLimiterProcessor } from "@mastra/core/processors";
|
|
25
25
|
import { createStep, createWorkflow } from "@mastra/core/workflows";
|
|
26
26
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
27
27
|
import { tmpdir } from "os";
|
|
@@ -4028,62 +4028,6 @@ async function e() {
|
|
|
4028
4028
|
}((await WebAssembly.instantiate(t)).instance);
|
|
4029
4029
|
}
|
|
4030
4030
|
//#endregion
|
|
4031
|
-
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/tokenx/1.3.0/09093cdaeebfe25c39ba9052d6277b45fc99abf5e14e859f60f338f5c5160afd/node_modules/tokenx/dist/index.mjs
|
|
4032
|
-
const PATTERNS = {
|
|
4033
|
-
whitespace: /^\s+$/,
|
|
4034
|
-
cjk: /[\u4E00-\u9FFF\u3400-\u4DBF\u3000-\u303F\uFF00-\uFFEF\u30A0-\u30FF\u2E80-\u2EFF\u31C0-\u31EF\u3200-\u32FF\u3300-\u33FF\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uD7B0-\uD7FF]/,
|
|
4035
|
-
numeric: /^\d+(?:[.,]\d+)*$/,
|
|
4036
|
-
punctuation: /[.,!?;(){}[\]<>:/\\|@#$%^&*+=`~_-]/,
|
|
4037
|
-
alphanumeric: /^[a-zA-Z0-9\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]+$/
|
|
4038
|
-
};
|
|
4039
|
-
const TOKEN_SPLIT_PATTERN = /* @__PURE__ */ new RegExp(`(\\s+|${PATTERNS.punctuation.source}+)`);
|
|
4040
|
-
const DEFAULT_CHARS_PER_TOKEN = 6;
|
|
4041
|
-
const SHORT_TOKEN_THRESHOLD = 3;
|
|
4042
|
-
const DEFAULT_LANGUAGE_CONFIGS = [
|
|
4043
|
-
{
|
|
4044
|
-
pattern: /[äöüßẞ]/i,
|
|
4045
|
-
averageCharsPerToken: 3
|
|
4046
|
-
},
|
|
4047
|
-
{
|
|
4048
|
-
pattern: /[éèêëàâîïôûùüÿçœæáíóúñ]/i,
|
|
4049
|
-
averageCharsPerToken: 3
|
|
4050
|
-
},
|
|
4051
|
-
{
|
|
4052
|
-
pattern: /[ąćęłńóśźżěščřžýůúďťň]/i,
|
|
4053
|
-
averageCharsPerToken: 3.5
|
|
4054
|
-
}
|
|
4055
|
-
];
|
|
4056
|
-
/**
|
|
4057
|
-
* Estimates the number of tokens in a text string using heuristic rules.
|
|
4058
|
-
*/
|
|
4059
|
-
function estimateTokenCount(text, options = {}) {
|
|
4060
|
-
if (!text) return 0;
|
|
4061
|
-
const { defaultCharsPerToken = DEFAULT_CHARS_PER_TOKEN, languageConfigs = DEFAULT_LANGUAGE_CONFIGS } = options;
|
|
4062
|
-
const segments = text.split(TOKEN_SPLIT_PATTERN).filter(Boolean);
|
|
4063
|
-
let tokenCount = 0;
|
|
4064
|
-
for (const segment of segments) tokenCount += estimateSegmentTokens(segment, languageConfigs, defaultCharsPerToken);
|
|
4065
|
-
return tokenCount;
|
|
4066
|
-
}
|
|
4067
|
-
function estimateSegmentTokens(segment, languageConfigs, defaultCharsPerToken) {
|
|
4068
|
-
if (PATTERNS.whitespace.test(segment)) return 0;
|
|
4069
|
-
if (PATTERNS.cjk.test(segment)) return getCharacterCount(segment);
|
|
4070
|
-
if (PATTERNS.numeric.test(segment)) return 1;
|
|
4071
|
-
if (segment.length <= SHORT_TOKEN_THRESHOLD) return 1;
|
|
4072
|
-
if (PATTERNS.punctuation.test(segment)) return segment.length > 1 ? Math.ceil(segment.length / 2) : 1;
|
|
4073
|
-
if (PATTERNS.alphanumeric.test(segment)) {
|
|
4074
|
-
const charsPerToken$1 = getLanguageSpecificCharsPerToken(segment, languageConfigs) ?? defaultCharsPerToken;
|
|
4075
|
-
return Math.ceil(segment.length / charsPerToken$1);
|
|
4076
|
-
}
|
|
4077
|
-
const charsPerToken = getLanguageSpecificCharsPerToken(segment, languageConfigs) ?? defaultCharsPerToken;
|
|
4078
|
-
return Math.ceil(segment.length / charsPerToken);
|
|
4079
|
-
}
|
|
4080
|
-
function getLanguageSpecificCharsPerToken(segment, languageConfigs) {
|
|
4081
|
-
for (const config of languageConfigs) if (config.pattern.test(segment)) return config.averageCharsPerToken;
|
|
4082
|
-
}
|
|
4083
|
-
function getCharacterCount(text) {
|
|
4084
|
-
return Array.from(text).length;
|
|
4085
|
-
}
|
|
4086
|
-
//#endregion
|
|
4087
4031
|
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.4/6781cdda9837821c30a1f4c4db1d9286b838fe139b78d9658b2471e961b45953/node_modules/diff/libesm/diff/base.js
|
|
4088
4032
|
var import_sync = /* @__PURE__ */ __toESM$1(require_sync(), 1);
|
|
4089
4033
|
var Diff = class {
|
|
@@ -4693,7 +4637,7 @@ function splitLines(text) {
|
|
|
4693
4637
|
return result;
|
|
4694
4638
|
}
|
|
4695
4639
|
//#endregion
|
|
4696
|
-
//#region ../memory/dist/src-
|
|
4640
|
+
//#region ../memory/dist/src-CSVmHSng.js
|
|
4697
4641
|
var __defProp$3 = Object.defineProperty;
|
|
4698
4642
|
var __exportAll = (all, no_symbols) => {
|
|
4699
4643
|
let target = {};
|
|
@@ -22876,6 +22820,410 @@ function safeSlice(str, end) {
|
|
|
22876
22820
|
const safeEnd = code >= 55296 && code <= 56319 ? end - 1 : end;
|
|
22877
22821
|
return str.slice(0, safeEnd);
|
|
22878
22822
|
}
|
|
22823
|
+
const PATTERNS = {
|
|
22824
|
+
whitespace: /^\s+$/,
|
|
22825
|
+
cjk: /[\u4E00-\u9FFF\u3400-\u4DBF\u3000-\u303F\uFF00-\uFFEF\u30A0-\u30FF\u2E80-\u2EFF\u31C0-\u31EF\u3200-\u32FF\u3300-\u33FF\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uD7B0-\uD7FF]/,
|
|
22826
|
+
numeric: /^\d+(?:[.,]\d+)*$/,
|
|
22827
|
+
punctuation: /[.,!?;(){}[\]<>:/\\|@#$%^&*+=`~_-]/,
|
|
22828
|
+
alphanumeric: /^[a-zA-Z0-9\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]+$/
|
|
22829
|
+
};
|
|
22830
|
+
const TOKEN_SPLIT_PATTERN = /* @__PURE__ */ new RegExp(`(\\s+|${PATTERNS.punctuation.source}+)`);
|
|
22831
|
+
const DEFAULT_CHARS_PER_TOKEN = 6;
|
|
22832
|
+
const SHORT_TOKEN_THRESHOLD = 3;
|
|
22833
|
+
const DEFAULT_LANGUAGE_CONFIGS = [
|
|
22834
|
+
{
|
|
22835
|
+
pattern: /[äöüßẞ]/i,
|
|
22836
|
+
averageCharsPerToken: 3
|
|
22837
|
+
},
|
|
22838
|
+
{
|
|
22839
|
+
pattern: /[éèêëàâîïôûùüÿçœæáíóúñ]/i,
|
|
22840
|
+
averageCharsPerToken: 3
|
|
22841
|
+
},
|
|
22842
|
+
{
|
|
22843
|
+
pattern: /[ąćęłńóśźżěščřžýůúďťň]/i,
|
|
22844
|
+
averageCharsPerToken: 3.5
|
|
22845
|
+
}
|
|
22846
|
+
];
|
|
22847
|
+
/**
|
|
22848
|
+
* Estimates the number of tokens in a text string using heuristic rules.
|
|
22849
|
+
*/
|
|
22850
|
+
function estimateTokenCount(text, options = {}) {
|
|
22851
|
+
if (!text) return 0;
|
|
22852
|
+
const { defaultCharsPerToken = DEFAULT_CHARS_PER_TOKEN, languageConfigs = DEFAULT_LANGUAGE_CONFIGS } = options;
|
|
22853
|
+
const segments = text.split(TOKEN_SPLIT_PATTERN).filter(Boolean);
|
|
22854
|
+
let tokenCount = 0;
|
|
22855
|
+
for (const segment of segments) tokenCount += estimateSegmentTokens(segment, languageConfigs, defaultCharsPerToken);
|
|
22856
|
+
return tokenCount;
|
|
22857
|
+
}
|
|
22858
|
+
function estimateSegmentTokens(segment, languageConfigs, defaultCharsPerToken) {
|
|
22859
|
+
if (PATTERNS.whitespace.test(segment)) return 0;
|
|
22860
|
+
if (PATTERNS.cjk.test(segment)) return getCharacterCount(segment);
|
|
22861
|
+
if (PATTERNS.numeric.test(segment)) return 1;
|
|
22862
|
+
if (segment.length <= SHORT_TOKEN_THRESHOLD) return 1;
|
|
22863
|
+
if (PATTERNS.punctuation.test(segment)) return segment.length > 1 ? Math.ceil(segment.length / 2) : 1;
|
|
22864
|
+
if (PATTERNS.alphanumeric.test(segment)) {
|
|
22865
|
+
const charsPerToken$1 = getLanguageSpecificCharsPerToken(segment, languageConfigs) ?? defaultCharsPerToken;
|
|
22866
|
+
return Math.ceil(segment.length / charsPerToken$1);
|
|
22867
|
+
}
|
|
22868
|
+
const charsPerToken = getLanguageSpecificCharsPerToken(segment, languageConfigs) ?? defaultCharsPerToken;
|
|
22869
|
+
return Math.ceil(segment.length / charsPerToken);
|
|
22870
|
+
}
|
|
22871
|
+
function getLanguageSpecificCharsPerToken(segment, languageConfigs) {
|
|
22872
|
+
for (const config of languageConfigs) if (config.pattern.test(segment)) return config.averageCharsPerToken;
|
|
22873
|
+
}
|
|
22874
|
+
function getCharacterCount(text) {
|
|
22875
|
+
return Array.from(text).length;
|
|
22876
|
+
}
|
|
22877
|
+
const DEFAULT_OBSERVER_TOOL_ARGUMENT_MAX_TOKENS = 2e3;
|
|
22878
|
+
const OBSERVER_TOOL_ARGUMENT_INLINE_STRING_MAX_CHARS = 160;
|
|
22879
|
+
const OBSERVER_TOOL_ARGUMENT_MAX_DEPTH = 5;
|
|
22880
|
+
const OBSERVER_TOOL_ARGUMENT_MAX_ENTRIES_PER_CONTAINER = 20;
|
|
22881
|
+
const OBSERVER_TOOL_ARGUMENT_MAX_OUTLINE_ENTRIES = 100;
|
|
22882
|
+
const OBSERVER_TOOL_ARGUMENT_MAX_PATH_CHARS = 160;
|
|
22883
|
+
function isObjectLike$1(value) {
|
|
22884
|
+
return typeof value === "object" && value !== null;
|
|
22885
|
+
}
|
|
22886
|
+
function sanitizeSurrogates(value) {
|
|
22887
|
+
let sanitized = "";
|
|
22888
|
+
for (let index = 0; index < value.length; index++) {
|
|
22889
|
+
const code = value.charCodeAt(index);
|
|
22890
|
+
if (code >= 55296 && code <= 56319) {
|
|
22891
|
+
const next = value.charCodeAt(index + 1);
|
|
22892
|
+
if (next >= 56320 && next <= 57343) {
|
|
22893
|
+
sanitized += value.charAt(index) + value.charAt(index + 1);
|
|
22894
|
+
index++;
|
|
22895
|
+
} else sanitized += "�";
|
|
22896
|
+
continue;
|
|
22897
|
+
}
|
|
22898
|
+
sanitized += code >= 56320 && code <= 57343 ? "�" : value[index];
|
|
22899
|
+
}
|
|
22900
|
+
return sanitized;
|
|
22901
|
+
}
|
|
22902
|
+
function stablePathDigest(value) {
|
|
22903
|
+
let hash = 2166136261;
|
|
22904
|
+
for (let index = 0; index < value.length; index++) hash = Math.imul(hash ^ value.charCodeAt(index), 16777619);
|
|
22905
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
22906
|
+
}
|
|
22907
|
+
function safeTail(value, length) {
|
|
22908
|
+
let start = Math.max(0, value.length - length);
|
|
22909
|
+
if (start > 0) {
|
|
22910
|
+
const code = value.charCodeAt(start);
|
|
22911
|
+
if (code >= 56320 && code <= 57343) start++;
|
|
22912
|
+
}
|
|
22913
|
+
return value.slice(start);
|
|
22914
|
+
}
|
|
22915
|
+
function truncatePath(path) {
|
|
22916
|
+
if (path.length <= OBSERVER_TOOL_ARGUMENT_MAX_PATH_CHARS) return path;
|
|
22917
|
+
const headLength = 50;
|
|
22918
|
+
const tailLength = 60;
|
|
22919
|
+
const omitted = path.length - headLength - tailLength;
|
|
22920
|
+
return `${safeSlice(path, headLength)}…[${omitted} chars; ${stablePathDigest(path)}]…${safeTail(path, tailLength)}`;
|
|
22921
|
+
}
|
|
22922
|
+
function formatPath(parent, key, isArray) {
|
|
22923
|
+
if (isArray) return truncatePath(`${parent}[${key}]`);
|
|
22924
|
+
const stringKey = String(key);
|
|
22925
|
+
const segment = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(stringKey) ? stringKey : `[${JSON.stringify(stringKey)}]`;
|
|
22926
|
+
return truncatePath(parent ? `${parent}.${segment}` : segment);
|
|
22927
|
+
}
|
|
22928
|
+
function formatPrimitive(value) {
|
|
22929
|
+
if (typeof value === "string") return JSON.stringify(value);
|
|
22930
|
+
if (typeof value === "bigint") return `<bigint> ${value}`;
|
|
22931
|
+
if (typeof value === "symbol" || typeof value === "function") return JSON.stringify(String(value));
|
|
22932
|
+
if (value === void 0) return "<undefined>";
|
|
22933
|
+
if (typeof value === "number" && Object.is(value, -0)) return "-0";
|
|
22934
|
+
return String(value);
|
|
22935
|
+
}
|
|
22936
|
+
function containerSummary(value) {
|
|
22937
|
+
if (!Array.isArray(value)) return "<object>";
|
|
22938
|
+
try {
|
|
22939
|
+
return `<array, ${value.length} ${value.length === 1 ? "item" : "items"}>`;
|
|
22940
|
+
} catch {
|
|
22941
|
+
return "<array, unknown length>";
|
|
22942
|
+
}
|
|
22943
|
+
}
|
|
22944
|
+
function readEntries(value) {
|
|
22945
|
+
const entries = [];
|
|
22946
|
+
try {
|
|
22947
|
+
if (Array.isArray(value)) {
|
|
22948
|
+
const length = value.length;
|
|
22949
|
+
const visibleLength = Math.min(length, OBSERVER_TOOL_ARGUMENT_MAX_ENTRIES_PER_CONTAINER);
|
|
22950
|
+
for (let index = 0; index < visibleLength; index++) {
|
|
22951
|
+
if (!(index in value)) {
|
|
22952
|
+
entries.push({
|
|
22953
|
+
key: index,
|
|
22954
|
+
unavailable: "hole"
|
|
22955
|
+
});
|
|
22956
|
+
continue;
|
|
22957
|
+
}
|
|
22958
|
+
try {
|
|
22959
|
+
entries.push({
|
|
22960
|
+
key: index,
|
|
22961
|
+
value: value[index]
|
|
22962
|
+
});
|
|
22963
|
+
} catch {
|
|
22964
|
+
entries.push({
|
|
22965
|
+
key: index,
|
|
22966
|
+
unavailable: "unreadable"
|
|
22967
|
+
});
|
|
22968
|
+
}
|
|
22969
|
+
}
|
|
22970
|
+
return {
|
|
22971
|
+
entries,
|
|
22972
|
+
hasMore: length > visibleLength,
|
|
22973
|
+
unavailable: false
|
|
22974
|
+
};
|
|
22975
|
+
}
|
|
22976
|
+
let hasMore = false;
|
|
22977
|
+
for (const key in value) {
|
|
22978
|
+
if (!Object.prototype.hasOwnProperty.call(value, key)) continue;
|
|
22979
|
+
if (entries.length >= OBSERVER_TOOL_ARGUMENT_MAX_ENTRIES_PER_CONTAINER) {
|
|
22980
|
+
hasMore = true;
|
|
22981
|
+
break;
|
|
22982
|
+
}
|
|
22983
|
+
try {
|
|
22984
|
+
entries.push({
|
|
22985
|
+
key,
|
|
22986
|
+
value: value[key]
|
|
22987
|
+
});
|
|
22988
|
+
} catch {
|
|
22989
|
+
entries.push({
|
|
22990
|
+
key,
|
|
22991
|
+
unavailable: "unreadable"
|
|
22992
|
+
});
|
|
22993
|
+
}
|
|
22994
|
+
}
|
|
22995
|
+
return {
|
|
22996
|
+
entries,
|
|
22997
|
+
hasMore,
|
|
22998
|
+
unavailable: false
|
|
22999
|
+
};
|
|
23000
|
+
} catch {
|
|
23001
|
+
return {
|
|
23002
|
+
entries,
|
|
23003
|
+
hasMore: false,
|
|
23004
|
+
unavailable: true
|
|
23005
|
+
};
|
|
23006
|
+
}
|
|
23007
|
+
}
|
|
23008
|
+
function fits(text, limits) {
|
|
23009
|
+
return text.length <= limits.maxCharacters && estimateTokenCount(text) <= limits.maxTokens;
|
|
23010
|
+
}
|
|
23011
|
+
function joinEntries(entries, marker) {
|
|
23012
|
+
const lines = [...entries].sort((a, b) => a.order - b.order).map((entry) => entry.text);
|
|
23013
|
+
if (marker) lines.push(marker);
|
|
23014
|
+
return lines.join("\n");
|
|
23015
|
+
}
|
|
23016
|
+
function selectOutlineEntries(entries, limits) {
|
|
23017
|
+
const all = joinEntries(entries);
|
|
23018
|
+
if (fits(all, limits)) return all;
|
|
23019
|
+
const marker = "... [additional argument fields omitted by size limit]";
|
|
23020
|
+
const selected = [];
|
|
23021
|
+
const candidates = [...entries].sort((a, b) => {
|
|
23022
|
+
if (a.depth !== b.depth) return a.depth - b.depth;
|
|
23023
|
+
return estimateTokenCount(a.text) - estimateTokenCount(b.text) || a.text.length - b.text.length || a.order - b.order;
|
|
23024
|
+
});
|
|
23025
|
+
for (const candidate of candidates) if (fits(joinEntries([...selected, candidate], marker), limits)) selected.push(candidate);
|
|
23026
|
+
const rendered = joinEntries(selected, marker);
|
|
23027
|
+
if (fits(rendered, limits)) return rendered;
|
|
23028
|
+
if (fits(marker, limits)) return marker;
|
|
23029
|
+
return fits("…", limits) ? "…" : "";
|
|
23030
|
+
}
|
|
23031
|
+
function indentPreview(value) {
|
|
23032
|
+
return value.split("\n").map((line) => ` | ${line}`).join("\n");
|
|
23033
|
+
}
|
|
23034
|
+
function formatPreview(path, value, limits, prefix = "") {
|
|
23035
|
+
const sanitizedValue = sanitizeSurrogates(value);
|
|
23036
|
+
const marker = (visible) => {
|
|
23037
|
+
const omitted = sanitizedValue.length - visible.length;
|
|
23038
|
+
return `${path}:\n${indentPreview(visible)}${omitted > 0 ? `\n | ... [${omitted} characters omitted]` : ""}`;
|
|
23039
|
+
};
|
|
23040
|
+
let low = 0;
|
|
23041
|
+
let high = sanitizedValue.length;
|
|
23042
|
+
let best = "";
|
|
23043
|
+
while (low <= high) {
|
|
23044
|
+
const mid = Math.floor((low + high) / 2);
|
|
23045
|
+
const candidate = marker(safeSlice(sanitizedValue, mid));
|
|
23046
|
+
if (fits(prefix ? `${prefix}\n${candidate}` : candidate, limits)) {
|
|
23047
|
+
best = candidate;
|
|
23048
|
+
low = mid + 1;
|
|
23049
|
+
} else high = mid - 1;
|
|
23050
|
+
}
|
|
23051
|
+
return best;
|
|
23052
|
+
}
|
|
23053
|
+
function appendWithinBudget(base, addition, limits) {
|
|
23054
|
+
if (!addition) return;
|
|
23055
|
+
const candidate = base ? `${base}\n${addition}` : addition;
|
|
23056
|
+
return fits(candidate, limits) ? candidate : void 0;
|
|
23057
|
+
}
|
|
23058
|
+
/**
|
|
23059
|
+
* Formats tool arguments for the Observer without allowing a large early value
|
|
23060
|
+
* to hide concise sibling fields. A breadth-first structural outline is selected
|
|
23061
|
+
* before bounded previews of large strings are added.
|
|
23062
|
+
*/
|
|
23063
|
+
function formatToolArgumentsForObserver(value, options) {
|
|
23064
|
+
const limits = {
|
|
23065
|
+
maxTokens: options?.maxTokens ?? DEFAULT_OBSERVER_TOOL_ARGUMENT_MAX_TOKENS,
|
|
23066
|
+
maxCharacters: options?.maxCharacters ?? Number.POSITIVE_INFINITY
|
|
23067
|
+
};
|
|
23068
|
+
if (limits.maxTokens <= 0 || limits.maxCharacters <= 0) return "";
|
|
23069
|
+
if (!isObjectLike$1(value)) {
|
|
23070
|
+
if (typeof value !== "string" || value.length <= OBSERVER_TOOL_ARGUMENT_INLINE_STRING_MAX_CHARS) {
|
|
23071
|
+
const primitive = formatPrimitive(value);
|
|
23072
|
+
return fits(primitive, limits) ? primitive : fits("…", limits) ? "…" : "";
|
|
23073
|
+
}
|
|
23074
|
+
const summary = `<string, ${value.length} characters; preview size-limited>`;
|
|
23075
|
+
const rendered = appendWithinBudget(summary, formatPreview("preview", value, limits, summary), limits);
|
|
23076
|
+
if (rendered) return rendered;
|
|
23077
|
+
if (fits(summary, limits)) return summary;
|
|
23078
|
+
return fits("…", limits) ? "…" : "";
|
|
23079
|
+
}
|
|
23080
|
+
const outline = [];
|
|
23081
|
+
const previews = [];
|
|
23082
|
+
const pending = [{
|
|
23083
|
+
path: "",
|
|
23084
|
+
value,
|
|
23085
|
+
depth: 0,
|
|
23086
|
+
ancestors: /* @__PURE__ */ new Set([value])
|
|
23087
|
+
}];
|
|
23088
|
+
let outlineEntries = 0;
|
|
23089
|
+
let order = 0;
|
|
23090
|
+
let structuralLimitReached = false;
|
|
23091
|
+
while (pending.length > 0 && outlineEntries < OBSERVER_TOOL_ARGUMENT_MAX_OUTLINE_ENTRIES) {
|
|
23092
|
+
const current = pending.shift();
|
|
23093
|
+
const read = readEntries(current.value);
|
|
23094
|
+
if (read.unavailable) {
|
|
23095
|
+
outline.push({
|
|
23096
|
+
text: `${current.path || "arguments"}: [unavailable container]`,
|
|
23097
|
+
depth: current.depth,
|
|
23098
|
+
order: order++
|
|
23099
|
+
});
|
|
23100
|
+
outlineEntries++;
|
|
23101
|
+
continue;
|
|
23102
|
+
}
|
|
23103
|
+
if (read.entries.length === 0 && !read.hasMore) {
|
|
23104
|
+
outline.push({
|
|
23105
|
+
text: `${current.path || "arguments"}: [empty ${Array.isArray(current.value) ? "array" : "object"}]`,
|
|
23106
|
+
depth: current.depth,
|
|
23107
|
+
order: order++
|
|
23108
|
+
});
|
|
23109
|
+
outlineEntries++;
|
|
23110
|
+
continue;
|
|
23111
|
+
}
|
|
23112
|
+
if (read.hasMore) {
|
|
23113
|
+
outline.push({
|
|
23114
|
+
text: `${current.path || (Array.isArray(current.value) ? "items" : "fields")}: ... [additional entries omitted]`,
|
|
23115
|
+
depth: current.depth,
|
|
23116
|
+
order: order++
|
|
23117
|
+
});
|
|
23118
|
+
outlineEntries++;
|
|
23119
|
+
}
|
|
23120
|
+
for (const entry of read.entries) {
|
|
23121
|
+
if (outlineEntries >= OBSERVER_TOOL_ARGUMENT_MAX_OUTLINE_ENTRIES) {
|
|
23122
|
+
structuralLimitReached = true;
|
|
23123
|
+
break;
|
|
23124
|
+
}
|
|
23125
|
+
const path = formatPath(current.path, entry.key, Array.isArray(current.value));
|
|
23126
|
+
outlineEntries++;
|
|
23127
|
+
if (entry.unavailable) {
|
|
23128
|
+
outline.push({
|
|
23129
|
+
text: `${path}: [${entry.unavailable}]`,
|
|
23130
|
+
depth: current.depth,
|
|
23131
|
+
order: order++
|
|
23132
|
+
});
|
|
23133
|
+
continue;
|
|
23134
|
+
}
|
|
23135
|
+
const entryValue = entry.value;
|
|
23136
|
+
if (typeof entryValue === "string" && entryValue.length > OBSERVER_TOOL_ARGUMENT_INLINE_STRING_MAX_CHARS) {
|
|
23137
|
+
outline.push({
|
|
23138
|
+
text: `${path}: <string, ${entryValue.length} characters; preview size-limited>`,
|
|
23139
|
+
depth: current.depth,
|
|
23140
|
+
order: order++
|
|
23141
|
+
});
|
|
23142
|
+
previews.push({
|
|
23143
|
+
path,
|
|
23144
|
+
value: entryValue
|
|
23145
|
+
});
|
|
23146
|
+
continue;
|
|
23147
|
+
}
|
|
23148
|
+
if (!isObjectLike$1(entryValue)) {
|
|
23149
|
+
outline.push({
|
|
23150
|
+
text: `${path}: ${formatPrimitive(entryValue)}`,
|
|
23151
|
+
depth: current.depth,
|
|
23152
|
+
order: order++
|
|
23153
|
+
});
|
|
23154
|
+
continue;
|
|
23155
|
+
}
|
|
23156
|
+
if (current.ancestors.has(entryValue)) {
|
|
23157
|
+
outline.push({
|
|
23158
|
+
text: `${path}: [circular]`,
|
|
23159
|
+
depth: current.depth,
|
|
23160
|
+
order: order++
|
|
23161
|
+
});
|
|
23162
|
+
continue;
|
|
23163
|
+
}
|
|
23164
|
+
const summary = containerSummary(entryValue);
|
|
23165
|
+
if (current.depth >= OBSERVER_TOOL_ARGUMENT_MAX_DEPTH) {
|
|
23166
|
+
outline.push({
|
|
23167
|
+
text: `${path}: ${summary} [max depth reached]`,
|
|
23168
|
+
depth: current.depth,
|
|
23169
|
+
order: order++
|
|
23170
|
+
});
|
|
23171
|
+
continue;
|
|
23172
|
+
}
|
|
23173
|
+
outline.push({
|
|
23174
|
+
text: `${path}: ${summary}`,
|
|
23175
|
+
depth: current.depth,
|
|
23176
|
+
order: order++
|
|
23177
|
+
});
|
|
23178
|
+
pending.push({
|
|
23179
|
+
path,
|
|
23180
|
+
value: entryValue,
|
|
23181
|
+
depth: current.depth + 1,
|
|
23182
|
+
ancestors: /* @__PURE__ */ new Set([...current.ancestors, entryValue])
|
|
23183
|
+
});
|
|
23184
|
+
}
|
|
23185
|
+
}
|
|
23186
|
+
if (pending.length > 0 || structuralLimitReached) outline.push({
|
|
23187
|
+
text: "... [additional nested entries omitted by structure limit]",
|
|
23188
|
+
depth: Number.POSITIVE_INFINITY,
|
|
23189
|
+
order: order++
|
|
23190
|
+
});
|
|
23191
|
+
if (previews.length === 0) return selectOutlineEntries(outline, limits);
|
|
23192
|
+
const previewHeader = "Large string previews (size-limited):";
|
|
23193
|
+
const renderedOutline = selectOutlineEntries(outline, limits);
|
|
23194
|
+
const withPreviewHeader = appendWithinBudget(renderedOutline, previewHeader, limits);
|
|
23195
|
+
if (!withPreviewHeader) return renderedOutline;
|
|
23196
|
+
let rendered = withPreviewHeader;
|
|
23197
|
+
let renderedPreviews = 0;
|
|
23198
|
+
let omittedPreviews = 0;
|
|
23199
|
+
for (let index = 0; index < previews.length; index++) {
|
|
23200
|
+
const remainingCount = previews.length - index;
|
|
23201
|
+
const remainingTokens = Math.max(0, limits.maxTokens - estimateTokenCount(rendered));
|
|
23202
|
+
const remainingCharacters = Math.max(0, limits.maxCharacters - rendered.length - 1);
|
|
23203
|
+
const previewLimits = {
|
|
23204
|
+
maxTokens: estimateTokenCount(rendered) + Math.floor(remainingTokens / remainingCount),
|
|
23205
|
+
maxCharacters: rendered.length + 1 + Math.floor(remainingCharacters / remainingCount)
|
|
23206
|
+
};
|
|
23207
|
+
const preview = formatPreview(previews[index].path, previews[index].value, previewLimits, rendered);
|
|
23208
|
+
if (!preview) {
|
|
23209
|
+
omittedPreviews++;
|
|
23210
|
+
continue;
|
|
23211
|
+
}
|
|
23212
|
+
const withPreview = appendWithinBudget(rendered, preview, limits);
|
|
23213
|
+
if (!withPreview) {
|
|
23214
|
+
omittedPreviews++;
|
|
23215
|
+
continue;
|
|
23216
|
+
}
|
|
23217
|
+
rendered = withPreview;
|
|
23218
|
+
renderedPreviews++;
|
|
23219
|
+
}
|
|
23220
|
+
if (renderedPreviews === 0) return renderedOutline;
|
|
23221
|
+
if (omittedPreviews > 0) {
|
|
23222
|
+
const marker = `... [${omittedPreviews} large string ${omittedPreviews === 1 ? "preview" : "previews"} omitted]`;
|
|
23223
|
+
rendered = appendWithinBudget(rendered, marker, limits) ?? rendered;
|
|
23224
|
+
}
|
|
23225
|
+
return rendered;
|
|
23226
|
+
}
|
|
22879
23227
|
const ENCRYPTED_CONTENT_KEY = "encryptedContent";
|
|
22880
23228
|
const ENCRYPTED_CONTENT_REDACTION_THRESHOLD = 256;
|
|
22881
23229
|
function isObjectLike(value) {
|
|
@@ -22953,7 +23301,7 @@ function truncateStringByTokens(text, maxTokens) {
|
|
|
22953
23301
|
return best;
|
|
22954
23302
|
}
|
|
22955
23303
|
function formatToolResultForObserver(value, options) {
|
|
22956
|
-
return truncateStringByTokens(stringifyToolResult(value), options?.maxTokens ??
|
|
23304
|
+
return truncateStringByTokens(stringifyToolResult(value), options?.maxTokens ?? 5e3);
|
|
22957
23305
|
}
|
|
22958
23306
|
/**
|
|
22959
23307
|
* The core extraction instructions for the Observer.
|
|
@@ -23638,9 +23986,52 @@ function getTemporalGapMarkerText(msg) {
|
|
|
23638
23986
|
if (metadata?.reminderType === "temporal-gap" && typeof metadata.gapText === "string") return metadata.gapText;
|
|
23639
23987
|
if (typeof metadata?.systemReminder === "object" && metadata.systemReminder && "type" in metadata.systemReminder && metadata.systemReminder.type === "temporal-gap" && "gapText" in metadata.systemReminder && typeof metadata.systemReminder.gapText === "string") return metadata.systemReminder.gapText;
|
|
23640
23988
|
}
|
|
23641
|
-
function
|
|
23989
|
+
function isCallLikeToolInvocation(invocation) {
|
|
23990
|
+
return invocation.state === "call" || invocation.state === "partial-call" || invocation.state === "approval-requested" || invocation.state === "approval-responded";
|
|
23991
|
+
}
|
|
23992
|
+
function isTerminalToolInvocation(invocation) {
|
|
23993
|
+
return invocation.state === "result" || invocation.state === "output-error" || invocation.state === "output-denied";
|
|
23994
|
+
}
|
|
23995
|
+
function createObserverToolFormattingState(messages) {
|
|
23996
|
+
const exchanges = /* @__PURE__ */ new Map();
|
|
23997
|
+
const occurrences = /* @__PURE__ */ new Map();
|
|
23998
|
+
let occurrence = 0;
|
|
23999
|
+
for (const message of messages) {
|
|
24000
|
+
if (typeof message.content === "string" || !Array.isArray(message.content?.parts)) continue;
|
|
24001
|
+
for (const part of message.content.parts) {
|
|
24002
|
+
if (part.type !== "tool-invocation") continue;
|
|
24003
|
+
const invocation = part.toolInvocation;
|
|
24004
|
+
occurrences.set(part, occurrence);
|
|
24005
|
+
if (!isCallLikeToolInvocation(invocation) && !isTerminalToolInvocation(invocation)) {
|
|
24006
|
+
occurrence++;
|
|
24007
|
+
continue;
|
|
24008
|
+
}
|
|
24009
|
+
const exchange = exchanges.get(invocation.toolCallId) ?? { firstOccurrence: occurrence };
|
|
24010
|
+
if (isCallLikeToolInvocation(invocation) && (invocation.args !== void 0 || exchange.signature === void 0)) exchange.signature = invocation;
|
|
24011
|
+
if (isTerminalToolInvocation(invocation)) exchange.terminal = {
|
|
24012
|
+
...invocation,
|
|
24013
|
+
occurrence
|
|
24014
|
+
};
|
|
24015
|
+
exchanges.set(invocation.toolCallId, exchange);
|
|
24016
|
+
occurrence++;
|
|
24017
|
+
}
|
|
24018
|
+
}
|
|
24019
|
+
for (const exchange of exchanges.values()) if (exchange.terminal?.args !== void 0) exchange.signature = exchange.terminal;
|
|
24020
|
+
else if (!exchange.signature && exchange.terminal) exchange.signature = exchange.terminal;
|
|
24021
|
+
return {
|
|
24022
|
+
exchanges,
|
|
24023
|
+
occurrences,
|
|
24024
|
+
emittedCalls: /* @__PURE__ */ new Set(),
|
|
24025
|
+
emittedOutcomes: /* @__PURE__ */ new Set()
|
|
24026
|
+
};
|
|
24027
|
+
}
|
|
24028
|
+
function formatObserverToolArguments(args, maxCharacters) {
|
|
24029
|
+
if (args === void 0) return maybeTruncate("[arguments unavailable]", maxCharacters);
|
|
24030
|
+
return formatToolArgumentsForObserver(args, { maxCharacters: maxCharacters || void 0 });
|
|
24031
|
+
}
|
|
24032
|
+
function formatObserverMessage(msg, counter, toolFormatting, options) {
|
|
23642
24033
|
const maxLen = options?.maxPartLength;
|
|
23643
|
-
const maxToolResultTokens = options?.maxToolResultTokens ??
|
|
24034
|
+
const maxToolResultTokens = options?.maxToolResultTokens ?? 5e3;
|
|
23644
24035
|
const attachmentFilter = options?.attachmentFilter;
|
|
23645
24036
|
const role = msg.role.charAt(0).toUpperCase() + msg.role.slice(1);
|
|
23646
24037
|
const attachments = [];
|
|
@@ -23667,14 +24058,31 @@ function formatObserverMessage(msg, counter, options) {
|
|
|
23667
24058
|
}
|
|
23668
24059
|
if (part.type === "tool-invocation") {
|
|
23669
24060
|
const inv = part.toolInvocation;
|
|
24061
|
+
const occurrence = toolFormatting.occurrences.get(part);
|
|
24062
|
+
const exchange = toolFormatting.exchanges.get(inv.toolCallId);
|
|
24063
|
+
if (exchange && occurrence === exchange.firstOccurrence && exchange.signature && !toolFormatting.emittedCalls.has(inv.toolCallId)) {
|
|
24064
|
+
toolFormatting.emittedCalls.add(inv.toolCallId);
|
|
24065
|
+
pushLine(`Tool Call ${exchange.signature.toolName}`, formatObserverToolArguments(exchange.signature.args, maxLen), partCreatedAt);
|
|
24066
|
+
}
|
|
23670
24067
|
if (inv.state === "result") {
|
|
23671
24068
|
const { value: resultForObserver } = resolveToolResultValue(part, inv.result);
|
|
23672
24069
|
const { resultWithoutAttachments, attachments: extractedAttachments } = extractToolResultAttachments(resultForObserver, counter, attachmentFilter);
|
|
23673
24070
|
if (extractedAttachments.length > 0) attachments.push(...extractedAttachments);
|
|
23674
|
-
|
|
24071
|
+
if (exchange?.terminal?.occurrence === occurrence && !toolFormatting.emittedOutcomes.has(inv.toolCallId)) {
|
|
24072
|
+
toolFormatting.emittedOutcomes.add(inv.toolCallId);
|
|
24073
|
+
const hasResult = resultWithoutAttachments !== void 0 && (typeof resultWithoutAttachments !== "string" || resultWithoutAttachments.trim().length > 0);
|
|
24074
|
+
const body = inv.isError ? hasResult ? formatToolResultForObserver(resultWithoutAttachments, { maxTokens: maxToolResultTokens }) : inv.errorText?.trim() ? inv.errorText : "Tool execution failed" : hasResult ? formatToolResultForObserver(resultWithoutAttachments, { maxTokens: maxToolResultTokens }) : "[empty result]";
|
|
24075
|
+
pushLine(`${inv.isError ? "Tool Error" : "Tool Result"} ${inv.toolName}`, maybeTruncate(body, maxLen), partCreatedAt);
|
|
24076
|
+
}
|
|
24077
|
+
return;
|
|
24078
|
+
}
|
|
24079
|
+
if (exchange?.terminal?.occurrence === occurrence && !toolFormatting.emittedOutcomes.has(inv.toolCallId)) {
|
|
24080
|
+
toolFormatting.emittedOutcomes.add(inv.toolCallId);
|
|
24081
|
+
if (inv.state === "output-error") pushLine(`Tool Error ${inv.toolName}`, maybeTruncate(inv.errorText?.trim() ? inv.errorText : "Tool execution failed", maxLen), partCreatedAt);
|
|
24082
|
+
else if (inv.state === "output-denied") pushLine(`Tool Denied ${inv.toolName}`, maybeTruncate(inv.approval?.reason?.trim() ? inv.approval.reason : "Tool call was not approved by the user", maxLen), partCreatedAt);
|
|
23675
24083
|
return;
|
|
23676
24084
|
}
|
|
23677
|
-
pushLine(`Tool Call ${inv.toolName}`,
|
|
24085
|
+
if (!exchange) pushLine(`Tool Call ${inv.toolName}`, formatObserverToolArguments(inv.args, maxLen), partCreatedAt);
|
|
23678
24086
|
return;
|
|
23679
24087
|
}
|
|
23680
24088
|
const partType = part.type;
|
|
@@ -23708,10 +24116,11 @@ function formatMessagesForObserver(messages, options) {
|
|
|
23708
24116
|
nextImageId: 1,
|
|
23709
24117
|
nextFileId: 1
|
|
23710
24118
|
};
|
|
24119
|
+
const toolFormatting = createObserverToolFormattingState(messages);
|
|
23711
24120
|
const sections = [];
|
|
23712
24121
|
let context = {};
|
|
23713
24122
|
for (const message of messages) {
|
|
23714
|
-
const formatted = formatObserverMessage(message, counter, options);
|
|
24123
|
+
const formatted = formatObserverMessage(message, counter, toolFormatting, options);
|
|
23715
24124
|
if (formatted.lines.length === 0) continue;
|
|
23716
24125
|
const rendered = formatObserverLines(formatted.lines, context);
|
|
23717
24126
|
if (!rendered.text) continue;
|
|
@@ -23734,13 +24143,14 @@ function buildObserverHistoryMessage(messages, options) {
|
|
|
23734
24143
|
nextImageId: 1,
|
|
23735
24144
|
nextFileId: 1
|
|
23736
24145
|
};
|
|
24146
|
+
const toolFormatting = createObserverToolFormattingState(messages);
|
|
23737
24147
|
const content = [{
|
|
23738
24148
|
type: "text",
|
|
23739
24149
|
text: "## New Message History to Observe\n\n"
|
|
23740
24150
|
}];
|
|
23741
24151
|
let context = {};
|
|
23742
24152
|
messages.forEach((message) => {
|
|
23743
|
-
const formatted = formatObserverMessage(message, counter, options);
|
|
24153
|
+
const formatted = formatObserverMessage(message, counter, toolFormatting, options);
|
|
23744
24154
|
if (formatted.lines.length === 0 && formatted.attachments.length === 0) return;
|
|
23745
24155
|
context = appendFormattedObserverMessage(content, formatted, context);
|
|
23746
24156
|
});
|
|
@@ -23768,10 +24178,11 @@ function buildMultiThreadObserverHistoryMessage(messagesByThread, threadOrder, o
|
|
|
23768
24178
|
const messages = messagesByThread.get(threadId);
|
|
23769
24179
|
if (!messages || messages.length === 0) return;
|
|
23770
24180
|
const threadContent = [];
|
|
24181
|
+
const toolFormatting = createObserverToolFormattingState(messages);
|
|
23771
24182
|
let context = {};
|
|
23772
24183
|
let hasVisibleContent = false;
|
|
23773
24184
|
messages.forEach((message) => {
|
|
23774
|
-
const formatted = formatObserverMessage(message, counter, options);
|
|
24185
|
+
const formatted = formatObserverMessage(message, counter, toolFormatting, options);
|
|
23775
24186
|
if (formatted.lines.length === 0 && formatted.attachments.length === 0) return;
|
|
23776
24187
|
context = appendFormattedObserverMessage(threadContent, formatted, context);
|
|
23777
24188
|
hasVisibleContent = true;
|
|
@@ -24457,15 +24868,14 @@ var ObserverRunner = class {
|
|
|
24457
24868
|
this.mastra = mastra;
|
|
24458
24869
|
}
|
|
24459
24870
|
createAgent(model, isMultiThread = false, memory, extractors = this.observationConfig.extractors ?? []) {
|
|
24460
|
-
|
|
24871
|
+
return new Agent({
|
|
24461
24872
|
id: isMultiThread ? "multi-thread-observer" : "observational-memory-observer",
|
|
24462
24873
|
name: isMultiThread ? "multi-thread-observer" : "Observer",
|
|
24463
24874
|
instructions: buildObserverSystemPrompt(isMultiThread, this.observationConfig.instruction, this.observationConfig.threadTitle, extractors),
|
|
24464
24875
|
model,
|
|
24465
|
-
...memory ? { memory } : {}
|
|
24876
|
+
...memory ? { memory } : {},
|
|
24877
|
+
...this.mastra ? { mastra: this.mastra } : {}
|
|
24466
24878
|
});
|
|
24467
|
-
if (this.mastra) agent.__registerMastra(this.mastra);
|
|
24468
|
-
return agent;
|
|
24469
24879
|
}
|
|
24470
24880
|
/**
|
|
24471
24881
|
* Extract a router-style model ID (`provider/model`) from a model config.
|
|
@@ -26107,7 +26517,7 @@ var TokenCounter = class TokenCounter {
|
|
|
26107
26517
|
let tokens = 0;
|
|
26108
26518
|
let overheadDelta = 0;
|
|
26109
26519
|
if (invocation.toolName) tokens += this.readOrPersistPartEstimate(part, "tool-call-name", invocation.toolName);
|
|
26110
|
-
if (invocation.args) if (typeof invocation.args === "string") tokens += this.readOrPersistPartEstimate(part, "tool-call-args", invocation.args);
|
|
26520
|
+
if (invocation.args !== void 0) if (typeof invocation.args === "string") tokens += this.readOrPersistPartEstimate(part, "tool-call-args", invocation.args);
|
|
26111
26521
|
else {
|
|
26112
26522
|
const argsJson = JSON.stringify(invocation.args);
|
|
26113
26523
|
tokens += this.readOrPersistPartEstimate(part, "tool-call-args-json", argsJson);
|
|
@@ -26153,8 +26563,11 @@ var TokenCounter = class TokenCounter {
|
|
|
26153
26563
|
}
|
|
26154
26564
|
if (state === "result") {
|
|
26155
26565
|
extraMessageDelta++;
|
|
26566
|
+
const signature = this.countToolCallSignature(part, invocation);
|
|
26567
|
+
tokens += signature.tokens;
|
|
26568
|
+
overheadDelta += signature.overheadDelta;
|
|
26156
26569
|
const { value: resultForCounting, usingStoredModelOutput } = this.resolveToolResultForTokenCounting(part, invocation.result);
|
|
26157
|
-
if (resultForCounting !== void 0) {
|
|
26570
|
+
if (resultForCounting !== void 0 && (typeof resultForCounting !== "string" || resultForCounting.trim().length > 0)) {
|
|
26158
26571
|
const contentTokens = this.countMultimodalToolResultContent(part, resultForCounting);
|
|
26159
26572
|
if (contentTokens !== void 0) tokens += contentTokens;
|
|
26160
26573
|
else {
|
|
@@ -26162,6 +26575,9 @@ var TokenCounter = class TokenCounter {
|
|
|
26162
26575
|
tokens += this.readOrPersistPartEstimate(part, usingStoredModelOutput ? "tool-result-model-output-json" : "tool-result-json", formattedResult);
|
|
26163
26576
|
}
|
|
26164
26577
|
if (typeof resultForCounting !== "string") overheadDelta -= 12;
|
|
26578
|
+
} else {
|
|
26579
|
+
const fallback = invocation.isError ? invocation.errorText?.trim() ? invocation.errorText : "Tool execution failed" : "[empty result]";
|
|
26580
|
+
tokens += this.readOrPersistPartEstimate(part, invocation.isError ? "tool-result-error" : "tool-result-json", fallback);
|
|
26165
26581
|
}
|
|
26166
26582
|
return {
|
|
26167
26583
|
tokens,
|
|
@@ -26171,7 +26587,10 @@ var TokenCounter = class TokenCounter {
|
|
|
26171
26587
|
}
|
|
26172
26588
|
if (state === "output-denied") {
|
|
26173
26589
|
extraMessageDelta++;
|
|
26174
|
-
const
|
|
26590
|
+
const signature = this.countToolCallSignature(part, invocation);
|
|
26591
|
+
tokens += signature.tokens;
|
|
26592
|
+
overheadDelta += signature.overheadDelta;
|
|
26593
|
+
const reason = invocation.approval?.reason?.trim() ? invocation.approval.reason : "Tool call was not approved by the user";
|
|
26175
26594
|
tokens += this.readOrPersistPartEstimate(part, "tool-result-denied", reason);
|
|
26176
26595
|
return {
|
|
26177
26596
|
tokens,
|
|
@@ -26181,7 +26600,10 @@ var TokenCounter = class TokenCounter {
|
|
|
26181
26600
|
}
|
|
26182
26601
|
if (state === "output-error") {
|
|
26183
26602
|
extraMessageDelta++;
|
|
26184
|
-
const
|
|
26603
|
+
const signature = this.countToolCallSignature(part, invocation);
|
|
26604
|
+
tokens += signature.tokens;
|
|
26605
|
+
overheadDelta += signature.overheadDelta;
|
|
26606
|
+
const errorMessage = invocation.errorText?.trim() ? invocation.errorText : "Tool execution failed";
|
|
26185
26607
|
tokens += this.readOrPersistPartEstimate(part, "tool-result-error", errorMessage);
|
|
26186
26608
|
return {
|
|
26187
26609
|
tokens,
|
|
@@ -26208,7 +26630,12 @@ var TokenCounter = class TokenCounter {
|
|
|
26208
26630
|
};
|
|
26209
26631
|
}
|
|
26210
26632
|
/**
|
|
26211
|
-
* Count tokens in a single message
|
|
26633
|
+
* Count tokens in a single message.
|
|
26634
|
+
*
|
|
26635
|
+
* Canonical terminal invocations carry their call signature and outcome in one part. Legacy or
|
|
26636
|
+
* foreign histories may instead repeat the same signature across separate call and result
|
|
26637
|
+
* messages; those signatures are intentionally counted once per message because this API has no
|
|
26638
|
+
* sequence context. The conservative overcount can activate observation earlier, never later.
|
|
26212
26639
|
*/
|
|
26213
26640
|
countMessage(message) {
|
|
26214
26641
|
let payloadTokens = this.countString(message.role);
|
|
@@ -26896,13 +27323,13 @@ function renderFormattedParts(parts, timestamps, options) {
|
|
|
26896
27323
|
tokenOffset: expandedTokens - options.maxTokens
|
|
26897
27324
|
};
|
|
26898
27325
|
}
|
|
26899
|
-
async function recallPart({ memory, threadId, resourceId, cursor, partIndex, charOffset, threadScope, maxTokens = DEFAULT_MAX_RESULT_TOKENS }) {
|
|
27326
|
+
async function recallPart({ memory, threadId, resourceId, cursor, partIndex, charOffset, threadScope, retrievalScope = "thread", maxTokens = DEFAULT_MAX_RESULT_TOKENS }) {
|
|
26900
27327
|
if (!memory || typeof memory.getMemoryStore !== "function") throw new Error("Memory instance is required for recall");
|
|
26901
27328
|
if (!threadId) throw new Error("Thread ID is required for recall");
|
|
26902
27329
|
const resolved = await resolveCursorMessage(memory, cursor, {
|
|
26903
27330
|
resourceId,
|
|
26904
27331
|
threadScope,
|
|
26905
|
-
enforceThreadScope:
|
|
27332
|
+
enforceThreadScope: retrievalScope !== "resource"
|
|
26906
27333
|
});
|
|
26907
27334
|
if ("hint" in resolved) throw new Error(resolved.hint);
|
|
26908
27335
|
const allParts = formatMessageParts(resolved, "high");
|
|
@@ -26913,7 +27340,7 @@ async function recallPart({ memory, threadId, resourceId, cursor, partIndex, cha
|
|
|
26913
27340
|
if (partIndex > Math.max(...allParts.map((p) => p.partIndex))) {
|
|
26914
27341
|
const nextMessage = await getNextVisibleMessage({
|
|
26915
27342
|
memory,
|
|
26916
|
-
threadId,
|
|
27343
|
+
threadId: resolved.threadId ?? threadId,
|
|
26917
27344
|
resourceId,
|
|
26918
27345
|
after: resolved.createdAt
|
|
26919
27346
|
});
|
|
@@ -26952,7 +27379,7 @@ async function recallPart({ memory, threadId, resourceId, cursor, partIndex, cha
|
|
|
26952
27379
|
note
|
|
26953
27380
|
};
|
|
26954
27381
|
}
|
|
26955
|
-
async function recallMessages({ memory, threadId, resourceId, cursor, page = 1, limit = 20, detail = "low", partType, toolName, threadScope, maxTokens = DEFAULT_MAX_RESULT_TOKENS }) {
|
|
27382
|
+
async function recallMessages({ memory, threadId, resourceId, cursor, page = 1, limit = 20, detail = "low", partType, toolName, threadScope, retrievalScope = "thread", maxTokens = DEFAULT_MAX_RESULT_TOKENS }) {
|
|
26956
27383
|
if (!memory) throw new Error("Memory instance is required for recall");
|
|
26957
27384
|
if (!threadId) throw new Error("Thread ID is required for recall");
|
|
26958
27385
|
if (typeof memory.getMemoryStore !== "function") throw new Error("recall requires a Memory instance with storage access");
|
|
@@ -26963,7 +27390,7 @@ async function recallMessages({ memory, threadId, resourceId, cursor, page = 1,
|
|
|
26963
27390
|
const resolved = await resolveCursorMessage(memory, cursor, {
|
|
26964
27391
|
resourceId,
|
|
26965
27392
|
threadScope,
|
|
26966
|
-
enforceThreadScope:
|
|
27393
|
+
enforceThreadScope: retrievalScope === "thread"
|
|
26967
27394
|
});
|
|
26968
27395
|
if ("hint" in resolved) return {
|
|
26969
27396
|
messages: resolved.hint,
|
|
@@ -26980,7 +27407,7 @@ async function recallMessages({ memory, threadId, resourceId, cursor, page = 1,
|
|
|
26980
27407
|
const anchor = resolved;
|
|
26981
27408
|
const crossThreadId = anchor.threadId && anchor.threadId !== threadId ? anchor.threadId : void 0;
|
|
26982
27409
|
if (crossThreadId && threadScope) return {
|
|
26983
|
-
messages: `Cursor does not belong to the active thread. Expected thread "${threadId}" but cursor "${cursor}" belongs to "${anchor.threadId}". Pass threadId="${anchor.threadId}" to browse that thread
|
|
27410
|
+
messages: `Cursor does not belong to the active thread. Expected thread "${threadId}" but cursor "${cursor}" belongs to "${anchor.threadId}". Pass threadId="${anchor.threadId}" to browse that thread.`,
|
|
26984
27411
|
count: 0,
|
|
26985
27412
|
cursor,
|
|
26986
27413
|
page: normalizedPage,
|
|
@@ -27139,7 +27566,8 @@ async function recallThreadFromStart({ memory, threadId, resourceId, page = 1, l
|
|
|
27139
27566
|
};
|
|
27140
27567
|
}
|
|
27141
27568
|
const recallTool = (_memoryConfig, options) => {
|
|
27142
|
-
const
|
|
27569
|
+
const retrievalScope = options?.retrievalScope ?? "thread";
|
|
27570
|
+
const isResourceScope = retrievalScope === "resource";
|
|
27143
27571
|
const searchEnabled = options?.searchEnabled ?? true;
|
|
27144
27572
|
const description = isResourceScope ? `Browse conversation history. Use mode="threads" to list all threads for the current user. Use mode="messages" (default) to browse messages in the current thread or pass threadId to browse another thread in the active resource. When mode="messages" has no cursor or threadId, it defaults to the current thread and says so at the top of the result. If you pass only a cursor, it must belong to the current thread.${searchEnabled ? " Use mode=\"search\" to find messages by content across all threads." : ""}` : `Browse conversation history in the current thread. Use mode="messages" (default) to page through messages near a cursor.${searchEnabled ? " Use mode=\"search\" to find messages by content in this thread." : ""} Use mode="threads" to get the current thread's ID and title.`;
|
|
27145
27573
|
const modeEnum = searchEnabled ? [
|
|
@@ -27350,23 +27778,25 @@ const recallTool = (_memoryConfig, options) => {
|
|
|
27350
27778
|
if (partIndex !== void 0 && partIndex !== null) return recallPart({
|
|
27351
27779
|
memory,
|
|
27352
27780
|
threadId: targetThreadId,
|
|
27353
|
-
resourceId
|
|
27781
|
+
resourceId,
|
|
27354
27782
|
cursor,
|
|
27355
27783
|
partIndex,
|
|
27356
27784
|
charOffset,
|
|
27357
|
-
threadScope
|
|
27785
|
+
threadScope,
|
|
27786
|
+
retrievalScope
|
|
27358
27787
|
});
|
|
27359
27788
|
return recallMessages({
|
|
27360
27789
|
memory,
|
|
27361
27790
|
threadId: targetThreadId,
|
|
27362
|
-
resourceId
|
|
27791
|
+
resourceId,
|
|
27363
27792
|
cursor,
|
|
27364
27793
|
page,
|
|
27365
27794
|
limit,
|
|
27366
27795
|
detail: detail ?? "low",
|
|
27367
27796
|
partType,
|
|
27368
27797
|
toolName,
|
|
27369
|
-
threadScope
|
|
27798
|
+
threadScope,
|
|
27799
|
+
retrievalScope
|
|
27370
27800
|
});
|
|
27371
27801
|
}
|
|
27372
27802
|
});
|
|
@@ -28452,7 +28882,8 @@ function sortThreadsByOldestMessage(messagesByThread) {
|
|
|
28452
28882
|
function stripThreadTags(observations) {
|
|
28453
28883
|
return observations.replace(/<\/?thread\b[^>]{0,1024}>/gi, "").trim();
|
|
28454
28884
|
}
|
|
28455
|
-
const
|
|
28885
|
+
const OBSERVATION_GROUP_OPEN = "<observation-group";
|
|
28886
|
+
const OBSERVATION_GROUP_CLOSE = "</observation-group>";
|
|
28456
28887
|
const ATTRIBUTE_PATTERN = /([\w][\w-]*)="([^"]*)"/g;
|
|
28457
28888
|
const REFLECTION_GROUP_SPLIT_PATTERN = /^##\s+Group\s+/m;
|
|
28458
28889
|
function parseObservationGroupAttributes(attributeString) {
|
|
@@ -28463,6 +28894,81 @@ function parseObservationGroupAttributes(attributeString) {
|
|
|
28463
28894
|
}
|
|
28464
28895
|
return attributes;
|
|
28465
28896
|
}
|
|
28897
|
+
function isLineStart(observations, index) {
|
|
28898
|
+
return index === 0 || observations[index - 1] === "\n";
|
|
28899
|
+
}
|
|
28900
|
+
function scanObservationGroupTags(observations) {
|
|
28901
|
+
const tags = [];
|
|
28902
|
+
const incompleteOpenings = [];
|
|
28903
|
+
let cursor = 0;
|
|
28904
|
+
let closeFloor = 0;
|
|
28905
|
+
while (cursor < observations.length) {
|
|
28906
|
+
const start = observations.indexOf(OBSERVATION_GROUP_OPEN, cursor);
|
|
28907
|
+
if (start === -1) break;
|
|
28908
|
+
const attributesStart = start + 18;
|
|
28909
|
+
if (!/\s/.test(observations[attributesStart] ?? "")) {
|
|
28910
|
+
cursor = attributesStart;
|
|
28911
|
+
continue;
|
|
28912
|
+
}
|
|
28913
|
+
const openEnd = observations.indexOf(">", attributesStart);
|
|
28914
|
+
if (openEnd === -1) break;
|
|
28915
|
+
const closeStart = observations.indexOf(OBSERVATION_GROUP_CLOSE, Math.max(openEnd + 1, closeFloor));
|
|
28916
|
+
if (closeStart === -1) {
|
|
28917
|
+
if (isLineStart(observations, start)) incompleteOpenings.push({
|
|
28918
|
+
start,
|
|
28919
|
+
end: openEnd + 1
|
|
28920
|
+
});
|
|
28921
|
+
closeFloor = observations.length;
|
|
28922
|
+
cursor = openEnd + 1;
|
|
28923
|
+
continue;
|
|
28924
|
+
}
|
|
28925
|
+
const nestedStart = observations.indexOf(OBSERVATION_GROUP_OPEN, openEnd + 1);
|
|
28926
|
+
if (nestedStart !== -1 && nestedStart < closeStart && isLineStart(observations, nestedStart)) {
|
|
28927
|
+
incompleteOpenings.push({
|
|
28928
|
+
start,
|
|
28929
|
+
end: openEnd + 1
|
|
28930
|
+
});
|
|
28931
|
+
closeFloor = closeStart;
|
|
28932
|
+
cursor = nestedStart;
|
|
28933
|
+
continue;
|
|
28934
|
+
}
|
|
28935
|
+
tags.push({
|
|
28936
|
+
start,
|
|
28937
|
+
end: closeStart + 20,
|
|
28938
|
+
attributeString: observations.slice(attributesStart, openEnd),
|
|
28939
|
+
content: observations.slice(openEnd + 1, closeStart)
|
|
28940
|
+
});
|
|
28941
|
+
closeFloor = closeStart;
|
|
28942
|
+
cursor = closeStart + 20;
|
|
28943
|
+
}
|
|
28944
|
+
return {
|
|
28945
|
+
tags,
|
|
28946
|
+
incompleteOpenings
|
|
28947
|
+
};
|
|
28948
|
+
}
|
|
28949
|
+
function replaceObservationGroupTags(observations, replace) {
|
|
28950
|
+
const { tags, incompleteOpenings } = scanObservationGroupTags(observations);
|
|
28951
|
+
const parts = [];
|
|
28952
|
+
let cursor = 0;
|
|
28953
|
+
let openingIndex = 0;
|
|
28954
|
+
const skipIncompleteOpeningsBefore = (limit) => {
|
|
28955
|
+
while (openingIndex < incompleteOpenings.length && incompleteOpenings[openingIndex].start < limit) {
|
|
28956
|
+
const opening = incompleteOpenings[openingIndex];
|
|
28957
|
+
openingIndex++;
|
|
28958
|
+
if (opening.start < cursor) continue;
|
|
28959
|
+
parts.push(observations.slice(cursor, opening.start));
|
|
28960
|
+
cursor = opening.end;
|
|
28961
|
+
}
|
|
28962
|
+
};
|
|
28963
|
+
for (const tag of tags) {
|
|
28964
|
+
skipIncompleteOpeningsBefore(tag.start);
|
|
28965
|
+
parts.push(observations.slice(cursor, tag.start), replace(tag));
|
|
28966
|
+
cursor = tag.end;
|
|
28967
|
+
}
|
|
28968
|
+
skipIncompleteOpeningsBefore(Number.POSITIVE_INFINITY);
|
|
28969
|
+
parts.push(observations.slice(cursor));
|
|
28970
|
+
return parts.join("");
|
|
28971
|
+
}
|
|
28466
28972
|
function parseReflectionObservationGroupSections(content) {
|
|
28467
28973
|
const normalizedContent = content.trim();
|
|
28468
28974
|
if (!normalizedContent || !REFLECTION_GROUP_SPLIT_PATTERN.test(normalizedContent)) return [];
|
|
@@ -28487,9 +28993,8 @@ function wrapInObservationGroup(observations, range, id = generateAnchorId(), _s
|
|
|
28487
28993
|
function parseObservationGroups(observations) {
|
|
28488
28994
|
if (!observations) return [];
|
|
28489
28995
|
const groups = [];
|
|
28490
|
-
|
|
28491
|
-
|
|
28492
|
-
const attributes = parseObservationGroupAttributes(match[1] ?? "");
|
|
28996
|
+
for (const tag of scanObservationGroupTags(observations).tags) {
|
|
28997
|
+
const attributes = parseObservationGroupAttributes(tag.attributeString);
|
|
28493
28998
|
const id = attributes.id;
|
|
28494
28999
|
const range = attributes.range;
|
|
28495
29000
|
if (!id || !range) continue;
|
|
@@ -28497,54 +29002,96 @@ function parseObservationGroups(observations) {
|
|
|
28497
29002
|
id,
|
|
28498
29003
|
range,
|
|
28499
29004
|
kind: attributes.kind,
|
|
28500
|
-
content:
|
|
29005
|
+
content: tag.content.trim()
|
|
28501
29006
|
});
|
|
28502
29007
|
}
|
|
28503
29008
|
return groups;
|
|
28504
29009
|
}
|
|
28505
29010
|
function stripObservationGroups(observations) {
|
|
28506
29011
|
if (!observations) return observations;
|
|
28507
|
-
return observations
|
|
29012
|
+
return replaceObservationGroupTags(observations, (tag) => tag.content.trim()).replace(/\n{3,}/g, "\n\n").trim();
|
|
28508
29013
|
}
|
|
28509
29014
|
function getRangeSegments(range) {
|
|
28510
29015
|
return range.split(",").map((segment) => segment.trim()).filter(Boolean);
|
|
28511
29016
|
}
|
|
29017
|
+
function getRangeEndpoints(segment) {
|
|
29018
|
+
const parts = segment.split(":").map((part) => part.trim());
|
|
29019
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) return null;
|
|
29020
|
+
return {
|
|
29021
|
+
start: parts[0],
|
|
29022
|
+
end: parts[1]
|
|
29023
|
+
};
|
|
29024
|
+
}
|
|
29025
|
+
/**
|
|
29026
|
+
* `buildMessageRange` produces opaque UUID endpoints, so those segments cannot be ordered by value.
|
|
29027
|
+
* Spanning from the first start to the last end keeps reflected metadata bounded — the full segment
|
|
29028
|
+
* list is deliberately not preserved (#14791). Segments that are not `start:end` pairs are left as
|
|
29029
|
+
* they are rather than being joined into a fabricated span.
|
|
29030
|
+
*/
|
|
29031
|
+
function spanRangeSegments(segments) {
|
|
29032
|
+
const endpoints = segments.map(getRangeEndpoints);
|
|
29033
|
+
if (endpoints.some((endpoint) => endpoint === null)) return segments.join(",");
|
|
29034
|
+
const first = endpoints[0];
|
|
29035
|
+
const last = endpoints.at(-1);
|
|
29036
|
+
return `${first.start}:${last.end}`;
|
|
29037
|
+
}
|
|
28512
29038
|
function combineObservationGroupRanges(groups) {
|
|
28513
|
-
const segments = groups.flatMap((group) => getRangeSegments(group.range));
|
|
29039
|
+
const segments = Array.from(new Set(groups.flatMap((group) => getRangeSegments(group.range))));
|
|
28514
29040
|
if (segments.length === 0) return "";
|
|
28515
|
-
const
|
|
28516
|
-
|
|
28517
|
-
|
|
28518
|
-
|
|
28519
|
-
|
|
28520
|
-
|
|
29041
|
+
const numericEndpoints = [];
|
|
29042
|
+
if (!segments.every((segment) => {
|
|
29043
|
+
const endpoints = getRangeEndpoints(segment);
|
|
29044
|
+
if (!endpoints || !/^\d+$/.test(endpoints.start) || !/^\d+$/.test(endpoints.end)) return false;
|
|
29045
|
+
const start = {
|
|
29046
|
+
label: endpoints.start,
|
|
29047
|
+
value: Number(endpoints.start)
|
|
29048
|
+
};
|
|
29049
|
+
const end = {
|
|
29050
|
+
label: endpoints.end,
|
|
29051
|
+
value: Number(endpoints.end)
|
|
29052
|
+
};
|
|
29053
|
+
if (!Number.isSafeInteger(start.value) || !Number.isSafeInteger(end.value)) return false;
|
|
29054
|
+
numericEndpoints.push(start.value <= end.value ? {
|
|
29055
|
+
start,
|
|
29056
|
+
end
|
|
29057
|
+
} : {
|
|
29058
|
+
start: end,
|
|
29059
|
+
end: start
|
|
29060
|
+
});
|
|
29061
|
+
return true;
|
|
29062
|
+
})) return spanRangeSegments(segments);
|
|
29063
|
+
const first = numericEndpoints.reduce((lowest, pair) => pair.start.value < lowest.start.value ? pair : lowest);
|
|
29064
|
+
const last = numericEndpoints.reduce((highest, pair) => pair.end.value > highest.end.value ? pair : highest);
|
|
29065
|
+
return `${first.start.label}:${last.end.label}`;
|
|
28521
29066
|
}
|
|
28522
29067
|
function renderObservationGroupsForReflection(observations) {
|
|
28523
|
-
|
|
28524
|
-
|
|
28525
|
-
|
|
28526
|
-
|
|
28527
|
-
|
|
28528
|
-
if (!group) return content.trim();
|
|
28529
|
-
return `## Group \`${group.id}\`\n_range: \`${group.range}\`_\n\n${group.content}`;
|
|
29068
|
+
if (parseObservationGroups(observations).length === 0) return null;
|
|
29069
|
+
return replaceObservationGroupTags(observations, (tag) => {
|
|
29070
|
+
const attributes = parseObservationGroupAttributes(tag.attributeString);
|
|
29071
|
+
if (!attributes.id || !attributes.range) return tag.content.trim();
|
|
29072
|
+
return `## Group \`${attributes.id}\`\n_range: \`${attributes.range}\`_\n\n${tag.content.trim()}`;
|
|
28530
29073
|
}).replace(/\n{3,}/g, "\n\n").trim();
|
|
28531
29074
|
}
|
|
28532
29075
|
function getCanonicalGroupId(sectionHeading, fallbackIndex) {
|
|
28533
29076
|
return sectionHeading.match(/`([^`]+)`/)?.[1]?.trim() || `derived-group-${fallbackIndex + 1}`;
|
|
28534
29077
|
}
|
|
29078
|
+
function getContentLines(content) {
|
|
29079
|
+
return content.split("\n").map((line) => line.trim()).filter(Boolean);
|
|
29080
|
+
}
|
|
28535
29081
|
function deriveObservationGroupProvenance(content, groups) {
|
|
28536
29082
|
const sections = parseReflectionObservationGroupSections(content);
|
|
28537
29083
|
if (sections.length === 0 || groups.length === 0) return [];
|
|
28538
29084
|
return sections.map((section, index) => {
|
|
28539
|
-
const
|
|
28540
|
-
const
|
|
28541
|
-
|
|
28542
|
-
|
|
29085
|
+
const canonicalGroupId = getCanonicalGroupId(section.heading, index);
|
|
29086
|
+
const identifiedGroup = groups.find((group) => group.id === canonicalGroupId);
|
|
29087
|
+
const bodyLines = new Set(getContentLines(section.body));
|
|
29088
|
+
const matchingGroups = groups.filter((group) => getContentLines(group.content).some((line) => bodyLines.has(line)));
|
|
28543
29089
|
const fallbackGroup = groups[Math.min(index, groups.length - 1)];
|
|
28544
|
-
const
|
|
29090
|
+
const identifiedLines = new Set(getContentLines(identifiedGroup?.content ?? ""));
|
|
29091
|
+
const contributingGroups = identifiedGroup ? matchingGroups.filter((group) => group.id !== identifiedGroup.id && getContentLines(group.content).some((line) => bodyLines.has(line) && !identifiedLines.has(line))) : [];
|
|
28545
29092
|
return {
|
|
28546
|
-
id:
|
|
28547
|
-
range: combineObservationGroupRanges(
|
|
29093
|
+
id: canonicalGroupId,
|
|
29094
|
+
range: combineObservationGroupRanges(identifiedGroup ? groups.filter((group) => group === identifiedGroup || contributingGroups.includes(group)) : matchingGroups.length > 0 ? matchingGroups : fallbackGroup ? [fallbackGroup] : []),
|
|
28548
29095
|
kind: "reflection",
|
|
28549
29096
|
content: section.body
|
|
28550
29097
|
};
|
|
@@ -28967,6 +29514,21 @@ var ObservationStrategy = class ObservationStrategy {
|
|
|
28967
29514
|
return false;
|
|
28968
29515
|
}
|
|
28969
29516
|
};
|
|
29517
|
+
/**
|
|
29518
|
+
* Resolve the thread title an Observational Memory cycle should persist.
|
|
29519
|
+
*
|
|
29520
|
+
* Returns the trimmed candidate when it is a new, long-enough title, or
|
|
29521
|
+
* `undefined` when the current title must stay — including when the user
|
|
29522
|
+
* pinned it via `session.thread.rename()`, which sets the
|
|
29523
|
+
* `titlePinned` thread metadata flag.
|
|
29524
|
+
*/
|
|
29525
|
+
function resolveThreadTitleUpdate(thread, generatedTitle) {
|
|
29526
|
+
const candidate = generatedTitle?.trim();
|
|
29527
|
+
if (!candidate || candidate.length < 3) return void 0;
|
|
29528
|
+
if (isThreadTitlePinned(thread?.metadata)) return void 0;
|
|
29529
|
+
if (candidate === thread?.title?.trim()) return void 0;
|
|
29530
|
+
return candidate;
|
|
29531
|
+
}
|
|
28970
29532
|
var SyncObservationStrategy = class extends ObservationStrategy {
|
|
28971
29533
|
startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
28972
29534
|
lastMessage;
|
|
@@ -29115,11 +29677,15 @@ var SyncObservationStrategy = class extends ObservationStrategy {
|
|
|
29115
29677
|
async persist(processed) {
|
|
29116
29678
|
const { record, threadId, resourceId, messages } = this.opts;
|
|
29117
29679
|
const thread = await this.storage.getThreadById({ threadId });
|
|
29680
|
+
if (!await this.storage.getObservationalMemory(record.threadId, record.resourceId)) {
|
|
29681
|
+
omDebug(`[OM:sync-obs] skipping persist for thread ${threadId}: observational memory record is gone`);
|
|
29682
|
+
return;
|
|
29683
|
+
}
|
|
29118
29684
|
let threadUpdateMarker;
|
|
29119
29685
|
if (thread) {
|
|
29120
29686
|
const oldTitle = thread.title?.trim();
|
|
29121
|
-
const newTitle = processed.threadTitle
|
|
29122
|
-
const shouldUpdateThreadTitle =
|
|
29687
|
+
const newTitle = resolveThreadTitleUpdate(thread, processed.threadTitle);
|
|
29688
|
+
const shouldUpdateThreadTitle = newTitle !== void 0;
|
|
29123
29689
|
const previousOmMetadata = getThreadOMMetadata(thread.metadata);
|
|
29124
29690
|
const metadataUpdate = buildThreadMetadataFromExtractedValues(processed.extractors ?? this.observationConfig.extractors, processed.extractedValues);
|
|
29125
29691
|
const newMetadata = setThreadOMMetadata(thread.metadata, {
|
|
@@ -29294,6 +29860,10 @@ var AsyncBufferObservationStrategy = class extends ObservationStrategy {
|
|
|
29294
29860
|
async persist(processed) {
|
|
29295
29861
|
if (!processed.observations) return;
|
|
29296
29862
|
const { record, threadId, resourceId, messages } = this.opts;
|
|
29863
|
+
if (!await this.storage.getObservationalMemory(record.threadId, record.resourceId)) {
|
|
29864
|
+
omDebug(`[OM:asyncBuffer] skipping persist for thread ${threadId}: observational memory record is gone`);
|
|
29865
|
+
return;
|
|
29866
|
+
}
|
|
29297
29867
|
const messageTokens = await this.tokenCounter.countMessagesAsync(messages);
|
|
29298
29868
|
await withRetry(() => this.storage.updateBufferedObservations({
|
|
29299
29869
|
id: record.id,
|
|
@@ -29316,13 +29886,14 @@ var AsyncBufferObservationStrategy = class extends ObservationStrategy {
|
|
|
29316
29886
|
abortSignal: this.opts.abortSignal
|
|
29317
29887
|
});
|
|
29318
29888
|
await this.indexObservationGroups(processed.observations, threadId, resourceId, processed.lastObservedAt);
|
|
29319
|
-
const
|
|
29320
|
-
const hasValidThreadTitle = !!
|
|
29889
|
+
const candidateTitle = processed.threadTitle?.trim();
|
|
29890
|
+
const hasValidThreadTitle = !!candidateTitle && candidateTitle.length >= 3;
|
|
29321
29891
|
if (hasValidThreadTitle || processed.extractedValues) {
|
|
29322
29892
|
const thread = await this.storage.getThreadById({ threadId });
|
|
29323
29893
|
if (thread) {
|
|
29324
29894
|
const oldTitle = thread.title?.trim();
|
|
29325
|
-
const
|
|
29895
|
+
const newTitle = resolveThreadTitleUpdate(thread, candidateTitle);
|
|
29896
|
+
const shouldUpdateThreadTitle = newTitle !== void 0;
|
|
29326
29897
|
const previousOmMetadata = getThreadOMMetadata(thread.metadata);
|
|
29327
29898
|
const metadataUpdate = buildThreadMetadataFromExtractedValues(processed.extractors ?? this.observationConfig.extractors, processed.extractedValues);
|
|
29328
29899
|
const newMetadata = setThreadOMMetadata(thread.metadata, {
|
|
@@ -29677,8 +30248,8 @@ var ResourceScopedObservationStrategy = class extends ObservationStrategy {
|
|
|
29677
30248
|
const thread = await this.storage.getThreadById({ threadId: update.threadId });
|
|
29678
30249
|
if (thread) {
|
|
29679
30250
|
const oldTitle = thread.title?.trim();
|
|
29680
|
-
const newTitle = update.threadTitle
|
|
29681
|
-
const shouldUpdateThreadTitle =
|
|
30251
|
+
const newTitle = resolveThreadTitleUpdate(thread, update.threadTitle);
|
|
30252
|
+
const shouldUpdateThreadTitle = newTitle !== void 0;
|
|
29682
30253
|
const previousOmMetadata = getThreadOMMetadata(thread.metadata);
|
|
29683
30254
|
const metadataUpdate = buildThreadMetadataFromExtractedValues(update.extractors ?? this.observationConfig.extractors, update.extracted);
|
|
29684
30255
|
const newMetadata = setThreadOMMetadata(thread.metadata, {
|
|
@@ -30274,6 +30845,10 @@ var ObservationTurn = class {
|
|
|
30274
30845
|
if (!this._context) throw new Error("Turn not started — call start() first");
|
|
30275
30846
|
return this._context;
|
|
30276
30847
|
}
|
|
30848
|
+
/** Whether the turn has been ended and can no longer accept steps. */
|
|
30849
|
+
get ended() {
|
|
30850
|
+
return this._ended;
|
|
30851
|
+
}
|
|
30277
30852
|
/** The current step, if one exists. */
|
|
30278
30853
|
get currentStep() {
|
|
30279
30854
|
return this._currentStep;
|
|
@@ -30814,15 +31389,14 @@ var ReflectorRunner = class {
|
|
|
30814
31389
|
this.mastra = mastra;
|
|
30815
31390
|
}
|
|
30816
31391
|
createAgent(model, memory, extractors = this.reflectionConfig.extractors) {
|
|
30817
|
-
|
|
31392
|
+
return new Agent({
|
|
30818
31393
|
id: "observational-memory-reflector",
|
|
30819
31394
|
name: "Reflector",
|
|
30820
31395
|
instructions: buildReflectorSystemPrompt(this.reflectionConfig.instruction, extractors),
|
|
30821
31396
|
model,
|
|
30822
|
-
...memory ? { memory } : {}
|
|
31397
|
+
...memory ? { memory } : {},
|
|
31398
|
+
...this.mastra ? { mastra: this.mastra } : {}
|
|
30823
31399
|
});
|
|
30824
|
-
if (this.mastra) agent.__registerMastra(this.mastra);
|
|
30825
|
-
return agent;
|
|
30826
31400
|
}
|
|
30827
31401
|
getObservationMarkerConfig(record) {
|
|
30828
31402
|
return {
|
|
@@ -32094,11 +32668,19 @@ var ObservationalMemory = class ObservationalMemory {
|
|
|
32094
32668
|
const messageTokens = config.observation?.messageTokens ?? OBSERVATIONAL_MEMORY_DEFAULTS.observation.messageTokens;
|
|
32095
32669
|
const observationTokens = config.reflection?.observationTokens ?? OBSERVATIONAL_MEMORY_DEFAULTS.reflection.observationTokens;
|
|
32096
32670
|
const isSharedBudget = config.shareTokenBudget ?? false;
|
|
32097
|
-
const
|
|
32671
|
+
const supportsDefaultTemperature = (model) => {
|
|
32672
|
+
if (model instanceof ModelByInputTokens || typeof model === "function") return false;
|
|
32673
|
+
if (typeof model === "string") return modelSupportsTemperature(model) === true;
|
|
32674
|
+
if (model && typeof model === "object" && "provider" in model && "modelId" in model && typeof model.provider === "string" && typeof model.modelId === "string") return modelSupportsTemperature(`${model.provider.split(".")[0]}/${model.modelId}`) === true;
|
|
32675
|
+
return false;
|
|
32676
|
+
};
|
|
32677
|
+
const usesDefaultOutputTokenBudget = (model) => model === void 0 || model === "default" || model instanceof ModelByInputTokens;
|
|
32098
32678
|
const observationSelectedModel = topLevelModel ?? observationConfigModel ?? reflectionConfigModel;
|
|
32099
32679
|
const reflectionSelectedModel = topLevelModel ?? reflectionConfigModel ?? observationConfigModel;
|
|
32100
|
-
const
|
|
32101
|
-
const
|
|
32680
|
+
const observationTemperature = config.observation?.modelSettings?.temperature ?? (supportsDefaultTemperature(observationModel) ? OBSERVATIONAL_MEMORY_DEFAULTS.observation.modelSettings.temperature : void 0);
|
|
32681
|
+
const observationDefaultMaxOutputTokens = config.observation?.modelSettings?.maxOutputTokens ?? (usesDefaultOutputTokenBudget(observationSelectedModel) ? OBSERVATIONAL_MEMORY_DEFAULTS.observation.modelSettings.maxOutputTokens : void 0);
|
|
32682
|
+
const reflectionTemperature = config.reflection?.modelSettings?.temperature ?? (supportsDefaultTemperature(reflectionModel) ? OBSERVATIONAL_MEMORY_DEFAULTS.reflection.modelSettings.temperature : void 0);
|
|
32683
|
+
const reflectionDefaultMaxOutputTokens = config.reflection?.modelSettings?.maxOutputTokens ?? (usesDefaultOutputTokenBudget(reflectionSelectedModel) ? OBSERVATIONAL_MEMORY_DEFAULTS.reflection.modelSettings.maxOutputTokens : void 0);
|
|
32102
32684
|
const totalBudget = messageTokens + observationTokens;
|
|
32103
32685
|
const userExplicitlyConfiguredAsync = config.observation?.bufferTokens !== void 0 || config.observation?.bufferActivation !== void 0 || config.reflection?.bufferActivation !== void 0;
|
|
32104
32686
|
const asyncBufferingDisabled = config.observation?.bufferTokens === false || config.scope === "resource" && !userExplicitlyConfiguredAsync;
|
|
@@ -32114,7 +32696,7 @@ var ObservationalMemory = class ObservationalMemory {
|
|
|
32114
32696
|
} : messageTokens,
|
|
32115
32697
|
shareTokenBudget: isSharedBudget,
|
|
32116
32698
|
modelSettings: {
|
|
32117
|
-
temperature:
|
|
32699
|
+
...observationTemperature !== void 0 ? { temperature: observationTemperature } : {},
|
|
32118
32700
|
...observationDefaultMaxOutputTokens !== void 0 ? { maxOutputTokens: observationDefaultMaxOutputTokens } : {}
|
|
32119
32701
|
},
|
|
32120
32702
|
providerOptions: config.observation?.providerOptions ?? OBSERVATIONAL_MEMORY_DEFAULTS.observation.providerOptions,
|
|
@@ -32140,7 +32722,7 @@ var ObservationalMemory = class ObservationalMemory {
|
|
|
32140
32722
|
observationTokens,
|
|
32141
32723
|
shareTokenBudget: isSharedBudget,
|
|
32142
32724
|
modelSettings: {
|
|
32143
|
-
temperature:
|
|
32725
|
+
...reflectionTemperature !== void 0 ? { temperature: reflectionTemperature } : {},
|
|
32144
32726
|
...reflectionDefaultMaxOutputTokens !== void 0 ? { maxOutputTokens: reflectionDefaultMaxOutputTokens } : {}
|
|
32145
32727
|
},
|
|
32146
32728
|
providerOptions: config.reflection?.providerOptions ?? OBSERVATIONAL_MEMORY_DEFAULTS.reflection.providerOptions,
|
|
@@ -33864,9 +34446,8 @@ ${formattedMessages}
|
|
|
33864
34446
|
currentTask: lastActivated.currentTask,
|
|
33865
34447
|
threadTitle: chunkThreadTitle
|
|
33866
34448
|
});
|
|
33867
|
-
const
|
|
33868
|
-
const
|
|
33869
|
-
const shouldUpdateThreadTitle = !!newTitle && newTitle.length >= 3 && newTitle !== oldTitle;
|
|
34449
|
+
const newTitle = resolveThreadTitleUpdate(thread, chunkThreadTitle);
|
|
34450
|
+
const shouldUpdateThreadTitle = newTitle !== void 0;
|
|
33870
34451
|
await this.storage.patchThread({
|
|
33871
34452
|
id: threadId,
|
|
33872
34453
|
...shouldUpdateThreadTitle ? { title: newTitle } : {},
|
|
@@ -33996,9 +34577,11 @@ ${formattedMessages}
|
|
|
33996
34577
|
let lifecycleError;
|
|
33997
34578
|
let observationStarted = false;
|
|
33998
34579
|
let generationBefore = -1;
|
|
34580
|
+
let recordInsideLock;
|
|
33999
34581
|
try {
|
|
34000
34582
|
await this.withLock(lockKey, async () => {
|
|
34001
34583
|
const freshRecord = await this.getOrCreateRecord(threadId, resourceId);
|
|
34584
|
+
recordInsideLock = freshRecord;
|
|
34002
34585
|
generationBefore = freshRecord.generationCount;
|
|
34003
34586
|
const unobservedMessages = messages ? this.getUnobservedMessages(messages, freshRecord) : await this.loadMessagesFromStorage(threadId, resourceId, freshRecord.lastObservedAt ? new Date(freshRecord.lastObservedAt) : void 0);
|
|
34004
34587
|
if (!this.meetsObservationThreshold({
|
|
@@ -34041,7 +34624,7 @@ ${formattedMessages}
|
|
|
34041
34624
|
omDebug(`[OM:hooks] onObservationEnd hook failed after cycle failure: ${endHookError instanceof Error ? endHookError.message : String(endHookError)}`);
|
|
34042
34625
|
}
|
|
34043
34626
|
if (lifecycleError !== void 0) throw lifecycleError;
|
|
34044
|
-
const record = await this.
|
|
34627
|
+
const record = await this.getRecord(threadId, resourceId) ?? recordInsideLock;
|
|
34045
34628
|
const reflected = record.generationCount > generationBefore && generationBefore >= 0;
|
|
34046
34629
|
return {
|
|
34047
34630
|
observed,
|
|
@@ -34518,6 +35101,10 @@ var ObservationalMemoryProcessor = class {
|
|
|
34518
35101
|
if (this.turn === activeTurn) this.turn = void 0;
|
|
34519
35102
|
state.__omTurn = void 0;
|
|
34520
35103
|
}
|
|
35104
|
+
if (activeTurn?.ended || this.turn?.ended) {
|
|
35105
|
+
if (this.turn?.ended) this.turn = void 0;
|
|
35106
|
+
state.__omTurn = void 0;
|
|
35107
|
+
}
|
|
34521
35108
|
if (!this.turn || !state.__omTurn) {
|
|
34522
35109
|
if (this.turn && !state.__omTurn) await this.turn.end().catch(() => {});
|
|
34523
35110
|
this.turn = this.engine.beginTurn({
|
|
@@ -34618,11 +35205,11 @@ var ObservationalMemoryProcessor = class {
|
|
|
34618
35205
|
return this.engine.getTokenCounter().runWithModelContext(state.__omActorModelContext, async () => {
|
|
34619
35206
|
if (parseMemoryRequestContext(requestContext)?.memoryConfig?.readOnly) return messageList;
|
|
34620
35207
|
const turn = asLiveTurn(state.__omTurn) ?? this.turn;
|
|
34621
|
-
|
|
34622
|
-
|
|
34623
|
-
|
|
34624
|
-
|
|
34625
|
-
|
|
35208
|
+
const liveTurn = turn && !turn.ended ? turn : void 0;
|
|
35209
|
+
if (liveTurn) await liveTurn.end();
|
|
35210
|
+
this.turn = void 0;
|
|
35211
|
+
state.__omTurn = void 0;
|
|
35212
|
+
if (!liveTurn) {
|
|
34626
35213
|
const newOutput = messageList.get.response.db();
|
|
34627
35214
|
const messagesToSave = [...messageList.get.input.db(), ...newOutput];
|
|
34628
35215
|
if (messagesToSave.length > 0 && context.threadId) await this.engine.persistMessages(messagesToSave, context.threadId, context.resourceId);
|
|
@@ -34811,6 +35398,7 @@ const DEFAULT_MESSAGE_RANGE = {
|
|
|
34811
35398
|
};
|
|
34812
35399
|
const DEFAULT_TOP_K = 4;
|
|
34813
35400
|
const VECTOR_DELETE_BATCH_SIZE = 100;
|
|
35401
|
+
const OM_DELETE_DRAIN_TIMEOUT_MS = 1e4;
|
|
34814
35402
|
const DEFAULT_EMBEDDING_CACHE_MAX_SIZE = 1e3;
|
|
34815
35403
|
/**
|
|
34816
35404
|
* Gives Mastra agents conversation history, with optional working memory,
|
|
@@ -34844,6 +35432,9 @@ const DEFAULT_EMBEDDING_CACHE_MAX_SIZE = 1e3;
|
|
|
34844
35432
|
* if packaged docs are unavailable.
|
|
34845
35433
|
*/
|
|
34846
35434
|
var Memory = class Memory extends MastraMemory {
|
|
35435
|
+
createMemoryTokenCounter() {
|
|
35436
|
+
return new TokenCounter();
|
|
35437
|
+
}
|
|
34847
35438
|
_omEngine;
|
|
34848
35439
|
_omEngineInstance;
|
|
34849
35440
|
_mastraInstance;
|
|
@@ -35014,6 +35605,7 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35014
35605
|
const thread = await this.getThreadById({ threadId });
|
|
35015
35606
|
if (!thread && !resourceScope) throw new Error(`No thread found with id ${threadId}`);
|
|
35016
35607
|
if (thread && thread.resourceId !== resourceId) throw new Error(`Thread with id ${threadId} is for resource with id ${thread.resourceId} but resource ${resourceId} was queried.`);
|
|
35608
|
+
return thread;
|
|
35017
35609
|
}
|
|
35018
35610
|
createMemorySpan(operationType, observabilityContext, input, attributes) {
|
|
35019
35611
|
const currentSpan = observabilityContext?.tracingContext?.currentSpan;
|
|
@@ -35034,6 +35626,9 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35034
35626
|
const { threadId, resourceId, perPage: perPageArg, page, orderBy, threadConfig, vectorSearchString, includeSystemReminders, hideSignals, filter, includeTotal } = args;
|
|
35035
35627
|
const config = this.getMergedThreadConfig(threadConfig || {});
|
|
35036
35628
|
const semanticRecallEnabled = Boolean(config.semanticRecall);
|
|
35629
|
+
const history = normalizeMessageHistoryConfig(config.lastMessages, config.messageHistory);
|
|
35630
|
+
const historyDisabledByConfig = !history.enabled && perPageArg === void 0;
|
|
35631
|
+
const shouldUseTokenLoader = perPageArg === void 0 && history.enabled && history.maxTokens !== void 0;
|
|
35037
35632
|
const span = this.createMemorySpan("recall", args.observabilityContext, {
|
|
35038
35633
|
threadId,
|
|
35039
35634
|
resourceId,
|
|
@@ -35043,9 +35638,23 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35043
35638
|
lastMessages: config.lastMessages
|
|
35044
35639
|
});
|
|
35045
35640
|
try {
|
|
35046
|
-
if (
|
|
35047
|
-
|
|
35048
|
-
|
|
35641
|
+
if (historyDisabledByConfig && (!config.semanticRecall || !vectorSearchString || !this.vector)) {
|
|
35642
|
+
const result = {
|
|
35643
|
+
messages: [],
|
|
35644
|
+
usage: void 0,
|
|
35645
|
+
total: 0,
|
|
35646
|
+
page: page ?? 0,
|
|
35647
|
+
perPage: 0,
|
|
35648
|
+
hasMore: false
|
|
35649
|
+
};
|
|
35650
|
+
span?.end({
|
|
35651
|
+
output: { success: true },
|
|
35652
|
+
attributes: { messageCount: 0 }
|
|
35653
|
+
});
|
|
35654
|
+
return result;
|
|
35655
|
+
}
|
|
35656
|
+
const validatedThread = resourceId ? await this.validateThreadIsOwnedByResource(threadId, resourceId, config) : void 0;
|
|
35657
|
+
const perPage = perPageArg !== void 0 ? perPageArg : history.maxMessages ?? 0;
|
|
35049
35658
|
const shouldGetNewestAndReverse = !orderBy && perPage !== false;
|
|
35050
35659
|
const effectiveOrderBy = shouldGetNewestAndReverse ? {
|
|
35051
35660
|
field: "createdAt",
|
|
@@ -35074,21 +35683,6 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35074
35683
|
const resourceScope = typeof config?.semanticRecall === "object" && config?.semanticRecall?.scope !== `thread` || config.semanticRecall === true;
|
|
35075
35684
|
if (resourceScope && !resourceId && config?.semanticRecall && vectorSearchString) throw new Error("Memory error: Resource-scoped semantic recall is enabled but no resourceId was provided. Either provide a resourceId or explicitly set semanticRecall.scope to 'thread'.");
|
|
35076
35685
|
let usage;
|
|
35077
|
-
if (historyDisabledByConfig && (!config.semanticRecall || !vectorSearchString || !this.vector)) {
|
|
35078
|
-
const result = {
|
|
35079
|
-
messages: [],
|
|
35080
|
-
usage: void 0,
|
|
35081
|
-
total: 0,
|
|
35082
|
-
page: page ?? 0,
|
|
35083
|
-
perPage: 0,
|
|
35084
|
-
hasMore: false
|
|
35085
|
-
};
|
|
35086
|
-
span?.end({
|
|
35087
|
-
output: { success: true },
|
|
35088
|
-
attributes: { messageCount: 0 }
|
|
35089
|
-
});
|
|
35090
|
-
return result;
|
|
35091
|
-
}
|
|
35092
35686
|
if (config?.semanticRecall && vectorSearchString && this.vector) {
|
|
35093
35687
|
const result = await this.embedMessageContent(vectorSearchString);
|
|
35094
35688
|
usage = result.usage;
|
|
@@ -35110,28 +35704,71 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35110
35704
|
const threshold = (typeof config.semanticRecall === "object" ? config.semanticRecall : void 0)?.threshold;
|
|
35111
35705
|
const filteredVectorResults = threshold !== void 0 ? vectorResults.filter((r) => r.score >= threshold) : vectorResults;
|
|
35112
35706
|
const memoryStore = await this.getMemoryStore();
|
|
35113
|
-
const
|
|
35114
|
-
|
|
35115
|
-
threadId,
|
|
35116
|
-
|
|
35117
|
-
|
|
35118
|
-
|
|
35119
|
-
|
|
35120
|
-
|
|
35121
|
-
|
|
35122
|
-
|
|
35123
|
-
|
|
35124
|
-
|
|
35125
|
-
|
|
35126
|
-
|
|
35127
|
-
|
|
35128
|
-
|
|
35129
|
-
|
|
35707
|
+
const include = filteredVectorResults.map((r) => ({
|
|
35708
|
+
id: r.metadata?.message_id,
|
|
35709
|
+
threadId: r.metadata?.thread_id,
|
|
35710
|
+
withNextMessages: typeof vectorConfig.messageRange === "number" ? vectorConfig.messageRange : vectorConfig.messageRange.after,
|
|
35711
|
+
withPreviousMessages: typeof vectorConfig.messageRange === "number" ? vectorConfig.messageRange : vectorConfig.messageRange.before
|
|
35712
|
+
}));
|
|
35713
|
+
let rawMessages;
|
|
35714
|
+
let resultPage;
|
|
35715
|
+
let resultPerPage;
|
|
35716
|
+
let total;
|
|
35717
|
+
let hasMore;
|
|
35718
|
+
if (shouldUseTokenLoader) {
|
|
35719
|
+
const storedBoundary = getMemoryTokenBoundary(validatedThread ?? await memoryStore.getThreadById({
|
|
35720
|
+
threadId,
|
|
35721
|
+
resourceId
|
|
35722
|
+
}));
|
|
35723
|
+
const boundary = storedBoundary !== void 0 && storedBoundary.maxTokens === history.maxTokens && storedBoundary.atMaxRemoveTokens === history.atMaxRemoveTokens ? storedBoundary : void 0;
|
|
35724
|
+
rawMessages = (await loadMessageHistory({
|
|
35725
|
+
storage: memoryStore,
|
|
35726
|
+
threadId,
|
|
35727
|
+
resourceId,
|
|
35728
|
+
boundary,
|
|
35729
|
+
filter,
|
|
35730
|
+
maxMessages: history.maxMessages,
|
|
35731
|
+
maxTokens: history.maxTokens,
|
|
35732
|
+
atMaxRemoveTokens: history.atMaxRemoveTokens,
|
|
35733
|
+
tokenCounter: new TokenCounter(),
|
|
35734
|
+
initialTokens: 24
|
|
35735
|
+
})).messages;
|
|
35736
|
+
if (include.length) {
|
|
35737
|
+
const semanticMessages = await memoryStore.listMessages({
|
|
35738
|
+
threadId,
|
|
35739
|
+
resourceId,
|
|
35740
|
+
perPage: 0,
|
|
35741
|
+
include,
|
|
35742
|
+
includeTotal: false
|
|
35743
|
+
});
|
|
35744
|
+
rawMessages = new MessageList({
|
|
35745
|
+
threadId,
|
|
35746
|
+
resourceId
|
|
35747
|
+
}).add(rawMessages, "memory").add(semanticMessages.messages.filter((message) => !boundary || isAfterMemoryTokenBoundary(message, boundary)), "memory").get.all.db();
|
|
35748
|
+
}
|
|
35749
|
+
resultPage = 0;
|
|
35750
|
+
resultPerPage = history.maxMessages ?? false;
|
|
35751
|
+
total = rawMessages.length;
|
|
35752
|
+
hasMore = false;
|
|
35753
|
+
} else {
|
|
35754
|
+
const effectivePerPage = historyDisabledByConfig ? 0 : perPage;
|
|
35755
|
+
const paginatedResult = await memoryStore.listMessages({
|
|
35756
|
+
threadId,
|
|
35757
|
+
resourceId,
|
|
35758
|
+
perPage: effectivePerPage,
|
|
35759
|
+
page,
|
|
35760
|
+
orderBy: effectiveOrderBy,
|
|
35761
|
+
filter,
|
|
35762
|
+
...includeTotal !== void 0 ? { includeTotal } : {},
|
|
35763
|
+
...include.length ? { include } : {}
|
|
35764
|
+
});
|
|
35765
|
+
rawMessages = shouldGetNewestAndReverse ? paginatedResult.messages.reverse() : paginatedResult.messages;
|
|
35766
|
+
({total, page: resultPage, perPage: resultPerPage, hasMore} = paginatedResult);
|
|
35767
|
+
}
|
|
35130
35768
|
const messages = filterSystemReminderMessages(new MessageList({
|
|
35131
35769
|
threadId,
|
|
35132
35770
|
resourceId
|
|
35133
35771
|
}).add(rawMessages, "memory").get.all.db(), includeSystemReminders, hideSignals);
|
|
35134
|
-
const { total, page: resultPage, perPage: resultPerPage, hasMore } = paginatedResult;
|
|
35135
35772
|
const recallResult = {
|
|
35136
35773
|
messages,
|
|
35137
35774
|
usage,
|
|
@@ -35184,6 +35821,13 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35184
35821
|
});
|
|
35185
35822
|
return savedThread;
|
|
35186
35823
|
}
|
|
35824
|
+
/**
|
|
35825
|
+
* Update a thread's title or metadata.
|
|
35826
|
+
*
|
|
35827
|
+
* Unlike `session.thread.rename()`, this does not pin the title, so
|
|
35828
|
+
* Observational Memory may still replace it with an extracted title. To
|
|
35829
|
+
* protect a manual rename, set `metadata.titlePinned` to `true`.
|
|
35830
|
+
*/
|
|
35187
35831
|
async updateThread({ id, title, metadata, memoryConfig }) {
|
|
35188
35832
|
const updatedThread = await (await this.getMemoryStore()).patchThread({
|
|
35189
35833
|
id,
|
|
@@ -35206,6 +35850,8 @@ var Memory = class Memory extends MastraMemory {
|
|
|
35206
35850
|
await this.deleteStoredThread(memoryStore, threadId, thread?.resourceId);
|
|
35207
35851
|
}
|
|
35208
35852
|
async deleteStoredThread(memoryStore, threadId, resourceId) {
|
|
35853
|
+
const engine = this._omEngine ? await this._omEngine : this._omEngineInstance;
|
|
35854
|
+
if (engine && resourceId) await engine.waitForBuffering(threadId, resourceId, OM_DELETE_DRAIN_TIMEOUT_MS);
|
|
35209
35855
|
await memoryStore.deleteThread({ threadId });
|
|
35210
35856
|
if (resourceId && memoryStore.supportsObservationalMemory) await memoryStore.clearObservationalMemory(threadId, resourceId);
|
|
35211
35857
|
if (this.vector) this.trackVectorCleanup(this.deleteThreadVectors(threadId));
|
|
@@ -35752,16 +36398,52 @@ ${workingMemory}`;
|
|
|
35752
36398
|
messages = runState ? await runState.load(`observational-memory:messages:thread:${threadId}:${boundary}`, loadMessages) : await loadMessages();
|
|
35753
36399
|
}
|
|
35754
36400
|
} else {
|
|
35755
|
-
const lastMessages = config.lastMessages;
|
|
35756
|
-
if (lastMessages
|
|
35757
|
-
else
|
|
36401
|
+
const lastMessages = normalizeMessageHistoryConfig(config.lastMessages, config.messageHistory);
|
|
36402
|
+
if (!lastMessages.enabled) messages = [];
|
|
36403
|
+
else if (lastMessages.maxTokens !== void 0) {
|
|
36404
|
+
const storedBoundary = getMemoryTokenBoundary(await memoryStore.getThreadById({
|
|
36405
|
+
threadId,
|
|
36406
|
+
resourceId
|
|
36407
|
+
}));
|
|
36408
|
+
const boundary = storedBoundary?.maxTokens === lastMessages.maxTokens && storedBoundary.atMaxRemoveTokens === lastMessages.atMaxRemoveTokens ? storedBoundary : void 0;
|
|
36409
|
+
const tokenCounter = this.createMemoryTokenCounter();
|
|
36410
|
+
const loaded = await loadMessageHistory({
|
|
36411
|
+
storage: memoryStore,
|
|
36412
|
+
threadId,
|
|
36413
|
+
resourceId,
|
|
36414
|
+
boundary,
|
|
36415
|
+
maxMessages: lastMessages.maxMessages,
|
|
36416
|
+
maxTokens: lastMessages.maxTokens,
|
|
36417
|
+
tokenCounter,
|
|
36418
|
+
initialTokens: 24
|
|
36419
|
+
});
|
|
36420
|
+
const messageList = new MessageList();
|
|
36421
|
+
messageList.add(loaded.messages, "memory");
|
|
36422
|
+
if (systemParts.length) messageList.addSystem(systemParts.join("\n\n"));
|
|
36423
|
+
await new TokenLimiterProcessor({
|
|
36424
|
+
limit: lastMessages.maxTokens,
|
|
36425
|
+
atMaxRemoveTokens: lastMessages.atMaxRemoveTokens,
|
|
36426
|
+
trimMode: "memory-only",
|
|
36427
|
+
tokenCounter
|
|
36428
|
+
}).processInput({
|
|
36429
|
+
messageList,
|
|
36430
|
+
messages: messageList.get.all.db(),
|
|
36431
|
+
systemMessages: messageList.getAllSystemMessages(),
|
|
36432
|
+
state: {},
|
|
36433
|
+
retryCount: 0,
|
|
36434
|
+
abort: (reason) => {
|
|
36435
|
+
throw new Error(reason);
|
|
36436
|
+
}
|
|
36437
|
+
});
|
|
36438
|
+
messages = messageList.get.all.db();
|
|
36439
|
+
} else messages = (await memoryStore.listMessages({
|
|
35758
36440
|
threadId,
|
|
35759
36441
|
resourceId,
|
|
35760
36442
|
orderBy: {
|
|
35761
36443
|
field: "createdAt",
|
|
35762
36444
|
direction: "DESC"
|
|
35763
36445
|
},
|
|
35764
|
-
perPage:
|
|
36446
|
+
perPage: lastMessages.maxMessages,
|
|
35765
36447
|
includeTotal: false
|
|
35766
36448
|
})).messages.reverse();
|
|
35767
36449
|
}
|
|
@@ -37688,23 +38370,23 @@ const createModelInstance = async (provider, modelId, version = "v2") => {
|
|
|
37688
38370
|
try {
|
|
37689
38371
|
const providerFn = version === `v1` ? { v1: {
|
|
37690
38372
|
openai: async () => {
|
|
37691
|
-
const { openai } = await import("./dist-
|
|
38373
|
+
const { openai } = await import("./dist-Cdj_Yiml.js");
|
|
37692
38374
|
return openai(modelId);
|
|
37693
38375
|
},
|
|
37694
38376
|
anthropic: async () => {
|
|
37695
|
-
const { anthropic } = await import("./dist-
|
|
38377
|
+
const { anthropic } = await import("./dist-BMjWLpRz.js");
|
|
37696
38378
|
return anthropic(modelId);
|
|
37697
38379
|
},
|
|
37698
38380
|
groq: async () => {
|
|
37699
|
-
const { groq } = await import("./dist-
|
|
38381
|
+
const { groq } = await import("./dist-DazAtske.js");
|
|
37700
38382
|
return groq(modelId);
|
|
37701
38383
|
},
|
|
37702
38384
|
xai: async () => {
|
|
37703
|
-
const { xai } = await import("./dist-
|
|
38385
|
+
const { xai } = await import("./dist-ByqJiZWY.js");
|
|
37704
38386
|
return xai(modelId);
|
|
37705
38387
|
},
|
|
37706
38388
|
google: async () => {
|
|
37707
|
-
const { google } = await import("./dist-
|
|
38389
|
+
const { google } = await import("./dist-C0MIGUJb.js");
|
|
37708
38390
|
return google(modelId);
|
|
37709
38391
|
}
|
|
37710
38392
|
} }[version][provider] : () => new ModelRouterLanguageModel(`${provider}/${modelId}`);
|
|
@@ -47283,4 +47965,4 @@ const agentBuilderWorkflows = {
|
|
|
47283
47965
|
//#endregion
|
|
47284
47966
|
export { agentBuilderWorkflows };
|
|
47285
47967
|
|
|
47286
|
-
//# sourceMappingURL=dist-
|
|
47968
|
+
//# sourceMappingURL=dist-C3lMsO1Z.js.map
|