@waishnav/devspace 1.0.2 → 1.0.4

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 (115) hide show
  1. package/README.md +43 -7
  2. package/dist/apply-patch.js +402 -0
  3. package/dist/cli.js +256 -4
  4. package/dist/config.js +17 -22
  5. package/dist/db/migrations.js +34 -0
  6. package/dist/db/schema.js +19 -0
  7. package/dist/local-agent-adapters.js +653 -0
  8. package/dist/local-agent-availability.js +119 -0
  9. package/dist/local-agent-path.js +24 -0
  10. package/dist/local-agent-profiles.js +135 -0
  11. package/dist/local-agent-runtime.js +48 -0
  12. package/dist/local-agent-store.js +145 -0
  13. package/dist/local-agent-targets.js +80 -0
  14. package/dist/process-platform.js +49 -0
  15. package/dist/process-sessions.js +337 -0
  16. package/dist/roots.js +5 -2
  17. package/dist/server.js +521 -243
  18. package/dist/skills.js +48 -4
  19. package/dist/ui/.vite/manifest.json +281 -281
  20. package/dist/ui/assets/{angular-html-Dj4LysSE.js → angular-html-CKeFzaPY.js} +1 -1
  21. package/dist/ui/assets/{angular-ts-CxuC_FFh.js → angular-ts-0wcM_Zxf.js} +1 -1
  22. package/dist/ui/assets/{apl-RwuvNFFo.js → apl-C7UdkNb2.js} +1 -1
  23. package/dist/ui/assets/{astro-ncoaUbsO.js → astro-DMqju4MJ.js} +1 -1
  24. package/dist/ui/assets/{blade-Dw8-Lzux.js → blade-DHanNgN5.js} +1 -1
  25. package/dist/ui/assets/{c-Dpbbo_f2.js → c-_iPKYPcx.js} +1 -1
  26. package/dist/ui/assets/{cobol-4ddX3THy.js → cobol-CagdLJsE.js} +1 -1
  27. package/dist/ui/assets/{coffee-Bn-a5KqK.js → coffee-CkNGriPi.js} +1 -1
  28. package/dist/ui/assets/{cpp-DoRrlM_T.js → cpp-CqmKOWIQ.js} +1 -1
  29. package/dist/ui/assets/{crystal-DiZfCxn-.js → crystal-DbAbDEO1.js} +1 -1
  30. package/dist/ui/assets/{css-DiQoSjDH.js → css-xwljL6Kw.js} +1 -1
  31. package/dist/ui/assets/{edge-wEhCUoEt.js → edge-CX3sYz15.js} +1 -1
  32. package/dist/ui/assets/{elixir-C3obhm0H.js → elixir-B3qL9hqd.js} +1 -1
  33. package/dist/ui/assets/{elm-DyTBfh1L.js → elm-CH4vrjBp.js} +1 -1
  34. package/dist/ui/assets/{erb-f4TnXRuY.js → erb-CupHqynN.js} +1 -1
  35. package/dist/ui/assets/{git-rebase-vhZbWNfp.js → git-rebase-CDxsU2LC.js} +1 -1
  36. package/dist/ui/assets/{glimmer-js-BG7puL6Y.js → glimmer-js-emkga3g1.js} +1 -1
  37. package/dist/ui/assets/{glimmer-ts-CNCfLLL1.js → glimmer-ts-D8kQDnUw.js} +1 -1
  38. package/dist/ui/assets/{glsl-DhT76AL5.js → glsl-BtfTaPhi.js} +1 -1
  39. package/dist/ui/assets/{graphql-CJX08w8y.js → graphql-DEus8iSO.js} +1 -1
  40. package/dist/ui/assets/{hack-DY4NGCCL.js → hack-DI8qpBqE.js} +1 -1
  41. package/dist/ui/assets/{haml-DwSkmVcG.js → haml-Br1i1gmi.js} +1 -1
  42. package/dist/ui/assets/{handlebars-CQ_1dEmi.js → handlebars-Ce23mu9x.js} +1 -1
  43. package/dist/ui/assets/{heavy-payload-2rGBiitA.js → heavy-payload-BcZ_nGfF.js} +1 -1
  44. package/dist/ui/assets/{html-B_e3Njif.js → html-RXVmfixf.js} +1 -1
  45. package/dist/ui/assets/{html-derivative-_nHZ_Bk-.js → html-derivative-D1aqeobb.js} +1 -1
  46. package/dist/ui/assets/{http-CfcvPIru.js → http-BebG00CE.js} +1 -1
  47. package/dist/ui/assets/{hurl-9vWDQIMO.js → hurl-kHMuvenL.js} +1 -1
  48. package/dist/ui/assets/{java-C4S5r6L5.js → java-DYc2V5RJ.js} +1 -1
  49. package/dist/ui/assets/{javascript-BRwqbMMC.js → javascript-BcfzTzr3.js} +1 -1
  50. package/dist/ui/assets/{jinja-DHxzMMc5.js → jinja-D2RhihUZ.js} +1 -1
  51. package/dist/ui/assets/{jison-B1DqeWXb.js → jison-BuoFEePN.js} +1 -1
  52. package/dist/ui/assets/{json-DcFTkEdd.js → json-BIDkCuJA.js} +1 -1
  53. package/dist/ui/assets/{jsx-DgfmYa9f.js → jsx-DHCL2HA0.js} +1 -1
  54. package/dist/ui/assets/{julia-3M8SJ8iF.js → julia-CvUQXscF.js} +1 -1
  55. package/dist/ui/assets/{just-UyH7_DNz.js → just-etc9R2qw.js} +1 -1
  56. package/dist/ui/assets/{latex-wUbha6EX.js → latex-BB3zRnxC.js} +1 -1
  57. package/dist/ui/assets/{liquid-DqNTB9kN.js → liquid-CIi5Mvpv.js} +1 -1
  58. package/dist/ui/assets/{lua-DrEQ1QTW.js → lua-Cox7XDiW.js} +1 -1
  59. package/dist/ui/assets/{marko-B3GJw9Md.js → marko-ruBIRV0n.js} +1 -1
  60. package/dist/ui/assets/{mdc-BnThk82m.js → mdc-CcbvB9U5.js} +1 -1
  61. package/dist/ui/assets/{nginx-B5IeSsOX.js → nginx-DtWz6ZYE.js} +1 -1
  62. package/dist/ui/assets/{nim-BJraatnS.js → nim-BV5BR4P7.js} +1 -1
  63. package/dist/ui/assets/{perl-BAhrR4gt.js → perl-BvzoSaJ4.js} +1 -1
  64. package/dist/ui/assets/{php-BKRCk_wX.js → php-C-clrAOy.js} +1 -1
  65. package/dist/ui/assets/{pug-B8gmSV7z.js → pug-E07_GXAr.js} +1 -1
  66. package/dist/ui/assets/{qml-DKrxIjHR.js → qml-dqt33dti.js} +1 -1
  67. package/dist/ui/assets/{r-YASBZvTH.js → r-BcVQxsAw.js} +1 -1
  68. package/dist/ui/assets/{razor-P-XFZqh6.js → razor-BW5T_UZ-.js} +1 -1
  69. package/dist/ui/assets/{regexp-CCpiH6nO.js → regexp-Ed_DEsuU.js} +1 -1
  70. package/dist/ui/assets/{review-payload-BLYwg6t8.js → review-payload-Dsmx33pY.js} +1 -1
  71. package/dist/ui/assets/{rst-CFAzckbn.js → rst-BkcGqLs8.js} +1 -1
  72. package/dist/ui/assets/{ruby-Dyp_Rx-S.js → ruby-Sf_X_YID.js} +1 -1
  73. package/dist/ui/assets/{sas-YkWZIXxT.js → sas-COsombsA.js} +1 -1
  74. package/dist/ui/assets/{scss-Cf89idGl.js → scss-K6Ylfa26.js} +1 -1
  75. package/dist/ui/assets/{shellscript-BFMb52q8.js → shellscript-D2EdqkgV.js} +1 -1
  76. package/dist/ui/assets/{shellsession-DuthW-5v.js → shellsession-jRXgXrnI.js} +1 -1
  77. package/dist/ui/assets/{soy-BohVVlJU.js → soy-BGspKQWW.js} +1 -1
  78. package/dist/ui/assets/{sql-CnK9R2Gt.js → sql-C4lAmYnM.js} +1 -1
  79. package/dist/ui/assets/{stata-D-sV4Vbr.js → stata-DQWvRqxp.js} +1 -1
  80. package/dist/ui/assets/{surrealql-ChAy0gHv.js → surrealql-OmKt9XJ_.js} +1 -1
  81. package/dist/ui/assets/{svelte-3HBVqG-H.js → svelte-D0rUmwDI.js} +1 -1
  82. package/dist/ui/assets/{templ-BixlV4Cp.js → templ-B-U0RMc0.js} +1 -1
  83. package/dist/ui/assets/{tex-DWoJKHvD.js → tex-BIHD-btS.js} +1 -1
  84. package/dist/ui/assets/{ts-tags-DLA8eH13.js → ts-tags-CGuDWfPC.js} +1 -1
  85. package/dist/ui/assets/{tsx-BYWa5JUz.js → tsx-B0-h_HlD.js} +1 -1
  86. package/dist/ui/assets/{twig-CnY65vAo.js → twig-BN2qDJWN.js} +1 -1
  87. package/dist/ui/assets/{typescript-ByInUsro.js → typescript-BRnwPzY3.js} +1 -1
  88. package/dist/ui/assets/{useFileDiffInstance-Dg0pWcJV.js → useFileDiffInstance-5ivdkUYO.js} +3 -3
  89. package/dist/ui/assets/{vue-Qngt2rkz.js → vue-DekNU1qt.js} +1 -1
  90. package/dist/ui/assets/{vue-html-DDue9upr.js → vue-html-Bjlv-uvH.js} +1 -1
  91. package/dist/ui/assets/{vue-vine-DBcAKsA6.js → vue-vine-C2Doytjq.js} +1 -1
  92. package/dist/ui/assets/{workspace-app-DGD9R89D.css → workspace-app-DASlX26z.css} +1 -1
  93. package/dist/ui/assets/{workspace-app-DuzpU4Hf.js → workspace-app-DYi7VJam.js} +5 -5
  94. package/dist/ui/assets/{xml-CRLR5jiL.js → xml-pXbxxgI3.js} +1 -1
  95. package/dist/ui/assets/{xsl-CmcwyXbm.js → xsl-BEAlgDI2.js} +1 -1
  96. package/dist/ui/assets/{yaml-Dpe6Eg-k.js → yaml-C1O-To71.js} +1 -1
  97. package/dist/ui/workspace-app.html +2 -2
  98. package/dist/user-config.js +21 -1
  99. package/dist/workspaces.js +3 -0
  100. package/docs/agent-profile-schema.md +165 -0
  101. package/docs/chatgpt-coding-workflow.md +46 -12
  102. package/docs/configuration.md +47 -12
  103. package/docs/gotchas.md +24 -5
  104. package/docs/setup.md +1 -1
  105. package/examples/agents/claude-implementer.md +30 -0
  106. package/examples/agents/codex-explorer.md +27 -0
  107. package/examples/agents/codex-qa-tester.md +29 -0
  108. package/examples/agents/codex-worker.md +25 -0
  109. package/examples/agents/copilot-reviewer.md +25 -0
  110. package/examples/agents/cursor-agent-worker.md +26 -0
  111. package/examples/agents/opencode-explorer.md +27 -0
  112. package/examples/agents/pi-reviewer.md +27 -0
  113. package/package.json +18 -5
  114. package/scripts/fix-node-pty-permissions.mjs +22 -0
  115. package/skills/subagent-delegation/SKILL.md +132 -0
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@waishnav/devspace",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Expose a secure local coding workspace through an MCP server.",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",
7
7
  "engines": {
8
- "node": ">=20.12 <27"
8
+ "node": ">=22.19 <27"
9
9
  },
