@basou/core 0.27.0 → 0.29.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/index.d.ts CHANGED
@@ -45,6 +45,65 @@ declare function resolveClaudeCodeCommand(lookup?: CommandLookup): Promise<{
45
45
  */
46
46
  declare function summarizeAdapterOutput(_stream: "stdout" | "stderr", _raw: string): string;
47
47
 
48
+ /**
49
+ * Pure transforms for registering / removing basou's Stop hook inside a parsed
50
+ * Claude Code settings.json object. No disk or environment access: the CLI reads
51
+ * and writes the file, parses the JSON, and passes the object here so the
52
+ * merge/removal logic stays deterministic and unit-testable.
53
+ *
54
+ * settings.json holds many unrelated keys (permissions, model, other hooks);
55
+ * these functions clone the input and touch ONLY the `hooks.Stop` entry that
56
+ * basou owns, preserving everything else byte-for-byte through the round-trip.
57
+ */
58
+ /** Seconds before Claude Code kills the hook process. Matches the documented orient (SessionStart) hook. */
59
+ declare const STOP_HOOK_TIMEOUT_SECONDS = 20;
60
+ declare function isBasouStopHookCommand(command: string): boolean;
61
+ type BuildStopHookCommandOptions = {
62
+ /** Absolute path to the CLI entry to invoke (the running dist/index.js). */
63
+ cliEntry: string;
64
+ /** Register the blocking (opt-in enforcement) form. */
65
+ block?: boolean;
66
+ /** Override the file-edit threshold passed to `hook stop`. */
67
+ minEdits?: number;
68
+ };
69
+ /**
70
+ * Build the shell command basou registers as a Stop hook. Uses the node path
71
+ * (not the `basou` alias, which is often absent from a non-interactive hook's
72
+ * PATH) and a `2>/dev/null || true` wrapper so a stale/incorrect dist path or
73
+ * any crash fails open — no per-turn error noise. The wrapper is safe for the
74
+ * blocking form because that emits `decision:"block"` on stdout with exit 0;
75
+ * `|| true` would defeat an exit-2 block but leaves the JSON form intact.
76
+ *
77
+ * The entry path is shell-quoted so a home/project directory containing spaces
78
+ * or shell metacharacters still invokes correctly (an unquoted path with a
79
+ * space would split into the wrong argv and the hook would silently no-op).
80
+ */
81
+ declare function buildStopHookCommand(options: BuildStopHookCommandOptions): string;
82
+ type ClaudeSettings = Record<string, unknown>;
83
+ type StopHookUpsert = {
84
+ settings: ClaudeSettings;
85
+ /** `installed` = a new entry was appended; `updated` = an existing basou entry was rewritten; `unchanged` = already canonical. */
86
+ action: "installed" | "updated" | "unchanged";
87
+ };
88
+ type StopHookRemoval = {
89
+ settings: ClaudeSettings;
90
+ action: "removed" | "absent";
91
+ };
92
+ /**
93
+ * Register (or upgrade in place) basou's Stop hook. Idempotent: an existing
94
+ * basou Stop hook is rewritten to the canonical command + timeout; a foreign
95
+ * Stop hook or any other settings key is left untouched.
96
+ */
97
+ declare function upsertStopHook(settings: unknown, command: string): StopHookUpsert;
98
+ /**
99
+ * Remove every basou-owned Stop hook. A group emptied by the removal is dropped;
100
+ * a now-empty `hooks.Stop` / `hooks` container is deleted so the file does not
101
+ * accumulate empty scaffolding. Foreign hooks and other keys are preserved.
102
+ */
103
+ declare function removeStopHook(settings: unknown): StopHookRemoval;
104
+ /** Return the installed basou Stop hook command, or null if none is registered. */
105
+ declare function findBasouStopHookCommand(settings: unknown): string | null;
106
+
48
107
  /**
49
108
  * Schema for `.basou/manifest.yaml`. The minimal manifest carries
50
109
  * schema_version, basou_version, workspace metadata, project info, enabled
@@ -132,6 +191,10 @@ declare const ManifestSchema: z.ZodObject<{
132
191
  "en+ja": "en+ja";
133
192
  }>>;
134
193
  }, z.core.$loose>>>;
194
+ instructions: z.ZodOptional<z.ZodEnum<{
195
+ hub: "hub";
196
+ self: "self";
197
+ }>>;
135
198
  }, z.core.$loose>>>;
136
199
  }, z.core.$loose>;
137
200
  /** Inferred runtime type for {@link ManifestSchema}. */
@@ -3612,6 +3675,15 @@ type RepoVisibility = "public" | "private" | "future-public";
3612
3675
  type RepoLanguage = "en" | "ja" | "en+ja";
3613
3676
  /** A published surface a repo emits: a deployed website or a package registry. */
3614
3677
  type PublishKind = "web" | "npm";
3678
+ /**
3679
+ * Where a repo's agent instruction files live (the instruction-source axis),
3680
+ * independent of visibility / language / publishes. `hub` is basou's native,
3681
+ * generated hub-and-spoke topology (canonical in the anchor, gitignored symlinks
3682
+ * in each repo); `self` is the additive opt-in where the canonical AGENTS.md is a
3683
+ * regular committed file in the repo itself and basou stays hands-off about its
3684
+ * content. See {@link instructionMode} for the default (absent => `hub`).
3685
+ */
3686
+ type RepoInstructions = "hub" | "self";
3615
3687
  /**
3616
3688
  * One published surface. Its visibility and language are INDEPENDENT of the
3617
3689
  * source repo's: a private repo commonly publishes a public website. Both are
@@ -3632,7 +3704,24 @@ type RepoEntry = {
3632
3704
  language?: RepoLanguage | undefined;
3633
3705
  /** Published surfaces this repo emits (opt-in; absent for a repo that publishes nothing). */
3634
3706
  publishes?: PublishTarget[] | undefined;
3707
+ /**
3708
+ * Instruction-source mode. Absent => `hub` (basou's native generated topology),
3709
+ * so an existing roster's behavior is unchanged. `self` opts the repo out of
3710
+ * generation: its AGENTS.md is a hand-authored committed file and basou stays
3711
+ * hands-off. Resolve the effective mode with {@link instructionMode}.
3712
+ */
3713
+ instructions?: RepoInstructions | undefined;
3635
3714
  };
