@straiffi/archon 1.8.23 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{ActivityView-BaIZ8eHC.js → ActivityView-Y5IaJiim.js} +1 -1
- package/dist/client/assets/GitHubActionsDialog-GWVxWGPK.js +1 -0
- package/dist/client/assets/VerificationDialog-C4RMuI4y.js +4 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-Dl5UF67P.js → architectureDiagram-3BPJPVTR-CeM6gbLN.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-DCcERfrZ.js → blockDiagram-GPEHLZMM-BP4hta96.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-BGhbASFm.js → c4Diagram-AAUBKEIU-5aJScvhn.js} +1 -1
- package/dist/client/assets/channel-B3DjZXbm.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-C1ARozTV.js → chunk-2J33WTMH-BKc2IelV.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-BEovLizF.js → chunk-3OPIFGDE-DCc15la5.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-C5MmlLa_.js → chunk-5ZQYHXKU-DSD9HbTp.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-8y8jBk4n.js → chunk-727SXJPM-DrAjnKiA.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-q-mByAd3.js → chunk-AQP2D5EJ-DxKnpHfQ.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-BOx2mLSz.js → chunk-CSCIHK7Q-DLejrAB_.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-zEwQFq7q.js → chunk-KSCS5N6A-BWRNmF8S.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-C80z6rY_.js → chunk-L5ZTLDWV-D48i966f.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-BLaEsGPd.js → chunk-LZXEDZCA-DLhg6Bok.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-x26BZ95L.js → chunk-ND2GUHAM-B4-7cOEq.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-D2WAxr1p.js → chunk-NZK2D7GU-D2ttXA_d.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-DDPCrzKh.js → chunk-O5CBEL6O-BrWrOVCq.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-CE-JcvIc.js → chunk-WU5MYG2G-CLcPwxPe.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DproSkn2.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-JVMMzJxJ.js +1 -0
- package/dist/client/assets/{dagre-BM42HDAG-Bf7wpUk_.js → dagre-BM42HDAG-DIXN8_VX.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-BQoKmc3B.js → diagram-2AECGRRQ-D2wjdCij.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-D2jarPLn.js → diagram-5GNKFQAL-E1Og_PHE.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-Bcbbjvsl.js → diagram-KO2AKTUF-B6P1Ud8a.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-t862RRBQ.js → diagram-LMA3HP47-C3Jxq56v.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-CacbMcO0.js → diagram-OG6HWLK6-Do9LVhdL.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DRQ79baI.js → erDiagram-TEJ5UH35-DLb5E4-f.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-BfW4KEdc.js → flowDiagram-I6XJVG4X-CcTs_wU9.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-BPIl0TAj.js → ganttDiagram-6RSMTGT7-q9ez5fri.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CRIusBMV.js → gitGraphDiagram-PVQCEYII-BcaKiz4c.js} +1 -1
- package/dist/client/assets/index-1CokwSFm.css +2 -0
- package/dist/client/assets/index-CSOKbu3w.js +276 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-DTKzK8EJ.js → infoDiagram-5YYISTIA-Cu0w4frE.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DVIHZLvL.js → ishikawaDiagram-YF4QCWOH-CJ47Z-ak.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-CQBZ4tCx.js → journeyDiagram-JHISSGLW-fAL_Zcvs.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-D7naegR0.js → kanban-definition-UN3LZRKU-BTNIybMC.js} +1 -1
- package/dist/client/assets/{line-CizZlaeV.js → line-BvsadeZR.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-NrDqgpZa.js → mermaid-parser.core-C0EkH2y_.js} +1 -1
- package/dist/client/assets/{mermaid.core-CwVO3oX0.js → mermaid.core-BU5QIIbY.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-BWxy3Aa_.js → mindmap-definition-RKZ34NQL-CWbSYK8f.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-B3gXpmBn.js → pieDiagram-4H26LBE5-t4w2cB-y.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-Dpp4g8Al.js → quadrantDiagram-W4KKPZXB-Cqasvrpa.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-lFKXnxml.js → requirementDiagram-4Y6WPE33-_l-mY-tb.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BBdtwqrS.js → sankeyDiagram-5OEKKPKP-Cr9YrZ-Y.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-ANpVZzqm.js → sequenceDiagram-3UESZ5HK-DvzZhQpb.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-D58ZxmKY.js → stateDiagram-AJRCARHV-cFjPpAO3.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-btHMH5Cg.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-B6FK8IQC.js → timeline-definition-PNZ67QCA-BjRNrEJY.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-lFWtZEEY.js → vennDiagram-CIIHVFJN-xs9afjrw.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DteAVp4l.js → wardleyDiagram-YWT4CUSO-DH68ZYti.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-CNcDlRLN.js → xychartDiagram-2RQKCTM6-DLW5ktTU.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/db.js +225 -12
- package/dist/server/db.js.map +1 -1
- package/dist/server/index.js +80 -26
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +368 -143
- package/dist/server/lib/agent.js.map +1 -1
- package/dist/server/lib/agentProvider.js.map +1 -1
- package/dist/server/lib/approvalReconciliation.js +14 -2
- package/dist/server/lib/approvalReconciliation.js.map +1 -1
- package/dist/server/lib/buildExecutionEnvironment.js +251 -57
- package/dist/server/lib/buildExecutionEnvironment.js.map +1 -1
- package/dist/server/lib/chatOperations.js +125 -3
- package/dist/server/lib/chatOperations.js.map +1 -1
- package/dist/server/lib/chatPostBuildRuns.js +12 -6
- package/dist/server/lib/chatPostBuildRuns.js.map +1 -1
- package/dist/server/lib/chatTargets.js +2 -1
- package/dist/server/lib/chatTargets.js.map +1 -1
- package/dist/server/lib/checkDefinitionCwd.js +34 -0
- package/dist/server/lib/checkDefinitionCwd.js.map +1 -0
- package/dist/server/lib/checkExecutionEnvironment.js +95 -0
- package/dist/server/lib/checkExecutionEnvironment.js.map +1 -0
- package/dist/server/lib/checkPolicyDefinitionIds.js +41 -0
- package/dist/server/lib/checkPolicyDefinitionIds.js.map +1 -0
- package/dist/server/lib/checkRepairDispatch.js +2 -0
- package/dist/server/lib/checkRepairDispatch.js.map +1 -1
- package/dist/server/lib/checkRunner.js +371 -175
- package/dist/server/lib/checkRunner.js.map +1 -1
- package/dist/server/lib/checkRuns.js +99 -8
- package/dist/server/lib/checkRuns.js.map +1 -1
- package/dist/server/lib/claudeAgentProvider.js +3 -6
- package/dist/server/lib/claudeAgentProvider.js.map +1 -1
- package/dist/server/lib/claudeStdin.js +27 -0
- package/dist/server/lib/claudeStdin.js.map +1 -0
- package/dist/server/lib/completedAssistantOutput.js +38 -0
- package/dist/server/lib/completedAssistantOutput.js.map +1 -0
- package/dist/server/lib/consequentialActionAuthority.js +99 -8
- package/dist/server/lib/consequentialActionAuthority.js.map +1 -1
- package/dist/server/lib/consequentialActions.js +42 -2
- package/dist/server/lib/consequentialActions.js.map +1 -1
- package/dist/server/lib/dockerSandboxCredentials.js +10 -3
- package/dist/server/lib/dockerSandboxCredentials.js.map +1 -1
- package/dist/server/lib/dockerSandboxEnvironmentOperations.js +9 -8
- package/dist/server/lib/dockerSandboxEnvironmentOperations.js.map +1 -1
- package/dist/server/lib/dockerSandboxExecutionEnvironment.js +149 -74
- package/dist/server/lib/dockerSandboxExecutionEnvironment.js.map +1 -1
- package/dist/server/lib/dockerSandboxExecutionProvider.js +22 -14
- package/dist/server/lib/dockerSandboxExecutionProvider.js.map +1 -1
- package/dist/server/lib/dockerSandboxNetworkPolicy.js +23 -14
- package/dist/server/lib/dockerSandboxNetworkPolicy.js.map +1 -1
- package/dist/server/lib/dockerSandboxReleaseProfiles.js +91 -0
- package/dist/server/lib/dockerSandboxReleaseProfiles.js.map +1 -0
- package/dist/server/lib/dockerSandboxRuntimeController.js +16 -1
- package/dist/server/lib/dockerSandboxRuntimeController.js.map +1 -1
- package/dist/server/lib/executionCredentialCapabilities.js +9 -6
- package/dist/server/lib/executionCredentialCapabilities.js.map +1 -1
- package/dist/server/lib/executionEnvironment.js.map +1 -1
- package/dist/server/lib/executionEnvironmentLifecycle.js +7 -0
- package/dist/server/lib/executionEnvironmentLifecycle.js.map +1 -1
- package/dist/server/lib/executionEnvironmentOperations.js +241 -0
- package/dist/server/lib/executionEnvironmentOperations.js.map +1 -0
- package/dist/server/lib/executionEnvironmentReconciliation.js +98 -3
- package/dist/server/lib/executionEnvironmentReconciliation.js.map +1 -1
- package/dist/server/lib/executionEnvironmentRoutes.js +66 -27
- package/dist/server/lib/executionEnvironmentRoutes.js.map +1 -1
- package/dist/server/lib/executionEnvironmentValidation.js +2 -2
- package/dist/server/lib/executionEnvironmentValidation.js.map +1 -1
- package/dist/server/lib/executionEnvironmentValidationOperations.js +58 -31
- package/dist/server/lib/executionEnvironmentValidationOperations.js.map +1 -1
- package/dist/server/lib/executionEnvironments.js +187 -9
- package/dist/server/lib/executionEnvironments.js.map +1 -1
- package/dist/server/lib/executionProfileCheckPolicy.js +14 -0
- package/dist/server/lib/executionProfileCheckPolicy.js.map +1 -0
- package/dist/server/lib/executionProfileRoutes.js +9 -1
- package/dist/server/lib/executionProfileRoutes.js.map +1 -1
- package/dist/server/lib/executionProfileStore.js +5 -3
- package/dist/server/lib/executionProfileStore.js.map +1 -1
- package/dist/server/lib/executionProfiles.js +97 -15
- package/dist/server/lib/executionProfiles.js.map +1 -1
- package/dist/server/lib/executionReconciliation.js +43 -6
- package/dist/server/lib/executionReconciliation.js.map +1 -1
- package/dist/server/lib/executionRunAuthority.js +115 -24
- package/dist/server/lib/executionRunAuthority.js.map +1 -1
- package/dist/server/lib/executionTargets.js +30 -4
- package/dist/server/lib/executionTargets.js.map +1 -1
- package/dist/server/lib/executionWorkloads.js +75 -0
- package/dist/server/lib/executionWorkloads.js.map +1 -0
- package/dist/server/lib/git.js +10 -1
- package/dist/server/lib/git.js.map +1 -1
- package/dist/server/lib/opencodeAgentProvider.js +3 -1
- package/dist/server/lib/opencodeAgentProvider.js.map +1 -1
- package/dist/server/lib/opencodeSessionOperations.js +5 -3
- package/dist/server/lib/opencodeSessionOperations.js.map +1 -1
- package/dist/server/lib/planQuestions.js +2 -1
- package/dist/server/lib/planQuestions.js.map +1 -1
- package/dist/server/lib/postBuildCheckRuns.js +9 -5
- package/dist/server/lib/postBuildCheckRuns.js.map +1 -1
- package/dist/server/lib/preview.js +47 -6
- package/dist/server/lib/preview.js.map +1 -1
- package/dist/server/lib/previewProxy.js +11 -3
- package/dist/server/lib/previewProxy.js.map +1 -1
- package/dist/server/lib/productionCheckApprovals.js +97 -35
- package/dist/server/lib/productionCheckApprovals.js.map +1 -1
- package/dist/server/lib/projectMemorySuggestions.js +29 -6
- package/dist/server/lib/projectMemorySuggestions.js.map +1 -1
- package/dist/server/lib/requiredCheckPolicy.js +3 -40
- package/dist/server/lib/requiredCheckPolicy.js.map +1 -1
- package/dist/server/lib/reviewAgentWatchdog.js +75 -0
- package/dist/server/lib/reviewAgentWatchdog.js.map +1 -0
- package/dist/server/lib/reviewFindingReconciliation.js +176 -0
- package/dist/server/lib/reviewFindingReconciliation.js.map +1 -0
- package/dist/server/lib/reviewFindings.js +33 -11
- package/dist/server/lib/reviewFindings.js.map +1 -1
- package/dist/server/lib/run.js +370 -80
- package/dist/server/lib/run.js.map +1 -1
- package/dist/server/lib/serviceRuns.js +196 -0
- package/dist/server/lib/serviceRuns.js.map +1 -0
- package/dist/server/lib/sessionTargets.js +34 -0
- package/dist/server/lib/sessionTargets.js.map +1 -1
- package/dist/server/lib/shell.js +20 -0
- package/dist/server/lib/shell.js.map +1 -1
- package/dist/server/lib/specArtifact.js +36 -15
- package/dist/server/lib/specArtifact.js.map +1 -1
- package/dist/server/lib/specBundleGroups.js +4 -4
- package/dist/server/lib/specBundleGroups.js.map +1 -1
- package/dist/server/lib/specOperations.js +2 -0
- package/dist/server/lib/specOperations.js.map +1 -1
- package/dist/server/lib/specReviewOperations.js +2 -0
- package/dist/server/lib/specReviewOperations.js.map +1 -1
- package/dist/server/lib/specTicketMaterialization.js +37 -24
- package/dist/server/lib/specTicketMaterialization.js.map +1 -1
- package/dist/server/lib/ticketFollowUpOperations.js +9 -4
- package/dist/server/lib/ticketFollowUpOperations.js.map +1 -1
- package/dist/server/lib/ticketRunOperations.js +1 -0
- package/dist/server/lib/ticketRunOperations.js.map +1 -1
- package/dist/server/lib/types.js +1 -0
- package/dist/server/lib/types.js.map +1 -1
- package/dist/server/lib/workloadExecutionEnvironment.js +2 -0
- package/dist/server/lib/workloadExecutionEnvironment.js.map +1 -0
- package/dist/server/lib/workspaceIdentity.js +30 -6
- package/dist/server/lib/workspaceIdentity.js.map +1 -1
- package/dist/server/workers/build.js +39 -8
- package/dist/server/workers/build.js.map +1 -1
- package/dist/server/workers/chat.js +142 -15
- package/dist/server/workers/chat.js.map +1 -1
- package/dist/server/workers/followUp.js +77 -20
- package/dist/server/workers/followUp.js.map +1 -1
- package/dist/server/workers/plan.js +295 -48
- package/dist/server/workers/plan.js.map +1 -1
- package/dist/server/workers/planFollowUp.js +77 -7
- package/dist/server/workers/planFollowUp.js.map +1 -1
- package/dist/server/workers/review.js +149 -38
- package/dist/server/workers/review.js.map +1 -1
- package/dist/server/workers/specReview.js +43 -5
- package/dist/server/workers/specReview.js.map +1 -1
- package/dist/server/workers/specSession.js +156 -31
- package/dist/server/workers/specSession.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/GitHubActionsDialog-BFCqikDY.js +0 -1
- package/dist/client/assets/VerificationDialog-B1_6HMdt.js +0 -4
- package/dist/client/assets/channel-BfskvH2B.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-D4HPfxL3.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DQQ_WqAU.js +0 -1
- package/dist/client/assets/index-CZ1z72fo.js +0 -276
- package/dist/client/assets/index-SMj5ZmMs.css +0 -2
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Cv8cmDfz.js +0 -1
|
@@ -1,32 +1,82 @@
|
|
|
1
1
|
import db from '../db.js';
|
|
2
2
|
import { consequentialActionAuthorityBinding, createConsequentialActionAuthority } from './consequentialActionAuthority.js';
|
|
3
3
|
import { getCheckDefinitionFingerprint, normalizeCheckDefinitions } from './checkDefinitions.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getCheckAttemptDetails, getCheckBatchDetails } from './checkRuns.js';
|
|
5
|
+
import { captureCheckWorkspaceIdentity } from './checkWorkspaceIdentity.js';
|
|
6
|
+
import { resolveDefinitionCwd } from './checkDefinitionCwd.js';
|
|
7
|
+
import { resolveExecutionRunProfile } from './executionRunAuthority.js';
|
|
8
|
+
import { getAutomationRemoteIdentity, getGitStatus } from './git.js';
|
|
9
|
+
import { getProjectById, getProjectCheckDefinitions } from './projects.js';
|
|
5
10
|
export const PRODUCTION_CHECK_APPROVAL_TTL_MS = 15 * 60 * 1000;
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
export const rebuildProductionCheckAction = async (request) => {
|
|
12
|
+
if (request.action.kind !== 'custom_check') {
|
|
13
|
+
throw new Error('Approval request is not a production custom check');
|
|
14
|
+
}
|
|
15
|
+
const action = request.action;
|
|
16
|
+
const attempt = getCheckAttemptDetails(request.project_id, request.execution_run_id);
|
|
17
|
+
const batch = attempt ? getCheckBatchDetails(request.project_id, attempt.batch_run_id) : null;
|
|
18
|
+
const definition = getProjectCheckDefinitions(getProjectById(request.project_id))
|
|
19
|
+
.find(candidate => candidate.id === action.target.check_definition_id);
|
|
20
|
+
if (!attempt || !batch || !definition) {
|
|
21
|
+
throw new Error('Production check execution context is unavailable');
|
|
22
|
+
}
|
|
23
|
+
const workspaceCwd = action.workspace_git.workspace_path;
|
|
24
|
+
const workspaceIdentity = await captureCheckWorkspaceIdentity(workspaceCwd);
|
|
25
|
+
return buildProductionCheckAction({
|
|
26
|
+
projectId: request.project_id,
|
|
27
|
+
workspaceCwd,
|
|
28
|
+
effectiveCwd: resolveDefinitionCwd(workspaceCwd, definition),
|
|
29
|
+
definition,
|
|
30
|
+
batch,
|
|
31
|
+
workspaceIdentity,
|
|
32
|
+
expiresAt: request.expires_at,
|
|
33
|
+
launcher: action.target.launcher ?? 'host_shell',
|
|
34
|
+
batchEnvironment: action.target.batch_environment ?? null,
|
|
35
|
+
attemptPlacement: action.target.attempt_placement ?? null,
|
|
10
36
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
};
|
|
38
|
+
export const resolveAuthority = (input) => {
|
|
39
|
+
const project = getProjectById(input.projectId);
|
|
40
|
+
if (!project) {
|
|
41
|
+
throw new Error('The project is unavailable');
|
|
42
|
+
}
|
|
43
|
+
const profile = resolveExecutionRunProfile(project, input.batchRunId);
|
|
44
|
+
if (input.launcher === 'host_shell' && input.batchEnvironment) {
|
|
45
|
+
throw new Error('Host production checks cannot inherit sandbox environment identity');
|
|
46
|
+
}
|
|
47
|
+
if (!input.attemptPlacement) {
|
|
48
|
+
throw new Error('Production checks require their exact attempt placement');
|
|
49
|
+
}
|
|
50
|
+
if (input.launcher === 'docker_sandbox_exec' && !input.batchEnvironment) {
|
|
51
|
+
throw new Error('Sandbox production checks require their exact batch environment and attempt placement');
|
|
52
|
+
}
|
|
53
|
+
const effectiveCapabilities = [
|
|
54
|
+
'check.execute',
|
|
55
|
+
'workspace.read',
|
|
56
|
+
'workspace.write',
|
|
57
|
+
input.launcher === 'docker_sandbox_exec' ? 'isolation.microvm' : 'isolation.host_process',
|
|
58
|
+
];
|
|
59
|
+
const logicalSecretReferences = profile.profile.credential_requirements
|
|
60
|
+
.filter(requirement => requirement.workload === 'check')
|
|
61
|
+
.map(requirement => `credential:${requirement.id}`);
|
|
62
|
+
if (input.launcher === 'host_shell' && profile.profile.compatibility === 'legacy_host') {
|
|
63
|
+
logicalSecretReferences.push('host:ambient');
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
authority: createConsequentialActionAuthority({
|
|
67
|
+
projectId: input.projectId,
|
|
68
|
+
effectiveCapabilities,
|
|
69
|
+
launcher: input.launcher,
|
|
70
|
+
environment: input.batchEnvironment ? {
|
|
71
|
+
id: input.batchEnvironment.id,
|
|
72
|
+
revision: input.batchEnvironment.revision,
|
|
73
|
+
validationFingerprint: input.batchEnvironment.validation_fingerprint,
|
|
74
|
+
} : null,
|
|
75
|
+
attemptPlacement: input.attemptPlacement,
|
|
76
|
+
profileRevision: profile,
|
|
77
|
+
}),
|
|
78
|
+
logicalSecretReferences,
|
|
79
|
+
};
|
|
30
80
|
};
|
|
31
81
|
const canonicalDefinition = (definition) => {
|
|
32
82
|
const normalized = normalizeCheckDefinitions([definition], { allowOversizedIds: true });
|
|
@@ -37,15 +87,10 @@ const canonicalDefinition = (definition) => {
|
|
|
37
87
|
};
|
|
38
88
|
const resolveAutomationLineage = (projectId, batch, boundaryPurpose) => {
|
|
39
89
|
const row = db.prepare(`
|
|
40
|
-
SELECT batch_run.parent_run_id
|
|
41
|
-
bundle.automation_depth AS bundle_automation_depth,
|
|
42
|
-
bundle.automation_review_fix_enabled AS bundle_automation_review_fix_enabled
|
|
90
|
+
SELECT batch_run.parent_run_id
|
|
43
91
|
FROM execution_runs batch_run
|
|
44
|
-
JOIN projects project ON project.id = batch_run.project_id
|
|
45
|
-
LEFT JOIN worktree_bundles bundle
|
|
46
|
-
ON bundle.id = ? AND bundle.project_id = batch_run.project_id
|
|
47
92
|
WHERE batch_run.id = ? AND batch_run.project_id = ?
|
|
48
|
-
`).get(batch.
|
|
93
|
+
`).get(batch.execution_run_id, projectId);
|
|
49
94
|
if (!row) {
|
|
50
95
|
throw new Error('Production check automation lineage is unavailable');
|
|
51
96
|
}
|
|
@@ -53,10 +98,16 @@ const resolveAutomationLineage = (projectId, batch, boundaryPurpose) => {
|
|
|
53
98
|
batch_run_id: batch.execution_run_id,
|
|
54
99
|
parent_run_id: row.parent_run_id,
|
|
55
100
|
boundary_purpose: boundaryPurpose,
|
|
56
|
-
depth: row.bundle_automation_depth ?? row.automation_depth,
|
|
57
|
-
review_fix_enabled: Boolean(row.bundle_automation_review_fix_enabled ?? row.automation_review_fix_enabled),
|
|
58
101
|
};
|
|
59
102
|
};
|
|
103
|
+
const resolveRemoteUrlFingerprint = (workspaceCwd) => {
|
|
104
|
+
try {
|
|
105
|
+
return /^sha256:([0-9a-f]{64})$/.exec(getAutomationRemoteIdentity(workspaceCwd))?.[1] ?? null;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
60
111
|
export const buildProductionCheckAction = (input) => {
|
|
61
112
|
if (input.definition.category !== 'custom' || input.definition.consequence !== 'production') {
|
|
62
113
|
throw new Error('Only production custom checks can create production approval actions');
|
|
@@ -65,7 +116,14 @@ export const buildProductionCheckAction = (input) => {
|
|
|
65
116
|
throw new Error(`Production check workspace identity is unavailable: ${input.workspaceIdentity.message}`);
|
|
66
117
|
}
|
|
67
118
|
const definition = canonicalDefinition(input.definition);
|
|
68
|
-
const
|
|
119
|
+
const resolved = resolveAuthority({
|
|
120
|
+
projectId: input.projectId,
|
|
121
|
+
launcher: input.launcher,
|
|
122
|
+
batchEnvironment: input.batchEnvironment,
|
|
123
|
+
attemptPlacement: input.attemptPlacement,
|
|
124
|
+
batchRunId: input.batch.execution_run_id,
|
|
125
|
+
});
|
|
126
|
+
const authority = resolved.authority;
|
|
69
127
|
const gitStatus = getGitStatus(input.workspaceCwd, null, null, { includeWorkspaceSignature: true });
|
|
70
128
|
const scopeKind = input.batch.target_kind === 'bundle' ? 'bundle' : 'project';
|
|
71
129
|
const scopeId = input.batch.target_bundle_id ?? input.projectId;
|
|
@@ -82,7 +140,7 @@ export const buildProductionCheckAction = (input) => {
|
|
|
82
140
|
state_fingerprint: input.workspaceIdentity.fingerprint,
|
|
83
141
|
},
|
|
84
142
|
authority: consequentialActionAuthorityBinding(authority),
|
|
85
|
-
logical_secret_references:
|
|
143
|
+
logical_secret_references: resolved.logicalSecretReferences,
|
|
86
144
|
target: {
|
|
87
145
|
check_definition_id: definition.id,
|
|
88
146
|
check_definition_fingerprint: getCheckDefinitionFingerprint(definition),
|
|
@@ -98,6 +156,10 @@ export const buildProductionCheckAction = (input) => {
|
|
|
98
156
|
head: input.workspaceIdentity.head,
|
|
99
157
|
},
|
|
100
158
|
automation_lineage: resolveAutomationLineage(input.projectId, input.batch, input.batch.automation_boundary_purpose),
|
|
159
|
+
launcher: input.launcher,
|
|
160
|
+
batch_environment: input.batchEnvironment,
|
|
161
|
+
attempt_placement: input.attemptPlacement,
|
|
162
|
+
remote_url_fingerprint: resolveRemoteUrlFingerprint(input.workspaceCwd),
|
|
101
163
|
expires_at: input.expiresAt,
|
|
102
164
|
},
|
|
103
165
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"productionCheckApprovals.js","sourceRoot":"","sources":["../../../server/lib/productionCheckApprovals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,EAAE,mCAAmC,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAA;AAC3H,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"productionCheckApprovals.js","sourceRoot":"","sources":["../../../server/lib/productionCheckApprovals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getProjectMemorySuggestionDedupeKey, validateProjectMemorySuggestionPayload } from './projectMemory.js';
|
|
2
2
|
const PROJECT_MEMORY_SUGGESTIONS_TAG = 'archon-memory-suggestions';
|
|
3
3
|
const PROJECT_MEMORY_SUGGESTION_MAX_COUNT = 3;
|
|
4
|
+
const PROJECT_MEMORY_SUGGESTIONS_OPENING_PATTERN = new RegExp(`^[ \\t]*<${PROJECT_MEMORY_SUGGESTIONS_TAG}>[ \\t]*$`, 'gim');
|
|
5
|
+
const PROJECT_MEMORY_SUGGESTIONS_CLOSING_PATTERN = new RegExp(`^[ \\t]*<\\/${PROJECT_MEMORY_SUGGESTIONS_TAG}>[ \\t]*$`, 'im');
|
|
4
6
|
export const PROJECT_MEMORY_SUGGESTION_COMMON_RULE_LINES = [
|
|
5
7
|
'- Return `memory_suggestions` as an array of 0-3 durable project-specific memory suggestions.',
|
|
6
8
|
'- Suggestions may be `decision` or `convention` memories.',
|
|
@@ -126,8 +128,29 @@ const getSuggestionSpecificityScore = (suggestion) => {
|
|
|
126
128
|
const shouldReplaceSuggestion = (candidate, existing) => {
|
|
127
129
|
return getSuggestionSpecificityScore(candidate) > getSuggestionSpecificityScore(existing);
|
|
128
130
|
};
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
+
const findSuggestionBlock = (output) => {
|
|
132
|
+
const openings = [...output.matchAll(PROJECT_MEMORY_SUGGESTIONS_OPENING_PATTERN)];
|
|
133
|
+
for (let index = openings.length - 1; index >= 0; index -= 1) {
|
|
134
|
+
const opening = openings[index];
|
|
135
|
+
if (opening.index === undefined) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const contentStart = opening.index + opening[0].length;
|
|
139
|
+
const remainder = output.slice(contentStart);
|
|
140
|
+
const closing = remainder.match(PROJECT_MEMORY_SUGGESTIONS_CLOSING_PATTERN);
|
|
141
|
+
if (!closing || closing.index === undefined) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
start: opening.index,
|
|
146
|
+
end: contentStart + closing.index + closing[0].length,
|
|
147
|
+
content: remainder.slice(0, closing.index),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
};
|
|
152
|
+
const stripSuggestionBlock = (output, block) => {
|
|
153
|
+
return `${output.slice(0, block.start)}${output.slice(block.end)}`.trim();
|
|
131
154
|
};
|
|
132
155
|
export const normalizeProjectMemorySuggestions = (value) => {
|
|
133
156
|
if (!Array.isArray(value)) {
|
|
@@ -162,8 +185,8 @@ export const normalizeProjectMemorySuggestions = (value) => {
|
|
|
162
185
|
return normalized;
|
|
163
186
|
};
|
|
164
187
|
export const extractProjectMemorySuggestionsFromOutput = (output) => {
|
|
165
|
-
const
|
|
166
|
-
if (!
|
|
188
|
+
const block = findSuggestionBlock(output);
|
|
189
|
+
if (!block) {
|
|
167
190
|
return {
|
|
168
191
|
cleanedOutput: output.trim(),
|
|
169
192
|
suggestions: [],
|
|
@@ -171,14 +194,14 @@ export const extractProjectMemorySuggestionsFromOutput = (output) => {
|
|
|
171
194
|
}
|
|
172
195
|
let suggestions = [];
|
|
173
196
|
try {
|
|
174
|
-
const parsed = JSON.parse(
|
|
197
|
+
const parsed = JSON.parse(block.content.trim());
|
|
175
198
|
suggestions = normalizeProjectMemorySuggestions(parsed.memory_suggestions);
|
|
176
199
|
}
|
|
177
200
|
catch {
|
|
178
201
|
suggestions = [];
|
|
179
202
|
}
|
|
180
203
|
return {
|
|
181
|
-
cleanedOutput: stripSuggestionBlock(output),
|
|
204
|
+
cleanedOutput: stripSuggestionBlock(output, block),
|
|
182
205
|
suggestions,
|
|
183
206
|
};
|
|
184
207
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectMemorySuggestions.js","sourceRoot":"","sources":["../../../server/lib/projectMemorySuggestions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,sCAAsC,EAAE,MAAM,oBAAoB,CAAA;AAGhH,MAAM,8BAA8B,GAAG,2BAA2B,CAAA;AAClE,MAAM,mCAAmC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"projectMemorySuggestions.js","sourceRoot":"","sources":["../../../server/lib/projectMemorySuggestions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,52 +1,15 @@
|
|
|
1
1
|
import { createHash } from 'crypto';
|
|
2
2
|
import { getCheckDefinitionFingerprint } from './checkDefinitions.js';
|
|
3
|
+
import { canonicalizeRequiredCheckDefinitionIds as canonicalizeDefinitionIds, parseRequiredCheckDefinitionIds as parseDefinitionIds, } from './checkPolicyDefinitionIds.js';
|
|
3
4
|
import { getProjectCheckDefinitions } from './projects.js';
|
|
4
|
-
const compareIds = (left, right) => (Buffer.compare(Buffer.from(left, 'utf8'), Buffer.from(right, 'utf8')));
|
|
5
5
|
const updateLengthDelimited = (hash, value) => {
|
|
6
6
|
const buffer = Buffer.from(value, 'utf8');
|
|
7
7
|
const length = Buffer.alloc(8);
|
|
8
8
|
length.writeBigUInt64BE(BigInt(buffer.length));
|
|
9
9
|
hash.update(length).update(buffer);
|
|
10
10
|
};
|
|
11
|
-
export const canonicalizeRequiredCheckDefinitionIds = (value, fieldName = 'required_check_definition_ids') =>
|
|
12
|
-
|
|
13
|
-
return { value: [] };
|
|
14
|
-
}
|
|
15
|
-
if (!Array.isArray(value)) {
|
|
16
|
-
return { error: `${fieldName} must be an array of check definition IDs` };
|
|
17
|
-
}
|
|
18
|
-
const ids = [];
|
|
19
|
-
const seenIds = new Set();
|
|
20
|
-
for (const valueId of value) {
|
|
21
|
-
if (typeof valueId !== 'string' || valueId.trim() === '') {
|
|
22
|
-
return { error: `${fieldName} entries must be non-empty strings` };
|
|
23
|
-
}
|
|
24
|
-
const id = valueId.trim();
|
|
25
|
-
if (seenIds.has(id)) {
|
|
26
|
-
return { error: `${fieldName} entries must be unique` };
|
|
27
|
-
}
|
|
28
|
-
seenIds.add(id);
|
|
29
|
-
ids.push(id);
|
|
30
|
-
}
|
|
31
|
-
return { value: ids.sort(compareIds) };
|
|
32
|
-
};
|
|
33
|
-
export const parseRequiredCheckDefinitionIds = (value, fieldName = 'required_check_definition_ids') => {
|
|
34
|
-
if (value == null) {
|
|
35
|
-
return { value: [] };
|
|
36
|
-
}
|
|
37
|
-
if (typeof value !== 'string') {
|
|
38
|
-
return { error: `persisted ${fieldName} must be valid JSON` };
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
const result = canonicalizeRequiredCheckDefinitionIds(JSON.parse(value), fieldName);
|
|
42
|
-
return 'error' in result
|
|
43
|
-
? { error: `persisted ${result.error}` }
|
|
44
|
-
: result;
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return { error: `persisted ${fieldName} must be valid JSON` };
|
|
48
|
-
}
|
|
49
|
-
};
|
|
11
|
+
export const canonicalizeRequiredCheckDefinitionIds = (value, fieldName = 'required_check_definition_ids') => canonicalizeDefinitionIds(value, fieldName);
|
|
12
|
+
export const parseRequiredCheckDefinitionIds = (value, fieldName = 'required_check_definition_ids') => parseDefinitionIds(value, fieldName);
|
|
50
13
|
const validatePreReviewSubset = (membership, fieldPrefix = '') => {
|
|
51
14
|
const finalIds = new Set(membership.required_check_definition_ids);
|
|
52
15
|
const orphanedPreReviewId = membership.pre_review_check_definition_ids.find(id => !finalIds.has(id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requiredCheckPolicy.js","sourceRoot":"","sources":["../../../server/lib/requiredCheckPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"requiredCheckPolicy.js","sourceRoot":"","sources":["../../../server/lib/requiredCheckPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export const REVIEW_AGENT_IDLE_MS = 90_000;
|
|
2
|
+
export const REVIEW_AGENT_INACTIVITY_TIMEOUT_MS = 20 * 60_000;
|
|
3
|
+
export const REVIEW_AGENT_WATCHDOG_INTERVAL_MS = 15_000;
|
|
4
|
+
export const REVIEW_AGENT_KILL_GRACE_MS = 5_000;
|
|
5
|
+
export const REVIEW_AGENT_CLOSE_ENRICHMENT_TIMEOUT_MS = 15_000;
|
|
6
|
+
export const createReviewAgentWatchdog = ({ getLastOutputAt, checkForCompletion, onTrigger, }) => {
|
|
7
|
+
let timer = null;
|
|
8
|
+
let completionCheckInFlight = false;
|
|
9
|
+
let triggered = false;
|
|
10
|
+
let stopped = false;
|
|
11
|
+
const stop = () => {
|
|
12
|
+
stopped = true;
|
|
13
|
+
if (timer) {
|
|
14
|
+
clearInterval(timer);
|
|
15
|
+
timer = null;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const trigger = (reason) => {
|
|
19
|
+
if (triggered || stopped) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
triggered = true;
|
|
23
|
+
stop();
|
|
24
|
+
void Promise.resolve(onTrigger(reason)).catch(() => {
|
|
25
|
+
// The execution provider owns interruption failure reporting.
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const poll = async () => {
|
|
29
|
+
if (triggered || stopped) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (Date.now() - getLastOutputAt() < REVIEW_AGENT_IDLE_MS || completionCheckInFlight) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
completionCheckInFlight = true;
|
|
36
|
+
const completed = await checkForCompletion().catch(() => false);
|
|
37
|
+
completionCheckInFlight = false;
|
|
38
|
+
if (stopped) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (completed) {
|
|
42
|
+
trigger('completed');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (Date.now() - getLastOutputAt() >= REVIEW_AGENT_INACTIVITY_TIMEOUT_MS) {
|
|
46
|
+
trigger('timeout');
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const start = () => {
|
|
50
|
+
if (timer || triggered || stopped) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
timer = setInterval(() => void poll(), REVIEW_AGENT_WATCHDOG_INTERVAL_MS);
|
|
54
|
+
timer.unref?.();
|
|
55
|
+
};
|
|
56
|
+
return { start, stop };
|
|
57
|
+
};
|
|
58
|
+
export const resolveWithin = async (promise, timeoutMs, fallback) => {
|
|
59
|
+
let timer = null;
|
|
60
|
+
try {
|
|
61
|
+
return await Promise.race([
|
|
62
|
+
promise,
|
|
63
|
+
new Promise(resolve => {
|
|
64
|
+
timer = setTimeout(() => resolve(fallback), timeoutMs);
|
|
65
|
+
timer.unref?.();
|
|
66
|
+
}),
|
|
67
|
+
]);
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
if (timer) {
|
|
71
|
+
clearTimeout(timer);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=reviewAgentWatchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewAgentWatchdog.js","sourceRoot":"","sources":["../../../server/lib/reviewAgentWatchdog.ts"],"names":[],"mappings":"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"}
|