@bendyline/gezel 1.0.7 → 1.1.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.
@@ -1,4 +1,4 @@
1
- import { b as CraftbookDocError, c as CraftbookDoc, U as ParsedGezel, W as ParsedReportAction, a3 as ReportActionParseIssue } from '../report-action-Kt6W23xy.js';
1
+ import { b as CraftbookDocError, c as CraftbookDoc, W as ParsedGezel, Y as ParsedReportAction, a5 as ReportActionParseIssue } from '../report-action-Dn_QrwwK.js';
2
2
  import 'zod';
3
3
 
4
4
  interface CraftbookMarkdownParse {
@@ -1061,6 +1061,65 @@ var CraftbookStepInputSchema = z6.object({
1061
1061
  /** Read from the artifacts drawer instead of the project workspace. */
1062
1062
  artifact: z6.boolean().optional().describe("True for the artifacts drawer; false/omitted for the project workspace.")
1063
1063
  });
1064
+ var CraftbookStepWritableOutputMediumSchema = z6.enum([
1065
+ "workspace",
1066
+ "artifact",
1067
+ "task-note"
1068
+ ]);
1069
+ var CraftbookStepOutputMediumSchema = z6.enum([
1070
+ ...CraftbookStepWritableOutputMediumSchema.options,
1071
+ "none"
1072
+ ]);
1073
+ var CraftbookStepToolPolicySchema = z6.object({
1074
+ disallowToolsets: z6.array(z6.string().trim().min(1)).min(1).optional(),
1075
+ disallowBuiltinToolsets: z6.array(z6.string().trim().min(1)).min(1).optional(),
1076
+ outputMedium: CraftbookStepOutputMediumSchema.optional(),
1077
+ /**
1078
+ * Other intentional write surfaces used while producing the primary
1079
+ * result (for example edit workspace source + emit an artifact report).
1080
+ * `none` is never a secondary medium.
1081
+ */
1082
+ additionalOutputMedia: z6.array(CraftbookStepWritableOutputMediumSchema).min(1).optional()
1083
+ }).strict().superRefine((policy, ctx) => {
1084
+ const additional = new Set(policy.additionalOutputMedia ?? []);
1085
+ if (policy.outputMedium === "none" && additional.size > 0) {
1086
+ ctx.addIssue({
1087
+ code: z6.ZodIssueCode.custom,
1088
+ path: ["additionalOutputMedia"],
1089
+ message: "`none` cannot have secondary output media"
1090
+ });
1091
+ }
1092
+ if (policy.outputMedium && policy.outputMedium !== "none" && additional.has(policy.outputMedium)) {
1093
+ ctx.addIssue({
1094
+ code: z6.ZodIssueCode.custom,
1095
+ path: ["additionalOutputMedia"],
1096
+ message: "the primary output medium must not be repeated as a secondary medium"
1097
+ });
1098
+ }
1099
+ const media = /* @__PURE__ */ new Set([policy.outputMedium, ...additional]);
1100
+ const denied = new Set(policy.disallowBuiltinToolsets ?? []);
1101
+ if (media.has("workspace") && denied.has("workspace-fs-write")) {
1102
+ ctx.addIssue({
1103
+ code: z6.ZodIssueCode.custom,
1104
+ path: ["disallowBuiltinToolsets"],
1105
+ message: "workspace output conflicts with disallowing `workspace-fs-write`"
1106
+ });
1107
+ }
1108
+ if (media.has("artifact") && denied.has("artifacts")) {
1109
+ ctx.addIssue({
1110
+ code: z6.ZodIssueCode.custom,
1111
+ path: ["disallowBuiltinToolsets"],
1112
+ message: "artifact output conflicts with disallowing `artifacts`"
1113
+ });
1114
+ }
1115
+ if (media.has("task-note") && denied.has("tasks")) {
1116
+ ctx.addIssue({
1117
+ code: z6.ZodIssueCode.custom,
1118
+ path: ["disallowBuiltinToolsets"],
1119
+ message: "task-note output conflicts with disallowing `tasks`"
1120
+ });
1121
+ }
1122
+ });
1064
1123
  var ModelTierSchema = z6.enum(MODEL_TIER_ORDER);
1065
1124
  var CraftbookStepSchema = z6.object({
1066
1125
  id: z6.string().min(1),
@@ -1094,13 +1153,17 @@ var CraftbookStepSchema = z6.object({
1094
1153
  capabilityFloor: ModelTierSchema.optional(),
1095
1154
  /** Per-phase indexed-context policy; overrides gezel and install defaults. */
1096
1155
  retrieval: RetrievalPolicySchema.optional(),
1156
+ /** Per-step subtractive tool and output-surface policy. */
1157
+ toolPolicy: CraftbookStepToolPolicySchema.optional(),
1097
1158
  assignee: TaskAssigneeSchema.optional(),
1098
1159
  /** Setup scripts, run in order when the step activates. Single ref = legacy shape. */
1099
1160
  onEnter: ScriptRefListSchema.optional(),
1100
1161
  /**
1101
1162
  * Cleanup scripts — the `finally` of the step. Run in order AFTER the
1102
- * gate (if any) approves; never on a gate reject. Branch predicates
1103
- * read the LAST ref's output (legacy routing; prefer gate routing).
1163
+ * gate (if any) approves; never on a gate reject. Every script must
1164
+ * succeed or the step remains incomplete and the task pauses. Branch
1165
+ * predicates read the LAST ref's output (legacy routing; prefer gate
1166
+ * routing).
1104
1167
  */
1105
1168
  onExit: ScriptRefListSchema.optional(),
1106
1169
  /** Required file inputs for this step, in the order they should be opened. */
@@ -1485,6 +1548,8 @@ var NewCraftbookStepSchema = z6.object({
1485
1548
  capabilityFloor: ModelTierSchema.optional(),
1486
1549
  /** See {@link CraftbookStepSchema.shape.retrieval}. */
1487
1550
  retrieval: RetrievalPolicySchema.optional(),
1551
+ /** See {@link CraftbookStepSchema.shape.toolPolicy}. */
1552
+ toolPolicy: CraftbookStepToolPolicySchema.optional(),
1488
1553
  assignee: TaskAssigneeSchema.optional(),
1489
1554
  onEnter: ScriptRefListSchema.optional(),
1490
1555
  onExit: ScriptRefListSchema.optional(),
@@ -1792,6 +1857,8 @@ var STEP_FENCE_KEYS = [
1792
1857
  "suggestedGezelId",
1793
1858
  "suggestedRole",
1794
1859
  "capabilityFloor",
1860
+ "retrieval",
1861
+ "toolPolicy",
1795
1862
  "assignee",
1796
1863
  "deliverable",
1797
1864
  "onEnter",
@@ -2629,6 +2696,7 @@ var TaskPausedReasonSchema = z15.enum([
2629
2696
  "gate_plateau",
2630
2697
  "gate_unsatisfiable",
2631
2698
  "gate_infrastructure",
2699
+ "step_exit_infrastructure",
2632
2700
  "step_stalled",
2633
2701
  "budget_exhausted"
2634
2702
  ]);
@@ -3261,6 +3329,14 @@ var ToolCallCardSchema = z19.discriminatedUnion("kind", [
3261
3329
  ]);
3262
3330
  var ChatMessageToolCallSchema = z19.object({
3263
3331
  name: z19.string(),
3332
+ /**
3333
+ * ISO timestamp of the call's START. Optional: absent on every message
3334
+ * persisted before this field existed, so readers must not assume it.
3335
+ * End time derives as `at + durationMs`. This is what gives replay
3336
+ * (run recordings, the eval movie pipeline) intra-turn ordering with
3337
+ * absolute time — array order alone cannot place calls on a timeline.
3338
+ */
3339
+ at: z19.string().optional(),
3264
3340
  durationMs: z19.number(),
3265
3341
  success: z19.boolean(),
3266
3342
  errorMessage: z19.string().optional(),
@@ -3344,13 +3420,31 @@ var ReferencedFileSchema = z19.object({
3344
3420
  kind: ReferencedFileKindSchema,
3345
3421
  path: z19.string()
3346
3422
  });
3423
+ var ContextCompactionSchema = z19.object({
3424
+ removedCount: z19.number().int().nonnegative(),
3425
+ contextWindow: z19.number().int().positive(),
3426
+ estimatedTokensBefore: z19.number().int().nonnegative(),
3427
+ compactionCount: z19.number().int().positive(),
3428
+ autoCompactRatio: z19.number().positive().max(1)
3429
+ });
3347
3430
  var ChatMessageSchema = z19.object({
3348
3431
  role: z19.enum(["user", "assistant"]),
3349
3432
  content: z19.string(),
3350
3433
  at: z19.string(),
3351
3434
  from: z19.object({
3352
3435
  gezelId: z19.string(),
3353
- gezelName: z19.string()
3436
+ gezelName: z19.string(),
3437
+ /**
3438
+ * The SENDER's session id — the durable per-edge record of which
3439
+ * thread this message came from. `session.parentSession` only says
3440
+ * which session first opened the thread (stable containment);
3441
+ * this field is the ground truth for every individual delegation
3442
+ * edge, including later senders into an existing session. Optional:
3443
+ * absent on messages persisted before the field existed.
3444
+ */
3445
+ sessionId: z19.string().optional(),
3446
+ /** How the sender reached this session; mirrors SessionParent.kind. */
3447
+ kind: z19.enum(["delegation", "consultation", "task-entry", "task-handoff"]).optional()
3354
3448
  }).optional(),
3355
3449
  /**
3356
3450
  * Real files the assistant reply named in its body text — artifacts
@@ -3465,6 +3559,13 @@ var ChatMessageSchema = z19.object({
3465
3559
  "growth-announcement",
3466
3560
  "keurmeester-notice"
3467
3561
  ]).optional(),
3562
+ /**
3563
+ * Present on a synthetic `compaction-summary` message. The UI renders this
3564
+ * as an explicit context-maintenance marker (including the effective token
3565
+ * window and number of messages summarized) rather than pretending it was
3566
+ * an ordinary assistant reply.
3567
+ */
3568
+ contextCompaction: ContextCompactionSchema.optional(),
3468
3569
  /**
3469
3570
  * Display flag: the model sees this message as normal history, but the
3470
3571
  * chat transcript UI never renders a bubble for it. Set on
@@ -3485,6 +3586,13 @@ var ChatMessageSchema = z19.object({
3485
3586
  * renders a small "nudged" chip on the bubble.
3486
3587
  */
3487
3588
  nudge: z19.boolean().optional(),
3589
+ /**
3590
+ * The prompt draft (`artifacts/prompts/<draftId>/`) this user message was
3591
+ * sent from. Display-only: the model never sees it, and the draft may since
3592
+ * have been swept, so the UI must treat a dangling id as "no prompt to
3593
+ * open" rather than an error.
3594
+ */
3595
+ draftId: z19.string().optional(),
3488
3596
  /**
3489
3597
  * The machinery — not the human — authored this `role: 'user'` message.
3490
3598
  * Task dispatch seeds, step handoffs, and project-page reaction seeds
@@ -3620,6 +3728,8 @@ var ChatEventSchema = z19.discriminatedUnion("type", [
3620
3728
  z19.object({
3621
3729
  type: z19.literal("tool"),
3622
3730
  name: z19.string(),
3731
+ /** ISO start-of-call timestamp; see ChatMessageToolCallSchema.at. */
3732
+ at: z19.string().optional(),
3623
3733
  durationMs: z19.number(),
3624
3734
  success: z19.boolean(),
3625
3735
  errorMessage: z19.string().optional(),
@@ -3795,16 +3905,33 @@ var ChatEventSchema = z19.discriminatedUnion("type", [
3795
3905
  reason: z19.enum(["started", "canceled", "rejected"])
3796
3906
  }),
3797
3907
  /**
3798
- * Local-provider context policy: emitted when accumulated conversation
3799
- * exceeds a safety fraction of the session's effective model context.
3800
- * The UI may suggest starting fresh because this event is never emitted
3801
- * for a first-turn standing system/tool prefix.
3908
+ * Effective context policy for a local or remote-local session. Emitted on
3909
+ * each turn so the live UI can show the model's token window immediately;
3910
+ * the same values are persisted on the session for reloads.
3911
+ */
3912
+ z19.object({
3913
+ type: z19.literal("context_window"),
3914
+ numCtx: z19.number().int().positive(),
3915
+ model: z19.string(),
3916
+ autoCompactRatio: z19.number().positive().max(1),
3917
+ /**
3918
+ * Estimated prompt size for the turn about to run, in the same
3919
+ * chars/4 units the compaction check itself uses. Absent on older
3920
+ * daemons, which published the window without the fill.
3921
+ */
3922
+ estimatedTokens: z19.number().int().nonnegative().optional()
3923
+ }),
3924
+ /**
3925
+ * Local-provider context policy: emitted only when accumulated conversation
3926
+ * could not be compacted automatically. Normal pressure is handled without
3927
+ * a warning; this is the exceptional maintenance-failure path.
3802
3928
  */
3803
3929
  z19.object({
3804
3930
  type: z19.literal("context_warning"),
3805
3931
  estimatedTokens: z19.number(),
3806
3932
  numCtx: z19.number(),
3807
- model: z19.string()
3933
+ model: z19.string(),
3934
+ reason: z19.literal("compaction_failed").optional()
3808
3935
  }),
3809
3936
  /**
3810
3937
  * Local-provider context policy: emitted right after in-flight compaction collapses
@@ -3816,7 +3943,13 @@ var ChatEventSchema = z19.discriminatedUnion("type", [
3816
3943
  z19.object({
3817
3944
  type: z19.literal("context_compacted"),
3818
3945
  removedCount: z19.number().int().nonnegative(),
3819
- model: z19.string()
3946
+ model: z19.string(),
3947
+ /** Optional for wire compatibility with pre-context-visibility daemons. */
3948
+ numCtx: z19.number().int().positive().optional(),
3949
+ estimatedTokensBefore: z19.number().int().nonnegative().optional(),
3950
+ autoCompactRatio: z19.number().positive().max(1).optional(),
3951
+ compactionCount: z19.number().int().positive().optional(),
3952
+ mode: z19.enum(["between-turn", "mid-turn"]).optional()
3820
3953
  }),
3821
3954
  /**
3822
3955
  * Emitted when the chat manager detects a self-chat / compaction loop —
@@ -4113,6 +4246,26 @@ var ChatEventSchema = z19.discriminatedUnion("type", [
4113
4246
  gezelId: z19.string(),
4114
4247
  name: z19.string()
4115
4248
  }),
4249
+ /**
4250
+ * A prompt draft was created, edited, re-filed, sent, or removed. Emitted
4251
+ * on the project stream so a thread picker open in another window folds the
4252
+ * change in. Content-only churn rides this event too (autosave fires it
4253
+ * about once a second per typing user), so consumers must debounce and
4254
+ * should ignore an event for the draft they are themselves editing.
4255
+ *
4256
+ * `gezelId` is the draft's, not the envelope's: a draft that will start a
4257
+ * new thread has no session for the envelope to be scoped by.
4258
+ */
4259
+ z19.object({
4260
+ type: z19.literal("prompt_draft_changed"),
4261
+ projectId: z19.string(),
4262
+ gezelId: z19.string(),
4263
+ draftId: z19.string(),
4264
+ sessionId: z19.string().nullable(),
4265
+ status: z19.enum(["draft", "sent"]),
4266
+ deleted: z19.boolean().optional(),
4267
+ updatedAt: z19.string()
4268
+ }),
4116
4269
  /**
4117
4270
  * Global (project-less) signal that Night Shift mode flipped ON/OFF.
4118
4271
  * Emitted by `NightShiftManager` on every state transition so the UI
package/dist/paths.d.ts CHANGED
@@ -290,6 +290,18 @@ declare const PROJECT_DIFFPACKS_DIR_NAME = "diffpacks";
290
290
  declare function projectDiffpacksDir(root: string, projectId: string, external?: ExternalFolders): string;
291
291
  /** One pack's folder: `artifacts/diffpacks/<packId>/`. */
292
292
  declare function projectDiffpackDir(root: string, projectId: string, packId: string, external?: ExternalFolders): string;
293
+ /**
294
+ * Reserved artifacts subtree holding the user's chat prompt drafts. Each draft
295
+ * owns `message.md` (the prompt markdown), `message_files/` (its uploads,
296
+ * referenced document-relatively while editing) and `draft.json` (thread
297
+ * association, status, sent stamps). Lives under artifacts so a draft is an
298
+ * ordinary inspectable file the user can open, back up, and grep.
299
+ */
300
+ declare const PROJECT_PROMPTS_DIR_NAME = "prompts";
301
+ /** Per-project `artifacts/prompts/` root. */
302
+ declare function projectPromptsDir(root: string, projectId: string, external?: ExternalFolders): string;
303
+ /** One draft's folder: `artifacts/prompts/<draftId>/`. */
304
+ declare function projectPromptDraftDir(root: string, projectId: string, draftId: string, external?: ExternalFolders): string;
293
305
  /** Per-project memories folder (daily markdown + summary + vectra index). */
294
306
  declare function projectMemoriesDir(root: string, projectId: string, external?: ExternalFolders): string;
295
307
  /**
@@ -726,4 +738,4 @@ declare function binRuntimeRoot(root: string): string;
726
738
  */
727
739
  declare function readConfigRaw(root: string): Promise<Record<string, unknown>>;
728
740
 
729
- export { CONNECTOR_ROLLUPS_DIR_NAME, CONNECTOR_TABLES_DIR_NAME, type ExternalFolders, type GezelPaths, MACHINE_SHARED_MARKER, type MachineStorageScope, OBSERVATION_TABLE_MANIFEST_FILE, OBSERVATION_TABLE_STATE_FILE, PROJECT_DIFFPACKS_DIR_NAME, PROJECT_SHADOW_DIR_NAME, PROJECT_TABULAR_DIR_NAME, TABULAR_COMPANION_SUFFIX, activeMachineSharedHome, aiAppItemsDir, aiAppReceiptFile, aiAppVersionDir, aiAppsRegistryFile, aiAppsRoot, 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, knowledgeCatalogVersionDir, knowledgeCatalogsDir, knowledgeDir, knowledgeDownloadsDir, knowledgeRegistryFile, machineSharedGezelDir, machineSharedHome, machineSharedMarkerFile, machineSharedProjectDir, meesterStatusDir, meesterStatusFile, meesterStatusStateFile, pendingGrantsFile, pendingHandoffsFile, playwrightBrowsersDir, projectActivityFile, projectArtifactsDir, projectArtifactsIndexDbFile, projectBoekwachterIssuesFile, projectCodeReviewsFile, projectContentIndexDbFile, projectCreateTransactionsRoot, projectDiffpackDir, projectDiffpacksDir, projectDiffpacksFile, 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, projectTabularDir, projectTaskAboutFile, projectTaskDir, projectTaskFile, projectTaskNextIdFile, projectTaskNotesFile, projectTasksDir, projectTerminalFile, projectTerminalsDir, projectToolsetsFile, projectToolsetsInstallDir, projectTypeDir, projectTypeManifestFile, projectTypeOverlayFile, projectTypeShardPrefix, projectTypeVersionDir, projectTypeVersionManifestFile, projectTypesRoot, readConfigRaw, remotesFile, secretsFile, secretsKeyFile, sharedCloneDir, sharedClonesRoot, sharedToolsetsFile, sharedToolsetsInstallDir, systemInstalledToolsetsFile, systemToolsetsFile, systemToolsetsInstallDir, tokensFile, toolsetConfigFile, toolsetConfigsDir, userGezelDir, userProjectDir, userScriptFile, userScriptsDir };
741
+ export { CONNECTOR_ROLLUPS_DIR_NAME, CONNECTOR_TABLES_DIR_NAME, type ExternalFolders, type GezelPaths, MACHINE_SHARED_MARKER, type MachineStorageScope, OBSERVATION_TABLE_MANIFEST_FILE, OBSERVATION_TABLE_STATE_FILE, PROJECT_DIFFPACKS_DIR_NAME, PROJECT_PROMPTS_DIR_NAME, PROJECT_SHADOW_DIR_NAME, PROJECT_TABULAR_DIR_NAME, TABULAR_COMPANION_SUFFIX, activeMachineSharedHome, aiAppItemsDir, aiAppReceiptFile, aiAppVersionDir, aiAppsRegistryFile, aiAppsRoot, 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, knowledgeCatalogVersionDir, knowledgeCatalogsDir, knowledgeDir, knowledgeDownloadsDir, knowledgeRegistryFile, machineSharedGezelDir, machineSharedHome, machineSharedMarkerFile, machineSharedProjectDir, meesterStatusDir, meesterStatusFile, meesterStatusStateFile, pendingGrantsFile, pendingHandoffsFile, playwrightBrowsersDir, projectActivityFile, projectArtifactsDir, projectArtifactsIndexDbFile, projectBoekwachterIssuesFile, projectCodeReviewsFile, projectContentIndexDbFile, projectCreateTransactionsRoot, projectDiffpackDir, projectDiffpacksDir, projectDiffpacksFile, projectDir, projectDocsDir, projectFindingLifecycleFile, projectHistoryFile, projectIndexDir, projectInternalGithubDir, projectLocalConfigFile, projectLocalCraftbookDir, projectLocalCraftbooksRoot, projectLocalDir, projectLocalFilesDir, projectLocalGezelDir, projectLocalGezelsRoot, projectLocalImportsFile, projectLocalIndexDbFile, projectLocalIndexDir, projectLocalPendingImportsFile, projectLocalQuarantineDir, projectLocalRoot, projectLocalVillageFile, projectMemoriesDir, projectMemoryIndexDir, projectMetaFile, projectPrivateDir, projectPromptDraftDir, projectPromptsDir, projectQuestionsFile, projectReportActionsFile, projectScriptFile, projectScriptRunFile, projectScriptRunsDir, projectScriptsDir, projectShadowDir, projectStorageDir, projectStorageScope, projectTabularDir, projectTaskAboutFile, projectTaskDir, projectTaskFile, projectTaskNextIdFile, projectTaskNotesFile, projectTasksDir, projectTerminalFile, projectTerminalsDir, projectToolsetsFile, projectToolsetsInstallDir, projectTypeDir, projectTypeManifestFile, projectTypeOverlayFile, projectTypeShardPrefix, projectTypeVersionDir, projectTypeVersionManifestFile, projectTypesRoot, readConfigRaw, remotesFile, secretsFile, secretsKeyFile, sharedCloneDir, sharedClonesRoot, sharedToolsetsFile, sharedToolsetsInstallDir, systemInstalledToolsetsFile, systemToolsetsFile, systemToolsetsInstallDir, tokensFile, toolsetConfigFile, toolsetConfigsDir, userGezelDir, userProjectDir, userScriptFile, userScriptsDir };