aicodeman 1.25.0 → 1.26.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 (92) hide show
  1. package/dist/agent-case-marker.d.ts +91 -0
  2. package/dist/agent-case-marker.d.ts.map +1 -0
  3. package/dist/agent-case-marker.js +151 -0
  4. package/dist/agent-case-marker.js.map +1 -0
  5. package/dist/hooks-config.d.ts +25 -0
  6. package/dist/hooks-config.d.ts.map +1 -1
  7. package/dist/hooks-config.js +67 -3
  8. package/dist/hooks-config.js.map +1 -1
  9. package/dist/types/api.d.ts +32 -0
  10. package/dist/types/api.d.ts.map +1 -1
  11. package/dist/types/api.js.map +1 -1
  12. package/dist/web/public/admin-ui.js.gz +0 -0
  13. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  14. package/dist/web/public/app.3a89ac57.js.gz +0 -0
  15. package/dist/web/public/approvals-ui.js.gz +0 -0
  16. package/dist/web/public/constants.7a635e34.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.9db8c4e0.js.gz +0 -0
  21. package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
  22. package/dist/web/public/index.html +2 -2
  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.87f14251.js.gz +0 -0
  26. package/dist/web/public/keyboard-accessory.daf18302.js.gz +0 -0
  27. package/dist/web/public/mobile-handlers.0f83a608.js.gz +0 -0
  28. package/dist/web/public/mobile-overview.js.gz +0 -0
  29. package/dist/web/public/mobile.7112f27d.css.gz +0 -0
  30. package/dist/web/public/notification-manager.36ea4624.js.gz +0 -0
  31. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  32. package/dist/web/public/panels-ui.db4785bf.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.gz +0 -0
  39. package/dist/web/public/{session-ui.58116fce.js → session-ui.a9c126c6.js} +32 -23
  40. package/dist/web/public/session-ui.a9c126c6.js.br +0 -0
  41. package/dist/web/public/session-ui.a9c126c6.js.gz +0 -0
  42. package/dist/web/public/settings-ui.554f9cdd.js.gz +0 -0
  43. package/dist/web/public/styles.298f81f2.css +1 -0
  44. package/dist/web/public/styles.298f81f2.css.br +0 -0
  45. package/dist/web/public/{styles.2a35729d.css.gz → styles.298f81f2.css.gz} +0 -0
  46. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  47. package/dist/web/public/sw.js.gz +0 -0
  48. package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
  49. package/dist/web/public/terminal-ui.70445f81.js.gz +0 -0
  50. package/dist/web/public/ultracode-panel.js.gz +0 -0
  51. package/dist/web/public/ultracode-windows.js.gz +0 -0
  52. package/dist/web/public/upload.html.gz +0 -0
  53. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  54. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  55. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  56. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  57. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  58. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  59. package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
  60. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
  61. package/dist/web/public/vendor/xterm.css.gz +0 -0
  62. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  63. package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
  64. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  65. package/dist/web/public/webview-tabs.js.gz +0 -0
  66. package/dist/web/route-helpers.d.ts +18 -0
  67. package/dist/web/route-helpers.d.ts.map +1 -1
  68. package/dist/web/route-helpers.js +23 -0
  69. package/dist/web/route-helpers.js.map +1 -1
  70. package/dist/web/routes/case-routes.d.ts.map +1 -1
  71. package/dist/web/routes/case-routes.js +73 -2
  72. package/dist/web/routes/case-routes.js.map +1 -1
  73. package/dist/web/routes/session-routes.d.ts.map +1 -1
  74. package/dist/web/routes/session-routes.js +23 -3
  75. package/dist/web/routes/session-routes.js.map +1 -1
  76. package/dist/web/schemas.d.ts +1 -0
  77. package/dist/web/schemas.d.ts.map +1 -1
  78. package/dist/web/schemas.js +10 -0
  79. package/dist/web/schemas.js.map +1 -1
  80. package/dist/web/server.d.ts.map +1 -1
  81. package/dist/web/server.js +20 -1
  82. package/dist/web/server.js.map +1 -1
  83. package/package.json +1 -1
  84. package/skills/codeman/SKILL.md +14 -10
  85. package/skills/codeman/preamble.sh +6 -3
  86. package/skills/codeman/reference/endpoints.md +9 -0
  87. package/skills/codeman/reference/recipes.md +1 -1
  88. package/skills/codeman/reference/verbs.md +15 -0
  89. package/dist/web/public/session-ui.58116fce.js.br +0 -0
  90. package/dist/web/public/session-ui.58116fce.js.gz +0 -0
  91. package/dist/web/public/styles.2a35729d.css +0 -1
  92. package/dist/web/public/styles.2a35729d.css.br +0 -0
@@ -19,7 +19,8 @@ import { ownerLayoutKey } from '../../tab-layout-persistence.js';
19
19
  import { TabLayoutValidationError } from '../../tab-layout.js';
20
20
  import { sessionWaits, resolveWaitSignals, sessionHookOptions, signalForStatus, WaitCapacityError, } from '../session-wait-registry.js';
