omnius 1.0.851 → 1.0.852
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/dist/index.js +2 -2
- package/dist/library.js +53 -19
- package/docs/DISCOVERY.json +73 -0
- package/docs/DISCOVERY.md +2 -0
- package/docs/work-orders/WO-live-native-cascade-ui-freeze-20261013.md +146 -0
- package/docs/work-orders/evidence/telegram-native-planning-live-20261013.json +2013 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist/index.js
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 37242365 bytes
|
|
4
|
+
sha256: 36c6a7172915a3edc9dc2a355ee9628f64a2d865e8e0cc3547b10e88d37a45e2
|
package/dist/library.js
CHANGED
|
@@ -343033,13 +343033,15 @@ function parseKeylessInferenceRegistry(html) {
|
|
|
343033
343033
|
// packages/orchestrator/dist/inference-provider-error.js
|
|
343034
343034
|
var object4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
343035
343035
|
var reasons = /* @__PURE__ */ new Set(["unsupported_schema", "request", "rate", "auth", "upstream"]);
|
|
343036
|
-
var knownUnsupportedKeywords = /* @__PURE__ */ new Set(["uniqueItems", "rootAnyOf"]);
|
|
343036
|
+
var knownUnsupportedKeywords = /* @__PURE__ */ new Set(["uniqueItems", "rootAnyOf", "requiredAllProperties"]);
|
|
343037
|
+
var optionalPropertyName = /^[A-Za-z_][A-Za-z0-9_-]{0,127}$/;
|
|
343037
343038
|
var InferenceProviderError = class extends Error {
|
|
343038
343039
|
status;
|
|
343039
343040
|
reason;
|
|
343040
343041
|
retryAfterMs;
|
|
343041
343042
|
unsupportedKeywords;
|
|
343042
|
-
|
|
343043
|
+
unsupportedOptionalProperty;
|
|
343044
|
+
constructor(status2, reason, retryAfterMs, unsupportedKeywords = [], unsupportedOptionalProperty) {
|
|
343043
343045
|
const safeStatus = Number.isInteger(status2) && status2 >= 400 && status2 <= 599 ? status2 : 500;
|
|
343044
343046
|
const safeReason = reasons.has(reason) ? reason : "upstream";
|
|
343045
343047
|
super(`Inference provider rejected the request (${safeReason}; HTTP ${safeStatus}).`);
|
|
@@ -343047,6 +343049,8 @@ var InferenceProviderError = class extends Error {
|
|
|
343047
343049
|
this.status = safeStatus;
|
|
343048
343050
|
this.reason = safeReason;
|
|
343049
343051
|
this.unsupportedKeywords = Object.freeze(safeReason === "unsupported_schema" && Array.isArray(unsupportedKeywords) ? [...new Set(unsupportedKeywords.filter((keyword) => knownUnsupportedKeywords.has(keyword)))] : []);
|
|
343052
|
+
if (this.unsupportedKeywords.includes("requiredAllProperties") && typeof unsupportedOptionalProperty === "string" && optionalPropertyName.test(unsupportedOptionalProperty))
|
|
343053
|
+
this.unsupportedOptionalProperty = unsupportedOptionalProperty;
|
|
343050
343054
|
if (typeof retryAfterMs === "number" && Number.isFinite(retryAfterMs) && retryAfterMs > 0)
|
|
343051
343055
|
this.retryAfterMs = Math.min(864e5, Math.ceil(retryAfterMs));
|
|
343052
343056
|
}
|
|
@@ -343093,7 +343097,11 @@ function normalizeInferenceProviderError(value, headers) {
|
|
|
343093
343097
|
const fields2 = [detail, response ?? {}, value];
|
|
343094
343098
|
const codes = fields2.flatMap((field) => [code(field.code), code(field.type)]).filter((item) => item !== void 0);
|
|
343095
343099
|
const knownStatus = fields2.flatMap((field) => [status(field.status), status(field.status_code), status(field.code)]).find((item) => item !== void 0);
|
|
343096
|
-
const
|
|
343100
|
+
const missingProperty = detail.type === "invalid_request_error" && detail.param === "schema" && typeof detail.message === "string" ? /^'required' is required to be supplied and to be an array including every key in properties\. Missing '([A-Za-z_][A-Za-z0-9_-]{0,127})'\.$/.exec(detail.message)?.[1] : void 0;
|
|
343101
|
+
const unsupportedKeywords = [.../* @__PURE__ */ new Set([
|
|
343102
|
+
...fields2.flatMap((field) => unsupportedGrammarKeywords(field.message)),
|
|
343103
|
+
...missingProperty ? ["requiredAllProperties"] : []
|
|
343104
|
+
])];
|
|
343097
343105
|
let reason = "upstream", inferredStatus = 500;
|
|
343098
343106
|
if (knownStatus === 429 || codes.some((item) => rateCodes.has(item))) {
|
|
343099
343107
|
reason = "rate";
|
|
@@ -343124,7 +343132,7 @@ function normalizeInferenceProviderError(value, headers) {
|
|
|
343124
343132
|
}
|
|
343125
343133
|
}
|
|
343126
343134
|
if (unsupportedKeywords.length && reason !== "rate" && reason !== "auth")
|
|
343127
|
-
return new InferenceProviderError(400, "unsupported_schema", void 0, unsupportedKeywords);
|
|
343135
|
+
return new InferenceProviderError(400, "unsupported_schema", void 0, unsupportedKeywords, missingProperty);
|
|
343128
343136
|
return new InferenceProviderError(knownStatus ?? inferredStatus, reason, reason === "rate" ? retryAfterMs : void 0);
|
|
343129
343137
|
}
|
|
343130
343138
|
function normalizeInferenceHttpSchemaError(httpStatus, responseBody, headers) {
|
|
@@ -344148,8 +344156,20 @@ function collectOpenCodeResponsesResponse(response, request, options) {
|
|
|
344148
344156
|
}
|
|
344149
344157
|
|
|
344150
344158
|
// packages/orchestrator/dist/provider-schema-adapter.js
|
|
344151
|
-
var SUPPORTED_PROVIDER_SCHEMA_ADAPTATIONS = Object.freeze(["uniqueItems", "rootAnyOf"]);
|
|
344159
|
+
var SUPPORTED_PROVIDER_SCHEMA_ADAPTATIONS = Object.freeze(["uniqueItems", "rootAnyOf", "requiredAllProperties"]);
|
|
344152
344160
|
var object9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
344161
|
+
function hasProviderRequiredAllPropertiesConflict(format, missingProperty) {
|
|
344162
|
+
if (format.type !== "json_schema")
|
|
344163
|
+
return false;
|
|
344164
|
+
const wrapper = object9(format.json_schema) ? format.json_schema : format.json_schema === void 0 ? format : void 0;
|
|
344165
|
+
const schema = wrapper?.schema;
|
|
344166
|
+
if (wrapper?.strict !== true || !object9(schema) || schema.type !== "object" || "$ref" in schema || schema.additionalProperties !== false || !object9(schema.properties) || !Array.isArray(schema.required))
|
|
344167
|
+
return false;
|
|
344168
|
+
const properties = schema.properties, required = schema.required, names = Object.keys(properties);
|
|
344169
|
+
if (!names.length || new Set(required).size !== required.length || required.some((name) => typeof name !== "string" || !Object.hasOwn(properties, name)))
|
|
344170
|
+
return false;
|
|
344171
|
+
return missingProperty === void 0 ? names.some((name) => !required.includes(name)) : Object.hasOwn(properties, missingProperty) && !required.includes(missingProperty);
|
|
344172
|
+
}
|
|
344153
344173
|
function lowerProviderSchema(schema, unsupportedKeywords) {
|
|
344154
344174
|
const lowered = structuredClone(schema);
|
|
344155
344175
|
const adaptations = new Set(unsupportedKeywords.filter((keyword) => keyword === "uniqueItems"));
|
|
@@ -344197,17 +344217,17 @@ function lowerProviderSchema(schema, unsupportedKeywords) {
|
|
|
344197
344217
|
}
|
|
344198
344218
|
function lowerResponseSchema(schema, unsupportedKeywords) {
|
|
344199
344219
|
const lowered = lowerProviderSchema(schema, unsupportedKeywords);
|
|
344200
|
-
if (!unsupportedKeywords.includes("rootAnyOf") || lowered.type !== "object" || lowered.additionalProperties !== false || !object9(lowered.properties) || !Array.isArray(lowered.required) || !Array.isArray(lowered.anyOf) || !lowered.anyOf.length)
|
|
344220
|
+
if (!unsupportedKeywords.includes("rootAnyOf") || lowered.type !== "object" || "$ref" in lowered || lowered.additionalProperties !== false || !object9(lowered.properties) || !Array.isArray(lowered.required) || !Array.isArray(lowered.anyOf) || !lowered.anyOf.length)
|
|
344201
344221
|
return lowered;
|
|
344202
344222
|
const properties = lowered.properties, required = lowered.required;
|
|
344203
344223
|
const names = Object.keys(properties);
|
|
344204
|
-
if (!names.length ||
|
|
344224
|
+
if (!names.length || new Set(required).size !== required.length || required.some((name) => typeof name !== "string" || !Object.hasOwn(properties, name)))
|
|
344205
344225
|
return lowered;
|
|
344206
344226
|
if (!lowered.anyOf.every((branch) => {
|
|
344207
|
-
if (!object9(branch) || branch.type !== "object" || branch.additionalProperties !== false || !object9(branch.properties) || !Array.isArray(branch.required))
|
|
344227
|
+
if (!object9(branch) || "$ref" in branch || branch.type !== "object" || branch.additionalProperties !== false || !object9(branch.properties) || !Array.isArray(branch.required))
|
|
344208
344228
|
return false;
|
|
344209
344229
|
const branchProperties = branch.properties, branchRequired = branch.required;
|
|
344210
|
-
return
|
|
344230
|
+
return new Set(branchRequired).size === branchRequired.length && branchRequired.every((name) => typeof name === "string" && Object.hasOwn(branchProperties, name)) && required.every((name) => branchRequired.includes(name)) && names.every((name) => Object.hasOwn(branchProperties, name)) && Object.keys(branchProperties).every((name) => names.includes(name));
|
|
344211
344231
|
}))
|
|
344212
344232
|
return lowered;
|
|
344213
344233
|
delete lowered.anyOf;
|
|
@@ -344235,6 +344255,7 @@ var DEFAULTS = Object.freeze({
|
|
|
344235
344255
|
providers: [],
|
|
344236
344256
|
// The verified full native-tool packet takes ~26s on a healthy community route.
|
|
344237
344257
|
requestTimeoutMs: 45e3,
|
|
344258
|
+
requestTimeoutMsSource: "default",
|
|
344238
344259
|
totalTimeoutMs: 12e4,
|
|
344239
344260
|
localTimeoutMs: 2e4
|
|
344240
344261
|
});
|
|
@@ -344341,6 +344362,8 @@ function loadRemoteInferencePolicy(options = {}) {
|
|
|
344341
344362
|
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 100 || value > maximum)
|
|
344342
344363
|
return disabled();
|
|
344343
344364
|
result[field] = value;
|
|
344365
|
+
if (field === "requestTimeoutMs")
|
|
344366
|
+
result.requestTimeoutMsSource = "explicit";
|
|
344344
344367
|
}
|
|
344345
344368
|
}
|
|
344346
344369
|
if (selected["providers"] !== void 0) {
|
|
@@ -344965,7 +344988,7 @@ function safeFailure(error, request, route) {
|
|
|
344965
344988
|
const status2 = errorStatus(error);
|
|
344966
344989
|
const chain = errorChain(error);
|
|
344967
344990
|
const upstream429 = status2 === 429 && chain.some((value) => value instanceof InferenceProviderError && value.reason === "upstream");
|
|
344968
|
-
const category = upstream429 ? "upstream_unavailable" : status2 === 429 ? "rate_limit" : status2 === 401 || status2 === 403 ? "authentication" : status2 !== void 0 && status2 >= 400 && status2 < 500 ? "request_rejected" : status2 !== void 0 && status2 >= 500 ? "upstream_unavailable" : chain.some((value) => value instanceof AttemptTimeout || object12(value) && (value.name === "TimeoutError" || value.name === "AbortError" || value.code === "ETIMEDOUT")) ? "timeout" : chain.some((value) => value instanceof EmptyInferenceResponse) ? "empty_response" : chain.some((value) => value instanceof SyntaxError || value instanceof InvalidInferenceResponse || value instanceof ExpectedInferenceResponseError || object12(value) && value.name === "OpenAIChatResponseError") ? "invalid_response" : "transport";
|
|
344991
|
+
const category = upstream429 ? "upstream_unavailable" : status2 === 429 ? "rate_limit" : status2 === 401 || status2 === 403 ? "authentication" : status2 !== void 0 && status2 >= 400 && status2 < 500 ? "request_rejected" : status2 !== void 0 && status2 >= 500 ? "upstream_unavailable" : chain.some((value) => value instanceof AttemptTimeout || object12(value) && (value.name === "TimeoutError" || value.name === "AbortError" || value.code === "ETIMEDOUT") || value instanceof Error && /^stream timeout: no response or chunk within [0-9]+s$/.test(value.message)) ? "timeout" : chain.some((value) => value instanceof EmptyInferenceResponse) ? "empty_response" : chain.some((value) => value instanceof SyntaxError || value instanceof InvalidInferenceResponse || value instanceof ExpectedInferenceResponseError || object12(value) && value.name === "OpenAIChatResponseError") ? "invalid_response" : "transport";
|
|
344969
344992
|
const validation = chain.find((value) => value instanceof ExpectedInferenceResponseError);
|
|
344970
344993
|
const providerSchemaError = chain.find((value) => value instanceof InferenceProviderError && value.reason === "unsupported_schema");
|
|
344971
344994
|
const malformedEnvelope = chain.some((value) => object12(value) && value.name === "OpenAIChatResponseError");
|
|
@@ -345258,7 +345281,7 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
|
|
|
345258
345281
|
if (!remote.chatCompletionStream)
|
|
345259
345282
|
throw new Error("Remote streaming unavailable.");
|
|
345260
345283
|
this.recordRoute(candidate, bounded3);
|
|
345261
|
-
yield* remote.chatCompletionStream(this.remoteRequest(bounded3, candidate));
|
|
345284
|
+
yield* remote.chatCompletionStream(this.remoteRequest(bounded3, candidate, deadline));
|
|
345262
345285
|
}.bind(this);
|
|
345263
345286
|
const streamBudget = Math.min(deadline - this.now(), request.timeoutMs > 0 ? request.timeoutMs : Infinity);
|
|
345264
345287
|
const raw = this.requireUsableStream(this.boundedStream(request, streamBudget, factory), request);
|
|
@@ -345503,8 +345526,14 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
|
|
|
345503
345526
|
model: route.model,
|
|
345504
345527
|
kind: route.keyless ? "keyless" : "configured"
|
|
345505
345528
|
});
|
|
345506
|
-
|
|
345507
|
-
|
|
345529
|
+
try {
|
|
345530
|
+
request.onInferenceRoute?.({ ...this.lastRoute });
|
|
345531
|
+
} catch {
|
|
345532
|
+
}
|
|
345533
|
+
try {
|
|
345534
|
+
this.options.onRoute?.({ providerId: this.lastRoute.providerId, model: this.lastRoute.model });
|
|
345535
|
+
} catch {
|
|
345536
|
+
}
|
|
345508
345537
|
this.lifecycle(request, "selected", route);
|
|
345509
345538
|
}
|
|
345510
345539
|
lifecycle(request, phase, route, error) {
|
|
@@ -345512,7 +345541,7 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
|
|
|
345512
345541
|
if (!request.onInferenceRouteLifecycle)
|
|
345513
345542
|
return;
|
|
345514
345543
|
const format = request.responseFormat ?? request.response_format;
|
|
345515
|
-
const promptOnly = route?.nativeStructuredOutput === false && (format?.type === "json_schema" || format?.type === "json_object");
|
|
345544
|
+
const promptOnly = route?.nativeStructuredOutput === false && (format?.type === "json_schema" || format?.type === "json_object") || Boolean(route && format && this.schemaRestrictions(route).includes("requiredAllProperties") && hasProviderRequiredAllPropertiesConflict(format));
|
|
345516
345545
|
const receipt = {
|
|
345517
345546
|
location: route ? "remote" : "local",
|
|
345518
345547
|
phase,
|
|
@@ -345613,8 +345642,11 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
|
|
|
345613
345642
|
return false;
|
|
345614
345643
|
const keywords = [.../* @__PURE__ */ new Set([...previous, ...added])];
|
|
345615
345644
|
const format = request.responseFormat ?? request.response_format;
|
|
345616
|
-
const
|
|
345617
|
-
|
|
345645
|
+
const newPromptOnly = route.nativeStructuredOutput !== false && added.includes("requiredAllProperties") && format && failure.unsupportedOptionalProperty !== void 0 && hasProviderRequiredAllPropertiesConflict(format, failure.unsupportedOptionalProperty);
|
|
345646
|
+
if (added.includes("requiredAllProperties") && !newPromptOnly)
|
|
345647
|
+
return false;
|
|
345648
|
+
const changesFormat = newPromptOnly || format && JSON.stringify(lowerProviderResponseFormat(format, keywords)) !== JSON.stringify(lowerProviderResponseFormat(format, previous));
|
|
345649
|
+
const changesTools = request.tools.some((tool) => JSON.stringify(lowerProviderSchema(tool.function.parameters, keywords)) !== JSON.stringify(lowerProviderSchema(tool.function.parameters, previous)));
|
|
345618
345650
|
if (!changesFormat && !changesTools)
|
|
345619
345651
|
return false;
|
|
345620
345652
|
if (nativeSchemaRestrictions.size >= 256)
|
|
@@ -345627,7 +345659,7 @@ var RemoteInferenceFallback = class _RemoteInferenceFallback {
|
|
|
345627
345659
|
const keywords = this.schemaRestrictions(route);
|
|
345628
345660
|
const format = request.responseFormat ?? request.response_format;
|
|
345629
345661
|
const structured = format?.type === "json_schema" || format?.type === "json_object";
|
|
345630
|
-
const promptOnly = route.nativeStructuredOutput === false && structured;
|
|
345662
|
+
const promptOnly = route.nativeStructuredOutput === false && structured || keywords.includes("requiredAllProperties") && format !== void 0 && hasProviderRequiredAllPropertiesConflict(format);
|
|
345631
345663
|
if (!keywords.length && !structured)
|
|
345632
345664
|
return request;
|
|
345633
345665
|
const loweredFormat = format ? lowerProviderResponseFormat(format, keywords) : void 0;
|
|
@@ -345659,7 +345691,7 @@ ${line}`).join("");
|
|
|
345659
345691
|
}) } : {}
|
|
345660
345692
|
};
|
|
345661
345693
|
}
|
|
345662
|
-
remoteRequest(request, route) {
|
|
345694
|
+
remoteRequest(request, route, streamDeadline) {
|
|
345663
345695
|
const prepared = this.prepareModelContract(request, route);
|
|
345664
345696
|
const { numCtx: _numCtx, num_ctx: _num_ctx, localAdmissionFailure: _failure, ...host } = prepared;
|
|
345665
345697
|
const wire = this.scrubber(route)({
|
|
@@ -345670,6 +345702,8 @@ ${line}`).join("");
|
|
|
345670
345702
|
responseFormat: prepared.responseFormat,
|
|
345671
345703
|
response_format: prepared.response_format
|
|
345672
345704
|
});
|
|
345705
|
+
const nativeIdle = streamDeadline !== void 0 && request.nativePlanningStreamIdleTimeoutMs === 9e4 && this.policy.requestTimeoutMsSource === "default";
|
|
345706
|
+
const timeoutMs = nativeIdle ? Math.min(9e4, request.timeoutMs > 0 ? request.timeoutMs : Infinity, Math.max(1, streamDeadline - this.now())) : Math.min(request.timeoutMs, this.policy.requestTimeoutMs);
|
|
345673
345707
|
return {
|
|
345674
345708
|
...host,
|
|
345675
345709
|
...wire,
|
|
@@ -345683,7 +345717,7 @@ ${line}`).join("");
|
|
|
345683
345717
|
remoteClientIdentity: route.keyless?.clientIdentity === "opencode" && route.baseUrl === OPENCODE_INFERENCE_BASE_URL ? "opencode" : void 0,
|
|
345684
345718
|
remoteOpenCodeApiShape: route.openCodeApiShape,
|
|
345685
345719
|
...route.keyless?.directAnswer ? { chatTemplateKwargs: { enable_thinking: false } } : {},
|
|
345686
|
-
timeoutMs
|
|
345720
|
+
timeoutMs
|
|
345687
345721
|
};
|
|
345688
345722
|
}
|
|
345689
345723
|
compatible(request, route, includeCooling = false) {
|
package/docs/DISCOVERY.json
CHANGED
|
@@ -33370,6 +33370,42 @@
|
|
|
33370
33370
|
}
|
|
33371
33371
|
]
|
|
33372
33372
|
},
|
|
33373
|
+
{
|
|
33374
|
+
"id": "guide.work-orders-evidence-telegram-native-planning-live-20261013",
|
|
33375
|
+
"kind": "guide",
|
|
33376
|
+
"title": "Telegram Native Planning Live 20261013",
|
|
33377
|
+
"summary": "Bundled Omnius documentation artifact: docs/work-orders/evidence/telegram-native-planning-live-20261013.json.",
|
|
33378
|
+
"keywords": [
|
|
33379
|
+
"work",
|
|
33380
|
+
"orders",
|
|
33381
|
+
"evidence",
|
|
33382
|
+
"telegram",
|
|
33383
|
+
"native",
|
|
33384
|
+
"planning",
|
|
33385
|
+
"live",
|
|
33386
|
+
"20261013",
|
|
33387
|
+
"json"
|
|
33388
|
+
],
|
|
33389
|
+
"maturity": "internal",
|
|
33390
|
+
"audiences": [
|
|
33391
|
+
"maintainer",
|
|
33392
|
+
"large-context-agent"
|
|
33393
|
+
],
|
|
33394
|
+
"layer": "documentation",
|
|
33395
|
+
"interfaces": [
|
|
33396
|
+
{
|
|
33397
|
+
"type": "file",
|
|
33398
|
+
"target": "docs/work-orders/evidence/telegram-native-planning-live-20261013.json"
|
|
33399
|
+
}
|
|
33400
|
+
],
|
|
33401
|
+
"references": [
|
|
33402
|
+
{
|
|
33403
|
+
"type": "documentation",
|
|
33404
|
+
"target": "docs/work-orders/evidence/telegram-native-planning-live-20261013.json",
|
|
33405
|
+
"relation": "canonical-artifact"
|
|
33406
|
+
}
|
|
33407
|
+
]
|
|
33408
|
+
},
|
|
33373
33409
|
{
|
|
33374
33410
|
"id": "guide.work-orders-evidence-terminal-review-contract-probe-20261012",
|
|
33375
33411
|
"kind": "guide",
|
|
@@ -38327,6 +38363,43 @@
|
|
|
38327
38363
|
}
|
|
38328
38364
|
]
|
|
38329
38365
|
},
|
|
38366
|
+
{
|
|
38367
|
+
"id": "guide.work-orders-wo-live-native-cascade-ui-freeze-20261013-uppercase",
|
|
38368
|
+
"kind": "guide",
|
|
38369
|
+
"title": "Live native-planning cascade and TUI responsiveness",
|
|
38370
|
+
"summary": "Status: implementation and live packaged acceptance complete; operator publication/restart pending. Follow-up to the operator’s live 1.0.851 report after the built-in free-model integration; do not substitute another ping-only check.",
|
|
38371
|
+
"keywords": [
|
|
38372
|
+
"work",
|
|
38373
|
+
"orders",
|
|
38374
|
+
"WO",
|
|
38375
|
+
"live",
|
|
38376
|
+
"native",
|
|
38377
|
+
"cascade",
|
|
38378
|
+
"ui",
|
|
38379
|
+
"freeze",
|
|
38380
|
+
"20261013",
|
|
38381
|
+
"md"
|
|
38382
|
+
],
|
|
38383
|
+
"maturity": "internal",
|
|
38384
|
+
"audiences": [
|
|
38385
|
+
"maintainer",
|
|
38386
|
+
"large-context-agent"
|
|
38387
|
+
],
|
|
38388
|
+
"layer": "documentation",
|
|
38389
|
+
"interfaces": [
|
|
38390
|
+
{
|
|
38391
|
+
"type": "file",
|
|
38392
|
+
"target": "docs/work-orders/WO-live-native-cascade-ui-freeze-20261013.md"
|
|
38393
|
+
}
|
|
38394
|
+
],
|
|
38395
|
+
"references": [
|
|
38396
|
+
{
|
|
38397
|
+
"type": "documentation",
|
|
38398
|
+
"target": "docs/work-orders/WO-live-native-cascade-ui-freeze-20261013.md",
|
|
38399
|
+
"relation": "canonical-artifact"
|
|
38400
|
+
}
|
|
38401
|
+
]
|
|
38402
|
+
},
|
|
38330
38403
|
{
|
|
38331
38404
|
"id": "guide.work-orders-wo-native-transport-fresh-install-20261012-uppercase",
|
|
38332
38405
|
"kind": "guide",
|
package/docs/DISCOVERY.md
CHANGED
|
@@ -544,6 +544,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
544
544
|
| `guide.work-orders-evidence-public-review-after-20261012` | Public Review After 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/public-review-after-20261012.json. |
|
|
545
545
|
| `guide.work-orders-evidence-public-review-before-20261012` | Public Review Before 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/public-review-before-20261012.json. |
|
|
546
546
|
| `guide.work-orders-evidence-telegram-all-free-live-20261013` | Telegram All Free Live 20261013 | Bundled Omnius documentation artifact: docs/work-orders/evidence/telegram-all-free-live-20261013.json. |
|
|
547
|
+
| `guide.work-orders-evidence-telegram-native-planning-live-20261013` | Telegram Native Planning Live 20261013 | Bundled Omnius documentation artifact: docs/work-orders/evidence/telegram-native-planning-live-20261013.json. |
|
|
547
548
|
| `guide.work-orders-evidence-terminal-review-contract-probe-20261012` | Terminal Review Contract Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/terminal-review-contract-probe-20261012.json. |
|
|
548
549
|
| `guide.work-orders-evidence-terminal-review-error-probe-20261012` | Terminal Review Error Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/terminal-review-error-probe-20261012.json. |
|
|
549
550
|
| `guide.work-orders-evidence-terminal-review-schema-repair-probe-20261012` | Terminal Review Schema Repair Probe 20261012 | Bundled Omnius documentation artifact: docs/work-orders/evidence/terminal-review-schema-repair-probe-20261012.json. |
|
|
@@ -675,6 +676,7 @@ Daemon equivalents are `GET /v1/discovery/bootstrap`, `GET /v1/discovery?q=<inte
|
|
|
675
676
|
| `guide.work-orders-wo-fallback-reply-contracts-20261012-uppercase` | Fallback reply contracts and live Telegram regressions | Status: implemented and verified in source and the freshly installed package. Publishing and restarting the active bot remain user-owned. The subsequent OpenCode-first capability ordering is tracked in its work order; Telegram progress presentation remains explicitly deferred. |
|
|
676
677
|
| `guide.work-orders-wo-inference-fallback-20261012-uppercase` | Local inference outage fallback | Status: source implementation complete and verified. Installed-runtime activation is separate; the running daemon has not been upgraded or restarted. |
|
|
677
678
|
| `guide.work-orders-wo-keyless-fallback-coverage-20261012-uppercase` | Keyless automatic fallback coverage and compatibility | Status: implemented and verified. Publication and replacement of the running bot remain user-owned; the running bot has not been restarted by this work. |
|
|
679
|
+
| `guide.work-orders-wo-live-native-cascade-ui-freeze-20261013-uppercase` | Live native-planning cascade and TUI responsiveness | Status: implementation and live packaged acceptance complete; operator publication/restart pending. Follow-up to the operator’s live 1.0.851 report after the built-in free-model integration; do not substitute another ping-only check. |
|
|
678
680
|
| `guide.work-orders-wo-native-transport-fresh-install-20261012-uppercase` | Native transport failure in the fresh npm installation gate | Status: implemented and verified. Publication remains with the user. |
|
|
679
681
|
| `guide.work-orders-wo-opencode-all-free-models-20261012-uppercase` | All OpenCode free models in the fallback cascade | Status: implemented and verified. Publication and runtime replacement remain with the user. The subsequent live-reply fixes are tracked separately in fallback reply contracts. The original preferred-first/provider-fairness ordering recorded below has been superseded by benchmark-informed priority at the user's subsequent request. |
|
|
680
682
|
| `guide.work-orders-wo-opencode-production-compatibility-20261012-uppercase` | OpenCode production request compatibility | Status: implemented and verified. Telegram presentation is also completed. Publication and active-runtime restart remain with the operator. Step's native attention-format compatibility remains unverified after a provider limit; the working cascade can continue to other compatible models. |
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Live native-planning cascade and TUI responsiveness
|
|
2
|
+
|
|
3
|
+
Status: implementation and live packaged acceptance complete; operator publication/restart pending. Follow-up to the operator’s live 1.0.851 report after the
|
|
4
|
+
built-in free-model integration; do not substitute another ping-only check.
|
|
5
|
+
|
|
6
|
+
## Actual live anchors
|
|
7
|
+
|
|
8
|
+
- PID 338848, working directory `telegram_test`, version 1.0.851, bundle SHA256
|
|
9
|
+
`93c9f8bae03b447f603c3245a796b32b7ee51da12389a99929489dcb2335ca27`.
|
|
10
|
+
This matches the previously validated installed candidate: stale deployment
|
|
11
|
+
does not explain the discrepancy.
|
|
12
|
+
- Public input 1002 in the operator’s Case Theory chat entered processing at
|
|
13
|
+
2026-10-13T08:38:34.455Z. The next input 1003 entered processing at
|
|
14
|
+
08:44:23.071Z and produced a valid observer/no-reply decision at 08:44:39.619Z.
|
|
15
|
+
- Read-only inspection of the live terminal’s expanded inference block found
|
|
16
|
+
`router-native-requirements`, 272 retained control rows, 4m37s duration:
|
|
17
|
+
local HTTP503 → Muse HTTP400 twice → Step upstream-unavailable HTTP429 →
|
|
18
|
+
Ling upstream-unavailable HTTP429 → MiMo, with first output reported at 277.2s.
|
|
19
|
+
The display reported successful completion with 1207 tokens. Provider400 bodies
|
|
20
|
+
were not retained in the existing durable logs.
|
|
21
|
+
- The separate 16s router block supplied by the operator is a successful
|
|
22
|
+
Muse schema repair, followed by a valid no-reply decision. It is not the
|
|
23
|
+
failing native cascade.
|
|
24
|
+
- Current TUI stdout/stderr are only `/dev/pts/6`; current provider-phase
|
|
25
|
+
diagnostics are not persisted. Existing root crash/session logs predate
|
|
26
|
+
this restart. Broker access logs show422/503 local chat failures without
|
|
27
|
+
model/request correlation, insufficient to classify those refusals.
|
|
28
|
+
- Process sampled at ~1GB RSS and ~12 minutes CPU in 20 minutes of uptime; current
|
|
29
|
+
updates and accepted replies show it is not permanently deadlocked.
|
|
30
|
+
A 3.3GB deferred-memory spool exists, but inspected append/maintenance paths
|
|
31
|
+
do not read it wholesale; do not attribute the freeze to it without proof.
|
|
32
|
+
|
|
33
|
+
## Ordered repairs and acceptance
|
|
34
|
+
|
|
35
|
+
1. Reproduce the actual native-requirement producer and independent critic
|
|
36
|
+
through the installed bundle using invented source text and active tasks.
|
|
37
|
+
Keep the full original host schema/owner/scope validator and prohibit
|
|
38
|
+
local inference, native action dispatch and Telegram API sends. Capture
|
|
39
|
+
bounded safe upstream failure diagnostics for these synthetic requests.
|
|
40
|
+
2. Repair evidenced native grammar/request incompatibilities at the shared
|
|
41
|
+
phase boundary. Preserve host semantic validation, capability/authority,
|
|
42
|
+
provenance and original contract coupling. Validate real responses; no
|
|
43
|
+
mocked availability claim and no unconditional HTTP400/422 bypass.
|
|
44
|
+
3. Remove repeated formatting of unchanged retained inference transcripts
|
|
45
|
+
during TUI repaint. Preserve full read mode, resize, thinking visibility,
|
|
46
|
+
title time/blink, retention bounds, phase reuse and input handling. Test
|
|
47
|
+
repeated repaint work with large completed native transcripts.
|
|
48
|
+
4. Add safe durable phase/route diagnostics so future live failures can be
|
|
49
|
+
traced without extracting terminal rows. Do not persist credentials,
|
|
50
|
+
endpoint keys, raw user prompts or private generated transcripts. Optional
|
|
51
|
+
display observers must not fail/replay an inference request.
|
|
52
|
+
5. Run relevant regressions, real native proposal/critic acceptance, rebuild
|
|
53
|
+
and make scoped verified commits to the tracked branch. Preserve all
|
|
54
|
+
unrelated dirty changes. Publication/restart remains operator-owned.
|
|
55
|
+
|
|
56
|
+
The previous all-model ping harness established attention/reply/review behavior
|
|
57
|
+
at healthy moments; it did not cover native task projection/planning. This
|
|
58
|
+
follow-up closes that coverage gap rather than reasserting the ping results.
|
|
59
|
+
|
|
60
|
+
## Reproduced causes and repairs
|
|
61
|
+
|
|
62
|
+
The installed native producer reproduced `uniqueItems` rejection, then root
|
|
63
|
+
`anyOf` rejection twice. The optional-field repair exposed the next exact
|
|
64
|
+
upstream error: every property must be required (`activeScopeId` was named).
|
|
65
|
+
The host contract deliberately permits omitted fields; making them required
|
|
66
|
+
would alter its semantics. Recovery now learns that precise incompatibility
|
|
67
|
+
per model/endpoint/API, omits only native schema framing, and preserves the
|
|
68
|
+
original full host schema, parser, tool arguments and independent critic.
|
|
69
|
+
An adaptation must change the previous wire schema before it can justify
|
|
70
|
+
another retry. Recovery remains bounded by three distinct restrictions.
|
|
71
|
+
|
|
72
|
+
A controlled prompt-only request also exposed true raw-stream inactivity:
|
|
73
|
+
HTTP200 followed by the backend's 45-second idle watchdog. It was incorrectly
|
|
74
|
+
reported as generic transport failure. Native planning/review streams now
|
|
75
|
+
allow 90 seconds under the default policy, capped by caller/aggregate deadlines;
|
|
76
|
+
explicit timeout settings and ordinary chat/unary/local paths retain their
|
|
77
|
+
limits. Exact watchdog failures report `timeout`. No undocumented reasoning
|
|
78
|
+
flags were added.
|
|
79
|
+
|
|
80
|
+
The controlled 90-second diagnostic accepted a real 7-obligation/two-method
|
|
81
|
+
proposal through the original parser and admitted an independent critic.
|
|
82
|
+
This diagnostic intentionally omitted native framing at the wire; it is
|
|
83
|
+
recorded separately from automatic production-adapter acceptance.
|
|
84
|
+
|
|
85
|
+
[Safe live receipts](evidence/telegram-native-planning-live-20261013.json)
|
|
86
|
+
contain hashes/metadata for invented fixtures, not private chat transcripts.
|
|
87
|
+
|
|
88
|
+
## Delivered coherent repairs
|
|
89
|
+
|
|
90
|
+
- `e65ed677`: cache unchanged TUI inference transcript rows; 61 focused checks
|
|
91
|
+
and CLI build passed. This removes repeated formatting work; it does not
|
|
92
|
+
establish that repaint was the sole cause of the reported freeze.
|
|
93
|
+
- `04b4c5e7`: private bounded route traces at
|
|
94
|
+
`.omnius/telegram-inference/routes.jsonl` and isolated optional observers.
|
|
95
|
+
Files use 0600, the directory 0700, pending observations 128 and files 5 MiB
|
|
96
|
+
with one rotated archive. Trace failure cannot fail/replay the request.
|
|
97
|
+
Backend observer 14, trace 20, Bridge integration 22 checks passed; the
|
|
98
|
+
combined focused CLI run passed 105 checks. Stop/custody fences remain.
|
|
99
|
+
|
|
100
|
+
- `42419cd2`: precise optional-schema recovery, ineffective-retry prevention,
|
|
101
|
+
scoped default native stream allowance and correct timeout classification.
|
|
102
|
+
Automatic compiled-workspace live acceptance passed both native phases:
|
|
103
|
+
three distinct HTTP400 capability errors repaired on Muse, then original
|
|
104
|
+
proposal validation and independent critic acceptance, without model failover.
|
|
105
|
+
Final focused verification passed 531 orchestrator + 112 CLI = 643 checks.
|
|
106
|
+
Full workspace rebuild, artifact audit and compiler-free fresh npm install
|
|
107
|
+
passed. The currently running PID 338848 still uses the old `93c9f8...`
|
|
108
|
+
bundle; this pass has neither published nor restarted it.
|
|
109
|
+
|
|
110
|
+
## Broader regression limits
|
|
111
|
+
|
|
112
|
+
The expanded run found four transport-fixture and two native-intake guard
|
|
113
|
+
failures. An isolated source archive of `e65ed677`, with the original Runner
|
|
114
|
+
rather than dirty/compiled workspace output, reproduced all six failures.
|
|
115
|
+
Three transport fixtures omit the previously required
|
|
116
|
+
`observationSourceMessageIds`; one ambiguity expectation predates the
|
|
117
|
+
advisory-policy change. The two intake guard cases have an existing objective
|
|
118
|
+
contract retention discrepancy. They are recorded as baseline failures and
|
|
119
|
+
were not silently changed to claim a green full suite.
|
|
120
|
+
|
|
121
|
+
## Final installed-package acceptance
|
|
122
|
+
|
|
123
|
+
The freshly installed tarball used bundle SHA256
|
|
124
|
+
`36c6a7172915a3edc9dc2a355ee9628f64a2d865e8e0cc3547b10e88d37a45e2`.
|
|
125
|
+
A fresh process automatically recovered three distinct schema HTTP400s on Muse
|
|
126
|
+
and retained the selected model throughout. The native proposal took 69.1 seconds,
|
|
127
|
+
parsed five obligations/two methods with new-task continuity; the independent
|
|
128
|
+
critic took 103.9 seconds overall, including 64.6 seconds before HTTP headers,
|
|
129
|
+
and was admitted with method verdict `accept`. Both phases retained the
|
|
130
|
+
original host schemas. Five actual generation POSTs were made; no model or
|
|
131
|
+
metadata reply was mocked, and no local inference, native tools or Telegram
|
|
132
|
+
API sends were performed. This validates production inference/validation
|
|
133
|
+
boundaries, not a fresh Telegram delivery ACK or cross-application task.
|
|
134
|
+
|
|
135
|
+
Reproduce against a fresh isolated installation:
|
|
136
|
+
|
|
137
|
+
```sh
|
|
138
|
+
node scripts/live-telegram-native-requirements-harness.mjs --run \
|
|
139
|
+
--bundle /path/to/isolated/install/lib/node_modules/omnius/dist/index.js \
|
|
140
|
+
--output /tmp/omnius-native-planning-live.json
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The default harness pins Muse and denies alternative models, local inference,
|
|
144
|
+
Telegram API calls and native action dispatch. `--inspect-only` makes no
|
|
145
|
+
network requests. Optional diagnostic flags are recorded separately and are
|
|
146
|
+
not substituted for the automatic installed-package acceptance above.
|