@plasm_lang/vercel-agent 0.3.63

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.
Files changed (121) hide show
  1. package/README.md +235 -0
  2. package/agent/.plasm/archives/runs/runs/pr2d5c4a99707b4c19b650553d50229a1d600d28e3d98a9c58f18e5026cecc86ca.json +64 -0
  3. package/agent/.plasm/archives/runs/runs/pr2e0c0d8ad443c63c82da7435ee1a002b0e0fa718b640263c0a9d3e6e5944812f.json +64 -0
  4. package/agent/.plasm/archives/runs/runs/pr2faedb8354f40ee6d828e3af07b421fda9ccda973a4f7347fce3639f03a0a869.json +64 -0
  5. package/agent/.plasm/archives/runs/runs/pr586b47c55547b0702c572bce4255558b22dbe5e682d6359169577e0ea75fe98f.json +64 -0
  6. package/agent/.plasm/archives/runs/runs/pr76212356445e3b00fcf256835aaec18bac68576324b90d0be92d47f0b4a862a7.json +56 -0
  7. package/agent/.plasm/archives/runs/runs/pr9ec805d689e00db9270a9539858f2fb7216c24acbfea943d450e37b641149da1.json +64 -0
  8. package/agent/.plasm/archives/runs/runs/prc3c0c4ba2e28fc94ed6d37b6796e277a7997d9cb3184640d14c35c98bc6d136f.json +64 -0
  9. package/agent/.plasm/archives/runs/runs/prf04de32522f2fdcb17818907d91bccce7dcaecbd1259041cc448d447b6993244.json +64 -0
  10. package/agent/.plasm/archives/traces/traces/local/00000000000000000000000000000000/records.ndjson +1 -0
  11. package/agent/.plasm/archives/traces/traces/local/00000000000000000000000000000000/summary.json +13 -0
  12. package/agent/.plasm/discovery/manifest.json +126 -0
  13. package/agent/.plasm/sessions/TGlzdCBwcm9kdWN0cyBmcm9tIHRoZSBleGVjdXRlX3RpbnkgY2F0YWxvZw.json +44 -0
  14. package/agent/.plasm/sessions/TGlzdCBwcm9kdWN0cyBmcm9tIHRoZSBleGVjdXRlX3RpbnkgY2F0YWxvZw.teaching.tsv +23 -0
  15. package/agent/.plasm/sessions/bGlzdCBleGVjdXRlX3RpbnkgcHJvZHVjdHM.json +151 -0
  16. package/agent/.plasm/sessions/bGlzdCBleGVjdXRlX3RpbnkgcHJvZHVjdHM.teaching.tsv +131 -0
  17. package/agent/.plasm/sessions/bGlzdCBleGVjdXRlX3RpbnkgcHJvZHVjdHMgYXN5bmMgdHJhbnNwb3J0.json +44 -0
  18. package/agent/.plasm/sessions/bGlzdCBleGVjdXRlX3RpbnkgcHJvZHVjdHMgYXN5bmMgdHJhbnNwb3J0.teaching.tsv +23 -0
  19. package/agent/.plasm/stubs/.gitkeep +0 -0
  20. package/agent/.plasm/stubs/execute_tiny.ts +107 -0
  21. package/agent/agent.ts +52 -0
  22. package/agent/catalogs/README.md +15 -0
  23. package/agent/channels/.gitkeep +0 -0
  24. package/agent/channels/execute-tiny-webhook.ts +59 -0
  25. package/agent/channels/health.ts +16 -0
  26. package/agent/hooks/.gitkeep +0 -0
  27. package/agent/hooks/trace-log.ts +10 -0
  28. package/agent/instructions.md +25 -0
  29. package/agent/schedules/.gitkeep +0 -0
  30. package/agent/schedules/ping.ts +13 -0
  31. package/agent/skills/.gitkeep +0 -0
  32. package/agent/skills/plasm-authoring.md +8 -0
  33. package/agent/subagents/.gitkeep +0 -0
  34. package/agent/subagents/tiny/agent.ts +28 -0
  35. package/bin/plasm-agent.mjs +18 -0
  36. package/package.json +77 -0
  37. package/scripts/plasm-node.mjs +19 -0
  38. package/scripts/resolve-ts-extension.mjs +18 -0
  39. package/src/archive/adapters.ts +27 -0
  40. package/src/archive/index.ts +99 -0
  41. package/src/archive/local-run-archive.ts +90 -0
  42. package/src/archive/local-trace-archive.ts +91 -0
  43. package/src/archive/paths.ts +15 -0
  44. package/src/archive/postgres-kv-adapter.ts +72 -0
  45. package/src/archive/prod-archive-store.ts +143 -0
  46. package/src/archive/resolve-backend.ts +60 -0
  47. package/src/archive/run-id.ts +23 -0
  48. package/src/archive/types.ts +75 -0
  49. package/src/archive/vercel-blob-adapter.ts +21 -0
  50. package/src/archive/vercel-kv-adapter.ts +24 -0
  51. package/src/authoring/channel-dispatch.ts +44 -0
  52. package/src/authoring/context.ts +34 -0
  53. package/src/authoring/define-channel.ts +83 -0
  54. package/src/authoring/define-hook.ts +51 -0
  55. package/src/authoring/define-schedule.ts +64 -0
  56. package/src/authoring/define-skill.ts +38 -0
  57. package/src/authoring/hook-runner.ts +18 -0
  58. package/src/authoring/schedule-manager.ts +118 -0
  59. package/src/authoring/slot-loader.ts +253 -0
  60. package/src/authoring/subagent-loader.ts +121 -0
  61. package/src/catalog/loader.ts +71 -0
  62. package/src/cli/build.ts +54 -0
  63. package/src/cli/dev.ts +60 -0
  64. package/src/cli/info.ts +12 -0
  65. package/src/cli/init.ts +372 -0
  66. package/src/cli/link.ts +68 -0
  67. package/src/cli/project-root.ts +57 -0
  68. package/src/define-agent.ts +150 -0
  69. package/src/dev/client/ansi.ts +36 -0
  70. package/src/dev/client/http-session.ts +180 -0
  71. package/src/dev/client/repl.ts +92 -0
  72. package/src/dev/client/slash.ts +119 -0
  73. package/src/dev/dev-session.ts +153 -0
  74. package/src/dev/http.ts +29 -0
  75. package/src/dev/server.ts +147 -0
  76. package/src/dev/session-routes.ts +185 -0
  77. package/src/discovery/project-walker.ts +272 -0
  78. package/src/engine/connect-auth.ts +135 -0
  79. package/src/engine/create-host-transport.ts +7 -0
  80. package/src/engine/fixture-mock-transport.ts +54 -0
  81. package/src/engine/host-transport-bridge.ts +32 -0
  82. package/src/engine/host-transport.ts +84 -0
  83. package/src/engine/napi-binding.ts +265 -0
  84. package/src/evals/define-eval.ts +56 -0
  85. package/src/evals/run-eval.ts +136 -0
  86. package/src/gateway-model.ts +43 -0
  87. package/src/index.ts +296 -0
  88. package/src/instrumentation.ts +56 -0
  89. package/src/load-env.ts +63 -0
  90. package/src/operator/routes.ts +287 -0
  91. package/src/operator/types.ts +63 -0
  92. package/src/operator/ui-shell.ts +134 -0
  93. package/src/project-info.ts +229 -0
  94. package/src/runtime/agent-runtime.ts +469 -0
  95. package/src/runtime/compaction.ts +81 -0
  96. package/src/runtime/logical-session.ts +72 -0
  97. package/src/runtime/plasm-agent.ts +199 -0
  98. package/src/server/plasm-handler.ts +331 -0
  99. package/src/session-state.ts +135 -0
  100. package/src/state/define-state.ts +57 -0
  101. package/src/state/fs-state-adapter.ts +72 -0
  102. package/src/state/kv-state-adapter.ts +62 -0
  103. package/src/state/postgres-state-adapter.ts +116 -0
  104. package/src/stubs/capability-invoke-shape.ts +135 -0
  105. package/src/stubs/catalog-client.ts +170 -0
  106. package/src/stubs/catalog-hash.ts +11 -0
  107. package/src/stubs/catalog-introspection.ts +121 -0
  108. package/src/stubs/cgs-ts-types.ts +164 -0
  109. package/src/stubs/domain-parser.ts +203 -0
  110. package/src/stubs/generator.ts +390 -0
  111. package/src/stubs/input-type-to-ts.ts +233 -0
  112. package/src/stubs/plasm-value-emitter.ts +162 -0
  113. package/src/stubs/program-builder.ts +82 -0
  114. package/src/stubs/stub-symbols.ts +89 -0
  115. package/src/symbol-registry.ts +74 -0
  116. package/src/telemetry/plasm-spans.ts +83 -0
  117. package/src/tools/descriptions.ts +94 -0
  118. package/src/tools/format.ts +29 -0
  119. package/src/tools/harness-tools.ts +65 -0
  120. package/src/tools/plasm-tools.ts +104 -0
  121. package/src/workflow/world-bootstrap.ts +52 -0
