@devboxer/cli 0.3.0 → 0.4.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 (3) hide show
  1. package/README.md +3 -3
  2. package/dist/index.js +28 -10
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -75,8 +75,8 @@ devboxer create "Run large codegen" --model gpt-5-high
75
75
  - `-r, --repo <repo>`: GitHub repository (default: current repository)
76
76
  - `-b, --branch <branch>`: Base branch name (default: current branch, falls back to main)
77
77
  - `--no-new-branch`: Don't create a new branch (default: creates new branch)
78
- - `-m, --mode <mode>`: Task mode: `plan` or `execute` (default: `execute`)
79
- - `-M, --model <model>`: AI model to use: `opus`, `sonnet`, `haiku`, `amp`, `gpt-5-low`, `gpt-5-medium`, `gpt-5`, `gpt-5-high`, `gpt-5.2-low`, `gpt-5.2-medium`, `gpt-5.2`, `gpt-5.2-high`, `gpt-5.1-low`, `gpt-5.1-medium`, `gpt-5.1`, `gpt-5.1-high`, `gpt-5.1-codex-max-low`, `gpt-5.1-codex-max-medium`, `gpt-5.1-codex-max`, `gpt-5.1-codex-max-high`, `gpt-5.1-codex-max-xhigh`, `gpt-5-codex-low`, `gpt-5-codex-medium`, `gpt-5-codex-high`, `gpt-5.1-codex-low`, `gpt-5.1-codex-medium`, `gpt-5.1-codex-high`, `gemini-3-pro`, `gemini-2.5-pro`, `grok-code`, `qwen3-coder`, `kimi-k2`, `glm-4.6`, `opencode/gemini-2.5-pro` (optional)
78
+ - `-m, --model <model>`: AI model to use: `opus`, `claude-opus-4-6`, `sonnet`, `haiku`, `amp`, `gpt-5-low`, `gpt-5-medium`, `gpt-5`, `gpt-5-high`, `gpt-5.2-low`, `gpt-5.2-medium`, `gpt-5.2`, `gpt-5.2-high`, `gpt-5.1-low`, `gpt-5.1-medium`, `gpt-5.1`, `gpt-5.1-high`, `gpt-5.1-codex-max-low`, `gpt-5.1-codex-max-medium`, `gpt-5.1-codex-max`, `gpt-5.1-codex-max-high`, `gpt-5.1-codex-max-xhigh`, `gpt-5-codex-low`, `gpt-5-codex-medium`, `gpt-5-codex-high`, `gpt-5.1-codex-low`, `gpt-5.1-codex-medium`, `gpt-5.1-codex-high`, `gpt-5.2-codex-low`, `gpt-5.2-codex-medium`, `gpt-5.2-codex-high`, `gpt-5.2-codex-xhigh`, `gpt-5.3-codex`, `gpt-5.3-codex-low`, `gpt-5.3-codex-medium`, `gpt-5.3-codex-high`, `gpt-5.3-codex-xhigh`, `gemini-3-pro`, `gemini-2.5-pro`, `grok-code`, `qwen3-coder`, `kimi-k2`, `glm-4.6`, `opencode/gemini-2.5-pro` (optional)
79
+ - `-M, --mode <mode>`: Task mode: `plan` or `execute` (default: `execute`)
80
80
 
81
81
  ### `devboxer pull`
82
82
 
@@ -153,5 +153,5 @@ The MCP server acts as a bridge between Claude Code and DevBoxer, allowing you t
153
153
 
154
154
  ## Support
155
155
 
