eve 0.45.0 → 0.45.2
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 +21 -0
- package/dist/src/chunks/{use-eve-agent-OtHRoxIS.js → use-eve-agent-BH7Z6SDu.js} +13 -1
- package/dist/src/chunks/{use-eve-agent-C46Kan_I.js → use-eve-agent-DI2j5XK8.js} +13 -1
- package/dist/src/cli/commands/integration-connect.d.ts +2 -0
- package/dist/src/cli/commands/integration-connect.js +1 -1
- package/dist/src/cli/commands/register-integration-commands.js +1 -1
- package/dist/src/client/agent-info-schema.d.ts +191 -2
- package/dist/src/client/agent-info-schema.js +1 -1
- package/dist/src/client/types.d.ts +1 -1
- package/dist/src/compiled/.vendor-stamp.json +2 -1
- package/dist/src/compiled/@vercel/blob/client.d.ts +487 -0
- package/dist/src/compiled/@vercel/blob/create-folder-BM6BTlko.d.ts +471 -0
- package/dist/src/compiled/@vercel/blob/index.d.ts +573 -0
- package/dist/src/compiled/@vercel/blob/index.js +43 -0
- package/dist/src/compiled/@vercel/blob/license.md +201 -0
- package/dist/src/compiler/extension-compatibility.d.ts +4 -4
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/load-binding-namespace.js +1 -1
- package/dist/src/compiler/manifest.d.ts +10 -0
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/model-catalog.d.ts +1 -1
- package/dist/src/compiler/model-catalog.js +1 -1
- package/dist/src/compiler/module-map.js +1 -1
- package/dist/src/compiler/normalize-helpers.d.ts +2 -1
- package/dist/src/compiler/normalize-manifest.js +1 -1
- package/dist/src/compiler/normalize-memory.d.ts +5 -0
- package/dist/src/compiler/normalize-memory.js +1 -0
- package/dist/src/compiler/normalize-tool.js +1 -1
- package/dist/src/compiler/project-sources.d.ts +3 -4
- package/dist/src/compiler/project-sources.js +1 -1
- package/dist/src/compiler/source-graph.d.ts +2 -0
- package/dist/src/compiler/source-graph.js +1 -1
- package/dist/src/compiler/validate-artifact.js +1 -1
- package/dist/src/context/dynamic-tool-lifecycle.d.ts +8 -1
- package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +25 -0
- package/dist/src/context/keys.js +1 -1
- package/dist/src/context/memory-event-lifecycle.d.ts +13 -0
- package/dist/src/context/memory-event-lifecycle.js +1 -0
- package/dist/src/context/memory-lifecycle.d.ts +52 -0
- package/dist/src/context/memory-lifecycle.js +1 -0
- package/dist/src/context/memory-tools.d.ts +12 -0
- package/dist/src/context/memory-tools.js +1 -0
- package/dist/src/discover/discover-agent.js +1 -1
- package/dist/src/discover/discover-subagent.js +1 -1
- package/dist/src/discover/extensions.d.ts +6 -0
- package/dist/src/discover/extensions.js +1 -1
- package/dist/src/discover/filesystem.d.ts +2 -2
- package/dist/src/discover/filesystem.js +1 -1
- package/dist/src/discover/manifest.d.ts +6 -1
- package/dist/src/discover/manifest.js +1 -1
- package/dist/src/discover/memory.d.ts +14 -0
- package/dist/src/discover/memory.js +1 -0
- package/dist/src/discover/project.js +1 -1
- package/dist/src/evals/cli/eval.js +1 -1
- package/dist/src/evals/target.js +1 -1
- package/dist/src/execution/history-view.d.ts +2 -2
- package/dist/src/execution/history-view.js +1 -1
- package/dist/src/execution/tools/connection-search.js +2 -2
- package/dist/src/execution/workflow-steps.d.ts +1 -3
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/framework/sources/modules/memory-wrapper.d.ts +2 -0
- package/dist/src/framework/sources/modules/memory-wrapper.js +1 -0
- package/dist/src/framework/sources/registry.d.ts +1 -0
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/emission.d.ts +1 -1
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/hitl/approval-prompt.d.ts +2 -0
- package/dist/src/harness/hitl/approval-prompt.js +3 -2
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +4 -2
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/memory.d.ts +2 -0
- package/dist/src/internal/authored-definition/memory.js +1 -0
- package/dist/src/internal/authored-definition/schema-backed.d.ts +1 -0
- package/dist/src/internal/authored-definition/schema-backed.js +1 -1
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/dynamic-tool-rebind.d.ts +3 -0
- package/dist/src/internal/dynamic-tool-rebind.js +1 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/index.js +1 -0
- package/dist/src/internal/programmatic-source-loader.d.ts +1 -0
- package/dist/src/internal/programmatic-source-loader.js +1 -1
- package/dist/src/internal/workflow/development-world-server.js +1 -1
- package/dist/src/internal/workflow/local-world-delivery-timeouts.d.ts +7 -0
- package/dist/src/internal/workflow/local-world-delivery-timeouts.js +1 -0
- package/dist/src/public/memory/file/backend.d.ts +37 -0
- package/dist/src/public/memory/file/backend.js +1 -0
- package/dist/src/public/memory/file/backends/default.d.ts +7 -0
- package/dist/src/public/memory/file/backends/default.js +1 -0
- package/dist/src/public/memory/file/backends/in-memory.d.ts +6 -0
- package/dist/src/public/memory/file/backends/in-memory.js +1 -0
- package/dist/src/public/memory/file/backends/lazy.d.ts +3 -0
- package/dist/src/public/memory/file/backends/lazy.js +1 -0
- package/dist/src/public/memory/file/backends/vercel-blob.d.ts +14 -0
- package/dist/src/public/memory/file/backends/vercel-blob.js +1 -0
- package/dist/src/public/memory/file/index.d.ts +3 -0
- package/dist/src/public/memory/file/index.js +1 -0
- package/dist/src/public/memory/file/provider.d.ts +14 -0
- package/dist/src/public/memory/file/provider.js +6 -0
- package/dist/src/public/memory/file/vercel.d.ts +1 -0
- package/dist/src/public/memory/file/vercel.js +1 -0
- package/dist/src/public/memory/index.d.ts +117 -0
- package/dist/src/public/memory/index.js +1 -0
- package/dist/src/public/memory/scope.d.ts +2 -0
- package/dist/src/public/memory/scope.js +1 -0
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/resolve-dynamic-tool.d.ts +1 -0
- package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
- package/dist/src/runtime/resolve-memory.d.ts +4 -0
- package/dist/src/runtime/resolve-memory.js +1 -0
- package/dist/src/runtime/types.d.ts +7 -0
- package/dist/src/setup/connection-connector.d.ts +2 -0
- package/dist/src/setup/connection-connector.js +1 -1
- package/dist/src/setup/integrations/linq/connect.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/scaffold/create/web-template.d.ts +2 -0
- package/dist/src/setup/scaffold/create/web-template.js +28 -0
- package/dist/src/shared/memory-definition.d.ts +2 -0
- package/dist/src/shared/memory-definition.js +1 -0
- package/dist/src/shared/memory-state.d.ts +55 -0
- package/dist/src/shared/memory-state.js +1 -0
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/channels/eve.mdx +1 -1
- package/docs/concepts/context-control.md +7 -0
- package/docs/concepts/default-harness.md +8 -0
- package/docs/concepts/sessions-runs-and-streaming.md +3 -3
- package/docs/concepts/state.md +8 -1
- package/docs/extensions.md +6 -2
- package/docs/guides/client/overview.mdx +2 -2
- package/docs/guides/dynamic-capabilities.md +3 -2
- package/docs/memory.md +320 -0
- package/docs/meta.json +1 -0
- package/docs/patterns/multi-tenant-memory.md +108 -136
- package/docs/reference/typescript-api.md +5 -0
- package/package.json +22 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# eve
|
|
2
2
|
|
|
3
|
+
## 0.45.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 295e534: Add a bounded `fileMemory()` provider with scope-partitioned indexed documents, a 4,000-character recalled-context budget by default, and model-facing save and remove tools. `eve dev` uses shared process-local storage, configured Vercel deployments use Blob, and every other environment requires an explicit backend.
|
|
8
|
+
- 5934d69: Prevent long local Workflow deliveries from timing out and replaying an in-flight turn. Explicit local delivery timeout overrides continue to take precedence.
|
|
9
|
+
- 8d2d91e: GitHub, Linear Agent, and Linq registry items now install Vercel CLI 58.5.1 or newer for guided setup. Linq setup no longer tries to infer CLI compatibility from connector creation errors.
|
|
10
|
+
- 295e534: Upgrade the vendored Vercel Blob SDK to 2.8.0 and copy its upstream TypeScript declarations so blob-backed file memory stays aligned with the installed SDK.
|
|
11
|
+
- 79c5514: Cache AI Gateway model metadata for five minutes and refresh immediately on a cache miss, while continuing to fall back to cached metadata when refreshes fail.
|
|
12
|
+
- 17e37f1: Stop producing AI SDK telemetry spans when `tracePolicy` rejects an agent trace.
|
|
13
|
+
- a5917cd: Identify pending tool approvals as trusted runtime state so newer user messages can revise or supersede them without being mistaken for injected approval text.
|
|
14
|
+
|
|
15
|
+
## 0.45.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- a3a5ddd: Show the eve favicon in browser tabs for the default deployed app and generated Web Chat apps. Web Chat scaffolds also include an Apple touch icon.
|
|
20
|
+
- 5664cc0: Add first-class path-authored memory providers with scoped recall, capture, replayable provider tools, and compaction-safe recalled context.
|
|
21
|
+
- b55d036: Agentcard setup now uses the correct MCP discovery and creation identifiers, then writes the selected connector into the installed connection template.
|
|
22
|
+
- fdba4e0: Scope every extension contribution through one mount-namespace policy so multiple extensions can contribute flat `instructions.md` files without collisions. Extension-owned agent singleton slots such as instrumentation are now rejected during discovery.
|
|
23
|
+
|
|
3
24
|
## 0.45.0
|
|
4
25
|
|
|
5
26
|
### Minor Changes
|
|
@@ -106,8 +106,10 @@ const moduleBacking = z.discriminatedUnion("kind", [z.object({
|
|
|
106
106
|
kind: z.literal("filesystem"),
|
|
107
107
|
sourcePath: z.string()
|
|
108
108
|
}).strict(), z.object({
|
|
109
|
+
dependencies: z.record(z.string(), z.string()).optional(),
|
|
109
110
|
kind: z.literal("programmatic"),
|
|
110
111
|
moduleId: z.string(),
|
|
112
|
+
parameters: z.record(z.string(), z.unknown()).optional(),
|
|
111
113
|
registryId: z.string(),
|
|
112
114
|
revision: z.string(),
|
|
113
115
|
semanticRevision: z.string().optional()
|
|
@@ -241,6 +243,7 @@ const sourceDescriptor = z.object({
|
|
|
241
243
|
kind: z.literal("resource"),
|
|
242
244
|
sourcePath: z.string()
|
|
243
245
|
}).strict()]),
|
|
246
|
+
form: z.enum(["derived", "direct"]),
|
|
244
247
|
layer: z.enum([
|
|
245
248
|
"framework-default",
|
|
246
249
|
"extension-package",
|
|
@@ -271,6 +274,11 @@ const hook = source.extend({
|
|
|
271
274
|
eventNames: z.array(z.string()),
|
|
272
275
|
slug: z.string()
|
|
273
276
|
}).strict();
|
|
277
|
+
const memory = source.extend({
|
|
278
|
+
description: z.string().optional(),
|
|
279
|
+
slot: z.string(),
|
|
280
|
+
visibility: z.enum(["scope", "session"])
|
|
281
|
+
}).strict();
|
|
274
282
|
const sandbox = source.extend({
|
|
275
283
|
backendKind: z.string().optional(),
|
|
276
284
|
description: z.string().optional(),
|
|
@@ -291,6 +299,7 @@ const subagent = entry.extend({
|
|
|
291
299
|
connections: z.number(),
|
|
292
300
|
hooks: z.number(),
|
|
293
301
|
instructions: z.number(),
|
|
302
|
+
memories: z.number(),
|
|
294
303
|
schedules: z.number(),
|
|
295
304
|
skills: z.number(),
|
|
296
305
|
tools: z.number()
|
|
@@ -370,6 +379,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
370
379
|
instrumentation: source.optional(),
|
|
371
380
|
kernelEffects: z.array(kernelEffect),
|
|
372
381
|
kind: z.literal("eve-agent-info"),
|
|
382
|
+
memories: z.array(memory),
|
|
373
383
|
mode: z.enum(["development", "production"]),
|
|
374
384
|
remoteAgents: z.object({
|
|
375
385
|
entries: z.array(remoteAgent),
|
|
@@ -389,7 +399,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
389
399
|
dynamic: z.array(dynamicResolver),
|
|
390
400
|
static: z.array(tool)
|
|
391
401
|
}).strict(),
|
|
392
|
-
version: z.literal(
|
|
402
|
+
version: z.literal(4),
|
|
393
403
|
workflow,
|
|
394
404
|
workspace: z.object({
|
|
395
405
|
resourceRoot: z.unknown(),
|
|
@@ -424,6 +434,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
424
434
|
assertUnique(value.schedules, (entry) => entry.name, ["schedules"]);
|
|
425
435
|
assertUnique(value.connections, (entry) => entry.connectionName, ["connections"]);
|
|
426
436
|
assertUnique(value.hooks, (entry) => entry.slug, ["hooks"]);
|
|
437
|
+
assertUnique(value.memories, (entry) => entry.slot, ["memories"]);
|
|
427
438
|
assertUnique(value.channels.routes, (entry) => `${entry.method} ${normalizeRoutePattern(entry.urlPath)}`, ["channels", "routes"]);
|
|
428
439
|
assertUnique(value.subagents.local, (entry) => entry.nodeId, ["subagents", "local"]);
|
|
429
440
|
assertUnique(value.remoteAgents.entries, (entry) => entry.nodeId, ["remoteAgents", "entries"]);
|
|
@@ -459,6 +470,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
459
470
|
"static",
|
|
460
471
|
index
|
|
461
472
|
]]),
|
|
473
|
+
...value.memories.map((entry, index) => [entry, ["memories", index]]),
|
|
462
474
|
...value.instrumentation === void 0 ? [] : [[value.instrumentation, ["instrumentation"]]],
|
|
463
475
|
...value.remoteAgents.entries.map((entry, index) => [entry, [
|
|
464
476
|
"remoteAgents",
|
|
@@ -106,8 +106,10 @@ const moduleBacking = z.discriminatedUnion("kind", [z.object({
|
|
|
106
106
|
kind: z.literal("filesystem"),
|
|
107
107
|
sourcePath: z.string()
|
|
108
108
|
}).strict(), z.object({
|
|
109
|
+
dependencies: z.record(z.string(), z.string()).optional(),
|
|
109
110
|
kind: z.literal("programmatic"),
|
|
110
111
|
moduleId: z.string(),
|
|
112
|
+
parameters: z.record(z.string(), z.unknown()).optional(),
|
|
111
113
|
registryId: z.string(),
|
|
112
114
|
revision: z.string(),
|
|
113
115
|
semanticRevision: z.string().optional()
|
|
@@ -241,6 +243,7 @@ const sourceDescriptor = z.object({
|
|
|
241
243
|
kind: z.literal("resource"),
|
|
242
244
|
sourcePath: z.string()
|
|
243
245
|
}).strict()]),
|
|
246
|
+
form: z.enum(["derived", "direct"]),
|
|
244
247
|
layer: z.enum([
|
|
245
248
|
"framework-default",
|
|
246
249
|
"extension-package",
|
|
@@ -271,6 +274,11 @@ const hook = source.extend({
|
|
|
271
274
|
eventNames: z.array(z.string()),
|
|
272
275
|
slug: z.string()
|
|
273
276
|
}).strict();
|
|
277
|
+
const memory = source.extend({
|
|
278
|
+
description: z.string().optional(),
|
|
279
|
+
slot: z.string(),
|
|
280
|
+
visibility: z.enum(["scope", "session"])
|
|
281
|
+
}).strict();
|
|
274
282
|
const sandbox = source.extend({
|
|
275
283
|
backendKind: z.string().optional(),
|
|
276
284
|
description: z.string().optional(),
|
|
@@ -291,6 +299,7 @@ const subagent = entry.extend({
|
|
|
291
299
|
connections: z.number(),
|
|
292
300
|
hooks: z.number(),
|
|
293
301
|
instructions: z.number(),
|
|
302
|
+
memories: z.number(),
|
|
294
303
|
schedules: z.number(),
|
|
295
304
|
skills: z.number(),
|
|
296
305
|
tools: z.number()
|
|
@@ -370,6 +379,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
370
379
|
instrumentation: source.optional(),
|
|
371
380
|
kernelEffects: z.array(kernelEffect),
|
|
372
381
|
kind: z.literal("eve-agent-info"),
|
|
382
|
+
memories: z.array(memory),
|
|
373
383
|
mode: z.enum(["development", "production"]),
|
|
374
384
|
remoteAgents: z.object({
|
|
375
385
|
entries: z.array(remoteAgent),
|
|
@@ -389,7 +399,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
389
399
|
dynamic: z.array(dynamicResolver),
|
|
390
400
|
static: z.array(tool)
|
|
391
401
|
}).strict(),
|
|
392
|
-
version: z.literal(
|
|
402
|
+
version: z.literal(4),
|
|
393
403
|
workflow,
|
|
394
404
|
workspace: z.object({
|
|
395
405
|
resourceRoot: z.unknown(),
|
|
@@ -424,6 +434,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
424
434
|
assertUnique(value.schedules, (entry) => entry.name, ["schedules"]);
|
|
425
435
|
assertUnique(value.connections, (entry) => entry.connectionName, ["connections"]);
|
|
426
436
|
assertUnique(value.hooks, (entry) => entry.slug, ["hooks"]);
|
|
437
|
+
assertUnique(value.memories, (entry) => entry.slot, ["memories"]);
|
|
427
438
|
assertUnique(value.channels.routes, (entry) => `${entry.method} ${normalizeRoutePattern(entry.urlPath)}`, ["channels", "routes"]);
|
|
428
439
|
assertUnique(value.subagents.local, (entry) => entry.nodeId, ["subagents", "local"]);
|
|
429
440
|
assertUnique(value.remoteAgents.entries, (entry) => entry.nodeId, ["remoteAgents", "entries"]);
|
|
@@ -459,6 +470,7 @@ const AgentInfoResultSchema = z.object({
|
|
|
459
470
|
"static",
|
|
460
471
|
index
|
|
461
472
|
]]),
|
|
473
|
+
...value.memories.map((entry, index) => [entry, ["memories", index]]),
|
|
462
474
|
...value.instrumentation === void 0 ? [] : [[value.instrumentation, ["instrumentation"]]],
|
|
463
475
|
...value.remoteAgents.entries.map((entry, index) => [entry, [
|
|
464
476
|
"remoteAgents",
|
|
@@ -5,6 +5,8 @@ import { type Prompter } from "#setup/prompter.js";
|
|
|
5
5
|
import { updateConnectionConnectorUid } from "#setup/scaffold/update/update-connection-connector.js";
|
|
6
6
|
import type { RegistryCommandLogger } from "./registry.js";
|
|
7
7
|
export interface IntegrationConnectOptions {
|
|
8
|
+
creationType?: string;
|
|
9
|
+
connectionMethod?: "mcp" | "oauth";
|
|
8
10
|
nonInteractive?: boolean;
|
|
9
11
|
signal?: AbortSignal;
|
|
10
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{serializeHeadlessSetupEvent}from"./setup-headless.js";import{join}from"node:path";import{createPrompter}from"#setup/prompter.js";import{WizardCancelledError}from"#setup/step.js";import{cleanupCreatedConnectionConnector,setupConnectionConnector}from"#setup/connection-connector.js";import{ensureVercelProject}from"#setup/flows/ensure-vercel-project.js";import{createHeadlessPrompter}from"#setup/headless.js";import{SetupPrerequisiteRequired}from"#setup/integrations/shared/prerequisite.js";import{resolveIntegrationVercelProject}from"#setup/integrations/shared/vercel-project.js";import{readProjectLink}from"#setup/project-resolution.js";import{createRegistrySetupClient}from"#setup/registry-setup-client.js";import{updateConnectionConnectorUid}from"#setup/scaffold/update/update-connection-connector.js";const defaultDependencies={ensureVercelProject,readProjectLink,setupConnectionConnector,cleanupCreatedConnectionConnector,updateConnectionConnectorUid};async function runIntegrationConnect(e){let i={...defaultDependencies,...e.dependencies},a=e.options?.nonInteractive===!0,o=i.createPrompter?.()??(a?createHeadlessPrompter(()=>{}):createPrompter()),s=e.options?.signal;o.intro(`Set up ${e.slug}`);let l=await i.readProjectLink(e.appRoot);if(l===void 0)if(a)l=await resolveIntegrationVercelProject({appRoot:e.appRoot,integration:e.slug,signal:s,deps:{readProjectLink:i.readProjectLink}});else try{l=await i.ensureVercelProject({appRoot:e.appRoot,prompter:o,signal:s,teamSelectMessage:()=>`You need to link to a project to use ${e.slug} through Vercel Connect.\n\nSelect your team`,deps:i.ensureVercelProjectDeps})}catch(e){if(e instanceof WizardCancelledError)return;throw e}let u={log:o.log,prompter:o,projectRoot:e.appRoot,slug:e.slug,service:e.service,canonicalConnectorName:e.canonicalConnectorName??e.slug,project:l,signal:s},d=await i.setupConnectionConnector(u),f=join(e.appRoot,`agent`,`connections`,`${e.slug}.ts`);if(!(await i.updateConnectionConnectorUid(f,d.connectorUid)).patched)throw d.kind===`created`&&await i.cleanupCreatedConnectionConnector({log:o.log,projectRoot:e.appRoot,connectorId:d.connectorId,orgId:l.orgId}),Error(`Could not update the connector in agent/connections/${e.slug}.ts.`);o.outro(`Connection ${e.slug} set up.`)}async function runIntegrationConnectCommand(t,r,i,a,o,c={},l=defaultDependencies){let d=createRegistrySetupClient({signal:c.signal});try{await runIntegrationConnect({appRoot:r,slug:i,service:a,canonicalConnectorName:o,options:c,dependencies:{...l,createPrompter:()=>d?.prompter??(c.nonInteractive?createHeadlessPrompter(()=>{}):l.createPrompter?.()??createPrompter())}}),d?.complete()}catch(n){if(d?.fail(n),d!==void 0)return;if(c.nonInteractive&&n instanceof SetupPrerequisiteRequired){t.error(serializeHeadlessSetupEvent({version:1,type:`blocked`,status:`prerequisite_required`,prerequisite:n.prerequisite})),process.exitCode=2;return}t.error(n instanceof Error?n.message:String(n)),process.exitCode=1}}export{runIntegrationConnect,runIntegrationConnectCommand};
|
|
1
|
+
import{serializeHeadlessSetupEvent}from"./setup-headless.js";import{join}from"node:path";import{createPrompter}from"#setup/prompter.js";import{WizardCancelledError}from"#setup/step.js";import{cleanupCreatedConnectionConnector,setupConnectionConnector}from"#setup/connection-connector.js";import{ensureVercelProject}from"#setup/flows/ensure-vercel-project.js";import{createHeadlessPrompter}from"#setup/headless.js";import{SetupPrerequisiteRequired}from"#setup/integrations/shared/prerequisite.js";import{resolveIntegrationVercelProject}from"#setup/integrations/shared/vercel-project.js";import{readProjectLink}from"#setup/project-resolution.js";import{createRegistrySetupClient}from"#setup/registry-setup-client.js";import{updateConnectionConnectorUid}from"#setup/scaffold/update/update-connection-connector.js";const defaultDependencies={ensureVercelProject,readProjectLink,setupConnectionConnector,cleanupCreatedConnectionConnector,updateConnectionConnectorUid};async function runIntegrationConnect(e){let i={...defaultDependencies,...e.dependencies},a=e.options?.nonInteractive===!0,o=i.createPrompter?.()??(a?createHeadlessPrompter(()=>{}):createPrompter()),s=e.options?.signal;o.intro(`Set up ${e.slug}`);let l=await i.readProjectLink(e.appRoot);if(l===void 0)if(a)l=await resolveIntegrationVercelProject({appRoot:e.appRoot,integration:e.slug,signal:s,deps:{readProjectLink:i.readProjectLink}});else try{l=await i.ensureVercelProject({appRoot:e.appRoot,prompter:o,signal:s,teamSelectMessage:()=>`You need to link to a project to use ${e.slug} through Vercel Connect.\n\nSelect your team`,deps:i.ensureVercelProjectDeps})}catch(e){if(e instanceof WizardCancelledError)return;throw e}let u={log:o.log,prompter:o,projectRoot:e.appRoot,slug:e.slug,service:e.service,creationType:e.options?.creationType,connectionMethod:e.options?.connectionMethod,canonicalConnectorName:e.canonicalConnectorName??e.slug,project:l,signal:s},d=await i.setupConnectionConnector(u),f=join(e.appRoot,`agent`,`connections`,`${e.slug}.ts`);if(!(await i.updateConnectionConnectorUid(f,d.connectorUid)).patched)throw d.kind===`created`&&await i.cleanupCreatedConnectionConnector({log:o.log,projectRoot:e.appRoot,connectorId:d.connectorId,orgId:l.orgId}),Error(`Could not update the connector in agent/connections/${e.slug}.ts.`);o.outro(`Connection ${e.slug} set up.`)}async function runIntegrationConnectCommand(t,r,i,a,o,c={},l=defaultDependencies){let d=createRegistrySetupClient({signal:c.signal});try{await runIntegrationConnect({appRoot:r,slug:i,service:a,canonicalConnectorName:o,options:c,dependencies:{...l,createPrompter:()=>d?.prompter??(c.nonInteractive?createHeadlessPrompter(()=>{}):l.createPrompter?.()??createPrompter())}}),d?.complete()}catch(n){if(d?.fail(n),d!==void 0)return;if(c.nonInteractive&&n instanceof SetupPrerequisiteRequired){t.error(serializeHeadlessSetupEvent({version:1,type:`blocked`,status:`prerequisite_required`,prerequisite:n.prerequisite})),process.exitCode=2;return}t.error(n instanceof Error?n.message:String(n)),process.exitCode=1}}export{runIntegrationConnect,runIntegrationConnectCommand};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{parseSetupAnswer}from"./setup-answers.js";import{applicationCommand}from"#cli/application-command.js";function registerIntegrationCommands(n){let{applicationContext:r,logger:i,program:a}=n,o=a.command(`integration`,{hidden:!0});applicationCommand(o.command(`setup <kind>`),r).option(`-y, --yes`).option(`--non-interactive`,`Run without interactive prompts, instead emit structured NDJSON when further input is required`).option(`--answer <key=value>`,`Answer a setup question; requires --non-interactive.`,parseSetupAnswer,{}).action(async(e,t)=>{let{runIntegrationSetupCommand:n}=await import(`./integration-setup.js`);await n(i,r.root,e,{yes:t.yes,nonInteractive:t.nonInteractive,answers:t.answer})}),applicationCommand(o.command(`connect <slug> <service> [canonical-name]`),r).option(`-y, --yes`).option(`--non-interactive`,`Run without interactive prompts, instead emit structured NDJSON when further input is required`).action(async(e,t,n,a)=>{let{runIntegrationConnectCommand:o}=await import(`./integration-connect.js`);await o(i,r.root,e,t,n,a)})}export{registerIntegrationCommands};
|
|
1
|
+
import{parseSetupAnswer}from"./setup-answers.js";import{applicationCommand}from"#cli/application-command.js";function registerIntegrationCommands(n){let{applicationContext:r,logger:i,program:a}=n,o=a.command(`integration`,{hidden:!0});applicationCommand(o.command(`setup <kind>`),r).option(`-y, --yes`).option(`--non-interactive`,`Run without interactive prompts, instead emit structured NDJSON when further input is required`).option(`--answer <key=value>`,`Answer a setup question; requires --non-interactive.`,parseSetupAnswer,{}).action(async(e,t)=>{let{runIntegrationSetupCommand:n}=await import(`./integration-setup.js`);await n(i,r.root,e,{yes:t.yes,nonInteractive:t.nonInteractive,answers:t.answer})}),applicationCommand(o.command(`connect <slug> <service> [canonical-name]`),r).option(`-y, --yes`).option(`--creation-type <type>`,`Select the Vercel Connect creation type.`).option(`--connection-method <method>`,`Select the Vercel Connect connection method.`).option(`--non-interactive`,`Run without interactive prompts, instead emit structured NDJSON when further input is required`).action(async(e,t,n,a)=>{let{runIntegrationConnectCommand:o}=await import(`./integration-connect.js`);await o(i,r.root,e,t,n,a)})}export{registerIntegrationCommands};
|