@groundnuty/macf 0.2.36 → 0.2.38
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/.build-info.json +2 -2
- package/dist/cli/claude-sh.d.ts +12 -10
- package/dist/cli/claude-sh.d.ts.map +1 -1
- package/dist/cli/claude-sh.js +13 -11
- package/dist/cli/claude-sh.js.map +1 -1
- package/dist/cli/commands/certs.d.ts.map +1 -1
- package/dist/cli/commands/certs.js +6 -2
- package/dist/cli/commands/certs.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +102 -3
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +349 -55
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts +24 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +81 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/monitor.d.ts +16 -0
- package/dist/cli/commands/monitor.d.ts.map +1 -0
- package/dist/cli/commands/monitor.js +96 -0
- package/dist/cli/commands/monitor.js.map +1 -0
- package/dist/cli/commands/propose.d.ts +21 -0
- package/dist/cli/commands/propose.d.ts.map +1 -0
- package/dist/cli/commands/propose.js +128 -0
- package/dist/cli/commands/propose.js.map +1 -0
- package/dist/cli/commands/ps.d.ts +17 -0
- package/dist/cli/commands/ps.d.ts.map +1 -0
- package/dist/cli/commands/ps.js +69 -0
- package/dist/cli/commands/ps.js.map +1 -0
- package/dist/cli/commands/registry-prune.d.ts +44 -0
- package/dist/cli/commands/registry-prune.d.ts.map +1 -0
- package/dist/cli/commands/registry-prune.js +124 -0
- package/dist/cli/commands/registry-prune.js.map +1 -0
- package/dist/cli/commands/rules-refresh.d.ts +1 -0
- package/dist/cli/commands/rules-refresh.d.ts.map +1 -1
- package/dist/cli/commands/rules-refresh.js +22 -1
- package/dist/cli/commands/rules-refresh.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +23 -2
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/config.d.ts +2 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +16 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/env-files-update.d.ts.map +1 -1
- package/dist/cli/env-files-update.js +5 -1
- package/dist/cli/env-files-update.js.map +1 -1
- package/dist/cli/env-files.d.ts +38 -13
- package/dist/cli/env-files.d.ts.map +1 -1
- package/dist/cli/env-files.js +84 -14
- package/dist/cli/env-files.js.map +1 -1
- package/dist/cli/index.js +142 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/monitor/digest.d.ts +89 -0
- package/dist/cli/monitor/digest.d.ts.map +1 -0
- package/dist/cli/monitor/digest.js +232 -0
- package/dist/cli/monitor/digest.js.map +1 -0
- package/dist/cli/monitor/github-reader.d.ts +38 -0
- package/dist/cli/monitor/github-reader.d.ts.map +1 -0
- package/dist/cli/monitor/github-reader.js +65 -0
- package/dist/cli/monitor/github-reader.js.map +1 -0
- package/dist/cli/monitor/reflections.d.ts +18 -0
- package/dist/cli/monitor/reflections.d.ts.map +1 -0
- package/dist/cli/monitor/reflections.js +72 -0
- package/dist/cli/monitor/reflections.js.map +1 -0
- package/dist/cli/monitor/run.d.ts +30 -0
- package/dist/cli/monitor/run.d.ts.map +1 -0
- package/dist/cli/monitor/run.js +67 -0
- package/dist/cli/monitor/run.js.map +1 -0
- package/dist/cli/proc-scan.d.ts +81 -0
- package/dist/cli/proc-scan.d.ts.map +1 -0
- package/dist/cli/proc-scan.js +172 -0
- package/dist/cli/proc-scan.js.map +1 -0
- package/dist/cli/project-rules.d.ts +105 -0
- package/dist/cli/project-rules.d.ts.map +1 -0
- package/dist/cli/project-rules.js +305 -0
- package/dist/cli/project-rules.js.map +1 -0
- package/dist/cli/propose/candidates.d.ts +95 -0
- package/dist/cli/propose/candidates.d.ts.map +1 -0
- package/dist/cli/propose/candidates.js +117 -0
- package/dist/cli/propose/candidates.js.map +1 -0
- package/dist/cli/propose/invariants.d.ts +49 -0
- package/dist/cli/propose/invariants.d.ts.map +1 -0
- package/dist/cli/propose/invariants.js +154 -0
- package/dist/cli/propose/invariants.js.map +1 -0
- package/dist/cli/propose/proposal-writer.d.ts +33 -0
- package/dist/cli/propose/proposal-writer.d.ts.map +1 -0
- package/dist/cli/propose/proposal-writer.js +53 -0
- package/dist/cli/propose/proposal-writer.js.map +1 -0
- package/dist/cli/propose/report.d.ts +49 -0
- package/dist/cli/propose/report.d.ts.map +1 -0
- package/dist/cli/propose/report.js +227 -0
- package/dist/cli/propose/report.js.map +1 -0
- package/dist/cli/propose/run.d.ts +41 -0
- package/dist/cli/propose/run.d.ts.map +1 -0
- package/dist/cli/propose/run.js +62 -0
- package/dist/cli/propose/run.js.map +1 -0
- package/dist/cli/role-settings-model.d.ts +70 -0
- package/dist/cli/role-settings-model.d.ts.map +1 -0
- package/dist/cli/role-settings-model.js +90 -0
- package/dist/cli/role-settings-model.js.map +1 -0
- package/dist/cli/settings-writer.d.ts +103 -6
- package/dist/cli/settings-writer.d.ts.map +1 -1
- package/dist/cli/settings-writer.js +259 -8
- package/dist/cli/settings-writer.js.map +1 -1
- package/dist/reconciler/reconcile.d.ts +31 -0
- package/dist/reconciler/reconcile.d.ts.map +1 -1
- package/dist/reconciler/reconcile.js +47 -3
- package/dist/reconciler/reconcile.js.map +1 -1
- package/dist/reconciler/run.d.ts +21 -1
- package/dist/reconciler/run.d.ts.map +1 -1
- package/dist/reconciler/run.js +106 -17
- package/dist/reconciler/run.js.map +1 -1
- package/package.json +2 -2
- package/plugin/rules/gh-token-attribution-traps.md +4 -0
- package/plugin/rules/observability-wiring.md +3 -3
- package/plugin/rules/reflection-staging.md +65 -0
- package/plugin/rules/silent-fallback-hazards.md +21 -4
- package/scripts/check-auditor-never-acts.sh +167 -0
- package/scripts/check-gh-attribution.sh +254 -0
- package/scripts/emit-turn-receipt.sh +1 -1
- package/scripts/harvest-reflection.sh +125 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
|
-
import { mkdirSync, writeFileSync, readFileSync, existsSync, appendFileSync, chmodSync } from 'node:fs';
|
|
2
|
+
import { mkdirSync, writeFileSync, readFileSync, existsSync, appendFileSync, chmodSync, copyFileSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
5
5
|
import { projectMacfDir, writeAgentConfig, addToAgentsIndex, agentCertPath, agentKeyPath, caCertPath as caCertPathFor, caKeyPath as caKeyPathFor, isValidProjectName, } from '../config.js';
|
|
6
6
|
import { createCA, loadCA } from '@groundnuty/macf-core';
|
|
7
7
|
import { generateAgentCert } from '@groundnuty/macf-core';
|
|
8
8
|
import { copyCanonicalRules, copyCanonicalScripts } from '../rules.js';
|
|
9
|
+
import { seedProjectRulesDir } from '../project-rules.js';
|
|
9
10
|
import { installGhTokenHook, installPluginSkillPermissions, installSandboxFdAllowRead, installSandboxExcludedCommands } from '../settings-writer.js';
|
|
10
11
|
import { fetchPluginToWorkspace, pinChannelServerVersion } from '../plugin-fetcher.js';
|
|
11
12
|
import { writeClaudeSh } from '../claude-sh.js';
|
|
@@ -118,9 +119,10 @@ function validateInitOpts(opts) {
|
|
|
118
119
|
if (opts.installId === undefined || opts.installId === '') {
|
|
119
120
|
throw new Error('installId is required (--install-id; omit only when using --local)');
|
|
120
121
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
// keyPath is OPTIONAL (macf#530): when omitted it defaults to the
|
|
123
|
+
// conventional ~/.macf/keys/<agent>.pem in initAgent. Only its *shape* is
|
|
124
|
+
// validated here (when provided), since it embeds in the double-quoted
|
|
125
|
+
// claude.sh KEY_PATH export.
|
|
124
126
|
if (!/^\d+$/.test(opts.appId)) {
|
|
125
127
|
throw new Error(`appId "${opts.appId}" must be numeric (GitHub App IDs are digits only)`);
|
|
126
128
|
}
|
|
@@ -129,7 +131,7 @@ function validateInitOpts(opts) {
|
|
|
129
131
|
}
|
|
130
132
|
// Shell-dangerous chars inside double-quoted context. `\` escapes in
|
|
131
133
|
// double quotes; include it to avoid any sub-expansion surprise.
|
|
132
|
-
if (/["$`\\\n\r]/.test(opts.keyPath)) {
|
|
134
|
+
if (opts.keyPath !== undefined && /["$`\\\n\r]/.test(opts.keyPath)) {
|
|
133
135
|
throw new Error(`keyPath "${opts.keyPath}" contains a shell-unsafe character (", $, backtick, backslash, or newline)`);
|
|
134
136
|
}
|
|
135
137
|
}
|
|
@@ -145,6 +147,60 @@ function validateInitOpts(opts) {
|
|
|
145
147
|
export function defaultLocalRegistryPath(project) {
|
|
146
148
|
return join(homedir(), '.macf', 'registry', `${project}.json`);
|
|
147
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Conventional per-agent App-key destination: `~/.macf/keys/<agent>.pem`
|
|
152
|
+
* (macf#530). Absolute (homedir-rooted) so the token helper resolves it from
|
|
153
|
+
* any cwd — same cross-repo-cwd discipline as the registry path.
|
|
154
|
+
*/
|
|
155
|
+
export function defaultAgentKeyPath(agentName) {
|
|
156
|
+
return join(homedir(), '.macf', 'keys', `${agentName}.pem`);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Resolve the destination App-key path and — when `--app-key <src>` is given —
|
|
160
|
+
* INGEST the downloaded private key to it at `0600`. Fails loud at init time:
|
|
161
|
+
*
|
|
162
|
+
* - `--app-key` pointing at a missing file → throw (operator error, named).
|
|
163
|
+
* - key absent at the destination after ingestion (no `--app-key`, none
|
|
164
|
+
* pre-placed) → loud, actionable WARNING — not a throw, because the key may
|
|
165
|
+
* legitimately be placed out-of-band, but the missing-key state must surface
|
|
166
|
+
* HERE rather than as a cryptic `gh` 401 later (the macf#530 silent-fallback:
|
|
167
|
+
* a pointer set without the thing it points to).
|
|
168
|
+
*
|
|
169
|
+
* Idempotent: an existing key at the destination is preserved, never clobbered
|
|
170
|
+
* (key rotation is a deliberate op, not an init side effect).
|
|
171
|
+
*
|
|
172
|
+
* Returns the path to record in `agent_config.github_app.key_path` (the
|
|
173
|
+
* conventional `~/.macf/keys/<agent>.pem` unless `--key-path` overrides).
|
|
174
|
+
*/
|
|
175
|
+
function ingestAndResolveKeyPath(opts, agentName, absDir) {
|
|
176
|
+
const keyPathForConfig = opts.keyPath ?? defaultAgentKeyPath(agentName);
|
|
177
|
+
const destAbs = isAbsolute(keyPathForConfig)
|
|
178
|
+
? keyPathForConfig
|
|
179
|
+
: resolve(absDir, keyPathForConfig);
|
|
180
|
+
if (opts.appKey !== undefined && opts.appKey !== '') {
|
|
181
|
+
const srcAbs = resolve(opts.appKey);
|
|
182
|
+
if (!existsSync(srcAbs)) {
|
|
183
|
+
throw new Error(`--app-key "${opts.appKey}" not found. Download the App private key (.pem) ` +
|
|
184
|
+
`from the GitHub App settings page and pass its path.`);
|
|
185
|
+
}
|
|
186
|
+
if (existsSync(destAbs)) {
|
|
187
|
+
console.log(` Key: ${destAbs} already exists — preserving (not clobbered by --app-key)`);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
mkdirSync(dirname(destAbs), { recursive: true, mode: 0o700 });
|
|
191
|
+
copyFileSync(srcAbs, destAbs);
|
|
192
|
+
chmodSync(destAbs, 0o600);
|
|
193
|
+
console.log(` Key: ingested App private key → ${destAbs} (chmod 600)`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (!existsSync(destAbs)) {
|
|
197
|
+
console.warn(`\n ⚠ App private key not found at ${destAbs}.\n` +
|
|
198
|
+
` Pass --app-key <downloaded .pem> to ingest it now, or place the key\n` +
|
|
199
|
+
` there yourself: cp <downloaded .pem> ${destAbs} && chmod 600 ${destAbs}\n` +
|
|
200
|
+
` Until then GH_TOKEN minting fails — gh / git push will 401.\n`);
|
|
201
|
+
}
|
|
202
|
+
return keyPathForConfig;
|
|
203
|
+
}
|
|
148
204
|
/**
|
|
149
205
|
* Local-registry directory perms enforcement per DR-024 §"Filesystem-permission
|
|
150
206
|
* discipline": parent dir is `0700`, CA-key is `0600`. Creates the dir
|
|
@@ -230,6 +286,10 @@ export async function initAgent(projectDir, opts) {
|
|
|
230
286
|
}
|
|
231
287
|
// Resolve version pins (explicit flags > network-fetched latest > fallback)
|
|
232
288
|
const versions = await resolveVersions(opts);
|
|
289
|
+
// Resolve the App-key destination and (when --app-key is given) ingest the
|
|
290
|
+
// downloaded key there at 0600, failing loud on a missing key (macf#530).
|
|
291
|
+
// Local-registry mode mints no token, so it has no key.
|
|
292
|
+
const githubKeyPath = regType === 'local' ? undefined : ingestAndResolveKeyPath(opts, agentName, absDir);
|
|
233
293
|
// Write agent config. `github_app` is omitted in local-registry mode
|
|
234
294
|
// (DR-024) — the launcher does not mint a token, and the schema marks
|
|
235
295
|
// the field optional to encode that conditional shape.
|
|
@@ -237,6 +297,7 @@ export async function initAgent(projectDir, opts) {
|
|
|
237
297
|
project: opts.project,
|
|
238
298
|
agent_name: agentName,
|
|
239
299
|
agent_role: opts.role,
|
|
300
|
+
...(opts.routingLabel !== undefined ? { routing_label: opts.routingLabel } : {}),
|
|
240
301
|
agent_type: (opts.type ?? 'permanent'),
|
|
241
302
|
registry,
|
|
242
303
|
...(regType === 'local'
|
|
@@ -245,7 +306,7 @@ export async function initAgent(projectDir, opts) {
|
|
|
245
306
|
github_app: {
|
|
246
307
|
app_id: opts.appId,
|
|
247
308
|
install_id: opts.installId,
|
|
248
|
-
key_path:
|
|
309
|
+
key_path: githubKeyPath,
|
|
249
310
|
},
|
|
250
311
|
}),
|
|
251
312
|
...(opts.advertiseHost !== undefined ? { advertise_host: opts.advertiseHost } : {}),
|
|
@@ -273,6 +334,15 @@ export async function initAgent(projectDir, opts) {
|
|
|
273
334
|
if (copiedRules.length > 0) {
|
|
274
335
|
console.log(` Rules: copied ${copiedRules.length} canonical rule file(s) to .claude/rules/`);
|
|
275
336
|
}
|
|
337
|
+
// Seed the project-tier rule subdir (.claude/rules/project/) with a generic,
|
|
338
|
+
// format-demonstrating `.example` template (DR-026 §3 / F3, macf#501). Init
|
|
339
|
+
// ships to EVERY deployment, so the seed is deployment-agnostic — it never
|
|
340
|
+
// contains a macf-specific rule. The actual project rules arrive on
|
|
341
|
+
// `macf update` / `macf rules refresh` from MACF_PROJECT_RULES_SOURCE
|
|
342
|
+
// (env.project-rules), which init does NOT fetch (keeps init offline-safe +
|
|
343
|
+
// generic).
|
|
344
|
+
const seeded = seedProjectRulesDir(absDir);
|
|
345
|
+
console.log(` Rules: seeded project-tier example to .claude/rules/project/${seeded}`);
|
|
276
346
|
// Copy canonical helper scripts (e.g., tmux-send-to-claude.sh) into
|
|
277
347
|
// <workspace>/.claude/scripts/. Hooks in settings.local.json.example
|
|
278
348
|
// call these by relative path.
|
|
@@ -346,7 +416,9 @@ export async function initAgent(projectDir, opts) {
|
|
|
346
416
|
try {
|
|
347
417
|
const ca = loadCA(caCertFile, caKeyFile);
|
|
348
418
|
await generateAgentCert({
|
|
349
|
-
agentName,
|
|
419
|
+
// macf#545: cert CN = the routing identity (defaults to agentName), so
|
|
420
|
+
// mTLS validates the CN against the registry slot the router resolved.
|
|
421
|
+
agentName: opts.routingLabel ?? agentName,
|
|
350
422
|
caCertPem: ca.certPem,
|
|
351
423
|
caKeyPem: ca.keyPem,
|
|
352
424
|
...(opts.advertiseHost !== undefined ? { advertiseHost: opts.advertiseHost } : {}),
|
|
@@ -435,7 +507,8 @@ async function initLocalModeCertsAndRegistry(workspaceDir, registryPath, opts, a
|
|
|
435
507
|
}
|
|
436
508
|
// Generate this agent's cert against the (new or existing) CA.
|
|
437
509
|
await generateAgentCert({
|
|
438
|
-
agentName
|
|
510
|
+
// macf#545: cert CN = the routing identity (defaults to agentName).
|
|
511
|
+
agentName: opts.routingLabel ?? agentName,
|
|
439
512
|
caCertPem,
|
|
440
513
|
caKeyPem,
|
|
441
514
|
...(opts.advertiseHost !== undefined ? { advertiseHost: opts.advertiseHost } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface MonitorCliOptions {
|
|
2
|
+
/** owner/repo; defaults to the project's `repo` registry config. */
|
|
3
|
+
readonly repo?: string;
|
|
4
|
+
/** Stale threshold in days (default 14). */
|
|
5
|
+
readonly since?: number;
|
|
6
|
+
/** Write the digest here instead of stdout. */
|
|
7
|
+
readonly output?: string;
|
|
8
|
+
/** Reflections ledger dir; defaults to `<project>/.claude/.macf/reflections`. */
|
|
9
|
+
readonly reflectionsDir?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Entry for `macf monitor`. Returns the shell exit code (0 ok, 1 on a
|
|
13
|
+
* config/repo/read error).
|
|
14
|
+
*/
|
|
15
|
+
export declare function runMonitorCommand(projectDir: string, opts: MonitorCliOptions): Promise<number>;
|
|
16
|
+
//# sourceMappingURL=monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/monitor.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAiBD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,CAiEjB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `macf monitor` — read-only auditor Monitor + digest-to-operator
|
|
3
|
+
* (groundnuty/macf#502, DR-026 F4).
|
|
4
|
+
*
|
|
5
|
+
* Reads a project's coordination substrate (GitHub open issues + PRs, F2
|
|
6
|
+
* reflection ledgers, project-tier rule presence) and emits a periodic
|
|
7
|
+
* protocol-health digest to stdout or a `--output` file.
|
|
8
|
+
*
|
|
9
|
+
* THE LOAD-BEARING INVARIANT — strictly read-only. This command NEVER mutates:
|
|
10
|
+
* no issue/PR create, comment, close, edit, or merge. It issues only GitHub
|
|
11
|
+
* READS (via the list-only `GitHubReader` seam) + local-file reads, and writes
|
|
12
|
+
* only the digest artifact itself. This is the SAFE half of the MAPE-K loop; the
|
|
13
|
+
* Analyze→Plan→propose half is a separate, ratification-gated issue (DR-026 G1).
|
|
14
|
+
*/
|
|
15
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
16
|
+
import { dirname, resolve } from 'node:path';
|
|
17
|
+
import { readAgentConfig, tokenSourceFromConfig } from '../config.js';
|
|
18
|
+
import { generateToken } from '@groundnuty/macf-core';
|
|
19
|
+
import { createGhReader } from '../monitor/github-reader.js';
|
|
20
|
+
import { runMonitor } from '../monitor/run.js';
|
|
21
|
+
/**
|
|
22
|
+
* Derive a default `owner/repo` from the project's registry config when the
|
|
23
|
+
* operator didn't pass `--repo`. Only the `repo` registry type carries an
|
|
24
|
+
* owner/repo pair; other types (org/profile/local) have no canonical repo, so
|
|
25
|
+
* we require `--repo` there.
|
|
26
|
+
*/
|
|
27
|
+
function defaultRepo(registry) {
|
|
28
|
+
if (registry.type === 'repo' && registry.owner && registry.repo) {
|
|
29
|
+
return `${registry.owner}/${registry.repo}`;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Entry for `macf monitor`. Returns the shell exit code (0 ok, 1 on a
|
|
35
|
+
* config/repo/read error).
|
|
36
|
+
*/
|
|
37
|
+
export async function runMonitorCommand(projectDir, opts) {
|
|
38
|
+
const config = readAgentConfig(projectDir);
|
|
39
|
+
if (!config) {
|
|
40
|
+
console.error('No macf-agent.json found. Run `macf init` first.');
|
|
41
|
+
return 1;
|
|
42
|
+
}
|
|
43
|
+
const repo = opts.repo ?? defaultRepo(config.registry);
|
|
44
|
+
if (!repo) {
|
|
45
|
+
console.error('Could not determine target repo. Pass --repo <owner/repo> ' +
|
|
46
|
+
'(the project\'s registry type carries no owner/repo pair).');
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
// Mint the bot token the same way every other GitHub-reading command does.
|
|
50
|
+
// Local-registry projects have no github_app block; tokenSourceFromConfig
|
|
51
|
+
// throws there, so guide the operator to the bot-auth fallback.
|
|
52
|
+
let token;
|
|
53
|
+
try {
|
|
54
|
+
token = await generateToken(tokenSourceFromConfig(projectDir, config));
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
console.error(`Could not mint a GitHub token: ${err instanceof Error ? err.message : String(err)}\n` +
|
|
58
|
+
'For a local-registry project, set GH_TOKEN in the environment and re-run.');
|
|
59
|
+
// Fall back to an ambient GH_TOKEN if one is present — still read-only.
|
|
60
|
+
const ambient = process.env['GH_TOKEN'];
|
|
61
|
+
if (!ambient)
|
|
62
|
+
return 1;
|
|
63
|
+
token = ambient;
|
|
64
|
+
}
|
|
65
|
+
const sinceDays = opts.since ?? 14;
|
|
66
|
+
const reflectionsDir = opts.reflectionsDir
|
|
67
|
+
? resolve(opts.reflectionsDir)
|
|
68
|
+
: resolve(projectDir, '.claude', '.macf', 'reflections');
|
|
69
|
+
let digest;
|
|
70
|
+
try {
|
|
71
|
+
digest = await runMonitor({
|
|
72
|
+
project: config.project,
|
|
73
|
+
repo,
|
|
74
|
+
sinceDays,
|
|
75
|
+
reflectionsDir,
|
|
76
|
+
workspaceDir: projectDir,
|
|
77
|
+
reader: createGhReader(token),
|
|
78
|
+
now: Date.now,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
console.error(`Monitor read failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
if (opts.output) {
|
|
86
|
+
const outPath = resolve(opts.output);
|
|
87
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
88
|
+
writeFileSync(outPath, digest);
|
|
89
|
+
console.error(`Digest written to ${outPath}`);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
process.stdout.write(digest);
|
|
93
|
+
}
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../src/cli/commands/monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ProposeCliOptions {
|
|
2
|
+
/** owner/repo target; defaults to the project's `repo` registry config when present. */
|
|
3
|
+
readonly repo?: string;
|
|
4
|
+
/** Distinct-agent threshold (GATE 1). Defaults to env/2 (resolved in index.ts). */
|
|
5
|
+
readonly minAgents?: number;
|
|
6
|
+
/** Reflections ledger dir; defaults to `<projectDir>/.claude/.macf/reflections`. */
|
|
7
|
+
readonly reflectionsDir?: string;
|
|
8
|
+
/** Framework-source repo root for `design/protected-invariants.md`. */
|
|
9
|
+
readonly repoRoot?: string;
|
|
10
|
+
/** Write the report here instead of stdout. */
|
|
11
|
+
readonly output?: string;
|
|
12
|
+
/** When true, OPEN ratifiable artifacts. DEFAULT OFF (dry-run). */
|
|
13
|
+
readonly file?: boolean;
|
|
14
|
+
/** Project directory for config lookup (defaults handled by caller). */
|
|
15
|
+
readonly projectDir: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Entry for `macf propose`. Returns the shell exit code (0 ok, 1 on error).
|
|
19
|
+
*/
|
|
20
|
+
export declare function runProposeCommand(opts: ProposeCliOptions): Promise<number>;
|
|
21
|
+
//# sourceMappingURL=propose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/propose.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AA8BD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8EhF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `macf propose` — the auditor Plan membrane (groundnuty/macf#503, DR-026 G1).
|
|
3
|
+
*
|
|
4
|
+
* Pairs with `macf monitor` (the Analyze stage): turns F4's reflection output
|
|
5
|
+
* into RATIFIABLE rule-evolution proposals. This is the highest-blast-radius
|
|
6
|
+
* piece of the auditor's double-loop curated generative evolution.
|
|
7
|
+
*
|
|
8
|
+
* THREE LOAD-BEARING GATES:
|
|
9
|
+
* 1. N>1 = distinct AGENTS, not occurrences — only candidates corroborated
|
|
10
|
+
* across ≥ `--min-agents` distinct `agent.name`s promote; the rest are HELD
|
|
11
|
+
* (visible, never dropped). [in `candidates.ts`]
|
|
12
|
+
* 2. Dry-run by DEFAULT — the default emits a report and opens NOTHING; only
|
|
13
|
+
* an explicit `--file` opens ratifiable artifacts. [enforced here + in run.ts]
|
|
14
|
+
* 3. No-auto-drop on invariant-touch — candidates touching/relaxing a
|
|
15
|
+
* protected invariant are SURFACED + HIGH-RISK-flagged, never code-dropped.
|
|
16
|
+
* [in `candidates.ts` + `report.ts`]
|
|
17
|
+
*
|
|
18
|
+
* Dry-run mode performs ZERO GitHub I/O (no token needed). `--file` mode mints a
|
|
19
|
+
* bot token (or uses ambient `GH_TOKEN`) and opens one `auditor-proposal` issue
|
|
20
|
+
* per promoted candidate via the create-only writer seam. The operator ratifies;
|
|
21
|
+
* the auditor never merges/applies (invariants #8 + #9).
|
|
22
|
+
*/
|
|
23
|
+
import { existsSync } from 'node:fs';
|
|
24
|
+
import { dirname, join, resolve } from 'node:path';
|
|
25
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
26
|
+
import { readAgentConfig, tokenSourceFromConfig } from '../config.js';
|
|
27
|
+
import { generateToken } from '@groundnuty/macf-core';
|
|
28
|
+
import { runPropose } from '../propose/run.js';
|
|
29
|
+
import { createGhProposalWriter } from '../propose/proposal-writer.js';
|
|
30
|
+
/**
|
|
31
|
+
* Derive a default `owner/repo` from a project's registry config when present.
|
|
32
|
+
* The macf substrate has no `.macf/macf-agent.json`, so config may be absent —
|
|
33
|
+
* then the operator must pass `--repo` (only strictly needed in `--file` mode).
|
|
34
|
+
*/
|
|
35
|
+
function defaultRepo(projectDir) {
|
|
36
|
+
const config = readAgentConfig(projectDir);
|
|
37
|
+
if (config && config.registry.type === 'repo' && config.registry.owner && config.registry.repo) {
|
|
38
|
+
return `${config.registry.owner}/${config.registry.repo}`;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Discover the framework-source repo root: walk up from `start` looking for
|
|
44
|
+
* `design/protected-invariants.md`. Falls back to `start` when not found (the
|
|
45
|
+
* subordination-check then surfaces nothing — loud-but-proceeds).
|
|
46
|
+
*/
|
|
47
|
+
function discoverRepoRoot(start) {
|
|
48
|
+
let dir = resolve(start);
|
|
49
|
+
for (;;) {
|
|
50
|
+
if (existsSync(join(dir, 'design', 'protected-invariants.md')))
|
|
51
|
+
return dir;
|
|
52
|
+
const parent = dirname(dir);
|
|
53
|
+
if (parent === dir)
|
|
54
|
+
return resolve(start);
|
|
55
|
+
dir = parent;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Entry for `macf propose`. Returns the shell exit code (0 ok, 1 on error).
|
|
60
|
+
*/
|
|
61
|
+
export async function runProposeCommand(opts) {
|
|
62
|
+
const fileMode = opts.file === true;
|
|
63
|
+
const repo = opts.repo ?? defaultRepo(opts.projectDir) ?? undefined;
|
|
64
|
+
// `--repo` is only strictly required when we will actually open issues.
|
|
65
|
+
if (fileMode && !repo) {
|
|
66
|
+
console.error('Could not determine target repo for --file mode. Pass --repo <owner/repo>.');
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
const reflectionsDir = opts.reflectionsDir
|
|
70
|
+
? resolve(opts.reflectionsDir)
|
|
71
|
+
: resolve(opts.projectDir, '.claude', '.macf', 'reflections');
|
|
72
|
+
const repoRoot = opts.repoRoot ? resolve(opts.repoRoot) : discoverRepoRoot(opts.projectDir);
|
|
73
|
+
// GATE 2 — only --file mode touches GitHub, so only it needs a token.
|
|
74
|
+
let writer;
|
|
75
|
+
if (fileMode) {
|
|
76
|
+
let token;
|
|
77
|
+
const config = readAgentConfig(opts.projectDir);
|
|
78
|
+
if (config) {
|
|
79
|
+
try {
|
|
80
|
+
token = await generateToken(tokenSourceFromConfig(opts.projectDir, config));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
token = undefined;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (!token)
|
|
87
|
+
token = process.env['GH_TOKEN'];
|
|
88
|
+
if (!token) {
|
|
89
|
+
console.error('--file mode needs a bot token. Either run in a configured MACF project ' +
|
|
90
|
+
'or set GH_TOKEN in the environment.');
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
writer = createGhProposalWriter(token);
|
|
94
|
+
}
|
|
95
|
+
let result;
|
|
96
|
+
try {
|
|
97
|
+
result = await runPropose({
|
|
98
|
+
project: readAgentConfig(opts.projectDir)?.project ?? repo ?? 'project',
|
|
99
|
+
repo: repo ?? '(unset — dry-run)',
|
|
100
|
+
reflectionsDir,
|
|
101
|
+
repoRoot,
|
|
102
|
+
minAgents: opts.minAgents,
|
|
103
|
+
fileMode,
|
|
104
|
+
writer,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.error(`Propose failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
109
|
+
return 1;
|
|
110
|
+
}
|
|
111
|
+
if (opts.output) {
|
|
112
|
+
const outPath = resolve(opts.output);
|
|
113
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
114
|
+
writeFileSync(outPath, result.report);
|
|
115
|
+
console.error(`Report written to ${outPath}`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
process.stdout.write(result.report);
|
|
119
|
+
}
|
|
120
|
+
if (fileMode) {
|
|
121
|
+
for (const c of result.created) {
|
|
122
|
+
console.error(`Opened proposal: ${c.url}`);
|
|
123
|
+
}
|
|
124
|
+
console.error(`--file mode: ${result.created.length} ratifiable auditor-proposal issue(s) opened.`);
|
|
125
|
+
}
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=propose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propose.js","sourceRoot":"","sources":["../../../src/cli/commands/propose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MacfProcess, ProcReader } from '../proc-scan.js';
|
|
2
|
+
/** Build one display row per process (pure — exported for tests). */
|
|
3
|
+
export declare function buildPsRows(procs: readonly MacfProcess[]): readonly (readonly string[])[];
|
|
4
|
+
/**
|
|
5
|
+
* Render `headers` + `rows` as a left-aligned, dynamically-sized table.
|
|
6
|
+
* Column widths flex to the longest cell so long values (cwd, OTEL endpoint)
|
|
7
|
+
* never break the alignment of the earlier columns.
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatTable(headers: readonly string[], rows: readonly (readonly string[])[]): string;
|
|
10
|
+
/** Full rendered table for a process list (pure — exported for tests). */
|
|
11
|
+
export declare function formatPsTable(procs: readonly MacfProcess[]): string;
|
|
12
|
+
/**
|
|
13
|
+
* `macf ps` entry point. Returns the shell exit code. The reader is injectable
|
|
14
|
+
* for tests; production uses the real `/proc` reader.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runPs(reader?: ProcReader): number;
|
|
17
|
+
//# sourceMappingURL=ps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ps.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY/D,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAUzF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GACnC,MAAM,CAQR;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAEnE;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,MAAM,GAAE,UAA8B,GAAG,MAAM,CAiBpE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `macf ps` — list every MACF `claude` / channel-server process, keyed by its
|
|
3
|
+
* own `readlink /proc/<pid>/cwd` + per-process environment (macf#556).
|
|
4
|
+
*
|
|
5
|
+
* The whole point is multi-tenant correctness: one row per process, each keyed
|
|
6
|
+
* by its OWN cwd + agent identity — NEVER `pgrep … | head -1` (which grabs an
|
|
7
|
+
* arbitrary one of several and misdiagnoses siblings). The scan itself lives in
|
|
8
|
+
* `proc-scan.ts` behind an injectable `ProcReader` so it's testable with
|
|
9
|
+
* synthetic `/proc` data; this command is the thin presentation layer.
|
|
10
|
+
*
|
|
11
|
+
* Linux `/proc` only — degrades with a clear message where `/proc` is absent
|
|
12
|
+
* (e.g. macOS).
|
|
13
|
+
*/
|
|
14
|
+
import { defaultProcReader, scanMacfProcesses } from '../proc-scan.js';
|
|
15
|
+
const HEADERS = [
|
|
16
|
+
'PID',
|
|
17
|
+
'KIND',
|
|
18
|
+
'WORKSPACE',
|
|
19
|
+
'AGENT',
|
|
20
|
+
'MACF_PORT',
|
|
21
|
+
'OTEL_ENDPOINT',
|
|
22
|
+
'CWD',
|
|
23
|
+
];
|
|
24
|
+
/** Build one display row per process (pure — exported for tests). */
|
|
25
|
+
export function buildPsRows(procs) {
|
|
26
|
+
return procs.map((p) => [
|
|
27
|
+
p.pid,
|
|
28
|
+
p.kind,
|
|
29
|
+
p.cwdBasename ?? '—',
|
|
30
|
+
p.agentIdentity ?? '—',
|
|
31
|
+
p.port ?? '—',
|
|
32
|
+
p.otelEndpoint ?? '(none)',
|
|
33
|
+
p.cwd ?? '—',
|
|
34
|
+
]);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Render `headers` + `rows` as a left-aligned, dynamically-sized table.
|
|
38
|
+
* Column widths flex to the longest cell so long values (cwd, OTEL endpoint)
|
|
39
|
+
* never break the alignment of the earlier columns.
|
|
40
|
+
*/
|
|
41
|
+
export function formatTable(headers, rows) {
|
|
42
|
+
const widths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] ?? '').length), 0));
|
|
43
|
+
const fmt = (cells) => cells.map((c, i) => (c ?? '').padEnd(widths[i])).join(' ').trimEnd();
|
|
44
|
+
const sep = widths.map((w) => '─'.repeat(w)).join(' ');
|
|
45
|
+
return [fmt(headers), sep, ...rows.map(fmt)].join('\n');
|
|
46
|
+
}
|
|
47
|
+
/** Full rendered table for a process list (pure — exported for tests). */
|
|
48
|
+
export function formatPsTable(procs) {
|
|
49
|
+
return formatTable(HEADERS, buildPsRows(procs));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* `macf ps` entry point. Returns the shell exit code. The reader is injectable
|
|
53
|
+
* for tests; production uses the real `/proc` reader.
|
|
54
|
+
*/
|
|
55
|
+
export function runPs(reader = defaultProcReader) {
|
|
56
|
+
if (!reader.available()) {
|
|
57
|
+
console.log('macf ps: process introspection is Linux-only (no /proc on this host).');
|
|
58
|
+
console.log(' It reads /proc/<pid>/{cwd,environ,cmdline}; on macOS/other platforms there is nothing to scan.');
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
const procs = scanMacfProcesses(reader);
|
|
62
|
+
if (procs.length === 0) {
|
|
63
|
+
console.log('No MACF claude / channel-server processes found.');
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
console.log(formatPsTable(procs));
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../../src/cli/commands/ps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGvE,MAAM,OAAO,GAAG;IACd,KAAK;IACL,MAAM;IACN,WAAW;IACX,OAAO;IACP,WAAW;IACX,eAAe;IACf,KAAK;CACG,CAAC;AAEX,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,KAA6B;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,WAAW,IAAI,GAAG;QACpB,CAAC,CAAC,aAAa,IAAI,GAAG;QACtB,CAAC,CAAC,IAAI,IAAI,GAAG;QACb,CAAC,CAAC,YAAY,IAAI,QAAQ;QAC1B,CAAC,CAAC,GAAG,IAAI,GAAG;KACb,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,OAA0B,EAC1B,IAAoC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAC/D,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,KAAwB,EAAU,EAAE,CAC/C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,KAA6B;IACzD,OAAO,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,SAAqB,iBAAiB;IAC1D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CACT,kGAAkG,CACnG,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC"}
|