@gitroll/tacitt-cli 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/{agent-setup-Cb_spmGb.mjs → agent-setup-BZbgLgHg.mjs} +2 -2
  2. package/dist/agent-setup-worker.mjs +5 -5
  3. package/dist/cli.mjs +37 -10
  4. package/dist/codex-title-worker.mjs +1 -1
  5. package/dist/configured-preview-worker.mjs +5 -5
  6. package/dist/configured-session-worker.mjs +5 -5
  7. package/dist/{frame-waS5FnN5.mjs → frame-DGun31Uc.mjs} +1 -1
  8. package/dist/{heap-eZTo0VYj.mjs → heap-NDnGBXH6.mjs} +6 -6
  9. package/dist/inspection-worker.mjs +4 -4
  10. package/dist/{job-Bi57uRU-.mjs → job-BO0a67HQ.mjs} +383 -8
  11. package/dist/{locate-U3-nkird.mjs → locate-JYtFmKu-.mjs} +120 -3
  12. package/dist/{model-BDrntocp.mjs → model-CmHypB0p.mjs} +1 -1
  13. package/dist/operation-executor.mjs +3 -3
  14. package/dist/preview-worker.mjs +1 -1
  15. package/dist/privacy-validator.mjs +1 -1
  16. package/dist/{query-7uY266qY.mjs → query-BZvNsP1u.mjs} +1272 -265
  17. package/dist/{run-CV6Io7CS.mjs → run-DvRM-NR8.mjs} +4 -4
  18. package/dist/{src-DSDRF7i6.mjs → src-C1SjCDx0.mjs} +65 -4
  19. package/dist/{src-DIuh0LHk.mjs → src-CQeUBG2Y.mjs} +168 -7
  20. package/dist/{src-BESjwh7X.mjs → src-xidy0yF7.mjs} +5 -4
  21. package/dist/store-database-worker.mjs +1 -1
  22. package/dist/web/assets/index-Bbck2aOB.css +1 -0
  23. package/dist/web/assets/index-D0j-mvf1.js +69 -0
  24. package/dist/web/index.html +2 -2
  25. package/package.json +1 -1
  26. package/skills/tacitt/SKILL.md +4 -4
  27. package/skills/tacitt/references/INDEX.md +11 -10
  28. package/skills/tacitt/references/commands.md +13 -0
  29. package/skills/tacitt/references/journey.md +4 -4
  30. package/skills/tacitt/references/remote-workers.md +46 -0
  31. package/skills/tacitt/references/send.md +41 -11
  32. package/skills/tacitt/scripts/INDEX.md +36 -36
  33. package/skills/tacitt/scripts/journey-card-consolidation.mjs +2 -4
  34. package/skills/tacitt/scripts/journey-state.d.mts +30 -0
  35. package/skills/tacitt/scripts/journey-state.mjs +56 -3
  36. package/skills/tacitt/scripts/journey-tasks.d.mts +8 -0
  37. package/skills/tacitt/scripts/journey-tasks.mjs +4 -1
  38. package/skills/tacitt/scripts/privacy-validator.mjs +78 -3
  39. package/skills/tacitt/scripts/review.mjs +36 -5
  40. package/dist/web/assets/index-D5DEG5Ue.css +0 -1
  41. package/dist/web/assets/index-Dh4iG6x2.js +0 -69
