agentic-engineering-harness 0.6.5 → 0.6.7

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 (40) hide show
  1. package/README.md +22 -1
  2. package/dist/main.js +62 -0
  3. package/dist/main.js.map +1 -1
  4. package/dist/operations/controller.d.ts +3 -1
  5. package/dist/operations/controller.js +165 -31
  6. package/dist/operations/controller.js.map +1 -1
  7. package/dist/operations/interactive.d.ts +5 -0
  8. package/dist/operations/interactive.js +45 -0
  9. package/dist/operations/interactive.js.map +1 -0
  10. package/dist/operations/mcp.js +19 -1
  11. package/dist/operations/mcp.js.map +1 -1
  12. package/dist/operations/state.d.ts +11 -0
  13. package/dist/operations/state.js +69 -13
  14. package/dist/operations/state.js.map +1 -1
  15. package/dist/paseo/capabilities.d.ts +14 -2
  16. package/dist/paseo/capabilities.js +46 -14
  17. package/dist/paseo/capabilities.js.map +1 -1
  18. package/dist/paseo/context.d.ts +11 -2
  19. package/dist/paseo/context.js +118 -81
  20. package/dist/paseo/context.js.map +1 -1
  21. package/dist/paseo/native.d.ts +63 -0
  22. package/dist/paseo/native.js +549 -0
  23. package/dist/paseo/native.js.map +1 -0
  24. package/dist/paseo/runtime.d.ts +9 -1
  25. package/dist/paseo/runtime.js +348 -57
  26. package/dist/paseo/runtime.js.map +1 -1
  27. package/dist/paseo/start.d.ts +8 -4
  28. package/dist/paseo/start.js +166 -41
  29. package/dist/paseo/start.js.map +1 -1
  30. package/dist/paseo/trace.d.ts +12 -0
  31. package/dist/paseo/trace.js +26 -0
  32. package/dist/paseo/trace.js.map +1 -0
  33. package/dist/runtime/invocation.d.ts +10 -0
  34. package/dist/runtime/invocation.js +51 -0
  35. package/dist/runtime/invocation.js.map +1 -0
  36. package/docs/PASEO_NATIVE.md +181 -0
  37. package/package.json +5 -3
  38. package/scripts/link-self-bin.mjs +36 -0
  39. package/skills/engineering-workflow/SKILL.md +5 -1
  40. package/skills/paseo-orchestration/SKILL.md +33 -5
