@straiffi/archon 1.3.4 → 1.3.6

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 (84) hide show
  1. package/dist/client/assets/TestsDialog-CxOO-QI9.js +5 -0
  2. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CHnXshuZ.js → architectureDiagram-3BPJPVTR-zBQKBPbA.js} +1 -1
  3. package/dist/client/assets/{blockDiagram-GPEHLZMM-C4ZedL1G.js → blockDiagram-GPEHLZMM-CzYZL_-N.js} +1 -1
  4. package/dist/client/assets/{c4Diagram-AAUBKEIU-BuD-jPC_.js → c4Diagram-AAUBKEIU-DSDSWLp6.js} +1 -1
  5. package/dist/client/assets/channel-1BaddjWF.js +1 -0
  6. package/dist/client/assets/{chunk-2J33WTMH-BKDkaoQT.js → chunk-2J33WTMH-DbLfyQqC.js} +1 -1
  7. package/dist/client/assets/{chunk-3OPIFGDE-CS0HFD9a.js → chunk-3OPIFGDE-CLGLB7g_.js} +1 -1
  8. package/dist/client/assets/{chunk-5ZQYHXKU-DYo_TwPP.js → chunk-5ZQYHXKU-BIwBZ7yY.js} +1 -1
  9. package/dist/client/assets/{chunk-727SXJPM-BajKdB6e.js → chunk-727SXJPM-DovMQz6k.js} +1 -1
  10. package/dist/client/assets/{chunk-AQP2D5EJ-j2FtLU1G.js → chunk-AQP2D5EJ-KqjpoTb7.js} +1 -1
  11. package/dist/client/assets/{chunk-CSCIHK7Q-CTy5Vnsi.js → chunk-CSCIHK7Q-deZWgKeo.js} +1 -1
  12. package/dist/client/assets/{chunk-KSCS5N6A-DFdh0Cya.js → chunk-KSCS5N6A-TFVqgGHD.js} +1 -1
  13. package/dist/client/assets/{chunk-L5ZTLDWV-BFBha-m9.js → chunk-L5ZTLDWV-WFLYG2VH.js} +1 -1
  14. package/dist/client/assets/{chunk-LZXEDZCA-DpeaPMtX.js → chunk-LZXEDZCA-DhkM7gFV.js} +2 -2
  15. package/dist/client/assets/{chunk-ND2GUHAM-CazKz40j.js → chunk-ND2GUHAM-hnvkc2eb.js} +1 -1
  16. package/dist/client/assets/{chunk-NZK2D7GU-B2IFwDK1.js → chunk-NZK2D7GU-CNSU7InY.js} +1 -1
  17. package/dist/client/assets/{chunk-O5CBEL6O-Dr6DQwZn.js → chunk-O5CBEL6O-DqJEYjyT.js} +1 -1
  18. package/dist/client/assets/{chunk-WU5MYG2G-BTQnr7be.js → chunk-WU5MYG2G-XMnXur47.js} +1 -1
  19. package/dist/client/assets/classDiagram-4FO5ZUOK-BGo9hMel.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-D-_BNxT2.js +1 -0
  21. package/dist/client/assets/{dagre-BM42HDAG-BhO_9BZa.js → dagre-BM42HDAG-CUjnTe1Z.js} +1 -1
  22. package/dist/client/assets/{diagram-2AECGRRQ-2Qn456ux.js → diagram-2AECGRRQ-B6m9Giox.js} +1 -1
  23. package/dist/client/assets/{diagram-5GNKFQAL-svJkmW34.js → diagram-5GNKFQAL-BezeNS5y.js} +1 -1
  24. package/dist/client/assets/{diagram-KO2AKTUF-BkTHZ5mW.js → diagram-KO2AKTUF-RcU5K8Ej.js} +1 -1
  25. package/dist/client/assets/{diagram-LMA3HP47-uhDh1chZ.js → diagram-LMA3HP47-C3urL4ok.js} +1 -1
  26. package/dist/client/assets/{diagram-OG6HWLK6-TRif4ORE.js → diagram-OG6HWLK6-CZlIPGdR.js} +1 -1
  27. package/dist/client/assets/{erDiagram-TEJ5UH35-CVt_E331.js → erDiagram-TEJ5UH35-oMIKndtI.js} +1 -1
  28. package/dist/client/assets/{flowDiagram-I6XJVG4X-B4s33tHN.js → flowDiagram-I6XJVG4X-By4oEsbM.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-6RSMTGT7-Dn2Tw0UP.js → ganttDiagram-6RSMTGT7-B48Cd3xk.js} +1 -1
  30. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DL--5nPh.js → gitGraphDiagram-PVQCEYII-CRdbqoQK.js} +1 -1
  31. package/dist/client/assets/index-Q1dFgEV8.css +2 -0
  32. package/dist/client/assets/index-i7kaM60u.js +260 -0
  33. package/dist/client/assets/{infoDiagram-5YYISTIA-CaBMZo3i.js → infoDiagram-5YYISTIA-DP9dUT0m.js} +1 -1
  34. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-BK8J4ndX.js → ishikawaDiagram-YF4QCWOH-DhquFyP5.js} +1 -1
  35. package/dist/client/assets/{journeyDiagram-JHISSGLW-BS7hFGG3.js → journeyDiagram-JHISSGLW-BN9q1Knp.js} +1 -1
  36. package/dist/client/assets/{kanban-definition-UN3LZRKU-Bp3uL0wq.js → kanban-definition-UN3LZRKU-Cj7DzzzB.js} +1 -1
  37. package/dist/client/assets/{line-BCYzOKh3.js → line-D0YirabY.js} +1 -1
  38. package/dist/client/assets/{mermaid-parser.core-8idx1Ea6.js → mermaid-parser.core-CIsRI40S.js} +1 -1
  39. package/dist/client/assets/{mermaid.core-CxR4-p_S.js → mermaid.core-HhTgHex1.js} +3 -3
  40. package/dist/client/assets/{mindmap-definition-RKZ34NQL--qrRjfiZ.js → mindmap-definition-RKZ34NQL-B0-ZfTQa.js} +1 -1
  41. package/dist/client/assets/{pieDiagram-4H26LBE5-PeY79WfN.js → pieDiagram-4H26LBE5-CWyIW6Nh.js} +1 -1
  42. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-UbrmuIOq.js → quadrantDiagram-W4KKPZXB-BMFHMQiI.js} +1 -1
  43. package/dist/client/assets/{requirementDiagram-4Y6WPE33-f9Mg2g9n.js → requirementDiagram-4Y6WPE33-BS-pXddR.js} +1 -1
  44. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Cc5IOQG3.js → sankeyDiagram-5OEKKPKP-sBOYH62r.js} +1 -1
  45. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BA_ghDe5.js → sequenceDiagram-3UESZ5HK-g4N59irI.js} +1 -1
  46. package/dist/client/assets/{stateDiagram-AJRCARHV-Cp7ykzNi.js → stateDiagram-AJRCARHV-BFCq2_7o.js} +1 -1
  47. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-BJxmjLz-.js +1 -0
  48. package/dist/client/assets/{timeline-definition-PNZ67QCA-DGtYslSV.js → timeline-definition-PNZ67QCA-De4T7a_T.js} +1 -1
  49. package/dist/client/assets/{vennDiagram-CIIHVFJN-DUTouIKP.js → vennDiagram-CIIHVFJN-ClQ5qRjN.js} +1 -1
  50. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DKrISe1w.js → wardleyDiagram-YWT4CUSO-Bb87XKEB.js} +1 -1
  51. package/dist/client/assets/{xychartDiagram-2RQKCTM6-B66iktR0.js → xychartDiagram-2RQKCTM6-COQfOp4x.js} +1 -1
  52. package/dist/client/index.html +2 -2
  53. package/dist/server/db.js +45 -0
  54. package/dist/server/db.js.map +1 -1
  55. package/dist/server/index.js +65 -0
  56. package/dist/server/index.js.map +1 -1
  57. package/dist/server/lib/agent.js +244 -0
  58. package/dist/server/lib/agent.js.map +1 -1
  59. package/dist/server/lib/specArtifact.js +22 -5
  60. package/dist/server/lib/specArtifact.js.map +1 -1
  61. package/dist/server/lib/specReviewContext.js +128 -0
  62. package/dist/server/lib/specReviewContext.js.map +1 -0
  63. package/dist/server/lib/specReviewDraft.js +58 -0
  64. package/dist/server/lib/specReviewDraft.js.map +1 -0
  65. package/dist/server/lib/specReviewOperations.js +132 -0
  66. package/dist/server/lib/specReviewOperations.js.map +1 -0
  67. package/dist/server/lib/specReviews.js +329 -0
  68. package/dist/server/lib/specReviews.js.map +1 -0
  69. package/dist/server/lib/specs.js +6 -5
  70. package/dist/server/lib/specs.js.map +1 -1
  71. package/dist/server/lib/toolUpgrade.js +107 -0
  72. package/dist/server/lib/toolUpgrade.js.map +1 -0
  73. package/dist/server/workers/specReview.js +85 -0
  74. package/dist/server/workers/specReview.js.map +1 -0
  75. package/dist/server/workers/specSession.js +40 -12
  76. package/dist/server/workers/specSession.js.map +1 -1
  77. package/package.json +1 -1
  78. package/dist/client/assets/TestsDialog-B0WvkzrX.js +0 -5
  79. package/dist/client/assets/channel-Bp1nxPf1.js +0 -1
  80. package/dist/client/assets/classDiagram-4FO5ZUOK-BFSejQGj.js +0 -1
  81. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-GUv-gbmg.js +0 -1
  82. package/dist/client/assets/index-BEgA3Rtd.css +0 -2
  83. package/dist/client/assets/index-CiOFEE0Z.js +0 -260
  84. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D9N_a8JM.js +0 -1