package/README.md ADDED
@@ -0,0 +1,235 @@
1
+ # @plasm_lang/vercel-agent
2
+
3
+ Catalog-native TypeScript agent framework for plasm-oss. Capability is authored once as **CGS/CML catalogs**; the framework projects two surfaces from that single source:
4
+
5
+ - **Model surface** — Plasm language tools (`discover` → `plasm_context` → `plasm` → `plasm_run`) with teaching TSV in tool results
6
+ - **Code surface** — generated TypeScript stubs under `agent/.plasm/stubs/` (CGS-typed params + return types; `npm run build:stubs`)
7
+
8
+ There is **no `tools/` directory**. See the architecture plan (`.cursor/plans/eve_plasm_language_layer_*.plan.md` in the parent monorepo) for full thesis.
9
+
10
+ ## Layout
11
+
12
+ ```
13
+ packages/plasm-agent/
14
+ src/ # framework library
15
+ agent/ # example / template agent project
16
+ agent.ts # model + runtime config (AI Gateway slugs)
17
+ instructions.md # always-on system prompt
18
+ catalogs/ # authored domain.yaml + mappings.yaml
19
+ .plasm/stubs/ # generated TS clients (build artifact)
20
+ skills/ channels/ schedules/ subagents/ hooks/
21
+ evals/ # native eval harness (*.eval.ts)
22
+ ```
23
+
24
+ ## Core modules
25
+
26
+ | Module | Role |
27
+ |--------|------|
28
+ | `runtime/plasm-agent.ts` | `PlasmAgent` — AI SDK `generateText` tool loop, AI Gateway model slug, OTEL |
29
+ | `tools/plasm-tools.ts` | Four MCP-shaped language tools (Zod + `tool()`) |
30
+ | `runtime/agent-runtime.ts` | Engine + session orchestration for tool handlers |
31
+ | `session-state.ts` | Durable session mirror (`agent/.plasm/sessions/`, teaching.tsv) |
32
+ | `symbol-registry.ts` | Agent-global monotonic `e#/m#/p#/r#` mirror |
33
+ | `catalog/loader.ts` | Filesystem catalog discovery |
34
+ | `engine/napi-binding.ts` | `NapiPlasmEngine` / `StubPlasmEngine` |
35
+ | `instrumentation.ts` | `@ai-sdk/otel` on every model call |
36
+ | `operator/routes.ts` | Nitro operator stubs |
37
+
38
+ ## Tool loop (production-shaped)
39
+
40
+ MCP parity, Vercel AI SDK v6:
41
+
42
+ ```
43
+ discover_capabilities → plasm_context → plasm → plasm_run
44
+ ```
45
+
46
+ - Teaching TSV returned as **tool result markdown** (history-resident)
47
+ - Stable `intent` per goal → deterministic `logical_session_ref` (`l_<token>`)
48
+ - `plasm` dry-run registers `pcN` in the NAPI engine; `plasm_run` validates it
49
+ - **Live HTTP execute** still requires `HostTransportFn` (Vercel Connect) — next phase
50
+
51
+ ```ts
52
+ import { PlasmAgent } from "@plasm_lang/vercel-agent";
53
+ import { createPlasmAgent } from "@plasm_lang/vercel-agent/agent";
54
+
55
+ const agent = await createPlasmAgent();
56
+ const result = await agent.generate("List products and summarize");
57
+ console.log(result.text);
58
+ ```
59
+
60
+ ```bash
61
+ PLASM_AGENT_MODEL=anthropic/claude-sonnet-4.6 npm run agent -- "list products"
62
+ ```
63
+
64
+ ## Engine
65
+
66
+ Rust **plasm-core / plasm-agent-core / plasm-runtime** via NAPI (`@plasm_lang/engine`).
67
+
68
+ ```bash
69
+ # Build native addon (required for NAPI mode)
70
+ cd packages/plasm-engine && npm install && npm run build
71
+
72
+ cd ../plasm-agent && npm install
73
+ ```
74
+
75
+ `createEngine()` loads `@plasm_lang/engine` when the `.node` binary is present; otherwise falls back to `StubPlasmEngine`.
76
+
77
+ | Class | Role |
78
+ |-------|------|
79
+ | `NapiPlasmEngine` | `loadCatalog`, `discover`, `exposeSeeds`, `dryRun` → `pcN`, `runPlan` (validates `pcN`) |
80
+ | `StubPlasmEngine` | Placeholder when native binding unavailable |
81
+
82
+ **Host transport:** env bearer → Vercel Connect `getToken()` → `fetch`. Fixture mock when `PLASM_AGENT_MOCK_HTTP=1` or no bearer and no connector configured.
83
+
84
+ ## Phased next steps
85
+
86
+ 1. ~~**NAPI binding crate**~~ — `plasm-node` + `@plasm_lang/engine`
87
+ 2. ~~**AI SDK tool loop**~~ — four language tools + `PlasmAgent` + session persistence
88
+ 3. ~~**Live execute**~~ — Promise host transport + Connect broker
89
+ 4. ~~**Prod durability**~~ — `defineState` (fs/kv/postgres) + Blob/KV archive adapters + Workflow bootstrap
90
+ 5. ~~**TS stub generator**~~ — CGS introspection + deterministic `e#` programs
91
+ 6. ~~**eve devx scaffold**~~ — `defineChannel` / `defineSchedule` / `defineHook` / `defineSkill` loaders, hot-reload dev server, native `evals/`, **`plasm-agent` CLI** (`init` / `info` / `link` / `build` / `dev`), session SSE
92
+ 7. ~~**Terminal client**~~ — TypeScript TUI over `/plasm/v1/session` + stream (`plasm-agent dev` TTY, `plasm-agent chat`)
93
+ 8. **Operator UI** — React panes (plan-ui / run-explorer embed)
94
+ 9. **Channels (Connect)** — `authorization.required` stream events
95
+
96
+ ## Storage (`defineState` + archives)
97
+
98
+ | Concern | Dev (`fs`) | Prod |
99
+ |---------|------------|------|
100
+ | Sessions / symbols | `agent/.plasm/` | `PLASM_STATE_BACKEND=kv` or `postgres` |
101
+ | Run/trace archives | local dirs | `BLOB_READ_WRITE_TOKEN` + `KV_REST_API_*` |
102
+
103
+ See **Connect / state / archive env** below.
104
+
105
+ Parent monorepo references:
106
+
107
+ - [docs/oss-core-trace-artifacts.md](../../../docs/oss-core-trace-artifacts.md) — local trace/run archive env vars
108
+ - [docs/oss-core-ui-surface.md](../../../docs/oss-core-ui-surface.md) — OSS HTTP surfaces the operator UI can proxy
109
+
110
+ ## Operator UI
111
+
112
+ Route stubs under `src/operator/routes.ts` (`GET /operator/catalogs`, `/sessions`, `/plans`, `/runs`, `/traces`, `/archives`). Mount via Nitro:
113
+
114
+ ```ts
115
+ import { nitroOperatorHandler } from "@plasm_lang/vercel-agent/operator";
116
+
117
+ export default nitroOperatorHandler({ agentRoot: "./agent" });
118
+ ```
119
+
120
+ Full UI is out of scope for this scaffold; reuse patterns from `apps/plan-ui/` and `apps/run-explorer-ui/` in the parent monorepo where appropriate.
121
+
122
+ ## CLI (`plasm-agent`)
123
+
124
+ TypeScript bootstrap for this framework — **not** the Rust `plasm-server` Ratatui TUI.
125
+
126
+ ```bash
127
+ npm run plasm-agent -- init ./my-agent # scaffold agent/, catalogs/, evals/
128
+ npm run plasm-agent -- info [--json] # project + stub diagnostics
129
+ npm run plasm-agent -- link # vercel link + env pull (AI Gateway key)
130
+ npm run plasm-agent -- build # stubs + agent/.plasm/discovery/manifest.json
131
+ npm run plasm-agent -- dev [--no-tui] # server + TUI when TTY
132
+ npm run plasm-agent -- chat --url URL # attach to running server
133
+ ```
134
+
135
+ Installed globally or via `npx`: `plasm-agent <command>` (bin entry in package.json).
136
+
137
+ ## Scripts
138
+
139
+ ```bash
140
+ cd packages/plasm-agent
141
+ npm install
142
+ npm run build:stubs
143
+ npm run typecheck
144
+ npm run dev # hot-reload dev server + operator + channel routes
145
+ npm run eval # live LLM evals (AI Gateway required)
146
+ npm run eval:catalog # plasm-eval bridge (OPENROUTER_API_KEY)
147
+ npm run smoke:hot-reload
148
+ npm run smoke:sessions
149
+ npm run smoke:tui-async
150
+ npm run smoke:stubs
151
+ npm run smoke:stubs:matrix
152
+ npm run agent -- "your prompt" # requires AI_GATEWAY_API_KEY (Vercel AI Gateway)
153
+ ```
154
+
155
+ ### Dev server (`npm run dev` / `plasm-agent dev`)
156
+
157
+ When stdin is a TTY, `plasm-agent dev` starts the server **and** opens an interactive terminal client (eve-style). Use `--no-tui` or `PLASM_DEV_NO_TUI=1` for headless mode. Attach later with `plasm-agent chat --url http://127.0.0.1:3000`.
158
+
159
+ Slash commands in the TUI: `/help`, `/info`, `/model`, `/channels`, `/catalogs`, `/new`, `/quit`.
160
+
161
+ - `GET /plasm/v1/info` — discovery + `loadedSlots` summary (`dev` field for routes/model)
162
+ - `POST /plasm/v1/session` — agent turn; `wait: false` returns 202 immediately (attach SSE)
163
+ - `POST /plasm/v1/session/:id` — continue (requires `continuationToken` + `message`)
164
+ - `GET /plasm/v1/session/:id/stream` — SSE (`turn:start`, `turn:step`, `turn:finish` / `turn:error`)
165
+ - `GET /operator` — read-only operator shell
166
+ - Channel routes from `agent/channels/*.ts` (e.g. `GET /channel/health`, `POST /channel/execute-tiny/products`)
167
+
168
+ Hot reload watches `catalogs/`, `skills/`, `channels/`, `schedules/`, `hooks/`, and `instructions.md`.
169
+
170
+ ### Authoring slots
171
+
172
+ | Slot | Helper | Notes |
173
+ |------|--------|-------|
174
+ | `skills/` | markdown or `defineSkill()` | Progressive index + `read_skill` tool (`experimental.skills: "inline"` for full inject) |
175
+ | `channels/` | `defineChannel()` | HTTP ingress; call stubs, not `plasm_context` |
176
+ | `schedules/` | `defineSchedule()` | Dev: `*/N * * * *` timers; prod: `GET /internal/cron/:name` + Vercel Cron manifest in `/plasm/v1/info` |
177
+ | `hooks/` | `defineHook()` | `agent:start`, `plan:commit`, `run:complete`, … |
178
+ | `subagents/` | `defineAgent()` in `subagents/<name>/agent.ts` | `delegate_subagent` harness tool |
179
+
180
+ ### Evals
181
+
182
+ **`npm run eval`** — live LLM evals only (requires `AI_GATEWAY_API_KEY`). Fixture-only tool-chain evals were removed.
183
+
184
+ **`npm run eval:catalog`** — bridge to `plasm-eval` + `apis/<api>/eval/cases.yaml` (OpenRouter + BAML expression eval).
185
+
186
+ ### Vercel AI Gateway (local + deploy)
187
+
188
+ This framework uses the [Vercel AI SDK `gateway()`](https://ai-sdk.dev/providers/ai-sdk-providers/ai-gateway) provider only — no direct OpenRouter/OpenAI keys in the agent layer.
189
+
190
+ 1. **Vercel team billing** — AI Gateway returns `customer_verification_required` until a valid payment method is on the team. Add a card under [Vercel → AI](https://vercel.com/docs/ai-gateway) (unlocks free credits).
191
+ 2. **API key** — Vercel dashboard → **AI** → **Gateway** → **API Keys** → create key.
192
+ 3. **Local env** — put in `plasm-oss/.env` (shell `export` lines are supported):
193
+
194
+ ```bash
195
+ export AI_GATEWAY_API_KEY=vck_...
196
+ ```
197
+
198
+ Aliases `AI_API_GATEWAY_KEY` / `AI_GATEWAY_KEY` are mapped automatically. Or link the project and run `vercel env pull .env.local`.
199
+ 4. **Run:**
200
+
201
+ ```bash
202
+ npm run smoke:tools
203
+ npm run smoke:async-transport
204
+ npm run agent -- "list products from execute_tiny"
205
+ ```
206
+
207
+ ### Vercel Connect (outbound catalog HTTP)
208
+
209
+ ```bash
210
+ export PLASM_CONNECTOR_<ENTRY>=provider/connector-uid # e.g. PLASM_CONNECTOR_GITHUB
211
+ export PLASM_CONNECT_SUBJECT_TYPE=app # or user + PLASM_CONNECT_USER_ID
212
+ # Local: vercel link && vercel env pull → VERCEL_OIDC_TOKEN
213
+ ```
214
+
215
+ ### Production state + Workflow
216
+
217
+ ```bash
218
+ export PLASM_STATE_BACKEND=kv|postgres|fs
219
+ export PLASM_ARCHIVE_BACKEND=vercel|postgres|local
220
+ export BLOB_READ_WRITE_TOKEN=...
221
+ export KV_REST_API_URL=...
222
+ export KV_REST_API_TOKEN=...
223
+
224
+ # Workflow (agent.ts experimental.workflow.world.type)
225
+ export PLASM_WORKFLOW_WORLD=postgres
226
+ export WORKFLOW_POSTGRES_URL=postgres://...
227
+ ```
228
+
229
+ **Prod fallback (future):** sidecar `plasm-server` accepting resolved plans over HTTP `/execute`.
230
+
231
+ ## Open decisions
232
+
233
+ - ~~Package publish name~~ — **`@plasm_lang/vercel-agent`** (resolved)
234
+ - Prod execution default: force-bundled NAPI vs Vercel Rust Function sidecar
235
+ - Catalog wire format: raw YAML vs precompiled `catalog.cgs.json` IR at build time
@@ -0,0 +1,64 @@
1
+ {
2
+ "run_id": "pr2d5c4a99707b4c19b650553d50229a1d600d28e3d98a9c58f18e5026cecc86ca",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_ckAW2uHtX26s8qO9v7kcOQ",
7
+ "intent": "list execute_tiny products",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\tcategory_id\np1\tWidget\tc1\n```\n",
10
+ "results": [
11
+ {
12
+ "category_id": "c1",
13
+ "id": "p1",
14
+ "name": "Widget"
15
+ }
16
+ ],
17
+ "_meta": {
18
+ "plasm": {
19
+ "steps": [
20
+ {
21
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
22
+ "artifact_uri": "plasm://r/1",
23
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
24
+ "column_schema": {
25
+ "columns": [
26
+ {
27
+ "kind": "field",
28
+ "name": "id",
29
+ "wire_type": "string"
30
+ },
31
+ {
32
+ "kind": "field",
33
+ "name": "name",
34
+ "wire_type": "string"
35
+ },
36
+ {
37
+ "kind": "field",
38
+ "name": "category_id",
39
+ "wire_type": "entity_ref"
40
+ }
41
+ ],
42
+ "entity_type": "Product",
43
+ "entry_id": "execute_tiny"
44
+ },
45
+ "display": "Query(Product all) cap=product_list",
46
+ "node_id": "return_1",
47
+ "request_fingerprints": [
48
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
49
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
50
+ ],
51
+ "return_label": "return_1",
52
+ "row_count": 1,
53
+ "run_id": "pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
54
+ "run_step": 1
55
+ }
56
+ ],
57
+ "request_fingerprints": [
58
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
59
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
60
+ ]
61
+ }
62
+ },
63
+ "archived_at": "2026-06-21T16:53:54.793Z"
64
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "run_id": "pr2e0c0d8ad443c63c82da7435ee1a002b0e0fa718b640263c0a9d3e6e5944812f",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_ckAW2uHtX26s8qO9v7kcOQ",
7
+ "intent": "list execute_tiny products",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\tcategory_id\np1\tWidget\tc1\n```\n",
10
+ "results": [
11
+ {
12
+ "category_id": "c1",
13
+ "id": "p1",
14
+ "name": "Widget"
15
+ }
16
+ ],
17
+ "_meta": {
18
+ "plasm": {
19
+ "steps": [
20
+ {
21
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
22
+ "artifact_uri": "plasm://r/1",
23
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
24
+ "column_schema": {
25
+ "columns": [
26
+ {
27
+ "kind": "field",
28
+ "name": "id",
29
+ "wire_type": "string"
30
+ },
31
+ {
32
+ "kind": "field",
33
+ "name": "name",
34
+ "wire_type": "string"
35
+ },
36
+ {
37
+ "kind": "field",
38
+ "name": "category_id",
39
+ "wire_type": "entity_ref"
40
+ }
41
+ ],
42
+ "entity_type": "Product",
43
+ "entry_id": "execute_tiny"
44
+ },
45
+ "display": "Query(Product all) cap=product_list",
46
+ "node_id": "return_1",
47
+ "request_fingerprints": [
48
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
49
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
50
+ ],
51
+ "return_label": "return_1",
52
+ "row_count": 1,
53
+ "run_id": "pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
54
+ "run_step": 1
55
+ }
56
+ ],
57
+ "request_fingerprints": [
58
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
59
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
60
+ ]
61
+ }
62
+ },
63
+ "archived_at": "2026-06-21T16:32:16.250Z"
64
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "run_id": "pr2faedb8354f40ee6d828e3af07b421fda9ccda973a4f7347fce3639f03a0a869",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_ckAW2uHtX26s8qO9v7kcOQ",
7
+ "intent": "list execute_tiny products",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\tcategory_id\np1\tWidget\tc1\n```\n",
10
+ "results": [
11
+ {
12
+ "category_id": "c1",
13
+ "id": "p1",
14
+ "name": "Widget"
15
+ }
16
+ ],
17
+ "_meta": {
18
+ "plasm": {
19
+ "steps": [
20
+ {
21
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
22
+ "artifact_uri": "plasm://r/1",
23
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
24
+ "column_schema": {
25
+ "columns": [
26
+ {
27
+ "kind": "field",
28
+ "name": "id",
29
+ "wire_type": "string"
30
+ },
31
+ {
32
+ "kind": "field",
33
+ "name": "name",
34
+ "wire_type": "string"
35
+ },
36
+ {
37
+ "kind": "field",
38
+ "name": "category_id",
39
+ "wire_type": "entity_ref"
40
+ }
41
+ ],
42
+ "entity_type": "Product",
43
+ "entry_id": "execute_tiny"
44
+ },
45
+ "display": "Query(Product all) cap=product_list",
46
+ "node_id": "return_1",
47
+ "request_fingerprints": [
48
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
49
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
50
+ ],
51
+ "return_label": "return_1",
52
+ "row_count": 1,
53
+ "run_id": "pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
54
+ "run_step": 1
55
+ }
56
+ ],
57
+ "request_fingerprints": [
58
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
59
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
60
+ ]
61
+ }
62
+ },
63
+ "archived_at": "2026-06-21T16:37:13.073Z"
64
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "run_id": "pr586b47c55547b0702c572bce4255558b22dbe5e682d6359169577e0ea75fe98f",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_HfEmAKdjUTqgzZdXHWtTLg",
7
+ "intent": "list execute_tiny products async transport",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\tcategory_id\np1\tWidget\tc1\n```\n",
10
+ "results": [
11
+ {
12
+ "category_id": "c1",
13
+ "id": "p1",
14
+ "name": "Widget"
15
+ }
16
+ ],
17
+ "_meta": {
18
+ "plasm": {
19
+ "steps": [
20
+ {
21
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
22
+ "artifact_uri": "plasm://r/1",
23
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
24
+ "column_schema": {
25
+ "columns": [
26
+ {
27
+ "kind": "field",
28
+ "name": "id",
29
+ "wire_type": "string"
30
+ },
31
+ {
32
+ "kind": "field",
33
+ "name": "name",
34
+ "wire_type": "string"
35
+ },
36
+ {
37
+ "kind": "field",
38
+ "name": "category_id",
39
+ "wire_type": "entity_ref"
40
+ }
41
+ ],
42
+ "entity_type": "Product",
43
+ "entry_id": "execute_tiny"
44
+ },
45
+ "display": "Query(Product all) cap=product_list",
46
+ "node_id": "return_1",
47
+ "request_fingerprints": [
48
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
49
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
50
+ ],
51
+ "return_label": "return_1",
52
+ "row_count": 1,
53
+ "run_id": "pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
54
+ "run_step": 1
55
+ }
56
+ ],
57
+ "request_fingerprints": [
58
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
59
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
60
+ ]
61
+ }
62
+ },
63
+ "archived_at": "2026-06-21T16:37:13.423Z"
64
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "run_id": "pr76212356445e3b00fcf256835aaec18bac68576324b90d0be92d47f0b4a862a7",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_IqBV8aJcW1OgFiGUTvJzVg",
7
+ "intent": "List products from the execute_tiny catalog",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\np1\tWidget\n```\n",
10
+ "results": [
11
+ {
12
+ "id": "p1",
13
+ "name": "Widget"
14
+ }
15
+ ],
16
+ "_meta": {
17
+ "plasm": {
18
+ "steps": [
19
+ {
20
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr10e73bfbb267c52eb4a712839bbbbfdd27d9620b498654885cda683f36f4f584",
21
+ "artifact_uri": "plasm://r/2",
22
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr10e73bfbb267c52eb4a712839bbbbfdd27d9620b498654885cda683f36f4f584",
23
+ "column_schema": {
24
+ "columns": [
25
+ {
26
+ "kind": "field",
27
+ "name": "id",
28
+ "wire_type": "string"
29
+ },
30
+ {
31
+ "kind": "field",
32
+ "name": "name",
33
+ "wire_type": "string"
34
+ }
35
+ ],
36
+ "entity_type": "Product",
37
+ "entry_id": "execute_tiny"
38
+ },
39
+ "display": "plan.compute(return_1)",
40
+ "node_id": "return_1",
41
+ "request_fingerprints": [
42
+ "plan-compute:6056f27fd7a062a84d059e22048a7e27c6d33059fa71af44bd210c05e3300370"
43
+ ],
44
+ "return_label": "return_1",
45
+ "row_count": 1,
46
+ "run_id": "pr10e73bfbb267c52eb4a712839bbbbfdd27d9620b498654885cda683f36f4f584",
47
+ "run_step": 1
48
+ }
49
+ ],
50
+ "request_fingerprints": [
51
+ "plan-compute:6056f27fd7a062a84d059e22048a7e27c6d33059fa71af44bd210c05e3300370"
52
+ ]
53
+ }
54
+ },
55
+ "archived_at": "2026-06-21T16:32:33.480Z"
56
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "run_id": "pr9ec805d689e00db9270a9539858f2fb7216c24acbfea943d450e37b641149da1",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_ckAW2uHtX26s8qO9v7kcOQ",
7
+ "intent": "list execute_tiny products",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\tcategory_id\np1\tWidget\tc1\n```\n",
10
+ "results": [
11
+ {
12
+ "category_id": "c1",
13
+ "id": "p1",
14
+ "name": "Widget"
15
+ }
16
+ ],
17
+ "_meta": {
18
+ "plasm": {
19
+ "steps": [
20
+ {
21
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
22
+ "artifact_uri": "plasm://r/1",
23
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
24
+ "column_schema": {
25
+ "columns": [
26
+ {
27
+ "kind": "field",
28
+ "name": "id",
29
+ "wire_type": "string"
30
+ },
31
+ {
32
+ "kind": "field",
33
+ "name": "name",
34
+ "wire_type": "string"
35
+ },
36
+ {
37
+ "kind": "field",
38
+ "name": "category_id",
39
+ "wire_type": "entity_ref"
40
+ }
41
+ ],
42
+ "entity_type": "Product",
43
+ "entry_id": "execute_tiny"
44
+ },
45
+ "display": "Query(Product all) cap=product_list",
46
+ "node_id": "return_1",
47
+ "request_fingerprints": [
48
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
49
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
50
+ ],
51
+ "return_label": "return_1",
52
+ "row_count": 1,
53
+ "run_id": "pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
54
+ "run_step": 1
55
+ }
56
+ ],
57
+ "request_fingerprints": [
58
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
59
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
60
+ ]
61
+ }
62
+ },
63
+ "archived_at": "2026-06-21T18:46:29.552Z"
64
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "run_id": "prc3c0c4ba2e28fc94ed6d37b6796e277a7997d9cb3184640d14c35c98bc6d136f",
3
+ "plan_commit_ref": "pc0",
4
+ "catalog_cgs_hash": "unknown",
5
+ "entry_id": "execute_tiny",
6
+ "logical_session_ref": "l_HfEmAKdjUTqgzZdXHWtTLg",
7
+ "intent": "list execute_tiny products async transport",
8
+ "ok": true,
9
+ "message": "## return_1 (1 rows)\n\n```tsv\nid\tname\tcategory_id\np1\tWidget\tc1\n```\n",
10
+ "results": [
11
+ {
12
+ "category_id": "c1",
13
+ "id": "p1",
14
+ "name": "Widget"
15
+ }
16
+ ],
17
+ "_meta": {
18
+ "plasm": {
19
+ "steps": [
20
+ {
21
+ "artifact_path": "/execute/plasm_node/agent/artifacts/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
22
+ "artifact_uri": "plasm://r/1",
23
+ "canonical_artifact_uri": "plasm://execute/plasm_node/agent/run/pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
24
+ "column_schema": {
25
+ "columns": [
26
+ {
27
+ "kind": "field",
28
+ "name": "id",
29
+ "wire_type": "string"
30
+ },
31
+ {
32
+ "kind": "field",
33
+ "name": "name",
34
+ "wire_type": "string"
35
+ },
36
+ {
37
+ "kind": "field",
38
+ "name": "category_id",
39
+ "wire_type": "entity_ref"
40
+ }
41
+ ],
42
+ "entity_type": "Product",
43
+ "entry_id": "execute_tiny"
44
+ },
45
+ "display": "Query(Product all) cap=product_list",
46
+ "node_id": "return_1",
47
+ "request_fingerprints": [
48
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
49
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
50
+ ],
51
+ "return_label": "return_1",
52
+ "row_count": 1,
53
+ "run_id": "pr618fa533cbea0347b2851027f5f8c10ba0e917720f1092e10ef883317588e747",
54
+ "run_step": 1
55
+ }
56
+ ],
57
+ "request_fingerprints": [
58
+ "82a7cf2c3c0a53508da7d4ecdfc7bb81bbbe64f4f97aaadf5cc3ecf37eab2eeb",
59
+ "ae0d94da47e504b2d3366a4ae791d69911d1611f1f6fdb7266bc8d088f949b8e"
60
+ ]
61
+ }
62
+ },
63
+ "archived_at": "2026-06-21T16:53:55.895Z"
64
+ }