UNPKG

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
{ "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" } }