trellis
Version:
Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications
476 lines • 19.3 kB
JSON
{
"name": "trellis",
"version": "4.0.0",
"description": "Agentic State Engine \u2014 event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications",
"type": "module",
"main": "./dist/index.js",
"author": "Trent Brew <tbrew@turtle.tech>",
"license": "AGPL-3.0-or-later",
"repository": {
"type": "git",
"url": "https://github.com/trentbrew/trellis.git"
},
"homepage": "https://github.com/trentbrew/trellis#readme",
"keywords": [
"vcs",
"version-control",
"graph",
"eav",
"semantic",
"ast",
"wiki-links",
"embeddings",
"knowledge-graph",
"decision-traces",
"collaboration",
"sync",
"causal"
],
"engines": {
"node": ">=20.0.0"
},
"bin": {
"trellis": "./bin/trellis.mjs"
},
"exports": {
".": {
"types": "./dist/index.d.ts",
"bun": "./dist/index.js",
"browser": "./dist/browser/index.js",
"import": "./dist/index.js"
},
"./core": {
"types": "./dist/core/index.d.ts",
"bun": "./dist/core/index.js",
"import": "./dist/core/index.js"
},
"./vcs": {
"types": "./dist/vcs/index.d.ts",
"bun": "./dist/vcs/index.js",
"import": "./dist/vcs/index.js"
},
"./sync": {
"types": "./dist/sync/index.d.ts",
"bun": "./dist/sync/index.js",
"import": "./dist/sync/index.js"
},
"./realtime": {
"types": "./dist/realtime/index.d.ts",
"svelte": "./dist/realtime/index.js",
"browser": "./dist/realtime/index.js",
"bun": "./dist/realtime/index.js",
"import": "./dist/realtime/index.js",
"default": "./dist/realtime/index.js"
},
"./ai": {
"types": "./dist/embeddings/index.d.ts",
"bun": "./dist/embeddings/index.js",
"import": "./dist/embeddings/index.js"
},
"./links": {
"types": "./dist/links/index.d.ts",
"bun": "./dist/links/index.js",
"import": "./dist/links/index.js"
},
"./cms": {
"types": "./dist/cms/index.d.ts",
"bun": "./dist/cms/index.js",
"import": "./dist/cms/index.js"
},
"./decisions": {
"types": "./dist/decisions/index.d.ts",
"bun": "./dist/decisions/index.js",
"import": "./dist/decisions/index.js"
},
"./server": {
"types": "./dist/server/index.d.ts",
"bun": "./dist/server/index.js",
"import": "./dist/server/index.js"
},
"./client": {
"types": "./dist/client/index.d.ts",
"svelte": "./dist/client/index.browser.js",
"browser": "./dist/client/index.browser.js",
"bun": "./dist/client/index.js",
"import": "./dist/client/index.js",
"default": "./dist/client/index.js"
},
"./client/sdk": {
"types": "./dist/client/sdk.d.ts",
"svelte": "./dist/client/sdk.browser.js",
"browser": "./dist/client/sdk.browser.js",
"import": "./dist/client/sdk.js",
"default": "./dist/client/sdk.js"
},
"./browser": {
"types": "./dist/browser/index.d.ts",
"svelte": "./dist/browser/index.js",
"browser": "./dist/browser/index.js",
"import": "./dist/browser/index.js",
"default": "./dist/browser/index.js"
},
"./schema": {
"types": "./dist/schema/index.d.ts",
"svelte": "./dist/schema/index.js",
"browser": "./dist/schema/index.js",
"bun": "./dist/schema/index.js",
"import": "./dist/schema/index.js",
"default": "./dist/schema/index.js"
},
"./forms": {
"types": "./dist/forms/index.d.ts",
"svelte": "./dist/forms/index.js",
"browser": "./dist/forms/index.js",
"bun": "./dist/forms/index.js",
"import": "./dist/forms/index.js",
"default": "./dist/forms/index.js"
},
"./forms/core": {
"types": "./dist/forms/core/index.d.ts",
"svelte": "./dist/forms/core/index.js",
"browser": "./dist/forms/core/index.js",
"import": "./dist/forms/core/index.js",
"default": "./dist/forms/core/index.js"
},
"./forms/react": {
"types": "./dist/forms/react/index.d.ts",
"import": "./dist/forms/react/index.js",
"default": "./dist/forms/react/index.js"
},
"./forms/vue": {
"types": "./dist/forms/vue/index.d.ts",
"import": "./dist/forms/vue/index.js",
"default": "./dist/forms/vue/index.js"
},
"./forms/svelte": {
"types": "./dist/forms/svelte/index.d.ts",
"svelte": "./dist/forms/svelte/index.js",
"import": "./dist/forms/svelte/index.js",
"default": "./dist/forms/svelte/index.js"
},
"./forms/vanilla": {
"types": "./dist/forms/vanilla/index.d.ts",
"import": "./dist/forms/vanilla/index.js",
"default": "./dist/forms/vanilla/index.js"
},
"./headless": {
"types": "./dist/headless/index.d.ts",
"svelte": "./dist/headless/index.js",
"browser": "./dist/headless/index.js",
"bun": "./dist/headless/index.js",
"import": "./dist/headless/index.js",
"default": "./dist/headless/index.js"
},
"./palette": {
"types": "./dist/palette/index.d.ts",
"svelte": "./dist/palette/index.js",
"browser": "./dist/palette/index.js",
"bun": "./dist/palette/index.js",
"import": "./dist/palette/index.js",
"default": "./dist/palette/index.js"
},
"./palette/core": {
"types": "./dist/palette/core/index.d.ts",
"svelte": "./dist/palette/core/index.js",
"browser": "./dist/palette/core/index.js",
"import": "./dist/palette/core/index.js",
"default": "./dist/palette/core/index.js"
},
"./palette/react": {
"types": "./dist/palette/react/index.d.ts",
"import": "./dist/palette/react/index.js",
"default": "./dist/palette/react/index.js"
},
"./palette/vue": {
"types": "./dist/palette/vue/index.d.ts",
"import": "./dist/palette/vue/index.js",
"default": "./dist/palette/vue/index.js"
},
"./palette/svelte": {
"types": "./dist/palette/svelte/index.d.ts",
"svelte": "./dist/palette/svelte/index.js",
"import": "./dist/palette/svelte/index.js",
"default": "./dist/palette/svelte/index.js"
},
"./palette/vanilla": {
"types": "./dist/palette/vanilla/index.d.ts",
"import": "./dist/palette/vanilla/index.js",
"default": "./dist/palette/vanilla/index.js"
},
"./dialog": {
"types": "./dist/dialog/index.d.ts",
"svelte": "./dist/dialog/index.js",
"browser": "./dist/dialog/index.js",
"bun": "./dist/dialog/index.js",
"import": "./dist/dialog/index.js",
"default": "./dist/dialog/index.js"
},
"./dialog/core": {
"types": "./dist/dialog/core/index.d.ts",
"svelte": "./dist/dialog/core/index.js",
"browser": "./dist/dialog/core/index.js",
"import": "./dist/dialog/core/index.js",
"default": "./dist/dialog/core/index.js"
},
"./dialog/react": {
"types": "./dist/dialog/react/index.d.ts",
"import": "./dist/dialog/react/index.js",
"default": "./dist/dialog/react/index.js"
},
"./dialog/vue": {
"types": "./dist/dialog/vue/index.d.ts",
"import": "./dist/dialog/vue/index.js",
"default": "./dist/dialog/vue/index.js"
},
"./dialog/svelte": {
"types": "./dist/dialog/svelte/index.d.ts",
"svelte": "./dist/dialog/svelte/index.js",
"import": "./dist/dialog/svelte/index.js",
"default": "./dist/dialog/svelte/index.js"
},
"./dialog/vanilla": {
"types": "./dist/dialog/vanilla/index.d.ts",
"import": "./dist/dialog/vanilla/index.js",
"default": "./dist/dialog/vanilla/index.js"
},
"./timeline": {
"types": "./dist/timeline/index.d.ts",
"svelte": "./dist/timeline/index.js",
"browser": "./dist/timeline/index.js",
"bun": "./dist/timeline/index.js",
"import": "./dist/timeline/index.js",
"default": "./dist/timeline/index.js"
},
"./timeline/core": {
"types": "./dist/timeline/core/index.d.ts",
"svelte": "./dist/timeline/core/index.js",
"browser": "./dist/timeline/core/index.js",
"import": "./dist/timeline/core/index.js",
"default": "./dist/timeline/core/index.js"
},
"./timeline/react": {
"types": "./dist/timeline/react/index.d.ts",
"import": "./dist/timeline/react/index.js",
"default": "./dist/timeline/react/index.js"
},
"./timeline/vue": {
"types": "./dist/timeline/vue/index.d.ts",
"import": "./dist/timeline/vue/index.js",
"default": "./dist/timeline/vue/index.js"
},
"./timeline/svelte": {
"types": "./dist/timeline/svelte/index.d.ts",
"svelte": "./dist/timeline/svelte/index.js",
"import": "./dist/timeline/svelte/index.js",
"default": "./dist/timeline/svelte/index.js"
},
"./timeline/vanilla": {
"types": "./dist/timeline/vanilla/index.d.ts",
"import": "./dist/timeline/vanilla/index.js",
"default": "./dist/timeline/vanilla/index.js"
},
"./combobox": {
"types": "./dist/combobox/index.d.ts",
"svelte": "./dist/combobox/index.js",
"browser": "./dist/combobox/index.js",
"bun": "./dist/combobox/index.js",
"import": "./dist/combobox/index.js",
"default": "./dist/combobox/index.js"
},
"./combobox/core": {
"types": "./dist/combobox/core/index.d.ts",
"svelte": "./dist/combobox/core/index.js",
"browser": "./dist/combobox/core/index.js",
"import": "./dist/combobox/core/index.js",
"default": "./dist/combobox/core/index.js"
},
"./combobox/react": {
"types": "./dist/combobox/react/index.d.ts",
"import": "./dist/combobox/react/index.js",
"default": "./dist/combobox/react/index.js"
},
"./combobox/vue": {
"types": "./dist/combobox/vue/index.d.ts",
"import": "./dist/combobox/vue/index.js",
"default": "./dist/combobox/vue/index.js"
},
"./combobox/svelte": {
"types": "./dist/combobox/svelte/index.d.ts",
"svelte": "./dist/combobox/svelte/index.js",
"import": "./dist/combobox/svelte/index.js",
"default": "./dist/combobox/svelte/index.js"
},
"./combobox/vanilla": {
"types": "./dist/combobox/vanilla/index.d.ts",
"import": "./dist/combobox/vanilla/index.js",
"default": "./dist/combobox/vanilla/index.js"
},
"./react": {
"types": "./dist/react/index.d.ts",
"svelte": "./dist/react/index.js",
"browser": "./dist/react/index.js",
"import": "./dist/react/index.js",
"default": "./dist/react/index.js"
},
"./react/realtime": {
"types": "./dist/react/realtime.d.ts",
"svelte": "./dist/react/realtime.js",
"browser": "./dist/react/realtime.js",
"import": "./dist/react/realtime.js",
"default": "./dist/react/realtime.js"
},
"./react/typed": {
"types": "./dist/react/schema-hooks.d.ts",
"svelte": "./dist/react/schema-hooks.js",
"browser": "./dist/react/schema-hooks.js",
"import": "./dist/react/schema-hooks.js",
"default": "./dist/react/schema-hooks.js"
},
"./vue": {
"types": "./dist/vue/index.d.ts",
"svelte": "./dist/vue/index.js",
"browser": "./dist/vue/index.js",
"import": "./dist/vue/index.js",
"default": "./dist/vue/index.js"
},
"./vue/typed": {
"types": "./dist/vue/schema-hooks.d.ts",
"svelte": "./dist/vue/schema-hooks.js",
"browser": "./dist/vue/schema-hooks.js",
"import": "./dist/vue/schema-hooks.js",
"default": "./dist/vue/schema-hooks.js"
},
"./svelte": {
"types": "./dist/svelte/index.d.ts",
"svelte": "./dist/svelte/index.js",
"browser": "./dist/svelte/index.js",
"import": "./dist/svelte/index.js",
"default": "./dist/svelte/index.js"
},
"./svelte/typed": {
"types": "./dist/svelte/schema-hooks.d.ts",
"svelte": "./dist/svelte/schema-hooks.js",
"browser": "./dist/svelte/schema-hooks.js",
"import": "./dist/svelte/schema-hooks.js",
"default": "./dist/svelte/schema-hooks.js"
},
"./db": {
"types": "./dist/db/index.d.ts",
"bun": "./dist/db/index.js",
"import": "./dist/db/index.js"
},
"./persist/better-sqlite": {
"types": "./dist/persist/better-sqlite-backend.d.ts",
"import": "./dist/persist/better-sqlite-backend.js"
},
"./persist/sqljs": {
"types": "./dist/persist/sqljs-backend.d.ts",
"import": "./dist/persist/sqljs-backend.js"
},
"./persist/factory": {
"types": "./dist/persist/factory.d.ts",
"import": "./dist/persist/factory.js"
},
"./plugins/plan-approval": {
"types": "./dist/plugins/plan-approval/index.d.ts",
"import": "./dist/plugins/plan-approval/index.js"
},
"./plugins/proactive-watcher": {
"types": "./dist/plugins/proactive-watcher/index.d.ts",
"import": "./dist/plugins/proactive-watcher/index.js"
},
"./plugins/idea-garden": {
"types": "./dist/plugins/idea-garden/index.d.ts",
"import": "./dist/plugins/idea-garden/index.js"
},
"./plugins/agent-memory": {
"types": "./dist/plugins/agent-memory/index.d.ts",
"import": "./dist/plugins/agent-memory/index.js"
},
"./plugins/cron": {
"types": "./dist/plugins/cron/index.d.ts",
"import": "./dist/plugins/cron/index.js"
}
},
"files": [
"dist",
"bin",
"logo.png",
"logo.svg",
"LICENSE",
"CHANGELOG.md",
"README.md"
],
"scripts": {
"dev": "tsx src/index.ts",
"cli": "tsx src/cli/index.ts",
"mcp": "tsx src/mcp/index.ts",
"mcp:docs": "tsx src/mcp/docs.ts",
"build": "rm -rf dist && esbuild src/index.ts src/browser/index.ts src/core/index.ts src/vcs/index.ts src/sync/index.ts src/realtime/index.ts src/embeddings/index.ts src/links/index.ts src/decisions/index.ts src/server/index.ts src/server/deploy.ts src/mcp/gateway-serve.ts src/client/index.ts src/client/index.browser.ts src/client/sdk.ts src/client/sdk.browser.ts src/schema/index.ts src/forms/index.ts src/forms/core/index.ts src/forms/react/index.ts src/forms/vue/index.ts src/forms/svelte/index.ts src/forms/vanilla/index.ts src/headless/index.ts src/palette/index.ts src/palette/core/index.ts src/palette/react/index.ts src/palette/vue/index.ts src/palette/svelte/index.ts src/palette/vanilla/index.ts src/dialog/index.ts src/dialog/core/index.ts src/dialog/react/index.ts src/dialog/vue/index.ts src/dialog/svelte/index.ts src/dialog/vanilla/index.ts src/timeline/index.ts src/timeline/core/index.ts src/timeline/react/index.ts src/timeline/vue/index.ts src/timeline/svelte/index.ts src/timeline/vanilla/index.ts src/combobox/index.ts src/combobox/core/index.ts src/combobox/react/index.ts src/combobox/vue/index.ts src/combobox/svelte/index.ts src/combobox/vanilla/index.ts src/react/index.ts src/react/realtime.ts src/react/schema-hooks.ts src/vue/index.ts src/vue/schema-hooks.ts src/svelte/index.ts src/svelte/schema-hooks.ts src/db/index.ts src/cli/index.ts src/cli/deploy-cli.ts src/cms/index.ts src/core/persist/sqljs-backend.ts src/core/persist/factory.ts src/server/node-adapter.ts src/plugins/plan-approval/index.ts src/plugins/proactive-watcher/index.ts src/plugins/idea-garden/index.ts src/plugins/agent-memory/index.ts src/plugins/cron/index.ts --bundle --outdir=dist --outbase=src --format=esm --splitting --platform=node --external:@xenova/transformers --external:@huggingface/transformers --external:react --external:vue --external:sql.js --external:ws --external:better-sqlite3 --external:bun:sqlite --external:commander --external:chalk --external:@inquirer/prompts --external:zod --external:uqr --external:@number0/iroh && npm run build:realtime-bundle && mkdir -p dist/ui && cp src/ui/client.html dist/ui/client.html && cp src/ui/lanes.html dist/ui/lanes.html && cp src/ui/admin.html dist/ui/admin.html && cp src/ui/admin-datatable.css dist/ui/admin-datatable.css && cp src/ui/logo.png dist/ui/logo.png && mkdir -p dist/ui/theme && cp src/ui/theme/runtime-theme.css dist/ui/theme/runtime-theme.css && cp src/ui/theme/foundation.css dist/ui/theme/foundation.css && cp src/ui/theme/semantic.css dist/ui/theme/semantic.css && cp src/ui/theme/components.css dist/ui/theme/components.css && cp src/ui/tml-lanes.html dist/ui/tml-lanes.html && mkdir -p dist/ui/@trellis.computer/ui/dist && cp node_modules/@trellis.computer/ui/dist/*.mjs dist/ui/@trellis.computer/ui/dist/ && cp node_modules/@trellis.computer/ui/dist/*.js dist/ui/@trellis.computer/ui/dist/ && tsc -p tsconfig.build.json --emitDeclarationOnly --noEmit false --noEmitOnError false && npm run build:inspector",
"build:realtime-bundle": "esbuild src/realtime/index.ts --bundle --format=esm --platform=browser --outfile=dist/realtime.bundle.js && esbuild src/realtime/relay-persistence.ts --bundle --format=esm --platform=node --outfile=dist/realtime/relay-persistence.js",
"build:state-demo-bundle": "esbuild demo/state-demo/entry.ts --bundle --format=esm --platform=browser --outfile=dist/state-demo.bundle.js",
"build:inspector": "vite build --config vite.inspector.config.ts",
"check": "tsc -p tsconfig.build.json --noEmit --pretty false",
"test": "vitest run test/core test/cms test/vcs test/git test/p2 test/p3 test/p4 test/p5 test/p6 test/p7 test/client test/realtime test/schema test/server test/cloud test/engine.test.ts test/cli test/ui",
"test:e2e": "playwright test",
"test:ship": "vitest run test/vcs/init-config-defaults.test.ts test/vcs/phase2-coordination.test.ts test/git/git-sync.test.ts test/ui/lanes-snapshot.test.ts test/engine.test.ts",
"test:all": "vitest run",
"test:wc": "node test/webcontainer/server.mjs",
"prepublishOnly": "npm run test && npm run build",
"smoke:wedge": "esbuild demo/wedge-smoke/gallery.ts --bundle --format=esm --outfile=demo/wedge-smoke/gallery.js --target=es2022"
},
"dependencies": {
"@inquirer/prompts": "^8.2.2",
"@modelcontextprotocol/sdk": "^1.6.0",
"@number0/iroh": "^1.1.0",
"@trellis.computer/ui": "file:../trellis-ui/packages/core",
"chalk": "^5.4.1",
"commander": "^13.1.0",
"opencode-ai": "^1.3.5",
"turtlecode": "0.3.71",
"uqr": "^0.1.3",
"zod": "^3.23.0"
},
"optionalDependencies": {
"@huggingface/transformers": "^3.0.0",
"@xenova/transformers": "^2.17.2",
"sql.js": "^1.14.1",
"ws": "^8.20.1"
},
"peerDependencies": {
"better-sqlite3": "^11.0.0",
"react": ">=18",
"vue": ">=3.3",
"zod": "^3.23.0"
},
"peerDependenciesMeta": {
"better-sqlite3": {
"optional": true
},
"react": {
"optional": true
},
"vue": {
"optional": true
},
"zod": {
"optional": true
}
},
"devDependencies": {
"@playwright/test": "^1.60.0",
"@types/node": "^20.0.0",
"@types/react": "^19.1.2",
"@types/sql.js": "^1.4.11",
"@types/ws": "^8.18.1",
"@vitejs/plugin-vue": "^5.2.3",
"esbuild": "^0.24.0",
"fake-indexeddb": "^6.2.5",
"react": "^19.1.0",
"tsx": "^4.19.0",
"typescript": "^5",
"vite": "^6.3.1",
"vitest": "^2.0.0",
"vue": "^3.5.13"
}
}