@vincemakes/kiso-code 0.29.0 → 0.30.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.
- package/dist/config.d.ts +5 -0
- package/dist/config.js +13 -0
- package/dist/index.js +4 -0
- package/package.json +14 -14
package/dist/config.d.ts
CHANGED
|
@@ -59,6 +59,11 @@ export interface KisoConfig {
|
|
|
59
59
|
* project file is a LOUD error rather than a silent win. `KISO_THEME`
|
|
60
60
|
* still outranks it — the environment is the more local answer. */
|
|
61
61
|
readonly theme?: "dark" | "light";
|
|
62
|
+
/** DT-1a: named acceptance checks a delegated task may reference —
|
|
63
|
+
* user-authored (or trust-gated project) commands, run by the PARENT
|
|
64
|
+
* in the child's worktree. A model never supplies a command; it names
|
|
65
|
+
* one of these. `{ "test": "npm test", "lint": "npm run lint" }`. */
|
|
66
|
+
readonly checks?: Readonly<Record<string, string>>;
|
|
62
67
|
}
|
|
63
68
|
/** The resolved, merged config — project wins over user, both validated. */
|
|
64
69
|
export interface ResolvedConfig {
|
package/dist/config.js
CHANGED
|
@@ -63,6 +63,17 @@ export function parseConfig(text, source) {
|
|
|
63
63
|
fail("theme", "belongs in the USER config — a terminal is a property of the person at it, not of the project");
|
|
64
64
|
out.theme = obj.theme;
|
|
65
65
|
}
|
|
66
|
+
if (obj.checks !== undefined) {
|
|
67
|
+
if (obj.checks === null || typeof obj.checks !== "object" || Array.isArray(obj.checks))
|
|
68
|
+
fail("checks", "expected an object of name → command");
|
|
69
|
+
for (const [name, cmd] of Object.entries(obj.checks)) {
|
|
70
|
+
if (!/^[A-Za-z0-9_-]+$/.test(name))
|
|
71
|
+
fail(`checks.${name}`, "a check name is letters, digits, _ or -");
|
|
72
|
+
if (typeof cmd !== "string" || cmd.trim() === "")
|
|
73
|
+
fail(`checks.${name}`, "expected a non-empty command string");
|
|
74
|
+
}
|
|
75
|
+
out.checks = obj.checks;
|
|
76
|
+
}
|
|
66
77
|
if (obj.model !== undefined) {
|
|
67
78
|
if (typeof obj.model !== "string" || obj.model === "")
|
|
68
79
|
fail("model", "expected a profile name or provider/model string");
|
|
@@ -162,6 +173,8 @@ export function mergeConfigs(user, project) {
|
|
|
162
173
|
...(p.autoCompact !== undefined ? { autoCompact: p.autoCompact } : {}),
|
|
163
174
|
...(u.projectTrust !== undefined ? { projectTrust: u.projectTrust } : {}),
|
|
164
175
|
...(p.projectTrust !== undefined ? { projectTrust: p.projectTrust } : {}),
|
|
176
|
+
// DT-1a: checks merge per name — a (trusted) project's check wins over the user's
|
|
177
|
+
...(u.checks !== undefined || p.checks !== undefined ? { checks: { ...(u.checks ?? {}), ...(p.checks ?? {}) } } : {}),
|
|
165
178
|
};
|
|
166
179
|
}
|
|
167
180
|
/** A profile is available when its apiKeyEnv var is set (the key exists). */
|
package/dist/index.js
CHANGED
|
@@ -590,6 +590,10 @@ async function makeAgent(sessionId, input, modelFlag) {
|
|
|
590
590
|
const projectCfg = loadProjectConfig(process.cwd(), project !== null);
|
|
591
591
|
const merged = mergeConfigs(userCfg, projectCfg);
|
|
592
592
|
setMergedConfig(merged);
|
|
593
|
+
// DT-1a: what a delegated task may NAME — the configured checks and the
|
|
594
|
+
// model profiles — handed to the (in-process) subagent extension through
|
|
595
|
+
// the environment. A model never supplies a command; it names a check.
|
|
596
|
+
process.env.KISO_DELEGATION_CONFIG_JSON = JSON.stringify({ checks: merged.checks ?? {}, profiles: Object.keys(merged.models ?? {}) });
|
|
593
597
|
setConfigModels(merged.models ?? {});
|
|
594
598
|
setConfiguredWindow(resolveContextWindow(merged));
|
|
595
599
|
const resolved = resolveModel(modelFlag, merged);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vincemakes/kiso-code",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "kiso CLI — the durable coding agent that survives kill -9: kiso chat / kiso resume / kiso sessions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,19 +18,19 @@
|
|
|
18
18
|
"test": "vitest run"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@vincemakes/kiso-ask-ext": "0.
|
|
22
|
-
"@vincemakes/kiso-core": "0.
|
|
23
|
-
"@vincemakes/kiso-evals": "0.
|
|
24
|
-
"@vincemakes/kiso-mcp-ext": "0.
|
|
25
|
-
"@vincemakes/kiso-provider-anthropic": "0.
|
|
26
|
-
"@vincemakes/kiso-provider-openai": "0.
|
|
27
|
-
"@vincemakes/kiso-runtime": "0.
|
|
28
|
-
"@vincemakes/kiso-skills-ext": "0.
|
|
29
|
-
"@vincemakes/kiso-subagent-ext": "0.
|
|
30
|
-
"@vincemakes/kiso-task-ext": "0.
|
|
31
|
-
"@vincemakes/kiso-tools-node": "0.
|
|
32
|
-
"@vincemakes/kiso-tui": "0.
|
|
33
|
-
"@vincemakes/kiso-tui-cells": "0.
|
|
21
|
+
"@vincemakes/kiso-ask-ext": "0.30.0",
|
|
22
|
+
"@vincemakes/kiso-core": "0.30.0",
|
|
23
|
+
"@vincemakes/kiso-evals": "0.30.0",
|
|
24
|
+
"@vincemakes/kiso-mcp-ext": "0.30.0",
|
|
25
|
+
"@vincemakes/kiso-provider-anthropic": "0.30.0",
|
|
26
|
+
"@vincemakes/kiso-provider-openai": "0.30.0",
|
|
27
|
+
"@vincemakes/kiso-runtime": "0.30.0",
|
|
28
|
+
"@vincemakes/kiso-skills-ext": "0.30.0",
|
|
29
|
+
"@vincemakes/kiso-subagent-ext": "0.30.0",
|
|
30
|
+
"@vincemakes/kiso-task-ext": "0.30.0",
|
|
31
|
+
"@vincemakes/kiso-tools-node": "0.30.0",
|
|
32
|
+
"@vincemakes/kiso-tui": "0.30.0",
|
|
33
|
+
"@vincemakes/kiso-tui-cells": "0.30.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^26.1.2",
|