@straiffi/archon 1.11.9 → 1.11.11

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 (109) hide show
  1. package/dist/client/assets/{ActivityView-CgC2rnNq.js → ActivityView-DhXAk8nD.js} +1 -1
  2. package/dist/client/assets/{GitHubActionsDialog-XXGwm-bw.js → GitHubActionsDialog-eV8vDGmv.js} +1 -1
  3. package/dist/client/assets/{VerificationDialog-C8cDKxSG.js → VerificationDialog-C4Ij0P9V.js} +1 -1
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BhdIU_o9.js → architectureDiagram-3BPJPVTR--XT-8mH7.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-CfKNdNso.js → blockDiagram-GPEHLZMM-A3lej45d.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-BYOg4iNZ.js → c4Diagram-AAUBKEIU-BsiLJgam.js} +1 -1
  7. package/dist/client/assets/channel-DcOmia11.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-JmBb9p2l.js → chunk-2J33WTMH-Dr5H5EGn.js} +1 -1
  9. package/dist/client/assets/{chunk-3OPIFGDE-CuCn8uDI.js → chunk-3OPIFGDE-D_cjBOY3.js} +1 -1
  10. package/dist/client/assets/{chunk-5ZQYHXKU-DaGbZz7d.js → chunk-5ZQYHXKU-D3lD57Bx.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-D7UwchWL.js → chunk-727SXJPM-UB6SKeIY.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-CxYpis5S.js → chunk-AQP2D5EJ-P6A2b7ic.js} +1 -1
  13. package/dist/client/assets/{chunk-CSCIHK7Q-DF4Jo5lo.js → chunk-CSCIHK7Q-CMjSxVuN.js} +1 -1
  14. package/dist/client/assets/{chunk-KSCS5N6A-Bul_8QaO.js → chunk-KSCS5N6A-D9rfxTvN.js} +1 -1
  15. package/dist/client/assets/{chunk-L5ZTLDWV-BQvBZt_1.js → chunk-L5ZTLDWV-B69CbLIs.js} +1 -1
  16. package/dist/client/assets/{chunk-LZXEDZCA-BPsejGww.js → chunk-LZXEDZCA-BB4u5QGw.js} +2 -2
  17. package/dist/client/assets/{chunk-ND2GUHAM-D8AX2HAv.js → chunk-ND2GUHAM-CiPVJM4O.js} +1 -1
  18. package/dist/client/assets/{chunk-NZK2D7GU-CE21a8CK.js → chunk-NZK2D7GU-ByHDa020.js} +1 -1
  19. package/dist/client/assets/{chunk-O5CBEL6O-vZQ8YCvm.js → chunk-O5CBEL6O-CJixRpq_.js} +1 -1
  20. package/dist/client/assets/{chunk-WU5MYG2G-BpBNiw0j.js → chunk-WU5MYG2G-iQo_M1AS.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-CP_nUDz7.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-cHyF23wV.js +1 -0
  23. package/dist/client/assets/{dagre-BM42HDAG-BqEPuJwq.js → dagre-BM42HDAG-Cp0C8m-n.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-BWLSNrm2.js → diagram-2AECGRRQ-HKfPlcrp.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-CUNUlEy4.js → diagram-5GNKFQAL-CVqac4lf.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-CgZcDZ0J.js → diagram-KO2AKTUF-C0Rs9AXE.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-DTfMha7_.js → diagram-LMA3HP47-BN6HAX-s.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-ClO5evmB.js → diagram-OG6HWLK6-D3ykU1BG.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-BRW1HE33.js → erDiagram-TEJ5UH35-DRYdle2Q.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-tC2xALm9.js → flowDiagram-I6XJVG4X-BoCAsLFi.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-D7Bu6hss.js → ganttDiagram-6RSMTGT7-rTjNCkO6.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-Cx1uYcGX.js → gitGraphDiagram-PVQCEYII-WOFN74ol.js} +1 -1
  33. package/dist/client/assets/{index-CArcyEjQ.js → index-CjQf4He8.js} +83 -77
  34. package/dist/client/assets/{infoDiagram-5YYISTIA-bKT-ZR4K.js → infoDiagram-5YYISTIA-DoOumPs2.js} +1 -1
  35. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CrUBKkGR.js → ishikawaDiagram-YF4QCWOH-CcXTjYSk.js} +1 -1
  36. package/dist/client/assets/{journeyDiagram-JHISSGLW-CCmXkk8M.js → journeyDiagram-JHISSGLW-FUkB7RNm.js} +1 -1
  37. package/dist/client/assets/{kanban-definition-UN3LZRKU-BmcV7QM-.js → kanban-definition-UN3LZRKU-DQ9QVLE3.js} +1 -1
  38. package/dist/client/assets/{line-C5oH-IfR.js → line-DclFnIyG.js} +1 -1
  39. package/dist/client/assets/{mermaid-parser.core-BFyFUctK.js → mermaid-parser.core-35QfBVsT.js} +1 -1
  40. package/dist/client/assets/{mermaid.core-DXkHU1mX.js → mermaid.core-DUGvejuM.js} +3 -3
  41. package/dist/client/assets/{mindmap-definition-RKZ34NQL-DhErnbAy.js → mindmap-definition-RKZ34NQL-B0BKDy7C.js} +1 -1
  42. package/dist/client/assets/{pieDiagram-4H26LBE5-B8pkGeer.js → pieDiagram-4H26LBE5-C5Dnh4Wj.js} +1 -1
  43. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BkYWz3t_.js → quadrantDiagram-W4KKPZXB-C2QopzmK.js} +1 -1
  44. package/dist/client/assets/{requirementDiagram-4Y6WPE33-DB6jC89I.js → requirementDiagram-4Y6WPE33-BdvmFwD3.js} +1 -1
  45. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BeAslLcb.js → sankeyDiagram-5OEKKPKP-C8uEigA1.js} +1 -1
  46. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BgXC1aKi.js → sequenceDiagram-3UESZ5HK-C7aiaSWU.js} +1 -1
  47. package/dist/client/assets/{stateDiagram-AJRCARHV-Dj3Qlk0A.js → stateDiagram-AJRCARHV-fGTraRod.js} +1 -1
  48. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-jJPXa3YX.js +1 -0
  49. package/dist/client/assets/{timeline-definition-PNZ67QCA-C8ncLV_K.js → timeline-definition-PNZ67QCA-BbeaBG9A.js} +1 -1
  50. package/dist/client/assets/{vennDiagram-CIIHVFJN-jgBSpqC1.js → vennDiagram-CIIHVFJN-DFQ9EF7H.js} +1 -1
  51. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DfGD5Kys.js → wardleyDiagram-YWT4CUSO-Bl-Acd-e.js} +1 -1
  52. package/dist/client/assets/{xychartDiagram-2RQKCTM6-Dyk41E2n.js → xychartDiagram-2RQKCTM6-C5hjKfYz.js} +1 -1
  53. package/dist/client/index.html +1 -1
  54. package/dist/server/db.js +2 -0
  55. package/dist/server/db.js.map +1 -1
  56. package/dist/server/index.js +88 -175
  57. package/dist/server/index.js.map +1 -1
  58. package/dist/server/lib/bundleCleanupManagement.js +181 -0
  59. package/dist/server/lib/bundleCleanupManagement.js.map +1 -0
  60. package/dist/server/lib/bundleCleanupRoutes.js +36 -0
  61. package/dist/server/lib/bundleCleanupRoutes.js.map +1 -0
  62. package/dist/server/lib/bundleDeletion.js +257 -0
  63. package/dist/server/lib/bundleDeletion.js.map +1 -0
  64. package/dist/server/lib/bundleDeletionRoutes.js +73 -0
  65. package/dist/server/lib/bundleDeletionRoutes.js.map +1 -0
  66. package/dist/server/lib/bundleDeletionSchema.js +134 -0
  67. package/dist/server/lib/bundleDeletionSchema.js.map +1 -0
  68. package/dist/server/lib/bundleDeletionStore.js +18 -0
  69. package/dist/server/lib/bundleDeletionStore.js.map +1 -0
  70. package/dist/server/lib/bundleWorktreeCleanup.js +160 -0
  71. package/dist/server/lib/bundleWorktreeCleanup.js.map +1 -0
  72. package/dist/server/lib/diffExplanationJobs.js +13 -23
  73. package/dist/server/lib/diffExplanationJobs.js.map +1 -1
  74. package/dist/server/lib/diffExplanationRoutes.js +9 -2
  75. package/dist/server/lib/diffExplanationRoutes.js.map +1 -1
  76. package/dist/server/lib/diffExplanationTargets.js +22 -0
  77. package/dist/server/lib/diffExplanationTargets.js.map +1 -0
  78. package/dist/server/lib/dockerSandboxCleanup.js +68 -0
  79. package/dist/server/lib/dockerSandboxCleanup.js.map +1 -0
  80. package/dist/server/lib/dockerSandboxEnvironmentOperations.js +4 -3
  81. package/dist/server/lib/dockerSandboxEnvironmentOperations.js.map +1 -1
  82. package/dist/server/lib/dockerSandboxExecutionEnvironment.js +8 -55
  83. package/dist/server/lib/dockerSandboxExecutionEnvironment.js.map +1 -1
  84. package/dist/server/lib/executionEnvironmentOperations.js +7 -2
  85. package/dist/server/lib/executionEnvironmentOperations.js.map +1 -1
  86. package/dist/server/lib/executionEnvironmentReconciliation.js +34 -169
  87. package/dist/server/lib/executionEnvironmentReconciliation.js.map +1 -1
  88. package/dist/server/lib/executionEnvironmentTargetCleanup.js +232 -0
  89. package/dist/server/lib/executionEnvironmentTargetCleanup.js.map +1 -0
  90. package/dist/server/lib/executionEnvironments.js +1 -0
  91. package/dist/server/lib/executionEnvironments.js.map +1 -1
  92. package/dist/server/lib/git.js +26 -6
  93. package/dist/server/lib/git.js.map +1 -1
  94. package/dist/server/lib/i18n/resources.js +10 -0
  95. package/dist/server/lib/i18n/resources.js.map +1 -1
  96. package/dist/server/lib/serviceRunLogs.js +18 -21
  97. package/dist/server/lib/serviceRunLogs.js.map +1 -1
  98. package/dist/server/lib/types.js.map +1 -1
  99. package/dist/server/lib/workspaceDiff.js +50 -4
  100. package/dist/server/lib/workspaceDiff.js.map +1 -1
  101. package/dist/server/lib/workspaceDiffCommit.js +13 -0
  102. package/dist/server/lib/workspaceDiffCommit.js.map +1 -0
  103. package/dist/server/lib/workspaceDiffRoutes.js +9 -3
  104. package/dist/server/lib/workspaceDiffRoutes.js.map +1 -1
  105. package/package.json +1 -1
  106. package/dist/client/assets/channel-4wFtrIng.js +0 -1
  107. package/dist/client/assets/classDiagram-4FO5ZUOK-DNAwGSF5.js +0 -1
  108. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-cskOKMdS.js +0 -1
  109. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-I1Ry2lsa.js +0 -1
