@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.
Files changed (270) hide show
  1. package/README.md +59 -2
  2. package/dist/api-address.d.ts +104 -12
  3. package/dist/api-address.d.ts.map +1 -1
  4. package/dist/api-address.js +169 -30
  5. package/dist/api-address.js.map +1 -1
  6. package/dist/build/host-install.d.ts.map +1 -1
  7. package/dist/build/host-install.js +5 -2
  8. package/dist/build/host-install.js.map +1 -1
  9. package/dist/cli.js +12 -2
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/approvals.d.ts.map +1 -1
  12. package/dist/commands/approvals.js +15 -3
  13. package/dist/commands/approvals.js.map +1 -1
  14. package/dist/commands/auth.d.ts.map +1 -1
  15. package/dist/commands/auth.js +27 -0
  16. package/dist/commands/auth.js.map +1 -1
  17. package/dist/commands/build.d.ts +18 -0
  18. package/dist/commands/build.d.ts.map +1 -1
  19. package/dist/commands/build.js +118 -13
  20. package/dist/commands/build.js.map +1 -1
  21. package/dist/commands/conversations.d.ts.map +1 -1
  22. package/dist/commands/conversations.js +13 -3
  23. package/dist/commands/conversations.js.map +1 -1
  24. package/dist/commands/deploy.d.ts.map +1 -1
  25. package/dist/commands/deploy.js +235 -53
  26. package/dist/commands/deploy.js.map +1 -1
  27. package/dist/commands/deployments.d.ts +3 -0
  28. package/dist/commands/deployments.d.ts.map +1 -0
  29. package/dist/commands/deployments.js +196 -0
  30. package/dist/commands/deployments.js.map +1 -0
  31. package/dist/commands/doctor.d.ts +1 -5
  32. package/dist/commands/doctor.d.ts.map +1 -1
  33. package/dist/commands/doctor.js +42 -22
  34. package/dist/commands/doctor.js.map +1 -1
  35. package/dist/commands/egress.d.ts +9 -0
  36. package/dist/commands/egress.d.ts.map +1 -0
  37. package/dist/commands/egress.js +40 -0
  38. package/dist/commands/egress.js.map +1 -0
  39. package/dist/commands/env-scoped.d.ts +5 -0
  40. package/dist/commands/env-scoped.d.ts.map +1 -1
  41. package/dist/commands/env-scoped.js +64 -19
  42. package/dist/commands/env-scoped.js.map +1 -1
  43. package/dist/commands/env.d.ts.map +1 -1
  44. package/dist/commands/env.js +91 -30
  45. package/dist/commands/env.js.map +1 -1
  46. package/dist/commands/environments.d.ts +6 -0
  47. package/dist/commands/environments.d.ts.map +1 -0
  48. package/dist/commands/environments.js +166 -0
  49. package/dist/commands/environments.js.map +1 -0
  50. package/dist/commands/exports.d.ts.map +1 -1
  51. package/dist/commands/exports.js +118 -3
  52. package/dist/commands/exports.js.map +1 -1
  53. package/dist/commands/feedback.d.ts +1 -2
  54. package/dist/commands/feedback.d.ts.map +1 -1
  55. package/dist/commands/feedback.js +55 -24
  56. package/dist/commands/feedback.js.map +1 -1
  57. package/dist/commands/helpers.d.ts +6 -0
  58. package/dist/commands/helpers.d.ts.map +1 -1
  59. package/dist/commands/helpers.js +8 -0
  60. package/dist/commands/helpers.js.map +1 -1
  61. package/dist/commands/index.d.ts.map +1 -1
  62. package/dist/commands/index.js +12 -0
  63. package/dist/commands/index.js.map +1 -1
  64. package/dist/commands/license.d.ts +3 -0
  65. package/dist/commands/license.d.ts.map +1 -1
  66. package/dist/commands/license.js +1 -1
  67. package/dist/commands/license.js.map +1 -1
  68. package/dist/commands/people.d.ts.map +1 -1
  69. package/dist/commands/people.js +105 -10
  70. package/dist/commands/people.js.map +1 -1
  71. package/dist/commands/projects.d.ts.map +1 -1
  72. package/dist/commands/projects.js +133 -11
  73. package/dist/commands/projects.js.map +1 -1
  74. package/dist/commands/promote.d.ts +38 -0
  75. package/dist/commands/promote.d.ts.map +1 -0
  76. package/dist/commands/promote.js +371 -0
  77. package/dist/commands/promote.js.map +1 -0
  78. package/dist/commands/proposals.d.ts.map +1 -1
  79. package/dist/commands/proposals.js +2 -1
  80. package/dist/commands/proposals.js.map +1 -1
  81. package/dist/commands/providers.d.ts.map +1 -1
  82. package/dist/commands/providers.js +29 -5
  83. package/dist/commands/providers.js.map +1 -1
  84. package/dist/commands/schedules.d.ts.map +1 -1
  85. package/dist/commands/schedules.js +30 -2
  86. package/dist/commands/schedules.js.map +1 -1
  87. package/dist/commands/secrets.d.ts.map +1 -1
  88. package/dist/commands/secrets.js +65 -40
  89. package/dist/commands/secrets.js.map +1 -1
  90. package/dist/commands/sign-in.d.ts +3 -0
  91. package/dist/commands/sign-in.d.ts.map +1 -0
  92. package/dist/commands/sign-in.js +61 -0
  93. package/dist/commands/sign-in.js.map +1 -0
  94. package/dist/commands/sites.d.ts +3 -0
  95. package/dist/commands/sites.d.ts.map +1 -0
  96. package/dist/commands/sites.js +244 -0
  97. package/dist/commands/sites.js.map +1 -0
  98. package/dist/commands/tools.d.ts.map +1 -1
  99. package/dist/commands/tools.js +2 -2
  100. package/dist/commands/tools.js.map +1 -1
  101. package/dist/commands/types.d.ts +11 -0
  102. package/dist/commands/types.d.ts.map +1 -1
  103. package/dist/commands/webhooks.d.ts.map +1 -1
  104. package/dist/commands/webhooks.js +38 -2
  105. package/dist/commands/webhooks.js.map +1 -1
  106. package/dist/config.d.ts +13 -0
  107. package/dist/config.d.ts.map +1 -1
  108. package/dist/config.js +20 -7
  109. package/dist/config.js.map +1 -1
  110. package/dist/context.d.ts +38 -2
  111. package/dist/context.d.ts.map +1 -1
  112. package/dist/context.js +12 -1
  113. package/dist/context.js.map +1 -1
  114. package/dist/deploy/defaults.d.ts.map +1 -1
  115. package/dist/deploy/defaults.js +7 -1
  116. package/dist/deploy/defaults.js.map +1 -1
  117. package/dist/deploy/pack-service-text.d.ts +29 -0
  118. package/dist/deploy/pack-service-text.d.ts.map +1 -0
  119. package/dist/deploy/pack-service-text.js +72 -0
  120. package/dist/deploy/pack-service-text.js.map +1 -0
  121. package/dist/deploy/post.d.ts +17 -4
  122. package/dist/deploy/post.d.ts.map +1 -1
  123. package/dist/deploy/post.js +177 -60
  124. package/dist/deploy/post.js.map +1 -1
  125. package/dist/deploy/promotion-path.d.ts +44 -0
  126. package/dist/deploy/promotion-path.d.ts.map +1 -0
  127. package/dist/deploy/promotion-path.js +86 -0
  128. package/dist/deploy/promotion-path.js.map +1 -0
  129. package/dist/deploy/response.d.ts +3 -0
  130. package/dist/deploy/response.d.ts.map +1 -1
  131. package/dist/deploy/response.js +66 -12
  132. package/dist/deploy/response.js.map +1 -1
  133. package/dist/deploy/runners.d.ts +99 -5
  134. package/dist/deploy/runners.d.ts.map +1 -1
  135. package/dist/dev/java-builder.d.ts.map +1 -1
  136. package/dist/dev/java-builder.js +19 -3
  137. package/dist/dev/java-builder.js.map +1 -1
  138. package/dist/dev/python-builder.d.ts.map +1 -1
  139. package/dist/dev/python-builder.js +18 -3
  140. package/dist/dev/python-builder.js.map +1 -1
  141. package/dist/dev/runtime-container.d.ts +28 -3
  142. package/dist/dev/runtime-container.d.ts.map +1 -1
  143. package/dist/dev/runtime-container.js +103 -36
  144. package/dist/dev/runtime-container.js.map +1 -1
  145. package/dist/dev/runtime-image.d.ts +1 -1
  146. package/dist/dev/runtime-image.d.ts.map +1 -1
  147. package/dist/dev/runtime-image.js +1 -1
  148. package/dist/dev/runtime-image.js.map +1 -1
  149. package/dist/dev/scala-builder.d.ts.map +1 -1
  150. package/dist/dev/scala-builder.js +55 -21
  151. package/dist/dev/scala-builder.js.map +1 -1
  152. package/dist/dev/shared-watch.d.ts +30 -0
  153. package/dist/dev/shared-watch.d.ts.map +1 -1
  154. package/dist/dev/shared-watch.js +46 -1
  155. package/dist/dev/shared-watch.js.map +1 -1
  156. package/dist/env/pack-env-hint.d.ts +52 -0
  157. package/dist/env/pack-env-hint.d.ts.map +1 -0
  158. package/dist/env/pack-env-hint.js +57 -0
  159. package/dist/env/pack-env-hint.js.map +1 -0
  160. package/dist/env/pack-env-plan.d.ts +2 -0
  161. package/dist/env/pack-env-plan.d.ts.map +1 -1
  162. package/dist/env/pack-env-plan.js +2 -1
  163. package/dist/env/pack-env-plan.js.map +1 -1
  164. package/dist/env-projects.d.ts +23 -0
  165. package/dist/env-projects.d.ts.map +1 -0
  166. package/dist/env-projects.js +28 -0
  167. package/dist/env-projects.js.map +1 -0
  168. package/dist/exports/create.d.ts +71 -0
  169. package/dist/exports/create.d.ts.map +1 -0
  170. package/dist/exports/create.js +576 -0
  171. package/dist/exports/create.js.map +1 -0
  172. package/dist/exports/plan.d.ts +69 -0
  173. package/dist/exports/plan.d.ts.map +1 -0
  174. package/dist/exports/plan.js +496 -0
  175. package/dist/exports/plan.js.map +1 -0
  176. package/dist/exports/reader.d.ts +48 -0
  177. package/dist/exports/reader.d.ts.map +1 -0
  178. package/dist/exports/reader.js +181 -0
  179. package/dist/exports/reader.js.map +1 -0
  180. package/dist/feedback/entries.d.ts +53 -0
  181. package/dist/feedback/entries.d.ts.map +1 -0
  182. package/dist/feedback/entries.js +173 -0
  183. package/dist/feedback/entries.js.map +1 -0
  184. package/dist/feedback/intake.d.ts +37 -0
  185. package/dist/feedback/intake.d.ts.map +1 -0
  186. package/dist/feedback/intake.js +101 -0
  187. package/dist/feedback/intake.js.map +1 -0
  188. package/dist/feedback/protocol.d.ts +111 -0
  189. package/dist/feedback/protocol.d.ts.map +1 -0
  190. package/dist/feedback/protocol.js +143 -0
  191. package/dist/feedback/protocol.js.map +1 -0
  192. package/dist/feedback/redact.d.ts +34 -0
  193. package/dist/feedback/redact.d.ts.map +1 -0
  194. package/dist/feedback/redact.js +258 -0
  195. package/dist/feedback/redact.js.map +1 -0
  196. package/dist/feedback/report.d.ts +51 -0
  197. package/dist/feedback/report.d.ts.map +1 -0
  198. package/dist/feedback/report.js +122 -0
  199. package/dist/feedback/report.js.map +1 -0
  200. package/dist/feedback/run.d.ts +21 -0
  201. package/dist/feedback/run.d.ts.map +1 -0
  202. package/dist/feedback/run.js +578 -0
  203. package/dist/feedback/run.js.map +1 -0
  204. package/dist/feedback/store.d.ts +24 -0
  205. package/dist/feedback/store.d.ts.map +1 -0
  206. package/dist/feedback/store.js +117 -0
  207. package/dist/feedback/store.js.map +1 -0
  208. package/dist/main.d.ts +6 -0
  209. package/dist/main.d.ts.map +1 -1
  210. package/dist/main.js +86 -5
  211. package/dist/main.js.map +1 -1
  212. package/dist/node-version.d.ts +13 -0
  213. package/dist/node-version.d.ts.map +1 -0
  214. package/dist/node-version.js +37 -0
  215. package/dist/node-version.js.map +1 -0
  216. package/dist/parse.d.ts +8 -2
  217. package/dist/parse.d.ts.map +1 -1
  218. package/dist/parse.js +7 -2
  219. package/dist/parse.js.map +1 -1
  220. package/dist/project-ref.d.ts +44 -0
  221. package/dist/project-ref.d.ts.map +1 -0
  222. package/dist/project-ref.js +69 -0
  223. package/dist/project-ref.js.map +1 -0
  224. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +15 -2
  225. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
  226. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +44 -7
  227. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +11 -2
  228. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +60 -13
  229. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +19 -2
  230. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +82 -3
  231. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +1 -1
  232. package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +17 -3
  233. package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
  234. package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +43 -6
  235. package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +19 -2
  236. package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +1 -1
  237. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +17 -3
  238. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
  239. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +49 -13
  240. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +27 -3
  241. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +1 -1
  242. package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +17 -3
  243. package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
  244. package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +43 -6
  245. package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +19 -2
  246. package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +1 -1
  247. package/dist/sdk-skills/kindgi-using/SKILL.md +1 -1
  248. package/dist/slug.d.ts +18 -0
  249. package/dist/slug.d.ts.map +1 -0
  250. package/dist/slug.js +29 -0
  251. package/dist/slug.js.map +1 -0
  252. package/dist/templates/drupal/AGENTS.md +2 -0
  253. package/dist/templates/java/AGENTS.md +2 -0
  254. package/dist/templates/minimal/AGENTS.md +2 -0
  255. package/dist/templates/python/AGENTS.md +2 -0
  256. package/dist/templates/sample/AGENTS.md +2 -0
  257. package/dist/templates/scala/AGENTS.md +2 -0
  258. package/dist/templates/woocommerce/AGENTS.md +11 -4
  259. package/dist/templates/woocommerce/README.md.tmpl +47 -4
  260. package/dist/templates/woocommerce/agents/store-agent/index.test.ts.tmpl +13 -0
  261. package/dist/templates/woocommerce/agents/store-agent/index.ts.tmpl +11 -1
  262. package/dist/templates/woocommerce/tools/publish-product/index.ts.tmpl +7 -1
  263. package/dist/templates/woocommerce/tools/refund/index.ts.tmpl +7 -2
  264. package/dist/templates/woocommerce/tools/refund-large/index.ts.tmpl +8 -2
  265. package/dist/templates/woocommerce/tools/set-price/index.ts.tmpl +6 -0
  266. package/dist/value-target.d.ts +139 -0
  267. package/dist/value-target.d.ts.map +1 -0
  268. package/dist/value-target.js +231 -0
  269. package/dist/value-target.js.map +1 -0
  270. 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":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,OAAO,EAAsB,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EACL,IAAI,EAGJ,IAAI,EACJ,UAAU,EACV,QAAQ,EAER,cAAc,EACd,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,EAAE,EACF,UAAU,EAEV,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EAGf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAgBrB,kGAAkG;AAClG,MAAM,UAAU,WAAW,CACzB,OAAiC,EACjC,SAA4B;IAI5B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;SACtE,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CACtE,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,OAAO,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CACxF;KACF,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,MAAoB,EAAE,QAAkB;IACjE,OAAO;QACL,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACjE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QAClD,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC/E,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC1D,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI;QAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KACxF,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAC1B,KAAoB,EACpB,SAA2B;IAQ3B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC;IACnF,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,SAAkB;QACxB,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC/E,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAClD,OAAO,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACtE,IAAI,CAAE,KAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,2BAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAE,UAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,OAAO,GAAG,CAAC,+BAA+B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,OAAO,GAAG,CAAC,yEAAyE,CAAC,CAAC;IACxF,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAU,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,GAAG,CAAC,OAAO,GAAG,+BAA+B,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACzC,OAAO,GAAG,CACR,gBAAgB,KAAK,CAAC,IAAI,CAAC,MAAM,yCAAyC,gBAAgB,EAAE,CAC7F,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;QAC/B,OAAO,GAAG,CACR,eAAe,SAAS,oCAAoC,cAAc,cAAc,CACzF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,IAAI,EAAE,CAAC,CAAC,IAA4B;YACpC,QAAQ,EAAE,CAAC,CAAC,QAAoC;YAChD,EAAE,EAAE,CAAC,CAAC,EAAgB;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,EAAE,CAAC,CAAC,GAAa;YACpB,GAAG,EAAE,CAAC,CAAC,GAAa;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;QACD,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,SAAS,CAAC,OAAsB;IAI9C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,MAAkB,EAClB,OAAgC;IAEhC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM;QACzC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,iBAAiB;YAC3F,MAAM;QACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,OAAgC;IACjF,OAAO,CACL,OAAO,CAAC,MAAM,IAAI,WAAW;QAC7B,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,iBAAiB,CACrF,CAAC;AACJ,CAAC"}
@@ -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"}