aicodeman 1.23.2 → 1.24.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.
- package/README.md +10 -10
- package/README.zh-CN.md +2 -2
- package/dist/config/dependency-registry.d.ts.map +1 -1
- package/dist/config/dependency-registry.js +25 -0
- package/dist/config/dependency-registry.js.map +1 -1
- package/dist/docker-hosts.d.ts.map +1 -1
- package/dist/docker-hosts.js +17 -0
- package/dist/docker-hosts.js.map +1 -1
- package/dist/mux-interface.d.ts +3 -1
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/omp-transcript.d.ts +46 -0
- package/dist/omp-transcript.d.ts.map +1 -0
- package/dist/omp-transcript.js +174 -0
- package/dist/omp-transcript.js.map +1 -0
- package/dist/remote-hosts.d.ts.map +1 -1
- package/dist/remote-hosts.js +2 -0
- package/dist/remote-hosts.js.map +1 -1
- package/dist/services/unified-session-service.d.ts +7 -0
- package/dist/services/unified-session-service.d.ts.map +1 -1
- package/dist/services/unified-session-service.js +4 -0
- package/dist/services/unified-session-service.js.map +1 -1
- package/dist/session.d.ts +29 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +119 -6
- package/dist/session.js.map +1 -1
- package/dist/tmux-manager.d.ts +2 -1
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +45 -5
- package/dist/tmux-manager.js.map +1 -1
- package/dist/types/session.d.ts +15 -4
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/omp-cli-resolver.d.ts +50 -0
- package/dist/utils/omp-cli-resolver.d.ts.map +1 -0
- package/dist/utils/omp-cli-resolver.js +123 -0
- package/dist/utils/omp-cli-resolver.js.map +1 -0
- package/dist/utils/omp-session-resolver.d.ts +55 -0
- package/dist/utils/omp-session-resolver.d.ts.map +1 -0
- package/dist/utils/omp-session-resolver.js +195 -0
- package/dist/utils/omp-session-resolver.js.map +1 -0
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/{app.3734fd6f.js → app.616de349.js} +7 -7
- package/dist/web/public/app.616de349.js.br +0 -0
- package/dist/web/public/app.616de349.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/constants.f4ea0a19.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js +1 -0
- package/dist/web/public/home-sessions.js.br +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/i18n.9ae15b51.js.gz +0 -0
- package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
- package/dist/web/public/index.html +17 -8
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.87f14251.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.0454a3e9.js.gz +0 -0
- package/dist/web/public/mobile-handlers.0f83a608.js.gz +0 -0
- package/dist/web/public/mobile-overview.js +2 -1
- package/dist/web/public/mobile-overview.js.br +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.87674154.css +1 -0
- package/dist/web/public/mobile.87674154.css.br +0 -0
- package/dist/web/public/mobile.87674154.css.gz +0 -0
- package/dist/web/public/notification-manager.5d229063.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.344de87d.js → panels-ui.e6e06034.js} +2 -2
- package/dist/web/public/panels-ui.e6e06034.js.br +0 -0
- package/dist/web/public/panels-ui.e6e06034.js.gz +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/session-ui.c558f981.js +68 -0
- package/dist/web/public/session-ui.c558f981.js.br +0 -0
- package/dist/web/public/session-ui.c558f981.js.gz +0 -0
- package/dist/web/public/{settings-ui.3261b896.js → settings-ui.2a814a17.js} +1 -1
- package/dist/web/public/settings-ui.2a814a17.js.br +0 -0
- package/dist/web/public/settings-ui.2a814a17.js.gz +0 -0
- package/dist/web/public/styles.dd7e411f.css +1 -0
- package/dist/web/public/styles.dd7e411f.css.br +0 -0
- package/dist/web/public/styles.dd7e411f.css.gz +0 -0
- package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
- package/dist/web/public/{terminal-ui.5e0c230c.js → terminal-ui.70445f81.js} +2 -2
- package/dist/web/public/terminal-ui.70445f81.js.br +0 -0
- package/dist/web/public/terminal-ui.70445f81.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.4ec670b0.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/route-helpers.d.ts +13 -1
- package/dist/web/route-helpers.d.ts.map +1 -1
- package/dist/web/route-helpers.js +32 -6
- package/dist/web/route-helpers.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts +14 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +121 -19
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/system-routes.d.ts.map +1 -1
- package/dist/web/routes/system-routes.js +9 -0
- package/dist/web/routes/system-routes.js.map +1 -1
- package/dist/web/schemas.d.ts +14 -0
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +29 -4
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +4 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/skills/codeman/SKILL.md +1 -1
- package/skills/codeman/reference/endpoints.md +12 -12
- package/skills/codeman/reference/messaging.md +2 -2
- package/skills/codeman/reference/recipes.md +1 -1
- package/skills/codeman/reference/verbs.md +3 -3
- package/dist/web/public/app.3734fd6f.js.br +0 -0
- package/dist/web/public/app.3734fd6f.js.gz +0 -0
- package/dist/web/public/mobile.cab92e3f.css +0 -1
- package/dist/web/public/mobile.cab92e3f.css.br +0 -0
- package/dist/web/public/mobile.cab92e3f.css.gz +0 -0
- package/dist/web/public/panels-ui.344de87d.js.br +0 -0
- package/dist/web/public/panels-ui.344de87d.js.gz +0 -0
- package/dist/web/public/session-ui.103656d3.js +0 -68
- package/dist/web/public/session-ui.103656d3.js.br +0 -0
- package/dist/web/public/session-ui.103656d3.js.gz +0 -0
- package/dist/web/public/settings-ui.3261b896.js.br +0 -0
- package/dist/web/public/settings-ui.3261b896.js.gz +0 -0
- package/dist/web/public/styles.0d71ea9a.css +0 -1
- package/dist/web/public/styles.0d71ea9a.css.br +0 -0
- package/dist/web/public/styles.0d71ea9a.css.gz +0 -0
- package/dist/web/public/terminal-ui.5e0c230c.js.br +0 -0
- package/dist/web/public/terminal-ui.5e0c230c.js.gz +0 -0
package/dist/types/session.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - SessionConfig — creation-time config (id, workingDir, createdAt)
|
|
9
9
|
* - SessionOutput — captured stdout/stderr/exitCode
|
|
10
10
|
* - SessionStatus — 'idle' | 'busy' | 'stopped' | 'error'
|
|
11
|
-
* - SessionMode — 'claude' | 'shell' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' (which CLI backend)
|
|
11
|
+
* - SessionMode — 'claude' | 'shell' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' | 'omp' (which CLI backend)
|
|
12
12
|
* - ClaudeMode — CLI permission mode ('dangerously-skip-permissions' | 'auto' | 'normal' | 'allowedTools')
|
|
13
13
|
* - SessionColor — visual differentiation color
|
|
14
14
|
* - OpenCodeConfig — OpenCode-specific settings (model, autoAllowTools, continueSession)
|
|
@@ -42,8 +42,8 @@ export type SessionStatus = 'idle' | 'busy' | 'stopped' | 'error';
|
|
|
42
42
|
*/
|
|
43
43
|
export type ClaudeMode = 'dangerously-skip-permissions' | 'auto' | 'normal' | 'allowedTools';
|
|
44
44
|
/** Session mode: which CLI backend a session runs */
|
|
45
|
-
export type SessionMode = 'claude' | 'shell' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek';
|
|
46
|
-
export type RemoteCommandMode = Extract<SessionMode, 'shell' | 'claude' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek'>;
|
|
45
|
+
export type SessionMode = 'claude' | 'shell' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' | 'omp';
|
|
46
|
+
export type RemoteCommandMode = Extract<SessionMode, 'shell' | 'claude' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' | 'omp'>;
|
|
47
47
|
/**
|
|
48
48
|
* Advanced SSH connection options shared by RemoteHost and SessionRemote.
|
|
49
49
|
*
|
|
@@ -134,7 +134,7 @@ export interface RemoteSessionInfo {
|
|
|
134
134
|
windows: number;
|
|
135
135
|
}
|
|
136
136
|
/** Which CLI backends a Docker case can run (same set as remote). */
|
|
137
|
-
export type DockerCommandMode = Extract<SessionMode, 'shell' | 'claude' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek'>;
|
|
137
|
+
export type DockerCommandMode = Extract<SessionMode, 'shell' | 'claude' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' | 'omp'>;
|
|
138
138
|
/** Container engine. Docker and Podman differ in the uid/userns + host-gateway alias. */
|
|
139
139
|
export type DockerEngine = 'docker' | 'podman';
|
|
140
140
|
/**
|
|
@@ -291,6 +291,15 @@ export interface AntigravityConfig {
|
|
|
291
291
|
/** Resume a previous conversation by ID (passed via --conversation). */
|
|
292
292
|
resumeConversationId?: string;
|
|
293
293
|
}
|
|
294
|
+
/** OMP CLI session configuration */
|
|
295
|
+
export interface OmpConfig {
|
|
296
|
+
/** Model identifier (e.g., "crof/glm-5.2"). Passed via --model. */
|
|
297
|
+
model?: string;
|
|
298
|
+
/** Resume a previous conversation (passed via --resume). */
|
|
299
|
+
resumeSessionId?: string;
|
|
300
|
+
/** Continue the most recent session in this directory (passed via --continue). */
|
|
301
|
+
continueSession?: boolean;
|
|
302
|
+
}
|
|
294
303
|
/**
|
|
295
304
|
* Pi CLI (pi.dev) session configuration.
|
|
296
305
|
*
|
|
@@ -563,6 +572,8 @@ export interface SessionState {
|
|
|
563
572
|
grokConfig?: GrokConfig;
|
|
564
573
|
/** DeepSeek Harness configuration (only for mode === 'deepseek') */
|
|
565
574
|
deepSeekConfig?: DeepSeekConfig;
|
|
575
|
+
/** OMP-specific configuration (only for mode === 'omp') */
|
|
576
|
+
ompConfig?: OmpConfig;
|
|
566
577
|
/** Claude conversation session ID to resume after reboot (set by restore script) */
|
|
567
578
|
resumeSessionId?: string;
|
|
568
579
|
/** Claude CLI effort level (soft default via --settings, switchable in-session via /effort) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,iCAAiC;AACjC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,8BAA8B,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE7F,qDAAqD;AACrD,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,OAAO,GACP,UAAU,GACV,OAAO,GACP,QAAQ,GACR,aAAa,GACb,IAAI,GACJ,MAAM,GACN,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"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"}
|
package/dist/types/session.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - SessionConfig — creation-time config (id, workingDir, createdAt)
|
|
9
9
|
* - SessionOutput — captured stdout/stderr/exitCode
|
|
10
10
|
* - SessionStatus — 'idle' | 'busy' | 'stopped' | 'error'
|
|
11
|
-
* - SessionMode — 'claude' | 'shell' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' (which CLI backend)
|
|
11
|
+
* - SessionMode — 'claude' | 'shell' | 'opencode' | 'codex' | 'gemini' | 'antigravity' | 'pi' | 'grok' | 'deepseek' | 'omp' (which CLI backend)
|
|
12
12
|
* - ClaudeMode — CLI permission mode ('dangerously-skip-permissions' | 'auto' | 'normal' | 'allowedTools')
|
|
13
13
|
* - SessionColor — visual differentiation color
|
|
14
14
|
* - OpenCodeConfig — OpenCode-specific settings (model, autoAllowTools, continueSession)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/types/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA0PH;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AAK7F,qDAAqD;AACrD,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,KAAK,KAAK,SAAS,IAAK,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AA4WD;;GAEG"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -30,4 +30,5 @@ export { resolveDeepSeekDir, isDeepSeekAvailable, isDeepSeekRunnable, getDeepSee
|
|
|
30
30
|
export type { DeepSeekProfile, DeepSeekProfileKind } from './deepseek-cli-resolver.js';
|
|
31
31
|
export { compileFileQuery, matchFileQuery } from './file-query.js';
|
|
32
32
|
export type { FileQueryMatcher } from './file-query.js';
|
|
33
|
+
export { resolveOmpDir, isOmpAvailable, getOmpNotFoundMessage, getOmpCliVersion } from './omp-cli-resolver.js';
|
|
33
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -27,4 +27,5 @@ export { resolvePiDir, isPiAvailable, getPiCliVersion, getPiNotFoundMessage } fr
|
|
|
27
27
|
export { resolveGrokDir, isGrokAvailable, getGrokCliVersion, getGrokNotFoundMessage } from './grok-cli-resolver.js';
|
|
28
28
|
export { resolveDeepSeekDir, isDeepSeekAvailable, isDeepSeekRunnable, getDeepSeekCliVersion, getDeepSeekNotFoundMessage, listDeepSeekProfiles, resolveDefaultDeepSeekProfile, isLaunchableProfile, resolveDshHome, profileExists, } from './deepseek-cli-resolver.js';
|
|
29
29
|
export { compileFileQuery, matchFileQuery } from './file-query.js';
|
|
30
|
+
export { resolveOmpDir, isOmpAvailable, getOmpNotFoundMessage, getOmpCliVersion } from './omp-cli-resolver.js';
|
|
30
31
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACpH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Resolve the OMP CLI binary across common install paths.
|
|
3
|
+
*
|
|
4
|
+
* Uses the shared `createCliExecutableResolver` (cli-executable-resolver.ts),
|
|
5
|
+
* same as the sibling claude/opencode/codex/gemini/antigravity/pi resolvers:
|
|
6
|
+
* server process PATH first, then common install directories, then — last,
|
|
7
|
+
* because it is the only step that spawns anything — an interactive login
|
|
8
|
+
* shell, which is what finds nvm/Homebrew/user-npm installs when Codeman runs
|
|
9
|
+
* as a systemd/launchd service with a minimal PATH.
|
|
10
|
+
*
|
|
11
|
+
* Provides an augmented PATH directory for tmux sessions.
|
|
12
|
+
*
|
|
13
|
+
* @module utils/omp-cli-resolver
|
|
14
|
+
*/
|
|
15
|
+
import { type CliResolverHost } from './cli-executable-resolver.js';
|
|
16
|
+
/**
|
|
17
|
+
* A real `omp --version` prints `omp/<semver>` (e.g. `omp/17.4.0`).
|
|
18
|
+
*
|
|
19
|
+
* Shape mirrors PI_VERSION_REGEX: a capturing group and a leading boundary so
|
|
20
|
+
* `omp/17.4.0` matches while an unrelated `omp` (some other program) does not.
|
|
21
|
+
*/
|
|
22
|
+
export declare const OMP_VERSION_REGEX: RegExp;
|
|
23
|
+
type OmpVersionProbe = (binPath: string) => string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Creates an isolated OMP wrapper around an injected host, version probe and
|
|
26
|
+
* clock. Omitting `versionProbe` keeps the ambient (VITEST-gated) probe, which
|
|
27
|
+
* is exactly what the hermeticity test exercises.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createOmpResolverForTest(host: CliResolverHost, versionProbe?: OmpVersionProbe, now?: () => number): import("./cli-executable-resolver.js").CliExecutableResolver<string>;
|
|
30
|
+
/**
|
|
31
|
+
* Finds the directory containing a verified `omp` binary.
|
|
32
|
+
* Checks `which omp` first, then falls back to common install locations. Every
|
|
33
|
+
* candidate must pass the `omp --version` sanity probe before it is accepted.
|
|
34
|
+
*
|
|
35
|
+
* @returns Directory path, or null if not found
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveOmpDir(): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Check if the OMP CLI is available on the system.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isOmpAvailable(): boolean;
|
|
42
|
+
export declare function getOmpNotFoundMessage(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Version reported by the resolved `omp` binary, or null when omp is
|
|
45
|
+
* unavailable. Surfaced through `GET /api/omp/status` so a misresolution is
|
|
46
|
+
* diagnosable from the UI.
|
|
47
|
+
*/
|
|
48
|
+
export declare function getOmpCliVersion(): string | null;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=omp-cli-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-cli-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/omp-cli-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAkBtC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAiC,CAAC;AAmChE,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAqB1D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,MAAM,wEAEjH;AAID;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Resolve the OMP CLI binary across common install paths.
|
|
3
|
+
*
|
|
4
|
+
* Uses the shared `createCliExecutableResolver` (cli-executable-resolver.ts),
|
|
5
|
+
* same as the sibling claude/opencode/codex/gemini/antigravity/pi resolvers:
|
|
6
|
+
* server process PATH first, then common install directories, then — last,
|
|
7
|
+
* because it is the only step that spawns anything — an interactive login
|
|
8
|
+
* shell, which is what finds nvm/Homebrew/user-npm installs when Codeman runs
|
|
9
|
+
* as a systemd/launchd service with a minimal PATH.
|
|
10
|
+
*
|
|
11
|
+
* Provides an augmented PATH directory for tmux sessions.
|
|
12
|
+
*
|
|
13
|
+
* @module utils/omp-cli-resolver
|
|
14
|
+
*/
|
|
15
|
+
import { execFileSync } from 'node:child_process';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
import { homedir } from 'node:os';
|
|
18
|
+
import { EXEC_TIMEOUT_MS } from '../config/exec-timeout.js';
|
|
19
|
+
import { createCliExecutableResolver, formatCliNotFoundMessage, } from './cli-executable-resolver.js';
|
|
20
|
+
/**
|
|
21
|
+
* Common directories where the OMP CLI binary may be installed. `~/.local/bin`
|
|
22
|
+
* leads: omp.sh's installer targets `$HOME/.local/bin` with no `--dir`
|
|
23
|
+
* override (verified against a real `--no-cache` Docker build — see
|
|
24
|
+
* docker/agent.Dockerfile); `~/.omp/bin` was an unverified guess that turned
|
|
25
|
+
* out wrong, kept after `~/.local/bin` only as a defensive fallback.
|
|
26
|
+
*/
|
|
27
|
+
const OMP_SEARCH_DIRS = [
|
|
28
|
+
join(homedir(), '.local', 'bin'),
|
|
29
|
+
join(homedir(), '.omp', 'bin'),
|
|
30
|
+
'/usr/local/bin',
|
|
31
|
+
join(homedir(), '.bun', 'bin'),
|
|
32
|
+
join(homedir(), '.npm-global', 'bin'),
|
|
33
|
+
join(homedir(), 'bin'),
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* A real `omp --version` prints `omp/<semver>` (e.g. `omp/17.4.0`).
|
|
37
|
+
*
|
|
38
|
+
* Shape mirrors PI_VERSION_REGEX: a capturing group and a leading boundary so
|
|
39
|
+
* `omp/17.4.0` matches while an unrelated `omp` (some other program) does not.
|
|
40
|
+
*/
|
|
41
|
+
export const OMP_VERSION_REGEX = /(?:^|\s)omp\/(\d+\.\d+\.\d+)/;
|
|
42
|
+
const OMP_NOT_FOUND = 'OMP CLI not found. Install with: curl -fsSL https://omp.sh/install | sh';
|
|
43
|
+
/**
|
|
44
|
+
* Run `omp --version` on a candidate path and return the trimmed version when
|
|
45
|
+
* it looks like the coding agent. Returns null for anything else — a missing
|
|
46
|
+
* binary, a non-zero exit, a hang (timeout), or output that is not
|
|
47
|
+
* `omp/<semver>`-shaped (which is how an unrelated `omp` on PATH gets rejected).
|
|
48
|
+
*
|
|
49
|
+
* Never runs under vitest: the suites must stay hermetic and must not depend on
|
|
50
|
+
* whether the dev box happens to have omp installed. The shared resolver host
|
|
51
|
+
* is already inert under vitest, so this gate is defense in depth for any
|
|
52
|
+
* opted-in host that still carries the default probe.
|
|
53
|
+
*/
|
|
54
|
+
function probeOmpVersion(binPath) {
|
|
55
|
+
if (process.env.VITEST)
|
|
56
|
+
return null;
|
|
57
|
+
try {
|
|
58
|
+
const out = execFileSync(binPath, ['--version'], {
|
|
59
|
+
encoding: 'utf-8',
|
|
60
|
+
timeout: EXEC_TIMEOUT_MS,
|
|
61
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
62
|
+
// A stuck or hostile `omp` that ignores SIGTERM would survive the timeout
|
|
63
|
+
// and block the server (execFileSync keeps waiting after the signal).
|
|
64
|
+
killSignal: 'SIGKILL',
|
|
65
|
+
}).trim();
|
|
66
|
+
const candidate = OMP_VERSION_REGEX.exec(out)?.[1];
|
|
67
|
+
if (candidate)
|
|
68
|
+
return candidate;
|
|
69
|
+
console.warn(`[OmpResolver] Ignoring ${binPath}: "omp --version" printed ${JSON.stringify(out.slice(0, 80))}`);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.warn(`[OmpResolver] Ignoring ${binPath}: "omp --version" failed (${err.message})`);
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
function createOmpResolver(host, versionProbe = probeOmpVersion, now) {
|
|
77
|
+
return createCliExecutableResolver({
|
|
78
|
+
binary: 'omp',
|
|
79
|
+
searchDirs: OMP_SEARCH_DIRS,
|
|
80
|
+
validateCandidate: (binPath) => {
|
|
81
|
+
const version = versionProbe(binPath);
|
|
82
|
+
return version ? { accepted: true, metadata: version } : { accepted: false };
|
|
83
|
+
},
|
|
84
|
+
now,
|
|
85
|
+
}, host);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Creates an isolated OMP wrapper around an injected host, version probe and
|
|
89
|
+
* clock. Omitting `versionProbe` keeps the ambient (VITEST-gated) probe, which
|
|
90
|
+
* is exactly what the hermeticity test exercises.
|
|
91
|
+
*/
|
|
92
|
+
export function createOmpResolverForTest(host, versionProbe, now) {
|
|
93
|
+
return createOmpResolver(host, versionProbe ?? probeOmpVersion, now);
|
|
94
|
+
}
|
|
95
|
+
const ompResolver = createOmpResolver();
|
|
96
|
+
/**
|
|
97
|
+
* Finds the directory containing a verified `omp` binary.
|
|
98
|
+
* Checks `which omp` first, then falls back to common install locations. Every
|
|
99
|
+
* candidate must pass the `omp --version` sanity probe before it is accepted.
|
|
100
|
+
*
|
|
101
|
+
* @returns Directory path, or null if not found
|
|
102
|
+
*/
|
|
103
|
+
export function resolveOmpDir() {
|
|
104
|
+
return ompResolver.resolve()?.directory ?? null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if the OMP CLI is available on the system.
|
|
108
|
+
*/
|
|
109
|
+
export function isOmpAvailable() {
|
|
110
|
+
return resolveOmpDir() !== null;
|
|
111
|
+
}
|
|
112
|
+
export function getOmpNotFoundMessage() {
|
|
113
|
+
return formatCliNotFoundMessage(OMP_NOT_FOUND, ompResolver.diagnostics());
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Version reported by the resolved `omp` binary, or null when omp is
|
|
117
|
+
* unavailable. Surfaced through `GET /api/omp/status` so a misresolution is
|
|
118
|
+
* diagnosable from the UI.
|
|
119
|
+
*/
|
|
120
|
+
export function getOmpCliVersion() {
|
|
121
|
+
return ompResolver.resolve()?.metadata ?? null;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=omp-cli-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-cli-resolver.js","sourceRoot":"","sources":["../../src/utils/omp-cli-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,eAAe,GAAG;IACtB,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;IAC9B,gBAAgB;IAChB,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAEhE,MAAM,aAAa,GAAG,yEAAyE,CAAC;AAEhG;;;;;;;;;;GAUG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;YAC/C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,0EAA0E;YAC1E,sEAAsE;YACtE,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,0BAA0B,OAAO,6BAA6B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,0BAA0B,OAAO,6BAA8B,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAID,SAAS,iBAAiB,CACxB,IAAsB,EACtB,eAAgC,eAAe,EAC/C,GAAkB;IAElB,OAAO,2BAA2B,CAChC;QACE,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC/E,CAAC;QACD,GAAG;KACJ,EACD,IAAI,CACL,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAqB,EAAE,YAA8B,EAAE,GAAkB;IAChH,OAAO,iBAAiB,CAAC,IAAI,EAAE,YAAY,IAAI,eAAe,EAAE,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,SAAS,IAAI,IAAI,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,aAAa,EAAE,KAAK,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,wBAAwB,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Resolve the real OMP session id for a working directory, so a
|
|
3
|
+
* relaunch can pass `--resume <id>` instead of the ambiguous `--continue`.
|
|
4
|
+
*
|
|
5
|
+
* `omp` persists each conversation as its own file under
|
|
6
|
+
* `~/.omp/agent/sessions/<mangled-workingDir>/<ISO-timestamp>_<session-uuid>.jsonl`
|
|
7
|
+
* (workingDir mangled the same way Claude Code mangles `~/.claude/projects/*`:
|
|
8
|
+
* every `/` replaced with `-`). `--continue` picks whichever file in that
|
|
9
|
+
* directory is newest, which silently drifts to the WRONG conversation the
|
|
10
|
+
* moment two Codeman sessions ever touch the same directory — exactly what a
|
|
11
|
+
* closed-then-resumed row plus a still-running duplicate produces. Resolving
|
|
12
|
+
* the id once and pinning it with `--resume` removes that ambiguity for every
|
|
13
|
+
* later relaunch of the same Codeman session.
|
|
14
|
+
*
|
|
15
|
+
* @module utils/omp-session-resolver
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Mirrors `omp`'s own directory mangling. Confirmed empirically against real
|
|
19
|
+
* `~/.omp/agent/sessions/` directory names (2026-08-27): unlike Claude Code's
|
|
20
|
+
* `~/.claude/projects/*`, which keeps the home prefix (`-home-user-dev-foo`),
|
|
21
|
+
* omp collapses a home-relative workingDir to its home-relative remainder
|
|
22
|
+
* FIRST (`/home/user/dev/foo` -> `/dev/foo`) and only then dash-replaces
|
|
23
|
+
* (`-dev-foo`) — a path outside $HOME (e.g. `/tmp/...`) is dash-replaced as-is.
|
|
24
|
+
* Getting this wrong doesn't error, it just silently returns an empty
|
|
25
|
+
* directory listing: findLatestOmpSessionId() below then always falls through
|
|
26
|
+
* to null, so continuation pinning quietly degrades to omp's own ambiguous
|
|
27
|
+
* `--continue` for every case under $HOME (i.e. virtually all real Codeman
|
|
28
|
+
* cases) while appearing to work in `/tmp`-based manual testing.
|
|
29
|
+
* Pure so it's unit-testable without touching the filesystem.
|
|
30
|
+
*/
|
|
31
|
+
export declare function mangleOmpWorkingDir(workingDir: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Newest OMP session id for this working directory, or null when the
|
|
34
|
+
* directory doesn't exist yet (never launched) or holds no session files.
|
|
35
|
+
*
|
|
36
|
+
* Deliberately "newest file, full stop" rather than a time-windowed match:
|
|
37
|
+
* callers only invoke this at a moment where that's unambiguous by
|
|
38
|
+
* construction — right after the file that answers it was the only thing
|
|
39
|
+
* that could have just been written (a dead pane's process already exited,
|
|
40
|
+
* or a session being resumed has no live sibling in the same directory yet).
|
|
41
|
+
*/
|
|
42
|
+
export declare function findLatestOmpSessionId(workingDir: string): string | null;
|
|
43
|
+
/**
|
|
44
|
+
* Safe variant of {@link findLatestOmpSessionId} for callers where two omp
|
|
45
|
+
* sessions CAN share the same case directory — a dead-pane respawn, a
|
|
46
|
+
* boot-recovery reattach, or a first-idle capture — instead of the narrower
|
|
47
|
+
* cases where "newest file" is unambiguous by construction. Verifies each
|
|
48
|
+
* candidate's own header `cwd` against `workingDir` (mangling is a lossy
|
|
49
|
+
* one-way transform — see {@link mangleOmpWorkingDir} — so trusting the
|
|
50
|
+
* filename-derived id alone isn't enough) and skips any id a sibling session
|
|
51
|
+
* has already claimed. Claims the id it returns so a concurrent caller
|
|
52
|
+
* resolving the same directory in the same tick can't double-claim it.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveAndClaimOmpSessionId(workingDir: string): string | null;
|
|
55
|
+
//# sourceMappingURL=omp-session-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-session-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/omp-session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAY9D;AAaD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0BxE;AAqDD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B7E"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Resolve the real OMP session id for a working directory, so a
|
|
3
|
+
* relaunch can pass `--resume <id>` instead of the ambiguous `--continue`.
|
|
4
|
+
*
|
|
5
|
+
* `omp` persists each conversation as its own file under
|
|
6
|
+
* `~/.omp/agent/sessions/<mangled-workingDir>/<ISO-timestamp>_<session-uuid>.jsonl`
|
|
7
|
+
* (workingDir mangled the same way Claude Code mangles `~/.claude/projects/*`:
|
|
8
|
+
* every `/` replaced with `-`). `--continue` picks whichever file in that
|
|
9
|
+
* directory is newest, which silently drifts to the WRONG conversation the
|
|
10
|
+
* moment two Codeman sessions ever touch the same directory — exactly what a
|
|
11
|
+
* closed-then-resumed row plus a still-running duplicate produces. Resolving
|
|
12
|
+
* the id once and pinning it with `--resume` removes that ambiguity for every
|
|
13
|
+
* later relaunch of the same Codeman session.
|
|
14
|
+
*
|
|
15
|
+
* @module utils/omp-session-resolver
|
|
16
|
+
*/
|
|
17
|
+
import { closeSync, openSync, readdirSync, readSync, statSync } from 'node:fs';
|
|
18
|
+
import { homedir } from 'node:os';
|
|
19
|
+
import { join, sep } from 'node:path';
|
|
20
|
+
/** A real OMP session file is `<ISO-ish-timestamp>_<uuid>.jsonl`; only the uuid matters here. */
|
|
21
|
+
const OMP_SESSION_FILE_PATTERN = /^.+_([a-zA-Z0-9-]+)\.jsonl$/;
|
|
22
|
+
/**
|
|
23
|
+
* Mirrors `omp`'s own directory mangling. Confirmed empirically against real
|
|
24
|
+
* `~/.omp/agent/sessions/` directory names (2026-08-27): unlike Claude Code's
|
|
25
|
+
* `~/.claude/projects/*`, which keeps the home prefix (`-home-user-dev-foo`),
|
|
26
|
+
* omp collapses a home-relative workingDir to its home-relative remainder
|
|
27
|
+
* FIRST (`/home/user/dev/foo` -> `/dev/foo`) and only then dash-replaces
|
|
28
|
+
* (`-dev-foo`) — a path outside $HOME (e.g. `/tmp/...`) is dash-replaced as-is.
|
|
29
|
+
* Getting this wrong doesn't error, it just silently returns an empty
|
|
30
|
+
* directory listing: findLatestOmpSessionId() below then always falls through
|
|
31
|
+
* to null, so continuation pinning quietly degrades to omp's own ambiguous
|
|
32
|
+
* `--continue` for every case under $HOME (i.e. virtually all real Codeman
|
|
33
|
+
* cases) while appearing to work in `/tmp`-based manual testing.
|
|
34
|
+
* Pure so it's unit-testable without touching the filesystem.
|
|
35
|
+
*/
|
|
36
|
+
export function mangleOmpWorkingDir(workingDir) {
|
|
37
|
+
// UNVERIFIED EDGE CASE: if $HOME is itself a symlink, this compares against
|
|
38
|
+
// the literal homedir() string, not a realpath()-resolved one. Whether that
|
|
39
|
+
// matches omp's own behavior is unconfirmed — we only empirically verified
|
|
40
|
+
// omp strips a literal $HOME prefix (2026-08-27), not that it canonicalizes
|
|
41
|
+
// symlinks first. Do not "fix" this with realpathSync() without confirming
|
|
42
|
+
// omp's actual behavior on a symlinked-home setup; guessing wrong here would
|
|
43
|
+
// trade one silent mismatch for a different one.
|
|
44
|
+
const home = homedir();
|
|
45
|
+
const relative = workingDir === home || workingDir.startsWith(home + sep) ? workingDir.slice(home.length) : workingDir;
|
|
46
|
+
return relative.replace(/\//g, '-');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* `~/.omp` — omp's own env overrides are mostly `PI_*` (shared with pi mode, already
|
|
50
|
+
* allowlisted in schemas.ts), and `PI_CONFIG_DIR` in particular can move this root.
|
|
51
|
+
* That is not honored here: a session with a redirected `PI_CONFIG_DIR` silently
|
|
52
|
+
* degrades pinning/history to omp's own ambiguous `--continue` instead of erroring,
|
|
53
|
+
* a known gap (found in Ark0N/Codeman#353 review) shared with pi and not fixed here.
|
|
54
|
+
*/
|
|
55
|
+
function resolveOmpHome() {
|
|
56
|
+
return join(homedir(), '.omp');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Newest OMP session id for this working directory, or null when the
|
|
60
|
+
* directory doesn't exist yet (never launched) or holds no session files.
|
|
61
|
+
*
|
|
62
|
+
* Deliberately "newest file, full stop" rather than a time-windowed match:
|
|
63
|
+
* callers only invoke this at a moment where that's unambiguous by
|
|
64
|
+
* construction — right after the file that answers it was the only thing
|
|
65
|
+
* that could have just been written (a dead pane's process already exited,
|
|
66
|
+
* or a session being resumed has no live sibling in the same directory yet).
|
|
67
|
+
*/
|
|
68
|
+
export function findLatestOmpSessionId(workingDir) {
|
|
69
|
+
const dir = join(resolveOmpHome(), 'agent', 'sessions', mangleOmpWorkingDir(workingDir));
|
|
70
|
+
let entries;
|
|
71
|
+
try {
|
|
72
|
+
entries = readdirSync(dir);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
let newestMtime = -Infinity;
|
|
78
|
+
let newestId = null;
|
|
79
|
+
for (const entry of entries) {
|
|
80
|
+
const match = OMP_SESSION_FILE_PATTERN.exec(entry);
|
|
81
|
+
if (!match)
|
|
82
|
+
continue;
|
|
83
|
+
let mtimeMs;
|
|
84
|
+
try {
|
|
85
|
+
mtimeMs = statSync(join(dir, entry)).mtimeMs;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (mtimeMs > newestMtime) {
|
|
91
|
+
newestMtime = mtimeMs;
|
|
92
|
+
newestId = match[1];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return newestId;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The session header line is always near the top of the file (the
|
|
99
|
+
* transcript's own "second line" — see omp-transcript.ts), so identifying a
|
|
100
|
+
* file never needs reading the whole thing (up to multi-MB, per that same
|
|
101
|
+
* module's size cap). Bounded read only.
|
|
102
|
+
*/
|
|
103
|
+
const HEADER_READ_BYTES = 8 * 1024;
|
|
104
|
+
function readOmpSessionHeader(filePath) {
|
|
105
|
+
let raw;
|
|
106
|
+
try {
|
|
107
|
+
const fd = openSync(filePath, 'r');
|
|
108
|
+
try {
|
|
109
|
+
const buf = Buffer.alloc(HEADER_READ_BYTES);
|
|
110
|
+
const bytesRead = readSync(fd, buf, 0, HEADER_READ_BYTES, 0);
|
|
111
|
+
raw = buf.toString('utf-8', 0, bytesRead);
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
closeSync(fd);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
for (const line of raw.split('\n')) {
|
|
121
|
+
if (!line)
|
|
122
|
+
continue;
|
|
123
|
+
let entry;
|
|
124
|
+
try {
|
|
125
|
+
entry = JSON.parse(line);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (!entry || typeof entry !== 'object')
|
|
131
|
+
continue;
|
|
132
|
+
const e = entry;
|
|
133
|
+
if (e.type === 'session' && typeof e.id === 'string' && typeof e.cwd === 'string') {
|
|
134
|
+
return { id: e.id, cwd: e.cwd };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Process-wide registry of OMP session ids already pinned to a live Codeman
|
|
141
|
+
* session. Two omp tabs in the same case dir (`w1-foo`, `w2-foo`) resolve
|
|
142
|
+
* against the SAME directory on disk — without this, both could pick the
|
|
143
|
+
* newest file and alias onto each other's conversation (found in upstream PR
|
|
144
|
+
* review, Ark0N/Codeman#353). Never released: this holds at most a handful of
|
|
145
|
+
* short ids per real omp conversation ever pinned in this process's lifetime,
|
|
146
|
+
* immaterial memory even after weeks of uptime — correctness here matters
|
|
147
|
+
* more than reclaiming it.
|
|
148
|
+
*/
|
|
149
|
+
const claimedOmpSessionIds = new Set();
|
|
150
|
+
/**
|
|
151
|
+
* Safe variant of {@link findLatestOmpSessionId} for callers where two omp
|
|
152
|
+
* sessions CAN share the same case directory — a dead-pane respawn, a
|
|
153
|
+
* boot-recovery reattach, or a first-idle capture — instead of the narrower
|
|
154
|
+
* cases where "newest file" is unambiguous by construction. Verifies each
|
|
155
|
+
* candidate's own header `cwd` against `workingDir` (mangling is a lossy
|
|
156
|
+
* one-way transform — see {@link mangleOmpWorkingDir} — so trusting the
|
|
157
|
+
* filename-derived id alone isn't enough) and skips any id a sibling session
|
|
158
|
+
* has already claimed. Claims the id it returns so a concurrent caller
|
|
159
|
+
* resolving the same directory in the same tick can't double-claim it.
|
|
160
|
+
*/
|
|
161
|
+
export function resolveAndClaimOmpSessionId(workingDir) {
|
|
162
|
+
const dir = join(resolveOmpHome(), 'agent', 'sessions', mangleOmpWorkingDir(workingDir));
|
|
163
|
+
let entries;
|
|
164
|
+
try {
|
|
165
|
+
entries = readdirSync(dir);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
let newestMtime = -Infinity;
|
|
171
|
+
let newestId = null;
|
|
172
|
+
for (const entry of entries) {
|
|
173
|
+
if (!OMP_SESSION_FILE_PATTERN.test(entry))
|
|
174
|
+
continue;
|
|
175
|
+
const filePath = join(dir, entry);
|
|
176
|
+
let mtimeMs;
|
|
177
|
+
try {
|
|
178
|
+
mtimeMs = statSync(filePath).mtimeMs;
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (mtimeMs <= newestMtime)
|
|
184
|
+
continue;
|
|
185
|
+
const header = readOmpSessionHeader(filePath);
|
|
186
|
+
if (!header || header.cwd !== workingDir || claimedOmpSessionIds.has(header.id))
|
|
187
|
+
continue;
|
|
188
|
+
newestMtime = mtimeMs;
|
|
189
|
+
newestId = header.id;
|
|
190
|
+
}
|
|
191
|
+
if (newestId)
|
|
192
|
+
claimedOmpSessionIds.add(newestId);
|
|
193
|
+
return newestId;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=omp-session-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omp-session-resolver.js","sourceRoot":"","sources":["../../src/utils/omp-session-resolver.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|