@mininglamp-oss/octo-runtime-client 0.0.0-stage → 1.1.11

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 (87) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +38 -2
  3. package/build-info.json +5 -0
  4. package/dist/async-question-reply.d.ts +30 -0
  5. package/dist/async-question-reply.js +199 -0
  6. package/dist/browser.d.ts +1 -0
  7. package/dist/browser.js +1 -0
  8. package/dist/client.d.ts +10 -0
  9. package/dist/client.js +465 -0
  10. package/dist/index.d.ts +6 -0
  11. package/dist/index.js +6 -0
  12. package/dist/internal.d.ts +4 -0
  13. package/dist/internal.js +5 -0
  14. package/dist/invocation-lifecycle.d.ts +59 -0
  15. package/dist/invocation-lifecycle.js +287 -0
  16. package/dist/notification.d.ts +1 -0
  17. package/dist/notification.js +1 -0
  18. package/dist/protocol.d.ts +1 -0
  19. package/dist/protocol.js +1 -0
  20. package/dist/runtime-path.d.ts +21 -0
  21. package/dist/runtime-path.js +138 -0
  22. package/dist/startup-catalog.d.ts +8 -0
  23. package/dist/startup-catalog.js +65 -0
  24. package/dist/startup-diagnostics.d.ts +82 -0
  25. package/dist/startup-diagnostics.js +371 -0
  26. package/dist/submission-error.d.ts +10 -0
  27. package/dist/submission-error.js +23 -0
  28. package/dist/types.d.ts +72 -0
  29. package/dist/types.js +10 -0
  30. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/actmode.d.ts +4 -0
  31. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/actmode.js +36 -0
  32. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/adapter-metadata.d.ts +7 -0
  33. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/adapter-metadata.js +1 -0
  34. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/browser.d.ts +7 -0
  35. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/browser.js +6 -0
  36. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context-catalog.d.ts +11 -0
  37. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context-catalog.js +33 -0
  38. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context-configuration.d.ts +5 -0
  39. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context-configuration.js +58 -0
  40. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context-hash.d.ts +2 -0
  41. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context-hash.js +5 -0
  42. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context.d.ts +29 -0
  43. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/context.js +566 -0
  44. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/execution-plan.d.ts +3 -0
  45. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/execution-plan.js +80 -0
  46. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/experience.d.ts +4 -0
  47. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/experience.js +166 -0
  48. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/failure.d.ts +82 -0
  49. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/failure.js +562 -0
  50. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/generated/protocol-types.d.ts +3022 -0
  51. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/generated/protocol-types.js +6 -0
  52. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/index.d.ts +124 -0
  53. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/index.js +709 -0
  54. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/invoke-input.d.ts +129 -0
  55. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/invoke-input.js +177 -0
  56. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/invoke-size.d.ts +3 -0
  57. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/invoke-size.js +11 -0
  58. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/json-size.d.ts +2 -0
  59. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/json-size.js +91 -0
  60. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/model-context.d.ts +3 -0
  61. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/model-context.js +9 -0
  62. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/multimodal.d.ts +15 -0
  63. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/multimodal.js +166 -0
  64. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/notification.d.ts +2 -0
  65. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/notification.js +137 -0
  66. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/questions.d.ts +9 -0
  67. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/questions.js +84 -0
  68. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/run-protocol.d.ts +20 -0
  69. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/run-protocol.js +294 -0
  70. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/runtime-selection.d.ts +3 -0
  71. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/runtime-selection.js +68 -0
  72. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/service-processes.d.ts +5 -0
  73. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/service-processes.js +65 -0
  74. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/stream-limits.d.ts +27 -0
  75. package/node_modules/@mininglamp-oss/octo-runtime-protocol/dist/stream-limits.js +56 -0
  76. package/node_modules/@mininglamp-oss/octo-runtime-protocol/package.json +15 -0
  77. package/package.json +55 -4
  78. package/schema/context-configuration-fixtures.json +1219 -0
  79. package/schema/context-fixtures.json +5988 -0
  80. package/schema/kernel-client.behavior.json +56 -0
  81. package/schema/kernel-ipc-fixtures.json +53 -0
  82. package/schema/kernel-ipc.schema.json +538 -0
  83. package/schema/native-invoke-fixtures.json +116 -0
  84. package/schema/protocol.schema.json +4525 -0
  85. package/schema/run-protocol-fixtures.json +761 -0
  86. package/schema/runtime-selection-fixtures.json +663 -0
  87. package/schema/session-name-fixtures.json +191 -0