10
10
  "bin": {
11
11
  "devspace": "dist/cli.js"
@@ -13,7 +13,9 @@
13
13
  "files": [
14
14
  "dist",
15
15
  "docs",
16
+ "examples",
16
17
  "scripts",
18
+ "skills",
17
19
  "README.md"
18
20
  ],
19
21
  "publishConfig": {
@@ -24,25 +26,32 @@
24
26
  "build": "npm run clean && npm run build:app && tsc -p tsconfig.build.json",
25
27
  "build:app": "vite build",
26
28
  "dev": "node scripts/dev-server.mjs",
29
+ "postinstall": "node scripts/fix-node-pty-permissions.mjs",
27
30
  "start": "node dist/cli.js serve",
28
- "test": "tsx src/config.test.ts && tsx src/roots.test.ts && tsx src/skills.test.ts && tsx src/workspaces.test.ts && tsx src/review-checkpoints.test.ts && tsx src/oauth-store.test.ts",
31
+ "test": "tsx src/config.test.ts && tsx src/ui/card-types.test.ts && tsx src/ui/patch-display.test.ts && tsx src/apply-patch.test.ts && tsx src/process-platform.test.ts && tsx src/process-sessions.test.ts && tsx src/local-agent-runtime.test.ts && tsx src/local-agent-adapters.test.ts && tsx src/local-agent-availability.test.ts && tsx src/local-agent-profiles.test.ts && tsx src/local-agent-targets.test.ts && tsx src/local-agent-store.test.ts && tsx src/roots.test.ts && tsx src/skills.test.ts && tsx src/workspaces.test.ts && tsx src/review-checkpoints.test.ts && tsx src/oauth-store.test.ts && tsx src/cli.test.ts",
29
32
  "typecheck": "tsc -p tsconfig.json --noEmit"
30
33
  },
31
34
  "keywords": [],
32
35
  "author": "",
33
36
  "license": "MIT",
34
37
  "dependencies": {
38
+ "@agentclientprotocol/sdk": "^1.1.0",
39
+ "@anthropic-ai/claude-agent-sdk": "^0.3.200",
35
40
  "@clack/prompts": "^1.5.1",
36
- "@earendil-works/pi-coding-agent": "^0.79.4",
41
+ "@earendil-works/pi-coding-agent": "^0.80.3",
37
42
  "@modelcontextprotocol/ext-apps": "^1.7.2",
38
43
  "@modelcontextprotocol/sdk": "^1.29.0",
44
+ "@openai/codex-sdk": "^0.142.5",
45
+ "@opencode-ai/sdk": "^1.17.13",
39
46
  "@pierre/diffs": "^1.2.5",
40
47
  "better-sqlite3": "^12.10.0",
48
+ "diff": "^8.0.3",
41
49
  "drizzle-orm": "^0.45.2",
42
50
  "express": "^5.2.1",
43
51
  "react": "^19.2.6",
44
52
  "react-dom": "^19.2.6",
45
53
  "semver": "^7.8.4",
54
+ "yaml": "^2.9.0",
46
55
  "zod": "^4.4.3"
47
56
  },
48
57
  "devDependencies": {
@@ -59,6 +68,10 @@
59
68
  },
60
69
  "overrides": {
61
70
  "protobufjs": "7.6.4",
62
- "ws": "8.21.0"
71
+ "ws": "8.21.0",
72
+ "undici": "8.5.0"
73
+ },
74
+ "optionalDependencies": {
75
+ "node-pty": "^1.1.0"
63
76
  }
64
77
  }
