@poncho-ai/harness 0.43.0 → 0.44.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @poncho-ai/harness@0.43.0 build /home/runner/work/poncho-ai/poncho-ai/packages/harness
2
+ > @poncho-ai/harness@0.44.0 build /home/runner/work/poncho-ai/poncho-ai/packages/harness
3
3
  > node scripts/embed-docs.js && tsup src/index.ts --format esm --dts
4
4
 
5
5
  [embed-docs] Generated poncho-docs.ts with 4 topics
@@ -8,9 +8,9 @@
8
8
  CLI tsup v8.5.1
9
9
  CLI Target: es2022
10
10
  ESM Build start
11
+ ESM dist/index.js 516.00 KB
11
12
  ESM dist/isolate-VY35DGLM.js 49.43 KB
12
- ESM dist/index.js 506.40 KB
13
- ESM ⚡️ Build success in 222ms
13
+ ESM ⚡️ Build success in 209ms
14
14
  DTS Build start
15
- DTS ⚡️ Build success in 6907ms
16
- DTS dist/index.d.ts 80.85 KB
15
+ DTS ⚡️ Build success in 6795ms
16
+ DTS dist/index.d.ts 83.51 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,96 @@
1
1
  # @poncho-ai/harness
2
2
 
3
+ ## 0.44.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`e6f5c14`](https://github.com/cesr/poncho-ai/commit/e6f5c142a368389b3eb62e80731612048d9198b5) Thanks [@cesr](https://github.com/cesr)! - VFS adapter now supports read-only virtual mounts. `HarnessOptions.virtualMounts` accepts entries like `{ prefix: "/system/", source: "/path/on/disk" }`; reads under the prefix are served from the local filesystem source directory, writes are rejected with `EROFS`. Used by platforms (e.g. PonchOS) to expose deployment-shipped defaults without persisting them in each tenant's VFS — improvements ship via normal deploys and tenant data stays portable. Empty by default; CLI/dev workflows are unaffected.
8
+
9
+ ### Patch Changes
10
+
11
+ - [`b171c0e`](https://github.com/cesr/poncho-ai/commit/b171c0e9c4cdc149e8282611f7333519b5e04e38) Thanks [@cesr](https://github.com/cesr)! - harness: properly decode `FileInput.data` per its documented contract
12
+
13
+ `FileInput.data` is documented in `@poncho-ai/sdk` as accepting raw
14
+ base64, `data:<mime>;base64,<…>` URIs, or `https?://` URLs. The
15
+ runtime used to call `Buffer.from(data, "base64")` unconditionally,
16
+ which silently produced garbage bytes for data URIs (Node's base64
17
+ decoder ignores invalid chars like `:` `;` `,` rather than throwing,
18
+ so the file's magic bytes were destroyed). Anthropic responded with
19
+ "Could not process image" on every turn that attached an image as a
20
+ data URI — including PonchOS's `resolveAttachment`, which built data
21
+ URIs by following the documented format.
22
+
23
+ Introduce `decodeFileInputData(data)` in `upload-store.ts` that
24
+ detects the three formats and decodes accordingly, and call it from
25
+ `AgentHarness.run` and `runConversationTurn` instead of the inline
26
+ `Buffer.from(_, "base64")`. Pinned by a new test that exercises raw
27
+ base64, simple data URIs, and data URIs with mime parameters.
28
+
29
+ Callers that have been passing raw base64 all along see no behavior
30
+ change.
31
+
32
+ - [`4d322f7`](https://github.com/cesr/poncho-ai/commit/4d322f79900f449d1f7783f697eef0351cd45f0a) Thanks [@cesr](https://github.com/cesr)! - fix(harness): reminders.scheduledAt no longer rounds on Postgres
33
+
34
+ Two related Postgres-only bugs in reminder storage:
35
+ 1. **Schema precision**: the `reminders.scheduled_at` column was declared
36
+ `REAL` so SQLite would get its 8-byte double. Postgres maps `REAL` to
37
+ `float4` (4 bytes, ~7 digit precision), which silently rounds
38
+ millisecond epoch values (13 digits). Every reminder write+read on
39
+ Postgres returned a different value than it stored — and recurring
40
+ reminders would fire at wrong times. New migration v7 alters the
41
+ column to `BIGINT` (Postgres only; SQLite's `REAL` is already
42
+ double-precision and stays).
43
+ 2. **Wire-format coercion**: `rowToReminder` declared `scheduledAt: row.scheduled_at as number`
44
+ but didn't actually coerce. With BIGINT, postgres-js returns the
45
+ value as a string (deliberate, to avoid JS-side precision loss).
46
+ The `as` cast is type-only; the runtime value stayed a string,
47
+ making strict equality and arithmetic fail. Now coerces with
48
+ `Number(...)`, which is safe — ms epochs max at ~10^16 in year 2286,
49
+ well under `Number.MAX_SAFE_INTEGER` (2^53).
50
+
51
+ Same coercion applied to `occurrenceCount` for consistency.
52
+
53
+ Discovered while wiring `/me/reminders` in PonchOS — every PATCH-back
54
+ returned a different scheduledAt than was sent.
55
+
56
+ - [`1499eb4`](https://github.com/cesr/poncho-ai/commit/1499eb4f63cc480fb42ec4e5568e023b84e54b5a) Thanks [@cesr](https://github.com/cesr)! - harness: discover VFS skills written without running bash
57
+
58
+ Per-tenant VFS skill discovery was tied to the storage engine's
59
+ in-memory path cache, which was only ever populated by
60
+ `bash-manager.refreshPathCache` before a bash invocation. Chat-only
61
+ flows (PonchOS's iOS Files browser, the `write_file` tool, any agent
62
+ that never shells out) left the cache empty, the patched `writeFile`'s
63
+ incremental update was a silent no-op (it only mutates when the cache
64
+ is already initialized for that tenant), and the skill fingerprint
65
+ stuck at `""` for the lifetime of the harness instance — so any
66
+ SKILL.md authored after `getSkillsForTenant` first ran for a tenant
67
+ was invisible from that point forward.
68
+
69
+ Refresh the engine's path cache inside `getSkillsForTenant` before
70
+ computing the fingerprint. One extra SELECT-paths round-trip per
71
+ turn (skills are checked once per `buildSystemPrompt`); correctness
72
+ for the increasingly common no-bash deployments wins easily over the
73
+ saved query.
74
+
75
+ Surfaced by PonchOS (no bash, iOS Files + write_file is the only way
76
+ SKILL.md ends up in `/skills/`).
77
+
78
+ ## 0.43.1
79
+
80
+ ### Patch Changes
81
+
82
+ - [`134fae7`](https://github.com/cesr/poncho-ai/commit/134fae7eb4f3658b8d2dc0a5e560b0bcad094679) Thanks [@cesr](https://github.com/cesr)! - fix(harness): conversations.search now works on Postgres
83
+
84
+ The SQL for `engine.conversations.search()` matched `data LIKE $3`, but
85
+ `data` is a `jsonb` column in Postgres — `jsonb LIKE text` raises
86
+ `operator does not exist: jsonb ~~ unknown` (Postgres error 42883), so
87
+ every search call against a Postgres-backed engine 500'd at runtime.
88
+
89
+ Cast `data` to text in the Postgres branch (`data::text LIKE $3`).
90
+ SQLite stores `data` as TEXT-of-JSON, so no cast there.
91
+
92
+ Discovered while wiring `GET /me/conversations/search` in PonchOS.
93
+
3
94
  ## 0.43.0
4
95
 
5
96
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ import { LanguageModel } from 'ai';
2
2
  import * as _poncho_ai_sdk from '@poncho-ai/sdk';
3
3
  import { Message, ToolContext, ToolDefinition, JsonSchema, RunResult, AgentFailure, RunInput, AgentEvent, FileInput } from '@poncho-ai/sdk';
4
4
  export { ToolDefinition, defineTool } from '@poncho-ai/sdk';
5
- import { z } from 'zod';
6
5
  import { IFileSystem, BufferEncoding, FsStat, FileContent, MkdirOptions, RmOptions, CpOptions, Bash } from 'just-bash';
6
+ import { z } from 'zod';
7
7
 
8
8
  interface AgentModelConfig {
9
9
  provider: string;
@@ -738,6 +738,15 @@ interface UploadStore {
738
738
  }
739
739
  /** Derive a content-addressed key from file data. */
740
740
  declare const deriveUploadKey: (data: Buffer, mediaType: string) => string;
741
+ /**
742
+ * Decode the `FileInput.data` field per its documented contract: it may be a
743
+ * raw base64 string, a `data:<mime>;base64,<…>` URI, or an `https?://` URL.
744
+ * Returns the decoded bytes. Older versions of the harness called
745
+ * `Buffer.from(data, "base64")` unconditionally; that silently produced
746
+ * garbage bytes for data URIs (the `:` / `;` / `,` in the prefix are not
747
+ * valid base64 chars but Node's decoder ignores them rather than throwing).
748
+ */
749
+ declare const decodeFileInputData: (data: string) => Promise<Buffer>;
741
750
  declare class LocalUploadStore implements UploadStore {
742
751
  private readonly uploadsDir;
743
752
  constructor(workingDir: string);
@@ -935,6 +944,78 @@ interface StorageEngine {
935
944
  };
936
945
  }
937
946
 
947
+ /**
948
+ * Read-only virtual mount mapping a VFS path prefix to a local filesystem
949
+ * directory. All read operations under the prefix resolve via local FS;
950
+ * writes throw. The prefix is normalised internally to end with "/".
951
+ */
952
+ interface VirtualMount {
953
+ /** VFS prefix, e.g. "/system/". Leading slash required; trailing slash
954
+ * optional (normalised). Must be a single non-root segment in practice
955
+ * but no validation is enforced here. */
956
+ prefix: string;
957
+ /** Absolute local FS path to serve from, e.g. "/srv/poncho/system". */
958
+ source: string;
959
+ }
960
+ declare class PonchoFsAdapter implements IFileSystem {
961
+ private engine;
962
+ private tenantId;
963
+ private limits;
964
+ private mounts;
965
+ constructor(engine: StorageEngine, tenantId: string, limits: {
966
+ maxFileSize: number;
967
+ maxTotalStorage: number;
968
+ }, mounts?: VirtualMount[]);
969
+ /** Find which mount, if any, a normalised VFS path falls under.
970
+ * Returns the relative path within the mount's source dir (empty string
971
+ * when the path is exactly the mount root). */
972
+ private routeToMount;
973
+ /** Treat `np` as a directory and return mount-root segments that should be
974
+ * listed as virtual subdirectories. E.g. with mount "/system/", reading
975
+ * "/" returns ["system"]; reading "/system" goes via routeToMount and
976
+ * serves from local FS instead. */
977
+ private virtualChildrenAt;
978
+ private toLocal;
979
+ /** Build an FsStat from a node fs.Stats. */
980
+ private toFsStat;
981
+ /** Synthesise a directory stat for a virtual ancestor (e.g. "/system"
982
+ * when "/system/jobs/" is mounted but "/system" itself isn't a real dir
983
+ * on disk). Used so `ls /` and `stat /system` work without surprises. */
984
+ private syntheticDirStat;
985
+ readFile(path: string, _options?: {
986
+ encoding?: BufferEncoding | null;
987
+ } | BufferEncoding): Promise<string>;
988
+ readFileBuffer(path: string): Promise<Uint8Array>;
989
+ exists(path: string): Promise<boolean>;
990
+ stat(path: string): Promise<FsStat>;
991
+ readdir(path: string): Promise<string[]>;
992
+ readdirWithFileTypes(path: string): Promise<Array<{
993
+ name: string;
994
+ isFile: boolean;
995
+ isDirectory: boolean;
996
+ isSymbolicLink: boolean;
997
+ }>>;
998
+ writeFile(path: string, content: FileContent, _options?: {
999
+ encoding?: BufferEncoding;
1000
+ } | BufferEncoding): Promise<void>;
1001
+ appendFile(path: string, content: FileContent, _options?: {
1002
+ encoding?: BufferEncoding;
1003
+ } | BufferEncoding): Promise<void>;
1004
+ mkdir(path: string, options?: MkdirOptions): Promise<void>;
1005
+ rm(path: string, options?: RmOptions): Promise<void>;
1006
+ cp(src: string, dest: string, options?: CpOptions): Promise<void>;
1007
+ mv(src: string, dest: string): Promise<void>;
1008
+ resolvePath(base: string, path: string): string;
1009
+ realpath(path: string): Promise<string>;
1010
+ getAllPaths(): string[];
1011
+ chmod(path: string, mode: number): Promise<void>;
1012
+ utimes(path: string, _atime: Date, mtime: Date): Promise<void>;
1013
+ symlink(target: string, linkPath: string): Promise<void>;
1014
+ link(existingPath: string, newPath: string): Promise<void>;
1015
+ readlink(path: string): Promise<string>;
1016
+ lstat(path: string): Promise<FsStat>;
1017
+ }
1018
+
938
1019
  interface SecretsStore {
939
1020
  get(tenantId: string): Promise<Record<string, string>>;
940
1021
  set(tenantId: string, key: string, value: string): Promise<void>;
@@ -1082,6 +1163,15 @@ interface HarnessOptions {
1082
1163
  * `resolveStateConfig`, etc.) run as today regardless of source.
1083
1164
  */
1084
1165
  config?: PonchoConfig;
1166
+ /**
1167
+ * Read-only virtual mounts overlaid on the VFS. Each mount maps a VFS
1168
+ * prefix (e.g. "/system/") to a local filesystem directory; reads under
1169
+ * the prefix are served from local disk, writes are rejected. Used by
1170
+ * platforms like PonchOS to expose deployment-shipped defaults (system
1171
+ * jobs, system skills) without storing them in each tenant's VFS.
1172
+ * Empty by default — no system mounts in the CLI / dev workflow.
1173
+ */
1174
+ virtualMounts?: VirtualMount[];
1085
1175
  }
1086
1176
  interface HarnessRunOutput {
1087
1177
  runId: string;
@@ -1136,6 +1226,8 @@ declare class AgentHarness {
1136
1226
  storageEngine?: StorageEngine;
1137
1227
  /** Bash environment manager (creates per-tenant bash instances). */
1138
1228
  private bashManager?;
1229
+ /** Read-only virtual mounts overlaid on the VFS. Empty by default. */
1230
+ private virtualMounts;
1139
1231
  private resolveToolAccess;
1140
1232
  private isToolEnabled;
1141
1233
  private registerIfMissing;
@@ -1602,48 +1694,6 @@ declare function createMemoryStoreFromEngine(engine: StorageEngine, tenantId?: s
1602
1694
  declare function createTodoStoreFromEngine(engine: StorageEngine): TodoStore;
1603
1695
  declare function createReminderStoreFromEngine(engine: StorageEngine): ReminderStore;
1604
1696
 
1605
- declare class PonchoFsAdapter implements IFileSystem {
1606
- private engine;
1607
- private tenantId;
1608
- private limits;
1609
- constructor(engine: StorageEngine, tenantId: string, limits: {
1610
- maxFileSize: number;
1611
- maxTotalStorage: number;
1612
- });
1613
- readFile(path: string, _options?: {
1614
- encoding?: BufferEncoding | null;
1615
- } | BufferEncoding): Promise<string>;
1616
- readFileBuffer(path: string): Promise<Uint8Array>;
1617
- exists(path: string): Promise<boolean>;
1618
- stat(path: string): Promise<FsStat>;
1619
- readdir(path: string): Promise<string[]>;
1620
- readdirWithFileTypes(path: string): Promise<Array<{
1621
- name: string;
1622
- isFile: boolean;
1623
- isDirectory: boolean;
1624
- isSymbolicLink: boolean;
1625
- }>>;
1626
- writeFile(path: string, content: FileContent, _options?: {
1627
- encoding?: BufferEncoding;
1628
- } | BufferEncoding): Promise<void>;
1629
- appendFile(path: string, content: FileContent, _options?: {
1630
- encoding?: BufferEncoding;
1631
- } | BufferEncoding): Promise<void>;
1632
- mkdir(path: string, options?: MkdirOptions): Promise<void>;
1633
- rm(path: string, options?: RmOptions): Promise<void>;
1634
- cp(src: string, dest: string, options?: CpOptions): Promise<void>;
1635
- mv(src: string, dest: string): Promise<void>;
1636
- resolvePath(base: string, path: string): string;
1637
- realpath(path: string): Promise<string>;
1638
- getAllPaths(): string[];
1639
- chmod(path: string, mode: number): Promise<void>;
1640
- utimes(path: string, _atime: Date, mtime: Date): Promise<void>;
1641
- symlink(target: string, linkPath: string): Promise<void>;
1642
- link(existingPath: string, newPath: string): Promise<void>;
1643
- readlink(path: string): Promise<string>;
1644
- lstat(path: string): Promise<FsStat>;
1645
- }
1646
-
1647
1697
  declare class BashEnvironmentManager {
1648
1698
  private engine;
1649
1699
  private limits;
@@ -1651,10 +1701,11 @@ declare class BashEnvironmentManager {
1651
1701
  private filesystems;
1652
1702
  private readonly workingDir;
1653
1703
  private readonly bashOptions;
1704
+ private readonly virtualMounts;
1654
1705
  constructor(engine: StorageEngine, limits: {
1655
1706
  maxFileSize: number;
1656
1707
  maxTotalStorage: number;
1657
- }, workingDir: string | null, bashConfig?: BashConfig, network?: NetworkConfig);
1708
+ }, workingDir: string | null, bashConfig?: BashConfig, network?: NetworkConfig, virtualMounts?: VirtualMount[]);
1658
1709
  /** Return the combined IFileSystem (VFS + optional /project mount) for a tenant. */
1659
1710
  getFs(tenantId: string): IFileSystem;
1660
1711
  getOrCreate(tenantId: string): Bash;
@@ -1962,4 +2013,4 @@ interface RunConversationTurnResult {
1962
2013
  }
1963
2014
  declare const runConversationTurn: (opts: RunConversationTurnOpts) => Promise<RunConversationTurnResult>;
1964
2015
 
1965
- export { type ActiveConversationRun, type ActiveSubagentRun, type AgentFrontmatter, AgentHarness, type AgentIdentity, type AgentLimitsConfig, type AgentModelConfig, AgentOrchestrator, type ApprovalEventItem, type ArchivedToolResult$1 as ArchivedToolResult, type BashConfig, BashEnvironmentManager, type BashExecutionLimits, type BuiltInToolToggles, CALLBACK_LOCK_STALE_MS, type CompactMessagesOptions, type CompactResult, type CompactionConfig, type ContinuationHooks, type Conversation, type ConversationCreateInit, type ConversationState, type ConversationStatusSnapshot, type ConversationStore, type ConversationSummary, type CreateSkillToolsOptions, type CronJobConfig, DEFAULT_AGENT_DESCRIPTION, DEFAULT_AGENT_NAME, DEFAULT_MAX_STEPS, DEFAULT_MODEL_NAME, DEFAULT_MODEL_PROVIDER, DEFAULT_TEMPERATURE, DEFAULT_TIMEOUT, type DefaultAgentDefinitionOptions, type EventSink, type ExecuteTurnResult, type HarnessOptions, type HarnessRunOutput, type HistorySource, InMemoryConversationStore, InMemoryEngine, InMemoryStateStore, type IsolateBinding, type IsolateConfig, LocalMcpBridge, LocalUploadStore, MAX_CONCURRENT_SUBAGENTS, MAX_CONTINUATION_COUNT, MAX_SUBAGENT_CALLBACK_COUNT, MAX_SUBAGENT_NESTING, type MainMemory, type McpConfig, type MemoryConfig, type MemoryStore, type MessagingChannelConfig, type ModelProviderFactory, type NetworkConfig, OPENAI_CODEX_CLIENT_ID, type OpenAICodexAuthConfig, type OpenAICodexDeviceAuthRequest, type OpenAICodexSession, type OrchestratorHooks, type OrchestratorOptions, type OtlpConfig, type OtlpOption, PONCHO_UPLOAD_SCHEME, type ParsedAgent, type PendingSubagentApproval, type PendingSubagentResult, type PendingToolCall, type PonchoConfig, PonchoFsAdapter, PostgresEngine, type ProviderConfig, type Recurrence, type RecurrenceType, type Reminder, type ReminderCreateInput, type ReminderStatus, type ReminderStore, type RemoteMcpServerConfig, type RunConversationTurnOpts, type RunConversationTurnResult, type RunOutcome, type RunRequest, type RuntimeRenderContext, S3UploadStore, STALE_SUBAGENT_THRESHOLD_MS, STORAGE_SCHEMA_VERSION, type SecretsStore, type SkillContextEntry, type SkillMetadata, type SkillSource, SqliteEngine, type StateConfig, type StateProviderName, type StateStore, type StorageConfig, type StorageEngine, type StorageFactoryOptions, type StorageProvider, type StoredApproval, type SubagentManager, type SubagentResult, type SubagentSpawnResult, type SubagentSummary, TOOL_RESULT_ARCHIVE_PARAM, type TelemetryConfig, TelemetryEmitter, type TenantTokenPayload, type ToolAccess, type ToolCall, ToolDispatcher, type ToolExecutionResult, type TurnDraftState, type TurnResultMetadata, type TurnSection, type UploadStore, type UploadsConfig, VFS_SCHEME, VercelBlobUploadStore, type VfsDirEntry, type VfsStat, applyTurnMetadata, buildAgentDirectoryName, buildApprovalCheckpoints, buildAssistantMetadata, buildSkillContextWindow, buildToolCompletedText, cloneSections, compactMessages, completeOpenAICodexDeviceAuth, computeNextOccurrence, createBashTool, createConversationStore, createConversationStoreFromEngine, createDefaultTools, createDeleteDirectoryTool, createDeleteTool, createEditTool, createMemoryStore, createMemoryStoreFromEngine, createMemoryTools, createModelProvider, createReminderStore, createReminderStoreFromEngine, createReminderTools, createSearchTools, createSecretsStore, createSkillTools, createStateStore, createStorageEngine, createSubagentTools, createTodoStoreFromEngine, createTurnDraftState, createUploadStore, createWriteTool, defaultAgentDefinition, deleteOpenAICodexSession, deriveUploadKey, ensureAgentIdentity, estimateTokens, estimateTotalTokens, executeConversationTurn, findSafeSplitPoint, flushTurnDraft, generateAgentId, getAgentStoreDirectory, getModelContextWindow, getOpenAICodexAccessToken, getOpenAICodexAuthFilePath, getOpenAICodexRequiredScopes, getPonchoStoreRoot, isMessageArray, jsonSchemaToZod, loadCanonicalHistory, loadPonchoConfig, loadRunHistory, loadSkillContext, loadSkillInstructions, loadSkillMetadata, loadVfsSkillMetadata, mergeSkills, normalizeApprovalCheckpoint, normalizeOtlp, normalizeScriptPolicyPath, parseAgentFile, parseAgentMarkdown, parseSkillFrontmatter, ponchoDocsTool, readOpenAICodexSession, readSkillResource, recordStandardTurnEvent, renderAgentPrompt, resolveAgentIdentity, resolveCompactionConfig, resolveEnv, resolveMemoryConfig, resolveRunRequest, resolveSkillDirs, resolveStateConfig, runConversationTurn, slugifyStorageComponent, startOpenAICodexDeviceAuth, verifyTenantToken, withToolResultArchiveParam, writeOpenAICodexSession };
2016
+ export { type ActiveConversationRun, type ActiveSubagentRun, type AgentFrontmatter, AgentHarness, type AgentIdentity, type AgentLimitsConfig, type AgentModelConfig, AgentOrchestrator, type ApprovalEventItem, type ArchivedToolResult$1 as ArchivedToolResult, type BashConfig, BashEnvironmentManager, type BashExecutionLimits, type BuiltInToolToggles, CALLBACK_LOCK_STALE_MS, type CompactMessagesOptions, type CompactResult, type CompactionConfig, type ContinuationHooks, type Conversation, type ConversationCreateInit, type ConversationState, type ConversationStatusSnapshot, type ConversationStore, type ConversationSummary, type CreateSkillToolsOptions, type CronJobConfig, DEFAULT_AGENT_DESCRIPTION, DEFAULT_AGENT_NAME, DEFAULT_MAX_STEPS, DEFAULT_MODEL_NAME, DEFAULT_MODEL_PROVIDER, DEFAULT_TEMPERATURE, DEFAULT_TIMEOUT, type DefaultAgentDefinitionOptions, type EventSink, type ExecuteTurnResult, type HarnessOptions, type HarnessRunOutput, type HistorySource, InMemoryConversationStore, InMemoryEngine, InMemoryStateStore, type IsolateBinding, type IsolateConfig, LocalMcpBridge, LocalUploadStore, MAX_CONCURRENT_SUBAGENTS, MAX_CONTINUATION_COUNT, MAX_SUBAGENT_CALLBACK_COUNT, MAX_SUBAGENT_NESTING, type MainMemory, type McpConfig, type MemoryConfig, type MemoryStore, type MessagingChannelConfig, type ModelProviderFactory, type NetworkConfig, OPENAI_CODEX_CLIENT_ID, type OpenAICodexAuthConfig, type OpenAICodexDeviceAuthRequest, type OpenAICodexSession, type OrchestratorHooks, type OrchestratorOptions, type OtlpConfig, type OtlpOption, PONCHO_UPLOAD_SCHEME, type ParsedAgent, type PendingSubagentApproval, type PendingSubagentResult, type PendingToolCall, type PonchoConfig, PonchoFsAdapter, PostgresEngine, type ProviderConfig, type Recurrence, type RecurrenceType, type Reminder, type ReminderCreateInput, type ReminderStatus, type ReminderStore, type RemoteMcpServerConfig, type RunConversationTurnOpts, type RunConversationTurnResult, type RunOutcome, type RunRequest, type RuntimeRenderContext, S3UploadStore, STALE_SUBAGENT_THRESHOLD_MS, STORAGE_SCHEMA_VERSION, type SecretsStore, type SkillContextEntry, type SkillMetadata, type SkillSource, SqliteEngine, type StateConfig, type StateProviderName, type StateStore, type StorageConfig, type StorageEngine, type StorageFactoryOptions, type StorageProvider, type StoredApproval, type SubagentManager, type SubagentResult, type SubagentSpawnResult, type SubagentSummary, TOOL_RESULT_ARCHIVE_PARAM, type TelemetryConfig, TelemetryEmitter, type TenantTokenPayload, type ToolAccess, type ToolCall, ToolDispatcher, type ToolExecutionResult, type TurnDraftState, type TurnResultMetadata, type TurnSection, type UploadStore, type UploadsConfig, VFS_SCHEME, VercelBlobUploadStore, type VfsDirEntry, type VfsStat, type VirtualMount, applyTurnMetadata, buildAgentDirectoryName, buildApprovalCheckpoints, buildAssistantMetadata, buildSkillContextWindow, buildToolCompletedText, cloneSections, compactMessages, completeOpenAICodexDeviceAuth, computeNextOccurrence, createBashTool, createConversationStore, createConversationStoreFromEngine, createDefaultTools, createDeleteDirectoryTool, createDeleteTool, createEditTool, createMemoryStore, createMemoryStoreFromEngine, createMemoryTools, createModelProvider, createReminderStore, createReminderStoreFromEngine, createReminderTools, createSearchTools, createSecretsStore, createSkillTools, createStateStore, createStorageEngine, createSubagentTools, createTodoStoreFromEngine, createTurnDraftState, createUploadStore, createWriteTool, decodeFileInputData, defaultAgentDefinition, deleteOpenAICodexSession, deriveUploadKey, ensureAgentIdentity, estimateTokens, estimateTotalTokens, executeConversationTurn, findSafeSplitPoint, flushTurnDraft, generateAgentId, getAgentStoreDirectory, getModelContextWindow, getOpenAICodexAccessToken, getOpenAICodexAuthFilePath, getOpenAICodexRequiredScopes, getPonchoStoreRoot, isMessageArray, jsonSchemaToZod, loadCanonicalHistory, loadPonchoConfig, loadRunHistory, loadSkillContext, loadSkillInstructions, loadSkillMetadata, loadVfsSkillMetadata, mergeSkills, normalizeApprovalCheckpoint, normalizeOtlp, normalizeScriptPolicyPath, parseAgentFile, parseAgentMarkdown, parseSkillFrontmatter, ponchoDocsTool, readOpenAICodexSession, readSkillResource, recordStandardTurnEvent, renderAgentPrompt, resolveAgentIdentity, resolveCompactionConfig, resolveEnv, resolveMemoryConfig, resolveRunRequest, resolveSkillDirs, resolveStateConfig, runConversationTurn, slugifyStorageComponent, startOpenAICodexDeviceAuth, verifyTenantToken, withToolResultArchiveParam, writeOpenAICodexSession };