@straiffi/archon 1.11.14 → 1.11.16
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-CXlLfbio.js → ActivityView-TwJeVDII.js} +1 -1
- package/dist/client/assets/{GitHubActionsDialog-COncogiu.js → GitHubActionsDialog-Umiz7hRS.js} +1 -1
- package/dist/client/assets/VerificationDialog-BVaLckVH.js +4 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-BgpjZv9J.js → architectureDiagram-3BPJPVTR-DG6n6a9N.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-DZOzPj8L.js → blockDiagram-GPEHLZMM-fpqlAUZA.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-CH8w_-4O.js → c4Diagram-AAUBKEIU-DD-BA8Fj.js} +1 -1
- package/dist/client/assets/channel-BvWs2-ry.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-BhCJUMWk.js → chunk-2J33WTMH-BcwQlxYR.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-B4ljJWcN.js → chunk-3OPIFGDE-DCbOiRKI.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-BokkrzzD.js → chunk-5ZQYHXKU-BAgSocEO.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-V-Kd95sz.js → chunk-727SXJPM-0NBz7Bl7.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-D7ZyW65i.js → chunk-AQP2D5EJ-BgLpjpch.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-3cPiGWR4.js → chunk-CSCIHK7Q-CFV8R2WL.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-fh-t3Kan.js → chunk-KSCS5N6A-B-5OABYB.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-Bz_XmsGr.js → chunk-L5ZTLDWV-BEakyLfX.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-DUQIbmfo.js → chunk-LZXEDZCA-k1JqO5jl.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-BeaXA2cA.js → chunk-ND2GUHAM-CAvkgbq4.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-Cljr0eIp.js → chunk-NZK2D7GU-B1XxeNv6.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-BSZxUONE.js → chunk-O5CBEL6O-xsxGQlBc.js} +1 -1
- package/dist/client/assets/{chunk-WU5MYG2G-CqeEBV6t.js → chunk-WU5MYG2G-D2RTcS5J.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-CXujfiH2.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BpQoPe_W.js +1 -0
- package/dist/client/assets/{dagre-BM42HDAG-C684sP5O.js → dagre-BM42HDAG-DQRkT0rW.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-Bsuw7S1w.js → diagram-2AECGRRQ-DLxnmFG_.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-B7TKNAIK.js → diagram-5GNKFQAL-Cu1nMouP.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-RPOTY2uQ.js → diagram-KO2AKTUF-BCpHrNi4.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-Dpk6toIw.js → diagram-LMA3HP47-CIM0-geo.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-DVJDTxyc.js → diagram-OG6HWLK6-DV8jDGdy.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-BTCHMpI9.js → erDiagram-TEJ5UH35-C-5Pkrkl.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DJHpUHaK.js → flowDiagram-I6XJVG4X-CDPh9OIS.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-B3lqQNjh.js → ganttDiagram-6RSMTGT7-jncsu8xZ.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-kSFZuvH6.js → gitGraphDiagram-PVQCEYII-DGWMJkfX.js} +1 -1
- package/dist/client/assets/index-C8n_tSJG.js +293 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-D7rhmUR9.js → infoDiagram-5YYISTIA-B4xDH_w0.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CFrqWdH6.js → ishikawaDiagram-YF4QCWOH-DVdd9VXs.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-BPgPF00X.js → journeyDiagram-JHISSGLW-nOtumTZv.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-BJU3LTu3.js → kanban-definition-UN3LZRKU-DDOXGouj.js} +1 -1
- package/dist/client/assets/{line-DTRSChYM.js → line-Bv23U4ui.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-X8EDtr9G.js → mermaid-parser.core-G9FbMuHU.js} +1 -1
- package/dist/client/assets/{mermaid.core-CQDbIF5j.js → mermaid.core-B3CWAqqw.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-Bcke6M7z.js → mindmap-definition-RKZ34NQL-DjSz56M7.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-j8xeTgqq.js → pieDiagram-4H26LBE5-DSWgdOVl.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-OlvBffG8.js → quadrantDiagram-W4KKPZXB-DEupU1aE.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DA6zNi15.js → requirementDiagram-4Y6WPE33-BhBfAL0L.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-BsS5qud8.js → sankeyDiagram-5OEKKPKP-CbjG9Vw2.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BfZ_W9Jc.js → sequenceDiagram-3UESZ5HK-1Q4xZQSJ.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-C7uuqC0M.js → stateDiagram-AJRCARHV-OtJd_YEY.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Bkxwy8iL.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-yuywaFQ6.js → timeline-definition-PNZ67QCA-CABkNCpN.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-Cxlyjlnx.js → vennDiagram-CIIHVFJN-BC2gbfhD.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DcJ0jJo4.js → wardleyDiagram-YWT4CUSO-Bkh5qr4Q.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-Cia16EBC.js → xychartDiagram-2RQKCTM6-BWDBD0AE.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent.js +43 -10
- package/dist/server/lib/agent.js.map +1 -1
- package/dist/server/lib/agentProvider.js.map +1 -1
- package/dist/server/lib/opencodeAgentProvider.js +11 -1
- package/dist/server/lib/opencodeAgentProvider.js.map +1 -1
- package/dist/server/lib/opencodeApprovalContext.js +38 -0
- package/dist/server/lib/opencodeApprovalContext.js.map +1 -0
- package/dist/server/lib/opencodeApprovalLifecycle.js +49 -0
- package/dist/server/lib/opencodeApprovalLifecycle.js.map +1 -0
- package/dist/server/lib/opencodeApprovalRoutes.js +51 -0
- package/dist/server/lib/opencodeApprovalRoutes.js.map +1 -0
- package/dist/server/lib/opencodeApprovalSchema.js +31 -0
- package/dist/server/lib/opencodeApprovalSchema.js.map +1 -0
- package/dist/server/lib/opencodeApprovalTransport.js +713 -0
- package/dist/server/lib/opencodeApprovalTransport.js.map +1 -0
- package/dist/server/lib/opencodeApprovalTypes.js +2 -0
- package/dist/server/lib/opencodeApprovalTypes.js.map +1 -0
- package/dist/server/lib/opencodeToolApprovals.js +371 -0
- package/dist/server/lib/opencodeToolApprovals.js.map +1 -0
- package/dist/server/lib/planModeQuestions.js +4 -0
- package/dist/server/lib/planModeQuestions.js.map +1 -1
- package/dist/server/lib/restrictedFilePrompt.js +11 -3
- package/dist/server/lib/restrictedFilePrompt.js.map +1 -1
- package/dist/server/lib/reviewAgentWatchdog.js +5 -5
- package/dist/server/lib/reviewAgentWatchdog.js.map +1 -1
- package/dist/server/lib/reviewPromptContext.js +5 -3
- package/dist/server/lib/reviewPromptContext.js.map +1 -1
- package/dist/server/workers/plan.js +47 -41
- package/dist/server/workers/plan.js.map +1 -1
- package/package.json +1 -1
- package/dist/client/assets/VerificationDialog-DcKjv3mg.js +0 -4
- package/dist/client/assets/channel-DOoXSYAr.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DKWNm6Cx.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-JFUHs0Z7.js +0 -1
- package/dist/client/assets/index-CXBsxrT1.js +0 -293
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-B2rL_9Nk.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentProvider.js","sourceRoot":"","sources":["../../../server/lib/agentProvider.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AACjH,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,mCAAmC,EACnC,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"agentProvider.js","sourceRoot":"","sources":["../../../server/lib/agentProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { OpencodeModelResolutionError, OpencodePermissionRejectedError, parseOpe
|
|
|
3
3
|
import { extractOpencodePromptOutput } from './opencodePromptOutput.js';
|
|
4
4
|
import { parseOpencodeError } from './opencodeErrors.js';
|
|
5
5
|
import { buildOpencodeRunInvocation, getOpencodeCliCompatibility, inspectOpencodeRelease, requireSupportedOpencodeCompatibility, } from './opencodeCli.js';
|
|
6
|
+
import { buildOpencodeApprovalInvocation, connectOpencodeStreamingInvocation } from './opencodeApprovalTransport.js';
|
|
6
7
|
const resolveCompatibility = (runtimeIdentity, observedCompatibility) => {
|
|
7
8
|
if (observedCompatibility) {
|
|
8
9
|
if (runtimeIdentity && (observedCompatibility.runtimeIdentity.version !== runtimeIdentity.version
|
|
@@ -29,8 +30,12 @@ const buildInvocation = ({ model, variant, planAgent, prompt, opencodeRuntimeIde
|
|
|
29
30
|
variant,
|
|
30
31
|
});
|
|
31
32
|
};
|
|
32
|
-
const buildStreamingInvocation = (
|
|
33
|
+
const buildStreamingInvocation = (request) => {
|
|
34
|
+
const { prompt, files = [], model, variant, mode, resumeSessionId, opencodeRuntimeIdentity, opencodeCompatibility, } = request;
|
|
33
35
|
const compatibility = resolveCompatibility(opencodeRuntimeIdentity, opencodeCompatibility);
|
|
36
|
+
if (request.opencodeApprovalContext) {
|
|
37
|
+
return buildOpencodeApprovalInvocation(compatibility, request.mode);
|
|
38
|
+
}
|
|
34
39
|
return {
|
|
35
40
|
...buildOpencodeRunInvocation(compatibility, {
|
|
36
41
|
prompt,
|
|
@@ -142,6 +147,10 @@ const classifyExecutionFailure = (failure) => {
|
|
|
142
147
|
? failure.code === 'unavailable-executable'
|
|
143
148
|
: failure?.code === 'ENOENT';
|
|
144
149
|
if (unavailable) {
|
|
150
|
+
const executable = failure?.path;
|
|
151
|
+
if (executable === 'node' || (failure instanceof Error && failure.message.includes('executable "node"'))) {
|
|
152
|
+
return new Error('OpenCode approval streaming requires Node.js 18 or newer in the execution environment for the guest stdio relay.', { cause: failure });
|
|
153
|
+
}
|
|
145
154
|
return new Error('OpenCode CLI is not available.');
|
|
146
155
|
}
|
|
147
156
|
return failure instanceof Error ? failure : new Error(String(failure));
|
|
@@ -149,6 +158,7 @@ const classifyExecutionFailure = (failure) => {
|
|
|
149
158
|
export const opencodeAgentProvider = {
|
|
150
159
|
buildInvocation,
|
|
151
160
|
buildStreamingInvocation,
|
|
161
|
+
connectStreamingInvocation: connectOpencodeStreamingInvocation,
|
|
152
162
|
interpretOneShotOutput,
|
|
153
163
|
classifyExecutionFailure,
|
|
154
164
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencodeAgentProvider.js","sourceRoot":"","sources":["../../../server/lib/opencodeAgentProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,iCAAiC,EAAE,uCAAuC,EAAE,MAAM,qBAAqB,CAAA;AAC/K,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,qCAAqC,GACtC,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"opencodeAgentProvider.js","sourceRoot":"","sources":["../../../server/lib/opencodeAgentProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import db from '../db.js';
|
|
2
|
+
import { getOpencodeApprovalWaitMilliseconds, isOpencodeApprovalPending } from './opencodeToolApprovals.js';
|
|
3
|
+
import { appendRestrictedFilePrompt } from './restrictedFilePrompt.js';
|
|
4
|
+
import { PLAN_MODE_RUNTIME_PROMPT_RULES, OPENCODE_APPROVAL_PLAN_RUNTIME_PROMPT_RULES } from './planModeQuestions.js';
|
|
5
|
+
import { buildReviewAccessPromptBlock } from './reviewPromptContext.js';
|
|
6
|
+
export const resolveOpencodeApprovalContext = ({ tool, parentKind, parentId, executionContext, io }) => {
|
|
7
|
+
if (tool !== 'opencode' || !parentId || !['ticket', 'chat', 'spec'].includes(parentKind)) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const tables = { ticket: 'tickets', chat: 'chat_sessions', spec: 'spec_sessions' };
|
|
11
|
+
const kind = parentKind;
|
|
12
|
+
const owner = db.prepare(`SELECT project_id FROM ${tables[kind]} WHERE id = ?`).get(parentId);
|
|
13
|
+
const projectId = owner?.project_id ?? executionContext?.projectId;
|
|
14
|
+
if (!projectId || (owner && executionContext && owner.project_id !== executionContext.projectId)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
return { projectId, parentKind: kind, parentId, executionRunId: executionContext?.runId, io: io };
|
|
18
|
+
};
|
|
19
|
+
// Only scoped transcript launches can relax the legacy headless restrictions.
|
|
20
|
+
export const prepareOpencodeApprovalPrompt = (prompt, context) => {
|
|
21
|
+
if (!context) {
|
|
22
|
+
return prompt;
|
|
23
|
+
}
|
|
24
|
+
const reviewBlock = prompt.match(/<review_access_boundaries>\nReview working directory: (.+)\n[\s\S]*?<\/review_access_boundaries>/);
|
|
25
|
+
let prepared = prompt.replaceAll(PLAN_MODE_RUNTIME_PROMPT_RULES, OPENCODE_APPROVAL_PLAN_RUNTIME_PROMPT_RULES);
|
|
26
|
+
if (reviewBlock) {
|
|
27
|
+
prepared = prepared.replace(reviewBlock[0], buildReviewAccessPromptBlock(JSON.parse(reviewBlock[1]), true));
|
|
28
|
+
}
|
|
29
|
+
return appendRestrictedFilePrompt(prepared, true);
|
|
30
|
+
};
|
|
31
|
+
export const createOpencodeApprovalClock = (context) => {
|
|
32
|
+
const baseline = context ? getOpencodeApprovalWaitMilliseconds(context) : 0;
|
|
33
|
+
return {
|
|
34
|
+
isPending: () => Boolean(context && isOpencodeApprovalPending(context)),
|
|
35
|
+
now: () => Date.now() - (context ? Math.max(0, getOpencodeApprovalWaitMilliseconds(context) - baseline) : 0),
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=opencodeApprovalContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeApprovalContext.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAGzB,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC3G,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,8BAA8B,EAAE,2CAA2C,EAAE,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AAUvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAW,EAAuC,EAAE;IACnJ,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzF,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;IAClF,MAAM,IAAI,GAAG,UAAmD,CAAA;IAChE,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAuC,CAAA;IACnI,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,SAAS,CAAA;IAClE,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,gBAAgB,IAAI,KAAK,CAAC,UAAU,KAAK,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,EAAmC,EAAE,CAAA;AACpI,CAAC,CAAA;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAc,EAAE,OAAiC,EAAE,EAAE;IACjG,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,kGAAkG,CAAC,CAAA;IACpI,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,EAAE,2CAA2C,CAAC,CAAA;IAC7G,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAW,EAAE,IAAI,CAAC,CAAC,CAAA;IACvH,CAAC;IACD,OAAO,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAiC,EAAE,EAAE;IAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACvE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7G,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { appendLifecycleEvent, getExecutionRun } from './executionRuns.js';
|
|
2
|
+
// Lifecycle metadata is capped at 16 KiB, including JSON escaping and UTF-8 bytes.
|
|
3
|
+
// Only copy the broker's safe persisted projection, never the provider's raw metadata.
|
|
4
|
+
const fitMetadata = (metadata) => {
|
|
5
|
+
while (Buffer.byteLength(JSON.stringify({ opencode_approval: metadata }), 'utf8') > 16 * 1024) {
|
|
6
|
+
metadata.evidenceTruncated = true;
|
|
7
|
+
if (metadata.patterns.length > 0) {
|
|
8
|
+
metadata.patterns.pop();
|
|
9
|
+
}
|
|
10
|
+
else if (metadata.command) {
|
|
11
|
+
metadata.command = metadata.command.slice(0, Math.floor(metadata.command.length / 2));
|
|
12
|
+
}
|
|
13
|
+
else if (metadata.description) {
|
|
14
|
+
metadata.description = metadata.description.slice(0, Math.floor(metadata.description.length / 2));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
throw new Error('OpenCode approval lifecycle identity exceeds metadata limit');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return metadata;
|
|
21
|
+
};
|
|
22
|
+
// Call inside the approval update transaction with a deferred realtime broadcaster.
|
|
23
|
+
// Unowned approvals remain audited in opencode_tool_approvals: the lifecycle API
|
|
24
|
+
// requires a real run, so neither a synthetic agent run nor an inferred owner is used.
|
|
25
|
+
export const appendOpencodeApprovalLifecycleEvent = (approval, nativeRequestId, reason, emitter) => {
|
|
26
|
+
if (!approval.executionRunId || !getExecutionRun(approval.projectId, approval.executionRunId)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (!approval.resolvedAt || approval.status === 'pending') {
|
|
30
|
+
throw new Error('OpenCode approval lifecycle events require a resolved approval');
|
|
31
|
+
}
|
|
32
|
+
const source = reason === 'operator_decision' ? 'operator' : reason === 'native_reply' ? 'native' : 'system';
|
|
33
|
+
const eventType = reason === 'approval_expired' ? 'opencode_approval_expired'
|
|
34
|
+
: approval.status === 'invalidated' ? 'opencode_approval_invalidated'
|
|
35
|
+
: approval.status === 'cancelled' ? 'opencode_approval_cancelled' : 'opencode_approval_decided';
|
|
36
|
+
const metadata = fitMetadata({
|
|
37
|
+
id: approval.id, permission: approval.permission, patterns: [...approval.patterns],
|
|
38
|
+
command: approval.command ?? null, description: approval.description ?? null,
|
|
39
|
+
parentKind: approval.parentKind, parentId: approval.parentId,
|
|
40
|
+
nativeSessionId: approval.nativeSessionId, nativeRequestId,
|
|
41
|
+
decision: approval.decision ?? null, status: approval.status, source,
|
|
42
|
+
createdAt: approval.createdAt, resolvedAt: approval.resolvedAt, reason,
|
|
43
|
+
});
|
|
44
|
+
return appendLifecycleEvent({
|
|
45
|
+
projectId: approval.projectId, runId: approval.executionRunId, eventType,
|
|
46
|
+
metadataSchemaVersion: 1, metadata: { opencode_approval: metadata },
|
|
47
|
+
}, emitter);
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=opencodeApprovalLifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeApprovalLifecycle.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalLifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getProjectById } from './projects.js';
|
|
2
|
+
import { decideOpencodeToolApproval, getOpencodeToolApproval, listOpencodeToolApprovals, OpencodeApprovalConflictError } from './opencodeToolApprovals.js';
|
|
3
|
+
const parameter = (value) => Array.isArray(value) ? value[0] : value;
|
|
4
|
+
export const registerOpencodeApprovalRoutes = (app, options = {}) => {
|
|
5
|
+
// The host serves /projects directly; /api is also supported for shared frontend clients.
|
|
6
|
+
for (const base of ['/projects/:projectId/opencode-approvals', '/api/projects/:projectId/opencode-approvals']) {
|
|
7
|
+
app.get(base, (req, res) => {
|
|
8
|
+
const projectId = parameter(req.params.projectId);
|
|
9
|
+
if (!getProjectById(projectId)) {
|
|
10
|
+
return res.status(404).json({ error: 'Not found', reason: 'project_not_found' });
|
|
11
|
+
}
|
|
12
|
+
const { parentKind, parentId, status } = req.query;
|
|
13
|
+
if ((parentKind !== undefined && !['ticket', 'chat', 'spec'].includes(parentKind))
|
|
14
|
+
|| (parentId !== undefined && (typeof parentId !== 'string' || parentId.length === 0 || parentId.length > 256))
|
|
15
|
+
|| (status !== undefined && !['pending', 'approved', 'rejected', 'cancelled', 'invalidated'].includes(status))) {
|
|
16
|
+
return res.status(400).json({ error: 'Invalid approval filter', reason: 'invalid_filter' });
|
|
17
|
+
}
|
|
18
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
19
|
+
return res.json({ approvals: listOpencodeToolApprovals({ projectId, parentKind, parentId, status }) });
|
|
20
|
+
});
|
|
21
|
+
app.post(`${base}/:id/decision`, (req, res) => {
|
|
22
|
+
const projectId = parameter(req.params.projectId);
|
|
23
|
+
if (!getProjectById(projectId)) {
|
|
24
|
+
return res.status(404).json({ error: 'Not found', reason: 'project_not_found' });
|
|
25
|
+
}
|
|
26
|
+
const body = req.body;
|
|
27
|
+
if (!body || typeof body !== 'object' || Array.isArray(body)
|
|
28
|
+
|| Object.keys(body).some(key => key !== 'decision' && key !== 'expectedRevision')
|
|
29
|
+
|| !['once', 'session', 'reject'].includes(body.decision)
|
|
30
|
+
|| !Number.isSafeInteger(body.expectedRevision) || body.expectedRevision < 1) {
|
|
31
|
+
return res.status(400).json({ error: 'Invalid approval decision', reason: 'invalid_decision_request' });
|
|
32
|
+
}
|
|
33
|
+
const id = parameter(req.params.id);
|
|
34
|
+
if (!getOpencodeToolApproval(projectId, id)) {
|
|
35
|
+
return res.status(404).json({ error: 'Not found', reason: 'approval_not_found' });
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const approval = decideOpencodeToolApproval({ projectId, id, decision: body.decision, expectedRevision: body.expectedRevision }, options.emitter);
|
|
39
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
40
|
+
return res.json({ approval });
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof OpencodeApprovalConflictError) {
|
|
44
|
+
return res.status(409).json({ error: error.message, reason: error.reason });
|
|
45
|
+
}
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=opencodeApprovalRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeApprovalRoutes.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const initializeOpencodeApprovalSchema = (db) => {
|
|
2
|
+
db.exec(`
|
|
3
|
+
CREATE TABLE IF NOT EXISTS opencode_tool_approvals (
|
|
4
|
+
id TEXT PRIMARY KEY,
|
|
5
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
6
|
+
parent_kind TEXT NOT NULL CHECK (parent_kind IN ('ticket', 'chat', 'spec')),
|
|
7
|
+
parent_id TEXT NOT NULL,
|
|
8
|
+
execution_run_id TEXT REFERENCES execution_runs(id) ON DELETE CASCADE,
|
|
9
|
+
native_session_id TEXT NOT NULL,
|
|
10
|
+
native_request_id TEXT NOT NULL,
|
|
11
|
+
projection_json TEXT NOT NULL,
|
|
12
|
+
status TEXT NOT NULL CHECK (status IN ('pending', 'approved', 'rejected', 'cancelled', 'invalidated')),
|
|
13
|
+
revision INTEGER NOT NULL DEFAULT 1,
|
|
14
|
+
created_at TEXT NOT NULL,
|
|
15
|
+
resolved_at TEXT,
|
|
16
|
+
consumed_at TEXT,
|
|
17
|
+
resolution_reason TEXT,
|
|
18
|
+
UNIQUE (project_id, parent_kind, parent_id, native_session_id, native_request_id)
|
|
19
|
+
);
|
|
20
|
+
CREATE INDEX IF NOT EXISTS opencode_tool_approvals_parent
|
|
21
|
+
ON opencode_tool_approvals(project_id, parent_kind, parent_id, created_at);
|
|
22
|
+
CREATE INDEX IF NOT EXISTS opencode_tool_approvals_pending_run
|
|
23
|
+
ON opencode_tool_approvals(execution_run_id, status);
|
|
24
|
+
CREATE TABLE IF NOT EXISTS opencode_approval_waits (
|
|
25
|
+
execution_run_id TEXT PRIMARY KEY REFERENCES execution_runs(id) ON DELETE CASCADE,
|
|
26
|
+
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
27
|
+
previous_domain_status TEXT
|
|
28
|
+
);
|
|
29
|
+
`);
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=opencodeApprovalSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencodeApprovalSchema.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalSchema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,EAAqB,EAAE,EAAE;IACxE,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BP,CAAC,CAAA;AACJ,CAAC,CAAA"}
|