@cluesmith/codev 3.2.0 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dashboard-dist/assets/{index-DM7OU-EI.js → index-BZ1x7x1X.js} +34 -34
  2. package/dashboard-dist/assets/index-BZ1x7x1X.js.map +1 -0
  3. package/dashboard-dist/index.html +1 -1
  4. package/dist/agent-farm/cli.d.ts.map +1 -1
  5. package/dist/agent-farm/cli.js +17 -0
  6. package/dist/agent-farm/cli.js.map +1 -1
  7. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  8. package/dist/agent-farm/commands/architect.js +6 -17
  9. package/dist/agent-farm/commands/architect.js.map +1 -1
  10. package/dist/agent-farm/commands/cleanup.js +3 -2
  11. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  12. package/dist/agent-farm/commands/db.d.ts +10 -0
  13. package/dist/agent-farm/commands/db.d.ts.map +1 -1
  14. package/dist/agent-farm/commands/db.js +77 -0
  15. package/dist/agent-farm/commands/db.js.map +1 -1
  16. package/dist/agent-farm/commands/send.d.ts +40 -12
  17. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  18. package/dist/agent-farm/commands/send.js +101 -34
  19. package/dist/agent-farm/commands/send.js.map +1 -1
  20. package/dist/agent-farm/commands/spawn-worktree.d.ts +12 -7
  21. package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
  22. package/dist/agent-farm/commands/spawn-worktree.js +40 -19
  23. package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
  24. package/dist/agent-farm/commands/spawn.d.ts +15 -6
  25. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  26. package/dist/agent-farm/commands/spawn.js +24 -17
  27. package/dist/agent-farm/commands/spawn.js.map +1 -1
  28. package/dist/agent-farm/commands/stop.js +2 -2
  29. package/dist/agent-farm/commands/stop.js.map +1 -1
  30. package/dist/agent-farm/commands/tower.d.ts +1 -0
  31. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  32. package/dist/agent-farm/commands/tower.js +50 -0
  33. package/dist/agent-farm/commands/tower.js.map +1 -1
  34. package/dist/agent-farm/db/consolidate.d.ts +66 -0
  35. package/dist/agent-farm/db/consolidate.d.ts.map +1 -0
  36. package/dist/agent-farm/db/consolidate.js +406 -0
  37. package/dist/agent-farm/db/consolidate.js.map +1 -0
  38. package/dist/agent-farm/db/index.d.ts +13 -4
  39. package/dist/agent-farm/db/index.d.ts.map +1 -1
  40. package/dist/agent-farm/db/index.js +100 -470
  41. package/dist/agent-farm/db/index.js.map +1 -1
  42. package/dist/agent-farm/db/schema.d.ts +11 -4
  43. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  44. package/dist/agent-farm/db/schema.js +91 -2
  45. package/dist/agent-farm/db/schema.js.map +1 -1
  46. package/dist/agent-farm/db/types.d.ts +2 -0
  47. package/dist/agent-farm/db/types.d.ts.map +1 -1
  48. package/dist/agent-farm/db/types.js +1 -0
  49. package/dist/agent-farm/db/types.js.map +1 -1
  50. package/dist/agent-farm/lib/builder-lookup.d.ts.map +1 -1
  51. package/dist/agent-farm/lib/builder-lookup.js +9 -3
  52. package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
  53. package/dist/agent-farm/servers/codev-config-watcher.d.ts +37 -0
  54. package/dist/agent-farm/servers/codev-config-watcher.d.ts.map +1 -0
  55. package/dist/agent-farm/servers/{worktree-config-watcher.js → codev-config-watcher.js} +15 -14
  56. package/dist/agent-farm/servers/codev-config-watcher.js.map +1 -0
  57. package/dist/agent-farm/servers/command-relay.d.ts +54 -0
  58. package/dist/agent-farm/servers/command-relay.d.ts.map +1 -0
  59. package/dist/agent-farm/servers/command-relay.js +94 -0
  60. package/dist/agent-farm/servers/command-relay.js.map +1 -0
  61. package/dist/agent-farm/servers/overview.d.ts.map +1 -1
  62. package/dist/agent-farm/servers/overview.js +12 -6
  63. package/dist/agent-farm/servers/overview.js.map +1 -1
  64. package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
  65. package/dist/agent-farm/servers/tower-instances.js +65 -55
  66. package/dist/agent-farm/servers/tower-instances.js.map +1 -1
  67. package/dist/agent-farm/servers/tower-messages.d.ts +9 -0
  68. package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -1
  69. package/dist/agent-farm/servers/tower-messages.js +24 -0
  70. package/dist/agent-farm/servers/tower-messages.js.map +1 -1
  71. package/dist/agent-farm/servers/tower-routes.d.ts +1 -1
  72. package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
  73. package/dist/agent-farm/servers/tower-routes.js +111 -35
  74. package/dist/agent-farm/servers/tower-routes.js.map +1 -1
  75. package/dist/agent-farm/servers/tower-server.js +41 -27
  76. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  77. package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
  78. package/dist/agent-farm/servers/tower-terminals.js +22 -5
  79. package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
  80. package/dist/agent-farm/servers/tower-types.d.ts +2 -0
  81. package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
  82. package/dist/agent-farm/servers/tower-utils.d.ts +50 -5
  83. package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
  84. package/dist/agent-farm/servers/tower-utils.js +64 -14
  85. package/dist/agent-farm/servers/tower-utils.js.map +1 -1
  86. package/dist/agent-farm/state.d.ts +34 -21
  87. package/dist/agent-farm/state.d.ts.map +1 -1
  88. package/dist/agent-farm/state.js +125 -79
  89. package/dist/agent-farm/state.js.map +1 -1
  90. package/dist/agent-farm/types.d.ts +14 -0
  91. package/dist/agent-farm/types.d.ts.map +1 -1
  92. package/dist/agent-farm/utils/architect-name.d.ts +6 -33
  93. package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
  94. package/dist/agent-farm/utils/architect-name.js +7 -62
  95. package/dist/agent-farm/utils/architect-name.js.map +1 -1
  96. package/dist/agent-farm/utils/config.d.ts +24 -1
  97. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  98. package/dist/agent-farm/utils/config.js +59 -3
  99. package/dist/agent-farm/utils/config.js.map +1 -1
  100. package/dist/agent-farm/utils/harness.d.ts +45 -2
  101. package/dist/agent-farm/utils/harness.d.ts.map +1 -1
  102. package/dist/agent-farm/utils/harness.js +21 -0
  103. package/dist/agent-farm/utils/harness.js.map +1 -1
  104. package/dist/agent-farm/utils/workspace-path.d.ts +16 -0
  105. package/dist/agent-farm/utils/workspace-path.d.ts.map +1 -0
  106. package/dist/agent-farm/utils/workspace-path.js +26 -0
  107. package/dist/agent-farm/utils/workspace-path.js.map +1 -0
  108. package/dist/agent-farm/utils/worktree-write-guard.d.ts +56 -0
  109. package/dist/agent-farm/utils/worktree-write-guard.d.ts.map +1 -0
  110. package/dist/agent-farm/utils/worktree-write-guard.js +222 -0
  111. package/dist/agent-farm/utils/worktree-write-guard.js.map +1 -0
  112. package/dist/cli.d.ts.map +1 -1
  113. package/dist/cli.js +2 -0
  114. package/dist/cli.js.map +1 -1
  115. package/dist/commands/consult/index.d.ts +50 -2
  116. package/dist/commands/consult/index.d.ts.map +1 -1
  117. package/dist/commands/consult/index.js +125 -7
  118. package/dist/commands/consult/index.js.map +1 -1
  119. package/dist/commands/doctor.d.ts.map +1 -1
  120. package/dist/commands/doctor.js +25 -3
  121. package/dist/commands/doctor.js.map +1 -1
  122. package/dist/commands/porch/verdict.js +2 -2
  123. package/dist/commands/porch/verdict.js.map +1 -1
  124. package/dist/lib/config.d.ts +10 -0
  125. package/dist/lib/config.d.ts.map +1 -1
  126. package/dist/lib/config.js.map +1 -1
  127. package/dist/lib/forge-contracts.d.ts +8 -0
  128. package/dist/lib/forge-contracts.d.ts.map +1 -1
  129. package/dist/lib/forge-contracts.js.map +1 -1
  130. package/dist/lib/managed-block.d.ts +8 -2
  131. package/dist/lib/managed-block.d.ts.map +1 -1
  132. package/dist/lib/managed-block.js +32 -7
  133. package/dist/lib/managed-block.js.map +1 -1
  134. package/package.json +3 -3
  135. package/scripts/forge/gitea/issue-view.sh +4 -1
  136. package/scripts/forge/github/issue-view.sh +2 -2
  137. package/scripts/forge/gitlab/issue-view.sh +4 -1
  138. package/scripts/forge/linear/issue-view.sh +3 -2
  139. package/skeleton/resources/commands/consult.md +14 -0
  140. package/skeleton/roles/builder.md +21 -0
  141. package/skeleton/templates/AGENTS.md +16 -0
  142. package/skeleton/templates/CLAUDE.md +16 -0
  143. package/dashboard-dist/assets/index-DM7OU-EI.js.map +0 -1
  144. package/dist/agent-farm/db/migrate.d.ts +0 -20
  145. package/dist/agent-farm/db/migrate.d.ts.map +0 -1
  146. package/dist/agent-farm/db/migrate.js +0 -107
  147. package/dist/agent-farm/db/migrate.js.map +0 -1
  148. package/dist/agent-farm/servers/worktree-config-watcher.d.ts +0 -36
  149. package/dist/agent-farm/servers/worktree-config-watcher.d.ts.map +0 -1
  150. package/dist/agent-farm/servers/worktree-config-watcher.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/agent-farm/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,EAAS,OAAO,EAAE,MAAM,eAAe,CAAC;AAiC/C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAyC/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAiB1F;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAmB9G;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsCpD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAIrD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAIvC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,EAAE,CAIxE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAWhD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAUtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAiB3E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG3C;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,YAAY,EAAE,CAIzC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIvD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAY1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAI7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAWjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAIzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAczE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,EAAE,CAOrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAO7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,GAAG,IAAI,GAAG,SAAS,CAsB3B;AAGD,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/agent-farm/state.ts"],"names":[],"mappings":"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"}
