@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 +184 -17
- package/dist/index.js +151 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/schemas/manifest.schema.json +7 -0
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;
|
|
3846
|
-
*
|
|
3847
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
4231
|
-
* (`<anchor>/agents/<repo>/AGENTS.md`) exists
|
|
4232
|
-
* dangle, so no links are planned (reported as
|
|
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
|
|
4289
|
-
*
|
|
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). `
|
|
4381
|
-
*
|
|
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 };
|