@@ -0,0 +1,134 @@
1
+ export const initializeBundleDeletionSchema = (db) => {
2
+ const columns = [
3
+ ['status', "TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'blocked', 'completed', 'abandoned'))"],
4
+ ['retry_attempts', 'INTEGER NOT NULL DEFAULT 0'],
5
+ ['failure_code', 'TEXT'],
6
+ ['quarantined', 'INTEGER NOT NULL DEFAULT 0'],
7
+ ['project_name', "TEXT NOT NULL DEFAULT ''"],
8
+ ['resources_json', "TEXT NOT NULL DEFAULT '[]'"],
9
+ ['environment_snapshot_json', "TEXT NOT NULL DEFAULT '[]'"],
10
+ ['abandoned_at', 'TEXT'],
11
+ ];
12
+ const existing = db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'bundle_deletion_jobs'").get();
13
+ if (existing) {
14
+ const names = new Set(db.prepare('PRAGMA table_info(bundle_deletion_jobs)').all().map(column => column.name));
15
+ for (const [name, definition] of columns) {
16
+ if (!names.has(name)) {
17
+ db.exec(`ALTER TABLE bundle_deletion_jobs ADD COLUMN ${name} ${definition}`);
18
+ }
19
+ }
20
+ }
21
+ // Jobs and their ownership snapshots must outlive a deleted project.
22
+ const createTable = (name) => `CREATE TABLE IF NOT EXISTS ${name} (
23
+ bundle_id TEXT PRIMARY KEY, project_id TEXT NOT NULL, target_key TEXT NOT NULL,
24
+ repo_path TEXT NOT NULL, branch TEXT NOT NULL, workspace_path TEXT NOT NULL,
25
+ phase TEXT NOT NULL DEFAULT 'sandboxes' CHECK (phase IN ('sandboxes', 'worktree', 'branch', 'completed')),
26
+ claim_id TEXT, claimed_at TEXT, attempts INTEGER NOT NULL DEFAULT 0, retry_at TEXT,
27
+ last_error TEXT, branch_warning TEXT, created_at TEXT NOT NULL, completed_at TEXT,
28
+ ${columns.map(([name, definition]) => `${name} ${definition}`).join(', ')},
29
+ CHECK ((claim_id IS NULL) = (claimed_at IS NULL))
30
+ )`;
31
+ db.transaction(() => {
32
+ const triggers = db.prepare("SELECT name FROM sqlite_master WHERE type = 'trigger' AND name LIKE 'bundle_deletion_%'").all();
33
+ for (const trigger of triggers) {
34
+ db.exec(`DROP TRIGGER "${trigger.name.replaceAll('"', '""')}"`);
35
+ }
36
+ if (existing && db.prepare('PRAGMA foreign_key_list(bundle_deletion_jobs)').all().length > 0) {
37
+ db.exec(createTable('bundle_deletion_jobs_migrated'));
38
+ db.exec(`INSERT INTO bundle_deletion_jobs_migrated SELECT * FROM bundle_deletion_jobs;
39
+ DROP TABLE bundle_deletion_jobs;
40
+ ALTER TABLE bundle_deletion_jobs_migrated RENAME TO bundle_deletion_jobs;`);
41
+ }
42
+ else {
43
+ db.exec(createTable('bundle_deletion_jobs'));
44
+ }
45
+ db.exec(`UPDATE bundle_deletion_jobs SET status = 'completed' WHERE phase = 'completed' AND status = 'pending';
46
+ UPDATE bundle_deletion_jobs SET project_name = COALESCE((SELECT name FROM projects WHERE id = project_id), project_id)
47
+ WHERE project_name = '';
48
+ DROP INDEX IF EXISTS bundle_deletion_reserved_branch;
49
+ DROP INDEX IF EXISTS bundle_deletion_reserved_workspace;
50
+ CREATE TABLE IF NOT EXISTS bundle_cleanup_quarantines (
51
+ bundle_id TEXT NOT NULL, workspace_path TEXT NOT NULL, repo_path TEXT NOT NULL, branch TEXT NOT NULL,
52
+ PRIMARY KEY (bundle_id, workspace_path)
53
+ );`);
54
+ }).immediate();
55
+ db.exec(`
56
+ CREATE UNIQUE INDEX IF NOT EXISTS bundle_deletion_reserved_branch
57
+ ON bundle_deletion_jobs(project_id, branch COLLATE NOCASE) WHERE status IN ('pending', 'blocked');
58
+ CREATE UNIQUE INDEX IF NOT EXISTS bundle_deletion_reserved_workspace
59
+ ON bundle_deletion_jobs(workspace_path) WHERE status IN ('pending', 'blocked');
60
+
61
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_bundle_insert
62
+ BEFORE INSERT ON worktree_bundles
63
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job WHERE job.project_id = NEW.project_id
64
+ AND job.status IN ('pending', 'blocked') AND job.branch = NEW.branch COLLATE NOCASE)
65
+ OR EXISTS (SELECT 1 FROM bundle_cleanup_quarantines quarantine JOIN projects project ON project.id = NEW.project_id
66
+ WHERE quarantine.repo_path = project.repo_path AND quarantine.branch = NEW.branch COLLATE NOCASE)
67
+ BEGIN SELECT RAISE(ABORT, 'Bundle branch is reserved for pending cleanup'); END;
68
+
69
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_bundle_update
70
+ BEFORE UPDATE OF branch, project_id ON worktree_bundles
71
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job WHERE job.project_id = NEW.project_id
72
+ AND job.status IN ('pending', 'blocked') AND job.branch = NEW.branch COLLATE NOCASE)
73
+ OR EXISTS (SELECT 1 FROM bundle_cleanup_quarantines quarantine JOIN projects project ON project.id = NEW.project_id
74
+ WHERE quarantine.repo_path = project.repo_path AND quarantine.branch = NEW.branch COLLATE NOCASE)
75
+ BEGIN SELECT RAISE(ABORT, 'Bundle branch is reserved for pending cleanup'); END;
76
+
77
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_ticket_insert
78
+ BEFORE INSERT ON tickets
79
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job WHERE job.project_id = NEW.project_id
80
+ AND job.status IN ('pending', 'blocked', 'abandoned') AND (job.bundle_id = NEW.worktree_bundle_id
81
+ OR (job.status <> 'abandoned' AND job.branch = NEW.branch COLLATE NOCASE)))
82
+ OR EXISTS (SELECT 1 FROM bundle_cleanup_quarantines quarantine JOIN projects project ON project.id = NEW.project_id
83
+ WHERE quarantine.repo_path = project.repo_path AND quarantine.branch = NEW.branch COLLATE NOCASE)
84
+ BEGIN SELECT RAISE(ABORT, 'Ticket target is reserved for pending cleanup'); END;
85
+
86
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_ticket_update
87
+ BEFORE UPDATE OF branch, project_id, worktree_bundle_id ON tickets
88
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job WHERE job.project_id = NEW.project_id
89
+ AND job.status IN ('pending', 'blocked', 'abandoned') AND (job.bundle_id = NEW.worktree_bundle_id
90
+ OR (job.status <> 'abandoned' AND job.branch = NEW.branch COLLATE NOCASE)))
91
+ OR EXISTS (SELECT 1 FROM bundle_cleanup_quarantines quarantine JOIN projects project ON project.id = NEW.project_id
92
+ WHERE quarantine.repo_path = project.repo_path AND quarantine.branch = NEW.branch COLLATE NOCASE)
93
+ BEGIN SELECT RAISE(ABORT, 'Ticket target is reserved for pending cleanup'); END;
94
+
95
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_environment_insert
96
+ BEFORE INSERT ON execution_environments
97
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job WHERE job.status IN ('pending', 'blocked', 'abandoned')
98
+ AND ((job.project_id = NEW.project_id AND job.target_key = NEW.target_key)
99
+ OR (job.status <> 'abandoned' AND job.workspace_path = NEW.target_workspace_path)))
100
+ OR EXISTS (SELECT 1 FROM bundle_cleanup_quarantines WHERE workspace_path = NEW.target_workspace_path)
101
+ BEGIN SELECT RAISE(ABORT, 'Execution target is reserved for pending cleanup'); END;
102
+
103
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_binding_insert
104
+ BEFORE INSERT ON execution_environment_run_bindings
105
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job JOIN execution_environments environment
106
+ ON environment.project_id = job.project_id AND environment.target_key = job.target_key
107
+ WHERE job.status IN ('pending', 'blocked', 'abandoned') AND environment.id = NEW.environment_id AND NEW.released_at IS NULL)
108
+ BEGIN SELECT RAISE(ABORT, 'Execution target is reserved for pending cleanup'); END;
109
+
110
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_binding_reactivation
111
+ BEFORE UPDATE OF released_at, environment_id, project_id ON execution_environment_run_bindings
112
+ WHEN EXISTS (SELECT 1 FROM bundle_deletion_jobs job JOIN execution_environments environment
113
+ ON environment.project_id = job.project_id AND environment.target_key = job.target_key
114
+ WHERE job.status IN ('pending', 'blocked', 'abandoned') AND environment.id = NEW.environment_id AND NEW.released_at IS NULL)
115
+ BEGIN SELECT RAISE(ABORT, 'Execution target is reserved for pending cleanup'); END;
116
+
117
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_quarantined_project_insert
118
+ BEFORE INSERT ON projects
119
+ WHEN EXISTS (SELECT 1 FROM bundle_cleanup_quarantines WHERE workspace_path = NEW.repo_path)
120
+ BEGIN SELECT RAISE(ABORT, 'Workspace is quarantined after abandoned cleanup'); END;
121
+
122
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_prevent_abandoned_operation
123
+ BEFORE UPDATE OF operation_claim_id ON execution_environments
124
+ WHEN NEW.operation_claim_id IS NOT NULL AND EXISTS (SELECT 1 FROM bundle_deletion_jobs
125
+ WHERE project_id = NEW.project_id AND target_key = NEW.target_key AND status IN ('pending', 'blocked', 'abandoned'))
126
+ BEGIN SELECT RAISE(ABORT, 'Execution target is owned by a cleanup job'); END;
127
+
128
+ CREATE TRIGGER IF NOT EXISTS bundle_deletion_quarantined_project_update
129
+ BEFORE UPDATE OF repo_path ON projects
130
+ WHEN EXISTS (SELECT 1 FROM bundle_cleanup_quarantines WHERE workspace_path = NEW.repo_path)
131
+ BEGIN SELECT RAISE(ABORT, 'Workspace is quarantined after abandoned cleanup'); END;
132
+ `);
133
+ };
134
+ //# sourceMappingURL=bundleDeletionSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundleDeletionSchema.js","sourceRoot":"","sources":["../../../server/lib/bundleDeletionSchema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAAqB,EAAE,EAAE;IACtE,MAAM,OAAO,GAAG;QACd,CAAC,QAAQ,EAAE,oGAAoG,CAAC;QAChH,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;QAChD,CAAC,cAAc,EAAE,MAAM,CAAC;QACxB,CAAC,aAAa,EAAE,4BAA4B,CAAC;QAC7C,CAAC,cAAc,EAAE,0BAA0B,CAAC;QAC5C,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;QAChD,CAAC,2BAA2B,EAAE,4BAA4B,CAAC;QAC3D,CAAC,cAAc,EAAE,MAAM,CAAC;KAChB,CAAA;IACV,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,oFAAoF,CAAC,CAAC,GAAG,EAAE,CAAA;IACvH,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,IAAI,GAAG,CAAE,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1I,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,EAAE,CAAC,IAAI,CAAC,+CAA+C,IAAI,IAAI,UAAU,EAAE,CAAC,CAAA;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IACD,qEAAqE;IACrE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,8BAA8B,IAAI;;;;;;MAMpE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;IAEzE,CAAA;IACF,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAClB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,yFAAyF,CAAC,CAAC,GAAG,EAA6B,CAAA;QACvJ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,EAAE,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACjE,CAAC;QACD,IAAI,QAAQ,IAAI,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7F,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,CAAA;YACrD,EAAE,CAAC,IAAI,CAAC;;kFAEoE,CAAC,CAAA;QAC/E,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC9C,CAAC;QACD,EAAE,CAAC,IAAI,CAAC;;;;;;;;SAQH,CAAC,CAAA;IACR,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;IACd,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EP,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import db from '../db.js';
2
+ // Some isolated store tests intentionally use a minimal pre-migration database.
3
+ const hasDeletionJobs = () => Boolean(db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'bundle_deletion_jobs'").get());
4
+ export const getBundleDeletionJob = (projectId, bundleId) => {
5
+ if (!hasDeletionJobs()) {
6
+ return null;
7
+ }
8
+ return db.prepare('SELECT * FROM bundle_deletion_jobs WHERE project_id = ? AND bundle_id = ?')
9
+ .get(projectId, bundleId) ?? null;
10
+ };
11
+ export const isBundleDeletionTargetPending = (projectId, targetKey) => hasDeletionJobs() && Boolean(db.prepare("SELECT 1 FROM bundle_deletion_jobs WHERE project_id = ? AND target_key = ? AND status IN ('pending', 'blocked', 'abandoned')")
12
+ .get(projectId, targetKey));
13
+ export const isBundleDeletionBranchReserved = (projectId, branch) => hasDeletionJobs() && Boolean(db.prepare(`SELECT 1 FROM bundle_deletion_jobs WHERE project_id = ? AND branch = ? COLLATE NOCASE AND status IN ('pending', 'blocked')
14
+ UNION ALL SELECT 1 FROM bundle_cleanup_quarantines quarantine JOIN projects project ON project.repo_path = quarantine.repo_path
15
+ WHERE project.id = ? AND quarantine.branch = ? COLLATE NOCASE LIMIT 1`)
16
+ .get(projectId, branch, projectId, branch));
17
+ export const isBundleCleanupAbandoned = (projectId, targetKey) => hasDeletionJobs() && Boolean(db.prepare("SELECT 1 FROM bundle_deletion_jobs WHERE project_id = ? AND target_key = ? AND status = 'abandoned'").get(projectId, targetKey));
18
+ //# sourceMappingURL=bundleDeletionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundleDeletionStore.js","sourceRoot":"","sources":["../../../server/lib/bundleDeletionStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AA0BzB,gFAAgF;AAChF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,oFAAoF,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;AAE7I,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAE,QAAgB,EAAE,EAAE;IAC1E,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC;SAC3F,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAkC,IAAI,IAAI,CAAA;AACtE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,EAAE,CAAC,eAAe,EAAE,IAAI,OAAO,CACjH,EAAE,CAAC,OAAO,CAAC,8HAA8H,CAAC;KACvI,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAAC,eAAe,EAAE,IAAI,OAAO,CAC/G,EAAE,CAAC,OAAO,CAAC;;4EAE+D,CAAC;KACxE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAC7C,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,EAAE,CAAC,eAAe,EAAE,IAAI,OAAO,CAC5G,EAAE,CAAC,OAAO,CAAC,qGAAqG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAC5I,CAAA"}
@@ -0,0 +1,160 @@
1
+ import { execFile } from 'child_process';
2
+ import { lstatSync, realpathSync } from 'fs';
3
+ import { isAbsolute, relative, resolve, sep } from 'path';
4
+ import { promisify } from 'util';
5
+ import db from '../db.js';
6
+ import { createWorkspaceProcessEnvironment } from './workspaceProcessEnvironment.js';
7
+ const execFileAsync = promisify(execFile);
8
+ const runGit = async (cwd, args) => {
9
+ const env = createWorkspaceProcessEnvironment(cwd, { GIT_TERMINAL_PROMPT: '0' });
10
+ // Ambient Git overrides must not redirect ownership checks or removal.
11
+ for (const key of ['GIT_DIR', 'GIT_WORK_TREE', 'GIT_COMMON_DIR', 'GIT_INDEX_FILE', 'GIT_OBJECT_DIRECTORY', 'GIT_ALTERNATE_OBJECT_DIRECTORIES']) {
12
+ delete env[key];
13
+ }
14
+ const { stdout } = await execFileAsync('git', args, {
15
+ cwd,
16
+ env,
17
+ encoding: 'utf8',
18
+ timeout: 10_000,
19
+ killSignal: 'SIGKILL',
20
+ maxBuffer: 1024 * 1024,
21
+ });
22
+ return stdout;
23
+ };
24
+ const listWorktrees = async (repoPath) => {
25
+ // -z leaves unusual paths (including newlines and quotes) unescaped.
26
+ const output = await runGit(repoPath, ['worktree', 'list', '--porcelain', '-z']);
27
+ const records = [];
28
+ let current = null;
29
+ for (const field of output.split('\0')) {
30
+ if (field.startsWith('worktree ')) {
31
+ current = { path: field.slice('worktree '.length), branch: null };
32
+ if (!isAbsolute(current.path)) {
33
+ throw new Error('Invalid Git worktree registration');
34
+ }
35
+ records.push(current);
36
+ }
37
+ else if (field.startsWith('branch ') && current) {
38
+ current.branch = field.slice('branch '.length);
39
+ }
40
+ else if (!field) {
41
+ current = null;
42
+ }
43
+ }
44
+ if (!records.length || !output.endsWith('\0')) {
45
+ throw new Error('Unable to verify Git worktree registrations');
46
+ }
47
+ return records;
48
+ };
49
+ const pathExists = (path) => {
50
+ try {
51
+ lstatSync(path);
52
+ return true;
53
+ }
54
+ catch (error) {
55
+ if (error.code === 'ENOENT') {
56
+ return false;
57
+ }
58
+ throw error;
59
+ }
60
+ };
61
+ const containsPath = (parent, child) => {
62
+ const suffix = relative(parent, child);
63
+ return suffix === '' || (suffix !== '..' && !suffix.startsWith(`..${sep}`) && !isAbsolute(suffix));
64
+ };
65
+ const assertNotRoot = (path, repoPath, records) => {
66
+ const roots = [repoPath, records[0].path];
67
+ for (const root of roots) {
68
+ if (containsPath(path, resolve(root))) {
69
+ throw new Error('Refusing to remove a repository root workspace');
70
+ }
71
+ if (pathExists(path) && pathExists(root) && containsPath(realpathSync(path), realpathSync(root))) {
72
+ throw new Error('Refusing to remove a repository root workspace');
73
+ }
74
+ }
75
+ };
76
+ const assertWorkspaceIdentity = async (path, repoPath, branch) => {
77
+ if (!pathExists(path)) {
78
+ // Git can remove the exact stale registration after its directory disappeared.
79
+ return;
80
+ }
81
+ const status = lstatSync(path);
82
+ if (!status.isDirectory() || status.isSymbolicLink() || realpathSync(path) !== path) {
83
+ throw new Error('Bundle workspace identity changed');
84
+ }
85
+ const topLevel = (await runGit(path, ['rev-parse', '--show-toplevel'])).replace(/\n$/, '');
86
+ const currentBranch = (await runGit(path, ['symbolic-ref', '--quiet', 'HEAD'])).trimEnd();
87
+ const commonDir = resolve(path, (await runGit(path, ['rev-parse', '--git-common-dir'])).replace(/\n$/, ''));
88
+ const repoCommonDir = resolve(repoPath, (await runGit(repoPath, ['rev-parse', '--git-common-dir'])).replace(/\n$/, ''));
89
+ if (realpathSync(topLevel) !== realpathSync(path)
90
+ || currentBranch !== `refs/heads/${branch}`
91
+ || realpathSync(commonDir) !== realpathSync(repoCommonDir)) {
92
+ throw new Error('Bundle workspace identity changed');
93
+ }
94
+ };
95
+ /**
96
+ * Remove only the persisted path owned by this branch. Returns true once both
97
+ * the directory and registration are absent, including retries after restart.
98
+ * Throws on conflicting identity, unverifiable state, or incomplete removal.
99
+ * Callers must serialize workspace creation/reuse with their deletion job.
100
+ */
101
+ export const deleteOwnedBundleWorktree = async (branch, project, expectedPath) => {
102
+ if (!branch || branch.includes('\0') || !project.repo_path || !isAbsolute(expectedPath) || expectedPath.includes('\0')) {
103
+ throw new Error('Bundle cleanup requires a branch, repository, and absolute persisted workspace path');
104
+ }
105
+ const repoPath = resolve(project.repo_path);
106
+ const path = resolve(expectedPath);
107
+ const records = await listWorktrees(repoPath);
108
+ assertNotRoot(path, repoPath, records);
109
+ const matches = records.filter(record => resolve(record.path) === path);
110
+ if (matches.length > 1 || (matches.length === 1 && matches[0].branch !== `refs/heads/${branch}`)) {
111
+ throw new Error('Bundle worktree registration identity changed');
112
+ }
113
+ if (!matches.length && pathExists(path)) {
114
+ throw new Error('Persisted bundle workspace is no longer a registered worktree');
115
+ }
116
+ if (matches.length) {
117
+ await assertWorkspaceIdentity(path, repoPath, branch);
118
+ // Recheck immediately before mutation, without ever resolving by branch.
119
+ const current = await listWorktrees(repoPath);
120
+ assertNotRoot(path, repoPath, current);
121
+ const owned = current.filter(record => resolve(record.path) === path);
122
+ if (owned.length !== 1 || owned[0].branch !== `refs/heads/${branch}`) {
123
+ throw new Error('Bundle worktree registration identity changed');
124
+ }
125
+ await runGit(repoPath, ['worktree', 'remove', '--force', '--', expectedPath]);
126
+ }
127
+ const remaining = await listWorktrees(repoPath);
128
+ if (remaining.some(record => resolve(record.path) === path) || pathExists(path)) {
129
+ throw new Error('Bundle worktree cleanup is incomplete');
130
+ }
131
+ // deleteWorktreeBase is private to git.ts. Preserve its exact metadata key,
132
+ // but do not erase base metadata belonging to a relocated/reused branch.
133
+ if (!remaining.some(record => record.branch === `refs/heads/${branch}`)) {
134
+ db.prepare('DELETE FROM worktree_bases WHERE repo_path = ? AND branch = ?').run(repoPath, branch);
135
+ }
136
+ return true;
137
+ };
138
+ export const deleteBundleBranch = async (branch, project) => {
139
+ try {
140
+ await runGit(project.repo_path, ['show-ref', '--verify', '--quiet', `refs/heads/${branch}`]);
141
+ }
142
+ catch (error) {
143
+ return error.code === 1 ? 'missing' : 'failed';
144
+ }
145
+ try {
146
+ await runGit(project.repo_path, ['branch', '-d', '--', branch]);
147
+ return 'deleted';
148
+ }
149
+ catch (error) {
150
+ const stderr = String(error.stderr ?? '');
151
+ if (stderr.includes('not fully merged')) {
152
+ return 'unmerged';
153
+ }
154
+ if (stderr.includes('used by worktree') || stderr.includes('checked out')) {
155
+ return 'checked-out';
156
+ }
157
+ return 'failed';
158
+ }
159
+ };
160
+ //# sourceMappingURL=bundleWorktreeCleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundleWorktreeCleanup.js","sourceRoot":"","sources":["../../../server/lib/bundleWorktreeCleanup.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ import { getActiveTool } from './activeTool.js';
6
6
  import { resolveHelperModelConfig, validateAgentModelConfigUpdate, validateDiscoveredAgentModelConfig, } from './agentModelConfig.js';
7
7
  import { isAgentExecutable, isSupportedAgent } from './agentCatalog.js';
8
8
  import { DEFAULT_DIFF_EXPLANATION_CONFIGURATION, explainDiff, planDiffExplanation, } from './diffExplanation.js';
9
+ import { diffExplanationSourceReference, toDiffExplanationExecutionTarget } from './diffExplanationTargets.js';
10
+ import { parseWorkspaceDiffCommit } from './workspaceDiffCommit.js';
9
11
  import { runTrackedLightweightPrompt } from './lightweightPrompt.js';
10
12
  import { applyPromptDiffSafety } from './promptDiffSafety.js';
11
13
  import { getProjectById } from './projects.js';
@@ -153,27 +155,6 @@ const adaptSafeDiff = (source, limits) => {
153
155
  excluded: boundExclusions(excluded, limits.maxExclusionPaths, safety.omissionsTruncated),
154
156
  };
155
157
  };
