@polderlabs/bizar-omp 0.4.0 → 0.4.1
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 +28 -10
- package/dist/cli/agents.d.ts +6 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +137 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/doctor.d.ts +4 -4
- package/dist/cli/omb-invocation.d.ts +7 -0
- package/dist/cli/omb-invocation.d.ts.map +1 -0
- package/dist/cli/omb-invocation.js +27 -0
- package/dist/cli/omb-invocation.js.map +1 -0
- package/dist/cli/omb.js +10 -1
- package/dist/cli/omb.js.map +1 -1
- package/dist/extension.d.ts +3 -0
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +28 -4
- package/dist/extension.js.map +1 -1
- package/dist/omp/autonomous-settings.d.ts.map +1 -1
- package/dist/omp/autonomous-settings.js +6 -0
- package/dist/omp/autonomous-settings.js.map +1 -1
- package/dist/omp/compatibility.d.ts +5 -5
- package/dist/omp/compatibility.d.ts.map +1 -1
- package/dist/omp/compatibility.js +2 -2
- package/dist/omp/compatibility.js.map +1 -1
- package/dist/omp/model-role-assignment.d.ts +5 -0
- package/dist/omp/model-role-assignment.d.ts.map +1 -1
- package/dist/omp/model-role-assignment.js +18 -10
- package/dist/omp/model-role-assignment.js.map +1 -1
- package/dist/omp/omb-sessions.d.ts +18 -0
- package/dist/omp/omb-sessions.d.ts.map +1 -0
- package/dist/omp/omb-sessions.js +78 -0
- package/dist/omp/omb-sessions.js.map +1 -0
- package/dist/omp/tmux.d.ts +8 -3
- package/dist/omp/tmux.d.ts.map +1 -1
- package/dist/omp/tmux.js +97 -9
- package/dist/omp/tmux.js.map +1 -1
- package/docs/compatibility/baseline.json +28 -4
- package/docs/compatibility/supported-surfaces.json +30 -4
- package/docs/releases/0.4.1.md +13 -0
- package/docs/releases/native-stable.md +1 -1
- package/docs/releases/support-matrix.md +1 -1
- package/package.json +5 -2
- package/rules/bizar-native-omp.md +1 -0
- package/skills/bizar-omp/SKILL.md +6 -3
- package/skills/omp-native-development/SKILL.md +1 -1
- package/skills/omp-native-development/references/accuracy-and-versioning.md +2 -2
- package/skills/omp-native-development/references/source-manifest.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-role-assignment.d.ts","sourceRoot":"","sources":["../../src/omp/model-role-assignment.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"model-role-assignment.d.ts","sourceRoot":"","sources":["../../src/omp/model-role-assignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,15 +44,14 @@ export const BIZAR_ROLE_PROFILES = [
|
|
|
44
44
|
{ role: "bizar_verify", purpose: "reproducible checks and evidence", preference: "fast", minContextWindow: 32_000, requiresReasoning: true },
|
|
45
45
|
{ role: "bizar_docs", purpose: "documentation and release alignment", preference: "fast", minContextWindow: 32_000, requiresReasoning: false },
|
|
46
46
|
];
|
|
47
|
+
/**
|
|
48
|
+
* Kept as a small compatibility fallback for older OMP hosts that do not expose
|
|
49
|
+
* the native model catalog to extensions. Current OMP versions use the local
|
|
50
|
+
* planner instead, so `/bizar-models` does not spend a model turn on research.
|
|
51
|
+
*/
|
|
47
52
|
export const BIZAR_MODEL_ROLE_AGENT_PROMPT = [
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"Normalize catalog metadata defensively: thinking may be an array, scalar, structured object, or absent; never call .map unless the value is an array. Treat contextWindow, maxTokens, reasoning, input modalities, cost, provider, and model family as evidence, not assumptions.",
|
|
51
|
-
"Assign every bizar_* role to the best available selector for its purpose: orchestrator/default coordination (balanced), advisor (strong and preferably an independent family), common work and docs (fast), hard/research/plan/architect/review/security (strong, large context, reasoning), build (balanced), and verify (fast, reasoning). Prefer independent model families for the advisor, review, and security roles when the catalog supports it.",
|
|
52
|
-
"Build a complete mapping before writing settings. If a role has no eligible model, keep its existing selector, report it as unresolved, and do not silently substitute an invented or unresolvable model.",
|
|
53
|
-
"Apply the complete mapping through OMP's native model-role settings surface. Preserve every non-Bizar role, provider order, credentials, model tags unrelated to Bizar, and all unrelated settings. Do not edit this plugin, project files, or credential files.",
|
|
54
|
-
"Read back the modelRoles setting and resolve every Bizar selector through OMP's native resolver. If validation fails, restore only changes from this operation and report the exact failure.",
|
|
55
|
-
"Finish with a concise table containing role, selector, rationale, alternatives, unresolved roles, and the read-back health result. Do not claim a role is assigned unless the native resolver confirms it.",
|
|
53
|
+
"Use OMP's current available model catalog now and assign the best resolvable model to each existing bizar_* role.",
|
|
54
|
+
"Preserve non-Bizar roles and unrelated settings, make no project or credential changes, and report only a compact role-to-selector table plus unresolved roles.",
|
|
56
55
|
].join(" ");
|
|
57
56
|
const selectorFor = (model) => `${model.provider}/${model.id}`;
|
|
58
57
|
const hasTextInput = (model) => !model.input || model.input.length === 0 || model.input.includes("text");
|
|
@@ -62,8 +61,17 @@ function thinkingLevels(value) {
|
|
|
62
61
|
return value.filter((level) => typeof level === "string");
|
|
63
62
|
if (typeof value === "string")
|
|
64
63
|
return [value];
|
|
65
|
-
if (value && typeof value === "object")
|
|
66
|
-
|
|
64
|
+
if (value && typeof value === "object") {
|
|
65
|
+
const record = value;
|
|
66
|
+
for (const key of ["efforts", "levels"]) {
|
|
67
|
+
const levels = record[key];
|
|
68
|
+
if (Array.isArray(levels))
|
|
69
|
+
return levels.filter((level) => typeof level === "string");
|
|
70
|
+
}
|
|
71
|
+
if (record.effortMap && typeof record.effortMap === "object")
|
|
72
|
+
return Object.keys(record.effortMap);
|
|
73
|
+
return [record.minLevel, record.maxLevel].filter((level) => typeof level === "string");
|
|
74
|
+
}
|
|
67
75
|
return [];
|
|
68
76
|
}
|
|
69
77
|
const maxThinkingRank = (model) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-role-assignment.js","sourceRoot":"","sources":["../../src/omp/model-role-assignment.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"model-role-assignment.js","sourceRoot":"","sources":["../../src/omp/model-role-assignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const BIZAR_SESSION_PREFIX = "bizar-";
|
|
2
|
+
export type OmbSessionState = "attached" | "detached" | "dead";
|
|
3
|
+
export interface OmbSessionInfo {
|
|
4
|
+
name: string;
|
|
5
|
+
cwd: string;
|
|
6
|
+
project: string;
|
|
7
|
+
id: string;
|
|
8
|
+
state: OmbSessionState;
|
|
9
|
+
command: string;
|
|
10
|
+
pid: string;
|
|
11
|
+
createdAt?: number;
|
|
12
|
+
lastAttachedAt?: number;
|
|
13
|
+
}
|
|
14
|
+
/** Discover Bizar-owned tmux sessions without touching unrelated tmux sessions. */
|
|
15
|
+
export declare function listOmbSessions(cwd?: string, env?: NodeJS.ProcessEnv): Promise<OmbSessionInfo[]>;
|
|
16
|
+
/** Return the most recently attached live session for one exact project path. */
|
|
17
|
+
export declare function findLastOmbSession(cwd: string, env?: NodeJS.ProcessEnv): Promise<OmbSessionInfo | undefined>;
|
|
18
|
+
//# sourceMappingURL=omb-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omb-sessions.d.ts","sourceRoot":"","sources":["../../src/omp/omb-sessions.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAsCD,mFAAmF;AACnF,wBAAsB,eAAe,CACnC,GAAG,SAAgB,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,cAAc,EAAE,CAAC,CAiD3B;AAED,iFAAiF;AACjF,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAKrC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { basename } from "node:path";
|
|
3
|
+
export const BIZAR_SESSION_PREFIX = "bizar-";
|
|
4
|
+
function exitCode(code, signal) {
|
|
5
|
+
if (code !== null)
|
|
6
|
+
return code;
|
|
7
|
+
return signal ? 1 : 1;
|
|
8
|
+
}
|
|
9
|
+
function readTmux(command, args, cwd, env) {
|
|
10
|
+
const child = spawn(command, args, { cwd, env, stdio: ["ignore", "pipe", "ignore"] });
|
|
11
|
+
let output = "";
|
|
12
|
+
child.stdout?.setEncoding("utf8");
|
|
13
|
+
child.stdout?.on("data", chunk => { output += chunk; });
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
child.once("error", reject);
|
|
16
|
+
child.once("close", (code, signal) => resolve({ code: exitCode(code, signal), output }));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function sessionId(name) {
|
|
20
|
+
const match = name.match(/-[a-f0-9]{10}(?:-(.*))?$/);
|
|
21
|
+
return match?.[1] || "main";
|
|
22
|
+
}
|
|
23
|
+
function parsePane(output) {
|
|
24
|
+
const [dead, cwd, command, pid] = output.trim().split("\t");
|
|
25
|
+
return {
|
|
26
|
+
dead: dead === "1",
|
|
27
|
+
cwd: cwd || "?",
|
|
28
|
+
command: command || "?",
|
|
29
|
+
pid: pid || "?",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Discover Bizar-owned tmux sessions without touching unrelated tmux sessions. */
|
|
33
|
+
export async function listOmbSessions(cwd = process.cwd(), env = process.env) {
|
|
34
|
+
const tmux = env.BIZAR_TMUX_BIN || "tmux";
|
|
35
|
+
const childEnv = { ...env, BIZAR_OMP_NO_TMUX: "1" };
|
|
36
|
+
const sessions = await readTmux(tmux, ["list-sessions", "-F", "#{session_name}\t#{session_created}\t#{session_last_attached}\t#{session_attached}"], cwd, childEnv);
|
|
37
|
+
if (sessions.code !== 0)
|
|
38
|
+
return [];
|
|
39
|
+
const names = sessions.output
|
|
40
|
+
.split("\n")
|
|
41
|
+
.map(line => line.trim())
|
|
42
|
+
.filter(Boolean)
|
|
43
|
+
.map(line => line.split("\t"))
|
|
44
|
+
.filter(parts => parts[0]?.startsWith(BIZAR_SESSION_PREFIX))
|
|
45
|
+
.map(parts => ({
|
|
46
|
+
name: parts[0],
|
|
47
|
+
createdAt: Number.isFinite(Number(parts[1])) ? Number(parts[1]) : undefined,
|
|
48
|
+
lastAttachedAt: Number.isFinite(Number(parts[2])) ? Number(parts[2]) : undefined,
|
|
49
|
+
attached: parts[3] !== "0",
|
|
50
|
+
}));
|
|
51
|
+
const records = await Promise.all(names.map(async (session) => {
|
|
52
|
+
const pane = await readTmux(tmux, ["list-panes", "-t", session.name, "-F", "#{pane_dead}\t#{pane_current_path}\t#{pane_current_command}\t#{pane_pid}"], cwd, childEnv);
|
|
53
|
+
const details = parsePane(pane.output);
|
|
54
|
+
return {
|
|
55
|
+
name: session.name,
|
|
56
|
+
cwd: details.cwd,
|
|
57
|
+
project: details.cwd === "?" ? session.name.slice(BIZAR_SESSION_PREFIX.length) : basename(details.cwd),
|
|
58
|
+
id: sessionId(session.name),
|
|
59
|
+
state: details.dead ? "dead" : session.attached ? "attached" : "detached",
|
|
60
|
+
command: details.command,
|
|
61
|
+
pid: details.pid,
|
|
62
|
+
createdAt: session.createdAt,
|
|
63
|
+
lastAttachedAt: session.lastAttachedAt,
|
|
64
|
+
};
|
|
65
|
+
}));
|
|
66
|
+
return records.sort((a, b) => {
|
|
67
|
+
const stateRank = (state) => state === "dead" ? 2 : state === "attached" ? 0 : 1;
|
|
68
|
+
return stateRank(a.state) - stateRank(b.state) || a.project.localeCompare(b.project) || a.name.localeCompare(b.name);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** Return the most recently attached live session for one exact project path. */
|
|
72
|
+
export async function findLastOmbSession(cwd, env = process.env) {
|
|
73
|
+
const sessions = await listOmbSessions(cwd, env);
|
|
74
|
+
return sessions
|
|
75
|
+
.filter(session => session.cwd === cwd && session.state !== "dead")
|
|
76
|
+
.sort((a, b) => (b.lastAttachedAt ?? b.createdAt ?? 0) - (a.lastAttachedAt ?? a.createdAt ?? 0))[0];
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=omb-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omb-sessions.js","sourceRoot":"","sources":["../../src/omp/omb-sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/omp/tmux.d.ts
CHANGED
|
@@ -6,12 +6,17 @@ export interface TmuxLaunchEnvironment {
|
|
|
6
6
|
}
|
|
7
7
|
/** Whether `omb` should own this interactive terminal through tmux. */
|
|
8
8
|
export declare function shouldLaunchOmbInTmux(options?: TmuxLaunchEnvironment): boolean;
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Stable per-project session name so subsequent `omb` calls reconnect safely.
|
|
11
|
+
* A session id creates an additional durable session in the same project.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ombSessionName(cwd: string, sessionId?: string): string;
|
|
14
|
+
/** Attach to an existing Bizar session, switching the current tmux client when nested. */
|
|
15
|
+
export declare function attachOmbSession(session: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<number>;
|
|
11
16
|
/**
|
|
12
17
|
* Launch OMP from the shell boundary. OMP starts inside tmux before it probes
|
|
13
18
|
* the terminal; no second OMP process is handed the same raw terminal during
|
|
14
19
|
* startup.
|
|
15
20
|
*/
|
|
16
|
-
export declare function launchOmb(cwd: string, args: string[], env?: NodeJS.ProcessEnv): Promise<number>;
|
|
21
|
+
export declare function launchOmb(cwd: string, args: string[], env?: NodeJS.ProcessEnv, sessionId?: string): Promise<number>;
|
|
17
22
|
//# sourceMappingURL=tmux.d.ts.map
|
package/dist/omp/tmux.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/omp/tmux.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/omp/tmux.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAYD,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAQlF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAMtE;AA+FD,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,GAAG,SAAgB,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
|
package/dist/omp/tmux.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { basename } from "node:path";
|
|
4
|
+
import { findLastOmbSession } from "./omb-sessions.js";
|
|
4
5
|
const NON_INTERACTIVE_FLAGS = new Set(["-p", "--print", "--export"]);
|
|
5
6
|
const NON_INTERACTIVE_MODES = new Set(["json", "rpc", "rpc-ui", "acp"]);
|
|
6
7
|
function modeOf(args) {
|
|
@@ -24,23 +25,110 @@ export function shouldLaunchOmbInTmux(options = {}) {
|
|
|
24
25
|
return false;
|
|
25
26
|
return true;
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Stable per-project session name so subsequent `omb` calls reconnect safely.
|
|
30
|
+
* A session id creates an additional durable session in the same project.
|
|
31
|
+
*/
|
|
32
|
+
export function ombSessionName(cwd, sessionId) {
|
|
29
33
|
const label = basename(cwd).replace(/[^A-Za-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 24) || "project";
|
|
30
34
|
const digest = createHash("sha256").update(cwd).digest("hex").slice(0, 10);
|
|
31
|
-
|
|
35
|
+
const normalizedSessionId = sessionId?.trim().replace(/[^A-Za-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 20) || "";
|
|
36
|
+
const suffix = normalizedSessionId ? `-${normalizedSessionId}` : "";
|
|
37
|
+
return `bizar-${label}-${digest}${suffix}`.slice(0, 63);
|
|
32
38
|
}
|
|
33
39
|
function exitCode(code, signal) {
|
|
34
40
|
if (code !== null)
|
|
35
41
|
return code;
|
|
36
42
|
return signal ? 1 : 1;
|
|
37
43
|
}
|
|
44
|
+
function runTmux(command, args, cwd, env) {
|
|
45
|
+
const child = spawn(command, args, { cwd, env, stdio: "ignore" });
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
child.once("error", reject);
|
|
48
|
+
child.once("close", (code, signal) => resolve(exitCode(code, signal)));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function readTmux(command, args, cwd, env) {
|
|
52
|
+
const child = spawn(command, args, { cwd, env, stdio: ["ignore", "pipe", "ignore"] });
|
|
53
|
+
let output = "";
|
|
54
|
+
child.stdout?.setEncoding("utf8");
|
|
55
|
+
child.stdout?.on("data", chunk => { output += chunk; });
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
child.once("error", reject);
|
|
58
|
+
child.once("close", (code, signal) => resolve({ code: exitCode(code, signal), output }));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async function launchInTmux(tmux, omp, session, cwd, args, env) {
|
|
62
|
+
const childEnv = { ...env, BIZAR_OMP_NO_TMUX: "1" };
|
|
63
|
+
const hasSession = await runTmux(tmux, ["has-session", "-t", session], cwd, childEnv);
|
|
64
|
+
if (hasSession !== 0) {
|
|
65
|
+
const created = await runTmux(tmux, ["new-session", "-d", "-s", session, "-c", cwd, omp, ...args], cwd, childEnv);
|
|
66
|
+
if (created !== 0) {
|
|
67
|
+
// A concurrent `omb` may have created the stable session between the
|
|
68
|
+
// probe and create calls. Continue only when that race is proven safe.
|
|
69
|
+
const racedIntoExisting = await runTmux(tmux, ["has-session", "-t", session], cwd, childEnv);
|
|
70
|
+
if (racedIntoExisting !== 0)
|
|
71
|
+
return created;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Keep the respawn opportunity below for stale sessions, but do not leave
|
|
75
|
+
// remain-on-exit enabled: when OMP really exits, tmux should remove the
|
|
76
|
+
// pane/session instead of showing a permanent "Pane is dead" screen.
|
|
77
|
+
// Detaching the client leaves OMP alive, so durable work is unaffected.
|
|
78
|
+
const pane = await readTmux(tmux, ["list-panes", "-t", `${session}:0.0`, "-F", "#{pane_dead}"], cwd, childEnv);
|
|
79
|
+
if (pane.code !== 0)
|
|
80
|
+
return pane.code;
|
|
81
|
+
if (pane.output.trim() === "1") {
|
|
82
|
+
const respawned = await runTmux(tmux, ["respawn-pane", "-k", "-t", `${session}:0.0`, omp, ...args], cwd, childEnv);
|
|
83
|
+
if (respawned !== 0)
|
|
84
|
+
return respawned;
|
|
85
|
+
}
|
|
86
|
+
// Repair sessions created by older Bizar versions that enabled this option.
|
|
87
|
+
const remainOnExitOff = await runTmux(tmux, ["set-option", "-t", session, "remain-on-exit", "off"], cwd, childEnv);
|
|
88
|
+
if (remainOnExitOff !== 0)
|
|
89
|
+
return remainOnExitOff;
|
|
90
|
+
// tmux must own wheel events so the terminal scrolls the pane instead of
|
|
91
|
+
// translating them into up/down input for OMP's prompt-history editor.
|
|
92
|
+
const mouseEnabled = await runTmux(tmux, ["set-option", "-t", session, "mouse", "on"], cwd, childEnv);
|
|
93
|
+
if (mouseEnabled !== 0)
|
|
94
|
+
return mouseEnabled;
|
|
95
|
+
// Give this session a private root table so Ctrl-D disconnects the client
|
|
96
|
+
// without changing key behavior in the user's other tmux sessions. The
|
|
97
|
+
// normal Ctrl-B prefix still enters tmux's standard prefix table.
|
|
98
|
+
const keyTable = `${session}-bizar-root`;
|
|
99
|
+
const bindDetach = await runTmux(tmux, ["bind-key", "-T", keyTable, "C-d", "detach-client"], cwd, childEnv);
|
|
100
|
+
if (bindDetach !== 0)
|
|
101
|
+
return bindDetach;
|
|
102
|
+
const bindPrefix = await runTmux(tmux, ["bind-key", "-T", keyTable, "C-b", "switch-client", "-T", "prefix"], cwd, childEnv);
|
|
103
|
+
if (bindPrefix !== 0)
|
|
104
|
+
return bindPrefix;
|
|
105
|
+
const keyTableSet = await runTmux(tmux, ["set-option", "-t", session, "key-table", keyTable], cwd, childEnv);
|
|
106
|
+
if (keyTableSet !== 0)
|
|
107
|
+
return keyTableSet;
|
|
108
|
+
const client = spawn(tmux, ["attach-session", "-t", session], { cwd, env: childEnv, stdio: "inherit" });
|
|
109
|
+
return new Promise((resolve, reject) => {
|
|
110
|
+
client.once("error", reject);
|
|
111
|
+
client.once("close", (code, signal) => resolve(exitCode(code, signal)));
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/** Attach to an existing Bizar session, switching the current tmux client when nested. */
|
|
115
|
+
export function attachOmbSession(session, cwd = process.cwd(), env = process.env) {
|
|
116
|
+
const tmux = env.BIZAR_TMUX_BIN || "tmux";
|
|
117
|
+
const args = env.TMUX || env.TMUX_PANE
|
|
118
|
+
? ["switch-client", "-t", session]
|
|
119
|
+
: ["attach-session", "-t", session];
|
|
120
|
+
const child = spawn(tmux, args, { cwd, env: { ...env, BIZAR_OMP_NO_TMUX: "1" }, stdio: "inherit" });
|
|
121
|
+
return new Promise((resolve, reject) => {
|
|
122
|
+
child.once("error", reject);
|
|
123
|
+
child.once("close", (code, signal) => resolve(exitCode(code, signal)));
|
|
124
|
+
});
|
|
125
|
+
}
|
|
38
126
|
/**
|
|
39
127
|
* Launch OMP from the shell boundary. OMP starts inside tmux before it probes
|
|
40
128
|
* the terminal; no second OMP process is handed the same raw terminal during
|
|
41
129
|
* startup.
|
|
42
130
|
*/
|
|
43
|
-
export function launchOmb(cwd, args, env = process.env) {
|
|
131
|
+
export async function launchOmb(cwd, args, env = process.env, sessionId) {
|
|
44
132
|
const useTmux = shouldLaunchOmbInTmux({
|
|
45
133
|
args,
|
|
46
134
|
env,
|
|
@@ -49,11 +137,11 @@ export function launchOmb(cwd, args, env = process.env) {
|
|
|
49
137
|
});
|
|
50
138
|
const tmux = env.BIZAR_TMUX_BIN || "tmux";
|
|
51
139
|
const omp = env.BIZAR_OMP_BIN || "omp";
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const child = spawn(
|
|
140
|
+
const lastSession = useTmux && !sessionId ? await findLastOmbSession(cwd, env) : undefined;
|
|
141
|
+
const session = lastSession?.name ?? ombSessionName(cwd, sessionId);
|
|
142
|
+
if (useTmux)
|
|
143
|
+
return launchInTmux(tmux, omp, session, cwd, args, env);
|
|
144
|
+
const child = spawn(omp, args, { cwd, env, stdio: "inherit" });
|
|
57
145
|
return new Promise((resolve, reject) => {
|
|
58
146
|
child.once("error", reject);
|
|
59
147
|
child.once("close", (code, signal) => resolve(exitCode(code, signal)));
|
package/dist/omp/tmux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/omp/tmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/omp/tmux.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"researchDate": "2026-09-18",
|
|
4
|
-
"bizarReference": {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
"bizarReference": {
|
|
5
|
+
"repository": "../BizarHarness",
|
|
6
|
+
"commit": "e13aa131bdcd368548118464f0da1bace302e64b",
|
|
7
|
+
"role": "reference-only"
|
|
8
|
+
},
|
|
9
|
+
"omp": {
|
|
10
|
+
"repository": "https://github.com/can1357/oh-my-pi",
|
|
11
|
+
"testedVersion": "18.2.6",
|
|
12
|
+
"testedCommit": "78b753124d11f8dd3ae73e2524125890ff7c977e",
|
|
13
|
+
"previouslyQualifiedVersions": [
|
|
14
|
+
"18.2.4",
|
|
15
|
+
"18.2.5"
|
|
16
|
+
],
|
|
17
|
+
"researchedMainCommit": "dbf3afad4894bde827d90f965e77b3fe1c5a95e5",
|
|
18
|
+
"releaseVersionSeenInResearch": "18.2.6",
|
|
19
|
+
"releaseCommitSeenInResearch": "78b753124d11f8dd3ae73e2524125890ff7c977e",
|
|
20
|
+
"qualification": "The npm package was tested at 18.2.6 with integrity sha512-dk298PZNnD1QigR4lKvQpWVAAbIo2bCfdNOlZwGFZsxHbP+XYrUS+AxYxfWkfqSnFRliP9Ho+h94DHV3o6lxRg==; 18.2.5 and 18.2.4 remain separately qualified compatibility versions. Package version alone does not prove source commit identity."
|
|
21
|
+
},
|
|
22
|
+
"bun": {
|
|
23
|
+
"minimum": "1.3.14",
|
|
24
|
+
"probe": "bun --version is required during release qualification"
|
|
25
|
+
},
|
|
26
|
+
"package": {
|
|
27
|
+
"name": "@polderlabs/bizar-omp",
|
|
28
|
+
"version": "0.4.1",
|
|
29
|
+
"integrity": "computed by npm pack in CI",
|
|
30
|
+
"extensionEntry": "dist/extension.js"
|
|
31
|
+
}
|
|
8
32
|
}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"supported": [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
"supported": [
|
|
4
|
+
"omp extension factory",
|
|
5
|
+
"native slash command",
|
|
6
|
+
"native tools",
|
|
7
|
+
"headless CLI",
|
|
8
|
+
"JSONL workflow journal",
|
|
9
|
+
"host-observed verification",
|
|
10
|
+
"serialized integration admission",
|
|
11
|
+
"dry-run migration"
|
|
12
|
+
],
|
|
13
|
+
"qualified": [
|
|
14
|
+
"OMP 18.2.6 / release commit 78b753124d11f8dd3ae73e2524125890ff7c977e",
|
|
15
|
+
"OMP 18.2.5 compatibility regression",
|
|
16
|
+
"OMP 18.2.4 compatibility regression",
|
|
17
|
+
"Node 22 and 24 CI",
|
|
18
|
+
"Bun 1.3.14 compatibility CI"
|
|
19
|
+
],
|
|
20
|
+
"not_claimed": [
|
|
21
|
+
"OS sandboxing",
|
|
22
|
+
"provider model quality",
|
|
23
|
+
"automatic application of worker changes",
|
|
24
|
+
"live task/eval child completion without a host OMP session",
|
|
25
|
+
"Claude Code/AO compatibility"
|
|
26
|
+
],
|
|
27
|
+
"native_contract": {
|
|
28
|
+
"extension_load": "registration-only",
|
|
29
|
+
"tool_executor": "five arguments",
|
|
30
|
+
"command_handler": "args and context",
|
|
31
|
+
"manifest": "omp.extensions"
|
|
32
|
+
}
|
|
7
33
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 0.4.1
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- Qualifies the plugin against OMP 18.2.6 at release commit 78b753124d11f8dd3ae73e2524125890ff7c977e.
|
|
6
|
+
- Keeps OMP 18.2.5 as a separately tested compatibility version.
|
|
7
|
+
- Updates CI, release qualification, installation diagnostics, and the native-development skill fingerprint.
|
|
8
|
+
- Adds the `omb agents` cross-project session hub for attaching to and dispatching durable sessions.
|
|
9
|
+
- Adds `omb new` plus last-active-session reconnect behavior for concurrent sessions in one directory.
|
|
10
|
+
|
|
11
|
+
## Validation
|
|
12
|
+
|
|
13
|
+
The automated OMP compatibility workflow opens this release PR only after the packed native install qualification passes.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# Native release policy
|
|
2
2
|
|
|
3
|
-
The package is releasable when typecheck, tests, packed-install qualification, and documentation checks pass against the supported OMP/Bun baseline. A GitHub release is created from an exact `v<version>` tag; npm publication uses trusted publishing. See npm-publishing.md for setup and 0.4.
|
|
3
|
+
The package is releasable when typecheck, tests, packed-install qualification, and documentation checks pass against the supported OMP/Bun baseline. A GitHub release is created from an exact `v<version>` tag; npm publication uses trusted publishing. See npm-publishing.md for setup and 0.4.1.md for the current release notes. A passing release gate does not imply every native provider or worker route has been tested.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
| --- | --- |
|
|
5
5
|
| Node | 22.x and 24.x in CI |
|
|
6
6
|
| Bun | 1.3.14 compatibility job |
|
|
7
|
-
| OMP | 18.2.
|
|
7
|
+
| OMP | 18.2.6 at release commit `78b753124d11f8dd3ae73e2524125890ff7c977e`; 18.2.5 and 18.2.4 remain regression-qualified |
|
|
8
8
|
| Install | `omp plugin link <checkout>` and `omp plugin install <package-spec>` are the intended host paths |
|
|
9
9
|
| Security | Trusted in-process extension; native task isolation required for managed editing |
|
|
10
10
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polderlabs/bizar-omp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Native oh-my-pi engineering workflow extension with typed evidence and serialized integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -53,7 +53,10 @@
|
|
|
53
53
|
"url": "https://github.com/PolderLabsVOF/BizarHarness-OMP.git"
|
|
54
54
|
},
|
|
55
55
|
"license": "MIT",
|
|
56
|
-
"publishConfig": {
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public",
|
|
58
|
+
"registry": "https://registry.npmjs.org/"
|
|
59
|
+
},
|
|
57
60
|
"devDependencies": {
|
|
58
61
|
"@types/node": "^26.5.1",
|
|
59
62
|
"typescript": "^7.0.2",
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
- Register extension handlers during factory load; perform actions from lifecycle, command, or tool execution.
|
|
4
4
|
- Use OMP's native task/eval and model/auth surfaces; do not create a second worker runtime.
|
|
5
|
+
- Treat the Agent Hub as the roster of active task sessions, not a catalog of every installed role; do not spawn idle specialists merely to make them visible.
|
|
5
6
|
- Do not treat OMP extension code as sandboxed.
|
|
6
7
|
- Treat lifecycle hook payloads and model/tool output as untrusted data; never persist credentials or blindly execute generated paths.
|
|
7
8
|
- Use `omp.extensions` in the package manifest and qualify exact runtime baselines.
|
|
@@ -34,7 +34,7 @@ Escalate when the scope grows, a check fails, the cause is uncertain, generated
|
|
|
34
34
|
|
|
35
35
|
- `/bizar run <objective>` starts a bounded Bizar workflow.
|
|
36
36
|
- `/bizar status`, `/bizar next`, `/bizar evidence`, and `/bizar cancel` inspect or advance that workflow.
|
|
37
|
-
- `/bizar-models`
|
|
37
|
+
- `/bizar-models` scans OMP's live authenticated model catalog locally, assigns the best available models to every `bizar_*` role, validates native resolution, preserves unrelated roles, and reports a compact mapping. It does not start a planning/research agent turn. Never invent a provider/model selector.
|
|
38
38
|
- `/bizar-models health` validates configured Bizar selectors without changing settings.
|
|
39
39
|
|
|
40
40
|
The semantic roles include `bizar_orchestrator` for the main conversation and `bizar_advisor` for independent passive review, alongside coordination, common work, hard work, research, planning, architecture, implementation, review, security, verification, and documentation. OMP's native Advisor is enabled by default and resolves through the native `advisor` role; Bizar exposes `bizar_advisor` as a visible, assignable alias. Use the role that matches the work; do not assume a role is available until OMP resolves its selector.
|
|
@@ -42,8 +42,11 @@ The semantic roles include `bizar_orchestrator` for the main conversation and `b
|
|
|
42
42
|
## Launcher contract
|
|
43
43
|
|
|
44
44
|
- `omp` is the normal direct OMP launcher. Bizar must not take over its terminal or start tmux from an extension callback.
|
|
45
|
-
- `omb` is the explicit durable launcher supplied by this package. It starts OMP inside
|
|
46
|
-
- `omb`
|
|
45
|
+
- `omb` is the explicit durable launcher supplied by this package. It starts OMP inside tmux from the first process, so terminal probes and raw input have one owner. Plain `omb` reconnects to the most recently active live Bizar session in the current directory, or creates that directory's stable default session when none exists.
|
|
46
|
+
- `omb new [initial message]` always creates a fresh session. `omb --session <id>` creates or reconnects to an additional named session, and `omb --new` creates a generated session id. `omb agents` opens the compact cross-project session hub. In that hub, Enter attaches, `n` dispatches a new project/task session, Up/Down or `j`/`k` selects, `r` refreshes, and `q` exits. The hub only inspects Bizar-owned tmux sessions and does not replace OMP's native Agent Hub.
|
|
47
|
+
- `omb` enables tmux mouse mode so wheel scrolling stays in the pane instead of becoming prompt-history input. It avoids nested tmux sessions and runs noninteractive modes directly. `Ctrl-d` and `Ctrl-b d` detach the client; the `Ctrl-d` binding is private to the Bizar session. If the host pane exits, a later `omb` respawns the dead pane before reconnecting. Closing the client does not stop the tmux host.
|
|
48
|
+
|
|
49
|
+
The install preset enables asynchronous task execution and sets `display.pinnedAgents=full`, so every active task agent is visible in the live session and Agent Hub. Role definitions are not live sessions and are not spawned at install time; only agents actually delegated by the orchestrator appear in the hub. It also hides thinking blocks and model tool activity (`hideThinkingBlock` and `display.hideToolActivity`) while preserving the model's reasoning and task execution.
|
|
47
50
|
|
|
48
51
|
Do not implement a second handoff, detached helper, or terminal-owning background loop in response to a task. Use OMP's native Agent Hub, task system, Collab, and session controls for background work.
|
|
49
52
|
|
|
@@ -9,7 +9,7 @@ Treat this skill as a source-grounded engineering procedure, not an assertion of
|
|
|
9
9
|
|
|
10
10
|
## Establish the target before implementing
|
|
11
11
|
|
|
12
|
-
Read [accuracy-and-versioning.md](references/accuracy-and-versioning.md) first. The current qualification target is `can1357/oh-my-pi` v18.2.
|
|
12
|
+
Read [accuracy-and-versioning.md](references/accuracy-and-versioning.md) first. The current qualification target is `can1357/oh-my-pi` v18.2.6 at commit `78b753124d11f8dd3ae73e2524125890ff7c977e`; OMP 18.2.5 and 18.2.4 remain separately tested compatibility versions. The bundled research corpus remains pinned to main commit `dbf3afad4894bde827d90f965e77b3fe1c5a95e5`, dated 2026-09-17, and must not be presented as the current release source.
|
|
13
13
|
|
|
14
14
|
Record the developer's actual OMP package version, lockfile/integrity, source commit when available, Bun version, execution mode, profile, cwd, and relevant settings. Never print secrets. Verify the exact exports and behavior of that target, rather than assuming these snapshots apply unchanged. A missing environment or unrun test means UNKNOWN or NOT RUN, never PASS.
|
|
15
15
|
|
|
@@ -18,8 +18,8 @@ Separate five kinds of statement: DOCUMENTED, SOURCE-OBSERVED, TESTED, PROPOSED
|
|
|
18
18
|
|
|
19
19
|
## Target fingerprint
|
|
20
20
|
|
|
21
|
-
Current qualification target: `v18.2.
|
|
22
|
-
Previous compatibility
|
|
21
|
+
Current qualification target: `v18.2.6@78b753124d11f8dd3ae73e2524125890ff7c977e`, npm integrity `sha512-dk298PZNnD1QigR4lKvQpWVAAbIo2bCfdNOlZwGFZsxHbP+XYrUS+AxYxfWkfqSnFRliP9Ho+h94DHV3o6lxRg==`.
|
|
22
|
+
Previous compatibility targets: `v18.2.5@37273117021129e96bd05d8277b140ec3fd61990` and `v18.2.4@1c0303b1f2ec515cbf4b44a9a49d68a029531aac`.
|
|
23
23
|
Research source: `can1357/oh-my-pi@dbf3afad4894bde827d90f965e77b3fe1c5a95e5`; it remains a source/documentation corpus pin, not a claim about the current package release. Compare artifacts/commits, not just a semver string.
|
|
24
24
|
|
|
25
25
|
Record the installed package name/version, lockfile integrity or binary checksum, source SHA when available, Bun version, OS/architecture, execution mode, profile, agent directory, cwd, project settings and overlays. Include which facts are unavailable. Do not assert an installed binary's source commit solely because its version matches a Git tag.
|