@@ -0,0 +1,549 @@
1
+ import process from "node:process";
2
+ import { pathToFileURL } from "node:url";
3
+ import { PaseoSdkUnavailableError } from "./sdk.js";
4
+ import { resolvePaseoSdkFromCli } from "./sdkResolve.js";
5
+ import { recordPaseoTrace } from "./trace.js";
6
+ export async function inspectPaseoNativeAgent(root, agentId) {
7
+ return withNativeClient(root, async (client) => {
8
+ const raw = await refetchAgent(client.agents.ref(agentId));
9
+ if (!raw)
10
+ return undefined;
11
+ const snapshot = normalizePaseoNativeAgent(raw);
12
+ await recordPaseoTrace(root, "agent.snapshot", {
13
+ agentId,
14
+ status: snapshot.status ?? "unknown",
15
+ hasUsage: Boolean(snapshot.lastUsage),
16
+ contextWindowUsedTokens: snapshot.lastUsage?.contextWindowUsedTokens ?? -1,
17
+ contextWindowMaxTokens: snapshot.lastUsage?.contextWindowMaxTokens ?? -1
18
+ });
19
+ return snapshot;
20
+ });
21
+ }
22
+ export function normalizePaseoNativeAgent(raw) {
23
+ const id = stringField(raw, ["id", "agentId", "agent_id"]);
24
+ if (!id)
25
+ throw new Error("Paseo agent snapshot does not contain an id.");
26
+ return {
27
+ id,
28
+ status: statusText(raw.status),
29
+ workspaceId: stringField(raw, ["workspaceId", "workspace_id"]),
30
+ labels: stringRecord(raw.labels),
31
+ lastUsage: parseUsage(raw.lastUsage),
32
+ raw
33
+ };
34
+ }
35
+ export function contextUsageFromPaseoSnapshot(snapshot) {
36
+ if (!snapshot.lastUsage) {
37
+ return { source: "paseo-agent-snapshot", availability: "no-usage-yet" };
38
+ }
39
+ const used = finiteNonNegative(snapshot.lastUsage.contextWindowUsedTokens);
40
+ const limit = finitePositive(snapshot.lastUsage.contextWindowMaxTokens);
41
+ if (used === undefined || limit === undefined) {
42
+ return {
43
+ used,
44
+ limit,
45
+ source: "paseo-agent-snapshot",
46
+ availability: "provider-usage-unavailable"
47
+ };
48
+ }
49
+ return {
50
+ used,
51
+ limit,
52
+ ratio: Math.min(used / limit, 1),
53
+ source: "paseo-agent-snapshot",
54
+ availability: "available"
55
+ };
56
+ }
57
+ export async function preflightPaseoProviderModel(root, providerValue, modelValue, cwd = root) {
58
+ const { provider, model } = normalizeProviderModel(providerValue, modelValue);
59
+ return withNativeClient(root, async (client) => {
60
+ const providers = client.providers;
61
+ if (!providers) {
62
+ throw new PaseoSdkUnavailableError("The active Paseo SDK does not expose provider APIs required for preflight.");
63
+ }
64
+ let entry;
65
+ if (typeof providers.snapshot === "function") {
66
+ try {
67
+ entry = findProviderEntry(await providers.snapshot({ cwd }), provider);
68
+ }
69
+ catch (error) {
70
+ await recordPaseoTrace(root, "provider.preflight.snapshot_error", {
71
+ provider,
72
+ model: model ?? "",
73
+ error: String(error)
74
+ });
75
+ }
76
+ }
77
+ const providerStatus = entry ? stringField(entry, ["status"]) : undefined;
78
+ const enabled = entry?.enabled;
79
+ if (enabled === false || providerStatus === "error" || providerStatus === "unavailable") {
80
+ const diagnostic = await providerDiagnostic(providers, provider);
81
+ const result = {
82
+ ok: false,
83
+ provider,
84
+ model,
85
+ providerStatus,
86
+ source: diagnostic ? "paseo-provider-diagnostic" : "paseo-provider-snapshot",
87
+ message: diagnostic ||
88
+ `Provider ${provider} is ${enabled === false ? "disabled" : providerStatus}.`
89
+ };
90
+ await tracePreflight(root, result);
91
+ return result;
92
+ }
93
+ let models = modelIds(entry?.models);
94
+ let source = entry
95
+ ? "paseo-provider-snapshot"
96
+ : "paseo-provider-unchecked";
97
+ if (!entry && typeof providers.listAvailable === "function") {
98
+ try {
99
+ const available = providerIds(await providers.listAvailable());
100
+ if (available.length > 0 && !available.includes(provider)) {
101
+ const diagnostic = await providerDiagnostic(providers, provider);
102
+ const result = {
103
+ ok: false,
104
+ provider,
105
+ model,
106
+ source: diagnostic ? "paseo-provider-diagnostic" : "paseo-provider-snapshot",
107
+ message: diagnostic || `Provider ${provider} is not configured in Paseo.`
108
+ };
109
+ await tracePreflight(root, result);
110
+ return result;
111
+ }
112
+ }
113
+ catch (error) {
114
+ await recordPaseoTrace(root, "provider.preflight.available_error", {
115
+ provider,
116
+ error: String(error)
117
+ });
118
+ }
119
+ }
120
+ if (model && models.length === 0 && typeof providers.listModels === "function") {
121
+ try {
122
+ const listed = await providers.listModels(provider, { cwd });
123
+ models = modelIds(recordField(listed, "models") ?? listed);
124
+ source = "paseo-provider-models";
125
+ }
126
+ catch (error) {
127
+ const diagnostic = await providerDiagnostic(providers, provider);
128
+ const result = {
129
+ ok: false,
130
+ provider,
131
+ model,
132
+ providerStatus,
133
+ source: diagnostic ? "paseo-provider-diagnostic" : "paseo-provider-models",
134
+ message: diagnostic ||
135
+ `Paseo could not list models for provider ${provider}: ${String(error)}`
136
+ };
137
+ await tracePreflight(root, result);
138
+ return result;
139
+ }
140
+ }
141
+ if (model && models.length > 0 && !models.includes(model)) {
142
+ const result = {
143
+ ok: false,
144
+ provider,
145
+ model,
146
+ providerStatus,
147
+ availableModels: models,
148
+ source,
149
+ message: `Model ${provider}/${model} is not present in Paseo's current provider catalog.`
150
+ };
151
+ await tracePreflight(root, result);
152
+ return result;
153
+ }
154
+ const result = {
155
+ ok: true,
156
+ provider,
157
+ model,
158
+ providerStatus,
159
+ availableModels: models.length ? models : undefined,
160
+ source,
161
+ message: models.length || entry
162
+ ? `Provider ${provider}${model ? ` model ${model}` : ""} passed Paseo preflight.`
163
+ : `Paseo provider preflight had no authoritative catalog entry for ${provider}; agent creation remains authoritative.`
164
+ };
165
+ await tracePreflight(root, result);
166
+ return result;
167
+ });
168
+ }
169
+ export async function waitForPaseoAgentNative(root, agentId, timeoutMs = 1_800_000) {
170
+ return withNativeClient(root, async (client) => {
171
+ const handle = client.agents.ref(agentId);
172
+ if (typeof handle.subscribe !== "function") {
173
+ throw new PaseoSdkUnavailableError("The active Paseo SDK agent handle does not expose subscribe(); event-driven waiting is unavailable.");
174
+ }
175
+ const startedAt = Date.now();
176
+ const result = await waitForPaseoAgentHandle(handle, timeoutMs);
177
+ await recordPaseoTrace(root, "agent.wait", {
178
+ agentId,
179
+ source: result.source,
180
+ status: result.status ?? "unknown",
181
+ updatesObserved: result.updatesObserved,
182
+ durationMs: Date.now() - startedAt
183
+ });
184
+ return result;
185
+ });
186
+ }
187
+ export async function waitForPaseoAgentHandle(handle, timeoutMs = 1_800_000) {
188
+ let updatesObserved = 0;
189
+ let sawActivity = false;
190
+ let settled = false;
191
+ let unsubscribe = () => { };
192
+ let timer;
193
+ let chain = Promise.resolve();
194
+ return new Promise((resolve, reject) => {
195
+ const finish = (value) => {
196
+ if (settled)
197
+ return;
198
+ settled = true;
199
+ if (timer)
200
+ clearTimeout(timer);
201
+ unsubscribe();
202
+ resolve(value);
203
+ };
204
+ const fail = (error) => {
205
+ if (settled)
206
+ return;
207
+ settled = true;
208
+ if (timer)
209
+ clearTimeout(timer);
210
+ unsubscribe();
211
+ reject(error);
212
+ };
213
+ const inspect = async (fromUpdate) => {
214
+ const raw = await refetchAgent(handle);
215
+ if (!raw || settled)
216
+ return;
217
+ const status = statusText(raw.status);
218
+ if (fromUpdate)
219
+ updatesObserved += 1;
220
+ if (fromUpdate || isActiveStatus(status) || Boolean(raw.activeTurn))
221
+ sawActivity = true;
222
+ if (!isTerminalStatus(status))
223
+ return;
224
+ const timeline = handle.timeline && typeof handle.timeline.refetch === "function"
225
+ ? await handle.timeline
226
+ .refetch({ direction: "backward", limit: 50 })
227
+ .catch(() => undefined)
228
+ : undefined;
229
+ const lastMessage = stringField(raw, ["lastMessage", "last_message"]) ?? extractLastAssistantText(timeline);
230
+ // A wait starts after dispatch. If the turn completed before subscription,
231
+ // the fresh timeline proves completion. If the snapshot is merely a stale
232
+ // pre-turn idle, wait until an update/activity signal arrives instead.
233
+ if (status === "idle" && !sawActivity && !lastMessage)
234
+ return;
235
+ finish({
236
+ id: handle.id,
237
+ workspaceId: stringField(raw, ["workspaceId", "workspace_id"]),
238
+ status,
239
+ lastMessage,
240
+ error: stringField(raw, ["error", "lastError", "last_error"]),
241
+ source: "paseo-agent-subscription",
242
+ updatesObserved
243
+ });
244
+ };
245
+ try {
246
+ unsubscribe = handle.subscribe(() => {
247
+ chain = chain.then(() => inspect(true)).catch(fail);
248
+ });
249
+ }
250
+ catch (error) {
251
+ fail(error);
252
+ return;
253
+ }
254
+ // Subscribe first, then refetch. A transition between these operations is
255
+ // therefore either captured by the listener or represented by the refetch.
256
+ chain = chain.then(() => inspect(false)).catch(fail);
257
+ timer = setTimeout(() => finish({
258
+ id: handle.id,
259
+ status: "timeout",
260
+ error: `Timed out after ${timeoutMs}ms.`,
261
+ source: "paseo-agent-subscription",
262
+ updatesObserved
263
+ }), timeoutMs);
264
+ });
265
+ }
266
+ async function withNativeClient(root, action) {
267
+ const sdk = await loadNativeSdk(root);
268
+ const client = sdk.createPaseoClient({
269
+ url: process.env.PASEO_DAEMON_URL?.trim() || "ws://127.0.0.1:6767/ws",
270
+ clientId: `aeh-native-${process.pid}`,
271
+ password: process.env.PASEO_DAEMON_PASSWORD?.trim() || undefined
272
+ });
273
+ try {
274
+ await client.connect();
275
+ return await action(client);
276
+ }
277
+ finally {
278
+ await client.close().catch(() => undefined);
279
+ }
280
+ }
281
+ async function loadNativeSdk(root) {
282
+ const bundled = await resolvePaseoSdkFromCli(root);
283
+ if (bundled.resolved) {
284
+ try {
285
+ const sdk = (await import(pathToFileURL(bundled.resolved).href));
286
+ if (typeof sdk.createPaseoClient === "function") {
287
+ await recordPaseoTrace(root, "sdk.resolve", {
288
+ source: "active-paseo-cli",
289
+ entry: bundled.resolved
290
+ });
291
+ return sdk;
292
+ }
293
+ }
294
+ catch (error) {
295
+ bundled.diagnostics.push(`native bundled import: ${String(error)}`);
296
+ }
297
+ }
298
+ const packageName = "@getpaseo/client";
299
+ let directError;
300
+ try {
301
+ const direct = (await import(packageName));
302
+ if (typeof direct.createPaseoClient === "function") {
303
+ await recordPaseoTrace(root, "sdk.resolve", { source: "direct-project-import" });
304
+ return direct;
305
+ }
306
+ }
307
+ catch (error) {
308
+ directError = error;
309
+ }
310
+ const detail = bundled.diagnostics.length
311
+ ? ` Resolution diagnostics: ${bundled.diagnostics.join("; ")}.`
312
+ : "";
313
+ const message = `Paseo native SDK could not be resolved.${detail}${directError ? ` Direct import: ${String(directError)}` : ""}`;
314
+ await recordPaseoTrace(root, "sdk.resolve.error", { error: message });
315
+ throw new PaseoSdkUnavailableError(message, { cause: directError });
316
+ }
317
+ async function refetchAgent(handle) {
318
+ if (typeof handle.refetch === "function")
319
+ return (await handle.refetch())?.agent;
320
+ if (typeof handle.refresh === "function")
321
+ return (await handle.refresh())?.agent;
322
+ return handle.latest?.() ?? undefined;
323
+ }
324
+ async function providerDiagnostic(providers, provider) {
325
+ if (typeof providers.diagnostic !== "function")
326
+ return undefined;
327
+ try {
328
+ return firstDiagnosticMessage(await providers.diagnostic(provider));
329
+ }
330
+ catch {
331
+ return undefined;
332
+ }
333
+ }
334
+ async function tracePreflight(root, result) {
335
+ await recordPaseoTrace(root, "provider.preflight", {
336
+ ok: result.ok,
337
+ provider: result.provider,
338
+ model: result.model ?? "",
339
+ providerStatus: result.providerStatus ?? "unknown",
340
+ source: result.source,
341
+ availableModelCount: result.availableModels?.length ?? 0,
342
+ message: result.message
343
+ });
344
+ }
345
+ function parseUsage(value) {
346
+ if (!value || typeof value !== "object" || Array.isArray(value))
347
+ return undefined;
348
+ const record = value;
349
+ const usage = {
350
+ inputTokens: finiteNonNegative(record.inputTokens),
351
+ cachedInputTokens: finiteNonNegative(record.cachedInputTokens),
352
+ outputTokens: finiteNonNegative(record.outputTokens),
353
+ totalCostUsd: finiteNonNegative(record.totalCostUsd),
354
+ contextWindowMaxTokens: finitePositive(record.contextWindowMaxTokens),
355
+ contextWindowUsedTokens: finiteNonNegative(record.contextWindowUsedTokens)
356
+ };
357
+ return Object.values(usage).some((item) => item !== undefined) ? usage : undefined;
358
+ }
359
+ function findProviderEntry(value, provider) {
360
+ if (Array.isArray(value)) {
361
+ for (const item of value) {
362
+ const found = findProviderEntry(item, provider);
363
+ if (found)
364
+ return found;
365
+ }
366
+ return undefined;
367
+ }
368
+ if (!value || typeof value !== "object")
369
+ return undefined;
370
+ const record = value;
371
+ const id = stringField(record, ["provider", "id", "key"]);
372
+ if (id === provider && ("status" in record || "models" in record || "enabled" in record)) {
373
+ return record;
374
+ }
375
+ for (const child of Object.values(record)) {
376
+ const found = findProviderEntry(child, provider);
377
+ if (found)
378
+ return found;
379
+ }
380
+ return undefined;
381
+ }
382
+ function providerIds(value) {
383
+ const result = new Set();
384
+ const visit = (item) => {
385
+ if (Array.isArray(item)) {
386
+ for (const child of item)
387
+ visit(child);
388
+ return;
389
+ }
390
+ if (!item || typeof item !== "object")
391
+ return;
392
+ const record = item;
393
+ const id = stringField(record, ["provider", "id", "key"]);
394
+ if (id && ("status" in record || "enabled" in record || "models" in record))
395
+ result.add(id);
396
+ for (const child of Object.values(record))
397
+ visit(child);
398
+ };
399
+ visit(value);
400
+ return [...result];
401
+ }
402
+ function modelIds(value) {
403
+ const result = new Set();
404
+ const visit = (item) => {
405
+ if (Array.isArray(item)) {
406
+ for (const child of item)
407
+ visit(child);
408
+ return;
409
+ }
410
+ if (!item || typeof item !== "object")
411
+ return;
412
+ const record = item;
413
+ const id = stringField(record, ["id", "model", "name"]);
414
+ if (id &&
415
+ ("label" in record || "provider" in record || "aliases" in record || "isDefault" in record)) {
416
+ result.add(id);
417
+ }
418
+ if (Array.isArray(record.aliases)) {
419
+ for (const alias of record.aliases)
420
+ if (typeof alias === "string")
421
+ result.add(alias);
422
+ }
423
+ for (const [key, child] of Object.entries(record)) {
424
+ if (key !== "aliases")
425
+ visit(child);
426
+ }
427
+ };
428
+ visit(value);
429
+ return [...result];
430
+ }
431
+ function firstDiagnosticMessage(value) {
432
+ if (typeof value === "string" && value.trim())
433
+ return value.trim();
434
+ if (Array.isArray(value)) {
435
+ for (const child of value) {
436
+ const found = firstDiagnosticMessage(child);
437
+ if (found)
438
+ return found;
439
+ }
440
+ return undefined;
441
+ }
442
+ if (!value || typeof value !== "object")
443
+ return undefined;
444
+ const record = value;
445
+ for (const key of ["error", "message", "diagnostic", "detail"]) {
446
+ if (typeof record[key] === "string" && record[key].trim()) {
447
+ return record[key].trim();
448
+ }
449
+ }
450
+ for (const child of Object.values(record)) {
451
+ const found = firstDiagnosticMessage(child);
452
+ if (found)
453
+ return found;
454
+ }
455
+ return undefined;
456
+ }
457
+ function normalizeProviderModel(providerValue, modelValue) {
458
+ const provider = providerValue.trim();
459
+ if (!provider)
460
+ throw new Error("Paseo provider is required.");
461
+ const slash = provider.indexOf("/");
462
+ if (slash < 0)
463
+ return { provider, model: modelValue?.trim() || undefined };
464
+ const providerId = provider.slice(0, slash).trim();
465
+ const embedded = provider.slice(slash + 1).trim();
466
+ const explicit = modelValue?.trim();
467
+ if (!providerId || !embedded) {
468
+ throw new Error(`Invalid Paseo provider/model '${providerValue}'.`);
469
+ }
470
+ if (explicit && explicit !== embedded) {
471
+ throw new Error(`Conflicting Paseo model '${explicit}' versus embedded '${embedded}'.`);
472
+ }
473
+ return { provider: providerId, model: explicit || embedded };
474
+ }
475
+ function extractLastAssistantText(value) {
476
+ const out = [];
477
+ const visit = (item, assistant = false) => {
478
+ if (Array.isArray(item)) {
479
+ for (const child of item)
480
+ visit(child, assistant);
481
+ return;
482
+ }
483
+ if (!item || typeof item !== "object")
484
+ return;
485
+ const record = item;
486
+ const role = String(record.role ?? record.author ?? record.kind ?? record.type ?? "").toLowerCase();
487
+ const isAssistant = assistant || role.includes("assistant");
488
+ if (isAssistant) {
489
+ for (const key of ["text", "content", "message"]) {
490
+ if (typeof record[key] === "string" && record[key])
491
+ out.push(record[key]);
492
+ }
493
+ }
494
+ for (const child of Object.values(record))
495
+ visit(child, isAssistant);
496
+ };
497
+ visit(value);
498
+ return out.at(-1);
499
+ }
500
+ function isActiveStatus(status) {
501
+ return status === "working" || status === "running" || status === "streaming" || status === "starting";
502
+ }
503
+ function isTerminalStatus(status) {
504
+ return (status === "idle" ||
505
+ status === "finished" ||
506
+ status === "completed" ||
507
+ status === "failed" ||
508
+ status === "error" ||
509
+ status === "cancelled");
510
+ }
511
+ function finiteNonNegative(value) {
512
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
513
+ }
514
+ function finitePositive(value) {
515
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
516
+ }
517
+ function recordField(value, key) {
518
+ return value && typeof value === "object" && !Array.isArray(value)
519
+ ? value[key]
520
+ : undefined;
521
+ }
522
+ function stringField(record, keys) {
523
+ for (const key of keys) {
524
+ if (typeof record[key] === "string" && record[key])
525
+ return record[key];
526
+ }
527
+ return undefined;
528
+ }
529
+ function stringRecord(value) {
530
+ if (!value || typeof value !== "object" || Array.isArray(value))
531
+ return undefined;
532
+ const out = {};
533
+ for (const [key, item] of Object.entries(value)) {
534
+ if (typeof item === "string")
535
+ out[key] = item;
536
+ }
537
+ return Object.keys(out).length ? out : undefined;
538
+ }
539
+ function statusText(value) {
540
+ if (typeof value === "string")
541
+ return value;
542
+ if (value &&
543
+ typeof value === "object" &&
544
+ typeof value.status === "string") {
545
+ return value.status;
546
+ }
547
+ return undefined;
548
+ }
549
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/paseo/native.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { runProcess } from "../utils/process.js";
1
2
  import { detectPaseoCapabilities } from "./capabilities.js";
