@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/dist/skills.js CHANGED
@@ -1,16 +1,60 @@
1
+ import { existsSync } from "node:fs";
1
2
  import { homedir } from "node:os";
2
- import { resolve, sep } from "node:path";
3
+ import { join, resolve, sep } from "node:path";
4
+ import { fileURLToPath } from "node:url";
3
5
  import { loadSkills, } from "@earendil-works/pi-coding-agent";
4
6
  import { expandHomePath, isPathInsideRoot } from "./roots.js";
7
+ const SUBAGENT_DELEGATION_NAME = "subagent-delegation";
8
+ const SUBAGENT_DELEGATION_SKILL = join(SUBAGENT_DELEGATION_NAME, "SKILL.md");
9
+ function bundledSkillsDir() {
10
+ return fileURLToPath(new URL("../skills", import.meta.url));
11
+ }
12
+ function hasSubagentDelegationSkill(skillDir) {
13
+ return existsSync(join(skillDir, SUBAGENT_DELEGATION_SKILL));
14
+ }
15
+ export function effectiveSkillPaths(config, cwd) {
16
+ const bundledSkills = bundledSkillsDir();
17
+ const defaultPathCandidates = [
18
+ join(homedir(), ".agents", "skills"),
19
+ resolve(cwd, ".agents", "skills"),
20
+ config.devspaceSkillsDir,
21
+ join(config.agentDir, "skills"),
22
+ config.subagents && !hasSubagentDelegationSkill(config.devspaceSkillsDir)
23
+ ? bundledSkills
24
+ : undefined,
25
+ ];
26
+ const defaultPaths = defaultPathCandidates.filter((path) => path !== undefined && existsSync(path));
27
+ const seen = new Set();
28
+ return [...defaultPaths, ...config.skillPaths]
29
+ .map((path) => resolveSkillPath(path, cwd))
30
+ .filter((path) => {
31
+ if (seen.has(path))
32
+ return false;
33
+ seen.add(path);
34
+ return true;
35
+ });
36
+ }
37
+ function resolveSkillPath(path, cwd) {
38
+ return resolve(cwd, expandHomePath(path));
39
+ }
5
40
  export function loadWorkspaceSkills(config, cwd) {
6
41
  if (!config.skillsEnabled)
7
42
  return { skills: [], diagnostics: [] };
8
- return loadSkills({
43
+ const result = loadSkills({
9
44
  cwd,
10
45
  agentDir: config.agentDir,
11
- skillPaths: config.skillPaths,
12
- includeDefaults: true,
46
+ skillPaths: effectiveSkillPaths(config, cwd),
47
+ includeDefaults: false,
13
48
  });
49
+ if (config.subagents)
50
+ return result;
51
+ return {
52
+ skills: result.skills.filter((skill) => skill.name !== SUBAGENT_DELEGATION_NAME),
53
+ diagnostics: result.diagnostics.filter((diagnostic) => {
54
+ const collision = diagnostic.collision;
55
+ return !(collision?.resourceType === "skill" && collision.name === SUBAGENT_DELEGATION_NAME);
56
+ }),
57
+ };
14
58
  }
15
59
  export function resolveSkillReadPath(skills, activatedSkillDirs, inputPath) {
16
60
  const absolutePath = resolve(expandHomePath(inputPath));