@@ -0,0 +1,107 @@
1
+ import { execFile } from 'child_process';
2
+ const UPGRADE_TIMEOUT_MS = 5 * 60 * 1000;
3
+ const MAX_BUFFER = 4 * 1024 * 1024;
4
+ const OUTPUT_TAIL_LENGTH = 2000;
5
+ const TOOL_COMMANDS = {
6
+ opencode: { command: 'opencode', args: ['upgrade'] },
7
+ claude: { command: 'claude', args: ['update'] },
8
+ };
9
+ const SEMVER_PATTERN = '(\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?)';
10
+ const ANCHORED_VERSION_RE = new RegExp(`(?:up(?:dated|graded)?\\s+to|installed|installing)\\s*v?${SEMVER_PATTERN}`, 'i');
11
+ const LABELED_VERSION_RE = new RegExp(`(?:version|v)[\\s:=]+v?${SEMVER_PATTERN}`, 'i');
12
+ const BARE_SEMVER_RE = new RegExp(SEMVER_PATTERN, 'g');
13
+ const UP_TO_DATE_RE = /up\s+to\s+date|already\s+(?:on|at)\s+(?:the\s+)?latest|no\s+update/i;
14
+ export const extractUpgradeVersion = (_tool, output) => {
15
+ if (!output) {
16
+ return null;
17
+ }
18
+ const anchored = output.match(ANCHORED_VERSION_RE);
19
+ if (anchored?.[1]) {
20
+ return anchored[1];
21
+ }
22
+ const labeled = output.match(LABELED_VERSION_RE);
23
+ if (labeled?.[1]) {
24
+ return labeled[1];
25
+ }
26
+ const tailLines = output.split(/\r?\n/).slice(-5).join('\n');
27
+ const bareMatches = [...tailLines.matchAll(BARE_SEMVER_RE)].map(match => match[1]);
28
+ if (bareMatches.length > 0) {
29
+ return bareMatches[bareMatches.length - 1];
30
+ }
31
+ return null;
32
+ };
33
+ export const isAlreadyUpToDate = (output) => {
34
+ return UP_TO_DATE_RE.test(output);
35
+ };
36
+ export class UpgradeInProgressError extends Error {
37
+ tool;
38
+ constructor(tool) {
39
+ super(`Upgrade already running for ${tool}`);
40
+ this.name = 'UpgradeInProgressError';
41
+ this.tool = tool;
42
+ }
43
+ }
44
+ const runningTools = new Set();
45
+ const tail = (value) => {
46
+ if (value.length <= OUTPUT_TAIL_LENGTH) {
47
+ return value;
48
+ }
49
+ return value.slice(value.length - OUTPUT_TAIL_LENGTH);
50
+ };
51
+ const runUpgradeProcess = (tool) => new Promise(resolve => {
52
+ const { command, args } = TOOL_COMMANDS[tool];
53
+ let timedOut = false;
54
+ const timer = setTimeout(() => {
55
+ timedOut = true;
56
+ child.kill('SIGKILL');
57
+ }, UPGRADE_TIMEOUT_MS);
58
+ const child = execFile(command, args, {
59
+ encoding: 'utf8',
60
+ maxBuffer: MAX_BUFFER,
61
+ }, (error, stdout, stderr) => {
62
+ clearTimeout(timer);
63
+ const combinedOutput = `${stdout ?? ''}${stderr ?? ''}`;
64
+ if (error) {
65
+ const code = typeof error.code === 'number' ? error.code : null;
66
+ if (code !== null) {
67
+ resolve({ ok: false, exitCode: code, output: tail(combinedOutput), version: null, upToDate: false });
68
+ return;
69
+ }
70
+ const isMissing = error.code === 'ENOENT';
71
+ const message = isMissing
72
+ ? `${command} not found on PATH`
73
+ : timedOut
74
+ ? 'timed out after 5 minutes'
75
+ : error.message;
76
+ resolve({
77
+ ok: false,
78
+ exitCode: null,
79
+ output: tail(`${combinedOutput}${combinedOutput ? '\n' : ''}${message}`),
80
+ version: null,
81
+ upToDate: false,
82
+ });
83
+ return;
84
+ }
85
+ resolve({
86
+ ok: true,
87
+ exitCode: 0,
88
+ output: tail(combinedOutput),
89
+ version: extractUpgradeVersion(tool, combinedOutput),
90
+ upToDate: isAlreadyUpToDate(combinedOutput),
91
+ });
92
+ });
93
+ });
94
+ export const upgradeTool = async (tool) => {
95
+ if (runningTools.has(tool)) {
96
+ throw new UpgradeInProgressError(tool);
97
+ }
98
+ runningTools.add(tool);
99
+ try {
100
+ return await runUpgradeProcess(tool);
101
+ }
102
+ finally {
103
+ runningTools.delete(tool);
104
+ }
105
+ };
106
+ export const isToolUpgradeRunning = (tool) => runningTools.has(tool);
107
+ //# sourceMappingURL=toolUpgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolUpgrade.js","sourceRoot":"","sources":["../../../server/lib/toolUpgrade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { formatAgentErrorForTranscript, runSpecReviewAgent } from '../lib/agent.js';
2
+ import { getProjectById } from '../lib/projects.js';
3
+ import { enqueue, isRunning } from '../lib/queue.js';
4
+ import { getSpecSession, getSpecSnapshot } from '../lib/specs.js';
5
+ import { createSpecReviewRun, insertSpecReviewFindings, parseSpecReviewOutput, updateSpecReviewRunStatus, updateSpecReviewRunStreaming, updateSpecReviewRunUsage, } from '../lib/specReviews.js';
6
+ import { buildSpecReviewContext, buildSpecReviewPrompt } from '../lib/specReviewContext.js';
7
+ import { normalizeModelId } from '../lib/models.js';
8
+ const getErrorMessage = (error) => {
9
+ return error instanceof Error ? error.message : String(error);
10
+ };
11
+ const resolveSpecReviewWorkerKey = (snapshotId) => `spec-review:${snapshotId}`;
12
+ export const startSpecReview = ({ specSessionId, snapshotId, tool, model, variant, skills = [], io, }) => {
13
+ const jobKey = resolveSpecReviewWorkerKey(snapshotId);
14
+ if (isRunning(jobKey)) {
15
+ return false;
16
+ }
17
+ enqueue(jobKey, async () => {
18
+ const specSession = getSpecSession(specSessionId, { includeMessages: true });
19
+ if (!specSession) {
20
+ return;
21
+ }
22
+ const project = getProjectById(specSession.project_id);
23
+ if (!project) {
24
+ return;
25
+ }
26
+ const snapshot = getSpecSnapshot(snapshotId);
27
+ if (!snapshot || snapshot.spec_session_id !== specSession.id) {
28
+ return;
29
+ }
30
+ const resolvedTool = tool;
31
+ const resolvedModel = resolvedTool === 'opencode' ? normalizeModelId(model) || null : null;
32
+ const resolvedVariant = resolvedTool === 'opencode' && resolvedModel ? variant ?? null : null;
33
+ const runId = createSpecReviewRun({
34
+ specSessionId: specSession.id,
35
+ specSnapshotId: snapshot.id,
36
+ projectId: project.id,
37
+ tool: resolvedTool,
38
+ model: resolvedModel,
39
+ variant: resolvedVariant,
40
+ skills,
41
+ });
42
+ io.emit('spec-review:updated', { spec_review_run_id: runId, spec_snapshot_id: snapshot.id });
43
+ try {
44
+ const reviewContext = buildSpecReviewContext({ specSession, snapshot });
45
+ const prompt = buildSpecReviewPrompt({
46
+ projectName: project.name,
47
+ projectPath: project.repo_path,
48
+ reviewContext,
49
+ });
50
+ const { completionStatus, finalResponse, usageSnapshot } = await runSpecReviewAgent({
51
+ specReviewRunId: runId,
52
+ tool: resolvedTool,
53
+ prompt,
54
+ cwd: project.repo_path,
55
+ io,
56
+ model: resolvedModel,
57
+ variant: resolvedVariant,
58
+ });
59
+ updateSpecReviewRunUsage(runId, usageSnapshot);
60
+ if (completionStatus === 'stopped' || finalResponse === null) {
61
+ updateSpecReviewRunStatus(runId, 'stopped', typeof finalResponse === 'string' ? finalResponse : null);
62
+ io.emit('spec-review:updated', { spec_review_run_id: runId, spec_snapshot_id: snapshot.id });
63
+ return;
64
+ }
65
+ const parsed = parseSpecReviewOutput(finalResponse);
66
+ updateSpecReviewRunStatus(runId, parsed.status, parsed.cleanedMarkdown || finalResponse);
67
+ if (parsed.status === 'completed' && parsed.findings.length > 0) {
68
+ insertSpecReviewFindings(runId, parsed.findings);
69
+ }
70
+ io.emit('spec-review:updated', { spec_review_run_id: runId, spec_snapshot_id: snapshot.id });
71
+ }
72
+ catch (error) {
73
+ const transcript = formatAgentErrorForTranscript(error);
74
+ updateSpecReviewRunStatus(runId, 'error', transcript || getErrorMessage(error));
75
+ updateSpecReviewRunStreaming(runId, null);
76
+ io.emit('spec-review:updated', { spec_review_run_id: runId, spec_snapshot_id: snapshot.id });
77
+ }
78
+ }).catch(() => {
79
+ // Best-effort safety net; the inner try/catch handles all known failure
80
+ // modes. A rejection here means something threw before the run row existed.
81
+ });
82
+ return true;
83
+ };
84
+ export { resolveSpecReviewWorkerKey };
85
+ //# sourceMappingURL=specReview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specReview.js","sourceRoot":"","sources":["../../../server/workers/specReview.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import { getProjectMemoryPromptBlock } from '../lib/projectMemoryPrompt.js';
9
9
  import { extractProjectMemorySuggestionsFromOutput, getProjectMemorySuggestionPromptRules, } from '../lib/projectMemorySuggestions.js';