3
+ import { preflightPaseoProviderModel, waitForPaseoAgentNative } from "./native.js";
2
4
  import { createPaseoSdkAgent, dispatchPaseoSdkAgent, inspectPaseoSdkAgent, listPaseoSdkAgents, materializePaseoSdkAgent, probePaseoSdkAgent, runPaseoSdkAgent, waitPaseoSdkAgent, type PaseoSdkAgentOptions, type PaseoSdkAgentRecord } from "./sdk.js";
3
- import { runProcess } from "../utils/process.js";
5
+ import { recordPaseoTrace } from "./trace.js";
4
6
  export interface ManagedPaseoAgentOptions extends PaseoSdkAgentOptions {
5
7
  timeoutSeconds?: number;
6
8
  }
@@ -12,10 +14,16 @@ export interface ManagedPaseoAgentResult {
12
14
  status?: string;
13
15
  workspaceId?: string;
14
16
  transport: "sdk" | "cli";
17
+ observation?: "subscription" | "sdk-wait" | "cli-wait";
15
18
  }
16
19
  interface PaseoRuntimeDeps {
17
20
  run: typeof runProcess;
18
21
  detectCapabilities: typeof detectPaseoCapabilities;
22
+ trace?: typeof recordPaseoTrace;
23
+ native?: {
24
+ preflight: typeof preflightPaseoProviderModel;
25
+ wait: typeof waitForPaseoAgentNative;
26
+ };
19
27
  sdk: {
20
28
  create: typeof createPaseoSdkAgent;
21
29
  materialize: typeof materializePaseoSdkAgent;