aicodeman 1.18.2 → 1.18.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 (80) hide show
  1. package/README.md +14 -0
  2. package/dist/hooks-config.d.ts +27 -0
  3. package/dist/hooks-config.d.ts.map +1 -1
  4. package/dist/hooks-config.js +44 -0
  5. package/dist/hooks-config.js.map +1 -1
  6. package/dist/web/public/admin-ui.js.gz +0 -0
  7. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  8. package/dist/web/public/{app.445f1584.js → app.e2cb9065.js} +1 -1
  9. package/dist/web/public/{app.445f1584.js.br → app.e2cb9065.js.br} +0 -0
  10. package/dist/web/public/{app.445f1584.js.gz → app.e2cb9065.js.gz} +0 -0
  11. package/dist/web/public/approvals-ui.js +24 -15
  12. package/dist/web/public/approvals-ui.js.br +0 -0
  13. package/dist/web/public/approvals-ui.js.gz +0 -0
  14. package/dist/web/public/{constants.822a486d.js → constants.04b7b284.js} +34 -20
  15. package/dist/web/public/constants.04b7b284.js.br +0 -0
  16. package/dist/web/public/constants.04b7b284.js.gz +0 -0
  17. package/dist/web/public/cron-ui.js.gz +0 -0
  18. package/dist/web/public/entrance-animations.js.gz +0 -0
  19. package/dist/web/public/home-sessions.js.gz +0 -0
  20. package/dist/web/public/i18n.86757605.js.gz +0 -0
  21. package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
  22. package/dist/web/public/index.html +13 -6
  23. package/dist/web/public/index.html.br +0 -0
  24. package/dist/web/public/index.html.gz +0 -0
  25. package/dist/web/public/input-cjk.63794d0b.js.gz +0 -0
  26. package/dist/web/public/keyboard-accessory.0454a3e9.js.gz +0 -0
  27. package/dist/web/public/mobile-handlers.bc45f976.js.gz +0 -0
  28. package/dist/web/public/mobile-overview.js.gz +0 -0
  29. package/dist/web/public/mobile.1eef31fe.css.gz +0 -0
  30. package/dist/web/public/notification-manager.5d229063.js.gz +0 -0
  31. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  32. package/dist/web/public/panels-ui.1e4cb4b2.js.gz +0 -0
  33. package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
  34. package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
  35. package/dist/web/public/readmymind-ui.js.gz +0 -0
  36. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  37. package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
  38. package/dist/web/public/session-lineage.js +35 -1
  39. package/dist/web/public/session-lineage.js.br +0 -0
  40. package/dist/web/public/session-lineage.js.gz +0 -0
  41. package/dist/web/public/{session-ui.20be58fa.js → session-ui.c67565f2.js} +3 -3
  42. package/dist/web/public/session-ui.c67565f2.js.br +0 -0
  43. package/dist/web/public/session-ui.c67565f2.js.gz +0 -0
  44. package/dist/web/public/settings-ui.eacb4f92.js.gz +0 -0
  45. package/dist/web/public/styles.d2fa3a17.css +1 -0
  46. package/dist/web/public/styles.d2fa3a17.css.br +0 -0
  47. package/dist/web/public/styles.d2fa3a17.css.gz +0 -0
  48. package/dist/web/public/subagent-windows.2a192c3e.js.gz +0 -0
  49. package/dist/web/public/sw.js.gz +0 -0
  50. package/dist/web/public/terminal-ui.c182a68d.js.gz +0 -0
  51. package/dist/web/public/ultracode-panel.js.gz +0 -0
  52. package/dist/web/public/ultracode-windows.js.gz +0 -0
  53. package/dist/web/public/upload.html.gz +0 -0
  54. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  55. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  56. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  57. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  58. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  59. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  60. package/dist/web/public/vendor/xterm-predictive-echo.6cec0fba.js.gz +0 -0
  61. package/dist/web/public/vendor/xterm-zerolag-input.137ad9f0.js.gz +0 -0
  62. package/dist/web/public/vendor/xterm.css.gz +0 -0
  63. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  64. package/dist/web/public/voice-input.4ec670b0.js.gz +0 -0
  65. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  66. package/dist/web/public/webview-tabs.js.gz +0 -0
  67. package/dist/web/routes/session-routes.d.ts.map +1 -1
  68. package/dist/web/routes/session-routes.js +18 -1
  69. package/dist/web/routes/session-routes.js.map +1 -1
  70. package/package.json +1 -1
  71. package/skills/codeman/SKILL.md +57 -19
  72. package/skills/codeman/preamble.sh +158 -0
  73. package/skills/codeman/reference/recipes.md +1 -1
  74. package/dist/web/public/constants.822a486d.js.br +0 -0
  75. package/dist/web/public/constants.822a486d.js.gz +0 -0
  76. package/dist/web/public/session-ui.20be58fa.js.br +0 -0
  77. package/dist/web/public/session-ui.20be58fa.js.gz +0 -0
  78. package/dist/web/public/styles.70bf9c2a.css +0 -1
  79. package/dist/web/public/styles.70bf9c2a.css.br +0 -0
  80. package/dist/web/public/styles.70bf9c2a.css.gz +0 -0
