@qloo/qloo-harness 0.1.20 → 0.1.21

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 CHANGED
@@ -83,6 +83,25 @@ qloo --version
83
83
  qloo
84
84
  ```
85
85
 
86
+ ### Uninstall
87
+
88
+ Remove the global package with the same package manager you used to install it:
89
+
90
+ ```sh
91
+ pnpm remove --global @qloo/qloo-harness
92
+ ```
93
+
94
+ Or with npm:
95
+
96
+ ```sh
97
+ npm uninstall --global @qloo/qloo-harness
98
+ ```
99
+
100
+ Package removal intentionally leaves credentials, settings, and sessions in
101
+ `~/.qloo` (or the directory selected by `QLOO_HOME`). A later reinstall reuses
102
+ that state and will not ask for keys again. Delete only that dedicated state
103
+ directory separately if you also want to erase the saved configuration.
104
+
86
105
  ### Run from Source
87
106
 
88
107
  Contributors can prepare the repository once instead of installing the public
package/dist/cli.js CHANGED
@@ -5,7 +5,7 @@ const require = __qlooCreateRequire(import.meta.url);
5
5
  import { launchInteractiveHarness } from "./app.js";
6
6
  import { isQlooHarnessProfile, QLOO_DEFAULT_PROFILE, QLOO_HARNESS_PROFILES } from "./profiles.js";
7
7
  import { MissingModelAuthenticationError } from "./runtime/pi-adapter.js";
8
- var HARNESS_VERSION = "0.1.20";
8
+ var HARNESS_VERSION = "0.1.21";
9
9
  var HARNESS_HELP = `Qloo terminal harness
10
10
 
11
11
  Usage:
package/dist/index.d.ts CHANGED
@@ -674,7 +674,7 @@ interface LaunchInteractiveHarnessOptions {
674
674
  }
675
675
  declare function launchInteractiveHarness(options?: LaunchInteractiveHarnessOptions): Promise<void>;
676
676
 
677
- declare const HARNESS_VERSION = "0.1.20";
677
+ declare const HARNESS_VERSION = "0.1.21";
678
678
  declare const HARNESS_HELP = "Qloo terminal harness\n\nUsage:\n qloo Start guided Qloo chat\n qloo chat Start guided Qloo chat explicitly\n qloo explore Ask grounded Qloo questions (read-only workspace)\n qloo integrate Inspect and design a Qloo integration\n qloo plan Open interactive read-only planning\n qloo plan \"<goal>\" --json\n Create a typed, evidence-backed plan\n qloo build Open approval-gated build mode\n qloo build --plan <plan-id>\n Build from a validated integration plan\n qloo chat --mode <explore|integrate|plan|build>\n qloo --help Show this help\n qloo --version Show the harness version\n\nThe deterministic API CLI and additional harness commands are attached by the\ntop-level qloo command router.";
679
679
  interface HarnessCliDependencies {
680
680
  launch: (profile: QlooHarnessProfile) => Promise<void>;
@@ -190,12 +190,19 @@ function createHarnessPolicyExtension(profile, allowedToolNames, runtimeInfo, co
190
190
  return;
191
191
  }
192
192
  };
193
+ const notifyReadable = (context, label, body) => {
194
+ const message = context.mode === "tui" ? [
195
+ context.ui.theme.fg("accent", label),
196
+ context.ui.theme.fg("text", body)
197
+ ].join("\n") : `${label}
198
+ ${body}`;
199
+ context.ui.notify(message);
200
+ };
193
201
  const notifyJson = (context, label, value, maximumCharacters = 4e3) => {
194
202
  const serialized = JSON.stringify(redactSensitiveResult(value), null, 2);
195
203
  const bounded = serialized.length > maximumCharacters ? `${serialized.slice(0, maximumCharacters)}
196
204
  \u2026` : serialized;
197
- context.ui.notify(`${label}
198
- ${bounded}`);
205
+ notifyReadable(context, label, bounded);
199
206
  };
200
207
  const setNextWidget = (context) => {
201
208
  if (context?.mode !== "tui" || !context.ui?.setWidget)
@@ -447,8 +454,7 @@ ${bounded}`);
447
454
  handler: async (_args, context) => {
448
455
  const usage = context.getContextUsage();
449
456
  const model = context.model ? `${context.model.provider}/${context.model.id}` : "unavailable";
450
- context.ui.notify([
451
- "Qloo status",
457
+ notifyReadable(context, "Qloo status", [
452
458
  `Profile: ${activeProfile}`,
453
459
  `Transport: ${runtimeInfo ? `${runtimeInfo.transport} (${runtimeInfo.transportName})` : "not declared"}`,
454
460
  `Resolution: ${runtimeInfo?.resolution ? `${runtimeInfo.resolution.name} (${runtimeInfo.resolution.tag_strategy}${runtimeInfo.resolution.uses_model ? ", model-assisted" : ""})` : "not declared"}`,
@@ -465,8 +471,7 @@ ${bounded}`);
465
471
  description: "Show current model context-window usage",
466
472
  handler: async (_args, context) => {
467
473
  const model = context.model ? `${context.model.provider}/${context.model.id}` : "unavailable";
468
- context.ui.notify([
469
- "Qloo context usage",
474
+ notifyReadable(context, "Qloo context usage", [
470
475
  `Model: ${model}`,
471
476
  `Context used: ${formatContextUsage(context.getContextUsage())}`
472
477
  ].join("\n"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qloo/qloo-harness",
3
- "version": "0.1.20",
3
+ "version": "0.1.21",
4
4
  "description": "Qloo-focused terminal agent built on the Pi SDK",
5
5
  "private": false,
6
6
  "publishConfig": {