@kindgi/cli 0.1.8 → 0.1.9-rc.1
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/README.md +59 -2
- package/dist/api-address.d.ts +104 -12
- package/dist/api-address.d.ts.map +1 -1
- package/dist/api-address.js +169 -30
- package/dist/api-address.js.map +1 -1
- package/dist/build/host-install.d.ts.map +1 -1
- package/dist/build/host-install.js +5 -2
- package/dist/build/host-install.js.map +1 -1
- package/dist/cli.js +12 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/approvals.d.ts.map +1 -1
- package/dist/commands/approvals.js +15 -3
- package/dist/commands/approvals.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +27 -0
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/build.d.ts +18 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +118 -13
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/conversations.d.ts.map +1 -1
- package/dist/commands/conversations.js +13 -3
- package/dist/commands/conversations.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +235 -53
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployments.d.ts +3 -0
- package/dist/commands/deployments.d.ts.map +1 -0
- package/dist/commands/deployments.js +196 -0
- package/dist/commands/deployments.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -5
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +42 -22
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/egress.d.ts +9 -0
- package/dist/commands/egress.d.ts.map +1 -0
- package/dist/commands/egress.js +40 -0
- package/dist/commands/egress.js.map +1 -0
- package/dist/commands/env-scoped.d.ts +5 -0
- package/dist/commands/env-scoped.d.ts.map +1 -1
- package/dist/commands/env-scoped.js +64 -19
- package/dist/commands/env-scoped.js.map +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +91 -30
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/environments.d.ts +6 -0
- package/dist/commands/environments.d.ts.map +1 -0
- package/dist/commands/environments.js +166 -0
- package/dist/commands/environments.js.map +1 -0
- package/dist/commands/exports.d.ts.map +1 -1
- package/dist/commands/exports.js +118 -3
- package/dist/commands/exports.js.map +1 -1
- package/dist/commands/feedback.d.ts +1 -2
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +55 -24
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/helpers.d.ts +6 -0
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +8 -0
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +12 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/license.d.ts +3 -0
- package/dist/commands/license.d.ts.map +1 -1
- package/dist/commands/license.js +1 -1
- package/dist/commands/license.js.map +1 -1
- package/dist/commands/people.d.ts.map +1 -1
- package/dist/commands/people.js +105 -10
- package/dist/commands/people.js.map +1 -1
- package/dist/commands/projects.d.ts.map +1 -1
- package/dist/commands/projects.js +133 -11
- package/dist/commands/projects.js.map +1 -1
- package/dist/commands/promote.d.ts +38 -0
- package/dist/commands/promote.d.ts.map +1 -0
- package/dist/commands/promote.js +371 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/proposals.d.ts.map +1 -1
- package/dist/commands/proposals.js +2 -1
- package/dist/commands/proposals.js.map +1 -1
- package/dist/commands/providers.d.ts.map +1 -1
- package/dist/commands/providers.js +29 -5
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/schedules.d.ts.map +1 -1
- package/dist/commands/schedules.js +30 -2
- package/dist/commands/schedules.js.map +1 -1
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +65 -40
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/sign-in.d.ts +3 -0
- package/dist/commands/sign-in.d.ts.map +1 -0
- package/dist/commands/sign-in.js +61 -0
- package/dist/commands/sign-in.js.map +1 -0
- package/dist/commands/sites.d.ts +3 -0
- package/dist/commands/sites.d.ts.map +1 -0
- package/dist/commands/sites.js +244 -0
- package/dist/commands/sites.js.map +1 -0
- package/dist/commands/tools.d.ts.map +1 -1
- package/dist/commands/tools.js +2 -2
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/types.d.ts +11 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/webhooks.d.ts.map +1 -1
- package/dist/commands/webhooks.js +38 -2
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -7
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +38 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +12 -1
- package/dist/context.js.map +1 -1
- package/dist/deploy/defaults.d.ts.map +1 -1
- package/dist/deploy/defaults.js +7 -1
- package/dist/deploy/defaults.js.map +1 -1
- package/dist/deploy/pack-service-text.d.ts +29 -0
- package/dist/deploy/pack-service-text.d.ts.map +1 -0
- package/dist/deploy/pack-service-text.js +72 -0
- package/dist/deploy/pack-service-text.js.map +1 -0
- package/dist/deploy/post.d.ts +17 -4
- package/dist/deploy/post.d.ts.map +1 -1
- package/dist/deploy/post.js +177 -60
- package/dist/deploy/post.js.map +1 -1
- package/dist/deploy/promotion-path.d.ts +44 -0
- package/dist/deploy/promotion-path.d.ts.map +1 -0
- package/dist/deploy/promotion-path.js +86 -0
- package/dist/deploy/promotion-path.js.map +1 -0
- package/dist/deploy/response.d.ts +3 -0
- package/dist/deploy/response.d.ts.map +1 -1
- package/dist/deploy/response.js +66 -12
- package/dist/deploy/response.js.map +1 -1
- package/dist/deploy/runners.d.ts +99 -5
- package/dist/deploy/runners.d.ts.map +1 -1
- package/dist/dev/java-builder.d.ts.map +1 -1
- package/dist/dev/java-builder.js +19 -3
- package/dist/dev/java-builder.js.map +1 -1
- package/dist/dev/python-builder.d.ts.map +1 -1
- package/dist/dev/python-builder.js +18 -3
- package/dist/dev/python-builder.js.map +1 -1
- package/dist/dev/runtime-container.d.ts +28 -3
- package/dist/dev/runtime-container.d.ts.map +1 -1
- package/dist/dev/runtime-container.js +103 -36
- package/dist/dev/runtime-container.js.map +1 -1
- package/dist/dev/runtime-image.d.ts +1 -1
- package/dist/dev/runtime-image.d.ts.map +1 -1
- package/dist/dev/runtime-image.js +1 -1
- package/dist/dev/runtime-image.js.map +1 -1
- package/dist/dev/scala-builder.d.ts.map +1 -1
- package/dist/dev/scala-builder.js +55 -21
- package/dist/dev/scala-builder.js.map +1 -1
- package/dist/dev/shared-watch.d.ts +30 -0
- package/dist/dev/shared-watch.d.ts.map +1 -1
- package/dist/dev/shared-watch.js +46 -1
- package/dist/dev/shared-watch.js.map +1 -1
- package/dist/env/pack-env-hint.d.ts +52 -0
- package/dist/env/pack-env-hint.d.ts.map +1 -0
- package/dist/env/pack-env-hint.js +57 -0
- package/dist/env/pack-env-hint.js.map +1 -0
- package/dist/env/pack-env-plan.d.ts +2 -0
- package/dist/env/pack-env-plan.d.ts.map +1 -1
- package/dist/env/pack-env-plan.js +2 -1
- package/dist/env/pack-env-plan.js.map +1 -1
- package/dist/env-projects.d.ts +23 -0
- package/dist/env-projects.d.ts.map +1 -0
- package/dist/env-projects.js +28 -0
- package/dist/env-projects.js.map +1 -0
- package/dist/exports/create.d.ts +71 -0
- package/dist/exports/create.d.ts.map +1 -0
- package/dist/exports/create.js +576 -0
- package/dist/exports/create.js.map +1 -0
- package/dist/exports/plan.d.ts +69 -0
- package/dist/exports/plan.d.ts.map +1 -0
- package/dist/exports/plan.js +496 -0
- package/dist/exports/plan.js.map +1 -0
- package/dist/exports/reader.d.ts +48 -0
- package/dist/exports/reader.d.ts.map +1 -0
- package/dist/exports/reader.js +181 -0
- package/dist/exports/reader.js.map +1 -0
- package/dist/feedback/entries.d.ts +53 -0
- package/dist/feedback/entries.d.ts.map +1 -0
- package/dist/feedback/entries.js +173 -0
- package/dist/feedback/entries.js.map +1 -0
- package/dist/feedback/intake.d.ts +37 -0
- package/dist/feedback/intake.d.ts.map +1 -0
- package/dist/feedback/intake.js +101 -0
- package/dist/feedback/intake.js.map +1 -0
- package/dist/feedback/protocol.d.ts +111 -0
- package/dist/feedback/protocol.d.ts.map +1 -0
- package/dist/feedback/protocol.js +143 -0
- package/dist/feedback/protocol.js.map +1 -0
- package/dist/feedback/redact.d.ts +34 -0
- package/dist/feedback/redact.d.ts.map +1 -0
- package/dist/feedback/redact.js +258 -0
- package/dist/feedback/redact.js.map +1 -0
- package/dist/feedback/report.d.ts +51 -0
- package/dist/feedback/report.d.ts.map +1 -0
- package/dist/feedback/report.js +122 -0
- package/dist/feedback/report.js.map +1 -0
- package/dist/feedback/run.d.ts +21 -0
- package/dist/feedback/run.d.ts.map +1 -0
- package/dist/feedback/run.js +578 -0
- package/dist/feedback/run.js.map +1 -0
- package/dist/feedback/store.d.ts +24 -0
- package/dist/feedback/store.d.ts.map +1 -0
- package/dist/feedback/store.js +117 -0
- package/dist/feedback/store.js.map +1 -0
- package/dist/main.d.ts +6 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +86 -5
- package/dist/main.js.map +1 -1
- package/dist/node-version.d.ts +13 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +37 -0
- package/dist/node-version.js.map +1 -0
- package/dist/parse.d.ts +8 -2
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +7 -2
- package/dist/parse.js.map +1 -1
- package/dist/project-ref.d.ts +44 -0
- package/dist/project-ref.d.ts.map +1 -0
- package/dist/project-ref.js +69 -0
- package/dist/project-ref.js.map +1 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +15 -2
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +44 -7
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +11 -2
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +60 -13
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +19 -2
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +82 -3
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +17 -3
- package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +43 -6
- package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +19 -2
- package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +17 -3
- package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +49 -13
- package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +27 -3
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +17 -3
- package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +43 -6
- package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +19 -2
- package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
- package/dist/slug.d.ts +18 -0
- package/dist/slug.d.ts.map +1 -0
- package/dist/slug.js +29 -0
- package/dist/slug.js.map +1 -0
- package/dist/templates/drupal/AGENTS.md +2 -0
- package/dist/templates/java/AGENTS.md +2 -0
- package/dist/templates/minimal/AGENTS.md +2 -0
- package/dist/templates/python/AGENTS.md +2 -0
- package/dist/templates/sample/AGENTS.md +2 -0
- package/dist/templates/scala/AGENTS.md +2 -0
- package/dist/templates/woocommerce/AGENTS.md +11 -4
- package/dist/templates/woocommerce/README.md.tmpl +47 -4
- package/dist/templates/woocommerce/agents/store-agent/index.test.ts.tmpl +13 -0
- package/dist/templates/woocommerce/agents/store-agent/index.ts.tmpl +11 -1
- package/dist/templates/woocommerce/tools/publish-product/index.ts.tmpl +7 -1
- package/dist/templates/woocommerce/tools/refund/index.ts.tmpl +7 -2
- package/dist/templates/woocommerce/tools/refund-large/index.ts.tmpl +8 -2
- package/dist/templates/woocommerce/tools/set-price/index.ts.tmpl +6 -0
- package/dist/value-target.d.ts +139 -0
- package/dist/value-target.d.ts.map +1 -0
- package/dist/value-target.js +231 -0
- package/dist/value-target.js.map +1 -0
- package/package.json +13 -13
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* What `kindgi feedback submit` sends: the entries picked from `FEEDBACK.md`,
|
|
5
|
+
* their titles and bodies redacted, and the client's environment, checked
|
|
6
|
+
* against the intake's caps and turned into the exact bytes the person OKs.
|
|
7
|
+
* The digest is the sha256 of those bytes: `--yes=<digest>` sends them only
|
|
8
|
+
* if nothing changed since the preview.
|
|
9
|
+
*/
|
|
10
|
+
import { createHash } from 'node:crypto';
|
|
11
|
+
import { AUTHORS, KINDS, SEVERITIES } from './entries.js';
|
|
12
|
+
import { ARCH, DATE, ENTRY_HASH, ENTRY_ID, MAX_BODY_BYTES, MAX_CHECKS, MAX_ENTRIES, MAX_REQUEST_BYTES, MAX_TITLE_LENGTH, OS, OS_RELEASE, isVersion, } from './protocol.js';
|
|
13
|
+
import { REDACTION_RULES, redactForSending, } from './redact.js';
|
|
14
|
+
/** The entries to send: those named, or with none named, every one not yet sent and not fixed. */
|
|
15
|
+
export function pickEntries(entries, selectors) {
|
|
16
|
+
if (selectors.length === 0) {
|
|
17
|
+
return {
|
|
18
|
+
kind: 'ok',
|
|
19
|
+
picked: entries.filter((e) => e.submissions.length === 0 && !e.fixed),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const unmatched = selectors.filter((s) => !entries.some((e) => e.fields.id === s || e.fields.hash === s));
|
|
23
|
+
if (unmatched.length > 0)
|
|
24
|
+
return { kind: 'unmatched', selectors: unmatched };
|
|
25
|
+
return {
|
|
26
|
+
kind: 'ok',
|
|
27
|
+
picked: entries.filter((e) => selectors.includes(e.fields.id ?? '') || selectors.includes(e.fields.hash ?? '')),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** The client's environment: the doctor's checks as id and status only, never their text. */
|
|
31
|
+
export function clientInfo(doctor, platform) {
|
|
32
|
+
return {
|
|
33
|
+
cli: isVersion(doctor.cliVersion) ? doctor.cliVersion : 'unknown',
|
|
34
|
+
os: OS.test(platform.os) ? platform.os : 'unknown',
|
|
35
|
+
osRelease: OS_RELEASE.test(platform.osRelease) ? platform.osRelease : 'unknown',
|
|
36
|
+
arch: ARCH.test(platform.arch) ? platform.arch : 'unknown',
|
|
37
|
+
node: platform.node,
|
|
38
|
+
language: doctor.project?.language ?? null,
|
|
39
|
+
checks: doctor.checks.slice(0, MAX_CHECKS).map((c) => ({ id: c.id, status: c.status })),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** One entry as sent, its title and body redacted, or what stops it being sent. */
|
|
43
|
+
export function entryPayload(entry, redaction) {
|
|
44
|
+
const f = entry.fields;
|
|
45
|
+
const name = f.id !== undefined && ENTRY_ID.test(f.id) ? f.id : `"${entry.title}"`;
|
|
46
|
+
const bad = (problem) => ({
|
|
47
|
+
kind: 'problem',
|
|
48
|
+
problem: { entry: name, problem },
|
|
49
|
+
});
|
|
50
|
+
if (f.id === undefined || !ENTRY_ID.test(f.id))
|
|
51
|
+
return bad('its id line (`- **id:** YYYY-MM-DD.N`) is missing or malformed');
|
|
52
|
+
if (f.hash === undefined || !ENTRY_HASH.test(f.hash))
|
|
53
|
+
return bad('its hash (`feedback-<8 hex>`) is missing or malformed');
|
|
54
|
+
if (!KINDS.includes(f.kind ?? ''))
|
|
55
|
+
return bad(`its kind must be one of ${KINDS.join(', ')}`);
|
|
56
|
+
if (!SEVERITIES.includes(f.severity ?? '')) {
|
|
57
|
+
return bad(`its severity must be one of ${SEVERITIES.join(', ')}`);
|
|
58
|
+
}
|
|
59
|
+
if (!AUTHORS.includes(f.by ?? ''))
|
|
60
|
+
return bad(`its by must be one of ${AUTHORS.join(', ')}`);
|
|
61
|
+
if (f.date === undefined || !DATE.test(f.date))
|
|
62
|
+
return bad('its date must be an ISO 8601 time in UTC, as `feedback write` writes it');
|
|
63
|
+
for (const key of ['sdk', 'cli']) {
|
|
64
|
+
const v = f[key];
|
|
65
|
+
if (v === undefined || !(v === 'unknown' || isVersion(v)))
|
|
66
|
+
return bad(`its ${key} must be a version or unknown`);
|
|
67
|
+
}
|
|
68
|
+
const title = redactForSending(entry.title.trim(), redaction);
|
|
69
|
+
const body = redactForSending(entry.body, redaction);
|
|
70
|
+
if (title.text === '')
|
|
71
|
+
return bad('its title is empty');
|
|
72
|
+
if (title.text.length > MAX_TITLE_LENGTH) {
|
|
73
|
+
return bad(`its title is ${title.text.length} characters; the intake takes at most ${MAX_TITLE_LENGTH}`);
|
|
74
|
+
}
|
|
75
|
+
const bodyBytes = Buffer.byteLength(body.text, 'utf8');
|
|
76
|
+
if (bodyBytes > MAX_BODY_BYTES) {
|
|
77
|
+
return bad(`its body is ${bodyBytes} bytes; the intake takes at most ${MAX_BODY_BYTES}: shorten it`);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
kind: 'ok',
|
|
81
|
+
payload: {
|
|
82
|
+
entry: f.id,
|
|
83
|
+
hash: f.hash,
|
|
84
|
+
title: title.text,
|
|
85
|
+
kind: f.kind,
|
|
86
|
+
severity: f.severity,
|
|
87
|
+
by: f.by,
|
|
88
|
+
date: f.date,
|
|
89
|
+
sdk: f.sdk,
|
|
90
|
+
cli: f.cli,
|
|
91
|
+
body: body.text,
|
|
92
|
+
},
|
|
93
|
+
applied: REDACTION_RULES.filter((r) => title.applied.includes(r) || body.applied.includes(r)),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/** The request body's bytes and their digest. */
|
|
97
|
+
export function serialize(payload) {
|
|
98
|
+
const bytes = JSON.stringify(payload);
|
|
99
|
+
return { bytes, digest: createHash('sha256').update(bytes, 'utf8').digest('hex') };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The entries that fit one request: at most 20, at most 64 KiB in all, in
|
|
103
|
+
* the file's order. `held` is how many were left for the next run.
|
|
104
|
+
*/
|
|
105
|
+
export function fitRequest(client, entries) {
|
|
106
|
+
const fitted = [];
|
|
107
|
+
for (const entry of entries) {
|
|
108
|
+
if (fitted.length === MAX_ENTRIES)
|
|
109
|
+
break;
|
|
110
|
+
const next = [...fitted, entry];
|
|
111
|
+
if (Buffer.byteLength(serialize({ client, entries: next }).bytes, 'utf8') > MAX_REQUEST_BYTES)
|
|
112
|
+
break;
|
|
113
|
+
fitted.push(entry);
|
|
114
|
+
}
|
|
115
|
+
return { entries: fitted, held: entries.length - fitted.length };
|
|
116
|
+
}
|
|
117
|
+
/** Whether a request with these entries fits: for entries the person named, which are never left out. */
|
|
118
|
+
export function fitsOneRequest(client, entries) {
|
|
119
|
+
return (entries.length <= MAX_ENTRIES &&
|
|
120
|
+
Buffer.byteLength(serialize({ client, entries }).bytes, 'utf8') <= MAX_REQUEST_BYTES);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/feedback/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type DoctorReport } from '../commands/doctor.js';
|
|
2
|
+
import type { CommandResult } from '../commands/types.js';
|
|
3
|
+
import type { CommandContext } from '../context.js';
|
|
4
|
+
import { type Platform } from './report.js';
|
|
5
|
+
/** Injectable seams, so tests run without the doctor's tools, a terminal or the real clock. */
|
|
6
|
+
export interface FeedbackSeam {
|
|
7
|
+
/** Milliseconds since the epoch. */
|
|
8
|
+
readonly now?: () => number;
|
|
9
|
+
/** The checks sent with a report. Default: `kindgi doctor`'s, for the pack. */
|
|
10
|
+
readonly doctor?: (dir: string) => Promise<DoctorReport>;
|
|
11
|
+
readonly platform?: Platform;
|
|
12
|
+
/** Whether a person is at a terminal to ask. Default: stdin and stderr are TTYs. */
|
|
13
|
+
readonly interactive?: () => boolean;
|
|
14
|
+
readonly confirm?: (question: string) => Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
/** The env var that turns `submit` off for a machine or a team. */
|
|
17
|
+
export declare const SUBMIT_SWITCH = "KINDGI_FEEDBACK_SUBMIT";
|
|
18
|
+
export declare function runSubmit(ctx: CommandContext): Promise<CommandResult>;
|
|
19
|
+
export declare function runStatus(ctx: CommandContext): Promise<CommandResult>;
|
|
20
|
+
export declare function runWithdraw(ctx: CommandContext): Promise<CommandResult>;
|
|
21
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/feedback/run.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,uBAAuB,CAAC;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA0BpD,OAAO,EAEL,KAAK,QAAQ,EAOd,MAAM,aAAa,CAAC;AAUrB,+FAA+F;AAC/F,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,oFAAoF;IACpF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAED,mEAAmE;AACnE,eAAO,MAAM,aAAa,2BAA2B,CAAC;AAKtD,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAoB3E;AA4ND,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkF3E;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAwE7E"}
|