@telora/daemon 0.15.13 → 0.15.17

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 (97) hide show
  1. package/build-info.json +2 -2
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +0 -50
  4. package/dist/config.js.map +1 -1
  5. package/dist/delivery-lifecycle.d.ts +22 -0
  6. package/dist/delivery-lifecycle.d.ts.map +1 -1
  7. package/dist/delivery-lifecycle.js +51 -0
  8. package/dist/delivery-lifecycle.js.map +1 -1
  9. package/dist/directive-executor.d.ts +92 -0
  10. package/dist/directive-executor.d.ts.map +1 -1
  11. package/dist/directive-executor.js +172 -11
  12. package/dist/directive-executor.js.map +1 -1
  13. package/dist/focus-completion.d.ts.map +1 -1
  14. package/dist/focus-completion.js +12 -1
  15. package/dist/focus-completion.js.map +1 -1
  16. package/dist/focus-engine.d.ts.map +1 -1
  17. package/dist/focus-engine.js +0 -43
  18. package/dist/focus-engine.js.map +1 -1
  19. package/dist/focus-executor.d.ts.map +1 -1
  20. package/dist/focus-executor.js +8 -2
  21. package/dist/focus-executor.js.map +1 -1
  22. package/dist/focus-lifecycle.d.ts +3 -4
  23. package/dist/focus-lifecycle.d.ts.map +1 -1
  24. package/dist/focus-lifecycle.js +6 -79
  25. package/dist/focus-lifecycle.js.map +1 -1
  26. package/dist/focus-phase.d.ts +26 -0
  27. package/dist/focus-phase.d.ts.map +1 -1
  28. package/dist/focus-phase.js +43 -0
  29. package/dist/focus-phase.js.map +1 -1
  30. package/dist/focus-provisioning.d.ts.map +1 -1
  31. package/dist/focus-provisioning.js +1 -7
  32. package/dist/focus-provisioning.js.map +1 -1
  33. package/dist/focus-worktree-state.d.ts.map +1 -1
  34. package/dist/focus-worktree-state.js +0 -1
  35. package/dist/focus-worktree-state.js.map +1 -1
  36. package/dist/listener-auto-advance.d.ts.map +1 -1
  37. package/dist/listener-auto-advance.js +16 -1
  38. package/dist/listener-auto-advance.js.map +1 -1
  39. package/dist/listener.d.ts.map +1 -1
  40. package/dist/listener.js +0 -6
  41. package/dist/listener.js.map +1 -1
  42. package/dist/queries/shared.d.ts.map +1 -1
  43. package/dist/queries/shared.js +0 -3
  44. package/dist/queries/shared.js.map +1 -1
  45. package/dist/supabase.d.ts +0 -4
  46. package/dist/supabase.d.ts.map +1 -1
  47. package/dist/supabase.js +0 -8
  48. package/dist/supabase.js.map +1 -1
  49. package/dist/team-spawner.d.ts.map +1 -1
  50. package/dist/team-spawner.js +8 -2
  51. package/dist/team-spawner.js.map +1 -1
  52. package/dist/templates/claude-md.d.ts.map +1 -1
  53. package/dist/templates/claude-md.js +0 -2
  54. package/dist/templates/claude-md.js.map +1 -1
  55. package/dist/templates/claude-settings.d.ts.map +1 -1
  56. package/dist/templates/claude-settings.js +0 -5
  57. package/dist/templates/claude-settings.js.map +1 -1
  58. package/dist/types/config.d.ts +0 -10
  59. package/dist/types/config.d.ts.map +1 -1
  60. package/dist/types/focus.d.ts +11 -2
  61. package/dist/types/focus.d.ts.map +1 -1
  62. package/dist/unified-shell-config.d.ts.map +1 -1
  63. package/dist/unified-shell-config.js +0 -39
  64. package/dist/unified-shell-config.js.map +1 -1
  65. package/package.json +1 -1
  66. package/dist/qa-crash-recovery.d.ts +0 -77
  67. package/dist/qa-crash-recovery.d.ts.map +0 -1
  68. package/dist/qa-crash-recovery.js +0 -243
  69. package/dist/qa-crash-recovery.js.map +0 -1
  70. package/dist/qa-dev-server.d.ts +0 -73
  71. package/dist/qa-dev-server.d.ts.map +0 -1
  72. package/dist/qa-dev-server.js +0 -279
  73. package/dist/qa-dev-server.js.map +0 -1
  74. package/dist/qa-orchestrator.d.ts +0 -107
  75. package/dist/qa-orchestrator.d.ts.map +0 -1
  76. package/dist/qa-orchestrator.js +0 -518
  77. package/dist/qa-orchestrator.js.map +0 -1
  78. package/dist/qa-port-allocator.d.ts +0 -34
  79. package/dist/qa-port-allocator.d.ts.map +0 -1
  80. package/dist/qa-port-allocator.js +0 -75
  81. package/dist/qa-port-allocator.js.map +0 -1
  82. package/dist/qa-provisioner.d.ts +0 -33
  83. package/dist/qa-provisioner.d.ts.map +0 -1
  84. package/dist/qa-provisioner.js +0 -139
  85. package/dist/qa-provisioner.js.map +0 -1
  86. package/dist/qa-state.d.ts +0 -118
  87. package/dist/qa-state.d.ts.map +0 -1
  88. package/dist/qa-state.js +0 -88
  89. package/dist/qa-state.js.map +0 -1
  90. package/dist/queries/qa.d.ts +0 -120
  91. package/dist/queries/qa.d.ts.map +0 -1
  92. package/dist/queries/qa.js +0 -118
  93. package/dist/queries/qa.js.map +0 -1
  94. package/dist/save-point-restore.d.ts +0 -35
  95. package/dist/save-point-restore.d.ts.map +0 -1
  96. package/dist/save-point-restore.js +0 -146
  97. package/dist/save-point-restore.js.map +0 -1
