capacitor-mobile-claw 2.0.0 → 2.0.2
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/dist/esm/engine.d.ts.map +1 -1
- package/dist/esm/engine.js +4 -6
- package/dist/esm/engine.js.map +1 -1
- package/package.json +1 -1
- package/dist/esm/agent/agent-runner.d.ts +0 -93
- package/dist/esm/agent/agent-runner.d.ts.map +0 -1
- package/dist/esm/agent/agent-runner.js +0 -352
- package/dist/esm/agent/agent-runner.js.map +0 -1
- package/dist/esm/agent/auth-store.d.ts +0 -31
- package/dist/esm/agent/auth-store.d.ts.map +0 -1
- package/dist/esm/agent/auth-store.js +0 -121
- package/dist/esm/agent/auth-store.js.map +0 -1
- package/dist/esm/agent/capacitor-fs-adapter.d.ts +0 -65
- package/dist/esm/agent/capacitor-fs-adapter.d.ts.map +0 -1
- package/dist/esm/agent/capacitor-fs-adapter.js +0 -186
- package/dist/esm/agent/capacitor-fs-adapter.js.map +0 -1
- package/dist/esm/agent/cron-db-access.d.ts +0 -116
- package/dist/esm/agent/cron-db-access.d.ts.map +0 -1
- package/dist/esm/agent/cron-db-access.js +0 -741
- package/dist/esm/agent/cron-db-access.js.map +0 -1
- package/dist/esm/agent/fetch-proxy.d.ts +0 -2
- package/dist/esm/agent/fetch-proxy.d.ts.map +0 -1
- package/dist/esm/agent/fetch-proxy.js +0 -171
- package/dist/esm/agent/fetch-proxy.js.map +0 -1
- package/dist/esm/agent/file-tools.d.ts +0 -17
- package/dist/esm/agent/file-tools.d.ts.map +0 -1
- package/dist/esm/agent/file-tools.js +0 -295
- package/dist/esm/agent/file-tools.js.map +0 -1
- package/dist/esm/agent/git-tools.d.ts +0 -17
- package/dist/esm/agent/git-tools.d.ts.map +0 -1
- package/dist/esm/agent/git-tools.js +0 -184
- package/dist/esm/agent/git-tools.js.map +0 -1
- package/dist/esm/agent/heartbeat-manager.d.ts +0 -63
- package/dist/esm/agent/heartbeat-manager.d.ts.map +0 -1
- package/dist/esm/agent/heartbeat-manager.js +0 -711
- package/dist/esm/agent/heartbeat-manager.js.map +0 -1
- package/dist/esm/agent/retry-logic.d.ts +0 -9
- package/dist/esm/agent/retry-logic.d.ts.map +0 -1
- package/dist/esm/agent/retry-logic.js +0 -30
- package/dist/esm/agent/retry-logic.js.map +0 -1
- package/dist/esm/agent/session-store.d.ts +0 -31
- package/dist/esm/agent/session-store.d.ts.map +0 -1
- package/dist/esm/agent/session-store.js +0 -223
- package/dist/esm/agent/session-store.js.map +0 -1
- package/dist/esm/agent/tool-proxy.d.ts +0 -25
- package/dist/esm/agent/tool-proxy.d.ts.map +0 -1
- package/dist/esm/agent/tool-proxy.js +0 -58
- package/dist/esm/agent/tool-proxy.js.map +0 -1
- package/dist/esm/agent/tool-schemas.d.ts +0 -16
- package/dist/esm/agent/tool-schemas.d.ts.map +0 -1
- package/dist/esm/agent/tool-schemas.js +0 -129
- package/dist/esm/agent/tool-schemas.js.map +0 -1
- package/dist/esm/agent/wasm-tools.d.ts +0 -11
- package/dist/esm/agent/wasm-tools.d.ts.map +0 -1
- package/dist/esm/agent/wasm-tools.js +0 -70
- package/dist/esm/agent/wasm-tools.js.map +0 -1
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Native git tools using isomorphic-git + @capacitor/filesystem.
|
|
3
|
-
*
|
|
4
|
-
* Replaces the Node.js worker's git tools (git_init, git_status, git_add,
|
|
5
|
-
* git_commit, git_log, git_diff) with isomorphic-git running in the WebView
|
|
6
|
-
* using a Capacitor filesystem adapter.
|
|
7
|
-
*/
|
|
8
|
-
import git from 'isomorphic-git';
|
|
9
|
-
import { capacitorFs } from './capacitor-fs-adapter';
|
|
10
|
-
/** Workspace root path, set by engine on init. */
|
|
11
|
-
let _workspaceDir = '';
|
|
12
|
-
/** Set the workspace directory (absolute path for isomorphic-git). */
|
|
13
|
-
export function setWorkspaceDir(dir) {
|
|
14
|
-
_workspaceDir = dir;
|
|
15
|
-
}
|
|
16
|
-
function toolResult(data) {
|
|
17
|
-
return {
|
|
18
|
-
content: [{ type: 'text', text: JSON.stringify(data) }],
|
|
19
|
-
details: data,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
// ── git_init ────────────────────────────────────────────────────────────────
|
|
23
|
-
export async function gitInitNative(params) {
|
|
24
|
-
const defaultBranch = params.default_branch || 'main';
|
|
25
|
-
try {
|
|
26
|
-
await git.init({ fs: capacitorFs, dir: _workspaceDir, defaultBranch });
|
|
27
|
-
// Auto-create .gitignore if it doesn't exist
|
|
28
|
-
try {
|
|
29
|
-
await capacitorFs.promises.readFile(`${_workspaceDir}/.gitignore`, { encoding: 'utf8' });
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
await capacitorFs.promises.writeFile(`${_workspaceDir}/.gitignore`, '.openclaw/\n', { encoding: 'utf8' });
|
|
33
|
-
}
|
|
34
|
-
return toolResult({ success: true, message: `Initialized git repository with branch "${defaultBranch}"` });
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
return toolResult({ error: `Failed to initialize git: ${err.message}` });
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
// ── git_status ──────────────────────────────────────────────────────────────
|
|
41
|
-
export async function gitStatusNative(_params) {
|
|
42
|
-
try {
|
|
43
|
-
const matrix = await git.statusMatrix({ fs: capacitorFs, dir: _workspaceDir });
|
|
44
|
-
const files = matrix
|
|
45
|
-
.map(([filepath, head, workdir, stage]) => {
|
|
46
|
-
let status = 'unmodified';
|
|
47
|
-
if (head === 0 && workdir === 2 && stage === 0)
|
|
48
|
-
status = 'untracked';
|
|
49
|
-
else if (head === 0 && workdir === 2 && stage === 2)
|
|
50
|
-
status = 'added';
|
|
51
|
-
else if (head === 0 && workdir === 2 && stage === 3)
|
|
52
|
-
status = 'added (modified)';
|
|
53
|
-
else if (head === 1 && workdir === 2 && stage === 1)
|
|
54
|
-
status = 'modified (unstaged)';
|
|
55
|
-
else if (head === 1 && workdir === 2 && stage === 2)
|
|
56
|
-
status = 'modified (staged)';
|
|
57
|
-
else if (head === 1 && workdir === 2 && stage === 3)
|
|
58
|
-
status = 'modified (staged + unstaged)';
|
|
59
|
-
else if (head === 1 && workdir === 0 && stage === 0)
|
|
60
|
-
status = 'deleted (unstaged)';
|
|
61
|
-
else if (head === 1 && workdir === 0 && stage === 1)
|
|
62
|
-
status = 'deleted (staged)';
|
|
63
|
-
return { path: filepath, status };
|
|
64
|
-
})
|
|
65
|
-
.filter((f) => f.status !== 'unmodified');
|
|
66
|
-
return toolResult({ files });
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
return toolResult({ error: `Failed to get status: ${err.message}` });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// ── git_add ─────────────────────────────────────────────────────────────────
|
|
73
|
-
export async function gitAddNative(params) {
|
|
74
|
-
try {
|
|
75
|
-
if (params.path === '.') {
|
|
76
|
-
const matrix = await git.statusMatrix({ fs: capacitorFs, dir: _workspaceDir });
|
|
77
|
-
for (const [filepath, head, workdir, stage] of matrix) {
|
|
78
|
-
if (workdir === 0) {
|
|
79
|
-
await git.remove({ fs: capacitorFs, dir: _workspaceDir, filepath });
|
|
80
|
-
}
|
|
81
|
-
else if (head !== workdir || workdir !== stage) {
|
|
82
|
-
await git.add({ fs: capacitorFs, dir: _workspaceDir, filepath });
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return toolResult({ success: true, message: 'All changes staged' });
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
await git.add({ fs: capacitorFs, dir: _workspaceDir, filepath: params.path });
|
|
89
|
-
return toolResult({ success: true, path: params.path });
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
return toolResult({ error: `Failed to stage: ${err.message}` });
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// ── git_commit ──────────────────────────────────────────────────────────────
|
|
97
|
-
export async function gitCommitNative(params) {
|
|
98
|
-
try {
|
|
99
|
-
const sha = await git.commit({
|
|
100
|
-
fs: capacitorFs,
|
|
101
|
-
dir: _workspaceDir,
|
|
102
|
-
message: params.message,
|
|
103
|
-
author: {
|
|
104
|
-
name: params.author_name || 'mobile-claw',
|
|
105
|
-
email: params.author_email || 'agent@mobile-claw.local',
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
return toolResult({ success: true, sha, message: params.message });
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
return toolResult({ error: `Failed to commit: ${err.message}` });
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// ── git_log ─────────────────────────────────────────────────────────────────
|
|
115
|
-
export async function gitLogNative(params) {
|
|
116
|
-
try {
|
|
117
|
-
const commits = await git.log({
|
|
118
|
-
fs: capacitorFs,
|
|
119
|
-
dir: _workspaceDir,
|
|
120
|
-
depth: params.max_count || 10,
|
|
121
|
-
});
|
|
122
|
-
return toolResult({
|
|
123
|
-
commits: commits.map((c) => ({
|
|
124
|
-
sha: c.oid,
|
|
125
|
-
message: c.commit.message,
|
|
126
|
-
author: c.commit.author.name,
|
|
127
|
-
email: c.commit.author.email,
|
|
128
|
-
timestamp: new Date(c.commit.author.timestamp * 1000).toISOString(),
|
|
129
|
-
})),
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
return toolResult({ error: `Failed to get log: ${err.message}` });
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
// ── git_diff ────────────────────────────────────────────────────────────────
|
|
137
|
-
export async function gitDiffNative(params) {
|
|
138
|
-
try {
|
|
139
|
-
const matrix = await git.statusMatrix({ fs: capacitorFs, dir: _workspaceDir });
|
|
140
|
-
const changes = [];
|
|
141
|
-
let headOid = null;
|
|
142
|
-
try {
|
|
143
|
-
headOid = await git.resolveRef({ fs: capacitorFs, dir: _workspaceDir, ref: 'HEAD' });
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
/* no commits yet */
|
|
147
|
-
}
|
|
148
|
-
for (const [filepath, head, workdir, stage] of matrix) {
|
|
149
|
-
const isRelevant = params.cached ? stage !== head : workdir !== stage;
|
|
150
|
-
if (!isRelevant)
|
|
151
|
-
continue;
|
|
152
|
-
let currentContent = null;
|
|
153
|
-
try {
|
|
154
|
-
currentContent = (await capacitorFs.promises.readFile(`${_workspaceDir}/${filepath}`, {
|
|
155
|
-
encoding: 'utf8',
|
|
156
|
-
}));
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
159
|
-
/* file deleted */
|
|
160
|
-
}
|
|
161
|
-
let previousContent = null;
|
|
162
|
-
if (headOid) {
|
|
163
|
-
try {
|
|
164
|
-
const { blob } = await git.readBlob({ fs: capacitorFs, dir: _workspaceDir, oid: headOid, filepath });
|
|
165
|
-
previousContent = new TextDecoder().decode(blob);
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
/* new file */
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
changes.push({
|
|
172
|
-
path: filepath,
|
|
173
|
-
previous: previousContent ? previousContent.substring(0, 2000) : null,
|
|
174
|
-
current: currentContent ? currentContent.substring(0, 2000) : null,
|
|
175
|
-
type: !previousContent ? 'added' : !currentContent ? 'deleted' : 'modified',
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
return toolResult({ changes });
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
return toolResult({ error: `Failed to get diff: ${err.message}` });
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=git-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-tools.js","sourceRoot":"","sources":["../../../src/agent/git-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { CronDbAccess, CronJobStoreRecord, PendingSystemEvent } from './cron-db-access';
|
|
2
|
-
import type { ToolProxy } from './tool-proxy';
|
|
3
|
-
type AgentTool<TParameters extends import('@sinclair/typebox').TSchema = import('@sinclair/typebox').TSchema, TDetails = any> = import('@mariozechner/pi-agent-core').AgentTool<TParameters, TDetails>;
|
|
4
|
-
export interface HeartbeatManagerConfig {
|
|
5
|
-
dispatch: (msg: Record<string, unknown>) => void;
|
|
6
|
-
toolProxy: ToolProxy;
|
|
7
|
-
cronDb: CronDbAccess;
|
|
8
|
-
getAuth: (provider: string, agentId: string) => Promise<{
|
|
9
|
-
apiKey: string | null;
|
|
10
|
-
}>;
|
|
11
|
-
getSystemPrompt: (agentId: string) => Promise<{
|
|
12
|
-
systemPrompt: string;
|
|
13
|
-
}>;
|
|
14
|
-
isUserAgentRunning: () => boolean;
|
|
15
|
-
getCurrentSessionKey: () => string | null;
|
|
16
|
-
extraTools?: AgentTool<any>[];
|
|
17
|
-
/** Consumer-owned policy: returns true if tool requires user approval. */
|
|
18
|
-
needsApproval?: (toolName: string) => boolean;
|
|
19
|
-
}
|
|
20
|
-
interface HeartbeatWakeOptions {
|
|
21
|
-
force?: boolean;
|
|
22
|
-
forceJobId?: string;
|
|
23
|
-
forceSessionKey?: string;
|
|
24
|
-
}
|
|
25
|
-
export declare class HeartbeatManager {
|
|
26
|
-
private config;
|
|
27
|
-
private wakeInFlight;
|
|
28
|
-
private heartbeatConsecutiveErrors;
|
|
29
|
-
private sessionStore;
|
|
30
|
-
private _cronTimer;
|
|
31
|
-
private _cronApprovalResolvers;
|
|
32
|
-
constructor(config: HeartbeatManagerConfig);
|
|
33
|
-
/** Resolve a pending cron approval request (called from engine). */
|
|
34
|
-
respondToCronApproval(requestId: string, approved: boolean): void;
|
|
35
|
-
/** Kick off the self-rearming cron timer. Call once after init. */
|
|
36
|
-
startCronTimer(): void;
|
|
37
|
-
handleWake(source: string, opts?: HeartbeatWakeOptions): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Self-rearming timer (mirrors OpenClaw's armTimer pattern).
|
|
40
|
-
* After each wake completes, check for the next due job and schedule
|
|
41
|
-
* a setTimeout to fire it. Clamped to 60s max to prevent drift.
|
|
42
|
-
* Native WorkManager handles background wakes; this handles foreground.
|
|
43
|
-
*/
|
|
44
|
-
private _armCronTimer;
|
|
45
|
-
private _runHeartbeatCycle;
|
|
46
|
-
private _runDueCronJobs;
|
|
47
|
-
private _runAgentTurn;
|
|
48
|
-
private _persistSession;
|
|
49
|
-
private _deliverCronResult;
|
|
50
|
-
private _resolveSkill;
|
|
51
|
-
private _emitSchedulerStatus;
|
|
52
|
-
private _consumePendingEvents;
|
|
53
|
-
private _emit;
|
|
54
|
-
}
|
|
55
|
-
export declare function extractLastAssistantText(messages: any[]): string;
|
|
56
|
-
export declare function buildHeartbeatPrompt(basePrompt: string, pendingEvents: PendingSystemEvent[]): string;
|
|
57
|
-
export declare function computeNextRunAt(job: Pick<CronJobStoreRecord, 'schedule'>, nowMs: number): number | null;
|
|
58
|
-
export declare function isHeartbeatOk(text: string): boolean;
|
|
59
|
-
export declare function fnv1aHash(str: string): string;
|
|
60
|
-
export declare function errorBackoffMs(consecutiveErrors: number): number;
|
|
61
|
-
export declare function isWithinActiveHours(start?: string, end?: string, tz?: string, nowMs?: number): boolean;
|
|
62
|
-
export {};
|
|
63
|
-
//# sourceMappingURL=heartbeat-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat-manager.d.ts","sourceRoot":"","sources":["../../../src/agent/heartbeat-manager.ts"],"names":[],"mappings":"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"}
|