@animalabs/agent-framework 0.26.2 → 0.28.0
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/README.md +99 -8
- package/dist/src/agent.d.ts +291 -23
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +596 -61
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +5 -4
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/auto-continue.d.ts +34 -0
- package/dist/src/auto-continue.d.ts.map +1 -0
- package/dist/src/auto-continue.js +36 -0
- package/dist/src/auto-continue.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +11 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
- package/dist/src/code-execution/isolate/scripts.js +5 -1
- package/dist/src/code-execution/isolate/scripts.js.map +1 -1
- package/dist/src/cut-off-round.d.ts +24 -0
- package/dist/src/cut-off-round.d.ts.map +1 -0
- package/dist/src/cut-off-round.js +87 -0
- package/dist/src/cut-off-round.js.map +1 -0
- package/dist/src/framework.d.ts +1038 -193
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +5967 -1514
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +405 -46
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +2646 -399
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/index.d.ts +3 -2
- package/dist/src/gate/index.d.ts.map +1 -1
- package/dist/src/gate/index.js +2 -1
- package/dist/src/gate/index.js.map +1 -1
- package/dist/src/gate/recipe-reconcile.d.ts +103 -0
- package/dist/src/gate/recipe-reconcile.d.ts.map +1 -0
- package/dist/src/gate/recipe-reconcile.js +325 -0
- package/dist/src/gate/recipe-reconcile.js.map +1 -0
- package/dist/src/gate/reply-judge.d.ts +116 -0
- package/dist/src/gate/reply-judge.d.ts.map +1 -0
- package/dist/src/gate/reply-judge.js +467 -0
- package/dist/src/gate/reply-judge.js.map +1 -0
- package/dist/src/gate/types.d.ts +229 -8
- package/dist/src/gate/types.d.ts.map +1 -1
- package/dist/src/heartbeat/heartbeat.d.ts +184 -0
- package/dist/src/heartbeat/heartbeat.d.ts.map +1 -0
- package/dist/src/heartbeat/heartbeat.js +752 -0
- package/dist/src/heartbeat/heartbeat.js.map +1 -0
- package/dist/src/heartbeat/reminder-time.d.ts +5 -0
- package/dist/src/heartbeat/reminder-time.d.ts.map +1 -0
- package/dist/src/heartbeat/reminder-time.js +107 -0
- package/dist/src/heartbeat/reminder-time.js.map +1 -0
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-mask.d.ts.map +1 -1
- package/dist/src/mcpl/capability-mask.js +3 -2
- package/dist/src/mcpl/capability-mask.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +433 -113
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1154 -435
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +16 -8
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +29 -15
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +14 -2
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts +7 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.js +32 -7
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +26 -10
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
- package/dist/src/mcpl/inbound-source.js +40 -69
- package/dist/src/mcpl/inbound-source.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +5 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +4 -0
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +14 -2
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +73 -28
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -0
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +6 -0
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +3 -0
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +20 -2
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +33 -11
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +63 -42
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +177 -145
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +380 -46
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +736 -77
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +93 -4
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +176 -11
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tags.d.ts +9 -2
- package/dist/src/mcpl/tags.d.ts.map +1 -1
- package/dist/src/mcpl/tags.js +12 -2
- package/dist/src/mcpl/tags.js.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.d.ts +11 -0
- package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.js +21 -0
- package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
- package/dist/src/mcpl/tool-presence.d.ts +311 -0
- package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
- package/dist/src/mcpl/tool-presence.js +697 -0
- package/dist/src/mcpl/tool-presence.js.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts +9 -3
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js +14 -6
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/tool-signature.d.ts +46 -0
- package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
- package/dist/src/mcpl/tool-signature.js +321 -0
- package/dist/src/mcpl/tool-signature.js.map +1 -0
- package/dist/src/mcpl/toolset-host.d.ts +251 -0
- package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
- package/dist/src/mcpl/toolset-host.js +720 -0
- package/dist/src/mcpl/toolset-host.js.map +1 -0
- package/dist/src/mcpl/toolsets-module.d.ts +83 -0
- package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
- package/dist/src/mcpl/toolsets-module.js +523 -0
- package/dist/src/mcpl/toolsets-module.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +2 -2
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +3 -2
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +24 -2
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/mcpl/visible-content.d.ts +7 -9
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +21 -9
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +27 -9
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +77 -17
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.js +1 -1
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +2 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +73 -28
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +108 -6
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +273 -57
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/workspace/answers.d.ts +22 -0
- package/dist/src/modules/workspace/answers.d.ts.map +1 -0
- package/dist/src/modules/workspace/answers.js +123 -0
- package/dist/src/modules/workspace/answers.js.map +1 -0
- package/dist/src/modules/workspace/branch-intent.d.ts +5 -3
- package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
- package/dist/src/modules/workspace/branch-intent.js +6 -2
- package/dist/src/modules/workspace/branch-intent.js.map +1 -1
- package/dist/src/modules/workspace/direct-write.d.ts +184 -0
- package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
- package/dist/src/modules/workspace/direct-write.js +417 -0
- package/dist/src/modules/workspace/direct-write.js.map +1 -0
- package/dist/src/modules/workspace/disk-agreement.d.ts +33 -11
- package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +48 -17
- package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
- package/dist/src/modules/workspace/edit-text.d.ts +27 -12
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
- package/dist/src/modules/workspace/edit-text.js +61 -29
- package/dist/src/modules/workspace/edit-text.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +10 -0
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +21 -14
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +308 -78
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +2103 -720
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +75 -63
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +366 -180
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/read-page.d.ts +41 -0
- package/dist/src/modules/workspace/read-page.d.ts.map +1 -0
- package/dist/src/modules/workspace/read-page.js +219 -0
- package/dist/src/modules/workspace/read-page.js.map +1 -0
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +26 -16
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/result-text.d.ts +68 -0
- package/dist/src/modules/workspace/result-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/result-text.js +94 -0
- package/dist/src/modules/workspace/result-text.js.map +1 -0
- package/dist/src/modules/workspace/sync.d.ts +9 -0
- package/dist/src/modules/workspace/sync.d.ts.map +1 -1
- package/dist/src/modules/workspace/sync.js +14 -0
- package/dist/src/modules/workspace/sync.js.map +1 -1
- package/dist/src/modules/workspace/text.d.ts +29 -12
- package/dist/src/modules/workspace/text.d.ts.map +1 -1
- package/dist/src/modules/workspace/text.js +35 -33
- package/dist/src/modules/workspace/text.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +137 -60
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js +8 -3
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/prose-drafts.d.ts +4 -3
- package/dist/src/prose-drafts.d.ts.map +1 -1
- package/dist/src/prose-drafts.js +3 -2
- package/dist/src/prose-drafts.js.map +1 -1
- package/dist/src/reasoning-loss-notice.d.ts +23 -0
- package/dist/src/reasoning-loss-notice.d.ts.map +1 -0
- package/dist/src/reasoning-loss-notice.js +50 -0
- package/dist/src/reasoning-loss-notice.js.map +1 -0
- package/dist/src/reasoning-loss.d.ts +24 -0
- package/dist/src/reasoning-loss.d.ts.map +1 -0
- package/dist/src/reasoning-loss.js +102 -0
- package/dist/src/reasoning-loss.js.map +1 -0
- package/dist/src/send-tools.d.ts +3 -2
- package/dist/src/send-tools.d.ts.map +1 -1
- package/dist/src/send-tools.js +3 -2
- package/dist/src/send-tools.js.map +1 -1
- package/dist/src/sent-rows.d.ts +59 -0
- package/dist/src/sent-rows.d.ts.map +1 -0
- package/dist/src/sent-rows.js +145 -0
- package/dist/src/sent-rows.js.map +1 -0
- package/dist/src/silent-heartbeat.d.ts +17 -10
- package/dist/src/silent-heartbeat.d.ts.map +1 -1
- package/dist/src/silent-heartbeat.js.map +1 -1
- package/dist/src/stable-hash.d.ts +3 -0
- package/dist/src/stable-hash.d.ts.map +1 -0
- package/dist/src/stable-hash.js +15 -0
- package/dist/src/stable-hash.js.map +1 -0
- package/dist/src/stored-injections.d.ts +99 -0
- package/dist/src/stored-injections.d.ts.map +1 -0
- package/dist/src/stored-injections.js +106 -0
- package/dist/src/stored-injections.js.map +1 -0
- package/dist/src/text-as-stored.d.ts +4 -3
- package/dist/src/text-as-stored.d.ts.map +1 -1
- package/dist/src/text-as-stored.js +4 -3
- package/dist/src/text-as-stored.js.map +1 -1
- package/dist/src/thinking-drops.d.ts +74 -0
- package/dist/src/thinking-drops.d.ts.map +1 -0
- package/dist/src/thinking-drops.js +96 -0
- package/dist/src/thinking-drops.js.map +1 -0
- package/dist/src/tool-args.d.ts +12 -0
- package/dist/src/tool-args.d.ts.map +1 -1
- package/dist/src/tool-args.js +35 -1
- package/dist/src/tool-args.js.map +1 -1
- package/dist/src/tool-image-ledger.d.ts +9 -8
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +9 -8
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +3 -1
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +12 -6
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +44 -17
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +176 -24
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +411 -91
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +17 -9
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +84 -37
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/tune-out/tools.d.ts +4 -1
- package/dist/src/tune-out/tools.d.ts.map +1 -1
- package/dist/src/types/agent.d.ts +217 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +33 -9
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +39 -3
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +95 -9
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +91 -3
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/agent.ts +661 -67
- package/src/api/server.ts +5 -4
- package/src/auto-continue.ts +43 -0
- package/src/code-execution/isolate/scripts.ts +11 -3
- package/src/cut-off-round.ts +98 -0
- package/src/framework.ts +6168 -1540
- package/src/gate/event-gate.ts +2895 -405
- package/src/gate/index.ts +10 -1
- package/src/gate/recipe-reconcile.ts +355 -0
- package/src/gate/reply-judge.ts +512 -0
- package/src/gate/types.ts +234 -9
- package/src/heartbeat/heartbeat.ts +804 -0
- package/src/heartbeat/reminder-time.ts +107 -0
- package/src/index.ts +11 -4
- package/src/mcpl/capability-mask.ts +3 -2
- package/src/mcpl/channel-registry.ts +1222 -468
- package/src/mcpl/conversation-router.ts +34 -16
- package/src/mcpl/convert-block.ts +14 -1
- package/src/mcpl/hook-orchestrator.ts +33 -6
- package/src/mcpl/inbound-source.ts +42 -69
- package/src/mcpl/index.ts +6 -1
- package/src/mcpl/inference-router.ts +79 -34
- package/src/mcpl/prose-grammar.ts +7 -0
- package/src/mcpl/protocol-family.ts +2 -0
- package/src/mcpl/push-coalescer.ts +51 -13
- package/src/mcpl/reference-fetcher.ts +201 -162
- package/src/mcpl/references.ts +851 -77
- package/src/mcpl/server-connection.ts +189 -11
- package/src/mcpl/tags.ts +13 -2
- package/src/mcpl/tool-lifecycle.ts +21 -0
- package/src/mcpl/tool-presence.ts +716 -0
- package/src/mcpl/tool-result-normalize.ts +18 -6
- package/src/mcpl/tool-signature.ts +316 -0
- package/src/mcpl/toolset-host.ts +727 -0
- package/src/mcpl/toolsets-module.ts +545 -0
- package/src/mcpl/transport.ts +3 -2
- package/src/mcpl/types.ts +25 -2
- package/src/mcpl/visible-content.ts +22 -9
- package/src/module-registry.ts +85 -26
- package/src/modules/discord/index.ts +1 -1
- package/src/modules/history/index.ts +70 -30
- package/src/modules/history/semantic.ts +308 -54
- package/src/modules/workspace/answers.ts +133 -0
- package/src/modules/workspace/branch-intent.ts +10 -5
- package/src/modules/workspace/direct-write.ts +460 -0
- package/src/modules/workspace/disk-agreement.ts +52 -21
- package/src/modules/workspace/edit-text.ts +84 -35
- package/src/modules/workspace/effects.ts +22 -13
- package/src/modules/workspace/index.ts +2142 -723
- package/src/modules/workspace/observe.ts +381 -177
- package/src/modules/workspace/read-page.ts +228 -0
- package/src/modules/workspace/reconcile.ts +27 -15
- package/src/modules/workspace/result-text.ts +121 -0
- package/src/modules/workspace/sync.ts +16 -0
- package/src/modules/workspace/text.ts +58 -32
- package/src/modules/workspace/types.ts +137 -60
- package/src/modules/workspace/watcher.ts +8 -3
- package/src/prose-drafts.ts +4 -3
- package/src/reasoning-loss-notice.ts +62 -0
- package/src/reasoning-loss.ts +120 -0
- package/src/send-tools.ts +3 -2
- package/src/sent-rows.ts +162 -0
- package/src/silent-heartbeat.ts +17 -10
- package/src/stable-hash.ts +14 -0
- package/src/stored-injections.ts +131 -0
- package/src/text-as-stored.ts +4 -3
- package/src/thinking-drops.ts +135 -0
- package/src/tool-args.ts +34 -1
- package/src/tool-image-ledger.ts +9 -8
- package/src/tool-presentation.ts +3 -1
- package/src/tool-result-guard.ts +45 -17
- package/src/tool-result-history.ts +471 -90
- package/src/tune-out/coordinator.ts +80 -37
- package/src/tune-out/tools.ts +4 -1
- package/src/types/agent.ts +220 -7
- package/src/types/events.ts +33 -9
- package/src/types/framework.ts +36 -3
- package/src/types/module.ts +91 -9
- package/src/types/trace.ts +94 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"silent-heartbeat.js","sourceRoot":"","sources":["../../src/silent-heartbeat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"silent-heartbeat.js","sourceRoot":"","sources":["../../src/silent-heartbeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-hash.d.ts","sourceRoot":"","sources":["../../src/stable-hash.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUjD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/** A SHA-256 of `value` that doesn't depend on its objects' key order. */
|
|
3
|
+
export function stableHash(value) {
|
|
4
|
+
const encode = (item) => {
|
|
5
|
+
if (Array.isArray(item))
|
|
6
|
+
return `[${item.map(encode).join(',')}]`;
|
|
7
|
+
if (item && typeof item === 'object') {
|
|
8
|
+
const record = item;
|
|
9
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${encode(record[key])}`).join(',')}}`;
|
|
10
|
+
}
|
|
11
|
+
return JSON.stringify(item) ?? 'null';
|
|
12
|
+
};
|
|
13
|
+
return createHash('sha256').update(encode(value)).digest('hex');
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=stable-hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stable-hash.js","sourceRoot":"","sources":["../../src/stable-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,MAAM,MAAM,GAAG,CAAC,IAAa,EAAU,EAAE;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAClE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAA+B,CAAC;YAC/C,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACnH,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IACxC,CAAC,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context injections kept where they were placed (context-manager #155,
|
|
3
|
+
* part 5).
|
|
4
|
+
*
|
|
5
|
+
* `compile()` places an `afterUser` injection after the last user message
|
|
6
|
+
* each time it runs, and nothing stores it. So at the next start, a new turn
|
|
7
|
+
* or a restart after a tool result, it's gone from where the agent's replies
|
|
8
|
+
* saw it, and on a model that binds a reply's thinking to everything before
|
|
9
|
+
* it, every reply after the old place loses its thinking. A moved injection
|
|
10
|
+
* also rewrites the previous turn's cached prefix. So at each start that
|
|
11
|
+
* sends, the framework appends each `afterUser` injection to the agent's own
|
|
12
|
+
* window, as the message `compile()` would have placed, unless the copy the
|
|
13
|
+
* agent will read as current (the one its last request held, or a newer one
|
|
14
|
+
* a start stored whose compile then didn't record) has the same content,
|
|
15
|
+
* every part of it, and the compile
|
|
16
|
+
* then renders
|
|
17
|
+
* it from the store like any message, where it stays. While the window is
|
|
18
|
+
* held (AgentFramework's slotHeldFrom), `compile()` places it instead. Being a
|
|
19
|
+
* message, it's history to the strategy: capped by its per-message bound,
|
|
20
|
+
* sharded, selected by the budget and folded like any other.
|
|
21
|
+
*
|
|
22
|
+
* A stored injection's row carries `system: true`, `kind:
|
|
23
|
+
* 'context-injection'` and `contextInjection` in its metadata (the mark),
|
|
24
|
+
* naming the agent whose context it is and its source's namespace, so a
|
|
25
|
+
* reader can tell it from conversation, and so another agent reading the
|
|
26
|
+
* same slot leaves it out (AgentFramework's view filters). All three are
|
|
27
|
+
* keys only the host writes.
|
|
28
|
+
*/
|
|
29
|
+
import type { ContextInjection } from '@animalabs/context-manager';
|
|
30
|
+
/** The metadata key a stored injection's row is marked with. */
|
|
31
|
+
export declare const STORED_INJECTION_KEY = "contextInjection";
|
|
32
|
+
/** The `kind` a stored injection's row carries beside `system: true`, as the
|
|
33
|
+
* framework's other rows of its own do (a clock row, a notice). */
|
|
34
|
+
export declare const STORED_INJECTION_KIND = "context-injection";
|
|
35
|
+
/**
|
|
36
|
+
* The mark: whose context the row is, its source's namespace, a hash of the
|
|
37
|
+
* content its source gave at that start (the unit), in its stored form
|
|
38
|
+
* (unitHash), and which of the unit's `parts` injections the row holds
|
|
39
|
+
* (`part`, from 0). Every row of one injection, a sharded one's too, carries
|
|
40
|
+
* the same `part`.
|
|
41
|
+
*/
|
|
42
|
+
export interface StoredInjectionMark {
|
|
43
|
+
agent: string;
|
|
44
|
+
namespace: string;
|
|
45
|
+
contentHash: string;
|
|
46
|
+
part: number;
|
|
47
|
+
parts: number;
|
|
48
|
+
}
|
|
49
|
+
/** The participant `compile()` gives an injection it places, which a stored
|
|
50
|
+
* one keeps, so it renders as the placed one did. */
|
|
51
|
+
export declare function injectionParticipant(namespace: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* A stored injection's mark, read from a row's metadata, so a host's reader
|
|
54
|
+
* tells a stored injection from conversation by the rule the framework's own
|
|
55
|
+
* views use. Undefined for a row with no mark, and for one whose mark isn't
|
|
56
|
+
* whole (a string `agent`, `namespace` and `contentHash`, and integer
|
|
57
|
+
* `part` and `parts` with 0 <= part < parts): no view of the framework's
|
|
58
|
+
* treats such a row as a stored injection, so neither should a host's.
|
|
59
|
+
*/
|
|
60
|
+
export declare function storedInjectionMarkOf(metadata: unknown): StoredInjectionMark | undefined;
|
|
61
|
+
/** Whether a row is another agent's stored injection, which `agentName`'s
|
|
62
|
+
* view leaves out: it's that agent's context, not conversation. */
|
|
63
|
+
export declare function isAnotherAgentsInjection(metadata: unknown, agentName: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Whether an injection is stored, rather than placed by `compile()` each
|
|
66
|
+
* time: an `afterUser` one, unless it opts out
|
|
67
|
+
* (ModuleContextInjection.placedEachCompile). Only a module's can: an MCPL
|
|
68
|
+
* server's is built from four fields alone (convertMcplInjection), so it
|
|
69
|
+
* never carries the field.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isStoredKind(injection: ContextInjection): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Whether content leaves anything in a request: a block that isn't a text
|
|
74
|
+
* block, or a text block with non-blank text, as the request's sanitizer
|
|
75
|
+
* keeps (Agent's assembleActivationRequest drops blank text blocks, and a
|
|
76
|
+
* message left with none). An injection with none isn't stored: its row
|
|
77
|
+
* would vanish from every request, and the count of stored rows the
|
|
78
|
+
* request ends on, which keeps [Continue] last, would then be wrong.
|
|
79
|
+
* compile() places it, and the sanitizer drops it, as before.
|
|
80
|
+
*/
|
|
81
|
+
export declare function hasRenderedContent(content: ContextInjection['content']): boolean;
|
|
82
|
+
/** One injection as its row would store it: its namespace as text (as
|
|
83
|
+
* compile() writes it into the participant's name, so one that isn't a
|
|
84
|
+
* string, an MCPL server's number or none, is read so), that participant,
|
|
85
|
+
* and its content in the stored form (injectionsAsStored), as the compile
|
|
86
|
+
* would have taken it. The store's write would mend the content the same
|
|
87
|
+
* way; the namespace, which the mark carries too, it wouldn't. */
|
|
88
|
+
export declare function asStoredRow(injection: ContextInjection): {
|
|
89
|
+
namespace: string;
|
|
90
|
+
participant: string;
|
|
91
|
+
content: ContextInjection['content'];
|
|
92
|
+
};
|
|
93
|
+
/** The hash of a unit's content in its stored form, which the same-content
|
|
94
|
+
* skip compares: the mark's, from the gather that stored the unit, with
|
|
95
|
+
* this gather's. */
|
|
96
|
+
export declare function unitHash(rows: ReadonlyArray<{
|
|
97
|
+
content: ContextInjection['content'];
|
|
98
|
+
}>): string;
|
|
99
|
+
//# sourceMappingURL=stored-injections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stored-injections.d.ts","sourceRoot":"","sources":["../../src/stored-injections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AAEvD;oEACoE;AACpE,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;sDACsD;AACtD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAQxF;AAED;oEACoE;AACpE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGtF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAGjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,OAAO,CAIhF;AAED;;;;;mEAKmE;AACnE,wBAAgB,WAAW,CAAC,SAAS,EAAE,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;CAAE,CAIzI;AAED;;qBAEqB;AACrB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;CAAE,CAAC,GAAG,MAAM,CAE9F"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context injections kept where they were placed (context-manager #155,
|
|
3
|
+
* part 5).
|
|
4
|
+
*
|
|
5
|
+
* `compile()` places an `afterUser` injection after the last user message
|
|
6
|
+
* each time it runs, and nothing stores it. So at the next start, a new turn
|
|
7
|
+
* or a restart after a tool result, it's gone from where the agent's replies
|
|
8
|
+
* saw it, and on a model that binds a reply's thinking to everything before
|
|
9
|
+
* it, every reply after the old place loses its thinking. A moved injection
|
|
10
|
+
* also rewrites the previous turn's cached prefix. So at each start that
|
|
11
|
+
* sends, the framework appends each `afterUser` injection to the agent's own
|
|
12
|
+
* window, as the message `compile()` would have placed, unless the copy the
|
|
13
|
+
* agent will read as current (the one its last request held, or a newer one
|
|
14
|
+
* a start stored whose compile then didn't record) has the same content,
|
|
15
|
+
* every part of it, and the compile
|
|
16
|
+
* then renders
|
|
17
|
+
* it from the store like any message, where it stays. While the window is
|
|
18
|
+
* held (AgentFramework's slotHeldFrom), `compile()` places it instead. Being a
|
|
19
|
+
* message, it's history to the strategy: capped by its per-message bound,
|
|
20
|
+
* sharded, selected by the budget and folded like any other.
|
|
21
|
+
*
|
|
22
|
+
* A stored injection's row carries `system: true`, `kind:
|
|
23
|
+
* 'context-injection'` and `contextInjection` in its metadata (the mark),
|
|
24
|
+
* naming the agent whose context it is and its source's namespace, so a
|
|
25
|
+
* reader can tell it from conversation, and so another agent reading the
|
|
26
|
+
* same slot leaves it out (AgentFramework's view filters). All three are
|
|
27
|
+
* keys only the host writes.
|
|
28
|
+
*/
|
|
29
|
+
import { stableHash } from './stable-hash.js';
|
|
30
|
+
import { injectionsAsStored } from './text-as-stored.js';
|
|
31
|
+
/** The metadata key a stored injection's row is marked with. */
|
|
32
|
+
export const STORED_INJECTION_KEY = 'contextInjection';
|
|
33
|
+
/** The `kind` a stored injection's row carries beside `system: true`, as the
|
|
34
|
+
* framework's other rows of its own do (a clock row, a notice). */
|
|
35
|
+
export const STORED_INJECTION_KIND = 'context-injection';
|
|
36
|
+
/** The participant `compile()` gives an injection it places, which a stored
|
|
37
|
+
* one keeps, so it renders as the placed one did. */
|
|
38
|
+
export function injectionParticipant(namespace) {
|
|
39
|
+
return `system_context:${namespace}`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A stored injection's mark, read from a row's metadata, so a host's reader
|
|
43
|
+
* tells a stored injection from conversation by the rule the framework's own
|
|
44
|
+
* views use. Undefined for a row with no mark, and for one whose mark isn't
|
|
45
|
+
* whole (a string `agent`, `namespace` and `contentHash`, and integer
|
|
46
|
+
* `part` and `parts` with 0 <= part < parts): no view of the framework's
|
|
47
|
+
* treats such a row as a stored injection, so neither should a host's.
|
|
48
|
+
*/
|
|
49
|
+
export function storedInjectionMarkOf(metadata) {
|
|
50
|
+
const mark = metadata?.[STORED_INJECTION_KEY];
|
|
51
|
+
if (mark === null || typeof mark !== 'object')
|
|
52
|
+
return undefined;
|
|
53
|
+
const { agent, namespace, contentHash, part, parts } = mark;
|
|
54
|
+
return typeof agent === 'string' && typeof namespace === 'string' && typeof contentHash === 'string'
|
|
55
|
+
&& Number.isInteger(part) && Number.isInteger(parts) && part >= 0 && part < parts
|
|
56
|
+
? { agent, namespace, contentHash, part: part, parts: parts }
|
|
57
|
+
: undefined;
|
|
58
|
+
}
|
|
59
|
+
/** Whether a row is another agent's stored injection, which `agentName`'s
|
|
60
|
+
* view leaves out: it's that agent's context, not conversation. */
|
|
61
|
+
export function isAnotherAgentsInjection(metadata, agentName) {
|
|
62
|
+
const mark = storedInjectionMarkOf(metadata);
|
|
63
|
+
return mark !== undefined && mark.agent !== agentName;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Whether an injection is stored, rather than placed by `compile()` each
|
|
67
|
+
* time: an `afterUser` one, unless it opts out
|
|
68
|
+
* (ModuleContextInjection.placedEachCompile). Only a module's can: an MCPL
|
|
69
|
+
* server's is built from four fields alone (convertMcplInjection), so it
|
|
70
|
+
* never carries the field.
|
|
71
|
+
*/
|
|
72
|
+
export function isStoredKind(injection) {
|
|
73
|
+
return injection.position === 'afterUser'
|
|
74
|
+
&& injection.placedEachCompile !== true;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Whether content leaves anything in a request: a block that isn't a text
|
|
78
|
+
* block, or a text block with non-blank text, as the request's sanitizer
|
|
79
|
+
* keeps (Agent's assembleActivationRequest drops blank text blocks, and a
|
|
80
|
+
* message left with none). An injection with none isn't stored: its row
|
|
81
|
+
* would vanish from every request, and the count of stored rows the
|
|
82
|
+
* request ends on, which keeps [Continue] last, would then be wrong.
|
|
83
|
+
* compile() places it, and the sanitizer drops it, as before.
|
|
84
|
+
*/
|
|
85
|
+
export function hasRenderedContent(content) {
|
|
86
|
+
return Array.isArray(content) && content.some((block) => !(block.type === 'text'
|
|
87
|
+
&& (typeof block.text !== 'string' || (block.text).trim() === '')));
|
|
88
|
+
}
|
|
89
|
+
/** One injection as its row would store it: its namespace as text (as
|
|
90
|
+
* compile() writes it into the participant's name, so one that isn't a
|
|
91
|
+
* string, an MCPL server's number or none, is read so), that participant,
|
|
92
|
+
* and its content in the stored form (injectionsAsStored), as the compile
|
|
93
|
+
* would have taken it. The store's write would mend the content the same
|
|
94
|
+
* way; the namespace, which the mark carries too, it wouldn't. */
|
|
95
|
+
export function asStoredRow(injection) {
|
|
96
|
+
const [stored] = injectionsAsStored([injection]);
|
|
97
|
+
const namespace = `${stored.namespace}`;
|
|
98
|
+
return { namespace, participant: injectionParticipant(namespace), content: stored.content };
|
|
99
|
+
}
|
|
100
|
+
/** The hash of a unit's content in its stored form, which the same-content
|
|
101
|
+
* skip compares: the mark's, from the gather that stored the unit, with
|
|
102
|
+
* this gather's. */
|
|
103
|
+
export function unitHash(rows) {
|
|
104
|
+
return stableHash(rows.map((r) => r.content));
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=stored-injections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stored-injections.js","sourceRoot":"","sources":["../../src/stored-injections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD;oEACoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAiBzD;sDACsD;AACtD,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,kBAAkB,SAAS,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACrD,MAAM,IAAI,GAAI,QAAgD,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACvF,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAA+B,CAAC;IACvF,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ;WAC/F,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAK,IAAe,IAAI,CAAC,IAAK,IAAe,GAAI,KAAgB;QACrH,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAc,EAAE,KAAK,EAAE,KAAe,EAAE;QACjF,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;oEACoE;AACpE,MAAM,UAAU,wBAAwB,CAAC,QAAiB,EAAE,SAAiB;IAC3E,MAAM,IAAI,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,SAA2B;IACtD,OAAO,SAAS,CAAC,QAAQ,KAAK,WAAW;WACnC,SAA6C,CAAC,iBAAiB,KAAK,IAAI,CAAC;AACjF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAoC;IACrE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACtD,CAAC,CAAE,KAA4B,CAAC,IAAI,KAAK,MAAM;WAC1C,CAAC,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAE,KAA0B,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACxH,CAAC;AAED;;;;;mEAKmE;AACnE,MAAM,UAAU,WAAW,CAAC,SAA2B;IACrD,MAAM,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAE,CAAC;IAClD,MAAM,SAAS,GAAG,GAAG,MAAO,CAAC,SAAS,EAAE,CAAC;IACzC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAO,CAAC,OAAO,EAAE,CAAC;AAC/F,CAAC;AAED;;qBAEqB;AACrB,MAAM,UAAU,QAAQ,CAAC,IAA6D;IACpF,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* request compiles comes from the store, which writes a lone UTF-16
|
|
5
5
|
* surrogate as U+FFFD, and a provider refuses a request carrying one (#695).
|
|
6
6
|
* Two things reach a request without the store, and each is made well formed
|
|
7
|
-
* where it leaves for it: context injections
|
|
8
|
-
*
|
|
9
|
-
* they go to
|
|
7
|
+
* where it leaves for it: context injections compile() places (those not
|
|
8
|
+
* stored, stored-injections.ts), as an Agent compiles them into a request,
|
|
9
|
+
* and the copies a tool boundary injects into the live round, as they go to
|
|
10
|
+
* the stream. A stored injection takes the same form before it's stored.
|
|
10
11
|
*/
|
|
11
12
|
import type { ContentBlock } from '@animalabs/membrane';
|
|
12
13
|
import type { ContextInjection } from '@animalabs/context-manager';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-as-stored.d.ts","sourceRoot":"","sources":["../../src/text-as-stored.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"text-as-stored.d.ts","sourceRoot":"","sources":["../../src/text-as-stored.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA2BnE;8CAC8C;AAC9C,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAEvE;AAED;;;;gDAIgD;AAChD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;0BAO0B;AAC1B,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAU7G"}
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* request compiles comes from the store, which writes a lone UTF-16
|
|
5
5
|
* surrogate as U+FFFD, and a provider refuses a request carrying one (#695).
|
|
6
6
|
* Two things reach a request without the store, and each is made well formed
|
|
7
|
-
* where it leaves for it: context injections
|
|
8
|
-
*
|
|
9
|
-
* they go to
|
|
7
|
+
* where it leaves for it: context injections compile() places (those not
|
|
8
|
+
* stored, stored-injections.ts), as an Agent compiles them into a request,
|
|
9
|
+
* and the copies a tool boundary injects into the live round, as they go to
|
|
10
|
+
* the stream. A stored injection takes the same form before it's stored.
|
|
10
11
|
*/
|
|
11
12
|
/** A value with every string in it as the context store keeps it, through
|
|
12
13
|
* arrays and plain objects. Keys, and objects that aren't plain, pass as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-as-stored.js","sourceRoot":"","sources":["../../src/text-as-stored.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"text-as-stored.js","sourceRoot":"","sources":["../../src/text-as-stored.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { NormalizedMessage, ThinkingBindingEntry } from '@animalabs/membrane';
|
|
2
|
+
import type { CompileProvenance, MessageId } from '@animalabs/context-manager';
|
|
3
|
+
/**
|
|
4
|
+
* Where a block the provider dropped (membrane's `RoundReport.thinking.dropped`) came from.
|
|
5
|
+
*
|
|
6
|
+
* - `reply`: a block of a stored reply the compile rendered. `bodies` are the stored bodies that compiled message
|
|
7
|
+
* was rendered from (`CompileProvenance`'s raw bodies), each by the id `addMessage` returned for it and its
|
|
8
|
+
* sequence (a body kept in shards is one, by its first shard): usually one. Where the block's signature is in
|
|
9
|
+
* more than one compiled message, it's every one of theirs, since the block alone can't tell them apart.
|
|
10
|
+
* - `round`: a block of a round this stream appended itself (the entry's `round`), which no compile holds.
|
|
11
|
+
* - `unplaced`: membrane couldn't place it, or it names a block this request didn't send from a stored reply:
|
|
12
|
+
* an injected message's, one whose compiled message has no raw body (a summary), or one whose signature no
|
|
13
|
+
* compiled block carries.
|
|
14
|
+
*/
|
|
15
|
+
export type PlacedDrop = {
|
|
16
|
+
kind: 'reply';
|
|
17
|
+
bodies: Array<{
|
|
18
|
+
messageId: MessageId;
|
|
19
|
+
sequence: number;
|
|
20
|
+
}>;
|
|
21
|
+
entry: ThinkingBindingEntry;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'round';
|
|
24
|
+
round: number;
|
|
25
|
+
entry: ThinkingBindingEntry;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'unplaced';
|
|
28
|
+
entry: ThinkingBindingEntry;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* What a request was assembled from: the compile's messages as it returned them, its provenance, and, when the
|
|
32
|
+
* compile gave one, the sequence at or below which a reply was stored before the branch's thinking-binding record
|
|
33
|
+
* began (context-manager's `CompileResult.thinkingRecordedAfter`, where it keeps a thinking-binding record).
|
|
34
|
+
*/
|
|
35
|
+
export interface CompiledForRequest {
|
|
36
|
+
messages: readonly NormalizedMessage[];
|
|
37
|
+
provenance?: CompileProvenance;
|
|
38
|
+
recordedAfter?: number;
|
|
39
|
+
}
|
|
40
|
+
/** What a stream's driver reads a call's dropped blocks against (`StartStreamResult`'s fields, together). */
|
|
41
|
+
export interface StreamThinkingDrops {
|
|
42
|
+
place: (entries: readonly ThinkingBindingEntry[]) => PlacedDrop[];
|
|
43
|
+
recordedAfter?: number;
|
|
44
|
+
branch?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Place each dropped entry of one call. membrane places a block by the request's message and the block's
|
|
48
|
+
* index in it; the request holds copies of the compile's messages (the sanitize pass, `withoutTokenEstimates`,
|
|
49
|
+
* the request-only rows and `prepareRequest` each copy or move them), so the block is found again in the
|
|
50
|
+
* compile by its signature (or a redacted block's data), which every copy keeps, and the compiled message's
|
|
51
|
+
* provenance names the stored reply.
|
|
52
|
+
*/
|
|
53
|
+
export declare function placeThinkingDrops(entries: readonly ThinkingBindingEntry[], sent: readonly NormalizedMessage[], compiled: CompiledForRequest): PlacedDrop[];
|
|
54
|
+
/**
|
|
55
|
+
* A call's placed drops against the branch's binding-record start (`thinkingRecordedAfter`). Expected: a block of a
|
|
56
|
+
* stored reply whose every body sits at or below it, minted before the context manager recorded what the branch
|
|
57
|
+
* sent, so the provider may drop its thinking with no strip having missed; and a drop for a binding the record
|
|
58
|
+
* doesn't track, the account's organization or end user (`organization_binding_mismatch`,
|
|
59
|
+
* `end_user_binding_mismatch`). Unexpected: everything else, which the record doesn't account for: a reply above
|
|
60
|
+
* the start, a block of the stream's own rounds, or one that couldn't be placed, for a conversation or model
|
|
61
|
+
* mismatch or a reason not known here.
|
|
62
|
+
*/
|
|
63
|
+
export declare function splitThinkingDrops(placed: readonly PlacedDrop[], recordedAfter: number): {
|
|
64
|
+
expected: PlacedDrop[];
|
|
65
|
+
unexpected: PlacedDrop[];
|
|
66
|
+
};
|
|
67
|
+
export declare class ThinkingLossIncidents {
|
|
68
|
+
private readonly alerted;
|
|
69
|
+
/** A call's report of `count` drops for `agent` in `scope`: the count to alert with, or undefined for no alert. */
|
|
70
|
+
observe(agent: string, count: number, scope?: string): number | undefined;
|
|
71
|
+
/** The agent is gone: its incident, if one is open, ends with it. */
|
|
72
|
+
forget(agent: string): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=thinking-drops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking-drops.d.ts","sourceRoot":"","sources":["../../src/thinking-drops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GACzG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,6GAA6G;AAC7G,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,KAAK,UAAU,EAAE,CAAC;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAClC,QAAQ,EAAE,kBAAkB,GAC3B,UAAU,EAAE,CA+Bd;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,aAAa,EAAE,MAAM,GACpB;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,UAAU,EAAE,CAAA;CAAE,CAQtD;AAKD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmE;IAE3F,mHAAmH;IACnH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASxE;IAED,qEAAqE;IACrE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE1B;CACF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** A signed block's identity on the wire: a thinking block's signature, a redacted block's data. */
|
|
2
|
+
function bindingKey(block) {
|
|
3
|
+
const b = block;
|
|
4
|
+
if (b?.type === 'thinking' && typeof b.signature === 'string' && b.signature.length > 0)
|
|
5
|
+
return `s:${b.signature}`;
|
|
6
|
+
if (b?.type === 'redacted_thinking' && typeof b.data === 'string' && b.data.length > 0)
|
|
7
|
+
return `d:${b.data}`;
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Place each dropped entry of one call. membrane places a block by the request's message and the block's
|
|
12
|
+
* index in it; the request holds copies of the compile's messages (the sanitize pass, `withoutTokenEstimates`,
|
|
13
|
+
* the request-only rows and `prepareRequest` each copy or move them), so the block is found again in the
|
|
14
|
+
* compile by its signature (or a redacted block's data), which every copy keeps, and the compiled message's
|
|
15
|
+
* provenance names the stored reply.
|
|
16
|
+
*/
|
|
17
|
+
export function placeThinkingDrops(entries, sent, compiled) {
|
|
18
|
+
let byKey;
|
|
19
|
+
const compiledIndexes = (key) => {
|
|
20
|
+
if (!byKey) {
|
|
21
|
+
byKey = new Map();
|
|
22
|
+
compiled.messages.forEach((message, i) => {
|
|
23
|
+
for (const block of message.content) {
|
|
24
|
+
const k = bindingKey(block);
|
|
25
|
+
if (k === undefined)
|
|
26
|
+
continue;
|
|
27
|
+
const at = byKey.get(k);
|
|
28
|
+
if (!at)
|
|
29
|
+
byKey.set(k, [i]);
|
|
30
|
+
else if (at.at(-1) !== i)
|
|
31
|
+
at.push(i);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return byKey.get(key) ?? [];
|
|
36
|
+
};
|
|
37
|
+
return entries.map((entry) => {
|
|
38
|
+
if (entry.round !== undefined)
|
|
39
|
+
return { kind: 'round', round: entry.round, entry };
|
|
40
|
+
if (entry.message === undefined || entry.block === undefined)
|
|
41
|
+
return { kind: 'unplaced', entry };
|
|
42
|
+
const key = bindingKey(sent[entry.message]?.content[entry.block]);
|
|
43
|
+
const bodies = [];
|
|
44
|
+
for (const at of key === undefined ? [] : compiledIndexes(key)) {
|
|
45
|
+
const source = compiled.provenance?.messages[at];
|
|
46
|
+
// A candidate with no stored body (a summary's) can't be placed, so neither can the block.
|
|
47
|
+
if (source?.kind !== 'raw' || source.bodies.length === 0)
|
|
48
|
+
return { kind: 'unplaced', entry };
|
|
49
|
+
for (const body of source.bodies)
|
|
50
|
+
bodies.push({ messageId: body.messageId, sequence: body.sequence });
|
|
51
|
+
}
|
|
52
|
+
if (bodies.length === 0)
|
|
53
|
+
return { kind: 'unplaced', entry };
|
|
54
|
+
return { kind: 'reply', bodies, entry };
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A call's placed drops against the branch's binding-record start (`thinkingRecordedAfter`). Expected: a block of a
|
|
59
|
+
* stored reply whose every body sits at or below it, minted before the context manager recorded what the branch
|
|
60
|
+
* sent, so the provider may drop its thinking with no strip having missed; and a drop for a binding the record
|
|
61
|
+
* doesn't track, the account's organization or end user (`organization_binding_mismatch`,
|
|
62
|
+
* `end_user_binding_mismatch`). Unexpected: everything else, which the record doesn't account for: a reply above
|
|
63
|
+
* the start, a block of the stream's own rounds, or one that couldn't be placed, for a conversation or model
|
|
64
|
+
* mismatch or a reason not known here.
|
|
65
|
+
*/
|
|
66
|
+
export function splitThinkingDrops(placed, recordedAfter) {
|
|
67
|
+
const expected = [];
|
|
68
|
+
const unexpected = [];
|
|
69
|
+
for (const drop of placed) {
|
|
70
|
+
const before = drop.kind === 'reply' && drop.bodies.every((body) => body.sequence <= recordedAfter);
|
|
71
|
+
(before || UNTRACKED_REASONS.has(drop.entry.reason) ? expected : unexpected).push(drop);
|
|
72
|
+
}
|
|
73
|
+
return { expected, unexpected };
|
|
74
|
+
}
|
|
75
|
+
/** Binding failures the context manager's record doesn't track: the account's, not the conversation's. */
|
|
76
|
+
const UNTRACKED_REASONS = new Set(['organization_binding_mismatch', 'end_user_binding_mismatch']);
|
|
77
|
+
export class ThinkingLossIncidents {
|
|
78
|
+
alerted = new Map();
|
|
79
|
+
/** A call's report of `count` drops for `agent` in `scope`: the count to alert with, or undefined for no alert. */
|
|
80
|
+
observe(agent, count, scope) {
|
|
81
|
+
const open = this.alerted.get(agent);
|
|
82
|
+
if (count === 0) {
|
|
83
|
+
this.alerted.delete(agent);
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
if (open && open.scope === scope && count <= open.count)
|
|
87
|
+
return undefined;
|
|
88
|
+
this.alerted.set(agent, { count, scope });
|
|
89
|
+
return count;
|
|
90
|
+
}
|
|
91
|
+
/** The agent is gone: its incident, if one is open, ends with it. */
|
|
92
|
+
forget(agent) {
|
|
93
|
+
this.alerted.delete(agent);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=thinking-drops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking-drops.js","sourceRoot":"","sources":["../../src/thinking-drops.ts"],"names":[],"mappings":"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"}
|
package/dist/src/tool-args.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { ToolDefinition } from './types/index.js';
|
|
2
|
+
export declare function markedInputRefusal(call: {
|
|
3
|
+
name: string;
|
|
4
|
+
unparseableInput?: string;
|
|
5
|
+
}): string | undefined;
|
|
6
|
+
export declare function cutOffRefusal(call: {
|
|
7
|
+
name: string;
|
|
8
|
+
}): string;
|
|
9
|
+
export declare function asCalled<T extends {
|
|
10
|
+
name: string;
|
|
11
|
+
input?: unknown;
|
|
12
|
+
unparseableInput?: string;
|
|
13
|
+
}>(call: T): T;
|
|
2
14
|
/**
|
|
3
15
|
* What's wrong with a call's input against its tool's declared inputSchema,
|
|
4
16
|
* checked shallowly: the input is an object, and each root `required` key has
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-args.d.ts","sourceRoot":"","sources":["../../src/tool-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-args.d.ts","sourceRoot":"","sources":["../../src/tool-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAyEvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAkBxG;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAG5D;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAE3G;AA8DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,SAAS,EACjD,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,MAAM,EAAE,CA6CV"}
|
package/dist/src/tool-args.js
CHANGED
|
@@ -66,6 +66,40 @@ function shown(value) {
|
|
|
66
66
|
}
|
|
67
67
|
return head;
|
|
68
68
|
}
|
|
69
|
+
function notAnObject(input, field = 'input') {
|
|
70
|
+
return `its ${field} must be an object, and this call gave ${withArticle(kindOf(input))}`;
|
|
71
|
+
}
|
|
72
|
+
export function markedInputRefusal(call) {
|
|
73
|
+
const text = call.unparseableInput;
|
|
74
|
+
if (text === undefined)
|
|
75
|
+
return undefined;
|
|
76
|
+
// When a stream ends before a call's block stops, membrane marks the call
|
|
77
|
+
// with what had arrived of its arguments: nothing, a part, or a whole
|
|
78
|
+
// object. A block still open when a stream breaks the API's block order
|
|
79
|
+
// is marked the same way, and one that had stopped with its object's JSON,
|
|
80
|
+
// so the arguments may be another call's (ToolUseContent.unparseableInput).
|
|
81
|
+
if (/^[ \t\n\r]*$/.test(text))
|
|
82
|
+
return `Nothing was done: ${call.name} its arguments never arrived; call it again with them whole.`;
|
|
83
|
+
let parsed;
|
|
84
|
+
try {
|
|
85
|
+
parsed = JSON.parse(text);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return `Nothing was done: ${call.name} its arguments must be one JSON object, and this call gave text that isn't JSON, which may have been cut off: ${shown(text)}; call it again with one JSON object.`;
|
|
89
|
+
}
|
|
90
|
+
if (parsed === null)
|
|
91
|
+
return undefined;
|
|
92
|
+
if (typeof parsed !== 'object' || Array.isArray(parsed))
|
|
93
|
+
return `Nothing was done: ${call.name} ${notAnObject(parsed)}.`;
|
|
94
|
+
return `Nothing was done: ${call.name} its arguments came in a response that didn't arrive whole and in order, so they can't be taken as this call's; call it again.`;
|
|
95
|
+
}
|
|
96
|
+
export function cutOffRefusal(call) {
|
|
97
|
+
return `Nothing was done: ${call.name} didn't run, because the response it was in was cut off at the output limit. ` +
|
|
98
|
+
'To make the call, send less in one response: shorter text before it, shorter arguments, or fewer calls at once.';
|
|
99
|
+
}
|
|
100
|
+
export function asCalled(call) {
|
|
101
|
+
return call.unparseableInput !== undefined && markedInputRefusal(call) === undefined ? { ...call, input: {} } : call;
|
|
102
|
+
}
|
|
69
103
|
/** A list in prose: `a`, `a or b`, `a, b or c`. */
|
|
70
104
|
function oneOf(items) {
|
|
71
105
|
return items.length <= 1 ? items.join('') : `${items.slice(0, -1).join(', ')} or ${items[items.length - 1]}`;
|
|
@@ -157,7 +191,7 @@ export function toolArgsProblems(input, schema, options = {}) {
|
|
|
157
191
|
return [];
|
|
158
192
|
const absent = input === undefined || input === null;
|
|
159
193
|
if (!absent && (typeof input !== 'object' || Array.isArray(input))) {
|
|
160
|
-
return [
|
|
194
|
+
return [notAnObject(input, options.field)];
|
|
161
195
|
}
|
|
162
196
|
const obj = (absent ? {} : input);
|
|
163
197
|
const properties = (isMap(schema.properties) ? schema.properties : {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-args.js","sourceRoot":"","sources":["../../src/tool-args.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-args.js","sourceRoot":"","sources":["../../src/tool-args.ts"],"names":[],"mappings":"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"}
|