@wildorder/nightshift 0.13.0 → 0.14.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.
Files changed (73) hide show
  1. package/README.md +46 -19
  2. package/dist/agent-probe.d.ts +21 -2
  3. package/dist/agent-probe.d.ts.map +1 -1
  4. package/dist/agent-probe.js +76 -22
  5. package/dist/agent-probe.js.map +1 -1
  6. package/dist/agent-runner.d.ts +90 -2
  7. package/dist/agent-runner.d.ts.map +1 -1
  8. package/dist/agent-runner.js +382 -24
  9. package/dist/agent-runner.js.map +1 -1
  10. package/dist/agent-summary.d.ts +15 -0
  11. package/dist/agent-summary.d.ts.map +1 -1
  12. package/dist/agent-summary.js +32 -2
  13. package/dist/agent-summary.js.map +1 -1
  14. package/dist/as-built.d.ts +6 -0
  15. package/dist/as-built.d.ts.map +1 -1
  16. package/dist/as-built.js +7 -0
  17. package/dist/as-built.js.map +1 -1
  18. package/dist/author.d.ts +9 -0
  19. package/dist/author.d.ts.map +1 -1
  20. package/dist/author.js +118 -24
  21. package/dist/author.js.map +1 -1
  22. package/dist/ci-init.d.ts.map +1 -1
  23. package/dist/ci-init.js +17 -12
  24. package/dist/ci-init.js.map +1 -1
  25. package/dist/cli.js +71 -8
  26. package/dist/cli.js.map +1 -1
  27. package/dist/config.d.ts +11 -0
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +13 -0
  30. package/dist/config.js.map +1 -1
  31. package/dist/crash-report.d.ts +58 -0
  32. package/dist/crash-report.d.ts.map +1 -0
  33. package/dist/crash-report.js +115 -0
  34. package/dist/crash-report.js.map +1 -0
  35. package/dist/decide.js +1 -1
  36. package/dist/decide.js.map +1 -1
  37. package/dist/decider-review.d.ts +33 -5
  38. package/dist/decider-review.d.ts.map +1 -1
  39. package/dist/decider-review.js +55 -9
  40. package/dist/decider-review.js.map +1 -1
  41. package/dist/decision-ledger.d.ts +44 -1
  42. package/dist/decision-ledger.d.ts.map +1 -1
  43. package/dist/decision-ledger.js +46 -1
  44. package/dist/decision-ledger.js.map +1 -1
  45. package/dist/decision-view.d.ts +10 -1
  46. package/dist/decision-view.d.ts.map +1 -1
  47. package/dist/decision-view.js +41 -0
  48. package/dist/decision-view.js.map +1 -1
  49. package/dist/manifest.d.ts +21 -1
  50. package/dist/manifest.d.ts.map +1 -1
  51. package/dist/manifest.js +221 -11
  52. package/dist/manifest.js.map +1 -1
  53. package/dist/permits.d.ts +135 -0
  54. package/dist/permits.d.ts.map +1 -0
  55. package/dist/permits.js +397 -0
  56. package/dist/permits.js.map +1 -0
  57. package/dist/publish.d.ts +35 -0
  58. package/dist/publish.d.ts.map +1 -1
  59. package/dist/publish.js +149 -16
  60. package/dist/publish.js.map +1 -1
  61. package/dist/run-program.d.ts +53 -2
  62. package/dist/run-program.d.ts.map +1 -1
  63. package/dist/run-program.js +529 -54
  64. package/dist/run-program.js.map +1 -1
  65. package/dist/whole-program-review.d.ts +4 -0
  66. package/dist/whole-program-review.d.ts.map +1 -1
  67. package/dist/whole-program-review.js +9 -1
  68. package/dist/whole-program-review.js.map +1 -1
  69. package/package.json +2 -2
  70. package/dist/verify-allowlist.d.ts +0 -23
  71. package/dist/verify-allowlist.d.ts.map +0 -1
  72. package/dist/verify-allowlist.js +0 -46
  73. package/dist/verify-allowlist.js.map +0 -1
