daycare-cli 0.0.21 → 0.0.23

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.
Files changed (112) hide show
  1. package/dist/engine/agents/agent.d.ts +4 -0
  2. package/dist/engine/agents/agent.d.ts.map +1 -1
  3. package/dist/engine/agents/agent.js +115 -29
  4. package/dist/engine/agents/agent.js.map +1 -1
  5. package/dist/engine/agents/agentSystem.d.ts +1 -1
  6. package/dist/engine/agents/agentSystem.d.ts.map +1 -1
  7. package/dist/engine/agents/agentSystem.js.map +1 -1
  8. package/dist/engine/agents/ops/agentTypes.d.ts +9 -0
  9. package/dist/engine/agents/ops/agentTypes.d.ts.map +1 -1
  10. package/dist/engine/agents/ops/contextCompactionStatusBuild.d.ts +2 -1
  11. package/dist/engine/agents/ops/contextCompactionStatusBuild.d.ts.map +1 -1
  12. package/dist/engine/agents/ops/contextCompactionStatusBuild.js +3 -2
  13. package/dist/engine/agents/ops/contextCompactionStatusBuild.js.map +1 -1
  14. package/dist/engine/agents/ops/contextCompactionStatusBuild.spec.js +5 -2
  15. package/dist/engine/agents/ops/contextCompactionStatusBuild.spec.js.map +1 -1
  16. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.d.ts +15 -0
  17. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.d.ts.map +1 -0
  18. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.js +95 -0
  19. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.js.map +1 -0
  20. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.spec.d.ts +2 -0
  21. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.spec.d.ts.map +1 -0
  22. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.spec.js +14 -0
  23. package/dist/engine/agents/ops/contextEstimateTokensWithExtras.spec.js.map +1 -0
  24. package/dist/engine/agents/ops/contextNeedsEmergencyReset.d.ts +2 -1
  25. package/dist/engine/agents/ops/contextNeedsEmergencyReset.d.ts.map +1 -1
  26. package/dist/engine/agents/ops/contextNeedsEmergencyReset.js +3 -3
  27. package/dist/engine/agents/ops/contextNeedsEmergencyReset.js.map +1 -1
  28. package/dist/engine/agents/ops/contextNeedsEmergencyReset.spec.js +7 -0
  29. package/dist/engine/agents/ops/contextNeedsEmergencyReset.spec.js.map +1 -1
  30. package/dist/engine/engine.d.ts +1 -0
  31. package/dist/engine/engine.d.ts.map +1 -1
  32. package/dist/engine/engine.js +22 -0
  33. package/dist/engine/engine.js.map +1 -1
  34. package/dist/engine/engine.spec.js +128 -0
  35. package/dist/engine/engine.spec.js.map +1 -1
  36. package/dist/engine/modules/commandRegistry.d.ts +16 -0
  37. package/dist/engine/modules/commandRegistry.d.ts.map +1 -0
  38. package/dist/engine/modules/commandRegistry.js +65 -0
  39. package/dist/engine/modules/commandRegistry.js.map +1 -0
  40. package/dist/engine/modules/commandRegistry.spec.d.ts +2 -0
  41. package/dist/engine/modules/commandRegistry.spec.d.ts.map +1 -0
  42. package/dist/engine/modules/commandRegistry.spec.js +85 -0
  43. package/dist/engine/modules/commandRegistry.spec.js.map +1 -0
  44. package/dist/engine/modules/connectorRegistry.d.ts +6 -0
  45. package/dist/engine/modules/connectorRegistry.d.ts.map +1 -1
  46. package/dist/engine/modules/connectorRegistry.js +40 -0
  47. package/dist/engine/modules/connectorRegistry.js.map +1 -1
  48. package/dist/engine/modules/connectorRegistry.spec.d.ts +2 -0
  49. package/dist/engine/modules/connectorRegistry.spec.d.ts.map +1 -0
  50. package/dist/engine/modules/connectorRegistry.spec.js +72 -0
  51. package/dist/engine/modules/connectorRegistry.spec.js.map +1 -0
  52. package/dist/engine/modules/connectors/types.d.ts +8 -0
  53. package/dist/engine/modules/connectors/types.d.ts.map +1 -1
  54. package/dist/engine/modules/moduleRegistry.d.ts +3 -1
  55. package/dist/engine/modules/moduleRegistry.d.ts.map +1 -1
  56. package/dist/engine/modules/moduleRegistry.js +7 -1
  57. package/dist/engine/modules/moduleRegistry.js.map +1 -1
  58. package/dist/engine/plugins/descriptor.d.ts +2 -2
  59. package/dist/engine/plugins/manager.d.ts +2 -0
  60. package/dist/engine/plugins/manager.d.ts.map +1 -1
  61. package/dist/engine/plugins/manager.js +26 -0
  62. package/dist/engine/plugins/manager.js.map +1 -1
  63. package/dist/engine/plugins/manager.spec.js +60 -0
  64. package/dist/engine/plugins/manager.spec.js.map +1 -1
  65. package/dist/engine/plugins/registry.d.ts +8 -2
  66. package/dist/engine/plugins/registry.d.ts.map +1 -1
  67. package/dist/engine/plugins/registry.js +34 -2
  68. package/dist/engine/plugins/registry.js.map +1 -1
  69. package/dist/engine/plugins/registry.spec.d.ts +2 -0
  70. package/dist/engine/plugins/registry.spec.d.ts.map +1 -0
  71. package/dist/engine/plugins/registry.spec.js +69 -0
  72. package/dist/engine/plugins/registry.spec.js.map +1 -0
  73. package/dist/engine/plugins/types.d.ts +2 -0
  74. package/dist/engine/plugins/types.d.ts.map +1 -1
  75. package/dist/engine/plugins/types.js.map +1 -1
  76. package/dist/plugins/telegram/connector.d.ts +8 -2
  77. package/dist/plugins/telegram/connector.d.ts.map +1 -1
  78. package/dist/plugins/telegram/connector.js +46 -28
  79. package/dist/plugins/telegram/connector.js.map +1 -1
  80. package/dist/plugins/telegram/connector.spec.js +60 -19
  81. package/dist/plugins/telegram/connector.spec.js.map +1 -1
  82. package/dist/plugins/telegram/plugin.d.ts.map +1 -1
  83. package/dist/plugins/telegram/plugin.js +6 -1
  84. package/dist/plugins/telegram/plugin.js.map +1 -1
  85. package/dist/plugins/upgrade/plugin.d.ts +6 -0
  86. package/dist/plugins/upgrade/plugin.d.ts.map +1 -0
  87. package/dist/plugins/upgrade/plugin.js +68 -0
  88. package/dist/plugins/upgrade/plugin.js.map +1 -0
  89. package/dist/plugins/upgrade/plugin.json +6 -0
  90. package/dist/plugins/upgrade/plugin.spec.d.ts +2 -0
  91. package/dist/plugins/upgrade/plugin.spec.d.ts.map +1 -0
  92. package/dist/plugins/upgrade/plugin.spec.js +59 -0
  93. package/dist/plugins/upgrade/plugin.spec.js.map +1 -0
  94. package/dist/plugins/upgrade/upgradePm2ProcessDetect.d.ts +13 -0
  95. package/dist/plugins/upgrade/upgradePm2ProcessDetect.d.ts.map +1 -0
  96. package/dist/plugins/upgrade/upgradePm2ProcessDetect.js +66 -0
  97. package/dist/plugins/upgrade/upgradePm2ProcessDetect.js.map +1 -0
  98. package/dist/plugins/upgrade/upgradePm2ProcessDetect.spec.d.ts +2 -0
  99. package/dist/plugins/upgrade/upgradePm2ProcessDetect.spec.d.ts.map +1 -0
  100. package/dist/plugins/upgrade/upgradePm2ProcessDetect.spec.js +57 -0
  101. package/dist/plugins/upgrade/upgradePm2ProcessDetect.spec.js.map +1 -0
  102. package/dist/plugins/upgrade/upgradeRun.d.ts +12 -0
  103. package/dist/plugins/upgrade/upgradeRun.d.ts.map +1 -0
  104. package/dist/plugins/upgrade/upgradeRun.js +59 -0
  105. package/dist/plugins/upgrade/upgradeRun.js.map +1 -0
  106. package/dist/plugins/upgrade/upgradeRun.spec.d.ts +2 -0
  107. package/dist/plugins/upgrade/upgradeRun.spec.d.ts.map +1 -0
  108. package/dist/plugins/upgrade/upgradeRun.spec.js +70 -0
  109. package/dist/plugins/upgrade/upgradeRun.spec.js.map +1 -0
  110. package/dist/types.d.ts +1 -1
  111. package/dist/types.d.ts.map +1 -1
  112. package/package.json +1 -1
