@polpo-ai/server 0.15.144 → 0.16.0

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 (92) hide show
  1. package/dist/deps.d.ts +8 -5
  2. package/dist/deps.d.ts.map +1 -1
  3. package/dist/deps.js +0 -7
  4. package/dist/deps.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/routes/agent-revisions.test.d.ts +2 -0
  10. package/dist/routes/agent-revisions.test.d.ts.map +1 -0
  11. package/dist/routes/agent-revisions.test.js +118 -0
  12. package/dist/routes/agent-revisions.test.js.map +1 -0
  13. package/dist/routes/agents.d.ts +3 -0
  14. package/dist/routes/agents.d.ts.map +1 -1
  15. package/dist/routes/agents.js +88 -8
  16. package/dist/routes/agents.js.map +1 -1
  17. package/dist/routes/approvals.d.ts.map +1 -1
  18. package/dist/routes/approvals.js +22 -2
  19. package/dist/routes/approvals.js.map +1 -1
  20. package/dist/routes/completions/agent-step-runner.d.ts.map +1 -1
  21. package/dist/routes/completions/agent-step-runner.js +1 -1
  22. package/dist/routes/completions/agent-step-runner.js.map +1 -1
  23. package/dist/routes/completions/agent-step-runner.test.js +3 -1
  24. package/dist/routes/completions/agent-step-runner.test.js.map +1 -1
  25. package/dist/routes/completions/chat-handler.d.ts +1 -0
  26. package/dist/routes/completions/chat-handler.d.ts.map +1 -1
  27. package/dist/routes/completions/chat-handler.js.map +1 -1
  28. package/dist/routes/completions/chat-via-run-handler.d.ts.map +1 -1
  29. package/dist/routes/completions/chat-via-run-handler.js +1 -0
  30. package/dist/routes/completions/chat-via-run-handler.js.map +1 -1
  31. package/dist/routes/completions/conversation-turn.d.ts +3 -1
  32. package/dist/routes/completions/conversation-turn.d.ts.map +1 -1
  33. package/dist/routes/completions/conversation-turn.js +27 -10
  34. package/dist/routes/completions/conversation-turn.js.map +1 -1
  35. package/dist/routes/completions/project-loop-runner.d.ts +3 -1
  36. package/dist/routes/completions/project-loop-runner.d.ts.map +1 -1
  37. package/dist/routes/completions/project-loop-runner.js +36 -5
  38. package/dist/routes/completions/project-loop-runner.js.map +1 -1
  39. package/dist/routes/completions/schemas.d.ts +2 -2
  40. package/dist/routes/completions/schemas.d.ts.map +1 -1
  41. package/dist/routes/completions/schemas.js +2 -5
  42. package/dist/routes/completions/schemas.js.map +1 -1
  43. package/dist/routes/completions/skill-activation-runtime.test.js +1 -1
  44. package/dist/routes/completions/skill-activation-runtime.test.js.map +1 -1
  45. package/dist/routes/completions-agent-lifetime.test.d.ts +2 -0
  46. package/dist/routes/completions-agent-lifetime.test.d.ts.map +1 -0
  47. package/dist/routes/completions-agent-lifetime.test.js +97 -0
  48. package/dist/routes/completions-agent-lifetime.test.js.map +1 -0
  49. package/dist/routes/completions.d.ts +4 -1
  50. package/dist/routes/completions.d.ts.map +1 -1
  51. package/dist/routes/completions.js +1 -0
  52. package/dist/routes/completions.js.map +1 -1
  53. package/dist/routes/connect-callback.d.ts +5 -0
  54. package/dist/routes/connect-callback.d.ts.map +1 -0
  55. package/dist/routes/connect-callback.js +30 -0
  56. package/dist/routes/connect-callback.js.map +1 -0
  57. package/dist/routes/connect-callback.test.d.ts +2 -0
  58. package/dist/routes/connect-callback.test.d.ts.map +1 -0
  59. package/dist/routes/connect-callback.test.js +52 -0
  60. package/dist/routes/connect-callback.test.js.map +1 -0
  61. package/dist/routes/connect.d.ts.map +1 -1
  62. package/dist/routes/connect.js +161 -5
  63. package/dist/routes/connect.js.map +1 -1
  64. package/dist/routes/connect.test.js +171 -2
  65. package/dist/routes/connect.test.js.map +1 -1
  66. package/dist/routes/missions.d.ts +3 -2
  67. package/dist/routes/missions.d.ts.map +1 -1
  68. package/dist/routes/missions.js +47 -16
  69. package/dist/routes/missions.js.map +1 -1
  70. package/dist/routes/missions.test.d.ts +2 -0
  71. package/dist/routes/missions.test.d.ts.map +1 -0
  72. package/dist/routes/missions.test.js +88 -0
  73. package/dist/routes/missions.test.js.map +1 -0
  74. package/dist/routes/queued-metadata.test.d.ts +2 -0
  75. package/dist/routes/queued-metadata.test.d.ts.map +1 -0
  76. package/dist/routes/queued-metadata.test.js +29 -0
  77. package/dist/routes/queued-metadata.test.js.map +1 -0
  78. package/dist/routes/task-cancellation.test.d.ts +2 -0
  79. package/dist/routes/task-cancellation.test.d.ts.map +1 -0
  80. package/dist/routes/task-cancellation.test.js +58 -0
  81. package/dist/routes/task-cancellation.test.js.map +1 -0
  82. package/dist/routes/tasks.d.ts +2 -1
  83. package/dist/routes/tasks.d.ts.map +1 -1
  84. package/dist/routes/tasks.js +42 -6
  85. package/dist/routes/tasks.js.map +1 -1
  86. package/dist/schemas.d.ts +41 -3
  87. package/dist/schemas.d.ts.map +1 -1
  88. package/dist/schemas.js +12 -4
  89. package/dist/schemas.js.map +1 -1
  90. package/dist/schemas.test.js +16 -2
  91. package/dist/schemas.test.js.map +1 -1
  92. package/package.json +7 -7
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
- import { MemoryConnectStore, MemoryConnectionSecretStore, createConnectService } from "@polpo-ai/connect-server";
2
+ import { MemoryConnectStore, MemoryConnectionSecretStore, MemoryConnectorDefinitionStore, createConnectService } from "@polpo-ai/connect-server";
3
3
  import { connectRoutes } from "./connect.js";
