omnius 1.0.873 → 1.0.875

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/index.js +2 -2
  2. package/dist/library.js +259 -62
  3. package/dist/providerRegistry.d.ts +6 -0
  4. package/dist/tui/native/worker.js +91 -10
  5. package/docs/DISCOVERY.json +1054 -130
  6. package/docs/DISCOVERY.md +26 -1
  7. package/docs/guides/endpoint-requirements.md +33 -0
  8. package/docs/guides/sponsored-inference-mesh.md +84 -0
  9. package/docs/work-orders/evidence/chat-session-document-revision-20261017.json +57 -0
  10. package/docs/work-orders/evidence/chat-session-legacy-document-20261017.json +60 -0
  11. package/docs/work-orders/evidence/chat-session-live-sidecar-20261017.json +158 -0
  12. package/docs/work-orders/evidence/chat-session-shared-store-20261017.json +89 -0
  13. package/docs/work-orders/evidence/endpoint-completion-verification-20261017.json +95 -0
  14. package/docs/work-orders/evidence/endpoint-source-verification-20261017.json +175 -0
  15. package/docs/work-orders/evidence/expanded-variant-repair-20261017.json +88 -0
  16. package/docs/work-orders/evidence/final-presentation-native-20261017/final-160x48.txt +48 -0
  17. package/docs/work-orders/evidence/final-presentation-native-20261017/final-60x20.txt +20 -0
  18. package/docs/work-orders/evidence/final-presentation-native-20261017/report.json +1225 -0
  19. package/docs/work-orders/evidence/final-presentation-native-20261017/rich-final-160x48.txt +48 -0
  20. package/docs/work-orders/evidence/final-presentation-native-20261017.json +116 -0
  21. package/docs/work-orders/evidence/inference-route-attempts-20261017.json +82 -0
  22. package/docs/work-orders/evidence/mesh-source-verification-20261017.json +46 -0
  23. package/docs/work-orders/evidence/mesh-transport-verification-20261017.json +156 -0
  24. package/docs/work-orders/evidence/opencode-endpoint-regression-20261017.json +984 -0
  25. package/docs/work-orders/evidence/project-session-delete-shared-state-20261017.json +54 -0
  26. package/docs/work-orders/evidence/public-session-live-20261017.json +52 -0
  27. package/docs/work-orders/evidence/session-live-sidecar-profile-20261017.json +315 -0
  28. package/docs/work-orders/evidence/session-live-write-profile-20261017.json +167 -0
  29. package/docs/work-orders/evidence/sticky-catalog-candidate-release-20261017.json +314 -0
  30. package/npm-shrinkwrap.json +1705 -202
  31. package/package.json +78 -34
@@ -28,6 +28,12 @@ export interface ProviderDescriptor {
28
28
  defaultUrl?: string;
29
29
  apiKeyUrl?: string;
30
30
  docsUrl?: string;
31
+ /** Published retirement metadata; this is not a live availability attestation. */
32
+ availability?: Readonly<{
33
+ state: "retired";
34
+ reason: string;
35
+ docsUrl: string;
36
+ }>;
31
37
  description: string;
32
38
  }
