@open-code-review/cli 2.2.1 → 2.3.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.
Files changed (64) hide show
  1. package/README.md +9 -0
  2. package/dist/dashboard/client/assets/{_basePickBy-BAlGnwHG.js → _basePickBy-CyrHyeyN.js} +1 -1
  3. package/dist/dashboard/client/assets/{_baseUniq-CoauyOeL.js → _baseUniq-Bg7NJSGS.js} +1 -1
  4. package/dist/dashboard/client/assets/{arc-DtS0aHfP.js → arc-zDGAKMur.js} +1 -1
  5. package/dist/dashboard/client/assets/{architectureDiagram-VXUJARFQ-CnWmtRTh.js → architectureDiagram-VXUJARFQ-BxlGxm0Q.js} +1 -1
  6. package/dist/dashboard/client/assets/{blockDiagram-VD42YOAC-DgPp4oGV.js → blockDiagram-VD42YOAC-BskTNyX5.js} +1 -1
  7. package/dist/dashboard/client/assets/{c4Diagram-YG6GDRKO--LV4qQaE.js → c4Diagram-YG6GDRKO-Dr9QQ-dn.js} +1 -1
  8. package/dist/dashboard/client/assets/channel-BUnm_-UQ.js +1 -0
  9. package/dist/dashboard/client/assets/{chunk-4BX2VUAB-BRglpc7Z.js → chunk-4BX2VUAB-xq9xoCTv.js} +1 -1
  10. package/dist/dashboard/client/assets/{chunk-55IACEB6-Bgx06_CV.js → chunk-55IACEB6-DYdXYVh5.js} +1 -1
  11. package/dist/dashboard/client/assets/{chunk-B4BG7PRW-D6HN3Yiy.js → chunk-B4BG7PRW-BGAyFRFS.js} +1 -1
  12. package/dist/dashboard/client/assets/{chunk-DI55MBZ5-NH9EgN9T.js → chunk-DI55MBZ5-C5ul9stk.js} +1 -1
  13. package/dist/dashboard/client/assets/{chunk-FMBD7UC4-xriO6WNP.js → chunk-FMBD7UC4-BSaPo2xa.js} +1 -1
  14. package/dist/dashboard/client/assets/{chunk-QN33PNHL-CV1h6_Zl.js → chunk-QN33PNHL-CyzabUv0.js} +1 -1
  15. package/dist/dashboard/client/assets/{chunk-QZHKN3VN-CV4VzxNq.js → chunk-QZHKN3VN-CceRbxt_.js} +1 -1
  16. package/dist/dashboard/client/assets/{chunk-TZMSLE5B-isdklocW.js → chunk-TZMSLE5B-Bjg9IoOQ.js} +1 -1
  17. package/dist/dashboard/client/assets/classDiagram-2ON5EDUG-D_fkmNvU.js +1 -0
  18. package/dist/dashboard/client/assets/classDiagram-v2-WZHVMYZB-D_fkmNvU.js +1 -0
  19. package/dist/dashboard/client/assets/clone-DTyrNOLZ.js +1 -0
  20. package/dist/dashboard/client/assets/{cose-bilkent-S5V4N54A-CCzlFSJf.js → cose-bilkent-S5V4N54A-DEdXBrCt.js} +1 -1
  21. package/dist/dashboard/client/assets/{dagre-6UL2VRFP-DVN3PkjZ.js → dagre-6UL2VRFP-DRdIiP58.js} +1 -1
  22. package/dist/dashboard/client/assets/{diagram-PSM6KHXK-SzJVoSsb.js → diagram-PSM6KHXK-Bo7Q2VlK.js} +1 -1
  23. package/dist/dashboard/client/assets/{diagram-QEK2KX5R-CgGn7ts-.js → diagram-QEK2KX5R-2Fmc2o5x.js} +1 -1
  24. package/dist/dashboard/client/assets/{diagram-S2PKOQOG-Bz1ukSx8.js → diagram-S2PKOQOG-5WE8f0p7.js} +1 -1
  25. package/dist/dashboard/client/assets/{erDiagram-Q2GNP2WA-CpstUTMZ.js → erDiagram-Q2GNP2WA-DD-iXWd_.js} +1 -1
  26. package/dist/dashboard/client/assets/{flowDiagram-NV44I4VS-aYVydGhp.js → flowDiagram-NV44I4VS-CCWo8Ue9.js} +1 -1
  27. package/dist/dashboard/client/assets/{ganttDiagram-JELNMOA3-Cb2DUSRk.js → ganttDiagram-JELNMOA3-CNY4d5UK.js} +1 -1
  28. package/dist/dashboard/client/assets/{gitGraphDiagram-V2S2FVAM-BUOnwA2w.js → gitGraphDiagram-V2S2FVAM-Dq5SBEJJ.js} +1 -1
  29. package/dist/dashboard/client/assets/{graph-4X5ddhLp.js → graph-BTt9lokK.js} +1 -1
  30. package/dist/dashboard/client/assets/{index-CKWqYAfu.js → index-B0k81q2b.js} +138 -138
  31. package/dist/dashboard/client/assets/index-Czwdh6UA.css +1 -0
  32. package/dist/dashboard/client/assets/{infoDiagram-HS3SLOUP-BlMqcrwm.js → infoDiagram-HS3SLOUP-AnKZja-G.js} +1 -1
  33. package/dist/dashboard/client/assets/{journeyDiagram-XKPGCS4Q-DF2ew7ju.js → journeyDiagram-XKPGCS4Q-nC-_WjPN.js} +1 -1
  34. package/dist/dashboard/client/assets/{kanban-definition-3W4ZIXB7-BKQMx0-n.js → kanban-definition-3W4ZIXB7-BEY73sWU.js} +1 -1
  35. package/dist/dashboard/client/assets/{layout-DNcn2g9w.js → layout-D4DfNpzH.js} +1 -1
  36. package/dist/dashboard/client/assets/{linear-Bqy9gvqb.js → linear-ZpGvKjeP.js} +1 -1
  37. package/dist/dashboard/client/assets/{mermaid-renderer-dJ71wgld.js → mermaid-renderer-BCDxmS9g.js} +4 -4
  38. package/dist/dashboard/client/assets/{mindmap-definition-VGOIOE7T-BARc8sqJ.js → mindmap-definition-VGOIOE7T-MzAaKESA.js} +1 -1
  39. package/dist/dashboard/client/assets/{pieDiagram-ADFJNKIX-CULlNZTd.js → pieDiagram-ADFJNKIX-B_X1kySF.js} +1 -1
  40. package/dist/dashboard/client/assets/{quadrantDiagram-AYHSOK5B-BJEZPVe9.js → quadrantDiagram-AYHSOK5B-CMoIEMLN.js} +1 -1
  41. package/dist/dashboard/client/assets/{requirementDiagram-UZGBJVZJ-BhMsmUIs.js → requirementDiagram-UZGBJVZJ-v4CRsn1w.js} +1 -1
  42. package/dist/dashboard/client/assets/{sankeyDiagram-TZEHDZUN-BYbNgogG.js → sankeyDiagram-TZEHDZUN-CPcyN8Jj.js} +1 -1
  43. package/dist/dashboard/client/assets/{sequenceDiagram-WL72ISMW-MoM_NwWk.js → sequenceDiagram-WL72ISMW-CTg0Vx1H.js} +1 -1
  44. package/dist/dashboard/client/assets/{stateDiagram-FKZM4ZOC-ditrlbM3.js → stateDiagram-FKZM4ZOC-BMWBN6Nq.js} +1 -1
  45. package/dist/dashboard/client/assets/stateDiagram-v2-4FDKWEC3-C9Jk1xd0.js +1 -0
  46. package/dist/dashboard/client/assets/{timeline-definition-IT6M3QCI-DOAJyjuz.js → timeline-definition-IT6M3QCI-B8xFcSGb.js} +1 -1
  47. package/dist/dashboard/client/assets/{treemap-GDKQZRPO-BBJkjnJl.js → treemap-GDKQZRPO-HQQuGl9w.js} +1 -1
  48. package/dist/dashboard/client/assets/{xychartDiagram-PRI3JC2R-CPW4s5vm.js → xychartDiagram-PRI3JC2R-Drz0SW3I.js} +1 -1
  49. package/dist/dashboard/client/index.html +2 -2
  50. package/dist/dashboard/server.js +910 -461
  51. package/dist/index.js +1257 -321
  52. package/package.json +6 -39
  53. package/dist/dashboard/client/assets/channel-BU2129fl.js +0 -1
  54. package/dist/dashboard/client/assets/classDiagram-2ON5EDUG-CVftFGiR.js +0 -1
  55. package/dist/dashboard/client/assets/classDiagram-v2-WZHVMYZB-CVftFGiR.js +0 -1
  56. package/dist/dashboard/client/assets/clone-DC6LEEC5.js +0 -1
  57. package/dist/dashboard/client/assets/index-CzxeSSaQ.css +0 -1
  58. package/dist/dashboard/client/assets/stateDiagram-v2-4FDKWEC3-SqoG2LCn.js +0 -1
  59. package/dist/lib/db/index.js +0 -2177
  60. package/dist/lib/models.js +0 -160
  61. package/dist/lib/runtime-config.js +0 -55
  62. package/dist/lib/state/index.js +0 -2196
  63. package/dist/lib/team-config.js +0 -175
  64. package/dist/lib/vendor-resume.js +0 -31