156
- const toExecutionTarget = (resolution) => {
157
- if (resolution.workspaceKind === 'repo_root') {
158
- return { kind: 'project-root', bundleId: null, branch: resolution.branch };
159
- }
160
- if (resolution.bundleId) {
161
- return { kind: 'bundle-worktree', bundleId: resolution.bundleId, branch: resolution.branch };
162
- }
163
- return { kind: 'branch-worktree', bundleId: null, branch: resolution.branch };
164
- };
165
- const sourceReference = (project, target) => {
166
- if (target.kind === 'bundle') {
167
- return { kind: 'bundle', id: target.bundle_id };
168
- }
169
- if (target.kind === 'ticket') {
170
- return { kind: 'ticket', id: target.ticket_id };
171
- }
172
- if (target.kind === 'chat_session') {
173
- return { kind: 'chat_session', id: target.chat_session_id };
174
- }
175
- return { kind: 'project', id: project.id, label: project.name };
176
- };
177
158
  const mergeLimits = (limits) => {
178
159
  const merged = {
179
160
  ...DEFAULT_JOB_LIMITS,
@@ -304,6 +285,7 @@ export const createDiffExplanationJobs = (options = {}) => {
304
285
  projectId: job.projectId,
305
286
  target: job.target,
306
287
  scope: job.scope,
288
+ ...(job.scope === 'committed' && { commit: job.commit }),
307
289
  filePath: job.filePath,
308
290
  });
309
291
  return current.available && current.diff_signature === job.diffSignature;
@@ -327,7 +309,7 @@ export const createDiffExplanationJobs = (options = {}) => {
327
309
  target: job.executionTarget,
328
310
  initiatedBy: 'user',
329
311
  workingDirectory: isolatedWorkingDirectory,
330
- sourceReference: sourceReference(job.project, job.target),
312
+ sourceReference: diffExplanationSourceReference(job.project, job.target),
331
313
  helperPurpose: 'workspace_change_explanation',
332
314
  signal: request.signal,
333
315
  }, request.prompt);
