palmier 0.7.7 → 0.7.9

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 (106) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/agent.d.ts +3 -0
  3. package/dist/agents/agent.js +1 -1
  4. package/dist/agents/aider.d.ts +1 -0
  5. package/dist/agents/aider.js +1 -0
  6. package/dist/agents/claude.d.ts +1 -0
  7. package/dist/agents/claude.js +1 -0
  8. package/dist/agents/cline.d.ts +1 -0
  9. package/dist/agents/cline.js +1 -0
  10. package/dist/agents/codex.d.ts +1 -0
  11. package/dist/agents/codex.js +1 -0
  12. package/dist/agents/copilot.d.ts +1 -0
  13. package/dist/agents/copilot.js +1 -0
  14. package/dist/agents/cursor.d.ts +1 -0
  15. package/dist/agents/cursor.js +1 -0
  16. package/dist/agents/deepagents.d.ts +1 -0
  17. package/dist/agents/deepagents.js +1 -0
  18. package/dist/agents/droid.d.ts +1 -0
  19. package/dist/agents/droid.js +1 -0
  20. package/dist/agents/gemini.d.ts +1 -0
  21. package/dist/agents/gemini.js +1 -0
  22. package/dist/agents/goose.d.ts +1 -0
  23. package/dist/agents/goose.js +1 -0
  24. package/dist/agents/hermes.d.ts +1 -0
  25. package/dist/agents/hermes.js +1 -0
  26. package/dist/agents/kimi.d.ts +1 -0
  27. package/dist/agents/kimi.js +1 -0
  28. package/dist/agents/kiro.d.ts +1 -0
  29. package/dist/agents/kiro.js +1 -0
  30. package/dist/agents/openclaw.d.ts +1 -0
  31. package/dist/agents/openclaw.js +2 -2
  32. package/dist/agents/opencode.d.ts +1 -0
  33. package/dist/agents/opencode.js +1 -0
  34. package/dist/agents/qoder.d.ts +1 -0
  35. package/dist/agents/qoder.js +1 -0
  36. package/dist/agents/qwen.d.ts +1 -0
  37. package/dist/agents/qwen.js +1 -0
  38. package/dist/commands/pair.js +2 -2
  39. package/dist/mcp-tools.d.ts +2 -0
  40. package/dist/mcp-tools.js +20 -9
  41. package/dist/pending-requests.d.ts +30 -8
  42. package/dist/pending-requests.js +28 -15
  43. package/dist/platform/linux.js +11 -8
  44. package/dist/platform/windows.d.ts +5 -6
  45. package/dist/platform/windows.js +15 -12
  46. package/dist/pwa/assets/index-FP1Mipr6.js +120 -0
  47. package/dist/pwa/assets/index-bLTn8zBj.css +1 -0
  48. package/dist/pwa/assets/{web-CkWrlNwc.js → web-BpM3fNCn.js} +1 -1
  49. package/dist/pwa/assets/{web-lx34oBi7.js → web-CF-N8Di6.js} +1 -1
  50. package/dist/pwa/index.html +2 -2
  51. package/dist/pwa/service-worker.js +1 -1
  52. package/dist/rpc-handler.js +35 -24
  53. package/dist/task.js +1 -1
  54. package/dist/transports/http-transport.js +9 -8
  55. package/dist/types.d.ts +11 -6
  56. package/package.json +1 -1
  57. package/palmier-server/README.md +3 -3
  58. package/palmier-server/pwa/src/App.css +175 -28
  59. package/palmier-server/pwa/src/App.tsx +1 -0
  60. package/palmier-server/pwa/src/components/HostMenu.tsx +7 -2
  61. package/palmier-server/pwa/src/components/PullToRefreshIndicator.tsx +46 -0
  62. package/palmier-server/pwa/src/components/RunDetailView.tsx +58 -15
  63. package/palmier-server/pwa/src/components/SessionComposer.tsx +147 -0
  64. package/palmier-server/pwa/src/components/{RunsView.tsx → SessionsView.tsx} +79 -45
  65. package/palmier-server/pwa/src/components/TabBar.tsx +17 -10
  66. package/palmier-server/pwa/src/components/TaskCard.tsx +33 -35
  67. package/palmier-server/pwa/src/components/TaskForm.tsx +275 -349
  68. package/palmier-server/pwa/src/components/TasksView.tsx +172 -0
  69. package/palmier-server/pwa/src/constants.ts +1 -1
  70. package/palmier-server/pwa/src/contexts/HostStoreContext.tsx +16 -8
  71. package/palmier-server/pwa/src/draftGuard.ts +24 -0
  72. package/palmier-server/pwa/src/hooks/usePullToRefresh.ts +102 -0
  73. package/palmier-server/pwa/src/pages/Dashboard.tsx +343 -37
  74. package/palmier-server/pwa/src/types.ts +5 -14
  75. package/palmier-server/spec.md +39 -26
  76. package/src/agents/agent.ts +5 -1
  77. package/src/agents/aider.ts +1 -0
  78. package/src/agents/claude.ts +1 -0
  79. package/src/agents/cline.ts +1 -0
  80. package/src/agents/codex.ts +1 -0
  81. package/src/agents/copilot.ts +1 -0
  82. package/src/agents/cursor.ts +1 -0
  83. package/src/agents/deepagents.ts +1 -0
  84. package/src/agents/droid.ts +1 -0
  85. package/src/agents/gemini.ts +1 -0
  86. package/src/agents/goose.ts +1 -0
  87. package/src/agents/hermes.ts +1 -0
  88. package/src/agents/kimi.ts +1 -0
  89. package/src/agents/kiro.ts +1 -0
  90. package/src/agents/openclaw.ts +2 -2
  91. package/src/agents/opencode.ts +1 -0
  92. package/src/agents/qoder.ts +1 -0
  93. package/src/agents/qwen.ts +1 -0
  94. package/src/commands/pair.ts +2 -2
  95. package/src/mcp-tools.ts +22 -9
  96. package/src/pending-requests.ts +47 -15
  97. package/src/platform/linux.ts +10 -8
  98. package/src/platform/windows.ts +15 -12
  99. package/src/rpc-handler.ts +39 -26
  100. package/src/task.ts +1 -1
  101. package/src/transports/http-transport.ts +9 -8
  102. package/src/types.ts +10 -8
  103. package/test/pairing.test.ts +2 -2
  104. package/dist/pwa/assets/index-B-ByUHPS.css +0 -1
  105. package/dist/pwa/assets/index-Bt8Hhaw3.js +0 -118
  106. package/palmier-server/pwa/src/components/TaskListView.tsx +0 -431
