@cluesmith/codev 2.0.0-rc.61 → 2.0.0-rc.63

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 (150) hide show
  1. package/dashboard/dist/assets/index-C7FtNK6Y.css +32 -0
  2. package/dashboard/dist/assets/index-D6VqWAaI.js +131 -0
  3. package/dashboard/dist/assets/index-D6VqWAaI.js.map +1 -0
  4. package/dashboard/dist/index.html +2 -2
  5. package/dist/agent-farm/cli.d.ts.map +1 -1
  6. package/dist/agent-farm/cli.js +75 -50
  7. package/dist/agent-farm/cli.js.map +1 -1
  8. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  9. package/dist/agent-farm/commands/architect.js +38 -48
  10. package/dist/agent-farm/commands/architect.js.map +1 -1
  11. package/dist/agent-farm/commands/attach.d.ts.map +1 -1
  12. package/dist/agent-farm/commands/attach.js +14 -35
  13. package/dist/agent-farm/commands/attach.js.map +1 -1
  14. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  15. package/dist/agent-farm/commands/cleanup.js +17 -18
  16. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  17. package/dist/agent-farm/commands/consult.d.ts +3 -4
  18. package/dist/agent-farm/commands/consult.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/consult.js +27 -37
  20. package/dist/agent-farm/commands/consult.js.map +1 -1
  21. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  22. package/dist/agent-farm/commands/open.js +17 -31
  23. package/dist/agent-farm/commands/open.js.map +1 -1
  24. package/dist/agent-farm/commands/shell.d.ts.map +1 -1
  25. package/dist/agent-farm/commands/shell.js +27 -38
  26. package/dist/agent-farm/commands/shell.js.map +1 -1
  27. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  28. package/dist/agent-farm/commands/spawn.js +113 -90
  29. package/dist/agent-farm/commands/spawn.js.map +1 -1
  30. package/dist/agent-farm/commands/start.d.ts +7 -20
  31. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  32. package/dist/agent-farm/commands/start.js +3 -242
  33. package/dist/agent-farm/commands/start.js.map +1 -1
  34. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  35. package/dist/agent-farm/commands/status.js +22 -29
  36. package/dist/agent-farm/commands/status.js.map +1 -1
  37. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  38. package/dist/agent-farm/commands/stop.js +43 -172
  39. package/dist/agent-farm/commands/stop.js.map +1 -1
  40. package/dist/agent-farm/commands/tower-cloud.d.ts +47 -0
  41. package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
  42. package/dist/agent-farm/commands/tower-cloud.js +316 -0
  43. package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
  44. package/dist/agent-farm/db/index.d.ts +6 -2
  45. package/dist/agent-farm/db/index.d.ts.map +1 -1
  46. package/dist/agent-farm/db/index.js +56 -31
  47. package/dist/agent-farm/db/index.js.map +1 -1
  48. package/dist/agent-farm/db/migrate.d.ts +0 -4
  49. package/dist/agent-farm/db/migrate.d.ts.map +1 -1
  50. package/dist/agent-farm/db/migrate.js +0 -46
  51. package/dist/agent-farm/db/migrate.js.map +1 -1
  52. package/dist/agent-farm/db/schema.d.ts +3 -3
  53. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  54. package/dist/agent-farm/db/schema.js +3 -17
  55. package/dist/agent-farm/db/schema.js.map +1 -1
  56. package/dist/agent-farm/db/types.d.ts +0 -10
  57. package/dist/agent-farm/db/types.d.ts.map +1 -1
  58. package/dist/agent-farm/db/types.js +0 -8
  59. package/dist/agent-farm/db/types.js.map +1 -1
  60. package/dist/agent-farm/hq-connector.d.ts +1 -1
  61. package/dist/agent-farm/hq-connector.js +1 -1
  62. package/dist/agent-farm/lib/cloud-config.d.ts +46 -0
  63. package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
  64. package/dist/agent-farm/lib/cloud-config.js +106 -0
  65. package/dist/agent-farm/lib/cloud-config.js.map +1 -0
  66. package/dist/agent-farm/lib/tower-client.d.ts +7 -5
  67. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
  68. package/dist/agent-farm/lib/tower-client.js.map +1 -1
  69. package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
  70. package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
  71. package/dist/agent-farm/lib/tunnel-client.js +502 -0
  72. package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
  73. package/dist/agent-farm/servers/tower-server.js +559 -341
  74. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  75. package/dist/agent-farm/state.d.ts +2 -2
  76. package/dist/agent-farm/state.d.ts.map +1 -1
  77. package/dist/agent-farm/state.js +6 -16
  78. package/dist/agent-farm/state.js.map +1 -1
  79. package/dist/agent-farm/types.d.ts +1 -18
  80. package/dist/agent-farm/types.d.ts.map +1 -1
  81. package/dist/agent-farm/utils/config.d.ts +0 -5
  82. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  83. package/dist/agent-farm/utils/config.js +0 -31
  84. package/dist/agent-farm/utils/config.js.map +1 -1
  85. package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
  86. package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
  87. package/dist/agent-farm/utils/file-tabs.js +46 -0
  88. package/dist/agent-farm/utils/file-tabs.js.map +1 -0
  89. package/dist/agent-farm/utils/gate-status.d.ts +16 -0
  90. package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
  91. package/dist/agent-farm/utils/gate-status.js +79 -0
  92. package/dist/agent-farm/utils/gate-status.js.map +1 -0
  93. package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
  94. package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
  95. package/dist/agent-farm/utils/gate-watcher.js +122 -0
  96. package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
  97. package/dist/agent-farm/utils/index.d.ts +0 -1
  98. package/dist/agent-farm/utils/index.d.ts.map +1 -1
  99. package/dist/agent-farm/utils/index.js +0 -1
  100. package/dist/agent-farm/utils/index.js.map +1 -1
  101. package/dist/agent-farm/utils/notifications.js +1 -1
  102. package/dist/agent-farm/utils/notifications.js.map +1 -1
  103. package/dist/agent-farm/utils/server-utils.d.ts +1 -1
  104. package/dist/agent-farm/utils/server-utils.js +1 -1
  105. package/dist/agent-farm/utils/session.d.ts +10 -0
  106. package/dist/agent-farm/utils/session.d.ts.map +1 -0
  107. package/dist/agent-farm/utils/session.js +12 -0
  108. package/dist/agent-farm/utils/session.js.map +1 -0
  109. package/dist/commands/adopt.js +1 -1
  110. package/dist/commands/adopt.js.map +1 -1
  111. package/dist/commands/consult/index.d.ts.map +1 -1
  112. package/dist/commands/consult/index.js +23 -14
  113. package/dist/commands/consult/index.js.map +1 -1
  114. package/dist/commands/init.js +1 -1
  115. package/dist/commands/init.js.map +1 -1
  116. package/dist/commands/porch/index.d.ts.map +1 -1
  117. package/dist/commands/porch/index.js +35 -12
  118. package/dist/commands/porch/index.js.map +1 -1
  119. package/dist/commands/porch/next.js +11 -3
  120. package/dist/commands/porch/next.js.map +1 -1
  121. package/dist/commands/porch/verdict.d.ts +8 -0
  122. package/dist/commands/porch/verdict.d.ts.map +1 -1
  123. package/dist/commands/porch/verdict.js +13 -0
  124. package/dist/commands/porch/verdict.js.map +1 -1
  125. package/dist/terminal/pty-session.d.ts +2 -0
  126. package/dist/terminal/pty-session.d.ts.map +1 -1
  127. package/dist/terminal/pty-session.js +4 -0
  128. package/dist/terminal/pty-session.js.map +1 -1
  129. package/package.json +1 -1
  130. package/skeleton/.claude/skills/af/SKILL.md +15 -0
  131. package/skeleton/protocols/spir/prompts/review.md +15 -16
  132. package/skeleton/protocols/spir/protocol.json +4 -0
  133. package/skeleton/protocols/spir/templates/review.md +81 -199
  134. package/skeleton/resources/commands/agent-farm.md +38 -2
  135. package/templates/tower.html +7 -150
  136. package/dashboard/dist/assets/index-CXloFYpB.css +0 -32
  137. package/dashboard/dist/assets/index-Ca2fjOJf.js +0 -131
  138. package/dashboard/dist/assets/index-Ca2fjOJf.js.map +0 -1
  139. package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
  140. package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
  141. package/dist/agent-farm/utils/orphan-handler.js +0 -149
  142. package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
  143. package/dist/agent-farm/utils/port-registry.d.ts +0 -57
  144. package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
  145. package/dist/agent-farm/utils/port-registry.js +0 -166
  146. package/dist/agent-farm/utils/port-registry.js.map +0 -1
  147. package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
  148. package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
  149. package/dist/agent-farm/utils/terminal-ports.js +0 -35
  150. package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