@@ -5,33 +5,37 @@
5
5
  * All operations are synchronous and atomic.
6
6
  */
7
7
  import path from 'node:path';
8
- import { existsSync, realpathSync } from 'node:fs';
9
- import Database from 'better-sqlite3';
10
8
  import { getDb, closeDb } from './db/index.js';
11
9
  import { dbArchitectToArchitectState, dbBuilderToBuilder, dbUtilToUtilTerminal, dbAnnotationToAnnotation, } from './db/types.js';
12
10
  import { isPortConflictError } from './db/errors.js';
11
+ // Issue #1118: shared workspace-path canonicalization (single source of truth).
12
+ // The architect/builders tables key on `workspace_path`; writers and readers
13
+ // must agree on its exact form, so both layers normalize through this one leaf
14
+ // helper (Bugfix #826 iter-6). Aliased to `canonicalize` for the local callsites.
15
+ import { normalizeWorkspacePath as canonicalize } from './utils/workspace-path.js';
13
16
  /**
14
- * Normalize a workspace path to its canonical form (Bugfix #826 iter-6).
17
+ * Derive a builder's owning workspace from its worktree path (Issue #1118).
15
18
  *
16
- * The architect table's primary key includes `workspace_path`. Tower writes
17
- * canonical realpaths (via `normalizeWorkspacePath` in tower-utils.ts); CLI
18
- * callers and legacy migration paths often pass raw paths (e.g. a symlinked
19
- * workspace root). Without normalization, accessing a workspace via two
20
- * different paths (symlink + realpath) creates two distinct rows and lookups
21
- * silently fail.
22
- *
23
- * Mirrors the contract of `servers/tower-utils.ts:normalizeWorkspacePath`.
24
- * Kept inline to avoid pulling the server-layer import chain into the data
25
- * layer. Uses `realpathSync` when the path exists; falls back to
26
- * `path.resolve` for not-yet-existing paths (e.g. fresh installs).
19
+ * Builder worktrees are always `<workspace>/.builders/<id>`, so the workspace is
20
+ * the path prefix before `/.builders/`. Falls back to two-levels-up if the
21
+ * marker is absent (defensive — e.g. an ad-hoc worktree). The result is
22
+ * canonicalized to match the workspace_path normalization used everywhere else,
23
+ * so a builder's row is keyed by the same canonical workspace its architect is.
27
24
  */