@@ -181,17 +181,20 @@ Environment=PATH=${process.env.PATH || "/usr/local/bin:/usr/bin:/bin"}
181
181
  `;
182
182
  fs.writeFileSync(path.join(UNIT_DIR, serviceName), serviceContent, "utf-8");
183
183
  daemonReload();
184
- // Only create and enable a timer if triggers exist and are enabled
185
- if (!task.frontmatter.triggers_enabled)
184
+ // Only create and enable a timer if the schedule exists and is enabled
185
+ if (!task.frontmatter.schedule_enabled)
186
+ return;
187
+ const scheduleType = task.frontmatter.schedule_type;
188
+ const scheduleValues = task.frontmatter.schedule_values;
189
+ if (!scheduleType || !scheduleValues?.length)
186
190
  return;
187
- const triggers = task.frontmatter.triggers || [];
188
191
  const onCalendarLines = [];
189
- for (const trigger of triggers) {
190
- if (trigger.type === "cron") {
191
- onCalendarLines.push(`OnCalendar=${cronToOnCalendar(trigger.value)}`);
192
+ for (const value of scheduleValues) {
193
+ if (scheduleType === "crons") {
194
+ onCalendarLines.push(`OnCalendar=${cronToOnCalendar(value)}`);
192
195
  }
193
- else if (trigger.type === "once") {
194
- onCalendarLines.push(`OnActiveSec=${trigger.value}`);
196
+ else if (scheduleType === "specific_times") {
197
+ onCalendarLines.push(`OnActiveSec=${value}`);
195
198
  }
196
199
  }
197
200
  if (onCalendarLines.length > 0) {
@@ -1,18 +1,17 @@
1
1
  import type { PlatformService } from "./platform.js";
2
2
  import type { HostConfig, ParsedTask } from "../types.js";
3
3
  /**
4
- * Convert a cron expression or "once" trigger to Task Scheduler XML trigger elements.
4
+ * Convert a single schedule value to a Task Scheduler XML trigger element.
5
5
  *
6
- * Only these cron patterns (produced by the PWA UI) are handled:
6
+ * `specific_times` values are ISO datetime strings like "2026-03-28T09:00".
7
+ *
8
+ * `crons` values are cron expressions. Only these patterns (produced by the PWA UI) are handled:
7
9
  * hourly: "0 * * * *"
8
10
  * daily: "MM HH * * *"
9
11
  * weekly: "MM HH * * D"
10
12
  * monthly: "MM HH D * *"
11
13
  */
12
- export declare function triggerToXml(trigger: {
13
- type: string;
14
- value: string;
15
- }): string;
14
+ export declare function scheduleValueToXml(scheduleType: "crons" | "specific_times", value: string): string;
16
15
  /**
17
16
  * Build a complete Task Scheduler XML definition.
18
17
  */
@@ -7,22 +7,23 @@ const TASK_PREFIX = "\\Palmier\\PalmierTask-";
7
7
  const DAEMON_TASK_NAME = "PalmierDaemon";
8
8
  const DOW_NAMES = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
9
9
  /**
10
- * Convert a cron expression or "once" trigger to Task Scheduler XML trigger elements.
10
+ * Convert a single schedule value to a Task Scheduler XML trigger element.
11
11
  *
12
- * Only these cron patterns (produced by the PWA UI) are handled:
12
+ * `specific_times` values are ISO datetime strings like "2026-03-28T09:00".
13
+ *
14
+ * `crons` values are cron expressions. Only these patterns (produced by the PWA UI) are handled:
13
15
  * hourly: "0 * * * *"
14
16
  * daily: "MM HH * * *"
15
17
  * weekly: "MM HH * * D"
16
18
  * monthly: "MM HH D * *"
17
19
  */
18
- export function triggerToXml(trigger) {
19
- if (trigger.type === "once") {
20
- // ISO datetime "2026-03-28T09:00"
21
- return `<TimeTrigger><StartBoundary>${trigger.value}:00</StartBoundary></TimeTrigger>`;
20
+ export function scheduleValueToXml(scheduleType, value) {
21
+ if (scheduleType === "specific_times") {
22
+ return `<TimeTrigger><StartBoundary>${value}:00</StartBoundary></TimeTrigger>`;
22
23
  }
23
- const parts = trigger.value.trim().split(/\s+/);
24
+ const parts = value.trim().split(/\s+/);
24
25
  if (parts.length !== 5)
25
- throw new Error(`Invalid cron expression: ${trigger.value}`);
26
+ throw new Error(`Invalid cron expression: ${value}`);
26
27
  const [minute, hour, dayOfMonth, , dayOfWeek] = parts;
27
28
  const st = `${hour.padStart(2, "0")}:${minute.padStart(2, "0")}:00`;
28
29
  // StartBoundary needs a full date; use a past date as the anchor
@@ -178,13 +179,15 @@ export class WindowsPlatform {
178
179
  const tr = `"${process.execPath}" "${script}" run ${taskId}`;
179
180
  // Build trigger XML elements
180
181
  const triggerElements = [];
181
- if (task.frontmatter.triggers_enabled) {
182
- for (const trigger of task.frontmatter.triggers ?? []) {
182
+ const scheduleType = task.frontmatter.schedule_type;
183
+ const scheduleValues = task.frontmatter.schedule_values;
184
+ if (task.frontmatter.schedule_enabled && scheduleType && scheduleValues?.length) {
185
+ for (const value of scheduleValues) {
183
186
  try {
184
- triggerElements.push(triggerToXml(trigger));
187
+ triggerElements.push(scheduleValueToXml(scheduleType, value));
185
188
  }
186
189
  catch (err) {
187
- console.error(`Invalid trigger: ${err}`);
190
+ console.error(`Invalid schedule value: ${err}`);
188
191
  }
189
192
  }
190
193
  }