@qilin-agent/cli 3.1.5 → 3.1.6

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/lib/bin.js CHANGED
@@ -108,7 +108,7 @@ function resolveBoot(program, profile, options, args) {
108
108
  * @param version - version string printed by `--version`.
109
109
  * @returns the resolved invocation.
110
110
  */
111
- function parseQilinArgs(argv, version) {
111
+ function parseQilinArgs(argv, version, manageDesktopProfile = false) {
112
112
  const first = argv[0];
113
113
  let resolved;
114
114
  const program = new Command();
@@ -116,7 +116,7 @@ function parseQilinArgs(argv, version) {
116
116
  if (options.profile === void 0 && args.some((argument) => argument === "-h" || argument === "--help")) program.help();
117
117
  const profile = options.profile ?? PRODUCT_PROFILE;
118
118
  if (profile === "") program.error("error: --profile needs a name");
119
- rejectReservedDesktopProfile(program, profile);
119
+ if (!manageDesktopProfile) rejectReservedDesktopProfile(program, profile);
120
120
  resolved = resolveBoot(program, profile, options, args);
121
121
  });
122
122
  if (first === "plugin") {
@@ -124,7 +124,7 @@ function parseQilinArgs(argv, version) {
124
124
  plugin.option("--profile <name>", "the profile whose plugins to manage (defaults to the product profile; initialized on first use)", selectProfile).allowUnknownOption().argument("[args...]", "one of: list, doctor <name|path>, version-exemptions, allow-version <package@version> --qilin-version <exact> --accept-risk, revoke-version <package@version> --qilin-version <exact>; otherwise pnpm arguments forwarded verbatim (add <pkg>, remove <pkg>, why <pkg>, ...)").action((args, options) => {
125
125
  const profile = options.profile ?? PRODUCT_PROFILE;
126
126
  if (profile === "") program.error("error: --profile needs a name");
127
- rejectReservedDesktopProfile(plugin, profile);
127
+ if (!manageDesktopProfile) rejectReservedDesktopProfile(plugin, profile);
128
128
  if (args.length === 0) program.error("error: plugin needs a subcommand (list, doctor <name|path>, version-exemptions, allow-version <package@version>, revoke-version <package@version>) or pnpm arguments to forward (e.g. add <package>)");
129
129
  if (args[0] === "list" && args.length > 1) program.error("error: plugin list takes no further arguments");
130
130
  if (args[0] === "doctor" && args.length !== 2) program.error("error: plugin doctor takes exactly one installed package name or package directory");
@@ -286,9 +286,10 @@ installSchedulerYield();
286
286
  * Run the public qilin command-line interface.
287
287
  * @returns a promise that settles when the selected command mode finishes.
288
288
  */
289
- async function runCli() {
289
+ async function runCli(options = {}) {
290
290
  const version = getQilinRuntimeVersion();
291
- const invocation = parseQilinArgs(process.argv.slice(2), version);
291
+ const { manageDesktopProfile, ...profileOptions } = options;
292
+ const invocation = parseQilinArgs(process.argv.slice(2), version, manageDesktopProfile);
292
293
  switch (invocation.mode) {
293
294
  case "profile": {
294
295
  const { ENTRY_PROFILES, isWebEntry, runWebEntry } = await import("./web-entry-C--0C6wG.js");
@@ -313,7 +314,8 @@ async function runCli() {
313
314
  profile: invocation.profile,
314
315
  fromDefaultProfile: invocation.fromDefaultProfile,
315
316
  patchFiles: invocation.patches,
316
- args: invocation.args
317
+ args: invocation.args,
318
+ ...profileOptions
317
319
  });
318
320
  } catch (error) {
319
321
  if (!(error instanceof StartupError)) throw error;
@@ -327,7 +329,7 @@ async function runCli() {
327
329
  break;
328
330
  }
329
331
  case "plugin": {
330
- const { runPlugin } = await import("./plugin-BQ1sn-63.js");
332
+ const { runPlugin } = await import("./plugin-77QK8DqG.js");
331
333
  process.exit(await runPlugin(invocation.profile, invocation.args));
332
334
  break;
333
335
  }
@@ -337,7 +339,7 @@ async function runCli() {
337
339
  break;
338
340
  }
339
341
  case "dump-config": {
340
- const { runDumpConfig } = await import("./dump-config-_HRfhhWz.js");
342
+ const { runDumpConfig } = await import("./dump-config-Dh7zdBXZ.js");
341
343
  runDumpConfig(invocation.profile, invocation.defaultOnly, invocation.patches, invocation.fromDefaultProfile);
342
344
  break;
343
345
  }
@@ -1,4 +1,4 @@
1
- import { a as prepareProfile, n as PROFILE_ROOT_FILENAME, r as homePatchPath } from "./profile-boot-DSy6PUHQ.js";
1
+ import { a as prepareProfile, n as PROFILE_ROOT_FILENAME, r as homePatchPath } from "./profile-boot-Jk8GJcE8.js";
2
2
  import { loadOptionalPatches, loadOverlayPatches, renderConfigDump } from "@qilin-agent/app-boot";
3
3
  import { join, resolve } from "node:path";
4
4
  import { existsSync } from "node:fs";
@@ -1,11 +1,10 @@
1
- import { t as INSTALL_ANCHOR } from "./profile-boot-DSy6PUHQ.js";
1
+ import { t as INSTALL_ANCHOR } from "./profile-boot-Jk8GJcE8.js";
2
2
  import { DEFAULT_PROFILE_BUNDLES, EngineNameCollisionError, PROFILE_TEMPLATES, doctorPluginPackage, initProfile, readProfileCompatibility, readProfileManifest, readProfilePluginRows, reconcileProfileBundles, resolveBundleDir, resolveProfileDir, setProfileVersionExemption } from "@qilin-agent/app-boot";
3
3
  import { mkdir } from "node:fs/promises";
4
4
  import { join, resolve } from "node:path";
5
5
  import { existsSync } from "node:fs";
6
6
  import { spawnSync } from "node:child_process";
7
7
  import { withFileLock } from "@qilin-agent/atomic-write";
8
- import { refusedInstallSpecs } from "@qilin-agent/plugin-manager/operations";
9
8
  //#region lib/types/plugin.js
10
9
  /**
11
10
  * `qilin plugin [--profile <name>] <args...>` — profile plugin management.
@@ -30,8 +29,6 @@ import { refusedInstallSpecs } from "@qilin-agent/plugin-manager/operations";
30
29
  const NAME = "qilin";
31
30
  /** Bound on waiting for the profile write lock an exemption command shares with the manager. */
32
31
  const LOCK_WAIT_MS = 12e4;
33
- /** Bound on the pre-install registry lookup that reads a named package's peers. */
34
- const LOOKUP_TIMEOUT_MS = 12e4;
35
32
  /**
36
33
  * Print one profile's plugin layers in activation order.
37
34
  * @param profile - the profile name, used to recognize its shipped template layers.
@@ -154,35 +151,6 @@ function anchorPathSpec(argument, cwd) {
154
151
  return `${match.groups.prefix ?? ""}${resolve(cwd, match.groups.path)}`;
155
152
  }
156
153
  /**
157
- * Refuse an install command that names a package the running runtime version
158
- * rejects, before pnpm writes anything.
159
- *
160
- * The check reads the named manifests without installing them, so a rejected
161
- * package never lands on disk and the version already in use keeps working. The
162
- * post-install and startup checks still judge what a path or registry lookup
163
- * cannot: a git or tarball spec, and a bundle component whose peers need the
164
- * installed tree.
165
- * @param profile - the profile name the operation runs against.
166
- * @param dir - the profile directory.
167
- * @param args - pnpm arguments, before relative path anchoring.
168
- * @returns the process exit code when the command was refused, otherwise undefined.
169
- */
170
- async function refuseIncompatibleInstall(profile, dir, args) {
171
- const refused = await refusedInstallSpecs({
172
- profile,
173
- dir,
174
- installAnchor: INSTALL_ANCHOR,
175
- cwd: process.cwd()
176
- }, args, {
177
- execution: "cli",
178
- lookupTimeoutMs: LOOKUP_TIMEOUT_MS
179
- });
180
- if (refused.warnings.length === 0) return void 0;
181
- process.stderr.write(`\n${NAME}: installation rejected: ${refused.warnings.join("\n")}\n${NAME}: nothing was installed.\n`);
182
- for (const { name, version, runtimeVersion } of refused.incompatible) process.stderr.write(`${NAME}: to accept the risk, run: ${NAME} plugin --profile ${profile} allow-version ${name}@${version} --qilin-version ${runtimeVersion} --accept-risk\n`);
183
- return 1;
184
- }
185
- /**
186
154
  * Run one `qilin plugin` invocation: report or list, grant or revoke one
187
155
  * exact-version exemption, or forward to pnpm and reconcile.
188
156
  * @param profile - the profile name.
@@ -200,8 +168,6 @@ async function runPlugin(profile, args) {
200
168
  }
201
169
  const exemption = await exemptionCommand(profile, args);
202
170
  if (exemption !== void 0) return exemption;
203
- const refused = await refuseIncompatibleInstall(profile, dir, args);
204
- if (refused !== void 0) return refused;
205
171
  if (!existsSync(join(dir, "package.json"))) {
206
172
  const template = PROFILE_TEMPLATES[profile];
207
173
  initProfile(dir, template?.bundles ?? DEFAULT_PROFILE_BUNDLES);
@@ -1,4 +1,4 @@
1
- import { PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, QILIN_LAUNCH_PROFILE_KEY, boot, createProfileResolutionGeneration, healIsolatedProfileModuleFallback, healProfilesModuleFallback, initProfile, installFailLoud, loadOverlayPatches, loadProfile, loadProfileDirectory, readProfilePatches, resolveProfileDir } from "@qilin-agent/app-boot";
1
+ import { PROFILE_PATCH_FILENAME, PROFILE_TEMPLATES, PluginPackages, QILIN_LAUNCH_PROFILE_KEY, boot, createRuntimeResolution, healIsolatedProfileModuleFallback, healProfilesModuleFallback, initProfile, installFailLoud, loadOverlayPatches, loadProfile, loadProfileDirectory, readProfilePatches, resolveProfileDir } from "@qilin-agent/app-boot";
2
2
  import { resolveQilinHome } from "@qilin-agent/home-paths";
3
3
  import { dirname, join, resolve } from "node:path";
4
4
  import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
@@ -212,7 +212,7 @@ async function composeProfile(name, patchFiles, resolutionMode, fromDefaultProfi
212
212
  if (resolvedProfile !== void 0 && resolutionMode !== "runtime") healIsolatedProfileModuleFallback(resolvedProfile);
213
213
  return {
214
214
  profile,
215
- resolution: resolutionMode === "runtime" || resolvedProfile !== void 0 ? await createProfileResolutionGeneration(resolutionOptions) : await healProfilesModuleFallback(resolutionOptions),
215
+ resolution: resolutionMode === "runtime" || resolvedProfile !== void 0 ? await createRuntimeResolution(resolutionOptions) : await healProfilesModuleFallback(resolutionOptions),
216
216
  overlays: patchFiles.flatMap((file) => loadOverlayPatches(NAME, resolve(file)))
217
217
  };
218
218
  }
@@ -285,7 +285,7 @@ async function runProfile(options) {
285
285
  await hostCtx.plugin(PluginPackages, resolutionMode === "link" ? {} : {
286
286
  generation: composed.resolution,
287
287
  behavior: resolutionMode === "dual" ? "verify" : "enforce",
288
- recompute: async () => createProfileResolutionGeneration({
288
+ recompute: async () => createRuntimeResolution({
289
289
  installAnchor: profileContext.installAnchor,
290
290
  profile: options.resolvedProfile === void 0 ? loadProfile(NAME, options.profile, profileContext.installAnchor) : loadProfileDirectory(NAME, options.resolvedProfile.profile.dir, profileContext.installAnchor)
291
291
  })
@@ -1,2 +1,2 @@
1
- import { a as prepareProfile, i as initializeProfileFromDefault, n as PROFILE_ROOT_FILENAME, o as runProfile, r as homePatchPath, t as INSTALL_ANCHOR } from "./profile-boot-DSy6PUHQ.js";
1
+ import { a as prepareProfile, i as initializeProfileFromDefault, n as PROFILE_ROOT_FILENAME, o as runProfile, r as homePatchPath, t as INSTALL_ANCHOR } from "./profile-boot-Jk8GJcE8.js";
2
2
  export { INSTALL_ANCHOR, PROFILE_ROOT_FILENAME, homePatchPath, initializeProfileFromDefault, prepareProfile, runProfile };
@@ -60,6 +60,6 @@ export type QilinInvocation = ProfileInvocation | DumpConfigInvocation | PluginI
60
60
  * @param version - version string printed by `--version`.
61
61
  * @returns the resolved invocation.
62
62
  */
63
- export declare function parseQilinArgs(argv: readonly string[], version: string): QilinInvocation;
63
+ export declare function parseQilinArgs(argv: readonly string[], version: string, manageDesktopProfile?: boolean): QilinInvocation;
64
64
  export {};
65
65
  //# sourceMappingURL=args.d.ts.map
@@ -3,9 +3,15 @@
3
3
  * Command-line entry for qilin.
4
4
  * @module @qilin-agent/cli/bin
5
5
  */
6
+ import type { RunProfileOptions } from './profile-boot.ts';
7
+ /** Installation-owned dependencies supplied by a packaged CLI launcher. */
8
+ export type RunCliOptions = Pick<RunProfileOptions, 'packageManager'> & {
9
+ /** Permit plugin commands for the Desktop's installed profile; reserved for its installed carrier. */
10
+ manageDesktopProfile?: boolean;
11
+ };
6
12
  /**
7
13
  * Run the public qilin command-line interface.
8
14
  * @returns a promise that settles when the selected command mode finishes.
9
15
  */
10
- export declare function runCli(): Promise<void>;
16
+ export declare function runCli(options?: RunCliOptions): Promise<void>;
11
17
  //# sourceMappingURL=bin.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@qilin-agent/cli",
3
3
  "description": "qilin CLI: profile launch, plugin management, and configuration inspection",
4
- "version": "3.1.5",
4
+ "version": "3.1.6",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -33,90 +33,91 @@
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
35
  "commander": "^15.0.0",
36
- "js-yaml": "^4.2.0",
36
+ "js-yaml": "^4.3.2",
37
37
  "node-addon-require-builtin": "^0.1.9",
38
- "@qilin-agent/accounts-local": "3.1.5",
39
- "@qilin-agent/agent-instructions": "3.1.5",
40
- "@qilin-agent/agent-tool-presentation": "3.1.5",
41
- "@qilin-agent/app-boot": "3.1.5",
42
- "@qilin-agent/acp-app": "3.1.5",
43
- "@qilin-agent/atomic-write": "3.1.5",
44
- "@qilin-agent/base": "3.1.5",
45
- "@qilin-agent/client-ui-agent-preset": "3.1.5",
46
- "@qilin-agent/client-ui-kylin": "3.1.5",
47
- "@qilin-agent/command-compact": "3.1.5",
48
- "@qilin-agent/command-goal": "3.1.5",
49
- "@qilin-agent/cmdline": "3.1.5",
50
- "@qilin-agent/compaction-basic": "3.1.5",
51
- "@qilin-agent/compaction-tool-result-pruner": "3.1.5",
52
- "@qilin-agent/experimental-auto-review": "3.1.5",
53
- "@qilin-agent/experimental-agent-team-profile": "3.1.5",
54
- "@qilin-agent/experimental-badge-skill-bundle": "3.1.5",
55
- "@qilin-agent/experimental-cot-translation-bundle": "3.1.5",
56
- "@qilin-agent/experimental-ralph-bundle": "3.1.5",
57
- "@qilin-agent/experimental-schedule-bundle": "3.1.5",
58
- "@qilin-agent/experimental-session-search": "3.1.5",
59
- "@qilin-agent/experimental-session-titles-bundle": "3.1.5",
60
- "@qilin-agent/experimental-tool-worktree": "3.1.5",
61
- "@qilin-agent/experimental-terminal-bundle": "3.1.5",
62
- "@qilin-agent/fs-local": "3.1.5",
63
- "@qilin-agent/goal": "3.1.5",
64
- "@qilin-agent/experimental-voice-input-bundle": "3.1.5",
65
- "@qilin-agent/headless": "3.1.5",
66
- "@qilin-agent/hmr": "3.1.5",
67
- "@qilin-agent/home-paths": "3.1.5",
68
- "@qilin-agent/goal-round-driver": "3.1.5",
69
- "@qilin-agent/http-proxy": "3.1.5",
70
- "@qilin-agent/jobs-local": "3.1.5",
71
- "@qilin-agent/kylin": "~4.0.3",
72
- "@qilin-agent/kylin-client-runner": "3.1.5",
73
- "@qilin-agent/kylin-plugin-include": "~1.0.8",
74
- "@qilin-agent/launch-environment": "3.1.5",
75
- "@qilin-agent/mcp-client": "3.1.5",
76
- "@qilin-agent/kylin-plugin-timer": "~1.1.5",
77
- "@qilin-agent/mcp-resources": "3.1.5",
78
- "@qilin-agent/persona": "3.1.5",
79
- "@qilin-agent/plan-mode": "3.1.5",
80
- "@qilin-agent/kylin-plugin-loader": "~1.0.4",
81
- "@qilin-agent/plugin-manager": "3.1.5",
82
- "@qilin-agent/pwsh-local": "3.1.5",
83
- "@qilin-agent/schedule": "3.1.5",
84
- "@qilin-agent/schemastery": "~3.18.3",
85
- "@qilin-agent/sdk-minimal": "3.1.5",
86
- "@qilin-agent/sdk-app": "3.1.5",
87
- "@qilin-agent/session-projection": "3.1.5",
88
- "@qilin-agent/pwsh-sandbox": "3.1.5",
89
- "@qilin-agent/skill": "3.1.5",
90
- "@qilin-agent/session-reference": "3.1.5",
91
- "@qilin-agent/skill-filesystem": "3.1.5",
92
- "@qilin-agent/terminal": "3.1.5",
93
- "@qilin-agent/terminal-bash": "3.1.5",
94
- "@qilin-agent/time-context": "3.1.5",
95
- "@qilin-agent/token-meter": "3.1.5",
96
- "@qilin-agent/tmux-context": "3.1.5",
97
- "@qilin-agent/tool-ask-user": "3.1.5",
98
- "@qilin-agent/tool-bash-persistent": "3.1.5",
99
- "@qilin-agent/tool-bash": "3.1.5",
100
- "@qilin-agent/tool-fs": "3.1.5",
101
- "@qilin-agent/tool-goal": "3.1.5",
102
- "@qilin-agent/tool-fs-search": "3.1.5",
103
- "@qilin-agent/sidebar-opens": "3.1.5",
104
- "@qilin-agent/tool-jobs": "3.1.5",
105
- "@qilin-agent/tool-kylin": "3.1.5",
106
- "@qilin-agent/tool-pwsh": "3.1.5",
107
- "@qilin-agent/tool-pwsh-persistent": "3.1.5",
108
- "@qilin-agent/tool-present": "3.1.5",
109
- "@qilin-agent/tool-schedule": "3.1.5",
110
- "@qilin-agent/tool-str-replace-editor": "3.1.5",
111
- "@qilin-agent/tool-skill": "3.1.5",
112
- "@qilin-agent/tool-subagent-control": "3.1.5",
113
- "@qilin-agent/tool-subagent": "3.1.5",
114
- "@qilin-agent/tool-todo": "3.1.5",
115
- "@qilin-agent/tool-web": "3.1.5",
116
- "@qilin-agent/tool-workflow": "3.1.5",
117
- "@qilin-agent/web-app": "3.1.5",
118
- "@qilin-agent/web-brand": "3.1.5",
119
- "@qilin-agent/workflow-ptc": "3.1.5"
38
+ "@qilin-agent/accounts-local": "3.1.6",
39
+ "@qilin-agent/agent-tool-presentation": "3.1.6",
40
+ "@qilin-agent/app-boot": "3.1.6",
41
+ "@qilin-agent/acp-app": "3.1.6",
42
+ "@qilin-agent/atomic-write": "3.1.6",
43
+ "@qilin-agent/agent-instructions": "3.1.6",
44
+ "@qilin-agent/base": "3.1.6",
45
+ "@qilin-agent/client-ui-agent-preset": "3.1.6",
46
+ "@qilin-agent/client-ui-kylin": "3.1.6",
47
+ "@qilin-agent/cmdline": "3.1.6",
48
+ "@qilin-agent/command-goal": "3.1.6",
49
+ "@qilin-agent/command-compact": "3.1.6",
50
+ "@qilin-agent/compaction-basic": "3.1.6",
51
+ "@qilin-agent/compaction-tool-result-pruner": "3.1.6",
52
+ "@qilin-agent/experimental-badge-skill-bundle": "3.1.6",
53
+ "@qilin-agent/experimental-agent-team-profile": "3.1.6",
54
+ "@qilin-agent/experimental-auto-review": "3.1.6",
55
+ "@qilin-agent/experimental-cot-translation-bundle": "3.1.6",
56
+ "@qilin-agent/experimental-ralph-bundle": "3.1.6",
57
+ "@qilin-agent/experimental-inspector-profile": "3.1.6",
58
+ "@qilin-agent/experimental-session-search": "3.1.6",
59
+ "@qilin-agent/experimental-session-titles-bundle": "3.1.6",
60
+ "@qilin-agent/experimental-terminal-bundle": "3.1.6",
61
+ "@qilin-agent/experimental-schedule-bundle": "3.1.6",
62
+ "@qilin-agent/experimental-voice-input-bundle": "3.1.6",
63
+ "@qilin-agent/experimental-tool-worktree": "3.1.6",
64
+ "@qilin-agent/fs-local": "3.1.6",
65
+ "@qilin-agent/goal-round-driver": "3.1.6",
66
+ "@qilin-agent/goal": "3.1.6",
67
+ "@qilin-agent/hmr": "3.1.6",
68
+ "@qilin-agent/headless": "3.1.6",
69
+ "@qilin-agent/home-paths": "3.1.6",
70
+ "@qilin-agent/http-proxy": "3.1.6",
71
+ "@qilin-agent/jobs-local": "3.1.6",
72
+ "@qilin-agent/kylin": "~4.0.5",
73
+ "@qilin-agent/kylin-plugin-include": "~1.0.10",
74
+ "@qilin-agent/kylin-client-runner": "3.1.6",
75
+ "@qilin-agent/kylin-plugin-loader": "~1.0.6",
76
+ "@qilin-agent/kylin-plugin-timer": "~1.1.7",
77
+ "@qilin-agent/launch-environment": "3.1.6",
78
+ "@qilin-agent/mcp-client": "3.1.6",
79
+ "@qilin-agent/mcp-resources": "3.1.6",
80
+ "@qilin-agent/plan-mode": "3.1.6",
81
+ "@qilin-agent/pwsh-local": "3.1.6",
82
+ "@qilin-agent/persona": "3.1.6",
83
+ "@qilin-agent/schemastery": "~3.18.5",
84
+ "@qilin-agent/pwsh-sandbox": "3.1.6",
85
+ "@qilin-agent/schedule": "3.1.6",
86
+ "@qilin-agent/plugin-manager": "3.1.6",
87
+ "@qilin-agent/sdk-app": "3.1.6",
88
+ "@qilin-agent/sdk-minimal": "3.1.6",
89
+ "@qilin-agent/session-projection": "3.1.6",
90
+ "@qilin-agent/session-reference": "3.1.6",
91
+ "@qilin-agent/skill-filesystem": "3.1.6",
92
+ "@qilin-agent/skill": "3.1.6",
93
+ "@qilin-agent/terminal": "3.1.6",
94
+ "@qilin-agent/tmux-context": "3.1.6",
95
+ "@qilin-agent/time-context": "3.1.6",
96
+ "@qilin-agent/terminal-bash": "3.1.6",
97
+ "@qilin-agent/tool-bash-persistent": "3.1.6",
98
+ "@qilin-agent/token-meter": "3.1.6",
99
+ "@qilin-agent/tool-ask-user": "3.1.6",
100
+ "@qilin-agent/tool-bash": "3.1.6",
101
+ "@qilin-agent/tool-fs": "3.1.6",
102
+ "@qilin-agent/tool-fs-search": "3.1.6",
103
+ "@qilin-agent/tool-goal": "3.1.6",
104
+ "@qilin-agent/tool-jobs": "3.1.6",
105
+ "@qilin-agent/sidebar-opens": "3.1.6",
106
+ "@qilin-agent/tool-kylin": "3.1.6",
107
+ "@qilin-agent/tool-pwsh": "3.1.6",
108
+ "@qilin-agent/tool-schedule": "3.1.6",
109
+ "@qilin-agent/tool-present": "3.1.6",
110
+ "@qilin-agent/tool-pwsh-persistent": "3.1.6",
111
+ "@qilin-agent/tool-str-replace-editor": "3.1.6",
112
+ "@qilin-agent/tool-skill": "3.1.6",
113
+ "@qilin-agent/tool-subagent": "3.1.6",
114
+ "@qilin-agent/tool-todo": "3.1.6",
115
+ "@qilin-agent/tool-subagent-control": "3.1.6",
116
+ "@qilin-agent/tool-web": "3.1.6",
117
+ "@qilin-agent/tool-workflow": "3.1.6",
118
+ "@qilin-agent/web-brand": "3.1.6",
119
+ "@qilin-agent/web-app": "3.1.6",
120
+ "@qilin-agent/workflow-ptc": "3.1.6"
120
121
  },
121
122
  "devDependencies": {
122
123
  "@agentclientprotocol/sdk": "1.4.0",
@@ -125,57 +126,60 @@
125
126
  "execa": "^10.0.0",
126
127
  "selfsigned": "^4.0.1",
127
128
  "ws": "8.21.0",
128
- "@qilin-agent/acp": "3.1.5",
129
- "@qilin-agent/agent": "3.1.5",
130
- "@qilin-agent/agent-loop": "3.1.5",
131
- "@qilin-agent/attachment-local": "3.1.5",
132
- "@qilin-agent/bash-local": "3.1.5",
133
- "@qilin-agent/agent-loop-testkit": "3.1.5",
134
- "@qilin-agent/credentials-local": "3.1.5",
135
- "@qilin-agent/experimental-agent-team": "3.1.5",
136
- "@qilin-agent/deepseek-llm-api-extensions": "3.1.5",
137
- "@qilin-agent/experimental-hooks-codex": "3.1.5",
138
- "@qilin-agent/experimental-ptc-runtime-python": "3.1.5",
139
- "@qilin-agent/experimental-hooks-claude-code": "3.1.5",
140
- "@qilin-agent/experimental-tool-agent-team": "3.1.5",
141
- "@qilin-agent/experimental-webhook-github": "3.1.5",
142
- "@qilin-agent/host-frontend-static": "3.1.5",
143
- "@qilin-agent/experimental-webhook": "3.1.5",
144
- "@qilin-agent/host-webserver": "3.1.5",
145
- "@qilin-agent/fs-sandbox": "3.1.5",
146
- "@qilin-agent/llm": "3.1.5",
147
- "@qilin-agent/llm-deepseek": "3.1.5",
148
- "@qilin-agent/llm-deepseek-api-key": "3.1.5",
149
- "@qilin-agent/fs-observation-policy": "3.1.5",
150
- "@qilin-agent/llm-mock-server": "3.1.5",
151
- "@qilin-agent/llm-pi-ai": "3.1.5",
152
- "@qilin-agent/llm-replay": "3.1.5",
153
- "@qilin-agent/loader-smoke": "3.1.5",
154
- "@qilin-agent/plugin-package-inventory-deepseek": "3.1.5",
155
- "@qilin-agent/sandbox-local": "3.1.5",
156
- "@qilin-agent/sandbox-policy": "3.1.5",
157
- "@qilin-agent/session": "3.1.5",
158
- "@qilin-agent/session-log-deepseek": "3.1.5",
159
- "@qilin-agent/session-checkpoint-policy": "3.1.5",
160
- "@qilin-agent/session-query": "3.1.5",
161
- "@qilin-agent/settings": "3.1.5",
162
- "@qilin-agent/session-persistence-jsonl": "3.1.5",
163
- "@qilin-agent/settings-file": "3.1.5",
164
- "@qilin-agent/subagent": "3.1.5",
165
- "@qilin-agent/shell-env": "3.1.5",
166
- "@qilin-agent/subagent-fork-in-process": "3.1.5",
167
- "@qilin-agent/subagent-spawn-in-process": "3.1.5",
168
- "@qilin-agent/subprocess-local": "3.1.5",
169
- "@qilin-agent/system-prompt": "3.1.5",
170
- "@qilin-agent/tools": "3.1.5",
171
- "@qilin-agent/subprocess": "3.1.5",
172
- "@qilin-agent/user-approval": "3.1.5"
129
+ "@qilin-agent/agent": "3.1.6",
130
+ "@qilin-agent/acp": "3.1.6",
131
+ "@qilin-agent/agent-loop": "3.1.6",
132
+ "@qilin-agent/agent-loop-testkit": "3.1.6",
133
+ "@qilin-agent/attachment-local": "3.1.6",
134
+ "@qilin-agent/credentials-local": "3.1.6",
135
+ "@qilin-agent/bash-local": "3.1.6",
136
+ "@qilin-agent/deepseek-llm-api-extensions": "3.1.6",
137
+ "@qilin-agent/experimental-agent-team": "3.1.6",
138
+ "@qilin-agent/experimental-hooks-claude-code": "3.1.6",
139
+ "@qilin-agent/experimental-hooks-codex": "3.1.6",
140
+ "@qilin-agent/experimental-tool-agent-team": "3.1.6",
141
+ "@qilin-agent/experimental-webhook-github": "3.1.6",
142
+ "@qilin-agent/experimental-ptc-runtime-python": "3.1.6",
143
+ "@qilin-agent/experimental-webhook": "3.1.6",
144
+ "@qilin-agent/fs-observation-policy": "3.1.6",
145
+ "@qilin-agent/fs-sandbox": "3.1.6",
146
+ "@qilin-agent/host-frontend-static": "3.1.6",
147
+ "@qilin-agent/host-webserver": "3.1.6",
148
+ "@qilin-agent/llm": "3.1.6",
149
+ "@qilin-agent/llm-deepseek": "3.1.6",
150
+ "@qilin-agent/llm-deepseek-api-key": "3.1.6",
151
+ "@qilin-agent/llm-mock-server": "3.1.6",
152
+ "@qilin-agent/llm-pi-ai": "3.1.6",
153
+ "@qilin-agent/loader-smoke": "3.1.6",
154
+ "@qilin-agent/llm-replay": "3.1.6",
155
+ "@qilin-agent/plugin-package-inventory-deepseek": "3.1.6",
156
+ "@qilin-agent/sandbox-local": "3.1.6",
157
+ "@qilin-agent/sandbox-policy": "3.1.6",
158
+ "@qilin-agent/session": "3.1.6",
159
+ "@qilin-agent/session-checkpoint-policy": "3.1.6",
160
+ "@qilin-agent/session-persistence-jsonl": "3.1.6",
161
+ "@qilin-agent/session-log-deepseek": "3.1.6",
162
+ "@qilin-agent/session-query": "3.1.6",
163
+ "@qilin-agent/settings": "3.1.6",
164
+ "@qilin-agent/shell-env": "3.1.6",
165
+ "@qilin-agent/subagent": "3.1.6",
166
+ "@qilin-agent/subagent-fork-in-process": "3.1.6",
167
+ "@qilin-agent/subprocess-local": "3.1.6",
168
+ "@qilin-agent/subprocess": "3.1.6",
169
+ "@qilin-agent/system-prompt": "3.1.6",
170
+ "@qilin-agent/tools": "3.1.6",
171
+ "@qilin-agent/subagent-spawn-in-process": "3.1.6",
172
+ "@qilin-agent/user-approval": "3.1.6"
173
173
  },
174
174
  "exports": {
175
175
  "./profile-boot": {
176
176
  "types": "./lib/types/profile-boot.d.ts",
177
177
  "default": "./lib/profile-boot.js"
178
178
  },
179
+ "./bin": {
180
+ "types": "./lib/types/bin.d.ts",
181
+ "default": "./lib/bin.js"
182
+ },
179
183
  "./lib/*": "./lib/*",
180
184
  "./package.json": "./package.json"
181
185
  }