trellis 3.1.35 → 3.2.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/CHANGELOG.md +16 -5
- package/README.md +19 -2
- package/bin/trellis.mjs +2 -75
- package/dist/better-sqlite-backend-2P4F6AOJ.js +209 -0
- package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-PII64VE6.js} +37 -25
- package/dist/better-sqlite-backend-VUBVQ7SN.js +209 -0
- package/dist/better-sqlite-backend-Y3AQN65E.js +159 -0
- package/dist/better-sqlite-backend-Y3M7DXOX.js +159 -0
- package/dist/boot-middleware-FJDGVUM4.js +9 -0
- package/dist/boot-middleware-MHLHFCUC.js +9 -0
- package/dist/boot-middleware-MLJUTLUM.js +9 -0
- package/dist/boot-middleware-ZZPDZNYR.js +9 -0
- package/dist/{index-wncptktd.js → chunk-276LKLZR.js} +126 -59
- package/dist/chunk-2BRTCEHB.js +143 -0
- package/dist/chunk-2CX5UCRV.js +111 -0
- package/dist/chunk-2ESYSVXG.js +48 -0
- package/dist/{index-yp88he8n.js → chunk-2I5JU73Y.js} +88 -64
- package/dist/{index-w5wccer3.js → chunk-2UNSRRNB.js} +10 -5
- package/dist/{index-4wxa8xz4.js → chunk-335UEHQR.js} +158 -22
- package/dist/chunk-36VSSTL7.js +357 -0
- package/dist/chunk-3ETIIPPB.js +1077 -0
- package/dist/chunk-3GDRZTAW.js +45 -0
- package/dist/chunk-44FFQKQX.js +142 -0
- package/dist/chunk-4CF2L46N.js +29 -0
- package/dist/chunk-4HYPLFJD.js +150 -0
- package/dist/chunk-4XIVMVHC.js +361 -0
- package/dist/chunk-5CINODKT.js +41 -0
- package/dist/chunk-5ESGWJ5L.js +45 -0
- package/dist/chunk-5FGLQGMF.js +1676 -0
- package/dist/chunk-5IQZFITY.js +357 -0
- package/dist/{index-wt8rz4gn.js → chunk-5JWFAQDW.js} +41 -23
- package/dist/{index-7pjz3tsy.js → chunk-62UHTVU3.js} +50 -16
- package/dist/{index-h32txmxe.js → chunk-66UJQT2I.js} +6 -13
- package/dist/chunk-6CTA6MCE.js +340 -0
- package/dist/{index-4cdr7x2x.js → chunk-6RNNVOAS.js} +178 -109
- package/dist/chunk-6X23PZ6H.js +969 -0
- package/dist/chunk-7C7LL6MB.js +315 -0
- package/dist/chunk-7F4HM3JG.js +394 -0
- package/dist/chunk-7KJ7T4D3.js +910 -0
- package/dist/chunk-7QQQNUB5.js +92 -0
- package/dist/{index-53f3b8p8.js → chunk-7QWJBS72.js} +210 -165
- package/dist/chunk-7R36OZK3.js +957 -0
- package/dist/chunk-7UPKCOHE.js +946 -0
- package/dist/chunk-7WQGTFVJ.js +7434 -0
- package/dist/chunk-A3BONW34.js +35 -0
- package/dist/chunk-AHMDVHBL.js +141 -0
- package/dist/chunk-AW6A4OZY.js +171 -0
- package/dist/chunk-B3ZIFA2O.js +2240 -0
- package/dist/chunk-BJ5EKCJ5.js +458 -0
- package/dist/chunk-BJ7EZ7FP.js +145 -0
- package/dist/chunk-BQBUVMRN.js +171 -0
- package/dist/chunk-BRGYDO7D.js +223 -0
- package/dist/chunk-BXSTJVE3.js +67 -0
- package/dist/chunk-C5KPSEDN.js +359 -0
- package/dist/chunk-CCTNYTUC.js +940 -0
- package/dist/chunk-CYQ2OVD2.js +35 -0
- package/dist/chunk-DDAK7YOE.js +299 -0
- package/dist/chunk-DRILKBY6.js +965 -0
- package/dist/chunk-DXE24HNN.js +45 -0
- package/dist/chunk-E7ICUNW7.js +945 -0
- package/dist/chunk-EAL2PUOE.js +10022 -0
- package/dist/chunk-ELT7MLZB.js +109 -0
- package/dist/chunk-EO3J7GRP.js +0 -0
- package/dist/chunk-EWEIRF6G.js +171 -0
- package/dist/chunk-F5VDGQJC.js +120 -0
- package/dist/chunk-FCPL3IEQ.js +98 -0
- package/dist/{index-nq520y6k.js → chunk-FDPKYSV7.js} +43 -31
- package/dist/chunk-FES3TC24.js +171 -0
- package/dist/chunk-FF36CQHZ.js +61 -0
- package/dist/chunk-FKQO5A3H.js +35 -0
- package/dist/chunk-FOWKR5TW.js +129 -0
- package/dist/chunk-FZVCXDYW.js +150 -0
- package/dist/chunk-G3XIHPSQ.js +361 -0
- package/dist/chunk-GD5QJXSS.js +98 -0
- package/dist/chunk-GFZCJ4EH.js +108 -0
- package/dist/chunk-GKJLYLVU.js +359 -0
- package/dist/chunk-GLM4HGN4.js +55 -0
- package/dist/chunk-GNXHXNVQ.js +113 -0
- package/dist/chunk-GSR6ILTM.js +277 -0
- package/dist/chunk-GWRIMRSX.js +45 -0
- package/dist/chunk-H72UW2HJ.js +45 -0
- package/dist/chunk-HGI74PXB.js +7417 -0
- package/dist/chunk-HGRA37LO.js +145 -0
- package/dist/chunk-HO4TURXW.js +1078 -0
- package/dist/chunk-HXSRQO3L.js +145 -0
- package/dist/chunk-IG2X2BVO.js +373 -0
- package/dist/chunk-IIJVDD54.js +373 -0
- package/dist/chunk-IUWVEEOX.js +145 -0
- package/dist/chunk-IX4BBOIT.js +394 -0
- package/dist/{index-yhwjgfvj.js → chunk-IXU4RMQM.js} +67 -60
- package/dist/chunk-J3WYZO3Q.js +211 -0
- package/dist/{index-vkpkfwhq.js → chunk-J6OUIION.js} +234 -194
- package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
- package/dist/chunk-JUEMDWLU.js +233 -0
- package/dist/chunk-K46RNFDE.js +171 -0
- package/dist/chunk-KAGU2XMY.js +359 -0
- package/dist/chunk-KCVYJNVX.js +394 -0
- package/dist/chunk-KFQGP6VL.js +33 -0
- package/dist/chunk-KKDRMIV6.js +419 -0
- package/dist/chunk-KQ4A2D2P.js +910 -0
- package/dist/chunk-KSU2GW22.js +958 -0
- package/dist/chunk-KYLIQ3YI.js +399 -0
- package/dist/chunk-KZYJJIRN.js +946 -0
- package/dist/chunk-LFOX744K.js +96 -0
- package/dist/{index-rv1p47gp.js → chunk-LHOVJEWR.js} +2756 -2307
- package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
- package/dist/chunk-LOPXTPF3.js +120 -0
- package/dist/chunk-LZR3VIFU.js +907 -0
- package/dist/chunk-MBNBTJCR.js +394 -0
- package/dist/chunk-MCKGQKYU.js +15 -0
- package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
- package/dist/chunk-MPXUVGT3.js +104 -0
- package/dist/chunk-MU6EOS6F.js +0 -0
- package/dist/chunk-MWRQ2TXT.js +357 -0
- package/dist/{index-nzb3am4f.js → chunk-NO73OK2I.js} +43 -21
- package/dist/chunk-NPE2YJHK.js +394 -0
- package/dist/{index-xhcp6xrn.js → chunk-NSDXU6QX.js} +654 -500
- package/dist/chunk-NXIRDSZ6.js +145 -0
- package/dist/chunk-NZWFNHCS.js +407 -0
- package/dist/chunk-O2AV5WMN.js +48 -0
- package/dist/{index-h7zxhhhh.js → chunk-OB4CMMX6.js} +46 -38
- package/dist/chunk-OBKU74FU.js +7411 -0
- package/dist/chunk-OQNDWRDE.js +145 -0
- package/dist/chunk-OVWAJMB6.js +394 -0
- package/dist/chunk-PDHLBTTD.js +45 -0
- package/dist/chunk-PEQNRKLG.js +210 -0
- package/dist/chunk-QERIS7QY.js +7403 -0
- package/dist/chunk-QHA2DM3C.js +373 -0
- package/dist/chunk-QLM4HSYC.js +45 -0
- package/dist/chunk-RSWUFTO2.js +857 -0
- package/dist/chunk-S2OT3TQJ.js +283 -0
- package/dist/chunk-S5PHSN5K.js +907 -0
- package/dist/chunk-SIAA4J6H.js +21 -0
- package/dist/chunk-SPSPV5BC.js +390 -0
- package/dist/chunk-SQBNLUIA.js +171 -0
- package/dist/chunk-STLN6A6B.js +355 -0
- package/dist/chunk-TCKXSOBP.js +123 -0
- package/dist/chunk-U7HV7GU2.js +17 -0
- package/dist/chunk-UBGUDMUV.js +59 -0
- package/dist/chunk-UGZHOGRA.js +39 -0
- package/dist/chunk-UICF66FS.js +359 -0
- package/dist/chunk-UK3EQREE.js +1078 -0
- package/dist/chunk-UPKPURVY.js +394 -0
- package/dist/chunk-URC74VCN.js +959 -0
- package/dist/chunk-USEINYUL.js +12 -0
- package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
- package/dist/chunk-V3G7Q3QQ.js +102 -0
- package/dist/chunk-VDAKEOML.js +857 -0
- package/dist/chunk-VUJ6SA55.js +303 -0
- package/dist/chunk-VUJQLIML.js +141 -0
- package/dist/chunk-VWKLKLYB.js +267 -0
- package/dist/chunk-VYC3RZMK.js +277 -0
- package/dist/chunk-WMERMSWI.js +154 -0
- package/dist/chunk-WMR777PO.js +2213 -0
- package/dist/{index-n9f2qyh5.js → chunk-X46IECAC.js} +55 -33
- package/dist/chunk-X5FLTRUB.js +517 -0
- package/dist/chunk-X762XWVC.js +419 -0
- package/dist/chunk-XEN3OEYY.js +2234 -0
- package/dist/chunk-XMQ7G77X.js +260 -0
- package/dist/chunk-XZQ66K7A.js +124 -0
- package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
- package/dist/chunk-YY3GF7DH.js +7411 -0
- package/dist/chunk-ZE5R3H4C.js +907 -0
- package/dist/chunk-ZHVI7BQN.js +1077 -0
- package/dist/chunk-ZMN5LUB7.js +7411 -0
- package/dist/chunk-ZUV4MD5U.js +94 -0
- package/dist/cli/errors.d.ts +6 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/examples.d.ts +23 -0
- package/dist/cli/examples.d.ts.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2338 -6190
- package/dist/client/index.d.ts +6 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +41 -21
- package/dist/client/live.d.ts +67 -0
- package/dist/client/live.d.ts.map +1 -0
- package/dist/client/reactive.d.ts +31 -0
- package/dist/client/reactive.d.ts.map +1 -0
- package/dist/client/sdk.d.ts +26 -2
- package/dist/client/sdk.d.ts.map +1 -1
- package/dist/client/sdk.js +9 -0
- package/dist/client/vcs-client.d.ts +129 -0
- package/dist/client/vcs-client.d.ts.map +1 -0
- package/dist/cms/index.js +171 -163
- package/dist/{config-8hczw0rs.js → config-KMY6RRK3.js} +8 -9
- package/dist/config-PFTP67TR.js +19 -0
- package/dist/config-VDMK2DUJ.js +19 -0
- package/dist/core/computation/index.d.ts +5 -0
- package/dist/core/computation/index.d.ts.map +1 -0
- package/dist/core/computation/rollup.d.ts +18 -0
- package/dist/core/computation/rollup.d.ts.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +168 -101
- package/dist/core/kernel/boot-middleware.d.ts +10 -0
- package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
- package/dist/core/kernel/logic-middleware.d.ts +7 -1
- package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
- package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
- package/dist/core/ontology/types.d.ts +5 -0
- package/dist/core/ontology/types.d.ts.map +1 -1
- package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
- package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
- package/dist/core/persist/factory.d.ts +6 -7
- package/dist/core/persist/factory.d.ts.map +1 -1
- package/dist/core/persist/factory.js +2 -3
- package/dist/core/persist/sqljs-backend.js +2 -3
- package/dist/db/index.d.ts +4 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +69 -56
- package/dist/db/inspector.js +11 -19
- package/dist/decisions/index.js +9 -10
- package/dist/deploy-66EC752W.js +9 -0
- package/dist/deploy-SO7AFK6L.js +9 -0
- package/dist/embeddings/auto-embed.d.ts +2 -2
- package/dist/embeddings/auto-embed.d.ts.map +1 -1
- package/dist/embeddings/index.js +20 -22
- package/dist/embeddings/search.d.ts +2 -1
- package/dist/embeddings/search.d.ts.map +1 -1
- package/dist/embeddings/store.d.ts +25 -4
- package/dist/embeddings/store.d.ts.map +1 -1
- package/dist/engine-7GXBM4IT.js +7 -0
- package/dist/engine-NSR6BIF7.js +7 -0
- package/dist/engine.d.ts +32 -12
- package/dist/engine.d.ts.map +1 -1
- package/dist/factory-2P64OC7M.js +34 -0
- package/dist/factory-YP4ZZK5K.js +34 -0
- package/dist/import-AJLYHFIA.js +10 -0
- package/dist/import-UZEKXU3B.js +10 -0
- package/dist/index.js +102 -93
- package/dist/launch-explorer-AI6L2AWJ.js +91 -0
- package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
- package/dist/links/index.js +24 -26
- package/dist/plugins/agent-memory/index.js +316 -0
- package/dist/plugins/idea-garden/index.js +165 -0
- package/dist/plugins/plan-approval/index.js +579 -0
- package/dist/plugins/proactive-watcher/index.js +194 -0
- package/dist/{index-2r4jxwnb.js → query-GJL3CVGN.js} +14 -15
- package/dist/query-MBJSK3EB.js +31 -0
- package/dist/query-TJHEVSKL.js +31 -0
- package/dist/query-WUIKOHPE.js +524 -0
- package/dist/query-XYLTJYSA.js +31 -0
- package/dist/react/index.js +39 -70
- package/dist/react/realtime.js +11 -0
- package/dist/react/schema-hooks.js +87 -0
- package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
- package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
- package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
- package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
- package/dist/realtime/index.d.ts +44 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +40 -0
- package/dist/realtime/memory-hub.d.ts +32 -0
- package/dist/realtime/memory-hub.d.ts.map +1 -0
- package/dist/realtime/persistent-channel.d.ts +105 -0
- package/dist/realtime/persistent-channel.d.ts.map +1 -0
- package/dist/realtime/presence.d.ts +73 -0
- package/dist/realtime/presence.d.ts.map +1 -0
- package/dist/realtime/relay-persistence.d.ts +37 -0
- package/dist/realtime/relay-persistence.d.ts.map +1 -0
- package/dist/realtime/relay-persistence.js +107 -0
- package/dist/realtime/relay-server.d.ts +103 -0
- package/dist/realtime/relay-server.d.ts.map +1 -0
- package/dist/realtime/room.d.ts +98 -0
- package/dist/realtime/room.d.ts.map +1 -0
- package/dist/realtime/text.d.ts +73 -0
- package/dist/realtime/text.d.ts.map +1 -0
- package/dist/realtime/types.d.ts +89 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/websocket-relay-transport.d.ts +28 -0
- package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
- package/dist/realtime.bundle.js +1100 -0
- package/dist/remote-manager-BLJZ6KF6.js +224 -0
- package/dist/{remote-manager-xvbg4230.js → remote-manager-BPYE46SI.js} +24 -15
- package/dist/remote-manager-FMESEAFA.js +224 -0
- package/dist/remote-manager-K2WZ5RHY.js +223 -0
- package/dist/remote-manager-SG545WNY.js +224 -0
- package/dist/remote-manager-SG5PQKCH.js +224 -0
- package/dist/remote-manager-WGP6MIQZ.js +224 -0
- package/dist/scaffold/write.d.ts.map +1 -1
- package/dist/schema/define.d.ts +137 -0
- package/dist/schema/define.d.ts.map +1 -0
- package/dist/schema/entity-projection.d.ts +34 -0
- package/dist/schema/entity-projection.d.ts.map +1 -0
- package/dist/schema/eql.d.ts +46 -0
- package/dist/schema/eql.d.ts.map +1 -0
- package/dist/schema/index.d.ts +21 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +45 -0
- package/dist/schema/kernel-resolve.d.ts +21 -0
- package/dist/schema/kernel-resolve.d.ts.map +1 -0
- package/dist/schema/mutations.d.ts +20 -0
- package/dist/schema/mutations.d.ts.map +1 -0
- package/dist/schema/resolve.d.ts +21 -0
- package/dist/schema/resolve.d.ts.map +1 -0
- package/dist/sdk-3KBB3E6V.js +16 -0
- package/dist/sdk-4ZQO6UTU.js +16 -0
- package/dist/sdk-6JA6GV3G.js +16 -0
- package/dist/sdk-6VTP5UTZ.js +16 -0
- package/dist/sdk-7VS6TYCD.js +16 -0
- package/dist/sdk-HQ3FTLRT.js +16 -0
- package/dist/sdk-HZ7NU3XE.js +15 -0
- package/dist/sdk-KBQE2OXT.js +16 -0
- package/dist/sdk-LZ7W3EEY.js +9 -0
- package/dist/sdk-MSCDZ7JU.js +15 -0
- package/dist/sdk-WNZOGO3S.js +15 -0
- package/dist/sdk-YLV33ZCW.js +9 -0
- package/dist/sdk-ZSUD2LLJ.js +16 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +69 -61
- package/dist/server/node-adapter.js +5 -104
- package/dist/server/realtime.d.ts +10 -2
- package/dist/server/realtime.d.ts.map +1 -1
- package/dist/server/server.d.ts +7 -16
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/sprites.d.ts.map +1 -1
- package/dist/server/tenancy.d.ts.map +1 -1
- package/dist/server-AFXFFBWA.js +11 -0
- package/dist/server-AGHC4VUL.js +11 -0
- package/dist/server-BOH7M4TT.js +13 -0
- package/dist/server-DBUY2KY5.js +11 -0
- package/dist/server-GWBQJPRG.js +11 -0
- package/dist/server-IGBIIJSF.js +13 -0
- package/dist/server-JZZFULVU.js +11 -0
- package/dist/server-L5XAF4M5.js +11 -0
- package/dist/server-NYFUHANA.js +12 -0
- package/dist/server-OABUB2LO.js +12 -0
- package/dist/server-P2CKZWWV.js +12 -0
- package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
- package/dist/sprites-XVSMQLSI.js +15 -0
- package/dist/sql-wasm-FORCZFHZ.js +2148 -0
- package/dist/sql-wasm-JZH76RLO.js +2148 -0
- package/dist/sqljs-backend-CJQOIQYE.js +266 -0
- package/dist/sqljs-backend-KWXBUDUO.js +266 -0
- package/dist/state-demo.bundle.js +1033 -0
- package/dist/svelte/index.d.ts +17 -0
- package/dist/svelte/index.d.ts.map +1 -0
- package/dist/svelte/index.js +51 -0
- package/dist/svelte/schema-hooks.d.ts +45 -0
- package/dist/svelte/schema-hooks.d.ts.map +1 -0
- package/dist/svelte/schema-hooks.js +71 -0
- package/dist/svelte/stores.d.ts +78 -0
- package/dist/svelte/stores.d.ts.map +1 -0
- package/dist/sync/http-transport.d.ts +3 -3
- package/dist/sync/http-transport.d.ts.map +1 -1
- package/dist/sync/index.d.ts +15 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +617 -0
- package/dist/sync/memory-room.d.ts +37 -0
- package/dist/sync/memory-room.d.ts.map +1 -0
- package/dist/sync/memory-transport.d.ts +3 -3
- package/dist/sync/memory-transport.d.ts.map +1 -1
- package/dist/sync/partykit-room.d.ts +40 -0
- package/dist/sync/partykit-room.d.ts.map +1 -0
- package/dist/sync/partykit-transport.d.ts +84 -0
- package/dist/sync/partykit-transport.d.ts.map +1 -0
- package/dist/sync/room-core.d.ts +53 -0
- package/dist/sync/room-core.d.ts.map +1 -0
- package/dist/sync/sync-engine.d.ts +40 -2
- package/dist/sync/sync-engine.d.ts.map +1 -1
- package/dist/sync/sync-room-server.d.ts +39 -0
- package/dist/sync/sync-room-server.d.ts.map +1 -0
- package/dist/sync/types.d.ts +70 -3
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/vcs-sync-peer.d.ts +63 -0
- package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
- package/dist/sync/ws-transport.d.ts +2 -2
- package/dist/sync/ws-transport.d.ts.map +1 -1
- package/dist/tenancy-CBWYEVUB.js +11 -0
- package/dist/tenancy-FO6WVYFN.js +13 -0
- package/dist/tenancy-FWDBESMX.js +14 -0
- package/dist/tenancy-HGPIS5QA.js +13 -0
- package/dist/tenancy-HXFALA37.js +14 -0
- package/dist/tenancy-OP34NFFS.js +14 -0
- package/dist/tenancy-S676GLID.js +14 -0
- package/dist/tenancy-V7ARWNNV.js +14 -0
- package/dist/tenancy-ZDN4GXK5.js +13 -0
- package/dist/tenancy-ZT5VMY7B.js +14 -0
- package/dist/ui/client.html +355 -67
- package/dist/ui/launch-explorer.d.ts +22 -0
- package/dist/ui/launch-explorer.d.ts.map +1 -0
- package/dist/ui/server.d.ts +1 -1
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/vcs/blob-store.d.ts.map +1 -1
- package/dist/vcs/idb-op-log.d.ts +67 -0
- package/dist/vcs/idb-op-log.d.ts.map +1 -0
- package/dist/vcs/index.d.ts +1 -0
- package/dist/vcs/index.d.ts.map +1 -1
- package/dist/vcs/index.js +81 -72
- package/dist/vcs/issue.d.ts +22 -5
- package/dist/vcs/issue.d.ts.map +1 -1
- package/dist/vcs/lane-materialize.d.ts +5 -0
- package/dist/vcs/lane-materialize.d.ts.map +1 -1
- package/dist/vcs/op-log.d.ts +28 -2
- package/dist/vcs/op-log.d.ts.map +1 -1
- package/dist/vcs/ops.d.ts +10 -0
- package/dist/vcs/ops.d.ts.map +1 -1
- package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
- package/dist/vm-config-YZRJ3KUB.js +21 -0
- package/dist/vue/hooks.d.ts +64 -0
- package/dist/vue/hooks.d.ts.map +1 -0
- package/dist/vue/index.d.ts +19 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/index.js +59 -0
- package/dist/vue/schema-hooks.d.ts +41 -0
- package/dist/vue/schema-hooks.d.ts.map +1 -0
- package/dist/vue/schema-hooks.js +64 -0
- package/package.json +118 -16
- package/dist/deploy-999q207z.js +0 -10
- package/dist/engine-y0724kjq.js +0 -8
- package/dist/import-s2b8e0ft.js +0 -11
- package/dist/index-a76rekgs.js +0 -67
- package/dist/index-c9h37r6h.js +0 -1
- package/dist/index-hr9qvv77.js +0 -860
- package/dist/index-k5b0xskw.js +0 -1
- package/dist/index-y6a4kj0p.js +0 -43
- package/dist/sdk-bepky0xs.js +0 -16
- package/dist/server-szdjx0nt.js +0 -13
- package/dist/sqlite-backend-0vsmc6qj.js +0 -8
- package/dist/tenancy-pjm32b4v.js +0 -14
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
+
}) : x)(function(x) {
|
|
6
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
7
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
|
+
});
|
|
9
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
10
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
+
};
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
__require,
|
|
19
|
+
__commonJS,
|
|
20
|
+
__export
|
|
21
|
+
};
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
// src/core/computation/expr-evaluator.ts
|
|
2
|
+
var ExprEvaluator = class {
|
|
3
|
+
functions;
|
|
4
|
+
constructor() {
|
|
5
|
+
this.functions = /* @__PURE__ */ new Map([
|
|
6
|
+
["$if", this.if.bind(this)],
|
|
7
|
+
["$round", this.round.bind(this)],
|
|
8
|
+
["$concat", this.concat.bind(this)],
|
|
9
|
+
["$len", this.len.bind(this)],
|
|
10
|
+
["$lower", this.lower.bind(this)],
|
|
11
|
+
["$upper", this.upper.bind(this)],
|
|
12
|
+
["$trim", this.trim.bind(this)],
|
|
13
|
+
["$now", this.now.bind(this)],
|
|
14
|
+
["$uuid", this.uuid.bind(this)],
|
|
15
|
+
["$add", this.add.bind(this)],
|
|
16
|
+
["$sub", this.sub.bind(this)],
|
|
17
|
+
["$mul", this.mul.bind(this)],
|
|
18
|
+
["$div", this.div.bind(this)],
|
|
19
|
+
["$mod", this.mod.bind(this)],
|
|
20
|
+
["$eq", this.eq.bind(this)],
|
|
21
|
+
["$ne", this.ne.bind(this)],
|
|
22
|
+
["$gt", this.gt.bind(this)],
|
|
23
|
+
["$gte", this.gte.bind(this)],
|
|
24
|
+
["$lt", this.lt.bind(this)],
|
|
25
|
+
["$lte", this.lte.bind(this)],
|
|
26
|
+
["$and", this.and.bind(this)],
|
|
27
|
+
["$or", this.or.bind(this)],
|
|
28
|
+
["$not", this.not.bind(this)],
|
|
29
|
+
["$coalesce", this.coalesce.bind(this)],
|
|
30
|
+
["$contains", this.contains.bind(this)],
|
|
31
|
+
["$startsWith", this.startsWith.bind(this)],
|
|
32
|
+
["$endsWith", this.endsWith.bind(this)]
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Evaluate an expression string against a context.
|
|
37
|
+
*/
|
|
38
|
+
eval(expr, context) {
|
|
39
|
+
const trimmed = expr.trim();
|
|
40
|
+
const fnMatch = trimmed.match(/^(\$\w+)\((.*)\)$/s);
|
|
41
|
+
if (fnMatch) {
|
|
42
|
+
const fnName = fnMatch[1];
|
|
43
|
+
const argsStr = fnMatch[2];
|
|
44
|
+
const fn = this.functions.get(fnName);
|
|
45
|
+
if (!fn) {
|
|
46
|
+
throw new Error(`Unknown function: ${fnName}`);
|
|
47
|
+
}
|
|
48
|
+
return this.evalFunction(fn, argsStr, context);
|
|
49
|
+
}
|
|
50
|
+
if (trimmed.startsWith("$")) {
|
|
51
|
+
const field = trimmed.slice(1);
|
|
52
|
+
return context[field];
|
|
53
|
+
}
|
|
54
|
+
if (trimmed === "true") return true;
|
|
55
|
+
if (trimmed === "false") return false;
|
|
56
|
+
if (trimmed === "null") return null;
|
|
57
|
+
const num = Number(trimmed);
|
|
58
|
+
if (!isNaN(num) && trimmed !== "") return num;
|
|
59
|
+
if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) {
|
|
60
|
+
return trimmed.slice(1, -1);
|
|
61
|
+
}
|
|
62
|
+
return trimmed;
|
|
63
|
+
}
|
|
64
|
+
evalFunction(fn, argsStr, context) {
|
|
65
|
+
const args = this.parseArgs(argsStr, context);
|
|
66
|
+
return fn(...args);
|
|
67
|
+
}
|
|
68
|
+
parseArgs(argsStr, context) {
|
|
69
|
+
const args = [];
|
|
70
|
+
let depth = 0;
|
|
71
|
+
let current = "";
|
|
72
|
+
for (let i = 0; i < argsStr.length; i++) {
|
|
73
|
+
const char = argsStr[i];
|
|
74
|
+
if (char === "(" || char === "[" || char === "{") depth++;
|
|
75
|
+
else if (char === ")" || char === "]" || char === "}") depth--;
|
|
76
|
+
else if (char === "," && depth === 0) {
|
|
77
|
+
args.push(this.eval(current.trim(), context));
|
|
78
|
+
current = "";
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
current += char;
|
|
82
|
+
}
|
|
83
|
+
if (current.trim()) {
|
|
84
|
+
args.push(this.eval(current.trim(), context));
|
|
85
|
+
}
|
|
86
|
+
return args;
|
|
87
|
+
}
|
|
88
|
+
// Built-in functions
|
|
89
|
+
if(cond, trueVal, falseVal) {
|
|
90
|
+
return cond ? trueVal : falseVal;
|
|
91
|
+
}
|
|
92
|
+
round(value, decimals = 0) {
|
|
93
|
+
const n = Number(value);
|
|
94
|
+
const factor = Math.pow(10, Number(decimals));
|
|
95
|
+
return Math.round(n * factor) / factor;
|
|
96
|
+
}
|
|
97
|
+
concat(...args) {
|
|
98
|
+
return args.map((a) => String(a ?? "")).join("");
|
|
99
|
+
}
|
|
100
|
+
len(value) {
|
|
101
|
+
if (typeof value === "string") return value.length;
|
|
102
|
+
if (Array.isArray(value)) return value.length;
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
lower(value) {
|
|
106
|
+
return String(value ?? "").toLowerCase();
|
|
107
|
+
}
|
|
108
|
+
upper(value) {
|
|
109
|
+
return String(value ?? "").toUpperCase();
|
|
110
|
+
}
|
|
111
|
+
trim(value) {
|
|
112
|
+
return String(value ?? "").trim();
|
|
113
|
+
}
|
|
114
|
+
now() {
|
|
115
|
+
return (/* @__PURE__ */ new Date()).toISOString();
|
|
116
|
+
}
|
|
117
|
+
uuid() {
|
|
118
|
+
return crypto.randomUUID();
|
|
119
|
+
}
|
|
120
|
+
add(...args) {
|
|
121
|
+
return args.reduce((sum, a) => sum + Number(a), 0);
|
|
122
|
+
}
|
|
123
|
+
sub(a, b) {
|
|
124
|
+
return Number(a) - Number(b);
|
|
125
|
+
}
|
|
126
|
+
mul(...args) {
|
|
127
|
+
return args.reduce((prod, a) => prod * Number(a), 1);
|
|
128
|
+
}
|
|
129
|
+
div(a, b) {
|
|
130
|
+
return Number(a) / Number(b);
|
|
131
|
+
}
|
|
132
|
+
mod(a, b) {
|
|
133
|
+
return Number(a) % Number(b);
|
|
134
|
+
}
|
|
135
|
+
eq(a, b) {
|
|
136
|
+
return a === b;
|
|
137
|
+
}
|
|
138
|
+
ne(a, b) {
|
|
139
|
+
return a !== b;
|
|
140
|
+
}
|
|
141
|
+
gt(a, b) {
|
|
142
|
+
return Number(a) > Number(b);
|
|
143
|
+
}
|
|
144
|
+
gte(a, b) {
|
|
145
|
+
return Number(a) >= Number(b);
|
|
146
|
+
}
|
|
147
|
+
lt(a, b) {
|
|
148
|
+
return Number(a) < Number(b);
|
|
149
|
+
}
|
|
150
|
+
lte(a, b) {
|
|
151
|
+
return Number(a) <= Number(b);
|
|
152
|
+
}
|
|
153
|
+
and(...args) {
|
|
154
|
+
return args.every(Boolean);
|
|
155
|
+
}
|
|
156
|
+
or(...args) {
|
|
157
|
+
return args.some(Boolean);
|
|
158
|
+
}
|
|
159
|
+
not(value) {
|
|
160
|
+
return !value;
|
|
161
|
+
}
|
|
162
|
+
coalesce(...args) {
|
|
163
|
+
for (const arg of args) {
|
|
164
|
+
if (arg !== null && arg !== void 0) return arg;
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
contains(haystack, needle) {
|
|
169
|
+
return String(haystack ?? "").includes(String(needle ?? ""));
|
|
170
|
+
}
|
|
171
|
+
startsWith(str, prefix) {
|
|
172
|
+
return String(str ?? "").startsWith(String(prefix ?? ""));
|
|
173
|
+
}
|
|
174
|
+
endsWith(str, suffix) {
|
|
175
|
+
return String(str ?? "").endsWith(String(suffix ?? ""));
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
function evalExpr(expr, context) {
|
|
179
|
+
const result = new ExprEvaluator().eval(expr, context);
|
|
180
|
+
if (result === null || result === void 0) return "";
|
|
181
|
+
if (typeof result === "boolean") return result ? "true" : "false";
|
|
182
|
+
if (typeof result === "number") return result;
|
|
183
|
+
if (typeof result === "string") return result;
|
|
184
|
+
if (typeof result === "object") return JSON.stringify(result);
|
|
185
|
+
return String(result);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// src/core/computation/rollup.ts
|
|
189
|
+
function collectRollupRelatedIds(rollup, ctx) {
|
|
190
|
+
if (rollup.joinEntity) {
|
|
191
|
+
const { type, foreignKey } = rollup.joinEntity;
|
|
192
|
+
const facts = ctx.store.getFactsByAttribute(foreignKey);
|
|
193
|
+
const ids = [];
|
|
194
|
+
for (const fact of facts) {
|
|
195
|
+
if (fact.v !== ctx.entityId) continue;
|
|
196
|
+
const typeFacts = ctx.store.getFactsByEntity(fact.e);
|
|
197
|
+
const entityType = typeFacts.find((f) => f.a === "type")?.v;
|
|
198
|
+
if (entityType === type) ids.push(fact.e);
|
|
199
|
+
}
|
|
200
|
+
return ids;
|
|
201
|
+
}
|
|
202
|
+
const linkAttr = resolveLinkAttribute(rollup.relationProperty, ctx.schema);
|
|
203
|
+
const links = ctx.store.getLinksByEntityAndAttribute(ctx.entityId, linkAttr);
|
|
204
|
+
if (links.length > 0) return links.map((l) => l.e2);
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
function resolveLinkAttribute(relationProperty, schema) {
|
|
208
|
+
const field = schema?.fields.find((f) => f.name === relationProperty);
|
|
209
|
+
if (field?.valueType === "relation") return relationProperty;
|
|
210
|
+
return relationProperty;
|
|
211
|
+
}
|
|
212
|
+
function readTargetValue(store, entityId, targetProperty) {
|
|
213
|
+
if (targetProperty === "id") return entityId;
|
|
214
|
+
const facts = store.getFactsByEntity(entityId);
|
|
215
|
+
return facts.find((f) => f.a === targetProperty)?.v;
|
|
216
|
+
}
|
|
217
|
+
function toNumbers(values) {
|
|
218
|
+
const nums = [];
|
|
219
|
+
for (const v of values) {
|
|
220
|
+
if (typeof v === "number" && Number.isFinite(v)) nums.push(v);
|
|
221
|
+
}
|
|
222
|
+
return nums;
|
|
223
|
+
}
|
|
224
|
+
function evaluateRollup(rollup, ctx) {
|
|
225
|
+
const related = collectRollupRelatedIds(rollup, ctx);
|
|
226
|
+
if (rollup.aggregation === "count") {
|
|
227
|
+
return related.length;
|
|
228
|
+
}
|
|
229
|
+
const values = related.map((id) => readTargetValue(ctx.store, id, rollup.targetProperty)).filter((v) => v !== void 0);
|
|
230
|
+
const nums = toNumbers(values);
|
|
231
|
+
if (nums.length === 0) return 0;
|
|
232
|
+
switch (rollup.aggregation) {
|
|
233
|
+
case "sum":
|
|
234
|
+
return nums.reduce((a, b) => a + b, 0);
|
|
235
|
+
case "avg":
|
|
236
|
+
return nums.reduce((a, b) => a + b, 0) / nums.length;
|
|
237
|
+
case "min":
|
|
238
|
+
return Math.min(...nums);
|
|
239
|
+
case "max":
|
|
240
|
+
return Math.max(...nums);
|
|
241
|
+
case "median": {
|
|
242
|
+
const sorted = [...nums].sort((a, b) => a - b);
|
|
243
|
+
const mid = Math.floor(sorted.length / 2);
|
|
244
|
+
return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
|
|
245
|
+
}
|
|
246
|
+
case "mode": {
|
|
247
|
+
const freq = /* @__PURE__ */ new Map();
|
|
248
|
+
for (const n of nums) freq.set(n, (freq.get(n) ?? 0) + 1);
|
|
249
|
+
let best = nums[0];
|
|
250
|
+
let bestCount = 0;
|
|
251
|
+
for (const [n, c] of freq) {
|
|
252
|
+
if (c > bestCount) {
|
|
253
|
+
best = n;
|
|
254
|
+
bestCount = c;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return best;
|
|
258
|
+
}
|
|
259
|
+
default:
|
|
260
|
+
return 0;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
function projectRelationFields(binding, schema, store, entityId) {
|
|
264
|
+
for (const field of schema.fields) {
|
|
265
|
+
if (field.valueType !== "relation" || field.name in binding) continue;
|
|
266
|
+
const links = store.getLinksByEntityAndAttribute(entityId, field.name);
|
|
267
|
+
if (links.length === 0) continue;
|
|
268
|
+
const cardinality = field.relation?.cardinality ?? "many";
|
|
269
|
+
if (cardinality === "one") {
|
|
270
|
+
binding[field.name] = links[0].e2;
|
|
271
|
+
} else {
|
|
272
|
+
binding[field.name] = links.map((l) => l.e2).join(",");
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// src/core/kernel/logic-middleware.ts
|
|
278
|
+
function createLogicMiddleware(config) {
|
|
279
|
+
return {
|
|
280
|
+
name: "logic-computation",
|
|
281
|
+
handleQuery(query, ctx, next) {
|
|
282
|
+
const result = next(query);
|
|
283
|
+
if (result && Array.isArray(result.bindings)) {
|
|
284
|
+
const store = resolveStore(config, ctx);
|
|
285
|
+
for (const binding of result.bindings) {
|
|
286
|
+
enrichBinding(binding, config, store);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return result;
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
function resolveStore(config, ctx) {
|
|
294
|
+
if (config.getStore) return config.getStore();
|
|
295
|
+
return ctx.store;
|
|
296
|
+
}
|
|
297
|
+
function enrichBinding(binding, config, store) {
|
|
298
|
+
const row = binding;
|
|
299
|
+
const type = resolveEntityType(binding, config);
|
|
300
|
+
if (!type) return;
|
|
301
|
+
const schema = config.ontologies.get(type);
|
|
302
|
+
if (!schema) return;
|
|
303
|
+
const entityId = findEntityId(binding);
|
|
304
|
+
if (store && entityId) {
|
|
305
|
+
projectRelationFields(binding, schema, store, entityId);
|
|
306
|
+
}
|
|
307
|
+
for (const field of schema.fields) {
|
|
308
|
+
if (!(field.computed || field.formula || field.rollup || field.aiGenerated))
|
|
309
|
+
continue;
|
|
310
|
+
const fieldName = field.name;
|
|
311
|
+
if (fieldName in binding) continue;
|
|
312
|
+
if (field.formula) {
|
|
313
|
+
binding[fieldName] = evalExpr(field.formula, row);
|
|
314
|
+
}
|
|
315
|
+
if (field.rollup && store && entityId) {
|
|
316
|
+
binding[fieldName] = evaluateRollup(field.rollup, {
|
|
317
|
+
store,
|
|
318
|
+
entityId,
|
|
319
|
+
schema,
|
|
320
|
+
getEntityType: config.getEntityType
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
if (field.aiGenerated && config.generateAiField) {
|
|
324
|
+
const prompt = field.aiGenerated.prompt.replace(
|
|
325
|
+
/\{\{(\w+)\}\}/g,
|
|
326
|
+
(_, key) => String(row[key] ?? "")
|
|
327
|
+
);
|
|
328
|
+
config.generateAiField(prompt, row).then((value) => {
|
|
329
|
+
binding[fieldName] = value;
|
|
330
|
+
}).catch(() => {
|
|
331
|
+
binding[fieldName] = "";
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function resolveEntityType(binding, config) {
|
|
337
|
+
const explicit = binding.type;
|
|
338
|
+
if (typeof explicit === "string" && explicit.length > 0) return explicit;
|
|
339
|
+
const entityId = findEntityId(binding);
|
|
340
|
+
if (entityId && config.getEntityType) {
|
|
341
|
+
return config.getEntityType(entityId);
|
|
342
|
+
}
|
|
343
|
+
return void 0;
|
|
344
|
+
}
|
|
345
|
+
function findEntityId(binding) {
|
|
346
|
+
for (const value of Object.values(binding)) {
|
|
347
|
+
if (typeof value === "string" && value.includes(":")) return value;
|
|
348
|
+
}
|
|
349
|
+
return void 0;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// src/core/kernel/boot-middleware.ts
|
|
353
|
+
function buildOntologyIndex(schemas) {
|
|
354
|
+
const map = /* @__PURE__ */ new Map();
|
|
355
|
+
for (const schema of schemas) {
|
|
356
|
+
map.set(schema["@id"], schema);
|
|
357
|
+
const short = schema["@id"].includes(":") ? schema["@id"].split(":").pop() : schema["@id"];
|
|
358
|
+
if (short) {
|
|
359
|
+
map.set(short, schema);
|
|
360
|
+
map.set(short.toLowerCase(), schema);
|
|
361
|
+
}
|
|
362
|
+
if (schema.label) {
|
|
363
|
+
map.set(schema.label, schema);
|
|
364
|
+
map.set(schema.label.toLowerCase(), schema);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return map;
|
|
368
|
+
}
|
|
369
|
+
function attachStandardMiddleware(kernel) {
|
|
370
|
+
kernel.removeMiddleware("logic-computation");
|
|
371
|
+
const ontologies = buildOntologyIndex(kernel.listOntologies());
|
|
372
|
+
kernel.addMiddleware(
|
|
373
|
+
createLogicMiddleware({
|
|
374
|
+
ontologies,
|
|
375
|
+
getStore: () => kernel.getStore(),
|
|
376
|
+
getEntityType: (entityId) => kernel.getEntity(entityId)?.type
|
|
377
|
+
})
|
|
378
|
+
);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
export {
|
|
382
|
+
ExprEvaluator,
|
|
383
|
+
evalExpr,
|
|
384
|
+
collectRollupRelatedIds,
|
|
385
|
+
evaluateRollup,
|
|
386
|
+
projectRelationFields,
|
|
387
|
+
createLogicMiddleware,
|
|
388
|
+
buildOntologyIndex,
|
|
389
|
+
attachStandardMiddleware
|
|
390
|
+
};
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import {
|
|
2
|
+
inferProjectContext,
|
|
3
|
+
init_infer,
|
|
4
|
+
init_profile,
|
|
5
|
+
init_write,
|
|
6
|
+
loadProfile
|
|
7
|
+
} from "./chunk-QERIS7QY.js";
|
|
8
|
+
|
|
9
|
+
// src/scaffold/seed.ts
|
|
10
|
+
init_profile();
|
|
11
|
+
init_infer();
|
|
12
|
+
import { existsSync, writeFileSync } from "fs";
|
|
13
|
+
import { join } from "path";
|
|
14
|
+
async function seedContext(opts) {
|
|
15
|
+
const { rootPath, ide = "none", force = false } = opts;
|
|
16
|
+
const filesUpdated = [];
|
|
17
|
+
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
18
|
+
const profile = loadProfile();
|
|
19
|
+
const context = await inferProjectContext(rootPath);
|
|
20
|
+
const agentsDir = join(rootPath, ".trellis", "agents");
|
|
21
|
+
if (existsSync(agentsDir)) {
|
|
22
|
+
const agentsMdPath = join(agentsDir, "AGENTS.md");
|
|
23
|
+
if (existsSync(agentsMdPath) || force) {
|
|
24
|
+
const content = renderSeedAgentsMd(profile, context, timestamp);
|
|
25
|
+
writeFileSync(agentsMdPath, content, "utf-8");
|
|
26
|
+
filesUpdated.push(".trellis/agents/AGENTS.md");
|
|
27
|
+
}
|
|
28
|
+
const agentContextPath = join(agentsDir, "agent-context.json");
|
|
29
|
+
if (existsSync(agentContextPath) || force) {
|
|
30
|
+
const config = {
|
|
31
|
+
domain: context.domain,
|
|
32
|
+
ecosystem: context.ecosystem,
|
|
33
|
+
tools: [],
|
|
34
|
+
ontologies: [],
|
|
35
|
+
generatedAt: timestamp,
|
|
36
|
+
confidence: context.confidence,
|
|
37
|
+
lastSeed: timestamp
|
|
38
|
+
};
|
|
39
|
+
writeFileSync(
|
|
40
|
+
agentContextPath,
|
|
41
|
+
JSON.stringify(config, null, 2),
|
|
42
|
+
"utf-8"
|
|
43
|
+
);
|
|
44
|
+
filesUpdated.push(".trellis/agents/agent-context.json");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
switch (ide) {
|
|
48
|
+
case "cursor": {
|
|
49
|
+
const cursorRulesPath = join(rootPath, ".cursor", "rules.md");
|
|
50
|
+
if (existsSync(cursorRulesPath) || force) {
|
|
51
|
+
const content = renderSeedIdeRules(profile, context, "cursor", timestamp);
|
|
52
|
+
writeFileSync(cursorRulesPath, content, "utf-8");
|
|
53
|
+
filesUpdated.push(".cursor/rules.md");
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case "windsurf": {
|
|
58
|
+
const windsurfRulesPath = join(rootPath, ".windsurf", "rules.md");
|
|
59
|
+
if (existsSync(windsurfRulesPath) || force) {
|
|
60
|
+
const content = renderSeedIdeRules(profile, context, "windsurf", timestamp);
|
|
61
|
+
writeFileSync(windsurfRulesPath, content, "utf-8");
|
|
62
|
+
filesUpdated.push(".windsurf/rules.md");
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case "claude": {
|
|
67
|
+
const claudeSettingsPath = join(rootPath, ".claude", "settings.md");
|
|
68
|
+
if (existsSync(claudeSettingsPath) || force) {
|
|
69
|
+
const content = renderSeedIdeRules(profile, context, "claude", timestamp);
|
|
70
|
+
writeFileSync(claudeSettingsPath, content, "utf-8");
|
|
71
|
+
filesUpdated.push(".claude/settings.md");
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case "none":
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
filesUpdated,
|
|
81
|
+
timestamp
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function renderSeedAgentsMd(profile, context, timestamp) {
|
|
85
|
+
const userName = profile?.name ?? "the user";
|
|
86
|
+
const userBio = profile?.bio ?? "(not provided)";
|
|
87
|
+
const userSkills = profile?.skills?.length ? profile.skills.join(", ") : "(not specified)";
|
|
88
|
+
return `# Trellis Agent Context
|
|
89
|
+
|
|
90
|
+
> This file was seeded by \`trellis seed\` on ${timestamp}
|
|
91
|
+
> Inference confidence: **${context.confidence}**
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## About the User
|
|
96
|
+
|
|
97
|
+
| Field | Value |
|
|
98
|
+
|-------|-------|
|
|
99
|
+
| **Name** | ${userName} |
|
|
100
|
+
| **Bio** | ${userBio} |
|
|
101
|
+
| **Skills** | ${userSkills} |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## About This Project
|
|
106
|
+
|
|
107
|
+
| Field | Value |
|
|
108
|
+
|-------|-------|
|
|
109
|
+
| **Name** | ${context.name ?? "(unnamed)"} |
|
|
110
|
+
| **Domain** | ${context.domain ?? "(not determined)"} |
|
|
111
|
+
| **Description** | ${context.description ?? "(no description found)"} |
|
|
112
|
+
| **Ecosystem** | ${context.ecosystem ?? "unknown"} |
|
|
113
|
+
| **File count** | ~${context.fileCount} |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Agent Instructions
|
|
118
|
+
|
|
119
|
+
You are operating in a Trellis-tracked repository. Follow these guidelines:
|
|
120
|
+
|
|
121
|
+
1. **Read \`agent-context.json\`** in this directory for registered tools, ontologies, and domain settings.
|
|
122
|
+
2. **Check \`skills/\`** for domain-specific operating instructions relevant to this project.
|
|
123
|
+
3. **Check \`workflows/\`** for repeatable task procedures.
|
|
124
|
+
4. **Run \`trellis seed\`** to refresh this context file when the project evolves.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Quick Reference
|
|
129
|
+
|
|
130
|
+
\`\`\`bash
|
|
131
|
+
trellis status # Current repo state
|
|
132
|
+
trellis log # Causal operation history
|
|
133
|
+
trellis seed # Refresh this context
|
|
134
|
+
trellis milestone # Create narrative checkpoints
|
|
135
|
+
\`\`\`
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
function renderSeedIdeRules(profile, context, ide, timestamp) {
|
|
139
|
+
const ideName = ide.charAt(0).toUpperCase() + ide.slice(1);
|
|
140
|
+
const projectName = context.name ?? "this project";
|
|
141
|
+
return `# ${ideName} Rules for ${projectName}
|
|
142
|
+
|
|
143
|
+
> Generated by \`trellis seed\` on ${timestamp}
|
|
144
|
+
|
|
145
|
+
## Project Context
|
|
146
|
+
- **Domain**: ${context.domain ?? "(not determined)"}
|
|
147
|
+
- **Ecosystem**: ${context.ecosystem ?? "unknown"}
|
|
148
|
+
- **File count**: ~${context.fileCount}
|
|
149
|
+
- **Confidence**: ${context.confidence}
|
|
150
|
+
|
|
151
|
+
## Agent Instructions
|
|
152
|
+
You are working in a Trellis-tracked repository. See \`.trellis/agents/AGENTS.md\` for full context.
|
|
153
|
+
|
|
154
|
+
## Commands
|
|
155
|
+
- \`trellis status\` \u2014 Check repo state
|
|
156
|
+
- \`trellis seed\` \u2014 Refresh this context file
|
|
157
|
+
- \`trellis log\` \u2014 View causal history
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
*Auto-generated by Trellis. Run \`trellis seed\` to refresh context.*
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// src/scaffold/index.ts
|
|
165
|
+
init_infer();
|
|
166
|
+
init_profile();
|
|
167
|
+
init_write();
|
|
168
|
+
|
|
169
|
+
export {
|
|
170
|
+
seedContext
|
|
171
|
+
};
|