@@ -8246,6 +8246,8 @@ const sourcePartSchema = z.object({
8246
8246
  id: z.string(),
8247
8247
  path: z.string(),
8248
8248
  root: z.string(),
8249
+ /** Original harness-home-relative name, preserved before resolving a linked discovery root. */
8250
+ harnessRelativePath: z.string().min(1).max(16384).optional(),
8249
8251
  representation: z.enum(["jsonl", "jsonl.zst"]),
8250
8252
  snapshot: fileSnapshotSchema,
8251
8253
  nativeEvidence: nativeSourceEvidenceSchema.optional()
@@ -8280,6 +8282,8 @@ const sessionSchema = z.object({
8280
8282
  harness: z.enum(["claude", "codex"]),
8281
8283
  sourceKey: z.string(),
8282
8284
  sourceSessionId: z.string().nullable(),
8285
+ /** Journey-private remote import association, never inferred from a worker log. */
8286
+ remoteParentSessionId: z.string().optional(),
8283
8287
  title: z.string(),
8284
8288
  createdAt: z.string().nullable(),
8285
8289
  lastInteractionAt: z.string().nullable().optional(),
@@ -8350,10 +8354,17 @@ function sourceGraph(inventory) {
8350
8354
  const unidentified = /* @__PURE__ */ new Set();
8351
8355
  const nodes = [];
8352
8356
  for (const session of inventory.sessions) for (const part of session.parts.length ? session.parts : [null]) {
8353
- const observation = part ? observeSource(part) : {
8357
+ let observation = part ? observeSource(part) : {
8354
8358
  identity: null,
8355
8359
  reason: "unreadable-source"
8356
8360
  };
8361
+ if (session.remoteParentSessionId && observation.reason === null && observation.identity) observation = {
8362
+ ...observation,
8363
+ identity: {
8364
+ ...observation.identity,
8365
+ role: "worker"
8366
+ }
8367
+ };
8357
8368
  const node = {
8358
8369
  key: sourceKey(session.id, part?.id ?? ""),
8359
8370
  session,
@@ -8376,6 +8387,11 @@ function sourceGraph(inventory) {
8376
8387
  for (const node of nodes) {
8377
8388
  const identity = node.observation.identity;
8378
8389
  if (identity?.role !== "worker" || node.observation.reason !== null) continue;
8390
+ if (node.session.remoteParentSessionId) {
8391
+ node.parents = nodes.filter((parent) => parent.session.id === node.session.remoteParentSessionId);
8392
+ node.ancestry = node.parents.length ? "parents" : "missing";
8393
+ continue;
8394
+ }
8379
8395
  const id = identity.dispatchParentSessionId;
8380
8396
  const matches = id === null ? [] : byNative.get(nativeKey(node.session.harness, id)) ?? [];
8381
8397
  if (id === null || matches.length > 257) {
@@ -8472,7 +8488,10 @@ const safeCodes = /* @__PURE__ */ new Set([
8472
8488
  "EMPTY_MAIN_SESSION",
8473
8489
  "SEND_REMOTE_REFUSED",
8474
8490
  "SEND_INTERRUPTED",
8491
+ "SEND_SCOPE_BUSY",
8475
8492
  "SEND_REPLACE_REFUSED",
8493
+ "SESSION_CONTENT_CONFLICT",
8494
+ "WORK_REMOVED",
8476
8495
  "ACCOUNT_CHANGED",
8477
8496
  "JOURNEY_DESTINATION_CHANGED",
8478
8497
  "SENSITIVE_TERMS_UNSAFE_PATH",
@@ -8482,6 +8501,9 @@ const safeCodes = /* @__PURE__ */ new Set([
8482
8501
  "ACCOUNT_NOT_CONFIGURED",
8483
8502
  "ACCOUNT_SIGNED_OUT",
8484
8503
  "ACCOUNT_PROFILE_UNAVAILABLE",
8504
+ "PASSPORT_ADDRESS_TAKEN",
8505
+ "PASSPORT_ADDRESS_RESERVED",
8506
+ "PASSPORT_ADDRESS_LIMIT",
8485
8507
  "ARTIFACT_ABORTED",
8486
8508
  "ARTIFACT_COLLECTION_INCOMPLETE",
8487
8509
  "ARTIFACT_WORKER_MEMORY",
@@ -8669,6 +8691,99 @@ const classificationTitleMaskSchema = z.object({
8669
8691
  }).strict()
8670
8692
  }).strict();
8671
8693
  //#endregion
8694
+ //#region packages/application/src/journey/profile.ts
8695
+ /**
8696
+ * Passport's own rules (talent-platform `profile-settings.ts`): 1 to 39 letters and digits with
8697
+ * single hyphens between them, matched case-insensitively; the typed case is kept.
8698
+ */
8699
+ const passportAddressSchema = z.string().min(1).max(39).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/i);
8700
+ /** A web link or a mailto address, as Passport accepts them. */
8701
+ const passportLinkSchema = z.string().max(2048).refine((value) => {
8702
+ if (value.startsWith("mailto:")) return z.email().max(254).safeParse(value.slice(7)).success;
8703
+ if (!URL.canParse(value)) return false;
8704
+ const url = new URL(value);
8705
+ return ["https:", "http:"].includes(url.protocol) && !!url.hostname && !url.username && !url.password && !/\s/.test(value);
8706
+ });
8707
+ const passportLinksSchema = z.array(passportLinkSchema).max(5);
8708
+ /**
8709
+ * The address and links the person chose in this Journey (ADR 0246). Nothing here reaches
8710
+ * Passport before Send; the Send writes it before the first Work upload.
8711
+ */
8712
+ const journeyProfileSchema = z.object({
8713
+ /** The kept address; null until the person keeps one. */
8714
+ address: passportAddressSchema.nullable(),
8715
+ /** The complete list of links the profile should show. */
8716
+ links: passportLinksSchema,
8717
+ /** `later` comes back once on the Sent page; `declined` is that second Later. */
8718
+ linksChoice: z.enum([
8719
+ "added",
8720
+ "later",
8721
+ "declined"
8722
+ ]).nullable()
8723
+ }).strict();
8724
+ const emptyJourneyProfile = {
8725
+ address: null,
8726
+ links: [],
8727
+ linksChoice: null
8728
+ };
8729
+ const journeyProfileAddressActionSchema = z.object({
8730
+ kind: z.literal("profile-address"),
8731
+ address: passportAddressSchema
8732
+ }).strict();
8733
+ const journeyProfileLinksActionSchema = z.object({
8734
+ kind: z.literal("profile-links"),
8735
+ links: passportLinksSchema,
8736
+ /** `later` comes back once on the Sent page; `declined` is that page's final Later. */
8737
+ choice: z.enum([
8738
+ "added",
8739
+ "later",
8740
+ "declined"
8741
+ ])
8742
+ }).strict();
8743
+ /** The owner's Passport profile settings (`GET /me/profile`), as far as the CLI reads them. */
8744
+ const ownerProfileSchema = z.object({
8745
+ publicId: z.string().min(1).max(64),
8746
+ /** Loose, so a setting Passport adds later goes back unchanged with the next save. */
8747
+ profile: z.looseObject({
8748
+ address: z.union([z.literal(""), passportAddressSchema]),
8749
+ links: passportLinksSchema,
8750
+ contact: z.enum([
8751
+ "account",
8752
+ "other",
8753
+ "hidden"
8754
+ ]),
8755
+ contactEmail: z.string().max(254)
8756
+ }),
8757
+ accountEmail: z.string().max(254)
8758
+ });
8759
+ /**
8760
+ * The fields `PUT /me/profile` saves: the Journey's address and links over the owner's current
8761
+ * settings, which keep their contact choice. Unchosen parts keep Passport's current values.
8762
+ */
8763
+ function mergeOwnerProfile(current, chosen) {
8764
+ return {
8765
+ ...current,
8766
+ address: chosen.address ?? current.address,
8767
+ links: chosen.linksChoice === "added" ? chosen.links : current.links
8768
+ };
8769
+ }
8770
+ /** Whether the Send has anything to write. */
8771
+ function profileHasChoices(profile) {
8772
+ return !!profile && (profile.address !== null || profile.linksChoice === "added");
8773
+ }
8774
+ /** Added links replace the list; Later and its final Sent-page form keep it (BL-230). */
8775
+ function respondProfileLinks(current, action) {
8776
+ if (action.choice === "added") return {
8777
+ ...current,
8778
+ links: action.links,
8779
+ linksChoice: "added"
8780
+ };
8781
+ return {
8782
+ ...current,
8783
+ linksChoice: action.choice
8784
+ };
8785
+ }
8786
+ //#endregion
8672
8787
  //#region packages/application/src/source/period.ts
8673
8788
  const DAY = /^\d{4}-\d{2}-\d{2}$/;
8674
8789
  /** A local calendar day (`YYYY-MM-DD`) or a full ISO timestamp. */
@@ -9474,7 +9589,9 @@ const nativeJourneySchema = z.object({
9474
9589
  /** Set when the person abandoned this Journey in chat; a new start may then replace it. */
9475
9590
  abandonedAt: z.iso.datetime().optional(),
9476
9591
  /** Sessions whose last activity lies in this period (ADR 0206); absent means all. */
9477
- period: sessionPeriodSchema.optional()
9592
+ period: sessionPeriodSchema.optional(),
9593
+ /** The Passport address and links chosen in this Journey (ADR 0246); absent means none yet. */
9594
+ profile: journeyProfileSchema.optional()
9478
9595
  }).strict();
9479
9596
  //#endregion
9480
9597
  //#region packages/application/src/journey/b/model.ts
@@ -10667,4 +10784,4 @@ function locateTerms(batches, terms) {
10667
10784
  };
10668
10785
  }
10669
10786
  //#endregion
10670
- export { bCountSchema as $, scalarAfter as $n, fileIdentitySchema as $t, bDuplicateMirror as A, nativeBoolean as An, journeyTermSchema as At, bEvidenceReader as B, validatePlan as Bn, sessionPeriodSchema as Bt, validateBUnit as C, sessionNonce as Cn, cardsSubmitSchema as Ct, uncoveredBObligations as D, entityDictionaryVersion as Dn, privacyResolveSchema as Dt, bLiterals as E, cleanupImplementationVersion as En, packageConfirmActionSchema as Et, bClassificationKey as F, frameRecords as Fn, termTypeInfo as Ft, subtractBRanges as G, detectStatic as Gn, safeField as Gt, codePointLength as H, defaultLimits as Hn, ApplicationError as Ht, bIssue as I, retainedMainTextNodes as In, termTypeSchema as It, bRetainedGroupSchema as J, jsonSpans as Jn, reviewFamilies as Jt, utf16Offset as K, isStaticCategory as Kn, familyNeedsReview as Kt, bOverlaps as L, validateProfile as Ln, termTypes as Lt, bLegacyBindings as M, nativeItems as Mn, reviewTermsResultSchema as Mt, bUnitFragments as N, nativeText as Nn, termAssessmentSchema as Nt, indexBRanges as O, nativeParserVersion as On, privacyTermKey as Ot, bAdoptedObligations as P, transformRecords as Pn, termOverrideValueSchema as Pt, bAnchorSchema as Q, admitGitName as Qn, sourceSnapshotId as Qt, unownedBObligations as R, orderProfile as Rn, deselectOutsidePeriod as Rt, validateBFields as S, createReplacementKey as Sn, cardsConfirmActionSchema as St, bLiteralTerms as T, parseNativeRecord as Tn, emptyJourneyPrivacy as Tt, codePointSlice as U, recordPointerLimits as Un, UnfinishedJourneyError as Ut, bDigest as V, copyData as Vn, classificationTitleMaskSchema as Vt, createCodePointIndex as W, resolveLimits as Wn, safeCode as Wt, bSessionDecisionSchema as X, createEntityMatcher as Xn, sourceKey as Xt, bReviewSubmissionSchema as Y, agentContextLocation as Yn, sourceGraph as Yt, bTermSchema as Z, admitCustomTerm as Zn, observeSource as Zt, semanticFindingSchema as _, gapReasons as _n, hideConfirmSchema as _t, reviewChunkSchema as a, withMandatoryCustomTerms as an, journeyExceptionSchema as at, validateBReview as b, staticDefaults as bn, journeyConfigurationSchema as bt, textDigest as c, mainReviewRole as cn, journeyPreferenceScopeSchema as ct, reviewAlignmentAudit as d, renderNative as dn, nativeJourneySchema as dt, inventorySchema as en, scalarBefore as er, bIdSchema as et, reviewAlignmentAuditSchema as f, createSessionPreparation as fn, journeyGuidanceSchema as ft, validateReviewAlignment as g, createDetectionSummary as gn, journeyWorkSuggestionSchema as gt, reviewFindingsDigest as h, inspectionSemanticVersions as hn, journeyDescribeSchema as ht, reviewBatchSchema as i, nativeSourceIdentitySchema as in, isProcessingCode as ir, journeyDigestSchema as it, bDuplicateShift as j, nativeField as jn, reviewTermsInputSchema as jt, bBindingCap as k, redactionImplementationVersion as kn, privacyTermSchema as kt, validateReview as l, reviewRoles as ln, journeyProjectTypeSchema as lt, reviewAlignmentSchema as m, currentDetectorVersion as mn, delegatedDecisionSchema as mt, compileBFindings as n, sourcePartSchema as nn, ProcessingError as nr, journeyAccessSchema as nt, reviewDigest as o, processNativeRecord as on, journeyIdSchema as ot, reviewAlignmentInputSchema as p, bindInspection as pn, journeyInstructionInputSchema as pt, bRepresentationSchema as q, staticCategories as qn, familySelected as qt, reviewBatchChunks as r, workspaceSchema as rn, fail as rr, journeyChoiceSchema as rt, reviewSubmitSchema as s, projectNativeReviewInput as sn, journeyKindSchema as st, locateTerms as t, sessionSchema as tn, defaultDetectionLimits as tr, bMethod as tt, findingReferenceKey as u, createSentenceContext as un, journeyWorkTypeSchema as ut, bContextEvidence as v, walkNativeFields as vn, hidePlanInputSchema as vt, bLiteralAdmitted as w, projectNativeRecord as wn, decisionCardInputSchema as wt, createBAnalysisUnits as x, staticOptions as xn, cardAnswerActionSchema as xt, validateBClassification as y, createStaticProcessor as yn, hidePlanResourceSchema as yt, bAnchorKey as z, buildPlan as zn, filterInventoryByPeriod as zt };
10787
+ export { bCountSchema as $, detectStatic as $n, safeField as $t, bDuplicateMirror as A, createReplacementKey as An, journeyTermSchema as At, bEvidenceReader as B, nativeItems as Bn, sessionPeriodSchema as Bt, validateBUnit as C, inspectionSemanticVersions as Cn, cardsSubmitSchema as Ct, uncoveredBObligations as D, createStaticProcessor as Dn, privacyResolveSchema as Dt, bLiterals as E, walkNativeFields as En, packageConfirmActionSchema as Et, bClassificationKey as F, entityDictionaryVersion as Fn, termTypeInfo as Ft, subtractBRanges as G, validateProfile as Gn, ownerProfileSchema as Gt, codePointLength as H, transformRecords as Hn, journeyProfileAddressActionSchema as Ht, bIssue as I, nativeParserVersion as In, termTypeSchema as It, bRetainedGroupSchema as J, validatePlan as Jn, respondProfileLinks as Jt, utf16Offset as K, orderProfile as Kn, passportAddressSchema as Kt, bOverlaps as L, redactionImplementationVersion as Ln, termTypes as Lt, bLegacyBindings as M, projectNativeRecord as Mn, reviewTermsResultSchema as Mt, bUnitFragments as N, parseNativeRecord as Nn, termAssessmentSchema as Nt, indexBRanges as O, staticDefaults as On, privacyTermKey as Ot, bAdoptedObligations as P, cleanupImplementationVersion as Pn, termOverrideValueSchema as Pt, bAnchorSchema as Q, resolveLimits as Qn, safeCode as Qt, unownedBObligations as R, nativeBoolean as Rn, deselectOutsidePeriod as Rt, validateBFields as S, currentDetectorVersion as Sn, cardsConfirmActionSchema as St, bLiteralTerms as T, gapReasons as Tn, emptyJourneyPrivacy as Tt, codePointSlice as U, frameRecords as Un, journeyProfileLinksActionSchema as Ut, bDigest as V, nativeText as Vn, emptyJourneyProfile as Vt, createCodePointIndex as W, retainedMainTextNodes as Wn, mergeOwnerProfile as Wt, bSessionDecisionSchema as X, defaultLimits as Xn, ApplicationError as Xt, bReviewSubmissionSchema as Y, copyData as Yn, classificationTitleMaskSchema as Yt, bTermSchema as Z, recordPointerLimits as Zn, UnfinishedJourneyError as Zt, semanticFindingSchema as _, reviewRoles as _n, hideConfirmSchema as _t, reviewChunkSchema as a, observeSource as an, admitCustomTerm as ar, journeyExceptionSchema as at, validateBReview as b, createSessionPreparation as bn, journeyConfigurationSchema as bt, textDigest as c, inventorySchema as cn, scalarBefore as cr, journeyPreferenceScopeSchema as ct, reviewAlignmentAudit as d, workspaceSchema as dn, fail as dr, nativeJourneySchema as dt, familyNeedsReview as en, isStaticCategory as er, bIdSchema as et, reviewAlignmentAuditSchema as f, nativeSourceIdentitySchema as fn, isProcessingCode as fr, journeyGuidanceSchema as ft, validateReviewAlignment as g, mainReviewRole as gn, journeyWorkSuggestionSchema as gt, reviewFindingsDigest as h, projectNativeReviewInput as hn, journeyDescribeSchema as ht, reviewBatchSchema as i, sourceKey as in, createEntityMatcher as ir, journeyDigestSchema as it, bDuplicateShift as j, sessionNonce as jn, reviewTermsInputSchema as jt, bBindingCap as k, staticOptions as kn, privacyTermSchema as kt, validateReview as l, sessionSchema as ln, defaultDetectionLimits as lr, journeyProjectTypeSchema as lt, reviewAlignmentSchema as m, processNativeRecord as mn, delegatedDecisionSchema as mt, compileBFindings as n, reviewFamilies as nn, jsonSpans as nr, journeyAccessSchema as nt, reviewDigest as o, sourceSnapshotId as on, admitGitName as or, journeyIdSchema as ot, reviewAlignmentInputSchema as p, withMandatoryCustomTerms as pn, journeyInstructionInputSchema as pt, bRepresentationSchema as q, buildPlan as qn, profileHasChoices as qt, reviewBatchChunks as r, sourceGraph as rn, agentContextLocation as rr, journeyChoiceSchema as rt, reviewSubmitSchema as s, fileIdentitySchema as sn, scalarAfter as sr, journeyKindSchema as st, locateTerms as t, familySelected as tn, staticCategories as tr, bMethod as tt, findingReferenceKey as u, sourcePartSchema as un, ProcessingError as ur, journeyWorkTypeSchema as ut, bContextEvidence as v, createSentenceContext as vn, hidePlanInputSchema as vt, bLiteralAdmitted as w, createDetectionSummary as wn, decisionCardInputSchema as wt, createBAnalysisUnits as x, bindInspection as xn, cardAnswerActionSchema as xt, validateBClassification as y, renderNative as yn, hidePlanResourceSchema as yt, bAnchorKey as z, nativeField as zn, filterInventoryByPeriod as zt };
@@ -1,4 +1,4 @@
1
- import "./src-DSDRF7i6.mjs";
1
+ import "./src-C1SjCDx0.mjs";
2
2
  //#region packages/harnesses/src/discovery/model.ts
3
3
  const discoveryBounds = {
4
4
  entries: 1e5,
@@ -1,6 +1,6 @@
1
- import { c as executorRequestSchema, d as parseOptions, h as startupFailure, i as invoke, n as readOperation, o as createRuntime, p as longCommands, r as waitOperation } from "./query-7uY266qY.mjs";
2
- import { Gt as safeField, Ht as ApplicationError, Wt as safeCode } from "./locate-U3-nkird.mjs";
3
- import "./src-DSDRF7i6.mjs";
1
+ import { c as executorRequestSchema, f as parseOptions, g as startupFailure, i as invoke, m as longCommands, n as readOperation, o as createRuntime, r as waitOperation } from "./query-BZvNsP1u.mjs";
2
+ import { $t as safeField, Qt as safeCode, Xt as ApplicationError } from "./locate-JYtFmKu-.mjs";
3
+ import "./src-C1SjCDx0.mjs";
4
4
  import { z } from "zod";
5
5
  import { setTimeout } from "node:timers/promises";
6
6
  //#region apps/cli/src/operation/executor.ts
@@ -1,4 +1,4 @@
1
- import { n as assertPreviewHeap, o as previewInputSchema, t as runPreview } from "./run-CV6Io7CS.mjs";
1
+ import { n as assertPreviewHeap, o as previewInputSchema, t as runPreview } from "./run-DvRM-NR8.mjs";
2
2
  import { parentPort, workerData } from "node:worker_threads";
3
3
  //#region packages/harnesses/src/preview/worker/index.ts
4
4
  function notify(message) {
@@ -1,4 +1,4 @@
1
- import { Dt as privacyResolveSchema, Ot as privacyTermKey, t as locateTerms, wt as decisionCardInputSchema } from "./locate-U3-nkird.mjs";
1
+ import { Dt as privacyResolveSchema, Ot as privacyTermKey, t as locateTerms, wt as decisionCardInputSchema } from "./locate-JYtFmKu-.mjs";
2
2
  import { z } from "zod";
3
3
  //#region apps/cli/src/skill-install/privacy-validator.ts
4
4
  const suppliedTerms = z.array(z.object({