palmier 0.9.18 → 0.9.19

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.
@@ -1 +1 @@
1
- import{W as t}from"./index-DJ-f-zPM.js";class s extends t{constructor(){super(),this.handleVisibilityChange=()=>{const e={isActive:document.hidden!==!0};this.notifyListeners("appStateChange",e),document.hidden?this.notifyListeners("pause",null):this.notifyListeners("resume",null)},document.addEventListener("visibilitychange",this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented("Not implemented on web.")}async getInfo(){throw this.unimplemented("Not implemented on web.")}async getLaunchUrl(){return{url:""}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented("Not implemented on web.")}async toggleBackButtonHandler(){throw this.unimplemented("Not implemented on web.")}async getAppLanguage(){return{value:navigator.language.split("-")[0].toLowerCase()}}}export{s as AppWeb};
1
+ import{W as t}from"./index-CcZCM6E8.js";class s extends t{constructor(){super(),this.handleVisibilityChange=()=>{const e={isActive:document.hidden!==!0};this.notifyListeners("appStateChange",e),document.hidden?this.notifyListeners("pause",null):this.notifyListeners("resume",null)},document.addEventListener("visibilitychange",this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented("Not implemented on web.")}async getInfo(){throw this.unimplemented("Not implemented on web.")}async getLaunchUrl(){return{url:""}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented("Not implemented on web.")}async toggleBackButtonHandler(){throw this.unimplemented("Not implemented on web.")}async getAppLanguage(){return{value:navigator.language.split("-")[0].toLowerCase()}}}export{s as AppWeb};
@@ -1 +1 @@
1
- import{W as i}from"./index-DJ-f-zPM.js";function o(){const t=window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection;let n="unknown";const e=t?t.type||t.effectiveType:null;if(e&&typeof e=="string")switch(e){case"bluetooth":case"cellular":n="cellular";break;case"none":n="none";break;case"ethernet":case"wifi":case"wimax":n="wifi";break;case"other":case"unknown":n="unknown";break;case"slow-2g":case"2g":case"3g":n="cellular";break;case"4g":n="wifi";break}return n}class s extends i{constructor(){super(),this.handleOnline=()=>{const e={connected:!0,connectionType:o()};this.notifyListeners("networkStatusChange",e)},this.handleOffline=()=>{const n={connected:!1,connectionType:"none"};this.notifyListeners("networkStatusChange",n)},typeof window<"u"&&(window.addEventListener("online",this.handleOnline),window.addEventListener("offline",this.handleOffline))}async getStatus(){if(!window.navigator)throw this.unavailable("Browser does not support the Network Information API");const n=window.navigator.onLine,e=o();return{connected:n,connectionType:n?e:"none"}}}const r=new s;export{r as Network,s as NetworkWeb};
1
+ import{W as i}from"./index-CcZCM6E8.js";function o(){const t=window.navigator.connection||window.navigator.mozConnection||window.navigator.webkitConnection;let n="unknown";const e=t?t.type||t.effectiveType:null;if(e&&typeof e=="string")switch(e){case"bluetooth":case"cellular":n="cellular";break;case"none":n="none";break;case"ethernet":case"wifi":case"wimax":n="wifi";break;case"other":case"unknown":n="unknown";break;case"slow-2g":case"2g":case"3g":n="cellular";break;case"4g":n="wifi";break}return n}class s extends i{constructor(){super(),this.handleOnline=()=>{const e={connected:!0,connectionType:o()};this.notifyListeners("networkStatusChange",e)},this.handleOffline=()=>{const n={connected:!1,connectionType:"none"};this.notifyListeners("networkStatusChange",n)},typeof window<"u"&&(window.addEventListener("online",this.handleOnline),window.addEventListener("offline",this.handleOffline))}async getStatus(){if(!window.navigator)throw this.unavailable("Browser does not support the Network Information API");const n=window.navigator.onLine,e=o();return{connected:n,connectionType:n?e:"none"}}}const r=new s;export{r as Network,s as NetworkWeb};
@@ -1 +1 @@
1
- import{W as p}from"./index-DJ-f-zPM.js";class f extends p{constructor(){super(...arguments),this.group="CapacitorStorage"}async configure({group:e}){typeof e=="string"&&(this.group=e)}async get(e){return{value:this.impl.getItem(this.applyPrefix(e.key))}}async set(e){this.impl.setItem(this.applyPrefix(e.key),e.value)}async remove(e){this.impl.removeItem(this.applyPrefix(e.key))}async keys(){return{keys:this.rawKeys().map(t=>t.substring(this.prefix.length))}}async clear(){for(const e of this.rawKeys())this.impl.removeItem(e)}async migrate(){var e;const t=[],s=[],n="_cap_",o=Object.keys(this.impl).filter(i=>i.indexOf(n)===0);for(const i of o){const r=i.substring(n.length),a=(e=this.impl.getItem(i))!==null&&e!==void 0?e:"",{value:l}=await this.get({key:r});typeof l=="string"?s.push(r):(await this.set({key:r,value:a}),t.push(r))}return{migrated:t,existing:s}}async removeOld(){const e="_cap_",t=Object.keys(this.impl).filter(s=>s.indexOf(e)===0);for(const s of t)this.impl.removeItem(s)}get impl(){return window.localStorage}get prefix(){return this.group==="NativeStorage"?"":`${this.group}.`}rawKeys(){return Object.keys(this.impl).filter(e=>e.indexOf(this.prefix)===0)}applyPrefix(e){return this.prefix+e}}export{f as PreferencesWeb};
1
+ import{W as p}from"./index-CcZCM6E8.js";class f extends p{constructor(){super(...arguments),this.group="CapacitorStorage"}async configure({group:e}){typeof e=="string"&&(this.group=e)}async get(e){return{value:this.impl.getItem(this.applyPrefix(e.key))}}async set(e){this.impl.setItem(this.applyPrefix(e.key),e.value)}async remove(e){this.impl.removeItem(this.applyPrefix(e.key))}async keys(){return{keys:this.rawKeys().map(t=>t.substring(this.prefix.length))}}async clear(){for(const e of this.rawKeys())this.impl.removeItem(e)}async migrate(){var e;const t=[],s=[],n="_cap_",o=Object.keys(this.impl).filter(i=>i.indexOf(n)===0);for(const i of o){const r=i.substring(n.length),a=(e=this.impl.getItem(i))!==null&&e!==void 0?e:"",{value:l}=await this.get({key:r});typeof l=="string"?s.push(r):(await this.set({key:r,value:a}),t.push(r))}return{migrated:t,existing:s}}async removeOld(){const e="_cap_",t=Object.keys(this.impl).filter(s=>s.indexOf(e)===0);for(const s of t)this.impl.removeItem(s)}get impl(){return window.localStorage}get prefix(){return this.group==="NativeStorage"?"":`${this.group}.`}rawKeys(){return Object.keys(this.impl).filter(e=>e.indexOf(this.prefix)===0)}applyPrefix(e){return this.prefix+e}}export{f as PreferencesWeb};
@@ -8,8 +8,8 @@
8
8
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
9
9
  <title>Palmier</title>
10
10
  <meta name="description" content="Run tasks from anywhere, approve actions on the go, and let your agents use your phone’s built-in capabilities when needed." />
11
- <script type="module" crossorigin src="/assets/index-DJ-f-zPM.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-7Atn3jMz.css">
11
+ <script type="module" crossorigin src="/assets/index-CcZCM6E8.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-C0RDMMZW.css">
13
13
  <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
14
14
  <body>
15
15
  <div id="root"></div>
@@ -50,6 +50,7 @@ export function parseResultFrontmatter(raw) {
50
50
  messages,
51
51
  task_name: meta.task_name,
52
52
  agent: meta.agent,
53
+ agent_version: meta.agent_version,
53
54
  running_state: runningState,
54
55
  start_time: startedMsg?.time || undefined,
55
56
  end_time: terminalMsg?.time || undefined,
@@ -278,7 +279,8 @@ export function createRpcHandler(config, nc) {
278
279
  };
279
280
  writeTaskFile(taskDir, task);
280
281
  // One-off run: do NOT append to tasks.jsonl.
281
- const runId = createRunDir(taskDir, name, Date.now(), params.agent);
282
+ const oneoffAgentVersion = config.agents?.find((a) => a.key === params.agent)?.version;
283
+ const runId = createRunDir(taskDir, name, Date.now(), params.agent, oneoffAgentVersion);
282
284
  appendHistory(config.projectRoot, { task_id: id, run_id: runId });
283
285
  const platform = getPlatform();
284
286
  platform.installTaskTimer(config, task);
@@ -304,7 +306,8 @@ export function createRpcHandler(config, nc) {
304
306
  await platform.stopTask(params.id);
305
307
  }
306
308
  const runTask = parseTaskFile(runTaskDir);
307
- taskRunId = createRunDir(runTaskDir, runTask.frontmatter.name, Date.now(), runTask.frontmatter.agent);
309
+ const taskRunAgentVersion = config.agents?.find((a) => a.key === runTask.frontmatter.agent)?.version;
310
+ taskRunId = createRunDir(runTaskDir, runTask.frontmatter.name, Date.now(), runTask.frontmatter.agent, taskRunAgentVersion);
308
311
  appendHistory(config.projectRoot, { task_id: params.id, run_id: taskRunId });
309
312
  await platform.startTask(params.id);
310
313
  return { ok: true, task_id: params.id, run_id: taskRunId };
package/dist/task.d.ts CHANGED
@@ -17,7 +17,7 @@ export declare function writeFollowupStatus(runDir: string, status: FollowupStat
17
17
  export declare function readFollowupStatus(runDir: string): FollowupStatus | undefined;
18
18
  export declare function deleteFollowupStatus(runDir: string): void;
19
19
  /** Returns the run ID (timestamp string used as directory name). */
20
- export declare function createRunDir(taskDir: string, taskName: string, startTime: number, agent?: string): string;
20
+ export declare function createRunDir(taskDir: string, taskName: string, startTime: number, agent?: string, agentVersion?: string): string;
21
21
  export declare function getRunDir(taskDir: string, runId: string): string;
22
22
  export declare function appendRunMessage(taskDir: string, runId: string, msg: ConversationMessage): void;
23
23
  export declare function beginStreamingMessage(taskDir: string, runId: string, time: number, stream?: "stdout" | "stderr"): StreamingMessageWriter;
package/dist/task.js CHANGED
@@ -130,12 +130,13 @@ export function deleteFollowupStatus(runDir) {
130
130
  catch { /* ignore */ }
131
131
  }
132
132
  /** Returns the run ID (timestamp string used as directory name). */
133
- export function createRunDir(taskDir, taskName, startTime, agent) {
133
+ export function createRunDir(taskDir, taskName, startTime, agent, agentVersion) {
134
134
  const runId = String(startTime);
135
135
  const runDir = path.join(taskDir, runId);
136
136
  fs.mkdirSync(runDir, { recursive: true });
137
137
  const agentLine = agent ? `\nagent: ${agent}` : "";
138
- const content = `---\ntask_name: ${taskName}${agentLine}\n---\n\n`;
138
+ const versionLine = agentVersion ? `\nagent_version: ${agentVersion}` : "";
139
+ const content = `---\ntask_name: ${taskName}${agentLine}${versionLine}\n---\n\n`;
139
140
  fs.writeFileSync(path.join(runDir, "TASKRUN.md"), content, "utf-8");
140
141
  return runId;
141
142
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "palmier",
3
- "version": "0.9.18",
3
+ "version": "0.9.19",
4
4
  "description": "Palmier host CLI - provisions, executes tasks, and serves NATS RPC",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Hongxu Cai",