156
- - **Documentation**: [https://docs.devboxer.com](https://docs.devboxer.com)
156
+ - **Documentation**: [https://www.devboxer.com/docs](https://www.devboxer.com/docs)
157
157
  - **Website**: [https://devboxer.com](https://devboxer.com)
package/dist/index.js CHANGED
@@ -562,13 +562,16 @@ async function processSessionData(data, setProcessingStatus, onComplete, session
562
562
  const cwd = process.cwd();
563
563
  const cwdWithHyphens = cwd.replace(/\//g, "-");
564
564
  setProcessingStatus(`Project directory: ${cwdWithHyphens}`);
565
- if (data.jsonl && data.jsonl.length > 0) {
565
+ const hasJsonl = !!(data.jsonl && data.jsonl.length > 0);
566
+ if (hasJsonl) {
566
567
  const jsonlPath = await saveSessionData(
567
568
  data.sessionId,
568
569
  cwdWithHyphens,
569
570
  data.jsonl
570
571
  );
571
572
  setProcessingStatus(`Saved session data to: ${jsonlPath}`);
573
+ } else {
574
+ setProcessingStatus(`No conversation history available for this session`);
572
575
  }
573
576
  setProcessingStatus(`Session ready: ${data.sessionId}`);
574
577
  setTimeout(() => {
@@ -578,7 +581,8 @@ async function processSessionData(data, setProcessingStatus, onComplete, session
578
581
  success: true,
579
582
  gitRoot,
580
583
  cwdWithHyphens,
581
- sessionId: data.sessionId
584
+ sessionId: data.sessionId,
585
+ hasJsonl
582
586
  };
583
587
  } catch (err) {
584
588
  return {
@@ -601,6 +605,7 @@ function PullCommand({
601
605
  const [completedSessionId, setCompletedSessionId] = useState3(
602
606
  null
603
607
  );
608
+ const [jsonlAvailable, setJsonlAvailable] = useState3(true);
604
609
  const repoQuery = useCurrentGitHubRepo();
605
610
  const currentRepo = repoQuery.data;
606
611
  const {
@@ -618,15 +623,17 @@ function PullCommand({
618
623
  (sessionId) => {
619
624
  setCompletedSessionId(sessionId);
620
625
  setIsProcessing(false);
621
- if (resume) {
622
- setTimeout(() => {
623
- launchClaude(sessionId);
624
- }, 100);
625
- }
626
626
  },
627
627
  sessionOnly
628
628
  );
629
- if (!result.success) {
629
+ if (result.success) {
630
+ setJsonlAvailable(!!result.hasJsonl);
631
+ if (resume && result.hasJsonl && result.sessionId) {
632
+ setTimeout(() => {
633
+ launchClaude(result.sessionId);
634
+ }, 1100);
635
+ }
636
+ } else {
630
637
  setProcessingError(result.error || "Unknown error during processing");
631
638
  setIsProcessing(false);
632
639
  }
@@ -648,7 +655,7 @@ function PullCommand({
648
655
  if (sessionFetchError) {
649
656
  return /* @__PURE__ */ React3.createElement(Box3, { flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Text3, { color: "red" }, "Error:", " ", sessionFetchError instanceof Error ? sessionFetchError.message : String(sessionFetchError)));
650
657
  }
651
- return /* @__PURE__ */ React3.createElement(Box3, { flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Box3, null, isLoading ? /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Text3, null, /* @__PURE__ */ React3.createElement(Spinner2, { type: "dots" })), /* @__PURE__ */ React3.createElement(Text3, null, " Fetching session for task ", selectedThreadId, "...")) : sessionData ? /* @__PURE__ */ React3.createElement(Text3, { color: "green" }, "\u2713 Session fetched successfully") : /* @__PURE__ */ React3.createElement(Text3, { color: "red" }, "Error: No session data")), sessionData && !isLoading && /* @__PURE__ */ React3.createElement(Box3, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Name")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.name)), /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Branch")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.branchName || "N/A")), /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Repository")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.githubRepoFullName || "N/A")), /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "PR Number")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.githubPRNumber ? `#${sessionData.githubPRNumber}` : "N/A"))), processingError && /* @__PURE__ */ React3.createElement(Box3, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Text3, { color: "red" }, "Error: ", processingError)), completedSessionId ? /* @__PURE__ */ React3.createElement(Box3, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Text3, null, " "), resume ? /* @__PURE__ */ React3.createElement(Text3, { color: "green" }, "Launching Claude...") : sessionData?.agent === "claudeCode" ? /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Text3, { color: "yellow" }, "To continue this session, run:"), /* @__PURE__ */ React3.createElement(
658
+ return /* @__PURE__ */ React3.createElement(Box3, { flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Box3, null, isLoading ? /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Text3, null, /* @__PURE__ */ React3.createElement(Spinner2, { type: "dots" })), /* @__PURE__ */ React3.createElement(Text3, null, " Fetching session for task ", selectedThreadId, "...")) : sessionData ? /* @__PURE__ */ React3.createElement(Text3, { color: "green" }, "\u2713 Session fetched successfully") : /* @__PURE__ */ React3.createElement(Text3, { color: "red" }, "Error: No session data")), sessionData && !isLoading && /* @__PURE__ */ React3.createElement(Box3, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Name")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.name)), /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Branch")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.branchName || "N/A")), /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "Repository")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.githubRepoFullName || "N/A")), /* @__PURE__ */ React3.createElement(Box3, null, /* @__PURE__ */ React3.createElement(Box3, { width: 15 }, /* @__PURE__ */ React3.createElement(Text3, { dimColor: true }, "PR Number")), /* @__PURE__ */ React3.createElement(Text3, null, sessionData.githubPRNumber ? `#${sessionData.githubPRNumber}` : "N/A"))), processingError && /* @__PURE__ */ React3.createElement(Box3, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Text3, { color: "red" }, "Error: ", processingError)), completedSessionId ? /* @__PURE__ */ React3.createElement(Box3, { marginTop: 1, flexDirection: "column" }, /* @__PURE__ */ React3.createElement(Text3, null, " "), resume && !jsonlAvailable ? /* @__PURE__ */ React3.createElement(Text3, { color: "yellow" }, "No conversation history available \u2014 cannot resume session") : resume && jsonlAvailable ? /* @__PURE__ */ React3.createElement(Text3, { color: "green" }, "Launching Claude...") : sessionData?.agent === "claudeCode" ? /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(Text3, { color: "yellow" }, "To continue this session, run:"), /* @__PURE__ */ React3.createElement(
652
659
  Box3,
653
660
  {
654
661
  marginLeft: 2,
@@ -809,7 +816,7 @@ import updateNotifier from "update-notifier";
809
816
  // package.json
810
817
  var package_default = {
811
818
  name: "@devboxer/cli",
812
- version: "0.3.0",
819
+ version: "0.4.0",
813
820
  type: "module",
814
821
  bin: {
815
822
  devboxer: "./dist/index.js"
@@ -1179,6 +1186,7 @@ var CLI_MODEL_OPTIONS = [
1179
1186
  "amp",
1180
1187
  "haiku",
1181
1188
  "opus",
1189
+ "claude-opus-4-6",
1182
1190
  "sonnet",
1183
1191
  "gpt-5",
1184
1192
  "gpt-5-low",
@@ -1205,6 +1213,16 @@ var CLI_MODEL_OPTIONS = [
1205
1213
  "gpt-5.1-codex-low",
1206
1214
  "gpt-5.1-codex-medium",
1207
1215
  "gpt-5.1-codex-high",
1216
+ "gpt-5.2-codex",
1217
+ "gpt-5.2-codex-low",
1218
+ "gpt-5.2-codex-medium",
1219
+ "gpt-5.2-codex-high",
1220
+ "gpt-5.2-codex-xhigh",
1221
+ "gpt-5.3-codex",
1222
+ "gpt-5.3-codex-low",
1223
+ "gpt-5.3-codex-medium",
1224
+ "gpt-5.3-codex-high",
1225
+ "gpt-5.3-codex-xhigh",
1208
1226
  "grok-code",
1209
1227
  "qwen3-coder",
1210
1228
  "kimi-k2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devboxer/cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "devboxer": "./dist/index.js"