@@ -0,0 +1,80 @@
1
+ import { assertContextEnvelope, assertContextEnvs, assertResolvedExecutionPlan } from "./context.js";
2
+ function executionValues(context) {
3
+ const result = {};
4
+ for (const item of [...context.items].sort((a, b) => `${a.namespace}/${a.name}` < `${b.namespace}/${b.name}`
5
+ ? -1
6
+ : `${a.namespace}/${a.name}` > `${b.namespace}/${b.name}`
7
+ ? 1
8
+ : 0)) {
9
+ if (item.namespace === "octo.execution" &&
10
+ ["adapter", "workspace", "limits", "envs", "mcp", "actmode"].includes(item.name))
11
+ result[item.name] = item.payload;
12
+ if (item.namespace === "octo.security" && item.name === "approval_policy")
13
+ result.approval_policy = item.payload;
14
+ if (item.namespace === "octo.runtime" && item.name === "selection")
15
+ result.runtime = item.payload;
16
+ if (item.namespace === "octo.execution" && item.name === "model") {
17
+ if (isObject(item.payload.selection))
18
+ result.model = item.payload.selection;
19
+ if (isObject(item.payload.reasoning))
20
+ result.reasoning = item.payload.reasoning;
21
+ }
22
+ }
23
+ return result;
24
+ }
25
+ /** 验证有效 Context 与冻结执行计划逐项一致;不匹配时禁止进入资源准备。 */
26
+ export function assertFrozenContextPlan(context, plan) {
27
+ assertContextEnvelope(context);
28
+ assertResolvedExecutionPlan(plan);
29
+ const execution = executionValues(context);
30
+ const match = (field, property, actual) => {
31
+ if (execution[field]?.[property] !== actual)
32
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
33
+ };
34
+ match("adapter", "type", plan.adapter_type);
35
+ match("adapter", "provider_agent_id", plan.provider_agent_id);
36
+ const workspace = execution.workspace;
37
+ if (!workspace)
38
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
39
+ if (workspace.mode === "fixed") {
40
+ match("workspace", "path", plan.workdir);
41
+ if (plan.workspace &&
42
+ (plan.workspace.mode !== "fixed" || plan.workspace.path !== workspace.path))
43
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
44
+ }
45
+ if (workspace.mode === "random" && (plan.workdir !== "" || plan.workspace?.mode !== "random"))
46
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
47
+ if (workspace.mode === "none" &&
48
+ (plan.agent_source !== "preset" || plan.workdir || plan.workspace?.mode !== "none"))
49
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
50
+ match("approval_policy", "mode", plan.approval_mode);
51
+ match("model", "id", plan.model);
52
+ match("reasoning", "effort", plan.effort);
53
+ match("actmode", "mode", plan.actmode);
54
+ const canonical = (value) => JSON.stringify(value, function (_key, child) {
55
+ return isObject(child)
56
+ ? Object.fromEntries(Object.keys(child)
57
+ .sort()
58
+ .map((key) => [key, child[key]]))
59
+ : child;
60
+ });
61
+ if (canonical(execution.mcp ?? { mcpServers: {} }) !== canonical(plan.mcp ?? { mcpServers: {} }))
62
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
63
+ const envs = execution.envs ?? { env_variables: [] };
64
+ assertContextEnvs(envs);
65
+ const plannedEnvs = new Map((plan.envs?.env_variables ?? []).map((entry) => [entry.key, entry.value]));
66
+ if (envs.env_variables.length !== plannedEnvs.size ||
67
+ envs.env_variables.some((entry) => plannedEnvs.get(entry.key) !== entry.value))
68
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
69
+ const limits = execution.limits ?? {};
70
+ for (const property of new Set([
71
+ ...Object.keys(limits),
72
+ ...Object.keys(plan.runtime_limits ?? {})
73
+ ])) {
74
+ if (limits[property] !== plan.runtime_limits?.[property])
75
+ throw new TypeError("CONTEXT_PLAN_MISMATCH");
76
+ }
77
+ }
78
+ function isObject(value) {
79
+ return value !== null && typeof value === "object" && !Array.isArray(value);
80
+ }
@@ -0,0 +1,4 @@
1
+ type Payload = Record<string, unknown>;
2
+ export declare const PROVIDER_DIAGNOSTIC_MAX_BYTES = 2048;
3
+ export declare function assertExperiencePayload(type: string, payload: Payload): void;
4
+ export {};
@@ -0,0 +1,166 @@
1
+ export const PROVIDER_DIAGNOSTIC_MAX_BYTES = 2048;
2
+ const kinds = new Set([
3
+ "starting",
4
+ "thinking",
5
+ "executing_tool",
6
+ "responding",
7
+ "waiting_approval",
8
+ "waiting_input",
9
+ "compacting",
10
+ "retrying",
11
+ "working"
12
+ ]);
13
+ const terminal = new Set(["completed", "failed", "cancelled"]);
14
+ function record(value) {
15
+ return typeof value === "object" && value !== null && !Array.isArray(value);
16
+ }
17
+ function string(value) {
18
+ if (typeof value !== "string" || value.length === 0 || Array.from(value).length > 191)
19
+ throw new TypeError("experience identifier must contain 1..191 characters");
20
+ }
21
+ function integer(value, minimum = 0) {
22
+ if (!Number.isSafeInteger(value) || Number(value) < minimum)
23
+ throw new TypeError("experience count must be a safe non-negative integer");
24
+ }
25
+ function fields(payload, allowed, required) {
26
+ if (Object.keys(payload).some((key) => !allowed.includes(key)) ||
27
+ required.some((key) => !(key in payload)))
28
+ throw new TypeError("experience payload contains unknown or missing fields");
29
+ }
30
+ function info(value) {
31
+ if (!record(value))
32
+ throw new TypeError("activity info must be an object");
33
+ fields(value, ["messageKey", "params", "attempt", "retryAfterMs"], []);
34
+ if (value.messageKey !== undefined)
35
+ string(value.messageKey);
36
+ if (value.params !== undefined &&
37
+ (!record(value.params) ||
38
+ Object.values(value.params).some((item) => !["string", "number", "boolean"].includes(typeof item))))
39
+ throw new TypeError("activity params must contain scalar values");
40
+ if (value.attempt !== undefined)
41
+ integer(value.attempt, 1);
42
+ if (value.retryAfterMs !== undefined)
43
+ integer(value.retryAfterMs);
44
+ }
45
+ export function assertExperiencePayload(type, payload) {
46
+ switch (type) {
47
+ case "activity.started": {
48
+ fields(payload, ["activityId", "kind", "subject", "source", "info", "startedAtMs"], ["activityId", "kind", "subject", "source", "info"]);
49
+ string(payload.activityId);
50
+ if (!kinds.has(String(payload.kind)) ||
51
+ !["provider", "harness"].includes(String(payload.source)))
52
+ throw new TypeError("invalid activity kind or source");
53
+ if (!record(payload.subject) ||
54
+ !["run", "message", "tool", "interaction"].includes(String(payload.subject.type)))
55
+ throw new TypeError("invalid activity subject");
56
+ fields(payload.subject, ["type", "id"], payload.subject.type === "run" ? ["type"] : ["type", "id"]);
57
+ if (payload.subject.type === "run" && payload.subject.id !== undefined)
58
+ throw new TypeError("run subject cannot contain id");
59
+ if (payload.subject.type !== "run")
60
+ string(payload.subject.id);
61
+ info(payload.info);
62
+ if (payload.startedAtMs !== undefined)
63
+ integer(payload.startedAtMs);
64
+ break;
65
+ }
66
+ case "activity.updated":
67
+ fields(payload, ["activityId", "info"], ["activityId", "info"]);
68
+ string(payload.activityId);
69
+ info(payload.info);
70
+ break;
71
+ case "activity.finished":
72
+ fields(payload, ["activityId", "status", "endedAtMs"], ["activityId", "status"]);
73
+ string(payload.activityId);
74
+ if (!terminal.has(String(payload.status)) && payload.status !== "superseded")
75
+ throw new TypeError("invalid activity terminal");
76
+ if (payload.endedAtMs !== undefined)
77
+ integer(payload.endedAtMs);
78
+ break;
79
+ case "plan.updated":
80
+ fields(payload, ["planId", "revision", "explanation", "steps"], ["planId", "revision", "explanation", "steps"]);
81
+ string(payload.planId);
82
+ integer(payload.revision, 1);
83
+ if (payload.explanation !== null &&
84
+ (typeof payload.explanation !== "string" || payload.explanation.length > 4096))
85
+ throw new TypeError("invalid plan explanation");
86
+ if (!Array.isArray(payload.steps) || payload.steps.length > 200)
87
+ throw new TypeError("invalid plan steps");
88
+ for (const step of payload.steps) {
89
+ if (!record(step))
90
+ throw new TypeError("invalid plan step");
91
+ fields(step, ["text", "status"], ["text", "status"]);
92
+ if (typeof step.text !== "string" ||
93
+ !step.text ||
94
+ step.text.length > 4096 ||
95
+ !["pending", "in_progress", "completed", "blocked", "cancelled"].includes(String(step.status)))
96
+ throw new TypeError("invalid plan step");
97
+ }
98
+ break;
99
+ case "tool_call.progress": {
100
+ fields(payload, ["id", "progress"], ["id", "progress"]);
101
+ string(payload.id);
102
+ if (!record(payload.progress))
103
+ throw new TypeError("invalid tool progress");
104
+ const progress = payload.progress;
105
+ fields(progress, ["message", "completed", "total", "unit"], []);
106
+ if (progress.message !== undefined &&
107
+ (typeof progress.message !== "string" || progress.message.length > 4096))
108
+ throw new TypeError("invalid progress message");
109
+ if (["completed", "total", "unit"].some((key) => key in progress)) {
110
+ integer(progress.completed);
111
+ integer(progress.total, 1);
112
+ if (progress.completed > progress.total ||
113
+ !["items", "bytes", "steps"].includes(String(progress.unit)))
114
+ throw new TypeError("invalid progress quantity");
115
+ }
116
+ break;
117
+ }
118
+ case "run.notice": {
119
+ fields(payload, ["noticeId", "code", "severity", "params", "relatedActivityId", "relatedItemId"], ["noticeId", "code", "severity", "params"]);
120
+ string(payload.noticeId);
121
+ if (!["info", "warning"].includes(String(payload.severity)) || !record(payload.params))
122
+ throw new TypeError("invalid notice");
123
+ const params = payload.params;
124
+ switch (payload.code) {
125
+ case "context_compacted":
126
+ fields(params, [], []);
127
+ break;
128
+ case "retry_scheduled":
129
+ fields(params, ["attempt", "retryAfterMs"], ["attempt"]);
130
+ integer(params.attempt, 1);
131
+ if (params.retryAfterMs !== undefined)
132
+ integer(params.retryAfterMs);
133
+ break;
134
+ case "model_rerouted":
135
+ fields(params, ["fromModel", "toModel", "reasonCode"], ["fromModel", "toModel"]);
136
+ string(params.fromModel);
137
+ string(params.toModel);
138
+ if (params.reasonCode !== undefined)
139
+ string(params.reasonCode);
140
+ break;
141
+ case "config_warning":
142
+ fields(params, ["warningCode"], ["warningCode"]);
143
+ string(params.warningCode);
144
+ break;
145
+ case "provider_diagnostic":
146
+ fields(params, ["adapter", "diagnosticId", "category", "message"], ["adapter", "diagnosticId", "category", "message"]);
147
+ string(params.adapter);
148
+ string(params.diagnosticId);
149
+ string(params.category);
150
+ if (payload.severity !== "warning" ||
151
+ typeof params.message !== "string" ||
152
+ !params.message.trim() ||
153
+ new TextEncoder().encode(params.message).byteLength > PROVIDER_DIAGNOSTIC_MAX_BYTES)
154
+ throw new TypeError("invalid provider diagnostic");
155
+ break;
156
+ default:
157
+ throw new TypeError("invalid notice code");
158
+ }
159
+ if (payload.relatedActivityId !== undefined)
160
+ string(payload.relatedActivityId);
161
+ if (payload.relatedItemId !== undefined)
162
+ string(payload.relatedItemId);
163
+ break;
164
+ }
165
+ }
166
+ }
@@ -0,0 +1,82 @@
1
+ import type { FailureAction, FailureEnvelope, FailureSource } from "./generated/protocol-types.js";
2
+ export type FailureDomain = "runtime" | "adapter" | "provider" | "system";
3
+ export interface FailureClassificationContext {
4
+ stage: string;
5
+ source?: FailureSource;
6
+ defaultDomain: FailureDomain;
7
+ /** Agent Work Run identity; standard arun IDs deterministically own the diagnostic UUID. */
8
+ runId?: string;
9
+ diagnosticId?: string;
10
+ occurredAt?: string;
11
+ /** Only trusted downstream boundaries may retain a previously validated envelope. */
12
+ preserveExisting?: boolean;
13
+ /** 仅可信调用边界确认未进入执行源后设置;错误字符串不能提供此证据。 */
14
+ invocationNotSubmitted?: boolean;
15
+ }
16
+ interface CatalogEntry {
17
+ category: string;
18
+ message: string;
19
+ messageKey: string;
20
+ retryable: boolean;
21
+ retryAfterMs?: number;
22
+ action: FailureAction;
23
+ }
24
+ /** Runtime-owned subset of the global catalog in improvement 70-01. */
25
+ export declare const FAILURE_CATALOG: Readonly<{
26
+ "OH-INP-5001": CatalogEntry;
27
+ "OH-INP-5002": CatalogEntry;
28
+ "OH-INP-5003": CatalogEntry;
29
+ "OH-INP-5004": CatalogEntry;
30
+ "OH-INP-5005": CatalogEntry;
31
+ "OH-RUN-2002": CatalogEntry;
32
+ "OH-RUN-2003": CatalogEntry;
33
+ "OH-RUN-2004": CatalogEntry;
34
+ "OH-RUN-2005": CatalogEntry;
35
+ "OH-RUN-2008": CatalogEntry;
36
+ "OH-RUN-2009": CatalogEntry;
37
+ "OH-RUN-2010": CatalogEntry;
38
+ "OH-RUN-2011": CatalogEntry;
39
+ "OH-RUN-2012": CatalogEntry;
40
+ "OH-ADP-3002": CatalogEntry;
41
+ "OH-ADP-3003": CatalogEntry;
42
+ "OH-ADP-3004": CatalogEntry;
43
+ "OH-ADP-3005": CatalogEntry;
44
+ "OH-ADP-3006": CatalogEntry;
45
+ "OH-ADP-3007": CatalogEntry;
46
+ "OH-ADP-3008": CatalogEntry;
47
+ "OH-ADP-3009": CatalogEntry;
48
+ "OH-ADP-3010": CatalogEntry;
49
+ "OH-ADP-3011": CatalogEntry;
50
+ "OH-ADP-3012": CatalogEntry;
51
+ "OH-ADP-3013": CatalogEntry;
52
+ "OH-ADP-3014": CatalogEntry;
53
+ "OH-PRV-4001": CatalogEntry;
54
+ "OH-PRV-4002": CatalogEntry;
55
+ "OH-PRV-4003": CatalogEntry;
56
+ "OH-PRV-4004": CatalogEntry;
57
+ "OH-PRV-4005": CatalogEntry;
58
+ "OH-PRV-4006": CatalogEntry;
59
+ "OH-PRV-4007": CatalogEntry;
60
+ "OH-PRV-4008": CatalogEntry;
61
+ "OH-PRV-4009": CatalogEntry;
62
+ "OH-PRV-4010": CatalogEntry;
63
+ "OH-PRV-4099": CatalogEntry;
64
+ "OH-SYS-9001": CatalogEntry;
65
+ }>;
66
+ export type PublicFailureCode = keyof typeof FAILURE_CATALOG;
67
+ export declare function isCodexLocalFailureReason(value: unknown): value is string;
68
+ /** native 仅允许中央目录的本地失败;不开放任意 params 或 Provider 自报错误提升。 */
69
+ export declare function isCodexLocalFailure(failure: FailureEnvelope): boolean;
70
+ /** Classify untrusted adapter/provider error data without copying raw messages or secrets into the result. */
71
+ export declare function classifyFailure(input: unknown, context: FailureClassificationContext): FailureEnvelope;
72
+ /**
73
+ * Produce the backwards-compatible terminal payload (`code`/`message`) plus
74
+ * the structured envelope. Only allowlisted metadata survives this boundary.
75
+ */
76
+ export declare function failurePayload(input: unknown, context: FailureClassificationContext): Record<string, unknown> & {
77
+ failure: FailureEnvelope;
78
+ };
79
+ export declare function safeCapacityEvidence(value: unknown): Record<string, string | number>;
80
+ export declare function failureMessage(code: string): string;
81
+ export declare function isFailureEnvelope(value: unknown): value is FailureEnvelope;
82
+ export {};