@knpkv/herdr-connect 0.4.0 → 0.4.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.
@@ -1,10 +1,10 @@
1
- import { Effect, FileSystem, Path } from "effect";
1
+ import { Effect } from "effect";
2
2
  import { TerminalTransportError } from "./errors.js";
3
3
  export declare class AgentActivityStore {
4
4
  #private;
5
5
  readonly path: string;
6
6
  private constructor();
7
- static readonly open: (path: string) => Effect.Effect<AgentActivityStore, TerminalTransportError, FileSystem.FileSystem | Path.Path>;
7
+ static readonly open: (path: string) => Effect.Effect<AgentActivityStore, TerminalTransportError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
8
8
  readonly observe: (this: AgentActivityStore, host: string, agentId: string, revision: number, observedAt: number) => Effect.Effect<number, TerminalTransportError, never>;
9
9
  close(): void;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"activity-store.d.ts","sourceRoot":"","sources":["../src/activity-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAA;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAQpD,qBAAa,kBAAkB;;IAE7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,OAAO,eA2BN;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,iHAclB;IAEF,QAAQ,CAAC,OAAO,0JAqCd;IAEF,KAAK,IAAI,IAAI,CAEZ;CACF"}
1
+ {"version":3,"file":"activity-store.d.ts","sourceRoot":"","sources":["../src/activity-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAEvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAepD,qBAAa,kBAAkB;;IAE7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,OAAO,eAGN;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,mJAwBlB;IAEF,QAAQ,CAAC,OAAO,0JAqCd;IAEF,KAAK,IAAI,IAAI,CAEZ;CACF"}
@@ -1,18 +1,25 @@
1
- import { Effect, FileSystem, Path, Schema } from "effect";
2
- import { DatabaseSync } from "node:sqlite";
1
+ import { openPrivateSqlite } from "@knpkv/herdr-fleet/sqlite";
2
+ import { Effect, Schema } from "effect";
3
3
  import { TerminalTransportError } from "./errors.js";
4
4
  const ActivityRow = Schema.Struct({ last_activity_at: Schema.Number });
5
5
  const TableColumn = Schema.Struct({ name: Schema.String });
6
+ const fromPrivateDatabaseError = (error) => new TerminalTransportError({
7
+ cause: error.cause,
8
+ detail: String(error.cause),
9
+ operation: `activity.${error.operation}`
10
+ });
6
11
  const storeError = (operation) => (cause) => new TerminalTransportError({ cause, detail: String(cause), operation });
7
12
  export class AgentActivityStore {
8
13
  #database;
9
14
  path;
10
- constructor(path) {
15
+ constructor(path, opened) {
11
16
  this.path = path;
12
- this.#database = new DatabaseSync(path);
13
- try {
14
- this.#database.exec(`
15
- PRAGMA journal_mode = WAL;
17
+ this.#database = opened.database;
18
+ }
19
+ static open = Effect.fn("AgentActivityStore.open")(function* (path) {
20
+ const opened = yield* openPrivateSqlite(path, {
21
+ initialize: (database) => {
22
+ database.exec(`
16
23
  CREATE TABLE IF NOT EXISTS agent_activity (
17
24
  host TEXT COLLATE NOCASE NOT NULL,
18
25
  agent_id TEXT NOT NULL,
@@ -22,26 +29,13 @@ export class AgentActivityStore {
22
29
  PRIMARY KEY (host, agent_id)
23
30
  );
24
31
  `);
25
- const columns = Schema.decodeUnknownSync(Schema.Array(TableColumn))(this.#database.prepare("PRAGMA table_info(agent_activity)").all());
26
- if (!columns.some(({ name }) => name === "observed_at")) {
27
- this.#database.exec("ALTER TABLE agent_activity ADD COLUMN observed_at INTEGER NOT NULL DEFAULT 0");
32
+ const columns = Schema.decodeUnknownSync(Schema.Array(TableColumn))(database.prepare("PRAGMA table_info(agent_activity)").all());
33
+ if (!columns.some(({ name }) => name === "observed_at")) {
34
+ database.exec("ALTER TABLE agent_activity ADD COLUMN observed_at INTEGER NOT NULL DEFAULT 0");
35
+ }
28
36
  }
29
- }
30
- catch (error) {
31
- this.#database.close();
32
- throw error;
33
- }
34
- }
35
- static open = Effect.fn("AgentActivityStore.open")(function* (path) {
36
- const fileSystem = yield* FileSystem.FileSystem;
37
- const paths = yield* Path.Path;
38
- const directory = paths.dirname(path);
39
- yield* fileSystem.makeDirectory(directory, { recursive: true, mode: 0o700 }).pipe(Effect.mapError(storeError("activity.openDirectory")));
40
- yield* fileSystem.chmod(directory, 0o700).pipe(Effect.mapError(storeError("activity.secureDirectory")));
41
- return yield* Effect.try({
42
- try: () => new AgentActivityStore(path),
43
- catch: storeError("activity.openDatabase")
44
- });
37
+ }).pipe(Effect.mapError(fromPrivateDatabaseError));
38
+ return new AgentActivityStore(path, opened);
45
39
  });
46
40
  observe = Effect.fn("AgentActivityStore.observe")(function* (host, agentId, revision, observedAt) {
47
41
  const normalizedHost = host.toLowerCase();
@@ -1 +1 @@
1
- {"version":3,"file":"activity-store.js","sourceRoot":"","sources":["../src/activity-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-store.js","sourceRoot":"","sources":["../src/activity-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Splits the Herdr attach client's stdout into lines, each capped at
3
+ * {@link terminalEventMaxLineBytes}.
4
+ *
5
+ * This caps each line, not the stream's running total, so it is not a
6
+ * `@knpkv/bounded-io` budget: a long session may emit any number of lines.
7
+ * The buffer grows geometrically and is reused, keeping copies linear.
8
+ *
9
+ * @internal
10
+ */
11
+ import { Stream } from "effect";
12
+ import { TerminalProtocolError } from "../errors.js";
13
+ export declare const terminalEventMaxLineBytes: number;
14
+ /** @internal Exposes copied-byte accounting only for the deterministic complexity regression. */
15
+ export declare const boundedTerminalLines: <E, R>(stream: Stream.Stream<Uint8Array, E, R>, onBufferCopy?: (bytes: number) => void) => Stream.Stream<string, E | TerminalProtocolError, R>;
16
+ //# sourceMappingURL=terminal-lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-lines.d.ts","sourceRoot":"","sources":["../../src/internal/terminal-lines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,eAAO,MAAM,yBAAyB,QAA6B,CAAA;AAmCnE,iGAAiG;AACjG,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,CAAC,UAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,iBACxB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,wDA2CrC,CAAA"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Splits the Herdr attach client's stdout into lines, each capped at
3
+ * {@link terminalEventMaxLineBytes}.
4
+ *
5
+ * This caps each line, not the stream's running total, so it is not a
6
+ * `@knpkv/bounded-io` budget: a long session may emit any number of lines.
7
+ * The buffer grows geometrically and is reused, keeping copies linear.
8
+ *
9
+ * @internal
10
+ */
11
+ import { Effect, Stream } from "effect";
12
+ import { TerminalProtocolError } from "../errors.js";
13
+ export const terminalEventMaxLineBytes = 4 * 1024 * 1024 + 4 * 1024;
14
+ const terminalLineInitialBytes = 64 * 1_024;
15
+ const emptyTerminalLine = () => ({
16
+ buffer: new Uint8Array(terminalLineInitialBytes),
17
+ length: 0
18
+ });
19
+ const decodeTerminalLine = (bytes) => {
20
+ const content = bytes.at(-1) === 13 ? bytes.subarray(0, -1) : bytes;
21
+ return new TextDecoder().decode(content);
22
+ };
23
+ const growTerminalLineBuffer = (buffer, requiredBytes, onBufferCopy) => {
24
+ if (requiredBytes <= buffer.byteLength)
25
+ return buffer;
26
+ let capacity = buffer.byteLength;
27
+ while (capacity < requiredBytes) {
28
+ capacity = Math.min(capacity * 2, terminalEventMaxLineBytes);
29
+ }
30
+ const grown = new Uint8Array(capacity);
31
+ onBufferCopy?.(buffer.byteLength);
32
+ grown.set(buffer);
33
+ return grown;
34
+ };
35
+ /** @internal Exposes copied-byte accounting only for the deterministic complexity regression. */
36
+ export const boundedTerminalLines = (stream, onBufferCopy) => stream.pipe(Stream.mapAccumEffect(emptyTerminalLine, (state, chunk) => {
37
+ let buffer = state.buffer;
38
+ let length = state.length;
39
+ const lines = [];
40
+ let offset = 0;
41
+ while (offset < chunk.byteLength) {
42
+ const newline = chunk.indexOf(10, offset);
43
+ const end = newline === -1 ? chunk.byteLength : newline;
44
+ const nextLength = length + end - offset;
45
+ if (nextLength > terminalEventMaxLineBytes) {
46
+ return Effect.fail(new TerminalProtocolError({
47
+ cause: nextLength,
48
+ detail: `Herdr terminal event exceeded ${terminalEventMaxLineBytes} bytes`
49
+ }));
50
+ }
51
+ buffer = growTerminalLineBuffer(buffer, nextLength, onBufferCopy);
52
+ buffer.set(chunk.subarray(offset, end), length);
53
+ length = nextLength;
54
+ if (newline === -1)
55
+ break;
56
+ lines.push(decodeTerminalLine(buffer.subarray(0, length)));
57
+ length = 0;
58
+ offset = newline + 1;
59
+ }
60
+ const result = [
61
+ { buffer, length },
62
+ lines
63
+ ];
64
+ return Effect.succeed(result);
65
+ }, {
66
+ onHalt: (state) => state.length === 0
67
+ ? []
68
+ : [decodeTerminalLine(state.buffer.subarray(0, state.length))]
69
+ }));
70
+ //# sourceMappingURL=terminal-lines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-lines.js","sourceRoot":"","sources":["../../src/internal/terminal-lines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAA;AAOnE,MAAM,wBAAwB,GAAG,EAAE,GAAG,KAAK,CAAA;AAE3C,MAAM,iBAAiB,GAAG,GAAsB,EAAE,CAAC,CAAC;IAClD,MAAM,EAAE,IAAI,UAAU,CAAC,wBAAwB,CAAC;IAChD,MAAM,EAAE,CAAC;CACV,CAAC,CAAA;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAiB,EAAU,EAAE;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACnE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC7B,MAAkB,EAClB,aAAqB,EACrB,YAAmD,EACvC,EAAE;IACd,IAAI,aAAa,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,MAAM,CAAA;IACrD,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAA;IAChC,OAAO,QAAQ,GAAG,aAAa,EAAE,CAAC;QAChC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAA;IAC9D,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,YAAY,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACjC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACjB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAuC,EACvC,YAAsC,EACtC,EAAE,CACF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACf,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IACzB,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IACzB,MAAM,KAAK,GAAkB,EAAE,CAAA;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,OAAO,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAA;QACvD,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAA;QACxC,IAAI,UAAU,GAAG,yBAAyB,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,qBAAqB,CAAC;gBACxB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,iCAAiC,yBAAyB,QAAQ;aAC3E,CAAC,CACH,CAAA;QACH,CAAC;QACD,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;QACjE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,GAAG,UAAU,CAAA;QACnB,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,MAAK;QACzB,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,GAAG,CAAC,CAAA;QACV,MAAM,GAAG,OAAO,GAAG,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,MAAM,GAAwD;QAClE,EAAE,MAAM,EAAE,MAAM,EAAE;QAClB,KAAK;KACN,CAAA;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAC,EACD;IACE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK,CAAC,MAAM,KAAK,CAAC;QAChB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACnE,CACF,CACF,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Effect, FileSystem, Path, Schema } from "effect";
1
+ import { Effect, Schema } from "effect";
2
2
  import { ConnectRelationshipError, ConnectRelationshipStoreError } from "./errors.js";
3
3
  export declare const PersistedConnectAgentMetadata: Schema.Struct<{
4
4
  readonly agentId: Schema.String;
@@ -20,7 +20,7 @@ export declare class AgentRelationshipStore {
20
20
  #private;
21
21
  readonly path: string;
22
22
  private constructor();
23
- static readonly open: (path: string) => Effect.Effect<AgentRelationshipStore, ConnectRelationshipStoreError, FileSystem.FileSystem | Path.Path>;
23
+ static readonly open: (path: string) => Effect.Effect<AgentRelationshipStore, ConnectRelationshipStoreError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
24
24
  readonly persist: (this: AgentRelationshipStore, metadata: {
25
25
  readonly agentId: string;
26
26
  readonly host: string;
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-store.d.ts","sourceRoot":"","sources":["../src/relationship-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAA;AAEpE,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAIrF,eAAO,MAAM,6BAA6B;;;;;;;;;EAYxC,CAAA;AACF,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC,IAAI,CAAA;AAErF,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,GAAG,wBAAwB,CAAA;AAEvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAA;IAChD,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAA;CAC/C;AA6DD,qBAAa,sBAAsB;;IAGjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,OAAO,eA+EN;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,4HAiBnB;IAED,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;wEAkBd;IAEF,QAAQ,CAAC,UAAU;;;;;;;;;0EAuGjB;IAEF,QAAQ,CAAC,IAAI;;;;;;;;;+CAIX;IAEF,OAAO,CAAC,YAAY;IAQpB,KAAK,IAAI,IAAI,CAEZ;CACF"}
1
+ {"version":3,"file":"relationship-store.d.ts","sourceRoot":"","sources":["../src/relationship-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAA;AAElD,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAIrF,eAAO,MAAM,6BAA6B;;;;;;;;;EAYxC,CAAA;AACF,MAAM,MAAM,6BAA6B,GAAG,OAAO,6BAA6B,CAAC,IAAI,CAAA;AAErF,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,GAAG,wBAAwB,CAAA;AAEvF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAA;IAChD,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAA;CAC/C;AAgED,qBAAa,sBAAsB;;IAGjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,OAAO,eAIN;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,8JA+EnB;IAED,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;wEAkBd;IAEF,QAAQ,CAAC,UAAU;;;;;;;;;0EAuGjB;IAEF,QAAQ,CAAC,IAAI;;;;;;;;;+CAIX;IAEF,OAAO,CAAC,YAAY;IAQpB,KAAK,IAAI,IAAI,CAEZ;CACF"}
@@ -1,5 +1,5 @@
1
- import { Effect, FileSystem, Path, Schema, Semaphore } from "effect";
2
- import { DatabaseSync } from "node:sqlite";
1
+ import { openPrivateSqlite } from "@knpkv/herdr-fleet/sqlite";
2
+ import { Effect, Schema, Semaphore } from "effect";
3
3
  import { ConnectRelationshipError, ConnectRelationshipStoreError } from "./errors.js";
4
4
  import { connectRelationshipViolation } from "./forest.js";
5
5
  import { ConnectAgent, ConnectAgentRelationship } from "./model.js";
@@ -19,6 +19,7 @@ const RelationshipRow = Schema.Struct({
19
19
  relation: Schema.NullOr(Schema.String),
20
20
  source: Schema.Literals(["durable_worker", "trusted_live_inventory"])
21
21
  });
22
+ const fromPrivateDatabaseError = (error) => new ConnectRelationshipStoreError({ cause: error.cause, operation: error.operation });
22
23
  const storeError = (operation) => (cause) => new ConnectRelationshipStoreError({ cause, operation });
23
24
  const isRelationshipPersistenceFailure = Schema.is(Schema.Union([ConnectRelationshipError, ConnectRelationshipStoreError]));
24
25
  const decodeRowSync = (row) => {
@@ -55,12 +56,15 @@ export class AgentRelationshipStore {
55
56
  #database;
56
57
  #transactions;
57
58
  path;
58
- constructor(path, transactions) {
59
+ constructor(path, transactions, opened) {
59
60
  this.path = path;
60
61
  this.#transactions = transactions;
61
- this.#database = new DatabaseSync(path);
62
- try {
63
- this.#database.exec(`
62
+ this.#database = opened.database;
63
+ }
64
+ static open = Effect.fn("AgentRelationshipStore.open")(function* (path) {
65
+ const opened = yield* openPrivateSqlite(path, {
66
+ initialize: (database) => {
67
+ database.exec(`
64
68
  CREATE TABLE IF NOT EXISTS connect_store_metadata (
65
69
  key TEXT PRIMARY KEY,
66
70
  value TEXT NOT NULL
@@ -76,11 +80,11 @@ export class AgentRelationshipStore {
76
80
  CHECK ((parent_agent_id IS NULL) = (relation IS NULL))
77
81
  );
78
82
  `);
79
- const version = this.#database.prepare("SELECT value FROM connect_store_metadata WHERE key = 'relationship_schema'").get();
80
- const decodedVersion = Schema.decodeUnknownResult(Schema.Struct({ value: Schema.String }))(version);
81
- if (decodedVersion._tag === "Failure" ||
82
- (decodedVersion.success.value !== "3" && decodedVersion.success.value !== "4")) {
83
- this.#database.exec(`
83
+ const version = database.prepare("SELECT value FROM connect_store_metadata WHERE key = 'relationship_schema'").get();
84
+ const decodedVersion = Schema.decodeUnknownResult(Schema.Struct({ value: Schema.String }))(version);
85
+ if (decodedVersion._tag === "Failure" ||
86
+ (decodedVersion.success.value !== "3" && decodedVersion.success.value !== "4")) {
87
+ database.exec(`
84
88
  BEGIN IMMEDIATE;
85
89
  CREATE TABLE connect_agent_relationships_v2 (
86
90
  host TEXT NOT NULL COLLATE NOCASE,
@@ -103,11 +107,11 @@ export class AgentRelationshipStore {
103
107
  ON CONFLICT(key) DO UPDATE SET value = excluded.value;
104
108
  COMMIT;
105
109
  `);
106
- }
107
- const migratedVersion = this.#database.prepare("SELECT value FROM connect_store_metadata WHERE key = 'relationship_schema'").get();
108
- const decodedMigratedVersion = Schema.decodeUnknownResult(Schema.Struct({ value: Schema.String }))(migratedVersion);
109
- if (decodedMigratedVersion._tag === "Failure" || decodedMigratedVersion.success.value !== "4") {
110
- this.#database.exec(`
110
+ }
111
+ const migratedVersion = database.prepare("SELECT value FROM connect_store_metadata WHERE key = 'relationship_schema'").get();
112
+ const decodedMigratedVersion = Schema.decodeUnknownResult(Schema.Struct({ value: Schema.String }))(migratedVersion);
113
+ if (decodedMigratedVersion._tag === "Failure" || decodedMigratedVersion.success.value !== "4") {
114
+ database.exec(`
111
115
  BEGIN IMMEDIATE;
112
116
  ALTER TABLE connect_agent_relationships
113
117
  ADD COLUMN source TEXT NOT NULL DEFAULT 'durable_worker'
@@ -119,24 +123,11 @@ export class AgentRelationshipStore {
119
123
  ON CONFLICT(key) DO UPDATE SET value = excluded.value;
120
124
  COMMIT;
121
125
  `);
126
+ }
122
127
  }
123
- }
124
- catch (error) {
125
- this.#database.close();
126
- throw error;
127
- }
128
- }
129
- static open = Effect.fn("AgentRelationshipStore.open")(function* (path) {
130
- const fileSystem = yield* FileSystem.FileSystem;
131
- const paths = yield* Path.Path;
132
- const directory = paths.dirname(path);
133
- yield* fileSystem.makeDirectory(directory, { recursive: true, mode: 0o700 }).pipe(Effect.mapError(storeError("open.directory")));
134
- yield* fileSystem.chmod(directory, 0o700).pipe(Effect.mapError(storeError("open.secureDirectory")));
128
+ }).pipe(Effect.mapError(fromPrivateDatabaseError));
135
129
  const transactions = yield* Semaphore.make(1);
136
- return yield* Effect.try({
137
- try: () => new AgentRelationshipStore(path, transactions),
138
- catch: storeError("open")
139
- });
130
+ return new AgentRelationshipStore(path, transactions, opened);
140
131
  });
141
132
  persist = Effect.fn("AgentRelationshipStore.persist")(function* (metadata, source) {
142
133
  const stored = yield* this.persistAll([{ metadata, source }]);
@@ -1 +1 @@
1
- {"version":3,"file":"relationship-store.js","sourceRoot":"","sources":["../src/relationship-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAEnE,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CAAC;IACzD,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE;IAC/B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAC7B,MAAM,CAAC,KAAK,EAAE,EACd,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CACjE;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CACzB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EACtB,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAC5C;IACD,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC;CAC3D,CAAC,CAAA;AAUF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;CACtE,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,6BAA6B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AACrH,MAAM,gCAAgC,GAAG,MAAM,CAAC,EAAE,CAChD,MAAM,CAAC,KAAK,CAAC,CAAC,wBAAwB,EAAE,6BAA6B,CAAC,CAAC,CACxE,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,GAAyD,EAChC,EAAE;IAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAA;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;QAC5E,CAAC,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,WAAW;YAC/B,MAAM,EAAE,OAAO,CAAC,OAAO;SACxB;QACD,CAAC,CAAC;YACA,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,WAAW;YAC/B,MAAM,EAAE,OAAO,CAAC,OAAO;YACvB,YAAY,EAAE;gBACZ,aAAa,EAAE,OAAO,CAAC,eAAe;gBACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B;SACF,CAAA;IACH,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAC7E,QAAQ,CACT,CAAA;IACD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CACnB,IAAmC,EACnC,KAAoC,EAC3B,EAAE,CACX,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;IAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;IACpD,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;IAC5B,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,KAAK,CAAC,YAAY,EAAE,aAAa;IACtE,IAAI,CAAC,YAAY,EAAE,QAAQ,KAAK,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAA;AAE9D,MAAM,gBAAgB,GAAG,CAAC,QAAsB,EAAgD,EAAE,CAChG,QAAQ,CAAC,OAAO,CACd;;6BAEyB,CAC1B,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;AAEnD,MAAM,OAAO,sBAAsB;IACxB,SAAS,CAAc;IACvB,aAAa,CAAqB;IAClC,IAAI,CAAQ;IAErB,YAAoB,IAAY,EAAE,YAAiC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;OAenB,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CACpC,4EAA4E,CAC7E,CAAC,GAAG,EAAE,CAAA;YACP,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAC/C,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CACxC,CAAC,OAAO,CAAC,CAAA;YACV,IACE,cAAc,CAAC,IAAI,KAAK,SAAS;gBACjC,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,EAC9E,CAAC;gBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;SAsBnB,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAC5C,4EAA4E,CAC7E,CAAC,GAAG,EAAE,CAAA;YACP,MAAM,sBAAsB,GAAG,MAAM,CAAC,mBAAmB,CACvD,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CACxC,CAAC,eAAe,CAAC,CAAA;YAClB,IAAI,sBAAsB,CAAC,IAAI,KAAK,SAAS,IAAI,sBAAsB,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;gBAC9F,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;;;;;SAWnB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;YACtB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,MAAM,CAAU,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAC7D,QAAQ,CAAC,EAAC,IAAY;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACrC,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAC/E,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAC9C,CAAA;QACD,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CACpD,CAAA;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC7C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACvB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC;YACzD,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAEQ,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,EAEtE,QAAuC,EACvC,MAAqC;QAErC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;YACtC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAC/D,CAAA;QACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,CAAC,IAAI,6BAA6B,CAAC;gBAC9C,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,gBAAgB;aAC5B,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,CAAA;IAEO,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,EAE5E,YAAoD;QAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAC7C,MAAM,CAAC,GAAG,CAAC;YACT,GAAG,EAAE,GAAG,EAAE;gBACR,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAChC,IAAI,CAAC;oBACH,MAAM,oBAAoB,GAAmC,EAAE,CAAA;oBAC/D,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;+FA2B+E,CAChF,CAAC,GAAG,CACH,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,YAAY,EAAE,aAAa,IAAI,IAAI,EAC5C,QAAQ,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI,EACvC,QAAQ,CAAC,UAAU,EACnB,MAAM,EACN,MAAM,CACP,CAAA;wBACD,MAAM,kBAAkB,GAAG,aAAa,CACtC,OAAO,IAAI,QAAQ,CAAC,OAAO,CACzB;;6CAE2B,CAC5B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CACvC,CAAA;wBACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAA;wBAC3C,MAAM,iBAAiB,GAAG,MAAM,KAAK,gBAAgB;4BACnD,kBAAkB,CAAC,MAAM,KAAK,wBAAwB;4BACtD,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;4BAClC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU;4BACxC,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;wBAClC,IAAI,CAAC,iBAAiB;4BAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;oBACzE,CAAC;oBACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;oBAC5C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAyC,CAAA;oBAC1E,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,oBAAoB,EAAE,CAAC;wBAChD,iBAAiB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;oBAC5F,CAAC;oBACD,KAAK,MAAM,QAAQ,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;wBAClD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAC5B,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;4BACtC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAC/D,CAAA;wBACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;4BAC9D,MAAM,IAAI,wBAAwB,CAAC;gCACjC,MAAM,EAAE,SAAS,QAAQ,CAAC,OAAO,+CAA+C;gCAChF,MAAM,EAAE,qBAAqB;6BAC9B,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;oBACD,MAAM,SAAS,GAAG,4BAA4B,CAC5C,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CACpD,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CACvE,CACF,CAAA;oBACD,IAAI,SAAS,KAAK,SAAS;wBAAE,MAAM,SAAS,CAAA;oBAC5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBACvB,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBACzB,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,gCAAgC,CAAC,KAAK,CAAC;gBACrC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC;SAC/C,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;IAEO,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC;QAGhE,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEM,YAAY;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;QAC/B,OAAO,MAAM,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YACrC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"relationship-store.js","sourceRoot":"","sources":["../src/relationship-store.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { Scope } from "effect";
2
2
  import { Crypto, Effect, Stream } from "effect";
3
3
  import { ChildProcessSpawner } from "effect/process";
4
4
  import { TerminalAgentNotFoundError, TerminalProtocolError, TerminalTransportError } from "./errors.js";
5
+ import { boundedTerminalLines, terminalEventMaxLineBytes } from "./internal/terminal-lines.js";
5
6
  import { HerdrTerminalEvent, type TerminalClientCommand, type TerminalSelection } from "./model.js";
6
7
  export type TerminalError = TerminalAgentNotFoundError | TerminalProtocolError | TerminalTransportError;
7
8
  export interface TerminalSession {
@@ -12,9 +13,7 @@ export interface TerminalConnector {
12
13
  readonly open: (selection: TerminalSelection) => Effect.Effect<TerminalSession, TerminalError, Scope.Scope>;
13
14
  }
14
15
  export declare const terminalStderrMaxBytes: number;
15
- export declare const terminalEventMaxLineBytes: number;
16
- /** @internal Exposes copied-byte accounting only for the deterministic complexity regression. */
17
- export declare const boundedTerminalLines: <E, R>(stream: Stream.Stream<Uint8Array, E, R>, onBufferCopy?: (bytes: number) => void) => Stream.Stream<string, E | TerminalProtocolError, R>;
16
+ export { boundedTerminalLines, terminalEventMaxLineBytes };
18
17
  export declare const makeHerdrTerminalConnector: (config: {
19
18
  readonly host: string;
20
19
  readonly repository: string;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAqB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAClE,OAAO,EAAgB,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAGvG,OAAO,EAAE,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnG,MAAM,MAAM,aAAa,GACrB,0BAA0B,GAC1B,qBAAqB,GACrB,sBAAsB,CAAA;AAE1B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAA;IACjE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAA;CAC/F;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,CACb,SAAS,EAAE,iBAAiB,KACzB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CAChE;AAED,eAAO,MAAM,sBAAsB,QAAc,CAAA;AACjD,eAAO,MAAM,yBAAyB,QAA6B,CAAA;AAmCnE,iGAAiG;AACjG,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,CAAC,UAC/B,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,iBACxB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,wDA2CrC,CAAA;AAKH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEA+KrC,CAAA"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAqB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAClE,OAAO,EAAgB,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEvG,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAE9F,OAAO,EAAE,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnG,MAAM,MAAM,aAAa,GACrB,0BAA0B,GAC1B,qBAAqB,GACrB,sBAAsB,CAAA;AAE1B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAA;IACjE,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAA;CAC/F;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,CACb,SAAS,EAAE,iBAAiB,KACzB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CAChE;AAED,eAAO,MAAM,sBAAsB,QAAc,CAAA;AAEjD,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,CAAA;AAK1D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEA8KrC,CAAA"}
package/dist/terminal.js CHANGED
@@ -1,67 +1,13 @@
1
+ import { limitBytes } from "@knpkv/bounded-io";
1
2
  import { Crypto, Effect, Predicate, Schema, Stream } from "effect";
2
3
  import { ChildProcess, ChildProcessSpawner } from "effect/process";
3
4
  import { TerminalAgentNotFoundError, TerminalProtocolError, TerminalTransportError } from "./errors.js";
4
5
  import { connectAgentId } from "./id.js";
6
+ import { boundedTerminalLines, terminalEventMaxLineBytes } from "./internal/terminal-lines.js";
5
7
  import { releaseTerminalControl, terminalKillOptions, terminalReleaseKillOptions } from "./internal/terminal-release.js";
6
8
  import { HerdrTerminalEvent } from "./model.js";
7
9
  export const terminalStderrMaxBytes = 1024 * 1024;
8
- export const terminalEventMaxLineBytes = 4 * 1024 * 1024 + 4 * 1024;
9
- const terminalLineInitialBytes = 64 * 1_024;
10
- const emptyTerminalLine = () => ({
11
- buffer: new Uint8Array(terminalLineInitialBytes),
12
- length: 0
13
- });
14
- const decodeTerminalLine = (bytes) => {
15
- const content = bytes.at(-1) === 13 ? bytes.subarray(0, -1) : bytes;
16
- return new TextDecoder().decode(content);
17
- };
18
- const growTerminalLineBuffer = (buffer, requiredBytes, onBufferCopy) => {
19
- if (requiredBytes <= buffer.byteLength)
20
- return buffer;
21
- let capacity = buffer.byteLength;
22
- while (capacity < requiredBytes) {
23
- capacity = Math.min(capacity * 2, terminalEventMaxLineBytes);
24
- }
25
- const grown = new Uint8Array(capacity);
26
- onBufferCopy?.(buffer.byteLength);
27
- grown.set(buffer);
28
- return grown;
29
- };
30
- /** @internal Exposes copied-byte accounting only for the deterministic complexity regression. */
31
- export const boundedTerminalLines = (stream, onBufferCopy) => stream.pipe(Stream.mapAccumEffect(emptyTerminalLine, (state, chunk) => {
32
- let buffer = state.buffer;
33
- let length = state.length;
34
- const lines = [];
35
- let offset = 0;
36
- while (offset < chunk.byteLength) {
37
- const newline = chunk.indexOf(10, offset);
38
- const end = newline === -1 ? chunk.byteLength : newline;
39
- const nextLength = length + end - offset;
40
- if (nextLength > terminalEventMaxLineBytes) {
41
- return Effect.fail(new TerminalProtocolError({
42
- cause: nextLength,
43
- detail: `Herdr terminal event exceeded ${terminalEventMaxLineBytes} bytes`
44
- }));
45
- }
46
- buffer = growTerminalLineBuffer(buffer, nextLength, onBufferCopy);
47
- buffer.set(chunk.subarray(offset, end), length);
48
- length = nextLength;
49
- if (newline === -1)
50
- break;
51
- lines.push(decodeTerminalLine(buffer.subarray(0, length)));
52
- length = 0;
53
- offset = newline + 1;
54
- }
55
- const result = [
56
- { buffer, length },
57
- lines
58
- ];
59
- return Effect.succeed(result);
60
- }, {
61
- onHalt: (state) => state.length === 0
62
- ? []
63
- : [decodeTerminalLine(state.buffer.subarray(0, state.length))]
64
- }));
10
+ export { boundedTerminalLines, terminalEventMaxLineBytes };
65
11
  const transportError = (operation) => (cause) => new TerminalTransportError({ cause, detail: String(cause), operation });
66
12
  export const makeHerdrTerminalConnector = Effect.fn("HerdrTerminal.make")(function* (config, service) {
67
13
  const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
@@ -136,16 +82,11 @@ export const makeHerdrTerminalConnector = Effect.fn("HerdrTerminal.make")(functi
136
82
  detail: String(cause),
137
83
  operation: "herdr.terminal.read"
138
84
  })));
139
- const stderrDrain = handle.stderr.pipe(Stream.mapError(transportError("herdr.terminal.stderr")), Stream.runFoldEffect(() => 0, (bytes, chunk) => {
140
- const next = bytes + chunk.byteLength;
141
- return next > terminalStderrMaxBytes
142
- ? Effect.fail(new TerminalTransportError({
143
- cause: next,
144
- detail: `Herdr terminal stderr exceeded ${terminalStderrMaxBytes} bytes`,
145
- operation: "herdr.terminal.stderr"
146
- }))
147
- : Effect.succeed(next);
148
- }));
85
+ const stderrDrain = limitBytes(handle.stderr.pipe(Stream.mapError(transportError("herdr.terminal.stderr"))), terminalStderrMaxBytes).pipe(Stream.catchTag("ByteLimitExceeded", ({ observedBytes }) => Stream.fail(new TerminalTransportError({
86
+ cause: observedBytes,
87
+ detail: `Herdr terminal stderr exceeded ${terminalStderrMaxBytes} bytes`,
88
+ operation: "herdr.terminal.stderr"
89
+ }))), Stream.runDrain);
149
90
  const events = Stream.merge(terminalEvents, Stream.fromEffect(stderrDrain).pipe(Stream.drain)).pipe(Stream.concat(Stream.fromEffect(handle.exitCode.pipe(Effect.flatMap((code) => Number(code) === 0
150
91
  ? Effect.void
151
92
  : Effect.fail(new TerminalTransportError({
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knpkv/herdr-connect",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Fleet Herdr agent directory and authenticated terminal control",
5
5
  "license": "MIT",
6
6
  "author": "knpkv",
@@ -52,9 +52,10 @@
52
52
  "@effect/platform-browser": "4.0.0",
53
53
  "effect": "4.0.0",
54
54
  "ghostty-web": "0.4.0",
55
- "@knpkv/herdr-fleet": "^0.4.0",
56
- "@knpkv/herdr-work": "^0.5.0",
57
- "@knpkv/rly": "^0.6.0"
55
+ "@knpkv/bounded-io": "^0.2.0",
56
+ "@knpkv/herdr-fleet": "^0.5.1",
57
+ "@knpkv/herdr-work": "^0.5.1",
58
+ "@knpkv/rly": "^0.6.1"
58
59
  },
59
60
  "devDependencies": {
60
61
  "@effect/platform-node": "4.0.0",