@@ -5,8 +5,6 @@ export type BuilderType = 'spec' | 'task' | 'protocol' | 'shell' | 'worktree' |
5
5
  export interface Builder {
6
6
  id: string;
7
7
  name: string;
8
- port: number;
9
- pid: number;
10
8
  status: 'spawning' | 'implementing' | 'blocked' | 'pr-ready' | 'complete';
11
9
  phase: string;
12
10
  worktree: string;
@@ -21,8 +19,6 @@ export interface Builder {
21
19
  export interface UtilTerminal {
22
20
  id: string;
23
21
  name: string;
24
- port: number;
25
- pid: number;
26
22
  tmuxSession?: string;
27
23
  worktreePath?: string;
28
24
  terminalId?: string;
@@ -30,16 +26,12 @@ export interface UtilTerminal {
30
26
  export interface Annotation {
31
27
  id: string;
32
28
  file: string;
33
- port: number;
34
- pid: number;
35
29
  parent: {
36
30
  type: 'architect' | 'builder' | 'util';
37
31
  id?: string;
38
32
  };
39
33
  }
40
34
  export interface ArchitectState {
41
- port: number;
42
- pid: number;
43
35
  cmd: string;
44
36
  startedAt: string;
45
37
  tmuxSession?: string;
@@ -59,10 +51,6 @@ export interface Config {
59
51
  templatesDir: string;
60
52
  serversDir: string;
61
53
  bundledRolesDir: string;
62
- dashboardPort: number;
63
- architectPort: number;
64
- builderPortRange: [number, number];
65
- utilPortRange: [number, number];
66
54
  terminalBackend: 'node-pty';
67
55
  }
68
56
  export interface TmuxSession {
@@ -70,13 +58,7 @@ export interface TmuxSession {
70
58
  pid: number;
71
59
  }
72
60
  export interface StartOptions {
73
- cmd?: string;
74
- port?: number;
75
- noRole?: boolean;
76
61
  noBrowser?: boolean;
77
- allowInsecureRemote?: boolean;
78
- remote?: string;
79
- attach?: boolean;
80
62
  }
81
63
  export interface SpawnOptions {
82
64
  project?: string;
@@ -91,6 +73,7 @@ export interface SpawnOptions {
91
73
  useProtocol?: string;
92
74
  soft?: boolean;
93
75
  strict?: boolean;
76
+ resume?: boolean;
94
77
  noRole?: boolean;
95
78
  instruction?: string;
96
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-farm/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent-farm/types.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,8 @@ export declare function setCliOverrides(overrides: Partial<ResolvedCommands>): v
11
11
  * Get resolved commands following hierarchy: CLI > config.json > defaults
12
12
  */
13
13
  export declare function getResolvedCommands(projectRoot?: string): ResolvedCommands;
14
- /**
15
- * Initialize port allocation (must be called once at startup)
16
- */
17
- export declare function initializePorts(): void;
18
14
  /**
19
15
  * Build configuration for the current project
20
- * Note: initializePorts() must be called before using this function
21
16
  */
22
17
  export declare function getConfig(): Config;
23
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAc,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAsLxE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAY1E;AAWD;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CA8BlC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAc,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqLxE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAY1E;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAelC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWrE"}
@@ -5,7 +5,6 @@ import { existsSync, readFileSync } from 'node:fs';
5
5
  import { resolve, dirname } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { execSync } from 'node:child_process';
8
- import { getProjectPorts } from './port-registry.js';
9
8
  import { getSkeletonDir } from '../../lib/skeleton.js';
10
9
  const __filename = fileURLToPath(import.meta.url);
11
10
  const __dirname = dirname(__filename);
@@ -184,37 +183,13 @@ export function getResolvedCommands(projectRoot) {
184
183
  resolveCommand(userConfig?.shell?.shell, DEFAULT_COMMANDS.shell),
185
184
  };
186
185
  }
187
- // Cached port allocation (set during initialization)
188
- let cachedPorts = null;
189
- /**
190
- * Initialize port allocation (must be called once at startup)
191
- */
192
- export function initializePorts() {
193
- const projectRoot = findProjectRoot();
194
- const ports = getProjectPorts(projectRoot);
195
- cachedPorts = {
196
- dashboardPort: ports.dashboardPort,
197
- architectPort: ports.architectPort,
198
- builderPortRange: ports.builderPortRange,
199
- utilPortRange: ports.utilPortRange,
200
- };
201
- }
202
186
  /**
203
187
  * Build configuration for the current project
204
- * Note: initializePorts() must be called before using this function
205
188
  */
206
189
  export function getConfig() {
207
190
  const projectRoot = findProjectRoot();
208
191
  const codevDir = resolve(projectRoot, 'codev');
209
192
  const userConfig = loadUserConfig(projectRoot);
210
- // Use cached ports or fallback to defaults if not initialized
211
- const basePort = parseInt(process.env.AF_BASE_PORT || '4200', 10);
212
- const ports = cachedPorts || {
213
- dashboardPort: basePort,
214
- architectPort: basePort + 1,
215
- builderPortRange: [basePort + 10, basePort + 29],
216
- utilPortRange: [basePort + 30, basePort + 49],
217
- };
218
193
  return {
219
194
  projectRoot,
220
195
  codevDir,
@@ -223,12 +198,6 @@ export function getConfig() {
223
198
  templatesDir: getTemplatesDir(),
224
199
  serversDir: getServersDir(),
225
200
  bundledRolesDir: getRolesDir(projectRoot, userConfig),
226
- // Ports from global registry (prevents cross-project conflicts)
227
- dashboardPort: ports.dashboardPort,
228
- architectPort: ports.architectPort,
229
- builderPortRange: ports.builderPortRange,
230
- utilPortRange: ports.utilPortRange,
231
- // openPortRange removed - Spec 0092: files served through Tower
232
201
  terminalBackend: userConfig?.terminal?.backend || 'node-pty',
233
202
  };
234
203
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * File tab persistence helpers for SQLite.
3
+ * Manages file_tabs table for persisting open file tabs across Tower restarts.
4
+ */
5
+ import type Database from 'better-sqlite3';
6
+ export interface FileTab {
7
+ id: string;
8
+ path: string;
9
+ createdAt: number;
10
+ }
11
+ /**
12
+ * Save a file tab to SQLite.
13
+ */
14
+ export declare function saveFileTab(db: Database.Database, id: string, projectPath: string, filePath: string, createdAt: number): void;
15
+ /**
16
+ * Delete a file tab from SQLite.
17
+ */
18
+ export declare function deleteFileTab(db: Database.Database, id: string): void;
19
+ /**
20
+ * Load file tabs for a project from SQLite.
21
+ */
22
+ export declare function loadFileTabsForProject(db: Database.Database, projectPath: string): Map<string, FileTab>;
23
+ /**
24
+ * Ensure the file_tabs table exists (for use in tests).
25
+ */
26
+ export declare function ensureFileTabsTable(db: Database.Database): void;
27
+ //# sourceMappingURL=file-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tabs.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/file-tabs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,MAAM,GAClB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAQtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAU/D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * File tab persistence helpers for SQLite.
3
+ * Manages file_tabs table for persisting open file tabs across Tower restarts.
4
+ */
5
+ /**
6
+ * Save a file tab to SQLite.
7
+ */
8
+ export function saveFileTab(db, id, projectPath, filePath, createdAt) {
9
+ db.prepare(`
10
+ INSERT OR REPLACE INTO file_tabs (id, project_path, file_path, created_at)
11
+ VALUES (?, ?, ?, ?)
12
+ `).run(id, projectPath, filePath, createdAt);
13
+ }
14
+ /**
15
+ * Delete a file tab from SQLite.
16
+ */
17
+ export function deleteFileTab(db, id) {
18
+ db.prepare('DELETE FROM file_tabs WHERE id = ?').run(id);
19
+ }
20
+ /**
21
+ * Load file tabs for a project from SQLite.
22
+ */
23
+ export function loadFileTabsForProject(db, projectPath) {
24
+ const tabs = new Map();
25
+ const rows = db.prepare('SELECT id, file_path, created_at FROM file_tabs WHERE project_path = ?')
26
+ .all(projectPath);
27
+ for (const row of rows) {
28
+ tabs.set(row.id, { id: row.id, path: row.file_path, createdAt: row.created_at });
29
+ }
30
+ return tabs;
31
+ }
32
+ /**
33
+ * Ensure the file_tabs table exists (for use in tests).
34
+ */
35
+ export function ensureFileTabsTable(db) {
36
+ db.exec(`
37
+ CREATE TABLE IF NOT EXISTS file_tabs (
38
+ id TEXT PRIMARY KEY,
39
+ project_path TEXT NOT NULL,
40
+ file_path TEXT NOT NULL,
41
+ created_at INTEGER NOT NULL
42
+ );
43
+ CREATE INDEX IF NOT EXISTS idx_file_tabs_project ON file_tabs(project_path);
44
+ `);
45
+ }
46
+ //# sourceMappingURL=file-tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tabs.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/file-tabs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,EAAqB,EACrB,EAAU,EACV,WAAmB,EACnB,QAAgB,EAChB,SAAiB;IAEjB,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB,EAAE,EAAU;IAC7D,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,WAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACxC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC;SAC9F,GAAG,CAAC,WAAW,CAAiE,CAAC;IACpF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAqB;IACvD,EAAE,CAAC,IAAI,CAAC;;;;;;;;GAQP,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Gate status reader for porch YAML files.
3
+ * Extracts pending gate information from codev/projects/<id>/status.yaml.
4
+ */
5
+ export interface GateStatus {
6
+ hasGate: boolean;
7
+ gateName?: string;
8
+ builderId?: string;
9
+ requestedAt?: string;
10
+ }
11
+ /**
12
+ * Read gate status from porch YAML files for a project.
13
+ * Scans codev/projects/<id>/status.yaml for gates with status: pending.
14
+ */
15
+ export declare function getGateStatusForProject(projectPath: string): GateStatus;
16
+ //# sourceMappingURL=gate-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-status.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/gate-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAwEvE"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Gate status reader for porch YAML files.
3
+ * Extracts pending gate information from codev/projects/<id>/status.yaml.
4
+ */
5
+ import fs from 'node:fs';
6
+ import path from 'node:path';
7
+ /**
8
+ * Read gate status from porch YAML files for a project.
9
+ * Scans codev/projects/<id>/status.yaml for gates with status: pending.
10
+ */
11
+ export function getGateStatusForProject(projectPath) {
12
+ try {
13
+ const projectsDir = path.join(projectPath, 'codev', 'projects');
14
+ if (!fs.existsSync(projectsDir)) {
15
+ return { hasGate: false };
16
+ }
17
+ const entries = fs.readdirSync(projectsDir, { withFileTypes: true });
18
+ for (const entry of entries) {
19
+ if (!entry.isDirectory())
20
+ continue;
21
+ const statusFile = path.join(projectsDir, entry.name, 'status.yaml');
22
+ if (!fs.existsSync(statusFile))
23
+ continue;
24
+ const content = fs.readFileSync(statusFile, 'utf-8');
25
+ // Simple YAML parsing: look for pending gates
26
+ // Format:
27
+ // gates:
28
+ // spec-approval:
29
+ // status: pending
30
+ const gatesMatch = content.match(/^gates:\s*$/m);
31
+ if (!gatesMatch)
32
+ continue;
33
+ const gatesSection = content.slice(gatesMatch.index + gatesMatch[0].length);
34
+ const lines = gatesSection.split('\n');
35
+ let currentGate = '';
36
+ for (const line of lines) {
37
+ // Stop at next top-level key
38
+ if (/^\S/.test(line) && line.trim() !== '')
39
+ break;
40
+ const gateNameMatch = line.match(/^\s{2}(\S+):\s*$/);
41
+ if (gateNameMatch) {
42
+ currentGate = gateNameMatch[1];
43
+ continue;
44
+ }
45
+ const statusMatch = line.match(/^\s{4}status:\s*(\S+)/);
46
+ if (statusMatch && currentGate) {
47
+ if (statusMatch[1] === 'pending') {
48
+ // Extract builder ID from directory name (e.g., "0099-tower-hygiene" -> "0099")
49
+ const builderId = entry.name.match(/^(\d+)/)?.[1] || entry.name;
50
+ // Look ahead for requested_at in remaining lines under this gate
51
+ let requestedAt;
52
+ const remaining = lines.slice(lines.indexOf(line) + 1);
53
+ for (const nextLine of remaining) {
54
+ // Stop at next gate name or top-level key
55
+ if (/^\s{2}\S/.test(nextLine) || /^\S/.test(nextLine))
56
+ break;
57
+ const reqMatch = nextLine.match(/^\s{4}requested_at:\s*'?([^'\n]+)'?/);
58
+ if (reqMatch) {
59
+ requestedAt = reqMatch[1].trim();
60
+ break;
61
+ }
62
+ }
63
+ return {
64
+ hasGate: true,
65
+ gateName: currentGate,
66
+ builderId,
67
+ requestedAt,
68
+ };
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ catch {
75
+ // Silently return no gate on errors (logged at call site if needed)
76
+ }
77
+ return { hasGate: false };
78
+ }
79
+ //# sourceMappingURL=gate-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-status.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/gate-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Spec 0100: Gate watcher for detecting gate transitions and sending af send notifications.
3
+ *
4
+ * Tracks which gates have been notified (dedup) and sends `af send architect`
5
+ * messages when new gates appear. Uses a dual-map design:
6
+ * - notified: Map<key, timestamp> for dedup
7
+ * - projectKeys: Map<projectPath, Set<key>> for clearing on gate resolution
8
+ */
9
+ import type { GateStatus } from './gate-status.js';
10
+ export type LogFn = (level: 'INFO' | 'ERROR' | 'WARN', message: string) => void;
11
+ export declare class GateWatcher {
12
+ /** Dedup map: key -> ISO timestamp of first notification */
13
+ private notified;
14
+ /** Index: projectPath -> set of keys in `notified` */
15
+ private projectKeys;
16
+ /** Logger function */
17
+ private log;
18
+ /** Path to af binary */
19
+ private afBinary;
20
+ constructor(log: LogFn, afBinary?: string);
21
+ /**
22
+ * Check gate status for a project and send notification if it's a new gate.
23
+ */
24
+ checkAndNotify(gateStatus: GateStatus, projectPath: string): Promise<void>;
25
+ /**
26
+ * Clear all tracked keys for a project.
27
+ */
28
+ private clearProject;
29
+ /**
30
+ * Send a message to the architect via af send.
31
+ */
32
+ private sendToArchitect;
33
+ /**
34
+ * Reset all state (useful for testing).
35
+ */
36
+ reset(): void;
37
+ }
38
+ //# sourceMappingURL=gate-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-watcher.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/gate-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiCnD,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEhF,qBAAa,WAAW;IACtB,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAA6B;IAC7C,sDAAsD;IACtD,OAAO,CAAC,WAAW,CAAkC;IACrD,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAQ;IACnB,wBAAwB;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM;IAKzC;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwChF;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Spec 0100: Gate watcher for detecting gate transitions and sending af send notifications.
3
+ *
4
+ * Tracks which gates have been notified (dedup) and sends `af send architect`
5
+ * messages when new gates appear. Uses a dual-map design:
6
+ * - notified: Map<key, timestamp> for dedup
7
+ * - projectKeys: Map<projectPath, Set<key>> for clearing on gate resolution
8
+ */
9
+ import { execFile } from 'node:child_process';
10
+ import { resolve, dirname } from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
12
+ // Strip ANSI escape sequences
13
+ const ANSI_RE = /\x1B\[[0-9;]*[A-Za-z]/g;
14
+ // Reject tmux control characters that could be injected
15
+ const TMUX_CONTROL_RE = /[;\n\r]/;
16
+ /**
17
+ * Sanitize a string for use in af send messages.
18
+ * Returns null if the value contains unsafe tmux control characters.
19
+ */
20
+ function sanitize(value) {
21
+ const stripped = value.replace(ANSI_RE, '').trim();
22
+ if (!stripped || TMUX_CONTROL_RE.test(stripped))
23
+ return null;
24
+ return stripped;
25
+ }
26
+ /**
27
+ * Resolve the path to the `af` CLI binary.
28
+ * Works from both source (src/) and compiled (dist/) contexts.
29
+ */
30
+ function resolveAfBinary() {
31
+ // From dist/agent-farm/utils/gate-watcher.js → bin/af.js
32
+ // From src/agent-farm/utils/gate-watcher.ts → bin/af.js
33
+ const thisDir = typeof __dirname !== 'undefined'
34
+ ? __dirname
35
+ : dirname(fileURLToPath(import.meta.url));
36
+ // thisDir = .../packages/codev/dist/agent-farm/utils or .../src/agent-farm/utils
37
+ // Navigate up to packages/codev/bin/af.js
38
+ return resolve(thisDir, '../../../bin/af.js');
39
+ }
40
+ export class GateWatcher {
41
+ /** Dedup map: key -> ISO timestamp of first notification */
42
+ notified = new Map();
43
+ /** Index: projectPath -> set of keys in `notified` */
44
+ projectKeys = new Map();
45
+ /** Logger function */
46
+ log;
47
+ /** Path to af binary */
48
+ afBinary;
49
+ constructor(log, afBinary) {
50
+ this.log = log;
51
+ this.afBinary = afBinary ?? resolveAfBinary();
52
+ }
53
+ /**
54
+ * Check gate status for a project and send notification if it's a new gate.
55
+ */
56
+ async checkAndNotify(gateStatus, projectPath) {
57
+ if (!gateStatus.hasGate) {
58
+ // Gate resolved — clear all entries for this project
59
+ this.clearProject(projectPath);
60
+ return;
61
+ }
62
+ const { builderId, gateName } = gateStatus;
63
+ if (!builderId || !gateName)
64
+ return;
65
+ const key = `${projectPath}:${builderId}:${gateName}`;
66
+ // Already notified for this exact gate
67
+ if (this.notified.has(key))
68
+ return;
69
+ // Gate changed for this project — clear old entries, add new one
70
+ this.clearProject(projectPath);
71
+ this.notified.set(key, new Date().toISOString());
72
+ const keys = new Set();
73
+ keys.add(key);
74
+ this.projectKeys.set(projectPath, keys);
75
+ // Sanitize before sending
76
+ const safeBuilderId = sanitize(builderId);
77
+ const safeGateName = sanitize(gateName);
78
+ if (!safeBuilderId || !safeGateName) {
79
+ this.log('WARN', `Gate watcher: skipping af send — unsafe gateName or builderId for project ${projectPath}`);
80
+ return;
81
+ }
82
+ const message = [
83
+ `GATE: ${safeGateName} (Builder ${safeBuilderId})`,
84
+ `Builder ${safeBuilderId} is waiting for approval.`,
85
+ `Run: porch approve ${safeBuilderId} ${safeGateName}`,
86
+ ].join('\n');
87
+ await this.sendToArchitect(message, projectPath);
88
+ }
89
+ /**
90
+ * Clear all tracked keys for a project.
91
+ */
92
+ clearProject(projectPath) {
93
+ const keys = this.projectKeys.get(projectPath);
94
+ if (keys) {
95
+ for (const k of keys) {
96
+ this.notified.delete(k);
97
+ }
98
+ this.projectKeys.delete(projectPath);
99
+ }
100
+ }
101
+ /**
102
+ * Send a message to the architect via af send.
103
+ */
104
+ sendToArchitect(message, projectPath) {
105
+ return new Promise((resolve) => {
106
+ execFile(process.execPath, [this.afBinary, 'send', 'architect', message, '--raw', '--no-enter'], { cwd: projectPath, timeout: 10_000 }, (error) => {
107
+ if (error) {
108
+ this.log('WARN', `Gate watcher: af send failed for ${projectPath}: ${error.message}`);
109
+ }
110
+ resolve();
111
+ });
112
+ });
113
+ }
114
+ /**
115
+ * Reset all state (useful for testing).
116
+ */
117
+ reset() {
118
+ this.notified.clear();
119
+ this.projectKeys.clear();
120
+ }
121
+ }
122
+ //# sourceMappingURL=gate-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-watcher.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/gate-watcher.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,4 @@ export * from './config.js';
2
2
  export * from './deps.js';
3
3
  export * from './logger.js';
4
4
  export * from './shell.js';
5
- export * from './port-registry.js';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -2,5 +2,4 @@ export * from './config.js';
2
2
  export * from './deps.js';
3
3
  export * from './logger.js';
4
4
  export * from './shell.js';
5
- export * from './port-registry.js';
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -74,7 +74,7 @@ export async function sendPushNotification(payload) {
74
74
  }),
75
75
  });
76
76
  if (!response.ok) {
77
- // Tower may not be running - silently ignore
77
+ console.warn(`[notifications] Tower responded ${response.status} for ${payload.type} notification (project ${payload.projectId})`);
78
78
  }
79
79
  }
80
80
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/notifications.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Shared server utilities
3
- * Extracted from dashboard-server.ts, tower-server.ts, open-server.ts
3
+ * Extracted from tower-server.ts and open-server.ts
4
4
  * to eliminate code duplication (Maintenance Run 0004)
5
5
  */
6
6
  import type * as http from 'node:http';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Shared server utilities
3
- * Extracted from dashboard-server.ts, tower-server.ts, open-server.ts
3
+ * Extracted from tower-server.ts and open-server.ts
4
4
  * to eliminate code duplication (Maintenance Run 0004)
5
5
  */
6
6
  /**
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared session-naming utilities for Agent Farm.
3
+ * Centralizes tmux session name generation to prevent drift between commands.
4
+ */
5
+ import type { Config } from '../types.js';
6
+ /**
7
+ * Get a namespaced tmux session name for a builder: builder-{project}-{id}
8
+ */
9
+ export declare function getBuilderSessionName(config: Config, builderId: string): string;
10
+ //# sourceMappingURL=session.d.ts.map