oh-my-opencode-slim 2.0.0-beta.0 → 2.0.0-beta.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.
@@ -20,7 +20,7 @@ export declare const DEFAULT_TIMEOUT_MS: number;
20
20
  export declare const MAX_POLL_TIME_MS: number;
21
21
  export declare const FALLBACK_FAILOVER_TIMEOUT_MS = 15000;
22
22
  export declare const DEFAULT_MAX_SUBAGENT_DEPTH = 3;
23
- export declare const PHASE_REMINDER_TEXT = "!IMPORTANT! Recall the workflow rules:\nUnderstand \u2192 build a short work graph with independent lanes, dependencies, and advisory ownership \u2192 dispatch independent specialists as background tasks \u2192 record task/session IDs \u2192 continue orchestration \u2192 poll task_status for terminal results \u2192 reconcile \u2192 verify.\nOnly consume outputs or advance dependent work when background results are terminal. !END!";
23
+ export declare const PHASE_REMINDER_TEXT = "!IMPORTANT! Scheduler workflow: plan lanes/dependencies \u2192 dispatch background specialists \u2192 track task IDs \u2192 poll task_status \u2192 reconcile terminal results \u2192 verify. Do not consume running-job output or advance dependent work. !END!";
24
24
  export declare const TMUX_SPAWN_DELAY_MS = 500;
25
25
  export declare const COUNCILLOR_STAGGER_MS = 250;
26
26
  export declare const STABLE_POLLS_THRESHOLD = 3;
