openplanr 1.19.0 → 1.20.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/backlog.d.ts.map +1 -1
- package/dist/cli/commands/backlog.js +3 -0
- package/dist/cli/commands/backlog.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +3 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/epic.d.ts.map +1 -1
- package/dist/cli/commands/epic.js +2 -0
- package/dist/cli/commands/epic.js.map +1 -1
- package/dist/cli/commands/feature.d.ts.map +1 -1
- package/dist/cli/commands/feature.js +2 -0
- package/dist/cli/commands/feature.js.map +1 -1
- package/dist/cli/commands/operate.d.ts +5 -2
- package/dist/cli/commands/operate.d.ts.map +1 -1
- package/dist/cli/commands/operate.js +10 -101
- package/dist/cli/commands/operate.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +2 -0
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/quick.d.ts.map +1 -1
- package/dist/cli/commands/quick.js +2 -0
- package/dist/cli/commands/quick.js.map +1 -1
- package/dist/cli/commands/refine.d.ts.map +1 -1
- package/dist/cli/commands/refine.js +2 -0
- package/dist/cli/commands/refine.js.map +1 -1
- package/dist/cli/commands/revise.d.ts.map +1 -1
- package/dist/cli/commands/revise.js +2 -0
- package/dist/cli/commands/revise.js.map +1 -1
- package/dist/cli/commands/spec.d.ts.map +1 -1
- package/dist/cli/commands/spec.js +2 -0
- package/dist/cli/commands/spec.js.map +1 -1
- package/dist/cli/commands/sprint.d.ts.map +1 -1
- package/dist/cli/commands/sprint.js +2 -0
- package/dist/cli/commands/sprint.js.map +1 -1
- package/dist/cli/commands/story.d.ts.map +1 -1
- package/dist/cli/commands/story.js +3 -0
- package/dist/cli/commands/story.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +3 -0
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/services/ai-service.d.ts +3 -5
- package/dist/services/ai-service.d.ts.map +1 -1
- package/dist/services/ai-service.js +7 -1
- package/dist/services/ai-service.js.map +1 -1
- package/dist/services/credentials-service.d.ts.map +1 -1
- package/dist/services/credentials-service.js +2 -0
- package/dist/services/credentials-service.js.map +1 -1
- package/dist/services/deprecation-notices.d.ts +5 -0
- package/dist/services/deprecation-notices.d.ts.map +1 -0
- package/dist/services/deprecation-notices.js +6 -0
- package/dist/services/deprecation-notices.js.map +1 -0
- package/dist/services/operate/advisors.d.ts +144 -166
- package/dist/services/operate/advisors.d.ts.map +1 -1
- package/dist/services/operate/advisors.js +178 -543
- package/dist/services/operate/advisors.js.map +1 -1
- package/dist/services/operate/citation-resolution.d.ts.map +1 -1
- package/dist/services/operate/citation-resolution.js +50 -1
- package/dist/services/operate/citation-resolution.js.map +1 -1
- package/dist/services/operate/config.d.ts +18 -52
- package/dist/services/operate/config.d.ts.map +1 -1
- package/dist/services/operate/config.js +24 -206
- package/dist/services/operate/config.js.map +1 -1
- package/dist/services/operate/doctor.d.ts +15 -0
- package/dist/services/operate/doctor.d.ts.map +1 -1
- package/dist/services/operate/doctor.js +142 -32
- package/dist/services/operate/doctor.js.map +1 -1
- package/dist/services/operate/engine.d.ts +22 -78
- package/dist/services/operate/engine.d.ts.map +1 -1
- package/dist/services/operate/engine.js +269 -202
- package/dist/services/operate/engine.js.map +1 -1
- package/dist/services/operate/evidence.d.ts +9 -107
- package/dist/services/operate/evidence.d.ts.map +1 -1
- package/dist/services/operate/evidence.js +0 -1403
- package/dist/services/operate/evidence.js.map +1 -1
- package/dist/services/operate/index.d.ts.map +1 -1
- package/dist/services/operate/index.js +10 -231
- package/dist/services/operate/index.js.map +1 -1
- package/dist/services/operate/integrity.d.ts +81 -0
- package/dist/services/operate/integrity.d.ts.map +1 -0
- package/dist/services/operate/integrity.js +152 -0
- package/dist/services/operate/integrity.js.map +1 -0
- package/dist/services/operate/interaction/answer-service.d.ts +0 -10
- package/dist/services/operate/interaction/answer-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/answer-service.js +63 -43
- 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 +105 -21
- package/dist/services/operate/interaction/question-engine.js.map +1 -1
- package/dist/services/operate/interaction/question-registry.d.ts +16 -1
- package/dist/services/operate/interaction/question-registry.d.ts.map +1 -1
- package/dist/services/operate/interaction/question-registry.js +45 -39
- package/dist/services/operate/interaction/question-registry.js.map +1 -1
- package/dist/services/operate/interaction/session-service.d.ts.map +1 -1
- package/dist/services/operate/interaction/session-service.js +16 -11
- package/dist/services/operate/interaction/session-service.js.map +1 -1
- package/dist/services/operate/interaction/terminal-renderer.d.ts.map +1 -1
- package/dist/services/operate/interaction/terminal-renderer.js +16 -6
- package/dist/services/operate/interaction/terminal-renderer.js.map +1 -1
- package/dist/services/operate/maintenance.d.ts +1 -11
- package/dist/services/operate/maintenance.d.ts.map +1 -1
- package/dist/services/operate/maintenance.js +94 -342
- package/dist/services/operate/maintenance.js.map +1 -1
- package/dist/services/operate/mission-dispatch.d.ts +73 -55
- package/dist/services/operate/mission-dispatch.d.ts.map +1 -1
- package/dist/services/operate/mission-dispatch.js +91 -67
- package/dist/services/operate/mission-dispatch.js.map +1 -1
- package/dist/services/operate/projection-persistence.d.ts.map +1 -1
- package/dist/services/operate/projection-persistence.js +22 -2
- package/dist/services/operate/projection-persistence.js.map +1 -1
- package/dist/services/operate/projection.d.ts.map +1 -1
- package/dist/services/operate/projection.js +10 -3
- package/dist/services/operate/projection.js.map +1 -1
- package/dist/services/operate/protocol.d.ts +1 -41
- package/dist/services/operate/protocol.d.ts.map +1 -1
- package/dist/services/operate/protocol.js +7 -45
- package/dist/services/operate/protocol.js.map +1 -1
- package/dist/services/operate/redaction.d.ts +3 -3
- package/dist/services/operate/redaction.js +4 -4
- package/dist/services/operate/redaction.js.map +1 -1
- package/dist/services/operate/reports.d.ts +11 -1
- package/dist/services/operate/reports.d.ts.map +1 -1
- package/dist/services/operate/reports.js +88 -3
- package/dist/services/operate/reports.js.map +1 -1
- package/dist/services/operate/types.d.ts +42 -128
- package/dist/services/operate/types.d.ts.map +1 -1
- package/dist/services/operate/types.js.map +1 -1
- package/dist/services/operate/workspace.d.ts +0 -1
- package/dist/services/operate/workspace.d.ts.map +1 -1
- package/dist/services/operate/workspace.js +0 -2
- package/dist/services/operate/workspace.js.map +1 -1
- package/dist/services/runtime-manager-service.js +2 -2
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/package.json +3 -3
- package/dist/services/operate/evidence-classifications.d.ts +0 -59
- package/dist/services/operate/evidence-classifications.d.ts.map +0 -1
- package/dist/services/operate/evidence-classifications.js +0 -132
- package/dist/services/operate/evidence-classifications.js.map +0 -1
- package/dist/services/operate/evidence-diagnostics.d.ts +0 -23
- package/dist/services/operate/evidence-diagnostics.d.ts.map +0 -1
- package/dist/services/operate/evidence-diagnostics.js +0 -152
- package/dist/services/operate/evidence-diagnostics.js.map +0 -1
- package/dist/services/operate/evidence-readiness.d.ts +0 -18
- package/dist/services/operate/evidence-readiness.d.ts.map +0 -1
- package/dist/services/operate/evidence-readiness.js +0 -94
- package/dist/services/operate/evidence-readiness.js.map +0 -1
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import type { AIMessage } from '../../ai/types.js';
|
|
3
2
|
import type { OpenPlanrConfig } from '../../models/types.js';
|
|
4
|
-
import { type OperatingDispatchIsolation
|
|
5
|
-
import { type OperatingAdvisorBrief, type OperatingCharter, type OperatingDataGap, type
|
|
3
|
+
import { type OperatingDispatchIsolation } from './mission-dispatch.js';
|
|
4
|
+
import { type OperatingAdvisorBrief, type OperatingCharter, type OperatingDataGap, type OperatingEvidenceReadiness, type OperatingProviderManifest, type OperatingRoleId, type OperatingRoleResult, type OperatingSensitivity, type OperatingState } from './types.js';
|
|
6
5
|
declare const advisorOutputSchema: z.ZodObject<{
|
|
7
6
|
outcome: z.ZodEnum<{
|
|
8
7
|
quiet: "quiet";
|
|
@@ -38,7 +37,51 @@ declare const advisorOutputSchema: z.ZodObject<{
|
|
|
38
37
|
conflicts: z.ZodArray<z.ZodString>;
|
|
39
38
|
}, z.core.$strict>;
|
|
40
39
|
export type OperatingAdvisorResponse = z.infer<typeof advisorOutputSchema>;
|
|
41
|
-
|
|
40
|
+
declare const missionAdvisorOutputSchema: z.ZodObject<{
|
|
41
|
+
outcome: z.ZodEnum<{
|
|
42
|
+
quiet: "quiet";
|
|
43
|
+
proposals: "proposals";
|
|
44
|
+
}>;
|
|
45
|
+
proposals: z.ZodArray<z.ZodObject<{
|
|
46
|
+
proposalKey: z.ZodString;
|
|
47
|
+
type: z.ZodEnum<{
|
|
48
|
+
finding: "finding";
|
|
49
|
+
decision: "decision";
|
|
50
|
+
"data-gap": "data-gap";
|
|
51
|
+
merge: "merge";
|
|
52
|
+
sequence: "sequence";
|
|
53
|
+
}>;
|
|
54
|
+
title: z.ZodString;
|
|
55
|
+
problem: z.ZodString;
|
|
56
|
+
proposal: z.ZodString;
|
|
57
|
+
impact: z.ZodNumber;
|
|
58
|
+
confidence: z.ZodNumber;
|
|
59
|
+
ease: z.ZodNumber;
|
|
60
|
+
severity: z.ZodEnum<{
|
|
61
|
+
critical: "critical";
|
|
62
|
+
high: "high";
|
|
63
|
+
medium: "medium";
|
|
64
|
+
low: "low";
|
|
65
|
+
}>;
|
|
66
|
+
citations: z.ZodArray<z.ZodObject<{
|
|
67
|
+
citationKey: z.ZodOptional<z.ZodString>;
|
|
68
|
+
repositoryPath: z.ZodOptional<z.ZodString>;
|
|
69
|
+
lineRange: z.ZodOptional<z.ZodObject<{
|
|
70
|
+
start: z.ZodNumber;
|
|
71
|
+
end: z.ZodNumber;
|
|
72
|
+
}, z.core.$strict>>;
|
|
73
|
+
gitRevision: z.ZodOptional<z.ZodString>;
|
|
74
|
+
planrArtifactId: z.ZodOptional<z.ZodString>;
|
|
75
|
+
pinnedRevision: z.ZodString;
|
|
76
|
+
}, z.core.$strict>>;
|
|
77
|
+
dependsOnProposalKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
78
|
+
conflictsWithProposalKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
79
|
+
sequenceProposalKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
80
|
+
}, z.core.$strict>>;
|
|
81
|
+
gaps: z.ZodArray<z.ZodString>;
|
|
82
|
+
conflicts: z.ZodArray<z.ZodString>;
|
|
83
|
+
}, z.core.$strict>;
|
|
84
|
+
export type MissionAdvisorOutput = z.infer<typeof missionAdvisorOutputSchema>;
|
|
42
85
|
export declare function advisorResponseContractDetails(brief: OperatingAdvisorBrief): {
|
|
43
86
|
expectedSchema: 'operating-advisor-response@1.2.0';
|
|
44
87
|
example: unknown;
|
|
@@ -92,135 +135,61 @@ export interface AdvisorRoleContext {
|
|
|
92
135
|
openGaps: AdvisorOpenItem[];
|
|
93
136
|
pendingOutcomes: AdvisorOpenItem[];
|
|
94
137
|
}
|
|
95
|
-
/**
|
|
96
|
-
* Immutable, provider-neutral input for one advisory lens. This is the
|
|
97
|
-
* executable prompt contract used by both structured providers and native
|
|
98
|
-
* runtime adapters; it deliberately contains no tools or write authority.
|
|
99
|
-
*/
|
|
100
|
-
export interface OperatingAdvisorPack {
|
|
101
|
-
implementation: 'openplanr-operating-advisor-pack';
|
|
102
|
-
cycleId: string;
|
|
103
|
-
roleId: OperatingRoleId;
|
|
104
|
-
roleBrief: OperatingAdvisorBrief;
|
|
105
|
-
evidence: OperatingEvidence;
|
|
106
|
-
context: AdvisorRoleContext;
|
|
107
|
-
inputDigest: `sha256:${string}`;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Build the immutable non-advisor context shared by all independent lenses.
|
|
111
|
-
* Role filtering is applied later, after the evidence permission set is known.
|
|
112
|
-
*/
|
|
138
|
+
/** Build the immutable non-advisor context shared by all independent lenses. */
|
|
113
139
|
export declare function buildAdvisorOperatingContext(input: {
|
|
114
140
|
charterPath: string;
|
|
115
141
|
state: OperatingState;
|
|
116
142
|
cycleId: string;
|
|
117
143
|
}): Promise<AdvisorOperatingContext>;
|
|
118
|
-
export
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
context: AdvisorOperatingContext;
|
|
123
|
-
}): Promise<OperatingAdvisorPack>;
|
|
124
|
-
/**
|
|
125
|
-
* Measure a canonicalized advisor pack and fail closed when it exceeds the
|
|
126
|
-
* role's v1.2 `maxInputBytes`. Shared by `createOperatingAdvisorPack` (fresh
|
|
127
|
-
* construction) and `operateAdapterLifecycle`'s prepare branch (which also
|
|
128
|
-
* guards packs restored from an on-disk session that may predate this check),
|
|
129
|
-
* so an oversized pack can never reach a provider or native adapter from either
|
|
130
|
-
* call site. Reuses the existing `E_OPERATE_EVIDENCE_BUDGET` code.
|
|
131
|
-
*/
|
|
132
|
-
export declare function assertOperatingAdvisorPackWithinBudget(pack: OperatingAdvisorPack, maxInputBytes: number): void;
|
|
133
|
-
/**
|
|
134
|
-
* Derive a role's mission-mode input budget from the pipeline's published pack
|
|
135
|
-
* budget. Mission packets carry only an evidence INDEX (no bodies), so their
|
|
136
|
-
* budget is a fraction of the role's v1.2 pack budget — `packMaxInputBytes / 32
|
|
137
|
-
* KiB`, rounded — clamped to the registry's real spread `[1, 32]` KiB.
|
|
138
|
-
*
|
|
139
|
-
* The prior `[1, 9]` KiB ceiling was arbitrary: it capped every repository-reading
|
|
140
|
-
* lens (512 KiB → 16 KiB) and `technology-risk` (640 KiB → 20 KiB) down to 9 KiB.
|
|
141
|
-
* At ~300 canonical bytes per index item that admitted only ~25 items, so a real
|
|
142
|
-
* monorepo's packet overflowed the derived budget and mission dispatch failed
|
|
143
|
-
* closed on a healthy repository. The ceiling now tracks the schema's own
|
|
144
|
-
* `maxInputBytes` maximum (1 MiB → 32 KiB), so a large registry budget maps to a
|
|
145
|
-
* proportional mission budget instead of an arbitrary cut. This DERIVES a new
|
|
146
|
-
* value; it never mutates the frozen v1.2 `maxInputBytes`. Enforcing that
|
|
147
|
-
* pack-mode budget is a separate concern handled by
|
|
148
|
-
* `assertOperatingAdvisorPackWithinBudget` at pack construction, not here.
|
|
149
|
-
*/
|
|
150
|
-
export declare function deriveOperatingMissionBudget(packMaxInputBytes: number): number;
|
|
151
|
-
/**
|
|
152
|
-
* Derive how many evidence index items a role's mission packet can carry before
|
|
153
|
-
* the published pipeline must truncate (the `maxEvidenceItems` the assembler
|
|
154
|
-
* enforces). The cap is the number of `MISSION_EVIDENCE_INDEX_ITEM_BYTES`-sized
|
|
155
|
-
* slots that fit in the role's derived byte budget after reserving
|
|
156
|
-
* `MISSION_PACKET_OVERHEAD_RESERVE_BYTES` for the non-evidence payload,
|
|
157
|
-
* intersected with any caller-supplied upper bound (`config.budgets.maxItems`).
|
|
158
|
-
*
|
|
159
|
-
* This is the "per-role registry-sized default": `technology-risk`'s 640-KiB
|
|
160
|
-
* pack budget yields a larger cap than a 512-KiB lens, and the chair's 192-KiB
|
|
161
|
-
* budget a smaller one — instead of one flat number that starves large-budget
|
|
162
|
-
* roles. Because `slots * itemBytes + reserve <= derivedBudget` holds by
|
|
163
|
-
* construction and the real per-item/overhead costs sit under those bounds, a
|
|
164
|
-
* packet truncated to this cap fits the derived budget with margin.
|
|
165
|
-
*/
|
|
166
|
-
export declare function deriveOperatingMissionEvidenceCap(packMaxInputBytes: number, upperBound?: number): number;
|
|
167
|
-
/**
|
|
168
|
-
* The per-role mission evidence-item cap registry, derived once from the
|
|
169
|
-
* pipeline's role registry. Mirrors `deriveOperatingMissionBudgets` for the
|
|
170
|
-
* `maxEvidenceItems` dimension so `buildOperatingMissionPackets` can pass each
|
|
171
|
-
* role its own byte-fitting cap instead of one flat value.
|
|
172
|
-
*/
|
|
173
|
-
export declare function deriveOperatingMissionEvidenceCaps(upperBound?: number): Promise<Record<string, number>>;
|
|
174
|
-
/**
|
|
175
|
-
* The per-role mission input budget registry, derived once from the pipeline's
|
|
176
|
-
* role registry. Every value is single-digit KiB.
|
|
177
|
-
*/
|
|
178
|
-
export declare function deriveOperatingMissionBudgets(): Promise<Record<string, number>>;
|
|
179
|
-
export interface OperatingMissionPacketInput extends OperatingMissionPacketState {
|
|
144
|
+
export interface OperatingMandate {
|
|
145
|
+
kind: 'operating-mandate';
|
|
146
|
+
schemaVersion: '1.0.0';
|
|
147
|
+
protocolVersion: '1.3.0';
|
|
180
148
|
roleId: OperatingRoleId;
|
|
181
|
-
|
|
182
|
-
|
|
149
|
+
lensQuestion: string;
|
|
150
|
+
mandate: string;
|
|
151
|
+
investigationMandate: {
|
|
152
|
+
examine: string[];
|
|
153
|
+
sufficientGrounding: string;
|
|
154
|
+
};
|
|
155
|
+
boundaries: {
|
|
156
|
+
roots: string[];
|
|
157
|
+
sensitivityCeiling: OperatingSensitivity;
|
|
158
|
+
forbiddenPaths: string[];
|
|
159
|
+
};
|
|
160
|
+
responseSchema: 'operating-advisor-response@1.3.0';
|
|
161
|
+
citationRequirement: {
|
|
162
|
+
everyClaimCited: true;
|
|
163
|
+
citationShape: 'operating-citation@1.3.0';
|
|
164
|
+
description: string;
|
|
165
|
+
};
|
|
166
|
+
mandateDigest: `sha256:${string}`;
|
|
183
167
|
}
|
|
184
168
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
169
|
+
* Build the Protocol v1.3 operating mandate for a role (FR1). The mandate's
|
|
170
|
+
* boundaries are declared directly from the caller's granted workspace roots —
|
|
171
|
+
* never an evidence-index-derived subset — so a gitignored `.planr/` tree is
|
|
172
|
+
* fully readable when the caller declares it. The registry supplies the lens
|
|
173
|
+
* question, investigation mandate, and sensitivity ceiling; this function only
|
|
174
|
+
* threads the declared boundaries through.
|
|
190
175
|
*/
|
|
191
|
-
export
|
|
176
|
+
export declare function buildOperatingMandate(input: {
|
|
192
177
|
roleId: OperatingRoleId;
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
maxEvidenceItems: number;
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* The result of building one mission packet: the digest-bound packet plus, when
|
|
200
|
-
* the pipeline truncated the evidence index to fit `maxEvidenceItems`, the
|
|
201
|
-
* provenance record describing what was dropped.
|
|
202
|
-
*/
|
|
203
|
-
export interface OperatingMissionPacketResult {
|
|
204
|
-
packet: OperatingMissionPacket;
|
|
205
|
-
truncation?: OperatingMissionEvidenceTruncation;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Human-readable one-line warning for a surfaced index truncation, suitable for
|
|
209
|
-
* a cycle's evidence-warnings channel.
|
|
210
|
-
*/
|
|
211
|
-
export declare function describeOperatingMissionTruncation(truncation: OperatingMissionEvidenceTruncation): string;
|
|
178
|
+
roots: readonly string[];
|
|
179
|
+
forbiddenPaths?: readonly string[];
|
|
180
|
+
}): Promise<OperatingMandate>;
|
|
212
181
|
/**
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
182
|
+
* FR1/FR2: derive a mandate's declared read roots directly from the project
|
|
183
|
+
* working tree — every top-level directory the agent may traverse — for the
|
|
184
|
+
* inline dispatch path. `.planr/` is ALWAYS declared, whether or not it exists
|
|
185
|
+
* yet and REGARDLESS of git tracking, because the mission tool surface walks the
|
|
186
|
+
* filesystem directly rather than a tracked-file inventory, so a gitignored `.planr/` tree
|
|
187
|
+
* is fully readable (finding 2's tracked-file gap cannot reproduce here).
|
|
188
|
+
* `.git`/`node_modules` are never declared, and every root is filtered to the
|
|
189
|
+
* mandate's schema pattern. Mirrors the native adapter path's derivation so both
|
|
190
|
+
* dispatch paths declare identical boundaries.
|
|
222
191
|
*/
|
|
223
|
-
export declare function
|
|
192
|
+
export declare function deriveOperatingMandateRoots(projectRoot: string): Promise<string[]>;
|
|
224
193
|
export interface AdvisorAdapter {
|
|
225
194
|
id: string;
|
|
226
195
|
mode: 'structured' | 'native-isolated';
|
|
@@ -232,27 +201,22 @@ export interface AdvisorAdapter {
|
|
|
232
201
|
* deterministic. Results are restored to registry order before reduction.
|
|
233
202
|
*/
|
|
234
203
|
parallelDispatch?: boolean;
|
|
204
|
+
/**
|
|
205
|
+
* FR1/FR2: a lens is dispatched with a body-free operating MANDATE (the lens
|
|
206
|
+
* question, declared read boundaries, and the citation requirement) and the
|
|
207
|
+
* cycle's pinned revision — never a curated evidence body. It investigates with
|
|
208
|
+
* the host's own read tools and returns the v1.3 citation-bearing response; the
|
|
209
|
+
* CLI resolves and snapshots every citation fail-closed after it returns.
|
|
210
|
+
*/
|
|
235
211
|
invoke(input: {
|
|
236
212
|
roleId: OperatingRoleId;
|
|
237
213
|
roleBrief: OperatingAdvisorBrief;
|
|
238
|
-
|
|
214
|
+
mandate: OperatingMandate;
|
|
215
|
+
pinnedRevision: string;
|
|
239
216
|
context: AdvisorRoleContext;
|
|
240
217
|
inputDigest: `sha256:${string}`;
|
|
241
|
-
}): Promise<
|
|
218
|
+
}): Promise<MissionAdvisorOutput>;
|
|
242
219
|
}
|
|
243
|
-
export declare function operatingAdvisorMessages(input: {
|
|
244
|
-
roleBrief: OperatingAdvisorBrief;
|
|
245
|
-
evidence: Array<{
|
|
246
|
-
id: string;
|
|
247
|
-
source: string;
|
|
248
|
-
location: string;
|
|
249
|
-
freshness: string;
|
|
250
|
-
claimTypes: string[];
|
|
251
|
-
summary?: string;
|
|
252
|
-
}>;
|
|
253
|
-
context: AdvisorRoleContext;
|
|
254
|
-
inputDigest: `sha256:${string}`;
|
|
255
|
-
}): AIMessage[];
|
|
256
220
|
export interface AdvisorDispatchResult {
|
|
257
221
|
results: OperatingRoleResult[];
|
|
258
222
|
provenance: Array<{
|
|
@@ -261,11 +225,9 @@ export interface AdvisorDispatchResult {
|
|
|
261
225
|
adapterId: string;
|
|
262
226
|
capability: 'analysis-standard' | 'analysis-high';
|
|
263
227
|
dispatch: 'parallel' | 'sequential';
|
|
264
|
-
/**
|
|
265
|
-
dispatchMode: OperatingDispatchMode;
|
|
266
|
-
/** Effective isolation after the FR2/FR4 reconciliation (E-002/E-004). */
|
|
228
|
+
/** Effective isolation classification (FR10): enforced-read-only-bounded or unsupported. */
|
|
267
229
|
isolation: OperatingDispatchIsolation;
|
|
268
|
-
/** Audit note explaining the
|
|
230
|
+
/** Audit note explaining the classification (e.g. why a runtime is unsupported for operate). */
|
|
269
231
|
reconciliation: string;
|
|
270
232
|
}>;
|
|
271
233
|
skipped: Array<{
|
|
@@ -277,66 +239,82 @@ export interface AdvisorDispatchResult {
|
|
|
277
239
|
roleId: OperatingRoleId;
|
|
278
240
|
message: string;
|
|
279
241
|
}>;
|
|
242
|
+
/**
|
|
243
|
+
* Governed gaps opened while resolving the dispatched roles' citations
|
|
244
|
+
* (unresolvable-citation and empty-grounding gaps). The engine records them
|
|
245
|
+
* alongside the cycle's other gaps; empty on a fully-resolved dispatch.
|
|
246
|
+
*/
|
|
247
|
+
gaps: OperatingDataGap[];
|
|
280
248
|
blocked: boolean;
|
|
281
249
|
modelCalls: number;
|
|
282
250
|
}
|
|
283
251
|
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
*
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
*
|
|
295
|
-
*
|
|
296
|
-
* against exactly the same invariants a pack response is — reusing the pipeline's
|
|
297
|
-
* registry-derived brief as the single source of truth.
|
|
252
|
+
* The mandate's response contract is `operating-advisor-response@1.3.0`, whose
|
|
253
|
+
* output facet mirrors the v1.2 brief's contract (allowed proposal types,
|
|
254
|
+
* maxima), so a v1.3 response is validated against exactly the same invariants a
|
|
255
|
+
* pack response is — reusing the pipeline's registry-derived brief as the single
|
|
256
|
+
* source of truth.
|
|
257
|
+
*
|
|
258
|
+
* FR2: when the response's citations resolve to ZERO evidence IDs across every
|
|
259
|
+
* proposal, the role commits `not_evaluated` — a schema-legal `quiet` result
|
|
260
|
+
* (the frozen v1.2 role-result schema admits no `not_evaluated` outcome; the
|
|
261
|
+
* not_evaluated state lives in the governed gap + the integrity surface) — and
|
|
262
|
+
* the governed empty-grounding gap the citation gate opened is returned, with
|
|
263
|
+
* `notEvaluated: true`, rather than a `quiet` that pretends the lens evaluated.
|
|
298
264
|
*/
|
|
299
265
|
export declare function createNativeMissionOperatingRoleResult(input: {
|
|
300
|
-
|
|
266
|
+
mandate: OperatingMandate;
|
|
267
|
+
cycleId: string;
|
|
301
268
|
response: unknown;
|
|
302
269
|
runtime: string;
|
|
303
270
|
/**
|
|
304
|
-
* Injected citation resolver so the
|
|
271
|
+
* Injected citation resolver so the mandate response's citations flow into the
|
|
305
272
|
* engine's already-live `gateRecordedProposalCitations` WITHOUT advisors.ts
|
|
306
273
|
* importing engine.ts (which would create an import cycle). Given the
|
|
307
274
|
* intermediate citation-bearing role result, it returns the gated result
|
|
308
|
-
* (minted `evidenceRefs` merged in, unresolvable-citation proposals dropped)
|
|
309
|
-
*
|
|
275
|
+
* (minted `evidenceRefs` merged in, unresolvable-citation proposals dropped),
|
|
276
|
+
* the opened gaps, and the ids of roles whose citations resolved to zero
|
|
277
|
+
* evidence (recorded not_evaluated).
|
|
310
278
|
*/
|
|
311
279
|
resolveCitations: (roleResults: OperatingRoleResult[]) => Promise<{
|
|
312
280
|
roleResults: OperatingRoleResult[];
|
|
313
281
|
gaps: OperatingDataGap[];
|
|
282
|
+
notEvaluatedRoleIds: string[];
|
|
314
283
|
}>;
|
|
315
284
|
}): Promise<{
|
|
316
285
|
result: OperatingRoleResult;
|
|
317
286
|
gaps: OperatingDataGap[];
|
|
287
|
+
notEvaluated: boolean;
|
|
318
288
|
}>;
|
|
319
289
|
export declare function assertAdvisorIsolation(adapter: AdvisorAdapter): void;
|
|
320
|
-
export declare function createOfflineAdvisorAdapter(fixture?: Partial<Record<OperatingRoleId,
|
|
290
|
+
export declare function createOfflineAdvisorAdapter(fixture?: Partial<Record<OperatingRoleId, MissionAdvisorOutput>>): AdvisorAdapter;
|
|
321
291
|
export declare function createConfiguredStructuredAdapter(projectRoot: string, options?: {
|
|
322
292
|
quiet?: boolean;
|
|
323
293
|
}): Promise<AdvisorAdapter>;
|
|
324
294
|
export declare function dispatchOperatingAdvisors(input: {
|
|
325
295
|
cycleId: string;
|
|
326
|
-
|
|
296
|
+
/** Working tree the mandate's declared read boundaries are derived from. */
|
|
297
|
+
projectRoot: string;
|
|
298
|
+
/** The cycle's frozen control-repository revision; passed to each lens so it cites resolvable content. */
|
|
299
|
+
pinnedRevision: string;
|
|
327
300
|
readiness: OperatingEvidenceReadiness;
|
|
328
301
|
context: AdvisorOperatingContext;
|
|
329
302
|
adapter: AdvisorAdapter;
|
|
330
303
|
depth: 'standard' | 'deep' | 'review-only';
|
|
331
304
|
runtime?: string;
|
|
332
305
|
/**
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
306
|
+
* The engine's fail-closed citation gate, injected so advisors.ts never imports
|
|
307
|
+
* engine.ts (which would create a cycle). Every dispatched role's mandate
|
|
308
|
+
* response flows through it: it resolves each cited locator against the cycle's
|
|
309
|
+
* pinned revision, snapshots the cited bytes, mints the evidenceRefs, drops
|
|
310
|
+
* unresolvable-citation proposals, and records a role that grounds zero evidence
|
|
311
|
+
* as not_evaluated. This is the single, universal FR2 gate on this path.
|
|
338
312
|
*/
|
|
339
|
-
|
|
313
|
+
resolveCitations: (roleResults: OperatingRoleResult[]) => Promise<{
|
|
314
|
+
roleResults: OperatingRoleResult[];
|
|
315
|
+
gaps: OperatingDataGap[];
|
|
316
|
+
notEvaluatedRoleIds: string[];
|
|
317
|
+
}>;
|
|
340
318
|
}): Promise<AdvisorDispatchResult>;
|
|
341
319
|
/**
|
|
342
320
|
* Standard-cycle advisor failures are governed data gaps, not ephemeral
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advisors.d.ts","sourceRoot":"","sources":["../../../src/services/operate/advisors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"advisors.d.ts","sourceRoot":"","sources":["../../../src/services/operate/advisors.ts"],"names":[],"mappings":"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"}
|