4
4
  const apiKeyProvider = {
5
5
  id: "custom_api",
@@ -27,6 +27,148 @@ const oauthProvider = {
27
27
  scopes: [{ id: "read" }, { id: "write" }],
28
28
  };
29
29
  describe("connectRoutes", () => {
30
+ it("creates an embedded MCP setup with the selected reusable client and trusted owner", async () => {
31
+ const store = new MemoryConnectStore();
32
+ const client = { id: "mcp-config", providerId: "mcp_url", owner: { type: "instance", id: "host" },
33
+ resourceUrl: "https://mcp.example/mcp", transport: "http", redirectUri: "https://host.example/callback",
34
+ registration: { mode: "pre_registered", client: { client_id: "client", client_secret: "private-config-secret" } } };
35
+ const resolver = { resolve: vi.fn(async () => client), resolveById: vi.fn(async () => client) };
36
+ const service = createConnectService({ providers: [{ id: "mcp_url", name: "MCP", auth: { type: "mcp", auth: "oauth2" }, scopes: [] }],
37
+ store, setupSessions: store, links: store, secrets: new MemoryConnectionSecretStore(),
38
+ mcpOAuthClients: resolver, allowedReturnUrlOrigins: ["https://app.example"] });
39
+ const app = connectRoutes(() => ({ connectService: service }));
40
+ const subject = { type: "external_user", namespace: "app", id: "gioia" };
41
+ const response = await app.request("/setup-sessions", { method: "POST", headers: { "content-type": "application/json" },
42
+ body: JSON.stringify({ providerId: "mcp_url", projectId: "project", audience: "end_user", subject,
43
+ returnUrl: "https://app.example/connected", oauthClientMode: "instance", configurationId: "mcp-config" }) });
44
+ expect(response.status).toBe(201);
45
+ const body = await response.json();
46
+ expect(body).toMatchObject({ data: { flowKind: "mcp", oauthClientId: "mcp-config", subject } });
47
+ expect(resolver.resolve).toHaveBeenCalledWith(expect.objectContaining({ configurationId: "mcp-config", projectId: "project", mode: "instance" }));
48
+ expect(JSON.stringify(body)).not.toContain("private-config-secret");
49
+ });
50
+ it("dispatches the authenticated callback by its stored flow, including MCP", async () => {
51
+ const { service, store } = createHarness();
52
+ await store.saveOAuthState({ state: "mcp-state", providerId: "mcp_url", flowKind: "mcp", requestedScopes: [],
53
+ redirectUri: "https://host.example/callback", createdAt: new Date().toISOString(), expiresAt: "2099-01-01T00:00:00.000Z" });
54
+ const completeMcp = vi.spyOn(service, "completeMcpOAuth").mockResolvedValue({ id: "mcp-connection", authType: "mcp" });
55
+ const completeApi = vi.spyOn(service, "completeOAuth");
56
+ const app = connectRoutes(() => ({ connectService: service }));
57
+ const response = await app.request("/oauth/callback", { method: "POST", headers: { "content-type": "application/json" },
58
+ body: JSON.stringify({ state: "mcp-state", code: "code" }) });
59
+ expect(response.status).toBe(200);
60
+ expect(await response.json()).toMatchObject({ data: { id: "mcp-connection", authType: "mcp" } });
61
+ expect(completeMcp).toHaveBeenCalledWith({ state: "mcp-state", code: "code" });
62
+ expect(completeApi).not.toHaveBeenCalled();
63
+ });
64
+ it("returns a structured denial for unsafe generic MCP auth headers instead of HTTP 500", async () => {
65
+ const service = createConnectService({ providers: [{ id: "mcp_url", name: "MCP", auth: { type: "mcp", auth: "bearer" }, scopes: [] }],
66
+ store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore() });
67
+ const app = connectRoutes(() => ({ connectService: service }));
68
+ const response = await app.request("/connections/mcp", { method: "POST", headers: { "content-type": "application/json" },
69
+ body: JSON.stringify({ url: "https://mcp.example", auth: "header", headerName: "Cookie", apiKey: "private" }) });
70
+ expect(response.status).toBe(403);
71
+ expect(await response.json()).toMatchObject({ ok: false, code: "connection_operation_denied" });
72
+ });
73
+ it("preserves trusted audience and binding through the API-key route", async () => {
74
+ const app = connectRoutes(() => ({ connectService: createHarness().service }));
75
+ const owner = { type: "external_user", namespace: "app", id: "viewer" };
76
+ const response = await app.request("/connections/api-key", { method: "POST", headers: { "content-type": "application/json" },
77
+ body: JSON.stringify({ providerId: "custom_api", apiKey: "private", audience: "end_user", subject: owner, binding: { scopeEpoch: "one" } }) });
78
+ expect(response.status).toBe(200);
79
+ expect(await response.json()).toMatchObject({ data: { audience: "end_user", owner, binding: { principal: owner, scopeEpoch: "one" } } });
80
+ });
81
+ it("creates a custom MCP through the SDK's advertised OSS route with its selected authentication and identity", async () => {
82
+ const service = createConnectService({ providers: [{ version: 2, id: "notes", name: "Notes", source: "custom", protocol: "mcp",
83
+ defaultAuthenticationId: "public", authentication: [{ id: "public", type: "none" }] }],
84
+ store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore() });
85
+ const app = connectRoutes(() => ({ connectService: service }));
86
+ const response = await app.request("/connections/mcp", { method: "POST", headers: { "content-type": "application/json" },
87
+ body: JSON.stringify({ providerId: "notes", authenticationId: "public", url: "https://mcp.example/mcp", audience: "personal", subject: { type: "user", id: "builder" } }) });
88
+ expect(response.status).toBe(201);
89
+ expect(await response.json()).toMatchObject({ data: { providerId: "notes", authenticationId: "public", audience: "personal",
90
+ binding: { principal: { type: "user", id: "builder" } }, metadata: { auth: "none" } } });
91
+ });
92
+ it("exposes OSS MCP inspect and OAuth start, keeping the callback and trusted context explicit", async () => {
93
+ const { service } = createHarness();
94
+ const inspect = vi.spyOn(service, "inspectMcpOAuth").mockResolvedValue({});
95
+ const start = vi.spyOn(service, "startMcpOAuth").mockResolvedValue({ authorizationUrl: "https://provider.example", state: "state", expiresAt: "2099" });
96
+ const app = connectRoutes(() => ({ connectService: service }));
97
+ const post = (path, body) => app.request(path, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(body) });
98
+ expect((await post("/mcp/inspect", { url: "https://mcp.example/mcp", transport: "sse" })).status).toBe(200);
99
+ const input = { providerId: "notes", authenticationId: "oauth", url: "https://mcp.example/mcp", mode: "dynamic",
100
+ redirectUri: "https://host.example/v1/connect/oauth/callback", audience: "personal", subject: { type: "user", id: "builder" } };
101
+ expect((await post("/mcp/oauth/start", input)).status).toBe(200);
102
+ expect(inspect).toHaveBeenCalledWith({ url: "https://mcp.example/mcp", transport: "sse" });
103
+ expect(start).toHaveBeenCalledWith(input);
104
+ expect((await post("/mcp/oauth/start", { ...input, redirectUri: undefined })).status).toBe(400);
105
+ expect(start).toHaveBeenCalledOnce();
106
+ });
107
+ it("exposes local setup readiness separately from live verification", async () => {
108
+ const app = connectRoutes(() => ({ connectService: createHarness().service }));
109
+ const response = await app.request("/setup-readiness", { method: "POST", headers: { "content-type": "application/json" },
110
+ body: JSON.stringify({ providerId: "custom_api" }),
111
+ });
112
+ expect(response.status).toBe(200);
113
+ expect(await response.json()).toMatchObject({ data: { check: "configuration", outcome: "passed", code: "credentials_required" } });
114
+ });
115
+ it("registers a custom API through HTTP and blocks it after disabling the definition", async () => {
116
+ const service = createConnectService({ providers: [], store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore(), definitions: new MemoryConnectorDefinitionStore() });
117
+ const app = connectRoutes(() => ({ connectService: service }));
118
+ const response = await app.request("/connectors", { method: "POST", headers: { "content-type": "application/json" },
119
+ body: JSON.stringify({ version: 2, id: "weather", name: "Weather", source: "catalog", protocol: "http_api",
120
+ defaultAuthenticationId: "public", authentication: [{ id: "public", type: "none" }], http: { origins: ["https://api.example.com"] } }),
121
+ });
122
+ expect(response.status).toBe(201);
123
+ expect(await response.json()).toMatchObject({ data: { definition: { source: "custom" } } });
124
+ expect(await (await app.request("/catalog")).json()).toMatchObject({ data: [{ id: "weather" }] });
125
+ expect((await app.request("/connectors/weather/disable", { method: "POST" })).status).toBe(200);
126
+ expect(await (await app.request("/catalog")).json()).toMatchObject({ data: [] });
127
+ });
128
+ it("exposes an honest verification result without serializing credentials", async () => {
129
+ const { service } = createHarness();
130
+ const connection = await service.createApiKeyConnection({ providerId: "custom_api", apiKey: "private-test-key" });
131
+ const app = connectRoutes(() => ({ connectService: service }));
132
+ const response = await app.request(`/connections/${connection.id}/verify`, { method: "POST" });
133
+ expect(response.status).toBe(200);
134
+ const body = await response.json();
135
+ expect(body).toMatchObject({ ok: true, data: { outcome: "unsupported", code: "probe_not_configured" } });
136
+ expect(JSON.stringify(body)).not.toContain("private-test-key");
137
+ expect((await app.request("/connections/missing/verify", { method: "POST" })).status).toBe(404);
138
+ });
139
+ it("does not expose OAuth app credentials in the provider catalog", async () => {
140
+ const app = connectRoutes(() => ({ connectService: createHarness().service }));
141
+ const response = await app.request("/providers");
142
+ expect(response.status).toBe(200);
143
+ const body = await response.text();
144
+ expect(body).not.toContain("client_secret");
145
+ expect(body).not.toContain('"clientSecret"');
146
+ });
147
+ it("exposes the normalized catalog and public HTTP setup without discarding authentication selection", async () => {
148
+ const service = createConnectService({
149
+ providers: [{
150
+ version: 2, id: "public_api", name: "Public API", source: "custom", protocol: "http_api",
151
+ defaultAuthenticationId: "public", authentication: [{ id: "public", type: "none" }],
152
+ http: { origins: ["https://api.example.com"] },
153
+ }],
154
+ store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore(),
155
+ });
156
+ const app = connectRoutes(() => ({ connectService: service }));
157
+ const catalog = await app.request("/catalog");
158
+ expect(catalog.status).toBe(200);
159
+ expect(await catalog.json()).toMatchObject({ data: [{ protocol: "http_api", authentication: [{ type: "none" }] }] });
160
+ const created = await app.request("/connections/public", {
161
+ method: "POST", headers: { "content-type": "application/json" },
162
+ body: JSON.stringify({ providerId: "public_api", authenticationId: "public" }),
163
+ });
164
+ expect(created.status).toBe(201);
165
+ expect(await created.json()).toMatchObject({ data: { authType: "none", authenticationId: "public" } });
166
+ const invalid = await app.request("/connections/public", {
167
+ method: "POST", headers: { "content-type": "application/json" },
168
+ body: JSON.stringify({ providerId: "public_api", authenticationId: "unknown" }),
169
+ });
170
+ expect(invalid.status).toBe(400);
171
+ });
30
172
  it("returns 501 when connect service is not wired", async () => {
31
173
  const app = connectRoutes(() => ({}));
32
174
  const res = await app.request("/providers");
@@ -157,7 +299,7 @@ describe("connectRoutes", () => {
157
299
  audience: "end_user",
158
300
  subject: { type: "external_user", namespace: "app", id: "user-1" },
159
301
  binding: {
160
- principal: { type: "external_user", id: "user-1" },
302
+ principal: { type: "external_user", namespace: "app", id: "user-1" },
161
303
  tenant: { namespace: "app", id: "tenant-1" },
162
304
  },
163
305
  scopes: ["read"],
@@ -171,8 +313,15 @@ describe("connectRoutes", () => {
171
313
  projectId: "project-1",
172
314
  audience: "end_user",
173
315
  subject: { type: "external_user", namespace: "app", id: "user-1" },
316
+ binding: { principal: { type: "external_user", namespace: "app", id: "user-1" } },
174
317
  });
175
318
  expect(setup.data).not.toHaveProperty("oauthClientSecret");
319
+ const observed = await app.request(`/setup/${setup.data.id}/status`);
320
+ expect(observed.status).toBe(200);
321
+ const publicStatus = await observed.json();
322
+ expect(publicStatus.data).toMatchObject({ status: "pending", scopes: ["read"] });
323
+ expect(publicStatus.data).not.toHaveProperty("subject");
324
+ expect(publicStatus.data).not.toHaveProperty("binding");
176
325
  const startRes = await app.request(`/setup-sessions/${setup.data.id}/start`, { method: "POST" });
177
326
  const started = await startRes.json();
178
327
  expect(startRes.status).toBe(200);
@@ -180,6 +329,26 @@ describe("connectRoutes", () => {
180
329
  const replayRes = await app.request(`/setup-sessions/${setup.data.id}/start`, { method: "POST" });
181
330
  expect(replayRes.status).toBe(409);
182
331
  await expect(replayRes.json()).resolves.toMatchObject({ ok: false, code: "setup_consumed" });
332
+ const cancelStarted = await app.request(`/setup/${setup.data.id}/cancel`, { method: "POST" });
333
+ expect(cancelStarted.status).toBe(410);
334
+ const callback = await app.request("/oauth/callback", { method: "POST", headers: { "content-type": "application/json" },
335
+ body: JSON.stringify({ state: started.data.state, code: "code" }) });
336
+ expect(callback.status).toBe(200);
337
+ const completed = await (await app.request(`/setup/${setup.data.id}/status`)).json();
338
+ expect(completed.data).toMatchObject({ status: "completed", resultingConnectionId: (await callback.json()).data.id });
339
+ });
340
+ it("observes missing setup and cancels a pending setup through SDK-compatible routes", async () => {
341
+ const harness = createHarness({ withOAuthClient: true });
342
+ const app = connectRoutes(() => ({ connectService: harness.service }));
343
+ expect((await app.request("/setup/missing/status")).status).toBe(404);
344
+ expect((await app.request("/setup/missing/cancel", { method: "POST" })).status).toBe(404);
345
+ const setup = await harness.service.createSetupSession({ providerId: "test_oauth", projectId: "project-1", audience: "end_user",
346
+ subject: { type: "external_user", namespace: "app", id: "user-1" }, scopes: ["read"],
347
+ returnUrl: "https://app.example/settings", oauthClientMode: "managed" });
348
+ const cancelled = await app.request(`/setup/${setup.id}/cancel`, { method: "POST" });
349
+ expect(cancelled.status).toBe(200);
350
+ expect((await cancelled.json()).data.status).toBe("cancelled");
351
+ expect((await app.request(`/setup-sessions/${setup.id}/start`, { method: "POST" })).status).toBe(409);
183
352
  });
184
353
  it("executes a policy-bound gateway request without exposing credentials", async () => {
185
354
  const harness = createHarness({
@@ -1 +1 @@
1
- {"version":3,"file":"connect.test.js","sourceRoot":"","sources":["../../src/routes/connect.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,cAAc,GAAgC;IAClD,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE;IACjD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,qBAAqB,CAAC;QAChC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC/B,mBAAmB,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC;QACjD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE;KAC5C;CACF,CAAC;AAEF,MAAM,aAAa,GAAgC;IACjD,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,gBAAgB,EAAE,gCAAgC;QAClD,QAAQ,EAAE,4BAA4B;QACtC,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE,eAAe;QAC7B,aAAa,EAAE,CAAC,MAAM,CAAC;KACxB;IACD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;CAC1C,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,CAAC,KAAK,CAAC;gBACf,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE;aAC1C,CAAC;SACH,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAEvC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,gBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE;YAC1E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;SACrF,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;YAC/B,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,YAAY;SACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;SACpF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,SAAS,EAAE,UAAU,CAAC;gBACpB,YAAY,CAAC,GAAG,EAAE;oBAChB,YAAY,EAAE,cAAc;oBAC5B,aAAa,EAAE,eAAe;oBAC9B,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,YAAY;iBACpB,CAAC;aACH,CAAC;SACH,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;gBACzB,WAAW,EAAE,8BAA8B;aAC5C,CAAC;SACH,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEtC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;QAExC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;SACtE,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAE1C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;YAClC,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC3C,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE;SAC1C,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC3C,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;SACxC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC;QAClH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,SAAS,EAAE,UAAU,CAAC;gBACpB,YAAY,CAAC,GAAG,EAAE;oBAChB,YAAY,EAAE,cAAc;oBAC5B,aAAa,EAAE,eAAe;oBAC9B,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,MAAM;iBACd,CAAC;aACH,CAAC;YACF,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;gBAClE,OAAO,EAAE;oBACP,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE;oBAClD,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE;iBAC7C;gBACD,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,SAAS,EAAE,0CAA0C;gBACrD,eAAe,EAAE,SAAS;aAC3B,CAAC;SACH,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;YAC/B,SAAS,EAAE,WAAW;YACtB,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE;SACnE,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAE5E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,SAAS,EAAE,UAAU,CAAC;gBACpB,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC;aAC9E,CAAC;SACH,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC9D,UAAU,EAAE,YAAY;YACxB,MAAM,EAAE,mBAAmB;YAC3B,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,gBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,CAAC,KAAK,CAAC;gBACf,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE;aAC9C,CAAC;SACH,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE;YACrF,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;YACtB,SAAS,EAAE,oBAAoB;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,OAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,QAA8D,EAAE;IACrF,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,oBAAoB,CAAC;QACnC,SAAS,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;QAC1C,KAAK;QACL,OAAO;QACP,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1B,YAAY,EAAE;gBACZ,KAAK,CAAC,OAAO;oBACX,OAAO;wBACL,EAAE,EAAE,gBAAgB;wBACpB,UAAU,EAAE,YAAY;wBACxB,QAAQ,EAAE,gBAAgB;wBAC1B,YAAY,EAAE,gBAAgB;wBAC9B,YAAY,EAAE,CAAC,qDAAqD,CAAC;wBACrE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAmB,EAAE,EAAE,EAAE,SAAS,EAAE;qBACpD,CAAC;gBACJ,CAAC;gBACD,KAAK,CAAC,WAAW;oBACf,OAAO;wBACL,EAAE,EAAE,gBAAgB;wBACpB,UAAU,EAAE,YAAY;wBACxB,QAAQ,EAAE,gBAAgB;wBAC1B,YAAY,EAAE,gBAAgB;wBAC9B,YAAY,EAAE,CAAC,qDAAqD,CAAC;wBACrE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAmB,EAAE,EAAE,EAAE,SAAS,EAAE;qBACpD,CAAC;gBACJ,CAAC;aACF;YACD,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,KAAK;YACZ,uBAAuB,EAAE,CAAC,qBAAqB,CAAC;SACjD,CAAC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC;AAUD,SAAS,UAAU,CAAC,SAAqB;IACvC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAA2B,EAAE,OAAoB,EAAE,EAAE,EAAE;QACpF,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,OAAgB,EAAE,OAAgC;IACtF,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QAC3C,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE;KAC5D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"connect.test.js","sourceRoot":"","sources":["../../src/routes/connect.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import { type MissionAbortOptions, type MissionAbortResult, type MissionExecutionOptions } from "@polpo-ai/core/mission-store";
2
3
  /**
3
4
  * Mission CRUD + execute/resume/abort routes.
4
5
  */
@@ -9,9 +10,9 @@ export declare function missionRoutes(getDeps: () => {
9
10
  createMission: (opts: any) => Promise<any>;
10
11
  updateMission: (id: string, updates: any) => Promise<any>;
11
12
  deleteMission: (id: string) => Promise<boolean>;
12
- executeMission: (id: string) => Promise<any>;
13
+ executeMission: (id: string, options?: MissionExecutionOptions) => Promise<any>;
13
14
  resumeMission: (id: string, opts?: any) => Promise<any>;
14
- abortGroup: (group: string) => Promise<number>;
15
+ abortMission: (missionId: string, options?: MissionAbortOptions) => Promise<MissionAbortResult>;
15
16
  getActiveCheckpoints: () => any;
16
17
  resumeCheckpointByMissionId: (missionId: string, checkpointName: string) => Promise<boolean>;
17
18
  getActiveDelays: () => any;
@@ -1 +1 @@
1
- {"version":3,"file":"missions.d.ts","sourceRoot":"","sources":["../../src/routes/missions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AA+VhE;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM;IAC3C,YAAY,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,oBAAoB,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1D,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACxD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,oBAAoB,EAAE,MAAM,GAAG,CAAC;IAChC,2BAA2B,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7F,eAAe,EAAE,MAAM,GAAG,CAAC;IAC3B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrF,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1E,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACtF,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACjF,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACtE,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACvF,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5E,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACtF,uBAAuB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3E,0BAA0B,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACrF,GAAG,WAAW,CA2Vd"}
1
+ {"version":3,"file":"missions.d.ts","sourceRoot":"","sources":["../../src/routes/missions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { TaskExecutionError } from "@polpo-ai/core/task-execution";
1
2
  import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
3
+ import { MissionExecutionError } from "@polpo-ai/core/mission-store";
2
4
  import { CreateMissionSchema, UpdateMissionSchema, AddMissionTaskSchema, UpdateMissionTaskSchema, ReorderMissionTasksSchema, AddMissionCheckpointSchema, UpdateMissionCheckpointSchema, AddMissionDelaySchema, UpdateMissionDelaySchema, AddMissionQualityGateSchema, UpdateMissionQualityGateSchema, AddMissionTeamMemberSchema, UpdateMissionTeamMemberSchema, UpdateMissionNotificationsSchema, } from "../schemas.js";
3
5
  // ── Route definitions ─────────────────────────────────────────────────
4
6
  const listMissionsRoute = createRoute({
@@ -101,12 +103,18 @@ const executeMissionRoute = createRoute({
101
103
  summary: "Execute mission",
102
104
  request: {
103
105
  params: z.object({ missionId: z.string() }),
106
+ body: { required: false, content: { "application/json": { schema: z.object({
107
+ idempotencyKey: z.string().min(1).max(200).refine(key => key === key.trim() && !/[\x00-\x1f\x7f]/.test(key), "Invalid idempotency key").optional(),
108
+ }).strict() } } },
104
109
  },
105
110
  responses: {
106
111
  200: {
107
112
  content: { "application/json": { schema: z.object({ ok: z.boolean(), data: z.any() }) } },
108
113
  description: "Mission execution result",
109
114
  },
115
+ 400: { description: "Invalid execution request", content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } } },
116
+ 409: { description: "Mission changed before admission", content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } } },
117
+ 501: { description: "Store does not support atomic execution", content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } } },
110
118
  },
111
119
  });
112
120
  const resumeMissionRoute = createRoute({
@@ -170,12 +178,18 @@ const abortMissionRoute = createRoute({
170
178
  summary: "Abort mission",
171
179
  request: {
172
180
  params: z.object({ missionId: z.string() }),
181
+ body: { required: false, content: { "application/json": { schema: z.object({
182
+ executionId: z.string().regex(/^[a-zA-Z0-9_-]{1,200}$/).optional(),
183
+ }).strict() } } },
173
184
  },
174
185
  responses: {
175
186
  200: {
176
- content: { "application/json": { schema: z.object({ ok: z.boolean(), data: z.object({ aborted: z.number() }) }) } },
187
+ content: { "application/json": { schema: z.object({ ok: z.boolean(), data: z.object({ aborted: z.number(), executionId: z.string().optional() }) }) } },
177
188
  description: "Mission aborted",
178
189
  },
190
+ 400: { description: "Invalid cancellation request", content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } } },
191
+ 409: { description: "Execution changed before cancellation", content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } } },
192
+ 501: { description: "Atomic cancellation unavailable", content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } } },
179
193
  404: {
180
194
  content: { "application/json": { schema: z.object({ ok: z.boolean(), error: z.string(), code: z.string() }) } },
181
195
  description: "Mission not found",
@@ -322,6 +336,16 @@ export function missionRoutes(getDeps) {
322
336
  const deps = getDeps();
323
337
  return c.json({ ok: true, data: await deps.getResumableMissions() });
324
338
  });
339
+ // GET /missions/checkpoints — list all active checkpoints
340
+ app.openapi(listCheckpointsRoute, async (c) => {
341
+ const deps = getDeps();
342
+ return c.json({ ok: true, data: await deps.getActiveCheckpoints() });
343
+ });
344
+ // GET /missions/delays — list active delays
345
+ app.openapi(listDelaysRoute, async (c) => {
346
+ const deps = getDeps();
347
+ return c.json({ ok: true, data: await deps.getActiveDelays() });
348
+ });
325
349
  // GET /missions/:missionId — get mission by ID
326
350
  app.openapi(getMissionRoute, async (c) => {
327
351
  const deps = getDeps();
@@ -346,6 +370,7 @@ export function missionRoutes(getDeps) {
346
370
  endDate: body.endDate,
347
371
  notifications: body.notifications,
348
372
  user: body.user,
373
+ metadata: body.metadata,
349
374
  });
350
375
  return c.json({ ok: true, data: mission }, 201);
351
376
  });
@@ -381,8 +406,16 @@ export function missionRoutes(getDeps) {
381
406
  app.openapi(executeMissionRoute, async (c) => {
382
407
  const deps = getDeps();
383
408
  const { missionId } = c.req.valid("param");
384
- const result = await deps.executeMission(missionId);
385
- return c.json({ ok: true, data: result });
409
+ try {
410
+ const result = await deps.executeMission(missionId, c.req.valid("json") ?? {});
411
+ return c.json({ ok: true, data: result }, 200);
412
+ }
413
+ catch (error) {
414
+ if (!(error instanceof MissionExecutionError))
415
+ throw error;
416
+ const status = error.code === "mission_execution_conflict" ? 409 : error.code === "mission_execution_unsupported" ? 501 : 400;
417
+ return c.json({ ok: false, error: error.message, code: error.code }, status);
418
+ }
386
419
  });
387
420
  // POST /missions/:missionId/resume — resume mission
388
421
  app.openapi(resumeMissionRoute, async (c) => {
@@ -392,11 +425,6 @@ export function missionRoutes(getDeps) {
392
425
  const result = await deps.resumeMission(missionId, body);
393
426
  return c.json({ ok: true, data: result });
394
427
  });
395
- // GET /missions/checkpoints — list all active checkpoints
396
- app.openapi(listCheckpointsRoute, (c) => {
397
- const deps = getDeps();
398
- return c.json({ ok: true, data: deps.getActiveCheckpoints() });
399
- });
400
428
  // POST /missions/:missionId/checkpoints/:checkpointName/resume — resume a checkpoint
401
429
  app.openapi(resumeCheckpointRoute, async (c) => {
402
430
  const deps = getDeps();
@@ -407,7 +435,7 @@ export function missionRoutes(getDeps) {
407
435
  }
408
436
  return c.json({ ok: true, data: { resumed: true } }, 200);
409
437
  });
410
- // POST /missions/:missionId/abort — abort mission group
438
+ // POST /missions/:missionId/abort — cancel one accepted execution
411
439
  app.openapi(abortMissionRoute, async (c) => {
412
440
  const deps = getDeps();
413
441
  const { missionId } = c.req.valid("param");
@@ -415,8 +443,16 @@ export function missionRoutes(getDeps) {
415
443
  if (!mission) {
416
444
  return c.json({ ok: false, error: "Mission not found", code: "NOT_FOUND" }, 404);
417
445
  }
418
- const count = await deps.abortGroup(mission.name);
419
- return c.json({ ok: true, data: { aborted: count } }, 200);
446
+ try {
447
+ const result = await deps.abortMission(missionId, c.req.valid("json") ?? {});
448
+ return c.json({ ok: true, data: result }, 200);
449
+ }
450
+ catch (error) {
451
+ if (!(error instanceof MissionExecutionError) && !(error instanceof TaskExecutionError))
452
+ throw error;
453
+ const status = error.code.endsWith("_conflict") ? 409 : error.code.endsWith("_unsupported") ? 501 : 400;
454
+ return c.json({ ok: false, error: error.message, code: error.code }, status);
455
+ }
420
456
  });
421
457
  // ── Atomic mission data handlers ──────────────────────────────────
422
458
  // POST /missions/:missionId/tasks — add task
@@ -508,11 +544,6 @@ export function missionRoutes(getDeps) {
508
544
  return c.json({ ok: false, error: e.message, code: "NOT_FOUND" }, 404);
509
545
  }
510
546
  });
511
- // GET /missions/delays — list active delays
512
- app.openapi(listDelaysRoute, (c) => {
513
- const deps = getDeps();
514
- return c.json({ ok: true, data: deps.getActiveDelays() });
515
- });
516
547
  // POST /missions/:missionId/delays — add delay (data-level)
517
548
  app.openapi(addMissionDelayRoute, async (c) => {
518
549
  const deps = getDeps();