@kal-elsam/kairo-runtime 0.4.0 → 0.4.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kal-elsam/kairo-runtime",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Kairo Runtime — local agent operating system for Codex, Cursor, Claude, Gemini, Copilot, Engram, and Graphify.",
5
5
  "type": "module",
6
6
  "homepage": "https://github.com/Kal-elSam/harness#readme",
@@ -25,7 +25,7 @@ const root = join(dirname(fileURLToPath(import.meta.url)), "..");
25
25
  const require = createRequire(import.meta.url);
26
26
  const pkg = require(join(root, "package.json"));
27
27
 
28
- assert.equal(pkg.version, "0.4.0");
28
+ assert.equal(pkg.version, "0.4.1");
29
29
  assert.ok(pkg.dependencies["ansi-escapes"]);
30
30
 
31
31
  assert.equal(resolveLayoutMode({ columns: 120, rows: 40 }), LAYOUT_MODES.WIDE);
@@ -71,7 +71,7 @@ export function resolveProjectReadiness({
71
71
  const intelConfigured = hasIntelligenceConfigured(diagnostics);
72
72
  const summaryLine = `${agentsReady} agents ready · ${detected} detected · ${activeRuns} active runs`;
73
73
 
74
- if (!hasGlobalState || detected === 0) {
74
+ if (!hasGlobalState || (launchableCount === 0 && detected === 0)) {
75
75
  return {
76
76
  kind: READINESS_KINDS.NEEDS_SETUP,
77
77
  label: READINESS_LABELS[READINESS_KINDS.NEEDS_SETUP],
@@ -126,9 +126,9 @@ export function resolveProjectReadiness({
126
126
 
127
127
  /**
128
128
  * Contextual next step from existing diagnostics + dashboard snapshot.
129
- * Priority: configure review when blocked → launch when launchable →
130
- * enable intelligence → review.
131
- * Launchable agents win over missing optional intelligence.
129
+ * Priority: configure without state → launch when launchable → configure when
130
+ * nothing detected → review when blocked → enable intelligence → review.
131
+ * Launchable agents win over missing optional intelligence and empty detected counts.
132
132
  */
133
133
  export function resolveDashboardRecommendation({
134
134
  hasGlobalState = false,
@@ -140,7 +140,7 @@ export function resolveDashboardRecommendation({
140
140
  const launchableCount = countLaunchableAgents(dashboard);
141
141
  const blocked = hasBlockingDiagnostics(diagnostics);
142
142
 
143
- if (!hasGlobalState || (summary.detected ?? 0) === 0) {
143
+ if (!hasGlobalState) {
144
144
  return {
145
145
  kind: NEXT_STEP_KINDS.CONFIGURE,
146
146
  title: "Finish local setup",
@@ -151,17 +151,6 @@ export function resolveDashboardRecommendation({
151
151
  };
152
152
  }
153
153
 
154
- if (blocked && launchableCount === 0) {
155
- return {
156
- kind: NEXT_STEP_KINDS.REVIEW,
157
- title: "Review system health",
158
- message: "Review System health for problems before launching a run.",
159
- detail: "Fix agent or configuration issues, then try again.",
160
- targetView: RECOMMENDATION_TARGETS.DIAGNOSTICS,
161
- targetAction: null
162
- };
163
- }
164
-
165
154
  if (launchableCount > 0) {
166
155
  return {
167
156
  kind: NEXT_STEP_KINDS.LAUNCH,
@@ -173,6 +162,28 @@ export function resolveDashboardRecommendation({
173
162
  };
174
163
  }
175
164
 
165
+ if ((summary.detected ?? 0) === 0) {
166
+ return {
167
+ kind: NEXT_STEP_KINDS.CONFIGURE,
168
+ title: "Finish local setup",
169
+ message: `Configure the local environment with ${formatCliCommand("setup")}.`,
170
+ detail: "Open System health to review what Kairo detected.",
171
+ targetView: RECOMMENDATION_TARGETS.DIAGNOSTICS,
172
+ targetAction: null
173
+ };
174
+ }
175
+
176
+ if (blocked && launchableCount === 0) {
177
+ return {
178
+ kind: NEXT_STEP_KINDS.REVIEW,
179
+ title: "Review system health",
180
+ message: "Review System health for problems before launching a run.",
181
+ detail: "Fix agent or configuration issues, then try again.",
182
+ targetView: RECOMMENDATION_TARGETS.DIAGNOSTICS,
183
+ targetAction: null
184
+ };
185
+ }
186
+
176
187
  if (!intelligence?.localAvailable && !intelligence?.cloudAuthenticated) {
177
188
  return {
178
189
  kind: NEXT_STEP_KINDS.ENABLE_INTELLIGENCE,