@blxzer/cursor-trellis-core 0.4.2 → 0.4.3

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 (93) hide show
  1. package/dist/index.d.ts +0 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/task/adapter-middleware.d.ts +91 -0
  6. package/dist/task/adapter-middleware.d.ts.map +1 -0
  7. package/dist/task/adapter-middleware.js +384 -0
  8. package/dist/task/adapter-middleware.js.map +1 -0
  9. package/dist/task/contract-migrate.d.ts +29 -0
  10. package/dist/task/contract-migrate.d.ts.map +1 -0
  11. package/dist/task/contract-migrate.js +207 -0
  12. package/dist/task/contract-migrate.js.map +1 -0
  13. package/dist/task/full-quality.d.ts +89 -0
  14. package/dist/task/full-quality.d.ts.map +1 -0
  15. package/dist/task/full-quality.js +379 -0
  16. package/dist/task/full-quality.js.map +1 -0
  17. package/dist/task/index.d.ts +20 -0
  18. package/dist/task/index.d.ts.map +1 -1
  19. package/dist/task/index.js +10 -0
  20. package/dist/task/index.js.map +1 -1
  21. package/dist/task/kernel-cli.d.ts +44 -0
  22. package/dist/task/kernel-cli.d.ts.map +1 -0
  23. package/dist/task/kernel-cli.js +287 -0
  24. package/dist/task/kernel-cli.js.map +1 -0
  25. package/dist/task/kernel-contract.d.ts +113 -0
  26. package/dist/task/kernel-contract.d.ts.map +1 -0
  27. package/dist/task/kernel-contract.js +332 -0
  28. package/dist/task/kernel-contract.js.map +1 -0
  29. package/dist/task/kernel-store.d.ts +99 -0
  30. package/dist/task/kernel-store.d.ts.map +1 -0
  31. package/dist/task/kernel-store.js +735 -0
  32. package/dist/task/kernel-store.js.map +1 -0
  33. package/dist/task/lite-context-pack.d.ts +71 -0
  34. package/dist/task/lite-context-pack.d.ts.map +1 -0
  35. package/dist/task/lite-context-pack.js +175 -0
  36. package/dist/task/lite-context-pack.js.map +1 -0
  37. package/dist/task/ondemand-topology.d.ts +100 -0
  38. package/dist/task/ondemand-topology.d.ts.map +1 -0
  39. package/dist/task/ondemand-topology.js +418 -0
  40. package/dist/task/ondemand-topology.js.map +1 -0
  41. package/dist/task/p36-artifact-migrate.d.ts +61 -0
  42. package/dist/task/p36-artifact-migrate.d.ts.map +1 -0
  43. package/dist/task/p36-artifact-migrate.js +336 -0
  44. package/dist/task/p36-artifact-migrate.js.map +1 -0
  45. package/dist/task/p36-wave-c.d.ts +39 -0
  46. package/dist/task/p36-wave-c.d.ts.map +1 -0
  47. package/dist/task/p36-wave-c.js +100 -0
  48. package/dist/task/p36-wave-c.js.map +1 -0
  49. package/dist/task/records.d.ts +9 -0
  50. package/dist/task/records.d.ts.map +1 -1
  51. package/dist/task/records.js +11 -0
  52. package/dist/task/records.js.map +1 -1
  53. package/package.json +1 -6
  54. package/dist/rpc/broker/audit.d.ts +0 -16
  55. package/dist/rpc/broker/audit.d.ts.map +0 -1
  56. package/dist/rpc/broker/audit.js +0 -33
  57. package/dist/rpc/broker/audit.js.map +0 -1
  58. package/dist/rpc/broker/in-process.d.ts +0 -62
  59. package/dist/rpc/broker/in-process.d.ts.map +0 -1
  60. package/dist/rpc/broker/in-process.js +0 -490
  61. package/dist/rpc/broker/in-process.js.map +0 -1
  62. package/dist/rpc/broker/journal.d.ts +0 -11
  63. package/dist/rpc/broker/journal.d.ts.map +0 -1
  64. package/dist/rpc/broker/journal.js +0 -17
  65. package/dist/rpc/broker/journal.js.map +0 -1
  66. package/dist/rpc/contract/errors.d.ts +0 -18
  67. package/dist/rpc/contract/errors.d.ts.map +0 -1
  68. package/dist/rpc/contract/errors.js +0 -55
  69. package/dist/rpc/contract/errors.js.map +0 -1
  70. package/dist/rpc/contract/parse.d.ts +0 -9
  71. package/dist/rpc/contract/parse.d.ts.map +0 -1
  72. package/dist/rpc/contract/parse.js +0 -144
  73. package/dist/rpc/contract/parse.js.map +0 -1
  74. package/dist/rpc/contract/topics.d.ts +0 -11
  75. package/dist/rpc/contract/topics.d.ts.map +0 -1
  76. package/dist/rpc/contract/topics.js +0 -42
  77. package/dist/rpc/contract/topics.js.map +0 -1
  78. package/dist/rpc/contract/types.d.ts +0 -54
  79. package/dist/rpc/contract/types.d.ts.map +0 -1
  80. package/dist/rpc/contract/types.js +0 -39
  81. package/dist/rpc/contract/types.js.map +0 -1
  82. package/dist/rpc/index.d.ts +0 -10
  83. package/dist/rpc/index.d.ts.map +0 -1
  84. package/dist/rpc/index.js +0 -11
  85. package/dist/rpc/index.js.map +0 -1
  86. package/dist/rpc/transport/localhost-server.d.ts +0 -36
  87. package/dist/rpc/transport/localhost-server.d.ts.map +0 -1
  88. package/dist/rpc/transport/localhost-server.js +0 -275
  89. package/dist/rpc/transport/localhost-server.js.map +0 -1
  90. package/dist/rpc/transport/websocket.d.ts +0 -20
  91. package/dist/rpc/transport/websocket.d.ts.map +0 -1
  92. package/dist/rpc/transport/websocket.js +0 -156
  93. package/dist/rpc/transport/websocket.js.map +0 -1
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Stateless Kernel JSON CLI (stdin → stdout). Stage 2 write channel for
3
+ * Task core state: create / start / record-gate / archive / patch project
4
+ * the legacy task.json surface as the same command. `transition` stays the
5
+ * Stage 1 kernel.json-only hop (no status rewrite).
6
+ */
7
+ import { scanContractMigration, } from "./contract-migrate.js";
8
+ import { isPlainObject, taskRecordSchema } from "./schema.js";
9
+ import { KernelError, isKernelPhase, isNonNegativeInt, } from "./kernel-contract.js";
10
+ import { applyKernelArchive, applyKernelCreate, applyKernelPatch, applyKernelRecordGate, applyKernelStart, applyKernelTransition, readKernel, } from "./kernel-store.js";
11
+ export function handleKernelRequest(input, options = {}) {
12
+ try {
13
+ return dispatchKernelRequest(input, options.cwd);
14
+ }
15
+ catch (err) {
16
+ return toFailure(err);
17
+ }
18
+ }
19
+ export async function runKernelJsonCli(io = {}) {
20
+ const stdin = io.stdin ?? process.stdin;
21
+ const stdout = io.stdout ?? process.stdout;
22
+ const raw = (await readAll(stdin)).trim();
23
+ let parsed;
24
+ try {
25
+ parsed = raw === "" ? {} : JSON.parse(raw);
26
+ }
27
+ catch (err) {
28
+ const response = {
29
+ ok: false,
30
+ error: {
31
+ code: "INVALID_REQUEST",
32
+ message: `stdin is not JSON: ${err instanceof Error ? err.message : String(err)}`,
33
+ },
34
+ };
35
+ stdout.write(`${JSON.stringify(response)}\n`);
36
+ return 1;
37
+ }
38
+ const response = handleKernelRequest(parsed, { cwd: io.cwd });
39
+ stdout.write(`${JSON.stringify(response)}\n`);
40
+ return response.ok ? 0 : 1;
41
+ }
42
+ function dispatchKernelRequest(input, cwd) {
43
+ if (!isPlainObject(input)) {
44
+ throw new KernelError("INVALID_REQUEST", "request must be a JSON object");
45
+ }
46
+ const op = input.op;
47
+ if (op === "read") {
48
+ const taskDir = requireTaskDir(input.taskDir);
49
+ const result = readKernel({
50
+ taskDir,
51
+ cwd: optionalCwd(input.cwd, cwd),
52
+ });
53
+ return { ok: true, op: "read", ...result };
54
+ }
55
+ if (op === "transition") {
56
+ const request = parseTransitionRequest(input, cwd);
57
+ const result = applyKernelTransition(request);
58
+ return { ok: true, op: "transition", ...result };
59
+ }
60
+ if (op === "create") {
61
+ const result = applyKernelCreate(parseCreateRequest(input, cwd));
62
+ return { ok: true, op: "create", ...result };
63
+ }
64
+ if (op === "start") {
65
+ const result = applyKernelStart(parseStartRequest(input, cwd));
66
+ return { ok: true, op: "start", ...result };
67
+ }
68
+ if (op === "record-gate") {
69
+ const result = applyKernelRecordGate(parseRecordGateRequest(input, cwd));
70
+ return { ok: true, op: "record-gate", ...result };
71
+ }
72
+ if (op === "archive") {
73
+ const result = applyKernelArchive(parseArchiveRequest(input, cwd));
74
+ return { ok: true, op: "archive", ...result };
75
+ }
76
+ if (op === "patch") {
77
+ const result = applyKernelPatch(parsePatchRequest(input, cwd));
78
+ return { ok: true, op: "patch", ...result };
79
+ }
80
+ if (op === "migrate") {
81
+ return { ok: true, op: "migrate", ...parseMigrateDryRun(input, cwd) };
82
+ }
83
+ throw new KernelError("INVALID_REQUEST", `unsupported Kernel op: ${String(op)}`);
84
+ }
85
+ function parseTransitionRequest(input, cwd) {
86
+ if (!isKernelPhase(input.targetPhase)) {
87
+ throw new KernelError("INVALID_REQUEST", "targetPhase is not a Kernel phase");
88
+ }
89
+ if (!isNonNegativeInt(input.expectedRevision)) {
90
+ throw new KernelError("INVALID_REQUEST", "expectedRevision must be a non-negative integer");
91
+ }
92
+ const request = {
93
+ taskDir: requireTaskDir(input.taskDir),
94
+ expectedRevision: input.expectedRevision,
95
+ targetPhase: input.targetPhase,
96
+ actor: requireString(input.actor, "actor"),
97
+ idempotencyKey: requireString(input.idempotencyKey, "idempotencyKey"),
98
+ cwd: optionalCwd(input.cwd, cwd),
99
+ };
100
+ if (input.evidence !== undefined) {
101
+ request.evidence = requireString(input.evidence, "evidence");
102
+ }
103
+ if (input.gate !== undefined) {
104
+ request.gate = input.gate;
105
+ }
106
+ if (input.policy !== undefined) {
107
+ request.policy = input.policy;
108
+ }
109
+ return request;
110
+ }
111
+ function parseCreateRequest(input, cwd) {
112
+ return {
113
+ taskDir: requireTaskDir(input.taskDir),
114
+ actor: requireString(input.actor, "actor"),
115
+ idempotencyKey: requireString(input.idempotencyKey, "idempotencyKey"),
116
+ record: parseRecord(input.record),
117
+ extras: parseExtras(input.extras),
118
+ evidence: input.evidence === undefined
119
+ ? undefined
120
+ : requireString(input.evidence, "evidence"),
121
+ gate: input.gate,
122
+ policy: input.policy,
123
+ cwd: optionalCwd(input.cwd, cwd),
124
+ };
125
+ }
126
+ function parseStartRequest(input, cwd) {
127
+ if (!isNonNegativeInt(input.expectedRevision)) {
128
+ throw new KernelError("INVALID_REQUEST", "expectedRevision must be a non-negative integer");
129
+ }
130
+ return {
131
+ taskDir: requireTaskDir(input.taskDir),
132
+ expectedRevision: input.expectedRevision,
133
+ actor: requireString(input.actor, "actor"),
134
+ idempotencyKey: requireString(input.idempotencyKey, "idempotencyKey"),
135
+ record: parseRecord(input.record),
136
+ extras: parseExtras(input.extras),
137
+ evidence: input.evidence === undefined
138
+ ? undefined
139
+ : requireString(input.evidence, "evidence"),
140
+ gate: input.gate,
141
+ policy: input.policy,
142
+ cwd: optionalCwd(input.cwd, cwd),
143
+ };
144
+ }
145
+ function parseRecordGateRequest(input, cwd) {
146
+ if (!isNonNegativeInt(input.expectedRevision)) {
147
+ throw new KernelError("INVALID_REQUEST", "expectedRevision must be a non-negative integer");
148
+ }
149
+ if (!isPlainObject(input.record)) {
150
+ throw new KernelError("INVALID_REQUEST", "record must be a JSON object");
151
+ }
152
+ return {
153
+ taskDir: requireTaskDir(input.taskDir),
154
+ expectedRevision: input.expectedRevision,
155
+ actor: requireString(input.actor, "actor"),
156
+ idempotencyKey: requireString(input.idempotencyKey, "idempotencyKey"),
157
+ transition: requireString(input.transition, "transition"),
158
+ gateName: requireString(input.gate, "gate"),
159
+ record: input.record,
160
+ extras: parseExtras(input.extras),
161
+ evidence: input.evidence === undefined
162
+ ? undefined
163
+ : requireString(input.evidence, "evidence"),
164
+ cwd: optionalCwd(input.cwd, cwd),
165
+ };
166
+ }
167
+ function parseArchiveRequest(input, cwd) {
168
+ if (!isNonNegativeInt(input.expectedRevision)) {
169
+ throw new KernelError("INVALID_REQUEST", "expectedRevision must be a non-negative integer");
170
+ }
171
+ return {
172
+ taskDir: requireTaskDir(input.taskDir),
173
+ expectedRevision: input.expectedRevision,
174
+ actor: requireString(input.actor, "actor"),
175
+ idempotencyKey: requireString(input.idempotencyKey, "idempotencyKey"),
176
+ record: parseRecord(input.record),
177
+ extras: parseExtras(input.extras),
178
+ evidence: input.evidence === undefined
179
+ ? undefined
180
+ : requireString(input.evidence, "evidence"),
181
+ gate: input.gate,
182
+ policy: input.policy,
183
+ cwd: optionalCwd(input.cwd, cwd),
184
+ };
185
+ }
186
+ function parsePatchRequest(input, cwd) {
187
+ if (!isNonNegativeInt(input.expectedRevision)) {
188
+ throw new KernelError("INVALID_REQUEST", "expectedRevision must be a non-negative integer");
189
+ }
190
+ if (input.record !== undefined && input.record !== null && !isPlainObject(input.record)) {
191
+ throw new KernelError("INVALID_REQUEST", "record must be a JSON object");
192
+ }
193
+ return {
194
+ taskDir: requireTaskDir(input.taskDir),
195
+ expectedRevision: input.expectedRevision,
196
+ actor: requireString(input.actor, "actor"),
197
+ idempotencyKey: requireString(input.idempotencyKey, "idempotencyKey"),
198
+ record: input.record,
199
+ extras: parseExtras(input.extras),
200
+ evidence: input.evidence === undefined
201
+ ? undefined
202
+ : requireString(input.evidence, "evidence"),
203
+ gate: input.gate,
204
+ policy: input.policy,
205
+ cwd: optionalCwd(input.cwd, cwd),
206
+ };
207
+ }
208
+ function parseRecord(value) {
209
+ try {
210
+ return taskRecordSchema.parse(value);
211
+ }
212
+ catch (err) {
213
+ throw new KernelError("INVALID_REQUEST", `record is not a canonical task.json shape: ${err instanceof Error ? err.message : String(err)}`);
214
+ }
215
+ }
216
+ function parseMigrateDryRun(input, cwd) {
217
+ if (input.dryRun !== true) {
218
+ throw new KernelError("INVALID_REQUEST", "migrate is read-only and requires dryRun: true");
219
+ }
220
+ const root = typeof input.cwd === "string" && input.cwd.trim() !== ""
221
+ ? input.cwd
222
+ : cwd ?? process.cwd();
223
+ const tasksDir = input.tasksDir === undefined || input.tasksDir === null
224
+ ? undefined
225
+ : requireString(input.tasksDir, "tasksDir");
226
+ return scanContractMigration({ root, tasksDir });
227
+ }
228
+ function parseExtras(value) {
229
+ if (value === undefined || value === null)
230
+ return undefined;
231
+ if (!isPlainObject(value)) {
232
+ throw new KernelError("INVALID_REQUEST", "extras must be a JSON object");
233
+ }
234
+ return value;
235
+ }
236
+ function requireTaskDir(value) {
237
+ return requireString(value, "taskDir");
238
+ }
239
+ function requireString(value, field) {
240
+ if (typeof value !== "string" || value.trim() === "") {
241
+ throw new KernelError("INVALID_REQUEST", `${field} must be a non-empty string`);
242
+ }
243
+ return value;
244
+ }
245
+ function optionalCwd(fromRequest, fallback) {
246
+ if (fromRequest === undefined || fromRequest === null)
247
+ return fallback;
248
+ if (typeof fromRequest !== "string" || fromRequest.trim() === "") {
249
+ throw new KernelError("INVALID_REQUEST", "cwd must be a non-empty string");
250
+ }
251
+ return fromRequest;
252
+ }
253
+ function toFailure(err) {
254
+ if (err instanceof KernelError) {
255
+ const failure = {
256
+ ok: false,
257
+ error: { code: err.code, message: err.message },
258
+ };
259
+ if (err.code === "HALF_CONVERSION") {
260
+ failure.halfConversion = {
261
+ kernelPersisted: true,
262
+ projectionPersisted: false,
263
+ };
264
+ }
265
+ return failure;
266
+ }
267
+ return {
268
+ ok: false,
269
+ error: {
270
+ code: "INVALID_REQUEST",
271
+ message: err instanceof Error ? err.message : String(err),
272
+ },
273
+ };
274
+ }
275
+ function readAll(stream) {
276
+ return new Promise((resolve, reject) => {
277
+ const chunks = [];
278
+ stream.on("data", (chunk) => {
279
+ chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
280
+ });
281
+ stream.on("end", () => {
282
+ resolve(Buffer.concat(chunks).toString("utf-8"));
283
+ });
284
+ stream.on("error", reject);
285
+ });
286
+ }
287
+ //# sourceMappingURL=kernel-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-cli.js","sourceRoot":"","sources":["../../src/task/kernel-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Stage 1 Kernel Data Contract (P28 D05 / P30 Stage 1).
3
+ *
4
+ * Frozen here: record categories (identity, revision, 3D state, Transition
5
+ * Request, atomic audit) and legal phase edges. Disk field names are an
6
+ * implementation choice for this wave; user-visible `task.json.status`
7
+ * enumerations are not switched.
8
+ */
9
+ import { type TrellisTaskRecord } from "./schema.js";
10
+ export declare const KERNEL_SCHEMA_VERSION: 1;
11
+ export declare const KERNEL_JSON_BASENAME = "kernel.json";
12
+ export declare const KERNEL_PHASES: readonly ["open", "define", "approve", "execute", "verify", "integrate", "close"];
13
+ export type KernelPhase = (typeof KERNEL_PHASES)[number];
14
+ export declare const KERNEL_CONDITIONS: readonly ["ready", "active", "waiting", "blocked"];
15
+ export type KernelCondition = (typeof KERNEL_CONDITIONS)[number];
16
+ export declare const KERNEL_OUTCOMES: readonly ["completed", "cancelled", "failed"];
17
+ export type KernelOutcome = (typeof KERNEL_OUTCOMES)[number];
18
+ export type KernelErrorCode = "INVALID_REQUEST" | "NOT_FOUND" | "REVISION_CONFLICT" | "INVALID_TRANSITION" | "GATE_HOOK_UNIMPLEMENTED" | "POLICY_HOOK_UNIMPLEMENTED" | "IDEMPOTENCY_MISMATCH" | "CORRUPT_STATE" | "LOCK_TIMEOUT" | "HALF_CONVERSION";
19
+ export declare class KernelError extends Error {
20
+ readonly code: KernelErrorCode;
21
+ constructor(code: KernelErrorCode, message: string);
22
+ }
23
+ export interface KernelState {
24
+ phase: KernelPhase;
25
+ condition: KernelCondition;
26
+ outcome: KernelOutcome | null;
27
+ }
28
+ export interface KernelIdentity {
29
+ taskId: string;
30
+ }
31
+ export interface KernelAuditEvent {
32
+ id: string;
33
+ at: string;
34
+ actor: string;
35
+ idempotencyKey: string;
36
+ evidence: string | null;
37
+ from: KernelState & {
38
+ revision: number;
39
+ };
40
+ to: KernelState & {
41
+ revision: number;
42
+ };
43
+ }
44
+ export interface KernelGates {
45
+ schemaVersion: 1;
46
+ transitions: Record<string, Record<string, unknown>>;
47
+ }
48
+ export interface KernelLegacyProjection {
49
+ status: string;
50
+ record: TrellisTaskRecord;
51
+ extras: Record<string, unknown>;
52
+ }
53
+ export interface KernelSnapshot {
54
+ schemaVersion: typeof KERNEL_SCHEMA_VERSION;
55
+ identity: KernelIdentity;
56
+ revision: number;
57
+ phase: KernelPhase;
58
+ condition: KernelCondition;
59
+ outcome: KernelOutcome | null;
60
+ audit: KernelAuditEvent[];
61
+ gates: KernelGates;
62
+ projection: KernelLegacyProjection | null;
63
+ }
64
+ export declare const KERNEL_COMMAND_OPS: readonly ["read", "transition", "create", "start", "record-gate", "archive", "patch", "migrate"];
65
+ export type KernelCommandOp = (typeof KERNEL_COMMAND_OPS)[number];
66
+ export interface TransitionRequest {
67
+ taskDir: string;
68
+ expectedRevision: number;
69
+ targetPhase: KernelPhase;
70
+ actor: string;
71
+ idempotencyKey: string;
72
+ evidence?: string;
73
+ /** Stage 1 placeholder — if present, the transition is rejected (not fake-green). */
74
+ gate?: unknown;
75
+ /** Stage 1 placeholder — if present, the transition is rejected (not fake-green). */
76
+ policy?: unknown;
77
+ cwd?: string;
78
+ }
79
+ export interface LegacyTaskProjection {
80
+ status: string;
81
+ id: string;
82
+ name: string;
83
+ title: string;
84
+ }
85
+ /**
86
+ * Legal Kernel phase edges for Stage 1. Integrate is optional (P28);
87
+ * Close is reachable from Verify or Integrate. Condition/outcome are
88
+ * derived from the target phase — they are not independently requested.
89
+ */
90
+ export declare const KERNEL_PHASE_EDGES: readonly (readonly [KernelPhase, KernelPhase])[];
91
+ export declare function emptyKernelGates(): KernelGates;
92
+ export declare function isKernelPhase(value: unknown): value is KernelPhase;
93
+ export declare function isKernelCondition(value: unknown): value is KernelCondition;
94
+ export declare function isKernelOutcome(value: unknown): value is KernelOutcome;
95
+ export declare function isLegalPhaseEdge(from: KernelPhase, to: KernelPhase): boolean;
96
+ export declare function deriveStateForPhase(phase: KernelPhase): KernelState;
97
+ /**
98
+ * Read-only projection of the legacy `task.json.status` enum onto Kernel
99
+ * 3D state. Does not mutate user-visible status names.
100
+ */
101
+ export declare function projectLegacyStatus(status: string): KernelState;
102
+ /**
103
+ * User-visible `task.json.status` names stay on the Stage 1 enum.
104
+ * Approve maps to planning so start-execution is the only planning→in_progress cut.
105
+ */
106
+ export declare function kernelPhaseToLegacyStatus(phase: KernelPhase): string;
107
+ export declare function hopsToExecute(from: KernelPhase): KernelPhase[];
108
+ export declare function hopsToClose(from: KernelPhase): KernelPhase[];
109
+ export declare function parseKernelSnapshot(input: unknown): KernelSnapshot;
110
+ export declare function isNonNegativeInt(value: unknown): value is number;
111
+ export declare function requireNonEmptyString(value: unknown, field: string): string;
112
+ export declare function hookIsPresent(value: unknown): boolean;
113
+ //# sourceMappingURL=kernel-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-contract.d.ts","sourceRoot":"","sources":["../../src/task/kernel-contract.ts"],"names":[],"mappings":"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"}