@@ -0,0 +1,66 @@
1
+ import { execFile } from "node:child_process";
2
+ /**
3
+ * Detects whether PM2 has a running process with the provided name.
4
+ * Expects: processName is non-empty and references the PM2 process to restart.
5
+ */
6
+ export async function upgradePm2ProcessDetect(processName) {
7
+ let output;
8
+ try {
9
+ output = await commandOutput("pm2", ["jlist"]);
10
+ }
11
+ catch (error) {
12
+ const message = error instanceof Error ? error.message : "Unknown PM2 error";
13
+ return {
14
+ found: false,
15
+ reason: `Failed to run pm2 jlist: ${message}`
16
+ };
17
+ }
18
+ const parsed = pm2ListParse(output);
19
+ if (!parsed) {
20
+ return {
21
+ found: false,
22
+ reason: "PM2 returned an invalid process list."
23
+ };
24
+ }
25
+ const entry = parsed.find((item) => {
26
+ if (!item || typeof item !== "object") {
27
+ return false;
28
+ }
29
+ const candidate = item;
30
+ return (candidate.name === processName && candidate.pm2_env?.status === "online");
31
+ });
32
+ if (!entry) {
33
+ return {
34
+ found: false,
35
+ reason: `No online PM2 process named "${processName}" was found.`
36
+ };
37
+ }
38
+ return {
39
+ found: true,
40
+ processName
41
+ };
42
+ }
43
+ function commandOutput(command, args) {
44
+ return new Promise((resolve, reject) => {
45
+ execFile(command, args, { windowsHide: true }, (error, stdout) => {
46
+ if (error) {
47
+ reject(error);
48
+ return;
49
+ }
50
+ resolve(stdout);
51
+ });
52
+ });
53
+ }
54
+ function pm2ListParse(value) {
55
+ try {
56
+ const parsed = JSON.parse(value);
57
+ if (!Array.isArray(parsed)) {
58
+ return null;
59
+ }
60
+ return parsed;
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ //# sourceMappingURL=upgradePm2ProcessDetect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradePm2ProcessDetect.js","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradePm2ProcessDetect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAM9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB;IAEnB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC7E,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,4BAA4B,OAAO,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,uCAAuC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,SAAS,GAAG,IAGjB,CAAC;QACF,OAAO,CACL,SAAS,CAAC,IAAI,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CACzE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,gCAAgC,WAAW,cAAc;SAClE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,IAAc;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,OAAO,EACP,IAAI,EACJ,EAAE,WAAW,EAAE,IAAI,EAAE,EACrB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=upgradePm2ProcessDetect.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradePm2ProcessDetect.spec.d.ts","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradePm2ProcessDetect.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+ const execFileMock = vi.fn();
3
+ vi.mock("node:child_process", () => ({
4
+ execFile: (...args) => execFileMock(...args)
5
+ }));
6
+ import { upgradePm2ProcessDetect } from "./upgradePm2ProcessDetect.js";
7
+ function execOutput(stdout) {
8
+ execFileMock.mockImplementationOnce((_command, _args, _options, callback) => {
9
+ callback(null, stdout);
10
+ return undefined;
11
+ });
12
+ }
13
+ function execError(error) {
14
+ execFileMock.mockImplementationOnce((_command, _args, _options, callback) => {
15
+ callback(error, "");
16
+ return undefined;
17
+ });
18
+ }
19
+ describe("upgradePm2ProcessDetect", () => {
20
+ beforeEach(() => {
21
+ execFileMock.mockReset();
22
+ });
23
+ it("returns found when daycare is online in pm2", async () => {
24
+ execOutput(JSON.stringify([
25
+ {
26
+ name: "daycare",
27
+ pm2_env: { status: "online" }
28
+ }
29
+ ]));
30
+ await expect(upgradePm2ProcessDetect("daycare")).resolves.toEqual({
31
+ found: true,
32
+ processName: "daycare"
33
+ });
34
+ });
35
+ it("returns not found when daycare process is missing", async () => {
36
+ execOutput(JSON.stringify([
37
+ {
38
+ name: "other",
39
+ pm2_env: { status: "online" }
40
+ }
41
+ ]));
42
+ await expect(upgradePm2ProcessDetect("daycare")).resolves.toEqual({
43
+ found: false,
44
+ reason: 'No online PM2 process named "daycare" was found.'
45
+ });
46
+ });
47
+ it("returns not found when pm2 command fails", async () => {
48
+ execError(new Error("spawn pm2 ENOENT"));
49
+ const result = await upgradePm2ProcessDetect("daycare");
50
+ expect(result.found).toBe(false);
51
+ if (result.found) {
52
+ throw new Error("Expected not found result");
53
+ }
54
+ expect(result.reason).toContain("Failed to run pm2 jlist");
55
+ });
56
+ });
57
+ //# sourceMappingURL=upgradePm2ProcessDetect.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradePm2ProcessDetect.spec.js","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradePm2ProcessDetect.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAE7B,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CACxD,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,SAAS,UAAU,CAAC,MAAc;IAChC,YAAY,CAAC,sBAAsB,CACjC,CACE,QAAgB,EAChB,KAAe,EACf,QAAkC,EAClC,QAAuD,EACvD,EAAE;QACF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAY;IAC7B,YAAY,CAAC,sBAAsB,CACjC,CACE,QAAgB,EAChB,KAAe,EACf,QAAkC,EAClC,QAAuD,EACvD,EAAE;QACF,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,UAAU,CAAC,GAAG,EAAE;QACd,YAAY,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,UAAU,CACR,IAAI,CAAC,SAAS,CAAC;YACb;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC9B;SACF,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChE,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,UAAU,CACR,IAAI,CAAC,SAAS,CAAC;YACb;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;aAC9B;SACF,CAAC,CACH,CAAC;QAEF,MAAM,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAChE,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,kDAAkD;SAC3D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,SAAS,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ type UpgradeRunOptions = {
2
+ strategy: "pm2";
3
+ processName: string;
4
+ sendStatus: (text: string) => Promise<void>;
5
+ };
6
+ /**
7
+ * Runs a full CLI upgrade and restart flow for the configured runtime strategy.
8
+ * Expects: strategy is supported and processName is a non-empty PM2 process identifier.
9
+ */
10
+ export declare function upgradeRun(options: UpgradeRunOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=upgradeRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeRun.d.ts","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradeRun.ts"],"names":[],"mappings":"AAEA,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,KAAK,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC;AAEF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B1E"}
@@ -0,0 +1,59 @@
1
+ import { execFile } from "node:child_process";
2
+ /**
3
+ * Runs a full CLI upgrade and restart flow for the configured runtime strategy.
4
+ * Expects: strategy is supported and processName is a non-empty PM2 process identifier.
5
+ */
6
+ export async function upgradeRun(options) {
7
+ await options.sendStatus("Upgrading Daycare CLI (npm install -g daycare-cli)...");
8
+ try {
9
+ await commandRun("npm", ["install", "-g", "daycare-cli"]);
10
+ }
11
+ catch (error) {
12
+ const text = `Upgrade failed while installing daycare-cli: ${errorTextBuild(error)}`;
13
+ await options.sendStatus(text);
14
+ throw new Error(text);
15
+ }
16
+ if (options.strategy !== "pm2") {
17
+ const text = `Upgrade failed: unsupported strategy ${options.strategy}`;
18
+ await options.sendStatus(text);
19
+ throw new Error(text);
20
+ }
21
+ await options.sendStatus(`Restarting process \"${options.processName}\" via pm2...`);
22
+ try {
23
+ await commandRun("pm2", ["restart", options.processName]);
24
+ }
25
+ catch (error) {
26
+ const text = `Upgrade failed while restarting PM2 process \"${options.processName}\": ${errorTextBuild(error)}`;
27
+ await options.sendStatus(text);
28
+ throw new Error(text);
29
+ }
30
+ await options.sendStatus(`Upgrade complete. PM2 process \"${options.processName}\" restarted.`);
31
+ }
32
+ function commandRun(command, args) {
33
+ return new Promise((resolve, reject) => {
34
+ execFile(command, args, {
35
+ windowsHide: true
36
+ }, (error) => {
37
+ if (error) {
38
+ reject(error);
39
+ return;
40
+ }
41
+ resolve();
42
+ });
43
+ });
44
+ }
45
+ function errorTextBuild(error) {
46
+ if (!(error instanceof Error)) {
47
+ return "Unknown error";
48
+ }
49
+ const withOutput = error;
50
+ const details = [
51
+ String(withOutput.stderr ?? "").trim(),
52
+ String(withOutput.stdout ?? "").trim()
53
+ ].find((entry) => entry.length > 0);
54
+ if (details) {
55
+ return details;
56
+ }
57
+ return error.message || "Unknown error";
58
+ }
59
+ //# sourceMappingURL=upgradeRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeRun.js","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradeRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAQ9C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,OAAO,CAAC,UAAU,CAAC,uDAAuD,CAAC,CAAC;IAElF,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,gDAAgD,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,wCAAwC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxE,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,CAAC,UAAU,CAAC,wBAAwB,OAAO,CAAC,WAAW,eAAe,CAAC,CAAC;IAErF,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,iDAAiD,OAAO,CAAC,WAAW,OAAO,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAChH,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,CAAC,UAAU,CAAC,mCAAmC,OAAO,CAAC,WAAW,eAAe,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,OAAO,EACP,IAAI,EACJ;YACE,WAAW,EAAE,IAAI;SAClB,EACD,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,MAAM,UAAU,GAAG,KAGlB,CAAC;IACF,MAAM,OAAO,GAAG;QACd,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACtC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KACvC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=upgradeRun.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeRun.spec.d.ts","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradeRun.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ import { describe, expect, it, vi, beforeEach } from "vitest";
2
+ const execFileMock = vi.fn();
3
+ vi.mock("node:child_process", () => ({
4
+ execFile: (...args) => execFileMock(...args)
5
+ }));
6
+ import { upgradeRun } from "./upgradeRun.js";
7
+ function execSucceed() {
8
+ execFileMock.mockImplementationOnce((_command, _args, _options, callback) => {
9
+ callback(null);
10
+ return undefined;
11
+ });
12
+ }
13
+ function execFail(error) {
14
+ execFileMock.mockImplementationOnce((_command, _args, _options, callback) => {
15
+ callback(error);
16
+ return undefined;
17
+ });
18
+ }
19
+ describe("upgradeRun", () => {
20
+ beforeEach(() => {
21
+ execFileMock.mockReset();
22
+ });
23
+ it("runs npm install then pm2 restart and reports status", async () => {
24
+ execSucceed();
25
+ execSucceed();
26
+ const sendStatus = vi.fn(async () => undefined);
27
+ await upgradeRun({
28
+ strategy: "pm2",
29
+ processName: "daycare",
30
+ sendStatus
31
+ });
32
+ expect(execFileMock).toHaveBeenNthCalledWith(1, "npm", ["install", "-g", "daycare-cli"], { windowsHide: true }, expect.any(Function));
33
+ expect(execFileMock).toHaveBeenNthCalledWith(2, "pm2", ["restart", "daycare"], { windowsHide: true }, expect.any(Function));
34
+ expect(sendStatus.mock.calls.map((call) => call[0])).toEqual([
35
+ "Upgrading Daycare CLI (npm install -g daycare-cli)...",
36
+ "Restarting process \"daycare\" via pm2...",
37
+ "Upgrade complete. PM2 process \"daycare\" restarted."
38
+ ]);
39
+ });
40
+ it("reports npm install failures and aborts restart", async () => {
41
+ const error = Object.assign(new Error("install failed"), {
42
+ stderr: "permission denied"
43
+ });
44
+ execFail(error);
45
+ const sendStatus = vi.fn(async () => undefined);
46
+ await expect(upgradeRun({
47
+ strategy: "pm2",
48
+ processName: "daycare",
49
+ sendStatus
50
+ })).rejects.toThrow("Upgrade failed while installing daycare-cli: permission denied");
51
+ expect(execFileMock).toHaveBeenCalledTimes(1);
52
+ expect(sendStatus).toHaveBeenCalledWith("Upgrade failed while installing daycare-cli: permission denied");
53
+ });
54
+ it("reports restart failures after install succeeds", async () => {
55
+ execSucceed();
56
+ const error = Object.assign(new Error("restart failed"), {
57
+ stderr: "pm2 not found"
58
+ });
59
+ execFail(error);
60
+ const sendStatus = vi.fn(async () => undefined);
61
+ await expect(upgradeRun({
62
+ strategy: "pm2",
63
+ processName: "daycare",
64
+ sendStatus
65
+ })).rejects.toThrow('Upgrade failed while restarting PM2 process "daycare": pm2 not found');
66
+ expect(execFileMock).toHaveBeenCalledTimes(2);
67
+ expect(sendStatus).toHaveBeenCalledWith('Upgrade failed while restarting PM2 process "daycare": pm2 not found');
68
+ });
69
+ });
70
+ //# sourceMappingURL=upgradeRun.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgradeRun.spec.js","sourceRoot":"","sources":["../../../sources/plugins/upgrade/upgradeRun.spec.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export type { SessionPermissions } from "./engine/permissions.js";
2
2
  export type { ExecGateDefinition } from "./engine/scheduling/execGateTypes.js";
3
3
  export type { SandboxPackageManager } from "./sandbox/sandboxPackageManagers.js";
4
- export type { Connector, ConnectorCapabilities, ConnectorFile, ConnectorFileDisposition, ConnectorFileMode, ConnectorMessage, CommandHandler, CommandUnsubscribe, MessageContext, MessageHandler, MessageUnsubscribe, PermissionAccess, PermissionEntry, PermissionDecision, PermissionHandler, PermissionKind, PermissionRequest } from "./engine/modules/connectors/types.js";
4
+ export type { Connector, ConnectorCapabilities, ConnectorFile, ConnectorFileDisposition, ConnectorFileMode, ConnectorMessage, CommandHandler, CommandUnsubscribe, MessageContext, MessageHandler, MessageUnsubscribe, PluginCommandDefinition, PermissionAccess, PermissionEntry, PermissionDecision, PermissionHandler, PermissionKind, PermissionRequest, SlashCommandEntry } from "./engine/modules/connectors/types.js";
5
5
  export type { FileReference } from "./files/types.js";
6
6
  export type { PluginApi, PluginInstance, PluginModule, PluginOnboardingApi, PluginOnboardingResult } from "./engine/plugins/types.js";
7
7
  export type { AgentMessage, AgentState, AgentTokenEntry, AgentTokenSize, AgentTokenSnapshotSize, AgentTokenStats, AgentLifecycleState, AgentHistoryRecord, AgentInboxItem, AgentInboxResult, AgentPostTarget, BackgroundAgentState } from "./engine/agents/ops/agentTypes.js";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../sources/types.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAGjF,YAAY,EACV,SAAS,EACT,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,YAAY,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGvG,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAG7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,YAAY,EACV,MAAM,EACN,aAAa,EACb,iCAAiC,EACjC,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,iBAAiB,EAClB,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../sources/types.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAGjF,YAAY,EACV,SAAS,EACT,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAG9C,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,YAAY,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGvG,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAG7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,YAAY,EACV,MAAM,EACN,aAAa,EACb,iCAAiC,EACjC,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,iBAAiB,EAClB,MAAM,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daycare-cli",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "description": "Local-first, plugin-driven multi-agent runtime",
5
5
  "type": "module",
6
6
  "license": "MIT",