@@ -0,0 +1,22 @@
1
+ import { chmod } from "node:fs/promises";
2
+ import { dirname, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ if (process.platform === "darwin") {
6
+ const projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
7
+ for (const architecture of ["arm64", "x64"]) {
8
+ const helper = resolve(
9
+ projectRoot,
10
+ "node_modules",
11
+ "node-pty",
12
+ "prebuilds",
13
+ `darwin-${architecture}`,
14
+ "spawn-helper",
15
+ );
16
+ try {
17
+ await chmod(helper, 0o755);
18
+ } catch (error) {
19
+ if (error.code !== "ENOENT") throw error;
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: subagent-delegation
3
+ description: Delegate coding tasks to user-configured DevSpace subagents.
4
+ ---
5
+
6
+ # Subagent Delegation
7
+
8
+ Use this skill when the user explicitly asks to delegate work to another coding
9
+ agent, use a named subagent, get a second opinion, compare approaches, or run
10
+ a subagent-like workflow.
11
+
12
+ Do not use subagents silently. Tell the user when another subagent is
13
+ being used.
14
+
15
+ ## Core commands
16
+
17
+ Use only these commands for normal delegation:
18
+
19
+ ```bash
20
+ devspace agents ls
21
+ devspace agents run <profile-or-provider-or-id> "<prompt>"
22
+ devspace agents show <id>
23
+ ```
24
+
25
+ `ls` shows existing subagent sessions for the current workspace. DevSpace scopes
26
+ it automatically from the shell environment injected by the workspace tool.
27
+
28
+ `run <profile> "<prompt>"` starts a new configured profile and prints a
29
+ DevSpace agent id.
30
+
31
+ `run <provider> "<prompt>"` starts a raw built-in provider when no configured
32
+ profile is needed. Built-in providers are listed by `open_workspace`.
33
+
34
+ `run <id> "<prompt>"` sends a follow-up to an existing agent.
35
+
36
+ `show <id>` prints status and the latest response. If the agent is still
37
+ running, `show` waits briefly. If there is still no final response, call `show`
38
+ again later.
39
+
40
+ Do not run provider CLIs such as `codex`, `claude`, `opencode`, `pi`,
41
+ `cursor-agent`, or `copilot` directly unless you are explicitly debugging
42
+ DevSpace agent integration.
43
+
44
+ ## Choosing a profile
45
+
46
+ Choose profiles from the compact subagent profile catalog returned by
47
+ `open_workspace`. Use the profile name with `devspace agents run`. If no
48
+ profile fits and delegation is still appropriate, use a built-in provider name
49
+ from `open_workspace`.
50
+
51
+ Profiles may declare a model and optional thinking level. To override the
52
+ configured/default provider model or thinking level for a run, pass `--model`
53
+ or `--thinking`:
54
+
55
+ ```bash
56
+ devspace agents run <profile-or-provider> --model <model> "<prompt>"
57
+ devspace agents run <profile-or-provider> --thinking <level> "<prompt>"
58
+ ```
59
+
60
+ Use `--thinking` only when the user asks for a specific reasoning depth or when
61
+ the task clearly needs a different effort than the configured profile default.
62
+ Thinking values are provider-specific passthrough values. Use names supported by
63
+ the selected local agent harness; DevSpace does not translate values between
64
+ providers.
65
+
66
+ Good delegation targets:
67
+
68
+ - `reviewer`: second opinion, bug risk, security risk, test gaps.
69
+ - `explorer`: read-only codebase investigation.
70
+ - `implementer`: focused implementation when the user asked for delegation.
71
+
72
+ Do not delegate ordinary coding work just because a profile exists. Use normal
73
+ DevSpace tools unless the user asked for delegation, another agent's opinion,
74
+ parallel work, or a named subagent.
75
+
76
+ ## Worker prompts
77
+
78
+ Agents start with only the prompt you send plus their configured profile
79
+ instructions. Make prompts self-contained.
80
+
81
+ Implementation prompt shape:
82
+
83
+ ```text
84
+ Goal:
85
+ <clear goal>
86
+
87
+ Context:
88
+ <repo/module/user constraints>
89
+
90
+ Relevant files:
91
+ <paths and why they matter>
92
+
93
+ Acceptance criteria:
94
+ - <criterion>
95
+
96
+ Rules:
97
+ - Keep changes focused.
98
+ - Do not perform unrelated refactors.
99
+ - Report blockers clearly.
100
+ ```
101
+
102
+ Read-only investigation prompt shape:
103
+
104
+ ```text
105
+ Question:
106
+ <specific question>
107
+
108
+ Scope:
109
+ <files/directories/modules to inspect>
110
+
111
+ Rules:
112
+ - Do not modify files.
113
+ - Cite relevant file paths and symbols.
114
+ - Separate facts from guesses.
115
+ ```
116
+
117
+ ## After the worker responds
118
+
119
+ Always review the result before presenting it as verified.
120
+
121
+ For write-capable tasks, inspect changed files and run or explain relevant
122
+ tests. For read-only tasks, verify that important claims are supported by repo
123
+ evidence.
124
+
125
+ Be transparent in the final response:
126
+
127
+ ```text
128
+ I used <profile>. It reported <summary>. I verified <checks>. Remaining risk:
129
+ <risk or none>.
130
+ ```
131
+
132
+ Never hide that a subagent was used.