@@ -1,160 +0,0 @@
1
- // ../shared/platform/src/index.ts
2
- import {
3
- execFile,
4
- execFileSync,
5
- spawn
6
- } from "node:child_process";
7
- import { promisify } from "node:util";
8
- var execFilePromise = promisify(execFile);
9
- var isWindows = process.platform === "win32";
10
- async function execBinaryAsync(binary, args, opts) {
11
- return execFilePromise(binary, args, {
12
- ...opts,
13
- shell: isWindows
14
- });
15
- }
16
-
17
- // src/lib/models.ts
18
- function parseOpenCodeModelList(stdout) {
19
- const models = [];
20
- for (const rawLine of stdout.split(/\r?\n/)) {
21
- const line = rawLine.trim();
22
- if (!/^[^\s:]+\/\S+$/.test(line)) continue;
23
- const provider = line.slice(0, line.indexOf("/"));
24
- models.push({ id: line, provider });
25
- }
26
- return models.length > 0 ? models : null;
27
- }
28
- var VENDOR_MODEL_STRATEGIES = {
29
- claude: {
30
- displayName: "Claude Code",
31
- native: {
32
- // Verified against Claude Code 2.1.x: the CLI has no model-listing
33
- // subcommand (`claude models --json` → "unknown option"). Revisit if
34
- // a future release adds one.
35
- unavailableReason: "Claude Code does not provide a model-listing command; showing its documented model aliases instead"
36
- },
37
- // Vendor-documented aliases that always track the latest generation —
38
- // dated ids here would go stale by construction (the exact bug class of
39
- // issue #39). Pinned dated ids remain available via free-text entry.
40
- bundled: [
41
- { id: "opus", displayName: "Claude Opus (latest)" },
42
- { id: "sonnet", displayName: "Claude Sonnet (latest)" },
43
- { id: "haiku", displayName: "Claude Haiku (latest)" }
44
- ]
45
- },
46
- opencode: {
47
- displayName: "OpenCode",
48
- native: {
49
- // Plain `opencode models` — newline-delimited ids. (`--json` is not a
50
- // real flag, and `--verbose` interleaves JSON metadata blocks that
51
- // defeat line parsing.)
52
- args: ["models"],
53
- parse: parseOpenCodeModelList
54
- },
55
- bundled: [
56
- { id: "anthropic/claude-opus-4-8", provider: "anthropic" },
57
- { id: "anthropic/claude-sonnet-4-6", provider: "anthropic" },
58
- { id: "anthropic/claude-haiku-4-5", provider: "anthropic" }
59
- ]
60
- }
61
- };
62
- var SUPPORTED_VENDORS = Object.keys(
63
- VENDOR_MODEL_STRATEGIES
64
- );
65
- function isModelVendor(value) {
66
- return Object.hasOwn(VENDOR_MODEL_STRATEGIES, value);
67
- }
68
- async function detectActiveVendor() {
69
- for (const vendor of SUPPORTED_VENDORS) {
70
- try {
71
- await execBinaryAsync(vendor, ["--version"], {
72
- encoding: "utf-8",
73
- timeout: 3e3
74
- });
75
- return vendor;
76
- } catch {
77
- }
78
- }
79
- return null;
80
- }
81
- function describeProbeFailure(vendor, args, err) {
82
- const command = `${vendor} ${args.join(" ")}`;
83
- const e = err;
84
- if (e.code === "ENOENT") {
85
- return `\`${vendor}\` is not installed or not on PATH`;
86
- }
87
- if (e.killed) {
88
- return `\`${command}\` timed out or exceeded output limits`;
89
- }
90
- const stderr = typeof e.stderr === "string" ? e.stderr.trim() : "";
91
- const firstLine = (stderr.split(/\r?\n/)[0] ?? "").replace(/\u001b\[[0-9;]*[A-Za-z]/g, "").replace(/[\u0000-\u001f\u007f]/g, "").slice(0, 200);
92
- const detail = firstLine ? `: ${firstLine}` : "";
93
- const exit = typeof e.code === "number" ? ` with exit code ${e.code}` : "";
94
- return `\`${command}\` failed${exit}${detail}`;
95
- }
96
- async function tryNativeEnumeration(vendor, probe) {
97
- let stdout;
98
- try {
99
- const result = await execBinaryAsync(vendor, probe.args, {
100
- encoding: "utf-8",
101
- timeout: 5e3
102
- });
103
- stdout = result.stdout;
104
- } catch (err) {
105
- return { models: null, reason: describeProbeFailure(vendor, probe.args, err) };
106
- }
107
- const models = probe.parse(stdout);
108
- if (!models) {
109
- return {
110
- models: null,
111
- reason: `\`${vendor} ${probe.args.join(" ")}\` output did not contain any model identifiers`
112
- };
113
- }
114
- return { models };
115
- }
116
- var SUCCESS_TTL_MS = 6e4;
117
- var FAILURE_TTL_MS = 1e4;
118
- var cache = /* @__PURE__ */ new Map();
119
- function clearModelListCache() {
120
- cache.clear();
121
- }
122
- async function listModelsForVendor(vendor) {
123
- const cached = cache.get(vendor);
124
- if (cached && cached.expiresAt > Date.now()) {
125
- return cached.result;
126
- }
127
- const strategy = VENDOR_MODEL_STRATEGIES[vendor];
128
- if (!strategy) {
129
- throw new Error(`Unknown vendor: ${vendor}`);
130
- }
131
- let result;
132
- if ("unavailableReason" in strategy.native) {
133
- result = {
134
- vendor,
135
- source: "bundled",
136
- models: strategy.bundled,
137
- nativeUnavailableReason: strategy.native.unavailableReason
138
- };
139
- } else {
140
- const native = await tryNativeEnumeration(vendor, strategy.native);
141
- result = native.models ? { vendor, source: "native", models: native.models } : {
142
- vendor,
143
- source: "bundled",
144
- models: strategy.bundled,
145
- nativeUnavailableReason: native.reason
146
- };
147
- }
148
- const ttl = result.source === "native" ? SUCCESS_TTL_MS : FAILURE_TTL_MS;
149
- cache.set(vendor, { result, expiresAt: Date.now() + ttl });
150
- return result;
151
- }
152
- export {
153
- SUPPORTED_VENDORS,
154
- VENDOR_MODEL_STRATEGIES,
155
- clearModelListCache,
156
- detectActiveVendor,
157
- isModelVendor,
158
- listModelsForVendor,
159
- parseOpenCodeModelList
160
- };
@@ -1,55 +0,0 @@
1
- // src/lib/runtime-config.ts
2
- import { existsSync, readFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- var DEFAULT_AGENT_HEARTBEAT_SECONDS = 60;
5
- var DEFAULT_WORKFLOW_HARD_DEADLINE_MINUTES = 60;
6
- function readRuntimePositiveInt(ocrDir, key, defaultValue) {
7
- const configPath = join(ocrDir, "config.yaml");
8
- if (!existsSync(configPath)) return defaultValue;
9
- let content;
10
- try {
11
- content = readFileSync(configPath, "utf-8");
12
- } catch {
13
- return defaultValue;
14
- }
15
- const blockMatch = content.match(
16
- new RegExp(
17
- String.raw`^runtime:\s*\n(?:\s+[^\n]*\n)*?\s+${key}:\s*([^\s#\n]+)`,
18
- "m"
19
- )
20
- );
21
- const inlineMatch = content.match(
22
- new RegExp(String.raw`^runtime:\s*\{[^}]*\b${key}:\s*([^\s,}]+)`, "m")
23
- );
24
- const raw = blockMatch?.[1] ?? inlineMatch?.[1];
25
- if (!raw) return defaultValue;
26
- const parsed = Number(raw);
27
- if (!Number.isFinite(parsed) || parsed <= 0 || !Number.isInteger(parsed)) {
28
- process.stderr.write(
29
- `[ocr] runtime.${key} is not a positive integer (got "${raw}"); falling back to ${defaultValue}.
30
- `
31
- );
32
- return defaultValue;
33
- }
34
- return parsed;
35
- }
36
- function getAgentHeartbeatSeconds(ocrDir) {
37
- return readRuntimePositiveInt(
38
- ocrDir,
39
- "agent_heartbeat_seconds",
40
- DEFAULT_AGENT_HEARTBEAT_SECONDS
41
- );
42
- }
43
- function getWorkflowHardDeadlineMs(ocrDir) {
44
- return readRuntimePositiveInt(
45
- ocrDir,
46
- "workflow_hard_deadline_minutes",
47
- DEFAULT_WORKFLOW_HARD_DEADLINE_MINUTES
48
- ) * 60 * 1e3;
49
- }
50
- export {
51
- DEFAULT_AGENT_HEARTBEAT_SECONDS,
52
- DEFAULT_WORKFLOW_HARD_DEADLINE_MINUTES,
53
- getAgentHeartbeatSeconds,
54
- getWorkflowHardDeadlineMs
55
- };