@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 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.29.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.29.0",
22
- "@vincemakes/kiso-core": "0.29.0",
23
- "@vincemakes/kiso-evals": "0.29.0",
24
- "@vincemakes/kiso-mcp-ext": "0.29.0",
25
- "@vincemakes/kiso-provider-anthropic": "0.29.0",
26
- "@vincemakes/kiso-provider-openai": "0.29.0",
27
- "@vincemakes/kiso-runtime": "0.29.0",
28
- "@vincemakes/kiso-skills-ext": "0.29.0",
29
- "@vincemakes/kiso-subagent-ext": "0.29.0",
30
- "@vincemakes/kiso-task-ext": "0.29.0",
31
- "@vincemakes/kiso-tools-node": "0.29.0",
32
- "@vincemakes/kiso-tui": "0.29.0",
33
- "@vincemakes/kiso-tui-cells": "0.29.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",