21
21
  import { clampWaitMs, MAX_BUFFER_SCAN_BYTES } from '../../config/agent-wait.js';
22
- import { autoConfigureRalph, canAccessOwned, CASES_DIR, findPersistedSessionOrFail, findSessionOrFail, getAuthUser, isAdmin, isWorkingDirAllowed, ownerFor, parseBody, persistAndBroadcastSession, resolveCasesDir, resolveParentSessionId, sessionCapacityMessage, SETTINGS_PATH, validatePathWithinBase, } from '../route-helpers.js';
22
+ import { autoConfigureRalph, canAccessOwned, CASES_DIR, findPersistedSessionOrFail, findSessionOrFail, getAuthUser, isAdmin, isWorkingDirAllowed, ownerFor, parseBody, persistAndBroadcastSession, resolveAgentCaseOrigin, resolveCasesDir, resolveParentSessionId, sessionCapacityMessage, SETTINGS_PATH, validatePathWithinBase, } from '../route-helpers.js';
23
+ import { buildAgentCaseMarker, writeAgentCaseMarker } from '../../agent-case-marker.js';
23
24
  import { canUsernameRunPrivilegedCommands, resolveClaudeModeForUsername } from '../../user-store.js';
24
25
  import { enabledClis, getCli } from '../../config/cli-registry/registry.js';
25
26
  import { resolveCliLaunchError } from '../../utils/cli-launcher.js';
@@ -2566,7 +2567,10 @@ export function registerSessionRoutes(app, ctx) {
2566
2567
  const capMsg = sessionCapacityMessage(ctx.sessions, owner);
2567
2568
  if (capMsg)
2568
2569
  return createErrorResponse(ApiErrorCode.SESSION_BUSY, capMsg);
2569
- const { caseName = 'testcase', sessionName, mode = 'claude', modelOverride, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig, ompConfig, envOverrides, effort, parentSessionId, } = parseBody(QuickStartSchema, req.body);
2570
+ const { caseName = 'testcase', sessionName, mode = 'claude', modelOverride, openCodeConfig, codexConfig, geminiConfig, antigravityConfig, piConfig, grokConfig, deepSeekConfig, ompConfig, envOverrides, effort, parentSessionId, agentOrigin, } = parseBody(QuickStartSchema, req.body);
2571
+ // Resolved ONCE here: the same value labels a case directory this request creates
2572
+ // (agent-case-marker.ts) and draws the tab lineage line on the session below.
2573
+ const qsParentSessionId = resolveParentSessionId(ctx, req, parentSessionId, owner);
2570
2574
  // Multi-user: shell mode is arbitrary host-account execution, gated by the grant.
2571
2575
  // Resolve the owner's grant from the store so a GRANTED regular user is not wrongly denied.
2572
2576
  if (getCli(mode)?.capabilities.privilegedCommandGate && !(await canUsernameRunPrivilegedCommands(owner))) {
@@ -2776,6 +2780,22 @@ export function registerSessionRoutes(app, ctx) {
2776
2780
  mode !== 'omp') {
2777
2781
  await writeHooksConfig(resolvedCasePath);
2778
2782
  }
2783
+ // Label a directory an AGENT asked us to create, so the scratch workspaces a
2784
+ // long orchestration leaves behind can be told apart from the user's real
2785
+ // projects later (see agent-case-marker.ts). This is the only branch that may
2786
+ // write it: it is the only one that creates the directory, and a pre-existing
2787
+ // case must never be labelled. Best-effort — a failed marker must not fail the
2788
+ // spawn it decorates.
2789
+ const qsAgentOrigin = resolveAgentCaseOrigin(req, agentOrigin, qsParentSessionId);
2790
+ if (qsAgentOrigin) {
2791
+ await writeAgentCaseMarker(resolvedCasePath, buildAgentCaseMarker({
2792
+ createdBy: qsAgentOrigin,
2793
+ parentSessionId: qsParentSessionId,
2794
+ parentSessionName: qsParentSessionId ? ctx.sessions.get(qsParentSessionId)?.name : undefined,
2795
+ mode,
2796
+ owner,
2797
+ }));
2798
+ }
2779
2799
  ctx.broadcast(SseEvent.CaseCreated, { name: caseName, path: resolvedCasePath });
2780
2800
  }
2781
2801
  catch (err) {
@@ -2893,7 +2913,7 @@ export function registerSessionRoutes(app, ctx) {
2893
2913
  docker,
2894
2914
  resumeSessionId: dockerResumeId,
2895
2915
  tmuxHistoryLimit: qsTerminalHistoryConfig.tmuxHistoryLimit,
2896
- parentSessionId: resolveParentSessionId(ctx, req, parentSessionId, owner),
2916
+ parentSessionId: qsParentSessionId,
2897
2917
  });
2898
2918
  // Auto-detect completion phrase from CLAUDE.md BEFORE broadcasting
2899
2919
  // so the initial state already has the phrase configured (only if globally enabled)