@basou/core 0.45.0 → 0.46.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
@@ -823,6 +823,21 @@ type StopHookEvaluation = ({
823
823
  * before, so consumers that read only the capture signal are unaffected.
824
824
  */
825
825
  declare function evaluateStopHook(input: StopHookEvaluationInput): StopHookEvaluation;
826
+ /**
827
+ * When the session this transcript belongs to started: the timestamp of its
828
+ * first record that carries a parseable one.
829
+ *
830
+ * Used to date what the session is HOLDING. Anything the session read at start
831
+ * — its instruction files, the protocols rendered into them — is the version
832
+ * that existed at this instant, so a managed block whose stamp says it changed
833
+ * after it is newer than the copy in that session's context.
834
+ *
835
+ * Not every record carries a timestamp (a leading `summary` record does not),
836
+ * so this scans forward rather than reading `records[0]` and giving up.
837
+ * `undefined` means the transcript never said, and callers then say nothing
838
+ * rather than guess a start.
839
+ */
840
+ declare function transcriptStartedAt(records: ClaudeTranscriptRecord[]): string | undefined;
826
841
 
827
842
  /** Alias kept for API symmetry with the claude-code adapter's `CommandLookup`. */
828
843
  type CodexCommandLookup = CommandLookup;
@@ -2703,12 +2718,24 @@ type ViewStrings = {
2703
2718
  /**
2704
2719
  * Same heading, but a task file could not be read on THIS pass, so its
2705
2720
  * status is unknown and "none in flight" would be an assertion the
2706
- * renderer cannot support. Says what it can see and stops. Reading the
2707
- * tasks directory can rebuild the index without the unreadable file, in
2708
- * which case a later render does not attempt it and this line gives way
2709
- * to its sibling -- the line reports a pass, not a standing condition.
2721
+ * renderer cannot support. Says what it can see and stops.
2722
+ *
2723
+ * A standing condition, not a one-pass report: it holds every render until
2724
+ * the file is repaired or removed. It used to give way to its sibling on
2725
+ * the second render, because rebuilding the task index dropped the file it
2726
+ * could not parse and nothing enumerated it again.
2710
2727
  */
2711
2728
  tasksUnreadable: string;
2729
+ /**
2730
+ * Appended under a NON-empty in-flight list when some task file could not
2731
+ * be read.
2732
+ *
2733
+ * The list above it is true and incomplete at the same time, and a reader
2734
+ * has no way to tell from a heading count that anything is missing. The
2735
+ * zero case already says so; saying nothing here would make "unreadable" a
2736
+ * fact basou reports only when it happens to have nothing else to report.
2737
+ */
2738
+ tasksUnreadableAlongside: (n: number) => string;
2712
2739
  pendingApprovalsHeading: (n: number) => string;
2713
2740
  suspectSessionsHeading: (n: number) => string;
2714
2741
  openTracksHeading: (n: number) => string;
@@ -3687,9 +3714,15 @@ declare function writeTaskFile(paths: BasouPaths, taskId: string, doc: TaskDocum
3687
3714
  * the caller's `options.onSkip` hook in {@link loadTaskEntries} so list
3688
3715
  * commands can show a warning row.
3689
3716
  *
3690
- * Returns ids in ULID-ascending order (filename sort matches ULID order).
3717
+ * Ids come back in ULID-ascending order: the disk scan sorts by filename,
3718
+ * which matches ULID order, and {@link rebuildTaskIndex} sorts what it writes,
3719
+ * so an index basou wrote is already in that order. An index edited by hand
3720
+ * into some other order is returned in it — no caller depends on the order,
3721
+ * and re-sorting a trusted cache would hide that it was used.
3722
+ *
3691
3723
  * Empty directory or ENOENT → `[]`. Other I/O failures throw
3692
- * `"Failed to enumerate tasks"`.
3724
+ * `"Failed to enumerate tasks"`, unless a valid index is available to answer
3725
+ * from instead.
3693
3726
  */
3694
3727
  declare function enumerateTaskIds(paths: BasouPaths): Promise<string[]>;
3695
3728
  /**
@@ -3900,7 +3933,8 @@ type ReconcileFailure = {
3900
3933
  phase: TaskWriteAfterEventPhase | null;
3901
3934
  };
3902
3935
  /**
3903
- * Batch audit result. Order follows `enumerateTaskIds(paths)` (ULID-ascending).
3936
+ * Batch audit result. Order follows `enumerateTaskIds(paths)`, which is
3937
+ * ULID-ascending for any index basou wrote and for every disk scan.
3904
3938
  * `scanned` is the number of readable task.md files processed (= excludes
3905
3939
  * malformed task.md from the count so an integrity-broken file does not
3906
3940
  * pad the total).
@@ -4689,14 +4723,13 @@ type OrientationSummary = {
4689
4723
  * zero in-flight count distinguish "all closed" from "never used here".
4690
4724
  * See {@link anyTaskEverRecorded}: a live count is NOT this. */
4691
4725
  anyTaskEverRecorded: boolean;
4692
- /** Task files THIS pass tried and failed to read, so their status is
4693
- * unknown. A zero in-flight count is only a claim about the files that
4694
- * parsed: with one of these present, "none in flight" is not something the
4695
- * renderer can say. Reported to the caller through `onTaskSkip` as well,
4696
- * but that goes to stderr and the body travels on its own (hooks ship the
4697
- * body alone). Not a standing count: enumerating tasks can rebuild the
4698
- * index without the unreadable file, after which later passes do not
4699
- * attempt it and this reads zero while the file is still on disk. */
4726
+ /** How many task files this render could not read.
4727
+ *
4728
+ * A standing count: the task index is reconciled against the tasks directory
4729
+ * on every enumeration, so a file that cannot be parsed keeps being attempted
4730
+ * and keeps being counted until it is repaired or removed. It used to
4731
+ * read zero from the second render on, because rebuilding the index dropped
4732
+ * the file and nothing enumerated it again. */
4700
4733
  unreadableTaskCount: number;
4701
4734
  /** Tasks whose status is `planned` ("where am I heading"). */
4702
4735
  plannedTasks: PlannedTask[];
@@ -5953,6 +5986,120 @@ type WorkspaceViewPlan = {
5953
5986
  */
5954
5987
  declare function planWorkspaceView(facts: ViewRepoFact[], existing?: ExistingViewLink[], rosterNames?: string[]): WorkspaceViewPlan;
5955
5988
 
5989
+ /** Prefix of the token embedded in a delivery; the content digest follows it. */
5990
+ declare const PROTOCOL_UPDATE_TOKEN_PREFIX = "basou:protocol-updated";
5991
+ /** What the block records about itself. */
5992
+ type ProtocolStamp = {
5993
+ /** When the block's rendered protocol text last CHANGED (ISO 8601, UTC). */
5994
+ changedAt: string;
5995
+ /** Truncated digest of that rendered text. */
5996
+ contentHash: string;
5997
+ };
5998
+ /** Truncated digest of the block's rendered protocol text. */
5999
+ declare function protocolBlockHash(sections: string): string;
6000
+ /**
6001
+ * The delivery's dedupe token for a given block state.
6002
+ *
6003
+ * It carries the content digest rather than being a bare literal, so "already
6004
+ * delivered" means "already delivered THIS text". A second update inside one
6005
+ * session — usually the correction of the first, after watching an agent
6006
+ * misapply it — is a different digest and still lands. A bare literal would
6007
+ * make the one edit most worth delivering the one guaranteed not to arrive.
6008
+ */
6009
+ declare function protocolUpdateToken(contentHash: string): string;
6010
+ /**
6011
+ * Render the stamp line.
6012
+ *
6013
+ * Nothing operator-authored goes on it — only a timestamp and a digest — so a
6014
+ * source path or a protocol body containing a space, a quote, or a `-->` cannot
6015
+ * break the line it is rendered into.
6016
+ */
6017
+ declare function renderProtocolStamp(stamp: ProtocolStamp): string;
6018
+ /**
6019
+ * Find and parse the stamp line in a rendered block body.
6020
+ *
6021
+ * Returns `null` when the block carries no readable stamp — a block rendered by
6022
+ * a basou older than this feature, a hand-deleted stamp, a mangled one. A null
6023
+ * means "cannot tell", and every caller treats it as "say nothing": the point
6024
+ * of the feature is to speak only when basou actually knows something changed.
6025
+ */
6026
+ declare function parseProtocolStamp(blockBody: string): ProtocolStamp | null;
6027
+ /**
6028
+ * Build the stamp for the block about to be written: keep the previous
6029
+ * `changedAt` when the rendered text is unchanged, and set it to `now`
6030
+ * otherwise.
6031
+ *
6032
+ * `sections` is the rendered protocol text exactly as it will appear under the
6033
+ * stamp — the same bytes a session reads and the same bytes a delivery carries.
6034
+ * Hashing anything else (the raw source files, say) would let bytes no session
6035
+ * ever sees move the stamp, and basou would then tell a session that text it
6036
+ * already holds supersedes what it already holds.
6037
+ *
6038
+ * `changedAt` is forced strictly forward when the text did change. Wall-clock
6039
+ * time can move backwards — an NTP correction, a laptop waking in another
6040
+ * timezone — and a stamp dated before the session start would drop the delivery
6041
+ * for the rest of that session, silently and permanently.
6042
+ */
6043
+ declare function carryForwardProtocolStamp(input: {
6044
+ sections: string;
6045
+ previous: ProtocolStamp | null;
6046
+ now: string;
6047
+ }): ProtocolStamp;
6048
+ /**
6049
+ * The rendered protocol text inside a block: everything below the stamp line.
6050
+ *
6051
+ * Anchored on the stamp rather than on "skip the leading comments" so a
6052
+ * protocol whose own body opens with an HTML comment keeps it. Returns `null`
6053
+ * when there is no stamp line to anchor on, and an empty string when the block
6054
+ * holds a stamp and nothing else.
6055
+ *
6056
+ * Takes a block BODY, but stops at a closing marker line if one is present, so
6057
+ * handing it a whole file yields the same answer instead of a digest that
6058
+ * silently includes the marker and matches nothing.
6059
+ */
6060
+ declare function protocolSectionsFrom(blockBody: string): string | null;
6061
+ /**
6062
+ * The rendered protocol text inside a block written before stamps existed:
6063
+ * everything below the managed note.
6064
+ *
6065
+ * Only for reading the block an upgrade is about to replace. Knowing what that
6066
+ * block held is what lets an upgrade stay silent — if the text is the same, no
6067
+ * running session is owed anything, and dating the new stamp at `now` would
6068
+ * announce a change to every session on the machine the first time the new
6069
+ * basou syncs. Less precise than the stamped path (a protocol body opening
6070
+ * with its own HTML comment loses that line here), which is why it is confined
6071
+ * to blocks that carry no stamp: a wrong answer costs one redundant delivery,
6072
+ * never a wrong one.
6073
+ */
6074
+ declare function unstampedProtocolSectionsFrom(blockBody: string): string;
6075
+ /**
6076
+ * Whether a session that started at `sessionStartedAt` is holding an older copy
6077
+ * of the block than the one the stamp describes.
6078
+ *
6079
+ * A change dated at or before the start is one the session already read. An
6080
+ * unparseable start yields `false` rather than "everything": without a session
6081
+ * start there is no "after".
6082
+ */
6083
+ declare function isProtocolUpdateDue(input: {
6084
+ stamp: ProtocolStamp;
6085
+ sessionStartedAt: string;
6086
+ }): boolean;
6087
+ /**
6088
+ * The text handed to the running session: the protocols themselves, not a
6089
+ * pointer to them.
6090
+ *
6091
+ * basou cannot observe whether an agent re-read a file, so a notice saying "go
6092
+ * and re-read" would put the one step that decides the outcome outside what
6093
+ * basou can see. Carrying the text makes the delivery and the reading the same
6094
+ * act. It does not make the ADOPTION observable — nothing basou can do would —
6095
+ * but it removes the step that was avoidably invisible.
6096
+ *
6097
+ * The complete current set is sent, not a diff, so the lead line's claim is
6098
+ * exactly true: after this, the set below is the whole of the standing
6099
+ * protocols, and anything read at session start that is absent here is gone.
6100
+ */
6101
+ declare function renderProtocolUpdate(sections: string, stamp: ProtocolStamp): string;
6102
+
5956
6103
  /**
5957
6104
  * `schema_version` of each on-disk format, keyed by artifact basename.
5958
6105
  *
@@ -7508,4 +7655,4 @@ declare function overwriteYamlFile(filePath: string, value: unknown): Promise<vo
7508
7655
  */
7509
7656
  declare const BASOU_CORE_VERSION = "0.1.0";
7510
7657
 
7511
- export { ACTIVE_GAP_CAP_MS, AGENT_INFRA_DIRS, APPROVAL_SCHEMA_VERSION, type ActiveTimeBasis, type AdapterOutputEvent, type AdoptCandidate, type AdoptCandidateKind, type AnchorStarterInput, type AnchorStarterRepo, 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_BUILD, BASOU_CORE_VERSION, type BasouPaths, type BuildStamp, 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 CodexCommandLookup, type CodexHooksFile, type CodexRolloutRecord, type CodexRolloutToPayloadOptions, type CommandExecutedEvent, type CommandLookup, type CreateAdHocSessionInput, type CreateAdHocSessionResult, type CreateAdHocTaskInput, type CreateManifestInput, type CreateTaskInput, type CreateTaskResult, DECISION_GAPS_EPOCH, DEFAULT_STOP_HOOK_MIN_EDITS, type DayWorkStats, type DecisionGap, type DecisionGapsExcluded, type DecisionGapsIncomplete, type DecisionGapsInput, type DecisionGapsScope, type DecisionGapsSummary, DecisionIdSchema, type DecisionRecordedEvent, type DecisionsRendererInput, type DecisionsRendererResult, type DeleteTaskInput, type DeleteTaskResult, type DiffResult, EVENT_SCHEMA_VERSION, 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 IncompleteWiring, type InstructionFileFact, type InstructionSymlinkFact, type InstructionSymlinkState, IsoTimestampSchema, JSON_SCHEMA_VERSIONS, type JsonSchemaArtifact, LOCAL_CLI_EVENT_SOURCE, type LoadFederatedOptions, type LoadSessionEntriesOptions, type LoadTaskEntriesOptions, type LoadedApproval, type LockHandle, type LockScope, MANIFEST_SCHEMA_VERSION, type Manifest, ManifestSchema, type MarkerSection, type Markers, type MeasureAvailability, type MissingCanonical, type NoteAddedEvent, ORIENTATION_END, ORIENTATION_START, 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 PresetStrings, type ProcessRunner, type PublishKind, type PublishTarget, REVIEW_RECORD_NO_INPUT_HINT, 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 RepoPathProblem, 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 ReviewBlocked, type ReviewFinding, type ReviewGapRepoSummary, type ReviewGapUnit, type ReviewGapVerdict, type ReviewGapsInput, type ReviewGapsSummary, type ReviewGateResult, type ReviewGateSilentReason, type ReviewRecordBlockedInput, type ReviewRecordFindingInput, type ReviewRecordInput, type ReviewRecordedEvent, type RiskLevel, RiskLevelSchema, type RosterAdoptionPlan, type RosterDriftSummary, type RunOptions, type RunResult, SESSION_IMPORT_SCHEMA_VERSION, SESSION_SCHEMA_VERSION, SESSION_START_HOOK_CONTEXT_LIMIT, SESSION_START_HOOK_MATCHER, SESSION_START_HOOK_STATUS_MESSAGE, SESSION_START_HOOK_TIMEOUT_SECONDS, STOP_HOOK_TIMEOUT_SECONDS, STUCK_THRESHOLD_MS, type SanitizePathOptions, type SanitizeRelatedFilesResult, SchemaVersionSchema, type SelfReportedReview, 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 SessionStartHookLocation, type SessionStartHookRemoval, type SessionStartHookUpsert, 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, TASK_SCHEMA_VERSION, 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 UnattachedSelfReports, type UnbindableRepo, type UpdateAdHocTaskStatusInput, type UpdateTaskStatusInput, type UpdateTaskStatusResult, type ViewCollision, type ViewConflict, type ViewLanguage, type ViewLinkState, type ViewPresetInput, type ViewPresetRepo, type ViewRepoFact, type ViewStrayUnknown, type ViewStrings, type ViewWiringFacts, type WiringCollision, type WiringConflict, type WiringDriftSummary, type WiringRisk, type WiringSummary, type WorkStatsInput, type WorkStatsResult, type WorkStatsTotals, WorkspaceIdSchema, type WorkspaceViewPlan, type WriteEventsBulkOptions, type WriteTaskFileMode, ZERO_DURATION_RETIRED_SINCE, acquireLock, appendBasouGitignore, appendChainedEvent, appendChainedEventLocked, appendEvent, appendEventToExistingSession, archiveTask, assertBasouRootSafe, basouPaths, buildJsonSchemas, buildReviewRecordLabel, buildReviewRecordedEvent, buildSessionStartHookCommand, buildStatusSnapshot, buildStopHookCommand, chainEvents, chainRawJsonLines, classifyFilesBySourceRoot, classifyRetrofit, classifySuspect, claudeCodeAdapterMetadata, claudeTranscriptToImportPayload, codexAdapterMetadata, codexRolloutToImportPayload, computeWorkStats, createAdHocSessionWithEvent, createManifest, createTaskWithEvent, deleteTask, editTask, ensureBasouDirectory, enumerateApprovals, enumerateArchivedTaskIds, enumerateSessionDirs, enumerateTaskIds, evaluateStopHook, finalizeSessionYaml, findBasouSessionStartHook, findBasouStopHookCommand, findDecisionGaps, findErrorCode, findReviewGaps, findUnbindableRepos, formatDurationMs, genesisHash, getDiff, getSnapshot, hasRetiredZeroDuration, importSessionFromJson, inspectChainTail, instructionMode, isBasouSessionStartHookCommand, isBasouStopHookCommand, isGitNotFound, isImportDerivedSource, isLazyExpired, isRenderable, isValidPrefixedId, lineHash, linkYamlFile, loadApproval, loadFederatedSessionEntries, loadSessionEntries, loadTaskEntries, normalizeRepoKey, normalizeRepoPath, overwriteYamlFile, parseBuildStamp, parseDuration, parseMarkers, parseReviewRecordInput, pathBasename, planArchive, planGitignore, planRename, planRosterAdoption, planWorkspaceView, prefixedUlid, presetStrings, readAllEvents, readManifest, readMarkdownFile, readObservedDuration, readSessionYaml, readStatus, readTaskFile, readTaskFileWithArchiveFallback, readYamlFile, rechainSessionInPlace, reconcileAllTasks, reconcileSourceRoots, reconcileTask, refreshTaskLinkedSessions, reimportPreservingId, removeMarkerSection, removeSessionStartHook, removeStopHook, renderAnchorStarter, renderDecisions, renderHandoff, renderOrientation, renderPresetBlock, renderReport, renderViewPresetBlock, renderWithMarkers, replayEvents, resolveAnchorContentLanguage, resolveBasouRepositoryRoot, resolveClaudeCodeCommand, resolveCodexCommand, resolveRepoContentLanguage, resolveRepoRoot, resolveRepositoryRoot, resolveSessionId, resolveTaskId, resolveViewLanguage, resolveViewLanguageFromPaths, safeSimpleGit, sanitizePath, sanitizeRelatedFiles, sanitizeWorkingDirectory, seedMarkers, serializeEventLine, serializeJsonSchema, sessionWorkStatsFromEvents, summarizeAdapterOutput, summarizeOrientation, summarizePresetPlan, summarizeRosterDrift, summarizeSymlinkPlan, summarizeWiring, summarizeWiringDrift, tryRemoteUrl, ulid, unknownManifestKeys, updateTaskStatusWithEvent, upsertSessionStartHook, upsertStopHook, verifyEventsChain, viewStrings, writeEventsBulk, writeManifest, writeMarkdownFile, writeObservedDuration, writeStatus, writeTaskFile, writeYamlFile };
7658
+ export { ACTIVE_GAP_CAP_MS, AGENT_INFRA_DIRS, APPROVAL_SCHEMA_VERSION, type ActiveTimeBasis, type AdapterOutputEvent, type AdoptCandidate, type AdoptCandidateKind, type AnchorStarterInput, type AnchorStarterRepo, 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_BUILD, BASOU_CORE_VERSION, type BasouPaths, type BuildStamp, 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 CodexCommandLookup, type CodexHooksFile, type CodexRolloutRecord, type CodexRolloutToPayloadOptions, type CommandExecutedEvent, type CommandLookup, type CreateAdHocSessionInput, type CreateAdHocSessionResult, type CreateAdHocTaskInput, type CreateManifestInput, type CreateTaskInput, type CreateTaskResult, DECISION_GAPS_EPOCH, DEFAULT_STOP_HOOK_MIN_EDITS, type DayWorkStats, type DecisionGap, type DecisionGapsExcluded, type DecisionGapsIncomplete, type DecisionGapsInput, type DecisionGapsScope, type DecisionGapsSummary, DecisionIdSchema, type DecisionRecordedEvent, type DecisionsRendererInput, type DecisionsRendererResult, type DeleteTaskInput, type DeleteTaskResult, type DiffResult, EVENT_SCHEMA_VERSION, 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 IncompleteWiring, type InstructionFileFact, type InstructionSymlinkFact, type InstructionSymlinkState, IsoTimestampSchema, JSON_SCHEMA_VERSIONS, type JsonSchemaArtifact, LOCAL_CLI_EVENT_SOURCE, type LoadFederatedOptions, type LoadSessionEntriesOptions, type LoadTaskEntriesOptions, type LoadedApproval, type LockHandle, type LockScope, MANIFEST_SCHEMA_VERSION, type Manifest, ManifestSchema, type MarkerSection, type Markers, type MeasureAvailability, type MissingCanonical, type NoteAddedEvent, ORIENTATION_END, ORIENTATION_START, type OrientationRendererInput, type OrientationRendererResult, type OrientationSummary, PROTOCOL_END, PROTOCOL_START, PROTOCOL_UPDATE_TOKEN_PREFIX, type PrefixedId, type PresetAction, type PresetCollision, type PresetMarkerConflict, type PresetMarkerKind, type PresetPlanSummary, type PresetRepo, type PresetStrings, type ProcessRunner, type ProtocolStamp, type PublishKind, type PublishTarget, REVIEW_RECORD_NO_INPUT_HINT, 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 RepoPathProblem, 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 ReviewBlocked, type ReviewFinding, type ReviewGapRepoSummary, type ReviewGapUnit, type ReviewGapVerdict, type ReviewGapsInput, type ReviewGapsSummary, type ReviewGateResult, type ReviewGateSilentReason, type ReviewRecordBlockedInput, type ReviewRecordFindingInput, type ReviewRecordInput, type ReviewRecordedEvent, type RiskLevel, RiskLevelSchema, type RosterAdoptionPlan, type RosterDriftSummary, type RunOptions, type RunResult, SESSION_IMPORT_SCHEMA_VERSION, SESSION_SCHEMA_VERSION, SESSION_START_HOOK_CONTEXT_LIMIT, SESSION_START_HOOK_MATCHER, SESSION_START_HOOK_STATUS_MESSAGE, SESSION_START_HOOK_TIMEOUT_SECONDS, STOP_HOOK_TIMEOUT_SECONDS, STUCK_THRESHOLD_MS, type SanitizePathOptions, type SanitizeRelatedFilesResult, SchemaVersionSchema, type SelfReportedReview, 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 SessionStartHookLocation, type SessionStartHookRemoval, type SessionStartHookUpsert, 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, TASK_SCHEMA_VERSION, 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 UnattachedSelfReports, type UnbindableRepo, type UpdateAdHocTaskStatusInput, type UpdateTaskStatusInput, type UpdateTaskStatusResult, type ViewCollision, type ViewConflict, type ViewLanguage, type ViewLinkState, type ViewPresetInput, type ViewPresetRepo, type ViewRepoFact, type ViewStrayUnknown, type ViewStrings, type ViewWiringFacts, type WiringCollision, type WiringConflict, type WiringDriftSummary, type WiringRisk, type WiringSummary, type WorkStatsInput, type WorkStatsResult, type WorkStatsTotals, WorkspaceIdSchema, type WorkspaceViewPlan, type WriteEventsBulkOptions, type WriteTaskFileMode, ZERO_DURATION_RETIRED_SINCE, acquireLock, appendBasouGitignore, appendChainedEvent, appendChainedEventLocked, appendEvent, appendEventToExistingSession, archiveTask, assertBasouRootSafe, basouPaths, buildJsonSchemas, buildReviewRecordLabel, buildReviewRecordedEvent, buildSessionStartHookCommand, buildStatusSnapshot, buildStopHookCommand, carryForwardProtocolStamp, chainEvents, chainRawJsonLines, classifyFilesBySourceRoot, classifyRetrofit, classifySuspect, claudeCodeAdapterMetadata, claudeTranscriptToImportPayload, codexAdapterMetadata, codexRolloutToImportPayload, computeWorkStats, createAdHocSessionWithEvent, createManifest, createTaskWithEvent, deleteTask, editTask, ensureBasouDirectory, enumerateApprovals, enumerateArchivedTaskIds, enumerateSessionDirs, enumerateTaskIds, evaluateStopHook, finalizeSessionYaml, findBasouSessionStartHook, findBasouStopHookCommand, findDecisionGaps, findErrorCode, findReviewGaps, findUnbindableRepos, formatDurationMs, genesisHash, getDiff, getSnapshot, hasRetiredZeroDuration, importSessionFromJson, inspectChainTail, instructionMode, isBasouSessionStartHookCommand, isBasouStopHookCommand, isGitNotFound, isImportDerivedSource, isLazyExpired, isProtocolUpdateDue, isRenderable, isValidPrefixedId, lineHash, linkYamlFile, loadApproval, loadFederatedSessionEntries, loadSessionEntries, loadTaskEntries, normalizeRepoKey, normalizeRepoPath, overwriteYamlFile, parseBuildStamp, parseDuration, parseMarkers, parseProtocolStamp, parseReviewRecordInput, pathBasename, planArchive, planGitignore, planRename, planRosterAdoption, planWorkspaceView, prefixedUlid, presetStrings, protocolBlockHash, protocolSectionsFrom, protocolUpdateToken, readAllEvents, readManifest, readMarkdownFile, readObservedDuration, readSessionYaml, readStatus, readTaskFile, readTaskFileWithArchiveFallback, readYamlFile, rechainSessionInPlace, reconcileAllTasks, reconcileSourceRoots, reconcileTask, refreshTaskLinkedSessions, reimportPreservingId, removeMarkerSection, removeSessionStartHook, removeStopHook, renderAnchorStarter, renderDecisions, renderHandoff, renderOrientation, renderPresetBlock, renderProtocolStamp, renderProtocolUpdate, renderReport, renderViewPresetBlock, renderWithMarkers, replayEvents, resolveAnchorContentLanguage, resolveBasouRepositoryRoot, resolveClaudeCodeCommand, resolveCodexCommand, resolveRepoContentLanguage, resolveRepoRoot, resolveRepositoryRoot, resolveSessionId, resolveTaskId, resolveViewLanguage, resolveViewLanguageFromPaths, safeSimpleGit, sanitizePath, sanitizeRelatedFiles, sanitizeWorkingDirectory, seedMarkers, serializeEventLine, serializeJsonSchema, sessionWorkStatsFromEvents, summarizeAdapterOutput, summarizeOrientation, summarizePresetPlan, summarizeRosterDrift, summarizeSymlinkPlan, summarizeWiring, summarizeWiringDrift, transcriptStartedAt, tryRemoteUrl, ulid, unknownManifestKeys, unstampedProtocolSectionsFrom, updateTaskStatusWithEvent, upsertSessionStartHook, upsertStopHook, verifyEventsChain, viewStrings, writeEventsBulk, writeManifest, writeMarkdownFile, writeObservedDuration, writeStatus, writeTaskFile, writeYamlFile };