@gitroll/tacitt-cli 0.6.2 → 0.6.4
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/{agent-setup-Dv_mQ38P.mjs → agent-setup-C7iqLMYm.mjs} +2 -2
- package/dist/agent-setup-worker.mjs +5 -5
- package/dist/cli.mjs +9 -180
- package/dist/codex-title-worker.mjs +1 -1
- package/dist/configured-preview-worker.mjs +5 -5
- package/dist/configured-session-worker.mjs +5 -5
- package/dist/{frame-DGun31Uc.mjs → frame-BGFmADbg.mjs} +1 -1
- package/dist/{heap-BR8WjR25.mjs → heap-DQbsSUrB.mjs} +18 -55
- package/dist/inspection-worker.mjs +4 -4
- package/dist/job-D4N5Pe91.mjs +6284 -0
- package/dist/{locate-JYtFmKu-.mjs → locate-CNU4z9G1.mjs} +4 -0
- package/dist/{model-C1VzgKLi.mjs → model-CZeHzKif.mjs} +1 -1
- package/dist/operation-executor.mjs +3 -3
- package/dist/preview-worker.mjs +1 -1
- package/dist/privacy-validator.mjs +1 -1
- package/dist/{query-CQ6Tr5zC.mjs → query-BMvtisKu.mjs} +1413 -5502
- package/dist/{run-hQ_W2p_Y.mjs → run-u2EfHjz4.mjs} +4 -4
- package/dist/{src-JoT3L94j.mjs → src-BRwicVza.mjs} +6 -4
- package/dist/{src-CGFwLUd6.mjs → src-BgoSvnXe.mjs} +4 -4
- package/dist/{src--Ln5GHdz.mjs → src-DmSIVU7-.mjs} +130 -13
- package/dist/store-database-worker.mjs +1 -1
- package/dist/web/assets/index-CndETc8f.js +169 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/skills/tacitt/INDEX.md +1 -1
- package/skills/tacitt/SKILL.md +4 -2
- package/skills/tacitt/references/INDEX.md +2 -2
- package/skills/tacitt/references/commands.md +2 -0
- package/skills/tacitt/references/journey.md +3 -1
- package/skills/tacitt/references/remote-workers.md +6 -0
- package/skills/tacitt/references/send.md +3 -2
- package/skills/tacitt/scripts/INDEX.md +36 -36
- package/skills/tacitt/scripts/answer.mjs +41 -11
- package/skills/tacitt/scripts/journey-card-consolidation.d.mts +2 -0
- package/skills/tacitt/scripts/journey-card-consolidation.mjs +80 -5
- package/skills/tacitt/scripts/journey-card-values.d.mts +4 -0
- package/skills/tacitt/scripts/journey-card-values.mjs +21 -7
- package/skills/tacitt/scripts/journey-tasks.d.mts +1 -0
- package/skills/tacitt/scripts/journey-tasks.mjs +28 -12
- package/skills/tacitt/scripts/journey.mjs +3 -2
- package/dist/job-CYsjL4AT.mjs +0 -990
- package/dist/web/assets/index-C9LcK9ls.js +0 -169
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ln as sessionSchema } from "./locate-
|
|
2
|
-
import { t as createZstdFrameCheck$1 } from "./frame-
|
|
3
|
-
import "./src
|
|
4
|
-
import { a as isRecord } from "./model-
|
|
1
|
+
import { ln as sessionSchema } from "./locate-CNU4z9G1.mjs";
|
|
2
|
+
import { t as createZstdFrameCheck$1 } from "./frame-BGFmADbg.mjs";
|
|
3
|
+
import "./src-DmSIVU7-.mjs";
|
|
4
|
+
import { a as isRecord } from "./model-CZeHzKif.mjs";
|
|
5
5
|
import { constants } from "node:fs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { lstat, open, stat } from "node:fs/promises";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $n as detectStatic, An as createReplacementKey, Bn as nativeItems, En as walkNativeFields, Fn as entityDictionaryVersion, Gn as validateProfile, H as codePointLength, Hn as transformRecords, In as nativeParserVersion, Jn as validatePlan, Ln as redactionImplementationVersion, Mn as projectNativeRecord, Nn as parseNativeRecord, Pn as cleanupImplementationVersion, Qn as resolveLimits, Qt as safeCode, Un as frameRecords, V as bDigest, Vn as nativeText, Wn as retainedMainTextNodes, Xn as defaultLimits, Xt as ApplicationError, Zn as recordPointerLimits, _n as reviewRoles, bn as createSessionPreparation, c as textDigest, dr as fail$1, fn as nativeSourceIdentitySchema, fr as isProcessingCode, gn as mainReviewRole, hn as projectNativeReviewInput, in as sourceKey, ir as createEntityMatcher, j as bDuplicateShift, jn as sessionNonce, k as bBindingCap, lr as defaultDetectionLimits, mn as processNativeRecord, nn as reviewFamilies, nr as jsonSpans, o as reviewDigest, on as sourceSnapshotId, pn as withMandatoryCustomTerms, qn as buildPlan, rr as agentContextLocation, tn as familySelected, ur as ProcessingError, vn as createSentenceContext, wn as createDetectionSummary, x as createBAnalysisUnits, xn as bindInspection, yn as renderNative, zn as nativeField } from "./locate-
|
|
2
|
-
import { t as createZstdFrameCheck } from "./frame-
|
|
3
|
-
import {
|
|
1
|
+
import { $n as detectStatic, An as createReplacementKey, Bn as nativeItems, En as walkNativeFields, Fn as entityDictionaryVersion, Gn as validateProfile, H as codePointLength, Hn as transformRecords, In as nativeParserVersion, Jn as validatePlan, Ln as redactionImplementationVersion, Mn as projectNativeRecord, Nn as parseNativeRecord, Pn as cleanupImplementationVersion, Qn as resolveLimits, Qt as safeCode, Un as frameRecords, V as bDigest, Vn as nativeText, Wn as retainedMainTextNodes, Xn as defaultLimits, Xt as ApplicationError, Zn as recordPointerLimits, _n as reviewRoles, bn as createSessionPreparation, c as textDigest, dr as fail$1, fn as nativeSourceIdentitySchema, fr as isProcessingCode, gn as mainReviewRole, hn as projectNativeReviewInput, in as sourceKey, ir as createEntityMatcher, j as bDuplicateShift, jn as sessionNonce, k as bBindingCap, lr as defaultDetectionLimits, mn as processNativeRecord, nn as reviewFamilies, nr as jsonSpans, o as reviewDigest, on as sourceSnapshotId, pn as withMandatoryCustomTerms, qn as buildPlan, rr as agentContextLocation, tn as familySelected, ur as ProcessingError, vn as createSentenceContext, wn as createDetectionSummary, x as createBAnalysisUnits, xn as bindInspection, yn as renderNative, zn as nativeField } from "./locate-CNU4z9G1.mjs";
|
|
2
|
+
import { t as createZstdFrameCheck } from "./frame-BGFmADbg.mjs";
|
|
3
|
+
import { F as sourceIdentityEvidence, I as withSourceEvidence, In as bWordBounded, L as agentSetupKey, Mn as bContainment, Nn as bExceptionRanges, Nr as agentSourcePathSegment, Pr as agentSourceSchema, at as defaultAgentSetupInclusion, di as approvedTreatmentSchema, fr as resolveSourceSelection, gi as staticCatalogRef, it as classifyAgentSetup, kt as metadataProcessingVersion, li as sourceChangePolicy } from "./src-DmSIVU7-.mjs";
|
|
4
4
|
import { constants } from "node:fs";
|
|
5
5
|
import { link, lstat, mkdir, open, readFile, readdir, realpath, rm, rmdir, stat, unlink } from "node:fs/promises";
|
|
6
6
|
import { execFile, fork, spawn } from "node:child_process";
|
|
@@ -15501,7 +15501,8 @@ async function* configuredSessionUploads(input, identities, signal) {
|
|
|
15501
15501
|
const text = await readMetadata(entry, signal);
|
|
15502
15502
|
if (Buffer.byteLength(text) !== description.byteLength || createHash("sha256").update(text).digest("hex") !== description.sha256) fail("ARTIFACT_INVALID_ARCHIVE");
|
|
15503
15503
|
const { version: _, ...facts } = validateConfiguredSourceMetadata(strictJson(text, metadataLimitBytes), workspace);
|
|
15504
|
-
const
|
|
15504
|
+
const native = session.parts[0]?.native;
|
|
15505
|
+
const nativeSessionId = native?.sessionId ?? session.sourceSessionId;
|
|
15505
15506
|
if (!nativeSessionId?.trim() && !identity.relativePath) fail("ARTIFACT_IDENTITY_MISMATCH");
|
|
15506
15507
|
const metadata = {
|
|
15507
15508
|
workspace: facts,
|
|
@@ -15557,6 +15558,7 @@ async function* configuredSessionUploads(input, identities, signal) {
|
|
|
15557
15558
|
...content,
|
|
15558
15559
|
metadata,
|
|
15559
15560
|
nativeSessionId,
|
|
15561
|
+
...session.harness === "claude" && native?.role === "worker" ? { workerIdentity: { agentId: native.agentId } } : {},
|
|
15560
15562
|
relativePath: identity.relativePath,
|
|
15561
15563
|
harness: session.harness,
|
|
15562
15564
|
lastAt: identity.lastAt,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Bn as nativeItems, En as walkNativeFields, Nn as parseNativeRecord, Rn as nativeBoolean, Vn as nativeText, Wn as retainedMainTextNodes, Xn as defaultLimits, an as observeSource, on as sourceSnapshotId, ur as ProcessingError, zn as nativeField } from "./locate-
|
|
2
|
-
import {
|
|
3
|
-
import { a as isRecord, i as errorCode, n as checkDiscoveryAbort, o as unresolvedMetadata, r as discoveryBounds, t as DiscoveryWarnings } from "./model-
|
|
4
|
-
import { c as previewLimits, d as checkOpenSource, f as checkSource, h as openSource, i as pageFits, l as previewSourceVersion, m as noSymlinks, p as fileSnapshot, r as previewHeapLimits, s as previewMessageSchema, u as createZstdFrameCheck } from "./run-
|
|
1
|
+
import { Bn as nativeItems, En as walkNativeFields, Nn as parseNativeRecord, Rn as nativeBoolean, Vn as nativeText, Wn as retainedMainTextNodes, Xn as defaultLimits, an as observeSource, on as sourceSnapshotId, ur as ProcessingError, zn as nativeField } from "./locate-CNU4z9G1.mjs";
|
|
2
|
+
import { At as nativeAdapterVersions, nt as reviewInventory, oi as gitMetadataBudgetBytes } from "./src-DmSIVU7-.mjs";
|
|
3
|
+
import { a as isRecord, i as errorCode, n as checkDiscoveryAbort, o as unresolvedMetadata, r as discoveryBounds, t as DiscoveryWarnings } from "./model-CZeHzKif.mjs";
|
|
4
|
+
import { c as previewLimits, d as checkOpenSource, f as checkSource, h as openSource, i as pageFits, l as previewSourceVersion, m as noSymlinks, p as fileSnapshot, r as previewHeapLimits, s as previewMessageSchema, u as createZstdFrameCheck } from "./run-u2EfHjz4.mjs";
|
|
5
5
|
import { a as titleHintLimits, n as titleHeapLimits, o as titleInputSchema, r as decodeTitleError, s as titleReplySchema } from "./heap-1FYhGds4.mjs";
|
|
6
6
|
import { constants } from "node:fs";
|
|
7
7
|
import { lstat, open, opendir, readFile, readdir, realpath, stat } from "node:fs/promises";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as bCountSchema, $n as detectStatic, A as bDuplicateMirror, B as bEvidenceReader, Bt as sessionPeriodSchema, C as validateBUnit, Cn as inspectionSemanticVersions, Ct as cardsSubmitSchema, D as uncoveredBObligations, Dn as createStaticProcessor, Dt as privacyResolveSchema, E as bLiterals, Et as packageConfirmActionSchema, Fn as entityDictionaryVersion, Ft as termTypeInfo, G as subtractBRanges, Gn as validateProfile, H as codePointLength, Ht as journeyProfileAddressActionSchema, I as bIssue, It as termTypeSchema, J as bRetainedGroupSchema, Jn as validatePlan, Jt as respondProfileLinks, Kn as orderProfile, L as bOverlaps, Lt as termTypes, M as bLegacyBindings, Mt as reviewTermsResultSchema, N as bUnitFragments, Nt as termAssessmentSchema, O as indexBRanges, On as staticDefaults, Ot as privacyTermKey, P as bAdoptedObligations, Pn as cleanupImplementationVersion, Pt as termOverrideValueSchema, Q as bAnchorSchema, Qt as safeCode, R as unownedBObligations, Rt as deselectOutsidePeriod, S as validateBFields, Sn as currentDetectorVersion, St as cardsConfirmActionSchema, T as bLiteralTerms, Tn as gapReasons, Tt as emptyJourneyPrivacy, U as codePointSlice, Ut as journeyProfileLinksActionSchema, V as bDigest, Vt as emptyJourneyProfile, W as createCodePointIndex, X as bSessionDecisionSchema, Xt as ApplicationError, Y as bReviewSubmissionSchema, Yn as copyData, Yt as classificationTitleMaskSchema, Z as bTermSchema, Zt as UnfinishedJourneyError, _ as semanticFindingSchema, _t as hideConfirmSchema, a as reviewChunkSchema, an as observeSource, at as journeyExceptionSchema, b as validateBReview, bt as journeyConfigurationSchema, c as textDigest, cn as inventorySchema, cr as scalarBefore, ct as journeyPreferenceScopeSchema, dt as nativeJourneySchema, en as familyNeedsReview, et as bIdSchema, f as reviewAlignmentAuditSchema, fn as nativeSourceIdentitySchema, ft as journeyGuidanceSchema, g as validateReviewAlignment, h as reviewFindingsDigest, ht as journeyDescribeSchema, i as reviewBatchSchema, in as sourceKey, ir as createEntityMatcher, it as journeyDigestSchema, jt as reviewTermsInputSchema, kn as staticOptions, l as validateReview, lr as defaultDetectionLimits, lt as journeyProjectTypeSchema, m as reviewAlignmentSchema, mt as delegatedDecisionSchema, n as compileBFindings, nn as reviewFamilies, nt as journeyAccessSchema, o as reviewDigest, on as sourceSnapshotId, ot as journeyIdSchema, p as reviewAlignmentInputSchema, pt as journeyInstructionInputSchema, q as bRepresentationSchema, r as reviewBatchChunks, rn as sourceGraph, rt as journeyChoiceSchema, s as reviewSubmitSchema, sn as fileIdentitySchema, sr as scalarAfter, st as journeyKindSchema, tn as familySelected, tr as staticCategories, tt as bMethod, u as findingReferenceKey, un as sourcePartSchema, ut as journeyWorkTypeSchema, vt as hidePlanInputSchema, w as bLiteralAdmitted, x as createBAnalysisUnits, xt as cardAnswerActionSchema, y as validateBClassification, yt as hidePlanResourceSchema, z as bAnchorKey } from "./locate-
|
|
1
|
+
import { $ as bCountSchema, $n as detectStatic, A as bDuplicateMirror, B as bEvidenceReader, Bt as sessionPeriodSchema, C as validateBUnit, Cn as inspectionSemanticVersions, Ct as cardsSubmitSchema, D as uncoveredBObligations, Dn as createStaticProcessor, Dt as privacyResolveSchema, E as bLiterals, Et as packageConfirmActionSchema, Fn as entityDictionaryVersion, Ft as termTypeInfo, G as subtractBRanges, Gn as validateProfile, H as codePointLength, Ht as journeyProfileAddressActionSchema, I as bIssue, It as termTypeSchema, J as bRetainedGroupSchema, Jn as validatePlan, Jt as respondProfileLinks, Kn as orderProfile, L as bOverlaps, Lt as termTypes, M as bLegacyBindings, Mt as reviewTermsResultSchema, N as bUnitFragments, Nt as termAssessmentSchema, O as indexBRanges, On as staticDefaults, Ot as privacyTermKey, P as bAdoptedObligations, Pn as cleanupImplementationVersion, Pt as termOverrideValueSchema, Q as bAnchorSchema, Qt as safeCode, R as unownedBObligations, Rt as deselectOutsidePeriod, S as validateBFields, Sn as currentDetectorVersion, St as cardsConfirmActionSchema, T as bLiteralTerms, Tn as gapReasons, Tt as emptyJourneyPrivacy, U as codePointSlice, Ut as journeyProfileLinksActionSchema, V as bDigest, Vt as emptyJourneyProfile, W as createCodePointIndex, X as bSessionDecisionSchema, Xt as ApplicationError, Y as bReviewSubmissionSchema, Yn as copyData, Yt as classificationTitleMaskSchema, Z as bTermSchema, Zt as UnfinishedJourneyError, _ as semanticFindingSchema, _t as hideConfirmSchema, a as reviewChunkSchema, an as observeSource, at as journeyExceptionSchema, b as validateBReview, bt as journeyConfigurationSchema, c as textDigest, cn as inventorySchema, cr as scalarBefore, ct as journeyPreferenceScopeSchema, dt as nativeJourneySchema, en as familyNeedsReview, et as bIdSchema, f as reviewAlignmentAuditSchema, fn as nativeSourceIdentitySchema, ft as journeyGuidanceSchema, g as validateReviewAlignment, h as reviewFindingsDigest, ht as journeyDescribeSchema, i as reviewBatchSchema, in as sourceKey, ir as createEntityMatcher, it as journeyDigestSchema, jt as reviewTermsInputSchema, kn as staticOptions, l as validateReview, lr as defaultDetectionLimits, lt as journeyProjectTypeSchema, m as reviewAlignmentSchema, mt as delegatedDecisionSchema, n as compileBFindings, nn as reviewFamilies, nt as journeyAccessSchema, o as reviewDigest, on as sourceSnapshotId, ot as journeyIdSchema, p as reviewAlignmentInputSchema, pt as journeyInstructionInputSchema, q as bRepresentationSchema, r as reviewBatchChunks, rn as sourceGraph, rt as journeyChoiceSchema, s as reviewSubmitSchema, sn as fileIdentitySchema, sr as scalarAfter, st as journeyKindSchema, tn as familySelected, tr as staticCategories, tt as bMethod, u as findingReferenceKey, un as sourcePartSchema, ut as journeyWorkTypeSchema, vt as hidePlanInputSchema, w as bLiteralAdmitted, x as createBAnalysisUnits, xt as cardAnswerActionSchema, y as validateBClassification, yt as hidePlanResourceSchema, z as bAnchorKey } from "./locate-CNU4z9G1.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { createHash, createHmac, createSecretKey, randomUUID } from "node:crypto";
|
|
4
4
|
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
@@ -1591,8 +1591,19 @@ const sendItemSchema = z.object({
|
|
|
1591
1591
|
/** Write-ahead upload intent; completion probes recover an unacknowledged blob PUT. */
|
|
1592
1592
|
sessionUpload: z.object({
|
|
1593
1593
|
key: journeyDigestSchema,
|
|
1594
|
-
sha256: journeyDigestSchema
|
|
1594
|
+
sha256: journeyDigestSchema,
|
|
1595
|
+
/** Byte-started transport/server failures charged to this Send. */
|
|
1596
|
+
attempt: count$13.optional(),
|
|
1597
|
+
/** Transient failures used only to schedule capped zero-byte retries. */
|
|
1598
|
+
retryCount: count$13.optional(),
|
|
1599
|
+
bytesAttempted: count$13.optional(),
|
|
1600
|
+
bytesAcknowledged: count$13.optional(),
|
|
1601
|
+
contentLength: count$13.optional(),
|
|
1602
|
+
bytesSent: count$13.optional(),
|
|
1603
|
+
nextAttemptAt: z.iso.datetime().optional()
|
|
1595
1604
|
}).strict().nullable().optional(),
|
|
1605
|
+
/** Local key-rule marker; current membership replays need no artifact migration inspection. */
|
|
1606
|
+
sessionMembershipKeyVersion: z.literal(2).optional(),
|
|
1596
1607
|
/** Exact write-ahead membership request; never rebase it after an uncertain PUT. */
|
|
1597
1608
|
sessionMembership: z.object({
|
|
1598
1609
|
workId: journeyIdSchema,
|
|
@@ -1635,6 +1646,24 @@ const sendItemSchema = z.object({
|
|
|
1635
1646
|
error: z.string().nullable()
|
|
1636
1647
|
}).strict();
|
|
1637
1648
|
const journeySendSchema = z.object({
|
|
1649
|
+
/** Safe identity of conflicting session and Works. */
|
|
1650
|
+
contentConflict: z.object({
|
|
1651
|
+
workIds: z.array(journeyIdSchema).min(1),
|
|
1652
|
+
sessionKey: journeyDigestSchema
|
|
1653
|
+
}).strict().optional(),
|
|
1654
|
+
/** The Send click authorization before artifact-bound confirmation. */
|
|
1655
|
+
request: z.object({
|
|
1656
|
+
requestedAt: z.iso.datetime(),
|
|
1657
|
+
hostId: journeyIdSchema,
|
|
1658
|
+
subject: z.string().nullable(),
|
|
1659
|
+
source: z.enum(["conversation", "panel"]),
|
|
1660
|
+
scopeDigest: journeyDigestSchema,
|
|
1661
|
+
included: z.array(z.object({
|
|
1662
|
+
workId: journeyIdSchema,
|
|
1663
|
+
access: z.string()
|
|
1664
|
+
}).strict()),
|
|
1665
|
+
omittedWorkIds: z.array(journeyIdSchema)
|
|
1666
|
+
}).strict().optional(),
|
|
1638
1667
|
/** Passport advertised parallel-completes when this Send was confirmed (ADR 0235). */
|
|
1639
1668
|
parallelCompletes: z.literal(true).optional(),
|
|
1640
1669
|
id: journeyIdSchema,
|
|
@@ -1644,6 +1673,7 @@ const journeySendSchema = z.object({
|
|
|
1644
1673
|
subject: z.string().nullable(),
|
|
1645
1674
|
confirmedAt: z.iso.datetime().nullable(),
|
|
1646
1675
|
status: z.enum([
|
|
1676
|
+
"awaiting-packaging",
|
|
1647
1677
|
"prepared",
|
|
1648
1678
|
"sign-in",
|
|
1649
1679
|
"review",
|
|
@@ -2122,6 +2152,16 @@ function assertJourneyPrivacyReady(state, packaging = false) {
|
|
|
2122
2152
|
function assertCardsAllowed(state) {
|
|
2123
2153
|
if (!state.consent || state.scope.status !== "confirmed") throw new ApplicationError("SCOPE_NOT_READY");
|
|
2124
2154
|
}
|
|
2155
|
+
const identityValue = (value) => value.normalize("NFC").trim().toLowerCase();
|
|
2156
|
+
/**
|
|
2157
|
+
* ADR 0251: the person's own values, journey-wide: every active own-identity term and every
|
|
2158
|
+
* own-identity value rule, compared by NFC, trimmed and lowercased. A people value in this set
|
|
2159
|
+
* belongs with the person's own identity. Card settlement (`ownIdentityValues` in the Skill's
|
|
2160
|
+
* journey-card-values.mjs) mirrors this rule on the agent view; a parity test pins both.
|
|
2161
|
+
*/
|
|
2162
|
+
function ownIdentityValues(state) {
|
|
2163
|
+
return new Set([...activePrivacyTerms(state), ...state.valueOverrides ?? []].filter((term) => term.type === "own-identity").map((term) => identityValue(term.value)));
|
|
2164
|
+
}
|
|
2125
2165
|
/**
|
|
2126
2166
|
* D3: a batch covers only Pending values no card covers yet. Values added to an existing card
|
|
2127
2167
|
* take its answer at once when the person already answered it.
|
|
@@ -2134,17 +2174,28 @@ function appendDecisionCards(state, input) {
|
|
|
2134
2174
|
const extend = input.extend ?? [];
|
|
2135
2175
|
const covered = [...input.cards.flatMap((card) => card.termKeys), ...extend.flatMap((item) => item.termKeys)];
|
|
2136
2176
|
if (!covered.length || state.privacy.cards.length + input.cards.length > 20 || new Set(input.cards.map((card) => card.id)).size !== input.cards.length || input.cards.some((card) => existing.has(card.id)) || new Set(extend.map((item) => item.cardId)).size !== extend.length || extend.some((item) => !existing.has(item.cardId)) || new Set(covered).size !== covered.length || covered.some((key) => !open.has(key))) throw new ApplicationError("INVALID_SELECTION");
|
|
2177
|
+
const terms = new Map(state.privacy.terms.map((term) => [privacyTermKey(term), term]));
|
|
2178
|
+
const ownValues = ownIdentityValues(state);
|
|
2179
|
+
for (const extension of extend) {
|
|
2180
|
+
const ownCard = !!state.privacy.cards.find((item) => item.id === extension.cardId)?.termKeys.some((key) => terms.get(key)?.type === "own-identity");
|
|
2181
|
+
if (extension.termKeys.some((key) => {
|
|
2182
|
+
const term = terms.get(key);
|
|
2183
|
+
return term?.type === "own-identity" ? !ownCard : term?.type === "people" && ownCard && !ownValues.has(identityValue(term.value));
|
|
2184
|
+
})) throw new ApplicationError("INVALID_SELECTION");
|
|
2185
|
+
}
|
|
2137
2186
|
const additions = new Map(extend.map((item) => [item.cardId, item.termKeys]));
|
|
2187
|
+
const inherited = new Map(extend.flatMap((item) => item.termKeys.map((key) => [key, item.cardId])));
|
|
2138
2188
|
return applyCardAnswers({
|
|
2139
2189
|
...retirePrivacyArtifacts(state),
|
|
2140
2190
|
privacy: {
|
|
2141
2191
|
...state.privacy,
|
|
2142
2192
|
cards: [...state.privacy.cards.map((card) => {
|
|
2143
2193
|
const added = additions.get(card.id);
|
|
2144
|
-
|
|
2194
|
+
if (!added) return card;
|
|
2195
|
+
return {
|
|
2145
2196
|
...card,
|
|
2146
2197
|
termKeys: [...card.termKeys, ...added]
|
|
2147
|
-
}
|
|
2198
|
+
};
|
|
2148
2199
|
}), ...input.cards.map((card) => ({
|
|
2149
2200
|
...card,
|
|
2150
2201
|
answer: null
|
|
@@ -2152,7 +2203,7 @@ function appendDecisionCards(state, input) {
|
|
|
2152
2203
|
confirmedAnswersRevision: input.cards.length ? null : state.privacy.confirmedAnswersRevision,
|
|
2153
2204
|
packageApproval: null
|
|
2154
2205
|
}
|
|
2155
|
-
});
|
|
2206
|
+
}, inherited);
|
|
2156
2207
|
}
|
|
2157
2208
|
function publishDecisionCards(state, input) {
|
|
2158
2209
|
if (input.mode === "append") return appendDecisionCards(state, input);
|
|
@@ -2249,7 +2300,7 @@ function normalizeValues(state, input) {
|
|
|
2249
2300
|
const disposition = forcedHidden ? "hidden" : override ? override.choice === "hide" ? "hidden" : "keep" : ownKeep ? "keep" : hideCard || same.some((term) => term.disposition === "hidden") ? "hidden" : "keep";
|
|
2250
2301
|
if (new Set(same.map((term) => term.disposition)).size > 1 || forcedHidden || override || same.some((term) => term.disposition !== disposition)) for (const term of same) normalized.set(privacyTermKey(term), {
|
|
2251
2302
|
disposition,
|
|
2252
|
-
reason: disposition === "hidden" && term.disposition !== "hidden" ? hideCard && !same.some((item) => item.disposition === "hidden") ? "A Hide card answer covering this value takes precedence over Keep." : "A Hidden judgment for this NFC keyword takes precedence across term types." : ownKeep && term.disposition !== "keep" ? OWN_PROJECT_KEEP_REASON : term.reason
|
|
2303
|
+
reason: override && !forcedHidden ? `Your value rule takes precedence: ${override.choice === "hide" ? "Hide" : "Keep"}.` : disposition === "hidden" && term.disposition !== "hidden" ? hideCard && !same.some((item) => item.disposition === "hidden") ? "A Hide card answer covering this value takes precedence over Keep." : "A Hidden judgment for this NFC keyword takes precedence across term types." : ownKeep && term.disposition !== "keep" ? OWN_PROJECT_KEEP_REASON : term.reason
|
|
2253
2304
|
});
|
|
2254
2305
|
}
|
|
2255
2306
|
return input.map((term) => {
|
|
@@ -2264,21 +2315,22 @@ function normalizeValues(state, input) {
|
|
|
2264
2315
|
* The CLI applies card answers itself (D3): Hide makes every covered value Hidden and Keep keeps
|
|
2265
2316
|
* it, an unticked value takes the other option, then one value gets one outcome.
|
|
2266
2317
|
*/
|
|
2267
|
-
function applyCardAnswers(state) {
|
|
2318
|
+
function applyCardAnswers(state, inherited) {
|
|
2268
2319
|
if (!state.privacy.cards.some((card) => card.answer)) return state;
|
|
2269
2320
|
const hide = answeredKeys(state, "hide");
|
|
2270
2321
|
const keep = answeredKeys(state, "keep");
|
|
2271
2322
|
const terms = state.privacy.terms.map((term) => {
|
|
2272
2323
|
const key = privacyTermKey(term);
|
|
2324
|
+
const cardId = inherited?.get(key);
|
|
2273
2325
|
if (hide.has(key) && term.disposition !== "hidden") return {
|
|
2274
2326
|
...term,
|
|
2275
2327
|
disposition: "hidden",
|
|
2276
|
-
reason: "Hidden by your decision card answer."
|
|
2328
|
+
reason: cardId ? `Inherited from decision card ${cardId}: Hide.` : "Hidden by your decision card answer."
|
|
2277
2329
|
};
|
|
2278
2330
|
if (keep.has(key) && !hide.has(key) && term.disposition !== "keep") return {
|
|
2279
2331
|
...term,
|
|
2280
2332
|
disposition: "keep",
|
|
2281
|
-
reason: "Kept by your decision card answer."
|
|
2333
|
+
reason: cardId ? `Inherited from decision card ${cardId}: Keep.` : "Kept by your decision card answer."
|
|
2282
2334
|
};
|
|
2283
2335
|
return term;
|
|
2284
2336
|
});
|
|
@@ -6926,12 +6978,21 @@ const sendChoiceSchema = sendActionSchema.extend({
|
|
|
6926
6978
|
scopeVersion: version$1
|
|
6927
6979
|
}).strict()])
|
|
6928
6980
|
}).strict();
|
|
6981
|
+
/** Explicit human Send authorization, recorded before any output exists. */
|
|
6982
|
+
const sendRequestSchema = sendPrepareSchema.extend({
|
|
6983
|
+
included: z.array(z.object({
|
|
6984
|
+
workId: journeyIdSchema,
|
|
6985
|
+
access: z.string()
|
|
6986
|
+
}).strict()).min(1),
|
|
6987
|
+
omittedWorkIds: z.array(journeyIdSchema)
|
|
6988
|
+
}).strict();
|
|
6929
6989
|
//#endregion
|
|
6930
6990
|
//#region packages/application/src/journey/send/service.ts
|
|
6931
6991
|
/** Public snapshots omit local source candidates and private scoped exception values. */
|
|
6932
6992
|
function safeJourneySender(sender, now) {
|
|
6933
6993
|
const safe = (result) => ({
|
|
6934
6994
|
...withoutSnapshot(result),
|
|
6995
|
+
...sender.scopeValid ? { scopeValid: sender.scopeValid(result) } : {},
|
|
6935
6996
|
journey: journeyView(result.journey, now()),
|
|
6936
6997
|
send: result.send && {
|
|
6937
6998
|
...result.send,
|
|
@@ -6953,6 +7014,9 @@ function safeJourneySender(sender, now) {
|
|
|
6953
7014
|
});
|
|
6954
7015
|
return result ? safe(result) : null;
|
|
6955
7016
|
},
|
|
7017
|
+
async request(input, source = "conversation") {
|
|
7018
|
+
return safe(await sender.request(input, source));
|
|
7019
|
+
},
|
|
6956
7020
|
async prepare(input, signal = new AbortController().signal) {
|
|
6957
7021
|
return safe(await sender.prepare(input, signal));
|
|
6958
7022
|
},
|
|
@@ -12507,8 +12571,11 @@ function semanticGroupKey(kind, group, condition) {
|
|
|
12507
12571
|
}
|
|
12508
12572
|
//#endregion
|
|
12509
12573
|
//#region packages/application/src/journey/configuration.ts
|
|
12510
|
-
/**
|
|
12511
|
-
|
|
12574
|
+
/**
|
|
12575
|
+
* Null deliberately selects the initial configuration frozen in the source plan. A caller that
|
|
12576
|
+
* already holds that immutable plan passes it; the pending-Hide fence still applies.
|
|
12577
|
+
*/
|
|
12578
|
+
async function activeJourneyTerms(storage, state, loadedPlan) {
|
|
12512
12579
|
if (state.pendingHideId) throw new ApplicationError("SCOPE_NOT_READY");
|
|
12513
12580
|
if (state.configurationId) {
|
|
12514
12581
|
const configuration = (await storage.resources({
|
|
@@ -12519,7 +12586,7 @@ async function activeJourneyTerms(storage, state) {
|
|
|
12519
12586
|
if (configuration?.kind !== "configuration") throw new ApplicationError("CORRUPTED_STATE");
|
|
12520
12587
|
return configuration.sensitiveTerms;
|
|
12521
12588
|
}
|
|
12522
|
-
const plan = (await storage.resources({
|
|
12589
|
+
const plan = loadedPlan ?? (await storage.resources({
|
|
12523
12590
|
journeyId: state.journeyId,
|
|
12524
12591
|
kind: "plan"
|
|
12525
12592
|
}))[0];
|
|
@@ -12679,6 +12746,56 @@ function reviseGroupMembership(state, action, members, preferenceScope) {
|
|
|
12679
12746
|
};
|
|
12680
12747
|
}
|
|
12681
12748
|
//#endregion
|
|
12749
|
+
//#region packages/application/src/journey/placement/evidence.ts
|
|
12750
|
+
/** The denominator includes unresolved observations; missing evidence cannot increase confidence. */
|
|
12751
|
+
function dominant(value, signal) {
|
|
12752
|
+
if (!Number.isSafeInteger(value.total) || value.total < 0) throw new ApplicationError("INVALID_ARGUMENTS");
|
|
12753
|
+
const ids = /* @__PURE__ */ new Set();
|
|
12754
|
+
let accounted = 0;
|
|
12755
|
+
for (const item of value.repositories) {
|
|
12756
|
+
if (!item.id || ids.has(item.id) || !Number.isSafeInteger(item.count) || item.count <= 0) throw new ApplicationError("INVALID_ARGUMENTS");
|
|
12757
|
+
ids.add(item.id);
|
|
12758
|
+
accounted += item.count;
|
|
12759
|
+
}
|
|
12760
|
+
if (accounted > value.total) throw new ApplicationError("INVALID_ARGUMENTS");
|
|
12761
|
+
if (!value.complete) return null;
|
|
12762
|
+
const sorted = value.repositories.toSorted((a, b) => b.count - a.count || a.id.localeCompare(b.id));
|
|
12763
|
+
const first = sorted[0], second = sorted[1];
|
|
12764
|
+
if (!first || !value.total || first.count === second?.count) return null;
|
|
12765
|
+
const share = first.count / value.total;
|
|
12766
|
+
if (share < .3) return null;
|
|
12767
|
+
return {
|
|
12768
|
+
repositoryId: first.id,
|
|
12769
|
+
signal,
|
|
12770
|
+
confidence: share >= .6 ? "high" : "medium",
|
|
12771
|
+
matched: first.count,
|
|
12772
|
+
total: value.total,
|
|
12773
|
+
otherRepositoryIds: sorted.slice(1).map((item) => item.id)
|
|
12774
|
+
};
|
|
12775
|
+
}
|
|
12776
|
+
/** Ray section 3: stop at the first deciding signal, then leave semantic fallback to the agent. */
|
|
12777
|
+
function chooseCheapPlacement(signals) {
|
|
12778
|
+
const paths = dominant(signals.paths, "paths");
|
|
12779
|
+
if (paths) return paths;
|
|
12780
|
+
const commands = dominant(signals.commands, "cwd");
|
|
12781
|
+
if (commands) return commands;
|
|
12782
|
+
for (const signal of ["git", "name"]) {
|
|
12783
|
+
const candidates = [...new Set(signal === "git" ? signals.git : signals.names)];
|
|
12784
|
+
if (candidates.length !== 1) continue;
|
|
12785
|
+
const repositoryId = candidates[0];
|
|
12786
|
+
if (!repositoryId) throw new ApplicationError("INVALID_ARGUMENTS");
|
|
12787
|
+
return {
|
|
12788
|
+
repositoryId,
|
|
12789
|
+
signal: signal === "git" ? "git" : "name",
|
|
12790
|
+
confidence: "high",
|
|
12791
|
+
matched: 1,
|
|
12792
|
+
total: 1,
|
|
12793
|
+
otherRepositoryIds: []
|
|
12794
|
+
};
|
|
12795
|
+
}
|
|
12796
|
+
return null;
|
|
12797
|
+
}
|
|
12798
|
+
//#endregion
|
|
12682
12799
|
//#region packages/application/src/journey/b/reconstruct.ts
|
|
12683
12800
|
function reconstructBFields(inputs) {
|
|
12684
12801
|
const units = inputs.map(validateBUnit).sort((left, right) => left.ordinal - right.ordinal);
|
|
@@ -13295,4 +13412,4 @@ function equivalenceDuplicates(batch) {
|
|
|
13295
13412
|
return bindings.sort();
|
|
13296
13413
|
}
|
|
13297
13414
|
//#endregion
|
|
13298
|
-
export {
|
|
13415
|
+
export { settingsBatchSchema as $, reviewTransportBytes as $n, journeyPreviewSchema as $r, projectPreparationProgress as $t, deviceAuthorizationSchema as A, maximumHideIndexTokens as An, staticReviewDigest as Ar, nativeAdapterVersions as At, inspectionStartSchema as B, confirmedHideTerms as Bn, sendResolutionSchema as Br, classificationWorks as Bt, rebindReviewOverlay as C, confirmedHideDeltaSchema as Cn, applyCardAnswers as Cr, sendPrepareSchema as Ct, staticallyHiddenFindings as D, termHideAdditions as Dn, nativeGetSchema as Dr, currentJourneyAdapters as Dt, guardedFindingText as E, settleConfirmedHides as En, nativeEventsSchema as Er, settleCorrections as Et, sourceIdentityEvidence as F, bTermMatcher as Fn, agentSourcesSchema as Fr, journeyBatchReadSchema as Ft, validateInspectionClaim as G, retireWorkDescription as Gn, isReadingComplete as Gr, journeyContextSchema as Gt, validateInspectionBatches as H, journeyConfirmedHides as Hn, hasCompleteWorkDescription as Hr, newJourneyWork as Ht, withSourceEvidence as I, bWordBounded as In, journeySendSchema as Ir, journeyReviewStorageQuerySchema as It, validateInspectionInputs as J, workCorrectionBinding as Jn, selectedWorks as Jr, hidePublishSchema as Jt, validateInspectionFence as K, workDecisionDigest as Kn, isSelectedWork as Kr, hideBeginSchema as Kt, agentSetupKey as L, confirmedHideGroupIds as Ln, sendArtifactSchema as Lr, applyClassificationProposal as Lt, profileUrlMatchesIdentity as M, bContainment as Mn, staticSessionResourceSchema as Mr, validateAttemptAppend as Mt, readAccountAvatarUrl as N, bExceptionRanges as Nn, agentSourcePathSegment as Nr, journeyGuidance as Nt, createAccount as O, addHideIndexTokens as On, nativeRespondSchema as Or, obsoleteJourney as Ot, storedCredentialSchema as P, bMaskedHits as Pn, agentSourceSchema as Pr, applyClassification as Pt, inspectionInputs as Q, reviewRepairResourceSchema as Qn, journeyFindingsSchema as Qr, journeyPolicyRespondSchema as Qt, createApplication as R, confirmedHideKey as Rn, sendReceiptSchema as Rr, classificationCommitSchema as Rt, rebindReviewAlignment as S, confirmedHideAdditions as Sn, journeyClassificationSessionsSchema as Sr, sendChoiceSchema as St, reviewBatchReuse as T, renderedHideValue as Tn, privacyDecisionDigest as Tr, sendStartSchema as Tt, validateInspectionRequest as U, maskedHitsStale as Un, isClassifying as Ur, reviewCompileSchema as Ut, validateInspectionBatch as V, dictionaryHides as Vn, sendSettingsSchema as Vr, retireScanGeneration as Vt, inspectionQuerySchema as W, syncTermGroups as Wn, isIncludedWork as Wr, journeyContextQuerySchema as Wt, validateInspectionContribution as X, reviewCandidateResourceSchema as Xn, mergePrivacyTerms as Xr, journeySearchSaveSchema as Xt, validateInspectionQuery as Y, reviewCandidateInputSchema as Yn, withReadingProgress as Yr, journeySearchResultSchema as Yt, validateDetectionSummary as Z, reviewRepairInputSchema as Zn, journeyFindingImpactSchema as Zr, searchScopeDigest as Zt, changeJourney as _, sessionUsefulnessInputSchema as _n, emptyPreparationFacts as _r, emptyTermsRevision as _t, bCrossSegmentReviewSchema as a, selectionSchema as ai, reviewAttemptResourceSchema as an, scanPreparationDigest as ar, defaultAgentSetupInclusion as at, isGenericPublicTerm as b, journeyCommitSchema as bn, preparationStartSchema as br, replaceSensitiveTermsSchema as bt, reconstructBFields as c, stateSchema as ci, sessionReconcileInputSchema as cn, scanGitSeedsResource as cr, resolveFailureLocation as ct, resolveGroupSplit as d, approvedTreatmentSchema as di, sessionRereadInputSchema as dn, validateScanExclusion as dr, manualUploadBindingSchema as dt, journeyRenderInputSchema as ei, journeyResourceQuerySchema as en, bReviewDigest as er, settingsQuerySchema as et, selectedValueMembers as f, effectiveTreatmentSchema as fi, sessionRereadResourceSchema as fn, resolveSourceSelection as fr, manualUploadChoiceSchema as ft, semanticGroupKey as g, staticCatalogRef as gi, sessionReviewStatusSchema as gn, journeyPreparationProgressSchema as gr, candidateSortAvailable as gt, hideScopeDigest as h, selectFrozenConfiguration as hi, sessionReviewResourceSchema as hn, journeyInventorySchema as hr, manualUploadStartSchema as ht, validateBCrossSegmentReview as i, selectionBatchSchema as ii, sortingApplySchema as in, scanCanonicalResourceSchema as ir, classifyAgentSetup as it, deviceProfileScopeSchema as j, packHideIndex as jn, staticSessionId as jr, attemptBudgetCodePoints as jt, accountProfileSchema as k, hideKeyId as kn, hasCurrentStaticReview as kr, metadataProcessingVersion as kt, chooseCheapPlacement as l, sourceChangePolicy as li, sessionReconcileResultSchema as ln, verifiedScanGitSeeds as lr, validateFailureLocation as lt, activeJourneyTerms as m, freezeConfiguration as mi, sessionReviewQuerySchema as mn, journeyInventoryReadSchema as mr, manualUploadSchema as mt, scanBatchEquivalenceDigest as n, commandSchema as ni, journeyIsolateSchema as nn, planBRepair as nr, reviewInventory as nt, bRereadDigest as o, gitMetadataBudgetBytes as oi, reviewAttemptsQuerySchema as on, scanSessionResourceSchema as or, maximumAgentSetupSessions as ot, splitSelectorValues as p, defaultScopedSettings as pi, sessionReviewInputSchema as pn, journeyInventoryQuerySchema as pr, manualUploadPrepareSchema as pt, validateInspectionHead as q, workPrivacyDecisions as qn, isSkippedWork as qr, hideFinishSchema as qt, locateTermEvidence as r, packageCommandSchema as ri, journeyPlaceSchema as rn, scanAliasResourceSchema as rr, appendSensitiveTerms as rt, reconcileBSession as s, producerVersion as si, reviewAttemptsResultSchema as sn, scanGitSeedsId as sr, artifactFailureDetailSchema as st, scanBatchContextDigest as t, journeyRenderSchema as ti, journeyResourceSchema as tn, mergeBRepair as tr, readWorkspaceOutcomes as tt, reviseGroupMembership as u, recommendParallelism as ui, sessionReconciliationResourceSchema as un, scanExclusionResourceSchema as ur, manualUploadActionSchema as ut, projectJourneyInventory as v, sessionUsefulnessResourceSchema as vn, preparationBeginSchema as vr, maximumTermsFileBytes as vt, rebindReviewSubmit as w, readConfirmedHideChange as wn, assertJourneyPrivacyReady as wr, sendRequestSchema as wt, bReviewScope as x, journeyEventSchema as xn, validatePreparationFacts as xr, sendActionSchema as xt, preparationScope as y, journeyCommitResultSchema as yn, preparationSettlementSchema as yr, normalizeSensitiveTerms as yt, inspectionCancelSchema as z, confirmedHideKinds as zn, sendReplaceResultSchema as zr, classificationPartition as zt };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createExecutor, t as assertStoreHeap } from "./heap-
|
|
1
|
+
import { i as createExecutor, t as assertStoreHeap } from "./heap-DQbsSUrB.mjs";
|
|
2
2
|
import { parentPort } from "node:worker_threads";
|
|
3
3
|
//#region packages/local-host/src/store/worker/entry.ts
|
|
4
4
|
if (!parentPort) throw new Error("STORE_WORKER_REQUIRED");
|