@dxos/assistant-toolkit 0.10.0 → 0.11.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/dist/lib/chunk-Chat.mjs +144 -0
- package/dist/lib/chunk-Chat.mjs.map +1 -0
- package/dist/lib/chunk-Memory.mjs +19 -0
- package/dist/lib/chunk-Memory.mjs.map +1 -0
- package/dist/lib/{neutral/agent-rules-KWCBKJ5W.mjs → chunk-agent-rules.mjs} +8 -15
- package/dist/lib/chunk-agent-rules.mjs.map +1 -0
- package/dist/lib/chunk-agent.mjs +45 -0
- package/dist/lib/chunk-agent.mjs.map +1 -0
- package/dist/lib/chunk-artifact-add.mjs +31 -0
- package/dist/lib/chunk-artifact-add.mjs.map +1 -0
- package/dist/lib/chunk-artifact-list.mjs +23 -0
- package/dist/lib/chunk-artifact-list.mjs.map +1 -0
- package/dist/lib/chunk-context-add.mjs +16 -0
- package/dist/lib/chunk-context-add.mjs.map +1 -0
- package/dist/lib/chunk-context-remove.mjs +16 -0
- package/dist/lib/chunk-context-remove.mjs.map +1 -0
- package/dist/lib/chunk-create-agent.mjs +23 -0
- package/dist/lib/chunk-create-agent.mjs.map +1 -0
- package/dist/lib/chunk-definitions.mjs +52 -0
- package/dist/lib/chunk-definitions.mjs.map +1 -0
- package/dist/lib/chunk-definitions2.mjs +56 -0
- package/dist/lib/chunk-definitions2.mjs.map +1 -0
- package/dist/lib/chunk-definitions3.mjs +24 -0
- package/dist/lib/chunk-definitions3.mjs.map +1 -0
- package/dist/lib/chunk-delete.mjs +14 -0
- package/dist/lib/chunk-delete.mjs.map +1 -0
- package/dist/lib/chunk-enable-skills.mjs +39 -0
- package/dist/lib/chunk-enable-skills.mjs.map +1 -0
- package/dist/lib/chunk-fetch-messages.mjs +113 -0
- package/dist/lib/chunk-fetch-messages.mjs.map +1 -0
- package/dist/lib/chunk-fetch.mjs +20 -0
- package/dist/lib/chunk-fetch.mjs.map +1 -0
- package/dist/lib/chunk-get-context.mjs +55 -0
- package/dist/lib/chunk-get-context.mjs.map +1 -0
- package/dist/lib/chunk-get-current-date.mjs +17 -0
- package/dist/lib/chunk-get-current-date.mjs.map +1 -0
- package/dist/lib/chunk-load.mjs +13 -0
- package/dist/lib/chunk-load.mjs.map +1 -0
- package/dist/lib/chunk-object-create.mjs +42 -0
- package/dist/lib/chunk-object-create.mjs.map +1 -0
- package/dist/lib/chunk-object-delete.mjs +14 -0
- package/dist/lib/chunk-object-delete.mjs.map +1 -0
- package/dist/lib/chunk-object-update.mjs +19 -0
- package/dist/lib/chunk-object-update.mjs.map +1 -0
- package/dist/lib/chunk-operations.mjs +714 -0
- package/dist/lib/chunk-operations.mjs.map +1 -0
- package/dist/lib/chunk-plan-reminder.mjs +80 -0
- package/dist/lib/chunk-plan-reminder.mjs.map +1 -0
- package/dist/lib/chunk-query-skills.mjs +12 -0
- package/dist/lib/chunk-query-skills.mjs.map +1 -0
- package/dist/lib/chunk-query.mjs +36 -0
- package/dist/lib/chunk-query.mjs.map +1 -0
- package/dist/lib/chunk-query2.mjs +18 -0
- package/dist/lib/chunk-query2.mjs.map +1 -0
- package/dist/lib/chunk-relation-create.mjs +41 -0
- package/dist/lib/chunk-relation-create.mjs.map +1 -0
- package/dist/lib/chunk-relation-delete.mjs +14 -0
- package/dist/lib/chunk-relation-delete.mjs.map +1 -0
- package/dist/lib/chunk-relay.mjs +76 -0
- package/dist/lib/chunk-relay.mjs.map +1 -0
- package/dist/lib/chunk-rolldown-runtime.mjs +13 -0
- package/dist/lib/chunk-run-instructions.mjs +145 -0
- package/dist/lib/chunk-run-instructions.mjs.map +1 -0
- package/dist/lib/chunk-save.mjs +17 -0
- package/dist/lib/chunk-save.mjs.map +1 -0
- package/dist/lib/chunk-schema-add.mjs +19 -0
- package/dist/lib/chunk-schema-add.mjs.map +1 -0
- package/dist/lib/chunk-schema-list.mjs +29 -0
- package/dist/lib/chunk-schema-list.mjs.map +1 -0
- package/dist/lib/chunk-set-alarm.mjs +55 -0
- package/dist/lib/chunk-set-alarm.mjs.map +1 -0
- package/dist/lib/chunk-sync-automation.mjs +130 -0
- package/dist/lib/chunk-sync-automation.mjs.map +1 -0
- package/dist/lib/chunk-sync-issues.mjs +127 -0
- package/dist/lib/chunk-sync-issues.mjs.map +1 -0
- package/dist/lib/chunk-sync.mjs +91 -0
- package/dist/lib/chunk-sync.mjs.map +1 -0
- package/dist/lib/chunk-tag-add.mjs +14 -0
- package/dist/lib/chunk-tag-add.mjs.map +1 -0
- package/dist/lib/chunk-tag-remove.mjs +14 -0
- package/dist/lib/chunk-tag-remove.mjs.map +1 -0
- package/dist/lib/chunk-types.mjs +198 -0
- package/dist/lib/chunk-types.mjs.map +1 -0
- package/dist/lib/chunk-update-tasks.mjs +34 -0
- package/dist/lib/chunk-update-tasks.mjs.map +1 -0
- package/dist/lib/index.mjs +614 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/testing.mjs +102 -0
- package/dist/lib/testing.mjs.map +1 -0
- package/dist/types/src/skills/agent/operations/definitions.d.ts +16 -46
- package/dist/types/src/skills/agent/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/skills/agent/operations/get-context.test.d.ts +2 -0
- package/dist/types/src/skills/agent/operations/get-context.test.d.ts.map +1 -0
- package/dist/types/src/skills/agent/operations/index.d.ts.map +1 -1
- package/dist/types/src/skills/agent/operations/relay.d.ts +11 -0
- package/dist/types/src/skills/agent/operations/relay.d.ts.map +1 -0
- package/dist/types/src/skills/agent/operations/relay.test.d.ts +2 -0
- package/dist/types/src/skills/agent/operations/relay.test.d.ts.map +1 -0
- package/dist/types/src/skills/agent/skill.d.ts.map +1 -1
- package/dist/types/src/skills/agent-wizard/operations/definitions.d.ts +4 -1
- package/dist/types/src/skills/agent-wizard/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/skills/agent-wizard/operations/sync-automation.d.ts +26 -0
- package/dist/types/src/skills/agent-wizard/operations/sync-automation.d.ts.map +1 -0
- package/dist/types/src/skills/agent-wizard/operations/sync-automation.test.d.ts +2 -0
- package/dist/types/src/skills/agent-wizard/operations/sync-automation.test.d.ts.map +1 -0
- package/dist/types/src/skills/agent-wizard/skill.d.ts.map +1 -1
- package/dist/types/src/skills/database/operations/context-add.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/context-add.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/context-remove.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/context-remove.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/definitions.d.ts +7 -2
- package/dist/types/src/skills/database/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/skills/database/operations/load.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/load.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/object-create.d.ts +4 -1
- package/dist/types/src/skills/database/operations/object-create.d.ts.map +1 -1
- package/dist/types/src/skills/database/operations/object-create.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/object-create.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/object-delete.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/object-delete.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/object-update.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/object-update.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/query.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/query.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/relation-create.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/relation-create.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/schema-add.d.ts +3 -1
- package/dist/types/src/skills/database/operations/schema-add.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/schema-add.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/schema-list.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/schema-list.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/tag-add.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/tag-add.test.d.ts.map +1 -0
- package/dist/types/src/skills/database/operations/tag-remove.test.d.ts +2 -0
- package/dist/types/src/skills/database/operations/tag-remove.test.d.ts.map +1 -0
- package/dist/types/src/skills/delegation/operations/delegate-task.d.ts +6 -5
- package/dist/types/src/skills/delegation/operations/delegate-task.d.ts.map +1 -1
- package/dist/types/src/skills/index.d.ts +1 -0
- package/dist/types/src/skills/index.d.ts.map +1 -1
- package/dist/types/src/skills/linear/operations/sync-issues.d.ts.map +1 -1
- package/dist/types/src/skills/memory/operations/delete.test.d.ts +2 -0
- package/dist/types/src/skills/memory/operations/delete.test.d.ts.map +1 -0
- package/dist/types/src/skills/memory/operations/query.test.d.ts +2 -0
- package/dist/types/src/skills/memory/operations/query.test.d.ts.map +1 -0
- package/dist/types/src/skills/memory/operations/save.test.d.ts +2 -0
- package/dist/types/src/skills/memory/operations/save.test.d.ts.map +1 -0
- package/dist/types/src/skills/planning/operations/definitions.d.ts +1 -3
- package/dist/types/src/skills/planning/operations/definitions.d.ts.map +1 -1
- package/dist/types/src/skills/planning/operations/plan-reminder.d.ts +7 -6
- package/dist/types/src/skills/planning/operations/plan-reminder.d.ts.map +1 -1
- package/dist/types/src/skills/planning/operations/plan-reminder.test.d.ts +2 -0
- package/dist/types/src/skills/planning/operations/plan-reminder.test.d.ts.map +1 -0
- package/dist/types/src/skills/planning/operations/update-tasks.d.ts +3 -1
- package/dist/types/src/skills/planning/operations/update-tasks.d.ts.map +1 -1
- package/dist/types/src/skills/project/index.d.ts +3 -0
- package/dist/types/src/skills/project/index.d.ts.map +1 -0
- package/dist/types/src/skills/project/operations/artifact-add.d.ts +5 -0
- package/dist/types/src/skills/project/operations/artifact-add.d.ts.map +1 -0
- package/dist/types/src/skills/project/operations/artifact-list.d.ts +5 -0
- package/dist/types/src/skills/project/operations/artifact-list.d.ts.map +1 -0
- package/dist/types/src/skills/project/operations/definitions.d.ts +23 -0
- package/dist/types/src/skills/project/operations/definitions.d.ts.map +1 -0
- package/dist/types/src/skills/project/operations/index.d.ts +4 -0
- package/dist/types/src/skills/project/operations/index.d.ts.map +1 -0
- package/dist/types/src/skills/project/skill.d.ts +4 -0
- package/dist/types/src/skills/project/skill.d.ts.map +1 -0
- package/dist/types/src/skills/project/skill.test.d.ts.map +1 -0
- package/dist/types/src/skills/skill-manager/skill.d.ts.map +1 -1
- package/dist/types/src/supervisor/delegation-strategy.d.ts +5 -5
- package/dist/types/src/supervisor/delegation-strategy.d.ts.map +1 -1
- package/dist/types/src/supervisor/delegation-strategy.test.d.ts +2 -0
- package/dist/types/src/supervisor/delegation-strategy.test.d.ts.map +1 -0
- package/dist/types/src/sync/sync.test.d.ts +2 -0
- package/dist/types/src/sync/sync.test.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/operations.d.ts +7 -0
- package/dist/types/src/testing/operations.d.ts.map +1 -0
- package/dist/types/src/types/Agent.d.ts +28 -31
- package/dist/types/src/types/Agent.d.ts.map +1 -1
- package/dist/types/src/types/Chat.d.ts +28 -14
- package/dist/types/src/types/Chat.d.ts.map +1 -1
- package/dist/types/src/types/Chat.test.d.ts +2 -0
- package/dist/types/src/types/Chat.test.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -29
- package/src/operations/run-instructions.test.ts +26 -34
- package/src/operations/skill-resolution.test.ts +6 -1
- package/src/skills/agent/operations/definitions.ts +18 -62
- package/src/skills/agent/operations/get-context.test.ts +81 -0
- package/src/skills/agent/operations/get-context.ts +9 -36
- package/src/skills/agent/operations/index.ts +1 -3
- package/src/skills/agent/operations/relay.test.ts +63 -0
- package/src/skills/agent/operations/relay.ts +124 -0
- package/src/skills/agent/skill.ts +3 -15
- package/src/skills/agent-wizard/operations/create-agent.ts +3 -3
- package/src/skills/agent-wizard/operations/definitions.ts +19 -4
- package/src/skills/agent-wizard/operations/index.ts +1 -1
- package/src/skills/agent-wizard/operations/sync-automation.test.ts +103 -0
- package/src/skills/agent-wizard/operations/sync-automation.ts +205 -0
- package/src/skills/agent-wizard/skill.ts +9 -10
- package/src/skills/alarm/skill.test.ts +2 -2
- package/src/skills/browser/skill.test.ts +4 -4
- package/src/skills/database/operations/context-add.test.ts +46 -0
- package/src/skills/database/operations/context-remove.test.ts +46 -0
- package/src/skills/database/operations/definitions.ts +23 -7
- package/src/skills/database/operations/load.test.ts +38 -0
- package/src/skills/database/operations/object-create.test.ts +116 -0
- package/src/skills/database/operations/object-create.ts +13 -2
- package/src/skills/database/operations/object-delete.test.ts +37 -0
- package/src/skills/database/operations/object-update.test.ts +39 -0
- package/src/skills/database/operations/query.test.ts +128 -0
- package/src/skills/database/operations/relation-create.test.ts +46 -0
- package/src/skills/database/operations/schema-add.test.ts +79 -0
- package/src/skills/database/operations/schema-list.test.ts +42 -0
- package/src/skills/database/operations/tag-add.test.ts +41 -0
- package/src/skills/database/operations/tag-remove.test.ts +43 -0
- package/src/skills/delegation/operations/delegate-task.test.ts +51 -36
- package/src/skills/delegation/operations/delegate-task.ts +31 -48
- package/src/skills/discord/operations/fetch-messages.test.ts +2 -2
- package/src/skills/github/operations/fetch-prs.ts +1 -1
- package/src/skills/index.ts +1 -0
- package/src/skills/linear/operations/linear.test.ts +1 -1
- package/src/skills/linear/operations/sync-issues.ts +6 -23
- package/src/skills/memory/operations/delete.test.ts +37 -0
- package/src/skills/memory/operations/query.test.ts +76 -0
- package/src/skills/memory/operations/save.test.ts +43 -0
- package/src/skills/planning/operations/definitions.ts +9 -6
- package/src/skills/planning/operations/plan-reminder.test.ts +123 -0
- package/src/skills/planning/operations/plan-reminder.ts +49 -31
- package/src/skills/planning/operations/update-tasks.md +23 -22
- package/src/skills/planning/operations/update-tasks.test.ts +31 -17
- package/src/skills/planning/operations/update-tasks.ts +17 -25
- package/src/skills/project/index.ts +6 -0
- package/src/skills/project/operations/artifact-add.ts +47 -0
- package/src/skills/project/operations/artifact-list.ts +41 -0
- package/src/skills/project/operations/definitions.ts +63 -0
- package/src/skills/project/operations/index.ts +12 -0
- package/src/skills/project/skill.test.ts +78 -0
- package/src/skills/project/skill.ts +42 -0
- package/src/skills/skill-manager/operations/definitions.ts +1 -1
- package/src/skills/skill-manager/skill.test.ts +1 -1
- package/src/skills/skill-manager/skill.ts +7 -5
- package/src/skills/websearch/skill.test.ts +2 -2
- package/src/supervisor/delegation-strategy.test.ts +129 -0
- package/src/supervisor/delegation-strategy.ts +92 -56
- package/src/sync/sync.test.ts +95 -0
- package/src/sync/sync.ts +5 -3
- package/src/testing/index.ts +1 -0
- package/src/testing/operations.ts +65 -0
- package/src/types/Agent.test.ts +36 -66
- package/src/types/Agent.ts +108 -137
- package/src/types/Chat.test.ts +234 -0
- package/src/types/Chat.ts +80 -26
- package/src/types/index.ts +1 -2
- package/dist/lib/neutral/add-artifact-5JNUYLCA.mjs +0 -24
- package/dist/lib/neutral/add-artifact-5JNUYLCA.mjs.map +0 -7
- package/dist/lib/neutral/agent-BFAYIBJI.mjs +0 -65
- package/dist/lib/neutral/agent-BFAYIBJI.mjs.map +0 -7
- package/dist/lib/neutral/agent-rules-KWCBKJ5W.mjs.map +0 -7
- package/dist/lib/neutral/chunk-3KA66YBF.mjs +0 -62
- package/dist/lib/neutral/chunk-3KA66YBF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-6SGNFL6I.mjs +0 -85
- package/dist/lib/neutral/chunk-6SGNFL6I.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BDTGFPM7.mjs +0 -113
- package/dist/lib/neutral/chunk-BDTGFPM7.mjs.map +0 -7
- package/dist/lib/neutral/chunk-EPQCDGIV.mjs +0 -27
- package/dist/lib/neutral/chunk-EPQCDGIV.mjs.map +0 -7
- package/dist/lib/neutral/chunk-H4W22FFJ.mjs +0 -232
- package/dist/lib/neutral/chunk-H4W22FFJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-JBTXZQ5G.mjs +0 -60
- package/dist/lib/neutral/chunk-JBTXZQ5G.mjs.map +0 -7
- package/dist/lib/neutral/chunk-JKOOA5OS.mjs +0 -97
- package/dist/lib/neutral/chunk-JKOOA5OS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-JTEBE7KA.mjs +0 -66
- package/dist/lib/neutral/chunk-JTEBE7KA.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KLFXJ2Z3.mjs +0 -36
- package/dist/lib/neutral/chunk-KLFXJ2Z3.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LBA5UOLF.mjs +0 -87
- package/dist/lib/neutral/chunk-LBA5UOLF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LL3MOQUZ.mjs +0 -120
- package/dist/lib/neutral/chunk-LL3MOQUZ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-MFVIGJBW.mjs +0 -68
- package/dist/lib/neutral/chunk-MFVIGJBW.mjs.map +0 -7
- package/dist/lib/neutral/chunk-PBARVBNJ.mjs +0 -86
- package/dist/lib/neutral/chunk-PBARVBNJ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-VJ5QBYM5.mjs +0 -61
- package/dist/lib/neutral/chunk-VJ5QBYM5.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YQSQRSXG.mjs +0 -367
- package/dist/lib/neutral/chunk-YQSQRSXG.mjs.map +0 -7
- package/dist/lib/neutral/chunk-Z2HFOZXK.mjs +0 -191
- package/dist/lib/neutral/chunk-Z2HFOZXK.mjs.map +0 -7
- package/dist/lib/neutral/context-add-DZTPB3FK.mjs +0 -22
- package/dist/lib/neutral/context-add-DZTPB3FK.mjs.map +0 -7
- package/dist/lib/neutral/context-remove-XSBOM4VJ.mjs +0 -22
- package/dist/lib/neutral/context-remove-XSBOM4VJ.mjs.map +0 -7
- package/dist/lib/neutral/create-agent-5WTOFIEK.mjs +0 -35
- package/dist/lib/neutral/create-agent-5WTOFIEK.mjs.map +0 -7
- package/dist/lib/neutral/definitions-VRR5OGXI.mjs +0 -17
- package/dist/lib/neutral/definitions-VRR5OGXI.mjs.map +0 -7
- package/dist/lib/neutral/delegate-task-UX64NK4M.mjs +0 -13
- package/dist/lib/neutral/delegate-task-UX64NK4M.mjs.map +0 -7
- package/dist/lib/neutral/delete-IU7HPU3K.mjs +0 -19
- package/dist/lib/neutral/delete-IU7HPU3K.mjs.map +0 -7
- package/dist/lib/neutral/enable-skills-FHEJXQVB.mjs +0 -47
- package/dist/lib/neutral/enable-skills-FHEJXQVB.mjs.map +0 -7
- package/dist/lib/neutral/fetch-5LY25EBR.mjs +0 -24
- package/dist/lib/neutral/fetch-5LY25EBR.mjs.map +0 -7
- package/dist/lib/neutral/fetch-messages-CQMDI36G.mjs +0 -139
- package/dist/lib/neutral/fetch-messages-CQMDI36G.mjs.map +0 -7
- package/dist/lib/neutral/get-context-Q4YY6DRV.mjs +0 -77
- package/dist/lib/neutral/get-context-Q4YY6DRV.mjs.map +0 -7
- package/dist/lib/neutral/get-current-date-JR5F7ZS3.mjs +0 -17
- package/dist/lib/neutral/get-current-date-JR5F7ZS3.mjs.map +0 -7
- package/dist/lib/neutral/index.mjs +0 -875
- package/dist/lib/neutral/index.mjs.map +0 -7
- package/dist/lib/neutral/load-S6HC5TGX.mjs +0 -17
- package/dist/lib/neutral/load-S6HC5TGX.mjs.map +0 -7
- package/dist/lib/neutral/meta.json +0 -1
- package/dist/lib/neutral/object-create-PVDQ62CG.mjs +0 -32
- package/dist/lib/neutral/object-create-PVDQ62CG.mjs.map +0 -7
- package/dist/lib/neutral/object-delete-3CSL6XI6.mjs +0 -18
- package/dist/lib/neutral/object-delete-3CSL6XI6.mjs.map +0 -7
- package/dist/lib/neutral/object-update-NIGMZINM.mjs +0 -28
- package/dist/lib/neutral/object-update-NIGMZINM.mjs.map +0 -7
- package/dist/lib/neutral/plan-reminder-N4X6JPBI.mjs +0 -88
- package/dist/lib/neutral/plan-reminder-N4X6JPBI.mjs.map +0 -7
- package/dist/lib/neutral/qualifier-5CIRZYX5.mjs +0 -91
- package/dist/lib/neutral/qualifier-5CIRZYX5.mjs.map +0 -7
- package/dist/lib/neutral/query-K4R7UHLU.mjs +0 -32
- package/dist/lib/neutral/query-K4R7UHLU.mjs.map +0 -7
- package/dist/lib/neutral/query-NCTCRYTD.mjs +0 -59
- package/dist/lib/neutral/query-NCTCRYTD.mjs.map +0 -7
- package/dist/lib/neutral/query-skills-7GQFSU4V.mjs +0 -17
- package/dist/lib/neutral/query-skills-7GQFSU4V.mjs.map +0 -7
- package/dist/lib/neutral/relation-create-QKXHTL7G.mjs +0 -34
- package/dist/lib/neutral/relation-create-QKXHTL7G.mjs.map +0 -7
- package/dist/lib/neutral/relation-delete-PDIWT2JX.mjs +0 -18
- package/dist/lib/neutral/relation-delete-PDIWT2JX.mjs.map +0 -7
- package/dist/lib/neutral/run-instructions-72ASH5EZ.mjs +0 -165
- package/dist/lib/neutral/run-instructions-72ASH5EZ.mjs.map +0 -7
- package/dist/lib/neutral/save-UYVRA4RS.mjs +0 -23
- package/dist/lib/neutral/save-UYVRA4RS.mjs.map +0 -7
- package/dist/lib/neutral/schema-add-5NOK2RWE.mjs +0 -25
- package/dist/lib/neutral/schema-add-5NOK2RWE.mjs.map +0 -7
- package/dist/lib/neutral/schema-list-BZUR5KMX.mjs +0 -37
- package/dist/lib/neutral/schema-list-BZUR5KMX.mjs.map +0 -7
- package/dist/lib/neutral/set-alarm-BD3NEYSU.mjs +0 -65
- package/dist/lib/neutral/set-alarm-BD3NEYSU.mjs.map +0 -7
- package/dist/lib/neutral/sync-issues-O76MCMD3.mjs +0 -166
- package/dist/lib/neutral/sync-issues-O76MCMD3.mjs.map +0 -7
- package/dist/lib/neutral/sync-triggers-YBTLPCUB.mjs +0 -138
- package/dist/lib/neutral/sync-triggers-YBTLPCUB.mjs.map +0 -7
- package/dist/lib/neutral/tag-add-L5WNOBYY.mjs +0 -18
- package/dist/lib/neutral/tag-add-L5WNOBYY.mjs.map +0 -7
- package/dist/lib/neutral/tag-remove-WV5RPE5W.mjs +0 -18
- package/dist/lib/neutral/tag-remove-WV5RPE5W.mjs.map +0 -7
- package/dist/lib/neutral/testing/index.mjs +0 -65
- package/dist/lib/neutral/testing/index.mjs.map +0 -7
- package/dist/lib/neutral/update-tasks-HX4ILWOU.mjs +0 -46
- package/dist/lib/neutral/update-tasks-HX4ILWOU.mjs.map +0 -7
- package/dist/types/src/skills/agent/operations/add-artifact.d.ts +0 -4
- package/dist/types/src/skills/agent/operations/add-artifact.d.ts.map +0 -1
- package/dist/types/src/skills/agent/operations/agent.d.ts +0 -4
- package/dist/types/src/skills/agent/operations/agent.d.ts.map +0 -1
- package/dist/types/src/skills/agent/operations/qualifier.d.ts +0 -5
- package/dist/types/src/skills/agent/operations/qualifier.d.ts.map +0 -1
- package/dist/types/src/skills/agent/skill.test.d.ts.map +0 -1
- package/dist/types/src/skills/agent-wizard/operations/sync-triggers.d.ts +0 -8
- package/dist/types/src/skills/agent-wizard/operations/sync-triggers.d.ts.map +0 -1
- package/dist/types/src/skills/database/skill.test.d.ts +0 -2
- package/dist/types/src/skills/database/skill.test.d.ts.map +0 -1
- package/dist/types/src/skills/memory/skill.test.d.ts +0 -2
- package/dist/types/src/skills/memory/skill.test.d.ts.map +0 -1
- package/dist/types/src/skills/planning/skill.test.d.ts +0 -2
- package/dist/types/src/skills/planning/skill.test.d.ts.map +0 -1
- package/dist/types/src/types/Plan.d.ts +0 -80
- package/dist/types/src/types/Plan.d.ts.map +0 -1
- package/src/operations/run-instructions.conversations.json +0 -1
- package/src/skills/agent/operations/add-artifact.ts +0 -20
- package/src/skills/agent/operations/agent.ts +0 -69
- package/src/skills/agent/operations/qualifier.ts +0 -97
- package/src/skills/agent/skill.conversations.json +0 -1
- package/src/skills/agent/skill.test.ts +0 -728
- package/src/skills/agent-wizard/operations/sync-triggers.ts +0 -169
- package/src/skills/database/skill.conversations.json +0 -1
- package/src/skills/database/skill.test.ts +0 -531
- package/src/skills/memory/skill.conversations.json +0 -1
- package/src/skills/memory/skill.test.ts +0 -138
- package/src/skills/planning/skill.conversations.json +0 -1
- package/src/skills/planning/skill.test.ts +0 -123
- package/src/types/Plan.ts +0 -123
- /package/dist/types/src/skills/{agent → project}/skill.test.d.ts +0 -0
|
@@ -1,728 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { describe, expect, it } from '@effect/vitest';
|
|
6
|
-
import * as Effect from 'effect/Effect';
|
|
7
|
-
import * as Exit from 'effect/Exit';
|
|
8
|
-
|
|
9
|
-
import { MemoizedAiService, MemoizedLanguageModel } from '@dxos/ai/testing';
|
|
10
|
-
import { AiSession } from '@dxos/assistant';
|
|
11
|
-
import { SpaceProperties } from '@dxos/client-protocol';
|
|
12
|
-
import { Operation, OperationHandlerSet, Skill, Trigger } from '@dxos/compute';
|
|
13
|
-
import { Collection, Database, Feed, Filter, Obj, Query, Ref } from '@dxos/echo';
|
|
14
|
-
import { EffectEx } from '@dxos/effect';
|
|
15
|
-
import { TestHelpers } from '@dxos/effect/testing';
|
|
16
|
-
import { TriggerDispatcher } from '@dxos/functions-runtime';
|
|
17
|
-
import { AssistantTestLayerWithTriggers } from '@dxos/functions-runtime/testing';
|
|
18
|
-
import { invariant } from '@dxos/invariant';
|
|
19
|
-
import { EntityId } from '@dxos/keys';
|
|
20
|
-
import { MarkdownSkill } from '@dxos/plugin-markdown';
|
|
21
|
-
import { Markdown } from '@dxos/plugin-markdown';
|
|
22
|
-
import { MarkdownOperationHandlerSet } from '@dxos/plugin-markdown/plugin';
|
|
23
|
-
import { WithProperties } from '@dxos/plugin-markdown/testing';
|
|
24
|
-
import { Text } from '@dxos/schema';
|
|
25
|
-
import { Message } from '@dxos/types';
|
|
26
|
-
import { trim } from '@dxos/util';
|
|
27
|
-
|
|
28
|
-
import { Agent, Chat, Plan } from '../../types';
|
|
29
|
-
import { AgentWizardHandlers, AgentWizardOperations } from '../agent-wizard';
|
|
30
|
-
import { PlanningHandlers, PlanningSkill } from '../planning';
|
|
31
|
-
import { AgentSkillHandlers } from './operations';
|
|
32
|
-
import { AgentWorker } from './operations/definitions';
|
|
33
|
-
import AgentSkillDef from './skill';
|
|
34
|
-
|
|
35
|
-
EntityId.dangerouslyDisableRandomness();
|
|
36
|
-
|
|
37
|
-
const TestLayer = AssistantTestLayerWithTriggers({
|
|
38
|
-
aiServicePreset: 'edge-remote',
|
|
39
|
-
operationHandlers: OperationHandlerSet.merge(
|
|
40
|
-
AgentSkillHandlers,
|
|
41
|
-
AgentWizardHandlers,
|
|
42
|
-
MarkdownOperationHandlerSet,
|
|
43
|
-
PlanningHandlers,
|
|
44
|
-
),
|
|
45
|
-
types: [
|
|
46
|
-
Agent.Agent,
|
|
47
|
-
Plan.Plan,
|
|
48
|
-
Chat.CompanionTo,
|
|
49
|
-
Chat.Chat,
|
|
50
|
-
SpaceProperties,
|
|
51
|
-
Skill.Skill,
|
|
52
|
-
Trigger.Trigger,
|
|
53
|
-
Text.Text,
|
|
54
|
-
Markdown.Document,
|
|
55
|
-
Collection.Collection,
|
|
56
|
-
],
|
|
57
|
-
tracing: 'pretty',
|
|
58
|
-
// EntityIds are deterministic (via dangerouslyDisableRandomness) but their values shift when
|
|
59
|
-
// internal ECHO object creation changes. Canonicalize them so recordings match structurally
|
|
60
|
-
// regardless of which specific IDs the current code generates.
|
|
61
|
-
dynamicValuePatterns: [MemoizedLanguageModel.SPACE_ID_PATTERN, MemoizedLanguageModel.ENTITY_ID_PATTERN],
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
const SYSTEM = trim`
|
|
65
|
-
You are a helpful assistant that can help with tasks in the outside world.
|
|
66
|
-
Be transparent about what you are doing and what you are not doing.
|
|
67
|
-
If you do not have tools to complete the task, inform the user.
|
|
68
|
-
DO NOT PRETEND TO DO SOMETHING YOU CAN'T DO.
|
|
69
|
-
`;
|
|
70
|
-
|
|
71
|
-
describe('Agent', () => {
|
|
72
|
-
const skill = AgentSkillDef.make();
|
|
73
|
-
|
|
74
|
-
it.scoped(
|
|
75
|
-
'agent adds artifact to agent',
|
|
76
|
-
Effect.fnUntraced(
|
|
77
|
-
function* (_) {
|
|
78
|
-
const agent = yield* Agent.makeInitialized(
|
|
79
|
-
{
|
|
80
|
-
name: 'Test Agent',
|
|
81
|
-
instructions: 'A test agent for adding artifacts.',
|
|
82
|
-
skills: [Ref.make(MarkdownSkill.make())],
|
|
83
|
-
},
|
|
84
|
-
skill,
|
|
85
|
-
);
|
|
86
|
-
yield* Database.flush();
|
|
87
|
-
|
|
88
|
-
const document = yield* Database.add(
|
|
89
|
-
Obj.make(Markdown.Document, {
|
|
90
|
-
name: 'Test Document',
|
|
91
|
-
content: Ref.make(Text.make({ content: 'This is a test document with some content.' })),
|
|
92
|
-
}),
|
|
93
|
-
);
|
|
94
|
-
yield* Database.flush();
|
|
95
|
-
|
|
96
|
-
expect(agent.artifacts).toHaveLength(0);
|
|
97
|
-
|
|
98
|
-
const chatFeed = agent.chat?.target?.feed?.target;
|
|
99
|
-
invariant(chatFeed, 'Agent chat feed not found.');
|
|
100
|
-
const runtime = yield* Effect.runtime<Database.Service>();
|
|
101
|
-
const session = yield* EffectEx.acquireReleaseResource(
|
|
102
|
-
() => new AiSession.Session({ feed: chatFeed, runtime }),
|
|
103
|
-
);
|
|
104
|
-
yield* Effect.promise(() => session.context.open());
|
|
105
|
-
|
|
106
|
-
const documentUri = Obj.getURI(document);
|
|
107
|
-
yield* session
|
|
108
|
-
.createRequest({
|
|
109
|
-
system: SYSTEM,
|
|
110
|
-
prompt: `Please add the document ${documentUri} as an artifact named "My Test Document" to this agent.`,
|
|
111
|
-
})
|
|
112
|
-
.pipe(Effect.provide(session.makeToolExecutionServices()));
|
|
113
|
-
|
|
114
|
-
expect(agent.artifacts).toHaveLength(1);
|
|
115
|
-
expect(agent.artifacts[0].name).toBe('My Test Document');
|
|
116
|
-
const artifactData = yield* agent.artifacts[0].data.pipe(Database.load);
|
|
117
|
-
expect(Obj.instanceOf(Markdown.Document, artifactData)).toBe(true);
|
|
118
|
-
},
|
|
119
|
-
Effect.provide(TestLayer),
|
|
120
|
-
TestHelpers.provideTestContext,
|
|
121
|
-
),
|
|
122
|
-
MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
it.scoped(
|
|
126
|
-
'shopping list',
|
|
127
|
-
Effect.fnUntraced(
|
|
128
|
-
function* (_) {
|
|
129
|
-
const agent = yield* Agent.makeInitialized(
|
|
130
|
-
{
|
|
131
|
-
name: 'Shopping list',
|
|
132
|
-
instructions: 'Keep a shopping list of items to buy.',
|
|
133
|
-
skills: [Ref.make(MarkdownSkill.make())],
|
|
134
|
-
},
|
|
135
|
-
skill,
|
|
136
|
-
);
|
|
137
|
-
const chatFeed = agent.chat?.target?.feed?.target;
|
|
138
|
-
invariant(chatFeed, 'Agent chat feed not found.');
|
|
139
|
-
yield* Database.flush();
|
|
140
|
-
const runtime = yield* Effect.runtime<Database.Service>();
|
|
141
|
-
const session = yield* EffectEx.acquireReleaseResource(
|
|
142
|
-
() => new AiSession.Session({ feed: chatFeed, runtime }),
|
|
143
|
-
);
|
|
144
|
-
yield* Effect.promise(() => session.context.open());
|
|
145
|
-
|
|
146
|
-
yield* session
|
|
147
|
-
.createRequest({
|
|
148
|
-
system: SYSTEM,
|
|
149
|
-
prompt: `List ingredients for a scrambled eggs on a toast breakfast.`,
|
|
150
|
-
})
|
|
151
|
-
.pipe(Effect.provide(session.makeToolExecutionServices()));
|
|
152
|
-
|
|
153
|
-
console.log(yield* Effect.promise(() => dumpAgent(agent)));
|
|
154
|
-
},
|
|
155
|
-
Effect.provide(TestLayer),
|
|
156
|
-
TestHelpers.provideTestContext,
|
|
157
|
-
),
|
|
158
|
-
MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
|
|
159
|
-
);
|
|
160
|
-
|
|
161
|
-
it.scoped(
|
|
162
|
-
'expense tracking list',
|
|
163
|
-
Effect.fnUntraced(
|
|
164
|
-
function* (_) {
|
|
165
|
-
const agent = yield* Agent.makeInitialized(
|
|
166
|
-
{
|
|
167
|
-
name: 'Expense tracking',
|
|
168
|
-
instructions: trim`
|
|
169
|
-
Keep a list of expenses in a markdown document (create artifact "Expenses").
|
|
170
|
-
Process incoming emails, add the relevant ones to the list.
|
|
171
|
-
|
|
172
|
-
Format:
|
|
173
|
-
|
|
174
|
-
## Expenses
|
|
175
|
-
- Flight to London (2026-02-01): £100
|
|
176
|
-
- Hotel in London (2026-02-01): £100
|
|
177
|
-
`,
|
|
178
|
-
skills: [Ref.make(MarkdownSkill.make())],
|
|
179
|
-
},
|
|
180
|
-
skill,
|
|
181
|
-
);
|
|
182
|
-
yield* Database.flush();
|
|
183
|
-
|
|
184
|
-
const inboxFeed = yield* Database.add(Feed.make());
|
|
185
|
-
yield* Database.add(
|
|
186
|
-
Trigger.make({
|
|
187
|
-
enabled: true,
|
|
188
|
-
spec: Trigger.specFeed(inboxFeed),
|
|
189
|
-
runnable: Ref.make(Operation.serialize(AgentWorker)),
|
|
190
|
-
input: {
|
|
191
|
-
agent: Ref.make(agent),
|
|
192
|
-
event: '{{event}}',
|
|
193
|
-
},
|
|
194
|
-
}),
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
yield* Feed.append(
|
|
198
|
-
inboxFeed,
|
|
199
|
-
TEST_MESSAGES.map((message) => Obj.clone(message)),
|
|
200
|
-
);
|
|
201
|
-
|
|
202
|
-
const dispatcher = yield* TriggerDispatcher;
|
|
203
|
-
const invocations = yield* dispatcher.invokeScheduledTriggers({ kinds: ['feed'], untilExhausted: true });
|
|
204
|
-
expect(invocations.every((invocation) => Exit.isSuccess(invocation.result))).toBe(true);
|
|
205
|
-
|
|
206
|
-
console.log(yield* Effect.promise(() => dumpAgent(agent)));
|
|
207
|
-
},
|
|
208
|
-
WithProperties,
|
|
209
|
-
Effect.provide(TestLayer),
|
|
210
|
-
TestHelpers.provideTestContext,
|
|
211
|
-
),
|
|
212
|
-
MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
|
|
213
|
-
);
|
|
214
|
-
|
|
215
|
-
it.scoped(
|
|
216
|
-
'cron field creates a timer trigger that invokes the agent worker',
|
|
217
|
-
Effect.fnUntraced(
|
|
218
|
-
function* ({ expect }) {
|
|
219
|
-
const cron = '*/5 * * * *';
|
|
220
|
-
const agent = yield* Agent.makeInitialized(
|
|
221
|
-
{
|
|
222
|
-
name: 'Scheduled agent',
|
|
223
|
-
instructions: 'A scheduled agent that runs on a timer.',
|
|
224
|
-
skills: [Ref.make(MarkdownSkill.make())],
|
|
225
|
-
cron,
|
|
226
|
-
},
|
|
227
|
-
skill,
|
|
228
|
-
);
|
|
229
|
-
yield* Database.flush();
|
|
230
|
-
|
|
231
|
-
yield* Operation.invoke(AgentWizardOperations.SyncTriggers, { agent: Ref.make(agent) });
|
|
232
|
-
|
|
233
|
-
const triggers = yield* Database.query(
|
|
234
|
-
Query.select(Filter.type(Trigger.Trigger)).debugLabel('assistant-toolkit.skill.test.timer'),
|
|
235
|
-
).run;
|
|
236
|
-
const timerTriggers = triggers.filter(
|
|
237
|
-
(trigger) => trigger.spec?.kind === 'timer' && trigger.spec.cron === cron,
|
|
238
|
-
);
|
|
239
|
-
expect(timerTriggers).toHaveLength(1);
|
|
240
|
-
|
|
241
|
-
const timerTrigger = timerTriggers[0];
|
|
242
|
-
invariant(timerTrigger.spec?.kind === 'timer');
|
|
243
|
-
expect(timerTrigger.spec.cron).toBe(cron);
|
|
244
|
-
expect(timerTrigger.enabled).toBe(true);
|
|
245
|
-
|
|
246
|
-
// Timer trigger bypasses the qualifier and points to the agent worker.
|
|
247
|
-
invariant(timerTrigger.runnable);
|
|
248
|
-
const operation = yield* Database.load(timerTrigger.runnable);
|
|
249
|
-
invariant(Obj.instanceOf(Operation.PersistentOperation, operation));
|
|
250
|
-
expect(Obj.getMeta(operation).key).toBe(AgentWorker.meta.key);
|
|
251
|
-
},
|
|
252
|
-
Effect.provide(TestLayer),
|
|
253
|
-
TestHelpers.provideTestContext,
|
|
254
|
-
),
|
|
255
|
-
);
|
|
256
|
-
|
|
257
|
-
it.scoped(
|
|
258
|
-
'planning',
|
|
259
|
-
Effect.fnUntraced(
|
|
260
|
-
function* (_) {
|
|
261
|
-
const agent = yield* Agent.makeInitialized(
|
|
262
|
-
{
|
|
263
|
-
name: 'Egg making',
|
|
264
|
-
instructions: trim`
|
|
265
|
-
I'm testing how planning (task management) works.
|
|
266
|
-
Create tasks to make scrambled eggs.
|
|
267
|
-
|
|
268
|
-
Then simulate this plan execution in a markdown document.
|
|
269
|
-
The document should reflect the state of all objects involved in the cooking process.
|
|
270
|
-
The document should also have the log of actions taken.
|
|
271
|
-
|
|
272
|
-
Important: simualte actions one by one, in the order they are listed.
|
|
273
|
-
Simlate by updating the local document.
|
|
274
|
-
|
|
275
|
-
<example>
|
|
276
|
-
# State
|
|
277
|
-
|
|
278
|
-
- 2 raw eggs
|
|
279
|
-
- 1 frying pan
|
|
280
|
-
|
|
281
|
-
# Action log
|
|
282
|
-
|
|
283
|
-
- Taken 2 raw eggs out of the fridge.
|
|
284
|
-
</example>
|
|
285
|
-
`,
|
|
286
|
-
skills: [Ref.make(MarkdownSkill.make()), Ref.make(Obj.clone(PlanningSkill.make()))],
|
|
287
|
-
},
|
|
288
|
-
skill,
|
|
289
|
-
);
|
|
290
|
-
yield* Database.flush();
|
|
291
|
-
|
|
292
|
-
const chatFeed = agent.chat?.target?.feed?.target;
|
|
293
|
-
invariant(chatFeed, 'Agent chat feed not found.');
|
|
294
|
-
yield* Database.flush();
|
|
295
|
-
const runtime = yield* Effect.runtime<Database.Service>();
|
|
296
|
-
const session = yield* EffectEx.acquireReleaseResource(
|
|
297
|
-
() => new AiSession.Session({ feed: chatFeed, runtime }),
|
|
298
|
-
);
|
|
299
|
-
yield* Effect.promise(() => session.context.open());
|
|
300
|
-
|
|
301
|
-
yield* session
|
|
302
|
-
.createRequest({
|
|
303
|
-
system: SYSTEM,
|
|
304
|
-
prompt: `Go`,
|
|
305
|
-
})
|
|
306
|
-
.pipe(Effect.provide(session.makeToolExecutionServices()));
|
|
307
|
-
|
|
308
|
-
console.log(yield* Effect.promise(() => dumpAgent(agent)));
|
|
309
|
-
},
|
|
310
|
-
WithProperties,
|
|
311
|
-
Effect.provide(TestLayer),
|
|
312
|
-
TestHelpers.provideTestContext,
|
|
313
|
-
),
|
|
314
|
-
MemoizedAiService.isGenerationEnabled() ? 240_000 : 30_000,
|
|
315
|
-
);
|
|
316
|
-
|
|
317
|
-
it.scoped(
|
|
318
|
-
'sync-triggers sets trigger enabled from agent.enabled',
|
|
319
|
-
Effect.fnUntraced(
|
|
320
|
-
function* ({ expect }) {
|
|
321
|
-
const agent = yield* Agent.makeInitialized(
|
|
322
|
-
{
|
|
323
|
-
name: 'Toggle agent',
|
|
324
|
-
instructions: 'Test enabled propagation.',
|
|
325
|
-
skills: [Ref.make(MarkdownSkill.make())],
|
|
326
|
-
enabled: false,
|
|
327
|
-
cron: '0 9 * * *',
|
|
328
|
-
},
|
|
329
|
-
skill,
|
|
330
|
-
);
|
|
331
|
-
yield* Database.flush();
|
|
332
|
-
|
|
333
|
-
yield* Operation.invoke(AgentWizardOperations.SyncTriggers, { agent: Ref.make(agent) });
|
|
334
|
-
|
|
335
|
-
const triggers = yield* Database.query(
|
|
336
|
-
Query.select(Filter.type(Trigger.Trigger)).debugLabel('assistant-toolkit.skill.test.toggle-enabled'),
|
|
337
|
-
).run;
|
|
338
|
-
expect(triggers.every((trigger) => trigger.enabled === false)).toBe(true);
|
|
339
|
-
|
|
340
|
-
Obj.update(agent, (agent) => {
|
|
341
|
-
agent.enabled = true;
|
|
342
|
-
});
|
|
343
|
-
yield* Database.flush();
|
|
344
|
-
yield* Operation.invoke(AgentWizardOperations.SyncTriggers, { agent: Ref.make(agent) });
|
|
345
|
-
|
|
346
|
-
const triggersAfter = yield* Database.query(
|
|
347
|
-
Query.select(Filter.type(Trigger.Trigger)).debugLabel('assistant-toolkit.skill.test.after'),
|
|
348
|
-
).run;
|
|
349
|
-
expect(triggersAfter).toHaveLength(triggers.length);
|
|
350
|
-
expect(triggersAfter.every((trigger) => trigger.enabled === true)).toBe(true);
|
|
351
|
-
},
|
|
352
|
-
Effect.provide(TestLayer),
|
|
353
|
-
TestHelpers.provideTestContext,
|
|
354
|
-
),
|
|
355
|
-
);
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
const dumpAgent = async (agent: Agent.Agent) => {
|
|
359
|
-
let text = '';
|
|
360
|
-
text += `============== Agent: ${agent.name} ==============\n\n`;
|
|
361
|
-
text += `============== Instructions ==============\n\n`;
|
|
362
|
-
text += `${await agent.instructions.load().then((_) => _.content)}\n`;
|
|
363
|
-
text += `============== Plan ==============\n\n`;
|
|
364
|
-
if (agent.chat) {
|
|
365
|
-
const chat = await agent.chat.load();
|
|
366
|
-
text += chat.plan ? `${await chat.plan.load().then((plan) => Plan.formatPlan(plan))}\n` : 'No plan found.\n';
|
|
367
|
-
} else {
|
|
368
|
-
text += 'No plan found.\n';
|
|
369
|
-
}
|
|
370
|
-
text += `============== Artifacts ==============\n\n`;
|
|
371
|
-
for (const artifact of agent.artifacts) {
|
|
372
|
-
const data = await artifact.data.load();
|
|
373
|
-
text += `============== ${artifact.name} (${Obj.getTypename(data)}) ==============\n`;
|
|
374
|
-
if (Obj.instanceOf(Markdown.Document, data)) {
|
|
375
|
-
text += `# ${Obj.getLabel(data)}\n\n${await data.content.load().then((_) => _.content)}\n`;
|
|
376
|
-
} else {
|
|
377
|
-
text += ` ${JSON.stringify(data, null, 2)}\n`;
|
|
378
|
-
}
|
|
379
|
-
text += '\n';
|
|
380
|
-
}
|
|
381
|
-
return text;
|
|
382
|
-
};
|
|
383
|
-
|
|
384
|
-
const TEST_MESSAGES = [
|
|
385
|
-
// Expense-related emails
|
|
386
|
-
Obj.make(Message.Message, {
|
|
387
|
-
created: new Date('2026-01-28T10:15:00Z').toISOString(),
|
|
388
|
-
sender: { email: 'receipts@britishairways.com' },
|
|
389
|
-
blocks: [
|
|
390
|
-
{
|
|
391
|
-
_tag: 'text',
|
|
392
|
-
text: trim`
|
|
393
|
-
From: receipts@britishairways.com
|
|
394
|
-
Subject: Your British Airways booking confirmation - BA287
|
|
395
|
-
|
|
396
|
-
Dear Mr. Smith,
|
|
397
|
-
|
|
398
|
-
Thank you for booking with British Airways. Your flight reservation is confirmed.
|
|
399
|
-
|
|
400
|
-
BOOKING REFERENCE: XK7M2P
|
|
401
|
-
|
|
402
|
-
FLIGHT DETAILS
|
|
403
|
-
─────────────────────────────────────
|
|
404
|
-
Flight: BA287
|
|
405
|
-
Date: 15 February 2026
|
|
406
|
-
Route: San Francisco (SFO) → London Heathrow (LHR)
|
|
407
|
-
Departure: 17:45 PST
|
|
408
|
-
Arrival: 12:15 GMT (+1 day)
|
|
409
|
-
Class: Economy
|
|
410
|
-
|
|
411
|
-
PASSENGER
|
|
412
|
-
─────────────────────────────────────
|
|
413
|
-
John Smith
|
|
414
|
-
|
|
415
|
-
PAYMENT SUMMARY
|
|
416
|
-
─────────────────────────────────────
|
|
417
|
-
Base fare: £485.00
|
|
418
|
-
Taxes and fees: £127.50
|
|
419
|
-
─────────────────────────────────────
|
|
420
|
-
TOTAL PAID: £612.50
|
|
421
|
-
|
|
422
|
-
Payment method: Visa ending in 4521
|
|
423
|
-
Transaction date: 28 January 2026
|
|
424
|
-
|
|
425
|
-
Please keep this email for your records.
|
|
426
|
-
|
|
427
|
-
Kind regards,
|
|
428
|
-
British Airways
|
|
429
|
-
`,
|
|
430
|
-
},
|
|
431
|
-
],
|
|
432
|
-
}),
|
|
433
|
-
Obj.make(Message.Message, {
|
|
434
|
-
created: new Date('2026-01-29T14:30:00Z').toISOString(),
|
|
435
|
-
sender: { email: 'noreply@booking.com' },
|
|
436
|
-
blocks: [
|
|
437
|
-
{
|
|
438
|
-
_tag: 'text',
|
|
439
|
-
text: trim`
|
|
440
|
-
From: noreply@booking.com
|
|
441
|
-
Subject: Booking Confirmation - The Savoy London
|
|
442
|
-
|
|
443
|
-
Booking Confirmation
|
|
444
|
-
|
|
445
|
-
Dear John Smith,
|
|
446
|
-
|
|
447
|
-
Your booking is confirmed!
|
|
448
|
-
|
|
449
|
-
Hotel: The Savoy London
|
|
450
|
-
Address: Strand, London WC2R 0EU, United Kingdom
|
|
451
|
-
Check-in: 15 February 2026, 15:00
|
|
452
|
-
Check-out: 18 February 2026, 11:00
|
|
453
|
-
Guests: 1 adult
|
|
454
|
-
Room: Deluxe King Room
|
|
455
|
-
|
|
456
|
-
Total amount: £450.00
|
|
457
|
-
Payment: Paid via credit card ending in 4521
|
|
458
|
-
Booking reference: BK-789456123
|
|
459
|
-
|
|
460
|
-
We look forward to welcoming you!
|
|
461
|
-
|
|
462
|
-
Best regards,
|
|
463
|
-
Booking.com
|
|
464
|
-
`,
|
|
465
|
-
},
|
|
466
|
-
],
|
|
467
|
-
}),
|
|
468
|
-
Obj.make(Message.Message, {
|
|
469
|
-
created: new Date('2026-02-15T19:45:00Z').toISOString(),
|
|
470
|
-
sender: { email: 'receipt@uber.com' },
|
|
471
|
-
blocks: [
|
|
472
|
-
{
|
|
473
|
-
_tag: 'text',
|
|
474
|
-
text: trim`
|
|
475
|
-
From: receipt@uber.com
|
|
476
|
-
Subject: Your trip receipt
|
|
477
|
-
|
|
478
|
-
Trip Receipt
|
|
479
|
-
|
|
480
|
-
Trip Date: February 15, 2026 at 7:30 PM
|
|
481
|
-
Trip ID: 1A2B3C4D5E
|
|
482
|
-
|
|
483
|
-
Route: London Heathrow Airport → The Savoy London
|
|
484
|
-
Distance: 18.2 miles
|
|
485
|
-
Duration: 45 minutes
|
|
486
|
-
|
|
487
|
-
Fare breakdown:
|
|
488
|
-
Base fare: £12.50
|
|
489
|
-
Distance: £18.20
|
|
490
|
-
Time: £11.25
|
|
491
|
-
Booking fee: £2.50
|
|
492
|
-
─────────────────────────────────────
|
|
493
|
-
Subtotal: £44.45
|
|
494
|
-
VAT (20%): £8.89
|
|
495
|
-
─────────────────────────────────────
|
|
496
|
-
Total: £53.34
|
|
497
|
-
|
|
498
|
-
Payment method: Visa •••• 4521
|
|
499
|
-
|
|
500
|
-
Thank you for riding with Uber!
|
|
501
|
-
`,
|
|
502
|
-
},
|
|
503
|
-
],
|
|
504
|
-
}),
|
|
505
|
-
Obj.make(Message.Message, {
|
|
506
|
-
created: new Date('2026-02-16T20:15:00Z').toISOString(),
|
|
507
|
-
sender: { email: 'receipts@opentable.com' },
|
|
508
|
-
blocks: [
|
|
509
|
-
{
|
|
510
|
-
_tag: 'text',
|
|
511
|
-
text: trim`
|
|
512
|
-
From: receipts@opentable.com
|
|
513
|
-
Subject: Your receipt from The Ivy
|
|
514
|
-
|
|
515
|
-
Receipt
|
|
516
|
-
|
|
517
|
-
Restaurant: The Ivy
|
|
518
|
-
Address: 1-5 West Street, London WC2H 9NQ
|
|
519
|
-
Date: February 16, 2026
|
|
520
|
-
Time: 8:00 PM
|
|
521
|
-
Table: 12
|
|
522
|
-
Guests: 2
|
|
523
|
-
|
|
524
|
-
Order Summary:
|
|
525
|
-
─────────────────────────────────────
|
|
526
|
-
Starter - Scallops £18.00
|
|
527
|
-
Main - Ribeye Steak £32.00
|
|
528
|
-
Main - Sea Bass £28.00
|
|
529
|
-
Side - Truffle Fries £8.50
|
|
530
|
-
Wine - Chardonnay (bottle) £45.00
|
|
531
|
-
Dessert - Chocolate Soufflé £12.00
|
|
532
|
-
─────────────────────────────────────
|
|
533
|
-
Subtotal: £143.50
|
|
534
|
-
Service charge (12.5%): £17.94
|
|
535
|
-
─────────────────────────────────────
|
|
536
|
-
Total: £161.44
|
|
537
|
-
|
|
538
|
-
Payment: Card ending in 4521
|
|
539
|
-
Reservation ID: OT-987654321
|
|
540
|
-
|
|
541
|
-
Thank you for dining with us!
|
|
542
|
-
`,
|
|
543
|
-
},
|
|
544
|
-
],
|
|
545
|
-
}),
|
|
546
|
-
Obj.make(Message.Message, {
|
|
547
|
-
created: new Date('2026-02-17T09:00:00Z').toISOString(),
|
|
548
|
-
sender: { email: 'receipts@amazon.co.uk' },
|
|
549
|
-
blocks: [
|
|
550
|
-
{
|
|
551
|
-
_tag: 'text',
|
|
552
|
-
text: trim`
|
|
553
|
-
From: receipts@amazon.co.uk
|
|
554
|
-
Subject: Your Amazon.co.uk order #123-4567890-1234567
|
|
555
|
-
|
|
556
|
-
Order Confirmation
|
|
557
|
-
|
|
558
|
-
Hello John Smith,
|
|
559
|
-
|
|
560
|
-
We've received your order and will send a confirmation when it ships.
|
|
561
|
-
|
|
562
|
-
Order #123-4567890-1234567
|
|
563
|
-
Order Date: February 17, 2026
|
|
564
|
-
|
|
565
|
-
Items Ordered:
|
|
566
|
-
─────────────────────────────────────
|
|
567
|
-
1x London Travel Guide 2026 £12.99
|
|
568
|
-
1x Universal Travel Adapter £8.50
|
|
569
|
-
─────────────────────────────────────
|
|
570
|
-
Items: £21.49
|
|
571
|
-
Shipping & Handling: £4.99
|
|
572
|
-
─────────────────────────────────────
|
|
573
|
-
Order Total: £26.48
|
|
574
|
-
|
|
575
|
-
Payment method: Visa ending in 4521
|
|
576
|
-
Shipping to: The Savoy London, Strand, London WC2R 0EU
|
|
577
|
-
|
|
578
|
-
Estimated delivery: February 18, 2026
|
|
579
|
-
|
|
580
|
-
Thank you for your order!
|
|
581
|
-
`,
|
|
582
|
-
},
|
|
583
|
-
],
|
|
584
|
-
}),
|
|
585
|
-
// Unrelated emails
|
|
586
|
-
Obj.make(Message.Message, {
|
|
587
|
-
created: new Date('2026-01-30T08:00:00Z').toISOString(),
|
|
588
|
-
sender: { email: 'newsletter@techcrunch.com' },
|
|
589
|
-
blocks: [
|
|
590
|
-
{
|
|
591
|
-
_tag: 'text',
|
|
592
|
-
text: trim`
|
|
593
|
-
From: newsletter@techcrunch.com
|
|
594
|
-
Subject: Weekly Tech Roundup - AI Breakthroughs & Startup News
|
|
595
|
-
|
|
596
|
-
TechCrunch Weekly Newsletter
|
|
597
|
-
|
|
598
|
-
This week in tech:
|
|
599
|
-
|
|
600
|
-
• OpenAI announces GPT-5 with enhanced reasoning capabilities
|
|
601
|
-
• New quantum computing milestone achieved by IBM
|
|
602
|
-
• 5 startups that raised over $100M this week
|
|
603
|
-
• The future of autonomous vehicles: what's next?
|
|
604
|
-
|
|
605
|
-
Read the full stories: https://techcrunch.com/weekly
|
|
606
|
-
|
|
607
|
-
Unsubscribe | Manage preferences
|
|
608
|
-
`,
|
|
609
|
-
},
|
|
610
|
-
],
|
|
611
|
-
}),
|
|
612
|
-
Obj.make(Message.Message, {
|
|
613
|
-
created: new Date('2026-02-01T12:00:00Z').toISOString(),
|
|
614
|
-
sender: { email: 'sarah.johnson@gmail.com' },
|
|
615
|
-
blocks: [
|
|
616
|
-
{
|
|
617
|
-
_tag: 'text',
|
|
618
|
-
text: trim`
|
|
619
|
-
From: sarah.johnson@gmail.com
|
|
620
|
-
Subject: Re: Coffee next week?
|
|
621
|
-
|
|
622
|
-
Hey John,
|
|
623
|
-
|
|
624
|
-
Sounds great! How about Tuesday at 2pm? The usual place?
|
|
625
|
-
|
|
626
|
-
Let me know if that works for you.
|
|
627
|
-
|
|
628
|
-
Cheers,
|
|
629
|
-
Sarah
|
|
630
|
-
`,
|
|
631
|
-
},
|
|
632
|
-
],
|
|
633
|
-
}),
|
|
634
|
-
Obj.make(Message.Message, {
|
|
635
|
-
created: new Date('2026-02-10T10:30:00Z').toISOString(),
|
|
636
|
-
sender: { email: 'promotions@nike.com' },
|
|
637
|
-
blocks: [
|
|
638
|
-
{
|
|
639
|
-
_tag: 'text',
|
|
640
|
-
text: trim`
|
|
641
|
-
From: promotions@nike.com
|
|
642
|
-
Subject: 🏃♂️ 30% Off Running Shoes - Limited Time!
|
|
643
|
-
|
|
644
|
-
Don't miss out!
|
|
645
|
-
|
|
646
|
-
Get 30% off all running shoes this week only. Use code RUN30 at checkout.
|
|
647
|
-
|
|
648
|
-
Shop now: https://nike.com/sale
|
|
649
|
-
|
|
650
|
-
Valid until February 17, 2026.
|
|
651
|
-
|
|
652
|
-
Unsubscribe | View in browser
|
|
653
|
-
`,
|
|
654
|
-
},
|
|
655
|
-
],
|
|
656
|
-
}),
|
|
657
|
-
Obj.make(Message.Message, {
|
|
658
|
-
created: new Date('2026-02-14T16:20:00Z').toISOString(),
|
|
659
|
-
sender: { email: 'notifications@github.com' },
|
|
660
|
-
blocks: [
|
|
661
|
-
{
|
|
662
|
-
_tag: 'text',
|
|
663
|
-
text: trim`
|
|
664
|
-
From: notifications@github.com
|
|
665
|
-
Subject: [dxos/dxos] New pull request: feat: add expense tracking
|
|
666
|
-
|
|
667
|
-
johnsmith opened a pull request in dxos/dxos
|
|
668
|
-
|
|
669
|
-
Title: feat: add expense tracking
|
|
670
|
-
Branch: feature/expense-tracking → main
|
|
671
|
-
|
|
672
|
-
This PR adds a new expense tracking feature to the assistant toolkit.
|
|
673
|
-
|
|
674
|
-
Review it here: https://github.com/dxos/dxos/pull/1234
|
|
675
|
-
|
|
676
|
-
You're receiving this because you're watching this repository.
|
|
677
|
-
`,
|
|
678
|
-
},
|
|
679
|
-
],
|
|
680
|
-
}),
|
|
681
|
-
Obj.make(Message.Message, {
|
|
682
|
-
created: new Date('2026-02-18T11:00:00Z').toISOString(),
|
|
683
|
-
sender: { email: 'receipts@britishairways.com' },
|
|
684
|
-
blocks: [
|
|
685
|
-
{
|
|
686
|
-
_tag: 'text',
|
|
687
|
-
text: trim`
|
|
688
|
-
From: receipts@britishairways.com
|
|
689
|
-
Subject: Your British Airways booking confirmation - BA288
|
|
690
|
-
|
|
691
|
-
Dear Mr. Smith,
|
|
692
|
-
|
|
693
|
-
Thank you for booking with British Airways. Your return flight reservation is confirmed.
|
|
694
|
-
|
|
695
|
-
BOOKING REFERENCE: YK8N3Q
|
|
696
|
-
|
|
697
|
-
FLIGHT DETAILS
|
|
698
|
-
─────────────────────────────────────
|
|
699
|
-
Flight: BA288
|
|
700
|
-
Date: 20 February 2026
|
|
701
|
-
Route: London Heathrow (LHR) → San Francisco (SFO)
|
|
702
|
-
Departure: 10:30 GMT
|
|
703
|
-
Arrival: 13:15 PST
|
|
704
|
-
Class: Economy
|
|
705
|
-
|
|
706
|
-
PASSENGER
|
|
707
|
-
─────────────────────────────────────
|
|
708
|
-
John Smith
|
|
709
|
-
|
|
710
|
-
PAYMENT SUMMARY
|
|
711
|
-
─────────────────────────────────────
|
|
712
|
-
Base fare: £520.00
|
|
713
|
-
Taxes and fees: £135.00
|
|
714
|
-
─────────────────────────────────────
|
|
715
|
-
TOTAL PAID: £655.00
|
|
716
|
-
|
|
717
|
-
Payment method: Visa ending in 4521
|
|
718
|
-
Transaction date: 18 February 2026
|
|
719
|
-
|
|
720
|
-
Please keep this email for your records.
|
|
721
|
-
|
|
722
|
-
Kind regards,
|
|
723
|
-
British Airways
|
|
724
|
-
`,
|
|
725
|
-
},
|
|
726
|
-
],
|
|
727
|
-
}),
|
|
728
|
-
];
|