@dorokuma/herdsman 0.6.6 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.ja.md +2 -2
  2. package/README.md +5 -5
  3. package/dist/src/agent-history/antigravity-proto.d.ts +7 -0
  4. package/dist/src/agent-history/antigravity-proto.d.ts.map +1 -0
  5. package/dist/src/agent-history/antigravity-proto.js +124 -0
  6. package/dist/src/agent-history/antigravity-proto.js.map +1 -0
  7. package/dist/src/agent-history/antigravity-reader.d.ts +11 -0
  8. package/dist/src/agent-history/antigravity-reader.d.ts.map +1 -0
  9. package/dist/src/agent-history/antigravity-reader.js +72 -0
  10. package/dist/src/agent-history/antigravity-reader.js.map +1 -0
  11. package/dist/src/agent-history/discovery.d.ts +2 -1
  12. package/dist/src/agent-history/discovery.d.ts.map +1 -1
  13. package/dist/src/agent-history/discovery.js +124 -1
  14. package/dist/src/agent-history/discovery.js.map +1 -1
  15. package/dist/src/agent-history/grok-reader.d.ts +11 -0
  16. package/dist/src/agent-history/grok-reader.d.ts.map +1 -0
  17. package/dist/src/agent-history/grok-reader.js +54 -0
  18. package/dist/src/agent-history/grok-reader.js.map +1 -0
  19. package/dist/src/agent-history/readers.d.ts +13 -0
  20. package/dist/src/agent-history/readers.d.ts.map +1 -1
  21. package/dist/src/agent-history/readers.js +30 -3
  22. package/dist/src/agent-history/readers.js.map +1 -1
  23. package/dist/src/agent-history/service.d.ts +1 -0
  24. package/dist/src/agent-history/service.d.ts.map +1 -1
  25. package/dist/src/agent-history/service.js +39 -5
  26. package/dist/src/agent-history/service.js.map +1 -1
  27. package/dist/src/agent-history/tool-compaction.js +2 -2
  28. package/dist/src/agent-history/tool-compaction.js.map +1 -1
  29. package/dist/src/cli/herdsman.d.ts +5 -0
  30. package/dist/src/cli/herdsman.d.ts.map +1 -1
  31. package/dist/src/cli/herdsman.js +7 -9
  32. package/dist/src/cli/herdsman.js.map +1 -1
  33. package/dist/src/config/runtime.d.ts.map +1 -1
  34. package/dist/src/config/runtime.js +1 -4
  35. package/dist/src/config/runtime.js.map +1 -1
  36. package/dist/src/daemon/agent-event-reconciler.d.ts +26 -0
  37. package/dist/src/daemon/agent-event-reconciler.d.ts.map +1 -0
  38. package/dist/src/daemon/agent-event-reconciler.js +117 -0
  39. package/dist/src/daemon/agent-event-reconciler.js.map +1 -0
  40. package/dist/src/daemon/client.d.ts.map +1 -1
  41. package/dist/src/daemon/client.js +6 -1
  42. package/dist/src/daemon/client.js.map +1 -1
  43. package/dist/src/daemon/observability-server.d.ts +18 -0
  44. package/dist/src/daemon/observability-server.d.ts.map +1 -1
  45. package/dist/src/daemon/observability-server.js +91 -8
  46. package/dist/src/daemon/observability-server.js.map +1 -1
  47. package/dist/src/daemon/service.d.ts.map +1 -1
  48. package/dist/src/daemon/service.js +14 -0
  49. package/dist/src/daemon/service.js.map +1 -1
  50. package/dist/src/db/agent-context-snapshots.js +1 -12
  51. package/dist/src/db/agent-context-snapshots.js.map +1 -1
  52. package/dist/src/db/agent-events.d.ts +24 -0
  53. package/dist/src/db/agent-events.d.ts.map +1 -1
  54. package/dist/src/db/agent-events.js +128 -11
  55. package/dist/src/db/agent-events.js.map +1 -1
  56. package/dist/src/db/agent-orchestrator-scopes.d.ts +15 -0
  57. package/dist/src/db/agent-orchestrator-scopes.d.ts.map +1 -1
  58. package/dist/src/db/agent-orchestrator-scopes.js +43 -0
  59. package/dist/src/db/agent-orchestrator-scopes.js.map +1 -1
  60. package/dist/src/db/agents.d.ts +5 -0
  61. package/dist/src/db/agents.d.ts.map +1 -1
  62. package/dist/src/db/agents.js +67 -11
  63. package/dist/src/db/agents.js.map +1 -1
  64. package/dist/src/db/schema.d.ts +146 -0
  65. package/dist/src/db/schema.d.ts.map +1 -1
  66. package/dist/src/db/schema.js +12 -1
  67. package/dist/src/db/schema.js.map +1 -1
  68. package/dist/src/observability/agent-context-service.d.ts +1 -0
  69. package/dist/src/observability/agent-context-service.d.ts.map +1 -1
  70. package/dist/src/observability/agent-context-service.js +12 -7
  71. package/dist/src/observability/agent-context-service.js.map +1 -1
  72. package/dist/src/observability/agent-index-service.d.ts +2 -0
  73. package/dist/src/observability/agent-index-service.d.ts.map +1 -1
  74. package/dist/src/observability/agent-index-service.js +116 -19
  75. package/dist/src/observability/agent-index-service.js.map +1 -1
  76. package/dist/src/observability/agent-orchestrator-service.d.ts.map +1 -1
  77. package/dist/src/observability/agent-orchestrator-service.js +72 -9
  78. package/dist/src/observability/agent-orchestrator-service.js.map +1 -1
  79. package/dist/src/observability/contracts.d.ts +16 -1
  80. package/dist/src/observability/contracts.d.ts.map +1 -1
  81. package/dist/src/observability/contracts.js.map +1 -1
  82. package/dist/src/observability/errors.d.ts +53 -0
  83. package/dist/src/observability/errors.d.ts.map +1 -0
  84. package/dist/src/observability/errors.js +30 -0
  85. package/dist/src/observability/errors.js.map +1 -0
  86. package/dist/src/observability/schemas.d.ts +7 -0
  87. package/dist/src/observability/schemas.d.ts.map +1 -1
  88. package/dist/src/observability/schemas.js +7 -0
  89. package/dist/src/observability/schemas.js.map +1 -1
  90. package/dist/src/observability/turn-completion.d.ts +45 -0
  91. package/dist/src/observability/turn-completion.d.ts.map +1 -0
  92. package/dist/src/observability/turn-completion.js +85 -0
  93. package/dist/src/observability/turn-completion.js.map +1 -0
  94. package/drizzle/0006_grok_home.sql +1 -0
  95. package/drizzle/0007_moaning_guardian.sql +10 -0
  96. package/drizzle/meta/0006_snapshot.json +686 -0
  97. package/drizzle/meta/0007_snapshot.json +762 -0
  98. package/drizzle/meta/_journal.json +57 -7
  99. package/package.json +23 -25