33
39
  export interface ResolveProviderOptions {
@@ -66,6 +66,7 @@ function sanitizeNativeInterfaceState(value) {
66
66
  devices: instruments.devices === true,
67
67
  scrollTop: offset(instruments.scrollTop),
68
68
  deviceScrollTop: offset(instruments.deviceScrollTop),
69
+ ...typeof instruments.routeAttempts === "boolean" ? { routeAttempts: instruments.routeAttempts } : {},
69
70
  ...taskNotes ? { taskNotes: { open: taskNotes.open !== false, tasks: taskNotes.tasks !== false, notes: taskNotes.notes !== false, layers: taskNotes.layers !== false, disclosures: taskDisclosures } } : {},
70
71
  ...workQueue ? { workQueue: { open: workQueue.open !== false, history: workQueue.history === true, disclosures: workDisclosures } } : {}
71
72
  },
@@ -1187,6 +1188,8 @@ var NativeBlockView = class {
1187
1188
  this.spec = spec;
1188
1189
  if (rebuild) this.reset();
1189
1190
  this.signature = signature;
1191
+ const finalAnswer = spec.kind === "markdown" && spec.presentation === "final-answer";
1192
+ this.root.marginTop = this.root.marginBottom = finalAnswer ? 1 : 0;
1190
1193
  if (spec.collapsed !== this.previousModelCollapsed) {
1191
1194
  this.collapsed = spec.collapsed ?? false;
1192
1195
  this.previousModelCollapsed = spec.collapsed;
@@ -4032,6 +4035,9 @@ var InstrumentRail = class extends BoxRenderable7 {
4032
4035
  contextMeter;
4033
4036
  contextHeader;
4034
4037
  contextDetails;
4038
+ routeAttemptsHeader;
4039
+ routeAttempts;
4040
+ routeAttemptRows = [];
4035
4041
  onResize(width, height) {
4036
4042
  super.onResize(width, height);
4037
4043
  this.devices?.fitHeight(height);
@@ -4150,6 +4156,16 @@ var InstrumentRail = class extends BoxRenderable7 {
4150
4156
  addRow(this.contextDetails, "context-tools", "TOOL CALLS");
4151
4157
  addRow(this.contextDetails, "adversary", "ADVERSARY");
4152
4158
  addRow(this.contextDetails, "duration", "LAST GEN");
4159
+ this.routeAttemptsHeader = new SectionBanner(renderer2, "ROUTE ATTEMPTS", `${id}:route-attempts`, () => {
4160
+ this.routeAttempts.visible = !this.routeAttempts.visible;
4161
+ this.routeAttemptsHeader.update(this.routeAttemptsHeading, this.routeAttempts.visible);
4162
+ });
4163
+ this.routeAttemptsHeader.update("ROUTE ATTEMPTS", false);
4164
+ this.routeAttemptsHeader.visible = false;
4165
+ this.routeAttemptsHeader.on(RenderableEvents5.FOCUSED, () => this.reveal(this.routeAttemptsHeader));
4166
+ this.inference.add(this.routeAttemptsHeader);
4167
+ this.routeAttempts = new BoxRenderable7(renderer2, { id: `${id}:route-attempt-body`, width: "100%", flexDirection: "column", flexShrink: 0, visible: false });
4168
+ this.inference.add(this.routeAttempts);
4153
4169
  this.sessionHeader = new SectionBanner(
4154
4170
  renderer2,
4155
4171
  "SESSION / AGENTS",
@@ -4193,6 +4209,7 @@ var InstrumentRail = class extends BoxRenderable7 {
4193
4209
  const data = state.instruments;
4194
4210
  const inference = data?.inference;
4195
4211
  const session = data?.session;
4212
+ this.updateRouteAttempts(inference?.routeAttempts ?? []);
4196
4213
  const set = (id, value) => this.rows.get(id).update(value);
4197
4214
  set("messages", instrumentNumber(inference?.contextMessages));
4198
4215
  set("headroom", inference?.contextHeadroom !== void 0 && Number.isFinite(inference.contextHeadroom) ? String(Math.round(inference.contextHeadroom)) : "--");
@@ -4243,6 +4260,39 @@ var InstrumentRail = class extends BoxRenderable7 {
4243
4260
  }))
4244
4261
  );
4245
4262
  }
4263
+ routeAttemptsHeading = "ROUTE ATTEMPTS";
4264
+ updateRouteAttempts(attempts) {
4265
+ const bounded = attempts.slice(-24);
4266
+ this.routeAttemptsHeading = `ROUTE ATTEMPTS (${bounded.length})`;
4267
+ this.routeAttemptsHeader.visible = bounded.length > 0;
4268
+ this.routeAttemptsHeader.update(this.routeAttemptsHeading);
4269
+ this.routeAttempts.visible = this.routeAttemptsHeader.visible && this.routeAttemptsHeader.expanded;
4270
+ for (let index = 0; index < bounded.length; index++) {
4271
+ let row = this.routeAttemptRows[index];
4272
+ if (!row) {
4273
+ const id = `${this.routeAttempts.id}:${index}`;
4274
+ const box = new BoxRenderable7(this.ctx, { id, width: "100%", flexDirection: "column", flexShrink: 0 });
4275
+ const title2 = new TextRenderable6(this.ctx, { id: `${id}:title`, width: "100%", height: 1, content: "", fg: foreground, bg: background, wrapMode: "none", truncate: true, flexShrink: 0 });
4276
+ const detail2 = new TextRenderable6(this.ctx, { id: `${id}:detail`, width: "100%", content: "", fg: foreground, bg: background, attributes: TextAttributes7.DIM, wrapMode: "word", flexShrink: 0 });
4277
+ box.add(title2);
4278
+ box.add(detail2);
4279
+ this.routeAttempts.add(box);
4280
+ row = { box, title: title2, detail: detail2 };
4281
+ this.routeAttemptRows.push(row);
4282
+ }
4283
+ const attempt = bounded[index];
4284
+ const title = `${attempt.phase.toUpperCase()} ${attempt.model}`;
4285
+ const detail = [
4286
+ [attempt.category?.replace(/_/g, " ").toUpperCase(), attempt.status === void 0 ? void 0 : `HTTP ${attempt.status}`].filter(Boolean).join(" · "),
4287
+ [attempt.disposition?.replace(/_/g, " ").toUpperCase(), attempt.retryDelayMs === void 0 ? void 0 : `WAIT ${instrumentNumber(attempt.retryDelayMs / 1e3, 1, "s")}`].filter(Boolean).join(" · ")
4288
+ ].filter(Boolean).join("\n");
4289
+ if (row.title.plainText !== title) row.title.content = title;
4290
+ if (row.detail.plainText !== detail) row.detail.content = detail;
4291
+ row.detail.visible = detail.length > 0;
4292
+ row.box.visible = true;
4293
+ }
4294
+ for (let index = bounded.length; index < this.routeAttemptRows.length; index++) this.routeAttemptRows[index].box.visible = false;
4295
+ }
4246
4296
  applyTheme(colors) {
4247
4297
  this.backgroundColor = colors.background;
4248
4298
  const visit = (node) => {
@@ -4273,6 +4323,7 @@ var InstrumentRail = class extends BoxRenderable7 {
4273
4323
  session: this.session.visible,
4274
4324
  context: this.contextHeader.expanded,
4275
4325
  devices: this.devices.isExpanded,
4326
+ routeAttempts: this.routeAttemptsHeader.expanded,
4276
4327
  scrollTop: this.scroll.scrollTop,
4277
4328
  deviceScrollTop: this.devices.scroll.scrollTop,
4278
4329
  taskNotes: this.taskNotes.capturePresentation(),
@@ -4286,6 +4337,8 @@ var InstrumentRail = class extends BoxRenderable7 {
4286
4337
  if (this.session.visible !== state.session) this.toggleSection("session");
4287
4338
  this.contextHeader.update("CONTEXT DETAILS", state.context);
4288
4339
  this.contextDetails.visible = this.contextHeader.visible && state.context;
4340
+ this.routeAttemptsHeader.update(this.routeAttemptsHeading, state.routeAttempts === true);
4341
+ this.routeAttempts.visible = this.routeAttemptsHeader.visible && state.routeAttempts === true;
4289
4342
  this.devices.setExpanded(state.devices);
4290
4343
  this.scroll.scrollTo(state.scrollTop);
4291
4344
  this.devices.scroll.scrollTo(state.deviceScrollTop);
@@ -4297,6 +4350,7 @@ var InstrumentRail = class extends BoxRenderable7 {
4297
4350
  ...this.taskNotes.focusTargets(),
4298
4351
  this.inferenceHeader,
4299
4352
  ...this.inference.visible && this.contextHeader.visible ? [this.contextHeader] : [],
4353
+ ...this.inference.visible && this.routeAttemptsHeader.visible ? [this.routeAttemptsHeader] : [],
4300
4354
  this.sessionHeader,
4301
4355
  ...this.session.visible ? this.channels.focusTargets() : [],
4302
4356
  ...this.devices.focusTargets()
@@ -4323,8 +4377,8 @@ var COMMAND_SIGNATURES = [
4323
4377
  ["/model", "Select from available models"],
4324
4378
  ["/model <name>", "Switch to a specific model"],
4325
4379
  ["/models", "List all available models"],
4326
- ["/endpoint", "Show current endpoint"],
4327
- ["/endpoint <url>", "Set backend URL (auto-detects type)"],
4380
+ ["/endpoint", "Select an endpoint or provider"],
4381
+ ["/endpoint <provider|alias|url>", "Set a provider name, alias, or backend URL"],
4328
4382
  ["/endpoint <url> --auth <t>", "Set endpoint with Bearer auth"],
4329
4383
  ["/fallback", "Show remote inference fallback mode"],
4330
4384
  ["/fallback status", "Show remote inference fallback mode"],
@@ -4777,6 +4831,7 @@ var COMMAND_SIGNATURES = [
4777
4831
  ["/ipfs share <tool|skill> <name>", "Share a tool or skill through IPFS"],
4778
4832
  ["/ipfs import <cid>", "Import a shared IPFS tool or skill reference"],
4779
4833
  ["/sponsor", "Sponsor inference - onboarding wizard or dashboard"],
4834
+ ["/mesh [status|identity]", "Inspect trusted inference mesh routing and public identity"],
4780
4835
  ["/sponsor status", "Show sponsor dashboard with usage metrics"],
4781
4836
  ["/sponsor image <prompt>", "Generate an image on a sponsored peer"],
4782
4837
  ["/sponsor video <prompt>", "Generate a video on a sponsored peer"],
@@ -4834,7 +4889,7 @@ var COMMAND_SIGNATURES = [
4834
4889
  ],
4835
4890
  ["/reminders", "Alias for /reminder"],
4836
4891
  ["/daemon", "Show or manage the local API daemon"],
4837
- ["/daemon <start|stop|restart|takeover>", "Control the local API daemon"],
4892
+ ["/daemon <status|diagnostics|start|stop|restart|takeover>", "Inspect startup diagnostics or control the local API daemon"],
4838
4893
  ["/apikey", "Show current API key (for pasting into Web UI / clients)"],
4839
4894
  ["/apikey copy", "Copy the API key to clipboard"],
4840
4895
  ["/apikey new", "Rotate to a new API key (regenerate)"],
@@ -5053,6 +5108,7 @@ var CATEGORY_OVERRIDES = {
5053
5108
  "task-type": "runtime",
5054
5109
  tasktype: "runtime",
5055
5110
  sponsor: "network",
5111
+ mesh: "network",
5056
5112
  expose: "gateway",
5057
5113
  access: "network",
5058
5114
  host: "network",
@@ -6154,9 +6210,19 @@ var NativeFrontend = class {
6154
6210
  };
6155
6211
  const headerRow = new BoxRenderable10(renderer2, { id: "omnius-header-row", width: "100%", minWidth: 0, minHeight: 1, flexDirection: "row", gap: 1 });
6156
6212
  this.header.add(headerRow);
6213
+ this.identityMarker = new TextRenderable9(renderer2, {
6214
+ id: "omnius-marker",
6215
+ content: "■",
6216
+ width: 1,
6217
+ height: 1,
6218
+ flexShrink: 0,
6219
+ fg: colors.foreground,
6220
+ selectable: false
6221
+ });
6222
+ headerRow.add(this.identityMarker);
6157
6223
  this.identity = new TextRenderable9(renderer2, {
6158
6224
  id: "omnius-identity",
6159
- content: "Omnius",
6225
+ content: "OMNIUS",
6160
6226
  fg: colors.foreground,
6161
6227
  flexShrink: 0,
6162
6228
  flexGrow: 0,
@@ -6217,7 +6283,7 @@ var NativeFrontend = class {
6217
6283
  }
6218
6284
  });
6219
6285
  this.detailButton.focusable = true;
6220
- headerRow.add(this.detailButton, 1);
6286
+ headerRow.add(this.detailButton, 2);
6221
6287
  for (const control of [this.identity, this.detailButton]) {
6222
6288
  const attributes = control.attributes;
6223
6289
  control.on("focused", () => {
@@ -6227,6 +6293,14 @@ var NativeFrontend = class {
6227
6293
  control.attributes = attributes;
6228
6294
  });
6229
6295
  }
6296
+ if (process.env["OMNIUS_TUI_REDUCE_MOTION"] !== "1" && process.env["REDUCE_MOTION"] !== "1") {
6297
+ this.identityMarkerTimer = setInterval(() => {
6298
+ if (this.destroyed) return;
6299
+ this.identityMarker.content = this.identityMarker.plainText === "■" ? " " : "■";
6300
+ this.renderer.requestRender();
6301
+ }, 600);
6302
+ this.identityMarkerTimer.unref?.();
6303
+ }
6230
6304
  this.sessionRow = new BoxRenderable10(renderer2, {
6231
6305
  id: "omnius-sessions-row",
6232
6306
  width: "100%",
@@ -6587,6 +6661,7 @@ var NativeFrontend = class {
6587
6661
  context;
6588
6662
  selectionMenu;
6589
6663
  header;
6664
+ identityMarker;
6590
6665
  identity;
6591
6666
  headerActions;
6592
6667
  headerPanel;
@@ -6626,6 +6701,7 @@ var NativeFrontend = class {
6626
6701
  clipboard;
6627
6702
  copyFeedback;
6628
6703
  copyFeedbackTimer;
6704
+ identityMarkerTimer;
6629
6705
  state;
6630
6706
  themeSignature = "";
6631
6707
  headerSignature = "";
@@ -6678,7 +6754,7 @@ var NativeFrontend = class {
6678
6754
  if (headerSignature !== this.headerSignature) {
6679
6755
  this.headerSignature = headerSignature;
6680
6756
  this.identity.content = styledText([
6681
- { text: `${plainText(state.header.panel) ? this.headerPanelCollapsed ? "▸" : "▾" : "·"} ${state.header.title}` },
6757
+ { text: `${plainText(state.header.panel) ? this.headerPanelCollapsed ? "▸ " : "▾ " : ""}${state.header.title}` },
6682
6758
  ...state.header.detail ? [{ text: " " }, ...textSpans(state.header.detail)] : []
6683
6759
  ]);
6684
6760
  this.headerPanel.content = styledText(state.header.panel);
@@ -6846,6 +6922,7 @@ var NativeFrontend = class {
6846
6922
  this.header.backgroundColor = this.footer.backgroundColor = colors.background;
6847
6923
  this.header.borderColor = this.footer.borderColor = this.embeddedPane.borderColor = colors.border;
6848
6924
  this.identity.fg = colors.foreground;
6925
+ this.identityMarker.fg = colors.foreground;
6849
6926
  this.headerPanel.fg = colors.foreground;
6850
6927
  this.routeWarning.fg = colors.warning;
6851
6928
  this.prompt.fg = this.activity.fg = this.liveButton.fg = colors.accent;
@@ -6937,11 +7014,11 @@ var NativeFrontend = class {
6937
7014
  const actions = this.state?.header.actions ?? [];
6938
7015
  const naturalWidth = actions.reduce((size, action) => size + terminalCellWidth(plainText(action.label)), 0) + Math.max(0, actions.length - 1);
6939
7016
  const detailWidth = width < 40 ? 1 : 9;
6940
- const gapCount = this.headerActions.visible ? 2 : 1;
6941
- const controlWidth = Math.min(naturalWidth, Math.max(1, width - 18 - detailWidth - gapCount));
7017
+ const gapCount = this.headerActions.visible ? 3 : 2;
7018
+ const controlWidth = Math.min(naturalWidth, Math.max(1, width - 1 - 18 - detailWidth - gapCount));
6942
7019
  this.headerActions.width = controlWidth;
6943
- this.identity.minWidth = Math.max(0, Math.min(18, width - detailWidth - gapCount));
6944
- this.identity.width = Math.max(0, width - (this.headerActions.visible ? controlWidth : 0) - detailWidth - gapCount);
7020
+ this.identity.minWidth = Math.max(0, Math.min(18, width - 1 - detailWidth - gapCount));
7021
+ this.identity.width = Math.max(0, width - 1 - (this.headerActions.visible ? controlWidth : 0) - detailWidth - gapCount);
6945
7022
  this.detailButton.width = detailWidth;
6946
7023
  this.keyHints.content = width < 60 ? "F1 HELP" : "F1 HELP TAB FOCUS";
6947
7024
  this.detailButton.content = `${shown ? "-" : "+"}${detailWidth > 1 ? " DETAILS" : ""}`;
@@ -7487,6 +7564,10 @@ var NativeFrontend = class {
7487
7564
  if (this.destroyed) return;
7488
7565
  this.destroyed = true;
7489
7566
  if (this.copyFeedbackTimer) clearTimeout(this.copyFeedbackTimer);
7567
+ if (this.identityMarkerTimer) {
7568
+ clearInterval(this.identityMarkerTimer);
7569
+ this.identityMarkerTimer = void 0;
7570
+ }
7490
7571
  this.selectionMenu.destroy();
7491
7572
  this.disposeSelectionContrast();
7492
7573
  this.renderer.keyInput.off("keypress", this.onKey);