sparkecoder 0.1.114 → 0.1.115
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/agent/index.d.ts +3 -3
- package/dist/cli.js +156 -1
- package/dist/cli.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/{index-Bi8Ek02A.d.ts → index-Biy5JTop.d.ts} +104 -104
- package/dist/index.d.ts +5 -5
- package/dist/{schema-ecQSnCMz.d.ts → schema-CYSKJZ3m.d.ts} +3 -3
- package/dist/{search-DOzC4ojH.d.ts → search-CVVfuBPZ.d.ts} +4 -4
- package/dist/skills/default/computer-use.md +20 -13
- package/dist/skills/default/recording.md +66 -42
- package/dist/tools/index.d.ts +3 -3
- package/package.json +1 -1
- package/src/skills/default/computer-use.md +20 -13
- package/src/skills/default/recording.md +66 -42
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.html +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/agents.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.html +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p/settings.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- /package/web/.next/standalone/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_ssgManifest.js +0 -0
- /package/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_buildManifest.js +0 -0
- /package/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{N09EiHl0JwEgsGMdCtwpB → pSGgtxBjN5_o0YHZgQzXm}/_ssgManifest.js +0 -0
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'ai';
|
|
2
|
-
import '../schema-
|
|
3
|
-
export { A as Agent, a as AgentOptions, b as AgentRunOptions, c as AgentStreamResult, C as ContextManager, M as MessageAttachment, d as buildSystemPrompt, e as buildTaskPromptAddendum } from '../index-
|
|
4
|
-
import '../search-
|
|
2
|
+
import '../schema-CYSKJZ3m.js';
|
|
3
|
+
export { A as Agent, a as AgentOptions, b as AgentRunOptions, c as AgentStreamResult, C as ContextManager, M as MessageAttachment, d as buildSystemPrompt, e as buildTaskPromptAddendum } from '../index-Biy5JTop.js';
|
|
4
|
+
import '../search-CVVfuBPZ.js';
|
|
5
5
|
import 'drizzle-orm/sqlite-core';
|
|
6
6
|
import 'zod';
|
package/dist/cli.js
CHANGED
|
@@ -16422,7 +16422,7 @@ function generateOpenAPISpec() {
|
|
|
16422
16422
|
init_config();
|
|
16423
16423
|
init_semantic();
|
|
16424
16424
|
init_db();
|
|
16425
|
-
import { writeFileSync as writeFileSync6, readFileSync as readFileSync10, existsSync as existsSync21 } from "fs";
|
|
16425
|
+
import { mkdirSync as mkdirSync10, writeFileSync as writeFileSync6, readFileSync as readFileSync10, existsSync as existsSync21, statSync as statSync3 } from "fs";
|
|
16426
16426
|
import { resolve as resolve12, join as join16 } from "path";
|
|
16427
16427
|
function getCliVersion() {
|
|
16428
16428
|
const here = dirname8(fileURLToPath5(import.meta.url));
|
|
@@ -18026,5 +18026,160 @@ program.command("request-permissions").description("Request macOS permissions fo
|
|
|
18026
18026
|
}
|
|
18027
18027
|
console.log();
|
|
18028
18028
|
});
|
|
18029
|
+
{
|
|
18030
|
+
let stateFilePath = function() {
|
|
18031
|
+
return join16(ensureAppDataDirectory(), "recordings.json");
|
|
18032
|
+
}, readState = function() {
|
|
18033
|
+
const p = stateFilePath();
|
|
18034
|
+
if (!existsSync21(p)) return [];
|
|
18035
|
+
try {
|
|
18036
|
+
return JSON.parse(readFileSync10(p, "utf-8"));
|
|
18037
|
+
} catch {
|
|
18038
|
+
return [];
|
|
18039
|
+
}
|
|
18040
|
+
}, writeState = function(rows) {
|
|
18041
|
+
writeFileSync6(stateFilePath(), JSON.stringify(rows, null, 2), { mode: 384 });
|
|
18042
|
+
}, isAlive = function(pid) {
|
|
18043
|
+
try {
|
|
18044
|
+
process.kill(pid, 0);
|
|
18045
|
+
return true;
|
|
18046
|
+
} catch {
|
|
18047
|
+
return false;
|
|
18048
|
+
}
|
|
18049
|
+
}, pruneDead = function(rows) {
|
|
18050
|
+
return rows.filter((r) => isAlive(r.pid));
|
|
18051
|
+
};
|
|
18052
|
+
stateFilePath2 = stateFilePath, readState2 = readState, writeState2 = writeState, isAlive2 = isAlive, pruneDead2 = pruneDead;
|
|
18053
|
+
const record = program.command("record").description("Start/stop screen recordings");
|
|
18054
|
+
record.command("start").description("Start a screen recording (returns id, path, pid as JSON)").option("--name <slug>", "Optional human-readable label for the recording").option("--dir <path>", "Output directory (default: ~/recordings)").action(async (opts) => {
|
|
18055
|
+
const { spawn: spawn3 } = await import("child_process");
|
|
18056
|
+
const { homedir: homedir2, platform: osPlatform } = await import("os");
|
|
18057
|
+
const outDir = opts.dir ? resolve12(opts.dir.replace(/^~/, homedir2())) : join16(homedir2(), "recordings");
|
|
18058
|
+
mkdirSync10(outDir, { recursive: true });
|
|
18059
|
+
const id = `rec-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
|
|
18060
|
+
const ext = osPlatform() === "darwin" ? "mov" : "mp4";
|
|
18061
|
+
const filename = `${id}${opts.name ? `-${String(opts.name).replace(/[^a-z0-9-]+/gi, "-").toLowerCase()}` : ""}.${ext}`;
|
|
18062
|
+
const path = join16(outDir, filename);
|
|
18063
|
+
let cmd;
|
|
18064
|
+
let args;
|
|
18065
|
+
if (osPlatform() === "darwin") {
|
|
18066
|
+
cmd = "screencapture";
|
|
18067
|
+
args = ["-v", "-C", "-k", path];
|
|
18068
|
+
} else if (osPlatform() === "linux") {
|
|
18069
|
+
const display = process.env.DISPLAY || ":0.0";
|
|
18070
|
+
const size = process.env.SPARKECODER_RECORD_SIZE || "1920x1080";
|
|
18071
|
+
cmd = "ffmpeg";
|
|
18072
|
+
args = [
|
|
18073
|
+
"-y",
|
|
18074
|
+
"-f",
|
|
18075
|
+
"x11grab",
|
|
18076
|
+
"-framerate",
|
|
18077
|
+
"25",
|
|
18078
|
+
"-video_size",
|
|
18079
|
+
size,
|
|
18080
|
+
"-i",
|
|
18081
|
+
display,
|
|
18082
|
+
"-c:v",
|
|
18083
|
+
"libx264",
|
|
18084
|
+
"-preset",
|
|
18085
|
+
"veryfast",
|
|
18086
|
+
"-pix_fmt",
|
|
18087
|
+
"yuv420p",
|
|
18088
|
+
path
|
|
18089
|
+
];
|
|
18090
|
+
} else {
|
|
18091
|
+
console.error(JSON.stringify({ error: `Unsupported platform: ${osPlatform()}` }));
|
|
18092
|
+
process.exit(1);
|
|
18093
|
+
}
|
|
18094
|
+
const child = spawn3(cmd, args, { detached: true, stdio: "ignore" });
|
|
18095
|
+
child.unref();
|
|
18096
|
+
if (!child.pid) {
|
|
18097
|
+
console.error(JSON.stringify({ error: `Failed to spawn ${cmd}` }));
|
|
18098
|
+
process.exit(1);
|
|
18099
|
+
}
|
|
18100
|
+
const row = {
|
|
18101
|
+
id,
|
|
18102
|
+
name: opts.name,
|
|
18103
|
+
path,
|
|
18104
|
+
pid: child.pid,
|
|
18105
|
+
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
18106
|
+
platform: osPlatform()
|
|
18107
|
+
};
|
|
18108
|
+
const rows = pruneDead(readState());
|
|
18109
|
+
rows.push(row);
|
|
18110
|
+
writeState(rows);
|
|
18111
|
+
console.log(JSON.stringify({ id, path, pid: child.pid, platform: osPlatform() }));
|
|
18112
|
+
});
|
|
18113
|
+
record.command("stop <id>").description("Stop a recording started by `sparkecoder record start`").action(async (id) => {
|
|
18114
|
+
const rows = readState();
|
|
18115
|
+
const row = rows.find((r) => r.id === id);
|
|
18116
|
+
if (!row) {
|
|
18117
|
+
console.error(JSON.stringify({ error: `No recording found with id ${id}` }));
|
|
18118
|
+
process.exit(1);
|
|
18119
|
+
}
|
|
18120
|
+
const startedAt = new Date(row.startedAt).getTime();
|
|
18121
|
+
if (isAlive(row.pid)) {
|
|
18122
|
+
try {
|
|
18123
|
+
process.kill(row.pid, "SIGINT");
|
|
18124
|
+
} catch {
|
|
18125
|
+
}
|
|
18126
|
+
for (let i = 0; i < 40; i++) {
|
|
18127
|
+
if (!isAlive(row.pid)) break;
|
|
18128
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
18129
|
+
}
|
|
18130
|
+
if (isAlive(row.pid)) {
|
|
18131
|
+
try {
|
|
18132
|
+
process.kill(row.pid, "SIGTERM");
|
|
18133
|
+
} catch {
|
|
18134
|
+
}
|
|
18135
|
+
}
|
|
18136
|
+
}
|
|
18137
|
+
writeState(rows.filter((r) => r.id !== id));
|
|
18138
|
+
const fileExists = existsSync21(row.path);
|
|
18139
|
+
const sizeMb = fileExists ? Math.round(statSync3(row.path).size / (1024 * 1024) * 10) / 10 : 0;
|
|
18140
|
+
console.log(JSON.stringify({
|
|
18141
|
+
id,
|
|
18142
|
+
path: row.path,
|
|
18143
|
+
durationSec: Math.round((Date.now() - startedAt) / 1e3),
|
|
18144
|
+
sizeMb,
|
|
18145
|
+
ok: fileExists
|
|
18146
|
+
}));
|
|
18147
|
+
});
|
|
18148
|
+
record.command("list").description("List active recordings").action(() => {
|
|
18149
|
+
const rows = pruneDead(readState());
|
|
18150
|
+
writeState(rows);
|
|
18151
|
+
console.log(JSON.stringify(rows, null, 2));
|
|
18152
|
+
});
|
|
18153
|
+
record.command("stop-all").description("Stop every active recording").action(async () => {
|
|
18154
|
+
const rows = readState();
|
|
18155
|
+
const stopped = [];
|
|
18156
|
+
for (const r of rows) {
|
|
18157
|
+
if (isAlive(r.pid)) {
|
|
18158
|
+
try {
|
|
18159
|
+
process.kill(r.pid, "SIGINT");
|
|
18160
|
+
} catch {
|
|
18161
|
+
}
|
|
18162
|
+
for (let i = 0; i < 30; i++) {
|
|
18163
|
+
if (!isAlive(r.pid)) break;
|
|
18164
|
+
await new Promise((res) => setTimeout(res, 200));
|
|
18165
|
+
}
|
|
18166
|
+
if (isAlive(r.pid)) {
|
|
18167
|
+
try {
|
|
18168
|
+
process.kill(r.pid, "SIGTERM");
|
|
18169
|
+
} catch {
|
|
18170
|
+
}
|
|
18171
|
+
}
|
|
18172
|
+
}
|
|
18173
|
+
stopped.push({ id: r.id, path: r.path, ok: existsSync21(r.path) });
|
|
18174
|
+
}
|
|
18175
|
+
writeState([]);
|
|
18176
|
+
console.log(JSON.stringify({ stopped }));
|
|
18177
|
+
});
|
|
18178
|
+
}
|
|
18179
|
+
var stateFilePath2;
|
|
18180
|
+
var readState2;
|
|
18181
|
+
var writeState2;
|
|
18182
|
+
var isAlive2;
|
|
18183
|
+
var pruneDead2;
|
|
18029
18184
|
program.parse();
|
|
18030
18185
|
//# sourceMappingURL=cli.js.map
|