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.
- package/README.md +1 -1
- package/dist/agents/agent.d.ts +3 -0
- package/dist/agents/agent.js +1 -1
- package/dist/agents/aider.d.ts +1 -0
- package/dist/agents/aider.js +1 -0
- package/dist/agents/claude.d.ts +1 -0
- package/dist/agents/claude.js +1 -0
- package/dist/agents/cline.d.ts +1 -0
- package/dist/agents/cline.js +1 -0
- package/dist/agents/codex.d.ts +1 -0
- package/dist/agents/codex.js +1 -0
- package/dist/agents/copilot.d.ts +1 -0
- package/dist/agents/copilot.js +1 -0
- package/dist/agents/cursor.d.ts +1 -0
- package/dist/agents/cursor.js +1 -0
- package/dist/agents/deepagents.d.ts +1 -0
- package/dist/agents/deepagents.js +1 -0
- package/dist/agents/droid.d.ts +1 -0
- package/dist/agents/droid.js +1 -0
- package/dist/agents/gemini.d.ts +1 -0
- package/dist/agents/gemini.js +1 -0
- package/dist/agents/goose.d.ts +1 -0
- package/dist/agents/goose.js +1 -0
- package/dist/agents/hermes.d.ts +1 -0
- package/dist/agents/hermes.js +1 -0
- package/dist/agents/kimi.d.ts +1 -0
- package/dist/agents/kimi.js +1 -0
- package/dist/agents/kiro.d.ts +1 -0
- package/dist/agents/kiro.js +1 -0
- package/dist/agents/openclaw.d.ts +1 -0
- package/dist/agents/openclaw.js +2 -2
- package/dist/agents/opencode.d.ts +1 -0
- package/dist/agents/opencode.js +1 -0
- package/dist/agents/qoder.d.ts +1 -0
- package/dist/agents/qoder.js +1 -0
- package/dist/agents/qwen.d.ts +1 -0
- package/dist/agents/qwen.js +1 -0
- package/dist/commands/pair.js +2 -2
- package/dist/mcp-tools.d.ts +2 -0
- package/dist/mcp-tools.js +20 -9
- package/dist/pending-requests.d.ts +30 -8
- package/dist/pending-requests.js +28 -15
- package/dist/platform/linux.js +11 -8
- package/dist/platform/windows.d.ts +5 -6
- package/dist/platform/windows.js +15 -12
- package/dist/pwa/assets/index-FP1Mipr6.js +120 -0
- package/dist/pwa/assets/index-bLTn8zBj.css +1 -0
- package/dist/pwa/assets/{web-CkWrlNwc.js → web-BpM3fNCn.js} +1 -1
- package/dist/pwa/assets/{web-lx34oBi7.js → web-CF-N8Di6.js} +1 -1
- package/dist/pwa/index.html +2 -2
- package/dist/pwa/service-worker.js +1 -1
- package/dist/rpc-handler.js +35 -24
- package/dist/task.js +1 -1
- package/dist/transports/http-transport.js +9 -8
- package/dist/types.d.ts +11 -6
- package/package.json +1 -1
- package/palmier-server/README.md +3 -3
- package/palmier-server/pwa/src/App.css +175 -28
- package/palmier-server/pwa/src/App.tsx +1 -0
- package/palmier-server/pwa/src/components/HostMenu.tsx +7 -2
- package/palmier-server/pwa/src/components/PullToRefreshIndicator.tsx +46 -0
- package/palmier-server/pwa/src/components/RunDetailView.tsx +58 -15
- package/palmier-server/pwa/src/components/SessionComposer.tsx +147 -0
- package/palmier-server/pwa/src/components/{RunsView.tsx → SessionsView.tsx} +79 -45
- package/palmier-server/pwa/src/components/TabBar.tsx +17 -10
- package/palmier-server/pwa/src/components/TaskCard.tsx +33 -35
- package/palmier-server/pwa/src/components/TaskForm.tsx +275 -349
- package/palmier-server/pwa/src/components/TasksView.tsx +172 -0
- package/palmier-server/pwa/src/constants.ts +1 -1
- package/palmier-server/pwa/src/contexts/HostStoreContext.tsx +16 -8
- package/palmier-server/pwa/src/draftGuard.ts +24 -0
- package/palmier-server/pwa/src/hooks/usePullToRefresh.ts +102 -0
- package/palmier-server/pwa/src/pages/Dashboard.tsx +343 -37
- package/palmier-server/pwa/src/types.ts +5 -14
- package/palmier-server/spec.md +39 -26
- package/src/agents/agent.ts +5 -1
- package/src/agents/aider.ts +1 -0
- package/src/agents/claude.ts +1 -0
- package/src/agents/cline.ts +1 -0
- package/src/agents/codex.ts +1 -0
- package/src/agents/copilot.ts +1 -0
- package/src/agents/cursor.ts +1 -0
- package/src/agents/deepagents.ts +1 -0
- package/src/agents/droid.ts +1 -0
- package/src/agents/gemini.ts +1 -0
- package/src/agents/goose.ts +1 -0
- package/src/agents/hermes.ts +1 -0
- package/src/agents/kimi.ts +1 -0
- package/src/agents/kiro.ts +1 -0
- package/src/agents/openclaw.ts +2 -2
- package/src/agents/opencode.ts +1 -0
- package/src/agents/qoder.ts +1 -0
- package/src/agents/qwen.ts +1 -0
- package/src/commands/pair.ts +2 -2
- package/src/mcp-tools.ts +22 -9
- package/src/pending-requests.ts +47 -15
- package/src/platform/linux.ts +10 -8
- package/src/platform/windows.ts +15 -12
- package/src/rpc-handler.ts +39 -26
- package/src/task.ts +1 -1
- package/src/transports/http-transport.ts +9 -8
- package/src/types.ts +10 -8
- package/test/pairing.test.ts +2 -2
- package/dist/pwa/assets/index-B-ByUHPS.css +0 -1
- package/dist/pwa/assets/index-Bt8Hhaw3.js +0 -118
- package/palmier-server/pwa/src/components/TaskListView.tsx +0 -431
package/dist/platform/linux.js
CHANGED
|
@@ -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
|
|
185
|
-
if (!task.frontmatter.
|
|
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
|
|
190
|
-
if (
|
|
191
|
-
onCalendarLines.push(`OnCalendar=${cronToOnCalendar(
|
|
192
|
+
for (const value of scheduleValues) {
|
|
193
|
+
if (scheduleType === "crons") {
|
|
194
|
+
onCalendarLines.push(`OnCalendar=${cronToOnCalendar(value)}`);
|
|
192
195
|
}
|
|
193
|
-
else if (
|
|
194
|
-
onCalendarLines.push(`OnActiveSec=${
|
|
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
|
|
4
|
+
* Convert a single schedule value to a Task Scheduler XML trigger element.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
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
|
|
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
|
*/
|
package/dist/platform/windows.js
CHANGED
|
@@ -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
|
|
10
|
+
* Convert a single schedule value to a Task Scheduler XML trigger element.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
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
|
|
19
|
-
if (
|
|
20
|
-
|
|
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 =
|
|
24
|
+
const parts = value.trim().split(/\s+/);
|
|
24
25
|
if (parts.length !== 5)
|
|
25
|
-
throw new Error(`Invalid cron expression: ${
|
|
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
|
-
|
|
182
|
-
|
|
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(
|
|
187
|
+
triggerElements.push(scheduleValueToXml(scheduleType, value));
|
|
185
188
|
}
|
|
186
189
|
catch (err) {
|
|
187
|
-
console.error(`Invalid
|
|
190
|
+
console.error(`Invalid schedule value: ${err}`);
|
|
188
191
|
}
|
|
189
192
|
}
|
|
190
193
|
}
|