@flyingrobots/graft 0.8.0 → 0.10.0
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/CHANGELOG.md +116 -0
- package/GUIDE.md +8 -3
- package/README.md +134 -100
- package/dist/adapters/colorful-cli-prose-projector.d.ts +13 -0
- package/dist/adapters/colorful-cli-prose-projector.d.ts.map +1 -0
- package/dist/adapters/colorful-cli-prose-projector.js +89 -0
- package/dist/adapters/colorful-cli-prose-projector.js.map +1 -0
- package/dist/adapters/fake-echo-kernel-transport.d.ts +33 -0
- package/dist/adapters/fake-echo-kernel-transport.d.ts.map +1 -0
- package/dist/adapters/fake-echo-kernel-transport.js +208 -0
- package/dist/adapters/fake-echo-kernel-transport.js.map +1 -0
- package/dist/adapters/node-process-runner.d.ts.map +1 -1
- package/dist/adapters/node-process-runner.js +1 -0
- package/dist/adapters/node-process-runner.js.map +1 -1
- package/dist/api/index.d.ts +7 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +14 -3
- package/dist/api/index.js.map +1 -1
- package/dist/cli/structural-blame-render.d.ts.map +1 -1
- package/dist/cli/structural-blame-render.js +4 -1
- package/dist/cli/structural-blame-render.js.map +1 -1
- package/dist/contracts/capabilities.d.ts +2 -2
- package/dist/contracts/capabilities.d.ts.map +1 -1
- package/dist/contracts/capabilities.js +14 -0
- package/dist/contracts/capabilities.js.map +1 -1
- package/dist/contracts/output-schema-cli.d.ts +3 -0
- package/dist/contracts/output-schema-cli.d.ts.map +1 -1
- package/dist/contracts/output-schema-fragments.d.ts +183 -0
- package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
- package/dist/contracts/output-schema-fragments.js +38 -0
- package/dist/contracts/output-schema-fragments.js.map +1 -1
- package/dist/contracts/output-schema-mcp.d.ts +91 -0
- package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
- package/dist/contracts/output-schema-mcp.js +6 -1
- package/dist/contracts/output-schema-mcp.js.map +1 -1
- package/dist/contracts/output-schema-meta.d.ts +1 -1
- package/dist/contracts/output-schema-meta.d.ts.map +1 -1
- package/dist/contracts/output-schemas.d.ts.map +1 -1
- package/dist/contracts/output-schemas.js +43 -0
- package/dist/contracts/output-schemas.js.map +1 -1
- package/dist/echo/canonical-cbor.d.ts +10 -0
- package/dist/echo/canonical-cbor.d.ts.map +1 -0
- package/dist/echo/canonical-cbor.js +213 -0
- package/dist/echo/canonical-cbor.js.map +1 -0
- package/dist/echo/codec-runtime.d.ts +72 -0
- package/dist/echo/codec-runtime.d.ts.map +1 -0
- package/dist/echo/codec-runtime.js +259 -0
- package/dist/echo/codec-runtime.js.map +1 -0
- package/dist/echo/structural-history-client.d.ts +68 -0
- package/dist/echo/structural-history-client.d.ts.map +1 -0
- package/dist/echo/structural-history-client.js +149 -0
- package/dist/echo/structural-history-client.js.map +1 -0
- package/dist/echo/structural-history-envelope-codec.d.ts +46 -0
- package/dist/echo/structural-history-envelope-codec.d.ts.map +1 -0
- package/dist/echo/structural-history-envelope-codec.js +121 -0
- package/dist/echo/structural-history-envelope-codec.js.map +1 -0
- package/dist/echo/structural-reading-adapter.d.ts +13 -0
- package/dist/echo/structural-reading-adapter.d.ts.map +1 -0
- package/dist/echo/structural-reading-adapter.js +120 -0
- package/dist/echo/structural-reading-adapter.js.map +1 -0
- package/dist/echo/structural-reading-generated-model.d.ts +18 -0
- package/dist/echo/structural-reading-generated-model.d.ts.map +1 -0
- package/dist/echo/structural-reading-generated-model.js +324 -0
- package/dist/echo/structural-reading-generated-model.js.map +1 -0
- package/dist/generated/graft-structural-history.codec.generated.d.ts +135 -0
- package/dist/generated/graft-structural-history.codec.generated.d.ts.map +1 -0
- package/dist/generated/graft-structural-history.codec.generated.js +549 -0
- package/dist/generated/graft-structural-history.codec.generated.js.map +1 -0
- package/dist/generated/graft-structural-history.d.ts +331 -0
- package/dist/generated/graft-structural-history.d.ts.map +1 -0
- package/dist/generated/graft-structural-history.js +47 -0
- package/dist/generated/graft-structural-history.js.map +1 -0
- package/dist/mcp/burden.d.ts.map +1 -1
- package/dist/mcp/burden.js +2 -0
- package/dist/mcp/burden.js.map +1 -1
- package/dist/mcp/context.d.ts +5 -1
- package/dist/mcp/context.d.ts.map +1 -1
- package/dist/mcp/context.js +11 -1
- package/dist/mcp/context.js.map +1 -1
- package/dist/mcp/control-plane/types.d.ts +8 -0
- package/dist/mcp/control-plane/types.d.ts.map +1 -1
- package/dist/mcp/daemon-control-plane.d.ts +2 -1
- package/dist/mcp/daemon-control-plane.d.ts.map +1 -1
- package/dist/mcp/daemon-control-plane.js +49 -0
- package/dist/mcp/daemon-control-plane.js.map +1 -1
- package/dist/mcp/repo-tool-worker-context.d.ts.map +1 -1
- package/dist/mcp/repo-tool-worker-context.js +19 -0
- package/dist/mcp/repo-tool-worker-context.js.map +1 -1
- package/dist/mcp/repo-workspace.d.ts +1 -1
- package/dist/mcp/repo-workspace.d.ts.map +1 -1
- package/dist/mcp/repo-workspace.js +5 -0
- package/dist/mcp/repo-workspace.js.map +1 -1
- package/dist/mcp/server-context.d.ts.map +1 -1
- package/dist/mcp/server-context.js +17 -0
- package/dist/mcp/server-context.js.map +1 -1
- package/dist/mcp/server-tool-access.d.ts.map +1 -1
- package/dist/mcp/server-tool-access.js +4 -0
- package/dist/mcp/server-tool-access.js.map +1 -1
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +5 -1
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/mcp/tools/changed-since.d.ts.map +1 -1
- package/dist/mcp/tools/changed-since.js +24 -10
- package/dist/mcp/tools/changed-since.js.map +1 -1
- package/dist/mcp/tools/dead-symbols.d.ts.map +1 -1
- package/dist/mcp/tools/dead-symbols.js +2 -3
- package/dist/mcp/tools/dead-symbols.js.map +1 -1
- package/dist/mcp/tools/file-outline.d.ts.map +1 -1
- package/dist/mcp/tools/file-outline.js +10 -5
- package/dist/mcp/tools/file-outline.js.map +1 -1
- package/dist/mcp/tools/structural-blame.d.ts.map +1 -1
- package/dist/mcp/tools/structural-blame.js +3 -0
- package/dist/mcp/tools/structural-blame.js.map +1 -1
- package/dist/mcp/tools/structural-review.d.ts.map +1 -1
- package/dist/mcp/tools/structural-review.js +9 -22
- package/dist/mcp/tools/structural-review.js.map +1 -1
- package/dist/mcp/tools/workspace-list-opened.d.ts +3 -0
- package/dist/mcp/tools/workspace-list-opened.d.ts.map +1 -0
- package/dist/mcp/tools/workspace-list-opened.js +10 -0
- package/dist/mcp/tools/workspace-list-opened.js.map +1 -0
- package/dist/mcp/tools/workspace-open.d.ts +3 -0
- package/dist/mcp/tools/workspace-open.d.ts.map +1 -0
- package/dist/mcp/tools/workspace-open.js +34 -0
- package/dist/mcp/tools/workspace-open.js.map +1 -0
- package/dist/mcp/workspace-registry.d.ts +83 -0
- package/dist/mcp/workspace-registry.d.ts.map +1 -0
- package/dist/mcp/workspace-registry.js +542 -0
- package/dist/mcp/workspace-registry.js.map +1 -0
- package/dist/mcp/workspace-router-model.d.ts +27 -0
- package/dist/mcp/workspace-router-model.d.ts.map +1 -1
- package/dist/mcp/workspace-router-model.js.map +1 -1
- package/dist/mcp/workspace-router.d.ts +9 -2
- package/dist/mcp/workspace-router.d.ts.map +1 -1
- package/dist/mcp/workspace-router.js +145 -1
- package/dist/mcp/workspace-router.js.map +1 -1
- package/dist/operations/colorful-prose-projection.d.ts +32 -0
- package/dist/operations/colorful-prose-projection.d.ts.map +1 -0
- package/dist/operations/colorful-prose-projection.js +344 -0
- package/dist/operations/colorful-prose-projection.js.map +1 -0
- package/dist/operations/file-outline.d.ts +10 -0
- package/dist/operations/file-outline.d.ts.map +1 -1
- package/dist/operations/file-outline.js +29 -3
- package/dist/operations/file-outline.js.map +1 -1
- package/dist/operations/repo-workspace.d.ts +4 -0
- package/dist/operations/repo-workspace.d.ts.map +1 -1
- package/dist/operations/repo-workspace.js +57 -21
- package/dist/operations/repo-workspace.js.map +1 -1
- package/dist/operations/safe-read.d.ts +2 -0
- package/dist/operations/safe-read.d.ts.map +1 -1
- package/dist/operations/safe-read.js +20 -0
- package/dist/operations/safe-read.js.map +1 -1
- package/dist/operations/structured-buffer-model.d.ts +19 -15
- package/dist/operations/structured-buffer-model.d.ts.map +1 -1
- package/dist/operations/structured-buffer-model.js +6 -4
- package/dist/operations/structured-buffer-model.js.map +1 -1
- package/dist/operations/structured-buffer-query.d.ts.map +1 -1
- package/dist/operations/structured-buffer-query.js +64 -1
- package/dist/operations/structured-buffer-query.js.map +1 -1
- package/dist/operations/structured-buffer.d.ts +3 -1
- package/dist/operations/structured-buffer.d.ts.map +1 -1
- package/dist/operations/structured-buffer.js.map +1 -1
- package/dist/parser/types.d.ts +1 -1
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/parser/types.js.map +1 -1
- package/dist/ports/echo-kernel-transport.d.ts +12 -0
- package/dist/ports/echo-kernel-transport.d.ts.map +1 -0
- package/dist/ports/echo-kernel-transport.js +13 -0
- package/dist/ports/echo-kernel-transport.js.map +1 -0
- package/dist/ports/process-runner.d.ts +1 -0
- package/dist/ports/process-runner.d.ts.map +1 -1
- package/dist/ports/structural-history.d.ts +23 -0
- package/dist/ports/structural-history.d.ts.map +1 -0
- package/dist/ports/structural-history.js +22 -0
- package/dist/ports/structural-history.js.map +1 -0
- package/dist/ports/structural-reading.d.ts +100 -0
- package/dist/ports/structural-reading.d.ts.map +1 -0
- package/dist/ports/structural-reading.js +41 -0
- package/dist/ports/structural-reading.js.map +1 -0
- package/dist/warp/structural-reading-adapter.d.ts +28 -0
- package/dist/warp/structural-reading-adapter.d.ts.map +1 -0
- package/dist/warp/structural-reading-adapter.js +98 -0
- package/dist/warp/structural-reading-adapter.js.map +1 -0
- package/docs/CLI.md +4 -4
- package/docs/MCP.md +10 -5
- package/docs/SETUP.md +12 -6
- package/package.json +13 -6
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Typed structural-history client over the Echo kernel transport.
|
|
3
|
+
//
|
|
4
|
+
// Rides the generated operation codecs and the EINT v1 / CBOR wire
|
|
5
|
+
// envelopes. Outcome kinds mirror Echo's product-facing intent surface
|
|
6
|
+
// IntentOutcome::{Unknown, Pending, Applied, Rejected, Obstructed}
|
|
7
|
+
// [echo crates/warp-core/src/trusted_runtime_host.rs#740@2048da5c].
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
import { isCborArray } from "./canonical-cbor.js";
|
|
10
|
+
import { ABI_ERROR_NAMES, EchoEnvelopeCodecError, STRUCTURAL_HISTORY_OBSERVE_OPERATIONS, decodeStructuralHistoryIntentResponse, decodeStructuralHistoryObserveResponse, encodeStructuralHistoryObserveRequest, packStructuralHistoryIntentV1, } from "./structural-history-envelope-codec.js";
|
|
11
|
+
import { OP_RECORD_GIT_WARP_IMPORT_BATCH, encodeRecordGitWarpImportBatchVars, } from "../generated/graft-structural-history.codec.generated.js";
|
|
12
|
+
export class EchoSubstrateObstructionError extends Error {
|
|
13
|
+
code;
|
|
14
|
+
recovery;
|
|
15
|
+
constructor(obstruction) {
|
|
16
|
+
super(`${obstruction.code}: ${obstruction.message}`);
|
|
17
|
+
this.name = "EchoSubstrateObstructionError";
|
|
18
|
+
this.code = obstruction.code;
|
|
19
|
+
this.recovery = obstruction.recovery;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function asRecord(value, label) {
|
|
23
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
24
|
+
throw new EchoEnvelopeCodecError(`${label} is not a map`);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function asString(value, label) {
|
|
29
|
+
if (typeof value !== "string") {
|
|
30
|
+
throw new EchoEnvelopeCodecError(`${label} is not a string`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
function parseObstruction(value) {
|
|
35
|
+
const record = asRecord(value, "obstruction");
|
|
36
|
+
const recovery = record["recovery"];
|
|
37
|
+
return {
|
|
38
|
+
code: asString(record["code"] ?? null, "obstruction.code"),
|
|
39
|
+
message: asString(record["message"] ?? null, "obstruction.message"),
|
|
40
|
+
...(typeof recovery === "string" ? { recovery } : {}),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function parseReceipt(value) {
|
|
44
|
+
const record = asRecord(value, "receipt");
|
|
45
|
+
return {
|
|
46
|
+
submissionId: asString(record["submissionId"] ?? null, "receipt.submissionId"),
|
|
47
|
+
operationName: asString(record["operationName"] ?? null, "receipt.operationName"),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function parseOutcome(value) {
|
|
51
|
+
const record = asRecord(value, "intent outcome");
|
|
52
|
+
const kind = asString(record["kind"] ?? null, "outcome.kind");
|
|
53
|
+
switch (kind) {
|
|
54
|
+
case "applied":
|
|
55
|
+
return { kind, receipt: parseReceipt(record["receipt"] ?? null) };
|
|
56
|
+
case "rejected":
|
|
57
|
+
return {
|
|
58
|
+
kind,
|
|
59
|
+
reason: asString(record["reason"] ?? null, "outcome.reason"),
|
|
60
|
+
receipt: parseReceipt(record["receipt"] ?? null),
|
|
61
|
+
};
|
|
62
|
+
case "pending":
|
|
63
|
+
case "unknown":
|
|
64
|
+
return { kind };
|
|
65
|
+
case "obstructed":
|
|
66
|
+
return { kind, obstruction: parseObstruction(record["obstruction"] ?? null) };
|
|
67
|
+
default:
|
|
68
|
+
throw new EchoEnvelopeCodecError(`unknown intent outcome kind: ${kind}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function throwWireError(code, message) {
|
|
72
|
+
throw new EchoSubstrateObstructionError({
|
|
73
|
+
code: ABI_ERROR_NAMES[code] ?? `ABI_ERROR_${String(code)}`,
|
|
74
|
+
message,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
export function createEchoStructuralHistoryClient(transport) {
|
|
78
|
+
async function observe(operationName, vars) {
|
|
79
|
+
// The transport seam is synchronous today; awaiting keeps the client
|
|
80
|
+
// contract stable when a daemon-bridged async kernel replaces the fake.
|
|
81
|
+
const responseBytes = await Promise.resolve(transport.observeBytes(encodeStructuralHistoryObserveRequest({ operationName, vars })));
|
|
82
|
+
const response = decodeStructuralHistoryObserveResponse(responseBytes);
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
throwWireError(response.code, response.message);
|
|
85
|
+
}
|
|
86
|
+
return { ...response.fields };
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
async recordGitWarpImportBatch(vars) {
|
|
90
|
+
const envelope = packStructuralHistoryIntentV1(OP_RECORD_GIT_WARP_IMPORT_BATCH, encodeRecordGitWarpImportBatchVars(vars));
|
|
91
|
+
const responseBytes = await Promise.resolve(transport.submitIntentBytes(envelope));
|
|
92
|
+
const response = decodeStructuralHistoryIntentResponse(responseBytes);
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
throwWireError(response.code, response.message);
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
submissionId: asString(response.fields["submissionId"] ?? null, "submissionId"),
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
async observeIntentOutcome(submissionId) {
|
|
101
|
+
const fields = await observe(STRUCTURAL_HISTORY_OBSERVE_OPERATIONS.intentOutcome, { submissionId });
|
|
102
|
+
return parseOutcome(fields["outcome"] ?? null);
|
|
103
|
+
},
|
|
104
|
+
async observeStructuralReadings(request) {
|
|
105
|
+
const fields = await observe(STRUCTURAL_HISTORY_OBSERVE_OPERATIONS.structuralReadings, {
|
|
106
|
+
basisId: request.basisId,
|
|
107
|
+
readingKind: request.readingKind ?? null,
|
|
108
|
+
});
|
|
109
|
+
const rawReadings = fields["readings"] ?? null;
|
|
110
|
+
if (!isCborArray(rawReadings)) {
|
|
111
|
+
throw new EchoEnvelopeCodecError("structural readings response is missing its readings array");
|
|
112
|
+
}
|
|
113
|
+
const readings = [];
|
|
114
|
+
{
|
|
115
|
+
for (const raw of rawReadings) {
|
|
116
|
+
const record = asRecord(raw, "structural reading");
|
|
117
|
+
const evidence = asRecord(record["evidence"] ?? null, "reading evidence");
|
|
118
|
+
readings.push({
|
|
119
|
+
readingId: asString(record["readingId"] ?? null, "reading.readingId"),
|
|
120
|
+
readingKind: asString(record["readingKind"] ?? null, "reading.readingKind"),
|
|
121
|
+
basisId: asString(record["basisId"] ?? null, "reading.basisId"),
|
|
122
|
+
payloadJson: record["payloadJson"] ?? null,
|
|
123
|
+
evidence: {
|
|
124
|
+
family: asString(evidence["family"] ?? null, "evidence.family"),
|
|
125
|
+
readingId: asString(evidence["readingId"] ?? null, "evidence.readingId"),
|
|
126
|
+
basis: asRecord(evidence["basis"] ?? null, "evidence.basis"),
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const obstruction = fields["obstruction"];
|
|
132
|
+
return {
|
|
133
|
+
readings,
|
|
134
|
+
...(obstruction !== undefined && obstruction !== null
|
|
135
|
+
? { obstruction: parseObstruction(obstruction) }
|
|
136
|
+
: {}),
|
|
137
|
+
};
|
|
138
|
+
},
|
|
139
|
+
async inspectRetainedEvidence(request) {
|
|
140
|
+
const fields = await observe(STRUCTURAL_HISTORY_OBSERVE_OPERATIONS.retainedEvidencePosture, { basisId: request.basisId });
|
|
141
|
+
const posture = asString(fields["posture"] ?? null, "retained evidence posture");
|
|
142
|
+
if (posture !== "retained" && posture !== "missing" && posture !== "obstructed") {
|
|
143
|
+
throw new EchoEnvelopeCodecError(`unknown retained posture: ${posture}`);
|
|
144
|
+
}
|
|
145
|
+
return { posture };
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=structural-history-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-history-client.js","sourceRoot":"","sources":["../../src/echo/structural-history-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type CborValue } from "./canonical-cbor.js";
|
|
2
|
+
/** ABI v3 error codes [echo docs/spec/SPEC-0009-wasm-abi-v3.md@2048da5c]. */
|
|
3
|
+
export declare const ABI_ERROR_CODES: {
|
|
4
|
+
readonly INVALID_INTENT: 2;
|
|
5
|
+
readonly NOT_SUPPORTED: 5;
|
|
6
|
+
readonly CODEC_ERROR: 6;
|
|
7
|
+
readonly UNSUPPORTED_QUERY: 11;
|
|
8
|
+
readonly FORBIDDEN_CONTROL_INTENT: 19;
|
|
9
|
+
};
|
|
10
|
+
export declare const ABI_ERROR_NAMES: Readonly<Record<number, string>>;
|
|
11
|
+
/** Envelope-level observe operation names (pre-observer-plan convention). */
|
|
12
|
+
export declare const STRUCTURAL_HISTORY_OBSERVE_OPERATIONS: {
|
|
13
|
+
readonly intentOutcome: "intentOutcome";
|
|
14
|
+
readonly structuralReadings: "structuralReadings";
|
|
15
|
+
readonly retainedEvidencePosture: "retainedEvidencePosture";
|
|
16
|
+
};
|
|
17
|
+
/** Default basis id used by the witness fixture space. */
|
|
18
|
+
export declare const DEFAULT_STRUCTURAL_HISTORY_BASIS_ID = "basis-live";
|
|
19
|
+
export declare class EchoEnvelopeCodecError extends Error {
|
|
20
|
+
constructor(message: string);
|
|
21
|
+
}
|
|
22
|
+
export declare function packStructuralHistoryIntentV1(opId: number, vars: Uint8Array): Uint8Array;
|
|
23
|
+
export interface StructuralHistoryIntentEnvelope {
|
|
24
|
+
readonly opId: number;
|
|
25
|
+
readonly vars: Uint8Array;
|
|
26
|
+
}
|
|
27
|
+
export declare function unpackStructuralHistoryIntentV1(envelope: Uint8Array): StructuralHistoryIntentEnvelope;
|
|
28
|
+
export interface StructuralHistoryObserveRequest {
|
|
29
|
+
readonly operationName: string;
|
|
30
|
+
readonly vars: CborValue;
|
|
31
|
+
}
|
|
32
|
+
export declare function encodeStructuralHistoryObserveRequest(request: StructuralHistoryObserveRequest): Uint8Array;
|
|
33
|
+
export declare function decodeStructuralHistoryObserveRequest(bytes: Uint8Array): StructuralHistoryObserveRequest;
|
|
34
|
+
export type StructuralHistoryWireResponse = {
|
|
35
|
+
readonly ok: true;
|
|
36
|
+
readonly fields: Readonly<Record<string, CborValue>>;
|
|
37
|
+
} | {
|
|
38
|
+
readonly ok: false;
|
|
39
|
+
readonly code: number;
|
|
40
|
+
readonly message: string;
|
|
41
|
+
};
|
|
42
|
+
export declare function encodeStructuralHistoryOkResponse(fields: Readonly<Record<string, CborValue>>): Uint8Array;
|
|
43
|
+
export declare function encodeStructuralHistoryErrorResponse(code: number, message: string): Uint8Array;
|
|
44
|
+
export declare function decodeStructuralHistoryIntentResponse(bytes: Uint8Array): StructuralHistoryWireResponse;
|
|
45
|
+
export declare function decodeStructuralHistoryObserveResponse(bytes: Uint8Array): StructuralHistoryWireResponse;
|
|
46
|
+
//# sourceMappingURL=structural-history-envelope-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-history-envelope-codec.d.ts","sourceRoot":"","sources":["../../src/echo/structural-history-envelope-codec.ts"],"names":[],"mappings":"AAUA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAK7B,6EAA6E;AAC7E,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5D,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,qCAAqC;;;;CAIxC,CAAC;AAEX,0DAA0D;AAC1D,eAAO,MAAM,mCAAmC,eAAe,CAAC;AAEhE,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACf,UAAU,CAQZ;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,UAAU,GACnB,+BAA+B,CAgBjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,+BAA+B,GACvC,UAAU,CAKZ;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,GAChB,+BAA+B,CAOjC;AAED,MAAM,MAAM,6BAA6B,GACrC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAC1C,UAAU,CAEZ;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,UAAU,CAEZ;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,UAAU,GAChB,6BAA6B,CAE/B;AAED,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,UAAU,GAChB,6BAA6B,CAE/B"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Structural-history wire envelopes over the Echo kernel transport.
|
|
3
|
+
//
|
|
4
|
+
// Intent intake follows the EINT v1 layout from SPEC-0009 ABI v3
|
|
5
|
+
// [echo docs/spec/SPEC-0009-wasm-abi-v3.md@2048da5c]:
|
|
6
|
+
// "EINT" (4 bytes) + op_id (u32 LE) + vars_len (u32 LE) + vars bytes.
|
|
7
|
+
// Every transport return is a canonical-CBOR wire envelope with an `ok`
|
|
8
|
+
// discriminator: { ok: true, ...fields } | { ok: false, code, message }.
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
import { CborCodecError, decodeCanonicalCbor, encodeCanonicalCbor, } from "./canonical-cbor.js";
|
|
11
|
+
const EINT_MAGIC = Uint8Array.from([0x45, 0x49, 0x4e, 0x54]);
|
|
12
|
+
const EINT_V1_HEADER_SIZE = 12;
|
|
13
|
+
/** ABI v3 error codes [echo docs/spec/SPEC-0009-wasm-abi-v3.md@2048da5c]. */
|
|
14
|
+
export const ABI_ERROR_CODES = {
|
|
15
|
+
INVALID_INTENT: 2,
|
|
16
|
+
NOT_SUPPORTED: 5,
|
|
17
|
+
CODEC_ERROR: 6,
|
|
18
|
+
UNSUPPORTED_QUERY: 11,
|
|
19
|
+
FORBIDDEN_CONTROL_INTENT: 19,
|
|
20
|
+
};
|
|
21
|
+
export const ABI_ERROR_NAMES = Object.fromEntries(Object.entries(ABI_ERROR_CODES).map(([name, code]) => [code, name]));
|
|
22
|
+
/** Envelope-level observe operation names (pre-observer-plan convention). */
|
|
23
|
+
export const STRUCTURAL_HISTORY_OBSERVE_OPERATIONS = {
|
|
24
|
+
intentOutcome: "intentOutcome",
|
|
25
|
+
structuralReadings: "structuralReadings",
|
|
26
|
+
retainedEvidencePosture: "retainedEvidencePosture",
|
|
27
|
+
};
|
|
28
|
+
/** Default basis id used by the witness fixture space. */
|
|
29
|
+
export const DEFAULT_STRUCTURAL_HISTORY_BASIS_ID = "basis-live";
|
|
30
|
+
export class EchoEnvelopeCodecError extends Error {
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = "EchoEnvelopeCodecError";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function packStructuralHistoryIntentV1(opId, vars) {
|
|
37
|
+
const envelope = new Uint8Array(EINT_V1_HEADER_SIZE + vars.byteLength);
|
|
38
|
+
envelope.set(EINT_MAGIC, 0);
|
|
39
|
+
const view = new DataView(envelope.buffer, envelope.byteOffset, envelope.byteLength);
|
|
40
|
+
view.setUint32(4, opId >>> 0, true);
|
|
41
|
+
view.setUint32(8, vars.byteLength, true);
|
|
42
|
+
envelope.set(vars, EINT_V1_HEADER_SIZE);
|
|
43
|
+
return envelope;
|
|
44
|
+
}
|
|
45
|
+
export function unpackStructuralHistoryIntentV1(envelope) {
|
|
46
|
+
if (envelope.byteLength < EINT_V1_HEADER_SIZE) {
|
|
47
|
+
throw new EchoEnvelopeCodecError("EINT envelope shorter than header");
|
|
48
|
+
}
|
|
49
|
+
for (let i = 0; i < EINT_MAGIC.length; i += 1) {
|
|
50
|
+
if (envelope[i] !== EINT_MAGIC[i]) {
|
|
51
|
+
throw new EchoEnvelopeCodecError("EINT magic mismatch");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const view = new DataView(envelope.buffer, envelope.byteOffset, envelope.byteLength);
|
|
55
|
+
const opId = view.getUint32(4, true);
|
|
56
|
+
const varsLength = view.getUint32(8, true);
|
|
57
|
+
if (EINT_V1_HEADER_SIZE + varsLength !== envelope.byteLength) {
|
|
58
|
+
throw new EchoEnvelopeCodecError("EINT vars length mismatch");
|
|
59
|
+
}
|
|
60
|
+
return { opId, vars: envelope.subarray(EINT_V1_HEADER_SIZE) };
|
|
61
|
+
}
|
|
62
|
+
export function encodeStructuralHistoryObserveRequest(request) {
|
|
63
|
+
return encodeCanonicalCbor({
|
|
64
|
+
operationName: request.operationName,
|
|
65
|
+
vars: request.vars,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function decodeStructuralHistoryObserveRequest(bytes) {
|
|
69
|
+
const decoded = decodeWireMap(bytes, "observe request");
|
|
70
|
+
const operationName = decoded["operationName"];
|
|
71
|
+
if (typeof operationName !== "string") {
|
|
72
|
+
throw new EchoEnvelopeCodecError("observe request missing operationName");
|
|
73
|
+
}
|
|
74
|
+
return { operationName, vars: decoded["vars"] ?? null };
|
|
75
|
+
}
|
|
76
|
+
export function encodeStructuralHistoryOkResponse(fields) {
|
|
77
|
+
return encodeCanonicalCbor({ ...fields, ok: true });
|
|
78
|
+
}
|
|
79
|
+
export function encodeStructuralHistoryErrorResponse(code, message) {
|
|
80
|
+
return encodeCanonicalCbor({ ok: false, code, message });
|
|
81
|
+
}
|
|
82
|
+
export function decodeStructuralHistoryIntentResponse(bytes) {
|
|
83
|
+
return decodeWireResponse(bytes, "intent response");
|
|
84
|
+
}
|
|
85
|
+
export function decodeStructuralHistoryObserveResponse(bytes) {
|
|
86
|
+
return decodeWireResponse(bytes, "observe response");
|
|
87
|
+
}
|
|
88
|
+
function decodeWireMap(bytes, label) {
|
|
89
|
+
let decoded;
|
|
90
|
+
try {
|
|
91
|
+
decoded = decodeCanonicalCbor(bytes);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (error instanceof CborCodecError) {
|
|
95
|
+
throw new EchoEnvelopeCodecError(`${label}: ${error.message}`);
|
|
96
|
+
}
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
if (decoded === null || typeof decoded !== "object" || Array.isArray(decoded)) {
|
|
100
|
+
throw new EchoEnvelopeCodecError(`${label} is not a CBOR map`);
|
|
101
|
+
}
|
|
102
|
+
return decoded;
|
|
103
|
+
}
|
|
104
|
+
function decodeWireResponse(bytes, label) {
|
|
105
|
+
const decoded = decodeWireMap(bytes, label);
|
|
106
|
+
const ok = decoded["ok"];
|
|
107
|
+
if (ok === true) {
|
|
108
|
+
const { ok: _discriminator, ...fields } = decoded;
|
|
109
|
+
return { ok: true, fields };
|
|
110
|
+
}
|
|
111
|
+
if (ok === false) {
|
|
112
|
+
const code = decoded["code"];
|
|
113
|
+
const message = decoded["message"];
|
|
114
|
+
if (typeof code !== "number" || typeof message !== "string") {
|
|
115
|
+
throw new EchoEnvelopeCodecError(`${label} error envelope missing code/message`);
|
|
116
|
+
}
|
|
117
|
+
return { ok: false, code, message };
|
|
118
|
+
}
|
|
119
|
+
throw new EchoEnvelopeCodecError(`${label} missing ok discriminator`);
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=structural-history-envelope-codec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-history-envelope-codec.js","sourceRoot":"","sources":["../../src/echo/structural-history-envelope-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { StructuralReadingFreshness, StructuralReadingPort, StructuralReadingResidualPosture } from "../ports/structural-reading.js";
|
|
2
|
+
import { type EchoStructuralHistoryClient } from "./structural-history-client.js";
|
|
3
|
+
export interface CreateEchoStructuralReadingPortOptions {
|
|
4
|
+
readonly basisId?: string;
|
|
5
|
+
}
|
|
6
|
+
interface MappedPosture {
|
|
7
|
+
readonly freshness: StructuralReadingFreshness;
|
|
8
|
+
readonly residualPosture: StructuralReadingResidualPosture;
|
|
9
|
+
}
|
|
10
|
+
export declare const OBSTRUCTION_POSTURE: Readonly<Record<string, MappedPosture>>;
|
|
11
|
+
export declare function createEchoStructuralReadingPort(client: EchoStructuralHistoryClient, options?: CreateEchoStructuralReadingPortOptions): StructuralReadingPort;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=structural-reading-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-reading-adapter.d.ts","sourceRoot":"","sources":["../../src/echo/structural-reading-adapter.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAKV,0BAA0B,EAC1B,qBAAqB,EACrB,gCAAgC,EAIjC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAGL,KAAK,2BAA2B,EAGjC,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,gCAAgC,CAAC;CAC5D;AAED,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CASvE,CAAC;AA6EF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,2BAA2B,EACnC,OAAO,GAAE,sCAA2C,GACnD,qBAAqB,CAgDvB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Echo-backed StructuralReadingPort adapter — sibling to the git-warp
|
|
3
|
+
// adapter in src/warp/structural-reading-adapter.ts.
|
|
4
|
+
//
|
|
5
|
+
// Maps Echo contract obstructions into Graft freshness/residual posture per
|
|
6
|
+
// the witness design packet's mapping table. The taxonomy is Echo's
|
|
7
|
+
// ContractObstructionKind [echo crates/warp-core/src/contract_obstruction.rs
|
|
8
|
+
// #17@2048da5c] plus ABI-level observation rights. Not wired into any
|
|
9
|
+
// production context in this slice; tests enforce that.
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
import { isCborArray } from "./canonical-cbor.js";
|
|
12
|
+
import { DEFAULT_STRUCTURAL_HISTORY_BASIS_ID } from "./structural-history-envelope-codec.js";
|
|
13
|
+
import { EchoSubstrateObstructionError, } from "./structural-history-client.js";
|
|
14
|
+
export const OBSTRUCTION_POSTURE = {
|
|
15
|
+
STALE_BASIS: { freshness: "stale", residualPosture: "complete" },
|
|
16
|
+
BUDGET_EXCEEDED: { freshness: "current", residualPosture: "budget-limited" },
|
|
17
|
+
UNSUPPORTED_OBSERVATION_RIGHTS: {
|
|
18
|
+
freshness: "current",
|
|
19
|
+
residualPosture: "rights-limited",
|
|
20
|
+
},
|
|
21
|
+
MISSING_RETENTION: { freshness: "incomparable", residualPosture: "unavailable" },
|
|
22
|
+
RESIDUAL_READING: { freshness: "current", residualPosture: "partial" },
|
|
23
|
+
};
|
|
24
|
+
function mapPosture(obstruction) {
|
|
25
|
+
if (obstruction === undefined) {
|
|
26
|
+
return { freshness: "current", residualPosture: "complete" };
|
|
27
|
+
}
|
|
28
|
+
const mapped = OBSTRUCTION_POSTURE[obstruction.code];
|
|
29
|
+
if (mapped === undefined) {
|
|
30
|
+
throw new EchoSubstrateObstructionError(obstruction);
|
|
31
|
+
}
|
|
32
|
+
return mapped;
|
|
33
|
+
}
|
|
34
|
+
function echoNativeEvidence(basisId, record) {
|
|
35
|
+
return {
|
|
36
|
+
kind: "continuum-native",
|
|
37
|
+
evidenceLabel: "echo-native",
|
|
38
|
+
nativeContinuumWitness: true,
|
|
39
|
+
envelope: {
|
|
40
|
+
family: record?.evidence.family ?? "graft-structural-history",
|
|
41
|
+
readingId: record?.evidence.readingId ?? "reading-unavailable",
|
|
42
|
+
basis: record?.evidence.basis ?? { basisId },
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function textOf(value) {
|
|
47
|
+
return typeof value === "string" ? value : "";
|
|
48
|
+
}
|
|
49
|
+
function asRecordValue(value) {
|
|
50
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
function deadSymbolsPayload(record) {
|
|
56
|
+
const payload = asRecordValue(record?.payloadJson ?? null);
|
|
57
|
+
const rawSymbols = payload["symbols"] ?? null;
|
|
58
|
+
const symbols = [];
|
|
59
|
+
if (isCborArray(rawSymbols)) {
|
|
60
|
+
for (const raw of rawSymbols) {
|
|
61
|
+
const entry = asRecordValue(raw);
|
|
62
|
+
symbols.push({
|
|
63
|
+
name: textOf(entry["name"]),
|
|
64
|
+
kind: textOf(entry["kind"]),
|
|
65
|
+
filePath: textOf(entry["filePath"]),
|
|
66
|
+
exported: entry["exported"] === true,
|
|
67
|
+
removedInCommit: textOf(entry["removedInCommit"]),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { symbols, total: symbols.length };
|
|
72
|
+
}
|
|
73
|
+
function symbolReferencePayload(symbolName, record) {
|
|
74
|
+
const payload = asRecordValue(record?.payloadJson ?? null);
|
|
75
|
+
const rawFiles = payload["referencingFiles"] ?? null;
|
|
76
|
+
return {
|
|
77
|
+
symbol: symbolName,
|
|
78
|
+
referenceCount: typeof payload["referenceCount"] === "number" ? payload["referenceCount"] : 0,
|
|
79
|
+
referencingFiles: isCborArray(rawFiles)
|
|
80
|
+
? rawFiles.filter((file) => typeof file === "string")
|
|
81
|
+
: [],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export function createEchoStructuralReadingPort(client, options = {}) {
|
|
85
|
+
const basisId = options.basisId ?? DEFAULT_STRUCTURAL_HISTORY_BASIS_ID;
|
|
86
|
+
async function observeKind(readingKind) {
|
|
87
|
+
return client.observeStructuralReadings({ basisId, readingKind });
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
async countSymbolReferences(request) {
|
|
91
|
+
const observation = await observeKind("SYMBOL_REFERENCE_COUNT");
|
|
92
|
+
const posture = mapPosture(observation.obstruction);
|
|
93
|
+
const record = observation.readings.find((candidate) => {
|
|
94
|
+
const payload = asRecordValue(candidate.payloadJson);
|
|
95
|
+
return (payload["symbol"] === request.symbolName &&
|
|
96
|
+
payload["filePath"] === request.filePath);
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
kind: "symbol-reference-count",
|
|
100
|
+
freshness: posture.freshness,
|
|
101
|
+
residualPosture: posture.residualPosture,
|
|
102
|
+
payload: symbolReferencePayload(request.symbolName, record),
|
|
103
|
+
evidence: echoNativeEvidence(basisId, record),
|
|
104
|
+
};
|
|
105
|
+
},
|
|
106
|
+
async findDeadSymbols(_request) {
|
|
107
|
+
const observation = await observeKind("DEAD_SYMBOLS");
|
|
108
|
+
const posture = mapPosture(observation.obstruction);
|
|
109
|
+
const record = observation.readings.find((candidate) => candidate.readingKind === "DEAD_SYMBOLS");
|
|
110
|
+
return {
|
|
111
|
+
kind: "dead-symbols",
|
|
112
|
+
freshness: posture.freshness,
|
|
113
|
+
residualPosture: posture.residualPosture,
|
|
114
|
+
payload: deadSymbolsPayload(record),
|
|
115
|
+
evidence: echoNativeEvidence(basisId, record),
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=structural-reading-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-reading-adapter.js","sourceRoot":"","sources":["../../src/echo/structural-reading-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { StructuralBasis, StructuralReading, StructuralReadingEvidence as GeneratedStructuralReadingEvidence } from "../generated/graft-structural-history.js";
|
|
2
|
+
import { type StructuralReadingResult } from "../ports/structural-reading.js";
|
|
3
|
+
export type GeneratedModelMappingErrorCode = "ECHO_NATIVE_REFUSED" | "UNSUPPORTED_EVIDENCE_LABEL" | "UNSUPPORTED_READING_KIND" | "UNSUPPORTED_FRESHNESS" | "UNSUPPORTED_RESIDUAL_POSTURE" | "UNSUPPORTED_SUBSTRATE" | "UNSERIALIZABLE_PAYLOAD" | "EVIDENCE_MISMATCH" | "MISSING_PAYLOAD_JSON" | "PAYLOAD_DIGEST_MISMATCH" | "MALFORMED_PAYLOAD" | "MALFORMED_EVIDENCE_SUMMARY";
|
|
4
|
+
export declare class GeneratedModelMappingError extends Error {
|
|
5
|
+
readonly code: GeneratedModelMappingErrorCode;
|
|
6
|
+
constructor(code: GeneratedModelMappingErrorCode, message: string);
|
|
7
|
+
}
|
|
8
|
+
export interface StructuralReadingMappingContext {
|
|
9
|
+
readonly repositoryId: string;
|
|
10
|
+
}
|
|
11
|
+
export interface GeneratedStructuralReadingBundle {
|
|
12
|
+
readonly reading: StructuralReading;
|
|
13
|
+
readonly evidence: GeneratedStructuralReadingEvidence;
|
|
14
|
+
readonly basis: StructuralBasis;
|
|
15
|
+
}
|
|
16
|
+
export declare function toGeneratedStructuralReading<TPayload>(result: StructuralReadingResult<TPayload>, ctx: StructuralReadingMappingContext): GeneratedStructuralReadingBundle;
|
|
17
|
+
export declare function fromGeneratedStructuralReading(reading: StructuralReading, evidence: GeneratedStructuralReadingEvidence): StructuralReadingResult<unknown>;
|
|
18
|
+
//# sourceMappingURL=structural-reading-generated-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structural-reading-generated-model.d.ts","sourceRoot":"","sources":["../../src/echo/structural-reading-generated-model.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAGV,eAAe,EAEf,iBAAiB,EACjB,yBAAyB,IAAI,kCAAkC,EAIhE,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAUL,KAAK,uBAAuB,EAE7B,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,8BAA8B,GACtC,qBAAqB,GACrB,4BAA4B,GAC5B,0BAA0B,GAC1B,uBAAuB,GACvB,8BAA8B,GAC9B,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,sBAAsB,GACtB,yBAAyB,GACzB,mBAAmB,GACnB,4BAA4B,CAAC;AAEjC,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;gBAElC,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,MAAM;CAKlE;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,kCAAkC,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC;AA0OD,wBAAgB,4BAA4B,CAAC,QAAQ,EACnD,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EACzC,GAAG,EAAE,+BAA+B,GACnC,gCAAgC,CAuHlC;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,kCAAkC,GAC3C,uBAAuB,CAAC,OAAO,CAAC,CAqFlC"}
|