28
- function canonicalize(workspacePath) {
29
- try {
30
- return realpathSync(workspacePath);
25
+ function deriveWorkspaceFromWorktree(worktree) {
26
+ // lastIndexOf, not indexOf: the workspace is the prefix before the FINAL
27
+ // `/.builders/` — robust when the path itself contains an earlier `.builders`
28
+ // segment (e.g. a builder worktree nested under another).
29
+ const marker = '/.builders/';
30
+ const idx = worktree.lastIndexOf(marker);
31
+ let root;
32
+ if (idx >= 0) {
33
+ root = worktree.slice(0, idx);
31
34
  }
32
- catch {
33
- return path.resolve(workspacePath);
35
+ else {
36
+ root = path.dirname(path.dirname(worktree));
34
37
  }
38
+ return canonicalize(root);
35
39
  }
36
40
  /**
37
41
  * Load complete state from database
@@ -43,9 +47,10 @@ function canonicalize(workspacePath) {
43
47
  * can enumerate ALL architects without re-querying. Main is always
44
48
  * `architects[0]` when present.
45
49
  *
46
- * Bugfix #826: now takes a `workspacePath` argument and scopes the architect
47
- * read by `workspace_path`. Other tables (builders, utils, annotations) are
48
- * not workspace-scoped in this schema — they remain global per state.db file.
50
+ * Bugfix #826: takes a `workspacePath` and scopes the architect read by
51
+ * `workspace_path`. Issue #1118: `builders` is now workspace-scoped too (composite
52
+ * PK), so its read is scoped by the same `workspace_path`. `utils` and
53
+ * `annotations` remain global (UUID-keyed, runtime-ephemeral).
49
54
  */
50
55
  export function loadState(workspacePath) {
51
56
  const db = getDb();
@@ -56,8 +61,8 @@ export function loadState(workspacePath) {
56
61
  // The ORDER BY uses `id != 'main'` so that 'main' sorts first
57
62
  // (0 < 1 with this expression), then started_at ASC for siblings.
58
63
  //
59
- // Bugfix #826: scoped by workspace_path so a state.db that contains rows
60
- // for multiple workspaces (Tower's CWD shared by many) returns only the
64
+ // Bugfix #826 / Issue #1118: scoped by workspace_path so the single shared
65
+ // global.db (which holds every workspace's architect rows) returns only the
61
66
  // architects belonging to the requested workspace.
62
67
  const architectRows = db.prepare("SELECT * FROM architect WHERE workspace_path = ? ORDER BY (id != 'main'), started_at").all(ws);
63
68
  const architects = architectRows.map(dbArchitectToArchitectState);
@@ -65,8 +70,11 @@ export function loadState(workspacePath) {
65
70
  // else the first-registered architect by started_at). Preserves the legacy
66
71
  // /api/state contract.
67
72
  const architect = architects[0] ?? null;
68
- // Load builders
69
- const builderRows = db.prepare('SELECT * FROM builders ORDER BY started_at').all();
73
+ // Load builders. Issue #1118: builders are now workspace-scoped (composite PK
74
+ // with workspace_path), so scope the read to this workspace — consistent with
75
+ // the architect read above, and correct now that one shared DB holds every
76
+ // workspace's builders.
77
+ const builderRows = db.prepare('SELECT * FROM builders WHERE workspace_path = ? ORDER BY started_at').all(ws);
70
78
  const builders = builderRows.map(dbBuilderToBuilder);
71
79
  // Load utils
72
80
  const utilRows = db.prepare('SELECT * FROM utils ORDER BY started_at').all();
@@ -101,13 +109,14 @@ export function setArchitect(workspacePath, architect) {
101
109
  }
102
110
  else {
103
111
  db.prepare(`
104
- INSERT OR REPLACE INTO architect (workspace_path, id, pid, port, cmd, started_at, terminal_id)
105
- VALUES (@workspacePath, 'main', 0, 0, @cmd, @startedAt, @terminalId)
112
+ INSERT OR REPLACE INTO architect (workspace_path, id, pid, port, cmd, started_at, terminal_id, session_id)
113
+ VALUES (@workspacePath, 'main', 0, 0, @cmd, @startedAt, @terminalId, @sessionId)
106
114
  `).run({
107
115
  workspacePath: ws,
108
116
  cmd: architect.cmd,
109
117
  startedAt: architect.startedAt,
110
118
  terminalId: architect.terminalId ?? null,
119
+ sessionId: architect.sessionId ?? null,
111
120
  });
112
121
  }
113
122
  }
@@ -127,14 +136,15 @@ export function setArchitectByName(workspacePath, name, architect) {
127
136
  return;
128
137
  }
129
138
  db.prepare(`
130
- INSERT OR REPLACE INTO architect (workspace_path, id, pid, port, cmd, started_at, terminal_id)
131
- VALUES (@workspacePath, @name, 0, 0, @cmd, @startedAt, @terminalId)
139
+ INSERT OR REPLACE INTO architect (workspace_path, id, pid, port, cmd, started_at, terminal_id, session_id)
140
+ VALUES (@workspacePath, @name, 0, 0, @cmd, @startedAt, @terminalId, @sessionId)
132
141
  `).run({
133
142
  workspacePath: ws,
134
143
  name,
135
144
  cmd: architect.cmd,
136
145
  startedAt: architect.startedAt,
137
146
  terminalId: architect.terminalId ?? null,
147
+ sessionId: architect.sessionId ?? null,
138
148
  });
139
149
  }
140
150
  /**
@@ -143,16 +153,19 @@ export function setArchitectByName(workspacePath, name, architect) {
143
153
  */
144
154
  export function upsertBuilder(builder) {
145
155
  const db = getDb();
156
+ // Issue #1118: derive the owning workspace from the worktree so the row is
157
+ // keyed by (workspace_path, id) — letting the same id exist in two workspaces.
158
+ const ws = deriveWorkspaceFromWorktree(builder.worktree);
146
159
  db.prepare(`
147
160
  INSERT INTO builders (
148
- id, name, port, pid, status, phase, worktree, branch,
161
+ workspace_path, id, name, port, pid, status, phase, worktree, branch,
149
162
  type, task_text, protocol_name, issue_number, terminal_id, spawned_by_architect
150
163
  )
151
164
  VALUES (
152
- @id, @name, 0, 0, @status, @phase, @worktree, @branch,
165
+ @workspacePath, @id, @name, 0, 0, @status, @phase, @worktree, @branch,
153
166
  @type, @taskText, @protocolName, @issueNumber, @terminalId, @spawnedByArchitect
154
167
  )
155
- ON CONFLICT(id) DO UPDATE SET
168
+ ON CONFLICT(workspace_path, id) DO UPDATE SET
156
169
  name = excluded.name,
157
170
  status = excluded.status,
158
171
  phase = excluded.phase,
@@ -165,6 +178,7 @@ export function upsertBuilder(builder) {
165
178
  terminal_id = excluded.terminal_id,
166
179
  spawned_by_architect = COALESCE(excluded.spawned_by_architect, builders.spawned_by_architect)
167
180
  `).run({
181
+ workspacePath: ws,
168
182
  id: builder.id,
169
183
  name: builder.name,
170
184
  status: builder.status,
@@ -183,32 +197,66 @@ export function upsertBuilder(builder) {
183
197
  * Remove a builder
184
198
  * Note: This is now synchronous
185
199
  */
186
- export function removeBuilder(id) {
200
+ export function removeBuilder(id, workspacePath) {
187
201
  const db = getDb();
188
- db.prepare('DELETE FROM builders WHERE id = ?').run(id);
202
+ // Issue #1118: when a workspace is in scope, delete the workspace-scoped row
203
+ // (the same id can exist in another workspace). Without one, fall back to
204
+ // delete-by-id (legacy callers; ids were unique within the old per-file DB).
205
+ if (workspacePath) {
206
+ db.prepare('DELETE FROM builders WHERE workspace_path = ? AND id = ?').run(canonicalize(workspacePath), id);
207
+ }
208
+ else {
209
+ db.prepare('DELETE FROM builders WHERE id = ?').run(id);
210
+ }
189
211
  }
190
212
  /**
191
- * Get a single builder by ID
213
+ * Get a single builder by ID.
214
+ * Issue #1118: pass `workspacePath` to disambiguate when the same id may exist
215
+ * in multiple workspaces; without it, returns the first matching row.
192
216
  */
193
- export function getBuilder(id) {
217
+ export function getBuilder(id, workspacePath) {
194
218
  const db = getDb();
195
- const row = db.prepare('SELECT * FROM builders WHERE id = ?').get(id);
196
- return row ? dbBuilderToBuilder(row) : null;
219
+ let row;
220
+ if (workspacePath) {
221
+ row = db.prepare('SELECT * FROM builders WHERE workspace_path = ? AND id = ?')
222
+ .get(canonicalize(workspacePath), id);
223
+ }
224
+ else {
225
+ row = db.prepare('SELECT * FROM builders WHERE id = ?').get(id);
226
+ }
227
+ if (!row)
228
+ return null;
229
+ return dbBuilderToBuilder(row);
197
230
  }
198
231
  /**
199
- * Get all builders
232
+ * Get all builders. Issue #1118: pass `workspacePath` to scope to one workspace;
233
+ * omit it for a deliberate cross-workspace read (e.g. Tower global views).
200
234
  */
201
- export function getBuilders() {
235
+ export function getBuilders(workspacePath) {
202
236
  const db = getDb();
203
- const rows = db.prepare('SELECT * FROM builders ORDER BY started_at').all();
237
+ let rows;
238
+ if (workspacePath) {
239
+ rows = db.prepare('SELECT * FROM builders WHERE workspace_path = ? ORDER BY started_at')
240
+ .all(canonicalize(workspacePath));
241
+ }
242
+ else {
243
+ rows = db.prepare('SELECT * FROM builders ORDER BY started_at').all();
244
+ }
204
245
  return rows.map(dbBuilderToBuilder);
205
246
  }
206
247
  /**
207
- * Get builders by status
248
+ * Get builders by status. Issue #1118: optional `workspacePath` scopes the read.
208
249
  */
209
- export function getBuildersByStatus(status) {
250
+ export function getBuildersByStatus(status, workspacePath) {
210
251
  const db = getDb();
211
- const rows = db.prepare('SELECT * FROM builders WHERE status = ? ORDER BY started_at').all(status);
252
+ let rows;
253
+ if (workspacePath) {
254
+ rows = db.prepare('SELECT * FROM builders WHERE workspace_path = ? AND status = ? ORDER BY started_at')
255
+ .all(canonicalize(workspacePath), status);
256
+ }
257
+ else {
258
+ rows = db.prepare('SELECT * FROM builders WHERE status = ? ORDER BY started_at').all(status);
259
+ }
212
260
  return rows.map(dbBuilderToBuilder);
213
261
  }
214
262
  /**
@@ -335,23 +383,27 @@ export function clearState() {
335
383
  * Spec 786: clear runtime state but preserve the architect registry.
336
384
  *
337
385
  * Used by `afx workspace stop` so sibling architects survive a graceful stop/
338
- * start cycle. The `architect` table is the durable registration; `builders`,
339
- * `utils`, and `annotations` are runtime concerns and get wiped as before.
386
+ * start cycle. The `architect` table is the durable registration; `builders`
387
+ * are the runtime concern and get wiped.
388
+ *
389
+ * Issue #1118: now that all workspaces share one `global.db`, this MUST be
390
+ * scoped by `workspace_path` — an unscoped `DELETE FROM builders` would wipe
391
+ * every other workspace's builders when one workspace stops. `builders` is
392
+ * workspace-scoped (composite PK), so the delete filters by `workspace_path`.
393
+ * `utils`/`annotations` are global (UUID-keyed, no workspace column) and
394
+ * vestigial (no producers), so they are intentionally left untouched here to
395
+ * avoid a cross-workspace wipe; the full-wipe `clearState()` still clears them.
340
396
  *
341
397
  * `clearState()` (the full-wipe variant) is preserved for callers that genuinely
342
- * want everything gone (uninstall / nuke flows / `handleWorkspaceStopAll`).
398
+ * want everything gone (uninstall / nuke flows).
343
399
  */
344
- export function clearRuntime() {
400
+ export function clearRuntime(workspacePath) {
345
401
  const db = getDb();
346
- const clear = db.transaction(() => {
347
- db.prepare('DELETE FROM builders').run();
348
- db.prepare('DELETE FROM utils').run();
349
- db.prepare('DELETE FROM annotations').run();
350
- });
351
- clear();
402
+ const ws = canonicalize(workspacePath);
403
+ db.prepare('DELETE FROM builders WHERE workspace_path = ?').run(ws);
352
404
  }
353
405
  /**
354
- * Spec 786: remove a single architect by name from `state.db.architect`.
406
+ * Spec 786: remove a single architect by name from the `architect` table.
355
407
  *
356
408
  * Idempotent — no-op if the named row is absent. Used by `remove-architect`
357
409
  * (Phase 4) and the permanent-exit handler (Phase 3 / OQ-B).
@@ -430,33 +482,27 @@ export function getArchitectByName(workspacePath, name) {
430
482
  * This three-valued return cleanly distinguishes "legacy builder" from
431
483
  * "non-builder sender." Used by the Phase 3 affinity-aware resolver.
432
484
  *
433
- * When `workspacePath` is supplied, opens a per-workspace readonly handle
434
- * directly — the right thing for Tower, which serves multiple workspaces
435
- * and cannot rely on the singleton `getDb()` (which is tied to the process's
436
- * startup CWD). When omitted, falls back to the singleton — convenient for
437
- * CLI callers that already ran inside one workspace. Mirrors the pattern in
438
- * `servers/overview.ts`.
485
+ * Issue #1118: builders now live in the single shared global.db, scoped by
486
+ * `workspace_path`. When `workspacePath` is supplied (Tower, serving multiple
487
+ * workspaces), the lookup is scoped `WHERE workspace_path = ? AND id = ?` — this
488
+ * is load-bearing, since the same builder id can exist in two workspaces and the
489
+ * spoofing check must resolve to the *correct* workspace's spawning architect.
490
+ * When omitted (a CLI caller already inside one workspace), it falls back to
491
+ * match by id alone.
439
492
  */
440
493
  export function lookupBuilderSpawningArchitect(builderId, workspacePath) {
494
+ const db = getDb();
495
+ let row;
441
496
  if (workspacePath) {
442
- const dbPath = path.join(workspacePath, '.agent-farm', 'state.db');
443
- if (!existsSync(dbPath))
444
- return undefined;
445
- const wsDb = new Database(dbPath, { readonly: true });
446
- try {
447
- const row = wsDb
448
- .prepare('SELECT spawned_by_architect FROM builders WHERE id = ?')
449
- .get(builderId);
450
- if (!row)
451
- return undefined;
452
- return row.spawned_by_architect;
453
- }
454
- finally {
455
- wsDb.close();
456
- }
497
+ row = db
498
+ .prepare('SELECT spawned_by_architect FROM builders WHERE workspace_path = ? AND id = ?')
499
+ .get(canonicalize(workspacePath), builderId);
500
+ }
501
+ else {
502
+ row = db
503
+ .prepare('SELECT spawned_by_architect FROM builders WHERE id = ?')
504
+ .get(builderId);
457
505
  }
458
- const db = getDb();
459
- const row = db.prepare('SELECT spawned_by_architect FROM builders WHERE id = ?').get(builderId);
460
506
  if (!row)
461
507
  return undefined;
462
508
  return row.spawned_by_architect;
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/agent-farm/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/agent-farm/state.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ export interface ArchitectState {
35
35
  cmd: string;
36
36
  startedAt: string;
37
37
  terminalId?: string;
38
+ sessionId?: string;
38
39
  }
39
40
  export interface DashboardState {
40
41
  architect: ArchitectState | null;
@@ -208,6 +209,19 @@ export interface UserConfig {
208
209
  url: string;
209
210
  }>;
210
211
  };
212
+ /**
213
+ * Activity hooks: URL sinks the VSCode extension fires when an abstract event
214
+ * occurs (`window-focus`, `builder-active`). Integration-agnostic — the
215
+ * destination url (a deep link, a companion app, a webhook launcher) is yours.
216
+ * Like other array settings, a higher config layer REPLACES a lower one's list,
217
+ * so define them in a single layer: `~/.codev/config.json` for a personal hook
218
+ * across all repos, or `.codev/config.local.json` for a per-repo personal one.
219
+ */
220
+ activityHooks?: Array<{
221
+ on?: Array<'window-focus' | 'builder-active'>;
222
+ url?: string;
223
+ background?: boolean;
224
+ }>;
211
225
  }
212
226
  /**
213
227
  * Resolved shell commands (after processing config hierarchy)
@@ -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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"}
@@ -5,40 +5,13 @@
5
5
  * - autoNumberArchitectName: returns the next available `architect-<N>` name
6
6
  * (smallest unused integer ≥ 2) given the set of already-registered names.
7
7
  *
8
- * Both functions are pure — they don't read process state or Tower; the caller
9
- * is responsible for sourcing the existing-names set. Keeping them pure makes
10
- * them trivially unit-testable.
8
+ * `validateArchitectName`, `autoNumberArchitectName`, and the name constants
9
+ * live in codev-core (Issue 841) so the VS Code extension's "Add Architect"
10
+ * InputBox validates with the exact same rule Tower enforces server-side; we
11
+ * re-export them here so existing agent-farm callsites are unaffected.
12
+ * `currentArchitectName` reads the process env and stays local to this package.
11
13
  */
12
- export declare const ARCHITECT_NAME_PATTERN: RegExp;
13
- export declare const MAX_ARCHITECT_NAME_LENGTH = 64;
14
- /** Reserved default for the singleton case. */
15
- export declare const DEFAULT_ARCHITECT_NAME = "main";
16
- /**
17
- * Validate an architect name. Returns `null` if valid, or a human-readable
18
- * error message otherwise. Callers should treat a non-null return as "reject
19
- * with this message" — the text is intentionally operator-facing.
20
- *
21
- * Spec 786: the name `main` is reserved for the workspace's default architect
22
- * and is rejected here. Pre-#786, `main` was rejected only by collision check
23
- * at the add-architect call site (which depended on a race-free in-memory map);
24
- * rejecting in the pure validator is more robust.
25
- */
26
- export declare function validateArchitectName(name: string): string | null;
27
- /**
28
- * Compute the next auto-numbered architect name, given the set of names
29
- * already in use. Uses "smallest unused integer ≥ 2" semantics:
30
- *
31
- * - {} → 'architect-2'
32
- * - {'main'} → 'architect-2'
33
- * - {'main', 'architect-2'} → 'architect-3'
34
- * - {'main', 'architect-3'} → 'architect-2' (fills the gap)
35
- * - {'main', 'architect-2', 'architect-3'} → 'architect-4'
36
- * - {'main', 'sibling'} → 'architect-2' (custom names don't shift numbering)
37
- *
38
- * Custom names (anything not matching `architect-<N>` exactly) are ignored
39
- * by the numbering loop — they're not part of the auto-numbered sequence.
40
- */
41
- export declare function autoNumberArchitectName(existingNames: Iterable<string>): string;
14
+ export { ARCHITECT_NAME_PATTERN, MAX_ARCHITECT_NAME_LENGTH, DEFAULT_ARCHITECT_NAME, validateArchitectName, autoNumberArchitectName, } from '@cluesmith/codev-core/architect-name';
42
15
  /**
43
16
  * Resolve the *current* terminal session's architect name (Spec 1057).
44
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"architect-name.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/architect-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAC1D,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAc/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGjF"}
1
+ {"version":3,"file":"architect-name.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/utils/architect-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGjF"}
@@ -5,69 +5,14 @@
5
5
  * - autoNumberArchitectName: returns the next available `architect-<N>` name
6
6
  * (smallest unused integer ≥ 2) given the set of already-registered names.
7
7
  *
8
- * Both functions are pure — they don't read process state or Tower; the caller
9
- * is responsible for sourcing the existing-names set. Keeping them pure makes
10
- * them trivially unit-testable.
8
+ * `validateArchitectName`, `autoNumberArchitectName`, and the name constants
9
+ * live in codev-core (Issue 841) so the VS Code extension's "Add Architect"
10
+ * InputBox validates with the exact same rule Tower enforces server-side; we
11
+ * re-export them here so existing agent-farm callsites are unaffected.
12
+ * `currentArchitectName` reads the process env and stays local to this package.
11
13
  */
12
- export const ARCHITECT_NAME_PATTERN = /^[a-z][a-z0-9-]*$/;
13
- export const MAX_ARCHITECT_NAME_LENGTH = 64;
14
- /** Reserved default for the singleton case. */
15
- export const DEFAULT_ARCHITECT_NAME = 'main';
16
- /**
17
- * Validate an architect name. Returns `null` if valid, or a human-readable
18
- * error message otherwise. Callers should treat a non-null return as "reject
19
- * with this message" — the text is intentionally operator-facing.
20
- *
21
- * Spec 786: the name `main` is reserved for the workspace's default architect
22
- * and is rejected here. Pre-#786, `main` was rejected only by collision check
23
- * at the add-architect call site (which depended on a race-free in-memory map);
24
- * rejecting in the pure validator is more robust.
25
- */
26
- export function validateArchitectName(name) {
27
- if (!name) {
28
- return 'Architect name cannot be empty.';
29
- }
30
- if (name === DEFAULT_ARCHITECT_NAME) {
31
- return `Architect name '${DEFAULT_ARCHITECT_NAME}' is reserved for the workspace's default architect.`;
32
- }
33
- if (name.length > MAX_ARCHITECT_NAME_LENGTH) {
34
- return `Architect name must be at most ${MAX_ARCHITECT_NAME_LENGTH} characters (got ${name.length}).`;
35
- }
36
- if (!ARCHITECT_NAME_PATTERN.test(name)) {
37
- return `Architect name '${name}' is invalid. Names must match [a-z][a-z0-9-]* (lowercase letter, then lowercase letters / digits / dashes).`;
38
- }
39
- return null;
40
- }
41
- /**
42
- * Compute the next auto-numbered architect name, given the set of names
43
- * already in use. Uses "smallest unused integer ≥ 2" semantics:
44
- *
45
- * - {} → 'architect-2'
46
- * - {'main'} → 'architect-2'
47
- * - {'main', 'architect-2'} → 'architect-3'
48
- * - {'main', 'architect-3'} → 'architect-2' (fills the gap)
49
- * - {'main', 'architect-2', 'architect-3'} → 'architect-4'
50
- * - {'main', 'sibling'} → 'architect-2' (custom names don't shift numbering)
51
- *
52
- * Custom names (anything not matching `architect-<N>` exactly) are ignored
53
- * by the numbering loop — they're not part of the auto-numbered sequence.
54
- */
55
- export function autoNumberArchitectName(existingNames) {
56
- const usedNumbers = new Set();
57
- for (const name of existingNames) {
58
- const match = /^architect-(\d+)$/.exec(name);
59
- if (match) {
60
- const n = Number.parseInt(match[1], 10);
61
- if (Number.isFinite(n) && n >= 2) {
62
- usedNumbers.add(n);
63
- }
64
- }
65
- }
66
- let n = 2;
67
- while (usedNumbers.has(n))
68
- n++;
69
- return `architect-${n}`;
70
- }
14
+ export { ARCHITECT_NAME_PATTERN, MAX_ARCHITECT_NAME_LENGTH, DEFAULT_ARCHITECT_NAME, validateArchitectName, autoNumberArchitectName, } from '@cluesmith/codev-core/architect-name';
15
+ import { DEFAULT_ARCHITECT_NAME } from '@cluesmith/codev-core/architect-name';
71
16
  /**
72
17
  * Resolve the *current* terminal session's architect name (Spec 1057).
73
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"architect-name.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/architect-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAC1D,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IACD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACpC,OAAO,mBAAmB,sBAAsB,sDAAsD,CAAC;IACzG,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;QAC5C,OAAO,kCAAkC,yBAAyB,oBAAoB,IAAI,CAAC,MAAM,IAAI,CAAC;IACxG,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,mBAAmB,IAAI,8GAA8G,CAAC;IAC/I,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,aAA+B;IACrE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IAC/B,OAAO,aAAa,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,MAAM,KAAK,GAAG,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,KAAK,IAAI,sBAAsB,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"architect-name.js","sourceRoot":"","sources":["../../../src/agent-farm/utils/architect-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,MAAM,KAAK,GAAG,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,KAAK,IAAI,sBAAsB,CAAC;AACzC,CAAC"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import type { Config, ResolvedCommands } from '../types.js';
5
5
  import { type HarnessProvider } from './harness.js';
6
- import type { ResolvedWorktreeConfig, WorktreeDevUrl } from '@cluesmith/codev-types';
6
+ import type { ResolvedWorktreeConfig, WorktreeDevUrl, ResolvedActivityHooks } from '@cluesmith/codev-types';
7
7
  export type { ResolvedWorktreeConfig, WorktreeDevUrl };
8
8
  /**
9
9
  * Check if we're in a git worktree and return the main repo root if so
@@ -33,11 +33,22 @@ export declare function getResolvedCommands(workspaceRoot?: string): ResolvedCom
33
33
  /**
34
34
  * Get the resolved harness provider for the architect shell.
35
35
  * Resolution: explicit architectHarness → auto-detect from architect command → default claude.
36
+ *
37
+ * The command auto-detect source is the *override-aware* resolved command
38
+ * (getResolvedCommands → cliOverrides / TOWER_ARCHITECT_CMD / config), not the
39
+ * raw config value. Without this, `--architect-cmd gemini` / `TOWER_ARCHITECT_CMD=gemini`
40
+ * with no matching harness config would launch gemini but resolve the claude
41
+ * harness, re-arming the #929 resume crash-loop (claude buildResume injecting
42
+ * `--resume <stale-claude-uuid>` into a non-claude command).
36
43
  */
37
44
  export declare function getArchitectHarness(workspaceRoot?: string): HarnessProvider;
38
45
  /**
39
46
  * Get the resolved harness provider for the builder shell.
40
47
  * Resolution: explicit builderHarness → auto-detect from builder command → default claude.
48
+ *
49
+ * Like getArchitectHarness, the command auto-detect source is the override-aware
50
+ * resolved command (so `--builder-cmd gemini` with no matching harness config
51
+ * resolves the gemini harness, not claude — see #929).
41
52
  */
42
53
  export declare function getBuilderHarness(workspaceRoot?: string): HarnessProvider;
43
54
  /**
@@ -47,6 +58,18 @@ export declare function getBuilderHarness(workspaceRoot?: string): HarnessProvid
47
58
  * commands, `afx dev` errors with a clear message pointing at the config).
48
59
  */
49
60
  export declare function getWorktreeConfig(workspaceRoot?: string): ResolvedWorktreeConfig;
61
+ /**
62
+ * Resolved `activityHooks` for a workspace.
63
+ *
64
+ * SECURITY: hooks EXECUTE (the VSCode extension opens their url), so they are
65
+ * resolved ONLY from the user's trusted personal config layers — `~/.codev/config.json`
66
+ * (global, across all repos) and `<root>/.codev/config.local.json` (per-engineer,
67
+ * gitignored) — and NEVER from the committed `.codev/config.json`, which a cloned repo
68
+ * controls (a committed hook would be a zero-click RCE). The project-local layer
69
+ * replaces the global one when present. Malformed entries (no url, or no valid `on`
70
+ * event) are dropped.
71
+ */
72
+ export declare function getActivityHooks(workspaceRoot?: string): ResolvedActivityHooks;
50
73
  /**
51
74
  * Build configuration for the current project
52
75
  */