@bendyline/gezel 1.0.4 → 1.0.6
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/{index-Cj_G8Y-S.d.ts → index-D82l7pAm.d.ts} +5415 -609
- package/dist/index.d.ts +373 -8
- package/dist/index.js +6949 -4911
- package/dist/markdown/index.d.ts +1 -1
- package/dist/markdown/index.js +179 -24
- package/dist/paths.d.ts +38 -2
- package/dist/paths.js +26 -2
- package/dist/{report-action-UJ-pJpZO.d.ts → report-action-ClXIBtpU.d.ts} +215 -1
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.js +5836 -4711
- package/package.json +1 -1
package/dist/markdown/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as CraftbookDocError, c as CraftbookDoc,
|
|
1
|
+
import { b as CraftbookDocError, c as CraftbookDoc, S as ParsedGezel, U as ParsedReportAction, a1 as ReportActionParseIssue } from '../report-action-ClXIBtpU.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
|
|
4
4
|
interface CraftbookMarkdownParse {
|
package/dist/markdown/index.js
CHANGED
|
@@ -428,7 +428,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
428
428
|
z3.object({
|
|
429
429
|
kind: z3.literal("totalMinBytes"),
|
|
430
430
|
files: z3.array(z3.string().min(1)).min(1),
|
|
431
|
-
bytes: z3.number().int().positive()
|
|
431
|
+
bytes: z3.number().int().positive(),
|
|
432
|
+
artifact: z3.boolean().optional()
|
|
432
433
|
}),
|
|
433
434
|
/**
|
|
434
435
|
* At least `min` workspace files with one of `ext` exist (e.g. ≥3 images).
|
|
@@ -445,13 +446,15 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
445
446
|
ext: z3.array(z3.string().min(1)).min(1),
|
|
446
447
|
min: z3.number().int().positive(),
|
|
447
448
|
dir: z3.string().optional(),
|
|
448
|
-
verifyImageBytes: z3.boolean().optional()
|
|
449
|
+
verifyImageBytes: z3.boolean().optional(),
|
|
450
|
+
artifact: z3.boolean().optional()
|
|
449
451
|
}),
|
|
450
452
|
/** Inline `<style>` + linked `.css` in `file` (default index.html) clears `bytes`. */
|
|
451
453
|
z3.object({
|
|
452
454
|
kind: z3.literal("cssMinBytes"),
|
|
453
455
|
bytes: z3.number().int().positive(),
|
|
454
|
-
file: z3.string().optional()
|
|
456
|
+
file: z3.string().optional(),
|
|
457
|
+
artifact: z3.boolean().optional()
|
|
455
458
|
}),
|
|
456
459
|
/** A named content sniff passes on `file` (workspace, or the artifacts drawer when `artifact`). */
|
|
457
460
|
z3.object({
|
|
@@ -466,7 +469,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
466
469
|
file: z3.string().min(1),
|
|
467
470
|
path: z3.string().min(1),
|
|
468
471
|
value: GateJsonScalarSchema,
|
|
469
|
-
label: z3.string().min(1).optional()
|
|
472
|
+
label: z3.string().min(1).optional(),
|
|
473
|
+
artifact: z3.boolean().optional()
|
|
470
474
|
}),
|
|
471
475
|
/** A CSV file has the expected header/row shape and optional picklist values. */
|
|
472
476
|
z3.object({
|
|
@@ -476,7 +480,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
476
480
|
exactColumns: z3.array(z3.string().min(1)).min(1).optional(),
|
|
477
481
|
minRows: z3.number().int().nonnegative().optional(),
|
|
478
482
|
consistentColumns: z3.boolean().optional(),
|
|
479
|
-
allowedValues: z3.record(z3.string(), z3.array(z3.string().min(1)).min(1)).optional()
|
|
483
|
+
allowedValues: z3.record(z3.string(), z3.array(z3.string().min(1)).min(1)).optional(),
|
|
484
|
+
artifact: z3.boolean().optional()
|
|
480
485
|
}),
|
|
481
486
|
/** `file` matches `pattern` (regex), in the workspace or the artifacts drawer when `artifact`. */
|
|
482
487
|
z3.object({
|
|
@@ -511,7 +516,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
511
516
|
label: z3.string().min(1).optional()
|
|
512
517
|
})
|
|
513
518
|
).min(1),
|
|
514
|
-
flags: z3.string().optional()
|
|
519
|
+
flags: z3.string().optional(),
|
|
520
|
+
artifact: z3.boolean().optional()
|
|
515
521
|
}),
|
|
516
522
|
/**
|
|
517
523
|
* Every inline `<script>` body in `file` (default index.html) parses as
|
|
@@ -523,7 +529,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
523
529
|
*/
|
|
524
530
|
z3.object({
|
|
525
531
|
kind: z3.literal("jsParses"),
|
|
526
|
-
file: z3.string().optional()
|
|
532
|
+
file: z3.string().optional(),
|
|
533
|
+
artifact: z3.boolean().optional()
|
|
527
534
|
}),
|
|
528
535
|
/**
|
|
529
536
|
* An in-process, zero-spawn static gate for an HTML deliverable: the document
|
|
@@ -534,7 +541,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
534
541
|
*/
|
|
535
542
|
z3.object({
|
|
536
543
|
kind: z3.literal("htmlLint"),
|
|
537
|
-
file: z3.string().min(1)
|
|
544
|
+
file: z3.string().min(1),
|
|
545
|
+
artifact: z3.boolean().optional()
|
|
538
546
|
}),
|
|
539
547
|
/**
|
|
540
548
|
* Named `node:` imports in `file` resolve to real builtin exports, and a
|
|
@@ -547,7 +555,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
547
555
|
*/
|
|
548
556
|
z3.object({
|
|
549
557
|
kind: z3.literal("esmImports"),
|
|
550
|
-
file: z3.string().min(1)
|
|
558
|
+
file: z3.string().min(1),
|
|
559
|
+
artifact: z3.boolean().optional()
|
|
551
560
|
}),
|
|
552
561
|
/**
|
|
553
562
|
* `file` parses as source code. For `.ts/.tsx/.js/.mjs/.cjs/.jsx` the
|
|
@@ -559,7 +568,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
559
568
|
*/
|
|
560
569
|
z3.object({
|
|
561
570
|
kind: z3.literal("sourceParses"),
|
|
562
|
-
file: z3.string().min(1)
|
|
571
|
+
file: z3.string().min(1),
|
|
572
|
+
artifact: z3.boolean().optional()
|
|
563
573
|
}),
|
|
564
574
|
/**
|
|
565
575
|
* The first Markdown table in `file` has the required header set and
|
|
@@ -601,6 +611,12 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
601
611
|
* dependency-free files can run (node built-ins ok; the sandbox has no
|
|
602
612
|
* npm tree): a `node:test`/`assert` file exits nonzero on failure,
|
|
603
613
|
* which is exactly the contract.
|
|
614
|
+
*
|
|
615
|
+
* Alone among the file-reading checks this takes no `artifact` flag: it
|
|
616
|
+
* does not read through the swappable gate reader at all, it hands the
|
|
617
|
+
* path to the sandbox executor, which resolves against the workspace.
|
|
618
|
+
* Accepting the flag would parse fine and then silently execute the
|
|
619
|
+
* wrong tree — the exact failure mode the flag exists to prevent.
|
|
604
620
|
*/
|
|
605
621
|
z3.object({
|
|
606
622
|
kind: z3.literal("nodeRuns"),
|
|
@@ -639,8 +655,11 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
639
655
|
}),
|
|
640
656
|
/**
|
|
641
657
|
* A PR-review coverage ledger must name every changed path materialized in
|
|
642
|
-
* a connector corpus. The ledger is
|
|
643
|
-
*
|
|
658
|
+
* a connector corpus. The ledger is JSON (`reviewedFiles` by default) in
|
|
659
|
+
* the workspace, or in the artifacts drawer when `artifact` — a review of
|
|
660
|
+
* a read-only checkout can only write the drawer, so omitting the flag
|
|
661
|
+
* here made the whole Pull Request Review book unsatisfiable on any
|
|
662
|
+
* writes-off project. The source records always live in the drawer and
|
|
644
663
|
* carry their authoritative path in frontmatter. This prevents a polished
|
|
645
664
|
* report from passing after only the first context-sized prefix was read.
|
|
646
665
|
*/
|
|
@@ -649,7 +668,49 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
649
668
|
file: z3.string().min(1),
|
|
650
669
|
corpusDir: z3.string().min(1),
|
|
651
670
|
reviewedField: z3.string().min(1).optional(),
|
|
652
|
-
recordField: z3.string().min(1).optional()
|
|
671
|
+
recordField: z3.string().min(1).optional(),
|
|
672
|
+
artifact: z3.boolean().optional(),
|
|
673
|
+
/**
|
|
674
|
+
* JSON array of the exact changed paths THIS ledger must cover, as a
|
|
675
|
+
* string — narrows the check from the whole corpus to one slice of it.
|
|
676
|
+
* Written for declarative fanout: a child reviewing batch 2 of 3 gets
|
|
677
|
+
* `"{{paths}}"` from its per-item context and is gated on its own 25
|
|
678
|
+
* files, not on the 68 nobody handed it. Without this a batch child
|
|
679
|
+
* can never pass its own gate, and coverage can only be enforced
|
|
680
|
+
* after a merge — far downstream of the child that under-delivered.
|
|
681
|
+
*
|
|
682
|
+
* Fails closed on anything that is not a JSON array of strings,
|
|
683
|
+
* including an uninterpolated `{{…}}` token: a mis-scoped coverage
|
|
684
|
+
* check that silently widens back to the full corpus would reject
|
|
685
|
+
* every child forever with a verdict none of them can act on.
|
|
686
|
+
*/
|
|
687
|
+
expectPaths: z3.string().min(1).optional()
|
|
688
|
+
}),
|
|
689
|
+
/**
|
|
690
|
+
* A fanout-input batch file must reproduce a connector corpus manifest's own
|
|
691
|
+
* batch array exactly — same count, same ordinals, same paths, in order.
|
|
692
|
+
*
|
|
693
|
+
* The upstream sibling of {@link corpusCoverage}: that check proves the work
|
|
694
|
+
* covered the corpus, this one proves the *plan* did. A batch file is the
|
|
695
|
+
* spawn host's `overFile`, so a batch dropped here is never reviewed by
|
|
696
|
+
* anyone and never appears in any coverage ledger. `json-valid` + `minBytes`
|
|
697
|
+
* cannot see it: a batch array truncated at the model's output cap is still
|
|
698
|
+
* syntactically perfect JSON. Wild-caught on a 509-file PR whose scope step
|
|
699
|
+
* published 10 of 21 batches — 259 files silently out of scope, and the run
|
|
700
|
+
* then deadlocked eight attempts deep in the downstream merge gate, which is
|
|
701
|
+
* the wrong place to learn it and the one place that cannot fix it.
|
|
702
|
+
*/
|
|
703
|
+
z3.object({
|
|
704
|
+
kind: z3.literal("corpusBatches"),
|
|
705
|
+
file: z3.string().min(1),
|
|
706
|
+
corpusDir: z3.string().min(1),
|
|
707
|
+
/** Filename suffix identifying the manifest inside the corpus. */
|
|
708
|
+
manifestSuffix: z3.string().min(1).optional(),
|
|
709
|
+
/** Manifest field holding the authoritative batch array. */
|
|
710
|
+
itemsField: z3.string().min(1).optional(),
|
|
711
|
+
/** Manifest field holding the total item count the batches must cover. */
|
|
712
|
+
totalField: z3.string().min(1).optional(),
|
|
713
|
+
artifact: z3.boolean().optional()
|
|
653
714
|
}),
|
|
654
715
|
/**
|
|
655
716
|
* The H1 slide titles in `file` must match the numbered slide headings in
|
|
@@ -662,7 +723,8 @@ var GateCheckSchema = z3.discriminatedUnion("kind", [
|
|
|
662
723
|
file: z3.string().min(1),
|
|
663
724
|
outlineFile: z3.string().min(1),
|
|
664
725
|
/** Read outlineFile from artifacts while file uses the check's primary surface. */
|
|
665
|
-
outlineArtifact: z3.boolean().optional()
|
|
726
|
+
outlineArtifact: z3.boolean().optional(),
|
|
727
|
+
artifact: z3.boolean().optional()
|
|
666
728
|
}),
|
|
667
729
|
/**
|
|
668
730
|
* Named facts in `file` must come from authorized sources: each fact
|
|
@@ -3009,6 +3071,26 @@ var ChatMessageToolCallSchema = z17.object({
|
|
|
3009
3071
|
addedLines: z17.number().int().nonnegative().optional(),
|
|
3010
3072
|
removedLines: z17.number().int().nonnegative().optional()
|
|
3011
3073
|
});
|
|
3074
|
+
var ChatSessionSourceSchema = z17.object({
|
|
3075
|
+
kind: z17.literal("external"),
|
|
3076
|
+
/** Stable integration id, e.g. `pi`. */
|
|
3077
|
+
appId: z17.string().min(1),
|
|
3078
|
+
/** Human-facing application name, e.g. `Pi`. */
|
|
3079
|
+
appName: z17.string().min(1),
|
|
3080
|
+
/** The external application's stable conversation/session identifier. */
|
|
3081
|
+
externalConversationId: z17.string().min(1),
|
|
3082
|
+
/** External threads are ledger views; the owning app controls replies. */
|
|
3083
|
+
readOnly: z17.literal(true),
|
|
3084
|
+
/** Working-directory hint supplied by the external app, when available. */
|
|
3085
|
+
workingDirectory: z17.string().optional(),
|
|
3086
|
+
/** Project id/name hint supplied by the external app, when available. */
|
|
3087
|
+
projectHint: z17.string().optional()
|
|
3088
|
+
});
|
|
3089
|
+
var ReferencedFileKindSchema = z17.enum(["artifact", "workspace"]);
|
|
3090
|
+
var ReferencedFileSchema = z17.object({
|
|
3091
|
+
kind: ReferencedFileKindSchema,
|
|
3092
|
+
path: z17.string()
|
|
3093
|
+
});
|
|
3012
3094
|
var ChatMessageSchema = z17.object({
|
|
3013
3095
|
role: z17.enum(["user", "assistant"]),
|
|
3014
3096
|
content: z17.string(),
|
|
@@ -3018,17 +3100,27 @@ var ChatMessageSchema = z17.object({
|
|
|
3018
3100
|
gezelName: z17.string()
|
|
3019
3101
|
}).optional(),
|
|
3020
3102
|
/**
|
|
3021
|
-
*
|
|
3022
|
-
*
|
|
3023
|
-
*
|
|
3024
|
-
*
|
|
3025
|
-
*
|
|
3026
|
-
*
|
|
3103
|
+
* Real files the assistant reply named in its body text — artifacts
|
|
3104
|
+
* drawer and workspace tree alike. Populated on save by the
|
|
3105
|
+
* server-side reference parser, and used by the chat UI to render a
|
|
3106
|
+
* chip row under the bubble and to linkify inline code spans that
|
|
3107
|
+
* match a real file. Back-stops Copilot's tool-call blindspot and any
|
|
3108
|
+
* "AI wrote a file outside the MCP tools" path.
|
|
3109
|
+
*/
|
|
3110
|
+
referencedFiles: z17.array(ReferencedFileSchema).optional(),
|
|
3111
|
+
/**
|
|
3112
|
+
* The artifact-only projection of {@link referencedFiles}, still
|
|
3113
|
+
* written so an older `@bendyline/gezel-cli` (or any out-of-tree
|
|
3114
|
+
* reader) keeps working against a session file this daemon wrote.
|
|
3115
|
+
* Read `referencedFiles` in new code — this field cannot represent a
|
|
3116
|
+
* workspace path.
|
|
3117
|
+
*
|
|
3118
|
+
* @deprecated superseded by `referencedFiles`
|
|
3027
3119
|
*/
|
|
3028
3120
|
referencedArtifacts: z17.array(z17.string()).optional(),
|
|
3029
3121
|
/**
|
|
3030
3122
|
* Task refs (`<projectId>/<num>`) the assistant reply mentioned. Same
|
|
3031
|
-
* shape as `
|
|
3123
|
+
* shape as `referencedFiles` — populated on save, gated on the
|
|
3032
3124
|
* ref actually existing in the task store, surfaced in the chat
|
|
3033
3125
|
* bubble as click-through chips. Catches the common "I created task
|
|
3034
3126
|
* gezel-ux-roadmap/2" mention so the user can jump to it without
|
|
@@ -3121,6 +3213,25 @@ var ChatMessageSchema = z17.object({
|
|
|
3121
3213
|
* renders a small "nudged" chip on the bubble.
|
|
3122
3214
|
*/
|
|
3123
3215
|
nudge: z17.boolean().optional(),
|
|
3216
|
+
/**
|
|
3217
|
+
* The machinery — not the human — authored this `role: 'user'` message.
|
|
3218
|
+
* Task dispatch seeds, step handoffs, and project-page reaction seeds
|
|
3219
|
+
* all arrive as user turns because that is the only role a provider
|
|
3220
|
+
* will accept mid-conversation, but the person never typed them.
|
|
3221
|
+
*
|
|
3222
|
+
* Display-only marker: the model still sees an ordinary user turn, and
|
|
3223
|
+
* the UI labels the bubble **System** instead of "You". Without it the
|
|
3224
|
+
* flagship Home thread opened with "YOU · call `advance_task_step` to
|
|
3225
|
+
* hand off" — internal plumbing quoted back at the user in their own
|
|
3226
|
+
* voice, which reads as a bug and undoes the warm-companion framing the
|
|
3227
|
+
* whole product rests on.
|
|
3228
|
+
*
|
|
3229
|
+
* Set from the turn's `messageOrigin` (service-side `TurnMessageOrigin`);
|
|
3230
|
+
* an enum rather than a boolean so a future dispatch/reaction split can
|
|
3231
|
+
* widen it without a second field. Messages written before this field
|
|
3232
|
+
* existed are inferred at read time — see `Store.listTimeline`.
|
|
3233
|
+
*/
|
|
3234
|
+
origin: z17.enum(["system"]).optional(),
|
|
3124
3235
|
/**
|
|
3125
3236
|
* Persistent warnings attached to this assistant turn — fabricated
|
|
3126
3237
|
* tool-use detection, degraded provider state, etc. The streaming
|
|
@@ -3215,6 +3326,12 @@ var ChatEventSchema = z17.discriminatedUnion("type", [
|
|
|
3215
3326
|
*/
|
|
3216
3327
|
z17.object({ type: z17.literal("reasoning_delta"), content: z17.string() }),
|
|
3217
3328
|
z17.object({ type: z17.literal("complete"), message: ChatMessageSchema }),
|
|
3329
|
+
/**
|
|
3330
|
+
* The user submitted a message, but a cold provider session is still being
|
|
3331
|
+
* created. Project timelines render this as a temporary pending row until
|
|
3332
|
+
* the durable `user_message` or a terminal `error` arrives.
|
|
3333
|
+
*/
|
|
3334
|
+
z17.object({ type: z17.literal("user_message_pending"), preview: z17.string() }),
|
|
3218
3335
|
/**
|
|
3219
3336
|
* Emitted right after the user's message is appended to the session
|
|
3220
3337
|
* record. The legacy session-scoped UI inserted user messages locally
|
|
@@ -3538,11 +3655,27 @@ var ChatEventSchema = z17.discriminatedUnion("type", [
|
|
|
3538
3655
|
phase: z17.enum(["starting", "loading_model", "prefill", "generating", "ready"]),
|
|
3539
3656
|
detail: z17.string().optional(),
|
|
3540
3657
|
progress: z17.number().min(0).max(1).optional(),
|
|
3541
|
-
ttftMs: z17.number().int().nonnegative().optional()
|
|
3658
|
+
ttftMs: z17.number().int().nonnegative().optional(),
|
|
3659
|
+
/**
|
|
3660
|
+
* Exact cumulative completion tokens decoded so far this turn, as the
|
|
3661
|
+
* engine counts them (llama-server `timings.predicted_n`, MLX's
|
|
3662
|
+
* streamed `usage.output_tokens`). Present only on `generating`, and
|
|
3663
|
+
* only for engines that publish a running counter — the UI falls back
|
|
3664
|
+
* to an explicitly-approximate character estimate when it is absent,
|
|
3665
|
+
* so this field is what lets a readout drop its "≈".
|
|
3666
|
+
*/
|
|
3667
|
+
outputTokens: z17.number().int().nonnegative().optional(),
|
|
3668
|
+
/**
|
|
3669
|
+
* Exact decode rate right now, engine-measured over the generation
|
|
3670
|
+
* phase alone (llama-server `timings.predicted_per_second`, MLX's
|
|
3671
|
+
* `generation_tps`). Same contract as `outputTokens`: absent means the
|
|
3672
|
+
* UI must derive and mark its own estimate.
|
|
3673
|
+
*/
|
|
3674
|
+
tokensPerSec: z17.number().nonnegative().optional()
|
|
3542
3675
|
}),
|
|
3543
3676
|
/**
|
|
3544
|
-
* Per-turn telemetry for locally-hosted providers (llama-cpp
|
|
3545
|
-
*
|
|
3677
|
+
* Per-turn telemetry for locally-hosted providers (llama-cpp, Ollama,
|
|
3678
|
+
* MLX, and DS4). Emitted once at turn end with the concrete token counts
|
|
3546
3679
|
* the UI needs for a speed readout — input tokens, output tokens,
|
|
3547
3680
|
* wall-clock duration, and tokens-per-second on the generation
|
|
3548
3681
|
* phase. UI accumulates these in a rolling window to show an
|
|
@@ -3556,6 +3689,13 @@ var ChatEventSchema = z17.discriminatedUnion("type", [
|
|
|
3556
3689
|
z17.object({
|
|
3557
3690
|
type: z17.literal("turn_stats"),
|
|
3558
3691
|
provider: z17.enum(["llama-cpp", "ollama", "mlx", "ds4"]),
|
|
3692
|
+
/**
|
|
3693
|
+
* Model that generated the turn, as the session recorded it. Lets the
|
|
3694
|
+
* UI bucket speed by model instead of averaging a 27B and a 4B into
|
|
3695
|
+
* one meaningless number. Optional because older daemons (and remote
|
|
3696
|
+
* peers on an older wire) don't send it.
|
|
3697
|
+
*/
|
|
3698
|
+
model: z17.string().optional(),
|
|
3559
3699
|
promptTokens: z17.number().int().nonnegative(),
|
|
3560
3700
|
completionTokens: z17.number().int().nonnegative(),
|
|
3561
3701
|
durationMs: z17.number().int().nonnegative(),
|
|
@@ -3716,6 +3856,19 @@ var ChatEventSchema = z17.discriminatedUnion("type", [
|
|
|
3716
3856
|
state: z17.enum(["started", "ended", "failed"]),
|
|
3717
3857
|
generatedAt: z17.string().optional()
|
|
3718
3858
|
}),
|
|
3859
|
+
/**
|
|
3860
|
+
* Global signal from the ambient dashboard generator. `ended` means a
|
|
3861
|
+
* fresh PNG landed on disk (filename is the dated file under
|
|
3862
|
+
* `~/.gezel/ambient/`); the Electron shell reacts to it by re-applying
|
|
3863
|
+
* the wallpaper when the user opted in, and the Settings card
|
|
3864
|
+
* refreshes its preview.
|
|
3865
|
+
*/
|
|
3866
|
+
z17.object({
|
|
3867
|
+
type: z17.literal("ambient_dashboard"),
|
|
3868
|
+
state: z17.enum(["started", "ended", "failed"]),
|
|
3869
|
+
generatedAt: z17.string().optional(),
|
|
3870
|
+
filename: z17.string().optional()
|
|
3871
|
+
}),
|
|
3719
3872
|
/**
|
|
3720
3873
|
* Global (history-free) heartbeat from the boekwachter indexing loops —
|
|
3721
3874
|
* workspace scans, AI enrichment batches, weekly digests. Drives the live
|
|
@@ -3739,6 +3892,8 @@ var ChatEventEnvelopeSchema = z17.object({
|
|
|
3739
3892
|
sessionId: z17.string(),
|
|
3740
3893
|
gezelId: z17.string(),
|
|
3741
3894
|
projectId: z17.string(),
|
|
3895
|
+
/** Present for externally-owned read-only threads, including live turns. */
|
|
3896
|
+
sessionSource: ChatSessionSourceSchema.optional(),
|
|
3742
3897
|
event: ChatEventSchema
|
|
3743
3898
|
});
|
|
3744
3899
|
|
package/dist/paths.d.ts
CHANGED
|
@@ -314,6 +314,18 @@ declare function projectActivityFile(root: string, projectId: string): string;
|
|
|
314
314
|
declare function meesterStatusDir(root: string): string;
|
|
315
315
|
declare function meesterStatusFile(root: string): string;
|
|
316
316
|
declare function meesterStatusStateFile(root: string): string;
|
|
317
|
+
/**
|
|
318
|
+
* Home for the ambient dashboard — meester-generated PNG snapshots of the
|
|
319
|
+
* whole workshop, written for the OS ambient-display integration (wallpaper
|
|
320
|
+
* rotation points here). Holds dated `dashboard-*.png` files, a stable
|
|
321
|
+
* `latest.png` copy, the generator's `state.json`, and the Electron
|
|
322
|
+
* applier's `display-state.json` + `applied-a/b.png` slots. Per-user only —
|
|
323
|
+
* never under machineSharedHome: wallpaper is user-session state.
|
|
324
|
+
*/
|
|
325
|
+
declare function ambientDir(root: string): string;
|
|
326
|
+
declare function ambientDashboardStateFile(root: string): string;
|
|
327
|
+
declare function ambientDashboardLatestFile(root: string): string;
|
|
328
|
+
declare function ambientDisplayStateFile(root: string): string;
|
|
317
329
|
declare function projectTasksDir(root: string, projectId: string, external?: ExternalFolders): string;
|
|
318
330
|
declare function projectTaskNextIdFile(root: string, projectId: string, external?: ExternalFolders): string;
|
|
319
331
|
declare function projectTaskDir(root: string, projectId: string, num: number, external?: ExternalFolders): string;
|
|
@@ -432,7 +444,16 @@ declare function fallbackProjectIndexDir(root: string, projectId: string): strin
|
|
|
432
444
|
* retain the historical `.gezel/index/` placement; machine-shared workspaces
|
|
433
445
|
* always use the account-private fallback to prevent cross-daemon SQLite use.
|
|
434
446
|
*/
|
|
435
|
-
declare function projectContentIndexDbFile(root: string, projectId: string, workspaceDir: string
|
|
447
|
+
declare function projectContentIndexDbFile(root: string, projectId: string, workspaceDir: string, opts?: {
|
|
448
|
+
/**
|
|
449
|
+
* Keep the database out of the workspace even though it is writable.
|
|
450
|
+
* The shared document library's workspace is the user's own documents
|
|
451
|
+
* folder, which may be a cloud-synced directory (OneDrive/Dropbox):
|
|
452
|
+
* mutable SQLite must not ride a sync client, and the user must not find
|
|
453
|
+
* a `.gezel/` directory in a folder they browse in Finder.
|
|
454
|
+
*/
|
|
455
|
+
forceHomeSide?: boolean;
|
|
456
|
+
}): string;
|
|
436
457
|
/**
|
|
437
458
|
* Derived FTS index over a project's artifact corpora (connector records under
|
|
438
459
|
* `artifacts/data/**`). Always in the account-private sidecar, never inside
|
|
@@ -585,6 +606,21 @@ declare function keurmeesterCasesDir(root: string): string;
|
|
|
585
606
|
declare function keurmeesterDigestsDir(root: string): string;
|
|
586
607
|
/** Digest idempotency state (last generated date, last case offset). */
|
|
587
608
|
declare function keurmeesterDigestStatePath(root: string): string;
|
|
609
|
+
/**
|
|
610
|
+
* Root of every downloaded engine payload: per-engine model stores, the
|
|
611
|
+
* verified native binary releases, the HuggingFace cache, uv virtualenvs,
|
|
612
|
+
* and per-engine scratch. This is the bulk of a heavy install's disk use —
|
|
613
|
+
* on a working machine it dwarfs everything else in the home directory
|
|
614
|
+
* combined. Owned by the engine/model managers, not the Store.
|
|
615
|
+
*/
|
|
616
|
+
declare function enginesRoot(root: string): string;
|
|
617
|
+
/**
|
|
618
|
+
* Pinned node + pnpm runtimes the supervisor extracts so packaged installs
|
|
619
|
+
* need no system toolchain. The daemon executes through these, so nothing
|
|
620
|
+
* daemon-side may delete them; the platform uninstaller owns removal and the
|
|
621
|
+
* supervisor re-extracts on a sentinel mismatch.
|
|
622
|
+
*/
|
|
623
|
+
declare function binRuntimeRoot(root: string): string;
|
|
588
624
|
/**
|
|
589
625
|
* Read the on-disk `config.json` without instantiating a Store. Used at
|
|
590
626
|
* boot to discover `externalFolders` before the Store is constructed
|
|
@@ -598,4 +634,4 @@ declare function keurmeesterDigestStatePath(root: string): string;
|
|
|
598
634
|
*/
|
|
599
635
|
declare function readConfigRaw(root: string): Promise<Record<string, unknown>>;
|
|
600
636
|
|
|
601
|
-
export { type ExternalFolders, type GezelPaths, MACHINE_SHARED_MARKER, type MachineStorageScope, PROJECT_SHADOW_DIR_NAME, activeMachineSharedHome, backupsDir, channelsDir, craftbookShardPrefix, craftbookTemplateDir, craftbookTemplateManifestFile, craftbookTemplateScriptFile, craftbookTemplateScriptsDir, craftbookTemplateVersionDir, craftbookTemplateVersionManifestFile, craftbookTemplatesRoot, daemonTransactionsRoot, deviceIdentityFile, fallbackProjectIndexDir, fallbackProjectVillageFile, foldersStateDir, gezelDir, gezelGrowthPath, gezelHome, gezelLocalDir, gezelMemoriesDir, gezelPaths, gezelPoppetjePath, gezelSessionFile, gezelSessionsDir, gezelStorageScope, gezelToolsPath, gezelToolsetsFile, gezelToolsetsInstallDir, gildeLiveRoot, gildeLiveStateFile, gildeLiveVersionDir, gildeLiveVersionsDir, globalHistoryFile, globalIndexDbFile, globalIndexDir, keurmeesterCasesDir, keurmeesterDigestStatePath, keurmeesterDigestsDir, keurmeesterDir, machineSharedGezelDir, machineSharedHome, machineSharedMarkerFile, machineSharedProjectDir, meesterStatusDir, meesterStatusFile, meesterStatusStateFile, pendingGrantsFile, playwrightBrowsersDir, projectActivityFile, projectArtifactsDir, projectArtifactsIndexDbFile, projectBoekwachterIssuesFile, projectCodeReviewsFile, projectContentIndexDbFile, projectCreateTransactionsRoot, projectDir, projectDocsDir, projectFindingLifecycleFile, projectHistoryFile, projectIndexDir, projectInternalGithubDir, projectLocalConfigFile, projectLocalCraftbookDir, projectLocalCraftbooksRoot, projectLocalDir, projectLocalFilesDir, projectLocalGezelDir, projectLocalGezelsRoot, projectLocalImportsFile, projectLocalIndexDbFile, projectLocalIndexDir, projectLocalPendingImportsFile, projectLocalQuarantineDir, projectLocalRoot, projectLocalVillageFile, projectMemoriesDir, projectMemoryIndexDir, projectMetaFile, projectPrivateDir, projectQuestionsFile, projectReportActionsFile, projectScriptFile, projectScriptRunFile, projectScriptRunsDir, projectScriptsDir, projectShadowDir, projectStorageDir, projectStorageScope, projectTaskAboutFile, projectTaskDir, projectTaskFile, projectTaskNextIdFile, projectTaskNotesFile, projectTasksDir, projectTerminalFile, projectTerminalsDir, projectToolsetsFile, projectToolsetsInstallDir, projectTypeDir, projectTypeManifestFile, projectTypeShardPrefix, projectTypeVersionDir, projectTypeVersionManifestFile, projectTypesRoot, readConfigRaw, remotesFile, secretsFile, secretsKeyFile, sharedCloneDir, sharedClonesRoot, sharedToolsetsFile, sharedToolsetsInstallDir, systemInstalledToolsetsFile, systemToolsetsFile, systemToolsetsInstallDir, tokensFile, toolsetConfigFile, toolsetConfigsDir, userGezelDir, userProjectDir, userScriptFile, userScriptsDir };
|
|
637
|
+
export { type ExternalFolders, type GezelPaths, MACHINE_SHARED_MARKER, type MachineStorageScope, PROJECT_SHADOW_DIR_NAME, activeMachineSharedHome, ambientDashboardLatestFile, ambientDashboardStateFile, ambientDir, ambientDisplayStateFile, backupsDir, binRuntimeRoot, channelsDir, craftbookShardPrefix, craftbookTemplateDir, craftbookTemplateManifestFile, craftbookTemplateScriptFile, craftbookTemplateScriptsDir, craftbookTemplateVersionDir, craftbookTemplateVersionManifestFile, craftbookTemplatesRoot, daemonTransactionsRoot, deviceIdentityFile, enginesRoot, fallbackProjectIndexDir, fallbackProjectVillageFile, foldersStateDir, gezelDir, gezelGrowthPath, gezelHome, gezelLocalDir, gezelMemoriesDir, gezelPaths, gezelPoppetjePath, gezelSessionFile, gezelSessionsDir, gezelStorageScope, gezelToolsPath, gezelToolsetsFile, gezelToolsetsInstallDir, gildeLiveRoot, gildeLiveStateFile, gildeLiveVersionDir, gildeLiveVersionsDir, globalHistoryFile, globalIndexDbFile, globalIndexDir, keurmeesterCasesDir, keurmeesterDigestStatePath, keurmeesterDigestsDir, keurmeesterDir, machineSharedGezelDir, machineSharedHome, machineSharedMarkerFile, machineSharedProjectDir, meesterStatusDir, meesterStatusFile, meesterStatusStateFile, pendingGrantsFile, playwrightBrowsersDir, projectActivityFile, projectArtifactsDir, projectArtifactsIndexDbFile, projectBoekwachterIssuesFile, projectCodeReviewsFile, projectContentIndexDbFile, projectCreateTransactionsRoot, projectDir, projectDocsDir, projectFindingLifecycleFile, projectHistoryFile, projectIndexDir, projectInternalGithubDir, projectLocalConfigFile, projectLocalCraftbookDir, projectLocalCraftbooksRoot, projectLocalDir, projectLocalFilesDir, projectLocalGezelDir, projectLocalGezelsRoot, projectLocalImportsFile, projectLocalIndexDbFile, projectLocalIndexDir, projectLocalPendingImportsFile, projectLocalQuarantineDir, projectLocalRoot, projectLocalVillageFile, projectMemoriesDir, projectMemoryIndexDir, projectMetaFile, projectPrivateDir, projectQuestionsFile, projectReportActionsFile, projectScriptFile, projectScriptRunFile, projectScriptRunsDir, projectScriptsDir, projectShadowDir, projectStorageDir, projectStorageScope, projectTaskAboutFile, projectTaskDir, projectTaskFile, projectTaskNextIdFile, projectTaskNotesFile, projectTasksDir, projectTerminalFile, projectTerminalsDir, projectToolsetsFile, projectToolsetsInstallDir, projectTypeDir, projectTypeManifestFile, projectTypeShardPrefix, projectTypeVersionDir, projectTypeVersionManifestFile, projectTypesRoot, readConfigRaw, remotesFile, secretsFile, secretsKeyFile, sharedCloneDir, sharedClonesRoot, sharedToolsetsFile, sharedToolsetsInstallDir, systemInstalledToolsetsFile, systemToolsetsFile, systemToolsetsInstallDir, tokensFile, toolsetConfigFile, toolsetConfigsDir, userGezelDir, userProjectDir, userScriptFile, userScriptsDir };
|
package/dist/paths.js
CHANGED
|
@@ -286,6 +286,18 @@ function meesterStatusFile(root) {
|
|
|
286
286
|
function meesterStatusStateFile(root) {
|
|
287
287
|
return join(meesterStatusDir(root), "state.json");
|
|
288
288
|
}
|
|
289
|
+
function ambientDir(root) {
|
|
290
|
+
return join(root, "ambient");
|
|
291
|
+
}
|
|
292
|
+
function ambientDashboardStateFile(root) {
|
|
293
|
+
return join(ambientDir(root), "state.json");
|
|
294
|
+
}
|
|
295
|
+
function ambientDashboardLatestFile(root) {
|
|
296
|
+
return join(ambientDir(root), "latest.png");
|
|
297
|
+
}
|
|
298
|
+
function ambientDisplayStateFile(root) {
|
|
299
|
+
return join(ambientDir(root), "display-state.json");
|
|
300
|
+
}
|
|
289
301
|
function projectTasksDir(root, projectId, external) {
|
|
290
302
|
return join(projectDir(root, projectId, external), "tasks");
|
|
291
303
|
}
|
|
@@ -382,8 +394,8 @@ function projectLocalQuarantineDir(workspaceDir) {
|
|
|
382
394
|
function fallbackProjectIndexDir(root, projectId) {
|
|
383
395
|
return join(projectPrivateDir(root, projectId), "index");
|
|
384
396
|
}
|
|
385
|
-
function projectContentIndexDbFile(root, projectId, workspaceDir) {
|
|
386
|
-
return projectStorageScope(root, projectId) === "machine-shared" ? join(fallbackProjectIndexDir(root, projectId), "index.db") : projectLocalIndexDbFile(workspaceDir);
|
|
397
|
+
function projectContentIndexDbFile(root, projectId, workspaceDir, opts = {}) {
|
|
398
|
+
return opts.forceHomeSide || projectStorageScope(root, projectId) === "machine-shared" ? join(fallbackProjectIndexDir(root, projectId), "index.db") : projectLocalIndexDbFile(workspaceDir);
|
|
387
399
|
}
|
|
388
400
|
function projectArtifactsIndexDbFile(root, projectId) {
|
|
389
401
|
return join(fallbackProjectIndexDir(root, projectId), "artifacts.db");
|
|
@@ -497,6 +509,12 @@ function keurmeesterDigestsDir(root) {
|
|
|
497
509
|
function keurmeesterDigestStatePath(root) {
|
|
498
510
|
return join(keurmeesterDir(root), "digest-state.json");
|
|
499
511
|
}
|
|
512
|
+
function enginesRoot(root) {
|
|
513
|
+
return join(root, "engines");
|
|
514
|
+
}
|
|
515
|
+
function binRuntimeRoot(root) {
|
|
516
|
+
return join(root, "bin");
|
|
517
|
+
}
|
|
500
518
|
async function readConfigRaw(root) {
|
|
501
519
|
const { readFile } = await import("fs/promises");
|
|
502
520
|
try {
|
|
@@ -510,7 +528,12 @@ export {
|
|
|
510
528
|
MACHINE_SHARED_MARKER,
|
|
511
529
|
PROJECT_SHADOW_DIR_NAME,
|
|
512
530
|
activeMachineSharedHome,
|
|
531
|
+
ambientDashboardLatestFile,
|
|
532
|
+
ambientDashboardStateFile,
|
|
533
|
+
ambientDir,
|
|
534
|
+
ambientDisplayStateFile,
|
|
513
535
|
backupsDir,
|
|
536
|
+
binRuntimeRoot,
|
|
514
537
|
channelsDir,
|
|
515
538
|
craftbookShardPrefix,
|
|
516
539
|
craftbookTemplateDir,
|
|
@@ -522,6 +545,7 @@ export {
|
|
|
522
545
|
craftbookTemplatesRoot,
|
|
523
546
|
daemonTransactionsRoot,
|
|
524
547
|
deviceIdentityFile,
|
|
548
|
+
enginesRoot,
|
|
525
549
|
fallbackProjectIndexDir,
|
|
526
550
|
fallbackProjectVillageFile,
|
|
527
551
|
foldersStateDir,
|