package/dist/manifest.js CHANGED
@@ -144,15 +144,12 @@ export function specInputsHash(manifest, workstream) {
144
144
  export function manifestPath(root, programId) {
145
145
  return join(resolve(root), "docs", "programs", `${programId}-manifest.json`);
146
146
  }
147
- export async function loadManifest(root, programId) {
148
- const path = manifestPath(root, programId);
149
- let raw;
150
- try {
151
- raw = await readFile(path, "utf8");
152
- }
153
- catch {
154
- throw new Error(`No manifest at ${path}. Plan the program first with /plan-program.`);
155
- }
147
+ /**
148
+ * Parse-and-validate body shared by `loadManifest` and the drift path in
149
+ * `saveManifest` — both need the identical diagnosis for the identical
150
+ * class of invalid content, so there is exactly one definition of "valid".
151
+ */
152
+ function parseManifest(raw, path) {
156
153
  let parsed;
157
154
  try {
158
155
  parsed = JSON.parse(raw);
@@ -194,7 +191,220 @@ export async function loadManifest(root, programId) {
194
191
  }
195
192
  return manifest;
196
193
  }
197
- export async function saveManifest(root, programId, manifest) {
198
- await writeFile(manifestPath(root, programId), `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
194
+ // The exact bytes this process last read (loadManifest) or wrote
195
+ // (saveManifest) for each manifest path the drift baseline. "Drift" is a
196
+ // byte-for-byte difference between this and what is on disk at save time, so
197
+ // a whitespace-only human edit is a real (harmless) merge and the comparison
198
+ // is deterministic without a model. Keyed by the resolved absolute manifest
199
+ // path so two programs, or two tmpdirs in tests, never collide.
200
+ const lastBytes = new Map();
201
+ // Total merged-on-drift saves performed this process for each path. Only
202
+ // ever incremented (never reset), so a run can snapshot it at start and
203
+ // compare at report time without a reload clearing history mid-run.
204
+ const mergeCount = new Map();
205
+ export async function loadManifest(root, programId) {
206
+ const path = manifestPath(root, programId);
207
+ let raw;
208
+ try {
209
+ raw = await readFile(path, "utf8");
210
+ }
211
+ catch {
212
+ throw new Error(`No manifest at ${path}. Plan the program first with /plan-program.`);
213
+ }
214
+ const manifest = parseManifest(raw, path);
215
+ lastBytes.set(path, raw);
216
+ return manifest;
217
+ }
218
+ /**
219
+ * Every field of a manifest has exactly one authoritative writer. The
220
+ * runner owns `program.status`; each workstream's `status`, `specHash`,
221
+ * `commit`, `dependencies`, and (see {@link mergeManifests}'s doc comment)
222
+ * `prerequisites`; and each prerequisite record's `status`. The human owns
223
+ * everything else, including which workstreams and prerequisite records
224
+ * exist at all. A save that finds the on-disk copy has drifted since this
225
+ * process last read or wrote it reloads that copy, overlays only the
226
+ * runner-owned fields from memory onto it, and writes the merge — never a
227
+ * blind whole-object overwrite. See `docs/programs/clear-backlog-manifest.json`
228
+ * (WS-02) for the full contract this implements.
229
+ */
230
+ export async function saveManifest(root, programId, manifest, options) {
231
+ const path = manifestPath(root, programId);
232
+ const serialized = `${JSON.stringify(manifest, null, 2)}\n`;
233
+ let currentOnDisk;
234
+ try {
235
+ currentOnDisk = await readFile(path, "utf8");
236
+ }
237
+ catch {
238
+ currentOnDisk = undefined;
239
+ }
240
+ if (currentOnDisk === undefined) {
241
+ await writeFile(path, serialized, "utf8");
242
+ lastBytes.set(path, serialized);
243
+ return { merged: false };
244
+ }
245
+ const baseline = lastBytes.get(path);
246
+ if (baseline === undefined || currentOnDisk === baseline) {
247
+ await writeFile(path, serialized, "utf8");
248
+ lastBytes.set(path, serialized);
249
+ return { merged: false };
250
+ }
251
+ // Drift: the bytes on disk differ from what this process last read or
252
+ // wrote. The on-disk copy must still be valid to merge onto.
253
+ let disk;
254
+ try {
255
+ disk = parseManifest(currentOnDisk, path);
256
+ }
257
+ catch (error) {
258
+ throw new Error(`${path} was amended on disk since this run last read it, but the ` +
259
+ `amended copy could not be merged: ${error.message}`, { cause: error });
260
+ }
261
+ const { manifest: merged, removedWorkstreamIds, removedPrerequisiteIds } = mergeManifests(disk, manifest);
262
+ const mergedSerialized = `${JSON.stringify(merged, null, 2)}\n`;
263
+ try {
264
+ parseManifest(mergedSerialized, path);
265
+ }
266
+ catch (error) {
267
+ throw new Error(`${path} was amended on disk since this run last read it, and merging ` +
268
+ `the run's changes onto the amendment produced an invalid manifest: ` +
269
+ `${error.message}`, { cause: error });
270
+ }
271
+ await writeFile(path, mergedSerialized, "utf8");
272
+ lastBytes.set(path, mergedSerialized);
273
+ mergeCount.set(path, (mergeCount.get(path) ?? 0) + 1);
274
+ adoptMerged(manifest, merged);
275
+ options?.log?.(`manifest: on-disk copy was amended since this run loaded it; merged ` +
276
+ `the human's edits and kept the runner's status changes (${path})`);
277
+ for (const id of removedWorkstreamIds) {
278
+ options?.log?.(`manifest: workstream "${id}" was removed from the manifest by a ` +
279
+ `human edit; discarding this run's in-memory progress for it (${path})`);
280
+ }
281
+ for (const id of removedPrerequisiteIds) {
282
+ options?.log?.(`manifest: prerequisite "${id}" was removed from the manifest by a ` +
283
+ `human edit; discarding this run's in-memory progress for it (${path})`);
284
+ }
285
+ return { merged: true };
286
+ }
287
+ export function manifestMergeCount(root, programId) {
288
+ return mergeCount.get(manifestPath(root, programId)) ?? 0;
289
+ }
290
+ /**
291
+ * Field-level merge of a runner-held in-memory manifest onto a validated
292
+ * on-disk copy. `disk` is the base — every field the human owns comes from
293
+ * it, including roster membership. Only the runner-owned fields listed in
294
+ * the module doc comment are overlaid from `memory`. Returns a new object;
295
+ * does not mutate either input (the caller adopts the result into `memory`
296
+ * separately, preserving object identity — see `adoptMerged`). Does not log:
297
+ * the caller only logs once the merge has been validated and written.
298
+ */
299
+ function mergeManifests(disk, memory) {
300
+ const memoryWorkstreamById = new Map(memory.workstreams.map((w) => [w.id, w]));
301
+ const diskWorkstreamIds = new Set(disk.workstreams.map((w) => w.id));
302
+ const diskPrerequisiteIds = new Set(disk.prerequisites.map((p) => p.id));
303
+ const mergedWorkstreams = disk.workstreams.map((diskWorkstream) => {
304
+ const memoryWorkstream = memoryWorkstreamById.get(diskWorkstream.id);
305
+ if (!memoryWorkstream)
306
+ return diskWorkstream;
307
+ const mergedDependencies = memoryWorkstream.dependencies.filter((id) => diskWorkstreamIds.has(id));
308
+ // Which prerequisites gate a workstream is treated as runner-owned, not
309
+ // human-owned like the rest of the workstream's structural fields: a
310
+ // from-disk merge here cannot tell a genuine human edit from an agent's
311
+ // own file write landing on disk mid-run, and the latter must never let
312
+ // a workstream strip its own gate (SC-11 — see
313
+ // test/run-program.test.ts's "self-satisfying HP-01" case, and the
314
+ // WS-02 decision log for the full reasoning).
315
+ const mergedPrerequisiteRefs = memoryWorkstream.prerequisites.filter((id) => diskPrerequisiteIds.has(id));
316
+ const merged = {
317
+ ...diskWorkstream,
318
+ status: memoryWorkstream.status,
319
+ dependencies: mergedDependencies,
320
+ prerequisites: mergedPrerequisiteRefs,
321
+ };
322
+ if (memoryWorkstream.specHash === undefined) {
323
+ delete merged.specHash;
324
+ }
325
+ else {
326
+ merged.specHash = memoryWorkstream.specHash;
327
+ }
328
+ if (memoryWorkstream.commit === undefined) {
329
+ delete merged.commit;
330
+ }
331
+ else {
332
+ merged.commit = memoryWorkstream.commit;
333
+ }
334
+ return merged;
335
+ });
336
+ const removedWorkstreamIds = memory.workstreams
337
+ .map((w) => w.id)
338
+ .filter((id) => !diskWorkstreamIds.has(id));
339
+ const memoryPrerequisiteById = new Map(memory.prerequisites.map((p) => [p.id, p]));
340
+ const mergedPrerequisites = disk.prerequisites.map((diskPrerequisite) => {
341
+ const memoryPrerequisite = memoryPrerequisiteById.get(diskPrerequisite.id);
342
+ if (!memoryPrerequisite)
343
+ return diskPrerequisite;
344
+ return { ...diskPrerequisite, status: memoryPrerequisite.status };
345
+ });
346
+ const removedPrerequisiteIds = memory.prerequisites
347
+ .map((p) => p.id)
348
+ .filter((id) => !diskPrerequisiteIds.has(id));
349
+ const manifest = {
350
+ ...disk,
351
+ program: { ...disk.program, status: memory.program.status },
352
+ workstreams: mergedWorkstreams,
353
+ prerequisites: mergedPrerequisites,
354
+ };
355
+ return { manifest, removedWorkstreamIds, removedPrerequisiteIds };
356
+ }
357
+ /**
358
+ * Replaces every enumerable key of `target` with `source`'s keys — not a
359
+ * shallow `Object.assign`, which would leave a key deleted on `source` (a
360
+ * human removing a workstream's optional `size`, or a top-level `.loose()`
361
+ * key) stranded on `target`. Preserves `target`'s object identity.
362
+ */
363
+ function replaceContents(target, source) {
364
+ const targetBag = target;
365
+ const sourceBag = source;
366
+ for (const key of Object.keys(targetBag))
367
+ delete targetBag[key];
368
+ Object.assign(targetBag, sourceBag);
369
+ }
370
+ /**
371
+ * Adopts a merged manifest into the run's existing in-memory object by
372
+ * updating objects in place rather than swapping references — the build
373
+ * loop and topological order hold references to the original workstream
374
+ * objects, and swapping would detach them (see WS-02 decision: "Adopt the
375
+ * merged manifest by updating memory's objects in place").
376
+ */
377
+ function adoptMerged(memory, merged) {
378
+ const mergedWorkstreamById = new Map(merged.workstreams.map((w) => [w.id, w]));
379
+ const survivingWorkstreams = memory.workstreams.filter((workstream) => {
380
+ const match = mergedWorkstreamById.get(workstream.id);
381
+ if (!match)
382
+ return false;
383
+ replaceContents(workstream, match);
384
+ return true;
385
+ });
386
+ const survivingWorkstreamIds = new Set(survivingWorkstreams.map((w) => w.id));
387
+ for (const mergedWorkstream of merged.workstreams) {
388
+ if (!survivingWorkstreamIds.has(mergedWorkstream.id)) {
389
+ survivingWorkstreams.push({ ...mergedWorkstream });
390
+ }
391
+ }
392
+ const mergedPrerequisiteById = new Map(merged.prerequisites.map((p) => [p.id, p]));
393
+ const survivingPrerequisites = memory.prerequisites.filter((prerequisite) => {
394
+ const match = mergedPrerequisiteById.get(prerequisite.id);
395
+ if (!match)
396
+ return false;
397
+ replaceContents(prerequisite, match);
398
+ return true;
399
+ });
400
+ const survivingPrerequisiteIds = new Set(survivingPrerequisites.map((p) => p.id));
401
+ for (const mergedPrerequisite of merged.prerequisites) {
402
+ if (!survivingPrerequisiteIds.has(mergedPrerequisite.id)) {
403
+ survivingPrerequisites.push({ ...mergedPrerequisite });
404
+ }
405
+ }
406
+ replaceContents(memory, merged);
407
+ memory.workstreams = survivingWorkstreams;
408
+ memory.prerequisites = survivingPrerequisites;
199
409
  }
200
410
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import type { AgentConfig, NightshiftConfig, PermitsConfig } from "./config.js";
2
+ /**
3
+ * The permission posture nightshift derives for each agent spawn — from the
4
+ * agent's role, the provider it runs, and the host it runs on — replacing
5
+ * the hand-written `--permission-mode`/`--allowedTools` flags an operator
6
+ * used to maintain by hand. See docs/programs's WS-01 spec for the full
7
+ * design: this module builds no judge of its own, it only chooses among
8
+ * containments the providers already ship (claude's `auto` classifier and
9
+ * OS sandbox, codex's workspace-write sandbox).
10
+ */
11
+ /** The five spawn seats; postures are fixed, never configured. */
12
+ export type AgentRole = "agent" | "recoveryAgent" | "authorAgent" | "deciderAgent" | "reviewerAgent";
13
+ export type Posture = "workspace" | "read-only";
14
+ /**
15
+ * Fixed per-role postures — mirrors the write/exec split `agent-probe.ts`
16
+ * already encoded as WRITE_ROLES/EXEC_ROLES. Exported so the probe sources
17
+ * its write/read split from here rather than keeping a second copy that can
18
+ * drift.
19
+ */
20
+ export declare const ROLE_POSTURE: Record<AgentRole, Posture>;
21
+ /**
22
+ * The containment/mode label rendered on the `permissions:` startup line and
23
+ * the doctor probe. `unmanaged` covers a provider this module has no flag
24
+ * vocabulary for (gemini, cursor-agent, …) — SC-07's seven labels are all
25
+ * claude/codex-specific; this is the honest label for everything else.
26
+ */
27
+ export type ContainmentLabel = "ephemeral" | "auto+sandbox" | "auto" | "read-only" | "operator-configured" | "fallback (acceptEdits+verify)" | "fallback (detection failed)" | "read-only fallback (default+verify)" | "read-only fallback (detection failed)" | "unmanaged";
28
+ export interface DerivedInvocation {
29
+ /** Same command/promptMode; args carry the derived flags appended, or are untouched when operator-configured. */
30
+ agent: AgentConfig;
31
+ label: ContainmentLabel;
32
+ operatorConfigured: boolean;
33
+ /** The settings file this invocation reads, when one applies (claude only). */
34
+ settingsPath?: string;
35
+ /** An extra sentence for the startup line — e.g. codex's deny-rules caveat. */
36
+ note?: string;
37
+ }
38
+ /**
39
+ * True when the agent's own args already carry a permission-bearing flag —
40
+ * `--flag value` and `--flag=value` both match. An agent that trips this is
41
+ * spawned untouched and labeled operator-configured; rewriting an operator's
42
+ * authored flags is the override the charter forbids.
43
+ */
44
+ export declare function hasExplicitPermissionFlag(agent: AgentConfig): boolean;
45
+ /** One `--allowedTools`/settings allow entry per configured verify command. Relocated from verify-allowlist.ts. */
46
+ export declare function claudeVerifyAllowedTools(verify: Record<string, string>): string[];
47
+ /** The workspace settings file: verify rules + permits.allow/deny, plus a sandbox block on darwin/linux. */
48
+ export declare function workspaceSettingsContent(verify: Record<string, string>, permits: PermitsConfig | undefined, platform: NodeJS.Platform): string;
49
+ /** The read-only settings file: same allow/deny lists, never a sandbox block. */
50
+ export declare function readOnlySettingsContent(verify: Record<string, string>, permits: PermitsConfig | undefined): string;
51
+ export interface ClaudeCapabilities {
52
+ /** False when `--help` could not be run at all (not on PATH, spawn error). */
53
+ detected: boolean;
54
+ autoMode: boolean;
55
+ dontAskMode: boolean;
56
+ permissionPrompts: boolean;
57
+ }
58
+ /** Injectable boundary: resolves to the CLI's `--help` text, rejects on spawn failure. */
59
+ export type ClaudeHelpRunner = (command: string) => Promise<string>;
60
+ /**
61
+ * Turns a finished `--help` spawn into its text or a rejection. Exported so
62
+ * the nonzero-exit-code case (a `claude` on PATH that fails, rather than a
63
+ * missing command) is unit-testable without an actual child process: a
64
+ * nonzero exit must be reported as a detection failure, never parsed as if
65
+ * it were successful help output.
66
+ */
67
+ export declare function helpRunnerOutcome(code: number | null, output: string): string;
68
+ export declare const defaultClaudeHelpRunner: ClaudeHelpRunner;
69
+ /** Parses `claude --help` text into capabilities. Exported for fixture-driven tests. */
70
+ export declare function parseClaudeHelp(helpText: string): ClaudeCapabilities;
71
+ export declare function detectClaudeCapabilities(command: string, helpRunner?: ClaudeHelpRunner): Promise<ClaudeCapabilities>;
72
+ /** Test-only: clears the process-wide capability cache between fixture scenarios. */
73
+ export declare function resetClaudeCapabilityCacheForTests(): void;
74
+ export interface DerivationInput {
75
+ role: AgentRole;
76
+ agent: AgentConfig;
77
+ /** Raw `NIGHTSHIFT_CONTAINMENT` value; only `"ephemeral"` has meaning. */
78
+ containmentEnv: string | undefined;
79
+ platform: NodeJS.Platform;
80
+ /** Undefined for a non-claude command — capabilities are claude-specific. */
81
+ claudeCapabilities: ClaudeCapabilities | undefined;
82
+ workspaceSettingsPath: string;
83
+ readOnlySettingsPath: string;
84
+ }
85
+ /**
86
+ * The whole derivation, pure: role + posture + containment + capabilities +
87
+ * the agent's existing args -> the flags to spawn with. No I/O — capability
88
+ * detection and the settings-file write happen in the context builder below.
89
+ */
90
+ export declare function deriveAgentInvocation(input: DerivationInput): DerivedInvocation;
91
+ export interface PermitsContext {
92
+ workspaceSettingsPath: string;
93
+ readOnlySettingsPath: string;
94
+ derive(role: AgentRole, agent: AgentConfig): Promise<DerivedInvocation>;
95
+ /**
96
+ * Removes the settings files this context wrote. The owner of a context
97
+ * (the command that built it) calls this when its spawns are done; a
98
+ * process-exit hook removes whatever an owner never got to, so a crash or
99
+ * an early return does not leave the pair behind in the OS temp directory.
100
+ * Optional so a test fake that only implements `derive` stays a valid
101
+ * context; owners call it as `permits.dispose?.()`.
102
+ */
103
+ dispose?(): Promise<void>;
104
+ }
105
+ /** Injectable filesystem boundary for the settings-file write and removal. */
106
+ export interface PermitsFs {
107
+ writeFile(path: string, content: string): Promise<void>;
108
+ /** Optional so a write-capturing fake stays valid; removal is then a no-op. */
109
+ rm?(path: string): Promise<void>;
110
+ }
111
+ export interface BuildPermitsContextOptions {
112
+ config: NightshiftConfig;
113
+ platform?: NodeJS.Platform;
114
+ /** Defaults to `process.env.NIGHTSHIFT_CONTAINMENT`. */
115
+ containmentEnv?: string | undefined;
116
+ helpRunner?: ClaudeHelpRunner;
117
+ fs?: PermitsFs;
118
+ }
119
+ /**
120
+ * Builds the run's (or doctor probe's, or as-built refresh's) one
121
+ * `PermitsContext`: writes the two settings files once under `os.tmpdir()`
122
+ * and returns a `derive` function that detects claude's capabilities on
123
+ * first use per command string and applies the pure derivation above.
124
+ */
125
+ export declare function buildPermitsContext(options: BuildPermitsContextOptions): Promise<PermitsContext>;
126
+ /**
127
+ * A context that appends nothing and detects nothing — the injectable
128
+ * default for options that accept `permits` optionally, so a test exercising
129
+ * unrelated logic spawns exactly as it did before this workstream. Every
130
+ * real entry point (`run`, `doctor --agents`, `nightshift author`,
131
+ * `nightshift as-built`/`publish`) builds and passes a real context instead
132
+ * of relying on this default.
133
+ */
134
+ export declare const NOOP_PERMITS_CONTEXT: PermitsContext;
135
+ //# sourceMappingURL=permits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permits.d.ts","sourceRoot":"","sources":["../src/permits.ts"],"names":[],"mappings":"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"}