openplanr 1.16.2 → 1.18.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/dist/cli/commands/operate.d.ts +10 -1
- package/dist/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +240 -13
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/services/ai-service.d.ts +25 -0
- package/dist/services/ai-service.d.ts.map +1 -1
- package/dist/services/ai-service.js +38 -0
- package/dist/services/ai-service.js.map +1 -1
- package/dist/services/operate/advisors.d.ts +82 -1
- package/dist/services/operate/advisors.d.ts.map +1 -1
- package/dist/services/operate/advisors.js +469 -17
- package/dist/services/operate/advisors.js.map +1 -1
- package/dist/services/operate/artifacts.d.ts +27 -1
- package/dist/services/operate/artifacts.d.ts.map +1 -1
- package/dist/services/operate/artifacts.js +103 -1
- package/dist/services/operate/artifacts.js.map +1 -1
- package/dist/services/operate/cadence.d.ts +50 -0
- package/dist/services/operate/cadence.d.ts.map +1 -0
- package/dist/services/operate/cadence.js +56 -0
- package/dist/services/operate/cadence.js.map +1 -0
- package/dist/services/operate/citation-resolution.d.ts +101 -0
- package/dist/services/operate/citation-resolution.d.ts.map +1 -0
- package/dist/services/operate/citation-resolution.js +308 -0
- package/dist/services/operate/citation-resolution.js.map +1 -0
- package/dist/services/operate/config.d.ts +93 -1
- package/dist/services/operate/config.d.ts.map +1 -1
- package/dist/services/operate/config.js +199 -9
- package/dist/services/operate/config.js.map +1 -1
- package/dist/services/operate/decision-brief.d.ts +148 -0
- package/dist/services/operate/decision-brief.d.ts.map +1 -0
- package/dist/services/operate/decision-brief.js +194 -0
- package/dist/services/operate/decision-brief.js.map +1 -0
- package/dist/services/operate/doctor.d.ts.map +1 -1
- package/dist/services/operate/doctor.js +271 -3
- package/dist/services/operate/doctor.js.map +1 -1
- package/dist/services/operate/engine.d.ts +66 -2
- package/dist/services/operate/engine.d.ts.map +1 -1
- package/dist/services/operate/engine.js +219 -7
- package/dist/services/operate/engine.js.map +1 -1
- package/dist/services/operate/event-store.d.ts +35 -1
- package/dist/services/operate/event-store.d.ts.map +1 -1
- package/dist/services/operate/event-store.js +142 -29
- package/dist/services/operate/event-store.js.map +1 -1
- package/dist/services/operate/evidence-cache.d.ts +25 -1
- package/dist/services/operate/evidence-cache.d.ts.map +1 -1
- package/dist/services/operate/evidence-cache.js +62 -1
- package/dist/services/operate/evidence-cache.js.map +1 -1
- package/dist/services/operate/evidence.d.ts +20 -1
- package/dist/services/operate/evidence.d.ts.map +1 -1
- package/dist/services/operate/evidence.js +148 -0
- package/dist/services/operate/evidence.js.map +1 -1
- package/dist/services/operate/index.d.ts +2 -0
- package/dist/services/operate/index.d.ts.map +1 -1
- package/dist/services/operate/index.js +309 -46
- package/dist/services/operate/index.js.map +1 -1
- package/dist/services/operate/interaction/action-service.d.ts +17 -0
- package/dist/services/operate/interaction/action-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/action-service.js +19 -0
- package/dist/services/operate/interaction/action-service.js.map +1 -1
- package/dist/services/operate/interaction/answer-service.d.ts +17 -0
- package/dist/services/operate/interaction/answer-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/answer-service.js +49 -7
- package/dist/services/operate/interaction/answer-service.js.map +1 -1
- package/dist/services/operate/interaction/question-engine.d.ts.map +1 -1
- package/dist/services/operate/interaction/question-engine.js +9 -3
- package/dist/services/operate/interaction/question-engine.js.map +1 -1
- package/dist/services/operate/interaction/question-registry.d.ts +13 -0
- package/dist/services/operate/interaction/question-registry.d.ts.map +1 -1
- package/dist/services/operate/interaction/question-registry.js +116 -26
- package/dist/services/operate/interaction/question-registry.js.map +1 -1
- package/dist/services/operate/interaction/terminal-renderer.d.ts +12 -1
- package/dist/services/operate/interaction/terminal-renderer.d.ts.map +1 -1
- package/dist/services/operate/interaction/terminal-renderer.js +26 -15
- package/dist/services/operate/interaction/terminal-renderer.js.map +1 -1
- package/dist/services/operate/journal.d.ts.map +1 -1
- package/dist/services/operate/journal.js +11 -5
- package/dist/services/operate/journal.js.map +1 -1
- package/dist/services/operate/lifecycle.d.ts +8 -0
- package/dist/services/operate/lifecycle.d.ts.map +1 -1
- package/dist/services/operate/lifecycle.js +19 -1
- package/dist/services/operate/lifecycle.js.map +1 -1
- package/dist/services/operate/maintenance.d.ts +22 -0
- package/dist/services/operate/maintenance.d.ts.map +1 -1
- package/dist/services/operate/maintenance.js +406 -46
- package/dist/services/operate/maintenance.js.map +1 -1
- package/dist/services/operate/migration.d.ts +68 -0
- package/dist/services/operate/migration.d.ts.map +1 -0
- package/dist/services/operate/migration.js +235 -0
- package/dist/services/operate/migration.js.map +1 -0
- package/dist/services/operate/mission-dispatch.d.ts +193 -0
- package/dist/services/operate/mission-dispatch.d.ts.map +1 -0
- package/dist/services/operate/mission-dispatch.js +444 -0
- package/dist/services/operate/mission-dispatch.js.map +1 -0
- package/dist/services/operate/projection-persistence.d.ts +6 -0
- package/dist/services/operate/projection-persistence.d.ts.map +1 -1
- package/dist/services/operate/projection-persistence.js +87 -11
- package/dist/services/operate/projection-persistence.js.map +1 -1
- package/dist/services/operate/projection.d.ts +26 -1
- package/dist/services/operate/projection.d.ts.map +1 -1
- package/dist/services/operate/projection.js +62 -0
- package/dist/services/operate/projection.js.map +1 -1
- package/dist/services/operate/protocol.d.ts +50 -3
- package/dist/services/operate/protocol.d.ts.map +1 -1
- package/dist/services/operate/protocol.js +57 -5
- package/dist/services/operate/protocol.js.map +1 -1
- package/dist/services/operate/read-only-providers.d.ts +37 -0
- package/dist/services/operate/read-only-providers.d.ts.map +1 -1
- package/dist/services/operate/read-only-providers.js +130 -0
- package/dist/services/operate/read-only-providers.js.map +1 -1
- package/dist/services/operate/reports.d.ts +22 -0
- package/dist/services/operate/reports.d.ts.map +1 -1
- package/dist/services/operate/reports.js +226 -1
- package/dist/services/operate/reports.js.map +1 -1
- package/dist/services/operate/routes.d.ts.map +1 -1
- package/dist/services/operate/routes.js +79 -5
- package/dist/services/operate/routes.js.map +1 -1
- package/dist/services/operate/types.d.ts +139 -4
- package/dist/services/operate/types.d.ts.map +1 -1
- package/dist/services/operate/types.js +13 -0
- package/dist/services/operate/types.js.map +1 -1
- package/dist/services/operate/workspace.d.ts +7 -0
- package/dist/services/operate/workspace.d.ts.map +1 -1
- package/dist/services/operate/workspace.js +14 -5
- package/dist/services/operate/workspace.js.map +1 -1
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +25 -5
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { resolveOperatingPipelineRoot } from './protocol.js';
|
|
5
|
+
import { compareSensitivity, sanitizeGeneratedPlainText } from './redaction.js';
|
|
6
|
+
import { OperateError } from './types.js';
|
|
7
|
+
import { resolveContainedPath, resolveOperatingPaths } from './workspace.js';
|
|
8
|
+
/**
|
|
9
|
+
* FR7 / E-007 — render `operate brief` and `operate decisions show` into a
|
|
10
|
+
* single, self-contained, OFFLINE artifact a non-technical decision owner can
|
|
11
|
+
* open without a terminal. Rendering is delegated to the pipeline builder
|
|
12
|
+
* (`createOperatingDecisionBriefArtifact`), which fails closed on any
|
|
13
|
+
* `http(s)://` reference (`E_OPERATE_DECISION_BRIEF_NOT_OFFLINE`). This module
|
|
14
|
+
* never reimplements that renderer: it assembles the ceiling-filtered brief and
|
|
15
|
+
* decision inputs, invokes the builder through the existing opaque-origin
|
|
16
|
+
* sandbox surface, and writes the resulting HTML locally.
|
|
17
|
+
*
|
|
18
|
+
* Nothing here publishes or shares: a brief is written only when the operator
|
|
19
|
+
* asks for it (the `--render` flag), to a project-contained path. Sensitivity
|
|
20
|
+
* ceilings that gate collection (T-002) and dispatch (T-003) also gate rendered
|
|
21
|
+
* content here — evidence above the configured ceiling is dropped before the
|
|
22
|
+
* builder ever sees it, and free-text fields pass through the redaction path.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* The opaque-origin sandbox contract reused from `artifact-route-generation.ts`
|
|
26
|
+
* (`network: 'none', filesystem: 'none', tools: []`), the same posture proven
|
|
27
|
+
* out for generated route artifacts. A decision brief is a fully-offline
|
|
28
|
+
* reading document, so it additionally allows NO external URL scheme — the
|
|
29
|
+
* pipeline builder rejects any `http(s)://` reference outright. The shape is
|
|
30
|
+
* kept structurally compatible with the route sandbox so no new sandbox model
|
|
31
|
+
* is invented (DoD point 5).
|
|
32
|
+
*/
|
|
33
|
+
export const OPAQUE_ORIGIN_DECISION_BRIEF_SANDBOX = Object.freeze({
|
|
34
|
+
network: 'none',
|
|
35
|
+
filesystem: 'none',
|
|
36
|
+
tools: Object.freeze([]),
|
|
37
|
+
allowedUrlSchemes: Object.freeze([]),
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* Load the pipeline's decision-brief builder from the installed pipeline root.
|
|
41
|
+
* The absolute-file import mirrors `pipeline-handoff.ts` (the package `exports`
|
|
42
|
+
* map does not expose the raw subpath). Fails closed when the pipeline is not
|
|
43
|
+
* installed so a brief can never silently degrade to an in-repo reimplementation.
|
|
44
|
+
*/
|
|
45
|
+
async function loadOperatingDecisionBriefBuilder() {
|
|
46
|
+
const root = resolveOperatingPipelineRoot();
|
|
47
|
+
if (!root) {
|
|
48
|
+
throw new OperateError('E_PIPELINE_NOT_INSTALLED', 'Rendering a self-contained operating decision brief requires the full planr-pipeline package.', {
|
|
49
|
+
recovery: 'Run `npm install -g openplanr@latest` (without `--omit=optional`), then `planr setup --scope user`.',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const module = (await import(pathToFileURL(path.join(root, 'lib', 'pipeline', 'index.mjs')).href));
|
|
53
|
+
if (typeof module.createOperatingDecisionBriefArtifact !== 'function') {
|
|
54
|
+
throw new OperateError('E_PIPELINE_NOT_INSTALLED', 'The installed pipeline does not expose the self-contained decision-brief renderer.');
|
|
55
|
+
}
|
|
56
|
+
return module.createOperatingDecisionBriefArtifact;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Drop every evidence citation whose sensitivity exceeds the configured
|
|
60
|
+
* ceiling. Pure and deterministic: the kept citations preserve input order and
|
|
61
|
+
* the redacted refs are returned de-duplicated and sorted for a stable record.
|
|
62
|
+
*/
|
|
63
|
+
export function filterEvidenceByCeiling(evidence, ceiling) {
|
|
64
|
+
const kept = [];
|
|
65
|
+
const redactedRefs = [];
|
|
66
|
+
for (const item of evidence) {
|
|
67
|
+
if (compareSensitivity(item.sensitivity, ceiling) > 0)
|
|
68
|
+
redactedRefs.push(item.ref);
|
|
69
|
+
else
|
|
70
|
+
kept.push(item);
|
|
71
|
+
}
|
|
72
|
+
return { kept, redactedRefs: [...new Set(redactedRefs)].sort() };
|
|
73
|
+
}
|
|
74
|
+
function redactedText(value) {
|
|
75
|
+
if (typeof value !== 'string' || value.trim() === '')
|
|
76
|
+
return undefined;
|
|
77
|
+
const sanitized = sanitizeGeneratedPlainText(value).trim();
|
|
78
|
+
return sanitized === '' ? undefined : sanitized;
|
|
79
|
+
}
|
|
80
|
+
function redactedFacts(decision) {
|
|
81
|
+
if (!decision)
|
|
82
|
+
return null;
|
|
83
|
+
const facts = {};
|
|
84
|
+
for (const key of [
|
|
85
|
+
'status',
|
|
86
|
+
'owner',
|
|
87
|
+
'selectedOption',
|
|
88
|
+
'recommendation',
|
|
89
|
+
'reversibility',
|
|
90
|
+
'deadline',
|
|
91
|
+
'note',
|
|
92
|
+
]) {
|
|
93
|
+
const value = redactedText(decision[key]);
|
|
94
|
+
if (value !== undefined)
|
|
95
|
+
facts[key] = value;
|
|
96
|
+
}
|
|
97
|
+
return Object.keys(facts).length > 0 ? facts : null;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Assemble the ceiling-filtered, redacted brief/decision inputs for the
|
|
101
|
+
* pipeline builder. Evidence above the ceiling is removed here — before the
|
|
102
|
+
* renderer runs — and every free-text field passes through the redaction path,
|
|
103
|
+
* so above-ceiling and secret-like content can never reach rendered output.
|
|
104
|
+
*/
|
|
105
|
+
export function buildDecisionBriefInput(source, ceiling) {
|
|
106
|
+
const { kept, redactedRefs } = filterEvidenceByCeiling(source.evidence, ceiling);
|
|
107
|
+
const evidence = kept.map((item) => item.ref);
|
|
108
|
+
const options = (source.options ?? [])
|
|
109
|
+
.map((option) => {
|
|
110
|
+
const label = redactedText(option.label);
|
|
111
|
+
if (label === undefined)
|
|
112
|
+
return null;
|
|
113
|
+
const detail = redactedText(option.detail);
|
|
114
|
+
return detail === undefined ? { label } : { label, detail };
|
|
115
|
+
})
|
|
116
|
+
.filter((option) => option !== null);
|
|
117
|
+
const brief = {
|
|
118
|
+
id: source.id,
|
|
119
|
+
title: source.title.trim(),
|
|
120
|
+
};
|
|
121
|
+
const summary = redactedText(source.summary);
|
|
122
|
+
if (summary !== undefined)
|
|
123
|
+
brief.summary = summary;
|
|
124
|
+
const question = redactedText(source.question);
|
|
125
|
+
if (question !== undefined)
|
|
126
|
+
brief.question = question;
|
|
127
|
+
if (evidence.length > 0)
|
|
128
|
+
brief.evidence = evidence;
|
|
129
|
+
if (options.length > 0)
|
|
130
|
+
brief.options = options;
|
|
131
|
+
const blocks = redactedText(source.blocks);
|
|
132
|
+
if (blocks !== undefined)
|
|
133
|
+
brief.blocks = blocks;
|
|
134
|
+
return {
|
|
135
|
+
brief,
|
|
136
|
+
decision: redactedFacts(source.decision),
|
|
137
|
+
redactedEvidenceRefs: redactedRefs,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Render a ceiling-filtered brief/decision into a validated, self-contained
|
|
142
|
+
* offline artifact envelope. The pipeline builder is authoritative for the
|
|
143
|
+
* offline posture: any `http(s)://` reference in the rendered HTML fails closed
|
|
144
|
+
* with `E_OPERATE_DECISION_BRIEF_NOT_OFFLINE`, which is allowed to propagate
|
|
145
|
+
* unchanged (DoD: an external reference "fails closed via the pipeline error").
|
|
146
|
+
*/
|
|
147
|
+
export async function renderOperatingDecisionBriefArtifact(source, ceiling) {
|
|
148
|
+
const build = await loadOperatingDecisionBriefBuilder();
|
|
149
|
+
const { brief, decision, redactedEvidenceRefs } = buildDecisionBriefInput(source, ceiling);
|
|
150
|
+
const envelope = build(brief, decision);
|
|
151
|
+
const artifact = envelope.artifacts[0];
|
|
152
|
+
if (!artifact || artifact.kind !== 'html' || typeof artifact.html !== 'string') {
|
|
153
|
+
throw new OperateError('E_OPERATE_ARTIFACT_REJECTED', 'The decision-brief renderer did not return a single HTML artifact.');
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
envelope,
|
|
157
|
+
html: artifact.html,
|
|
158
|
+
sha256: artifact.sha256,
|
|
159
|
+
sandbox: OPAQUE_ORIGIN_DECISION_BRIEF_SANDBOX,
|
|
160
|
+
redactedEvidenceRefs,
|
|
161
|
+
offline: true,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Read the machine-local sensitivity ceiling. Mirrors the collection/dispatch
|
|
166
|
+
* paths: the ceiling defaults to `internal` when preferences are absent so a
|
|
167
|
+
* brief is never rendered with a more permissive posture than collection used.
|
|
168
|
+
*/
|
|
169
|
+
export async function readOperatingSensitivityCeiling(projectRoot, options = {}) {
|
|
170
|
+
const paths = resolveOperatingPaths(projectRoot, { localRoot: options.localRoot });
|
|
171
|
+
const preferences = await readFile(path.join(paths.localRoot, 'preferences.json'), 'utf8')
|
|
172
|
+
.then((raw) => JSON.parse(raw))
|
|
173
|
+
.catch(() => ({ sensitivityCeiling: 'internal' }));
|
|
174
|
+
return preferences.sensitivityCeiling ?? 'internal';
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Render a brief/decision and write its self-contained HTML to a
|
|
178
|
+
* project-contained destination. This is the share-on-request boundary:
|
|
179
|
+
* nothing is written unless the operator supplied `--render <path>`, and the
|
|
180
|
+
* file is written with restrictive permissions to the local project only. When
|
|
181
|
+
* `ceiling` is omitted it is resolved from the machine-local preferences.
|
|
182
|
+
*/
|
|
183
|
+
export async function writeOperatingDecisionBriefArtifact(input) {
|
|
184
|
+
const ceiling = input.ceiling ??
|
|
185
|
+
(await readOperatingSensitivityCeiling(input.projectRoot, { localRoot: input.localRoot }));
|
|
186
|
+
const target = await resolveContainedPath(input.projectRoot, input.destination);
|
|
187
|
+
const rendered = await renderOperatingDecisionBriefArtifact(input.source, ceiling);
|
|
188
|
+
await mkdir(path.dirname(target), { recursive: true, mode: 0o700 });
|
|
189
|
+
const temporary = `${target}.${process.pid}.tmp`;
|
|
190
|
+
await writeFile(temporary, rendered.html, { mode: 0o600 });
|
|
191
|
+
await rename(temporary, target);
|
|
192
|
+
return { ...rendered, path: target, sensitivityCeiling: ceiling };
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=decision-brief.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-brief.js","sourceRoot":"","sources":["../../../src/services/operate/decision-brief.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA0lBD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA4CvC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { canonicalDigest } from './canonical.js';
|
|
5
|
-
import { operatingProjectKey } from './config.js';
|
|
5
|
+
import { operatingProjectKey, readOperatingDispatchModeOverrides } from './config.js';
|
|
6
6
|
import { OperatingEventStore } from './event-store.js';
|
|
7
7
|
import { guidedSessionStatus } from './interaction/session-service.js';
|
|
8
8
|
import { readJournal } from './journal.js';
|
|
9
9
|
import { readOperatingLock } from './lock-service.js';
|
|
10
|
+
import { detectOperatingStorageLayout } from './migration.js';
|
|
10
11
|
import { inspectOperatingProjectionDrift } from './projection-persistence.js';
|
|
11
12
|
import { loadOperatingProtocol, operatingPipelineAvailable } from './protocol.js';
|
|
12
13
|
import { resolveOperatingPaths } from './workspace.js';
|
|
@@ -288,6 +289,266 @@ async function diagnoseJournals(projectRoot, localRoot) {
|
|
|
288
289
|
message: 'Operating transaction journals are terminal and schema-valid',
|
|
289
290
|
};
|
|
290
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* Additive Protocol v1.3 (FR10 / E-010) check: detect the on-disk storage
|
|
294
|
+
* layout (SPEC-002 v1.2 vs the v1.3 `.state/` view) and name any inconsistency
|
|
295
|
+
* — an interrupted migration that left the v1.3 view alongside SPEC-002 residue,
|
|
296
|
+
* or a project still on the legacy layout — with the automatic-migration repair.
|
|
297
|
+
*/
|
|
298
|
+
async function diagnoseStorageLayout(projectRoot, localRoot) {
|
|
299
|
+
const paths = resolveOperatingPaths(projectRoot, { localRoot });
|
|
300
|
+
const layout = await detectOperatingStorageLayout(projectRoot, { localRoot });
|
|
301
|
+
// SPEC-002 internals that must not coexist with the v1.3 `.state/` view: the
|
|
302
|
+
// root events log, the per-digest-prefix records tree, and the checkpoint dir.
|
|
303
|
+
const residue = [
|
|
304
|
+
path.join(paths.root, 'events.jsonl'),
|
|
305
|
+
path.join(paths.root, 'records'),
|
|
306
|
+
path.join(paths.root, 'checkpoints'),
|
|
307
|
+
].filter((target) => existsSync(target));
|
|
308
|
+
if (layout === 'v1.3' && residue.length > 0) {
|
|
309
|
+
return {
|
|
310
|
+
code: 'operate-layout',
|
|
311
|
+
status: 'warn',
|
|
312
|
+
message: `Operating storage is on the v1.3 \`.state/\` layout but ${residue.length} SPEC-002 residue path(s) remain from an interrupted migration`,
|
|
313
|
+
fix: 'Run `planr operate migrate apply --yes` to clear the residual SPEC-002 layout.',
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
if (layout === 'v1.2') {
|
|
317
|
+
return {
|
|
318
|
+
code: 'operate-layout',
|
|
319
|
+
status: 'warn',
|
|
320
|
+
message: 'Operating storage is on the legacy SPEC-002 layout and has not migrated to the v1.3 `.state/` layout',
|
|
321
|
+
fix: 'Run `planr operate migrate apply --yes` to migrate the storage layout to v1.3.',
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
code: 'operate-layout',
|
|
326
|
+
status: 'pass',
|
|
327
|
+
message: layout === 'v1.3'
|
|
328
|
+
? 'Operating storage is on the v1.3 `.state/` layout with no SPEC-002 residue'
|
|
329
|
+
: 'No Operating Board storage layout is present yet',
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Additive Protocol v1.3 (FR10 / E-010) check: verify every line of the
|
|
334
|
+
* append-only `.state/records.jsonl` is parseable and carries consistent
|
|
335
|
+
* content-address digests. The record digest is a pure function of
|
|
336
|
+
* `(recordType, createdAt, correlationId, contentDigest)` and `contentDigest`
|
|
337
|
+
* is the canonical digest of the content, so both are recomputed exactly as the
|
|
338
|
+
* write path and `readRecord` do. A v1.2 (unmigrated) project keeps records in
|
|
339
|
+
* the SPEC-002 tree and has no `.state/records.jsonl` yet — that is a pass.
|
|
340
|
+
*/
|
|
341
|
+
async function diagnoseRecordsLog(projectRoot, localRoot) {
|
|
342
|
+
const paths = resolveOperatingPaths(projectRoot, { localRoot });
|
|
343
|
+
const raw = await readFile(paths.records, 'utf8').catch((error) => {
|
|
344
|
+
if (error.code === 'ENOENT')
|
|
345
|
+
return null;
|
|
346
|
+
throw error;
|
|
347
|
+
});
|
|
348
|
+
if (raw === null) {
|
|
349
|
+
return {
|
|
350
|
+
code: 'operate-records',
|
|
351
|
+
status: 'pass',
|
|
352
|
+
message: 'No v1.3 `.state/records.jsonl` log is present yet',
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
let counted = 0;
|
|
356
|
+
for (const [index, line] of raw.split('\n').entries()) {
|
|
357
|
+
if (!line.trim())
|
|
358
|
+
continue;
|
|
359
|
+
counted += 1;
|
|
360
|
+
let entry;
|
|
361
|
+
try {
|
|
362
|
+
entry = JSON.parse(line);
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
return {
|
|
366
|
+
code: 'operate-records',
|
|
367
|
+
status: 'fail',
|
|
368
|
+
message: `Operating \`.state/records.jsonl\` line ${index + 1} is not valid JSON`,
|
|
369
|
+
fix: 'Run `planr operate integrity status`; do not edit .state/records.jsonl by hand.',
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
if (typeof entry.digest !== 'string' ||
|
|
373
|
+
!entry.digest.startsWith('sha256:') ||
|
|
374
|
+
typeof entry.contentDigest !== 'string' ||
|
|
375
|
+
!entry.contentDigest.startsWith('sha256:')) {
|
|
376
|
+
return {
|
|
377
|
+
code: 'operate-records',
|
|
378
|
+
status: 'fail',
|
|
379
|
+
message: `Operating \`.state/records.jsonl\` line ${index + 1} is missing its content-address digests`,
|
|
380
|
+
fix: 'Run `planr operate integrity status`; do not edit .state/records.jsonl by hand.',
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
const consistent = entry.content !== undefined &&
|
|
384
|
+
entry.contentDigest === canonicalDigest(entry.content) &&
|
|
385
|
+
entry.digest ===
|
|
386
|
+
canonicalDigest({
|
|
387
|
+
recordType: entry.recordType,
|
|
388
|
+
createdAt: entry.createdAt,
|
|
389
|
+
correlationId: entry.correlationId,
|
|
390
|
+
contentDigest: entry.contentDigest,
|
|
391
|
+
});
|
|
392
|
+
if (!consistent) {
|
|
393
|
+
return {
|
|
394
|
+
code: 'operate-records',
|
|
395
|
+
status: 'fail',
|
|
396
|
+
message: `Operating \`.state/records.jsonl\` line ${index + 1} digest does not match its content`,
|
|
397
|
+
fix: 'Run `planr operate integrity status`, then recover the affected cycle from the verified event chain.',
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return {
|
|
402
|
+
code: 'operate-records',
|
|
403
|
+
status: 'pass',
|
|
404
|
+
message: `${counted} operating records.jsonl ${counted === 1 ? 'entry is' : 'entries are'} parseable with consistent content-address digests`,
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Additive Protocol v1.3 (FR10 / E-010) check: the persisted per-project
|
|
409
|
+
* dispatch-mode overrides (machine-local `preferences.json`) must reference only
|
|
410
|
+
* known registry role IDs and `pack`/`mission` modes. Reuses the same strict
|
|
411
|
+
* validation the write path enforces; an invalid map fails closed with the
|
|
412
|
+
* repair rather than throwing out of the doctor run.
|
|
413
|
+
*/
|
|
414
|
+
async function diagnoseDispatchModes(projectRoot, localRoot) {
|
|
415
|
+
try {
|
|
416
|
+
const overrides = await readOperatingDispatchModeOverrides(projectRoot, { localRoot });
|
|
417
|
+
const count = Object.keys(overrides).length;
|
|
418
|
+
return {
|
|
419
|
+
code: 'operate-dispatch-mode',
|
|
420
|
+
status: 'pass',
|
|
421
|
+
message: count === 0
|
|
422
|
+
? 'No per-project dispatch-mode overrides are configured'
|
|
423
|
+
: `${count} per-project dispatch-mode override(s) reference known roles and valid pack/mission modes`,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
catch (error) {
|
|
427
|
+
return {
|
|
428
|
+
code: 'operate-dispatch-mode',
|
|
429
|
+
status: 'fail',
|
|
430
|
+
message: `Operating dispatch-mode overrides are invalid: ${error instanceof Error ? error.message : String(error)}`,
|
|
431
|
+
fix: 'Run `planr operate config edit --dispatch-mode-override <roleId>=<pack|mission>` to restore valid overrides.',
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* FR11: detect machine-local adapter sessions that are bound to a superseded
|
|
437
|
+
* board generation (their `boardIdentity` no longer matches the committed
|
|
438
|
+
* event-chain genesis) or to a cycle that is no longer present in committed
|
|
439
|
+
* state. These are exactly the sessions that used to dead-end a re-inited board
|
|
440
|
+
* with a misleading `E_OPERATE_ADVISOR_ISOLATION`; they now supersede cleanly,
|
|
441
|
+
* and this diagnostic names the scoped purge so an operator can clear them
|
|
442
|
+
* before the next dispatch. Reads only machine-local session files and never
|
|
443
|
+
* mutates state.
|
|
444
|
+
*/
|
|
445
|
+
async function diagnoseAdapterSessions(projectRoot, localRoot) {
|
|
446
|
+
const paths = resolveOperatingPaths(projectRoot, { localRoot });
|
|
447
|
+
let boardIdentity = '';
|
|
448
|
+
let committedCycleIds = new Set();
|
|
449
|
+
try {
|
|
450
|
+
const store = new OperatingEventStore(projectRoot, { localRoot });
|
|
451
|
+
const { events } = await store.replay();
|
|
452
|
+
const genesis = events.find((event) => event.previousEventHash === null) ?? events[0];
|
|
453
|
+
boardIdentity = genesis?.eventHash ?? '';
|
|
454
|
+
const state = await store.state();
|
|
455
|
+
committedCycleIds = new Set(state.cycles.map((cycle) => cycle.id));
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
// A broken/absent event chain is diagnosed by the event-replay checks;
|
|
459
|
+
// adapter-session staleness is only meaningful against a readable board.
|
|
460
|
+
return {
|
|
461
|
+
code: 'operate-adapter-sessions',
|
|
462
|
+
status: 'pass',
|
|
463
|
+
message: 'No committed board identity is available to validate adapter sessions against yet',
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
const entries = (await readdir(paths.advisors, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith('.json'));
|
|
467
|
+
const stale = [];
|
|
468
|
+
for (const entry of entries) {
|
|
469
|
+
const raw = await readFile(path.join(paths.advisors, entry.name), 'utf8').catch(() => null);
|
|
470
|
+
if (raw === null)
|
|
471
|
+
continue;
|
|
472
|
+
let session;
|
|
473
|
+
try {
|
|
474
|
+
session = JSON.parse(raw);
|
|
475
|
+
}
|
|
476
|
+
catch {
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
if (session.implementation !== 'openplanr-operate-adapter')
|
|
480
|
+
continue;
|
|
481
|
+
const boundToBoard = (session.boardIdentity ?? '') === boardIdentity;
|
|
482
|
+
const boundToCommittedCycle = typeof session.cycleId === 'string' && committedCycleIds.has(session.cycleId);
|
|
483
|
+
if (!boundToBoard || !boundToCommittedCycle)
|
|
484
|
+
stale.push(entry.name);
|
|
485
|
+
}
|
|
486
|
+
if (stale.length > 0) {
|
|
487
|
+
return {
|
|
488
|
+
code: 'operate-adapter-sessions',
|
|
489
|
+
status: 'warn',
|
|
490
|
+
message: `${stale.length} machine-local adapter session(s) are bound to a superseded board generation or a cycle absent from committed state`,
|
|
491
|
+
fix: 'Run `planr operate cache purge --yes` to clear the stale adapter sessions before the next dispatch.',
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
return {
|
|
495
|
+
code: 'operate-adapter-sessions',
|
|
496
|
+
status: 'pass',
|
|
497
|
+
message: 'Machine-local adapter sessions are bound to the current board identity and its cycles',
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* FR11: detect incremental evidence baselines whose captured `workspaceDigest`
|
|
502
|
+
* no longer matches the committed workspace manifest — a baseline collected
|
|
503
|
+
* against a superseded workspace (for example, a prior board generation). Such a
|
|
504
|
+
* baseline is already rejected on read (recollect deep), so this is a `warn`,
|
|
505
|
+
* not a `fail`; it names the scoped purge that drops the orphaned baselines.
|
|
506
|
+
*/
|
|
507
|
+
async function diagnoseIncrementalBaselines(projectRoot, localRoot) {
|
|
508
|
+
const paths = resolveOperatingPaths(projectRoot, { localRoot });
|
|
509
|
+
const committed = await readFile(paths.workspace, 'utf8')
|
|
510
|
+
.then((raw) => JSON.parse(raw))
|
|
511
|
+
.catch(() => null);
|
|
512
|
+
if (!committed?.workspaceDigest) {
|
|
513
|
+
return {
|
|
514
|
+
code: 'operate-incremental-baseline',
|
|
515
|
+
status: 'pass',
|
|
516
|
+
message: 'No committed workspace digest is available to validate incremental baselines yet',
|
|
517
|
+
};
|
|
518
|
+
}
|
|
519
|
+
const directory = path.join(paths.evidence, 'incremental');
|
|
520
|
+
const entries = (await readdir(directory, { withFileTypes: true }).catch(() => [])).filter((entry) => entry.isFile() && entry.name.endsWith('.json'));
|
|
521
|
+
const stale = [];
|
|
522
|
+
for (const entry of entries) {
|
|
523
|
+
const raw = await readFile(path.join(directory, entry.name), 'utf8').catch(() => null);
|
|
524
|
+
if (raw === null)
|
|
525
|
+
continue;
|
|
526
|
+
let record;
|
|
527
|
+
try {
|
|
528
|
+
record = JSON.parse(raw);
|
|
529
|
+
}
|
|
530
|
+
catch {
|
|
531
|
+
continue;
|
|
532
|
+
}
|
|
533
|
+
if (record.implementation !== 'openplanr-operate-incremental-evidence')
|
|
534
|
+
continue;
|
|
535
|
+
if ((record.workspaceDigest ?? '') !== committed.workspaceDigest)
|
|
536
|
+
stale.push(entry.name);
|
|
537
|
+
}
|
|
538
|
+
if (stale.length > 0) {
|
|
539
|
+
return {
|
|
540
|
+
code: 'operate-incremental-baseline',
|
|
541
|
+
status: 'warn',
|
|
542
|
+
message: `${stale.length} incremental evidence baseline(s) no longer match the committed workspace digest and will be recollected deep`,
|
|
543
|
+
fix: 'Run `planr operate cache purge --yes` to drop the stale incremental baselines.',
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
return {
|
|
547
|
+
code: 'operate-incremental-baseline',
|
|
548
|
+
status: 'pass',
|
|
549
|
+
message: 'Incremental evidence baselines match the committed workspace digest',
|
|
550
|
+
};
|
|
551
|
+
}
|
|
291
552
|
export async function diagnoseOperatingBoard(input) {
|
|
292
553
|
const diagnostics = [await diagnoseProtocol(input.pipelineVersion)];
|
|
293
554
|
const paths = resolveOperatingPaths(input.projectRoot, { localRoot: input.localRoot });
|
|
@@ -316,7 +577,14 @@ export async function diagnoseOperatingBoard(input) {
|
|
|
316
577
|
? { fix: 'Run `planr operate cache purge --yes` after reviewing the cache status.' }
|
|
317
578
|
: {}),
|
|
318
579
|
});
|
|
319
|
-
diagnostics.push(...(await diagnoseEventState(input.projectRoot, input.localRoot)), await diagnoseLocks(input.projectRoot, input.localRoot), await diagnoseJournals(input.projectRoot, input.localRoot)
|
|
580
|
+
diagnostics.push(...(await diagnoseEventState(input.projectRoot, input.localRoot)), await diagnoseLocks(input.projectRoot, input.localRoot), await diagnoseJournals(input.projectRoot, input.localRoot),
|
|
581
|
+
// Additive Protocol v1.3 (FR10 / E-010) diagnostics layered on the
|
|
582
|
+
// SPEC-003 surface: storage-layout version, records-log integrity, and
|
|
583
|
+
// persisted dispatch-mode override validity.
|
|
584
|
+
await diagnoseStorageLayout(input.projectRoot, input.localRoot), await diagnoseRecordsLog(input.projectRoot, input.localRoot), await diagnoseDispatchModes(input.projectRoot, input.localRoot),
|
|
585
|
+
// FR11: the two staleness detectors for the machine-local caches FR4 binds
|
|
586
|
+
// to board identity — stale adapter sessions and stale incremental baselines.
|
|
587
|
+
await diagnoseAdapterSessions(input.projectRoot, input.localRoot), await diagnoseIncrementalBaselines(input.projectRoot, input.localRoot));
|
|
320
588
|
return diagnostics;
|
|
321
589
|
}
|
|
322
590
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AASvD,MAAM,cAAc,GAAG;IACrB,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,eAAe;IACf,qBAAqB;IACrB,OAAO;CACC,CAAC;AAEX,MAAM,kBAAkB,GAAG;IACzB,YAAY;IACZ,OAAO;IACP,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,aAAa;CACL,CAAC;AAEX,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhF,SAAS,OAAO,CAAC,MAAgB,EAAE,QAA2B;IAC5D,OAAO,CACL,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACjC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,eAAwB;IACtD,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;QAClC,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,iFAAiF;YAC1F,GAAG,EAAE,mGAAmG;SACzG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,eAAe,GACnB,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC;YACjF,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;QACtD,IACE,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;YACjC,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,CAAC;YACzC,CAAC,eAAe,EAChB,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,MAAM;gBACd,OAAO,EACL,4FAA4F;gBAC9F,GAAG,EAAE,8EAA8E;aACpF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0DAA0D,eAAe,CAAC,CAAC,CAAC,wBAAwB,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;SACtI,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6DACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;YACF,GAAG,EAAE,8EAA8E;SACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,WAAmB,EACnB,SAA6B;IAE7B,MAAM,WAAW,GAAgC,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,IAAI,MAA0D,CAAC;IAC/D,IAAI,KAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,kDAAkD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;SACvF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,kCACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;YACF,GAAG,EAAE,yEAAyE;SAC/E,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,+BAA+B,CAAC;YAC5D,WAAW;YACX,KAAK;SACN,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACjF,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACjD,OAAO,EACL,UAAU,CAAC,MAAM,KAAK,CAAC;gBACrB,CAAC,CAAC,uEAAuE;gBACzE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,+DAA+D;YACzF,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBACvB,CAAC,CAAC;oBACE,GAAG,EAAE,0GAA0G;iBAChH;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,gDACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;YACF,GAAG,EAAE,mFAAmF;SACzF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mEAAmE;gBAC5E,GAAG,EAAE,+FAA+F;aACrG,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,sEAAsE;aAChF,CAAC,CAAC;YACH,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,eAAe,GACnB,UAAU,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC;YACjC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtF,MAAM,oBAAoB,GACxB,UAAU,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC;YACjC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI;YACpC,CAAC,CAAC,eAAe,EAAE,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC;QAC/D,IAAI,CAAC,oBAAoB,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvF,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,kEAAkE;gBAC3E,GAAG,EAAE,mFAAmF;aACzF,CAAC,CAAC;YACH,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6CAA6C,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE;SACtF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,MAAM,iBAAiB,GACrB,eAAe,CAAC,OAAO,CAAC,KAAK,eAAe,CAAC,KAAK,CAAC;YACnD,OAAO,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ;YACxD,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAC3C,OAAO,EAAE,iBAAiB;gBACxB,CAAC,CAAC,mBAAmB,IAAI,CAAC,MAAM,8DAA8D;gBAC9F,CAAC,CAAC,+EAA+E;YACnF,GAAG,CAAC,CAAC,iBAAiB;gBACpB,CAAC,CAAC;oBACE,GAAG,EAAE,kGAAkG;iBACxG;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,2CACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;YACF,GAAG,EAAE,uGAAuG;SAC7G,CAAC,CAAC;IACL,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,WAAmB,EACnB,SAA6B;IAE7B,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;SAClF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACjE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC5D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,+DAA+D;YAC3F,GAAG,EAAE,iGAAiG;SACvG,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,oCAAoC;YAC5D,GAAG,EAAE,gGAAgG;SACtG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,MAAM;QACd,OAAO,EACL,MAAM,CAAC,MAAM,GAAG,CAAC;YACf,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,wDAAwD;YAC1E,CAAC,CAAC,yCAAyC;KAChD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,SAA6B;IAC5E,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/F,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3F,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,WAAmB,EACnB,SAA6B;IAE7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,qDAAqD;YAC/E,GAAG,EAAE,oFAAoF;SAC1F,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,oDAAoD;YAC9E,GAAG,EAAE,iGAAiG;SACvG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,8DAA8D;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAI5C;IACC,MAAM,WAAW,GAAG,CAAC,MAAM,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,WAAW,CAAC;IAChD,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;QAClC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,sEAAsE;YAC/E,GAAG,EAAE,uFAAuF;SAC7F,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC;QACzC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC9C,OAAO,EACL,QAAQ,CAAC,OAAO,GAAG,CAAC;YAClB,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,iEAAiE;YACtF,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,qEAAqE;QAC7F,GAAG,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC;YACtB,CAAC,CAAC,EAAE,GAAG,EAAE,yEAAyE,EAAE;YACpF,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,CACd,GAAG,CAAC,MAAM,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EACjE,MAAM,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EACvD,MAAM,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAC3D,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/services/operate/doctor.ts"],"names":[],"mappings":"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"}
|