@@ -0,0 +1,53 @@
1
+ export declare const ORCHESTRATOR_ACK_ERROR_CODES: {
2
+ readonly ORCHESTRATOR_NOT_OWNER: {
3
+ readonly retryable: false;
4
+ };
5
+ readonly ORCHESTRATOR_EVENT_INVALIDATED: {
6
+ readonly retryable: false;
7
+ };
8
+ readonly ORCHESTRATOR_EVENT_FAILED: {
9
+ readonly retryable: false;
10
+ };
11
+ readonly ORCHESTRATOR_EVENT_ALREADY_ACKED: {
12
+ readonly retryable: false;
13
+ };
14
+ readonly ORCHESTRATOR_EVENT_NOT_IN_SCOPE: {
15
+ readonly retryable: false;
16
+ };
17
+ readonly ORCHESTRATOR_EVENT_OUT_OF_ORDER: {
18
+ readonly retryable: false;
19
+ };
20
+ readonly ORCHESTRATOR_OWNER_REPLACED: {
21
+ readonly retryable: false;
22
+ };
23
+ readonly ORCHESTRATOR_EVENT_NOT_FOUND: {
24
+ readonly retryable: false;
25
+ };
26
+ readonly ORCHESTRATOR_BUSY: {
27
+ readonly retryable: true;
28
+ };
29
+ readonly ORCHESTRATOR_CONNECTION_LOST: {
30
+ readonly retryable: true;
31
+ };
32
+ readonly ORCHESTRATOR_RECONCILING: {
33
+ readonly retryable: true;
34
+ };
35
+ readonly ORCHESTRATOR_ACK_TIMEOUT: {
36
+ readonly retryable: true;
37
+ };
38
+ };
39
+ export type OrchestratorAckErrorCode = keyof typeof ORCHESTRATOR_ACK_ERROR_CODES;
40
+ export declare class OrchestratorAckError extends Error {
41
+ readonly code: OrchestratorAckErrorCode;
42
+ readonly retryable: boolean;
43
+ constructor(input: {
44
+ code: OrchestratorAckErrorCode;
45
+ message: string;
46
+ });
47
+ }
48
+ export declare const ORCHESTRATOR_ACK_MESSAGES: {
49
+ readonly notOwner: "Only the current orchestrator can acknowledge notifications";
50
+ readonly invalidated: "orchestrator event is no longer pending (invalidated)";
51
+ readonly outOfOrder: "Only the next pending orchestrator event can be acknowledged";
52
+ };
53
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/observability/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,4BAA4B,CAAC;AAEjF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,KAAK,EAAE;QAAE,IAAI,EAAE,wBAAwB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAMvE;AAED,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC"}
@@ -0,0 +1,30 @@
1
+ export const ORCHESTRATOR_ACK_ERROR_CODES = {
2
+ ORCHESTRATOR_NOT_OWNER: { retryable: false },
3
+ ORCHESTRATOR_EVENT_INVALIDATED: { retryable: false },
4
+ ORCHESTRATOR_EVENT_FAILED: { retryable: false },
5
+ ORCHESTRATOR_EVENT_ALREADY_ACKED: { retryable: false },
6
+ ORCHESTRATOR_EVENT_NOT_IN_SCOPE: { retryable: false },
7
+ ORCHESTRATOR_EVENT_OUT_OF_ORDER: { retryable: false },
8
+ ORCHESTRATOR_OWNER_REPLACED: { retryable: false },
9
+ ORCHESTRATOR_EVENT_NOT_FOUND: { retryable: false },
10
+ ORCHESTRATOR_BUSY: { retryable: true },
11
+ ORCHESTRATOR_CONNECTION_LOST: { retryable: true },
12
+ ORCHESTRATOR_RECONCILING: { retryable: true },
13
+ ORCHESTRATOR_ACK_TIMEOUT: { retryable: true },
14
+ };
15
+ export class OrchestratorAckError extends Error {
16
+ code;
17
+ retryable;
18
+ constructor(input) {
19
+ super(input.message);
20
+ this.name = "OrchestratorAckError";
21
+ this.code = input.code;
22
+ this.retryable = ORCHESTRATOR_ACK_ERROR_CODES[input.code].retryable;
23
+ }
24
+ }
25
+ export const ORCHESTRATOR_ACK_MESSAGES = {
26
+ notOwner: "Only the current orchestrator can acknowledge notifications",
27
+ invalidated: "orchestrator event is no longer pending (invalidated)",
28
+ outOfOrder: "Only the next pending orchestrator event can be acknowledged",
29
+ };
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/observability/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,sBAAsB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IAC5C,8BAA8B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IACpD,yBAAyB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IAC/C,gCAAgC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IACtD,+BAA+B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IACrD,+BAA+B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IACrD,2BAA2B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IACjD,4BAA4B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IAClD,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IACtC,4BAA4B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IACjD,wBAAwB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;IAC7C,wBAAwB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;CACrC,CAAC;AAIX,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAA2B;IAC/B,SAAS,CAAU;IAE5B,YAAY,KAA0D;QACpE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;CACF;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,QAAQ,EAAE,6DAA6D;IACvE,WAAW,EAAE,uDAAuD;IACpE,UAAU,EAAE,8DAA8D;CAClE,CAAC"}
@@ -46,4 +46,11 @@ export declare const agentOrchestratorGetInputSchema: import("@sinclair/typebox"
46
46
  export declare const agentOrchestratorAckInputSchema: import("@sinclair/typebox").TObject<{
47
47
  eventId: import("@sinclair/typebox").TInteger;
48
48
  }>;
49
+ export declare const agentTurnCompletedInputSchema: import("@sinclair/typebox").TObject<{
50
+ confirmed: import("@sinclair/typebox").TBoolean;
51
+ herdrSessionName: import("@sinclair/typebox").TString;
52
+ paneId: import("@sinclair/typebox").TString;
53
+ terminalId: import("@sinclair/typebox").TString;
54
+ workspaceId: import("@sinclair/typebox").TString;
55
+ }>;
49
56
  //# sourceMappingURL=schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/observability/schemas.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB;;;;;EAQjC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;EAOhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;EAO/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;EAQhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;EAQlC,CAAC;AAYF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;EAUhD,CAAC;AAEF,eAAO,MAAM,+BAA+B;;EAG3C,CAAC;AAEF,eAAO,MAAM,+BAA+B,yCAAmD,CAAC;AAEhG,eAAO,MAAM,+BAA+B;;EAG3C,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/observability/schemas.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB;;;;;EAQjC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;EAOhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;EAO/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;EAQhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;EAQlC,CAAC;AAYF,eAAO,MAAM,oCAAoC;;;;;;;;;;;;EAUhD,CAAC;AAEF,eAAO,MAAM,+BAA+B;;EAG3C,CAAC;AAEF,eAAO,MAAM,+BAA+B,yCAAmD,CAAC;AAEhG,eAAO,MAAM,+BAA+B;;EAG3C,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;EASzC,CAAC"}
@@ -44,4 +44,11 @@ export const agentOrchestratorRegisterInputSchema = Type.Object({
44
44
  export const agentOrchestratorSetInputSchema = Type.Object({ enabled: Type.Boolean() }, { additionalProperties: false });
45
45
  export const agentOrchestratorGetInputSchema = Type.Object({}, { additionalProperties: false });
46
46
  export const agentOrchestratorAckInputSchema = Type.Object({ eventId: Type.Integer({ minimum: 1 }) }, { additionalProperties: false });
47
+ export const agentTurnCompletedInputSchema = Type.Object({
48
+ confirmed: Type.Boolean(),
49
+ herdrSessionName: Type.String({ minLength: 1 }),
50
+ paneId: Type.String({ minLength: 1 }),
51
+ terminalId: Type.String({ minLength: 1 }),
52
+ workspaceId: Type.String({ minLength: 1 }),
53
+ }, { additionalProperties: false });
47
54
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/observability/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/observability/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export declare const TURN_SIGNAL_WAIT_MS = 3000;
2
+ export declare const TURN_SIGNAL_RETENTION_MS: number;
3
+ export type TurnCompletionSignal = {
4
+ confirmed: boolean;
5
+ herdrSessionName: string;
6
+ paneId: string;
7
+ terminalId: string;
8
+ workspaceId: string;
9
+ recordedAtMs: number;
10
+ };
11
+ export type TurnCompletionWaitResult = {
12
+ confirmed: boolean;
13
+ received: boolean;
14
+ };
15
+ type TimerHandle = ReturnType<typeof setTimeout>;
16
+ /**
17
+ * Cross-boundary store for Pi turn-completion notifications. The extension
18
+ * records a signal through the observability RPC server once its final
19
+ * assistant message is on disk; the agent index service waits (bounded) for
20
+ * that signal before emitting `agent.done` / `agent.blocked` events for a Pi
21
+ * agent, so the event captures a non-empty `lastAssistantMessage`.
22
+ *
23
+ * Signals are keyed by herdr session + terminal and retained for a bounded
24
+ * window; a waiter resolves immediately when a signal already exists for the
25
+ * terminal and otherwise resolves when a new signal arrives or the timeout
26
+ * elapses. Old extension versions never record a signal, so waiters always
27
+ * resolve through the timeout and the daemon keeps generating events as today.
28
+ */
29
+ export declare class TurnCompletionRegistry {
30
+ #private;
31
+ constructor(options?: {
32
+ clearTimeout?: (handle: TimerHandle) => void;
33
+ now?: () => number;
34
+ setTimeout?: (callback: () => void, delay: number) => TimerHandle;
35
+ timeoutMs?: number;
36
+ });
37
+ record(signal: Omit<TurnCompletionSignal, "recordedAtMs">): void;
38
+ waitForSignal(input: {
39
+ herdrSessionName: string;
40
+ terminalId: string;
41
+ recordedAfterMs: number;
42
+ }): Promise<TurnCompletionWaitResult>;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=turn-completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-completion.d.ts","sourceRoot":"","sources":["../../../src/observability/turn-completion.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC,eAAO,MAAM,wBAAwB,QAAc,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;;gBAS/B,OAAO,GAAE;QACP,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;QAC7C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,CAAC;QAClE,SAAS,CAAC,EAAE,MAAM,CAAC;KACf;IAQR,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,GAAG,IAAI;IAU1D,aAAa,CAAC,KAAK,EAAE;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA2CtC"}
@@ -0,0 +1,85 @@
1
+ export const TURN_SIGNAL_WAIT_MS = 3_000;
2
+ export const TURN_SIGNAL_RETENTION_MS = 10 * 60_000;
3
+ /**
4
+ * Cross-boundary store for Pi turn-completion notifications. The extension
5
+ * records a signal through the observability RPC server once its final
6
+ * assistant message is on disk; the agent index service waits (bounded) for
7
+ * that signal before emitting `agent.done` / `agent.blocked` events for a Pi
8
+ * agent, so the event captures a non-empty `lastAssistantMessage`.
9
+ *
10
+ * Signals are keyed by herdr session + terminal and retained for a bounded
11
+ * window; a waiter resolves immediately when a signal already exists for the
12
+ * terminal and otherwise resolves when a new signal arrives or the timeout
13
+ * elapses. Old extension versions never record a signal, so waiters always
14
+ * resolve through the timeout and the daemon keeps generating events as today.
15
+ */
16
+ export class TurnCompletionRegistry {
17
+ #clearTimeout;
18
+ #latestByTerminal = new Map();
19
+ #now;
20
+ #setTimeout;
21
+ #timeoutMs;
22
+ #waitersByTerminal = new Map();
23
+ constructor(options = {}) {
24
+ this.#clearTimeout = options.clearTimeout ?? clearTimeout;
25
+ this.#now = options.now ?? Date.now;
26
+ this.#setTimeout = options.setTimeout ?? setTimeout;
27
+ this.#timeoutMs = options.timeoutMs ?? TURN_SIGNAL_WAIT_MS;
28
+ }
29
+ record(signal) {
30
+ const key = terminalTurnKey(signal);
31
+ this.#latestByTerminal.set(key, { ...signal, recordedAtMs: this.#now() });
32
+ this.#prune();
33
+ const waiters = this.#waitersByTerminal.get(key);
34
+ if (waiters) {
35
+ for (const resolve of [...waiters])
36
+ resolve();
37
+ }
38
+ }
39
+ async waitForSignal(input) {
40
+ const key = terminalTurnKey(input);
41
+ const isNewSignal = (signal) => signal !== undefined && signal.recordedAtMs >= input.recordedAfterMs;
42
+ const existing = this.#latestByTerminal.get(key);
43
+ if (isNewSignal(existing)) {
44
+ this.#latestByTerminal.delete(key);
45
+ return { confirmed: existing.confirmed, received: true };
46
+ }
47
+ return new Promise((resolve) => {
48
+ let timer;
49
+ const finish = (timedOut = false) => {
50
+ const latest = this.#latestByTerminal.get(key);
51
+ if (!timedOut && !isNewSignal(latest))
52
+ return;
53
+ if (timer !== undefined)
54
+ this.#clearTimeout(timer);
55
+ this.#waitersByTerminal.get(key)?.delete(finish);
56
+ const received = latest && isNewSignal(latest);
57
+ if (received)
58
+ this.#latestByTerminal.delete(key);
59
+ resolve(received
60
+ ? { confirmed: latest.confirmed, received: true }
61
+ : { confirmed: false, received: false });
62
+ };
63
+ let waiters = this.#waitersByTerminal.get(key);
64
+ if (!waiters) {
65
+ waiters = new Set();
66
+ this.#waitersByTerminal.set(key, waiters);
67
+ }
68
+ waiters.add(finish);
69
+ timer = this.#setTimeout(() => finish(true), this.#timeoutMs);
70
+ });
71
+ }
72
+ #prune() {
73
+ if (this.#latestByTerminal.size <= 1)
74
+ return;
75
+ const cutoff = this.#now() - TURN_SIGNAL_RETENTION_MS;
76
+ for (const [key, signal] of this.#latestByTerminal) {
77
+ if (signal.recordedAtMs < cutoff)
78
+ this.#latestByTerminal.delete(key);
79
+ }
80
+ }
81
+ }
82
+ function terminalTurnKey(input) {
83
+ return `${input.herdrSessionName}\0${input.terminalId}`;
84
+ }
85
+ //# sourceMappingURL=turn-completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-completion.js","sourceRoot":"","sources":["../../../src/observability/turn-completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ ALTER TABLE `agents` ADD `grok_home` text;
@@ -0,0 +1,10 @@
1
+ ALTER TABLE `agent_events` ADD `status` text DEFAULT 'pending' NOT NULL;--> statement-breakpoint
2
+ ALTER TABLE `agent_events` ADD `delivery_attempts` integer DEFAULT 0 NOT NULL;--> statement-breakpoint
3
+ ALTER TABLE `agent_events` ADD `last_attempt_at` integer;--> statement-breakpoint
4
+ ALTER TABLE `agent_events` ADD `next_attempt_at` integer;--> statement-breakpoint
5
+ ALTER TABLE `agent_events` ADD `last_failure_code` text;--> statement-breakpoint
6
+ ALTER TABLE `agent_events` ADD `invalidated_reason` text;--> statement-breakpoint
7
+ ALTER TABLE `agent_events` ADD `delivered_to_terminal_id` text;--> statement-breakpoint
8
+ UPDATE `agent_events` SET `status` = CASE WHEN `deliverable` = 1 THEN 'pending' ELSE 'invalidated' END, `invalidated_reason` = CASE WHEN `deliverable` = 1 THEN NULL ELSE 'LEGACY_DELIVERABLE_FALSE' END;--> statement-breakpoint
9
+ CREATE INDEX `agent_events_delivery_scope_idx` ON `agent_events` (`herdr_session_name`,`workspace_id`,`status`,`id`);--> statement-breakpoint
10
+ CREATE INDEX `agent_events_delivery_retry_idx` ON `agent_events` (`status`,`next_attempt_at`);--> statement-breakpoint