10
10
  import { enqueue, isRunning } from '../lib/queue.js';
11
11
  import { getProjectById } from '../lib/projects.js';
12
+ import { buildLinkedResearchContext, prepareLinkedPlanningResearch } from './plan.js';
12
13
  import { extractGrillQuestionFromOutput, extractSpecArtifactFromOutput, resolveCarriedForwardArtifacts, resolveCarriedForwardStructuredFields, stripMermaidBlocks } from '../lib/specArtifact.js';
13
14
  import { IMPLEMENTATION_BODY_DEDUPLICATION_RULES, IMPLEMENTATION_DETAIL_RULES, IMPLEMENTATION_READY_DESCRIPTION_REQUIREMENTS, IMPLEMENTATION_READY_DESCRIPTION_SECTION_TEMPLATE, } from '../lib/ticketDescriptionContract.js';
14
15
  const ATTACHMENT_ONLY_EMPTY_RESPONSE_FALLBACK = 'I reviewed the attached image input, but I could not produce a textual response. Please try again with a short note about what you want me to focus on in the image.';
@@ -56,7 +57,7 @@ const formatPreviousSpecStateBlock = (snapshot) => {
56
57
  }
57
58
  return lines.join('\n');
58
59
  };
59
- const buildStandardModeTail = ({ existingMermaid, existingMockup, }) => {
60
+ const buildStandardModeTail = ({ existingMermaid, existingMockup, existingFileRelationGraph, }) => {
60
61
  return [
61
62
  [
62
63
  'Turn handling:',
@@ -84,7 +85,16 @@ const buildStandardModeTail = ({ existingMermaid, existingMockup, }) => {
84
85
  ' will be rendered with an injected base stylesheet. Emit this block only when a UI surface is genuinely',
85
86
  ' part of the plan; never force it for backend-only or non-UI work. Skip it entirely when not applicable.',
86
87
  '',
87
- '4. A machine-readable artifact block with the spec structured data, using exactly these markers:',
88
+ '4. When the relationships between the likely files are non-trivial (e.g. one module imports another,',
89
+ ' shared utilities feed multiple consumers, or data flows across boundaries the reader must follow),',
90
+ ' optionally include a fenced `archon-file-graph` block containing a mermaid diagram of those file',
91
+ ' relationships. Prefer `flowchart LR` so the graph reads left-to-right. Reference the same file paths',
92
+ ' used in `likely_files` so the reader can cross-reference. This graph is for human review only — it is',
93
+ ' never forwarded to the build/implementation agent and must never appear in the artifact JSON or in',
94
+ ' any ticket description. Emit it only when file relationships are genuinely non-trivial; skip it for',
95
+ ' plans where a flat file list is sufficient.',
96
+ '',
97
+ '5. A machine-readable artifact block with the spec structured data, using exactly these markers:',
88
98
  ' <archon-spec-artifact>',
89
99
  ' {"summary":"short plan summary","likely_files":[{"path":"src/foo.ts","reason":"Add bar helper"}],"tickets":[{"key":"add-foo-bar","title":"Add bar helper to foo module","description":"## Problem Statement\\nThe foo module is missing the `bar` helper, blocking downstream consumers from validating inputs consistently.\\n\\n## Acceptance Criteria\\n- [ ] A `bar(input)` function is exported from `src/foo.ts`.\\n- [ ] Invalid inputs throw a typed error with a clear message.\\n- [ ] All existing callers of foo continue to work unchanged.\\n\\n## Implementation Approach\\n1. Add `bar` to `src/foo.ts` following the existing `baz` helper signature pattern.\\n2. Reuse the project existing validation utilities instead of inlining checks.\\n3. Export `bar` from the module barrel file.\\n\\n## Edge Cases and Error Handling\\n- Empty string inputs should throw the same typed error as other invalid inputs.\\n- Preserve current behavior for `undefined`/`null` (do not coerce).\\n\\n## Constraints and Things to Avoid\\n- Do not introduce a new dependency.\\n- Do not change the public signature of existing exports."}]}',
90
100
  ' </archon-spec-artifact>',
@@ -137,6 +147,8 @@ const buildStandardModeTail = ({ existingMermaid, existingMockup, }) => {
137
147
  'automatically from the fenced code block above.',
138
148
  'Do NOT include the UI mockup in the artifact JSON — the `archon-mockup` block is extracted',
139
149
  'automatically from its fenced code block above when present.',
150
+ 'Do NOT include the file-relation graph in the artifact JSON — the `archon-file-graph` block is extracted',
151
+ 'automatically from its fenced code block above when present, and is for human review only.',
140
152
  'A per-ticket `relevant_visualizations` tag array IS allowed — it references the blocks by key and does',
141
153
  'not duplicate their content.',
142
154
  '',
@@ -148,13 +160,14 @@ const buildStandardModeTail = ({ existingMermaid, existingMockup, }) => {
148
160
  '- Always include at least one ticket. If the plan has natural phases, propose multiple tickets with dependencies.',
149
161
  '- If the artifact block is missing or malformed, no specification snapshot will be saved.',
150
162
  ].join('\n'),
151
- (existingMermaid || existingMockup)
163
+ (existingMermaid || existingMockup || existingFileRelationGraph)
152
164
  ? [
153
- 'A `mermaid` diagram and/or `archon-mockup` UI wireframe has already been established for this spec',
154
- 'in a prior turn and is preserved automatically across turns. Do NOT regenerate either fenced block',
155
- 'unless this turn materially changes the architecture or UI it depicts re-emitting unchanged content',
156
- 'wastes tokens. Omit the `mermaid` and/or `archon-mockup` blocks on this turn when they would be',
157
- 'unchanged; they will be carried forward from the previous snapshot automatically.',
165
+ 'A `mermaid` diagram, `archon-mockup` UI wireframe, and/or `archon-file-graph` file-relation diagram',
166
+ 'has already been established for this spec in a prior turn and is preserved automatically across',
167
+ 'turns. Do NOT regenerate any of these fenced blocks unless this turn materially changes the',
168
+ 'architecture, UI, or file relationships it depicts re-emitting unchanged content wastes tokens.',
169
+ 'Omit the `mermaid`, `archon-mockup`, and/or `archon-file-graph` blocks on this turn when they would',
170
+ 'be unchanged; they will be carried forward from the previous snapshot automatically.',
158
171
  ].join('\n')
159
172
  : '',
160
173
  ].filter(Boolean).join('\n\n');
@@ -202,11 +215,11 @@ const buildGrillModeTail = () => {
202
215
  [
203
216
  'Standard spec artifact emission rules (use ONLY on the turn you finalize the plan):',
204
217
  '',
205
- buildStandardModeTail({ existingMermaid: false, existingMockup: false }),
218
+ buildStandardModeTail({ existingMermaid: false, existingMockup: false, existingFileRelationGraph: false }),
206
219
  ].join('\n'),
207
220
  ].join('\n\n');
208
221
  };
209
- const buildSpecPrompt = ({ projectName, projectPath, instruction, hasAttachments, projectMemory, memoryEnabled, previousSnapshot, mode, }) => {
222
+ const buildSpecPrompt = ({ projectName, projectPath, instruction, hasAttachments, projectMemory, memoryEnabled, previousSnapshot, linkedResearchContext, mode, }) => {
210
223
  const trimmedInstruction = instruction.trim();
211
224
  const attachmentPrompt = hasAttachments
212
225
  ? 'One or more user-attached images are included with this turn. Inspect them for requirements, visual constraints, and implementation context.'
@@ -221,6 +234,7 @@ const buildSpecPrompt = ({ projectName, projectPath, instruction, hasAttachments
221
234
  : '';
222
235
  const existingMermaid = Boolean(previousSnapshot?.mermaid);
223
236
  const existingMockup = Boolean(previousSnapshot?.mockup);
237
+ const existingFileRelationGraph = Boolean(previousSnapshot?.file_relation_graph);
224
238
  const previousSpecBaseline = previousSnapshot
225
239
  ? [
226
240
  'This spec already exists from prior turns. Treat the spec as accumulating: the artifact you emit this',
@@ -243,6 +257,7 @@ const buildSpecPrompt = ({ projectName, projectPath, instruction, hasAttachments
243
257
  ].join(' '),
244
258
  `Project: ${projectName}\nWorking directory: ${projectPath}`,
245
259
  projectMemory,
260
+ linkedResearchContext,
246
261
  previousSpecBaseline,
247
262
  attachmentPrompt,
248
263
  attachmentResponseInstruction,
@@ -250,7 +265,7 @@ const buildSpecPrompt = ({ projectName, projectPath, instruction, hasAttachments
250
265
  ];
251
266
  const modeTail = mode === 'grill'
252
267
  ? buildGrillModeTail()
253
- : buildStandardModeTail({ existingMermaid, existingMockup });
268
+ : buildStandardModeTail({ existingMermaid, existingMockup, existingFileRelationGraph });
254
269
  return [
255
270
  ...sharedBlocks,
256
271
  modeTail,
@@ -336,6 +351,16 @@ export const startSpecSessionTurn = ({ specSessionId, instruction, attachments =
336
351
  description: promptContext,
337
352
  });
338
353
  const cwd = project.repo_path;
354
+ const linkedResearch = trimmedInstruction
355
+ ? await prepareLinkedPlanningResearch(trimmedInstruction, {
356
+ projectId: project.id,
357
+ tool: resolvedTool,
358
+ model: resolvedModel,
359
+ variant: resolvedVariant,
360
+ skills: resolvedSkills,
361
+ })
362
+ : [];
363
+ const linkedResearchContext = buildLinkedResearchContext(project, linkedResearch);
339
364
  const stagedAgentAttachments = resolvedTool === 'opencode'
340
365
  ? stageSpecAttachmentsForAgent({
341
366
  specSessionId,
@@ -355,6 +380,7 @@ export const startSpecSessionTurn = ({ specSessionId, instruction, attachments =
355
380
  projectMemory,
356
381
  memoryEnabled: Boolean(project.memory_enabled),
357
382
  previousSnapshot,
383
+ linkedResearchContext,
358
384
  mode: resolveSpecModeValue(latestSession.mode),
359
385
  }),
360
386
  cwd,
@@ -447,10 +473,11 @@ export const startSpecSessionTurn = ({ specSessionId, instruction, attachments =
447
473
  // A block re-emitted this turn overrides the previous snapshot's value;
448
474
  // an omitted block is carried forward so established artifacts don't
449
475
  // disappear when a follow-up turn omits the diagram/mockup.
450
- const { mermaid: mermaidBlock, mockup: mockupBlock } = resolveCarriedForwardArtifacts({
476
+ const { mermaid: mermaidBlock, mockup: mockupBlock, fileRelationGraph: fileRelationGraphBlock } = resolveCarriedForwardArtifacts({
451
477
  rawResponse,
452
478
  previousMermaid: previousSnapshot?.mermaid ?? null,
453
479
  previousMockup: previousSnapshot?.mockup ?? null,
480
+ previousFileRelationGraph: previousSnapshot?.file_relation_graph ?? null,
454
481
  });
455
482
  // Optional structured array fields use the same carry-forward contract:
456
483
  // a field the LLM emitted this turn (including an explicit empty array)
@@ -478,6 +505,7 @@ export const startSpecSessionTurn = ({ specSessionId, instruction, attachments =
478
505
  dependencies: carriedFields.dependencies,
479
506
  mermaid: mermaidBlock,
480
507
  mockup: mockupBlock,
508
+ fileRelationGraph: fileRelationGraphBlock,
481
509
  planText: cleanedPlanText,
482
510
  });
483
511
  updateSpecSessionLatestSnapshot(specSessionId, snapshotId);
@@ -1 +1 @@
1
- {"version":3,"file":"specSession.js","sourceRoot":"","sources":["../../../server/workers/specSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specSession.js","sourceRoot":"","sources":["../../../server/workers/specSession.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@straiffi/archon",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "private": false,
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",
@@ -1,5 +0,0 @@
1
- import{a as e}from"./chunk-BNv3lrIs.js";import{A as t,C as n,D as r,E as i,F as a,M as o,N as s,O as c,P as l,S as u,T as d,_ as f,a as p,b as m,c as h,d as g,f as _,g as v,h as ee,i as te,j as y,k as ne,l as b,m as x,o as S,p as C,r as w,s as T,t as E,u as D,v as O,w as re,x as ie,y as k}from"./index-CiOFEE0Z.js";var A=e(a(),1),ae=(e,t)=>l(o(`/projects/${e}/test-sessions`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to open the test runner right now.`}),oe=(e,t)=>l(o(`/tickets/${e}/test-sessions${t?`?project_id=${encodeURIComponent(t)}`:``}`),{method:`POST`,fallbackErrorMessage:`Unable to open the test runner right now.`}),se=(e,t={})=>l(o(`/test-sessions/${e}/discovery${t.commandId?`?command_id=${encodeURIComponent(t.commandId)}`:``}`),{signal:t.signal,fallbackErrorMessage:`Unable to discover tests right now.`}),ce=(e,t)=>l(o(`/test-sessions/${e}/run`),{method:`POST`,body:t,fallbackErrorMessage:`Unable to start the selected tests right now.`}),le=e=>l(o(`/test-sessions/${e}/stop`),{method:`POST`,fallbackErrorMessage:`Unable to stop the test run right now.`}),ue=e=>s(o(`/test-sessions/${e}`),{method:`DELETE`,fallbackErrorMessage:`Unable to close the test runner right now.`}),j=t(),M=256*1024,N=24,P=RegExp(`\x1B\\[[0-9;?]*[ -/]*[@-~]`,`g`),F=(e,t)=>_.t(`common:testsDialog.${e}`,t),de=(e,t)=>{let n=`${e}${t}`;return n.length<=M?n:n.slice(-M)},I=e=>e.replace(P,``),fe=e=>e.scrollHeight-e.scrollTop-e.clientHeight<=N,L=e=>{e.scrollTop=e.scrollHeight},pe=(e,t=!1)=>{L(e);let n=0,r=0;return n=window.requestAnimationFrame(()=>{L(e),t&&(r=window.requestAnimationFrame(()=>{L(e)}))}),()=>{window.cancelAnimationFrame(n),r!==0&&window.cancelAnimationFrame(r)}},me=e=>{if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e;if(typeof t.id!=`string`||typeof t.name!=`string`||typeof t.command!=`string`)return[];let n=t.runner===`vitest`||t.runner===`jest`||t.runner===`unknown`?t.runner:`auto`;return[{id:t.id,name:t.name,command:t.command,runner:n,...typeof t.cwd==`string`&&t.cwd.trim()!==``?{cwd:t.cwd}:{}}]}):[]}catch{return[]}},R=e=>e===`running`?`border-sky-400/40 bg-sky-500/10 text-sky-200`:e===`passed`?`border-emerald-400/40 bg-emerald-500/10 text-emerald-200`:e===`failed`||e===`error`?`border-rose-400/40 bg-rose-500/10 text-rose-200`:e===`stopped`?`border-amber-400/40 bg-amber-500/10 text-amber-200`:`border-border/70 bg-background/60 text-muted-foreground`,he=e=>e==null?null:e<1e3?`${e} ms`:`${(e/1e3).toFixed(e>=1e4?0:1)} s`,z=e=>{let t=e.split(`/`);return t[t.length-1]||e},B=e=>e.toLowerCase().trim().split(/\s+/).filter(Boolean),V=(e,t)=>e.length===0?!0:e.every(e=>t.some(t=>t.includes(e))),H=(e,t)=>{let n=B(t);return n.length===0?e:e.flatMap(e=>{let t=z(e.path);if(V(n,[t.toLowerCase(),e.path.toLowerCase()]))return[e];let r=e.cases.filter(r=>V(n,[t.toLowerCase(),e.path.toLowerCase(),r.name.toLowerCase()]));return r.length===0?[]:[{...e,cases:r}]})},U=e=>F(e===`passed`?`status.passed`:e===`failed`?`status.failed`:e===`running`?`status.running`:e===`error`?`status.error`:e===`stopped`?`status.stopped`:`status.idle`),ge=e=>e?.selection?e.selection.kind===`all`?F(`selection.allTests`):e.selection.kind===`case`?e.selection.name:z(e.selection.path):F(`selection.noRunYet`),W=e=>/(^|\s)(?:FAIL|✗)(\s|$)|\b(?:failed|error|stderr|Expected:|Received:)\b/i.test(e)?`failure`:/(^|\s)(?:PASS|✓)(\s|$)|\bpassed\b/i.test(e)?`success`:/\b(?:WARN|warning|skipped|todo|pending)\b/i.test(e)?`warning`:`default`,G=e=>e===`failure`?`text-rose-200`:e===`success`?`text-emerald-200`:e===`warning`?`text-amber-200`:`text-slate-200`,_e=(e,t)=>e===t?!0:e.length===t.length?e.every((e,n)=>{let r=t[n];return r!=null&&e.id===r.id&&e.name===r.name&&e.command===r.command&&e.cwd===r.cwd&&e.runner===r.runner}):!1,ve=`min-w-24 justify-center shadow-none transition-none disabled:opacity-100`,K=({line:e,tone:t})=>(0,j.jsx)(`div`,{"data-tone":t,className:c(`whitespace-pre-wrap break-words`,G(t)),children:e===``?` `:e}),q=(0,A.memo)(({canRunGranular:e,filePath:t,isActive:n,name:r,onRunCase:i})=>(0,j.jsxs)(`button`,{type:`button`,"aria-label":F(`caseRow.runAriaLabel`,{name:r}),title:r,className:c(`flex w-full min-w-0 items-center gap-2.5 rounded-xl px-2.5 py-1.5 text-left transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,e?`cursor-pointer hover:bg-sky-500/10`:`cursor-not-allowed opacity-60`,n&&`bg-sky-500/10`),disabled:!e,onClick:()=>{i(t,r)},children:[(0,j.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full bg-sky-300/80`}),(0,j.jsx)(`span`,{className:`truncate text-xs text-foreground`,children:r})]}));q.displayName=`TestCaseRow`;var J=(0,A.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,canRunGranular:i,file:a,isExpanded:o,onRunCase:s,onRunFile:l,onToggleFile:u})=>{let d=e===`file`&&n===a.path,f=e===`case`&&n===a.path;return(0,j.jsx)(h,{open:o,onOpenChange:e=>{u(a.path,e)},children:(0,j.jsxs)(`div`,{className:`space-y-1`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsx)(D,{asChild:!0,children:(0,j.jsx)(r,{type:`button`,variant:`ghost`,size:`icon-xs`,"aria-label":F(o?`fileRow.collapseAriaLabel`:`fileRow.expandAriaLabel`,{path:a.path}),className:`mt-1 shrink-0 text-muted-foreground hover:text-foreground`,children:(0,j.jsx)(O,{className:c(`h-4 w-4 transition-transform`,o&&`rotate-180`)})})}),(0,j.jsx)(`button`,{type:`button`,"aria-label":F(`fileRow.runAriaLabel`,{path:a.path}),className:c(`min-w-0 flex-1 rounded-xl border border-border/60 bg-background/20 px-2.5 py-2 text-left transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/50`,i?`cursor-pointer hover:border-sky-400/35 hover:bg-sky-500/10`:`cursor-not-allowed opacity-60`,(d||f)&&`border-sky-400/45 bg-sky-500/10`),disabled:!i,onClick:()=>{l(a.path)},children:(0,j.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,j.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-md border border-border/70 bg-background/60 text-sky-200`,children:(0,j.jsx)(T,{className:`h-3.5 w-3.5`})}),(0,j.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-start justify-between gap-3`,children:[(0,j.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,j.jsx)(`span`,{className:`block truncate text-xs font-medium text-foreground`,children:z(a.path)}),(0,j.jsx)(`span`,{className:`mt-0.5 block truncate text-[11px] text-muted-foreground`,children:a.path})]}),(0,j.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted-foreground`,children:F(`fileRow.testCount`,{count:a.cases.length})})]})]})})]}),(0,j.jsx)(b,{children:(0,j.jsx)(`div`,{className:`ml-4 border-l border-border/60 pl-6`,children:a.cases.length===0?(0,j.jsx)(`p`,{className:`px-2.5 py-1.5 text-xs text-muted-foreground`,children:F(`fileRow.noNamedTests`)}):(0,j.jsx)(`div`,{className:`space-y-1`,children:a.cases.map(r=>{let o=e===`case`&&n===a.path&&t===r.name;return(0,j.jsx)(q,{canRunGranular:i,filePath:a.path,isActive:o,name:r.name,onRunCase:s},r.id)})})})})]})})});J.displayName=`DiscoveryFileRow`;var ye=(0,A.memo)(({activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,availableCommands:i,canRunGranular:a,discovery:o,expandedFiles:s,fullSuiteOnlyNotice:l,isLoading:u,selectedCommandId:d,selectedCommandName:f,sessionError:m,sessionStatus:h,shouldShowCommandSelector:g,onRunCase:_,onRunFile:ee,onSelectCommand:y,onToggleFile:ne})=>{let[b,x]=(0,A.useState)(``),T=(0,A.useMemo)(()=>H(o,b),[o,b]),E=(0,A.useMemo)(()=>T.reduce((e,t)=>e+t.cases.length,0),[T]),D=B(b).length>0;return(0,j.jsx)(`aside`,{className:`min-h-0 border-b border-border/70 px-4 py-4 lg:border-r lg:border-b-0`,children:(0,j.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col gap-3`,children:[g&&(0,j.jsxs)(`div`,{className:`space-y-2`,children:[(0,j.jsx)(`p`,{className:`text-xs uppercase tracking-[0.22em] text-muted-foreground`,children:F(`scope.label`)}),(0,j.jsxs)(w,{children:[(0,j.jsx)(S,{asChild:!0,children:(0,j.jsxs)(r,{type:`button`,variant:`outline`,className:`w-full justify-between rounded-xl border-border/70 bg-background/60`,"aria-label":F(`scope.selectedCommandAriaLabel`),disabled:i.length===0||h===`running`,children:[(0,j.jsx)(`span`,{className:`truncate`,children:f??F(`scope.selectTestScope`)}),(0,j.jsx)(O,{className:`h-4 w-4 text-muted-foreground`})]})}),(0,j.jsx)(te,{align:`start`,className:`w-72`,children:i.map(e=>(0,j.jsx)(p,{className:c(d===e.id&&`bg-accent text-accent-foreground`),onSelect:()=>{y(e.id)},children:(0,j.jsx)(`span`,{className:`truncate`,children:e.name})},e.id))})]})]}),l&&(0,j.jsx)(`div`,{className:`rounded-2xl border border-border/70 bg-background/30 px-4 py-3 text-sm text-muted-foreground`,children:l}),(o.length>0||b.length>0)&&(0,j.jsxs)(`div`,{className:`relative mt-1 shrink-0`,children:[(0,j.jsx)(k,{type:`search`,value:b,onChange:e=>{x(e.target.value)},placeholder:F(`filter.placeholder`),"aria-label":F(`filter.ariaLabel`),className:`pr-10`}),b.length>0&&(0,j.jsx)(r,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":F(`filter.clearAriaLabel`),className:`absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,onClick:()=>{x(``)},children:(0,j.jsx)(C,{className:`size-4`})})]}),!i.length&&(0,j.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-4 text-sm text-muted-foreground`,children:F(`discovery.noCommands`)}),m&&(0,j.jsx)(`div`,{className:`rounded-2xl border border-rose-500/30 bg-rose-500/10 px-4 py-3 text-sm text-rose-200`,children:m}),(0,j.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-hidden rounded-2xl border border-border/70 bg-background/20 p-4`,children:[(0,j.jsxs)(`div`,{className:`shrink-0 flex items-start justify-between gap-3`,children:[(0,j.jsx)(`div`,{className:`min-w-0`,children:(0,j.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[F(`discovery.fileCount`,{count:T.length}),`, `,F(`discovery.caseCount`,{count:E})]})}),u&&(0,j.jsx)(v,{className:`h-4 w-4 animate-spin text-muted-foreground`})]}),(0,j.jsx)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto pr-1`,children:o.length===0&&!u?(0,j.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:F(`discovery.noFilesDetected`)}):T.length===0?(0,j.jsx)(`div`,{className:`rounded-2xl border border-dashed border-border/70 bg-background/20 px-4 py-5 text-sm text-muted-foreground`,children:F(`discovery.noFilterMatches`)}):T.map(r=>(0,j.jsx)(J,{activeSelectionKind:e,activeSelectionName:t,activeSelectionPath:n,canRunGranular:a,file:r,isExpanded:D||(s[r.path]??!1),onRunCase:_,onRunFile:ee,onToggleFile:ne},r.path))})]})]})})});ye.displayName=`DiscoveryPane`;var be=(0,A.memo)(({durationMs:e,output:t,outputTruncated:n,selectionLabel:r,status:i,summaryCounts:a,viewportRef:o,onScroll:s})=>{let l=(0,A.useMemo)(()=>t?I(t).replaceAll(`\r
2
- `,`
3
- `).replaceAll(`\r`,`
4
- `).split(`
5
- `).map(e=>({line:e,tone:W(e)})):[],[t]);return(0,j.jsx)(`section`,{className:`min-h-0 px-4 py-4`,children:(0,j.jsxs)(`div`,{className:`flex h-full flex-col gap-3`,children:[(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,j.jsx)(`span`,{className:`font-medium text-foreground`,children:r}),i&&(0,j.jsx)(g,{variant:`outline`,className:c(`px-3 py-1 text-xs uppercase tracking-[0.2em]`,R(i)),children:U(i)}),a&&(0,j.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-xs font-medium uppercase tracking-[0.18em]`,children:[(0,j.jsxs)(`span`,{className:`text-rose-200`,children:[a.failed.count,` `,a.failed.label]}),(0,j.jsxs)(`span`,{className:`text-emerald-200`,children:[a.passed.count,` `,a.passed.label]})]}),e!=null&&(0,j.jsx)(`span`,{className:`text-muted-foreground`,children:he(e)}),n&&(0,j.jsx)(g,{variant:`outline`,className:`border-amber-400/30 bg-amber-500/10 text-amber-200`,children:F(`output.trimmed`)})]}),(0,j.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden rounded-2xl border border-border/70 bg-[#0d1017]`,children:(0,j.jsx)(`div`,{ref:o,"aria-label":F(`output.ariaLabel`),className:`h-full overflow-auto px-4 py-4`,onScroll:s,children:(0,j.jsx)(`div`,{className:`font-mono text-xs leading-5`,children:l.length>0?l.map((e,t)=>(0,j.jsx)(K,{line:e.line,tone:e.tone},`${t}:${e.line}`)):(0,j.jsx)(`div`,{className:`text-slate-200`,children:F(`output.empty`)})})})})]})})});be.displayName=`OutputPane`;var xe=({testCommands:e,onClose:t,...a})=>{let o=a.scope,s=a.projectId,c=a.scope===`ticket`?a.ticketId:null,l=a.scope===`project`?a.targetKind:null,p=a.scope===`project`?a.targetBundleId:null,[h,g]=(0,A.useState)(e),[_,v]=(0,A.useState)(null),[te,b]=(0,A.useState)([]),[S,w]=(0,A.useState)(``),[T,D]=(0,A.useState)({}),[O,k]=(0,A.useState)(!0),[M,N]=(0,A.useState)(!1),[P,I]=(0,A.useState)(!1),[L,R]=(0,A.useState)(null),[he,z]=(0,A.useState)(!1),[B,V]=(0,A.useState)(!1),H=(0,A.useRef)(null),U=(0,A.useRef)(!1),W=(0,A.useRef)(null),G=(0,A.useRef)(!0),K=(0,A.useRef)(null),q=(0,A.useRef)(null),J=_?.selection?.kind??null,xe=_?.selection?.kind===`all`?null:_?.selection?.path??null,Se=_?.selection?.kind===`case`?_.selection.name:null,Y=_?.id??null,X=_?.status??null,Z=(0,A.useMemo)(()=>h.find(e=>e.id===S)??null,[h,S]),Ce=(0,A.useMemo)(()=>{if(_?.summary?.failed_count==null&&_?.summary?.passed_count==null&&_?.summary?.failed_file_count==null&&_?.summary?.passed_file_count==null)return null;let e=_?.summary?.failed_count==null&&_?.summary?.passed_count==null;return{failed:X===`failed`&&_?.summary?.failed_count==null&&_?.summary?.failed_file_count!=null||e?{count:_?.summary?.failed_file_count??0,label:F(`summaryCounts.filesFailed`)}:{count:_?.summary?.failed_count??0,label:F(`summaryCounts.failed`)},passed:e?{count:_?.summary?.passed_file_count??0,label:F(`summaryCounts.filesPassed`)}:{count:_?.summary?.passed_count??_?.summary?.passed_file_count??0,label:F(`summaryCounts.passed`)}}},[_?.summary?.failed_count,_?.summary?.passed_count,_?.summary?.failed_file_count,_?.summary?.passed_file_count,X]),we=Z?.runner===`unknown`?F(`scope.fullSuiteOnlyNotice`):null,Te=!!(Z&&_?.status!==`running`&&!M&&!P),Ee=Te,De=Te&&B,Oe=h.length>1;(0,A.useEffect)(()=>{S||h.length===0||w(h[0]?.id??``)},[h,S]),(0,A.useEffect)(()=>{e.length>0&&g(t=>_e(t,e)?t:e)},[e]),(0,A.useEffect)(()=>{if(h.length>0||!s)return;let e=new AbortController;return ne(e.signal).then(e=>{let t=e.find(e=>e.id===s);t&&g(e=>{let n=me(t.test_commands);return _e(e,n)?e:n})}).catch(()=>{}),()=>{e.abort()}},[h.length,s]),(0,A.useEffect)(()=>{let e=e=>{!e||e.id!==H.current||v(e)},t=e=>{!e||e.session_id!==H.current||v(t=>!t||t.id!==e.session_id?t:{...t,output:de(t.output,e.chunk),output_truncated:e.output_truncated})};return E.on(`test-session:updated`,e),E.on(`test-session:output`,t),()=>{E.off(`test-session:updated`,e),E.off(`test-session:output`,t)}},[]),(0,A.useEffect)(()=>{let e=W.current;if(!e){K.current=_?.output??null,q.current=_?.status??null;return}let t=K.current!==(_?.output??null),n=q.current!==`running`&&_?.status===`running`,r=q.current===`running`&&_?.status!==`running`;if(n&&(G.current=!0),n||t&&_?.status===`running`&&G.current||r&&G.current){let t=pe(e,r);return K.current=_?.output??null,q.current=_?.status??null,t}K.current=_?.output??null,q.current=_?.status??null},[_?.output,_?.status]),(0,A.useEffect)(()=>{let e=!1;return(async()=>{try{let t=o===`project`?await ae(s,{target_kind:l??`repo_root`,target_bundle_id:p??null}):await oe(c??``,s);if(e)return;H.current=t.id,v(t)}catch(t){e||R(t instanceof y?t.message:F(`messages.loadRunnerError`))}finally{!e&&H.current==null&&k(!1)}})(),()=>{e=!0}},[s,o,p,l,c]),(0,A.useEffect)(()=>{if(!_?.id){V(!1);return}if(h.length>0&&!S){V(!1);return}let e=new AbortController,t=!1;return k(!0),V(!1),se(_.id,{commandId:S||null,signal:e.signal}).then(e=>{t||(b(e.files),V(e.supports_granular_selection))}).catch(n=>{t||e.signal.aborted||R(n instanceof y?n.message:F(`messages.discoverError`))}).finally(()=>{t||k(!1)}),()=>{t=!0,e.abort()}},[h.length,S,_?.id]),(0,A.useEffect)(()=>()=>{let e=H.current;!e||U.current||(U.current=!0,ue(e).catch(()=>{}))},[]);let Q=(0,A.useCallback)(async e=>{if(!(!Y||X===`running`||!Z||M||P)){R(null),N(!0);try{v(await ce(Y,{command_id:Z.id,selection:e}))}catch(e){R(e instanceof y?e.message:F(`messages.startError`))}finally{N(!1)}}},[M,P,Z,Y,X]),ke=(0,A.useCallback)(async()=>{if(!(!Y||X!==`running`||P)){R(null),I(!0);try{v(await le(Y))}catch(e){R(e instanceof y?e.message:F(`messages.stopError`))}finally{I(!1)}}},[P,Y,X]),$=(0,A.useCallback)(()=>{let e=H.current;if(!e||U.current){t();return}U.current=!0,t(),ue(e).catch(()=>{})},[t]),Ae=(0,A.useCallback)(()=>{if(X===`running`){z(!0);return}$()},[$,X]),je=(0,A.useCallback)(()=>{let e=W.current;e&&(G.current=fe(e))},[]),Me=(0,A.useCallback)(e=>{w(e)},[]),Ne=(0,A.useCallback)((e,t)=>{D(n=>(n[e]??!1)===t?n:{...n,[e]:t})},[]),Pe=(0,A.useCallback)(e=>{Q({kind:`file`,path:e})},[Q]),Fe=(0,A.useCallback)((e,t)=>{Q({kind:`case`,path:e,name:t})},[Q]);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(m,{open:!0,onOpenChange:e=>{e||Ae()},children:(0,j.jsxs)(u,{showCloseButton:!1,overlayClassName:`bg-black/70`,className:`flex h-[calc(100vh-2rem)] max-h-[58rem] w-full max-w-[calc(100%-1rem)] flex-col gap-0 overflow-hidden rounded-3xl border border-[#2a2a38] bg-[#16161f] p-0 shadow-2xl sm:max-w-7xl`,onInteractOutside:e=>e.preventDefault(),children:[(0,j.jsx)(i,{className:`sr-only`,children:F(`dialog.srTitle`)}),(0,j.jsx)(n,{className:`sr-only`,children:F(`dialog.srDescription`)}),(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-4 border-b border-border px-6 py-4`,children:[(0,j.jsx)(`div`,{className:`min-w-0`,children:(0,j.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,j.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-2xl border border-border/70 bg-background/60 text-sky-200`,children:(0,j.jsx)(f,{className:`h-5 w-5`})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h2`,{className:`text-2xl font-semibold text-foreground`,children:F(`dialog.title`)}),(0,j.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:_?.target_label??F(`dialog.preparingTarget`)})]})]})}),(0,j.jsx)(ie,{asChild:!0,children:(0,j.jsx)(r,{type:`button`,"aria-label":F(`dialog.closeAriaLabel`),variant:`ghost`,size:`icon-sm`,className:`cursor-pointer text-muted-foreground hover:text-foreground`,children:(0,j.jsx)(C,{className:`h-4 w-4`})})})]}),(0,j.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-0 lg:grid-cols-[22rem_minmax(0,1fr)]`,children:[(0,j.jsx)(ye,{activeSelectionKind:J,activeSelectionName:Se,activeSelectionPath:xe,availableCommands:h,canRunGranular:De,discovery:te,expandedFiles:T,fullSuiteOnlyNotice:we,isLoading:O,selectedCommandId:S,selectedCommandName:Z?.name??null,sessionError:L,sessionStatus:X,shouldShowCommandSelector:Oe,onRunCase:Fe,onRunFile:Pe,onSelectCommand:Me,onToggleFile:Ne}),(0,j.jsx)(be,{durationMs:_?.duration_ms??null,output:_?.output??``,outputTruncated:_?.output_truncated??!1,selectionLabel:ge(_),status:X,summaryCounts:Ce,viewportRef:W,onScroll:je})]}),(0,j.jsx)(re,{className:`border-t border-border/70 px-6 py-4 sm:flex-row sm:items-center sm:justify-end`,children:(0,j.jsx)(`div`,{className:`flex items-center justify-end gap-2`,children:_?.status===`running`?(0,j.jsxs)(r,{type:`button`,variant:`destructive`,className:ve,onClick:()=>{ke()},disabled:P,children:[(0,j.jsx)(x,{className:`h-4 w-4`}),(0,j.jsx)(`span`,{children:F(`actions.stop`)})]}):(0,j.jsxs)(r,{type:`button`,variant:`success`,className:ve,disabled:!Ee,onClick:()=>{Q({kind:`all`})},children:[(0,j.jsx)(ee,{className:`h-4 w-4`}),(0,j.jsx)(`span`,{children:F(`actions.run`)})]})})})]})}),(0,j.jsx)(m,{open:he,onOpenChange:z,children:(0,j.jsxs)(u,{showCloseButton:!1,overlayClassName:`z-[60] bg-black/60`,className:`z-[60] max-w-md rounded-2xl border border-border bg-card p-6 shadow-2xl`,children:[(0,j.jsxs)(d,{children:[(0,j.jsx)(i,{className:`text-sm font-semibold uppercase tracking-widest text-muted-foreground`,children:F(`closeConfirmation.title`)}),(0,j.jsx)(n,{className:`text-sm text-foreground whitespace-pre-line`,children:F(`closeConfirmation.description`)})]}),(0,j.jsxs)(re,{className:`sm:flex-row sm:justify-end`,children:[(0,j.jsx)(r,{type:`button`,variant:`ghost`,onClick:()=>z(!1),children:F(`closeConfirmation.keepRunning`)}),(0,j.jsx)(r,{type:`button`,variant:`destructive`,onClick:()=>{z(!1),$()},children:F(`closeConfirmation.stopAndClose`)})]})]})})]})};export{xe as TestsDialog};
@@ -1 +0,0 @@
1
- import{at as e,ot as t}from"./chunk-CSCIHK7Q-CTy5Vnsi.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-BcaL9nCM.js";import"./chunk-CSCIHK7Q-CTy5Vnsi.js";import"./chunk-5ZQYHXKU-DYo_TwPP.js";import"./chunk-O5CBEL6O-Dr6DQwZn.js";import"./chunk-FMBD7UC4-mGY2D2YB.js";import"./chunk-BSJP7CBP-X4eyoSqE.js";import"./chunk-L5ZTLDWV-BFBha-m9.js";import"./chunk-ND2GUHAM-CazKz40j.js";import"./chunk-55IACEB6-BB-0ajVZ.js";import"./chunk-2J33WTMH-BKDkaoQT.js";import"./chunk-NZK2D7GU-B2IFwDK1.js";import"./chunk-3OPIFGDE-CS0HFD9a.js";import"./chunk-KSCS5N6A-DFdh0Cya.js";import"./chunk-LZXEDZCA-DpeaPMtX.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-BajKdB6e.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
@@ -1 +0,0 @@
1
- import{h as e}from"./src-BcaL9nCM.js";import"./chunk-CSCIHK7Q-CTy5Vnsi.js";import"./chunk-5ZQYHXKU-DYo_TwPP.js";import"./chunk-O5CBEL6O-Dr6DQwZn.js";import"./chunk-FMBD7UC4-mGY2D2YB.js";import"./chunk-BSJP7CBP-X4eyoSqE.js";import"./chunk-L5ZTLDWV-BFBha-m9.js";import"./chunk-ND2GUHAM-CazKz40j.js";import"./chunk-55IACEB6-BB-0ajVZ.js";import"./chunk-2J33WTMH-BKDkaoQT.js";import"./chunk-NZK2D7GU-B2IFwDK1.js";import"./chunk-3OPIFGDE-CS0HFD9a.js";import"./chunk-KSCS5N6A-DFdh0Cya.js";import"./chunk-LZXEDZCA-DpeaPMtX.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-BajKdB6e.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};