stitchkit 0.70.0 → 0.70.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/agent-runtime/coding-tool-files.d.ts.map +1 -1
  2. package/dist/agent-runtime/coding-tool-paths.d.ts +0 -1
  3. package/dist/agent-runtime/coding-tool-paths.d.ts.map +1 -1
  4. package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -1
  5. package/dist/agent-runtime/contained-files.d.ts +30 -7
  6. package/dist/agent-runtime/contained-files.d.ts.map +1 -1
  7. package/dist/agent-runtime/harness-control.d.ts +2 -0
  8. package/dist/agent-runtime/harness-control.d.ts.map +1 -1
  9. package/dist/agent-runtime/history-chronology.d.ts +19 -0
  10. package/dist/agent-runtime/history-chronology.d.ts.map +1 -0
  11. package/dist/agent-runtime/history.d.ts.map +1 -1
  12. package/dist/agent-runtime/run-execution.d.ts.map +1 -1
  13. package/dist/agent-runtime/terminal-status.d.ts.map +1 -1
  14. package/dist/agent-runtime-browser.js +51 -51
  15. package/dist/agent-runtime-coding-tools.js +31 -34
  16. package/dist/agent-runtime-harness.js +61 -17
  17. package/dist/agent-runtime-openrouter.js +2 -2
  18. package/dist/agent-runtime-sqlite-bun.js +5 -5
  19. package/dist/agent-runtime-sqlite-node.js +5 -5
  20. package/dist/agent-runtime.js +110 -110
  21. package/dist/application/server-resource.d.ts +1 -0
  22. package/dist/application/server-resource.d.ts.map +1 -1
  23. package/dist/application-grammy.js +2 -2
  24. package/dist/application.js +68 -65
  25. package/dist/browser/live-state.d.ts +126 -0
  26. package/dist/browser/live-state.d.ts.map +1 -0
  27. package/dist/cli.js +5 -5
  28. package/dist/contract/index.js +20 -20
  29. package/dist/declaration.d.ts +4 -0
  30. package/dist/declaration.d.ts.map +1 -1
  31. package/dist/declaration.js +22 -22
  32. package/dist/files.js +3 -3
  33. package/dist/index-1z5xxfst.js +397 -0
  34. package/dist/{index-vy5bjy07.js → index-4qfqy0m6.js} +21 -31
  35. package/dist/{index-dk6e56g0.js → index-7wpgrqa8.js} +37 -2
  36. package/dist/{index-10gbbbaa.js → index-9sx8tbz2.js} +1 -1
  37. package/dist/{index-38hs3a58.js → index-a01jky8m.js} +73 -8
  38. package/dist/{index-hsabxjz0.js → index-jw81xr75.js} +1 -1
  39. package/dist/{index-6wzr93cg.js → index-w0445741.js} +1 -1
  40. package/dist/index-y2s6h5bf.js +83 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +667 -56
  44. package/dist/node.js +47 -27
  45. package/dist/observability/index.js +22 -22
  46. package/dist/react.js +2 -2
  47. package/dist/realtime/contract.d.ts +30 -11
  48. package/dist/realtime/contract.d.ts.map +1 -1
  49. package/dist/realtime/index.d.ts +1 -1
  50. package/dist/realtime/index.d.ts.map +1 -1
  51. package/dist/server/bun.d.ts.map +1 -1
  52. package/dist/server/index.js +88 -80
  53. package/dist/server/multipart.d.ts.map +1 -1
  54. package/dist/server/node.d.ts.map +1 -1
  55. package/dist/server/process-signals.d.ts.map +1 -1
  56. package/dist/server/shutdown.d.ts +2 -0
  57. package/dist/server/shutdown.d.ts.map +1 -1
  58. package/dist/testing/surface-conformance.d.ts +4 -2
  59. package/dist/testing/surface-conformance.d.ts.map +1 -1
  60. package/dist/testing.js +124 -113
  61. package/dist/tools.js +57 -57
  62. package/llms-full.txt +246 -17
  63. package/native/darwin-arm64.node +0 -0
  64. package/native/darwin-x64.node +0 -0
  65. package/package.json +3 -1
  66. package/dist/index-es0h4w26.js +0 -63
  67. package/dist/index-xbtcszs7.js +0 -202
@@ -1 +1 @@
1
- {"version":3,"file":"coding-tool-files.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-files.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAK3B,MAAM,wBAAwB,CAAC;AA0BhC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,SAAS,yBAAyB,EAAE,CAmFtC"}
1
+ {"version":3,"file":"coding-tool-files.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-files.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAK3B,MAAM,wBAAwB,CAAC;AAyBhC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,SAAS,yBAAyB,EAAE,CAuFtC"}
@@ -13,7 +13,6 @@ export declare function editableCodingPath(root: string, requested: string, maxP
13
13
  relative: string;
14
14
  }>;
