@kindgi/cli 0.1.5 → 0.1.6-rc.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 (204) hide show
  1. package/README.md +4 -1
  2. package/dist/build/defaults.d.ts.map +1 -1
  3. package/dist/build/defaults.js +6 -0
  4. package/dist/build/defaults.js.map +1 -1
  5. package/dist/build/java-image.d.ts +6 -0
  6. package/dist/build/java-image.d.ts.map +1 -1
  7. package/dist/build/java-image.js +4 -1
  8. package/dist/build/java-image.js.map +1 -1
  9. package/dist/build/runners.d.ts +2 -0
  10. package/dist/build/runners.d.ts.map +1 -1
  11. package/dist/build/scala-image.d.ts +6 -0
  12. package/dist/build/scala-image.d.ts.map +1 -1
  13. package/dist/build/scala-image.js +4 -1
  14. package/dist/build/scala-image.js.map +1 -1
  15. package/dist/commands/agents.d.ts.map +1 -1
  16. package/dist/commands/agents.js +23 -7
  17. package/dist/commands/agents.js.map +1 -1
  18. package/dist/commands/approvals.d.ts.map +1 -1
  19. package/dist/commands/approvals.js +23 -3
  20. package/dist/commands/approvals.js.map +1 -1
  21. package/dist/commands/build.d.ts.map +1 -1
  22. package/dist/commands/build.js +32 -3
  23. package/dist/commands/build.js.map +1 -1
  24. package/dist/commands/deploy.js +1 -1
  25. package/dist/commands/deploy.js.map +1 -1
  26. package/dist/commands/dev.d.ts.map +1 -1
  27. package/dist/commands/dev.js +128 -17
  28. package/dist/commands/dev.js.map +1 -1
  29. package/dist/commands/doctor.d.ts +4 -1
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +41 -6
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/env.d.ts.map +1 -1
  34. package/dist/commands/env.js +53 -7
  35. package/dist/commands/env.js.map +1 -1
  36. package/dist/commands/eval-runs.d.ts.map +1 -1
  37. package/dist/commands/eval-runs.js +27 -2
  38. package/dist/commands/eval-runs.js.map +1 -1
  39. package/dist/commands/eval-suites.d.ts.map +1 -1
  40. package/dist/commands/eval-suites.js +16 -6
  41. package/dist/commands/eval-suites.js.map +1 -1
  42. package/dist/commands/flows.d.ts.map +1 -1
  43. package/dist/commands/flows.js +23 -5
  44. package/dist/commands/flows.js.map +1 -1
  45. package/dist/commands/helpers.d.ts +10 -0
  46. package/dist/commands/helpers.d.ts.map +1 -1
  47. package/dist/commands/helpers.js +35 -0
  48. package/dist/commands/helpers.js.map +1 -1
  49. package/dist/commands/init.d.ts.map +1 -1
  50. package/dist/commands/init.js +29 -0
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/mcp.d.ts.map +1 -1
  53. package/dist/commands/mcp.js +8 -1
  54. package/dist/commands/mcp.js.map +1 -1
  55. package/dist/commands/memory.d.ts.map +1 -1
  56. package/dist/commands/memory.js +4 -4
  57. package/dist/commands/memory.js.map +1 -1
  58. package/dist/commands/proposals.d.ts.map +1 -1
  59. package/dist/commands/proposals.js +30 -10
  60. package/dist/commands/proposals.js.map +1 -1
  61. package/dist/commands/provenance.d.ts.map +1 -1
  62. package/dist/commands/provenance.js +3 -3
  63. package/dist/commands/provenance.js.map +1 -1
  64. package/dist/commands/providers.d.ts.map +1 -1
  65. package/dist/commands/providers.js +19 -2
  66. package/dist/commands/providers.js.map +1 -1
  67. package/dist/commands/run-waits.d.ts +28 -2
  68. package/dist/commands/run-waits.d.ts.map +1 -1
  69. package/dist/commands/run-waits.js +22 -3
  70. package/dist/commands/run-waits.js.map +1 -1
  71. package/dist/commands/runs.d.ts.map +1 -1
  72. package/dist/commands/runs.js +5 -1
  73. package/dist/commands/runs.js.map +1 -1
  74. package/dist/commands/schedules.d.ts.map +1 -1
  75. package/dist/commands/schedules.js +9 -4
  76. package/dist/commands/schedules.js.map +1 -1
  77. package/dist/commands/secrets-copy.d.ts +3 -0
  78. package/dist/commands/secrets-copy.d.ts.map +1 -0
  79. package/dist/commands/secrets-copy.js +164 -0
  80. package/dist/commands/secrets-copy.js.map +1 -0
  81. package/dist/commands/secrets.d.ts.map +1 -1
  82. package/dist/commands/secrets.js +19 -8
  83. package/dist/commands/secrets.js.map +1 -1
  84. package/dist/commands/service-accounts.d.ts.map +1 -1
  85. package/dist/commands/service-accounts.js +1 -1
  86. package/dist/commands/service-accounts.js.map +1 -1
  87. package/dist/commands/sso.d.ts +2 -1
  88. package/dist/commands/sso.d.ts.map +1 -1
  89. package/dist/commands/sso.js +11 -72
  90. package/dist/commands/sso.js.map +1 -1
  91. package/dist/commands/tokens.d.ts +1 -1
  92. package/dist/commands/tokens.d.ts.map +1 -1
  93. package/dist/commands/tokens.js +7 -6
  94. package/dist/commands/tokens.js.map +1 -1
  95. package/dist/commands/tools.d.ts.map +1 -1
  96. package/dist/commands/tools.js +10 -5
  97. package/dist/commands/tools.js.map +1 -1
  98. package/dist/dev/defaults.d.ts +10 -0
  99. package/dist/dev/defaults.d.ts.map +1 -1
  100. package/dist/dev/defaults.js +126 -16
  101. package/dist/dev/defaults.js.map +1 -1
  102. package/dist/dev/pack-env.d.ts +27 -1
  103. package/dist/dev/pack-env.d.ts.map +1 -1
  104. package/dist/dev/pack-env.js +27 -4
  105. package/dist/dev/pack-env.js.map +1 -1
  106. package/dist/dev/pack-service.d.ts +8 -0
  107. package/dist/dev/pack-service.d.ts.map +1 -1
  108. package/dist/dev/pack-service.js +2 -0
  109. package/dist/dev/pack-service.js.map +1 -1
  110. package/dist/dev/paths.d.ts +6 -0
  111. package/dist/dev/paths.d.ts.map +1 -1
  112. package/dist/dev/paths.js +8 -0
  113. package/dist/dev/paths.js.map +1 -1
  114. package/dist/dev/runners.d.ts +24 -0
  115. package/dist/dev/runners.d.ts.map +1 -1
  116. package/dist/dev/runtime-image.d.ts +1 -1
  117. package/dist/dev/runtime-image.d.ts.map +1 -1
  118. package/dist/dev/runtime-image.js +1 -1
  119. package/dist/dev/runtime-image.js.map +1 -1
  120. package/dist/dev/sandbox/bwrap.d.ts +19 -0
  121. package/dist/dev/sandbox/bwrap.d.ts.map +1 -0
  122. package/dist/dev/sandbox/bwrap.js +164 -0
  123. package/dist/dev/sandbox/bwrap.js.map +1 -0
  124. package/dist/dev/sandbox/detect.d.ts +26 -0
  125. package/dist/dev/sandbox/detect.d.ts.map +1 -0
  126. package/dist/dev/sandbox/detect.js +84 -0
  127. package/dist/dev/sandbox/detect.js.map +1 -0
  128. package/dist/dev/sandbox/index.d.ts +44 -0
  129. package/dist/dev/sandbox/index.d.ts.map +1 -0
  130. package/dist/dev/sandbox/index.js +81 -0
  131. package/dist/dev/sandbox/index.js.map +1 -0
  132. package/dist/dev/sandbox/notices.d.ts +23 -0
  133. package/dist/dev/sandbox/notices.d.ts.map +1 -0
  134. package/dist/dev/sandbox/notices.js +95 -0
  135. package/dist/dev/sandbox/notices.js.map +1 -0
  136. package/dist/dev/sandbox/policy.d.ts +80 -0
  137. package/dist/dev/sandbox/policy.d.ts.map +1 -0
  138. package/dist/dev/sandbox/policy.js +313 -0
  139. package/dist/dev/sandbox/policy.js.map +1 -0
  140. package/dist/dev/sandbox/seatbelt.d.ts +3 -0
  141. package/dist/dev/sandbox/seatbelt.d.ts.map +1 -0
  142. package/dist/dev/sandbox/seatbelt.js +131 -0
  143. package/dist/dev/sandbox/seatbelt.js.map +1 -0
  144. package/dist/dev/sandbox/settings.d.ts +30 -0
  145. package/dist/dev/sandbox/settings.d.ts.map +1 -0
  146. package/dist/dev/sandbox/settings.js +97 -0
  147. package/dist/dev/sandbox/settings.js.map +1 -0
  148. package/dist/env/provider-keys.d.ts +35 -0
  149. package/dist/env/provider-keys.d.ts.map +1 -0
  150. package/dist/env/provider-keys.js +108 -0
  151. package/dist/env/provider-keys.js.map +1 -0
  152. package/dist/init/agent-access.d.ts +119 -0
  153. package/dist/init/agent-access.d.ts.map +1 -0
  154. package/dist/init/agent-access.js +339 -0
  155. package/dist/init/agent-access.js.map +1 -0
  156. package/dist/init/augment-scaffolder.d.ts +2 -0
  157. package/dist/init/augment-scaffolder.d.ts.map +1 -1
  158. package/dist/init/augment-scaffolder.js +11 -1
  159. package/dist/init/augment-scaffolder.js.map +1 -1
  160. package/dist/init/gitignore-patcher.d.ts.map +1 -1
  161. package/dist/init/gitignore-patcher.js +5 -3
  162. package/dist/init/gitignore-patcher.js.map +1 -1
  163. package/dist/init/java-augment.d.ts +2 -0
  164. package/dist/init/java-augment.d.ts.map +1 -1
  165. package/dist/init/java-augment.js +10 -0
  166. package/dist/init/java-augment.js.map +1 -1
  167. package/dist/init/python-augment.d.ts +2 -0
  168. package/dist/init/python-augment.d.ts.map +1 -1
  169. package/dist/init/python-augment.js +10 -0
  170. package/dist/init/python-augment.js.map +1 -1
  171. package/dist/init/scala-augment.d.ts +2 -0
  172. package/dist/init/scala-augment.d.ts.map +1 -1
  173. package/dist/init/scala-augment.js +12 -2
  174. package/dist/init/scala-augment.js.map +1 -1
  175. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +1 -1
  176. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +1 -1
  177. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +1 -1
  178. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +8 -7
  179. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +22 -16
  180. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +14 -3
  181. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +1 -1
  182. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +24 -2
  183. package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +3 -3
  184. package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
  185. package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +1 -1
  186. package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +35 -12
  187. package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +29 -5
  188. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +1 -1
  189. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
  190. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +1 -1
  191. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +35 -9
  192. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +28 -4
  193. package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +3 -3
  194. package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
  195. package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +1 -1
  196. package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +35 -12
  197. package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +29 -5
  198. package/dist/templates/java/README.md.tmpl +1 -1
  199. package/dist/templates/minimal/README.md.tmpl +1 -1
  200. package/dist/templates/python/README.md.tmpl +1 -1
  201. package/dist/templates/sample/README.md.tmpl +1 -1
  202. package/dist/templates/sample/tools/fetch-httpbin/index.ts.tmpl +2 -1
  203. package/dist/templates/scala/README.md.tmpl +1 -1
  204. package/package.json +13 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seatbelt.js","sourceRoot":"","sources":["../../../src/dev/sandbox/seatbelt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { PackConfigRecord } from '../../pack-config.js';
