@gitroll/tacitt-cli 0.4.2 → 0.6.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.
- package/dist/{agent-setup-Bpsi-BCv.mjs → agent-setup-Dv_mQ38P.mjs} +2 -2
- package/dist/agent-setup-worker.mjs +5 -5
- package/dist/cli.mjs +6 -5
- 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-IeDOLy1o.mjs → frame-DGun31Uc.mjs} +1 -1
- package/dist/{heap-DiOlSa8T.mjs → heap-DY5n4EVC.mjs} +5 -4
- package/dist/inspection-worker.mjs +4 -4
- package/dist/{job-BII94L2c.mjs → job-BxUVFocm.mjs} +383 -8
- package/dist/{locate-CBiw-CJK.mjs → locate-JYtFmKu-.mjs} +115 -3
- package/dist/{model-DGTsARtV.mjs → model-C1VzgKLi.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-CVqWNFYf.mjs → query-Cm5lumS4.mjs} +588 -64
- package/dist/{run-BGlf-W0M.mjs → run-hQ_W2p_Y.mjs} +4 -4
- package/dist/{src-CBTvOa44.mjs → src--Ln5GHdz.mjs} +44 -9
- package/dist/{src-D4nrfC2S.mjs → src-BMSLVcgs.mjs} +6 -5
- package/dist/{src-37kIclGK.mjs → src-CGFwLUd6.mjs} +4 -4
- package/dist/store-database-worker.mjs +1 -1
- package/dist/web/assets/index-Bbck2aOB.css +1 -0
- package/dist/web/assets/index-CXm08nyc.js +69 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/skills/tacitt/SKILL.md +4 -4
- package/skills/tacitt/references/INDEX.md +11 -10
- package/skills/tacitt/references/commands.md +25 -12
- package/skills/tacitt/references/journey.md +3 -3
- package/skills/tacitt/references/remote-workers.md +46 -0
- package/skills/tacitt/references/send.md +5 -1
- package/skills/tacitt/scripts/INDEX.md +36 -36
- package/skills/tacitt/scripts/journey-scan-timing.mjs +5 -4
- package/skills/tacitt/scripts/journey-state.d.mts +9 -0
- package/skills/tacitt/scripts/journey-state.mjs +19 -2
- package/skills/tacitt/scripts/journey.d.mts +4 -0
- package/skills/tacitt/scripts/journey.mjs +4 -2
- package/skills/tacitt/scripts/privacy-validator.mjs +76 -3
- package/skills/tacitt/scripts/review.mjs +6 -6
- package/dist/web/assets/index-D3g_ATU-.js +0 -69
- package/dist/web/assets/index-D5DEG5Ue.css +0 -1
|
@@ -877,7 +877,7 @@ const uuid$1 = (version) => {
|
|
|
877
877
|
return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);
|
|
878
878
|
};
|
|
879
879
|
/** Practical email validation */
|
|
880
|
-
const email = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;
|
|
880
|
+
const email$1 = /^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;
|
|
881
881
|
const _emoji$1 = `^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;
|
|
882
882
|
function emoji() {
|
|
883
883
|
return new RegExp(_emoji$1, "u");
|
|
@@ -1471,7 +1471,7 @@ const $ZodUUID = /*@__PURE__*/ $constructor("$ZodUUID", (inst, def) => {
|
|
|
1471
1471
|
$ZodStringFormat.init(inst, def);
|
|
1472
1472
|
});
|
|
1473
1473
|
const $ZodEmail = /*@__PURE__*/ $constructor("$ZodEmail", (inst, def) => {
|
|
1474
|
-
def.pattern ?? (def.pattern = email);
|
|
1474
|
+
def.pattern ?? (def.pattern = email$1);
|
|
1475
1475
|
$ZodStringFormat.init(inst, def);
|
|
1476
1476
|
});
|
|
1477
1477
|
/** Parses a URL for `$ZodURL`, applying the one guard the URL constructor cannot express. Returns the parsed URL, or a code naming the stage that rejected it — the runtime needs that distinction to pick an issue note, and compiled code only needs to know it is not a URL. */
|
|
@@ -4599,6 +4599,9 @@ const ZodEmail = /*@__PURE__*/ $constructor("ZodEmail", (inst, def) => {
|
|
|
4599
4599
|
$ZodEmail.init(inst, def);
|
|
4600
4600
|
ZodStringFormat.init(inst, def);
|
|
4601
4601
|
});
|
|
4602
|
+
function email(params) {
|
|
4603
|
+
return /* @__PURE__ */ _email(ZodEmail, params);
|
|
4604
|
+
}
|
|
4602
4605
|
const ZodGUID = /*@__PURE__*/ $constructor("ZodGUID", (inst, def) => {
|
|
4603
4606
|
$ZodGUID.init(inst, def);
|
|
4604
4607
|
ZodStringFormat.init(inst, def);
|
|
@@ -4877,6 +4880,14 @@ function object(shape, params) {
|
|
|
4877
4880
|
};
|
|
4878
4881
|
return new ZodObject(def);
|
|
4879
4882
|
}
|
|
4883
|
+
function looseObject(shape, params) {
|
|
4884
|
+
return new ZodObject({
|
|
4885
|
+
type: "object",
|
|
4886
|
+
shape,
|
|
4887
|
+
catchall: unknown(),
|
|
4888
|
+
...normalizeParams(params)
|
|
4889
|
+
});
|
|
4890
|
+
}
|
|
4880
4891
|
const ZodUnion = /*@__PURE__*/ $constructor("ZodUnion", (inst, def) => {
|
|
4881
4892
|
$ZodUnion.init(inst, def);
|
|
4882
4893
|
ZodType.init(inst, def);
|
|
@@ -5182,6 +5193,64 @@ const classificationTitleMaskSchema = object({
|
|
|
5182
5193
|
}).strict()
|
|
5183
5194
|
}).strict();
|
|
5184
5195
|
//#endregion
|
|
5196
|
+
//#region packages/application/src/journey/profile.ts
|
|
5197
|
+
/**
|
|
5198
|
+
* Passport's own rules (talent-platform `profile-settings.ts`): 1 to 39 letters and digits with
|
|
5199
|
+
* single hyphens between them, matched case-insensitively; the typed case is kept.
|
|
5200
|
+
*/
|
|
5201
|
+
const passportAddressSchema = string().min(1).max(39).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/i);
|
|
5202
|
+
const passportLinksSchema = array(string().max(2048).refine((value) => {
|
|
5203
|
+
if (value.startsWith("mailto:")) return email().max(254).safeParse(value.slice(7)).success;
|
|
5204
|
+
if (!URL.canParse(value)) return false;
|
|
5205
|
+
const url = new URL(value);
|
|
5206
|
+
return ["https:", "http:"].includes(url.protocol) && !!url.hostname && !url.username && !url.password && !/\s/.test(value);
|
|
5207
|
+
})).max(5);
|
|
5208
|
+
/**
|
|
5209
|
+
* The address and links the person chose in this Journey (ADR 0246). Nothing here reaches
|
|
5210
|
+
* Passport before Send; the Send writes it before the first Work upload.
|
|
5211
|
+
*/
|
|
5212
|
+
const journeyProfileSchema = object({
|
|
5213
|
+
/** The kept address; null until the person keeps one. */
|
|
5214
|
+
address: passportAddressSchema.nullable(),
|
|
5215
|
+
/** The complete list of links the profile should show. */
|
|
5216
|
+
links: passportLinksSchema,
|
|
5217
|
+
/** `later` comes back once on the Sent page; `declined` is that second Later. */
|
|
5218
|
+
linksChoice: _enum([
|
|
5219
|
+
"added",
|
|
5220
|
+
"later",
|
|
5221
|
+
"declined"
|
|
5222
|
+
]).nullable()
|
|
5223
|
+
}).strict();
|
|
5224
|
+
object({
|
|
5225
|
+
kind: literal("profile-address"),
|
|
5226
|
+
address: passportAddressSchema
|
|
5227
|
+
}).strict();
|
|
5228
|
+
object({
|
|
5229
|
+
kind: literal("profile-links"),
|
|
5230
|
+
links: passportLinksSchema,
|
|
5231
|
+
/** `later` comes back once on the Sent page; `declined` is that page's final Later. */
|
|
5232
|
+
choice: _enum([
|
|
5233
|
+
"added",
|
|
5234
|
+
"later",
|
|
5235
|
+
"declined"
|
|
5236
|
+
])
|
|
5237
|
+
}).strict();
|
|
5238
|
+
object({
|
|
5239
|
+
publicId: string().min(1).max(64),
|
|
5240
|
+
/** Loose, so a setting Passport adds later goes back unchanged with the next save. */
|
|
5241
|
+
profile: looseObject({
|
|
5242
|
+
address: union([literal(""), passportAddressSchema]),
|
|
5243
|
+
links: passportLinksSchema,
|
|
5244
|
+
contact: _enum([
|
|
5245
|
+
"account",
|
|
5246
|
+
"other",
|
|
5247
|
+
"hidden"
|
|
5248
|
+
]),
|
|
5249
|
+
contactEmail: string().max(254)
|
|
5250
|
+
}),
|
|
5251
|
+
accountEmail: string().max(254)
|
|
5252
|
+
});
|
|
5253
|
+
//#endregion
|
|
5185
5254
|
//#region packages/processing/src/errors.ts
|
|
5186
5255
|
var ProcessingError = class extends Error {
|
|
5187
5256
|
code;
|
|
@@ -9231,6 +9300,8 @@ const sessionSchema = object({
|
|
|
9231
9300
|
harness: _enum(["claude", "codex"]),
|
|
9232
9301
|
sourceKey: string(),
|
|
9233
9302
|
sourceSessionId: string().nullable(),
|
|
9303
|
+
/** Journey-private remote import association, never inferred from a worker log. */
|
|
9304
|
+
remoteParentSessionId: string().optional(),
|
|
9234
9305
|
title: string(),
|
|
9235
9306
|
createdAt: string().nullable(),
|
|
9236
9307
|
lastInteractionAt: string().nullable().optional(),
|
|
@@ -9977,7 +10048,9 @@ object({
|
|
|
9977
10048
|
/** Set when the person abandoned this Journey in chat; a new start may then replace it. */
|
|
9978
10049
|
abandonedAt: datetime().optional(),
|
|
9979
10050
|
/** Sessions whose last activity lies in this period (ADR 0206); absent means all. */
|
|
9980
|
-
period: sessionPeriodSchema.optional()
|
|
10051
|
+
period: sessionPeriodSchema.optional(),
|
|
10052
|
+
/** The Passport address and links chosen in this Journey (ADR 0246); absent means none yet. */
|
|
10053
|
+
profile: journeyProfileSchema.optional()
|
|
9981
10054
|
}).strict();
|
|
9982
10055
|
//#endregion
|
|
9983
10056
|
//#region packages/application/src/journey/b/model.ts
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
cardBatch,
|
|
3
3
|
cardBatchDue,
|
|
4
4
|
cardBatchDueAt,
|
|
5
|
+
isSkipped,
|
|
5
6
|
nextCardsWait,
|
|
6
7
|
phaseOf,
|
|
7
8
|
uncoveredPending,
|
|
@@ -1396,20 +1397,19 @@ export function workProgress(view) {
|
|
|
1396
1397
|
})
|
|
1397
1398
|
}
|
|
1398
1399
|
|
|
1399
|
-
/**
|
|
1400
|
+
/**
|
|
1401
|
+
* Selected Works whose read failed. They have no units and are skipped for this Send without
|
|
1402
|
+
* waiting for the person, who may Retry them in the panel (ADR 0236).
|
|
1403
|
+
*/
|
|
1400
1404
|
export function blockedWorks(view) {
|
|
1401
1405
|
return view.works
|
|
1402
|
-
.filter(
|
|
1403
|
-
(work) =>
|
|
1404
|
-
work.access !== 'drop' && work.rootSessionIds.length > 0 && work.status === 'blocked',
|
|
1405
|
-
)
|
|
1406
|
+
.filter((work) => work.access !== 'drop' && work.rootSessionIds.length > 0 && isSkipped(work))
|
|
1406
1407
|
.map((work) => ({ workId: work.id, title: work.title, blockedCodes: work.blockedCodes ?? [] }))
|
|
1407
1408
|
}
|
|
1408
1409
|
|
|
1409
1410
|
/** The next step once no pack is open: blocked input is reported, never completion. */
|
|
1410
1411
|
export function settledNext(view, units) {
|
|
1411
1412
|
if (units.some((unit) => unit.state === 'blocked')) return 'report-blocked'
|
|
1412
|
-
if (blockedWorks(view).length) return 'report-blocked-work'
|
|
1413
1413
|
if (!view.readingComplete) return 'next-packs (journey reading is incomplete)'
|
|
1414
1414
|
return 'done'
|
|
1415
1415
|
}
|