@useorgx/wizard 0.1.63 → 0.1.65
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/README.md +3 -3
- package/dist/cli.js +136 -21
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,9 +33,9 @@ The wizard modifies local tool configuration only. Depending on the command, it
|
|
|
33
33
|
- `work-graph preview --from all` shows the same profile story locally without publishing.
|
|
34
34
|
- `work-graph runtime-event --source codex|claude --summary "..."` lets an agent write public-safe runtime evidence that the next AQ profile can collect.
|
|
35
35
|
- `hooks install [--targets codex,claude-code]` installs bounded local capture hooks. Terminal events write compact session summaries to a durable queue, then request a detached single-flight delivery worker. The hook does not read credentials or perform network I/O. Set `ORGX_SESSION_SUMMARY_AUTO_FLUSH=off` for local-only capture and manual delivery. The legacy transcript-derived execution-graph emit remains off unless `ORGX_EMIT_EXECUTION_GRAPH=1` is set.
|
|
36
|
-
- `ORGX_SESSION_WORK_CONTEXT` can carry one explicit, bounded JSON annotation for intent, authority, cost, artifact references, and
|
|
37
|
-
- `hooks flush [--limit 100]` is the manual delivery and recovery path. It uses the same queue lease as automatic delivery and removes each file only after a successful server acknowledgement. Failed
|
|
38
|
-
- `hooks doctor` shows hook wiring, automatic-delivery configuration,
|
|
36
|
+
- `ORGX_SESSION_WORK_CONTEXT` can carry one explicit, bounded JSON annotation for intent, authority, cost, artifact and evidence references, plus exact Context Capsule, decision, constraint, expectation, applied-learning, and prior-receipt references. Capsule delivery requires both the capsule reference and delivery timestamp. The Wizard does not infer this context from prompts; invalid or oversized annotations are omitted, and unknown fields are removed before cloud delivery.
|
|
37
|
+
- `hooks flush [--limit 100]` is the manual delivery and recovery path. It uses the same queue lease as automatic delivery and removes each valid file only after a successful server acknowledgement. Failed captures stay queued for retry; malformed captures move to the owner-only `session-summary-captures/quarantine/` directory and make a manual flush fail visibly without being deleted.
|
|
38
|
+
- `hooks doctor` shows hook wiring, automatic-delivery configuration, active and quarantined capture counts, and the legacy spool count without changing local configuration.
|
|
39
39
|
- `hooks backfill` previews compact summaries distilled from the legacy spool. It does not upload or archive anything unless you add `--post --yes`; `--truncate` also requires both flags and archives the original spool only after every upload succeeds.
|
|
40
40
|
- `map [query...] --deep-search` runs the v1 Operating Map discovery flow over connected company signals and cited deep research, prints source health and low-confidence ProcessCards, and keeps ownership/timing/"done" confirmation human-gated. Add `--candidate <id-or-number> --yes` to explicitly propose one card as an OperatingProcess; the wizard never auto-confirms or activates inferred workflow ownership.
|
|
41
41
|
- `surface list` shows supported surfaces and current status.
|
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// src/cli.ts
|
|
4
4
|
|
|
5
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
5
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="af54c3d7-9ef3-5d66-90dc-45a9ecb71d96")}catch(e){}}();
|
|
6
6
|
import * as clack from "@clack/prompts";
|
|
7
7
|
import { spawnSync as spawnSync5 } from "child_process";
|
|
8
8
|
import { readFileSync as readFileSync10 } from "fs";
|
|
@@ -3736,8 +3736,8 @@ function encodeRepoPath2(value) {
|
|
|
3736
3736
|
return value.split("/").filter((segment) => segment.length > 0).map((segment) => encodeURIComponent(segment)).join("/");
|
|
3737
3737
|
}
|
|
3738
3738
|
function isLikelyRepoFilePath(path) {
|
|
3739
|
-
const
|
|
3740
|
-
return
|
|
3739
|
+
const basename7 = path.split("/").pop() ?? path;
|
|
3740
|
+
return basename7.includes(".") && !/^\.[^./]+$/.test(basename7);
|
|
3741
3741
|
}
|
|
3742
3742
|
function buildContentsUrl2(spec, path) {
|
|
3743
3743
|
const encodedPath = encodeRepoPath2(path);
|
|
@@ -6354,7 +6354,7 @@ function initializeWizardSentry() {
|
|
|
6354
6354
|
Sentry.init({
|
|
6355
6355
|
dsn,
|
|
6356
6356
|
environment: process.env.ORGX_SENTRY_ENVIRONMENT || "production",
|
|
6357
|
-
release: "useorgx-wizard@0.1.
|
|
6357
|
+
release: "useorgx-wizard@0.1.65",
|
|
6358
6358
|
tracesSampleRate: sampleRate(process.env.ORGX_SENTRY_TRACES_SAMPLE_RATE),
|
|
6359
6359
|
enableLogs: true,
|
|
6360
6360
|
sendDefaultPii: false,
|
|
@@ -14281,7 +14281,7 @@ function workRefs(value) {
|
|
|
14281
14281
|
|
|
14282
14282
|
function workIso(value) {
|
|
14283
14283
|
var text = workString(value, 100);
|
|
14284
|
-
return text &&
|
|
14284
|
+
return text && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$/.test(text) && !Number.isNaN(Date.parse(text))
|
|
14285
14285
|
? text
|
|
14286
14286
|
: null;
|
|
14287
14287
|
}
|
|
@@ -14316,6 +14316,18 @@ export function parseExplicitWorkContext(value) {
|
|
|
14316
14316
|
var validUntil = authority.valid_until === undefined ? undefined : workIso(authority.valid_until);
|
|
14317
14317
|
var artifactRefs = workRefs(parsed.artifact_refs);
|
|
14318
14318
|
var evidenceRefs = workRefs(parsed.evidence_refs);
|
|
14319
|
+
var semantic = parsed.semantic_refs === undefined ? undefined : workObject(parsed.semantic_refs);
|
|
14320
|
+
var contextCapsuleRef = !semantic || semantic.context_capsule_ref === undefined
|
|
14321
|
+
? undefined
|
|
14322
|
+
: workRef(semantic.context_capsule_ref);
|
|
14323
|
+
var contextDeliveredAt = !semantic || semantic.context_delivered_at === undefined
|
|
14324
|
+
? undefined
|
|
14325
|
+
: workIso(semantic.context_delivered_at);
|
|
14326
|
+
var decisionRefs = !semantic ? [] : workRefs(semantic.decision_refs);
|
|
14327
|
+
var constraintRefs = !semantic ? [] : workRefs(semantic.constraint_refs);
|
|
14328
|
+
var expectationRefs = !semantic ? [] : workRefs(semantic.expectation_refs);
|
|
14329
|
+
var learningRefs = !semantic ? [] : workRefs(semantic.learning_refs);
|
|
14330
|
+
var priorReceiptRefs = !semantic ? [] : workRefs(semantic.prior_receipt_refs);
|
|
14319
14331
|
var currency = workString(cost.currency, 12);
|
|
14320
14332
|
var source = cost.source === undefined ? undefined : workString(cost.source, 120);
|
|
14321
14333
|
if (!summary || objective === null || acceptance === null || intentConstraints === null || requestRef === null) return null;
|
|
@@ -14326,6 +14338,11 @@ export function parseExplicitWorkContext(value) {
|
|
|
14326
14338
|
if (!currency || !/^[A-Z][A-Z0-9_-]{1,11}$/.test(currency) || typeof cost.total !== "number" || !Number.isFinite(cost.total) || cost.total < 0 || cost.total > 100000 || source === null) return null;
|
|
14327
14339
|
if (cost.estimated !== undefined && typeof cost.estimated !== "boolean") return null;
|
|
14328
14340
|
if (artifactRefs === null || evidenceRefs === null) return null;
|
|
14341
|
+
if (parsed.semantic_refs !== undefined && !semantic) return null;
|
|
14342
|
+
if (contextCapsuleRef === null || contextDeliveredAt === null || decisionRefs === null || constraintRefs === null || expectationRefs === null || learningRefs === null || priorReceiptRefs === null) return null;
|
|
14343
|
+
if (Boolean(contextCapsuleRef) !== Boolean(contextDeliveredAt)) return null;
|
|
14344
|
+
var semanticRefCount = decisionRefs.length + constraintRefs.length + expectationRefs.length + learningRefs.length + priorReceiptRefs.length + (contextCapsuleRef ? 1 : 0);
|
|
14345
|
+
if (semantic !== undefined && (semanticRefCount === 0 || semanticRefCount > 20)) return null;
|
|
14329
14346
|
var normalizedIntent = { summary: summary, acceptance_criteria: acceptance, constraints: intentConstraints };
|
|
14330
14347
|
if (objective) normalizedIntent.objective = objective;
|
|
14331
14348
|
if (requestRef) normalizedIntent.request_ref = requestRef;
|
|
@@ -14341,6 +14358,20 @@ export function parseExplicitWorkContext(value) {
|
|
|
14341
14358
|
if (validUntil) normalizedAuthority.valid_until = validUntil;
|
|
14342
14359
|
var normalizedCost = { currency: currency, total: cost.total, estimated: cost.estimated !== false };
|
|
14343
14360
|
if (source) normalizedCost.source = source;
|
|
14361
|
+
var normalizedSemantic;
|
|
14362
|
+
if (semantic !== undefined) {
|
|
14363
|
+
normalizedSemantic = {
|
|
14364
|
+
decision_refs: decisionRefs,
|
|
14365
|
+
constraint_refs: constraintRefs,
|
|
14366
|
+
expectation_refs: expectationRefs,
|
|
14367
|
+
learning_refs: learningRefs,
|
|
14368
|
+
prior_receipt_refs: priorReceiptRefs,
|
|
14369
|
+
};
|
|
14370
|
+
if (contextCapsuleRef) {
|
|
14371
|
+
normalizedSemantic.context_capsule_ref = contextCapsuleRef;
|
|
14372
|
+
normalizedSemantic.context_delivered_at = contextDeliveredAt;
|
|
14373
|
+
}
|
|
14374
|
+
}
|
|
14344
14375
|
return {
|
|
14345
14376
|
schema_version: "orgx-session-work-context/v1",
|
|
14346
14377
|
provenance: "producer_asserted",
|
|
@@ -14349,6 +14380,7 @@ export function parseExplicitWorkContext(value) {
|
|
|
14349
14380
|
cost: normalizedCost,
|
|
14350
14381
|
artifact_refs: artifactRefs,
|
|
14351
14382
|
evidence_refs: evidenceRefs,
|
|
14383
|
+
...(normalizedSemantic ? { semantic_refs: normalizedSemantic } : {}),
|
|
14352
14384
|
};
|
|
14353
14385
|
}
|
|
14354
14386
|
|
|
@@ -14546,6 +14578,15 @@ function countSessionSummaryCaptures(path) {
|
|
|
14546
14578
|
return 0;
|
|
14547
14579
|
}
|
|
14548
14580
|
}
|
|
14581
|
+
function countSessionSummaryQuarantinedCaptures(path) {
|
|
14582
|
+
try {
|
|
14583
|
+
return readdirSync6(join8(path, "quarantine")).filter(
|
|
14584
|
+
(name) => name.includes(".malformed")
|
|
14585
|
+
).length;
|
|
14586
|
+
} catch {
|
|
14587
|
+
return 0;
|
|
14588
|
+
}
|
|
14589
|
+
}
|
|
14549
14590
|
function backupPath(path, now) {
|
|
14550
14591
|
const timestamp = now.toISOString().replace(/[:.]/g, "-");
|
|
14551
14592
|
return `${path}.bak.${timestamp}`;
|
|
@@ -15081,7 +15122,10 @@ function inspectRuntimeHooks(options = {}) {
|
|
|
15081
15122
|
notifyPreserved: !codexHasNotify(codexConfigRaw) || !hasOrgxHook(codexConfigRaw)
|
|
15082
15123
|
},
|
|
15083
15124
|
outboxEvents: countJsonlLines(paths.outboxPath),
|
|
15084
|
-
sessionSummaryCaptures: countSessionSummaryCaptures(paths.sessionSummaryQueueDir)
|
|
15125
|
+
sessionSummaryCaptures: countSessionSummaryCaptures(paths.sessionSummaryQueueDir),
|
|
15126
|
+
sessionSummaryQuarantinedCaptures: countSessionSummaryQuarantinedCaptures(
|
|
15127
|
+
paths.sessionSummaryQueueDir
|
|
15128
|
+
)
|
|
15085
15129
|
};
|
|
15086
15130
|
}
|
|
15087
15131
|
function installRuntimeHooks(targets, options = {}) {
|
|
@@ -15172,8 +15216,16 @@ function parseRuntimeHookTargets(value) {
|
|
|
15172
15216
|
}
|
|
15173
15217
|
|
|
15174
15218
|
// src/lib/session-summary-queue.ts
|
|
15175
|
-
import {
|
|
15176
|
-
|
|
15219
|
+
import {
|
|
15220
|
+
chmodSync as chmodSync2,
|
|
15221
|
+
existsSync as existsSync10,
|
|
15222
|
+
mkdirSync as mkdirSync5,
|
|
15223
|
+
readdirSync as readdirSync7,
|
|
15224
|
+
readFileSync as readFileSync8,
|
|
15225
|
+
renameSync as renameSync3,
|
|
15226
|
+
unlinkSync as unlinkSync2
|
|
15227
|
+
} from "fs";
|
|
15228
|
+
import { basename as basename6, join as join9 } from "path";
|
|
15177
15229
|
|
|
15178
15230
|
// src/lib/session-summary-backfill.ts
|
|
15179
15231
|
import { createReadStream, renameSync as renameSync2, statSync as statSync5, writeFileSync as writeFileSync4 } from "fs";
|
|
@@ -15207,6 +15259,29 @@ var referenceList = z.array(externalReferenceSchema).max(20).default([]).transfo
|
|
|
15207
15259
|
return a < b ? -1 : a > b ? 1 : 0;
|
|
15208
15260
|
});
|
|
15209
15261
|
});
|
|
15262
|
+
var semanticReferencesSchema = z.object({
|
|
15263
|
+
context_capsule_ref: externalReferenceSchema.optional(),
|
|
15264
|
+
context_delivered_at: z.string().datetime({ offset: true }).optional(),
|
|
15265
|
+
decision_refs: referenceList,
|
|
15266
|
+
constraint_refs: referenceList,
|
|
15267
|
+
expectation_refs: referenceList,
|
|
15268
|
+
learning_refs: referenceList,
|
|
15269
|
+
prior_receipt_refs: referenceList
|
|
15270
|
+
}).superRefine((value, context) => {
|
|
15271
|
+
if (Boolean(value.context_capsule_ref) !== Boolean(value.context_delivered_at)) {
|
|
15272
|
+
context.addIssue({
|
|
15273
|
+
code: z.ZodIssueCode.custom,
|
|
15274
|
+
message: "context_capsule_ref and context_delivered_at must be supplied together"
|
|
15275
|
+
});
|
|
15276
|
+
}
|
|
15277
|
+
const totalRefs = value.decision_refs.length + value.constraint_refs.length + value.expectation_refs.length + value.learning_refs.length + value.prior_receipt_refs.length + (value.context_capsule_ref ? 1 : 0);
|
|
15278
|
+
if (totalRefs === 0 || totalRefs > 20) {
|
|
15279
|
+
context.addIssue({
|
|
15280
|
+
code: z.ZodIssueCode.custom,
|
|
15281
|
+
message: "semantic_refs must contain between 1 and 20 references"
|
|
15282
|
+
});
|
|
15283
|
+
}
|
|
15284
|
+
});
|
|
15210
15285
|
var authoritySchema = z.object({
|
|
15211
15286
|
mode: z.enum([
|
|
15212
15287
|
"explicit",
|
|
@@ -15251,7 +15326,8 @@ var sessionWorkContextInputSchema = z.object({
|
|
|
15251
15326
|
source: boundedText(120).optional()
|
|
15252
15327
|
}),
|
|
15253
15328
|
artifact_refs: referenceList,
|
|
15254
|
-
evidence_refs: referenceList
|
|
15329
|
+
evidence_refs: referenceList,
|
|
15330
|
+
semantic_refs: semanticReferencesSchema.optional()
|
|
15255
15331
|
});
|
|
15256
15332
|
function normalizeSessionWorkContext(value) {
|
|
15257
15333
|
const parsed = sessionWorkContextInputSchema.safeParse(value);
|
|
@@ -15560,6 +15636,8 @@ function truncateSpool(spoolPath, post, options = {}) {
|
|
|
15560
15636
|
var SESSION_SUMMARY_CAPTURE_VERSION = "orgx-session-summary-capture/v1";
|
|
15561
15637
|
var SESSION_SUMMARY_CAPTURE_FILE_SUFFIX = ".capture.json";
|
|
15562
15638
|
var SESSION_SUMMARY_CAPTURE_MAX_BYTES = 16 * 1024;
|
|
15639
|
+
var SESSION_SUMMARY_QUARANTINE_DIR_NAME = "quarantine";
|
|
15640
|
+
var SESSION_SUMMARY_QUARANTINE_FILE_SUFFIX = ".malformed";
|
|
15563
15641
|
function sessionSummaryCaptureFiles(queueDir) {
|
|
15564
15642
|
if (!existsSync10(queueDir)) return [];
|
|
15565
15643
|
try {
|
|
@@ -15568,6 +15646,33 @@ function sessionSummaryCaptureFiles(queueDir) {
|
|
|
15568
15646
|
return [];
|
|
15569
15647
|
}
|
|
15570
15648
|
}
|
|
15649
|
+
function sessionSummaryQuarantineDir(queueDir) {
|
|
15650
|
+
return join9(queueDir, SESSION_SUMMARY_QUARANTINE_DIR_NAME);
|
|
15651
|
+
}
|
|
15652
|
+
function quarantineMalformedCapture(path, queueDir) {
|
|
15653
|
+
const quarantineDir = sessionSummaryQuarantineDir(queueDir);
|
|
15654
|
+
try {
|
|
15655
|
+
mkdirSync5(quarantineDir, { recursive: true, mode: 448 });
|
|
15656
|
+
const baseTarget = join9(
|
|
15657
|
+
quarantineDir,
|
|
15658
|
+
`${basename6(path)}${SESSION_SUMMARY_QUARANTINE_FILE_SUFFIX}`
|
|
15659
|
+
);
|
|
15660
|
+
let target = baseTarget;
|
|
15661
|
+
let collision = 0;
|
|
15662
|
+
while (existsSync10(target)) {
|
|
15663
|
+
collision += 1;
|
|
15664
|
+
target = `${baseTarget}.${collision}`;
|
|
15665
|
+
}
|
|
15666
|
+
renameSync3(path, target);
|
|
15667
|
+
try {
|
|
15668
|
+
chmodSync2(target, 384);
|
|
15669
|
+
} catch {
|
|
15670
|
+
}
|
|
15671
|
+
return target;
|
|
15672
|
+
} catch {
|
|
15673
|
+
return null;
|
|
15674
|
+
}
|
|
15675
|
+
}
|
|
15571
15676
|
function isRecord4(value) {
|
|
15572
15677
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
15573
15678
|
}
|
|
@@ -15680,14 +15785,20 @@ async function flushSessionSummaryCaptures(options) {
|
|
|
15680
15785
|
acknowledged: 0,
|
|
15681
15786
|
retained: 0,
|
|
15682
15787
|
malformed: 0,
|
|
15788
|
+
quarantined: 0,
|
|
15683
15789
|
fallbackAcknowledged: 0
|
|
15684
15790
|
};
|
|
15685
15791
|
for (const path of selected) {
|
|
15686
15792
|
const capture = readSessionSummaryCapture(path);
|
|
15687
15793
|
if (!capture) {
|
|
15688
15794
|
result.malformed += 1;
|
|
15689
|
-
|
|
15690
|
-
|
|
15795
|
+
const quarantinedPath = quarantineMalformedCapture(path, options.queueDir);
|
|
15796
|
+
if (quarantinedPath) {
|
|
15797
|
+
result.quarantined += 1;
|
|
15798
|
+
} else {
|
|
15799
|
+
result.retained += 1;
|
|
15800
|
+
result.firstError ??= `Malformed capture could not be quarantined: ${path}`;
|
|
15801
|
+
}
|
|
15691
15802
|
continue;
|
|
15692
15803
|
}
|
|
15693
15804
|
result.attempted += 1;
|
|
@@ -15725,10 +15836,10 @@ import { randomUUID as randomUUID3 } from "crypto";
|
|
|
15725
15836
|
import {
|
|
15726
15837
|
closeSync as closeSync2,
|
|
15727
15838
|
fsyncSync,
|
|
15728
|
-
mkdirSync as
|
|
15839
|
+
mkdirSync as mkdirSync6,
|
|
15729
15840
|
openSync as openSync2,
|
|
15730
15841
|
readFileSync as readFileSync9,
|
|
15731
|
-
renameSync as
|
|
15842
|
+
renameSync as renameSync4,
|
|
15732
15843
|
statSync as statSync6,
|
|
15733
15844
|
unlinkSync as unlinkSync3,
|
|
15734
15845
|
writeSync
|
|
@@ -15805,7 +15916,7 @@ function claimSessionSummaryFlushLease(queueDir, options = {}) {
|
|
|
15805
15916
|
const path = join10(queueDir, SESSION_SUMMARY_FLUSH_LOCK_NAME);
|
|
15806
15917
|
const record = { token, pid, claimed_at: now.toISOString() };
|
|
15807
15918
|
try {
|
|
15808
|
-
|
|
15919
|
+
mkdirSync6(queueDir, { recursive: true, mode: 448 });
|
|
15809
15920
|
} catch {
|
|
15810
15921
|
return { acquired: false, reason: "unavailable" };
|
|
15811
15922
|
}
|
|
@@ -15825,7 +15936,7 @@ function claimSessionSummaryFlushLease(queueDir, options = {}) {
|
|
|
15825
15936
|
}
|
|
15826
15937
|
const stalePath = `${path}.stale-${token}`;
|
|
15827
15938
|
try {
|
|
15828
|
-
|
|
15939
|
+
renameSync4(path, stalePath);
|
|
15829
15940
|
unlinkSync3(stalePath);
|
|
15830
15941
|
} catch {
|
|
15831
15942
|
return { acquired: false, reason: "busy" };
|
|
@@ -16587,6 +16698,7 @@ function printRuntimeHookInspection(report) {
|
|
|
16587
16698
|
console.log(` ${report.installed.summaryHookScript ? ICON.ok : ICON.warn} ${pc3.bold("summary hook")} ${report.installed.summaryHookScript ? pc3.green("installed") : pc3.yellow("missing")} ${pc3.dim(report.paths.summaryHookScriptPath)}`);
|
|
16588
16699
|
console.log(` ${report.installed.automaticDelivery ? ICON.ok : ICON.warn} ${pc3.bold("auto delivery")} ${report.installed.automaticDelivery ? pc3.green("configured") : pc3.yellow("not configured")} ${pc3.dim("detached, ACK-gated worker")}`);
|
|
16589
16700
|
console.log(` ${ICON.skip} ${pc3.bold("capture queue")} ${pc3.dim(`${report.sessionSummaryCaptures} capture${report.sessionSummaryCaptures === 1 ? "" : "s"} at ${report.paths.sessionSummaryQueueDir}`)}`);
|
|
16701
|
+
console.log(` ${report.sessionSummaryQuarantinedCaptures === 0 ? ICON.skip : ICON.warn} ${pc3.bold("quarantine ")} ${pc3.dim(`${report.sessionSummaryQuarantinedCaptures} malformed capture${report.sessionSummaryQuarantinedCaptures === 1 ? "" : "s"}, recoverable on disk`)}`);
|
|
16590
16702
|
console.log(` ${ICON.skip} ${pc3.bold("outbox ")} ${pc3.dim(`${report.outboxEvents} event${report.outboxEvents === 1 ? "" : "s"} at ${report.paths.outboxPath}`)}`);
|
|
16591
16703
|
}
|
|
16592
16704
|
function printSessionSummaryFlush(result) {
|
|
@@ -16595,7 +16707,7 @@ function printSessionSummaryFlush(result) {
|
|
|
16595
16707
|
return;
|
|
16596
16708
|
}
|
|
16597
16709
|
const delivered = `${result.acknowledged}/${result.attempted} acknowledged`;
|
|
16598
|
-
console.log(` ${result.retained === 0 ? ICON.ok : ICON.warn} ${pc3.bold("captures ")} ${pc3.dim(`${delivered}, ${result.retained} retained, ${result.malformed} malformed`)}`);
|
|
16710
|
+
console.log(` ${result.retained === 0 && result.malformed === 0 ? ICON.ok : ICON.warn} ${pc3.bold("captures ")} ${pc3.dim(`${delivered}, ${result.retained} retained, ${result.quarantined} quarantined, ${result.malformed} malformed`)}`);
|
|
16599
16711
|
if (result.fallbackAcknowledged > 0) {
|
|
16600
16712
|
console.log(` ${ICON.warn} ${pc3.bold("fallback ")} ${pc3.dim(`${result.fallbackAcknowledged} capture(s) delivered through the legacy Work Graph endpoint`)}`);
|
|
16601
16713
|
}
|
|
@@ -16612,6 +16724,7 @@ async function runSessionSummaryFlushCommand(options) {
|
|
|
16612
16724
|
acknowledged: 0,
|
|
16613
16725
|
retained: 0,
|
|
16614
16726
|
malformed: 0,
|
|
16727
|
+
quarantined: 0,
|
|
16615
16728
|
fallbackAcknowledged: 0,
|
|
16616
16729
|
skipped: "empty_queue"
|
|
16617
16730
|
};
|
|
@@ -16628,6 +16741,7 @@ async function runSessionSummaryFlushCommand(options) {
|
|
|
16628
16741
|
acknowledged: 0,
|
|
16629
16742
|
retained: 0,
|
|
16630
16743
|
malformed: 0,
|
|
16744
|
+
quarantined: 0,
|
|
16631
16745
|
fallbackAcknowledged: 0,
|
|
16632
16746
|
skipped: "already_running"
|
|
16633
16747
|
};
|
|
@@ -16670,11 +16784,12 @@ async function runSessionSummaryFlushCommand(options) {
|
|
|
16670
16784
|
command: "hooks flush",
|
|
16671
16785
|
attempted: String(result.attempted),
|
|
16672
16786
|
acknowledged: String(result.acknowledged),
|
|
16673
|
-
retained: String(result.retained)
|
|
16787
|
+
retained: String(result.retained),
|
|
16788
|
+
quarantined: String(result.quarantined)
|
|
16674
16789
|
});
|
|
16675
|
-
if (result.retained > 0) process.exitCode = 1;
|
|
16790
|
+
if (result.retained > 0 || result.malformed > 0) process.exitCode = 1;
|
|
16676
16791
|
if (options.json) {
|
|
16677
|
-
console.log(JSON.stringify({ ok: result.retained === 0, queueDir, ...result }, null, 2));
|
|
16792
|
+
console.log(JSON.stringify({ ok: result.retained === 0 && result.malformed === 0, queueDir, ...result }, null, 2));
|
|
16678
16793
|
return;
|
|
16679
16794
|
}
|
|
16680
16795
|
printSessionSummaryFlush(result);
|
|
@@ -18448,7 +18563,7 @@ async function main() {
|
|
|
18448
18563
|
initializeWizardSentry();
|
|
18449
18564
|
const program = new Command();
|
|
18450
18565
|
program.name("orgx-wizard").description("Add OrgX MCP configs, skills/rules, and companion plugins to your local AI tools.").showHelpAfterError();
|
|
18451
|
-
const pkgVersion = true ? "0.1.
|
|
18566
|
+
const pkgVersion = true ? "0.1.65" : void 0;
|
|
18452
18567
|
program.version(pkgVersion ?? "unknown", "-V, --version");
|
|
18453
18568
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
18454
18569
|
if (Boolean(actionCommand.optsWithGlobals().json)) return;
|
|
@@ -19492,4 +19607,4 @@ main().catch(async (error) => {
|
|
|
19492
19607
|
process.exitCode = 1;
|
|
19493
19608
|
});
|
|
19494
19609
|
//# sourceMappingURL=cli.js.map
|
|
19495
|
-
//# debugId=
|
|
19610
|
+
//# debugId=af54c3d7-9ef3-5d66-90dc-45a9ecb71d96
|