instar 1.3.4 → 1.3.6
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/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +18 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/monitoring/FrameworkIssueLedger.d.ts +185 -0
- package/dist/monitoring/FrameworkIssueLedger.d.ts.map +1 -0
- package/dist/monitoring/FrameworkIssueLedger.js +520 -0
- package/dist/monitoring/FrameworkIssueLedger.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +1 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +18 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +13 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +4 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +67 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/scaffold/templates.ts +1 -0
- package/upgrades/1.3.5.md +38 -0
- package/upgrades/1.3.6.md +43 -0
- package/upgrades/side-effects/framework-issue-capture.md +68 -0
- package/upgrades/side-effects/framework-issue-ledger.md +102 -0
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FrameworkIssueLedger — durable record of behavioral issues observed while
|
|
3
|
+
* onboarding an agent framework onto Instar (the Framework-Onboarding Mentor
|
|
4
|
+
* System, docs/specs/FRAMEWORK-ONBOARDING-MENTOR-SPEC.md).
|
|
5
|
+
*
|
|
6
|
+
* Two tables, by design (spec §13):
|
|
7
|
+
* - `framework_issues` — canonical root-cause records (one per distinct problem)
|
|
8
|
+
* - `framework_observations` — per-occurrence evidence (one per time it happened)
|
|
9
|
+
*
|
|
10
|
+
* The split exists because "false merges are worse than false splits" — a
|
|
11
|
+
* single-row model would bury distinct root causes. Recurrence is counted in
|
|
12
|
+
* distinct *episodes* (not raw ticks) via `episode_key`, materialized into
|
|
13
|
+
* `recurrence_count` on the canonical row so the playbook ranking never pays a
|
|
14
|
+
* read-time COUNT (spec §13.4).
|
|
15
|
+
*
|
|
16
|
+
* Signal-only: this ledger never gates a job, blocks a message, or constrains a
|
|
17
|
+
* session. Stage B of the mentor loop writes observations; the read-only HTTP
|
|
18
|
+
* routes (`/framework-issues`, `/framework-issues/playbook`) serve them. All
|
|
19
|
+
* authority to act on an entry rests with the human (spec §6).
|
|
20
|
+
*
|
|
21
|
+
* Security (spec §17): `evidence` is an OPAQUE reference only — never inlined
|
|
22
|
+
* log text or diff hunks — and is secret-scanned at capture. All captured
|
|
23
|
+
* free-text is length-capped + sanitized on write. Every query uses a prepared
|
|
24
|
+
* statement with bound parameters; enum columns are validated against fixed
|
|
25
|
+
* allowlists on write.
|
|
26
|
+
*/
|
|
27
|
+
import Database from 'better-sqlite3';
|
|
28
|
+
import fs from 'node:fs';
|
|
29
|
+
import path from 'node:path';
|
|
30
|
+
import crypto from 'node:crypto';
|
|
31
|
+
import { NativeModuleHealer } from '../memory/NativeModuleHealer.js';
|
|
32
|
+
// ── Enums / allowlists (validated on write — spec §13.8, §17) ───────────────
|
|
33
|
+
export const ISSUE_BUCKETS = [
|
|
34
|
+
'framework-limitation',
|
|
35
|
+
'instar-integration-gap',
|
|
36
|
+
'generic-agent-mistake',
|
|
37
|
+
];
|
|
38
|
+
export const ISSUE_SEVERITIES = ['low', 'medium', 'high'];
|
|
39
|
+
export const ISSUE_STATUSES = ['open', "spec'd", 'fixed', 'wont-fix'];
|
|
40
|
+
export const PLAYBOOK_STATUSES = ['none', 'candidate', 'extracted', 'superseded'];
|
|
41
|
+
/** Buckets that generalize to the next framework feed the playbook (spec §13.4). */
|
|
42
|
+
const GENERALIZABLE_BUCKETS = new Set([
|
|
43
|
+
'framework-limitation',
|
|
44
|
+
'instar-integration-gap',
|
|
45
|
+
]);
|
|
46
|
+
const SEVERITY_WEIGHT = { low: 1, medium: 3, high: 9 };
|
|
47
|
+
// ── Tunables (spec §13.2 retention, §13.4 caps) ─────────────────────────────
|
|
48
|
+
const MAX_FREE_TEXT = 500; // length-cap for title / signature / rationale (§17)
|
|
49
|
+
const MAX_EVIDENCE = 1024; // evidence pointer cap (§13.2 — pointer, not content)
|
|
50
|
+
const RETENTION_KEEP_FIRST = 5; // keep first N observations per issue (§13.2)
|
|
51
|
+
const RETENTION_KEEP_LAST = 20; // + last M
|
|
52
|
+
const PROBABLE_LOOP_PER_HOUR = 12; // obs/hr above which an issue is flagged probable-loop (§13.4)
|
|
53
|
+
const RECENCY_HALF_LIFE_MS = 30 * 24 * 60 * 60 * 1000; // 30d decay on impactScore (§13.4)
|
|
54
|
+
// ── Schema (spec §13.1 / §13.2) ─────────────────────────────────────────────
|
|
55
|
+
const SCHEMA = [
|
|
56
|
+
`CREATE TABLE IF NOT EXISTS framework_issues (
|
|
57
|
+
id TEXT PRIMARY KEY,
|
|
58
|
+
framework TEXT NOT NULL,
|
|
59
|
+
bucket TEXT NOT NULL,
|
|
60
|
+
bucket_primary TEXT,
|
|
61
|
+
title TEXT NOT NULL,
|
|
62
|
+
severity TEXT NOT NULL DEFAULT 'medium',
|
|
63
|
+
status TEXT NOT NULL DEFAULT 'open',
|
|
64
|
+
dedup_key TEXT NOT NULL,
|
|
65
|
+
signature TEXT,
|
|
66
|
+
recurrence_count INTEGER NOT NULL DEFAULT 0,
|
|
67
|
+
first_seen_version TEXT,
|
|
68
|
+
last_seen_version TEXT,
|
|
69
|
+
fixed_in_version TEXT,
|
|
70
|
+
regressed_from_issue_id TEXT,
|
|
71
|
+
playbook_status TEXT NOT NULL DEFAULT 'none',
|
|
72
|
+
wont_fix_reason TEXT,
|
|
73
|
+
related_spec TEXT,
|
|
74
|
+
probable_loop INTEGER NOT NULL DEFAULT 0,
|
|
75
|
+
created_at INTEGER NOT NULL,
|
|
76
|
+
updated_at INTEGER NOT NULL
|
|
77
|
+
)`,
|
|
78
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_fwissues_dedup ON framework_issues(framework, dedup_key)`,
|
|
79
|
+
`CREATE INDEX IF NOT EXISTS idx_fwissues_framework_pb ON framework_issues(framework, playbook_status)`,
|
|
80
|
+
`CREATE INDEX IF NOT EXISTS idx_fwissues_bucket ON framework_issues(bucket)`,
|
|
81
|
+
`CREATE INDEX IF NOT EXISTS idx_fwissues_status ON framework_issues(status)`,
|
|
82
|
+
`CREATE TABLE IF NOT EXISTS framework_observations (
|
|
83
|
+
id TEXT PRIMARY KEY,
|
|
84
|
+
issue_id TEXT NOT NULL,
|
|
85
|
+
framework TEXT NOT NULL,
|
|
86
|
+
evidence TEXT,
|
|
87
|
+
observed_version TEXT,
|
|
88
|
+
observed_at INTEGER NOT NULL,
|
|
89
|
+
tick_id TEXT,
|
|
90
|
+
episode_key TEXT NOT NULL
|
|
91
|
+
)`,
|
|
92
|
+
`CREATE INDEX IF NOT EXISTS idx_fwobs_issue ON framework_observations(issue_id)`,
|
|
93
|
+
`CREATE UNIQUE INDEX IF NOT EXISTS idx_fwobs_episode ON framework_observations(issue_id, episode_key)`,
|
|
94
|
+
`CREATE INDEX IF NOT EXISTS idx_fwobs_observed_at ON framework_observations(observed_at)`,
|
|
95
|
+
// Capture-funnel (spec §5/§18): EVERY Stage-B capture run is logged here —
|
|
96
|
+
// including runs that found nothing — so an inert/broken writer (runs > 0,
|
|
97
|
+
// observations stuck at 0) is distinguishable from "ran, genuinely nothing to
|
|
98
|
+
// report." The North Star anti-pattern guard: a silent no-op writer cannot
|
|
99
|
+
// masquerade as a healthy quiet one.
|
|
100
|
+
`CREATE TABLE IF NOT EXISTS framework_capture_runs (
|
|
101
|
+
id TEXT PRIMARY KEY,
|
|
102
|
+
framework TEXT NOT NULL,
|
|
103
|
+
tick_id TEXT,
|
|
104
|
+
findings_count INTEGER NOT NULL DEFAULT 0,
|
|
105
|
+
observations_written INTEGER NOT NULL DEFAULT 0,
|
|
106
|
+
ran_at INTEGER NOT NULL
|
|
107
|
+
)`,
|
|
108
|
+
`CREATE INDEX IF NOT EXISTS idx_fwruns_framework ON framework_capture_runs(framework)`,
|
|
109
|
+
`CREATE INDEX IF NOT EXISTS idx_fwruns_ran_at ON framework_capture_runs(ran_at)`,
|
|
110
|
+
];
|
|
111
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
112
|
+
/**
|
|
113
|
+
* Reject anything that looks like an inlined secret/log-body rather than an
|
|
114
|
+
* opaque pointer (spec §17). Returns a sanitized, length-capped string. We do
|
|
115
|
+
* NOT silently store a suspected secret — we redact it and tag the evidence so
|
|
116
|
+
* the capture is visibly degraded rather than leaking.
|
|
117
|
+
*/
|
|
118
|
+
const SECRET_PATTERNS = [
|
|
119
|
+
/\b(sk|pk|rk)-[A-Za-z0-9]{16,}\b/, // api-key-shaped
|
|
120
|
+
/\bBearer\s+[A-Za-z0-9._-]{12,}\b/i,
|
|
121
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/, // slack
|
|
122
|
+
/\bgh[pousr]_[A-Za-z0-9]{20,}\b/, // github
|
|
123
|
+
/-----BEGIN [A-Z ]*PRIVATE KEY-----/,
|
|
124
|
+
/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/, // jwt
|
|
125
|
+
];
|
|
126
|
+
export function scanForSecret(s) {
|
|
127
|
+
return SECRET_PATTERNS.some((re) => re.test(s));
|
|
128
|
+
}
|
|
129
|
+
function sanitizeFreeText(s, cap) {
|
|
130
|
+
if (!s)
|
|
131
|
+
return '';
|
|
132
|
+
// Strip control chars; collapse whitespace; cap length.
|
|
133
|
+
// eslint-disable-next-line no-control-regex
|
|
134
|
+
const cleaned = s.replace(/[\x00-\x1f\x7f]/g, " ").replace(/\s+/g, " ").trim();
|
|
135
|
+
return cleaned.length > cap ? cleaned.slice(0, cap) : cleaned;
|
|
136
|
+
}
|
|
137
|
+
function sanitizeEvidence(s) {
|
|
138
|
+
if (!s)
|
|
139
|
+
return null;
|
|
140
|
+
const capped = sanitizeFreeText(s, MAX_EVIDENCE);
|
|
141
|
+
if (scanForSecret(capped)) {
|
|
142
|
+
// Redact the body; keep a marker so the capture is visibly degraded (§17).
|
|
143
|
+
return '[redacted: evidence matched a secret pattern — store an opaque reference, not log content]';
|
|
144
|
+
}
|
|
145
|
+
return capped;
|
|
146
|
+
}
|
|
147
|
+
function assertEnum(value, allowed, field) {
|
|
148
|
+
if (!allowed.includes(value)) {
|
|
149
|
+
throw new Error(`FrameworkIssueLedger: invalid ${field} '${value}' (allowed: ${allowed.join(', ')})`);
|
|
150
|
+
}
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
// ── Ledger ──────────────────────────────────────────────────────────────────
|
|
154
|
+
export class FrameworkIssueLedger {
|
|
155
|
+
db;
|
|
156
|
+
now;
|
|
157
|
+
constructor(opts) {
|
|
158
|
+
this.now = opts.now ?? (() => Date.now());
|
|
159
|
+
if (opts.dbPath !== ':memory:') {
|
|
160
|
+
fs.mkdirSync(path.dirname(opts.dbPath), { recursive: true });
|
|
161
|
+
}
|
|
162
|
+
this.db = NativeModuleHealer.openWithHealSync('FrameworkIssueLedger', () => new Database(opts.dbPath));
|
|
163
|
+
this.db.pragma('journal_mode = WAL');
|
|
164
|
+
this.db.pragma('synchronous = NORMAL');
|
|
165
|
+
this.db.pragma('busy_timeout = 5000');
|
|
166
|
+
for (const ddl of SCHEMA)
|
|
167
|
+
this.db.exec(ddl);
|
|
168
|
+
}
|
|
169
|
+
/** Stable list of frameworks the ledger has seen — for the route allowlist (spec §5/§17). */
|
|
170
|
+
knownFrameworks() {
|
|
171
|
+
const rows = this.db
|
|
172
|
+
.prepare(`SELECT DISTINCT framework FROM framework_issues ORDER BY framework`)
|
|
173
|
+
.all();
|
|
174
|
+
return rows.map((r) => r.framework);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Record one Stage-B observation. Finds-or-creates the canonical issue via
|
|
178
|
+
* (framework, dedupKey); collapses the observation into a distinct episode via
|
|
179
|
+
* episodeKey; increments the materialized recurrence_count only on a new
|
|
180
|
+
* episode (spec §13.4). All writes run in a single transaction (CAS-safe: the
|
|
181
|
+
* UNIQUE(issue_id, episode_key) index is the concurrency guard — a racing
|
|
182
|
+
* duplicate episode insert fails and is counted as already-recorded).
|
|
183
|
+
*/
|
|
184
|
+
recordObservation(input) {
|
|
185
|
+
const framework = sanitizeFreeText(input.framework, 120);
|
|
186
|
+
if (!framework)
|
|
187
|
+
throw new Error('FrameworkIssueLedger: framework is required');
|
|
188
|
+
const bucket = assertEnum(input.bucket, ISSUE_BUCKETS, 'bucket');
|
|
189
|
+
const severity = assertEnum(input.severity ?? 'medium', ISSUE_SEVERITIES, 'severity');
|
|
190
|
+
const dedupKey = sanitizeFreeText(input.dedupKey, 200);
|
|
191
|
+
if (!dedupKey)
|
|
192
|
+
throw new Error('FrameworkIssueLedger: dedupKey is required');
|
|
193
|
+
const title = sanitizeFreeText(input.title, MAX_FREE_TEXT) || '(untitled)';
|
|
194
|
+
const signature = input.signature ? sanitizeFreeText(input.signature, MAX_FREE_TEXT) : null;
|
|
195
|
+
const evidence = sanitizeEvidence(input.evidence);
|
|
196
|
+
const observedVersion = input.observedVersion ? sanitizeFreeText(input.observedVersion, 60) : null;
|
|
197
|
+
const tickId = input.tickId ? sanitizeFreeText(input.tickId, 120) : null;
|
|
198
|
+
const episodeKey = sanitizeFreeText(input.episodeKey ?? observedVersion ?? 'default', 200);
|
|
199
|
+
const bucketPrimary = input.bucketPrimary
|
|
200
|
+
? assertEnum(input.bucketPrimary, ISSUE_BUCKETS, 'bucketPrimary')
|
|
201
|
+
: null;
|
|
202
|
+
const relatedSpec = input.relatedSpec ? sanitizeFreeText(input.relatedSpec, 200) : null;
|
|
203
|
+
const ts = this.now();
|
|
204
|
+
const txn = this.db.transaction(() => {
|
|
205
|
+
// Find-or-create canonical issue.
|
|
206
|
+
let issue = this.db
|
|
207
|
+
.prepare(`SELECT * FROM framework_issues WHERE framework = ? AND dedup_key = ?`)
|
|
208
|
+
.get(framework, dedupKey);
|
|
209
|
+
let created = false;
|
|
210
|
+
let issueId;
|
|
211
|
+
if (!issue) {
|
|
212
|
+
issueId = crypto.randomUUID();
|
|
213
|
+
this.db
|
|
214
|
+
.prepare(`INSERT INTO framework_issues
|
|
215
|
+
(id, framework, bucket, bucket_primary, title, severity, status, dedup_key,
|
|
216
|
+
signature, recurrence_count, first_seen_version, last_seen_version,
|
|
217
|
+
playbook_status, probable_loop, created_at, updated_at)
|
|
218
|
+
VALUES (@id, @framework, @bucket, @bucketPrimary, @title, @severity, 'open', @dedupKey,
|
|
219
|
+
@signature, 0, @observedVersion, @observedVersion, 'none', 0, @ts, @ts)`)
|
|
220
|
+
.run({ id: issueId, framework, bucket, bucketPrimary, title, severity, dedupKey, signature, observedVersion, ts });
|
|
221
|
+
created = true;
|
|
222
|
+
issue = { id: issueId };
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
issueId = issue.id;
|
|
226
|
+
// Refresh last-seen + (non-destructively) escalate severity if higher.
|
|
227
|
+
this.db
|
|
228
|
+
.prepare(`UPDATE framework_issues
|
|
229
|
+
SET last_seen_version = COALESCE(@observedVersion, last_seen_version),
|
|
230
|
+
severity = CASE WHEN @newWeight > @oldWeight THEN @severity ELSE severity END,
|
|
231
|
+
updated_at = @ts
|
|
232
|
+
WHERE id = @id`)
|
|
233
|
+
.run({
|
|
234
|
+
id: issueId,
|
|
235
|
+
observedVersion,
|
|
236
|
+
severity,
|
|
237
|
+
newWeight: SEVERITY_WEIGHT[severity],
|
|
238
|
+
oldWeight: SEVERITY_WEIGHT[issue.severity ?? 'medium'],
|
|
239
|
+
ts,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
// Insert the observation as a distinct episode. UNIQUE(issue_id, episode_key)
|
|
243
|
+
// collapses repeats within a fix-window to one episode (spec §13.4).
|
|
244
|
+
let episodeRecorded = false;
|
|
245
|
+
const obsId = crypto.randomUUID();
|
|
246
|
+
const insert = this.db
|
|
247
|
+
.prepare(`INSERT OR IGNORE INTO framework_observations
|
|
248
|
+
(id, issue_id, framework, evidence, observed_version, observed_at, tick_id, episode_key)
|
|
249
|
+
VALUES (@obsId, @issueId, @framework, @evidence, @observedVersion, @ts, @tickId, @episodeKey)`)
|
|
250
|
+
.run({ obsId, issueId, framework, evidence, observedVersion, ts, tickId, episodeKey });
|
|
251
|
+
episodeRecorded = insert.changes > 0;
|
|
252
|
+
if (episodeRecorded) {
|
|
253
|
+
this.db
|
|
254
|
+
.prepare(`UPDATE framework_issues SET recurrence_count = recurrence_count + 1, updated_at = ? WHERE id = ?`)
|
|
255
|
+
.run(ts, issueId);
|
|
256
|
+
}
|
|
257
|
+
// Apply retention: keep first N + last M observations for this issue (§13.2).
|
|
258
|
+
this.pruneObservations(issueId);
|
|
259
|
+
// Probable-loop flag: too many observations in the trailing hour (§13.4).
|
|
260
|
+
const recentCount = this.db
|
|
261
|
+
.prepare(`SELECT COUNT(*) AS c FROM framework_observations WHERE issue_id = ? AND observed_at >= ?`)
|
|
262
|
+
.get(issueId, ts - 60 * 60 * 1000);
|
|
263
|
+
const probableLoop = recentCount.c >= PROBABLE_LOOP_PER_HOUR;
|
|
264
|
+
this.db
|
|
265
|
+
.prepare(`UPDATE framework_issues SET probable_loop = ? WHERE id = ?`)
|
|
266
|
+
.run(probableLoop ? 1 : 0, issueId);
|
|
267
|
+
const after = this.db
|
|
268
|
+
.prepare(`SELECT recurrence_count FROM framework_issues WHERE id = ?`)
|
|
269
|
+
.get(issueId);
|
|
270
|
+
return { issueId, created, episodeRecorded, recurrenceCount: after.recurrence_count, probableLoop };
|
|
271
|
+
});
|
|
272
|
+
return txn();
|
|
273
|
+
}
|
|
274
|
+
/** Retention pruning — keep first N + last M observations per issue (spec §13.2). */
|
|
275
|
+
pruneObservations(issueId) {
|
|
276
|
+
const total = this.db
|
|
277
|
+
.prepare(`SELECT COUNT(*) AS c FROM framework_observations WHERE issue_id = ?`)
|
|
278
|
+
.get(issueId);
|
|
279
|
+
if (total.c <= RETENTION_KEEP_FIRST + RETENTION_KEEP_LAST)
|
|
280
|
+
return;
|
|
281
|
+
// Delete the middle band: everything not in the first-N or last-M by observed_at.
|
|
282
|
+
this.db
|
|
283
|
+
.prepare(`DELETE FROM framework_observations
|
|
284
|
+
WHERE issue_id = @issueId
|
|
285
|
+
AND id NOT IN (
|
|
286
|
+
SELECT id FROM framework_observations WHERE issue_id = @issueId ORDER BY observed_at ASC LIMIT @first
|
|
287
|
+
)
|
|
288
|
+
AND id NOT IN (
|
|
289
|
+
SELECT id FROM framework_observations WHERE issue_id = @issueId ORDER BY observed_at DESC LIMIT @last
|
|
290
|
+
)`)
|
|
291
|
+
.run({ issueId, first: RETENTION_KEEP_FIRST, last: RETENTION_KEEP_LAST });
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Single-writer CAS mutate of an issue's mutable fields (status, bucket,
|
|
295
|
+
* playbookStatus, regression link, etc.). Follows CommitmentTracker's
|
|
296
|
+
* read-modify-write-with-version-check pattern; enum fields are validated.
|
|
297
|
+
* `wont-fix` requires a reason (spec §13.7).
|
|
298
|
+
*/
|
|
299
|
+
updateIssue(issueId, patch) {
|
|
300
|
+
const txn = this.db.transaction(() => {
|
|
301
|
+
const cur = this.db.prepare(`SELECT * FROM framework_issues WHERE id = ?`).get(issueId);
|
|
302
|
+
if (!cur)
|
|
303
|
+
return null;
|
|
304
|
+
const status = patch.status ? assertEnum(patch.status, ISSUE_STATUSES, 'status') : cur.status;
|
|
305
|
+
const bucket = patch.bucket ? assertEnum(patch.bucket, ISSUE_BUCKETS, 'bucket') : cur.bucket;
|
|
306
|
+
const playbookStatus = patch.playbookStatus
|
|
307
|
+
? assertEnum(patch.playbookStatus, PLAYBOOK_STATUSES, 'playbookStatus')
|
|
308
|
+
: cur.playbook_status;
|
|
309
|
+
const bucketPrimary = patch.bucketPrimary !== undefined
|
|
310
|
+
? patch.bucketPrimary
|
|
311
|
+
? assertEnum(patch.bucketPrimary, ISSUE_BUCKETS, 'bucketPrimary')
|
|
312
|
+
: null
|
|
313
|
+
: cur.bucket_primary;
|
|
314
|
+
const wontFixReason = patch.wontFixReason !== undefined ? sanitizeFreeText(patch.wontFixReason ?? '', MAX_FREE_TEXT) || null : cur.wont_fix_reason;
|
|
315
|
+
if (status === 'wont-fix' && !wontFixReason) {
|
|
316
|
+
throw new Error('FrameworkIssueLedger: wont-fix requires a wontFixReason (spec §13.7)');
|
|
317
|
+
}
|
|
318
|
+
this.db
|
|
319
|
+
.prepare(`UPDATE framework_issues SET
|
|
320
|
+
status = @status, bucket = @bucket, bucket_primary = @bucketPrimary,
|
|
321
|
+
playbook_status = @playbookStatus,
|
|
322
|
+
fixed_in_version = @fixedInVersion, regressed_from_issue_id = @regressedFromIssueId,
|
|
323
|
+
wont_fix_reason = @wontFixReason, related_spec = @relatedSpec, updated_at = @ts
|
|
324
|
+
WHERE id = @id`)
|
|
325
|
+
.run({
|
|
326
|
+
id: issueId,
|
|
327
|
+
status,
|
|
328
|
+
bucket,
|
|
329
|
+
bucketPrimary,
|
|
330
|
+
playbookStatus,
|
|
331
|
+
fixedInVersion: patch.fixedInVersion !== undefined ? patch.fixedInVersion : cur.fixed_in_version,
|
|
332
|
+
regressedFromIssueId: patch.regressedFromIssueId !== undefined
|
|
333
|
+
? patch.regressedFromIssueId
|
|
334
|
+
: cur.regressed_from_issue_id,
|
|
335
|
+
wontFixReason,
|
|
336
|
+
relatedSpec: patch.relatedSpec !== undefined ? patch.relatedSpec : cur.related_spec,
|
|
337
|
+
ts: this.now(),
|
|
338
|
+
});
|
|
339
|
+
return this.getIssue(issueId);
|
|
340
|
+
});
|
|
341
|
+
return txn();
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Suggest a regression link: a new issue whose signature/dedupKey matches a
|
|
345
|
+
* previously-`fixed` issue is a candidate regression (spec §13.5). Returns the
|
|
346
|
+
* matching fixed issues (does NOT auto-link — review decides).
|
|
347
|
+
*/
|
|
348
|
+
suggestRegressions(input) {
|
|
349
|
+
const rows = this.db
|
|
350
|
+
.prepare(`SELECT * FROM framework_issues
|
|
351
|
+
WHERE framework = ? AND status = 'fixed'
|
|
352
|
+
AND (dedup_key = ? OR (signature IS NOT NULL AND signature = ?))`)
|
|
353
|
+
.all(input.framework, input.dedupKey, input.signature ?? '__none__');
|
|
354
|
+
return rows.map((r) => this.rowToIssue(r));
|
|
355
|
+
}
|
|
356
|
+
getIssue(id) {
|
|
357
|
+
const r = this.db.prepare(`SELECT * FROM framework_issues WHERE id = ?`).get(id);
|
|
358
|
+
return r ? this.rowToIssue(r) : null;
|
|
359
|
+
}
|
|
360
|
+
listIssues(q = {}) {
|
|
361
|
+
const clauses = [];
|
|
362
|
+
const params = {};
|
|
363
|
+
if (q.framework) {
|
|
364
|
+
clauses.push(`framework = @framework`);
|
|
365
|
+
params.framework = q.framework;
|
|
366
|
+
}
|
|
367
|
+
if (q.bucket) {
|
|
368
|
+
clauses.push(`bucket = @bucket`);
|
|
369
|
+
params.bucket = assertEnum(q.bucket, ISSUE_BUCKETS, 'bucket');
|
|
370
|
+
}
|
|
371
|
+
if (q.status) {
|
|
372
|
+
clauses.push(`status = @status`);
|
|
373
|
+
params.status = assertEnum(q.status, ISSUE_STATUSES, 'status');
|
|
374
|
+
}
|
|
375
|
+
const where = clauses.length ? `WHERE ${clauses.join(' AND ')}` : '';
|
|
376
|
+
const limit = clampLimit(q.limit);
|
|
377
|
+
const rows = this.db
|
|
378
|
+
.prepare(`SELECT * FROM framework_issues ${where} ORDER BY updated_at DESC LIMIT @limit`)
|
|
379
|
+
.all({ ...params, limit });
|
|
380
|
+
return rows.map((r) => this.rowToIssue(r));
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* The onboarding playbook for `targetFramework`: generalizable lessons from
|
|
384
|
+
* PRIOR (other) frameworks, ranked by impactScore (spec §13.6). The playbook
|
|
385
|
+
* for X is sourced from frameworks != X — never X's own issues.
|
|
386
|
+
*/
|
|
387
|
+
playbook(q) {
|
|
388
|
+
const limit = clampLimit(q.limit);
|
|
389
|
+
const rows = this.db
|
|
390
|
+
.prepare(`SELECT * FROM framework_issues
|
|
391
|
+
WHERE framework != @targetFramework
|
|
392
|
+
AND bucket IN ('framework-limitation', 'instar-integration-gap')
|
|
393
|
+
AND playbook_status IN ('candidate', 'extracted')`)
|
|
394
|
+
.all({ targetFramework: q.targetFramework });
|
|
395
|
+
return rows
|
|
396
|
+
.map((r) => this.rowToIssue(r))
|
|
397
|
+
.sort((a, b) => b.impactScore - a.impactScore)
|
|
398
|
+
.slice(0, limit);
|
|
399
|
+
}
|
|
400
|
+
observationCount(issueId) {
|
|
401
|
+
const r = this.db
|
|
402
|
+
.prepare(`SELECT COUNT(*) AS c FROM framework_observations WHERE issue_id = ?`)
|
|
403
|
+
.get(issueId);
|
|
404
|
+
return r.c;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Stage-B auto-capture (spec §5, §19.2). The single atomic entry point the
|
|
408
|
+
* mentor tick calls after forensics: it writes every finding to the ledger
|
|
409
|
+
* (no "remember to log" — zero-manual-capture) and ALWAYS logs the run to the
|
|
410
|
+
* capture-funnel, even when `findings` is empty. That funnel row is what makes
|
|
411
|
+
* an inert/broken writer visible: a run that produced zero observations is
|
|
412
|
+
* recorded as a run, so "ran, found nothing" is distinguishable from "never
|
|
413
|
+
* ran." Regression candidates are surfaced for review, never auto-linked
|
|
414
|
+
* (spec §13.5 — promotion is not the writer's call).
|
|
415
|
+
*/
|
|
416
|
+
captureRun(input) {
|
|
417
|
+
const framework = sanitizeFreeText(input.framework, 120);
|
|
418
|
+
if (!framework)
|
|
419
|
+
throw new Error('FrameworkIssueLedger: captureRun requires a framework');
|
|
420
|
+
const tickId = input.tickId ? sanitizeFreeText(input.tickId, 120) : null;
|
|
421
|
+
const findings = input.findings ?? [];
|
|
422
|
+
let observationsWritten = 0;
|
|
423
|
+
let newIssues = 0;
|
|
424
|
+
const regressionCandidates = [];
|
|
425
|
+
// Each recordObservation is its own transaction (better-sqlite3 has no
|
|
426
|
+
// nested transactions); the funnel row is written last with the real count.
|
|
427
|
+
for (const finding of findings) {
|
|
428
|
+
const res = this.recordObservation({ ...finding, framework, tickId: tickId ?? undefined });
|
|
429
|
+
if (res.episodeRecorded)
|
|
430
|
+
observationsWritten++;
|
|
431
|
+
if (res.created) {
|
|
432
|
+
newIssues++;
|
|
433
|
+
// A brand-new issue that matches a previously-fixed one is a candidate
|
|
434
|
+
// regression — surface it (review decides), never silently auto-link.
|
|
435
|
+
const candidates = this.suggestRegressions({
|
|
436
|
+
framework,
|
|
437
|
+
dedupKey: finding.dedupKey,
|
|
438
|
+
signature: finding.signature ?? null,
|
|
439
|
+
}).filter((c) => c.id !== res.issueId);
|
|
440
|
+
for (const c of candidates) {
|
|
441
|
+
regressionCandidates.push({ findingDedupKey: finding.dedupKey, candidateIssueId: c.id });
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
const runId = crypto.randomUUID();
|
|
446
|
+
this.db
|
|
447
|
+
.prepare(`INSERT INTO framework_capture_runs (id, framework, tick_id, findings_count, observations_written, ran_at)
|
|
448
|
+
VALUES (?, ?, ?, ?, ?, ?)`)
|
|
449
|
+
.run(runId, framework, tickId, findings.length, observationsWritten, this.now());
|
|
450
|
+
return { runId, framework, findingsCount: findings.length, observationsWritten, newIssues, regressionCandidates };
|
|
451
|
+
}
|
|
452
|
+
/** Capture-funnel observability (spec §5/§18). Surfaces ticks→observations so
|
|
453
|
+
* a writer that runs but never writes is visible. */
|
|
454
|
+
captureStats() {
|
|
455
|
+
const totals = this.db
|
|
456
|
+
.prepare(`SELECT COUNT(*) AS runs, COALESCE(SUM(observations_written), 0) AS obs, MAX(ran_at) AS last
|
|
457
|
+
FROM framework_capture_runs`)
|
|
458
|
+
.get();
|
|
459
|
+
const byFw = this.db
|
|
460
|
+
.prepare(`SELECT framework, COUNT(*) AS runs, COALESCE(SUM(observations_written), 0) AS obs, MAX(ran_at) AS last
|
|
461
|
+
FROM framework_capture_runs GROUP BY framework ORDER BY last DESC`)
|
|
462
|
+
.all();
|
|
463
|
+
return {
|
|
464
|
+
totalRuns: totals.runs,
|
|
465
|
+
totalObservationsWritten: totals.obs,
|
|
466
|
+
lastRanAt: totals.last ?? null,
|
|
467
|
+
byFramework: byFw.map((r) => ({ framework: r.framework, runs: r.runs, observations: r.obs, lastRanAt: r.last })),
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
rowToIssue(r) {
|
|
471
|
+
const bucket = r.bucket;
|
|
472
|
+
const severity = r.severity ?? 'medium';
|
|
473
|
+
const recurrenceCount = r.recurrence_count ?? 0;
|
|
474
|
+
const updatedAt = r.updated_at ?? 0;
|
|
475
|
+
// Recency decay (spec §13.4): a long-stale issue doesn't permanently dominate.
|
|
476
|
+
const ageMs = Math.max(0, this.now() - updatedAt);
|
|
477
|
+
const decay = Math.pow(0.5, ageMs / RECENCY_HALF_LIFE_MS);
|
|
478
|
+
const impactScore = SEVERITY_WEIGHT[severity] * recurrenceCount * decay;
|
|
479
|
+
return {
|
|
480
|
+
id: r.id,
|
|
481
|
+
framework: r.framework,
|
|
482
|
+
bucket,
|
|
483
|
+
bucketPrimary: r.bucket_primary ?? null,
|
|
484
|
+
title: r.title,
|
|
485
|
+
severity,
|
|
486
|
+
status: r.status,
|
|
487
|
+
dedupKey: r.dedup_key,
|
|
488
|
+
signature: r.signature ?? null,
|
|
489
|
+
recurrenceCount,
|
|
490
|
+
firstSeenVersion: r.first_seen_version ?? null,
|
|
491
|
+
lastSeenVersion: r.last_seen_version ?? null,
|
|
492
|
+
fixedInVersion: r.fixed_in_version ?? null,
|
|
493
|
+
regressedFromIssueId: r.regressed_from_issue_id ?? null,
|
|
494
|
+
playbookStatus: r.playbook_status,
|
|
495
|
+
wontFixReason: r.wont_fix_reason ?? null,
|
|
496
|
+
relatedSpec: r.related_spec ?? null,
|
|
497
|
+
probableLoop: !!r.probable_loop,
|
|
498
|
+
createdAt: r.created_at ?? 0,
|
|
499
|
+
updatedAt,
|
|
500
|
+
generalizable: GENERALIZABLE_BUCKETS.has(bucket),
|
|
501
|
+
impactScore: Math.round(impactScore * 1000) / 1000,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
close() {
|
|
505
|
+
try {
|
|
506
|
+
this.db.close();
|
|
507
|
+
}
|
|
508
|
+
catch {
|
|
509
|
+
/* ignore */
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
/** Clamp a list limit to 1..500 (spec §5/§17). */
|
|
514
|
+
export function clampLimit(raw) {
|
|
515
|
+
const n = typeof raw === 'number' ? raw : typeof raw === 'string' ? parseInt(raw, 10) : NaN;
|
|
516
|
+
if (!Number.isFinite(n))
|
|
517
|
+
return 100;
|
|
518
|
+
return Math.max(1, Math.min(500, Math.floor(n)));
|
|
519
|
+
}
|
|
520
|
+
//# sourceMappingURL=FrameworkIssueLedger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameworkIssueLedger.js","sourceRoot":"","sources":["../../src/monitoring/FrameworkIssueLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,+EAA+E;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;CACf,CAAC;AAGX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGnE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAG/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAG3F,oFAAoF;AACpF,MAAM,qBAAqB,GAA6B,IAAI,GAAG,CAAc;IAC3E,sBAAsB;IACtB,wBAAwB;CACzB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAkC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAEtF,+EAA+E;AAE/E,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,qDAAqD;AAChF,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,sDAAsD;AACjF,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,8CAA8C;AAC9E,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,WAAW;AAC3C,MAAM,sBAAsB,GAAG,EAAE,CAAC,CAAC,+DAA+D;AAClG,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,mCAAmC;AAE1F,+EAA+E;AAE/E,MAAM,MAAM,GAAG;IACb;;;;;;;;;;;;;;;;;;;;;KAqBG;IACH,gGAAgG;IAChG,sGAAsG;IACtG,4EAA4E;IAC5E,4EAA4E;IAC5E;;;;;;;;;KASG;IACH,gFAAgF;IAChF,sGAAsG;IACtG,yFAAyF;IACzF,2EAA2E;IAC3E,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,qCAAqC;IACrC;;;;;;;KAOG;IACH,sFAAsF;IACtF,gFAAgF;CACjF,CAAC;AA8GF,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,eAAe,GAAa;IAChC,iCAAiC,EAAE,iBAAiB;IACpD,mCAAmC;IACnC,kCAAkC,EAAE,QAAQ;IAC5C,gCAAgC,EAAE,SAAS;IAC3C,oCAAoC;IACpC,mEAAmE,EAAE,MAAM;CAC5E,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAqB,EAAE,GAAW;IAC1D,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,wDAAwD;IACxD,4CAA4C;IAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAqB;IAC7C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,2EAA2E;QAC3E,OAAO,4FAA4F,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAmB,KAAQ,EAAE,OAAqB,EAAE,KAAa;IAClF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,KAAK,KAAK,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAE/E,MAAM,OAAO,oBAAoB;IACvB,EAAE,CAAuB;IACzB,GAAG,CAAe;IAE1B,YAAY,IAAiC;QAC3C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,kBAAkB,CAAC,gBAAgB,CAC3C,sBAAsB,EACtB,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAChC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,MAAM;YAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,6FAA6F;IAC7F,eAAe;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,oEAAoE,CAAC;aAC7E,GAAG,EAAkC,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,KAA6B;QAC7C,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,YAAY,CAAC;QAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5F,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,IAAI,eAAe,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3F,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa;YACvC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAA4B,EAAE;YAC5D,kCAAkC;YAClC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;iBAChB,OAAO,CAAC,sEAAsE,CAAC;iBAC/E,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAwC,CAAC;YAEnE,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,EAAE;qBACJ,OAAO,CACN;;;;;wFAK4E,CAC7E;qBACA,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrH,OAAO,GAAG,IAAI,CAAC;gBACf,KAAK,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,KAAK,CAAC,EAAY,CAAC;gBAC7B,uEAAuE;gBACvE,IAAI,CAAC,EAAE;qBACJ,OAAO,CACN;;;;4BAIgB,CACjB;qBACA,GAAG,CAAC;oBACH,EAAE,EAAE,OAAO;oBACX,eAAe;oBACf,QAAQ;oBACR,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC;oBACpC,SAAS,EAAE,eAAe,CAAE,KAAK,CAAC,QAA0B,IAAI,QAAQ,CAAC;oBACzE,EAAE;iBACH,CAAC,CAAC;YACP,CAAC;YAED,8EAA8E;YAC9E,qEAAqE;YACrE,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;iBACnB,OAAO,CACN;;yGAE+F,CAChG;iBACA,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YACzF,eAAe,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;YAErC,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,EAAE;qBACJ,OAAO,CAAC,kGAAkG,CAAC;qBAC3G,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACtB,CAAC;YAED,8EAA8E;YAC9E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEhC,0EAA0E;YAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE;iBACxB,OAAO,CAAC,0FAA0F,CAAC;iBACnG,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAkB,CAAC;YACtD,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,IAAI,sBAAsB,CAAC;YAC7D,IAAI,CAAC,EAAE;iBACJ,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;iBAClB,OAAO,CAAC,4DAA4D,CAAC;iBACrE,GAAG,CAAC,OAAO,CAAiC,CAAC;YAEhD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC,gBAAgB,EAAE,YAAY,EAAE,CAAC;QACtG,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED,qFAAqF;IAC7E,iBAAiB,CAAC,OAAe;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;aAClB,OAAO,CAAC,qEAAqE,CAAC;aAC9E,GAAG,CAAC,OAAO,CAAkB,CAAC;QACjC,IAAI,KAAK,CAAC,CAAC,IAAI,oBAAoB,GAAG,mBAAmB;YAAE,OAAO;QAClE,kFAAkF;QAClF,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;eAOO,CACR;aACA,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACT,OAAe,EACf,KASE;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAoB,EAAE;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,OAAO,CAEzE,CAAC;YACd,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAEtB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,MAAsB,CAAC;YAC/G,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,MAAsB,CAAC;YAC9G,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc;gBACzC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;gBACvE,CAAC,CAAE,GAAG,CAAC,eAAkC,CAAC;YAC5C,MAAM,aAAa,GACjB,KAAK,CAAC,aAAa,KAAK,SAAS;gBAC/B,CAAC,CAAC,KAAK,CAAC,aAAa;oBACnB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,CAAC;oBACjE,CAAC,CAAC,IAAI;gBACR,CAAC,CAAE,GAAG,CAAC,cAAqC,CAAC;YACjD,MAAM,aAAa,GACjB,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAE,GAAG,CAAC,eAAiC,CAAC;YAElJ,IAAI,MAAM,KAAK,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,CAAC,EAAE;iBACJ,OAAO,CACN;;;;;0BAKgB,CACjB;iBACA,GAAG,CAAC;gBACH,EAAE,EAAE,OAAO;gBACX,MAAM;gBACN,MAAM;gBACN,aAAa;gBACb,cAAc;gBACd,cAAc,EACZ,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAE,GAAG,CAAC,gBAAkC;gBACrG,oBAAoB,EAClB,KAAK,CAAC,oBAAoB,KAAK,SAAS;oBACtC,CAAC,CAAC,KAAK,CAAC,oBAAoB;oBAC5B,CAAC,CAAE,GAAG,CAAC,uBAAyC;gBACpD,aAAa;gBACb,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,GAAG,CAAC,YAA8B;gBACtG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;aACf,CAAC,CAAC;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAyE;QAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;8EAEsE,CACvE;aACA,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,UAAU,CAAmC,CAAC;QACzG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,EAAE,CAElE,CAAC;QACd,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,IAAqB,EAAE;QAChC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACvC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CAAC,kCAAkC,KAAK,wCAAwC,CAAC;aACxF,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAmC,CAAC;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,CAAgB;QACvB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;;;+DAGuD,CACxD;aACA,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAmC,CAAC;QACjF,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;aAC7C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE;aACd,OAAO,CAAC,qEAAqE,CAAC;aAC9E,GAAG,CAAC,OAAO,CAAkB,CAAC;QACjC,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IAED;;;;;;;;;OASG;IACH,UAAU,CAAC,KAAsB;QAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEtC,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,oBAAoB,GAAiE,EAAE,CAAC;QAE9F,uEAAuE;QACvE,4EAA4E;QAC5E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YAC3F,IAAI,GAAG,CAAC,eAAe;gBAAE,mBAAmB,EAAE,CAAC;YAC/C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,SAAS,EAAE,CAAC;gBACZ,uEAAuE;gBACvE,sEAAsE;gBACtE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;oBACzC,SAAS;oBACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;iBACrC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;gBACvC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC3B,oBAAoB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;mCAC2B,CAC5B;aACA,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;IACpH,CAAC;IAED;0DACsD;IACtD,YAAY;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;uCAC+B,CAChC;aACA,GAAG,EAAwD,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;6EACqE,CACtE;aACA,GAAG,EAA2E,CAAC;QAClF,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,IAAI;YACtB,wBAAwB,EAAE,MAAM,CAAC,GAAG;YACpC,SAAS,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YAC9B,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACjH,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,CAA0B;QAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB,CAAC;QACvC,MAAM,QAAQ,GAAI,CAAC,CAAC,QAA0B,IAAI,QAAQ,CAAC;QAC3D,MAAM,eAAe,GAAI,CAAC,CAAC,gBAA2B,IAAI,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAI,CAAC,CAAC,UAAqB,IAAI,CAAC,CAAC;QAChD,+EAA+E;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,oBAAoB,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,eAAe,GAAG,KAAK,CAAC;QACxE,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAY;YAClB,SAAS,EAAE,CAAC,CAAC,SAAmB;YAChC,MAAM;YACN,aAAa,EAAG,CAAC,CAAC,cAAqC,IAAI,IAAI;YAC/D,KAAK,EAAE,CAAC,CAAC,KAAe;YACxB,QAAQ;YACR,MAAM,EAAE,CAAC,CAAC,MAAqB;YAC/B,QAAQ,EAAE,CAAC,CAAC,SAAmB;YAC/B,SAAS,EAAG,CAAC,CAAC,SAA2B,IAAI,IAAI;YACjD,eAAe;YACf,gBAAgB,EAAG,CAAC,CAAC,kBAAoC,IAAI,IAAI;YACjE,eAAe,EAAG,CAAC,CAAC,iBAAmC,IAAI,IAAI;YAC/D,cAAc,EAAG,CAAC,CAAC,gBAAkC,IAAI,IAAI;YAC7D,oBAAoB,EAAG,CAAC,CAAC,uBAAyC,IAAI,IAAI;YAC1E,cAAc,EAAE,CAAC,CAAC,eAAiC;YACnD,aAAa,EAAG,CAAC,CAAC,eAAiC,IAAI,IAAI;YAC3D,WAAW,EAAG,CAAC,CAAC,YAA8B,IAAI,IAAI;YACtD,YAAY,EAAE,CAAC,CAAE,CAAC,CAAC,aAAwB;YAC3C,SAAS,EAAG,CAAC,CAAC,UAAqB,IAAI,CAAC;YACxC,SAAS;YACT,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC;YAChD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI;SACnD,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;CACF;AAED,kDAAkD;AAClD,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,CA2nCR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,GAC3B,MAAM,CAuSR"}
|
|
@@ -662,6 +662,7 @@ I maintain registries that are the source of truth for specific categories. Thes
|
|
|
662
662
|
| My backup history? | \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/backups\` |
|
|
663
663
|
| My state change history? | \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/git/log\` |
|
|
664
664
|
| Other agents on this machine? | \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/agents\` |
|
|
665
|
+
| Behavioral issues logged while onboarding a framework? / the onboarding playbook? | \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/framework-issues\` (read-only) + \`/framework-issues/playbook?targetFramework=X\` — the Framework-Onboarding Mentor System's issue ledger (observability only; never gates) |
|
|
665
666
|
| Project architecture? | This file (CLAUDE.md), then project docs |
|
|
666
667
|
|
|
667
668
|
**Why this matters:** Searching 1000 files to answer a question that a single state file could answer is slower AND less reliable. Broad searches find stale narratives. State files are current. This applies at EVERY level — including sub-agents I spawn. When spawning a research agent, include the relevant state file reference in its prompt so it searches WITH context, not blind.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentServer.d.ts","sourceRoot":"","sources":["../../src/server/AgentServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAM7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAWxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentServer.d.ts","sourceRoot":"","sources":["../../src/server/AgentServer.ts"],"names":[],"mappings":"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"}
|