@kindgi/cli 0.1.6 → 0.1.7
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 +35 -24
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +5 -4
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +84 -13
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +104 -19
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/guardrails.d.ts.map +1 -1
- package/dist/commands/guardrails.js +13 -2
- package/dist/commands/guardrails.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +23 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/license.d.ts +3 -0
- package/dist/commands/license.d.ts.map +1 -0
- package/dist/commands/license.js +187 -0
- package/dist/commands/license.js.map +1 -0
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/providers.d.ts.map +1 -1
- package/dist/commands/providers.js +11 -9
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +21 -9
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/webhooks.d.ts +20 -0
- package/dist/commands/webhooks.d.ts.map +1 -0
- package/dist/commands/webhooks.js +444 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/context.d.ts +4 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -0
- package/dist/context.js.map +1 -1
- package/dist/dev/already-running.d.ts +22 -0
- package/dist/dev/already-running.d.ts.map +1 -0
- package/dist/dev/already-running.js +72 -0
- package/dist/dev/already-running.js.map +1 -0
- package/dist/dev/defaults.d.ts.map +1 -1
- package/dist/dev/defaults.js +5 -2
- package/dist/dev/defaults.js.map +1 -1
- package/dist/dev/dev-lock.d.ts +50 -0
- package/dist/dev/dev-lock.d.ts.map +1 -0
- package/dist/dev/dev-lock.js +203 -0
- package/dist/dev/dev-lock.js.map +1 -0
- package/dist/dev/port.d.ts +6 -2
- package/dist/dev/port.d.ts.map +1 -1
- package/dist/dev/port.js +8 -4
- package/dist/dev/port.js.map +1 -1
- package/dist/dev/providers.d.ts.map +1 -1
- package/dist/dev/providers.js +112 -23
- package/dist/dev/providers.js.map +1 -1
- package/dist/dev/runners.d.ts +21 -2
- package/dist/dev/runners.d.ts.map +1 -1
- package/dist/dev/runtime-container.d.ts +78 -3
- package/dist/dev/runtime-container.d.ts.map +1 -1
- package/dist/dev/runtime-container.js +258 -26
- package/dist/dev/runtime-container.js.map +1 -1
- package/dist/dev/runtime-image.d.ts +4 -3
- package/dist/dev/runtime-image.d.ts.map +1 -1
- package/dist/dev/runtime-image.js +4 -3
- package/dist/dev/runtime-image.js.map +1 -1
- package/dist/dev/runtime-registry.d.ts +0 -9
- package/dist/dev/runtime-registry.d.ts.map +1 -1
- package/dist/dev/runtime-registry.js +12 -2
- package/dist/dev/runtime-registry.js.map +1 -1
- package/dist/dev/start-phases.d.ts +41 -0
- package/dist/dev/start-phases.d.ts.map +1 -0
- package/dist/dev/start-phases.js +103 -0
- package/dist/dev/start-phases.js.map +1 -0
- package/dist/init/augment-scaffolder.d.ts +20 -7
- package/dist/init/augment-scaffolder.d.ts.map +1 -1
- package/dist/init/augment-scaffolder.js +94 -21
- package/dist/init/augment-scaffolder.js.map +1 -1
- package/dist/init/pinning.d.ts +39 -0
- package/dist/init/pinning.d.ts.map +1 -0
- package/dist/init/pinning.js +130 -0
- package/dist/init/pinning.js.map +1 -0
- package/dist/init/template-files.d.ts +1 -1
- package/dist/init/tsconfig-paths.d.ts +29 -0
- package/dist/init/tsconfig-paths.d.ts.map +1 -0
- package/dist/init/tsconfig-paths.js +235 -0
- package/dist/init/tsconfig-paths.js.map +1 -0
- package/dist/init/vitest-setup.d.ts +41 -0
- package/dist/init/vitest-setup.d.ts.map +1 -0
- package/dist/init/vitest-setup.js +163 -0
- package/dist/init/vitest-setup.js.map +1 -0
- package/dist/license/aws.d.ts +24 -0
- package/dist/license/aws.d.ts.map +1 -0
- package/dist/license/aws.js +291 -0
- package/dist/license/aws.js.map +1 -0
- package/dist/license/cloud.d.ts +13 -0
- package/dist/license/cloud.d.ts.map +1 -0
- package/dist/license/cloud.js +193 -0
- package/dist/license/cloud.js.map +1 -0
- package/dist/license/expiry.d.ts +33 -0
- package/dist/license/expiry.d.ts.map +1 -0
- package/dist/license/expiry.js +35 -0
- package/dist/license/expiry.js.map +1 -0
- package/dist/license/license-key.d.ts +32 -0
- package/dist/license/license-key.d.ts.map +1 -0
- package/dist/license/license-key.js +91 -0
- package/dist/license/license-key.js.map +1 -0
- package/dist/license/protocol.d.ts +63 -0
- package/dist/license/protocol.d.ts.map +1 -0
- package/dist/license/protocol.js +102 -0
- package/dist/license/protocol.js.map +1 -0
- package/dist/license/renew.d.ts +59 -0
- package/dist/license/renew.d.ts.map +1 -0
- package/dist/license/renew.js +153 -0
- package/dist/license/renew.js.map +1 -0
- package/dist/license/stores.d.ts +19 -0
- package/dist/license/stores.d.ts.map +1 -0
- package/dist/license/stores.js +150 -0
- package/dist/license/stores.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/package-manager.d.ts.map +1 -1
- package/dist/package-manager.js +2 -1
- package/dist/package-manager.js.map +1 -1
- package/dist/providers/preset-loader.d.ts +52 -1
- package/dist/providers/preset-loader.d.ts.map +1 -1
- package/dist/providers/preset-loader.js +85 -6
- package/dist/providers/preset-loader.js.map +1 -1
- package/dist/providers/presets/anthropic.json +1 -1
- package/dist/providers/presets/azure-openai.json +65 -0
- package/dist/providers/presets/bedrock.json +102 -0
- package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +11 -10
- package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +4 -4
- package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +16 -9
- package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +9 -11
- package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +3 -3
- package/dist/sdk-skills/kindgi-getting-started/SKILL.md +28 -5
- package/dist/sdk-skills/kindgi-java-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-authoring-tools/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-java-getting-started/SKILL.md +6 -1
- package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +6 -1
- package/dist/sdk-skills/kindgi-scala-authoring-agents/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-flows/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-guardrails/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-authoring-tools/SKILL.md +1 -1
- package/dist/sdk-skills/kindgi-scala-getting-started/SKILL.md +6 -1
- package/dist/sdk-skills/kindgi-using/SKILL.md +236 -0
- package/dist/templates/drupal/.nvmrc +1 -0
- package/dist/templates/drupal/AGENTS.md +62 -0
- package/dist/templates/drupal/README.md.tmpl +321 -0
- package/dist/templates/drupal/agents/content-agent/index.test.ts.tmpl +47 -0
- package/dist/templates/drupal/agents/content-agent/index.ts.tmpl +69 -0
- package/dist/templates/drupal/agents/content-reviewer/index.test.ts.tmpl +37 -0
- package/dist/templates/drupal/agents/content-reviewer/index.ts.tmpl +57 -0
- package/dist/templates/drupal/fixtures/node-updated.json +174 -0
- package/dist/templates/drupal/flows/content-review/index.ts.tmpl +66 -0
- package/dist/templates/drupal/gitignore +8 -0
- package/dist/templates/drupal/guardrails/no-contact-details/index.test.ts.tmpl +29 -0
- package/dist/templates/drupal/guardrails/no-contact-details/index.ts.tmpl +73 -0
- package/dist/templates/drupal/kindgi.config.ts.tmpl +41 -0
- package/dist/templates/drupal/lib/drupal.ts.tmpl +64 -0
- package/dist/templates/drupal/package.json.tmpl +31 -0
- package/dist/templates/drupal/pnpm-workspace.yaml +9 -0
- package/dist/templates/drupal/scripts/connect-drupal.mjs.tmpl +57 -0
- package/dist/templates/drupal/tools/check-content-event/index.test.ts.tmpl +72 -0
- package/dist/templates/drupal/tools/check-content-event/index.ts.tmpl +115 -0
- package/dist/templates/drupal/tsconfig.json.tmpl +28 -0
- package/dist/templates/drupal/vitest.config.ts.tmpl +14 -0
- package/dist/templates/java/AGENTS.md +6 -0
- package/dist/templates/java/README.md.tmpl +1 -1
- package/dist/templates/minimal/AGENTS.md +6 -0
- package/dist/templates/minimal/README.md.tmpl +3 -2
- package/dist/templates/minimal/package.json.tmpl +3 -2
- package/dist/templates/python/AGENTS.md +3 -2
- package/dist/templates/sample/AGENTS.md +6 -0
- package/dist/templates/sample/package.json.tmpl +3 -2
- package/dist/templates/scala/AGENTS.md +6 -0
- package/dist/templates/scala/README.md.tmpl +1 -1
- package/dist/templates/woocommerce/.nvmrc +1 -0
- package/dist/templates/woocommerce/AGENTS.md +49 -0
- package/dist/templates/woocommerce/README.md.tmpl +273 -0
- package/dist/templates/woocommerce/agents/order-reviewer/index.test.ts.tmpl +28 -0
- package/dist/templates/woocommerce/agents/order-reviewer/index.ts.tmpl +45 -0
- package/dist/templates/woocommerce/agents/store-agent/index.test.ts.tmpl +47 -0
- package/dist/templates/woocommerce/agents/store-agent/index.ts.tmpl +79 -0
- package/dist/templates/woocommerce/fixtures/order-created.json +67 -0
- package/dist/templates/woocommerce/flows/order-review/index.ts.tmpl +64 -0
- package/dist/templates/woocommerce/gitignore +8 -0
- package/dist/templates/woocommerce/guardrails/no-customer-contact-details/index.test.ts.tmpl +29 -0
- package/dist/templates/woocommerce/guardrails/no-customer-contact-details/index.ts.tmpl +74 -0
- package/dist/templates/woocommerce/kindgi.config.ts.tmpl +41 -0
- package/dist/templates/woocommerce/lib/fake-store.ts.tmpl +82 -0
- package/dist/templates/woocommerce/lib/woo.ts.tmpl +182 -0
- package/dist/templates/woocommerce/package.json.tmpl +30 -0
- package/dist/templates/woocommerce/pnpm-workspace.yaml +9 -0
- package/dist/templates/woocommerce/tools/check-order-event/index.test.ts.tmpl +76 -0
- package/dist/templates/woocommerce/tools/check-order-event/index.ts.tmpl +131 -0
- package/dist/templates/woocommerce/tools/find-orders/index.ts.tmpl +80 -0
- package/dist/templates/woocommerce/tools/publish-product/index.ts.tmpl +34 -0
- package/dist/templates/woocommerce/tools/refund/index.test.ts.tmpl +125 -0
- package/dist/templates/woocommerce/tools/refund/index.ts.tmpl +70 -0
- package/dist/templates/woocommerce/tools/refund-large/index.test.ts.tmpl +53 -0
- package/dist/templates/woocommerce/tools/refund-large/index.ts.tmpl +44 -0
- package/dist/templates/woocommerce/tools/set-price/index.ts.tmpl +36 -0
- package/dist/templates/woocommerce/tsconfig.json.tmpl +28 -0
- package/dist/templates/woocommerce/vitest.config.ts.tmpl +14 -0
- package/dist/test/defaults.d.ts +1 -1
- package/dist/test/defaults.d.ts.map +1 -1
- package/dist/test/defaults.js +2 -7
- package/dist/test/defaults.js.map +1 -1
- package/dist/test/runners.d.ts +6 -0
- package/dist/test/runners.d.ts.map +1 -1
- package/dist/test/runners.js +18 -1
- package/dist/test/runners.js.map +1 -1
- package/package.json +13 -13
|
@@ -15,10 +15,13 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { spawn } from 'node:child_process';
|
|
17
17
|
import { createHash } from 'node:crypto';
|
|
18
|
+
import { KINDGI_ACCESS_ORIGIN } from '../license/protocol.js';
|
|
18
19
|
import { lineReader } from './lines.js';
|
|
19
|
-
import { textLines } from './log-view.js';
|
|
20
|
+
import { parseRecord, textLines } from './log-view.js';
|
|
20
21
|
import { RUNTIME_EXPORT_SIGNING_KEY, RUNTIME_GOOGLE_CREDENTIALS, RUNTIME_PACK_DIR, RUNTIME_PUBLIC_TOKEN_KEY, } from './runtime-env.js';
|
|
22
|
+
import { registryOf } from './runtime-image.js';
|
|
21
23
|
import { credentialHelperFailure, credentialHelperHint, isRegistryAuthFailure, registryLoginCommand, } from './runtime-registry.js';
|
|
24
|
+
import { NO_START_PHASES, formatSize } from './start-phases.js';
|
|
22
25
|
/** The port the image's server listens on (its `KINDGI_API_PORT`). */
|
|
23
26
|
export const IMAGE_API_PORT = 4000;
|
|
24
27
|
/** Run one `docker` command to completion. */
|
|
@@ -26,17 +29,27 @@ export function docker(args, options = {}) {
|
|
|
26
29
|
return new Promise((resolve) => {
|
|
27
30
|
const child = spawn('docker', args, {
|
|
28
31
|
stdio: [options.stdin === undefined ? 'ignore' : 'pipe', 'pipe', 'pipe'],
|
|
32
|
+
...(options.signal !== undefined && { signal: options.signal }),
|
|
29
33
|
});
|
|
30
34
|
let stdout = '';
|
|
31
35
|
let stderr = '';
|
|
36
|
+
const onLine = options.onLine;
|
|
37
|
+
const outLines = onLine === undefined ? undefined : lineReader(onLine);
|
|
38
|
+
const errLines = onLine === undefined ? undefined : lineReader(onLine);
|
|
32
39
|
child.stdout?.on('data', (chunk) => {
|
|
33
40
|
stdout += chunk.toString();
|
|
41
|
+
outLines?.push(chunk.toString());
|
|
34
42
|
});
|
|
35
43
|
child.stderr?.on('data', (chunk) => {
|
|
36
44
|
stderr += chunk.toString();
|
|
45
|
+
errLines?.push(chunk.toString());
|
|
37
46
|
});
|
|
38
47
|
child.once('error', (err) => resolve({ code: null, stdout, stderr: err.message }));
|
|
39
|
-
child.once('close', (code) =>
|
|
48
|
+
child.once('close', (code) => {
|
|
49
|
+
outLines?.end();
|
|
50
|
+
errLines?.end();
|
|
51
|
+
resolve({ code, stdout, stderr });
|
|
52
|
+
});
|
|
40
53
|
if (options.stdin !== undefined) {
|
|
41
54
|
// `docker` may exit without reading it (a bad flag, or no `docker`
|
|
42
55
|
// at all): the write's EPIPE is reported by the exit, not thrown.
|
|
@@ -83,34 +96,218 @@ export function runtimeContainerName(packDir) {
|
|
|
83
96
|
return `kindgi-dev-runtime-${createHash('sha256').update(packDir).digest('hex').slice(0, 12)}`;
|
|
84
97
|
}
|
|
85
98
|
/**
|
|
86
|
-
* Make sure the image is here, pulling it if not
|
|
87
|
-
*
|
|
99
|
+
* Make sure the image is here, pulling it if not: the pull is a phase,
|
|
100
|
+
* said at once, with how much has come as each layer arrives. The image's
|
|
101
|
+
* size comes from its manifest, read beside the pull (it never waits on
|
|
102
|
+
* the registry's answer) and given up when the pull ends. A private image
|
|
103
|
+
* needs a registry login first (`kindgi auth registry`); the error says so.
|
|
88
104
|
*/
|
|
89
|
-
export async function ensureRuntimeImage(image,
|
|
105
|
+
export async function ensureRuntimeImage(image, phases = NO_START_PHASES) {
|
|
90
106
|
const present = await docker(['image', 'inspect', '--format', '{{.Id}}', image]);
|
|
91
107
|
if (present.code === 0)
|
|
92
108
|
return { kind: 'ok' };
|
|
93
109
|
if (present.code === null) {
|
|
94
110
|
return { kind: 'error', message: `Docker isn't available: ${present.stderr}` };
|
|
95
111
|
}
|
|
96
|
-
|
|
97
|
-
const
|
|
98
|
-
|
|
112
|
+
phases.begin('pull', `${image} (first run only)`);
|
|
113
|
+
const progress = pullProgress();
|
|
114
|
+
const manifestRead = new AbortController();
|
|
115
|
+
void imageLayers(image, manifestRead.signal)
|
|
116
|
+
.then((layers) => {
|
|
117
|
+
if (layers !== undefined && !manifestRead.signal.aborted) {
|
|
118
|
+
phases.progress('pull', progress.sized(layers));
|
|
119
|
+
}
|
|
120
|
+
})
|
|
121
|
+
// It can't reject today (`docker` reports, never throws); an unhandled rejection would end the CLI.
|
|
122
|
+
.catch(() => undefined);
|
|
123
|
+
const pulled = await docker(['pull', image], {
|
|
124
|
+
onLine: (line) => {
|
|
125
|
+
const note = progress.take(line);
|
|
126
|
+
if (note !== undefined)
|
|
127
|
+
phases.progress('pull', note);
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
manifestRead.abort();
|
|
131
|
+
if (pulled.code === 0) {
|
|
132
|
+
const total = progress.totalBytes();
|
|
133
|
+
phases.end('pull', total > 0 ? formatSize(total) : undefined);
|
|
99
134
|
return { kind: 'ok' };
|
|
135
|
+
}
|
|
100
136
|
const detail = dockerFailureDetail(pulled.stderr);
|
|
101
137
|
const helper = credentialHelperFailure(pulled.stderr);
|
|
102
138
|
const auth = helper !== undefined
|
|
103
139
|
? `\n ${credentialHelperHint(helper.helper)}`
|
|
104
140
|
: isRegistryAuthFailure(pulled.stderr)
|
|
105
|
-
? `\n The runtime image
|
|
141
|
+
? `\n The runtime image needs a pull credential: sign in with GitHub at ${KINDGI_ACCESS_ORIGIN} for one, log in (${registryLoginCommand(image)}), then run kindgi dev again.`
|
|
106
142
|
: '';
|
|
107
143
|
return { kind: 'error', message: `Couldn't pull ${image}: ${detail}${auth}` };
|
|
108
144
|
}
|
|
145
|
+
/** How long a registry gets to answer for the image's manifest (the pull goes on meanwhile). */
|
|
146
|
+
const MANIFEST_TIMEOUT_MS = 15_000;
|
|
147
|
+
/**
|
|
148
|
+
* The layers `docker pull` will fetch for this machine, from the image's
|
|
149
|
+
* manifest (`docker manifest inspect --verbose`, a registry read that
|
|
150
|
+
* stores nothing); `undefined` when the registry doesn't say, or for a
|
|
151
|
+
* Docker Hub image, whose manifest reads count against its pull limit.
|
|
152
|
+
*/
|
|
153
|
+
async function imageLayers(image, stop) {
|
|
154
|
+
if (registryOf(image) === 'docker.io')
|
|
155
|
+
return undefined;
|
|
156
|
+
const signal = AbortSignal.any([stop, AbortSignal.timeout(MANIFEST_TIMEOUT_MS)]);
|
|
157
|
+
const platform = await docker(['version', '--format', '{{.Server.Os}}/{{.Server.Arch}}'], {
|
|
158
|
+
signal,
|
|
159
|
+
});
|
|
160
|
+
if (platform.code !== 0)
|
|
161
|
+
return undefined;
|
|
162
|
+
const manifest = await docker(['manifest', 'inspect', '--verbose', image], { signal });
|
|
163
|
+
if (manifest.code !== 0)
|
|
164
|
+
return undefined;
|
|
165
|
+
return manifestLayers(manifest.stdout, platform.stdout.trim());
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The layers for `platform` (`linux/arm64`) in `docker manifest inspect
|
|
169
|
+
* --verbose`'s output: one entry per platform for an index (attestations,
|
|
170
|
+
* `unknown/unknown`, are skipped), or one manifest.
|
|
171
|
+
*/
|
|
172
|
+
export function manifestLayers(json, platform) {
|
|
173
|
+
let parsed;
|
|
174
|
+
try {
|
|
175
|
+
parsed = JSON.parse(json);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
const entries = (Array.isArray(parsed) ? parsed : [parsed]).filter(isObject);
|
|
181
|
+
const [os, architecture] = platform.split('/');
|
|
182
|
+
// One manifest is this machine's; an index's entries name theirs.
|
|
183
|
+
const entry = entries.length === 1
|
|
184
|
+
? entries[0]
|
|
185
|
+
: entries.find((e) => {
|
|
186
|
+
const p = isObject(e.Descriptor) && isObject(e.Descriptor.platform) ? e.Descriptor.platform : {};
|
|
187
|
+
return p.os === os && p.architecture === architecture;
|
|
188
|
+
});
|
|
189
|
+
return entry === undefined ? undefined : layersOf(entry);
|
|
190
|
+
}
|
|
191
|
+
/** A verbose manifest entry's layers, when each has a digest and a size. */
|
|
192
|
+
function layersOf(entry) {
|
|
193
|
+
const manifest = entry.SchemaV2Manifest ?? entry.OCIManifest;
|
|
194
|
+
const layers = isObject(manifest) ? manifest.layers : undefined;
|
|
195
|
+
if (!Array.isArray(layers) || layers.length === 0)
|
|
196
|
+
return undefined;
|
|
197
|
+
const out = [];
|
|
198
|
+
for (const layer of layers) {
|
|
199
|
+
if (!isObject(layer) || typeof layer.digest !== 'string' || typeof layer.size !== 'number') {
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
out.push({ digest: layer.digest, size: layer.size });
|
|
203
|
+
}
|
|
204
|
+
return out;
|
|
205
|
+
}
|
|
206
|
+
function isObject(value) {
|
|
207
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
208
|
+
}
|
|
209
|
+
/** A pull's line saying a layer is in: its 12-character id. */
|
|
210
|
+
const LAYER_IN = /^([0-9a-f]{12}): (?:Download complete|Pull complete|Already exists)\s*$/;
|
|
211
|
+
/**
|
|
212
|
+
* A pull's progress from its lines: without a terminal, `docker pull`
|
|
213
|
+
* prints no byte counts, only a line as each layer arrives, so the bytes
|
|
214
|
+
* so far are the sizes of the layers in, once the manifest has said them
|
|
215
|
+
* (until then, layers are counted). `take` answers a line that moved it,
|
|
216
|
+
* and `sized` the manifest's layers, with the progress as words.
|
|
217
|
+
*/
|
|
218
|
+
export function pullProgress() {
|
|
219
|
+
const sizes = new Map();
|
|
220
|
+
const done = new Set();
|
|
221
|
+
const total = () => [...sizes.values()].reduce((sum, n) => sum + n, 0);
|
|
222
|
+
const note = () => {
|
|
223
|
+
if (sizes.size === 0)
|
|
224
|
+
return `${done.size} ${done.size === 1 ? 'layer' : 'layers'} in`;
|
|
225
|
+
if (done.size === 0)
|
|
226
|
+
return `${formatSize(total())} in ${sizes.size} layers`;
|
|
227
|
+
let bytes = 0;
|
|
228
|
+
for (const d of done)
|
|
229
|
+
bytes += sizes.get(d) ?? 0;
|
|
230
|
+
return `${formatSize(bytes)} of ${formatSize(total())}, ${Math.min(done.size, sizes.size)} of ${sizes.size} layers`;
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
take(line) {
|
|
234
|
+
const id = LAYER_IN.exec(line.replace(/^.*\r/, ''))?.[1];
|
|
235
|
+
if (id === undefined || done.has(id))
|
|
236
|
+
return undefined;
|
|
237
|
+
done.add(id);
|
|
238
|
+
return note();
|
|
239
|
+
},
|
|
240
|
+
sized(layers) {
|
|
241
|
+
for (const layer of layers) {
|
|
242
|
+
sizes.set(layer.digest.replace(/^sha256:/, '').slice(0, 12), layer.size);
|
|
243
|
+
}
|
|
244
|
+
return note();
|
|
245
|
+
},
|
|
246
|
+
totalBytes: total,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/** The label naming the `kindgi dev` that started a runtime container. */
|
|
250
|
+
export const RUNTIME_OWNER_LABEL = 'kindgi.dev.owner';
|
|
251
|
+
/**
|
|
252
|
+
* The owner named by an existing container's label when it's another
|
|
253
|
+
* `kindgi dev` that is still alive, whether the container runs or not
|
|
254
|
+
* (it's stopped between its create and start, and while its owner reads
|
|
255
|
+
* why it stopped: no `--rm`); `undefined` when it may be replaced:
|
|
256
|
+
* unlabeled (an older CLI's), this `kindgi dev`'s own, or its owner gone.
|
|
257
|
+
*/
|
|
258
|
+
export async function ownedElsewhere(label, self) {
|
|
259
|
+
// Whole: the owner holds the process's start time, which has spaces.
|
|
260
|
+
const owner = label.trim();
|
|
261
|
+
if (owner === '' || owner === '<no value>' || owner === self.owner)
|
|
262
|
+
return undefined;
|
|
263
|
+
return (await self.ownerIsLive?.(owner)) === true ? owner : undefined;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Clear the way for this pack's runtime container: one left by an earlier
|
|
267
|
+
* `kindgi dev` of this pack (a crashed session) is removed, but never one
|
|
268
|
+
* another live `kindgi dev` owns (its lock was skipped: an older CLI, a
|
|
269
|
+
* lock removed by hand), which throws `RuntimeOwnedElsewhere` and is left
|
|
270
|
+
* as it is. The port check and the start both go through here. It removes
|
|
271
|
+
* by the id it checked, never by the name, which another could reuse.
|
|
272
|
+
*/
|
|
273
|
+
export async function removeReplaceableRuntimeContainer(name, self) {
|
|
274
|
+
const run = self.docker ?? docker;
|
|
275
|
+
const existing = await run([
|
|
276
|
+
'inspect',
|
|
277
|
+
'--format',
|
|
278
|
+
`{{.Id}} {{index .Config.Labels "${RUNTIME_OWNER_LABEL}"}}`,
|
|
279
|
+
name,
|
|
280
|
+
]);
|
|
281
|
+
if (existing.code !== 0)
|
|
282
|
+
return;
|
|
283
|
+
// The id has no spaces; the rest is the label, whole.
|
|
284
|
+
const line = existing.stdout.trim();
|
|
285
|
+
const space = line.indexOf(' ');
|
|
286
|
+
const id = space === -1 ? line : line.slice(0, space);
|
|
287
|
+
const owner = await ownedElsewhere(space === -1 ? '' : line.slice(space + 1), self);
|
|
288
|
+
if (owner !== undefined)
|
|
289
|
+
throw new RuntimeOwnedElsewhere(name, owner);
|
|
290
|
+
await run(['rm', '--force', id]);
|
|
291
|
+
}
|
|
292
|
+
/** This pack's runtime container runs for another `kindgi dev`, still alive: it isn't touched. */
|
|
293
|
+
export class RuntimeOwnedElsewhere extends Error {
|
|
294
|
+
container;
|
|
295
|
+
owner;
|
|
296
|
+
constructor(container, owner) {
|
|
297
|
+
const pid = owner.split('@')[0];
|
|
298
|
+
super(`this pack's runtime container (${container}) belongs to another kindgi dev (pid ${pid}), still running`);
|
|
299
|
+
this.container = container;
|
|
300
|
+
this.owner = owner;
|
|
301
|
+
this.name = 'RuntimeOwnedElsewhere';
|
|
302
|
+
}
|
|
303
|
+
}
|
|
109
304
|
/** The `docker run` arguments for the runtime container. */
|
|
110
305
|
export function runtimeRunArgs(name, options) {
|
|
111
306
|
// No --rm: a container that stops while starting is read (its logs, how
|
|
112
307
|
// it exited) before kindgi dev removes it; `stop` removes it too.
|
|
113
308
|
const args = ['run', '--detach', '--name', name, '--env-file', options.envFile];
|
|
309
|
+
if (options.owner !== undefined)
|
|
310
|
+
args.push('--label', `${RUNTIME_OWNER_LABEL}=${options.owner}`);
|
|
114
311
|
args.push('--volume', `${options.packDir}:${RUNTIME_PACK_DIR}`);
|
|
115
312
|
if (options.googleCredentials !== undefined) {
|
|
116
313
|
args.push('--volume', `${options.googleCredentials}:${RUNTIME_GOOGLE_CREDENTIALS}:ro`);
|
|
@@ -175,18 +372,30 @@ const PACK_DIR_BANNER = ` Pack: ${RUNTIME_PACK_DIR} `;
|
|
|
175
372
|
* container for the same pack (a crashed session) is replaced.
|
|
176
373
|
*/
|
|
177
374
|
export async function startRuntimeContainer(options, wait = {}) {
|
|
375
|
+
const run = options.docker ?? docker;
|
|
178
376
|
const name = runtimeContainerName(options.packDir);
|
|
179
|
-
|
|
180
|
-
|
|
377
|
+
const phases = options.phases ?? NO_START_PHASES;
|
|
378
|
+
phases.begin('container');
|
|
379
|
+
await removeReplaceableRuntimeContainer(name, options);
|
|
380
|
+
const started = await run(runtimeRunArgs(name, options));
|
|
181
381
|
if (started.code !== 0) {
|
|
182
382
|
throw new Error(`docker run failed: ${dockerFailureDetail(started.stderr)}`);
|
|
183
383
|
}
|
|
384
|
+
// From here on, the container this run started, by its id (`--detach`
|
|
385
|
+
// prints it): never the name, which another kindgi dev could reuse for
|
|
386
|
+
// a container of its own.
|
|
387
|
+
const id = started.stdout.trim().split('\n').pop()?.trim() ?? '';
|
|
388
|
+
if (!/^[0-9a-f]{12,64}$/.test(id)) {
|
|
389
|
+
throw new Error(`docker run printed no container id: ${lastLines(started.stdout)}`);
|
|
390
|
+
}
|
|
391
|
+
phases.end('container');
|
|
392
|
+
phases.begin('serve');
|
|
184
393
|
// The runtime's latest lines as text (a record as its pretty line, the
|
|
185
394
|
// JSON boot record as its banner lines), enough for the boot wait and a
|
|
186
395
|
// failure's tail: a long session's lines aren't kept (they're shown as
|
|
187
396
|
// they come).
|
|
188
397
|
const lines = [];
|
|
189
|
-
let logs = spawn('docker', ['logs', '--follow',
|
|
398
|
+
let logs = spawn('docker', ['logs', '--follow', id], {
|
|
190
399
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
191
400
|
});
|
|
192
401
|
const reader = (stream) => lineReader((line) => {
|
|
@@ -198,7 +407,12 @@ export async function startRuntimeContainer(options, wait = {}) {
|
|
|
198
407
|
lines.push(...textLines(line));
|
|
199
408
|
if (lines.length > KEPT_LINES)
|
|
200
409
|
lines.splice(0, lines.length - KEPT_LINES);
|
|
201
|
-
|
|
410
|
+
// The runtime's migration records are the migrating phase's start and end.
|
|
411
|
+
const stage = migrationStage(line);
|
|
412
|
+
if (stage === undefined)
|
|
413
|
+
options.onLog(line, stream);
|
|
414
|
+
else
|
|
415
|
+
migrationPhase(stage, phases);
|
|
202
416
|
});
|
|
203
417
|
const out = reader('stdout');
|
|
204
418
|
const err = reader('stderr');
|
|
@@ -217,8 +431,8 @@ export async function startRuntimeContainer(options, wait = {}) {
|
|
|
217
431
|
};
|
|
218
432
|
const stop = async () => {
|
|
219
433
|
stopFollowing();
|
|
220
|
-
await
|
|
221
|
-
await
|
|
434
|
+
await run(['stop', '--time', '10', id]);
|
|
435
|
+
await run(['rm', '--force', id]);
|
|
222
436
|
};
|
|
223
437
|
const baseUrl = `http://127.0.0.1:${options.hostPort}`;
|
|
224
438
|
const doFetch = wait.fetch ?? fetch;
|
|
@@ -227,7 +441,7 @@ export async function startRuntimeContainer(options, wait = {}) {
|
|
|
227
441
|
if (options.signal?.aborted === true) {
|
|
228
442
|
// It hasn't served anything: removed at once, not stopped gracefully.
|
|
229
443
|
stopFollowing();
|
|
230
|
-
await
|
|
444
|
+
await run(['rm', '--force', id]);
|
|
231
445
|
throw new RuntimeStartStopped();
|
|
232
446
|
}
|
|
233
447
|
const healthy = await doFetch(`${baseUrl}/health`, { signal: AbortSignal.timeout(2_000) })
|
|
@@ -236,10 +450,10 @@ export async function startRuntimeContainer(options, wait = {}) {
|
|
|
236
450
|
// Serving, and its banner printed (the pack line comes after the URL).
|
|
237
451
|
if (healthy && lines.some((l) => l.startsWith(PACK_DIR_BANNER)))
|
|
238
452
|
break;
|
|
239
|
-
const running = await
|
|
453
|
+
const running = await run(['inspect', '--format', '{{.State.Running}}', id]);
|
|
240
454
|
if (running.code !== 0 || running.stdout.trim() !== 'true') {
|
|
241
455
|
stopFollowing();
|
|
242
|
-
throw await startupFailure(
|
|
456
|
+
throw await startupFailure(id, lines, run);
|
|
243
457
|
}
|
|
244
458
|
const hopeless = waitingWontHelp(options.image, lines, deadline);
|
|
245
459
|
if (hopeless !== undefined) {
|
|
@@ -248,7 +462,25 @@ export async function startRuntimeContainer(options, wait = {}) {
|
|
|
248
462
|
}
|
|
249
463
|
await pauseUnlessStopped(250, options.signal);
|
|
250
464
|
}
|
|
251
|
-
return { name, baseUrl, banner: lines.join('\n'), stop };
|
|
465
|
+
return { name, id, baseUrl, banner: lines.join('\n'), stop };
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Whether a runtime line is one of its migration records: `start` before
|
|
469
|
+
* it applies the database's migrations, `done` after. A runtime that
|
|
470
|
+
* writes none (older images) never shows a migrating phase.
|
|
471
|
+
*/
|
|
472
|
+
export function migrationStage(line) {
|
|
473
|
+
const record = parseRecord(line);
|
|
474
|
+
if (record?.subsystem !== 'migrations')
|
|
475
|
+
return undefined;
|
|
476
|
+
return record.stage === 'start' || record.stage === 'done' ? record.stage : undefined;
|
|
477
|
+
}
|
|
478
|
+
/** Migrating begins at its `start` record; its `done` ends it, and waiting for it to serve goes on. */
|
|
479
|
+
function migrationPhase(stage, phases) {
|
|
480
|
+
if (stage === 'start')
|
|
481
|
+
phases.begin('migrate');
|
|
482
|
+
else if (phases.end('migrate'))
|
|
483
|
+
phases.begin('serve');
|
|
252
484
|
}
|
|
253
485
|
/** Why waiting longer for a running container won't help, if it won't. */
|
|
254
486
|
function waitingWontHelp(image, lines, deadline) {
|
|
@@ -267,9 +499,9 @@ function waitingWontHelp(image, lines, deadline) {
|
|
|
267
499
|
* (one that exits at once can stop before `docker logs --follow`
|
|
268
500
|
* attaches), then removed.
|
|
269
501
|
*/
|
|
270
|
-
async function startupFailure(
|
|
271
|
-
const stopped = await stoppedContainer(
|
|
272
|
-
await
|
|
502
|
+
async function startupFailure(id, followed, run) {
|
|
503
|
+
const stopped = await stoppedContainer(id, run);
|
|
504
|
+
await run(['rm', '--force', id]);
|
|
273
505
|
return new Error(describeStartupStop(stopped.lines.length > 0 ? stopped.lines : followed, stopped.exit));
|
|
274
506
|
}
|
|
275
507
|
/**
|
|
@@ -300,10 +532,10 @@ function describeExit(exit) {
|
|
|
300
532
|
return ` (exit code ${exit.code}${meaning}${error})`;
|
|
301
533
|
}
|
|
302
534
|
/** A stopped container's whole log, in the order it was written, and how it exited. */
|
|
303
|
-
async function stoppedContainer(
|
|
535
|
+
async function stoppedContainer(id, run) {
|
|
304
536
|
const logLines = await new Promise((resolve) => {
|
|
305
537
|
const out = [];
|
|
306
|
-
const child = spawn('docker', ['logs',
|
|
538
|
+
const child = spawn('docker', ['logs', id], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
307
539
|
const onChunk = (chunk) => {
|
|
308
540
|
for (const line of chunk.toString().split('\n')) {
|
|
309
541
|
if (line !== '' && !line.startsWith(DOCKER_DAEMON_ERROR))
|
|
@@ -315,11 +547,11 @@ async function stoppedContainer(name) {
|
|
|
315
547
|
child.on('error', () => resolve(out));
|
|
316
548
|
child.on('close', () => resolve(out));
|
|
317
549
|
});
|
|
318
|
-
const state = await
|
|
550
|
+
const state = await run([
|
|
319
551
|
'inspect',
|
|
320
552
|
'--format',
|
|
321
553
|
'{{.State.ExitCode}}|{{.State.OOMKilled}}|{{.State.Error}}',
|
|
322
|
-
|
|
554
|
+
id,
|
|
323
555
|
]);
|
|
324
556
|
if (state.code !== 0)
|
|
325
557
|
return { lines: logLines, exit: {} };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-container.js","sourceRoot":"","sources":["../../src/dev/runtime-container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-container.js","sourceRoot":"","sources":["../../src/dev/runtime-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
* Pinned by digest, not tag: Docker doesn't re-pull a tag it already has, so
|
|
7
7
|
* a tag would leave anyone with an older pull on an older runtime.
|
|
8
8
|
*
|
|
9
|
-
* The image is
|
|
10
|
-
*
|
|
9
|
+
* The image is on Quay. A pull credential (a robot name and a token) comes
|
|
10
|
+
* from signing in with GitHub at access.kindgi.com (`KINDGI_ACCESS_ORIGIN`),
|
|
11
|
+
* then `kindgi auth registry --username <name>`.
|
|
11
12
|
*/
|
|
12
|
-
export declare const DEFAULT_RUNTIME_IMAGE = "quay.io/kindgi/runtime:0.1.
|
|
13
|
+
export declare const DEFAULT_RUNTIME_IMAGE = "quay.io/kindgi/runtime:0.1.7@sha256:442e3232adf13830868b309390a2cbf74cb1f3538e7efbe3166fad925a10984c";
|
|
13
14
|
/**
|
|
14
15
|
* The registry an image reference is pulled from, read the way Docker
|
|
15
16
|
* reads it: the first path component when it names a host (it has a `.`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-image.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-image.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"runtime-image.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-image.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,yGACsE,CAAC;AAKzG;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,QAAoC,CAAC;AAExE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOvE"}
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
* Pinned by digest, not tag: Docker doesn't re-pull a tag it already has, so
|
|
9
9
|
* a tag would leave anyone with an older pull on an older runtime.
|
|
10
10
|
*
|
|
11
|
-
* The image is
|
|
12
|
-
*
|
|
11
|
+
* The image is on Quay. A pull credential (a robot name and a token) comes
|
|
12
|
+
* from signing in with GitHub at access.kindgi.com (`KINDGI_ACCESS_ORIGIN`),
|
|
13
|
+
* then `kindgi auth registry --username <name>`.
|
|
13
14
|
*/
|
|
14
|
-
export const DEFAULT_RUNTIME_IMAGE = 'quay.io/kindgi/runtime:0.1.
|
|
15
|
+
export const DEFAULT_RUNTIME_IMAGE = 'quay.io/kindgi/runtime:0.1.7@sha256:442e3232adf13830868b309390a2cbf74cb1f3538e7efbe3166fad925a10984c';
|
|
15
16
|
/** Docker Hub, the registry of a reference that names none (`busybox`, `library/busybox`). */
|
|
16
17
|
const DOCKER_HUB = 'docker.io';
|
|
17
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-image.js","sourceRoot":"","sources":["../../src/dev/runtime-image.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC
|
|
1
|
+
{"version":3,"file":"runtime-image.js","sourceRoot":"","sources":["../../src/dev/runtime-image.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,sGAAsG,CAAC;AAEzG,8FAA8F;AAC9F,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;AAClG,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,QAAgB;IAC7D,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzD,sDAAsD;IACtD,OAAO,GAAG,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnF,CAAC"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Docker's access to the registry the Kindgi runtime image comes from, for
|
|
3
|
-
* `kindgi auth registry`: `docker login` (the credential goes to Docker's
|
|
4
|
-
* own credential store; Kindgi keeps no copy), then a check that the
|
|
5
|
-
* pinned image can be pulled.
|
|
6
|
-
*
|
|
7
|
-
* Every step runs `docker` through the runner `kindgi dev` uses
|
|
8
|
-
* (`runtime-container.ts`), handed in, so tests pass a fake.
|
|
9
|
-
*/
|
|
10
1
|
import type { DockerRunner } from './runtime-container.js';
|
|
11
2
|
/** Whether `docker` output says the registry refused the credentials (or their absence). */
|
|
12
3
|
export declare function isRegistryAuthFailure(output: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-registry.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-registry.d.ts","sourceRoot":"","sources":["../../src/dev/runtime-registry.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO1E,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAUD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIhG;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGvE;AAED,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AAWD,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,uFAAuF;AACvF,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAezE;AAED,MAAM,MAAM,aAAa,GACrB;IACE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED,+FAA+F;AAC/F,MAAM,MAAM,YAAY,GAAG,kCAAkC,GAAG,yBAAyB,CAAC;AAE1F,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACxD,2EAA2E;GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACxF;;;;GAIG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CAC/B;AACH,yFAAyF;GACvF;IACE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AACH,kEAAkE;GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAK1D;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAa7F;AAiBD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Docker's access to the registry the Kindgi runtime image comes from, for
|
|
5
|
+
* `kindgi auth registry`: `docker login` (the credential goes to Docker's
|
|
6
|
+
* own credential store; Kindgi keeps no copy), then a check that the
|
|
7
|
+
* pinned image can be pulled.
|
|
8
|
+
*
|
|
9
|
+
* Every step runs `docker` through the runner `kindgi dev` uses
|
|
10
|
+
* (`runtime-container.ts`), handed in, so tests pass a fake.
|
|
11
|
+
*/
|
|
12
|
+
import { KINDGI_ACCESS_ORIGIN } from '../license/protocol.js';
|
|
3
13
|
import { RUNTIME_IMAGE_REGISTRY, registryOf } from './runtime-image.js';
|
|
4
14
|
/** How a registry, or Docker relaying it, refuses credentials or access. */
|
|
5
15
|
const AUTH_FAILURE = /unauthorized|denied|forbidden|authentication required|insufficient_scope|no basic auth credentials/i;
|
|
@@ -33,7 +43,7 @@ export function credentialHelperHint(helper) {
|
|
|
33
43
|
export function registryLoginCommand(image) {
|
|
34
44
|
const registry = registryOf(image);
|
|
35
45
|
const other = registry === RUNTIME_IMAGE_REGISTRY ? '' : ` --registry ${registry}`;
|
|
36
|
-
return `kindgi auth registry --username <
|
|
46
|
+
return `kindgi auth registry --username <your robot name>${other}`;
|
|
37
47
|
}
|
|
38
48
|
/** The end of what `docker` wrote to stderr, with `secret` (the token) blanked out. */
|
|
39
49
|
function detail(outcome, secret) {
|
|
@@ -76,7 +86,7 @@ export async function dockerLogin(run, registry, username, token) {
|
|
|
76
86
|
const refused = helper !== undefined
|
|
77
87
|
? `\n ${credentialHelperHint(helper.helper)}`
|
|
78
88
|
: isRegistryAuthFailure(login.stderr)
|
|
79
|
-
? `\n Check the username and the token.${registry === RUNTIME_IMAGE_REGISTRY ?
|
|
89
|
+
? `\n Check the username and the token.${registry === RUNTIME_IMAGE_REGISTRY ? ` Signing in at ${KINDGI_ACCESS_ORIGIN} shows both.` : ''}`
|
|
80
90
|
: '';
|
|
81
91
|
return {
|
|
82
92
|
kind: 'error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-registry.js","sourceRoot":"","sources":["../../src/dev/runtime-registry.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"runtime-registry.js","sourceRoot":"","sources":["../../src/dev/runtime-registry.ts"],"names":[],"mappings":"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"}
|