@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
@@ -0,0 +1,104 @@
1
+ import { tool } from "ai";
2
+ import { z } from "zod";
3
+
4
+ import type { AgentRuntime } from "../runtime/agent-runtime.js";
5
+ import {
6
+ DISCOVER_TOOL_DESCRIPTION,
7
+ PLASM_CONTEXT_TOOL_DESCRIPTION,
8
+ PLASM_RUN_TOOL_DESCRIPTION,
9
+ PLASM_TOOL_DESCRIPTION,
10
+ } from "./descriptions.js";
11
+
12
+ const seedSchema = z.object({
13
+ api: z.string().describe("Registry entry_id / catalog api"),
14
+ entity: z.string().describe("CGS entity name from discovery or prior knowledge"),
15
+ });
16
+
17
+ export function createPlasmTools(runtime: AgentRuntime) {
18
+ return {
19
+ discover_capabilities: tool({
20
+ description: DISCOVER_TOOL_DESCRIPTION,
21
+ inputSchema: z.object({
22
+ intent: z
23
+ .string()
24
+ .min(1)
25
+ .describe(
26
+ "One plain-language task description for the whole user goal. Returns catalog api/entity picks — not program symbols.",
27
+ ),
28
+ }),
29
+ execute: async ({ intent }) => runtime.discoverCapabilities({ intent }),
30
+ }),
31
+
32
+ plasm_context: tool({
33
+ description: PLASM_CONTEXT_TOOL_DESCRIPTION,
34
+ inputSchema: z.object({
35
+ intent: z
36
+ .string()
37
+ .min(1)
38
+ .describe(
39
+ "Stable string for one user goal (same value every turn for that goal — do not rotate per message).",
40
+ ),
41
+ seeds: z
42
+ .array(seedSchema)
43
+ .min(1)
44
+ .describe("Non-empty array of {api, entity} capability picks"),
45
+ ranked_capabilities: z
46
+ .array(z.string())
47
+ .nullable()
48
+ .optional()
49
+ .describe(
50
+ "Optional capability wire names from discover_capabilities. Omit on expand; null or [] clears.",
51
+ ),
52
+ }),
53
+ execute: async ({ intent, seeds, ranked_capabilities }) =>
54
+ runtime.plasmContext({
55
+ intent,
56
+ seeds,
57
+ rankedCapabilities: ranked_capabilities,
58
+ }),
59
+ }),
60
+
61
+ plasm: tool({
62
+ description: PLASM_TOOL_DESCRIPTION,
63
+ inputSchema: z.object({
64
+ logical_session_ref: z
65
+ .string()
66
+ .describe("Same logical_session_ref returned by plasm_context"),
67
+ program: z
68
+ .string()
69
+ .min(1)
70
+ .describe("Plasm source program using e#/m#/p#/r# from the session teaching TSV"),
71
+ reasoning: z
72
+ .string()
73
+ .optional()
74
+ .describe("Optional short note explaining the intent of this call"),
75
+ }),
76
+ execute: async ({ logical_session_ref, program, reasoning }) =>
77
+ runtime.plasm({ logicalSessionRef: logical_session_ref, program, reasoning }),
78
+ }),
79
+
80
+ plasm_run: tool({
81
+ description: PLASM_RUN_TOOL_DESCRIPTION,
82
+ inputSchema: z.object({
83
+ logical_session_ref: z
84
+ .string()
85
+ .describe("Same logical_session_ref returned by plasm_context"),
86
+ plan_commit_ref: z
87
+ .string()
88
+ .describe("Executable plan token (pcN) from a prior plasm dry-run"),
89
+ reasoning: z
90
+ .string()
91
+ .optional()
92
+ .describe("Optional short note explaining the intent of this call"),
93
+ }),
94
+ execute: async ({ logical_session_ref, plan_commit_ref, reasoning }) =>
95
+ runtime.plasmRun({
96
+ logicalSessionRef: logical_session_ref,
97
+ planCommitRef: plan_commit_ref,
98
+ reasoning,
99
+ }),
100
+ }),
101
+ };
102
+ }
103
+
104
+ export type PlasmTools = ReturnType<typeof createPlasmTools>;
@@ -0,0 +1,52 @@
1
+ import type { AgentWorkflowDefinition } from "../define-agent.js";
2
+
3
+ export type WorkflowWorldType = "local" | "postgres" | "vercel";
4
+
5
+ export function resolveWorkflowWorldType(
6
+ definition?: AgentWorkflowDefinition,
7
+ ): WorkflowWorldType {
8
+ const fromDef = definition?.world?.type;
9
+ if (fromDef === "local" || fromDef === "postgres" || fromDef === "vercel") {
10
+ return fromDef;
11
+ }
12
+ const env = process.env.PLASM_WORKFLOW_WORLD?.trim().toLowerCase();
13
+ if (env === "local" || env === "postgres" || env === "vercel") {
14
+ return env;
15
+ }
16
+ if (process.env.VERCEL === "1") return "vercel";
17
+ return "local";
18
+ }
19
+
20
+ /**
21
+ * Bootstrap Workflow SDK world from agent definition.
22
+ * - `vercel`: platform-managed world on deploy (no-op here)
23
+ * - `postgres`: `@workflow/world-postgres` long-lived worker
24
+ * - `local`: `@workflow/world-local` for dev
25
+ */
26
+ export async function bootstrapWorkflowWorld(
27
+ definition?: AgentWorkflowDefinition,
28
+ ): Promise<WorkflowWorldType> {
29
+ const worldType = resolveWorkflowWorldType(definition);
30
+ if (worldType === "vercel") {
31
+ return worldType;
32
+ }
33
+
34
+ if (worldType === "postgres") {
35
+ process.env.WORKFLOW_TARGET_WORLD ??= "@workflow/world-postgres";
36
+ process.env.WORKFLOW_POSTGRES_URL ??=
37
+ process.env.DATABASE_URL?.trim() ||
38
+ process.env.PLASM_STATE_POSTGRES_URL?.trim();
39
+ } else {
40
+ process.env.WORKFLOW_TARGET_WORLD ??= "@workflow/world-local";
41
+ }
42
+
43
+ try {
44
+ const { getWorld } = await import("workflow/runtime");
45
+ const world = getWorld();
46
+ await world.start?.();
47
+ } catch (err) {
48
+ if (process.env.PLASM_WORKFLOW_STRICT === "1") throw err;
49
+ }
50
+
51
+ return worldType;
52
+ }