Binary file
Binary file
Binary file
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"session-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/session-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAQ7D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAgFxB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA+DjG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA0C1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAmCvE;AAWD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAiBhF;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,iBAAe,8BAA8B,CAC3C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,EAChD,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,OAAO,CAAC;IACT,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC,CAAC,CAkBD;AAED,kGAAkG;AAClG,eAAO,MAAM,+BAA+B,uCAAiC,CAAC;AA8L9E,2FAA2F;AAC3F,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AA6DD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAC/D,IAAI,CAo8GN"}
1
+ {"version":3,"file":"session-routes.d.ts","sourceRoot":"","sources":["../../../src/web/routes/session-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAQ7D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AAkFxB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AA+DjG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA0C1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAmCvE;AAWD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAiBhF;AAGD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,iBAAe,8BAA8B,CAC3C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,EAChD,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,OAAO,CAAC;IACT,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC,CAAC,CAkBD;AAED,kGAAkG;AAClG,eAAO,MAAM,+BAA+B,uCAAiC,CAAC;AA8L9E,2FAA2F;AAC3F,wBAAgB,uBAAuB,IAAI,IAAI,CAI9C;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAoED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAC/D,IAAI,CAk9GN"}
@@ -20,7 +20,7 @@ import { autoConfigureRalph, canAccessOwned, CASES_DIR, findSessionOrFail, getAu
20
20
  import { canUsernameRunPrivilegedCommands, resolveClaudeModeForUsername } from '../../user-store.js';
21
21
  import { isMultiUserMode } from '../../config/multiuser.js';
22
22
  import { AUTH_COOKIE_NAME } from '../middleware/auth.js';
23
- import { writeHooksConfig, updateCaseModel, stripCaseEnvKeys, applyStatusLineConfig, applyAgentSkill, refreshStaleCodemanHooks, } from '../../hooks-config.js';
23
+ import { writeHooksConfig, updateCaseModel, stripCaseEnvKeys, applyStatusLineConfig, applyAgentSkill, refreshUserAgentSkill, seedAgentSessionPreamble, refreshStaleCodemanHooks, } from '../../hooks-config.js';
24
24
  import { generateClaudeMd } from '../../templates/claude-md.js';
25
25
  import { imageWatcher } from '../../image-watcher.js';
26
26
  import { convertHeicToJpeg } from '../heic-jpeg-converter.js';
@@ -480,6 +480,13 @@ function abortOnClientHangUp(reply) {
480
480
  async function injectAgentSkill(casePath) {
481
481
  const skillDir = join(casePath, '.claude', 'skills', 'codeman');
482
482
  try {
483
+ // Claude Code loads a same-named USER-LEVEL skill (`~/.claude/skills/codeman`,
484
+ // written once by `codeman skill install`) over the case copy injected below, so a
485
+ // stale user copy silently replaces every fresh injection (observed 2026-08-14: an
486
+ // old copy cost every spawned worker its lineage arc and the fast path). Keep it
487
+ // current on the same trigger. Refresh-only + marker-guarded; quiet on refusal,
488
+ // since a foreign user copy is the user's own authored skill, not a config error.
489
+ await refreshUserAgentSkill();
483
490
  const result = await applyAgentSkill(casePath, true);
484
491
  if (result === 'foreign') {
485
492
  console.warn(`[agent-skill] not injected: ${skillDir} exists but is not Codeman-managed (no marker), refusing to touch it. Remove that copy if you want the packaged skill there.`);
@@ -741,6 +748,11 @@ export function registerSessionRoutes(app, ctx) {
741
748
  ctx.store.incrementSessionsCreated();
742
749
  ctx.persistSessionState(session);
743
750
  await ctx.setupSessionListeners(session);
751
+ // Pre-seed the agent skill's preamble cache so its §0 bootstrap is a two-line
752
+ // loader (see seedAgentSessionPreamble). Local claude sessions only; best-effort.
753
+ if (mode === 'claude' && !remote && (await ctx.getAgentSkillEnabled())) {
754
+ await seedAgentSessionPreamble(session.id).catch((err) => console.warn(`[agent-skill] preamble seed failed for ${session.id}: ${getErrorMessage(err)}`));
755
+ }
744
756
  getLifecycleLog().log({ event: 'created', sessionId: session.id, name: session.name });
745
757
  // Use light state for broadcast + response — buffers are fetched on-demand via /terminal.
746
758
  // Avoids serializing 2-3MB of terminal+text buffers per session creation.
@@ -2603,6 +2615,11 @@ export function registerSessionRoutes(app, ctx) {
2603
2615
  ctx.store.incrementSessionsCreated();
2604
2616
  ctx.persistSessionState(session);
2605
2617
  await ctx.setupSessionListeners(session);
2618
+ // Pre-seed the agent skill's preamble cache so its §0 bootstrap is a two-line
2619
+ // loader (see seedAgentSessionPreamble). Local claude sessions only; best-effort.
2620
+ if (mode === 'claude' && !remote && !docker && (await ctx.getAgentSkillEnabled())) {
2621
+ await seedAgentSessionPreamble(session.id).catch((err) => console.warn(`[agent-skill] preamble seed failed for ${session.id}: ${getErrorMessage(err)}`));
2622
+ }
2606
2623
  getLifecycleLog().log({
2607
2624
  event: 'created',
2608
2625
  sessionId: session.id,