@gitroll/tacitt-cli 0.6.9 → 0.6.10
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-CODlN6zl.mjs → agent-setup-LPd8WEsN.mjs} +2 -2
- package/dist/agent-setup-worker.mjs +5 -5
- package/dist/cli.mjs +19 -10
- 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-Dj5Zs6UW.mjs → frame-ByT1xayJ.mjs} +1 -1
- package/dist/{heap-Dt3-d27v.mjs → heap-CM298Yu0.mjs} +8 -6
- package/dist/inspection-worker.mjs +4 -4
- package/dist/{job-BQXssW46.mjs → job-BHIwElNF.mjs} +5 -5
- package/dist/{locate-BWkblijS.mjs → locate-Cwv6WH8n.mjs} +25 -2
- package/dist/{model-CSx2dP_P.mjs → model-zvn5GUJ9.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-CfhcS4gd.mjs → query-By41gaKm.mjs} +424 -145
- package/dist/{run-xlOaKCk8.mjs → run-ZQx7p4Rw.mjs} +4 -4
- package/dist/{src-V9GHLZQs.mjs → src-3jvMvSQn.mjs} +3 -3
- package/dist/{src-DzKuzGVH.mjs → src-BqtdFVq7.mjs} +484 -178
- package/dist/{src-BgsEnMsy.mjs → src-D_DfY--2.mjs} +4 -4
- package/dist/store-database-worker.mjs +1 -1
- package/dist/web/assets/index-B14e6_-z.js +174 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/skills/tacitt/INDEX.md +6 -6
- package/skills/tacitt/SKILL.md +2 -2
- package/skills/tacitt/references/INDEX.md +3 -3
- package/skills/tacitt/references/classification.md +12 -2
- package/skills/tacitt/references/commands.md +10 -2
- package/skills/tacitt/references/journey.md +9 -1
- package/skills/tacitt/references/send.md +29 -8
- package/skills/tacitt/scripts/INDEX.md +37 -37
- package/skills/tacitt/scripts/journey-classification-validation.d.mts +13 -0
- package/skills/tacitt/scripts/journey-classification-validation.mjs +38 -0
- package/skills/tacitt/scripts/journey-state.d.mts +6 -0
- package/skills/tacitt/scripts/journey-state.mjs +24 -1
- package/skills/tacitt/scripts/journey.d.mts +5 -0
- package/skills/tacitt/scripts/journey.mjs +33 -3
- package/skills/tacitt/scripts/privacy-validator.mjs +11 -1
- package/skills/tacitt/scripts/review.mjs +14 -2
- package/dist/web/assets/index-9UfCT_2C.js +0 -174
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
uncoveredPending,
|
|
23
23
|
} from './journey-state.mjs'
|
|
24
24
|
import { classificationTasks } from './journey-classification-tasks.mjs'
|
|
25
|
+
import { validateLatePlacedWorks } from './journey-classification-validation.mjs'
|
|
25
26
|
import { classificationEvidence, classificationFormat } from './journey-classification.mjs'
|
|
26
27
|
import {
|
|
27
28
|
consolidateClassification,
|
|
@@ -514,7 +515,7 @@ async function runPhaseCore(
|
|
|
514
515
|
? { expectedClassificationRevision: manifest.partial.revision }
|
|
515
516
|
: {}),
|
|
516
517
|
...(stage === 'classification'
|
|
517
|
-
? { [key]: await
|
|
518
|
+
? { [key]: await classificationItems(manifest, view) }
|
|
518
519
|
: stage === 'cards'
|
|
519
520
|
? cards
|
|
520
521
|
: { [key]: await answers(tasks, key) }),
|
|
@@ -549,6 +550,16 @@ async function runPhaseCore(
|
|
|
549
550
|
return { stage, status: result.status, revision: result.state?.revision }
|
|
550
551
|
}
|
|
551
552
|
|
|
553
|
+
/**
|
|
554
|
+
* The complete proposal, checked before commit: after scope confirmation an item never joins
|
|
555
|
+
* placed Works with different visibility (ADR 0274), which CLI would refuse.
|
|
556
|
+
*/
|
|
557
|
+
async function classificationItems(manifest, view) {
|
|
558
|
+
const items = await classificationSubmission(manifest, view)
|
|
559
|
+
if (view.scope?.status === 'confirmed') validateLatePlacedWorks(items, view.works)
|
|
560
|
+
return items
|
|
561
|
+
}
|
|
562
|
+
|
|
552
563
|
/** Classification published known Works and is still grouping the remaining roots (E2). */
|
|
553
564
|
const grouping = (view) => view.works.some((work) => work.placement === 'classifying')
|
|
554
565
|
|
|
@@ -591,6 +602,7 @@ async function ingestKnownWorks(directory, manifest, view, call, partial) {
|
|
|
591
602
|
|
|
592
603
|
const terminalClassificationErrors = new Set([
|
|
593
604
|
'INVALID_SELECTION',
|
|
605
|
+
'CLASSIFICATION_LATE_SEVERAL_WORKS',
|
|
594
606
|
'CLASSIFICATION_PROJECT_NAME_CONFLICT',
|
|
595
607
|
'CLASSIFICATION_ROOT_COVERAGE_INVALID',
|
|
596
608
|
'CLASSIFICATION_THEME_TOO_SMALL',
|
|
@@ -665,13 +677,31 @@ export async function main(argv) {
|
|
|
665
677
|
),
|
|
666
678
|
)
|
|
667
679
|
}
|
|
680
|
+
const safeId = /^[A-Za-z0-9._:-]{1,128}$/u
|
|
681
|
+
/**
|
|
682
|
+
* Stderr for a failed command: the code, and for CLASSIFICATION_LATE_SEVERAL_WORKS one line per
|
|
683
|
+
* refused item with its index and the placed Work ids, never a title or path (ADR 0274).
|
|
684
|
+
*/
|
|
685
|
+
export function failureOutput(error) {
|
|
686
|
+
const message = error?.message ?? ''
|
|
687
|
+
const code = /^[A-Z_]{3,80}$/u.test(message) ? message : 'JOURNEY_HELPER_FAILED'
|
|
688
|
+
const lines = [code]
|
|
689
|
+
if (code === 'CLASSIFICATION_LATE_SEVERAL_WORKS')
|
|
690
|
+
for (const conflict of error.conflicts ?? [])
|
|
691
|
+
if (Number.isInteger(conflict.item))
|
|
692
|
+
lines.push(
|
|
693
|
+
`items[${conflict.item}] joins Works ${conflict.workIds
|
|
694
|
+
.map((id) => (safeId.test(id) ? id : '?'))
|
|
695
|
+
.join(', ')}`,
|
|
696
|
+
)
|
|
697
|
+
return lines.join('\n') + '\n'
|
|
698
|
+
}
|
|
668
699
|
const entry = process.argv[1]
|
|
669
700
|
if (entry && (await realpath(entry)) === fileURLToPath(import.meta.url))
|
|
670
701
|
main(process.argv.slice(2)).then(
|
|
671
702
|
(result) => process.stdout.write(JSON.stringify({ ok: true, ...result }) + '\n'),
|
|
672
703
|
(error) => {
|
|
673
|
-
|
|
674
|
-
process.stderr.write(code + '\n')
|
|
704
|
+
process.stderr.write(failureOutput(error))
|
|
675
705
|
process.exitCode = 1
|
|
676
706
|
},
|
|
677
707
|
)
|
|
@@ -10131,7 +10131,8 @@ const journeyWorkSchema = object({
|
|
|
10131
10131
|
"default",
|
|
10132
10132
|
"model",
|
|
10133
10133
|
"explicit",
|
|
10134
|
-
"delegate"
|
|
10134
|
+
"delegate",
|
|
10135
|
+
"account"
|
|
10135
10136
|
]),
|
|
10136
10137
|
placement: _enum([
|
|
10137
10138
|
"placed",
|
|
@@ -10148,6 +10149,15 @@ const journeyWorkSchema = object({
|
|
|
10148
10149
|
grouping: _enum(["workspace", "regrouped"]),
|
|
10149
10150
|
access: journeyAccessSchema,
|
|
10150
10151
|
accessConfirmed: boolean(),
|
|
10152
|
+
accessChoice: object({
|
|
10153
|
+
channel: _enum([
|
|
10154
|
+
"conversation",
|
|
10155
|
+
"panel",
|
|
10156
|
+
"account"
|
|
10157
|
+
]),
|
|
10158
|
+
at: datetime()
|
|
10159
|
+
}).strict().optional(),
|
|
10160
|
+
accountAccessConflict: boolean().optional(),
|
|
10151
10161
|
reason: string().max(1e3),
|
|
10152
10162
|
revision: count$1,
|
|
10153
10163
|
inputRevision: count$1.min(1),
|
|
@@ -85,9 +85,21 @@ class HelperError extends Error {
|
|
|
85
85
|
super(code)
|
|
86
86
|
this.code = /^[A-Z_]{3,80}$/u.test(code) ? code : 'HELPER_FAILED'
|
|
87
87
|
if (
|
|
88
|
-
code === 'INVALID_REVIEW_SPAN' &&
|
|
89
88
|
typeof field === 'string' &&
|
|
90
|
-
/^terms\[\d+(?:,\d+){0,31}\]$/u.test(field)
|
|
89
|
+
((code === 'INVALID_REVIEW_SPAN' && /^terms\[\d+(?:,\d+){0,31}\]$/u.test(field)) ||
|
|
90
|
+
(code === 'INVALID_SELECTION' &&
|
|
91
|
+
[
|
|
92
|
+
'cards.append.empty',
|
|
93
|
+
'cards.append.limit',
|
|
94
|
+
'cards.append.duplicate-card',
|
|
95
|
+
'cards.append.existing-card',
|
|
96
|
+
'cards.append.duplicate-extension',
|
|
97
|
+
'cards.append.unknown-card',
|
|
98
|
+
'cards.append.duplicate-term',
|
|
99
|
+
'cards.append.term-not-open',
|
|
100
|
+
'cards.append.own-identity-card',
|
|
101
|
+
'cards.append.other-person',
|
|
102
|
+
].includes(field)))
|
|
91
103
|
)
|
|
92
104
|
this.field = field
|
|
93
105
|
}
|