@sapiom/harness 0.6.0 → 0.7.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 (85) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/dist/cli/doctor.d.ts.map +1 -1
  3. package/dist/cli/doctor.js +4 -2
  4. package/dist/cli/doctor.js.map +1 -1
  5. package/dist/core/adapters/claude-code.d.ts +36 -0
  6. package/dist/core/adapters/claude-code.d.ts.map +1 -1
  7. package/dist/core/adapters/claude-code.js +48 -1
  8. package/dist/core/adapters/claude-code.js.map +1 -1
  9. package/dist/core/adapters/codex.d.ts +6 -0
  10. package/dist/core/adapters/codex.d.ts.map +1 -1
  11. package/dist/core/adapters/codex.js +19 -13
  12. package/dist/core/adapters/codex.js.map +1 -1
  13. package/dist/core/bracketed-paste.d.ts +16 -0
  14. package/dist/core/bracketed-paste.d.ts.map +1 -1
  15. package/dist/core/bracketed-paste.js +17 -3
  16. package/dist/core/bracketed-paste.js.map +1 -1
  17. package/dist/core/canvas-manifest-check.d.ts.map +1 -1
  18. package/dist/core/canvas-manifest-check.js +3 -0
  19. package/dist/core/canvas-manifest-check.js.map +1 -1
  20. package/dist/core/canvas-watcher.d.ts +25 -0
  21. package/dist/core/canvas-watcher.d.ts.map +1 -1
  22. package/dist/core/canvas-watcher.js +31 -5
  23. package/dist/core/canvas-watcher.js.map +1 -1
  24. package/dist/core/errors.d.ts +12 -0
  25. package/dist/core/errors.d.ts.map +1 -1
  26. package/dist/core/errors.js +14 -0
  27. package/dist/core/errors.js.map +1 -1
  28. package/dist/core/example-seed.js +1 -1
  29. package/dist/core/example-seed.js.map +1 -1
  30. package/dist/core/inject/claude-settings.d.ts.map +1 -1
  31. package/dist/core/inject/claude-settings.js +69 -7
  32. package/dist/core/inject/claude-settings.js.map +1 -1
  33. package/dist/core/inject/mcp-config.d.ts +21 -0
  34. package/dist/core/inject/mcp-config.d.ts.map +1 -1
  35. package/dist/core/inject/mcp-config.js +23 -13
  36. package/dist/core/inject/mcp-config.js.map +1 -1
  37. package/dist/core/inject/skills-plugin.d.ts.map +1 -1
  38. package/dist/core/inject/skills-plugin.js +41 -25
  39. package/dist/core/inject/skills-plugin.js.map +1 -1
  40. package/dist/core/session-manager.d.ts +29 -0
  41. package/dist/core/session-manager.d.ts.map +1 -1
  42. package/dist/core/session-manager.js +95 -1
  43. package/dist/core/session-manager.js.map +1 -1
  44. package/dist/core/spawn-target.d.ts +16 -0
  45. package/dist/core/spawn-target.d.ts.map +1 -1
  46. package/dist/core/spawn-target.js +87 -19
  47. package/dist/core/spawn-target.js.map +1 -1
  48. package/dist/core/strip-ansi.js +49 -11
  49. package/dist/core/strip-ansi.js.map +1 -1
  50. package/dist/core/task-manager.js +1 -1
  51. package/dist/core/task-manager.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/server/actions.d.ts.map +1 -1
  57. package/dist/server/actions.js +1 -0
  58. package/dist/server/actions.js.map +1 -1
  59. package/dist/server/canvas-render.d.ts +9 -1
  60. package/dist/server/canvas-render.d.ts.map +1 -1
  61. package/dist/server/canvas-render.js +1 -0
  62. package/dist/server/canvas-render.js.map +1 -1
  63. package/dist/server/cwd-normalize.d.ts +18 -0
  64. package/dist/server/cwd-normalize.d.ts.map +1 -0
  65. package/dist/server/cwd-normalize.js +23 -0
  66. package/dist/server/cwd-normalize.js.map +1 -0
  67. package/dist/server/error-handler.d.ts +13 -0
  68. package/dist/server/error-handler.d.ts.map +1 -0
  69. package/dist/server/error-handler.js +7 -0
  70. package/dist/server/error-handler.js.map +1 -0
  71. package/dist/server/index.d.ts +8 -0
  72. package/dist/server/index.d.ts.map +1 -1
  73. package/dist/server/index.js +13 -6
  74. package/dist/server/index.js.map +1 -1
  75. package/dist/server/rest.d.ts.map +1 -1
  76. package/dist/server/rest.js +29 -9
  77. package/dist/server/rest.js.map +1 -1
  78. package/dist/shared/types.d.ts +25 -0
  79. package/dist/shared/types.d.ts.map +1 -1
  80. package/dist/shared/types.js.map +1 -1
  81. package/dist/web/assets/index-B6DkXea8.js +473 -0
  82. package/dist/web/assets/{index-Dcvwqho4.css → index-C7wzgAWT.css} +1 -1
  83. package/dist/web/index.html +2 -2
  84. package/package.json +4 -4
  85. package/dist/web/assets/index-C-h9_B2u.js +0 -468
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-watcher.d.ts","sourceRoot":"","sources":["../../src/core/canvas-watcher.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4B5D;AAED;;;+BAG+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AA+HD,MAAM,WAAW,wBAAwB;IACvC;;+EAE2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;8EAE0E;IAC1E,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,uEAAuE;AACvE,qBAAa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;gBAEvC,IAAI,EAAE,wBAAwB;IAE3D;iCAC6B;IAC7B,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWlD,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAKpC,OAAO,IAAI,IAAI;IAIf,8EAA8E;IAC9E,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
1
+ {"version":3,"file":"canvas-watcher.d.ts","sourceRoot":"","sources":["../../src/core/canvas-watcher.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4B5D;AAED;;;+BAG+B;AAC/B,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED;;;;;;;;GAQG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiB,GAAG,MAAM,CAEnF;AA8HD,MAAM,WAAW,wBAAwB;IACvC;;+EAE2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC;;8EAE0E;IAC1E,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD;AAED,uEAAuE;AACvE,qBAAa,oBAAoB;IAGnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;gBAEvC,IAAI,EAAE,wBAAwB;IAE3D;iCAC6B;IAC7B,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWlD,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAKpC,OAAO,IAAI,IAAI;IAIf,8EAA8E;IAC9E,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -85,6 +85,24 @@ export function snapshotWorkflowSources(root) {
85
85
  * directory-tree fingerprints (canvas output + sources) when recursive
86
86
  * `fs.watch` isn't available (notably Linux) or the watcher errors out.
87
87
  */
88
+ /**
89
+ * Normalize an `fs.watch`-reported relative path to forward-slash form.
90
+ *
91
+ * `fs.watch` reports NATIVE separators — `.sapiom\canvas\renders\x.html` on
92
+ * Windows — while CANVAS_DIR is a POSIX literal. Comparing them raw meant
93
+ * `isCanvasPath()` was false for EVERY canvas write on Windows, so
94
+ * `canvas.reload` was never published and the pane sat on stale HTML (the
95
+ * shipped symptom: the "Preparing your agent" placeholder surviving long
96
+ * after the real step graph was on disk — every hot-reload path was deaf).
97
+ *
98
+ * Splitting on `path.sep` (not a blanket backslash replace) keeps POSIX
99
+ * filenames that legitimately CONTAIN a backslash intact. Exported, with the
100
+ * separator injectable, so the Windows behavior is provable from POSIX CI —
101
+ * same pattern as server/cwd-normalize.ts.
102
+ */
103
+ export function normalizeWatchPath(filename, sep = path.sep) {
104
+ return sep === "/" ? filename : filename.split(sep).join("/");
105
+ }
88
106
  class SessionCanvasWatcher {
89
107
  constructor(cwd, harnessSessionId, callbacks) {
90
108
  this.cwd = cwd;
@@ -98,7 +116,11 @@ class SessionCanvasWatcher {
98
116
  this.lastSnapshot = "";
99
117
  this.lastSourceSnapshot = "";
100
118
  this.canvasDir = path.join(cwd, CANVAS_DIR);
101
- this.canvasPrefix = CANVAS_DIR + path.sep;
119
+ // Forward-slash prefix: every filename is normalized via
120
+ // normalizeWatchPath before comparison, so the POSIX-literal CANVAS_DIR
121
+ // and the prefix agree on every platform. (CANVAS_DIR + path.sep produced
122
+ // a mixed-separator prefix on Windows that could never match anything.)
123
+ this.canvasPrefix = CANVAS_DIR + "/";
102
124
  this.arm();
103
125
  }
104
126
  scheduleCanvasChange() {
@@ -118,23 +140,27 @@ class SessionCanvasWatcher {
118
140
  isCanvasPath(filename) {
119
141
  return filename === CANVAS_DIR || filename.startsWith(this.canvasPrefix);
120
142
  }
143
+ /** `filename` is the normalized (forward-slash) form — see normalizeWatchPath. */
121
144
  isWorkflowSourcePath(filename) {
122
145
  if (!SOURCE_EXTENSIONS.has(path.extname(filename)))
123
146
  return false;
124
- return !filename.split(path.sep).some((seg) => SKIP_DIR_NAMES.has(seg));
147
+ return !filename.split("/").some((seg) => SKIP_DIR_NAMES.has(seg));
125
148
  }
126
149
  arm() {
127
150
  if (this.closed)
128
151
  return;
129
152
  try {
130
- this.watcher = fs.watch(this.cwd, { recursive: true }, (event, filename) => {
153
+ this.watcher = fs.watch(this.cwd, { recursive: true }, (event, rawFilename) => {
131
154
  // A `null` filename means the platform couldn't report which path
132
155
  // changed — do both (reload AND re-render) rather than miss an update.
133
- if (filename === null) {
156
+ if (rawFilename === null) {
134
157
  this.scheduleCanvasChange();
135
158
  this.scheduleSourceChange();
136
159
  return;
137
160
  }
161
+ // Native separators → forward-slash before ANY comparison; on
162
+ // Windows the raw form matches nothing (see normalizeWatchPath).
163
+ const filename = normalizeWatchPath(rawFilename);
138
164
  if (this.isCanvasPath(filename)) {
139
165
  this.scheduleCanvasChange();
140
166
  // A rename at (or above) the canvas dir — e.g. an editor's atomic
@@ -142,7 +168,7 @@ class SessionCanvasWatcher {
142
168
  // time — can leave a recursive watcher no longer covering the new
143
169
  // inode on some platforms. Re-arm defensively rather than risk
144
170
  // silently going deaf.
145
- if (event === "rename" && (filename === CANVAS_DIR || filename === path.dirname(CANVAS_DIR))) {
171
+ if (event === "rename" && (filename === CANVAS_DIR || filename === path.posix.dirname(CANVAS_DIR))) {
146
172
  this.rearm();
147
173
  }
148
174
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"canvas-watcher.js","sourceRoot":"","sources":["../../src/core/canvas-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;qEACqE;AACrE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACnD;2EAC2E;AAC3E,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAa,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACtD,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,KAAK,OAAO,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE;QACjC,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB;YAAE,OAAO;QAC7C,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB;gBAAE,OAAO;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,oBAAoB;IAWxB,YACmB,GAAW,EACX,gBAAwB,EACxB,SAAkC;QAFlC,QAAG,GAAH,GAAG,CAAQ;QACX,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,cAAS,GAAT,SAAS,CAAyB;QAb7C,YAAO,GAAwB,IAAI,CAAC;QACpC,cAAS,GAA0C,IAAI,CAAC;QACxD,wBAAmB,GAAyC,IAAI,CAAC;QACjE,wBAAmB,GAAyC,IAAI,CAAC;QACjE,WAAM,GAAG,KAAK,CAAC;QACf,iBAAY,GAAG,EAAE,CAAC;QAClB,uBAAkB,GAAG,EAAE,CAAC;QAS9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,IAAI,CAAC,mBAAmB;YAAE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,CAAC,mBAAmB,GAAG,UAAU,CACnC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1D,WAAW,CACZ,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,IAAI,CAAC,mBAAmB;YAAE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,CAAC,mBAAmB,GAAG,UAAU,CACnC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC1D,WAAW,CACZ,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,QAAgB;QACnC,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;IAEO,oBAAoB,CAAC,QAAgB;QAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IAEO,GAAG;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACzE,kEAAkE;gBAClE,uEAAuE;gBACvE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,kEAAkE;oBAClE,kEAAkE;oBAClE,kEAAkE;oBAClE,+DAA+D;oBAC/D,uBAAuB;oBACvB,IAAI,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;wBAC7F,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;oBAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;YAChE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC1C,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,cAAc,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC/C,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;gBACzC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,mBAAmB;YAAE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,mBAAmB;YAAE,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,SAAS;YAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF;AAaD,uEAAuE;AACvE,MAAM,OAAO,oBAAoB;IAG/B,YAA6B,IAA8B;QAA9B,SAAI,GAAJ,IAAI,CAA0B;QAF1C,aAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEN,CAAC;IAE/D;iCAC6B;IAC7B,KAAK,CAAC,gBAAwB,EAAE,GAAW;QACzC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,gBAAgB,EAChB,IAAI,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE;YAC9C,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACrD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,gBAAwB;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACL,KAAK,MAAM,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACxF,CAAC;IAED,8EAA8E;IAC9E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF"}
1
+ {"version":3,"file":"canvas-watcher.js","sourceRoot":"","sources":["../../src/core/canvas-watcher.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@
9
9
  * SessionAlreadyLiveError → 409
10
10
  * SessionNotResumeableError → 409
11
11
  * AdapterNotFoundError → 400
12
+ * SpawnTargetError → 400
13
+ * ExternalHarnessError → 409
12
14
  */
13
15
  /** Base class for all typed harness errors. */
14
16
  export declare class HarnessError extends Error {
@@ -61,6 +63,16 @@ export declare class SessionAlreadyLiveError extends HarnessError {
61
63
  export declare class AdapterNotFoundError extends HarnessError {
62
64
  constructor(harness: string);
63
65
  }
66
+ /**
67
+ * Thrown by `resolveSpawnTarget` (core/spawn-target.ts) when a command cannot
68
+ * be turned into something `CreateProcess` can execute on Windows — not on
69
+ * PATH, an unparseable `.cmd`/`.bat` shim, or a shim whose target is missing.
70
+ * Every case is user-actionable ("install X", "restart to repair"), so it maps
71
+ * to HTTP 400 and the message is shown verbatim in the UI.
72
+ */
73
+ export declare class SpawnTargetError extends HarnessError {
74
+ constructor(message: string);
75
+ }
64
76
  /**
65
77
  * Thrown when a spawn or send operation is attempted on an external-mode
66
78
  * harness adapter (e.g. Conductor) whose sessions are managed by its own
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+CAA+C;AAC/C,qBAAa,YAAa,SAAQ,KAAK;IACrC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAQ3D;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,EAAE,EAAE,MAAM;CAGvB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,EAAE,EAAE,MAAM;CAMvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;gBAC7C,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAGxC;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,EAAE,EAAE,MAAM;CAGvB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,EAAE,MAAM;CAG5B;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAO3C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+CAA+C;AAC/C,qBAAa,YAAa,SAAQ,KAAK;IACrC,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAQ3D;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,EAAE,EAAE,MAAM;CAGvB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,EAAE,EAAE,MAAM;CAMvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;gBAC7C,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAGxC;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,EAAE,EAAE,MAAM;CAGvB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,OAAO,EAAE,MAAM;CAG5B;AAED;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,EAAE,MAAM;CAG5B;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAO3C"}
@@ -9,6 +9,8 @@
9
9
  * SessionAlreadyLiveError → 409
10
10
  * SessionNotResumeableError → 409
11
11
  * AdapterNotFoundError → 400
12
+ * SpawnTargetError → 400
13
+ * ExternalHarnessError → 409
12
14
  */
13
15
  /** Base class for all typed harness errors. */
14
16
  export class HarnessError extends Error {
@@ -74,6 +76,18 @@ export class AdapterNotFoundError extends HarnessError {
74
76
  super("ADAPTER_NOT_FOUND", `No adapter registered for harness "${harness}"`);
75
77
  }
76
78
  }
79
+ /**
80
+ * Thrown by `resolveSpawnTarget` (core/spawn-target.ts) when a command cannot
81
+ * be turned into something `CreateProcess` can execute on Windows — not on
82
+ * PATH, an unparseable `.cmd`/`.bat` shim, or a shim whose target is missing.
83
+ * Every case is user-actionable ("install X", "restart to repair"), so it maps
84
+ * to HTTP 400 and the message is shown verbatim in the UI.
85
+ */
86
+ export class SpawnTargetError extends HarnessError {
87
+ constructor(message) {
88
+ super("SPAWN_TARGET", message);
89
+ }
90
+ }
77
91
  /**
78
92
  * Thrown when a spawn or send operation is attempted on an external-mode
79
93
  * harness adapter (e.g. Conductor) whose sessions are managed by its own
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+CAA+C;AAC/C,MAAM,OAAO,YAAa,SAAQ,KAAK;IAMrC,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,sEAAsE;QACtE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,EAAU;QACpB,KAAK,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,EAAU;QACpB,KAAK,CACH,mBAAmB,EACnB,YAAY,EAAE,gFAAgF,CAC/F,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IACzD,YAAY,EAAU,EAAE,MAAe;QACrC,KAAK,CAAC,wBAAwB,EAAE,MAAM,IAAI,YAAY,EAAE,wCAAwC,CAAC,CAAC;IACpG,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,YAAY,EAAU;QACpB,KAAK,CAAC,sBAAsB,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,mBAAmB,EAAE,sCAAsC,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IAGpD,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CACH,kBAAkB,EAClB,GAAG,KAAK,gCAAgC,KAAK,0CAA0C,CACxF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+CAA+C;AAC/C,MAAM,OAAO,YAAa,SAAQ,KAAK;IAMrC,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,sEAAsE;QACtE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,EAAU;QACpB,KAAK,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,EAAU;QACpB,KAAK,CACH,mBAAmB,EACnB,YAAY,EAAE,gFAAgF,CAC/F,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IACzD,YAAY,EAAU,EAAE,MAAe;QACrC,KAAK,CAAC,wBAAwB,EAAE,MAAM,IAAI,YAAY,EAAE,wCAAwC,CAAC,CAAC;IACpG,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,YAAY,EAAU;QACpB,KAAK,CAAC,sBAAsB,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,mBAAmB,EAAE,sCAAsC,OAAO,GAAG,CAAC,CAAC;IAC/E,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IAGpD,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CACH,kBAAkB,EAClB,GAAG,KAAK,gCAAgC,KAAK,0CAA0C,CACxF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -54,7 +54,7 @@ function agentCoreTemplatesDir() {
54
54
  }
55
55
  function tryGit(cwd, args) {
56
56
  try {
57
- execFileSync("git", args, { cwd, stdio: "ignore" });
57
+ execFileSync("git", args, { cwd, stdio: "ignore", windowsHide: true });
58
58
  return true;
59
59
  }
60
60
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"example-seed.js","sourceRoot":"","sources":["../../src/core/example-seed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"example-seed.js","sourceRoot":"","sources":["../../src/core/example-seed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-settings.d.ts","sourceRoot":"","sources":["../../../src/core/inject/claude-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;GAEG;AACH,QAAA,MAAM,WAAW,kGAOP,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,6BAA6B;IAC5C,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;CACxB;AA0GD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA0ClC"}
1
+ {"version":3,"file":"claude-settings.d.ts","sourceRoot":"","sources":["../../../src/core/inject/claude-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;GAEG;AACH,QAAA,MAAM,WAAW,kGAOP,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,6BAA6B;IAC5C,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;CACxB;AAyKD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA0ClC"}
@@ -41,15 +41,47 @@ const EMIT_SCRIPT_SOURCE = `#!/usr/bin/env node
41
41
 
42
42
  const hookEvent = process.argv[2] || "unknown";
43
43
 
44
- // Absolute ceiling: whatever else happens, exit quickly so we never hang
45
- // the agent's hook pipeline.
44
+ // Absolute ceiling: whatever else happens, exit quickly so we never hang the
45
+ // agent's hook pipeline. The budgets are PER EVENT, because only SessionStart
46
+ // is correctness-critical: its POST is the sole signal that
47
+ // flips a session to "ready" (a lost one drops the user's held first prompt),
48
+ // so it gets the budget a cold Windows loopback needs. Every other event is
49
+ // analytics — the agent BLOCKS on each hook's exit, so a degraded-but-
50
+ // accepting server would otherwise add up to 2s per tool call, minutes across
51
+ // a long turn.
52
+ const isReadySignal = hookEvent === "SessionStart";
53
+ const hardStopMs = isReadySignal ? 3000 : 1000;
54
+ const abortMs = isReadySignal ? 2000 : 200;
55
+ const stdinGiveUpMs = isReadySignal ? 500 : 300;
56
+
46
57
  const hardStop = setTimeout(() => {
47
58
  try {
48
59
  process.exit(0);
49
60
  } catch {
50
61
  // ignore
51
62
  }
52
- }, 1000);
63
+ }, hardStopMs);
64
+
65
+ // Best-effort breadcrumb when the POST fails: one line beside this script.
66
+ // Every failure here is swallowed by design (a broken debug log must never
67
+ // break the hook), and the file is capped so a long-dead harness can't grow
68
+ // it unboundedly. Without this there is zero evidence anywhere when the
69
+ // ready-signal chain dies — the exact hole the Windows prompt-drop hid in.
70
+ function logEmitFailure(message) {
71
+ try {
72
+ const fs = require("node:fs");
73
+ const path = require("node:path");
74
+ const debugPath = path.join(__dirname, "emit-debug.log");
75
+ try {
76
+ if (fs.statSync(debugPath).size > 65536) return;
77
+ } catch {
78
+ // No file yet — fine.
79
+ }
80
+ fs.appendFileSync(debugPath, new Date().toISOString() + " " + hookEvent + " " + message + "\\n");
81
+ } catch {
82
+ // ignore
83
+ }
84
+ }
53
85
 
54
86
  function readStdin() {
55
87
  return new Promise((resolve) => {
@@ -58,7 +90,7 @@ function readStdin() {
58
90
  return;
59
91
  }
60
92
  let data = "";
61
- const giveUp = setTimeout(() => resolve(data), 300);
93
+ const giveUp = setTimeout(() => resolve(data), stdinGiveUpMs);
62
94
  process.stdin.setEncoding("utf8");
63
95
  process.stdin.on("data", (chunk) => {
64
96
  data += chunk;
@@ -93,8 +125,13 @@ async function main() {
93
125
  payload: payload,
94
126
  });
95
127
 
128
+ // SessionStart gets 2s, not 200ms: loopback is normally instant (and a dead
129
+ // port fails instantly with ECONNREFUSED), but a cold first accept on
130
+ // Windows can exceed 200ms — and a timed-out SessionStart means the session
131
+ // never reaches "ready" and the held first prompt is dropped. Analytics
132
+ // events keep the original tight budget (see hardStopMs above).
96
133
  const controller = new AbortController();
97
- const abortTimer = setTimeout(() => controller.abort(), 200);
134
+ const abortTimer = setTimeout(() => controller.abort(), abortMs);
98
135
 
99
136
  try {
100
137
  await fetch(ingestUrl, {
@@ -106,8 +143,9 @@ async function main() {
106
143
  body: body,
107
144
  signal: controller.signal,
108
145
  });
109
- } catch {
146
+ } catch (err) {
110
147
  // Fire-and-forget: ingest being down/slow must never surface here.
148
+ logEmitFailure("POST failed: " + (err && err.message ? err.message : String(err)));
111
149
  } finally {
112
150
  clearTimeout(abortTimer);
113
151
  }
@@ -123,6 +161,30 @@ main()
123
161
  function settingsDirFor(root, harnessSessionId) {
124
162
  return path.join(root, harnessSessionId);
125
163
  }
164
+ /**
165
+ * Why the hook command invokes a BARE `node`, on every platform — this is a
166
+ * decision, not an omission:
167
+ *
168
+ * Claude Code runs `command` hooks through a shell: `/bin/sh -c` on POSIX,
169
+ * and on Windows **Git Bash by default, falling back to PowerShell** (per its
170
+ * hooks documentation) — never cmd.exe. `node` is the one spelling all of
171
+ * them resolve, PROVIDED a matching flavor exists on PATH:
172
+ *
173
+ * - Git Bash resolves extensionless names and `.exe` — never a `.cmd`. A
174
+ * machine whose only `node` was the desktop app's `node.cmd` shim ran ZERO
175
+ * hooks: the SessionStart POST (the only thing that flips a session to
176
+ * "ready") silently died and the held first prompt was dropped. The
177
+ * desktop host now ships an extensionless `#!/bin/sh` node shim beside the
178
+ * `.cmd` for exactly this (harness-desktop's runtime-shims, mirroring
179
+ * npm's own three-flavor layout).
180
+ * - PowerShell and cmd resolve `node.cmd`/`node.exe` via PATHEXT.
181
+ *
182
+ * An absolute `"C:\…\node.exe"` looks more robust but is a trap: PowerShell's
183
+ * `-Command` form parses a leading quoted string as an EXPRESSION, not an
184
+ * invocation (it needs `&`), so embedding one would break the documented
185
+ * PowerShell fallback — while adding nothing Git Bash or cmd need.
186
+ */
187
+ const HOOK_NODE = "node";
126
188
  /**
127
189
  * Write the generated settings.json + emit.cjs for one harness session.
128
190
  * Returns the settings.json path — pass it as `claude --settings <path>`.
@@ -155,7 +217,7 @@ export async function generateClaudeSettings(options) {
155
217
  // CLAUDE.md's "paths contain spaces — never hand a shell an
156
218
  // unquoted path" rule. The event name is a fixed identifier from
157
219
  // HOOK_EVENTS, so it needs no quoting.
158
- command: `node "${emitScriptPath}" ${event}`,
220
+ command: `${HOOK_NODE} "${emitScriptPath}" ${event}`,
159
221
  },
160
222
  ],
161
223
  },
@@ -1 +1 @@
1
- {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../../../src/core/inject/claude-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,MAAM;IACN,YAAY;CACJ,CAAC;AAyCX;;;;;;;;;;;GAWG;AACH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsF1B,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY,EAAE,gBAAwB;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAExE,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,GAAG;YACb;gBACE,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,8DAA8D;wBAC9D,+DAA+D;wBAC/D,oEAAoE;wBACpE,mEAAmE;wBACnE,mEAAmE;wBACnE,+DAA+D;wBAC/D,8DAA8D;wBAC9D,iEAAiE;wBACjE,8DAA8D;wBAC9D,gEAAgE;wBAChE,4DAA4D;wBAC5D,iEAAiE;wBACjE,uCAAuC;wBACvC,OAAO,EAAE,SAAS,cAAc,KAAK,KAAK,EAAE;qBAC7C;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAEnF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../../../src/core/inject/claude-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,cAAc;IACd,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,MAAM;IACN,YAAY;CACJ,CAAC;AAyCX;;;;;;;;;;;GAWG;AACH,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4H1B,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY,EAAE,gBAAwB;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAExE,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,GAAG;YACb;gBACE,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,8DAA8D;wBAC9D,+DAA+D;wBAC/D,oEAAoE;wBACpE,mEAAmE;wBACnE,mEAAmE;wBACnE,+DAA+D;wBAC/D,8DAA8D;wBAC9D,iEAAiE;wBACjE,8DAA8D;wBAC9D,gEAAgE;wBAChE,4DAA4D;wBAC5D,iEAAiE;wBACjE,uCAAuC;wBACvC,OAAO,EAAE,GAAG,SAAS,KAAK,cAAc,KAAK,KAAK,EAAE;qBACrD;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;IACzE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAEnF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC1C,CAAC"}
@@ -1,4 +1,25 @@
1
+ /**
2
+ * A host-supplied way to launch the local `sapiom-dev` stdio server instead of
3
+ * the default `npx @sapiom/mcp@latest`.
4
+ *
5
+ * Why this exists (Windows, desktop host): the npx chain's top process is
6
+ * cmd.exe — a console-subsystem image — and Claude Code's Windows spawns leave
7
+ * a PERSISTENT visible console window for it. Users close that window, which
8
+ * kills the MCP server's process tree, and every later tool call hangs against
9
+ * the dead server. A GUI-subsystem executable (the Electron binary running as
10
+ * Node via ELECTRON_RUN_AS_NODE in `env`) allocates no console under ANY spawn
11
+ * flags while stdio pipes still work — so the desktop host passes itself plus
12
+ * the installed @sapiom/mcp entry script here. Bonus on every platform: no
13
+ * per-session registry fetch (npx re-resolves `@latest` each launch).
14
+ */
15
+ export interface McpDevServerCommand {
16
+ command: string;
17
+ args: string[];
18
+ env?: Record<string, string>;
19
+ }
1
20
  export interface McpConfigOptions {
21
+ /** Override for the local sapiom-dev server launch — see {@link McpDevServerCommand}. */
22
+ devServer?: McpDevServerCommand;
2
23
  /** SAPIOM_ENVIRONMENT to pass through to the sapiom-dev child process. */
3
24
  environment?: string;
4
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;iFAC6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA0CjB"}
1
+ {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,yFAAyF;IACzF,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;iFAC6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
@@ -27,19 +27,29 @@ export async function generateMcpConfig(harnessSessionId, options = {}) {
27
27
  url: "https://api.sapiom.ai/v1/mcp",
28
28
  ...(options.apiKey ? { headers: { "x-api-key": options.apiKey } } : {}),
29
29
  },
30
- "sapiom-dev": {
31
- command: "npx",
32
- // Pin the dist-tag (`@latest`) rather than the bare name so npx always
33
- // resolves the PUBLISHED package from the registry. A bare
34
- // `@sapiom/mcp` resolves a LOCAL workspace copy whenever the harness
35
- // runs from inside the sapiom-js monorepo (dogfooding/dev) whose bin
36
- // isn't linked, so the server fails to launch ("sapiom-mcp: command
37
- // not found" JSON-RPC -32000). A dist-tag spec forces registry
38
- // resolution and is behaviourally identical to what a real user
39
- // (outside the monorepo) already gets, so it's a pure robustness fix.
40
- args: ["-y", "@sapiom/mcp@latest"],
41
- ...(devEnv ? { env: devEnv } : {}),
42
- },
30
+ "sapiom-dev": options.devServer
31
+ ? {
32
+ command: options.devServer.command,
33
+ args: options.devServer.args,
34
+ // The launcher's own env (e.g. ELECTRON_RUN_AS_NODE) must win over
35
+ // the shared entries — it is what makes the command a node at all.
36
+ ...(devEnv || options.devServer.env
37
+ ? { env: { ...devEnvEntries, ...options.devServer.env } }
38
+ : {}),
39
+ }
40
+ : {
41
+ command: "npx",
42
+ // Pin the dist-tag (`@latest`) rather than the bare name so npx always
43
+ // resolves the PUBLISHED package from the registry. A bare
44
+ // `@sapiom/mcp` resolves a LOCAL workspace copy whenever the harness
45
+ // runs from inside the sapiom-js monorepo (dogfooding/dev) — whose bin
46
+ // isn't linked, so the server fails to launch ("sapiom-mcp: command
47
+ // not found" → JSON-RPC -32000). A dist-tag spec forces registry
48
+ // resolution and is behaviourally identical to what a real user
49
+ // (outside the monorepo) already gets, so it's a pure robustness fix.
50
+ args: ["-y", "@sapiom/mcp@latest"],
51
+ ...(devEnv ? { env: devEnv } : {}),
52
+ },
43
53
  },
44
54
  };
45
55
  const filePath = path.join(dir, "mcp-config.json");
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA6BhD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,gBAAwB,EACxB,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACtG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChF,MAAM,aAAa,GAA2B;QAC5C,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,cAAc;YACxB,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,cAAc,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,MAAM,MAAM,GAAG;QACb,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,8BAA8B;gBACnC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE;YACD,YAAY,EAAE;gBACZ,OAAO,EAAE,KAAK;gBACd,uEAAuE;gBACvE,2DAA2D;gBAC3D,qEAAqE;gBACrE,uEAAuE;gBACvE,oEAAoE;gBACpE,iEAAiE;gBACjE,gEAAgE;gBAChE,sEAAsE;gBACtE,IAAI,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnC;SACF;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/core/inject/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmDhD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,gBAAwB,EACxB,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACtG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChF,MAAM,aAAa,GAA2B;QAC5C,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,cAAc;YACxB,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,cAAc,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,MAAM,MAAM,GAAG;QACb,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,8BAA8B;gBACnC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxE;YACD,YAAY,EAAE,OAAO,CAAC,SAAS;gBAC7B,CAAC,CAAC;oBACE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO;oBAClC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI;oBAC5B,mEAAmE;oBACnE,mEAAmE;oBACnE,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG;wBACjC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE;wBACzD,CAAC,CAAC,EAAE,CAAC;iBACR;gBACH,CAAC,CAAC;oBACE,OAAO,EAAE,KAAK;oBACd,uEAAuE;oBACvE,2DAA2D;oBAC3D,qEAAqE;oBACrE,uEAAuE;oBACvE,oEAAoE;oBACpE,iEAAiE;oBACjE,gEAAgE;oBAChE,sEAAsE;oBACtE,IAAI,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC;oBAClC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnC;SACN;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"skills-plugin.d.ts","sourceRoot":"","sources":["../../../src/core/inject/skills-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAUH,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4DD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgD7B"}
1
+ {"version":3,"file":"skills-plugin.d.ts","sourceRoot":"","sources":["../../../src/core/inject/skills-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAiED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4D7B"}
@@ -31,6 +31,7 @@ import * as path from "node:path";
31
31
  import { createRequire } from "node:module";
32
32
  import { HARNESS_PATHS } from "../../shared/types.js";
33
33
  import { expandHome } from "../../cli/paths.js";
34
+ import { unpackedPath } from "../asar-path.js";
34
35
  /**
35
36
  * Resolve the `skills/` directory from the installed @sapiom/agent-core package.
36
37
  * Returns null when the package or its skills directory is unresolvable.
@@ -52,10 +53,15 @@ import { expandHome } from "../../cli/paths.js";
52
53
  */
53
54
  function resolveAgentCoreSkillsDir() {
54
55
  const require = createRequire(import.meta.url);
55
- // Strategy 1: direct package.json resolution (clean path).
56
+ // Strategy 1: direct package.json resolution (clean path). unpackedPath():
57
+ // in the packaged desktop app require.resolve reports the app.asar virtual
58
+ // path, and while readFile works there (Electron patches fs), copyFile's
59
+ // SOURCE must be a real on-disk file — node_modules are asarUnpacked, so the
60
+ // twin exists (harness CLAUDE.md's mandatory translation for any
61
+ // package-relative path).
56
62
  try {
57
63
  const pkgJsonPath = require.resolve("@sapiom/agent-core/package.json");
58
- return path.join(path.dirname(pkgJsonPath), "skills");
64
+ return unpackedPath(path.join(path.dirname(pkgJsonPath), "skills"));
59
65
  }
60
66
  catch {
61
67
  // exports map may not expose ./package.json — fall through to strategy 2.
@@ -71,7 +77,7 @@ function resolveAgentCoreSkillsDir() {
71
77
  try {
72
78
  const pkg = JSON.parse(readFileSync(path.join(dir, "package.json"), "utf8"));
73
79
  if (pkg.name === "@sapiom/agent-core")
74
- return path.join(dir, "skills");
80
+ return unpackedPath(path.join(dir, "skills"));
75
81
  }
76
82
  catch {
77
83
  // No package.json here (or unparseable / a nested type-marker without a
@@ -117,30 +123,40 @@ export async function generateSkillsPlugin(harnessSessionId, options = {}) {
117
123
  return undefined;
118
124
  const generatedRoot = expandHome(options.generatedRoot ?? HARNESS_PATHS.generated);
119
125
  const pluginDir = path.join(generatedRoot, harnessSessionId, "skills-plugin");
120
- // Write the .claude-plugin/plugin.json manifest.
121
- const pluginJsonDir = path.join(pluginDir, ".claude-plugin");
122
- await fs.mkdir(pluginJsonDir, { recursive: true });
123
- // Plugin name is user-visible: it namespaces every skill's slash command as
124
- // `/<name>:<skill>`, so "sapiom" yields `/sapiom:sapiom-agent-authoring`.
125
- await fs.writeFile(path.join(pluginJsonDir, "plugin.json"), JSON.stringify({ name: "sapiom" }, null, 2) + "\n", "utf8");
126
- // Copy each skill's SKILL.md into skills/<name>/SKILL.md.
127
- let copiedAny = false;
128
- for (const skillName of skillDirs) {
129
- const sourceMd = path.join(agentCoreSkillsDir, skillName, "SKILL.md");
130
- try {
131
- await fs.access(sourceMd);
132
- }
133
- catch {
134
- // No SKILL.md for this entry — skip.
135
- continue;
126
+ // The writes honor the module's documented graceful-no-op contract too:
127
+ // this runs inside sessionManager.create()'s launch-opts phase, so an
128
+ // unguarded mkdir/copy failure (disk, permissions, an asar edge we missed)
129
+ // killed the whole session over an optional skills plugin.
130
+ try {
131
+ // Write the .claude-plugin/plugin.json manifest.
132
+ const pluginJsonDir = path.join(pluginDir, ".claude-plugin");
133
+ await fs.mkdir(pluginJsonDir, { recursive: true });
134
+ // Plugin name is user-visible: it namespaces every skill's slash command as
135
+ // `/<name>:<skill>`, so "sapiom" yields `/sapiom:sapiom-agent-authoring`.
136
+ await fs.writeFile(path.join(pluginJsonDir, "plugin.json"), JSON.stringify({ name: "sapiom" }, null, 2) + "\n", "utf8");
137
+ // Copy each skill's SKILL.md into skills/<name>/SKILL.md.
138
+ let copiedAny = false;
139
+ for (const skillName of skillDirs) {
140
+ const sourceMd = path.join(agentCoreSkillsDir, skillName, "SKILL.md");
141
+ try {
142
+ await fs.access(sourceMd);
143
+ }
144
+ catch {
145
+ // No SKILL.md for this entry — skip.
146
+ continue;
147
+ }
148
+ const destDir = path.join(pluginDir, "skills", skillName);
149
+ await fs.mkdir(destDir, { recursive: true });
150
+ await fs.copyFile(sourceMd, path.join(destDir, "SKILL.md"));
151
+ copiedAny = true;
136
152
  }
137
- const destDir = path.join(pluginDir, "skills", skillName);
138
- await fs.mkdir(destDir, { recursive: true });
139
- await fs.copyFile(sourceMd, path.join(destDir, "SKILL.md"));
140
- copiedAny = true;
153
+ if (!copiedAny)
154
+ return undefined;
155
+ return pluginDir;
141
156
  }
142
- if (!copiedAny)
157
+ catch (err) {
158
+ console.warn(`[harness] skills-plugin generation failed for session ${harnessSessionId} — launching without --plugin-dir:`, err instanceof Error ? err.message : err);
143
159
  return undefined;
144
- return pluginDir;
160
+ }
145
161
  }
146
162
  //# sourceMappingURL=skills-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-plugin.js","sourceRoot":"","sources":["../../../src/core/inject/skills-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,yBAAyB;IAChC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/C,2DAA2D;IAC3D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,uEAAuE;QACvE,yEAAyE;QACzE,wDAAwD;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAE1E,CAAC;gBACF,IAAI,GAAG,CAAC,IAAI,KAAK,oBAAoB;oBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC;gBACP,wEAAwE;gBACxE,+BAA+B;YACjC,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM;YAC1B,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,gBAAwB,EACxB,UAA+B,EAAE;IAEjC,MAAM,kBAAkB,GAAG,yBAAyB,EAAE,CAAC;IACvD,IAAI,CAAC,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAE1C,qDAAqD;IACrD,IAAI,SAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE7C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAE9E,iDAAiD;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAClD,MAAM,CACP,CAAC;IAEF,0DAA0D;IAC1D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;YACrC,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAC5D,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"skills-plugin.js","sourceRoot":"","sources":["../../../src/core/inject/skills-plugin.ts"],"names":[],"mappings":"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"}