@dxos/assistant-toolkit 0.8.4-main.dfabb4ec29 → 0.8.4-main.effb148878
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/LICENSE +102 -5
- package/dist/lib/neutral/{add-artifact-ZUJ5DMSY.mjs → add-artifact-ZKSSMPLY.mjs} +6 -6
- package/dist/lib/neutral/{add-artifact-ZUJ5DMSY.mjs.map → add-artifact-ZKSSMPLY.mjs.map} +3 -3
- package/dist/lib/neutral/{agent-5NIKAYUK.mjs → agent-UIASE5LZ.mjs} +7 -7
- package/dist/lib/neutral/{agent-5NIKAYUK.mjs.map → agent-UIASE5LZ.mjs.map} +2 -2
- package/dist/lib/neutral/chunk-AF5TWFLV.mjs +66 -0
- package/dist/lib/neutral/chunk-AF5TWFLV.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-P4ZMYO4K.mjs → chunk-CMHECL6N.mjs} +21 -33
- package/dist/lib/neutral/chunk-CMHECL6N.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ZFXLTBZG.mjs → chunk-DC5KITJP.mjs} +3 -2
- package/dist/lib/neutral/chunk-DC5KITJP.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-WLR3BGO4.mjs → chunk-EUHZLWCG.mjs} +2 -1
- package/dist/lib/neutral/chunk-EUHZLWCG.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-IKBIORQX.mjs → chunk-EUTROPCP.mjs} +22 -9
- package/dist/lib/neutral/chunk-EUTROPCP.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-GV66MKAQ.mjs → chunk-FNN6ERC6.mjs} +4 -3
- package/dist/lib/neutral/chunk-FNN6ERC6.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-246ACKSH.mjs → chunk-GEMRKH7J.mjs} +15 -12
- package/dist/lib/neutral/chunk-GEMRKH7J.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-EJAQUAKM.mjs → chunk-GHGJCH73.mjs} +8 -5
- package/dist/lib/neutral/chunk-GHGJCH73.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-KGU725LW.mjs → chunk-LO2S3ICN.mjs} +4 -7
- package/dist/lib/neutral/chunk-LO2S3ICN.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-TO5IX24K.mjs → chunk-MMIERIDT.mjs} +12 -9
- package/dist/lib/neutral/chunk-MMIERIDT.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-NR3GTWRC.mjs → chunk-OC77MYT5.mjs} +8 -13
- package/dist/lib/neutral/chunk-OC77MYT5.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-ROMZO4CB.mjs → chunk-ONQXVECY.mjs} +11 -9
- package/dist/lib/neutral/chunk-ONQXVECY.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-QO5SU37C.mjs → chunk-PAEPER4S.mjs} +3 -3
- package/dist/lib/neutral/{chunk-XUF53B6B.mjs → chunk-RIF2TKJJ.mjs} +10 -9
- package/dist/lib/neutral/chunk-RIF2TKJJ.mjs.map +7 -0
- package/dist/lib/neutral/{context-add-VB7AOY3G.mjs → context-add-VNJUVPSY.mjs} +4 -4
- package/dist/lib/neutral/context-add-VNJUVPSY.mjs.map +7 -0
- package/dist/lib/neutral/{context-remove-VCM3VPSO.mjs → context-remove-ZASL7ABZ.mjs} +4 -4
- package/dist/lib/neutral/context-remove-ZASL7ABZ.mjs.map +7 -0
- package/dist/lib/neutral/{create-project-EIF4OJMY.mjs → create-project-VNC2KKBG.mjs} +7 -7
- package/dist/lib/neutral/{delete-J3PMWP7Z.mjs → delete-NLBJMMBJ.mjs} +3 -3
- package/dist/lib/neutral/{enable-blueprints-LBDZH2CY.mjs → enable-blueprints-SMGQ2WCU.mjs} +4 -4
- package/dist/lib/neutral/enable-blueprints-SMGQ2WCU.mjs.map +7 -0
- package/dist/lib/neutral/{fetch-KHMHV7JR.mjs → fetch-VV3DU75K.mjs} +2 -2
- package/dist/lib/neutral/{fetch-messages-QOBBCTGC.mjs → fetch-messages-YXH77S3S.mjs} +2 -2
- package/dist/lib/neutral/{get-context-TN7X7U2H.mjs → get-context-LG2CNVII.mjs} +7 -7
- package/dist/lib/neutral/{get-context-TN7X7U2H.mjs.map → get-context-LG2CNVII.mjs.map} +3 -3
- package/dist/lib/neutral/index.mjs +84 -85
- package/dist/lib/neutral/index.mjs.map +3 -3
- package/dist/lib/neutral/{load-ALP3TK2E.mjs → load-K7HEJA54.mjs} +2 -2
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/{object-create-Z57Y3X6Y.mjs → object-create-EN6PJN3L.mjs} +4 -4
- package/dist/lib/neutral/{object-create-Z57Y3X6Y.mjs.map → object-create-EN6PJN3L.mjs.map} +2 -2
- package/dist/lib/neutral/{object-delete-X53LS37B.mjs → object-delete-RMA5ZKGY.mjs} +2 -2
- package/dist/lib/neutral/{object-update-GVKSBR7T.mjs → object-update-JW5PLR2T.mjs} +3 -3
- package/dist/lib/neutral/{object-update-GVKSBR7T.mjs.map → object-update-JW5PLR2T.mjs.map} +2 -2
- package/dist/lib/neutral/{project-HPHTZ2CI.mjs → project-OGO5ABSZ.mjs} +6 -6
- package/dist/lib/neutral/{project-rules-IVDHKSKI.mjs → project-rules-IVA3DSOW.mjs} +5 -5
- package/dist/lib/neutral/{prompt-Y7NN7M5D.mjs → prompt-YVFNLD7U.mjs} +5 -5
- package/dist/lib/neutral/{prompt-Y7NN7M5D.mjs.map → prompt-YVFNLD7U.mjs.map} +3 -3
- package/dist/lib/neutral/{qualifier-VDOY5CWU.mjs → qualifier-UTPO5E3S.mjs} +15 -14
- package/dist/lib/neutral/qualifier-UTPO5E3S.mjs.map +7 -0
- package/dist/lib/neutral/{query-PPJU5622.mjs → query-3FK3ED6L.mjs} +4 -5
- package/dist/lib/neutral/query-3FK3ED6L.mjs.map +7 -0
- package/dist/lib/neutral/{query-U56GNEV6.mjs → query-GXZT4KUX.mjs} +3 -3
- package/dist/lib/neutral/{query-blueprints-KXADGHSA.mjs → query-blueprints-GA2JM54N.mjs} +2 -2
- package/dist/lib/neutral/{relation-create-XJ2IX6X3.mjs → relation-create-XOFKYPL2.mjs} +3 -3
- package/dist/lib/neutral/{relation-create-XJ2IX6X3.mjs.map → relation-create-XOFKYPL2.mjs.map} +3 -3
- package/dist/lib/neutral/{relation-delete-EP4KXAFL.mjs → relation-delete-MVJKKVEQ.mjs} +2 -2
- package/dist/lib/neutral/{save-GWAPLT3Z.mjs → save-TFQMJKG7.mjs} +3 -3
- package/dist/lib/neutral/{schema-add-Z5CY6P24.mjs → schema-add-I7BFBU55.mjs} +2 -2
- package/dist/lib/neutral/schema-list-TYGGAO2P.mjs +49 -0
- package/dist/lib/neutral/schema-list-TYGGAO2P.mjs.map +7 -0
- package/dist/lib/neutral/{sync-issues-4YE5XAK5.mjs → sync-issues-3U3EL6KO.mjs} +5 -6
- package/dist/lib/neutral/sync-issues-3U3EL6KO.mjs.map +7 -0
- package/dist/lib/neutral/{sync-triggers-CDMJVW6E.mjs → sync-triggers-M6U6RAKN.mjs} +39 -37
- package/dist/lib/neutral/sync-triggers-M6U6RAKN.mjs.map +7 -0
- package/dist/lib/neutral/{tag-add-VNIIOVJA.mjs → tag-add-RCE2QULJ.mjs} +3 -3
- package/dist/lib/neutral/{tag-add-VNIIOVJA.mjs.map → tag-add-RCE2QULJ.mjs.map} +3 -3
- package/dist/lib/neutral/{tag-remove-6R2R27W3.mjs → tag-remove-EPKB5CDE.mjs} +3 -3
- package/dist/lib/neutral/{tag-remove-6R2R27W3.mjs.map → tag-remove-EPKB5CDE.mjs.map} +3 -3
- package/dist/lib/neutral/testing/index.mjs +7 -10
- package/dist/lib/neutral/testing/index.mjs.map +3 -3
- package/dist/lib/neutral/{update-blueprints-N2AK2VUR.mjs → update-blueprints-VOGJKSMQ.mjs} +2 -2
- package/dist/lib/neutral/update-tasks-PNNNCPWH.mjs +13 -0
- package/dist/lib/neutral/update-tasks-PNNNCPWH.mjs.map +7 -0
- package/dist/types/src/blueprints/blueprint-manager/functions/definitions.d.ts +10 -12
- package/dist/types/src/blueprints/blueprint-manager/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/blueprint-manager/functions/enable-blueprints.d.ts +6 -7
- package/dist/types/src/blueprints/blueprint-manager/functions/enable-blueprints.d.ts.map +1 -1
- package/dist/types/src/blueprints/blueprint-manager/functions/query-blueprints.d.ts +4 -5
- package/dist/types/src/blueprints/database/functions/context-add.d.ts +3 -3
- package/dist/types/src/blueprints/database/functions/context-add.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/context-remove.d.ts +3 -3
- package/dist/types/src/blueprints/database/functions/context-remove.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/definitions.d.ts +17 -17
- package/dist/types/src/blueprints/database/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/load.d.ts +2 -2
- package/dist/types/src/blueprints/database/functions/load.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/object-delete.d.ts +1 -1
- package/dist/types/src/blueprints/database/functions/object-update.d.ts +2 -2
- package/dist/types/src/blueprints/database/functions/object-update.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/query.d.ts +2 -3
- package/dist/types/src/blueprints/database/functions/query.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/relation-create.d.ts +3 -3
- package/dist/types/src/blueprints/database/functions/relation-create.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/relation-delete.d.ts +1 -1
- package/dist/types/src/blueprints/database/functions/schema-list.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/tag-add.d.ts +3 -3
- package/dist/types/src/blueprints/database/functions/tag-add.d.ts.map +1 -1
- package/dist/types/src/blueprints/database/functions/tag-remove.d.ts +3 -3
- package/dist/types/src/blueprints/database/functions/tag-remove.d.ts.map +1 -1
- package/dist/types/src/blueprints/discord/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/github/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/linear/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/linear/functions/sync-issues.d.ts.map +1 -1
- package/dist/types/src/blueprints/memory/functions/definitions.d.ts +2 -2
- package/dist/types/src/blueprints/memory/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/memory/functions/delete.d.ts +2 -2
- package/dist/types/src/blueprints/planning/functions/index.d.ts +1 -1
- package/dist/types/src/blueprints/planning/functions/index.d.ts.map +1 -1
- package/dist/types/src/blueprints/planning/functions/update-tasks.d.ts +14 -1
- package/dist/types/src/blueprints/planning/functions/update-tasks.d.ts.map +1 -1
- package/dist/types/src/blueprints/planning/functions/update-tasks.test.d.ts +2 -0
- package/dist/types/src/blueprints/planning/functions/update-tasks.test.d.ts.map +1 -0
- package/dist/types/src/blueprints/project/functions/add-artifact.d.ts +1 -5
- package/dist/types/src/blueprints/project/functions/add-artifact.d.ts.map +1 -1
- package/dist/types/src/blueprints/project/functions/definitions.d.ts +60 -45
- package/dist/types/src/blueprints/project/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/project/functions/get-context.d.ts +1 -12
- package/dist/types/src/blueprints/project/functions/get-context.d.ts.map +1 -1
- package/dist/types/src/blueprints/project/functions/qualifier.d.ts +3 -71
- package/dist/types/src/blueprints/project/functions/qualifier.d.ts.map +1 -1
- package/dist/types/src/blueprints/project-wizard/functions/create-project.d.ts +22 -18
- package/dist/types/src/blueprints/project-wizard/functions/definitions.d.ts +43 -36
- package/dist/types/src/blueprints/project-wizard/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/blueprints/project-wizard/functions/sync-triggers.d.ts +21 -17
- package/dist/types/src/blueprints/project-wizard/functions/sync-triggers.d.ts.map +1 -1
- package/dist/types/src/blueprints/testing.d.ts +4 -4
- package/dist/types/src/blueprints/testing.d.ts.map +1 -1
- package/dist/types/src/blueprints/websearch/functions/definitions.d.ts.map +1 -1
- package/dist/types/src/crud/graph.d.ts +8 -11
- package/dist/types/src/crud/graph.d.ts.map +1 -1
- package/dist/types/src/errors.d.ts +3 -3
- package/dist/types/src/errors.d.ts.map +1 -1
- package/dist/types/src/functions/agent/definitions.d.ts +12 -13
- package/dist/types/src/functions/agent/definitions.d.ts.map +1 -1
- package/dist/types/src/sync/sync.d.ts +1 -2
- package/dist/types/src/sync/sync.d.ts.map +1 -1
- package/dist/types/src/testing/plugins.d.ts +1 -1
- package/dist/types/src/testing/plugins.d.ts.map +1 -1
- package/dist/types/src/types/Agent.d.ts +23 -22
- package/dist/types/src/types/Agent.d.ts.map +1 -1
- package/dist/types/src/types/Chat.d.ts +17 -20
- package/dist/types/src/types/Chat.d.ts.map +1 -1
- package/dist/types/src/types/McpServer.d.ts +1 -2
- package/dist/types/src/types/McpServer.d.ts.map +1 -1
- package/dist/types/src/types/Memory.d.ts +1 -2
- package/dist/types/src/types/Memory.d.ts.map +1 -1
- package/dist/types/src/types/Plan.d.ts +14 -16
- package/dist/types/src/types/Plan.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +26 -26
- package/src/blueprints/automation/blueprint.ts +3 -3
- package/src/blueprints/blueprint-manager/blueprint.conversations.json +1 -1
- package/src/blueprints/blueprint-manager/blueprint.test.ts +23 -19
- package/src/blueprints/blueprint-manager/functions/definitions.ts +8 -5
- package/src/blueprints/blueprint-manager/functions/enable-blueprints.ts +2 -2
- package/src/blueprints/database/blueprint.conversations.json +1 -1
- package/src/blueprints/database/blueprint.test.ts +15 -15
- package/src/blueprints/database/functions/context-add.ts +2 -2
- package/src/blueprints/database/functions/context-remove.ts +2 -2
- package/src/blueprints/database/functions/definitions.ts +19 -6
- package/src/blueprints/database/functions/object-create.ts +2 -2
- package/src/blueprints/database/functions/object-update.ts +1 -1
- package/src/blueprints/database/functions/query.ts +3 -4
- package/src/blueprints/database/functions/relation-create.ts +1 -1
- package/src/blueprints/database/functions/schema-list.ts +17 -10
- package/src/blueprints/database/functions/tag-add.ts +1 -1
- package/src/blueprints/database/functions/tag-remove.ts +1 -1
- package/src/blueprints/discord/functions/definitions.ts +1 -0
- package/src/blueprints/discord/functions/fetch-messages.test.ts +7 -2
- package/src/blueprints/github/functions/definitions.ts +1 -0
- package/src/blueprints/linear/functions/definitions.ts +1 -0
- package/src/blueprints/linear/functions/linear.test.ts +1 -2
- package/src/blueprints/linear/functions/sync-issues.ts +1 -2
- package/src/blueprints/memory/blueprint.conversations.json +1 -1
- package/src/blueprints/memory/functions/definitions.ts +3 -0
- package/src/blueprints/planning/blueprint.ts +1 -1
- package/src/blueprints/planning/functions/index.ts +1 -1
- package/src/blueprints/planning/functions/{definitions.ts → update-tasks.md} +29 -50
- package/src/blueprints/planning/functions/update-tasks.test.ts +55 -0
- package/src/blueprints/planning/functions/update-tasks.ts +26 -3
- package/src/blueprints/project/blueprint.conversations.json +1 -1
- package/src/blueprints/project/blueprint.test.ts +12 -14
- package/src/blueprints/project/functions/add-artifact.ts +1 -0
- package/src/blueprints/project/functions/agent.ts +2 -2
- package/src/blueprints/project/functions/definitions.ts +8 -6
- package/src/blueprints/project/functions/get-context.ts +2 -1
- package/src/blueprints/project/functions/qualifier.ts +8 -7
- package/src/blueprints/project-wizard/functions/definitions.ts +6 -4
- package/src/blueprints/project-wizard/functions/sync-triggers.ts +32 -34
- package/src/blueprints/testing.ts +10 -4
- package/src/blueprints/websearch/blueprint.conversations.json +1 -1
- package/src/blueprints/websearch/functions/definitions.ts +1 -0
- package/src/crud/graph.test.ts +1 -1
- package/src/crud/graph.ts +142 -151
- package/src/errors.ts +3 -3
- package/src/functions/agent/definitions.ts +2 -1
- package/src/functions/agent/prompt.conversations.json +1 -1
- package/src/functions/agent/prompt.test.ts +8 -11
- package/src/functions/agent/prompt.ts +2 -2
- package/src/sync/sync.ts +7 -6
- package/src/testing/plugins.tsx +8 -13
- package/src/types/Agent.ts +24 -29
- package/src/types/Chat.ts +9 -16
- package/src/types/McpServer.ts +3 -6
- package/src/types/Memory.ts +3 -3
- package/src/types/Plan.ts +4 -11
- package/dist/lib/neutral/chunk-246ACKSH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-EJAQUAKM.mjs.map +0 -7
- package/dist/lib/neutral/chunk-FIGO6CA6.mjs +0 -140
- package/dist/lib/neutral/chunk-FIGO6CA6.mjs.map +0 -7
- package/dist/lib/neutral/chunk-GV66MKAQ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-IKBIORQX.mjs.map +0 -7
- package/dist/lib/neutral/chunk-KGU725LW.mjs.map +0 -7
- package/dist/lib/neutral/chunk-NR3GTWRC.mjs.map +0 -7
- package/dist/lib/neutral/chunk-P4ZMYO4K.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ROMZO4CB.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TO5IX24K.mjs.map +0 -7
- package/dist/lib/neutral/chunk-WLR3BGO4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-XUF53B6B.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZFXLTBZG.mjs.map +0 -7
- package/dist/lib/neutral/context-add-VB7AOY3G.mjs.map +0 -7
- package/dist/lib/neutral/context-remove-VCM3VPSO.mjs.map +0 -7
- package/dist/lib/neutral/enable-blueprints-LBDZH2CY.mjs.map +0 -7
- package/dist/lib/neutral/qualifier-VDOY5CWU.mjs.map +0 -7
- package/dist/lib/neutral/query-PPJU5622.mjs.map +0 -7
- package/dist/lib/neutral/schema-list-W326VPVX.mjs +0 -38
- package/dist/lib/neutral/schema-list-W326VPVX.mjs.map +0 -7
- package/dist/lib/neutral/sync-issues-4YE5XAK5.mjs.map +0 -7
- package/dist/lib/neutral/sync-triggers-CDMJVW6E.mjs.map +0 -7
- package/dist/lib/neutral/update-tasks-H7SWIFQL.mjs +0 -46
- package/dist/lib/neutral/update-tasks-H7SWIFQL.mjs.map +0 -7
- package/dist/types/src/blueprints/planning/functions/definitions.d.ts +0 -11
- package/dist/types/src/blueprints/planning/functions/definitions.d.ts.map +0 -1
- /package/dist/lib/neutral/{chunk-QO5SU37C.mjs.map → chunk-PAEPER4S.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-project-EIF4OJMY.mjs.map → create-project-VNC2KKBG.mjs.map} +0 -0
- /package/dist/lib/neutral/{delete-J3PMWP7Z.mjs.map → delete-NLBJMMBJ.mjs.map} +0 -0
- /package/dist/lib/neutral/{fetch-KHMHV7JR.mjs.map → fetch-VV3DU75K.mjs.map} +0 -0
- /package/dist/lib/neutral/{fetch-messages-QOBBCTGC.mjs.map → fetch-messages-YXH77S3S.mjs.map} +0 -0
- /package/dist/lib/neutral/{load-ALP3TK2E.mjs.map → load-K7HEJA54.mjs.map} +0 -0
- /package/dist/lib/neutral/{object-delete-X53LS37B.mjs.map → object-delete-RMA5ZKGY.mjs.map} +0 -0
- /package/dist/lib/neutral/{project-HPHTZ2CI.mjs.map → project-OGO5ABSZ.mjs.map} +0 -0
- /package/dist/lib/neutral/{project-rules-IVDHKSKI.mjs.map → project-rules-IVA3DSOW.mjs.map} +0 -0
- /package/dist/lib/neutral/{query-U56GNEV6.mjs.map → query-GXZT4KUX.mjs.map} +0 -0
- /package/dist/lib/neutral/{query-blueprints-KXADGHSA.mjs.map → query-blueprints-GA2JM54N.mjs.map} +0 -0
- /package/dist/lib/neutral/{relation-delete-EP4KXAFL.mjs.map → relation-delete-MVJKKVEQ.mjs.map} +0 -0
- /package/dist/lib/neutral/{save-GWAPLT3Z.mjs.map → save-TFQMJKG7.mjs.map} +0 -0
- /package/dist/lib/neutral/{schema-add-Z5CY6P24.mjs.map → schema-add-I7BFBU55.mjs.map} +0 -0
- /package/dist/lib/neutral/{update-blueprints-N2AK2VUR.mjs.map → update-blueprints-VOGJKSMQ.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SyncIssues,
|
|
3
3
|
syncObjects
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ONQXVECY.mjs";
|
|
5
5
|
import "./chunk-J5LGTIGS.mjs";
|
|
6
6
|
|
|
7
7
|
// src/blueprints/linear/functions/sync-issues.ts
|
|
@@ -11,8 +11,7 @@ import * as Array from "effect/Array";
|
|
|
11
11
|
import * as Effect from "effect/Effect";
|
|
12
12
|
import * as Function from "effect/Function";
|
|
13
13
|
import { Credential, Operation } from "@dxos/compute";
|
|
14
|
-
import { Filter, Obj, Query, Ref } from "@dxos/echo";
|
|
15
|
-
import { Database } from "@dxos/echo";
|
|
14
|
+
import { Database, Filter, Obj, Query, Ref } from "@dxos/echo";
|
|
16
15
|
import { withAuthorization } from "@dxos/functions";
|
|
17
16
|
import { log } from "@dxos/log";
|
|
18
17
|
import { Person, Pipeline, Task } from "@dxos/types";
|
|
@@ -73,7 +72,7 @@ var sync_issues_default = SyncIssues.pipe(Operation.withHandler(Effect.fnUntrace
|
|
|
73
72
|
const after = yield* getLatestUpdateTimestamp(team, Task.Task);
|
|
74
73
|
log.info("will fetch", {
|
|
75
74
|
after
|
|
76
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L:
|
|
75
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 62, S: this });
|
|
77
76
|
const response = yield* client.post("https://api.linear.app/graphql", {
|
|
78
77
|
body: yield* graphqlRequestBody(queryIssues, {
|
|
79
78
|
teamId: team,
|
|
@@ -86,7 +85,7 @@ var sync_issues_default = SyncIssues.pipe(Operation.withHandler(Effect.fnUntrace
|
|
|
86
85
|
}));
|
|
87
86
|
log.info("Fetched tasks", {
|
|
88
87
|
count: tasks.length
|
|
89
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L:
|
|
88
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: this });
|
|
90
89
|
return {
|
|
91
90
|
objects: yield* syncObjects(tasks, {
|
|
92
91
|
foreignKeyId: LINEAR_ID_KEY
|
|
@@ -164,4 +163,4 @@ export {
|
|
|
164
163
|
LINEAR_UPDATED_AT_KEY,
|
|
165
164
|
sync_issues_default as default
|
|
166
165
|
};
|
|
167
|
-
//# sourceMappingURL=sync-issues-
|
|
166
|
+
//# sourceMappingURL=sync-issues-3U3EL6KO.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/blueprints/linear/functions/sync-issues.ts", "../../../src/util/graphql.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as FetchHttpClient from '@effect/platform/FetchHttpClient';\nimport * as HttpClient from '@effect/platform/HttpClient';\nimport * as Array from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\n\nimport { Credential, Operation } from '@dxos/compute';\nimport { Database, Filter, Obj, Query, Ref, type Type } from '@dxos/echo';\nimport { withAuthorization } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { Person, Pipeline, Task } from '@dxos/types';\n\nimport { syncObjects } from '../../../sync';\nimport { graphqlRequestBody } from '../../../util';\nimport { SyncIssues } from './definitions';\n\nconst queryIssues = `\nquery Issues($teamId: String!, $after: DateTimeOrDuration!) {\n team(id: $teamId) {\n id\n name\n\n\n issues(last: 150, orderBy: updatedAt, filter: {\n updatedAt: { gt: $after }\n }) {\n edges {\n node {\n id\n title\n createdAt\n updatedAt\n description\n assignee { id, name }\n state {\n name\n }\n project {\n id\n name\n }\n }\n cursor\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n}\n`;\n\ntype LinearIssue = {\n id: string;\n title: string;\n createdAt: string;\n updatedAt: string;\n description: string;\n assignee: LinearPerson;\n state: { name: string };\n project: { id: string; name: string };\n};\n\ntype LinearPerson = {\n id: string;\n name: string;\n};\n\nexport const LINEAR_ID_KEY = 'linear.app/id';\nexport const LINEAR_TEAM_ID_KEY = 'linear.app/teamId';\nexport const LINEAR_UPDATED_AT_KEY = 'linear.app/updatedAt';\n\nexport default SyncIssues.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* ({ team }) {\n const credential = yield* Credential.CredentialsService.getCredential({ service: 'linear.app' });\n const client = yield* HttpClient.HttpClient.pipe(Effect.map(withAuthorization(credential.apiKey!)));\n\n const after = yield* getLatestUpdateTimestamp(team, Task.Task);\n log.info('will fetch', { after });\n\n const response = yield* client.post('https://api.linear.app/graphql', {\n body: yield* graphqlRequestBody(queryIssues, {\n teamId: team,\n after,\n }),\n });\n const json: any = yield* response.json;\n const tasks = (json.data.team.issues.edges as any[]).map((edge: any) =>\n mapLinearIssue(edge.node as LinearIssue, { teamId: team }),\n );\n log.info('Fetched tasks', { count: tasks.length });\n\n return {\n objects: yield* syncObjects(tasks, { foreignKeyId: LINEAR_ID_KEY }),\n syncComplete: tasks.length < 150,\n };\n }, Effect.provide(FetchHttpClient.layer)),\n ),\n);\n\nconst getLatestUpdateTimestamp: (\n teamId: string,\n dataType: Type.AnyObj,\n) => Effect.Effect<string, never, Database.Service> = Effect.fnUntraced(function* (teamId, dataType) {\n const existingTasks = yield* Database.runQuery(\n Query.type(dataType).select(Filter.foreignKeys(dataType, [{ source: LINEAR_TEAM_ID_KEY, id: teamId }])),\n );\n return Function.pipe(\n existingTasks,\n Array.map((task) => Obj.getKeys(task, LINEAR_UPDATED_AT_KEY).at(0)?.id),\n Array.filter((x) => x !== undefined),\n Array.reduce('2025-01-01T00:00:00.000Z', (acc: string, x: string) => (x > acc ? x : acc)),\n );\n});\n\nconst mapLinearPerson = (person: LinearPerson, { teamId }: { teamId: string }): Person.Person =>\n Obj.make(Person.Person, {\n [Obj.Meta]: {\n keys: [\n {\n id: person.id,\n source: LINEAR_ID_KEY,\n },\n {\n id: teamId,\n source: LINEAR_TEAM_ID_KEY,\n },\n ],\n },\n nickname: person.name,\n });\n\nconst mapLinearIssue = (issue: LinearIssue, { teamId }: { teamId: string }): Task.Task =>\n Obj.make(Task.Task, {\n [Obj.Meta]: {\n keys: [\n {\n id: issue.id,\n source: LINEAR_ID_KEY,\n },\n {\n id: issue.updatedAt,\n source: LINEAR_UPDATED_AT_KEY,\n },\n {\n id: teamId,\n source: LINEAR_TEAM_ID_KEY,\n },\n ],\n },\n title: issue.title ?? undefined,\n description: issue.description ?? undefined,\n assigned: !issue.assignee ? undefined : Ref.make(mapLinearPerson(issue.assignee, { teamId })),\n // TODO(dmaretskyi): Sync those (+ linear team as org?).\n // state: issue.state.name,\n\n project: !issue.project\n ? undefined\n : Ref.make(\n Pipeline.make({\n [Obj.Meta]: {\n keys: [\n {\n id: issue.project.id,\n source: LINEAR_ID_KEY,\n },\n {\n id: teamId,\n source: LINEAR_TEAM_ID_KEY,\n },\n ],\n },\n name: issue.project.name,\n }),\n ),\n });\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as HttpBody from '@effect/platform/HttpBody';\n\n/**\n * Template tag literal to get syntax highlighting for the query.\n *\n * @example\n * ```ts\n * const query = gql`\n * query Team($teamId: String!) {\n * team(id: $teamId) {\n * id\n * name\n * }\n * }\n * `;\n * ```\n */\nexport const gql = (query: string) => query;\n\n/**\n * @returns JSON body for the graphql request.\n */\nexport const graphqlRequestBody = (query: string, variables: Record<string, any> = {}) =>\n HttpBody.json({\n query,\n variables,\n });\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["FetchHttpClient", "HttpClient", "Array", "Effect", "Function", "Credential", "Operation", "Database", "Filter", "Obj", "Query", "Ref", "withAuthorization", "log", "Person", "Pipeline", "Task", "HttpBody", "graphqlRequestBody", "query", "variables", "json", "queryIssues", "LINEAR_UPDATED_AT_KEY", "Operation", "credential", "Credential", "service", "client", "log", "info", "after", "graphqlRequestBody", "team", "teamId", "json", "count", "syncObjects", "syncComplete", "tasks", "Effect", "FetchHttpClient", "layer", "existingTasks", "Database", "runQuery", "LINEAR_TEAM_ID_KEY", "mapLinearPerson", "person", "Obj", "make", "Person", "nickname", "mapLinearIssue", "issue", "title", "description", "assigned", "assignee", "keys", "name"]
|
|
7
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SyncTriggers
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RIF2TKJJ.mjs";
|
|
4
|
+
import "./chunk-CMHECL6N.mjs";
|
|
5
|
+
import "./chunk-OC77MYT5.mjs";
|
|
6
|
+
import "./chunk-LO2S3ICN.mjs";
|
|
7
7
|
import "./chunk-J5LGTIGS.mjs";
|
|
8
8
|
|
|
9
9
|
// src/blueprints/project-wizard/functions/sync-triggers.ts
|
|
10
10
|
import * as Effect from "effect/Effect";
|
|
11
11
|
import * as Option from "effect/Option";
|
|
12
12
|
import { Trigger, Operation } from "@dxos/compute";
|
|
13
|
-
import { Database, Feed, Filter, Obj, Ref } from "@dxos/echo";
|
|
13
|
+
import { Database, Feed, Filter, Obj, Ref, Type } from "@dxos/echo";
|
|
14
14
|
import { FeedAnnotation } from "@dxos/schema";
|
|
15
15
|
var sync_triggers_default = SyncTriggers.pipe(Operation.withHandler(Effect.fn(function* ({ agent: agentRef }) {
|
|
16
16
|
const agent = yield* Database.load(agentRef);
|
|
@@ -19,11 +19,11 @@ var sync_triggers_default = SyncTriggers.pipe(Operation.withHandler(Effect.fn(fu
|
|
|
19
19
|
var AGENT_TRIGGER_EXTENSION_KEY = "org.dxos.extension.AgentTrigger";
|
|
20
20
|
var AGENT_TRIGGER_TARGET_EXTENSION_KEY = "org.dxos.extension.AgentTriggerTarget";
|
|
21
21
|
var hasFeedAnnotation = (obj) => {
|
|
22
|
-
const
|
|
23
|
-
if (!
|
|
22
|
+
const type = Obj.getType(obj);
|
|
23
|
+
if (!type) {
|
|
24
24
|
return false;
|
|
25
25
|
}
|
|
26
|
-
const annotation = FeedAnnotation.get(
|
|
26
|
+
const annotation = FeedAnnotation.get(Type.getSchema(type));
|
|
27
27
|
return Option.isSome(annotation) && annotation.value === true;
|
|
28
28
|
};
|
|
29
29
|
var syncAgentTriggers = (agent) => Effect.gen(function* () {
|
|
@@ -37,7 +37,7 @@ var syncAgentTriggers = (agent) => Effect.gen(function* () {
|
|
|
37
37
|
yield* Database.remove(trigger);
|
|
38
38
|
}
|
|
39
39
|
const triggersEnabled = agent.enabled ?? true;
|
|
40
|
-
const { Qualifier, AgentWorker } = yield* Effect.promise(() => import("./project-
|
|
40
|
+
const { Qualifier, AgentWorker } = yield* Effect.promise(() => import("./project-OGO5ABSZ.mjs"));
|
|
41
41
|
for (const subscription of agent.subscriptions) {
|
|
42
42
|
const targetOption = yield* Database.loadOption(subscription);
|
|
43
43
|
if (Option.isNone(targetOption)) {
|
|
@@ -51,8 +51,7 @@ var syncAgentTriggers = (agent) => Effect.gen(function* () {
|
|
|
51
51
|
const feedRef = target.feed;
|
|
52
52
|
feedObj = feedRef ? Option.getOrUndefined(yield* Database.loadOption(feedRef)) : void 0;
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
if (!queueDxn) {
|
|
54
|
+
if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj) || !Feed.getQueueUri(feedObj)) {
|
|
56
55
|
continue;
|
|
57
56
|
}
|
|
58
57
|
const filterEvents = agent.filterEvents ?? true;
|
|
@@ -66,12 +65,12 @@ var syncAgentTriggers = (agent) => Effect.gen(function* () {
|
|
|
66
65
|
},
|
|
67
66
|
{
|
|
68
67
|
source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,
|
|
69
|
-
id: subscription.
|
|
68
|
+
id: subscription.uri
|
|
70
69
|
}
|
|
71
70
|
]
|
|
72
71
|
},
|
|
73
72
|
enabled: triggersEnabled,
|
|
74
|
-
spec: Trigger.
|
|
73
|
+
spec: Trigger.specFeed(feedObj),
|
|
75
74
|
function: Ref.make(Operation.serialize(filterEvents ? Qualifier : AgentWorker)),
|
|
76
75
|
input: {
|
|
77
76
|
agent: Ref.make(agent),
|
|
@@ -80,29 +79,32 @@ var syncAgentTriggers = (agent) => Effect.gen(function* () {
|
|
|
80
79
|
concurrency: filterEvents ? 5 : void 0
|
|
81
80
|
}));
|
|
82
81
|
}
|
|
83
|
-
if ((agent.filterEvents ?? true) && agent.
|
|
84
|
-
yield* Database.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
82
|
+
if ((agent.filterEvents ?? true) && agent.feed) {
|
|
83
|
+
const agentFeedOption = yield* Database.loadOption(agent.feed);
|
|
84
|
+
if (Option.isSome(agentFeedOption) && Feed.getQueueUri(agentFeedOption.value)) {
|
|
85
|
+
yield* Database.add(Trigger.make({
|
|
86
|
+
[Obj.Parent]: agent,
|
|
87
|
+
[Obj.Meta]: {
|
|
88
|
+
keys: [
|
|
89
|
+
{
|
|
90
|
+
source: AGENT_TRIGGER_EXTENSION_KEY,
|
|
91
|
+
id: agent.id
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,
|
|
95
|
+
id: Obj.getURI(agent) ?? ""
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
function: Ref.make(Operation.serialize(AgentWorker)),
|
|
100
|
+
enabled: triggersEnabled,
|
|
101
|
+
spec: Trigger.specFeed(agentFeedOption.value),
|
|
102
|
+
input: {
|
|
103
|
+
agent: Ref.make(agent),
|
|
104
|
+
event: "{{event}}"
|
|
105
|
+
}
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
106
108
|
}
|
|
107
109
|
if (agent.cron) {
|
|
108
110
|
yield* Database.add(Trigger.make({
|
|
@@ -133,4 +135,4 @@ var syncAgentTriggers = (agent) => Effect.gen(function* () {
|
|
|
133
135
|
export {
|
|
134
136
|
sync_triggers_default as default
|
|
135
137
|
};
|
|
136
|
-
//# sourceMappingURL=sync-triggers-
|
|
138
|
+
//# sourceMappingURL=sync-triggers-M6U6RAKN.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/blueprints/project-wizard/functions/sync-triggers.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Trigger, Operation } from '@dxos/compute';\nimport { Database, Feed, Filter, Obj, Ref, Type } from '@dxos/echo';\nimport { FeedAnnotation } from '@dxos/schema';\n\nimport { Agent } from '../../../types';\nimport { SyncTriggers } from './definitions';\n\nexport default SyncTriggers.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ agent: agentRef }) {\n const agent = yield* Database.load(agentRef);\n yield* syncAgentTriggers(agent);\n }),\n ),\n);\n\n/**\n * Foreign key {@link AGENT_TRIGGER_EXTENSION_KEY} => <agent id : ObjectId>.\n */\nconst AGENT_TRIGGER_EXTENSION_KEY = 'org.dxos.extension.AgentTrigger';\n\n/**\n * Foreign key {@link AGENT_TRIGGER_TARGET_EXTENSION_KEY} => <dxn string of subscription target>.\n */\nconst AGENT_TRIGGER_TARGET_EXTENSION_KEY = 'org.dxos.extension.AgentTriggerTarget';\n\n/** Checks if an object's schema has the FeedAnnotation. */\nconst hasFeedAnnotation = (obj: Obj.Unknown): boolean => {\n const type = Obj.getType(obj);\n if (!type) {\n return false;\n }\n const annotation = FeedAnnotation.get(Type.getSchema(type));\n return Option.isSome(annotation) && annotation.value === true;\n};\n\n/**\n * Syncs triggers in the database with the agent subscriptions.\n */\nconst syncAgentTriggers = (agent: Agent.Agent): Effect.Effect<void, never, Database.Service> =>\n Effect.gen(function* () {\n const triggers = yield* Database.runQuery(\n Filter.foreignKeys(Trigger.Trigger, [{ source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id }]),\n );\n\n // Remove all existing triggers — they will be recreated with the current config.\n // This ensures operation, concurrency, and enabled stay in sync when agent fields change.\n for (const trigger of triggers) {\n yield* Database.remove(trigger);\n }\n\n const triggersEnabled = agent.enabled ?? true;\n\n // Lazy import to avoid circular dependency issues.\n const { Qualifier, AgentWorker } = yield* Effect.promise(() => import('../../project'));\n\n for (const subscription of agent.subscriptions) {\n const targetOption = yield* Database.loadOption(subscription);\n if (Option.isNone(targetOption)) {\n continue;\n }\n const target = targetOption.value;\n\n let feedObj: Feed.Feed | undefined;\n if (Obj.instanceOf(Feed.Feed, target)) {\n feedObj = target;\n } else if (hasFeedAnnotation(target)) {\n const feedRef = (target as Obj.Unknown & { feed?: Ref.Ref<Feed.Feed> }).feed;\n feedObj = feedRef ? Option.getOrUndefined(yield* Database.loadOption(feedRef)) : undefined;\n }\n\n if (!feedObj || !Obj.instanceOf(Feed.Feed, feedObj) || !Feed.getQueueUri(feedObj)) {\n continue;\n }\n\n const filterEvents = agent.filterEvents ?? true;\n\n yield* Database.add(\n Trigger.make({\n [Obj.Parent]: agent,\n [Obj.Meta]: {\n keys: [\n { source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id },\n { source: AGENT_TRIGGER_TARGET_EXTENSION_KEY, id: subscription.uri },\n ],\n },\n enabled: triggersEnabled,\n spec: Trigger.specFeed(feedObj),\n function: Ref.make(Operation.serialize(filterEvents ? Qualifier : AgentWorker)),\n input: {\n agent: Ref.make(agent),\n event: '{{event}}',\n },\n concurrency: filterEvents ? 5 : undefined,\n }),\n );\n }\n\n if ((agent.filterEvents ?? true) && agent.feed) {\n const agentFeedOption = yield* Database.loadOption(agent.feed);\n if (Option.isSome(agentFeedOption) && Feed.getQueueUri(agentFeedOption.value)) {\n yield* Database.add(\n Trigger.make({\n [Obj.Parent]: agent,\n [Obj.Meta]: {\n keys: [\n { source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id },\n {\n source: AGENT_TRIGGER_TARGET_EXTENSION_KEY,\n id: Obj.getURI(agent) ?? '',\n },\n ],\n },\n function: Ref.make(Operation.serialize(AgentWorker)),\n enabled: triggersEnabled,\n spec: Trigger.specFeed(agentFeedOption.value),\n input: {\n agent: Ref.make(agent),\n event: '{{event}}',\n },\n }),\n );\n }\n }\n\n // Timer trigger bypasses the qualifier and invokes the agent worker directly on a schedule.\n if (agent.cron) {\n yield* Database.add(\n Trigger.make({\n [Obj.Parent]: agent,\n [Obj.Meta]: {\n keys: [\n { source: AGENT_TRIGGER_EXTENSION_KEY, id: agent.id },\n { source: AGENT_TRIGGER_TARGET_EXTENSION_KEY, id: `timer:${agent.cron}` },\n ],\n },\n enabled: triggersEnabled,\n spec: Trigger.specTimer(agent.cron),\n function: Ref.make(Operation.serialize(AgentWorker)),\n input: {\n agent: Ref.make(agent),\n event: '{{event}}',\n },\n }),\n );\n }\n\n yield* Database.flush();\n });\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,SAASC,iBAAiB;AACnC,SAASC,UAAUC,MAAMC,QAAQC,KAAKC,KAAKC,YAAY;AACvD,SAASC,sBAAsB;AAK/B,IAAA,wBAAeC,aAAaC,KAC1BC,UAAUC,YACDC,UAAG,WAAW,EAAEC,OAAOC,SAAQ,GAAE;AACtC,QAAMD,QAAQ,OAAOE,SAASC,KAAKF,QAAAA;AACnC,SAAOG,kBAAkBJ,KAAAA;AAC3B,CAAA,CAAA,CAAA;AAOJ,IAAMK,8BAA8B;AAKpC,IAAMC,qCAAqC;AAG3C,IAAMC,oBAAoB,CAACC,QAAAA;AACzB,QAAMC,OAAOC,IAAIC,QAAQH,GAAAA;AACzB,MAAI,CAACC,MAAM;AACT,WAAO;EACT;AACA,QAAMG,aAAaC,eAAeC,IAAIC,KAAKC,UAAUP,IAAAA,CAAAA;AACrD,SAAcQ,cAAOL,UAAAA,KAAeA,WAAWM,UAAU;AAC3D;AAKA,IAAMd,oBAAoB,CAACJ,UAClBmB,WAAI,aAAA;AACT,QAAMC,WAAW,OAAOlB,SAASmB,SAC/BC,OAAOC,YAAYC,QAAQA,SAAS;IAAC;MAAEC,QAAQpB;MAA6BqB,IAAI1B,MAAM0B;IAAG;GAAE,CAAA;AAK7F,aAAWC,WAAWP,UAAU;AAC9B,WAAOlB,SAAS0B,OAAOD,OAAAA;EACzB;AAEA,QAAME,kBAAkB7B,MAAM8B,WAAW;AAGzC,QAAM,EAAEC,WAAWC,YAAW,IAAK,OAAcC,eAAQ,MAAM,OAAO,wBAAA,CAAA;AAEtE,aAAWC,gBAAgBlC,MAAMmC,eAAe;AAC9C,UAAMC,eAAe,OAAOlC,SAASmC,WAAWH,YAAAA;AAChD,QAAWI,cAAOF,YAAAA,GAAe;AAC/B;IACF;AACA,UAAMG,SAASH,aAAalB;AAE5B,QAAIsB;AACJ,QAAI9B,IAAI+B,WAAWC,KAAKA,MAAMH,MAAAA,GAAS;AACrCC,gBAAUD;IACZ,WAAWhC,kBAAkBgC,MAAAA,GAAS;AACpC,YAAMI,UAAWJ,OAAuDK;AACxEJ,gBAAUG,UAAiBE,sBAAe,OAAO3C,SAASmC,WAAWM,OAAAA,CAAO,IAAKG;IACnF;AAEA,QAAI,CAACN,WAAW,CAAC9B,IAAI+B,WAAWC,KAAKA,MAAMF,OAAAA,KAAY,CAACE,KAAKK,YAAYP,OAAAA,GAAU;AACjF;IACF;AAEA,UAAMQ,eAAehD,MAAMgD,gBAAgB;AAE3C,WAAO9C,SAAS+C,IACdzB,QAAQ0B,KAAK;MACX,CAACxC,IAAIyC,MAAM,GAAGnD;MACd,CAACU,IAAI0C,IAAI,GAAG;QACVC,MAAM;UACJ;YAAE5B,QAAQpB;YAA6BqB,IAAI1B,MAAM0B;UAAG;UACpD;YAAED,QAAQnB;YAAoCoB,IAAIQ,aAAaoB;UAAI;;MAEvE;MACAxB,SAASD;MACT0B,MAAM/B,QAAQgC,SAAShB,OAAAA;MACvBiB,UAAUC,IAAIR,KAAKrD,UAAU8D,UAAUX,eAAejB,YAAYC,WAAAA,CAAAA;MAClE4B,OAAO;QACL5D,OAAO0D,IAAIR,KAAKlD,KAAAA;QAChB6D,OAAO;MACT;MACAC,aAAad,eAAe,IAAIF;IAClC,CAAA,CAAA;EAEJ;AAEA,OAAK9C,MAAMgD,gBAAgB,SAAShD,MAAM4C,MAAM;AAC9C,UAAMmB,kBAAkB,OAAO7D,SAASmC,WAAWrC,MAAM4C,IAAI;AAC7D,QAAW3B,cAAO8C,eAAAA,KAAoBrB,KAAKK,YAAYgB,gBAAgB7C,KAAK,GAAG;AAC7E,aAAOhB,SAAS+C,IACdzB,QAAQ0B,KAAK;QACX,CAACxC,IAAIyC,MAAM,GAAGnD;QACd,CAACU,IAAI0C,IAAI,GAAG;UACVC,MAAM;YACJ;cAAE5B,QAAQpB;cAA6BqB,IAAI1B,MAAM0B;YAAG;YACpD;cACED,QAAQnB;cACRoB,IAAIhB,IAAIsD,OAAOhE,KAAAA,KAAU;YAC3B;;QAEJ;QACAyD,UAAUC,IAAIR,KAAKrD,UAAU8D,UAAU3B,WAAAA,CAAAA;QACvCF,SAASD;QACT0B,MAAM/B,QAAQgC,SAASO,gBAAgB7C,KAAK;QAC5C0C,OAAO;UACL5D,OAAO0D,IAAIR,KAAKlD,KAAAA;UAChB6D,OAAO;QACT;MACF,CAAA,CAAA;IAEJ;EACF;AAGA,MAAI7D,MAAMiE,MAAM;AACd,WAAO/D,SAAS+C,IACdzB,QAAQ0B,KAAK;MACX,CAACxC,IAAIyC,MAAM,GAAGnD;MACd,CAACU,IAAI0C,IAAI,GAAG;QACVC,MAAM;UACJ;YAAE5B,QAAQpB;YAA6BqB,IAAI1B,MAAM0B;UAAG;UACpD;YAAED,QAAQnB;YAAoCoB,IAAI,SAAS1B,MAAMiE,IAAI;UAAG;;MAE5E;MACAnC,SAASD;MACT0B,MAAM/B,QAAQ0C,UAAUlE,MAAMiE,IAAI;MAClCR,UAAUC,IAAIR,KAAKrD,UAAU8D,UAAU3B,WAAAA,CAAAA;MACvC4B,OAAO;QACL5D,OAAO0D,IAAIR,KAAKlD,KAAAA;QAChB6D,OAAO;MACT;IACF,CAAA,CAAA;EAEJ;AAEA,SAAO3D,SAASiE,MAAK;AACvB,CAAA;",
|
|
6
|
+
"names": ["Effect", "Option", "Trigger", "Operation", "Database", "Feed", "Filter", "Obj", "Ref", "Type", "FeedAnnotation", "SyncTriggers", "pipe", "Operation", "withHandler", "fn", "agent", "agentRef", "Database", "load", "syncAgentTriggers", "AGENT_TRIGGER_EXTENSION_KEY", "AGENT_TRIGGER_TARGET_EXTENSION_KEY", "hasFeedAnnotation", "obj", "type", "Obj", "getType", "annotation", "FeedAnnotation", "get", "Type", "getSchema", "isSome", "value", "gen", "triggers", "runQuery", "Filter", "foreignKeys", "Trigger", "source", "id", "trigger", "remove", "triggersEnabled", "enabled", "Qualifier", "AgentWorker", "promise", "subscription", "subscriptions", "targetOption", "loadOption", "isNone", "target", "feedObj", "instanceOf", "Feed", "feedRef", "feed", "getOrUndefined", "undefined", "getQueueUri", "filterEvents", "add", "make", "Parent", "Meta", "keys", "uri", "spec", "specFeed", "function", "Ref", "serialize", "input", "event", "concurrency", "agentFeedOption", "getURI", "cron", "specTimer", "flush"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TagAdd
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EUTROPCP.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/blueprints/database/functions/tag-add.ts
|
|
@@ -10,10 +10,10 @@ import { Database, Entity, Obj } from "@dxos/echo";
|
|
|
10
10
|
var tag_add_default = TagAdd.pipe(Operation.withHandler(Effect.fn(function* ({ tag, obj }) {
|
|
11
11
|
const object = yield* Database.load(obj);
|
|
12
12
|
const tagObj = yield* Database.load(tag);
|
|
13
|
-
Entity.update(object, (object2) => Entity.addTag(object2, Obj.
|
|
13
|
+
Entity.update(object, (object2) => Entity.addTag(object2, Obj.getURI(tagObj)));
|
|
14
14
|
return Entity.toJSON(object);
|
|
15
15
|
})));
|
|
16
16
|
export {
|
|
17
17
|
tag_add_default as default
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=tag-add-
|
|
19
|
+
//# sourceMappingURL=tag-add-RCE2QULJ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/blueprints/database/functions/tag-add.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Entity, Obj } from '@dxos/echo';\n\nimport { TagAdd } from './definitions';\n\nexport default TagAdd.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ tag, obj }) {\n const object = yield* Database.load(obj);\n const tagObj = yield* Database.load(tag);\n Entity.update(object, (object) => Entity.addTag(object, Obj.
|
|
5
|
-
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,QAAQC,WAAW;AAItC,IAAA,kBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAKC,IAAG,GAAE;AAC/B,QAAMC,SAAS,OAAOC,SAASC,KAAKH,GAAAA;AACpC,QAAMI,SAAS,OAAOF,SAASC,KAAKJ,GAAAA;AACpCM,SAAOC,OAAOL,QAAQ,CAACA,YAAWI,OAAOE,OAAON,SAAQO,IAAIC,OAAOL,MAAAA,
|
|
6
|
-
"names": ["Effect", "Operation", "Database", "Entity", "Obj", "TagAdd", "pipe", "Operation", "withHandler", "fn", "tag", "obj", "object", "Database", "load", "tagObj", "Entity", "update", "addTag", "Obj", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Entity, Obj } from '@dxos/echo';\n\nimport { TagAdd } from './definitions';\n\nexport default TagAdd.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ tag, obj }) {\n const object = yield* Database.load(obj);\n const tagObj = yield* Database.load(tag);\n Entity.update(object, (object) => Entity.addTag(object, Obj.getURI(tagObj)));\n return Entity.toJSON(object);\n }),\n ),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,QAAQC,WAAW;AAItC,IAAA,kBAAeC,OAAOC,KACpBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAKC,IAAG,GAAE;AAC/B,QAAMC,SAAS,OAAOC,SAASC,KAAKH,GAAAA;AACpC,QAAMI,SAAS,OAAOF,SAASC,KAAKJ,GAAAA;AACpCM,SAAOC,OAAOL,QAAQ,CAACA,YAAWI,OAAOE,OAAON,SAAQO,IAAIC,OAAOL,MAAAA,CAAAA,CAAAA;AACnE,SAAOC,OAAOK,OAAOT,MAAAA;AACvB,CAAA,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Operation", "Database", "Entity", "Obj", "TagAdd", "pipe", "Operation", "withHandler", "fn", "tag", "obj", "object", "Database", "load", "tagObj", "Entity", "update", "addTag", "Obj", "getURI", "toJSON"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TagRemove
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EUTROPCP.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/blueprints/database/functions/tag-remove.ts
|
|
@@ -10,10 +10,10 @@ import { Database, Entity, Obj } from "@dxos/echo";
|
|
|
10
10
|
var tag_remove_default = TagRemove.pipe(Operation.withHandler(Effect.fn(function* ({ tag, obj }) {
|
|
11
11
|
const object = yield* Database.load(obj);
|
|
12
12
|
const tagObj = yield* Database.load(tag);
|
|
13
|
-
Entity.update(object, (object2) => Entity.removeTag(object2, Obj.
|
|
13
|
+
Entity.update(object, (object2) => Entity.removeTag(object2, Obj.getURI(tagObj)));
|
|
14
14
|
return Entity.toJSON(object);
|
|
15
15
|
})));
|
|
16
16
|
export {
|
|
17
17
|
tag_remove_default as default
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=tag-remove-
|
|
19
|
+
//# sourceMappingURL=tag-remove-EPKB5CDE.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/blueprints/database/functions/tag-remove.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Entity, Obj } from '@dxos/echo';\n\nimport { TagRemove } from './definitions';\n\nexport default TagRemove.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ tag, obj }) {\n const object = yield* Database.load(obj);\n const tagObj = yield* Database.load(tag);\n Entity.update(object, (object) => Entity.removeTag(object, Obj.
|
|
5
|
-
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,QAAQC,WAAW;AAItC,IAAA,qBAAeC,UAAUC,KACvBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAKC,IAAG,GAAE;AAC/B,QAAMC,SAAS,OAAOC,SAASC,KAAKH,GAAAA;AACpC,QAAMI,SAAS,OAAOF,SAASC,KAAKJ,GAAAA;AACpCM,SAAOC,OAAOL,QAAQ,CAACA,YAAWI,OAAOE,UAAUN,SAAQO,IAAIC,OAAOL,MAAAA,
|
|
6
|
-
"names": ["Effect", "Operation", "Database", "Entity", "Obj", "TagRemove", "pipe", "Operation", "withHandler", "fn", "tag", "obj", "object", "Database", "load", "tagObj", "Entity", "update", "removeTag", "Obj", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database, Entity, Obj } from '@dxos/echo';\n\nimport { TagRemove } from './definitions';\n\nexport default TagRemove.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ tag, obj }) {\n const object = yield* Database.load(obj);\n const tagObj = yield* Database.load(tag);\n Entity.update(object, (object) => Entity.removeTag(object, Obj.getURI(tagObj)));\n return Entity.toJSON(object);\n }),\n ),\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,UAAUC,QAAQC,WAAW;AAItC,IAAA,qBAAeC,UAAUC,KACvBC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAKC,IAAG,GAAE;AAC/B,QAAMC,SAAS,OAAOC,SAASC,KAAKH,GAAAA;AACpC,QAAMI,SAAS,OAAOF,SAASC,KAAKJ,GAAAA;AACpCM,SAAOC,OAAOL,QAAQ,CAACA,YAAWI,OAAOE,UAAUN,SAAQO,IAAIC,OAAOL,MAAAA,CAAAA,CAAAA;AACtE,SAAOC,OAAOK,OAAOT,MAAAA;AACvB,CAAA,CAAA,CAAA;",
|
|
6
|
+
"names": ["Effect", "Operation", "Database", "Entity", "Obj", "TagRemove", "pipe", "Operation", "withHandler", "fn", "tag", "obj", "object", "Database", "load", "tagObj", "Entity", "update", "removeTag", "Obj", "getURI", "toJSON"]
|
|
7
7
|
}
|
|
@@ -5,7 +5,7 @@ import * as Arr from "effect/Array";
|
|
|
5
5
|
import * as Effect from "effect/Effect";
|
|
6
6
|
import { pipe } from "effect/Function";
|
|
7
7
|
import { ConsolePrinter } from "@dxos/ai";
|
|
8
|
-
import {
|
|
8
|
+
import { AiContext, GenerationObserver } from "@dxos/assistant";
|
|
9
9
|
import { Database, Ref } from "@dxos/echo";
|
|
10
10
|
import { log } from "@dxos/log";
|
|
11
11
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/compute/assistant-toolkit/src/blueprints/testing.ts";
|
|
@@ -27,7 +27,7 @@ var runSteps = Effect.fn(function* (session, steps) {
|
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
var addBlueprints = Effect.fnUntraced(function* (blueprints) {
|
|
30
|
-
yield*
|
|
30
|
+
yield* AiContext.Service.bindContext({
|
|
31
31
|
blueprints: yield* pipe(blueprints, Arr.map((blueprint) => blueprint.make()), Effect.forEach(Database.add), Effect.map(Arr.map(Ref.make)))
|
|
32
32
|
});
|
|
33
33
|
});
|
|
@@ -37,22 +37,19 @@ import * as Schema from "effect/Schema";
|
|
|
37
37
|
import React from "react";
|
|
38
38
|
import { Capabilities, Capability } from "@dxos/app-framework";
|
|
39
39
|
import { Surface } from "@dxos/app-framework/ui";
|
|
40
|
-
import { Format, Type } from "@dxos/echo";
|
|
40
|
+
import { DXN, Format, Type } from "@dxos/echo";
|
|
41
41
|
import { Card } from "@dxos/react-ui";
|
|
42
42
|
import { Syntax } from "@dxos/react-ui-syntax-highlighter";
|
|
43
43
|
var MapSchema = Schema.Struct({
|
|
44
44
|
coordinates: Format.GeoPoint
|
|
45
|
-
}).pipe(Type.
|
|
46
|
-
typename: "com.example.type.map",
|
|
47
|
-
version: "0.1.0"
|
|
48
|
-
}));
|
|
45
|
+
}).pipe(Type.makeObject(DXN.make("com.example.type.map", "0.1.0")));
|
|
49
46
|
var isImage = (data) => false;
|
|
50
47
|
var capabilities = [
|
|
51
48
|
Capability.contributes(Capabilities.ReactSurface, Surface.create({
|
|
52
49
|
id: "plugin-image",
|
|
53
50
|
role: "card--content",
|
|
54
51
|
filter: (data) => isImage(data.value),
|
|
55
|
-
component: ({ data }) => /* @__PURE__ */ React.createElement(Card.
|
|
52
|
+
component: ({ data }) => /* @__PURE__ */ React.createElement(Card.Body, null, /* @__PURE__ */ React.createElement("img", {
|
|
56
53
|
className: "grow object-cover",
|
|
57
54
|
src: `data:image/jpeg;base64,${data.value.source.data}`,
|
|
58
55
|
alt: data.value.prompt ?? `Generated image [id=${data.value.id}]`
|
|
@@ -61,8 +58,8 @@ var capabilities = [
|
|
|
61
58
|
Capability.contributes(Capabilities.ReactSurface, Surface.create({
|
|
62
59
|
id: "plugin-default",
|
|
63
60
|
role: "card--content",
|
|
64
|
-
position: "
|
|
65
|
-
component: ({ data }) => /* @__PURE__ */ React.createElement(Card.
|
|
61
|
+
position: "last",
|
|
62
|
+
component: ({ data }) => /* @__PURE__ */ React.createElement(Card.Body, null, /* @__PURE__ */ React.createElement(Syntax.Root, {
|
|
66
63
|
data
|
|
67
64
|
}, /* @__PURE__ */ React.createElement(Syntax.Content, null, /* @__PURE__ */ React.createElement(Syntax.Filter, null), /* @__PURE__ */ React.createElement(Syntax.Viewport, null, /* @__PURE__ */ React.createElement(Syntax.Code, null)))))
|
|
68
65
|
}))
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/blueprints/testing.ts", "../../../../src/testing/plugins.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport { pipe } from 'effect/Function';\n\nimport { ConsolePrinter } from '@dxos/ai';\nimport {
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,SAAS;AACrB,YAAYC,YAAY;AACxB,SAASC,YAAY;AAErB,SAASC,sBAAsB;AAC/B,SAASC,
|
|
6
|
-
"names": ["Arr", "Effect", "pipe", "ConsolePrinter", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Arr from 'effect/Array';\nimport * as Effect from 'effect/Effect';\nimport { pipe } from 'effect/Function';\n\nimport { ConsolePrinter } from '@dxos/ai';\nimport { AiContext, AiRequest, AiSession, GenerationObserver } from '@dxos/assistant';\nimport type { Blueprint } from '@dxos/compute';\nimport { Database, Ref } from '@dxos/echo';\nimport { log } from '@dxos/log';\n\nexport type TestStep = Pick<AiSession.RunProps, 'prompt' | 'system'> & {\n test?: () => Promise<void>;\n};\n\n/**\n * Runs the prompt steps, calling the test function after each step.\n */\nexport const runSteps: (\n session: AiSession.Session,\n steps: TestStep[],\n) => Effect.Effect<void, AiRequest.RunError, AiRequest.RunRequirements> = Effect.fn(function* (\n session: AiSession.Session,\n steps: TestStep[],\n) {\n for (const { test, ...props } of steps) {\n yield* session.createRequest({\n ...props,\n observer: GenerationObserver.fromPrinter(new ConsolePrinter({ mode: 'json' })),\n });\n const messages = yield* Effect.promise(() => session.getHistory());\n log.info('conversation', { messages });\n if (test) {\n yield* Effect.promise(() => test());\n }\n }\n});\n\n/**\n * Binds blueprints from the blueprint definitions.\n */\n// TODO(dmaretskyi): Potentially the agent will auto-bind the blueprints.\nexport const addBlueprints = Effect.fnUntraced(function* (blueprints: Blueprint.Definition[]) {\n yield* AiContext.Service.bindContext({\n blueprints: yield* pipe(\n blueprints,\n Arr.map((blueprint) => blueprint.make()),\n Effect.forEach(Database.add),\n Effect.map(Arr.map(Ref.make)),\n ),\n });\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface } from '@dxos/app-framework/ui';\nimport { DXN, Format, type Obj, Type } from '@dxos/echo';\nimport { Card } from '@dxos/react-ui';\nimport { Syntax } from '@dxos/react-ui-syntax-highlighter';\n\nexport const MapSchema = Schema.Struct({\n coordinates: Format.GeoPoint,\n}).pipe(Type.makeObject(DXN.make('com.example.type.map', '0.1.0')));\n\nexport type MapSchema = Type.InstanceType<typeof MapSchema>;\n\n// TODO(burdon): Move to ECHO def.\nexport type ArtifactsContext = {\n items: Obj.Unknown[];\n getArtifacts: () => Obj.Unknown[];\n addArtifact: (artifact: Obj.Unknown) => void;\n};\n\ndeclare global {\n interface ToolContextExtensions {\n artifacts?: ArtifactsContext;\n }\n}\n\n// TODO(dmaretskyi): Removed images from conductor GPT implementation.\nconst isImage = (data: any): data is any => false;\n\nexport const capabilities: Capability.Any[] = [\n Capability.contributes(\n Capabilities.ReactSurface,\n Surface.create({\n id: 'plugin-image',\n role: 'card--content',\n filter: (data: any): data is any => isImage(data.value),\n component: ({ data }) => (\n <Card.Body>\n <img\n className='grow object-cover'\n src={`data:image/jpeg;base64,${data.value.source.data}`}\n alt={data.value.prompt ?? `Generated image [id=${data.value.id}]`}\n />\n </Card.Body>\n ),\n }),\n ),\n Capability.contributes(\n Capabilities.ReactSurface,\n Surface.create({\n id: 'plugin-default',\n role: 'card--content',\n position: 'last',\n component: ({ data }) => (\n <Card.Body>\n <Syntax.Root data={data}>\n <Syntax.Content>\n <Syntax.Filter />\n <Syntax.Viewport>\n <Syntax.Code />\n </Syntax.Viewport>\n </Syntax.Content>\n </Syntax.Root>\n </Card.Body>\n ),\n }),\n ),\n];\n"],
|
|
5
|
+
"mappings": ";;;AAIA,YAAYA,SAAS;AACrB,YAAYC,YAAY;AACxB,SAASC,YAAY;AAErB,SAASC,sBAAsB;AAC/B,SAASC,WAAiCC,0BAA0B;AAEpE,SAASC,UAAUC,WAAW;AAC9B,SAASC,WAAW;AAMpB,IAAA,eAAA;AAWI,IAAOC,WAAQC,UAAc,WAAA,SAAA,OAAA;aACxBC,EAAAA,MAAK,GAAA,MAAA,KAAA,OAAA;WACRC,QAAUP,cAAAA;;MAAiE,UAAA,mBAAA,YAAA,IAAA,eAAA;QAC7E,MAAA;MACA,CAAA,CAAMQ;IACNL,CAAAA;UAA2BK,WAAAA,OAAAA,eAAAA,MAAAA,QAAAA,WAAAA,CAAAA;AAAS,QAAA,KAAA,gBAAA;MAChCC;qBACKb,YAAc,GAAC,cAAMa,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AAC9B,QAAA,MAAA;AACF,aAAA,eAAA,MAAA,KAAA,CAAA;IACC;EAEH;;IAMIC,gBACEA,kBACAf,WAASgB,YAAcA;AAI3B,SAAA,UAAA,QAAA,YAAA;IACC,YAAA,OAAA,KAAA,YAAA,QAAA,CAAA,cAAA,UAAA,KAAA,CAAA,GAAA,eAAA,SAAA,GAAA,GAAA,WAAA,QAAA,IAAA,IAAA,CAAA,CAAA;;;;;AClDH,YAAYC,YAAY;AACxB,OAAOC,WAAW;AAElB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,eAAe;AACxB,SAASC,KAAKC,QAAkBC,YAAY;AAC5C,SAASC,YAAY;AACrB,SAASC,cAAc;AAEhB,IAAMC,YAAmBC,cAAO;EACrCC,aAAaN,OAAOO;AACtB,CAAA,EAAGC,KAAKP,KAAKQ,WAAWV,IAAIW,KAAK,wBAAwB,OAAA,CAAA,CAAA;AAkBzD,IAAMC,UAAU,CAACC,SAA2B;AAErC,IAAMC,eAAiC;EAC5ChB,WAAWiB,YACTlB,aAAamB,cACbjB,QAAQkB,OAAO;IACbC,IAAI;IACJC,MAAM;IACNC,QAAQ,CAACP,SAA2BD,QAAQC,KAAKQ,KAAK;IACtDC,WAAW,CAAC,EAAET,KAAI,MAChB,sBAAA,cAACV,KAAKoB,MAAI,MACR,sBAAA,cAACC,OAAAA;MACCC,WAAU;MACVC,KAAK,0BAA0Bb,KAAKQ,MAAMM,OAAOd,IAAI;MACrDe,KAAKf,KAAKQ,MAAMQ,UAAU,uBAAuBhB,KAAKQ,MAAMH,EAAE;;EAItE,CAAA,CAAA;EAEFpB,WAAWiB,YACTlB,aAAamB,cACbjB,QAAQkB,OAAO;IACbC,IAAI;IACJC,MAAM;IACNW,UAAU;IACVR,WAAW,CAAC,EAAET,KAAI,MAChB,sBAAA,cAACV,KAAKoB,MAAI,MACR,sBAAA,cAACnB,OAAO2B,MAAI;MAAClB;OACX,sBAAA,cAACT,OAAO4B,SAAO,MACb,sBAAA,cAAC5B,OAAO6B,QAAM,IAAA,GACd,sBAAA,cAAC7B,OAAO8B,UAAQ,MACd,sBAAA,cAAC9B,OAAO+B,MAAI,IAAA,CAAA,CAAA,CAAA,CAAA;EAMxB,CAAA,CAAA;;",
|
|
6
|
+
"names": ["Arr", "Effect", "pipe", "ConsolePrinter", "AiContext", "GenerationObserver", "Database", "Ref", "log", "session", "createRequest", "props", "observer", "messages", "test", "blueprints", "blueprint", "Schema", "React", "Capabilities", "Capability", "Surface", "DXN", "Format", "Type", "Card", "Syntax", "MapSchema", "Struct", "coordinates", "GeoPoint", "pipe", "makeObject", "make", "isImage", "data", "capabilities", "contributes", "ReactSurface", "create", "id", "role", "filter", "value", "component", "Body", "img", "className", "src", "source", "alt", "prompt", "position", "Root", "Content", "Filter", "Viewport", "Code"]
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UpdateBlueprints
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MMIERIDT.mjs";
|
|
4
4
|
import "./chunk-J5LGTIGS.mjs";
|
|
5
5
|
|
|
6
6
|
// src/blueprints/blueprint-manager/functions/update-blueprints.ts
|
|
@@ -13,4 +13,4 @@ var update_blueprints_default = UpdateBlueprints.pipe(Operation.withHandler(Effe
|
|
|
13
13
|
export {
|
|
14
14
|
update_blueprints_default as default
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=update-blueprints-
|
|
16
|
+
//# sourceMappingURL=update-blueprints-VOGJKSMQ.mjs.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
UpdateTasks,
|
|
3
|
+
update_tasks_default
|
|
4
|
+
} from "./chunk-AF5TWFLV.mjs";
|
|
5
|
+
import "./chunk-CMHECL6N.mjs";
|
|
6
|
+
import "./chunk-OC77MYT5.mjs";
|
|
7
|
+
import "./chunk-LO2S3ICN.mjs";
|
|
8
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
9
|
+
export {
|
|
10
|
+
UpdateTasks,
|
|
11
|
+
update_tasks_default as default
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=update-tasks-PNNNCPWH.mjs.map
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AiContext } from '@dxos/assistant';
|
|
2
2
|
import { Blueprint, Operation } from '@dxos/compute';
|
|
3
3
|
import { Database } from '@dxos/echo';
|
|
4
|
-
export declare const QueryBlueprints: Operation.Definition<{}, readonly (
|
|
5
|
-
readonly key: string;
|
|
4
|
+
export declare const QueryBlueprints: Operation.Definition<{}, readonly ({
|
|
6
5
|
readonly name: string;
|
|
7
6
|
readonly description?: string | undefined;
|
|
8
7
|
readonly instructions: {
|
|
9
|
-
readonly source: import("@dxos/echo/internal").Ref<
|
|
8
|
+
readonly source: import("@dxos/echo/internal").Ref<{
|
|
10
9
|
readonly name?: string | undefined;
|
|
11
10
|
readonly content: string;
|
|
12
|
-
}>;
|
|
11
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & import("@dxos/echo/Obj").Unknown>;
|
|
13
12
|
readonly inputs?: readonly {
|
|
14
13
|
readonly name: string;
|
|
15
14
|
readonly kind: "operation" | "value";
|
|
@@ -25,19 +24,18 @@ export declare const QueryBlueprints: Operation.Definition<{}, readonly (import(
|
|
|
25
24
|
readonly protocol: "http" | "sse";
|
|
26
25
|
readonly apiKey?: string | undefined;
|
|
27
26
|
}[] | undefined;
|
|
28
|
-
})[], Blueprint.RegistryService>;
|
|
27
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object>)[], Blueprint.RegistryService>;
|
|
29
28
|
export declare const EnableBlueprints: Operation.Definition<{
|
|
30
29
|
readonly keys: readonly string[];
|
|
31
30
|
}, {
|
|
32
|
-
readonly enabled: readonly (
|
|
33
|
-
readonly key: string;
|
|
31
|
+
readonly enabled: readonly ({
|
|
34
32
|
readonly name: string;
|
|
35
33
|
readonly description?: string | undefined;
|
|
36
34
|
readonly instructions: {
|
|
37
|
-
readonly source: import("@dxos/echo/internal").Ref<
|
|
35
|
+
readonly source: import("@dxos/echo/internal").Ref<{
|
|
38
36
|
readonly name?: string | undefined;
|
|
39
37
|
readonly content: string;
|
|
40
|
-
}>;
|
|
38
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & import("@dxos/echo/Obj").Unknown>;
|
|
41
39
|
readonly inputs?: readonly {
|
|
42
40
|
readonly name: string;
|
|
43
41
|
readonly kind: "operation" | "value";
|
|
@@ -53,11 +51,11 @@ export declare const EnableBlueprints: Operation.Definition<{
|
|
|
53
51
|
readonly protocol: "http" | "sse";
|
|
54
52
|
readonly apiKey?: string | undefined;
|
|
55
53
|
}[] | undefined;
|
|
56
|
-
})[];
|
|
54
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object>)[];
|
|
57
55
|
readonly rejected: readonly {
|
|
58
56
|
readonly key: string;
|
|
59
57
|
readonly reason: string;
|
|
60
58
|
}[];
|
|
61
|
-
},
|
|
59
|
+
}, Blueprint.RegistryService | Database.Service | AiContext.Service>;
|
|
62
60
|
export declare const UpdateBlueprints: Operation.Definition<{}, void, Blueprint.RegistryService | Database.Service>;
|
|
63
61
|
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/blueprint-manager/functions/definitions.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/blueprint-manager/functions/definitions.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAQ,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;sHAU1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAwB3B,CAAC;AAEH,eAAO,MAAM,gBAAgB,8EAW3B,CAAC"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AiContext } from '@dxos/assistant';
|
|
2
2
|
import { Blueprint, Operation } from '@dxos/compute';
|
|
3
3
|
declare const _default: Operation.WithHandler<Operation.Definition<{
|
|
4
4
|
readonly keys: readonly string[];
|
|
5
5
|
}, {
|
|
6
|
-
readonly enabled: readonly (
|
|
7
|
-
readonly key: string;
|
|
6
|
+
readonly enabled: readonly ({
|
|
8
7
|
readonly name: string;
|
|
9
8
|
readonly description?: string | undefined;
|
|
10
9
|
readonly instructions: {
|
|
11
|
-
readonly source: import("@dxos/echo/internal").Ref<
|
|
10
|
+
readonly source: import("@dxos/echo/internal").Ref<{
|
|
12
11
|
readonly name?: string | undefined;
|
|
13
12
|
readonly content: string;
|
|
14
|
-
}>;
|
|
13
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & import("@dxos/echo/Obj").Unknown>;
|
|
15
14
|
readonly inputs?: readonly {
|
|
16
15
|
readonly name: string;
|
|
17
16
|
readonly kind: "operation" | "value";
|
|
@@ -27,11 +26,11 @@ declare const _default: Operation.WithHandler<Operation.Definition<{
|
|
|
27
26
|
readonly protocol: "http" | "sse";
|
|
28
27
|
readonly apiKey?: string | undefined;
|
|
29
28
|
}[] | undefined;
|
|
30
|
-
})[];
|
|
29
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object>)[];
|
|
31
30
|
readonly rejected: readonly {
|
|
32
31
|
readonly key: string;
|
|
33
32
|
readonly reason: string;
|
|
34
33
|
}[];
|
|
35
|
-
},
|
|
34
|
+
}, Blueprint.RegistryService | import("@dxos/echo/Database").Service | AiContext.Service>>;
|
|
36
35
|
export default _default;
|
|
37
36
|
//# sourceMappingURL=enable-blueprints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enable-blueprints.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/blueprint-manager/functions/enable-blueprints.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"enable-blueprints.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/blueprint-manager/functions/enable-blueprints.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Blueprint, Operation } from '@dxos/compute';
|
|
2
|
-
declare const _default: Operation.WithHandler<Operation.Definition<{}, readonly (
|
|
3
|
-
readonly key: string;
|
|
2
|
+
declare const _default: Operation.WithHandler<Operation.Definition<{}, readonly ({
|
|
4
3
|
readonly name: string;
|
|
5
4
|
readonly description?: string | undefined;
|
|
6
5
|
readonly instructions: {
|
|
7
|
-
readonly source: import("@dxos/echo/internal").Ref<
|
|
6
|
+
readonly source: import("@dxos/echo/internal").Ref<{
|
|
8
7
|
readonly name?: string | undefined;
|
|
9
8
|
readonly content: string;
|
|
10
|
-
}>;
|
|
9
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & import("@dxos/echo/Obj").Unknown>;
|
|
11
10
|
readonly inputs?: readonly {
|
|
12
11
|
readonly name: string;
|
|
13
12
|
readonly kind: "operation" | "value";
|
|
@@ -23,6 +22,6 @@ declare const _default: Operation.WithHandler<Operation.Definition<{}, readonly
|
|
|
23
22
|
readonly protocol: "http" | "sse";
|
|
24
23
|
readonly apiKey?: string | undefined;
|
|
25
24
|
}[] | undefined;
|
|
26
|
-
})[], Blueprint.RegistryService>>;
|
|
25
|
+
} & import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object>)[], Blueprint.RegistryService>>;
|
|
27
26
|
export default _default;
|
|
28
27
|
//# sourceMappingURL=query-blueprints.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AiContext } from '@dxos/assistant';
|
|
2
2
|
import { Operation } from '@dxos/compute';
|
|
3
3
|
declare const _default: Operation.WithHandler<Operation.Definition<{
|
|
4
|
-
readonly obj: import("@dxos/echo/internal").Ref<import("@dxos/echo/
|
|
5
|
-
}, void,
|
|
4
|
+
readonly obj: import("@dxos/echo/internal").Ref<import("@dxos/echo/Obj").Unknown>;
|
|
5
|
+
}, void, AiContext.Service>>;
|
|
6
6
|
export default _default;
|
|
7
7
|
//# sourceMappingURL=context-add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-add.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/database/functions/context-add.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"context-add.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/database/functions/context-add.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AiContext } from '@dxos/assistant';
|
|
2
2
|
import { Operation } from '@dxos/compute';
|
|
3
3
|
declare const _default: Operation.WithHandler<Operation.Definition<{
|
|
4
|
-
readonly obj: import("@dxos/echo/internal").Ref<import("@dxos/echo/
|
|
5
|
-
}, void,
|
|
4
|
+
readonly obj: import("@dxos/echo/internal").Ref<import("@dxos/echo/Obj").Unknown>;
|
|
5
|
+
}, void, AiContext.Service>>;
|
|
6
6
|
export default _default;
|
|
7
7
|
//# sourceMappingURL=context-remove.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-remove.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/database/functions/context-remove.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"context-remove.d.ts","sourceRoot":"","sources":["../../../../../../src/blueprints/database/functions/context-remove.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|