@@ -406,6 +388,11 @@ export const createDiffExplanationJobs = (options = {}) => {
406
388
  return resolved;
407
389
  };
408
390
  const start = async (input) => {
391
+ const commit = parseWorkspaceDiffCommit(input.scope, input.commit);
392
+ if (!commit.ok) {
393
+ throw new DiffExplanationJobError('invalid_commit', 400, commit.error);
394
+ }
395
+ input = { ...input, ...(input.scope === 'committed' && { commit: commit.value }) };
409
396
  if (!isDiffExplanationToken(input.ownerToken) || !isDiffExplanationToken(input.requestGeneration)) {
410
397
  throw new DiffExplanationJobError('invalid_request_tokens', 400, 'Random owner and request-generation tokens are required.');
411
398
  }
@@ -413,6 +400,7 @@ export const createDiffExplanationJobs = (options = {}) => {
413
400
  projectId: input.projectId,
414
401
  target: input.target,
415
402
  scope: input.scope,
403
+ commit: input.commit ?? null,
416
404
  filePath: input.filePath ?? null,
417
405
  displayedDiffSignature: input.displayedDiffSignature,
418
406
  goalContext: input.goalContext ?? null,
@@ -440,6 +428,7 @@ export const createDiffExplanationJobs = (options = {}) => {
440
428
  projectId: input.projectId,
441
429
  target: input.target,
442
430
  scope: input.scope,
431
+ ...(input.scope === 'committed' && { commit: input.commit ?? null }),
443
432
  filePath: input.filePath ?? null,
444
433
  });
445
434
  if (!workspaceDiff.available) {
@@ -497,13 +486,14 @@ export const createDiffExplanationJobs = (options = {}) => {
497
486
  project,
498
487
  target: input.target,
499
488
  scope: input.scope,
489
+ commit: input.commit ?? null,
500
490
  filePath: input.filePath ?? null,
501
491
  diffSignature: workspaceDiff.diff_signature,
502
492
  goalContext: input.goalContext ?? null,
503
493
  safeChunks: safe.chunks,
504
494
  exclusions: safe.excluded,
505
495
  execution,
506
- executionTarget: toExecutionTarget(resolution),
496
+ executionTarget: toDiffExplanationExecutionTarget(resolution),
507
497
  controller: new AbortController(),
508
498
  stopReason: null,
509
499
  completion,
@@ -1 +1 @@
1
- {"version":3,"file":"diffExplanationJobs.js","sourceRoot":"","sources":["../../../server/lib/diffExplanationJobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diffExplanationJobs.js","sourceRoot":"","sources":["../../../server/lib/diffExplanationJobs.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { defaultDiffExplanationJobs, DiffExplanationJobError, isDiffExplanationToken, } from './diffExplanationJobs.js';
2
+ import { parseWorkspaceDiffCommit } from './workspaceDiffCommit.js';
2
3
  const MAX_REQUEST_BYTES = 16_384;
3
4
  const MAX_TOKEN_CHARS = 200;
4
5
  const MAX_GOAL_CHARS = 4_000;
@@ -38,9 +39,9 @@ const parseTarget = (value) => {
38
39
  }
39
40
  return { ok: false, error: 'target must identify one workspace target.' };
40
41
  };
41
- const parseScope = (value) => (value === 'uncommitted' || value === 'review'
42
+ const parseScope = (value) => (value === 'uncommitted' || value === 'review' || value === 'committed'
42
43
  ? { ok: true, value }
43
- : { ok: false, error: 'scope must be uncommitted or review.' });
44
+ : { ok: false, error: 'scope must be uncommitted, review, or committed.' });
44
45
  const parseOverride = (value) => {
45
46
  if (value === undefined || value === null) {
46
47
  return { ok: true, value: null };
@@ -73,6 +74,7 @@ const parseStart = (req) => {
73
74
  'request_generation',
74
75
  'target',
75
76
  'scope',
77
+ 'commit',
76
78
  'file_path',
77
79
  'displayed_diff_signature',
78
80
  'goal_context',
@@ -92,6 +94,10 @@ const parseStart = (req) => {
92
94
  if (typeof body.displayed_diff_signature !== 'string' || !SIGNATURE_PATTERN.test(body.displayed_diff_signature)) {
93
95
  return { ok: false, error: 'displayed_diff_signature must be a workspace diff signature.' };
94
96
  }
97
+ const commit = parseWorkspaceDiffCommit(scope.value, body.commit);
98
+ if (!commit.ok) {
99
+ return commit;
100
+ }
95
101
  if (body.file_path !== undefined && body.file_path !== null && (typeof body.file_path !== 'string' || !body.file_path.trim())) {
96
102
  return { ok: false, error: 'file_path must be a non-empty repository-relative path.' };
97
103
  }
@@ -105,6 +111,7 @@ const parseStart = (req) => {
105
111
  requestGeneration: generation.value,
106
112
  target: target.value,
107
113
  scope: scope.value,
114
+ ...(scope.value === 'committed' && { commit: commit.value }),
108
115
  filePath: typeof body.file_path === 'string' ? body.file_path.trim() : null,
109
116
  displayedDiffSignature: body.displayed_diff_signature,
110
117
  goalContext: typeof body.goal_context === 'string' ? body.goal_context : null,