@desplega.ai/agent-swarm 1.150.0 → 1.151.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 +11 -0
- package/dist/{acp-adapter-d5mzggyk.js → acp-adapter-ex8hzjfc.js} +5 -5
- package/dist/{actions-wn6ew0p7.js → actions-2bgpyhww.js} +38 -11
- package/dist/{anthropic-messages-ec35ktvx.js → anthropic-messages-2y8nktar.js} +16 -16
- package/dist/{app-dty7p9hg.js → app-1706zhr1.js} +7 -7
- package/dist/{assistant-q4vhgjtx.js → assistant-bavke5p7.js} +41 -16
- package/dist/{azure-openai-responses-g85jv7m8.js → azure-openai-responses-f38x2avq.js} +13 -13
- package/dist/{boot-reembed-92292pgf.js → boot-reembed-3cmrrmpa.js} +8 -8
- package/dist/{boot-reembed-n15q6s9x.js → boot-reembed-nafcmmmc.js} +13 -15
- package/dist/{boot-scrub-logs-44pc955m.js → boot-scrub-logs-cd6a2sq0.js} +5 -5
- package/dist/{claude-adapter-cjegjbje.js → claude-adapter-wfp2gzvz.js} +12 -13
- package/dist/{claude-managed-adapter-p3ts5m9m.js → claude-managed-adapter-dsmkcrjy.js} +3 -3
- package/dist/{claude-sdk-session-7ywbn12v.js → claude-sdk-session-bht9jjak.js} +12 -13
- package/dist/{cli-ceb5y160.js → cli-0qb1z6s2.js} +1 -1
- package/dist/{cli-ryz8q8p1.js → cli-2tbvf1z1.js} +40 -40
- package/dist/{cli-zthatyrx.js → cli-3v9xhjcn.js} +5 -5
- package/dist/{cli-mzb0n642.js → cli-4wppfkcm.js} +350 -20
- package/dist/{cli-3ckzxdt1.js → cli-5jd2z7av.js} +90 -81
- package/dist/{cli-3mh119qv.js → cli-5tpgq60f.js} +9726 -693
- package/dist/{cli-ck1vqzdj.js → cli-7tgcstn2.js} +9 -4
- package/dist/{cli-ttje5a4z.js → cli-9004vfdf.js} +105 -56
- package/dist/{cli-asvrh7kj.js → cli-9xvdm3bx.js} +1 -1
- package/dist/{cli-9gqddmxs.js → cli-a1z3h107.js} +8 -8
- package/dist/{cli-72xdszyx.js → cli-czjtgfys.js} +2 -2
- package/dist/{cli-5my3bjsd.js → cli-d3p82erb.js} +7 -7
- package/dist/{cli-kyysm7m3.js → cli-f1wky6zp.js} +1 -1
- package/dist/{cli-a45d5v9b.js → cli-fm4ytsdk.js} +2 -2
- package/dist/{cli-111ey3ra.js → cli-frcta2w4.js} +5 -5
- package/dist/{cli-h505yhex.js → cli-g69fdc9g.js} +2 -2
- package/dist/{cli-cmp8g3sw.js → cli-gbfwcd3k.js} +44 -9
- package/dist/{cli-hbagregr.js → cli-gjyvhmmh.js} +88 -13
- package/dist/{cli-hmyynq9b.js → cli-ht5rs63n.js} +1 -1
- package/dist/{cli-dyx0237s.js → cli-j4nv2wqy.js} +2 -4
- package/dist/{cli-vr6qj104.js → cli-j9xczhaq.js} +1 -1
- package/dist/cli-pf9q3696.js +172 -0
- package/dist/{cli-7fesa1ky.js → cli-pgj4a5fb.js} +1 -1
- package/dist/{cli-7kwmt3r5.js → cli-ppm4975n.js} +9 -3
- package/dist/{cli-8chp8xab.js → cli-q88st9aj.js} +2 -2
- package/dist/{cli-kt7wevqh.js → cli-r2q6pevn.js} +132 -46
- package/dist/{cli-07jd68a1.js → cli-re8z5p8p.js} +1 -1
- package/dist/{cli-qp69dd5d.js → cli-s14agm5s.js} +105 -12
- package/dist/{cli-zd21jrrc.js → cli-sjaae6ff.js} +9872 -424
- package/dist/{cli-taym3dmg.js → cli-vwm416m6.js} +13 -13
- package/dist/{cli-1mx65de9.js → cli-wbyk465z.js} +1 -1
- package/dist/{cli-n75jt793.js → cli-z61ykvam.js} +6 -5
- package/dist/{cli-gm0fhz13.js → cli-zkxymas5.js} +2 -1
- package/dist/cli.js +22 -21
- package/dist/{codex-adapter-rn3aq7jm.js → codex-adapter-jjjk8w4m.js} +8 -9
- package/dist/{codex-hook-gthcmm0g.js → codex-hook-8jexc34x.js} +2 -2
- package/dist/{codex-session-runner-bge0cbsw.js → codex-session-runner-nd6ayxkx.js} +8 -9
- package/dist/{commands-26phw0pc.js → commands-9v4psyq1.js} +5 -5
- package/dist/{db-jxjx6s1b.js → db-wnt58tpe.js} +5 -5
- package/dist/dispatcher-05jh1aqk.js +74 -0
- package/dist/{google-generative-ai-tsskx7te.js → google-generative-ai-ndjmj5fa.js} +7 -7
- package/dist/{google-vertex-pkhpkbq9.js → google-vertex-fr665tqs.js} +10 -10
- package/dist/handlers-tw90pkh5.js +65 -0
- package/dist/{hook-t6fqsggw.js → hook-123e2scb.js} +9 -10
- package/dist/{hook-jw0ztn96.js → hook-sxe3r349.js} +9 -10
- package/dist/{http-hyc7s57s.js → http-ecsar8ez.js} +1431 -579
- package/dist/{index-sfhaq59d.js → index-16js521z.js} +119 -101
- package/dist/{index-wtwpthe1.js → index-hw26vj40.js} +25 -19
- package/dist/{index-bcyx5djw.js → index-nnrbpcjp.js} +25 -17
- package/dist/index-ymn7em0p.js +25 -0
- package/dist/{index-1d9r6a74.js → index-zj518gf9.js} +26 -20
- package/dist/{keepalive-fbsak4ya.js → keepalive-asqtcm4y.js} +7 -7
- package/dist/{lead-rdzdm627.js → lead-xbfr7fvt.js} +41 -49
- package/dist/{maintenance-25z1c1vf.js → maintenance-qma55qvw.js} +8 -8
- package/dist/{node-209sxmg3.js → node-x1g4v0pq.js} +9 -9
- package/dist/{oauth-refresh-sweep-j3d7gtse.js → oauth-refresh-sweep-3s04c6qw.js} +6 -6
- package/dist/{onboard-dkcwrc75.js → onboard-drskd386.js} +13 -4
- package/dist/{openai-codex-responses-pm5gnyfa.js → openai-codex-responses-wy6a43wd.js} +11 -11
- package/dist/{openai-responses-vwvk1taj.js → openai-responses-6xwf7bzg.js} +13 -13
- package/dist/{opencode-adapter-dce4wskd.js → opencode-adapter-28axqa09.js} +4 -4
- package/dist/{otel-impl-8rgyy3j8.js → otel-impl-943c96er.js} +1 -1
- package/dist/{pi-mono-adapter-4s2bbkgq.js → pi-mono-adapter-jcqt71cg.js} +14 -16
- package/dist/{pricing-refresh-9cek71nq.js → pricing-refresh-mx51az05.js} +7 -7
- package/dist/{rbac-roles-z98s2ypy.js → rbac-roles-78baecqd.js} +13 -9
- package/dist/{rbac-roles-vk8mqp9v.js → rbac-roles-wcmrg6sv.js} +7 -7
- package/dist/{render-v2-3j26g0qh.js → render-v2-8zjntgf5.js} +7 -7
- package/dist/{seed-pricing-7rxhcnzm.js → seed-pricing-jqjs6cws.js} +6 -6
- package/dist/{setup-e2t7vz0c.js → setup-4pks0vfk.js} +2 -2
- package/dist/{work-objects-8d3nd3x2.js → work-objects-wangt792.js} +38 -14
- package/dist/{worker-0x9fn7nq.js → worker-p2mr422x.js} +41 -49
- package/openapi.json +1351 -265
- package/package.json +2 -1
- package/src/agentmail/handlers.ts +95 -71
- package/src/be/db-client.ts +5 -0
- package/src/be/db.ts +11 -3
- package/src/be/extensions/db.ts +461 -0
- package/src/be/extensions/validate.ts +107 -0
- package/src/be/memory/boot-reembed.ts +17 -12
- package/src/be/memory/index.ts +12 -0
- package/src/be/memory/providers/openai-embedding.ts +4 -0
- package/src/be/memory/types.ts +2 -0
- package/src/be/migrations/155_extensions.sql +66 -0
- package/src/be/migrations/156_inbox_item_state_read_at.sql +7 -0
- package/src/be/rbac-roles.ts +3 -2
- package/src/be/scripts/typecheck.ts +52 -38
- package/src/be/seed-skills/index.ts +7 -0
- package/src/be/swarm-config-guard.ts +3 -1
- package/src/commands/onboard/compose-generator.ts +14 -2
- package/src/commands/onboard/env-generator.ts +7 -0
- package/src/commands/runner.ts +1 -1
- package/src/extensions/apply-task-create.ts +135 -0
- package/src/extensions/bundle-path.ts +10 -0
- package/src/extensions/contract-runtime.ts +7 -0
- package/src/extensions/contract-types.generated.ts +4 -0
- package/src/extensions/contract.ts +270 -0
- package/src/extensions/ctx.ts +186 -0
- package/src/extensions/dispatcher.ts +479 -0
- package/src/extensions/identity.ts +44 -0
- package/src/extensions/lifecycle.ts +281 -0
- package/src/extensions/loader.ts +207 -0
- package/src/extensions/post-bridge.ts +161 -0
- package/src/github/handlers.ts +185 -149
- package/src/gitlab/handlers.ts +97 -81
- package/src/heartbeat/heartbeat.ts +152 -83
- package/src/http/agents.ts +1 -1
- package/src/http/all-routes.ts +1 -0
- package/src/http/apps.ts +14 -10
- package/src/http/core.ts +34 -0
- package/src/http/extensions.ts +547 -0
- package/src/http/inbox-state.ts +2 -0
- package/src/http/index.ts +25 -0
- package/src/http/mcp-bridge.ts +96 -62
- package/src/http/mcp.ts +1 -1
- package/src/http/status.ts +6 -4
- package/src/http/tasks.ts +51 -35
- package/src/integrations/kapso/inbound.ts +15 -11
- package/src/jira/sync.ts +26 -18
- package/src/linear/sync.ts +26 -18
- package/src/prompts/session-templates.ts +5 -4
- package/src/rbac/admission.ts +1 -1
- package/src/rbac/elevated-agents.ts +24 -0
- package/src/rbac/legacy-policy.ts +35 -6
- package/src/rbac/permissions.ts +8 -0
- package/src/scheduler/deferred-task-waits.ts +133 -51
- package/src/scheduler/schedule-task.ts +50 -24
- package/src/scheduler/scheduler.ts +4 -2
- package/src/scripts-runtime/executors/native.ts +5 -1
- package/src/scripts-runtime/executors/types.ts +5 -0
- package/src/scripts-runtime/import-allowlist.ts +79 -19
- package/src/scripts-runtime/sdk-allowlist.ts +4 -0
- package/src/scripts-runtime/swarm-config.ts +8 -0
- package/src/scripts-runtime/swarm-sdk.ts +3 -0
- package/src/scripts-runtime/types/stdlib.d.ts +9 -0
- package/src/scripts-runtime/types/swarm-extension.d.ts +562 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +9 -0
- package/src/server.ts +6 -0
- package/src/slack/HEURISTICS.md +1 -1
- package/src/slack/actions.ts +21 -17
- package/src/slack/blocks.ts +1 -1
- package/src/slack/handlers.ts +98 -5
- package/src/slack/inbound-files.ts +6 -2
- package/src/slack/render-v2.ts +171 -35
- package/src/slack/router.ts +13 -3
- package/src/slack/steering.ts +3 -3
- package/src/tasks/errors.ts +9 -0
- package/src/tasks/sibling-awareness.ts +35 -1
- package/src/tasks/worker-follow-up.ts +64 -12
- package/src/tests/base-prompt.test.ts +1 -0
- package/src/tests/deferred-task-wake.test.ts +161 -9
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/env-flag.test.ts +1 -0
- package/src/tests/extensions-db.test.ts +216 -0
- package/src/tests/extensions-dispatcher.test.ts +275 -0
- package/src/tests/extensions-example-heartbeat-remediate.test.ts +69 -0
- package/src/tests/extensions-example-mcp-install.test.ts +63 -0
- package/src/tests/extensions-example-no-exclamation-marks.test.ts +72 -0
- package/src/tests/extensions-example-rewrite-and-suppress.test.ts +70 -0
- package/src/tests/extensions-example-route-slack-channel.test.ts +217 -0
- package/src/tests/extensions-heartbeat.test.ts +291 -0
- package/src/tests/extensions-http.test.ts +431 -0
- package/src/tests/extensions-lead-equivalence.test.ts +49 -0
- package/src/tests/extensions-lifecycle.test.ts +209 -0
- package/src/tests/extensions-loader.test.ts +95 -0
- package/src/tests/extensions-mcp-tools.test.ts +245 -0
- package/src/tests/extensions-pre-task.test.ts +487 -0
- package/src/tests/extensions-run-context.test.ts +41 -0
- package/src/tests/extensions-tool-call.test.ts +288 -0
- package/src/tests/extensions-validate.test.ts +196 -0
- package/src/tests/fixtures/extensions/bad-import/hooks.ts +8 -0
- package/src/tests/fixtures/extensions/bad-import/manifest.json +9 -0
- package/src/tests/fixtures/extensions/bad-return-shape/hooks.ts +10 -0
- package/src/tests/fixtures/extensions/bad-return-shape/manifest.json +9 -0
- package/src/tests/fixtures/extensions/block-tasks-from-source/hooks.ts +22 -0
- package/src/tests/fixtures/extensions/block-tasks-from-source/manifest.json +9 -0
- package/src/tests/fixtures/extensions/ignore-channel/hooks.ts +22 -0
- package/src/tests/fixtures/extensions/ignore-channel/manifest.json +9 -0
- package/src/tests/fixtures/extensions/load.ts +10 -0
- package/src/tests/fixtures/extensions/minimal/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/minimal/manifest.json +9 -0
- package/src/tests/fixtures/extensions/never-fail-long-tasks/hooks.ts +11 -0
- package/src/tests/fixtures/extensions/never-fail-long-tasks/manifest.json +9 -0
- package/src/tests/fixtures/extensions/no-exclamation-marks/hooks.ts +23 -0
- package/src/tests/fixtures/extensions/no-exclamation-marks/manifest.json +9 -0
- package/src/tests/fixtures/extensions/post-logger/hooks.ts +9 -0
- package/src/tests/fixtures/extensions/post-logger/manifest.json +9 -0
- package/src/tests/fixtures/extensions/priority-a/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/priority-a/manifest.json +9 -0
- package/src/tests/fixtures/extensions/priority-b/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/priority-b/manifest.json +9 -0
- package/src/tests/fixtures/extensions/record-only-on-tag/hooks.ts +16 -0
- package/src/tests/fixtures/extensions/record-only-on-tag/manifest.json +9 -0
- package/src/tests/fixtures/extensions/reserved-assets/hooks.ts +5 -0
- package/src/tests/fixtures/extensions/reserved-assets/manifest.json +10 -0
- package/src/tests/fixtures/extensions/rewrite-progress-prefix/hooks.ts +22 -0
- package/src/tests/fixtures/extensions/rewrite-progress-prefix/manifest.json +9 -0
- package/src/tests/fixtures/extensions/rewrite-task-priority/hooks.ts +7 -0
- package/src/tests/fixtures/extensions/rewrite-task-priority/manifest.json +9 -0
- package/src/tests/fixtures/extensions/route-channel-to-agent/hooks.ts +26 -0
- package/src/tests/fixtures/extensions/route-channel-to-agent/manifest.json +9 -0
- package/src/tests/fixtures/extensions/slow/hooks.ts +10 -0
- package/src/tests/fixtures/extensions/slow/manifest.json +9 -0
- package/src/tests/fixtures/extensions/suppress-lead-follow-up/hooks.ts +12 -0
- package/src/tests/fixtures/extensions/suppress-lead-follow-up/manifest.json +9 -0
- package/src/tests/fixtures/extensions/throws/hooks.ts +12 -0
- package/src/tests/fixtures/extensions/throws/manifest.json +9 -0
- package/src/tests/fixtures/extensions/worker-runtime/hooks.ts +5 -0
- package/src/tests/fixtures/extensions/worker-runtime/manifest.json +9 -0
- package/src/tests/memory-edit-authorization.test.ts +32 -0
- package/src/tests/multi-runtime-enabled-stats.test.ts +2 -2
- package/src/tests/multi-runtime-registration.test.ts +14 -14
- package/src/tests/onboard-compose.test.ts +44 -0
- package/src/tests/preload.ts +5 -0
- package/src/tests/rbac-admission.test.ts +18 -3
- package/src/tests/rbac-engine.test.ts +39 -0
- package/src/tests/realtime-room-auth.test.ts +1 -1
- package/src/tests/reload-config.test.ts +44 -0
- package/src/tests/routing-affinity-inventory.test.ts +1 -1
- package/src/tests/script-connections.test.ts +2 -0
- package/src/tests/scripts-boot-reembed.test.ts +4 -0
- package/src/tests/scripts-embeddings.test.ts +4 -0
- package/src/tests/scripts-import-allowlist.test.ts +44 -1
- package/src/tests/scripts-mcp-e2e.test.ts +80 -0
- package/src/tests/scripts-only-gating.test.ts +2 -0
- package/src/tests/scripts-runtime-identity.test.ts +1 -1
- package/src/tests/slack-blocks.test.ts +12 -1
- package/src/tests/slack-render-v2.test.ts +76 -3
- package/src/tests/slack-router.test.ts +17 -2
- package/src/tests/slack-steering.test.ts +19 -0
- package/src/tests/status.test.ts +12 -0
- package/src/tests/steering-enabled.test.ts +6 -8
- package/src/tests/task-tool-preload-mcp.test.ts +4 -1
- package/src/tests/tool-annotations.test.ts +1 -1
- package/src/tests/tool-registrar-no-input.test.ts +42 -1
- package/src/tools/defer-task.ts +1 -1
- package/src/tools/extension-common.ts +84 -0
- package/src/tools/extension-install.ts +65 -0
- package/src/tools/extension-list.ts +66 -0
- package/src/tools/script-common.ts +43 -18
- package/src/tools/send-task.ts +69 -107
- package/src/tools/task-action.ts +43 -22
- package/src/tools/task-tool-ctx.ts +2 -0
- package/src/tools/tool-config.ts +3 -1
- package/src/tools/utils.ts +140 -16
- package/src/types.ts +133 -0
- package/src/utils/multi-runtime.ts +2 -2
- package/src/utils/steering-enabled.ts +4 -4
- package/src/workflows/executors/agent-task.ts +13 -3
- package/templates/extensions/README.md +17 -0
- package/templates/extensions/notify-on-complete/README.md +11 -0
- package/templates/extensions/notify-on-complete/hooks.ts +61 -0
- package/templates/extensions/notify-on-complete/manifest.json +7 -0
- package/templates/extensions/require-ticket-ref/README.md +11 -0
- package/templates/extensions/require-ticket-ref/hooks.ts +30 -0
- package/templates/extensions/require-ticket-ref/manifest.json +7 -0
- package/templates/extensions/require-verification-note/README.md +11 -0
- package/templates/extensions/require-verification-note/hooks.ts +32 -0
- package/templates/extensions/require-verification-note/manifest.json +7 -0
- package/templates/skills/scheduling/content.md +2 -0
- package/templates/skills/swarm-extensions/config.json +14 -0
- package/templates/skills/swarm-extensions/content.md +120 -0
- package/dist/cli-b8x19vbh.js +0 -823
- package/dist/cli-n1yj5fd5.js +0 -164
- package/dist/cli-q04q68be.js +0 -3066
- package/dist/cli-qgm2pfpq.js +0 -6377
- package/dist/cli-rnsr8asm.js +0 -4323
- package/dist/cli-rwp3ksm7.js +0 -545
- package/dist/cli-xjb9wghj.js +0 -668
- package/dist/cli-xvkmedgn.js +0 -332
- package/dist/cli-ydk0wjj8.js +0 -338
- package/dist/handlers-vr1djg4n.js +0 -41
- package/dist/{claude-managed-setup-f5pmsyrp.js → claude-managed-setup-48dwg9bv.js} +3 -3
- package/dist/{cli-81r683bv.js → cli-ch38q5z4.js} +0 -0
- package/dist/{cli-wk0gjrn3.js → cli-kj76p1ez.js} +6 -6
- package/dist/{cli-c71mg51n.js → cli-r2fpe7cx.js} +5 -5
- package/dist/{cli-8qx7jnrk.js → cli-y6x0gqtg.js} +16 -16
- package/dist/{index-aa3sa6s8.js → index-2wsdsnmm.js} +1 -1
- package/dist/{mistral-conversations-4ryk7h83.js → mistral-conversations-qhr84ph3.js} +9 -9
- package/dist/{openai-completions-qdcmkfnr.js → openai-completions-32rdwmze.js} +17 -17
- package/dist/{openrouter-images-qx18fyp8.js → openrouter-images-9f9ek4rw.js} +3 -3
- package/dist/{pi-messages-79jvzz1d.js → pi-messages-b1mbr6gp.js} +4 -4
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
checkOpencodeCredentials
|
|
3
|
-
} from "./cli-5my3bjsd.js";
|
|
4
1
|
import {
|
|
5
2
|
renderSteeringDelivery
|
|
6
|
-
} from "./cli-
|
|
7
|
-
import {
|
|
8
|
-
checkCodexCredentials,
|
|
9
|
-
codexUserHome
|
|
10
|
-
} from "./cli-taym3dmg.js";
|
|
3
|
+
} from "./cli-pgj4a5fb.js";
|
|
11
4
|
import {
|
|
12
5
|
checkClaudeManagedCredentials
|
|
13
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-kj76p1ez.js";
|
|
14
7
|
import {
|
|
15
8
|
checkDevinCredentials
|
|
16
9
|
} from "./cli-9b13ggd1.js";
|
|
17
10
|
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
writeSkillsToFilesystem
|
|
21
|
-
} from "./cli-3mh119qv.js";
|
|
11
|
+
checkOpencodeCredentials
|
|
12
|
+
} from "./cli-d3p82erb.js";
|
|
22
13
|
import {
|
|
23
14
|
checkClaudeCredentials
|
|
24
|
-
} from "./cli-
|
|
15
|
+
} from "./cli-3v9xhjcn.js";
|
|
16
|
+
import {
|
|
17
|
+
checkCodexCredentials,
|
|
18
|
+
codexUserHome
|
|
19
|
+
} from "./cli-vwm416m6.js";
|
|
25
20
|
import {
|
|
26
21
|
MAX_RATE_LIMIT_RESET_MS,
|
|
27
22
|
isCodexCreditsExhaustedMessage,
|
|
@@ -33,8 +28,13 @@ import {
|
|
|
33
28
|
getContextWindowSize
|
|
34
29
|
} from "./cli-s25avqg9.js";
|
|
35
30
|
import {
|
|
31
|
+
renderMemoriesPrompt,
|
|
32
|
+
writeSkillsToFilesystem
|
|
33
|
+
} from "./cli-pf9q3696.js";
|
|
34
|
+
import {
|
|
35
|
+
resolveScriptsOnlyMode,
|
|
36
36
|
validateJsonSchema
|
|
37
|
-
} from "./cli-
|
|
37
|
+
} from "./cli-5tpgq60f.js";
|
|
38
38
|
import {
|
|
39
39
|
authJsonToCredentialSelection,
|
|
40
40
|
credentialsToAuthJson,
|
|
@@ -49,6 +49,16 @@ import {
|
|
|
49
49
|
import {
|
|
50
50
|
getApiKey
|
|
51
51
|
} from "./cli-f14fvzag.js";
|
|
52
|
+
import {
|
|
53
|
+
ensure,
|
|
54
|
+
initOtel,
|
|
55
|
+
initialize,
|
|
56
|
+
injectTraceContext,
|
|
57
|
+
isPollTracingEnabled,
|
|
58
|
+
startSpan,
|
|
59
|
+
withSpan,
|
|
60
|
+
withSpanContext
|
|
61
|
+
} from "./cli-r2q6pevn.js";
|
|
52
62
|
import {
|
|
53
63
|
buildContextPreamble,
|
|
54
64
|
buildResumeContextPreamble,
|
|
@@ -61,17 +71,7 @@ import {
|
|
|
61
71
|
syncProfileFilesToServer,
|
|
62
72
|
writeIdentityBaselines,
|
|
63
73
|
writeProfileFileFromDb
|
|
64
|
-
} from "./cli-
|
|
65
|
-
import {
|
|
66
|
-
ensure,
|
|
67
|
-
initOtel,
|
|
68
|
-
initialize,
|
|
69
|
-
injectTraceContext,
|
|
70
|
-
isPollTracingEnabled,
|
|
71
|
-
startSpan,
|
|
72
|
-
withSpan,
|
|
73
|
-
withSpanContext
|
|
74
|
-
} from "./cli-kt7wevqh.js";
|
|
74
|
+
} from "./cli-fm4ytsdk.js";
|
|
75
75
|
import {
|
|
76
76
|
init_task_attachment_links,
|
|
77
77
|
taskAttachmentFetchCommand
|
|
@@ -83,11 +83,7 @@ import {
|
|
|
83
83
|
init_types,
|
|
84
84
|
resolveTaskModelSelection,
|
|
85
85
|
telemetry
|
|
86
|
-
} from "./cli-
|
|
87
|
-
import {
|
|
88
|
-
init_credentials,
|
|
89
|
-
resolveCredentialPools
|
|
90
|
-
} from "./cli-c2mk1kgf.js";
|
|
86
|
+
} from "./cli-s14agm5s.js";
|
|
91
87
|
import {
|
|
92
88
|
generateDefaultClaudeMd,
|
|
93
89
|
generateDefaultIdentityMd,
|
|
@@ -97,7 +93,7 @@ import {
|
|
|
97
93
|
init_base_prompt,
|
|
98
94
|
init_defaults,
|
|
99
95
|
init_templates
|
|
100
|
-
} from "./cli-
|
|
96
|
+
} from "./cli-ht5rs63n.js";
|
|
101
97
|
import {
|
|
102
98
|
configureHttpResolver,
|
|
103
99
|
init_resolver,
|
|
@@ -106,11 +102,15 @@ import {
|
|
|
106
102
|
interpolate,
|
|
107
103
|
isSteeringEnabled,
|
|
108
104
|
resolveTemplateAsync
|
|
109
|
-
} from "./cli-
|
|
105
|
+
} from "./cli-z61ykvam.js";
|
|
110
106
|
import {
|
|
111
107
|
getMcpBaseUrl,
|
|
112
108
|
init_constants
|
|
113
109
|
} from "./cli-dv6cdjs2.js";
|
|
110
|
+
import {
|
|
111
|
+
init_credentials,
|
|
112
|
+
resolveCredentialPools
|
|
113
|
+
} from "./cli-c2mk1kgf.js";
|
|
114
114
|
import {
|
|
115
115
|
init_secret_scrubber,
|
|
116
116
|
scrubSecrets
|
|
@@ -151,19 +151,19 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
|
|
|
151
151
|
async function createProviderAdapter(provider) {
|
|
152
152
|
switch (provider) {
|
|
153
153
|
case "claude": {
|
|
154
|
-
const { ClaudeAdapter } = await import("./claude-adapter-
|
|
154
|
+
const { ClaudeAdapter } = await import("./claude-adapter-wfp2gzvz.js");
|
|
155
155
|
return new ClaudeAdapter;
|
|
156
156
|
}
|
|
157
157
|
case "pi": {
|
|
158
|
-
const { PiMonoAdapter } = await import("./pi-mono-adapter-
|
|
158
|
+
const { PiMonoAdapter } = await import("./pi-mono-adapter-jcqt71cg.js");
|
|
159
159
|
return new PiMonoAdapter;
|
|
160
160
|
}
|
|
161
161
|
case "codex": {
|
|
162
|
-
const { CodexAdapter } = await import("./codex-adapter-
|
|
162
|
+
const { CodexAdapter } = await import("./codex-adapter-jjjk8w4m.js");
|
|
163
163
|
return new CodexAdapter;
|
|
164
164
|
}
|
|
165
165
|
case "claude-managed": {
|
|
166
|
-
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-
|
|
166
|
+
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-dsmkcrjy.js");
|
|
167
167
|
return new ClaudeManagedAdapter;
|
|
168
168
|
}
|
|
169
169
|
case "devin": {
|
|
@@ -171,11 +171,11 @@ async function createProviderAdapter(provider) {
|
|
|
171
171
|
return new DevinAdapter;
|
|
172
172
|
}
|
|
173
173
|
case "opencode": {
|
|
174
|
-
const { OpencodeAdapter } = await import("./opencode-adapter-
|
|
174
|
+
const { OpencodeAdapter } = await import("./opencode-adapter-28axqa09.js");
|
|
175
175
|
return new OpencodeAdapter;
|
|
176
176
|
}
|
|
177
177
|
case "acp": {
|
|
178
|
-
const { ACPAdapter } = await import("./acp-adapter-
|
|
178
|
+
const { ACPAdapter } = await import("./acp-adapter-ex8hzjfc.js");
|
|
179
179
|
return new ACPAdapter;
|
|
180
180
|
}
|
|
181
181
|
default:
|
|
@@ -588,7 +588,7 @@ var CREDENTIAL_PROVIDER_CHECKERS = {
|
|
|
588
588
|
devin: (env) => checkDevinCredentials(env),
|
|
589
589
|
opencode: (env, opts) => checkOpencodeCredentials(env, opts),
|
|
590
590
|
pi: async (env, opts) => {
|
|
591
|
-
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-
|
|
591
|
+
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-jcqt71cg.js");
|
|
592
592
|
return checkPiMonoCredentials(env, opts);
|
|
593
593
|
},
|
|
594
594
|
acp: () => ({ ready: true, missing: [], satisfiedBy: "sdk-delegated" })
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runStopHookSessionSummarySubprocess
|
|
3
|
+
} from "./cli-frcta2w4.js";
|
|
1
4
|
import {
|
|
2
5
|
fetchInstalledMcpServers
|
|
3
6
|
} from "./cli-tng3131n.js";
|
|
4
|
-
import {
|
|
5
|
-
runStopHookSessionSummarySubprocess
|
|
6
|
-
} from "./cli-111ey3ra.js";
|
|
7
7
|
import {
|
|
8
8
|
SessionErrorTracker,
|
|
9
9
|
buildOtelTraceparentEnv,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
} from "./cli-4yc5d8fk.js";
|
|
30
30
|
import {
|
|
31
31
|
swarmRuntimeInstanceId
|
|
32
|
-
} from "./cli-
|
|
32
|
+
} from "./cli-re8z5p8p.js";
|
|
33
33
|
import {
|
|
34
34
|
detachedProcessGroup,
|
|
35
35
|
registerProcessGroup,
|
|
@@ -819,7 +819,7 @@ class ClaudeAdapter {
|
|
|
819
819
|
if (transport === "sdk" && isClaudeBridgeEffective(sourceEnv)) {
|
|
820
820
|
throw new Error("CLAUDE_TRANSPORT=sdk cannot run with an effective Claude Bridge configuration. Select CLI transport or disable the bridge.");
|
|
821
821
|
}
|
|
822
|
-
const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-
|
|
822
|
+
const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-bht9jjak.js") : undefined;
|
|
823
823
|
claudeSdk?.validateClaudeSdkAdditionalArgs([
|
|
824
824
|
...claudeBinaryArgv.slice(1),
|
|
825
825
|
...config.additionalArgs ?? []
|
|
@@ -7,18 +7,16 @@ import {
|
|
|
7
7
|
registerSessionResourceCleanup,
|
|
8
8
|
uuidv7
|
|
9
9
|
} from "./cli-bsakbbkm.js";
|
|
10
|
+
import {
|
|
11
|
+
init_zod
|
|
12
|
+
} from "./cli-sd0mxa3c.js";
|
|
13
|
+
import {
|
|
14
|
+
exports_external
|
|
15
|
+
} from "./cli-w5e1d1vv.js";
|
|
10
16
|
import {
|
|
11
17
|
bedrockConverseStreamApi,
|
|
12
18
|
setBedrockProviderModule
|
|
13
19
|
} from "./cli-c4eeb5q2.js";
|
|
14
|
-
import {
|
|
15
|
-
getProviderEnvValue
|
|
16
|
-
} from "./cli-btbzvq95.js";
|
|
17
|
-
import {
|
|
18
|
-
parseJsonWithRepair,
|
|
19
|
-
parseStreamingJson,
|
|
20
|
-
repairJson
|
|
21
|
-
} from "./cli-1m2e086m.js";
|
|
22
20
|
import {
|
|
23
21
|
InMemoryCredentialStore,
|
|
24
22
|
InMemoryModelsStore,
|
|
@@ -35,6 +33,14 @@ import {
|
|
|
35
33
|
modelsAreEqual,
|
|
36
34
|
resolveProviderAuth
|
|
37
35
|
} from "./cli-rgvp6r2x.js";
|
|
36
|
+
import {
|
|
37
|
+
getProviderEnvValue
|
|
38
|
+
} from "./cli-btbzvq95.js";
|
|
39
|
+
import {
|
|
40
|
+
parseJsonWithRepair,
|
|
41
|
+
parseStreamingJson,
|
|
42
|
+
repairJson
|
|
43
|
+
} from "./cli-1m2e086m.js";
|
|
38
44
|
import {
|
|
39
45
|
AssistantMessageEventStream,
|
|
40
46
|
EventStream,
|
|
@@ -49,6 +55,330 @@ import {
|
|
|
49
55
|
__require
|
|
50
56
|
} from "./cli-bc05qbss.js";
|
|
51
57
|
|
|
58
|
+
// src/be/memory/raters/llm.ts
|
|
59
|
+
init_zod();
|
|
60
|
+
|
|
61
|
+
// src/be/memory/raters/llm-client.ts
|
|
62
|
+
var DEFAULT_TIMEOUT_MS = 30000;
|
|
63
|
+
var PROMPT_TEMPLATE = `You are scoring the usefulness of one retrieved memory.
|
|
64
|
+
|
|
65
|
+
Return ONLY a JSON object with these fields (no prose, no markdown):
|
|
66
|
+
{
|
|
67
|
+
"score": number, // 0 = misleading/unhelpful, 1 = highly useful
|
|
68
|
+
"reasoning": string // 1..500 chars, why
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
QUERY:
|
|
72
|
+
\${query}
|
|
73
|
+
|
|
74
|
+
MEMORY:
|
|
75
|
+
id: \${memoryId}
|
|
76
|
+
name: \${memoryName}
|
|
77
|
+
content: \${memoryContent}
|
|
78
|
+
|
|
79
|
+
AGENT RESPONSE / SUMMARY:
|
|
80
|
+
\${response}
|
|
81
|
+
|
|
82
|
+
Score 0..1.`;
|
|
83
|
+
var PLACEHOLDER_PREFIX = "$";
|
|
84
|
+
var QUERY_PLACEHOLDER = `${PLACEHOLDER_PREFIX}{query}`;
|
|
85
|
+
var MEMORY_ID_PLACEHOLDER = `${PLACEHOLDER_PREFIX}{memoryId}`;
|
|
86
|
+
var MEMORY_NAME_PLACEHOLDER = `${PLACEHOLDER_PREFIX}{memoryName}`;
|
|
87
|
+
var MEMORY_CONTENT_PLACEHOLDER = `${PLACEHOLDER_PREFIX}{memoryContent}`;
|
|
88
|
+
var RESPONSE_PLACEHOLDER = `${PLACEHOLDER_PREFIX}{response}`;
|
|
89
|
+
function buildPrompt(input) {
|
|
90
|
+
return PROMPT_TEMPLATE.replace(QUERY_PLACEHOLDER, input.query).replace(MEMORY_ID_PLACEHOLDER, input.memory.id).replace(MEMORY_NAME_PLACEHOLDER, input.memory.name).replace(MEMORY_CONTENT_PLACEHOLDER, input.memory.content).replace(RESPONSE_PLACEHOLDER, input.response);
|
|
91
|
+
}
|
|
92
|
+
function parseScoreAndReasoning(raw) {
|
|
93
|
+
if (typeof raw !== "string")
|
|
94
|
+
return null;
|
|
95
|
+
let parsed;
|
|
96
|
+
try {
|
|
97
|
+
parsed = JSON.parse(raw.trim());
|
|
98
|
+
} catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
if (!parsed || typeof parsed !== "object")
|
|
102
|
+
return null;
|
|
103
|
+
const obj = parsed;
|
|
104
|
+
const score = typeof obj.score === "number" ? obj.score : null;
|
|
105
|
+
const reasoning = typeof obj.reasoning === "string" ? obj.reasoning : null;
|
|
106
|
+
if (score == null || reasoning == null)
|
|
107
|
+
return null;
|
|
108
|
+
if (!Number.isFinite(score) || score < 0 || score > 1)
|
|
109
|
+
return null;
|
|
110
|
+
if (reasoning.length === 0 || reasoning.length > 500)
|
|
111
|
+
return null;
|
|
112
|
+
return { score, reasoning };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
class ClaudeCliLlmRaterClient {
|
|
116
|
+
model;
|
|
117
|
+
timeoutMs;
|
|
118
|
+
constructor(opts = {}) {
|
|
119
|
+
this.model = opts.model ?? process.env.MEMORY_LLM_RATER_MODEL ?? "haiku";
|
|
120
|
+
this.timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
121
|
+
}
|
|
122
|
+
async rate(input) {
|
|
123
|
+
const prompt = buildPrompt(input);
|
|
124
|
+
const tmpFile = `/tmp/llm-rater-${Date.now()}-${Math.random().toString(36).slice(2)}.txt`;
|
|
125
|
+
let stdout = "";
|
|
126
|
+
try {
|
|
127
|
+
await Bun.write(tmpFile, prompt);
|
|
128
|
+
const proc = Bun.spawn(["bash", "-c", `cat "${tmpFile}" | claude -p --model ${this.model} --output-format json`], {
|
|
129
|
+
stdout: "pipe",
|
|
130
|
+
stderr: "pipe",
|
|
131
|
+
env: { ...process.env, SKIP_SESSION_SUMMARY: "1" }
|
|
132
|
+
});
|
|
133
|
+
const timeoutId = setTimeout(() => proc.kill(), this.timeoutMs);
|
|
134
|
+
stdout = await new Response(proc.stdout).text();
|
|
135
|
+
clearTimeout(timeoutId);
|
|
136
|
+
} catch (err) {
|
|
137
|
+
console.error("[memory-rater:llm] claude -p shell-out failed:", err.message);
|
|
138
|
+
return null;
|
|
139
|
+
} finally {
|
|
140
|
+
try {
|
|
141
|
+
await Bun.$`rm -f ${tmpFile}`.quiet();
|
|
142
|
+
} catch {}
|
|
143
|
+
}
|
|
144
|
+
let envelope;
|
|
145
|
+
try {
|
|
146
|
+
envelope = JSON.parse(stdout);
|
|
147
|
+
} catch {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
return parseScoreAndReasoning(envelope.result);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// src/be/memory/raters/types.ts
|
|
155
|
+
var REFERENCES_SOURCE_MAX_LENGTH = 512;
|
|
156
|
+
var NUL_CHAR_CODE = 0;
|
|
157
|
+
var DEL_CHAR_CODE = 127;
|
|
158
|
+
var FIRST_PRINTABLE_ASCII = 32;
|
|
159
|
+
function sanitizeReferencesSource(input) {
|
|
160
|
+
let stripped = "";
|
|
161
|
+
for (let i = 0;i < input.length; i++) {
|
|
162
|
+
const code = input.charCodeAt(i);
|
|
163
|
+
if (code === NUL_CHAR_CODE)
|
|
164
|
+
return null;
|
|
165
|
+
if (code < FIRST_PRINTABLE_ASCII || code === DEL_CHAR_CODE) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
stripped += input[i];
|
|
169
|
+
}
|
|
170
|
+
if (stripped.length === 0)
|
|
171
|
+
return null;
|
|
172
|
+
return stripped;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// src/be/memory/raters/llm.ts
|
|
176
|
+
var LLM_RATER_WEIGHT = 0.8;
|
|
177
|
+
var RatingSchema = exports_external.object({
|
|
178
|
+
id: exports_external.string().min(1),
|
|
179
|
+
score: exports_external.number().min(0).max(1),
|
|
180
|
+
reasoning: exports_external.string().min(1).max(500),
|
|
181
|
+
referencesSource: exports_external.string().min(1).max(REFERENCES_SOURCE_MAX_LENGTH).optional()
|
|
182
|
+
});
|
|
183
|
+
var SummaryWithRatingsSchema = exports_external.object({
|
|
184
|
+
summary: exports_external.string(),
|
|
185
|
+
ratings: exports_external.array(RatingSchema).default([])
|
|
186
|
+
});
|
|
187
|
+
var BASE_SUMMARIZE_PROMPT = `You are summarizing an AI agent's work session. Extract ONLY high-value learnings.
|
|
188
|
+
|
|
189
|
+
DO NOT include:
|
|
190
|
+
- Generic descriptions of what was done ("worked on task X")
|
|
191
|
+
- Tool calls or file reads
|
|
192
|
+
- Routine progress updates
|
|
193
|
+
|
|
194
|
+
DO include (if present):
|
|
195
|
+
- **Mistakes made and corrections** — what went wrong and what fixed it
|
|
196
|
+
- **Discovered patterns** — reusable approaches, APIs, or codebase conventions
|
|
197
|
+
- **Codebase knowledge** — important file paths, architecture decisions, gotchas
|
|
198
|
+
- **Environment knowledge** — service URLs, config details, tool quirks
|
|
199
|
+
- **Failed approaches** — what was tried and didn't work (and why)
|
|
200
|
+
|
|
201
|
+
Format as a bulleted list of concrete, reusable facts. If the session was routine with no significant learnings, respond with exactly: "No significant learnings."`;
|
|
202
|
+
|
|
203
|
+
class LlmRater {
|
|
204
|
+
client;
|
|
205
|
+
name = "llm";
|
|
206
|
+
constructor(client = new ClaudeCliLlmRaterClient) {
|
|
207
|
+
this.client = client;
|
|
208
|
+
}
|
|
209
|
+
async rate(ctx) {
|
|
210
|
+
const enriched = ctx;
|
|
211
|
+
if (enriched.retrievedMemoryIds.length === 0)
|
|
212
|
+
return [];
|
|
213
|
+
const memories = enriched.retrievedMemories;
|
|
214
|
+
if (!memories || memories.length === 0)
|
|
215
|
+
return [];
|
|
216
|
+
const events = [];
|
|
217
|
+
for (const memoryId of enriched.retrievedMemoryIds) {
|
|
218
|
+
const memory = memories.find((m) => m.id === memoryId);
|
|
219
|
+
if (!memory)
|
|
220
|
+
continue;
|
|
221
|
+
let result;
|
|
222
|
+
try {
|
|
223
|
+
result = await this.client.rate({
|
|
224
|
+
query: enriched.query ?? "",
|
|
225
|
+
memory,
|
|
226
|
+
response: enriched.response ?? enriched.evidence ?? ""
|
|
227
|
+
});
|
|
228
|
+
} catch (err) {
|
|
229
|
+
console.error(`[memory-rater:llm] client.rate threw for memoryId=${memoryId}:`, err.message);
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (!result)
|
|
233
|
+
continue;
|
|
234
|
+
events.push({
|
|
235
|
+
memoryId,
|
|
236
|
+
signal: 2 * result.score - 1,
|
|
237
|
+
weight: LLM_RATER_WEIGHT,
|
|
238
|
+
source: "",
|
|
239
|
+
reasoning: result.reasoning
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return events;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function buildRatingsFromLlm(ratings, retrievals) {
|
|
246
|
+
const allowed = new Set(retrievals.map((r) => r.id));
|
|
247
|
+
const events = [];
|
|
248
|
+
for (const r of ratings) {
|
|
249
|
+
if (!allowed.has(r.id))
|
|
250
|
+
continue;
|
|
251
|
+
let cleanedReferencesSource;
|
|
252
|
+
if (r.referencesSource !== undefined) {
|
|
253
|
+
const cleaned = sanitizeReferencesSource(r.referencesSource);
|
|
254
|
+
if (cleaned !== null) {
|
|
255
|
+
cleanedReferencesSource = cleaned;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
events.push({
|
|
259
|
+
memoryId: r.id,
|
|
260
|
+
signal: 2 * r.score - 1,
|
|
261
|
+
weight: LLM_RATER_WEIGHT,
|
|
262
|
+
source: "llm",
|
|
263
|
+
reasoning: r.reasoning,
|
|
264
|
+
...cleanedReferencesSource !== undefined ? { referencesSource: cleanedReferencesSource } : {}
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
return events;
|
|
268
|
+
}
|
|
269
|
+
var RETRIEVAL_PROMPT_CONTENT_CAP = 600;
|
|
270
|
+
function buildSummaryWithRatingsPrompt(basePrompt, retrievals) {
|
|
271
|
+
if (retrievals.length === 0)
|
|
272
|
+
return basePrompt;
|
|
273
|
+
const memoryBlock = retrievals.map((m, i) => {
|
|
274
|
+
const content = m.content.length > RETRIEVAL_PROMPT_CONTENT_CAP ? `${m.content.slice(0, RETRIEVAL_PROMPT_CONTENT_CAP)}…` : m.content;
|
|
275
|
+
return `Memory #${i + 1}
|
|
276
|
+
id: ${m.id}
|
|
277
|
+
name: ${m.name}
|
|
278
|
+
content: ${content}`;
|
|
279
|
+
}).join(`
|
|
280
|
+
|
|
281
|
+
`);
|
|
282
|
+
return `${basePrompt}
|
|
283
|
+
|
|
284
|
+
CRITICAL: Your entire response MUST be a single JSON object that conforms to the schema below. Do NOT wrap it in triple-backtick fences (no \`\`\`json or \`\`\`), do NOT add a prose preamble, do NOT add trailing commentary. Just the JSON object, nothing else.
|
|
285
|
+
|
|
286
|
+
Schema:
|
|
287
|
+
{
|
|
288
|
+
"summary": string, // your existing summary text
|
|
289
|
+
"ratings": [ // one entry per memory you can score
|
|
290
|
+
{
|
|
291
|
+
"id": string, // memory id, copied from the list below
|
|
292
|
+
"score": number, // 0 = misleading/unhelpful, 1 = highly useful
|
|
293
|
+
"reasoning": string, // 1..500 chars, why
|
|
294
|
+
"referencesSource": string // OPTIONAL — see note below
|
|
295
|
+
}
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
Score ONLY memories present in the list below. Use the exact ids. Omit any you cannot evaluate.
|
|
300
|
+
|
|
301
|
+
Optionally for each rating, if the memory clearly references a specific external source (a GitHub PR/issue, a Linear issue, a customer, a Slack thread, an AgentMail thread, etc.), include a \`referencesSource\` string using the convention "<source>:<identifier>" (e.g. "github:owner/repo#N", "linear:KEY-N", "customer:<slug>"). Any prefix is fine — pick what matches the source. Omit the field if no clear external source.
|
|
302
|
+
|
|
303
|
+
Memories retrieved during this session:
|
|
304
|
+
|
|
305
|
+
${memoryBlock}`;
|
|
306
|
+
}
|
|
307
|
+
function isLlmRaterEnabled() {
|
|
308
|
+
const raw = process.env.MEMORY_RATERS;
|
|
309
|
+
if (!raw || raw.trim() === "")
|
|
310
|
+
return false;
|
|
311
|
+
return raw.split(",").map((s) => s.trim()).includes("llm");
|
|
312
|
+
}
|
|
313
|
+
function dedupeRetrievalsForRater(rows) {
|
|
314
|
+
const seenSchedules = new Set;
|
|
315
|
+
const out = [];
|
|
316
|
+
for (const row of rows) {
|
|
317
|
+
const scheduleId = row.scheduleId;
|
|
318
|
+
if (typeof scheduleId === "string" && scheduleId.length > 0) {
|
|
319
|
+
if (seenSchedules.has(scheduleId))
|
|
320
|
+
continue;
|
|
321
|
+
seenSchedules.add(scheduleId);
|
|
322
|
+
}
|
|
323
|
+
out.push(row);
|
|
324
|
+
}
|
|
325
|
+
return out;
|
|
326
|
+
}
|
|
327
|
+
async function fetchRetrievalsForTask(opts) {
|
|
328
|
+
const fetchFn = opts.fetchImpl ?? fetch;
|
|
329
|
+
try {
|
|
330
|
+
const url = `${opts.apiUrl}/api/memory/retrievals?taskId=${encodeURIComponent(opts.taskId)}`;
|
|
331
|
+
const res = await fetchFn(url, {
|
|
332
|
+
headers: {
|
|
333
|
+
"X-Agent-ID": opts.agentId,
|
|
334
|
+
...opts.apiKey ? { Authorization: `Bearer ${opts.apiKey}` } : {}
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
if (!res.ok) {
|
|
338
|
+
console.error(`[memory-rater:llm] GET /api/memory/retrievals failed: ${res.status} ${res.statusText}`);
|
|
339
|
+
return [];
|
|
340
|
+
}
|
|
341
|
+
const body = await res.json();
|
|
342
|
+
return body.results ?? [];
|
|
343
|
+
} catch (err) {
|
|
344
|
+
console.error("[memory-rater:llm] fetchRetrievalsForTask threw:", err.message);
|
|
345
|
+
return [];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
async function postRatings(opts) {
|
|
349
|
+
if (opts.events.length === 0)
|
|
350
|
+
return { ok: true, status: 0 };
|
|
351
|
+
const fetchFn = opts.fetchImpl ?? fetch;
|
|
352
|
+
const events = opts.events.map((e) => ({
|
|
353
|
+
memoryId: e.memoryId,
|
|
354
|
+
signal: e.signal,
|
|
355
|
+
weight: e.weight,
|
|
356
|
+
source: e.source,
|
|
357
|
+
...e.reasoning !== undefined ? { reasoning: e.reasoning } : {},
|
|
358
|
+
...e.referencesSource !== undefined ? { referencesSource: e.referencesSource } : {},
|
|
359
|
+
...opts.taskId ? { taskId: opts.taskId } : {}
|
|
360
|
+
}));
|
|
361
|
+
try {
|
|
362
|
+
const res = await fetchFn(`${opts.apiUrl}/api/memory/rate`, {
|
|
363
|
+
method: "POST",
|
|
364
|
+
headers: {
|
|
365
|
+
"Content-Type": "application/json",
|
|
366
|
+
"X-Agent-ID": opts.agentId,
|
|
367
|
+
...opts.apiKey ? { Authorization: `Bearer ${opts.apiKey}` } : {}
|
|
368
|
+
},
|
|
369
|
+
body: JSON.stringify({ events })
|
|
370
|
+
});
|
|
371
|
+
if (!res.ok) {
|
|
372
|
+
const text = await res.text().catch(() => "");
|
|
373
|
+
console.error(`[memory-rater:llm] POST /api/memory/rate failed: ${res.status} ${res.statusText} ${text.slice(0, 200)}`);
|
|
374
|
+
}
|
|
375
|
+
return { ok: res.ok, status: res.status };
|
|
376
|
+
} catch (err) {
|
|
377
|
+
console.error("[memory-rater:llm] postRatings threw:", err.message);
|
|
378
|
+
return { ok: false, status: 0 };
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
52
382
|
// node_modules/typebox/build/typebox.mjs
|
|
53
383
|
var exports_typebox = {};
|
|
54
384
|
__export(exports_typebox, {
|
|
@@ -5592,7 +5922,7 @@ function amazonBedrockProvider() {
|
|
|
5592
5922
|
}
|
|
5593
5923
|
|
|
5594
5924
|
// node_modules/@earendil-works/pi-ai/dist/api/openai-completions.lazy.js
|
|
5595
|
-
var openAICompletionsApi = () => lazyApi(() => import("./openai-completions-
|
|
5925
|
+
var openAICompletionsApi = () => lazyApi(() => import("./openai-completions-32rdwmze.js"));
|
|
5596
5926
|
|
|
5597
5927
|
// node_modules/@earendil-works/pi-ai/dist/auth/helpers.js
|
|
5598
5928
|
function envApiKeyAuth(name, envVars) {
|
|
@@ -5648,7 +5978,7 @@ function antLingProvider() {
|
|
|
5648
5978
|
}
|
|
5649
5979
|
|
|
5650
5980
|
// node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.lazy.js
|
|
5651
|
-
var anthropicMessagesApi = () => lazyApi(() => import("./anthropic-messages-
|
|
5981
|
+
var anthropicMessagesApi = () => lazyApi(() => import("./anthropic-messages-2y8nktar.js"));
|
|
5652
5982
|
|
|
5653
5983
|
// node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js
|
|
5654
5984
|
var __rewriteRelativeImportExtension = function(path, preserveJsx) {
|
|
@@ -5886,7 +6216,7 @@ function anthropicProvider() {
|
|
|
5886
6216
|
}
|
|
5887
6217
|
|
|
5888
6218
|
// node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.lazy.js
|
|
5889
|
-
var azureOpenAIResponsesApi = () => lazyApi(() => import("./azure-openai-responses-
|
|
6219
|
+
var azureOpenAIResponsesApi = () => lazyApi(() => import("./azure-openai-responses-f38x2avq.js"));
|
|
5890
6220
|
|
|
5891
6221
|
// node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js
|
|
5892
6222
|
function azureOpenAIResponsesProvider() {
|
|
@@ -5924,7 +6254,7 @@ function cerebrasProvider() {
|
|
|
5924
6254
|
}
|
|
5925
6255
|
|
|
5926
6256
|
// node_modules/@earendil-works/pi-ai/dist/api/openai-responses.lazy.js
|
|
5927
|
-
var openAIResponsesApi = () => lazyApi(() => import("./openai-responses-
|
|
6257
|
+
var openAIResponsesApi = () => lazyApi(() => import("./openai-responses-6xwf7bzg.js"));
|
|
5928
6258
|
|
|
5929
6259
|
// node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js
|
|
5930
6260
|
var CLOUDFLARE_API_KEY = "CLOUDFLARE_API_KEY";
|
|
@@ -6112,7 +6442,7 @@ function githubCopilotProvider() {
|
|
|
6112
6442
|
}
|
|
6113
6443
|
|
|
6114
6444
|
// node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.lazy.js
|
|
6115
|
-
var googleGenerativeAIApi = () => lazyApi(() => import("./google-generative-ai-
|
|
6445
|
+
var googleGenerativeAIApi = () => lazyApi(() => import("./google-generative-ai-ndjmj5fa.js"));
|
|
6116
6446
|
|
|
6117
6447
|
// node_modules/@earendil-works/pi-ai/dist/providers/google.js
|
|
6118
6448
|
function googleProvider() {
|
|
@@ -6127,7 +6457,7 @@ function googleProvider() {
|
|
|
6127
6457
|
}
|
|
6128
6458
|
|
|
6129
6459
|
// node_modules/@earendil-works/pi-ai/dist/api/google-vertex.lazy.js
|
|
6130
|
-
var googleVertexApi = () => lazyApi(() => import("./google-vertex-
|
|
6460
|
+
var googleVertexApi = () => lazyApi(() => import("./google-vertex-fr665tqs.js"));
|
|
6131
6461
|
|
|
6132
6462
|
// node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js
|
|
6133
6463
|
var VERTEX_ADC_PATH = "~/.config/gcloud/application_default_credentials.json";
|
|
@@ -6281,7 +6611,7 @@ function minimaxCnProvider() {
|
|
|
6281
6611
|
}
|
|
6282
6612
|
|
|
6283
6613
|
// node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.lazy.js
|
|
6284
|
-
var mistralConversationsApi = () => lazyApi(() => import("./mistral-conversations-
|
|
6614
|
+
var mistralConversationsApi = () => lazyApi(() => import("./mistral-conversations-qhr84ph3.js"));
|
|
6285
6615
|
|
|
6286
6616
|
// node_modules/@earendil-works/pi-ai/dist/providers/mistral.js
|
|
6287
6617
|
function mistralProvider() {
|
|
@@ -6344,7 +6674,7 @@ function openaiProvider() {
|
|
|
6344
6674
|
}
|
|
6345
6675
|
|
|
6346
6676
|
// node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.lazy.js
|
|
6347
|
-
var openAICodexResponsesApi = () => lazyApi(() => import("./openai-codex-responses-
|
|
6677
|
+
var openAICodexResponsesApi = () => lazyApi(() => import("./openai-codex-responses-wy6a43wd.js"));
|
|
6348
6678
|
|
|
6349
6679
|
// node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js
|
|
6350
6680
|
function openaiCodexProvider() {
|
|
@@ -6419,7 +6749,7 @@ function openrouterProvider() {
|
|
|
6419
6749
|
|
|
6420
6750
|
// node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.lazy.js
|
|
6421
6751
|
var openrouterImagesApi = () => ({
|
|
6422
|
-
generateImages: async (model, context, options) => (await import("./openrouter-images-
|
|
6752
|
+
generateImages: async (model, context, options) => (await import("./openrouter-images-9f9ek4rw.js")).generateImages(model, context, options)
|
|
6423
6753
|
});
|
|
6424
6754
|
|
|
6425
6755
|
// node_modules/@earendil-works/pi-ai/dist/image-models.generated.js
|
|
@@ -7263,7 +7593,7 @@ function qwenTokenPlanIndividualProvider() {
|
|
|
7263
7593
|
}
|
|
7264
7594
|
|
|
7265
7595
|
// node_modules/@earendil-works/pi-ai/dist/api/pi-messages.lazy.js
|
|
7266
|
-
var piMessagesApi = () => lazyApi(() => import("./pi-messages-
|
|
7596
|
+
var piMessagesApi = () => lazyApi(() => import("./pi-messages-b1mbr6gp.js"));
|
|
7267
7597
|
|
|
7268
7598
|
// node_modules/@earendil-works/pi-ai/dist/providers/radius-config.js
|
|
7269
7599
|
var DEFAULT_RADIUS_GATEWAY = "https://radius.pi.dev";
|
|
@@ -13538,7 +13868,7 @@ function createLazyLoadErrorImages(model, error2) {
|
|
|
13538
13868
|
};
|
|
13539
13869
|
}
|
|
13540
13870
|
function loadOpenRouterImagesProviderModule() {
|
|
13541
|
-
openRouterImagesProviderModulePromise ||= import("./openrouter-images-
|
|
13871
|
+
openRouterImagesProviderModulePromise ||= import("./openrouter-images-9f9ek4rw.js").then((module3) => module3);
|
|
13542
13872
|
return openRouterImagesProviderModulePromise;
|
|
13543
13873
|
}
|
|
13544
13874
|
var generateImagesOpenRouter = async (model, context2, options) => {
|
|
@@ -16051,4 +16381,4 @@ async function resolveCredential(opts = {}) {
|
|
|
16051
16381
|
return null;
|
|
16052
16382
|
}
|
|
16053
16383
|
|
|
16054
|
-
export { exports_typebox, exports_build, AssistantMessageFrameEncoder, reduceAssistantMessageFrames, isContextOverflow, isRecoverableLength, retryAssistantCall, isRetryableAssistantError, contentText, exports_value2 as exports_value, Compile, exports_compile, validateToolArguments, DEFAULT_RADIUS_GATEWAY, radiusProvider, getBuiltinModel, getBuiltinModelDataGeneratedAt, getBuiltinModels, builtinProviders, exports_all, getApiProvider, resetApiProviders, stream, complete, streamSimple, completeSimple, exports_compat, DEFAULT_MODEL, parseModelStr, resolveCredential };
|
|
16384
|
+
export { REFERENCES_SOURCE_MAX_LENGTH, sanitizeReferencesSource, SummaryWithRatingsSchema, BASE_SUMMARIZE_PROMPT, LlmRater, buildRatingsFromLlm, buildSummaryWithRatingsPrompt, isLlmRaterEnabled, dedupeRetrievalsForRater, fetchRetrievalsForTask, postRatings, exports_typebox, exports_build, AssistantMessageFrameEncoder, reduceAssistantMessageFrames, isContextOverflow, isRecoverableLength, retryAssistantCall, isRetryableAssistantError, contentText, exports_value2 as exports_value, Compile, exports_compile, validateToolArguments, DEFAULT_RADIUS_GATEWAY, radiusProvider, getBuiltinModel, getBuiltinModelDataGeneratedAt, getBuiltinModels, builtinProviders, exports_all, getApiProvider, resetApiProviders, stream, complete, streamSimple, completeSimple, exports_compat, DEFAULT_MODEL, parseModelStr, resolveCredential };
|