@@ -1,33 +0,0 @@
1
- /**
2
- * QA worktree provisioning and teardown.
3
- *
4
- * Manages git worktrees for QA environments. Unlike agent worktrees,
5
- * QA worktrees are read-only checkouts of a focus's integration branch
6
- * used to run a dev server for manual QA verification.
7
- */
8
- import type { DaemonConfig } from './types.js';
9
- /**
10
- * Create (or update) a QA worktree for a focus's integration branch.
11
- *
12
- * If the worktree already exists, checks out the correct branch and
13
- * pulls the latest changes. Otherwise, creates a fresh worktree.
14
- *
15
- * @returns The absolute path to the QA worktree directory.
16
- */
17
- export declare function createQaWorktree(config: DaemonConfig, focusBranchName: string, focusId: string): string;
18
- /**
19
- * Remove a QA worktree.
20
- *
21
- * QA worktrees are read-only checkouts so no safety commits are needed.
22
- * Falls back to recursive directory removal if `git worktree remove` fails.
23
- */
24
- export declare function removeQaWorktree(repoPath: string, worktreePath: string): void;
25
- /**
26
- * Symlink common environment/config files from the main repo into a QA worktree.
27
- *
28
- * Only creates symlinks for files that exist in the main repo and don't
29
- * already exist (or aren't already correctly symlinked) in the worktree.
30
- * Logs each action and warns (but does not throw) on failure.
31
- */
32
- export declare function symlinkEnvFiles(repoPath: string, worktreePath: string): void;
33
- //# sourceMappingURL=qa-provisioner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qa-provisioner.d.ts","sourceRoot":"","sources":["../src/qa-provisioner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,MAAM,CAiER;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI,CAgCN;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,IAAI,CA6CN"}
@@ -1,139 +0,0 @@
1
- /**
2
- * QA worktree provisioning and teardown.
3
- *
4
- * Manages git worktrees for QA environments. Unlike agent worktrees,
5
- * QA worktrees are read-only checkouts of a focus's integration branch
6
- * used to run a dev server for manual QA verification.
7
- */
8
- import { existsSync, mkdirSync, symlinkSync, unlinkSync, readlinkSync, rmSync } from 'node:fs';
9
- import { join, resolve } from 'node:path';
10
- import { runGitSync, branchExists } from './git.js';
11
- /** File names to symlink from the main repo into QA worktrees. */
12
- const ENV_FILES = ['.env', '.env.local', '.env.development.local'];
13
- /**
14
- * Create (or update) a QA worktree for a focus's integration branch.
15
- *
16
- * If the worktree already exists, checks out the correct branch and
17
- * pulls the latest changes. Otherwise, creates a fresh worktree.
18
- *
19
- * @returns The absolute path to the QA worktree directory.
20
- */
21
- export function createQaWorktree(config, focusBranchName, focusId) {
22
- const worktreePath = join(config.worktreeDir, 'qa-' + focusId.slice(0, 8));
23
- // Ensure parent worktree directory exists
24
- if (!existsSync(config.worktreeDir)) {
25
- mkdirSync(config.worktreeDir, { recursive: true });
26
- console.log(`[qa-provisioner] Created worktree directory: ${config.worktreeDir}`);
27
- }
28
- // If the worktree directory already exists, update in place (detached HEAD)
29
- if (existsSync(worktreePath)) {
30
- console.log(`[qa-provisioner] QA worktree already exists, updating: ${worktreePath}`);
31
- // Reset detached HEAD to the local branch tip.
32
- // Only fetch from origin if the branch doesn't exist locally (remote-only branch).
33
- if (!branchExists(focusBranchName, config.repoPath)) {
34
- runGitSync(['fetch', 'origin', focusBranchName], config.repoPath);
35
- }
36
- const resetResult = runGitSync(['checkout', '--detach', focusBranchName], worktreePath);
37
- if (!resetResult.success) {
38
- console.warn(`[qa-provisioner] Could not update detached HEAD to ${focusBranchName}: ${resetResult.error}`);
39
- }
40
- symlinkEnvFiles(config.repoPath, worktreePath);
41
- return worktreePath;
42
- }
43
- // Prune stale worktree entries before creating a new one
44
- runGitSync(['worktree', 'prune'], config.repoPath);
45
- // If the branch doesn't exist locally, try fetching from origin
46
- if (!branchExists(focusBranchName, config.repoPath)) {
47
- console.log(`[qa-provisioner] Branch ${focusBranchName} not found locally, fetching from origin...`);
48
- const fetchResult = runGitSync(['fetch', 'origin', focusBranchName], config.repoPath);
49
- if (!fetchResult.success) {
50
- throw new Error(`[qa-provisioner] Failed to fetch branch ${focusBranchName} from origin: ${fetchResult.error}`);
51
- }
52
- }
53
- // Create the worktree with detached HEAD to avoid locking the branch.
54
- // Locking the branch prevents agent merges into integration while QA is running.
55
- console.log(`[qa-provisioner] Creating QA worktree at ${worktreePath} (detached at ${focusBranchName})`);
56
- const addResult = runGitSync(['worktree', 'add', '--detach', worktreePath, focusBranchName], config.repoPath);
57
- if (!addResult.success) {
58
- throw new Error(`[qa-provisioner] Failed to create QA worktree: ${addResult.error}`);
59
- }
60
- symlinkEnvFiles(config.repoPath, worktreePath);
61
- return worktreePath;
62
- }
63
- /**
64
- * Remove a QA worktree.
65
- *
66
- * QA worktrees are read-only checkouts so no safety commits are needed.
67
- * Falls back to recursive directory removal if `git worktree remove` fails.
68
- */
69
- export function removeQaWorktree(repoPath, worktreePath) {
70
- try {
71
- if (!existsSync(worktreePath)) {
72
- console.log(`[qa-provisioner] QA worktree already removed: ${worktreePath}`);
73
- runGitSync(['worktree', 'prune'], repoPath);
74
- return;
75
- }
76
- console.log(`[qa-provisioner] Removing QA worktree: ${worktreePath}`);
77
- const result = runGitSync(['worktree', 'remove', '--force', worktreePath], repoPath);
78
- if (!result.success) {
79
- console.warn(`[qa-provisioner] git worktree remove failed, falling back to rmSync: ${result.error}`);
80
- rmSync(worktreePath, { recursive: true, force: true });
81
- // Prune the now-stale worktree entry
82
- runGitSync(['worktree', 'prune'], repoPath);
83
- console.log(`[qa-provisioner] Removed QA worktree directory via rmSync: ${worktreePath}`);
84
- }
85
- else {
86
- console.log(`[qa-provisioner] Removed QA worktree: ${worktreePath}`);
87
- }
88
- }
89
- catch (err) {
90
- console.error('[qa-provisioner] Error removing QA worktree:', err instanceof Error ? err.message : String(err));
91
- }
92
- }
93
- /**
94
- * Symlink common environment/config files from the main repo into a QA worktree.
95
- *
96
- * Only creates symlinks for files that exist in the main repo and don't
97
- * already exist (or aren't already correctly symlinked) in the worktree.
98
- * Logs each action and warns (but does not throw) on failure.
99
- */
100
- export function symlinkEnvFiles(repoPath, worktreePath) {
101
- for (const fileName of ENV_FILES) {
102
- const sourcePath = resolve(repoPath, fileName);
103
- const targetPath = resolve(worktreePath, fileName);
104
- if (!existsSync(sourcePath)) {
105
- continue;
106
- }
107
- // If the target already exists, check if it's already a correct symlink
108
- if (existsSync(targetPath)) {
109
- try {
110
- const linkTarget = readlinkSync(targetPath);
111
- if (resolve(linkTarget) === sourcePath) {
112
- // Already correctly symlinked
113
- continue;
114
- }
115
- }
116
- catch {
117
- // Not a symlink (regular file) -- skip to avoid overwriting
118
- console.log(`[qa-provisioner] Skipping ${fileName}: already exists in worktree as a regular file`);
119
- continue;
120
- }
121
- // Symlink exists but points somewhere else -- remove and re-create
122
- try {
123
- unlinkSync(targetPath);
124
- }
125
- catch (unlinkErr) {
126
- console.warn(`[qa-provisioner] Could not remove stale symlink for ${fileName}: ${unlinkErr instanceof Error ? unlinkErr.message : String(unlinkErr)}`);
127
- continue;
128
- }
129
- }
130
- try {
131
- symlinkSync(sourcePath, targetPath);
132
- console.log(`[qa-provisioner] Symlinked ${fileName} -> ${sourcePath}`);
133
- }
134
- catch (symlinkErr) {
135
- console.warn(`[qa-provisioner] Failed to symlink ${fileName}: ${symlinkErr instanceof Error ? symlinkErr.message : String(symlinkErr)}`);
136
- }
137
- }
138
- }
139
- //# sourceMappingURL=qa-provisioner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qa-provisioner.js","sourceRoot":"","sources":["../src/qa-provisioner.ts"],"names":[],"mappings":"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"}
@@ -1,118 +0,0 @@
1
- /**
2
- * QA environment state management.
3
- *
4
- * Tracks active QA environments in memory and provides
5
- * query/mutation helpers for the active environments map.
6
- */
7
- /** QA environment status in daemon memory. */
8
- export type QaEnvironmentStatus = 'provisioning' | 'ready' | 'stopping' | 'failed';
9
- /** In-memory state for a QA environment. */
10
- export interface QaEnvironmentState {
11
- /** Focus UUID this QA environment is for. */
12
- focusId: string;
13
- /** Focus name for logging. */
14
- focusName: string;
15
- /** Filesystem path to the QA worktree. */
16
- worktreePath: string;
17
- /** PID of the dev server process. */
18
- pid: number | null;
19
- /** Allocated port for the dev server. */
20
- port: number;
21
- /** Full URL to access the QA environment. */
22
- url: string;
23
- /** Current status. */
24
- status: QaEnvironmentStatus;
25
- /** When the environment was created. */
26
- createdAt: Date;
27
- /** Last error message if status is 'failed'. */
28
- lastError: string | null;
29
- }
30
- /**
31
- * Get all active QA environments.
32
- */
33
- export declare function getActiveQaEnvironments(): Map<string, QaEnvironmentState>;
34
- /**
35
- * Get a single QA environment by focus ID.
36
- */
37
- export declare function getQaEnvironment(focusId: string): QaEnvironmentState | undefined;
38
- /**
39
- * Check if a focus already has an active QA environment.
40
- */
41
- export declare function hasActiveQaEnvironment(focusId: string): boolean;
42
- /**
43
- * Get count of active QA environments.
44
- */
45
- export declare function getQaEnvironmentCount(): number;
46
- /**
47
- * Add or update a QA environment entry.
48
- */
49
- export declare function setQaEnvironment(focusId: string, state: QaEnvironmentState): void;
50
- /**
51
- * Remove a QA environment entry.
52
- * Returns whether the entry existed.
53
- */
54
- export declare function removeQaEnvironment(focusId: string): boolean;
55
- /** In-memory state for a product-level QA environment. */
56
- export interface ProductQaEnvironmentState {
57
- /** Product UUID this QA environment is for. */
58
- productId: string;
59
- /** Product name for logging. */
60
- productName: string;
61
- /** Filesystem path to the QA worktree (on integration branch). */
62
- worktreePath: string;
63
- /** PID of the dev server process. */
64
- pid: number | null;
65
- /** Allocated port for the dev server. */
66
- port: number;
67
- /** Full URL to access the QA environment. */
68
- url: string;
69
- /** Current status. */
70
- status: QaEnvironmentStatus;
71
- /** When the environment was created. */
72
- createdAt: Date;
73
- /** Last error message if status is 'failed'. */
74
- lastError: string | null;
75
- }
76
- /** In-memory state for a save point QA environment. */
77
- export interface SavePointQaEnvironmentState {
78
- /** Save point UUID. */
79
- savePointId: string;
80
- /** Save point name for logging. */
81
- name: string;
82
- /** Filesystem path to the save point worktree. */
83
- worktreePath: string;
84
- /** PID of the dev server process. */
85
- pid: number | null;
86
- /** Allocated port for the dev server. */
87
- port: number;
88
- /** Full URL to access the QA environment. */
89
- url: string;
90
- /** Current status. */
91
- status: QaEnvironmentStatus;
92
- /** When the environment was created. */
93
- createdAt: Date;
94
- /** Last error message if status is 'failed'. */
95
- lastError: string | null;
96
- }
97
- export declare function getSavePointQaEnvironment(savePointId: string): SavePointQaEnvironmentState | undefined;
98
- export declare function hasActiveSavePointQaEnvironment(savePointId: string): boolean;
99
- export declare function setSavePointQaEnvironment(savePointId: string, state: SavePointQaEnvironmentState): void;
100
- export declare function removeSavePointQaEnvironment(savePointId: string): boolean;
101
- /**
102
- * Get a product QA environment by product ID.
103
- */
104
- export declare function getProductQaEnvironment(productId: string): ProductQaEnvironmentState | undefined;
105
- /**
106
- * Check if a product already has an active QA environment.
107
- */
108
- export declare function hasActiveProductQaEnvironment(productId: string): boolean;
109
- /**
110
- * Add or update a product QA environment entry.
111
- */
112
- export declare function setProductQaEnvironment(productId: string, state: ProductQaEnvironmentState): void;
113
- /**
114
- * Remove a product QA environment entry.
115
- * Returns whether the entry existed.
116
- */
117
- export declare function removeProductQaEnvironment(productId: string): boolean;
118
- //# sourceMappingURL=qa-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qa-state.d.ts","sourceRoot":"","sources":["../src/qa-state.ts"],"names":[],"mappings":"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"}
package/dist/qa-state.js DELETED
@@ -1,88 +0,0 @@
1
- /**
2
- * QA environment state management.
3
- *
4
- * Tracks active QA environments in memory and provides
5
- * query/mutation helpers for the active environments map.
6
- */
7
- // ── Active environments tracking ─────────────────────────────────────
8
- /** Active QA environments: focusId -> QaEnvironmentState */
9
- const activeEnvironments = new Map();
10
- /**
11
- * Get all active QA environments.
12
- */
13
- export function getActiveQaEnvironments() {
14
- return activeEnvironments;
15
- }
16
- /**
17
- * Get a single QA environment by focus ID.
18
- */
19
- export function getQaEnvironment(focusId) {
20
- return activeEnvironments.get(focusId);
21
- }
22
- /**
23
- * Check if a focus already has an active QA environment.
24
- */
25
- export function hasActiveQaEnvironment(focusId) {
26
- return activeEnvironments.has(focusId);
27
- }
28
- /**
29
- * Get count of active QA environments.
30
- */
31
- export function getQaEnvironmentCount() {
32
- return activeEnvironments.size;
33
- }
34
- /**
35
- * Add or update a QA environment entry.
36
- */
37
- export function setQaEnvironment(focusId, state) {
38
- activeEnvironments.set(focusId, state);
39
- }
40
- /**
41
- * Remove a QA environment entry.
42
- * Returns whether the entry existed.
43
- */
44
- export function removeQaEnvironment(focusId) {
45
- return activeEnvironments.delete(focusId);
46
- }
47
- /** Active product QA environments: productId -> ProductQaEnvironmentState */
48
- const activeProductEnvironments = new Map();
49
- /** Active save point QA environments: savePointId -> state */
50
- const activeSavePointEnvironments = new Map();
51
- export function getSavePointQaEnvironment(savePointId) {
52
- return activeSavePointEnvironments.get(savePointId);
53
- }
54
- export function hasActiveSavePointQaEnvironment(savePointId) {
55
- return activeSavePointEnvironments.has(savePointId);
56
- }
57
- export function setSavePointQaEnvironment(savePointId, state) {
58
- activeSavePointEnvironments.set(savePointId, state);
59
- }
60
- export function removeSavePointQaEnvironment(savePointId) {
61
- return activeSavePointEnvironments.delete(savePointId);
62
- }
63
- /**
64
- * Get a product QA environment by product ID.
65
- */
66
- export function getProductQaEnvironment(productId) {
67
- return activeProductEnvironments.get(productId);
68
- }
69
- /**
70
- * Check if a product already has an active QA environment.
71
- */
72
- export function hasActiveProductQaEnvironment(productId) {
73
- return activeProductEnvironments.has(productId);
74
- }
75
- /**
76
- * Add or update a product QA environment entry.
77
- */
78
- export function setProductQaEnvironment(productId, state) {
79
- activeProductEnvironments.set(productId, state);
80
- }
81
- /**
82
- * Remove a product QA environment entry.
83
- * Returns whether the entry existed.
84
- */
85
- export function removeProductQaEnvironment(productId) {
86
- return activeProductEnvironments.delete(productId);
87
- }
88
- //# sourceMappingURL=qa-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qa-state.js","sourceRoot":"","sources":["../src/qa-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,wEAAwE;AAExE,4DAA4D;AAC5D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,KAAyB;IACzE,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AA0BD,6EAA6E;AAC7E,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAqC,CAAC;AA0B/E,8DAA8D;AAC9D,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAuC,CAAC;AAEnF,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,WAAmB;IACjE,OAAO,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,KAAkC;IAC/F,2BAA2B,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAmB;IAC9D,OAAO,2BAA2B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAiB;IAC7D,OAAO,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,KAAgC;IACzF,yBAAyB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,SAAiB;IAC1D,OAAO,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC"}
@@ -1,120 +0,0 @@
1
- /**
2
- * QA environment queries.
3
- */
4
- /**
5
- * Get focuses with pending QA actions for this daemon's product.
6
- */
7
- export declare function getQaRequests(productId: string): Promise<Array<{
8
- focus_id: string;
9
- focus_name: string;
10
- qa_status: string;
11
- product_id: string;
12
- }>>;
13
- /**
14
- * Get focuses with active QA environments that are no longer in 'active' status.
15
- * Used to detect deactivated focuses that need QA teardown.
16
- */
17
- export declare function getDeactivatedQaFocuses(productId: string): Promise<Array<{
18
- focus_id: string;
19
- focus_name: string;
20
- qa_status: string;
21
- focus_status: string;
22
- product_id: string;
23
- }>>;
24
- /**
25
- * Get all focuses with non-null QA state, including focus status.
26
- * Used by crash recovery to reconcile QA environments on daemon startup.
27
- */
28
- export declare function getQaFocuses(productId: string): Promise<Array<{
29
- focusId: string;
30
- focusName: string;
31
- qaStatus: string | null;
32
- qaWorktreePath: string | null;
33
- qaPort: number | null;
34
- focusStatus: string;
35
- }>>;
36
- /**
37
- * Update QA status for a focus.
38
- * Used during provisioning and teardown.
39
- */
40
- export declare function updateQaStatus(focusId: string, fields: {
41
- qaStatus?: string | null;
42
- qaUrl?: string | null;
43
- qaPort?: number | null;
44
- qaWorktreePath?: string | null;
45
- qaReadyAt?: string | null;
46
- qaError?: string | null;
47
- }): Promise<void>;
48
- /**
49
- * Get products with pending QA actions.
50
- */
51
- export declare function getProductQaRequests(productId: string): Promise<Array<{
52
- product_id: string;
53
- product_name: string;
54
- qa_status: string;
55
- }>>;
56
- /**
57
- * Update QA status for a product.
58
- * Used during provisioning and teardown.
59
- */
60
- export declare function updateProductQaStatus(productId: string, fields: {
61
- qaStatus?: string | null;
62
- qaUrl?: string | null;
63
- qaPort?: number | null;
64
- qaWorktreePath?: string | null;
65
- qaReadyAt?: string | null;
66
- qaError?: string | null;
67
- }): Promise<void>;
68
- /**
69
- * Get save points with pending QA actions.
70
- */
71
- export declare function getSavePointQaRequests(productId: string): Promise<Array<{
72
- save_point_id: string;
73
- name: string;
74
- commit_sha: string;
75
- worktree_path: string | null;
76
- qa_status: string;
77
- product_id: string;
78
- }>>;
79
- /**
80
- * Update QA status for a save point.
81
- */
82
- export declare function updateSavePointQaStatus(savePointId: string, fields: {
83
- qaStatus?: string | null;
84
- qaUrl?: string | null;
85
- qaPort?: number | null;
86
- qaReadyAt?: string | null;
87
- qaError?: string | null;
88
- worktreePath?: string | null;
89
- }): Promise<void>;
90
- /**
91
- * Get save points with pending restore requests.
92
- */
93
- export declare function getSavePointRestoreRequests(productId: string): Promise<Array<{
94
- savePointId: string;
95
- name: string;
96
- commitSha: string;
97
- productId: string;
98
- autoSaveBeforeRestore: boolean;
99
- organizationId: string;
100
- }>>;
101
- /**
102
- * Update restore status for a save point.
103
- */
104
- export declare function updateSavePointRestoreStatus(savePointId: string, fields: {
105
- restoreStatus?: string | null;
106
- restoreError?: string | null;
107
- restoreCompletedAt?: string | null;
108
- }): Promise<void>;
109
- /**
110
- * Get product QA state for crash recovery.
111
- */
112
- export declare function getProductQaStatus(productId: string): Promise<{
113
- productId: string;
114
- productName: string;
115
- qaStatus: string | null;
116
- qaPort: number | null;
117
- qaWorktreePath: string | null;
118
- productStatus: string;
119
- }>;
120
- //# sourceMappingURL=qa.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qa.d.ts","sourceRoot":"","sources":["../../src/queries/qa.ts"],"names":[],"mappings":"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"}
@@ -1,118 +0,0 @@
1
- /**
2
- * QA environment queries.
3
- */
4
- import { callApi } from './shared.js';
5
- /**
6
- * Get focuses with pending QA actions for this daemon's product.
7
- */
8
- export async function getQaRequests(productId) {
9
- const result = await callApi('daemon_get_qa_requests', { productId });
10
- return result.focuses.map(r => ({
11
- focus_id: r.focusId,
12
- focus_name: r.focusName,
13
- qa_status: r.qaStatus,
14
- product_id: r.productId,
15
- }));
16
- }
17
- /**
18
- * Get focuses with active QA environments that are no longer in 'active' status.
19
- * Used to detect deactivated focuses that need QA teardown.
20
- */
21
- export async function getDeactivatedQaFocuses(productId) {
22
- const result = await callApi('daemon_get_deactivated_qa_focuses', { productId });
23
- return result.focuses.map(r => ({
24
- focus_id: r.focusId,
25
- focus_name: r.focusName,
26
- qa_status: r.qaStatus,
27
- focus_status: r.focusStatus,
28
- product_id: r.productId,
29
- }));
30
- }
31
- /**
32
- * Get all focuses with non-null QA state, including focus status.
33
- * Used by crash recovery to reconcile QA environments on daemon startup.
34
- */
35
- export async function getQaFocuses(productId) {
36
- const result = await callApi('daemon_get_qa_focuses', { productId });
37
- return result.focuses.map(r => ({
38
- focusId: r.focusId,
39
- focusName: r.focusName,
40
- qaStatus: r.qaStatus,
41
- qaWorktreePath: r.qaWorktreePath,
42
- qaPort: r.qaPort,
43
- focusStatus: r.focusStatus,
44
- }));
45
- }
46
- /**
47
- * Update QA status for a focus.
48
- * Used during provisioning and teardown.
49
- */
50
- export async function updateQaStatus(focusId, fields) {
51
- await callApi('daemon_update_qa_status', { focusId, fields });
52
- }
53
- /**
54
- * Get products with pending QA actions.
55
- */
56
- export async function getProductQaRequests(productId) {
57
- const result = await callApi('daemon_get_product_qa_requests', { productId });
58
- return result.products.map(p => ({
59
- product_id: p.productId,
60
- product_name: p.productName,
61
- qa_status: p.qaStatus,
62
- }));
63
- }
64
- /**
65
- * Update QA status for a product.
66
- * Used during provisioning and teardown.
67
- */
68
- export async function updateProductQaStatus(productId, fields) {
69
- await callApi('daemon_update_product_qa_status', { productId, fields });
70
- }
71
- /**
72
- * Get save points with pending QA actions.
73
- */
74
- export async function getSavePointQaRequests(productId) {
75
- const result = await callApi('daemon_get_save_point_qa_requests', { productId });
76
- return result.savePoints.map(sp => ({
77
- save_point_id: sp.savePointId,
78
- name: sp.name,
79
- commit_sha: sp.commitSha,
80
- worktree_path: sp.worktreePath,
81
- qa_status: sp.qaStatus,
82
- product_id: sp.productId,
83
- }));
84
- }
85
- /**
86
- * Update QA status for a save point.
87
- */
88
- export async function updateSavePointQaStatus(savePointId, fields) {
89
- await callApi('daemon_update_save_point_qa_status', { savePointId, fields });
90
- }
91
- /**
92
- * Get save points with pending restore requests.
93
- */
94
- export async function getSavePointRestoreRequests(productId) {
95
- const result = await callApi('daemon_get_save_point_restore_requests', { productId });
96
- return result.savePoints;
97
- }
98
- /**
99
- * Update restore status for a save point.
100
- */
101
- export async function updateSavePointRestoreStatus(savePointId, fields) {
102
- await callApi('daemon_update_save_point_restore_status', { savePointId, fields });
103
- }
104
- /**
105
- * Get product QA state for crash recovery.
106
- */
107
- export async function getProductQaStatus(productId) {
108
- const result = await callApi('daemon_get_product_qa_status', { productId });
109
- return {
110
- productId: result.product.productId,
111
- productName: result.product.productName,
112
- qaStatus: result.product.qaStatus,
113
- qaPort: result.product.qaPort,
114
- qaWorktreePath: result.product.qaWorktreePath,
115
- productStatus: result.product.productStatus,
116
- };
117
- }
118
- //# sourceMappingURL=qa.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qa.js","sourceRoot":"","sources":["../../src/queries/qa.ts"],"names":[],"mappings":"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"}