3715
+ /**
3716
+ * The effective instruction-source mode for a repo: the declared `instructions`,
3717
+ * defaulting to `hub` when absent. The default is the single guarantee that an
3718
+ * existing roster (which has no `instructions` field) keeps basou's current
3719
+ * hub-and-spoke behavior byte-for-byte — every generator branches on this, never
3720
+ * on the raw optional field, so "absent => hub" is decided in exactly one place.
3721
+ */
3722
+ declare function instructionMode(entry: {
3723
+ instructions?: RepoInstructions | undefined;
3724
+ }): RepoInstructions;
3636
3725
  type RosterDriftSummary = {
3637
3726
  declaredCount: number;
3638
3727
  capturedCount: number;
@@ -3815,6 +3904,13 @@ type RepoGitignoreFacts = {
3815
3904
  path: string;
3816
3905
  /** Declared visibility; undefined when the operator has not set it yet. */
3817
3906
  visibility?: RepoVisibility | undefined;
3907
+ /**
3908
+ * True when this repo declares `instructions: self`: its instruction files are
3909
+ * committed and SHARED, so they must NOT be gitignored — the repo is skipped
3910
+ * (reported as `self`, never an addition) regardless of visibility. Absent =>
3911
+ * the default `hub` behavior, unchanged.
3912
+ */
3913
+ self?: boolean | undefined;
3818
3914
  /** False when the repo path could not be resolved / is not a usable git repo. */
3819
3915
  reachable: boolean;
3820
3916
  /** Existing `.gitignore` lines, trimmed; an empty array when there is no `.gitignore`. */
@@ -3830,21 +3926,30 @@ type GitignorePlanSummary = {
3830
3926
  plans: RepoGitignorePlan[];
3831
3927
  /** Repo paths skipped because visibility is unset (cannot decide safely). */
3832
3928
  unknown: string[];
3929
+ /**
3930
+ * `instructions: self` repo paths, skipped by design: their instruction files
3931
+ * are committed and shared, so they are never gitignored. Reported (not
3932
+ * silently dropped) and do NOT block the `ok` verdict — being skipped is the
3933
+ * intended terminal state, not a gap.
3934
+ */
3935
+ self: string[];
3833
3936
  /** Repo paths that could not be resolved / are not usable git repos. */
3834
3937
  unreachable: string[];
3835
3938
  /**
3836
3939
  * True only when nothing needs adding AND every repo was judgeable and
3837
3940
  * reachable — so a clean verdict is never claimed while some repos were
3838
- * skipped (unset visibility) or could not be inspected (unreachable).
3941
+ * skipped (unset visibility) or could not be inspected (unreachable). A `self`
3942
+ * repo does not block it (it is intentionally not gitignored).
3839
3943
  */
3840
3944
  ok: boolean;
3841
3945
  };
3842
3946
  /**
3843
3947
  * Compute the {@link GitignorePlanSummary}: for each public-facing, reachable
3844
3948
  * repo, the `required` patterns that are not already present in its `.gitignore`
3845
- * (compared by trimmed exact line). Private repos require nothing; unset
3846
- * visibility is reported as `unknown` and unreachable repos as `unreachable`.
3847
- * `ok` is true when no repo needs any addition.
3949
+ * (compared by trimmed exact line). Private repos require nothing; a `self` repo
3950
+ * is reported as `self` (its committed instruction files are shared, never
3951
+ * gitignored); unset visibility is reported as `unknown` and unreachable repos as
3952
+ * `unreachable`. `ok` is true when no repo needs any addition.
3848
3953
  */
3849
3954
  declare function planGitignore(input: {
3850
3955
  repos: RepoGitignoreFacts[];
@@ -3902,6 +4007,13 @@ type RepoPresetFacts = {
3902
4007
  path: string;
3903
4008
  /** True when this repo IS the project anchor (its own AGENTS.md is hand-maintained; skipped). */
3904
4009
  isAnchor: boolean;
4010
+ /**
4011
+ * True when this repo declares `instructions: self`: its AGENTS.md is
4012
+ * hand-authored and basou stays hands-off — no preset block is ever written
4013
+ * (reported as `self`, skipped like an anchor). Absent => the default `hub`
4014
+ * behavior, unchanged.
4015
+ */
4016
+ self?: boolean | undefined;
3905
4017
  /** False when the repo path could not be resolved / is not a usable git repo. */
3906
4018
  reachable: boolean;
3907
4019
  /** Declared fields (the render input). */
@@ -3971,14 +4083,16 @@ type PresetPlanSummary = {
3971
4083
  collisions: PresetCollision[];
3972
4084
  /** Repos that resolve to the anchor (their own AGENTS.md is hand-maintained; skipped). */
3973
4085
  anchors: string[];
4086
+ /** `instructions: self` repos: hands-off, skipped (basou never writes their AGENTS.md). */
4087
+ self: string[];
3974
4088
  /** Repo paths that could not be resolved / are not usable git repos. */
3975
4089
  unreachable: string[];
3976
4090
  /**
3977
4091
  * True only when nothing needs writing AND there are no marker conflicts, no
3978
4092
  * unreadable canonicals, no collisions, no unreachable repos, and no
3979
4093
  * undeclared repos — so a clean "all in sync" verdict is never claimed while
3980
- * some repo was skipped or unjudgeable. Anchors do not block it (they are
3981
- * intentionally not generated).
4094
+ * some repo was skipped or unjudgeable. Anchors and `self` repos do not block
4095
+ * it (they are intentionally not generated).
3982
4096
  */
3983
4097
  ok: boolean;
3984
4098
  };
@@ -4105,6 +4219,12 @@ type RetrofitReason =
4105
4219
  "ok"
4106
4220
  /** refuse: the repo is not in the declared roster. */
4107
4221
  | "not-declared"
4222
+ /**
4223
+ * refuse: the repo declares `instructions: self` — its AGENTS.md is a
4224
+ * hand-authored committed file that stays in the repo, so there is no anchor
4225
+ * canonical to relocate it to (retrofit does not apply).
4226
+ */
4227
+ | "self"
4108
4228
  /** refuse: the path is the project anchor (it owns the canonical directly — nothing to relocate). */
4109
4229
  | "anchor"
4110
4230
  /** refuse: the path does not resolve / is not a git repo. */
@@ -4123,6 +4243,12 @@ type RetrofitFacts = {
4123
4243
  path: string;
4124
4244
  /** True when the path is declared in the manifest roster. */
4125
4245
  declared: boolean;
4246
+ /**
4247
+ * True when the declared entry uses `instructions: self` — its AGENTS.md stays
4248
+ * in the repo, so retrofit (which relocates it to the anchor canonical) does
4249
+ * not apply. Absent/false => the default `hub` behavior, unchanged.
4250
+ */
4251
+ self?: boolean | undefined;
4126
4252
  /** True when the path resolves to the anchor itself. */
4127
4253
  isAnchor: boolean;
4128
4254
  /** False when the path does not resolve / is not a git repo. */
@@ -4156,8 +4282,8 @@ type RetrofitPlan = {
4156
4282
  /**
4157
4283
  * Classify the retrofit facts into one action. Refusals are checked first, in a
4158
4284
  * fixed precedence so the outcome is deterministic when several guardrails could
4159
- * apply: undeclared → anchor → unreachable → uninspectable AGENTS.md. Then the
4160
- * idempotent skips (already a symlink, or absent — nothing to move). Only a
4285
+ * apply: undeclared → anchor → self → unreachable → uninspectable AGENTS.md. Then
4286
+ * the idempotent skips (already a symlink, or absent — nothing to move). Only a
4161
4287
  * genuine regular-file AGENTS.md reaches the relocate decision, and even then a
4162
4288
  * pre-existing destination canonical refuses (relocating would clobber it).
4163
4289
  * `regularSpokes` is echoed in every outcome (it is advisory, relevant whenever a
@@ -4224,12 +4350,24 @@ type RepoSymlinkFacts = {
4224
4350
  * it never links to itself). An anchor entry is skipped entirely.
4225
4351
  */
4226
4352
  isAnchor: boolean;
4353
+ /**
4354
+ * True when this repo declares `instructions: self`: its canonical AGENTS.md is
4355
+ * a regular committed file in the repo itself, so only the CLAUDE.md / Copilot
4356
+ * spokes are generated (never the AGENTS.md hub link), `canonicalPresent` means
4357
+ * "the repo's own AGENTS.md is present" (an absent one is `selfAgentsMissing`,
4358
+ * not `missingCanonical`), and the repo is excluded from anchor-canonical
4359
+ * collision detection (it shares no anchor canonical). Absent => the default
4360
+ * `hub` behavior, unchanged.
4361
+ */
4362
+ self?: boolean | undefined;
4227
4363
  /** False when the repo path could not be resolved / is not a usable git repo. */
4228
4364
  reachable: boolean;
4229
4365
  /**
4230
- * Whether the anchor's canonical source for this repo
4231
- * (`<anchor>/agents/<repo>/AGENTS.md`) exists. Without it the hub link would
4232
- * dangle, so no links are planned (reported as a missing canonical instead).
4366
+ * For a `hub` repo: whether the anchor's canonical source
4367
+ * (`<anchor>/agents/<repo>/AGENTS.md`) exists without it the hub link would
4368
+ * dangle, so no links are planned (reported as `missingCanonical` instead). For
4369
+ * a `self` repo: whether the repo's OWN AGENTS.md exists — without it the
4370
+ * spokes would dangle, so none are planned (reported as `selfAgentsMissing`).
4233
4371
  */
4234
4372
  canonicalPresent: boolean;
4235
4373
  /**
@@ -4279,15 +4417,22 @@ type SymlinkPlanSummary = {
4279
4417
  conflicts: SymlinkConflict[];
4280
4418
  /** Repo paths whose anchor canonical (`agents/<repo>/AGENTS.md`) is absent, so nothing can be wired. */
4281
4419
  missingCanonical: string[];
4420
+ /**
4421
+ * `self` repo paths whose own AGENTS.md is absent, so the spokes would dangle
4422
+ * and none are planned. Distinct from `missingCanonical` (which is the anchor
4423
+ * canonical a `hub` repo links to): the operator authors a `self` repo's
4424
+ * AGENTS.md by hand, then re-runs.
4425
+ */
4426
+ selfAgentsMissing: string[];
4282
4427
  /** Repo paths that could not be resolved / are not usable git repos. */
4283
4428
  unreachable: string[];
4284
4429
  /** Groups of distinct repos that resolve to the same canonical (ambiguous; not auto-wired). */
4285
4430
  collisions: SymlinkCollision[];
4286
4431
  /**
4287
4432
  * True only when nothing needs creating AND there are no conflicts, no missing
4288
- * canonicals, no unreachable repos, and no collisions so a clean "all wired"
4289
- * verdict is never claimed while some repo was blocked, ambiguous, or could not
4290
- * be inspected.
4433
+ * canonicals, no self repos missing their AGENTS.md, no unreachable repos, and
4434
+ * no collisions so a clean "all wired" verdict is never claimed while some
4435
+ * repo was blocked, ambiguous, or could not be inspected.
4291
4436
  */
4292
4437
  ok: boolean;
4293
4438
  };
@@ -4308,6 +4453,12 @@ type SymlinkPlanSummary = {
4308
4453
  * {@link SymlinkCollision} and neither is auto-wired (silent sharing of one
4309
4454
  * canonical is surfaced, not actioned).
4310
4455
  *
4456
+ * A `self` repo (its `self` flag set by the caller) carries only its spoke files
4457
+ * (CLAUDE.md / Copilot → its own AGENTS.md), is excluded from collision
4458
+ * detection, and routes an absent own-AGENTS.md to `selfAgentsMissing` rather
4459
+ * than `missingCanonical`. Otherwise it flows through the same create/conflict
4460
+ * logic as a hub repo.
4461
+ *
4311
4462
  * `ok` is true only when there is genuinely nothing to do and every repo was
4312
4463
  * judgeable, reachable, and unambiguous.
4313
4464
  */
@@ -4341,6 +4492,13 @@ type RepoWiringFacts = {
4341
4492
  path: string;
4342
4493
  /** Declared visibility; undefined when the operator has not set it yet. */
4343
4494
  visibility?: RepoVisibility | undefined;
4495
+ /**
4496
+ * True when this repo declares `instructions: self`: its instruction files are
4497
+ * committed BY DESIGN (shared in its own git history), so a tracked file is
4498
+ * never a privacy risk — the repo is reported as `self` and excluded from the
4499
+ * risk / unknown verdicts. Absent => the default `hub` behavior, unchanged.
4500
+ */
4501
+ self?: boolean | undefined;
4344
4502
  /** False when the repo path could not be resolved / is not a usable git repo. */
4345
4503
  reachable: boolean;
4346
4504
  /** Per instruction-file facts (omitted/empty when unreachable). */
@@ -4362,6 +4520,12 @@ type WiringSummary = {
4362
4520
  risks: WiringRisk[];
4363
4521
  /** Repo paths whose visibility is unset, so the privacy verdict cannot be judged. */
4364
4522
  unknown: string[];
4523
+ /**
4524
+ * `instructions: self` repo paths: their instruction files are committed by
4525
+ * design, so they carry no privacy risk and do not need a visibility verdict.
4526
+ * Reported (not silently dropped) and do NOT block `ok`.
4527
+ */
4528
+ self: string[];
4365
4529
  /** Repos missing one or more instruction files (a wiring gap a later generate slice fills). */
4366
4530
  incomplete: {
4367
4531
  repo: string;
@@ -4377,8 +4541,11 @@ type WiringSummary = {
4377
4541
  * public-facing repo that TRACKS an instruction file is a {@link WiringRisk}
4378
4542
  * (its git history can expose the private canonical it points at); a repo with
4379
4543
  * unset visibility cannot be judged (`unknown`); a repo missing instruction
4380
- * files is `incomplete` (a wiring gap, not a privacy problem). `ok` is true only
4381
- * when nothing is at risk, every repo is judgeable, and every repo is reachable.
4544
+ * files is `incomplete` (a wiring gap, not a privacy problem). A `self` repo is
4545
+ * reported as `self` and bypasses the risk / unknown verdicts entirely its
4546
+ * instruction files are committed by design — though a genuinely missing one is
4547
+ * still surfaced as `incomplete`. `ok` is true only when nothing is at risk,
4548
+ * every repo is judgeable, and every repo is reachable.
4382
4549
  */
4383
4550
  declare function summarizeWiring(facts: RepoWiringFacts[]): WiringSummary;
4384
4551
 
@@ -5719,4 +5886,4 @@ declare function overwriteYamlFile(filePath: string, value: unknown): Promise<vo
5719
5886
  */
5720
5887
  declare const BASOU_CORE_VERSION = "0.1.0";
5721
5888
 
5722
- export { ACTIVE_GAP_CAP_MS, AGENT_INFRA_DIRS, type ActiveTimeBasis, type AdapterOutputEvent, type AdoptCandidate, type AdoptCandidateKind, type AppendBasouGitignoreOptions, type AppendBasouGitignoreResult, type AppendEventToExistingInput, type AppendEventToExistingResult, type Approval, type ApprovalApprovedEvent, type ApprovalExpiredEvent, ApprovalIdSchema, type ApprovalLocation, type ApprovalRejectedEvent, type ApprovalRequestedEvent, ApprovalSchema, type ApprovalStatus, ApprovalStatusSchema, type ArchivePlan, type ArchiveTaskInput, type ArchiveTaskResult, type AttachTaskInput, type AttachUpdateTaskStatusInput, type AttachableStatus, BASOU_CORE_VERSION, type BasouPaths, type BulkChainResult, CLAUDE_IMPORT_SOURCE, CODEX_IMPORT_SOURCE, type CaptureMode, type ChainBreakReason, type ChainTailState, type ChainVerdict, type ChainVerdictStatus, type ChainedEvents, ChildProcessRunner, type CitedReview, type ClaudeTranscriptRecord, type ClaudeTranscriptToPayloadOptions, type CodexRolloutRecord, type CodexRolloutToPayloadOptions, type CommandExecutedEvent, type CommandLookup, type CreateAdHocSessionInput, type CreateAdHocSessionResult, type CreateAdHocTaskInput, type CreateManifestInput, type CreateTaskInput, type CreateTaskResult, DEFAULT_STOP_HOOK_MIN_EDITS, type DayWorkStats, DecisionIdSchema, type DecisionRecordedEvent, type DecisionsRendererInput, type DecisionsRendererResult, type DeleteTaskInput, type DeleteTaskResult, type DiffResult, type EditTaskInput, type EditTaskResult, type Event, EventIdSchema, EventSchema, EventSourceSchema, type ExistingViewLink, FailedToFinalizeError, type FederatedRoot, type FileChange, type FileChangeStatus, type FileChangedEvent, GENERATED_END, GENERATED_START, type GitSnapshot, type GitSnapshotEvent, type GitignorePlanSummary, type HandoffRendererInput, type HandoffRendererResult, ID_PREFIXES, type IdPrefix, type ImportSessionOptions, type ImportSessionResult, type InstructionFileFact, type InstructionSymlinkFact, type InstructionSymlinkState, IsoTimestampSchema, JSON_SCHEMA_VERSION, type JsonSchemaArtifact, type LoadFederatedOptions, type LoadSessionEntriesOptions, type LoadTaskEntriesOptions, type LoadedApproval, type LockHandle, type LockScope, type Manifest, ManifestSchema, type MarkerSection, type Markers, type MeasureAvailability, type NoteAddedEvent, type OrientationRendererInput, type OrientationRendererResult, type OrientationSummary, PROTOCOL_END, PROTOCOL_START, type PrefixedId, type PresetAction, type PresetCollision, type PresetMarkerConflict, type PresetMarkerKind, type PresetPlanSummary, type PresetRepo, type ProcessRunner, type PublishKind, type PublishTarget, type RechainOptions, type RechainResult, type ReconcileAllResult, type ReconcileAllTasksInput, type ReconcileAllTasksOptions, type ReconcileFailure, type ReconcileResult, type ReconcileTaskInput, type RefreshLinkageInput, type RefreshLinkageResult, type ReimportOptions, type ReimportResult, type RenamePlan, type ReplayOptions, type ReplayWarning, type RepoEntry, type RepoGitignoreFacts, type RepoGitignorePlan, type RepoLanguage, type RepoPresetFacts, type RepoPresetPlan, type RepoSymlinkFacts, type RepoSymlinkPlan, type RepoVisibility, type RepoWiringFacts, type ReportApprovalItem, type ReportData, type ReportDecisionItem, type ReportRendererInput, type ReportRendererResult, type ReportSessionItem, type ReportTaskItem, type RetrofitAction, type RetrofitAgentsState, type RetrofitFacts, type RetrofitPlan, type RetrofitReason, type ReviewGapRepoSummary, type ReviewGapUnit, type ReviewGapVerdict, type ReviewGapsInput, type ReviewGapsSummary, type RiskLevel, RiskLevelSchema, type RosterAdoptionPlan, type RosterDriftSummary, type RunOptions, type RunResult, STUCK_THRESHOLD_MS, type SanitizePathOptions, type SanitizeRelatedFilesResult, SchemaVersionSchema, type Session, type SessionEndedEvent, type SessionEntry, SessionIdSchema, type SessionImportPayload, SessionImportPayloadSchema, type SessionInnerImportInput, SessionInnerImportSchema, type SessionIntegrity, SessionIntegritySchema, type SessionMetrics, SessionMetricsSchema, SessionSchema, type SessionSkipReason, type SessionSourceKind, SessionSourceKindSchema, type SessionStartedEvent, type SessionStatus, type SessionStatusChangedEvent, SessionStatusSchema, type SessionWorkStats, type SourceRootScope, type SourceRootsReconcile, type SourceWorkStats, type StatusCount, StatusSchema, type StatusSnapshot, type StopHookEvaluation, type StopHookEvaluationInput, type StopHookSilentReason, type SuspectReason, type SymlinkCollision, type SymlinkConflict, type SymlinkPlanSummary, type Task, type TaskArchivedEvent, type TaskCreatedEvent, type TaskDeletedEvent, type TaskDocument, TaskIdSchema, type TaskLinkageRefreshedEvent, type TaskReconciledEvent, TaskSchema, type TaskSkipReason, type TaskStatus, type TaskStatusChangedEvent, type TaskStatusCount, TaskStatusSchema, TaskWriteAfterEventError, type TaskWriteAfterEventPhase, type TokenTotals, type UpdateAdHocTaskStatusInput, type UpdateTaskStatusInput, type UpdateTaskStatusResult, type ViewCollision, type ViewConflict, type ViewLinkState, type ViewRepoFact, type ViewStrayUnknown, type WiringRisk, type WiringSummary, type WorkStatsInput, type WorkStatsResult, type WorkStatsTotals, WorkspaceIdSchema, type WorkspaceViewPlan, type WriteEventsBulkOptions, type WriteTaskFileMode, acquireLock, appendBasouGitignore, appendChainedEvent, appendChainedEventLocked, appendEvent, appendEventToExistingSession, archiveTask, assertBasouRootSafe, basouPaths, buildJsonSchemas, buildStatusSnapshot, chainEvents, chainRawJsonLines, classifyFilesBySourceRoot, classifyRetrofit, classifySuspect, claudeCodeAdapterMetadata, claudeTranscriptToImportPayload, codexRolloutToImportPayload, computeWorkStats, createAdHocSessionWithEvent, createManifest, createTaskWithEvent, deleteTask, editTask, ensureBasouDirectory, enumerateApprovals, enumerateArchivedTaskIds, enumerateSessionDirs, enumerateTaskIds, evaluateStopHook, finalizeSessionYaml, findErrorCode, findReviewGaps, formatDurationMs, genesisHash, getDiff, getSnapshot, importSessionFromJson, inspectChainTail, isGitNotFound, isImportDerivedSource, isLazyExpired, isRenderable, isValidPrefixedId, lineHash, linkYamlFile, loadApproval, loadFederatedSessionEntries, loadSessionEntries, loadTaskEntries, normalizeRepoKey, normalizeRepoPath, overwriteYamlFile, parseDuration, parseMarkers, pathBasename, planArchive, planGitignore, planRename, planRosterAdoption, planWorkspaceView, prefixedUlid, readAllEvents, readManifest, readMarkdownFile, readSessionYaml, readStatus, readTaskFile, readTaskFileWithArchiveFallback, readYamlFile, rechainSessionInPlace, reconcileAllTasks, reconcileSourceRoots, reconcileTask, refreshTaskLinkedSessions, reimportPreservingId, removeMarkerSection, renderDecisions, renderHandoff, renderOrientation, renderPresetBlock, renderReport, renderWithMarkers, replayEvents, resolveBasouRepositoryRoot, resolveClaudeCodeCommand, resolveRepositoryRoot, resolveSessionId, resolveTaskId, safeSimpleGit, sanitizePath, sanitizeRelatedFiles, sanitizeWorkingDirectory, serializeEventLine, serializeJsonSchema, sessionWorkStatsFromEvents, summarizeAdapterOutput, summarizeOrientation, summarizePresetPlan, summarizeRosterDrift, summarizeSymlinkPlan, summarizeWiring, tryRemoteUrl, ulid, unknownManifestKeys, updateTaskStatusWithEvent, verifyEventsChain, writeEventsBulk, writeManifest, writeMarkdownFile, writeStatus, writeTaskFile, writeYamlFile };
5889
+ export { ACTIVE_GAP_CAP_MS, AGENT_INFRA_DIRS, type ActiveTimeBasis, type AdapterOutputEvent, type AdoptCandidate, type AdoptCandidateKind, type AppendBasouGitignoreOptions, type AppendBasouGitignoreResult, type AppendEventToExistingInput, type AppendEventToExistingResult, type Approval, type ApprovalApprovedEvent, type ApprovalExpiredEvent, ApprovalIdSchema, type ApprovalLocation, type ApprovalRejectedEvent, type ApprovalRequestedEvent, ApprovalSchema, type ApprovalStatus, ApprovalStatusSchema, type ArchivePlan, type ArchiveTaskInput, type ArchiveTaskResult, type AttachTaskInput, type AttachUpdateTaskStatusInput, type AttachableStatus, BASOU_CORE_VERSION, type BasouPaths, type BuildStopHookCommandOptions, type BulkChainResult, CLAUDE_IMPORT_SOURCE, CODEX_IMPORT_SOURCE, type CaptureMode, type ChainBreakReason, type ChainTailState, type ChainVerdict, type ChainVerdictStatus, type ChainedEvents, ChildProcessRunner, type CitedReview, type ClaudeSettings, type ClaudeTranscriptRecord, type ClaudeTranscriptToPayloadOptions, type CodexRolloutRecord, type CodexRolloutToPayloadOptions, type CommandExecutedEvent, type CommandLookup, type CreateAdHocSessionInput, type CreateAdHocSessionResult, type CreateAdHocTaskInput, type CreateManifestInput, type CreateTaskInput, type CreateTaskResult, DEFAULT_STOP_HOOK_MIN_EDITS, type DayWorkStats, DecisionIdSchema, type DecisionRecordedEvent, type DecisionsRendererInput, type DecisionsRendererResult, type DeleteTaskInput, type DeleteTaskResult, type DiffResult, type EditTaskInput, type EditTaskResult, type Event, EventIdSchema, EventSchema, EventSourceSchema, type ExistingViewLink, FailedToFinalizeError, type FederatedRoot, type FileChange, type FileChangeStatus, type FileChangedEvent, GENERATED_END, GENERATED_START, type GitSnapshot, type GitSnapshotEvent, type GitignorePlanSummary, type HandoffRendererInput, type HandoffRendererResult, ID_PREFIXES, type IdPrefix, type ImportSessionOptions, type ImportSessionResult, type InstructionFileFact, type InstructionSymlinkFact, type InstructionSymlinkState, IsoTimestampSchema, JSON_SCHEMA_VERSION, type JsonSchemaArtifact, type LoadFederatedOptions, type LoadSessionEntriesOptions, type LoadTaskEntriesOptions, type LoadedApproval, type LockHandle, type LockScope, type Manifest, ManifestSchema, type MarkerSection, type Markers, type MeasureAvailability, type NoteAddedEvent, type OrientationRendererInput, type OrientationRendererResult, type OrientationSummary, PROTOCOL_END, PROTOCOL_START, type PrefixedId, type PresetAction, type PresetCollision, type PresetMarkerConflict, type PresetMarkerKind, type PresetPlanSummary, type PresetRepo, type ProcessRunner, type PublishKind, type PublishTarget, type RechainOptions, type RechainResult, type ReconcileAllResult, type ReconcileAllTasksInput, type ReconcileAllTasksOptions, type ReconcileFailure, type ReconcileResult, type ReconcileTaskInput, type RefreshLinkageInput, type RefreshLinkageResult, type ReimportOptions, type ReimportResult, type RenamePlan, type ReplayOptions, type ReplayWarning, type RepoEntry, type RepoGitignoreFacts, type RepoGitignorePlan, type RepoInstructions, type RepoLanguage, type RepoPresetFacts, type RepoPresetPlan, type RepoSymlinkFacts, type RepoSymlinkPlan, type RepoVisibility, type RepoWiringFacts, type ReportApprovalItem, type ReportData, type ReportDecisionItem, type ReportRendererInput, type ReportRendererResult, type ReportSessionItem, type ReportTaskItem, type RetrofitAction, type RetrofitAgentsState, type RetrofitFacts, type RetrofitPlan, type RetrofitReason, type ReviewGapRepoSummary, type ReviewGapUnit, type ReviewGapVerdict, type ReviewGapsInput, type ReviewGapsSummary, type RiskLevel, RiskLevelSchema, type RosterAdoptionPlan, type RosterDriftSummary, type RunOptions, type RunResult, STOP_HOOK_TIMEOUT_SECONDS, STUCK_THRESHOLD_MS, type SanitizePathOptions, type SanitizeRelatedFilesResult, SchemaVersionSchema, type Session, type SessionEndedEvent, type SessionEntry, SessionIdSchema, type SessionImportPayload, SessionImportPayloadSchema, type SessionInnerImportInput, SessionInnerImportSchema, type SessionIntegrity, SessionIntegritySchema, type SessionMetrics, SessionMetricsSchema, SessionSchema, type SessionSkipReason, type SessionSourceKind, SessionSourceKindSchema, type SessionStartedEvent, type SessionStatus, type SessionStatusChangedEvent, SessionStatusSchema, type SessionWorkStats, type SourceRootScope, type SourceRootsReconcile, type SourceWorkStats, type StatusCount, StatusSchema, type StatusSnapshot, type StopHookEvaluation, type StopHookEvaluationInput, type StopHookRemoval, type StopHookSilentReason, type StopHookUpsert, type SuspectReason, type SymlinkCollision, type SymlinkConflict, type SymlinkPlanSummary, type Task, type TaskArchivedEvent, type TaskCreatedEvent, type TaskDeletedEvent, type TaskDocument, TaskIdSchema, type TaskLinkageRefreshedEvent, type TaskReconciledEvent, TaskSchema, type TaskSkipReason, type TaskStatus, type TaskStatusChangedEvent, type TaskStatusCount, TaskStatusSchema, TaskWriteAfterEventError, type TaskWriteAfterEventPhase, type TokenTotals, type UpdateAdHocTaskStatusInput, type UpdateTaskStatusInput, type UpdateTaskStatusResult, type ViewCollision, type ViewConflict, type ViewLinkState, type ViewRepoFact, type ViewStrayUnknown, type WiringRisk, type WiringSummary, type WorkStatsInput, type WorkStatsResult, type WorkStatsTotals, WorkspaceIdSchema, type WorkspaceViewPlan, type WriteEventsBulkOptions, type WriteTaskFileMode, acquireLock, appendBasouGitignore, appendChainedEvent, appendChainedEventLocked, appendEvent, appendEventToExistingSession, archiveTask, assertBasouRootSafe, basouPaths, buildJsonSchemas, buildStatusSnapshot, buildStopHookCommand, chainEvents, chainRawJsonLines, classifyFilesBySourceRoot, classifyRetrofit, classifySuspect, claudeCodeAdapterMetadata, claudeTranscriptToImportPayload, codexRolloutToImportPayload, computeWorkStats, createAdHocSessionWithEvent, createManifest, createTaskWithEvent, deleteTask, editTask, ensureBasouDirectory, enumerateApprovals, enumerateArchivedTaskIds, enumerateSessionDirs, enumerateTaskIds, evaluateStopHook, finalizeSessionYaml, findBasouStopHookCommand, findErrorCode, findReviewGaps, formatDurationMs, genesisHash, getDiff, getSnapshot, importSessionFromJson, inspectChainTail, instructionMode, isBasouStopHookCommand, isGitNotFound, isImportDerivedSource, isLazyExpired, isRenderable, isValidPrefixedId, lineHash, linkYamlFile, loadApproval, loadFederatedSessionEntries, loadSessionEntries, loadTaskEntries, normalizeRepoKey, normalizeRepoPath, overwriteYamlFile, parseDuration, parseMarkers, pathBasename, planArchive, planGitignore, planRename, planRosterAdoption, planWorkspaceView, prefixedUlid, readAllEvents, readManifest, readMarkdownFile, readSessionYaml, readStatus, readTaskFile, readTaskFileWithArchiveFallback, readYamlFile, rechainSessionInPlace, reconcileAllTasks, reconcileSourceRoots, reconcileTask, refreshTaskLinkedSessions, reimportPreservingId, removeMarkerSection, removeStopHook, renderDecisions, renderHandoff, renderOrientation, renderPresetBlock, renderReport, renderWithMarkers, replayEvents, resolveBasouRepositoryRoot, resolveClaudeCodeCommand, resolveRepositoryRoot, resolveSessionId, resolveTaskId, safeSimpleGit, sanitizePath, sanitizeRelatedFiles, sanitizeWorkingDirectory, serializeEventLine, serializeJsonSchema, sessionWorkStatsFromEvents, summarizeAdapterOutput, summarizeOrientation, summarizePresetPlan, summarizeRosterDrift, summarizeSymlinkPlan, summarizeWiring, tryRemoteUrl, ulid, unknownManifestKeys, updateTaskStatusWithEvent, upsertStopHook, verifyEventsChain, writeEventsBulk, writeManifest, writeMarkdownFile, writeStatus, writeTaskFile, writeYamlFile };