@@ -1,4 +1,4 @@
1
- export declare const PHASE_REMINDER = "<internal_reminder>!IMPORTANT! Recall the workflow rules:\nUnderstand \u2192 build a short work graph with independent lanes, dependencies, and advisory ownership \u2192 dispatch independent specialists as background tasks \u2192 record task/session IDs \u2192 continue orchestration \u2192 poll task_status for terminal results \u2192 reconcile \u2192 verify.\nOnly consume outputs or advance dependent work when background results are terminal. !END!</internal_reminder>";
1
+ export declare const PHASE_REMINDER = "<internal_reminder>!IMPORTANT! Scheduler workflow: plan lanes/dependencies \u2192 dispatch background specialists \u2192 track task IDs \u2192 poll task_status \u2192 reconcile terminal results \u2192 verify. Do not consume running-job output or advance dependent work. !END!</internal_reminder>";
2
2
  interface MessageInfo {
3
3
  role: string;
4
4
  agent?: string;
package/dist/index.js CHANGED
@@ -18302,9 +18302,7 @@ var POLL_INTERVAL_BACKGROUND_MS = 2000;
18302
18302
  var DEFAULT_TIMEOUT_MS = 2 * 60 * 1000;
18303
18303
  var MAX_POLL_TIME_MS = 5 * 60 * 1000;
18304
18304
  var DEFAULT_MAX_SUBAGENT_DEPTH = 3;
18305
- var PHASE_REMINDER_TEXT = `!IMPORTANT! Recall the workflow rules:
18306
- Understand → build a short work graph with independent lanes, dependencies, and advisory ownership → dispatch independent specialists as background tasks → record task/session IDs → continue orchestration → poll task_status for terminal results → reconcile → verify.
18307
- Only consume outputs or advance dependent work when background results are terminal. !END!`;
18305
+ var PHASE_REMINDER_TEXT = `!IMPORTANT! Scheduler workflow: plan lanes/dependencies → dispatch background specialists → track task IDs → poll task_status → reconcile terminal results → verify. Do not consume running-job output or advance dependent work. !END!`;
18308
18306
  var TMUX_SPAWN_DELAY_MS = 500;
18309
18307
  var COUNCILLOR_STAGGER_MS = 250;
18310
18308
  var DEFAULT_DISABLED_AGENTS = ["observer"];
@@ -22724,6 +22722,9 @@ class BackgroundJobBoard {
22724
22722
  const existing = this.jobs.get(input.taskID);
22725
22723
  if (!existing)
22726
22724
  return;
22725
+ if (existing.state === "reconciled") {
22726
+ return existing;
22727
+ }
22727
22728
  const now = input.now ?? Date.now();
22728
22729
  const terminal = TERMINAL_STATES.has(input.state);
22729
22730
  const updated = {
@@ -23008,7 +23009,7 @@ class SessionManager {
23008
23009
  return;
23009
23010
  return [
23010
23011
  "### Resumable Sessions",
23011
- "Reuse only for clear continuation of the same thread. Otherwise start fresh.",
23012
+ "Reuse only completed/reconciled threads. Poll running jobs from Background Job Board.",
23012
23013
  "",
23013
23014
  ...lines
23014
23015
  ].join(`
@@ -24280,6 +24281,31 @@ var RESUMABLE_SESSIONS_END = "</resumable_sessions>";
24280
24281
  var BACKGROUND_COMPLETION_COMPLETED = /^Background task completed: /;
24281
24282
  var BACKGROUND_COMPLETION_FAILED = /^Background task failed: /;
24282
24283
  var MAX_PROCESSED_INJECTED_COMPLETIONS = 500;
24284
+ function djb2Hash(str) {
24285
+ let hash = 5381;
24286
+ for (let i = 0;i < str.length; i++) {
24287
+ hash = (hash << 5) + hash + str.charCodeAt(i);
24288
+ }
24289
+ return (hash >>> 0).toString(16).padStart(8, "0");
24290
+ }
24291
+ function createOccurrenceId(part, message, partIndex) {
24292
+ if (typeof part.id === "string") {
24293
+ return part.id;
24294
+ }
24295
+ if (typeof message.info.id === "string") {
24296
+ return `${message.info.id}:${partIndex}`;
24297
+ }
24298
+ const sessionID = message.info.sessionID ?? "unknown";
24299
+ const content = typeof part.text === "string" ? part.text : "";
24300
+ const status = parseTaskStatusOutput(content);
24301
+ if (status) {
24302
+ const stableKey = `${sessionID}:${status.taskID}:${status.state}:${status.result ?? ""}`;
24303
+ const hash2 = djb2Hash(stableKey);
24304
+ return `anon:${hash2}`;
24305
+ }
24306
+ const hash = djb2Hash(`${sessionID}:${content}`);
24307
+ return `anon:${hash}`;
24308
+ }
24283
24309
  function isAgentName(value) {
24284
24310
  return typeof value === "string" && AGENT_NAME_SET.has(value);
24285
24311
  }
@@ -24395,7 +24421,7 @@ function createTaskSessionManagerHook(_ctx, options) {
24395
24421
  }
24396
24422
  return updated;
24397
24423
  }
24398
- function updateFromInjectedCompletion(part, message, messageIndex, partIndex) {
24424
+ function updateFromInjectedCompletion(part, message, _messageIndex, partIndex) {
24399
24425
  if (part.type !== "text" || typeof part.text !== "string") {
24400
24426
  return;
24401
24427
  }
@@ -24411,7 +24437,7 @@ function createTaskSessionManagerHook(_ctx, options) {
24411
24437
  return;
24412
24438
  if (isFailed && status.state !== "error")
24413
24439
  return;
24414
- const occurrenceId = typeof part.id === "string" ? part.id : typeof message.info.id === "string" ? `${message.info.id}:${partIndex}` : `${message.info.sessionID ?? "unknown"}:${messageIndex}:${partIndex}`;
24440
+ const occurrenceId = createOccurrenceId(part, message, partIndex);
24415
24441
  if (processedInjectedCompletions.has(occurrenceId))
24416
24442
  return;
24417
24443
  const updated = updateBackgroundJobFromOutput(part.text);
@@ -24661,7 +24687,6 @@ function createTaskSessionManagerHook(_ctx, options) {
24661
24687
  if (!sessionId)
24662
24688
  return;
24663
24689
  sessionManager.dropTask(sessionId);
24664
- backgroundJobBoard.drop(sessionId);
24665
24690
  sessionManager.clearParent(sessionId);
24666
24691
  backgroundJobBoard.clearParent(sessionId);
24667
24692
  terminalJobsInjectedByParent.delete(sessionId);
package/dist/tui.js CHANGED
@@ -68,9 +68,7 @@ var POLL_INTERVAL_BACKGROUND_MS = 2000;
68
68
  var DEFAULT_TIMEOUT_MS = 2 * 60 * 1000;
69
69
  var MAX_POLL_TIME_MS = 5 * 60 * 1000;
70
70
  var DEFAULT_MAX_SUBAGENT_DEPTH = 3;
71
- var PHASE_REMINDER_TEXT = `!IMPORTANT! Recall the workflow rules:
72
- Understand → build a short work graph with independent lanes, dependencies, and advisory ownership → dispatch independent specialists as background tasks → record task/session IDs → continue orchestration → poll task_status for terminal results → reconcile → verify.
73
- Only consume outputs or advance dependent work when background results are terminal. !END!`;
71
+ var PHASE_REMINDER_TEXT = `!IMPORTANT! Scheduler workflow: plan lanes/dependencies → dispatch background specialists → track task IDs → poll task_status → reconcile terminal results → verify. Do not consume running-job output or advance dependent work. !END!`;
74
72
  var TMUX_SPAWN_DELAY_MS = 500;
75
73
  var COUNCILLOR_STAGGER_MS = 250;
76
74
  var DEFAULT_DISABLED_AGENTS = ["observer"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode-slim",
3
- "version": "2.0.0-beta.0",
3
+ "version": "2.0.0-beta.1",
4
4
  "description": "Lightweight agent orchestration plugin for OpenCode - a slimmed-down fork of oh-my-opencode",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",