15
15
  export declare function authorizeCodingTool(config: AgentCodingToolConfig, request: AgentCodingToolAuthorization): Promise<void>;
16
- export declare function atomicCodingReplace(target: string, content: string, mode?: number): Promise<void>;
17
16
  /** Serialize framework-owned compare-and-replace transactions for one canonical target. */
18
17
  export declare function withCodingPathLock<T>(target: string, work: () => Promise<T>): Promise<T>;
19
18
  export declare function textOccurrences(source: string, search: string): number;
@@ -1 +1 @@
1
- {"version":3,"file":"coding-tool-paths.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-paths.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,4BAA4B,EAEjC,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAoBhC,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAGzF;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;;;GAKrB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;;;GAarB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;;;GAQrB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAYf;AAID,2FAA2F;AAC3F,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUtE"}
1
+ {"version":3,"file":"coding-tool-paths.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-paths.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,4BAA4B,EAEjC,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAoBhC,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAGzF;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;;;GAKrB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;;;GAarB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM;;;GAQrB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAGf;AAID,2FAA2F;AAC3F,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"coding-tool-search-patch.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-search-patch.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAgEhC,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,SAAS,yBAAyB,EAAE,CAqItC"}
1
+ {"version":3,"file":"coding-tool-search-patch.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/coding-tool-search-patch.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAiEhC,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,SAAS,yBAAyB,EAAE,CAsItC"}
@@ -1,4 +1,4 @@
1
- import { type FileHandle } from 'node:fs/promises';
1
+ import { type Stats } from 'node:fs';
2
2
  export interface ContainedFile {
3
3
  absolute: string;
4
4
  relative: string;
@@ -14,18 +14,40 @@ export interface ContainedFileScan {
14
14
  skippedDirectories: number;
15
15
  skippedSymlinks: number;
16
16
  }
17
+ export interface ContainedFileHandle {
18
+ readonly fd: number;
19
+ close(): Promise<void>;
20
+ read(buffer: Buffer, offset: number, length: number, position: number): Promise<{
21
+ bytesRead: number;
22
+ }>;
23
+ stat(): Promise<Stats>;
24
+ }
25
+ interface ContainedEntryMetadata {
26
+ mode: number;
27
+ isDirectory(): boolean;
28
+ isFile(): boolean;
29
+ isSymbolicLink(): boolean;
30
+ }
17
31
  export interface ContainedParent {
18
- handle: FileHandle;
19
- path: string;
32
+ handle: ContainedFileHandle;
20
33
  basename: string;
21
34
  }
22
35
  /** Pin every ancestor as a directory descriptor before returning the final parent capability. */
23
36
  export declare function openContainedParent(root: string, relative: string): Promise<ContainedParent>;
24
37
  /** Open a final regular-file candidate through pinned ancestors without following symlinks. */
25
- export declare function openContainedFile(root: string, relative: string): Promise<FileHandle>;
26
- export declare function assertContainedFileCurrent(root: string, relative: string, expected: FileHandle): Promise<void>;
27
- export declare function assertContainedParentCurrent(root: string, relative: string, expected: FileHandle): Promise<void>;
28
- export declare function readContainedUtf8Handle(handle: FileHandle, maxBytes: number): Promise<{
38
+ export declare function openContainedFile(root: string, relative: string): Promise<ContainedFileHandle>;
39
+ export declare function assertContainedFileCurrent(root: string, relative: string, expected: ContainedFileHandle): Promise<void>;
40
+ export declare function assertContainedParentCurrent(root: string, relative: string, expected: ContainedFileHandle): Promise<void>;
41
+ /** Create or atomically replace one direct child through the pinned parent descriptor. */
42
+ export declare function writeContainedFile(input: {
43
+ parent: ContainedParent;
44
+ content: string;
45
+ replace: boolean;
46
+ mode?: number;
47
+ }): Promise<void>;
48
+ export declare function containedEntryMetadata(parent: ContainedParent): Promise<ContainedEntryMetadata | null>;
49
+ export declare function openContainedParentFile(parent: ContainedParent): Promise<ContainedFileHandle>;
50
+ export declare function readContainedUtf8Handle(handle: ContainedFileHandle, maxBytes: number): Promise<{
29
51
  text: string;
30
52
  bytes: number;
31
53
  mode: number;
@@ -53,4 +75,5 @@ export declare function scanContainedFiles(input: {
53
75
  skipUnreadable?: boolean;
54
76
  excludeDirectory?: (relative: string) => boolean;
55
77
  }): Promise<ContainedFileScan>;
78
+ export {};
56
79
  //# sourceMappingURL=contained-files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contained-files.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/contained-files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAA2B,MAAM,kBAAkB,CAAC;AAG5E,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAuCD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iGAAiG;AACjG,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAwB1B;AAED,+FAA+F;AAC/F,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgB3F;AASD,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBxD;AAED,yFAAyF;AACzF,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAOxD;AAED,+FAA+F;AAC/F,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAIpC;AAED,4FAA4F;AAC5F,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmF7B"}
1
+ {"version":3,"file":"contained-files.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/contained-files.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface AgentHarnessControlServer {
19
19
  }
20
20
  export interface AgentHarnessControlServerConfig {
21
21
  maxPendingEvents?: number;
22
+ /** Maximum concurrent snapshot-backed attachment requests across this server. */
23
+ maxPendingAttachments?: number;
22
24
  }
23
25
  /** Transport-neutral correlated control with observer attachments and exclusive mutation leases. */
24
26
  export declare function createAgentHarnessControlServer<CONTEXT>(harness: HeadlessAgentHarness<CONTEXT>, config?: AgentHarnessControlServerConfig): AgentHarnessControlServer;
@@ -1 +1 @@
1
- {"version":3,"file":"harness-control.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/harness-control.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,KAAK,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1F,qFAAqF;QACrF,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE;YAAE,IAAI,EAAE,iBAAiB,CAAA;SAAE,CAAC,GAAG,IAAI,CAAC;KACxF,GAAG,6BAA6B,CAAC;IAClC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,+BAA+B;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,oGAAoG;AACpG,wBAAgB,+BAA+B,CAAC,OAAO,EACrD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,MAAM,GAAE,+BAAoC,GAC3C,yBAAyB,CA4K3B"}
1
+ {"version":3,"file":"harness-control.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/harness-control.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,KAAK,oBAAoB,EAE1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,KAAK,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE;YAAE,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1F,qFAAqF;QACrF,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE;YAAE,IAAI,EAAE,iBAAiB,CAAA;SAAE,CAAC,GAAG,IAAI,CAAC;KACxF,GAAG,6BAA6B,CAAC;IAClC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,+BAA+B;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,oGAAoG;AACpG,wBAAgB,+BAA+B,CAAC,OAAO,EACrD,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,MAAM,GAAE,+BAAoC,GAC3C,yBAAyB,CAgP3B"}
@@ -0,0 +1,19 @@
1
+ import type { AgentMessagePart } from './schemas.js';
2
+ interface CallState {
3
+ toolName: string;
4
+ phase: 'called' | 'requested' | 'approved' | 'denied' | 'result';
5
+ }
6
+ /** Ephemeral call/approval validation state, never execution authority. */
7
+ export interface ToolChronology {
8
+ calls: ReadonlyMap<string, CallState>;
9
+ approvals: ReadonlyMap<string, string>;
10
+ pending: number;
11
+ resultsStarted: boolean;
12
+ }
13
+ export declare function createToolChronology(): ToolChronology;
14
+ /** Return a new state only if every part is valid; an omitted record changes nothing. */
15
+ export declare function advanceToolChronology(previous: ToolChronology, parts: readonly AgentMessagePart[]): ToolChronology | undefined;
16
+ /** Only approvals may suspend a projected record with a result still outstanding. */
17
+ export declare function canProjectToolChronology(state: ToolChronology): boolean;
18
+ export {};
19
+ //# sourceMappingURL=history-chronology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-chronology.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/history-chronology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAElD,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAClE;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,cAAc,GAAG,SAAS,CAsC5B;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAEvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAsB,MAAM,IAAI,CAAC;AAE1E,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAyB,MAAM,WAAW,CAAC;AACvF,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,mBAAmB,CAAC;AAE3B,KAAK,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,WAAW,CAAC,CACV,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EACjD,OAAO,EAAE,YAAY,GACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,aAAa,GAAG,MAAM,CAAC;CACpE;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,MAAM,EACF,WAAW,GACX,iBAAiB,GACjB,OAAO,GACP,mBAAmB,GACnB,sBAAsB,GACtB,aAAa,GACb,YAAY,CAAC;IACjB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACrD;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAqOD,wEAAwE;AACxE,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,4BAA4B,CAAC,CAgGvC;AAED,4EAA4E;AAC5E,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,YAAY,EAAE,CAAC,CAEzB"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAsB,MAAM,IAAI,CAAC;AAO1E,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAyB,MAAM,WAAW,CAAC;AACvF,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,mBAAmB,CAAC;AAE3B,KAAK,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,WAAW,6BAA6B;IAC5C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,WAAW,CAAC,CACV,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,EACjD,OAAO,EAAE,YAAY,GACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,GAAG,aAAa,GAAG,MAAM,CAAC;CACpE;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,MAAM,EACF,WAAW,GACX,iBAAiB,GACjB,OAAO,GACP,mBAAmB,GACnB,sBAAsB,GACtB,aAAa,GACb,YAAY,CAAC;IACjB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,SAAS,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACrD;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAyMD,wEAAwE;AACxE,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,4BAA4B,CAAC,CA4GvC;AAED,4EAA4E;AAC5E,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,YAAY,EAAE,CAAC,CAEzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-execution.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAMZ,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAapD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAKL,KAAK,QAAQ,EAMd,MAAM,WAAW,CAAC;AAuCnB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO;IACrE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,IAAI,MAAM,CAAC;IACrB,GAAG,IAAI,IAAI,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO,EAC9D,YAAY,EAAE,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,WAcb;IACtC,WAAW,EAAE,QAAQ,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAw6BhC"}
1
+ {"version":3,"file":"run-execution.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAMZ,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAapD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAKL,KAAK,QAAQ,EAMd,MAAM,WAAW,CAAC;AAuCnB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO;IACrE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,IAAI,MAAM,CAAC;IACrB,GAAG,IAAI,IAAI,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO,EAC9D,YAAY,EAAE,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,WAcb;IACtC,WAAW,EAAE,QAAQ,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAu7BhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-status.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/terminal-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACnE;;;;;;;;;GASG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,OAAO,CAOlF;AAED,uFAAuF;AACvF,MAAM,WAAW,0BAA0B;IACzC,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;CAC/C;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,MAAM,EAAE,0BAA0B,GAAG,SAAS,GAC7C,OAAO,CAKT;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,MAAM,EAAE,0BAA0B,GAAG,SAAS,GAC7C,OAAO,CA0CT;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAmBnF"}
1
+ {"version":3,"file":"terminal-status.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/terminal-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACnE;;;;;;;;;GASG;AACH;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,OAAO,CAOlF;AAED,uFAAuF;AACvF,MAAM,WAAW,0BAA0B;IACzC,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC;CAC/C;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,MAAM,EAAE,0BAA0B,GAAG,SAAS,GAC7C,OAAO,CAKT;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,MAAM,EAAE,0BAA0B,GAAG,SAAS,GAC7C,OAAO,CAcT;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAmBnF"}
@@ -585,56 +585,56 @@ function reduceAgentControlEvent(view, rawEvent) {
585
585
  };
586
586
  }
587
587
  export {
588
- AgentAdmissionEventSchema,
589
- AgentAssistantPlaceholderSchema,
590
- AgentCheckpointEventSchema,
591
- AgentControlDeliverySchema,
592
- AgentControlPartSchema,
593
- AgentControlRequestSchema,
594
- AgentControlResponseSchema,
595
- AgentCostValueSchema,
596
- AgentFilePartSchema,
597
- AgentJsonObjectSchema,
598
- AgentMessagePartSchema,
599
- AgentMessageRoleSchema,
600
- AgentMessageSchema,
601
- AgentMessageStatusSchema,
602
- AgentMultiSessionCursorSchema,
603
- AgentOpaquePartSchema,
604
- AgentProvenanceSchema,
605
- AgentProviderEnvelopeSchema,
606
- AgentReasoningDeltaEventSchema,
607
- AgentReasoningEndEventSchema,
608
- AgentReasoningPartSchema,
609
- AgentReasoningStartEventSchema,
610
- AgentRecordIdSchema,
611
- AgentRecordVersionSchema,
612
- AgentRunMetricsSchema,
613
- AgentRunQueuePrioritySchema,
614
- AgentRunSchema,
615
- AgentRunStateEventSchema,
616
- AgentRunStateSchema,
617
- AgentRuntimeEventCursorSchema,
618
- AgentRuntimeEventSchema,
619
- AgentSnapshotSchema,
620
- AgentSourcePartSchema,
621
- AgentTerminalEventSchema,
622
- AgentTerminalReasonSchema,
623
- AgentTextPartSchema,
624
- AgentTimestampSchema,
625
- AgentToolApprovalRequestPartSchema,
626
- AgentToolApprovalResponsePartSchema,
627
- AgentToolCallPartSchema,
628
- AgentToolResultPartSchema,
629
- AgentToolStatusEventSchema,
630
- AgentTransientDeltaEventSchema,
631
- AgentUsageSchema,
632
- AgentUsageValueSchema,
633
- advanceAgentMultiSessionCursor,
634
- advanceAgentRuntimeEventCursor,
635
- agentDurableEventId,
636
- createAgentControlView,
637
- reduceAgentControlEvent,
588
+ runStateForTerminalReason,
638
589
  reduceAgentControlSnapshot,
639
- runStateForTerminalReason
590
+ reduceAgentControlEvent,
591
+ createAgentControlView,
592
+ agentDurableEventId,
593
+ advanceAgentRuntimeEventCursor,
594
+ advanceAgentMultiSessionCursor,
595
+ AgentUsageValueSchema,
596
+ AgentUsageSchema,
597
+ AgentTransientDeltaEventSchema,
598
+ AgentToolStatusEventSchema,
599
+ AgentToolResultPartSchema,
600
+ AgentToolCallPartSchema,
601
+ AgentToolApprovalResponsePartSchema,
602
+ AgentToolApprovalRequestPartSchema,
603
+ AgentTimestampSchema,
604
+ AgentTextPartSchema,
605
+ AgentTerminalReasonSchema,
606
+ AgentTerminalEventSchema,
607
+ AgentSourcePartSchema,
608
+ AgentSnapshotSchema,
609
+ AgentRuntimeEventSchema,
610
+ AgentRuntimeEventCursorSchema,
611
+ AgentRunStateSchema,
612
+ AgentRunStateEventSchema,
613
+ AgentRunSchema,
614
+ AgentRunQueuePrioritySchema,
615
+ AgentRunMetricsSchema,
616
+ AgentRecordVersionSchema,
617
+ AgentRecordIdSchema,
618
+ AgentReasoningStartEventSchema,
619
+ AgentReasoningPartSchema,
620
+ AgentReasoningEndEventSchema,
621
+ AgentReasoningDeltaEventSchema,
622
+ AgentProviderEnvelopeSchema,
623
+ AgentProvenanceSchema,
624
+ AgentOpaquePartSchema,
625
+ AgentMultiSessionCursorSchema,
626
+ AgentMessageStatusSchema,
627
+ AgentMessageSchema,
628
+ AgentMessageRoleSchema,
629
+ AgentMessagePartSchema,
630
+ AgentJsonObjectSchema,
631
+ AgentFilePartSchema,
632
+ AgentCostValueSchema,
633
+ AgentControlResponseSchema,
634
+ AgentControlRequestSchema,
635
+ AgentControlPartSchema,
636
+ AgentControlDeliverySchema,
637
+ AgentCheckpointEventSchema,
638
+ AgentAssistantPlaceholderSchema,
639
+ AgentAdmissionEventSchema
640
640
  };
@@ -1,11 +1,14 @@
1
1
  import {
2
2
  assertContainedFileCurrent,
3
3
  assertContainedParentCurrent,
4
+ containedEntryMetadata,
4
5
  openContainedFile,
5
6
  openContainedParent,
7
+ openContainedParentFile,
6
8
  readContainedUtf8Handle,
7
- scanContainedFiles
8
- } from "./index-xbtcszs7.js";
9
+ scanContainedFiles,
10
+ writeContainedFile
11
+ } from "./index-1z5xxfst.js";
9
12
  import {
10
13
  defineRuntimeTool
11
14
  } from "./index-wwst0td5.js";
@@ -20,7 +23,7 @@ import"./index-qyrqwr4c.js";
20
23
  import"./index-6k1937bx.js";
21
24
 
22
25
  // src/agent-runtime/coding-tools.ts
23
- import path4 from "node:path";
26
+ import path3 from "node:path";
24
27
  import { z as z3 } from "zod";
25
28
 
26
29
  // src/agent-runtime/coding-tool-contract.ts
@@ -141,11 +144,10 @@ function resolveCodingToolLimits(input) {
141
144
 
142
145
  // src/agent-runtime/coding-tool-files.ts
143
146
  import { createHash } from "node:crypto";
144
- import { lstat as lstat2, realpath as realpath2, writeFile as writeFile2 } from "node:fs/promises";
145
- import path2 from "node:path";
147
+ import { realpath as realpath2 } from "node:fs/promises";
146
148
 
147
149
  // src/agent-runtime/coding-tool-paths.ts
148
- import { lstat, realpath, rename, unlink, writeFile } from "node:fs/promises";
150
+ import { lstat, realpath } from "node:fs/promises";
149
151
  import path from "node:path";
150
152
  function within(root, target) {
151
153
  const relative = path.relative(root, target);
@@ -177,18 +179,6 @@ async function authorizeCodingTool(config, request) {
177
179
  if (!await config.authorize(parsed))
178
180
  forbidden("Coding tool permission denied");
179
181
  }
180
- async function atomicCodingReplace(target, content, mode) {
181
- const temporary = path.join(path.dirname(target), `.${path.basename(target)}.${process.pid}.${crypto.randomUUID()}.tmp`);
182
- try {
183
- await writeFile(temporary, content, { flag: "wx", ...mode !== undefined && { mode } });
184
- await rename(temporary, target);
185
- } catch (error) {
186
- await unlink(temporary).catch(() => {
187
- return;
188
- });
189
- throw error;
190
- }
191
- }
192
182
  var codingPathLocks = new Map;
193
183
  async function withCodingPathLock(target, work) {
194
184
  const previous = codingPathLocks.get(target) ?? Promise.resolve();
@@ -294,7 +284,6 @@ function createFileCodingTools(config, limits) {
294
284
  if (bytes > limits.maxWriteBytes)
295
285
  throw new Error("Coding tool write exceeds maxWriteBytes");
296
286
  const parent = await openContainedParent(root, relative);
297
- const target = path2.join(parent.path, parent.basename);
298
287
  try {
299
288
  await authorizeCodingTool(config, {
300
289
  operation: "write",
@@ -304,12 +293,17 @@ function createFileCodingTools(config, limits) {
304
293
  });
305
294
  await assertContainedParentCurrent(root, relative, parent.handle);
306
295
  if (input.overwrite) {
307
- const current = await lstat2(target).catch(() => null);
296
+ const current = await containedEntryMetadata(parent);
308
297
  if (current?.isSymbolicLink())
309
298
  throw new Error("Coding tools do not overwrite symlinks");
310
- await atomicCodingReplace(target, input.content, current?.mode);
299
+ await writeContainedFile({
300
+ parent,
301
+ content: input.content,
302
+ replace: true,
303
+ ...current && { mode: current.mode }
304
+ });
311
305
  } else {
312
- await writeFile2(target, input.content, { flag: "wx" });
306
+ await writeContainedFile({ parent, content: input.content, replace: false });
313
307
  }
314
308
  } finally {
315
309
  await parent.handle.close();
@@ -322,9 +316,8 @@ function createFileCodingTools(config, limits) {
322
316
 
323
317
  // src/agent-runtime/coding-tool-search-patch.ts
324
318
  import { createHash as createHash2 } from "node:crypto";
325
- import { constants } from "node:fs";
326
- import { open, realpath as realpath3 } from "node:fs/promises";
327
- import path3 from "node:path";
319
+ import { realpath as realpath3 } from "node:fs/promises";
320
+ import path2 from "node:path";
328
321
  import { z as z2 } from "zod";
329
322
  var DEFAULT_EXCLUDED_DIRECTORIES = [
330
323
  ".git",
@@ -387,7 +380,7 @@ function createSearchAndPatchCodingTools(config, limits) {
387
380
  readMaxBytes: limits.maxReadBytes,
388
381
  skipUnreadable: true
389
382
  },
390
- excludeDirectory: (relative) => relative.split(path3.sep).some((segment) => excluded.has(segment))
383
+ excludeDirectory: (relative) => relative.split(path2.sep).some((segment) => excluded.has(segment))
391
384
  });
392
385
  const matches = [];
393
386
  let truncated = false;
@@ -435,8 +428,7 @@ function createSearchAndPatchCodingTools(config, limits) {
435
428
  const relative = boundedCodingRelativePath(input.path, limits.maxPathBytes);
436
429
  const parent = await openContainedParent(root, relative);
437
430
  try {
438
- const target = path3.join(parent.path, parent.basename);
439
- const initial = await open(target, constants.O_RDONLY | constants.O_NOFOLLOW);
431
+ const initial = await openContainedParentFile(parent);
440
432
  const read = await readContainedUtf8Handle(initial, limits.maxWriteBytes).finally(() => initial.close());
441
433
  const source = read.text;
442
434
  const baseSha256 = sha256(source);
@@ -465,11 +457,16 @@ function createSearchAndPatchCodingTools(config, limits) {
465
457
  await assertContainedParentCurrent(root, relative, parent.handle);
466
458
  if (!input.dryRun) {
467
459
  await withCodingPathLock(`${root}:${relative}`, async () => {
468
- const currentHandle = await open(target, constants.O_RDONLY | constants.O_NOFOLLOW);
460
+ const currentHandle = await openContainedParentFile(parent);
469
461
  const current = await readContainedUtf8Handle(currentHandle, limits.maxWriteBytes).finally(() => currentHandle.close());
470
462
  if (sha256(current.text) !== baseSha256)
471
463
  conflict("Coding patch base digest became stale before apply");
472
- await atomicCodingReplace(target, changed, current.mode);
464
+ await writeContainedFile({
465
+ parent,
466
+ content: changed,
467
+ replace: true,
468
+ mode: current.mode
469
+ });
473
470
  });
474
471
  }
475
472
  return {
@@ -695,10 +692,10 @@ var AGENT_CODING_TOOL_NAMES = {
695
692
  writeFile: "write_file"
696
693
  };
697
694
  function createAgentCodingTools(config) {
698
- if (!path4.isAbsolute(config.root))
695
+ if (!path3.isAbsolute(config.root))
699
696
  throw new Error("Coding tool root must be absolute");
700
697
  for (const executable of Object.values(config.executables ?? {})) {
701
- if (!path4.isAbsolute(executable)) {
698
+ if (!path3.isAbsolute(executable)) {
702
699
  throw new Error("Coding tool executables must be absolute paths");
703
700
  }
704
701
  }
@@ -760,7 +757,7 @@ function createAgentCodingTools(config) {
760
757
  ];
761
758
  }
762
759
  export {
763
- AgentCodingToolAuthorizationSchema,
760
+ createAgentCodingTools,
764
761
  AgentCodingToolLimitsSchema,
765
- createAgentCodingTools
762
+ AgentCodingToolAuthorizationSchema
766
763
  };
@@ -3,14 +3,14 @@ import {
3
3
  composeAgentPrompt,
4
4
  createAgentRuntime,
5
5
  createAgentRuntimeEventSink
6
- } from "./index-vy5bjy07.js";
6
+ } from "./index-4qfqy0m6.js";
7
7
  import {
8
8
  walkContainedFiles
9
- } from "./index-xbtcszs7.js";
9
+ } from "./index-1z5xxfst.js";
10
10
  import {
11
11
  AgentModelDescriptorSchema
12
12
  } from "./index-tg3m2ec5.js";
13
- import"./index-es0h4w26.js";
13
+ import"./index-y2s6h5bf.js";
14
14
  import"./index-a59da114.js";
15
15
  import"./index-3xnq72rz.js";
16
16
  import {
@@ -342,8 +342,13 @@ var AgentMultiSessionCursorSchema = z3.object({
342
342
 
343
343
  // src/agent-runtime/harness-control.ts
344
344
  function createAgentHarnessControlServer(harness, config = {}) {
345
+ const maxPendingAttachments = config.maxPendingAttachments ?? 32;
346
+ if (!Number.isSafeInteger(maxPendingAttachments) || maxPendingAttachments <= 0) {
347
+ throw new TypeError("maxPendingAttachments must be a positive safe integer");
348
+ }
345
349
  const connections = new Map;
346
350
  const controllers = new Map;
351
+ let pendingAttachments = 0;
347
352
  let closed = false;
348
353
  const unsubscribe = harness.subscribe((event) => {
349
354
  for (const connection of connections.values()) {
@@ -356,8 +361,8 @@ function createAgentHarnessControlServer(harness, config = {}) {
356
361
  const connection = connections.get(connectionId);
357
362
  if (!connection)
358
363
  return;
359
- for (const [conversationId, access] of connection.attached) {
360
- if (access === "control" && controllers.get(conversationId) === connectionId) {
364
+ for (const conversationId of connection.attached.keys()) {
365
+ if (controllers.get(conversationId) === connectionId) {
361
366
  controllers.delete(conversationId);
362
367
  }
363
368
  }
@@ -372,6 +377,7 @@ function createAgentHarnessControlServer(harness, config = {}) {
372
377
  throw new Error("Agent harness control connection id is duplicate");
373
378
  const state = {
374
379
  attached: new Map,
380
+ pendingAttachments: new Set,
375
381
  overflowed: false,
376
382
  sink: createAgentRuntimeEventSink({
377
383
  write: (event) => deliver({ schemaVersion: 1, type: "event", event }),
@@ -404,16 +410,51 @@ function createAgentHarnessControlServer(harness, config = {}) {
404
410
  return fail("CONNECTION_CLOSED", "Connection is closed");
405
411
  try {
406
412
  if (request.operation === "attach") {
413
+ if (state.pendingAttachments.has(request.conversationId)) {
414
+ return fail("ATTACH_IN_PROGRESS", "Wait for the current attachment request to settle");
415
+ }
416
+ if (pendingAttachments >= maxPendingAttachments) {
417
+ return fail("ATTACHMENT_CAPACITY", "Too many attachment snapshots are pending on this control server");
418
+ }
407
419
  const owner = controllers.get(request.conversationId);
408
420
  if (request.access === "control" && owner && owner !== id) {
409
421
  return fail("LEASE_CONFLICT", "Conversation already has a controller");
410
422
  }
411
- const snapshot = await harness.snapshot(request.conversationId);
423
+ const previousAccess = state.attached.get(request.conversationId);
424
+ const previousController = controllers.get(request.conversationId);
425
+ pendingAttachments += 1;
426
+ state.pendingAttachments.add(request.conversationId);
427
+ if (!previousAccess)
428
+ state.attached.set(request.conversationId, request.access);
412
429
  if (request.access === "control")
413
430
  controllers.set(request.conversationId, id);
414
- else if (controllers.get(request.conversationId) === id)
415
- controllers.delete(request.conversationId);
431
+ let snapshot;
432
+ try {
433
+ snapshot = await harness.snapshot(request.conversationId);
434
+ } catch (error) {
435
+ if (connections.get(id) === state) {
436
+ if (previousAccess)
437
+ state.attached.set(request.conversationId, previousAccess);
438
+ else
439
+ state.attached.delete(request.conversationId);
440
+ if (request.access === "control" && controllers.get(request.conversationId) === id && previousController) {
441
+ controllers.set(request.conversationId, previousController);
442
+ } else if (request.access === "control" && controllers.get(request.conversationId) === id) {
443
+ controllers.delete(request.conversationId);
444
+ }
445
+ }
446
+ throw error;
447
+ } finally {
448
+ pendingAttachments -= 1;
449
+ state.pendingAttachments.delete(request.conversationId);
450
+ }
451
+ if (closed || connections.get(id) !== state) {
452
+ return fail("CONNECTION_CLOSED", "Connection is closed");
453
+ }
416
454
  state.attached.set(request.conversationId, request.access);
455
+ if (request.access === "observe" && controllers.get(request.conversationId) === id) {
456
+ controllers.delete(request.conversationId);
457
+ }
417
458
  return AgentControlResponseSchema.parse({
418
459
  schemaVersion: 1,
419
460
  requestId: request.requestId,
@@ -421,6 +462,9 @@ function createAgentHarnessControlServer(harness, config = {}) {
421
462
  snapshot
422
463
  });
423
464
  }
465
+ if (state.pendingAttachments.has(request.conversationId)) {
466
+ return fail("ATTACH_IN_PROGRESS", "Wait for the current attachment request to settle");
467
+ }
424
468
  if (request.operation === "detach") {
425
469
  if (controllers.get(request.conversationId) === id)
426
470
  controllers.delete(request.conversationId);
@@ -691,14 +735,14 @@ function createHeadlessAgentHarness(config) {
691
735
  };
692
736
  }
693
737
  export {
694
- AgentHarnessFileLimitsSchema,
695
- AgentHarnessFileRootSchema,
696
- AgentHarnessLimitsSchema,
697
- AgentHarnessProfileEventSchema,
698
- AgentHarnessResourceDiagnosticSchema,
699
- AgentHarnessResourceKindSchema,
700
- AgentHarnessResourceSchema,
701
- createAgentHarnessControlServer,
738
+ createHeadlessAgentHarness,
702
739
  createAgentHarnessFileResources,
703
- createHeadlessAgentHarness
740
+ createAgentHarnessControlServer,
741
+ AgentHarnessResourceSchema,
742
+ AgentHarnessResourceKindSchema,
743
+ AgentHarnessResourceDiagnosticSchema,
744
+ AgentHarnessProfileEventSchema,
745
+ AgentHarnessLimitsSchema,
746
+ AgentHarnessFileRootSchema,
747
+ AgentHarnessFileLimitsSchema
704
748
  };
@@ -251,6 +251,6 @@ function normalizeOpenRouterUsage(usage, providerMetadata) {
251
251
  };
252
252
  }
253
253
  export {
254
- openRouterModelCatalog,
255
- openRouterProvider
254
+ openRouterProvider,
255
+ openRouterModelCatalog
256
256
  };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createSqliteAgentRuntimeStore,
3
3
  initializeAgentRuntimeSqlite
4
- } from "./index-10gbbbaa.js";
5
- import"./index-hsabxjz0.js";
6
- import"./index-es0h4w26.js";
4
+ } from "./index-9sx8tbz2.js";
5
+ import"./index-jw81xr75.js";
6
+ import"./index-y2s6h5bf.js";
7
7
  import"./index-x1th9s8c.js";
8
8
 
9
9
  // src/agent-runtime-sqlite-bun.ts
@@ -35,7 +35,7 @@ function createBunSqliteAgentRuntimeStore(config) {
35
35
  });
36
36
  }
37
37
  export {
38
- createBunSqliteAgentRuntimeStore,
38
+ initializeAgentRuntimeSqlite,
39
39
  createSqliteAgentRuntimeStore,
40
- initializeAgentRuntimeSqlite
40
+ createBunSqliteAgentRuntimeStore
41
41
  };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createSqliteAgentRuntimeStore,
3
3
  initializeAgentRuntimeSqlite
4
- } from "./index-10gbbbaa.js";
5
- import"./index-hsabxjz0.js";
6
- import"./index-es0h4w26.js";
4
+ } from "./index-9sx8tbz2.js";
5
+ import"./index-jw81xr75.js";
6
+ import"./index-y2s6h5bf.js";
7
7
  import"./index-x1th9s8c.js";
8
8
 
9
9
  // src/agent-runtime-sqlite-node.ts
@@ -37,7 +37,7 @@ function createNodeSqliteAgentRuntimeStore(config) {
37
37
  });
38
38
  }
39
39
  export {
40
- createNodeSqliteAgentRuntimeStore,
40
+ initializeAgentRuntimeSqlite,
41
41
  createSqliteAgentRuntimeStore,
42
- initializeAgentRuntimeSqlite
42
+ createNodeSqliteAgentRuntimeStore
43
43
  };