2
+ /** The variable that sets {@link DevSandboxMode}. */
3
+ export declare const DEV_SANDBOX_VAR = "KINDGI_DEV_SANDBOX";
4
+ export type DevSandboxMode = 'on' | 'off' | 'required';
5
+ export interface DevSandboxSettings {
6
+ readonly mode: DevSandboxMode;
7
+ /** What set the mode: nothing, `KINDGI_DEV_SANDBOX`, or `dev.sandbox`. */
8
+ readonly source: 'default' | 'env' | 'config';
9
+ /** Absolute paths the pack service may also read (`dev.sandbox.allowRead`). */
10
+ readonly allowRead: readonly string[];
11
+ /** Absolute paths of UNIX sockets it may also connect to (`dev.sandbox.allowUnixSockets`). */
12
+ readonly allowUnixSockets: readonly string[];
13
+ }
14
+ export type DevSandboxSettingsOutcome = {
15
+ readonly kind: 'ok';
16
+ readonly value: DevSandboxSettings;
17
+ } | {
18
+ readonly kind: 'invalid';
19
+ readonly message: string;
20
+ };
21
+ /**
22
+ * The settings from the environment and the config. `KINDGI_DEV_SANDBOX`
23
+ * wins over `dev.sandbox` for the mode; the allow lists come from the
24
+ * config. A path is absolute, `~/…`, or relative to the pack root.
25
+ */
26
+ export declare function devSandboxSettings(config: PackConfigRecord | undefined, env: Readonly<Record<string, string | undefined>>, paths: {
27
+ readonly packDir: string;
28
+ readonly home: string;
29
+ }): DevSandboxSettingsOutcome;
30
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/dev/sandbox/settings.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qDAAqD;AACrD,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9C,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,8FAA8F;IAC9F,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,GAAG,SAAS,EACpC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACjD,KAAK,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD,yBAAyB,CA4B3B"}
@@ -0,0 +1,97 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * Whether `kindgi dev` runs the pack service sandboxed, and what the
5
+ * sandbox lets through: `KINDGI_DEV_SANDBOX` and `dev.sandbox` in the
6
+ * pack's config.
7
+ *
8
+ * - `on` (the default): sandboxed where this machine can; where it
9
+ * can't, `kindgi dev` warns and runs it without.
10
+ * - `off`: never (`KINDGI_DEV_SANDBOX=off`, or `dev.sandbox: false`).
11
+ * - `required`: sandboxed, or the pack service doesn't start.
12
+ *
13
+ * `dev.sandbox.allowRead` and `dev.sandbox.allowUnixSockets` open a path
14
+ * or a socket outside the app, such as `~/.aws` for a tool on the AWS
15
+ * SDK's credential chain. `kindgi dev` names them at every start.
16
+ */
17
+ import { isAbsolute, join, resolve } from 'node:path';
18
+ /** The variable that sets {@link DevSandboxMode}. */
19
+ export const DEV_SANDBOX_VAR = 'KINDGI_DEV_SANDBOX';
20
+ /**
21
+ * The settings from the environment and the config. `KINDGI_DEV_SANDBOX`
22
+ * wins over `dev.sandbox` for the mode; the allow lists come from the
23
+ * config. A path is absolute, `~/…`, or relative to the pack root.
24
+ */
25
+ export function devSandboxSettings(config, env, paths) {
26
+ const raw = env[DEV_SANDBOX_VAR];
27
+ if (raw !== undefined && raw !== '' && raw !== 'on' && raw !== 'off' && raw !== 'required') {
28
+ return {
29
+ kind: 'invalid',
30
+ message: `${DEV_SANDBOX_VAR} must be \`on\`, \`off\` or \`required\`, not ${JSON.stringify(raw)}`,
31
+ };
32
+ }
33
+ const dev = config?.dev;
34
+ const sandbox = dev !== null && typeof dev === 'object' && !Array.isArray(dev)
35
+ ? dev.sandbox
36
+ : undefined;
37
+ const fromConfig = configSandbox(sandbox, paths);
38
+ if (fromConfig.kind === 'invalid')
39
+ return fromConfig;
40
+ const { enabled, allowRead, allowUnixSockets } = fromConfig.value;
41
+ if (raw !== undefined && raw !== '') {
42
+ return { kind: 'ok', value: { mode: raw, source: 'env', allowRead, allowUnixSockets } };
43
+ }
44
+ return {
45
+ kind: 'ok',
46
+ value: {
47
+ mode: enabled ? 'on' : 'off',
48
+ source: enabled ? 'default' : 'config',
49
+ allowRead,
50
+ allowUnixSockets,
51
+ },
52
+ };
53
+ }
54
+ function configSandbox(sandbox, paths) {
55
+ if (sandbox === undefined || sandbox === true) {
56
+ return { kind: 'ok', value: { enabled: true, allowRead: [], allowUnixSockets: [] } };
57
+ }
58
+ if (sandbox === false) {
59
+ return { kind: 'ok', value: { enabled: false, allowRead: [], allowUnixSockets: [] } };
60
+ }
61
+ const shape = '`dev.sandbox` must be `false`, or an object with `allowRead` and `allowUnixSockets` (lists of paths)';
62
+ if (sandbox === null || typeof sandbox !== 'object' || Array.isArray(sandbox)) {
63
+ return { kind: 'invalid', message: shape };
64
+ }
65
+ const record = sandbox;
66
+ const unknownKeys = Object.keys(record).filter((k) => k !== 'allowRead' && k !== 'allowUnixSockets');
67
+ if (unknownKeys.length > 0) {
68
+ return {
69
+ kind: 'invalid',
70
+ message: `${shape}; not ${unknownKeys.map((k) => `\`${k}\``).join(', ')}`,
71
+ };
72
+ }
73
+ const lists = {
74
+ allowRead: [],
75
+ allowUnixSockets: [],
76
+ };
77
+ for (const key of ['allowRead', 'allowUnixSockets']) {
78
+ const list = record[key];
79
+ if (list === undefined)
80
+ continue;
81
+ if (!Array.isArray(list) ||
82
+ !list.every((p) => typeof p === 'string' && p.trim() !== '')) {
83
+ return { kind: 'invalid', message: `\`dev.sandbox.${key}\` must be a list of paths` };
84
+ }
85
+ lists[key] = list.map((p) => expandPath(p.trim(), paths));
86
+ }
87
+ return { kind: 'ok', value: { enabled: true, ...lists } };
88
+ }
89
+ /** `~/x` under home, a relative path under the pack root, an absolute one as is. */
90
+ function expandPath(path, paths) {
91
+ if (path === '~')
92
+ return paths.home;
93
+ if (path.startsWith('~/'))
94
+ return join(paths.home, path.slice(2));
95
+ return isAbsolute(path) ? path : resolve(paths.packDir, path);
96
+ }
97
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/dev/sandbox/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { KindgiClient, Provider } from '@kindgi/client';
2
+ import type { DeclaredProvider } from '../dev/providers.js';
3
+ import type { ProviderPreset } from '../providers/preset-loader.js';
4
+ /** Every provider of the tenant, all pages. */
5
+ export declare function listAllProviders(client: KindgiClient): Promise<readonly Provider[]>;
6
+ /** The names the runtime's providers resolve their keys from in `local`, through `client`. */
7
+ export declare function providerKeyNamesFromRuntime(client: KindgiClient, presets: Readonly<Record<string, ProviderPreset>>): Promise<Set<string>>;
8
+ /** A provider's key reference, by name. */
9
+ export interface ProviderKeyRef {
10
+ readonly envName: string;
11
+ readonly name: string;
12
+ }
13
+ /** The names the declared providers' keys resolve from in `local`. */
14
+ export declare function declaredProviderKeyNames(declared: readonly DeclaredProvider[]): Set<string>;
15
+ export interface RuntimeProviderKeyNamesInput {
16
+ /** The tenant's providers (every page). */
17
+ readonly providers: readonly {
18
+ readonly id: string;
19
+ }[];
20
+ /** `GET /v1/providers/:id/check`; a failure counts as "no `secretRef`". */
21
+ readonly check: (providerId: string) => Promise<{
22
+ readonly secretRef?: ProviderKeyRef;
23
+ }>;
24
+ /** The presets, by name: the fallback for a provider whose check carries no `secretRef`. */
25
+ readonly presets: Readonly<Record<string, ProviderPreset>>;
26
+ }
27
+ /** The names the runtime's providers resolve their keys from in `local`. */
28
+ export declare function runtimeProviderKeyNames(input: RuntimeProviderKeyNamesInput): Promise<Set<string>>;
29
+ /** Where `kindgi dev` records the names it learned from the runtime. */
30
+ export declare function providerKeysRecordPath(packDir: string): string;
31
+ /** The recorded names; empty when there's no record (or it can't be read). */
32
+ export declare function readProviderKeysRecord(packDir: string): Promise<Set<string>>;
33
+ /** Record the names (sorted, names only); best effort. */
34
+ export declare function writeProviderKeysRecord(packDir: string, names: ReadonlySet<string>): Promise<void>;
35
+ //# sourceMappingURL=provider-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-keys.d.ts","sourceRoot":"","sources":["../../src/env/provider-keys.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,+CAA+C;AAC/C,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAYzF;AAED,8FAA8F;AAC9F,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAMtB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAO3F;AAED,MAAM,WAAW,4BAA4B;IAC3C,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IACzF,4FAA4F;IAC5F,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CAC5D;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAuBtB;AAED,wEAAwE;AACxE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,8EAA8E;AAC9E,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAQlF;AAED,0DAA0D;AAC1D,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,108 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * The names model providers resolve their keys from in `local` (the
5
+ * environment `kindgi dev` runs as). `kindgi dev` keeps them out of the
6
+ * pack service's environment, whatever file holds them, and `kindgi
7
+ * secrets copy` copies them from the app's env files into Kindgi's own.
8
+ *
9
+ * Three sources, unioned:
10
+ *
11
+ * - the providers `kindgi.config` declares (`providers`): their
12
+ * `secret_ref`, known before the runtime starts;
13
+ * - the runtime's providers: `GET /v1/providers/:id/check` carries
14
+ * each one's `secretRef`, by name only (a runtime from 0.1.6 on);
15
+ * - a runtime provider whose check carries none (an older runtime) and
16
+ * whose id is a preset's: that preset's key name.
17
+ *
18
+ * `kindgi dev` records the last names it learned from the runtime in
19
+ * `.kindgi/dev/provider-keys.json` (names only), so the pack service it
20
+ * starts before the runtime answers already leaves them out.
21
+ */
22
+ import { readFile, writeFile } from 'node:fs/promises';
23
+ import { join } from 'node:path';
24
+ import { LOCAL_ENV_NAME } from '@kindgi/secrets-dotenv';
25
+ /** Every provider of the tenant, all pages. */
26
+ export async function listAllProviders(client) {
27
+ const providers = [];
28
+ let cursor;
29
+ do {
30
+ const page = await client.providers.list({
31
+ limit: 100,
32
+ ...(cursor !== undefined && { cursor }),
33
+ });
34
+ providers.push(...page.data);
35
+ cursor = page.hasMore ? page.nextCursor : undefined;
36
+ } while (cursor !== undefined);
37
+ return providers;
38
+ }
39
+ /** The names the runtime's providers resolve their keys from in `local`, through `client`. */
40
+ export async function providerKeyNamesFromRuntime(client, presets) {
41
+ return runtimeProviderKeyNames({
42
+ providers: await listAllProviders(client),
43
+ check: (id) => client.providers.check(id),
44
+ presets,
45
+ });
46
+ }
47
+ /** The names the declared providers' keys resolve from in `local`. */
48
+ export function declaredProviderKeyNames(declared) {
49
+ const names = new Set();
50
+ for (const p of declared) {
51
+ const ref = p.input.secret_ref;
52
+ if (ref !== undefined && ref.envName === LOCAL_ENV_NAME)
53
+ names.add(ref.name);
54
+ }
55
+ return names;
56
+ }
57
+ /** The names the runtime's providers resolve their keys from in `local`. */
58
+ export async function runtimeProviderKeyNames(input) {
59
+ const presetKeyById = new Map();
60
+ for (const preset of Object.values(input.presets)) {
61
+ if (preset.secret !== undefined)
62
+ presetKeyById.set(preset.metadata.id, preset.secret);
63
+ }
64
+ const names = new Set();
65
+ await Promise.all(input.providers.map(async (p) => {
66
+ let ref;
67
+ try {
68
+ ref = (await input.check(p.id)).secretRef;
69
+ }
70
+ catch {
71
+ ref = undefined;
72
+ }
73
+ if (ref !== undefined) {
74
+ if (ref.envName === LOCAL_ENV_NAME)
75
+ names.add(ref.name);
76
+ return;
77
+ }
78
+ const preset = presetKeyById.get(p.id);
79
+ if (preset !== undefined)
80
+ names.add(preset);
81
+ }));
82
+ return names;
83
+ }
84
+ /** Where `kindgi dev` records the names it learned from the runtime. */
85
+ export function providerKeysRecordPath(packDir) {
86
+ return join(packDir, '.kindgi', 'dev', 'provider-keys.json');
87
+ }
88
+ /** The recorded names; empty when there's no record (or it can't be read). */
89
+ export async function readProviderKeysRecord(packDir) {
90
+ try {
91
+ const parsed = JSON.parse(await readFile(providerKeysRecordPath(packDir), 'utf8'));
92
+ const names = parsed.names;
93
+ return new Set(Array.isArray(names) ? names.filter((n) => typeof n === 'string') : []);
94
+ }
95
+ catch {
96
+ return new Set();
97
+ }
98
+ }
99
+ /** Record the names (sorted, names only); best effort. */
100
+ export async function writeProviderKeysRecord(packDir, names) {
101
+ try {
102
+ await writeFile(providerKeysRecordPath(packDir), `${JSON.stringify({ names: [...names].sort() }, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
103
+ }
104
+ catch {
105
+ // The record only saves the next boot a pack service restart.
106
+ }
107
+ }
108
+ //# sourceMappingURL=provider-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-keys.js","sourceRoot":"","sources":["../../src/env/provider-keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import { type PatchResult } from './gitignore-patcher.js';
2
+ /**
3
+ * The files that hold keys and tokens, relative to the project root: the
4
+ * app's env files (model keys added by hand, the app's own secrets), Kindgi's
5
+ * own secrets file, the dev runtime's settings (its token, the database
6
+ * URL), and a self-hosted deployment's env files.
7
+ *
8
+ * Not `.kindgirc.json`: it holds the dev token the agent's own `kindgi`
9
+ * commands read to reach `kindgi dev`, and with Claude Code's sandbox on, a
10
+ * `Read` deny rule binds the shell's commands too (measured with Claude Code
11
+ * 2.1.288), so denying it would break every `kindgi` command the agent runs.
12
+ * The same list serves a sandbox's `denyRead`.
13
+ */
14
+ export declare const KEY_FILES: readonly string[];
15
+ /**
16
+ * Claude Code's permission rules for `KEY_FILES` (they cover Read, Grep and
17
+ * Glob, and the sandbox when it's on), under `prefix`: the pack's folder
18
+ * from the repository's root, for the root's settings. A bare `./.env*`
19
+ * matches at any depth below where the session starts; a path with a folder
20
+ * in it is anchored there.
21
+ */
22
+ export declare function claudeReadDenyRules(prefix?: string): readonly string[];
23
+ /**
24
+ * A folder path as a literal in a gitignore-style pattern, for Claude Code's
25
+ * rules and other agents' ignore files alike: `\`, `*`, `?`, `[` and `]`
26
+ * escaped, and a leading `#` or `!` (a comment, a negation in an ignore
27
+ * file). Unescaped, `apps/[legacy]/agent` is a character class and the rule
28
+ * misses the folder (measured with Claude Code 2.1.288; escaped, it matches).
29
+ */
30
+ export declare function globLiteral(path: string): string;
31
+ /**
32
+ * The git repository's root at or above `dir`: the nearest folder holding a
33
+ * `.git` (a directory, or a worktree's or submodule's file). No git binary.
34
+ */
35
+ export declare function gitRootOf(dir: string): Promise<string | undefined>;
36
+ export interface ClaudeSettingsResult {
37
+ readonly kind: 'created' | 'patched' | 'already-present' | 'error';
38
+ /** The rules appended to `permissions.deny`. */
39
+ readonly appended: readonly string[];
40
+ readonly message?: string;
41
+ }
42
+ /**
43
+ * Merge `rules` (by default `claudeReadDenyRules()`) into `permissions.deny`
44
+ * of the settings file at `path`, creating the file when it doesn't exist. A
45
+ * file that isn't valid JSON, or whose `permissions.deny` isn't a list, is
46
+ * left as it is, and the message says what to add. A leading byte-order mark
47
+ * is kept.
48
+ */
49
+ export declare function patchClaudeSettings(path: string, rules?: readonly string[]): Promise<ClaudeSettingsResult>;
50
+ type OtherAgentFiles = readonly {
51
+ readonly file: string;
52
+ readonly result: PatchResult;
53
+ }[];
54
+ export interface AgentAccessResult {
55
+ /** `.claude/settings.json`. */
56
+ readonly claude: ClaudeSettingsResult;
57
+ /** Other agents' ignore files that exist, by file name. */
58
+ readonly others: OtherAgentFiles;
59
+ /**
60
+ * Only when the pack's folder is below its git repository's root: the same
61
+ * rules under `prefix` (the pack's folder from the root, `/`-separated) in
62
+ * the root's `.claude/settings.json`, and in other agents' ignore files
63
+ * that exist there.
64
+ */
65
+ readonly repoRoot?: {
66
+ readonly dir: string;
67
+ readonly prefix: string;
68
+ readonly claude: ClaudeSettingsResult;
69
+ readonly others: OtherAgentFiles;
70
+ }
71
+ /**
72
+ * The repository's root is the home folder (a dotfiles repository):
73
+ * its `.claude/settings.json` is Claude Code's user-wide settings, so
74
+ * nothing is written there, and init says so.
75
+ */
76
+ | {
77
+ readonly dir: string;
78
+ readonly prefix: string;
79
+ readonly skipped: 'home';
80
+ };
81
+ }
82
+ export interface PatchAgentAccessOptions {
83
+ /** The home folder (the CLI's own); by default the process's. */
84
+ readonly home?: string;
85
+ }
86
+ /** Keep the project's coding agents out of the key files (see the module comment). */
87
+ export declare function patchAgentAccess(projectDir: string, options?: PatchAgentAccessOptions): Promise<AgentAccessResult>;
88
+ export interface AgentAccessRows {
89
+ readonly created: readonly string[];
90
+ readonly skipped: readonly string[];
91
+ readonly warnings: readonly string[];
92
+ /**
93
+ * What was written outside the pack's folder (the repository root's
94
+ * files), one line each, with why: init prints these whatever else it
95
+ * summarizes.
96
+ */
97
+ readonly outside: readonly string[];
98
+ }
99
+ /**
100
+ * `kindgi init`'s summary rows for `patchAgentAccess`: what was created or
101
+ * patched, what already had the rules, and warnings (a file left as it was,
102
+ * with what to add by hand). Never a failure: init goes on either way.
103
+ */
104
+ export declare function agentAccessRows(projectDir: string, result: AgentAccessResult): AgentAccessRows;
105
+ /**
106
+ * For a new pack (`kindgi init`, not augment): the files written in the
107
+ * pack's folder, for init's list, and the lines init prints: what it wrote
108
+ * outside the folder (`✓`), and warnings (`⚠`: a file left as it was, with
109
+ * what to add by hand). Never a failure: `--force` over a folder whose
110
+ * settings file isn't valid JSON scaffolds and says so.
111
+ */
112
+ export declare function writeAgentAccess(projectDir: string, options?: PatchAgentAccessOptions): Promise<{
113
+ readonly files: readonly string[];
114
+ readonly lines: readonly string[];
115
+ }>;
116
+ /** The lines init prints for `rows`, whatever else it summarizes: what it wrote outside the pack's folder, and the warnings. */
117
+ export declare function agentAccessLines(rows: AgentAccessRows): readonly string[];
118
+ export {};
119
+ //# sourceMappingURL=agent-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-access.d.ts","sourceRoot":"","sources":["../../src/init/agent-access.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,wBAAwB,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAMtC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAK,GAAG,SAAS,MAAM,EAAE,CAElE;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAaxE;AASD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,OAAO,CAAC;IACnE,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,SAAS,MAAM,EAA0B,GAC/C,OAAO,CAAC,oBAAoB,CAAC,CAkF/B;AAED,KAAK,eAAe,GAAG,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,EAAE,CAAC;AAE1F,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EACd;QACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;QACtC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;KAClC;IACH;;;;OAIG;OACD;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjF;AAED,MAAM,WAAW,uBAAuB;IACtC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sFAAsF;AACtF,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,iBAAiB,CAAC,CAwB5B;AAuBD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,eAAe,CA4B9F;AAwCD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,CAWnF;AAED,gIAAgI;AAChI,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,MAAM,EAAE,CAEzE"}