@poping/yome 0.0.3 → 0.0.5
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 +5 -7
- package/README.zh-CN.md +5 -7
- package/bin/yome-calwatch +0 -0
- package/dist/commands/mesh.d.ts +15 -0
- package/dist/commands/mesh.js +282 -0
- package/dist/commands/mesh.js.map +1 -0
- package/dist/context.js +6 -3
- package/dist/context.js.map +1 -1
- package/dist/daemon/calendarPermission.d.ts +10 -0
- package/dist/daemon/calendarPermission.js +68 -0
- package/dist/daemon/calendarPermission.js.map +1 -0
- package/dist/daemon/cronCli.d.ts +19 -0
- package/dist/daemon/cronCli.js +403 -0
- package/dist/daemon/cronCli.js.map +1 -0
- package/dist/daemon/envHint.d.ts +5 -0
- package/dist/daemon/envHint.js +139 -0
- package/dist/daemon/envHint.js.map +1 -0
- package/dist/daemon/humanCron.d.ts +1 -0
- package/dist/daemon/humanCron.js +72 -0
- package/dist/daemon/humanCron.js.map +1 -0
- package/dist/daemon/humanOnce.d.ts +1 -0
- package/dist/daemon/humanOnce.js +54 -0
- package/dist/daemon/humanOnce.js.map +1 -0
- package/dist/daemon/index.d.ts +5 -0
- package/dist/daemon/index.js +173 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/launchd.d.ts +7 -0
- package/dist/daemon/launchd.js +93 -0
- package/dist/daemon/launchd.js.map +1 -0
- package/dist/daemon/log.d.ts +17 -0
- package/dist/daemon/log.js +57 -0
- package/dist/daemon/log.js.map +1 -0
- package/dist/daemon/paths.d.ts +11 -0
- package/dist/daemon/paths.js +27 -0
- package/dist/daemon/paths.js.map +1 -0
- package/dist/daemon/runTaskEntry.d.ts +1 -0
- package/dist/daemon/runTaskEntry.js +67 -0
- package/dist/daemon/runTaskEntry.js.map +1 -0
- package/dist/daemon/runner.d.ts +21 -0
- package/dist/daemon/runner.js +175 -0
- package/dist/daemon/runner.js.map +1 -0
- package/dist/daemon/scheduler.d.ts +5 -0
- package/dist/daemon/scheduler.js +162 -0
- package/dist/daemon/scheduler.js.map +1 -0
- package/dist/daemon/systemd.d.ts +7 -0
- package/dist/daemon/systemd.js +87 -0
- package/dist/daemon/systemd.js.map +1 -0
- package/dist/daemon/taskStore.d.ts +62 -0
- package/dist/daemon/taskStore.js +88 -0
- package/dist/daemon/taskStore.js.map +1 -0
- package/dist/daemon/triggers/calendar.d.ts +8 -0
- package/dist/daemon/triggers/calendar.js +248 -0
- package/dist/daemon/triggers/calendar.js.map +1 -0
- package/dist/daemon/triggers/childRunner.d.ts +14 -0
- package/dist/daemon/triggers/childRunner.js +111 -0
- package/dist/daemon/triggers/childRunner.js.map +1 -0
- package/dist/daemon/triggers/cron.d.ts +14 -0
- package/dist/daemon/triggers/cron.js +91 -0
- package/dist/daemon/triggers/cron.js.map +1 -0
- package/dist/daemon/triggers/file.d.ts +7 -0
- package/dist/daemon/triggers/file.js +123 -0
- package/dist/daemon/triggers/file.js.map +1 -0
- package/dist/daemon/triggers/once.d.ts +10 -0
- package/dist/daemon/triggers/once.js +80 -0
- package/dist/daemon/triggers/once.js.map +1 -0
- package/dist/index.js +120 -9
- package/dist/index.js.map +1 -1
- package/dist/llm.d.ts +14 -2
- package/dist/llm.js +266 -201
- package/dist/llm.js.map +1 -1
- package/dist/mesh/capabilities.d.ts +6 -0
- package/dist/mesh/capabilities.js +66 -0
- package/dist/mesh/capabilities.js.map +1 -0
- package/dist/mesh/device-id.d.ts +28 -0
- package/dist/mesh/device-id.js +105 -0
- package/dist/mesh/device-id.js.map +1 -0
- package/dist/mesh/device-registrar.d.ts +33 -0
- package/dist/mesh/device-registrar.js +131 -0
- package/dist/mesh/device-registrar.js.map +1 -0
- package/dist/mesh/index.d.ts +28 -0
- package/dist/mesh/index.js +71 -0
- package/dist/mesh/index.js.map +1 -0
- package/dist/mesh/partykit-client.d.ts +43 -0
- package/dist/mesh/partykit-client.js +195 -0
- package/dist/mesh/partykit-client.js.map +1 -0
- package/dist/mesh/rpc-handler.d.ts +28 -0
- package/dist/mesh/rpc-handler.js +201 -0
- package/dist/mesh/rpc-handler.js.map +1 -0
- package/dist/mesh/thread-stream.d.ts +109 -0
- package/dist/mesh/thread-stream.js +110 -0
- package/dist/mesh/thread-stream.js.map +1 -0
- package/dist/mesh/ticket.d.ts +33 -0
- package/dist/mesh/ticket.js +127 -0
- package/dist/mesh/ticket.js.map +1 -0
- package/dist/mesh/types.d.ts +83 -0
- package/dist/mesh/types.js +9 -0
- package/dist/mesh/types.js.map +1 -0
- package/dist/skills/runner/dispatcher.d.ts +74 -3
- package/dist/skills/runner/dispatcher.js +258 -48
- package/dist/skills/runner/dispatcher.js.map +1 -1
- package/dist/skills/runner/dispatcher.test.d.ts +1 -0
- package/dist/skills/runner/dispatcher.test.js +141 -0
- package/dist/skills/runner/dispatcher.test.js.map +1 -0
- package/dist/skills/runner/kernel.js +0 -1
- package/dist/skills/runner/kernel.js.map +1 -1
- package/dist/skills/runner/nodeBackend.d.ts +32 -0
- package/dist/skills/runner/nodeBackend.js +147 -0
- package/dist/skills/runner/nodeBackend.js.map +1 -0
- package/dist/state/todos.d.ts +12 -0
- package/dist/state/todos.js +32 -0
- package/dist/state/todos.js.map +1 -0
- package/dist/tools/askUser.d.ts +20 -0
- package/dist/tools/askUser.js +126 -0
- package/dist/tools/askUser.js.map +1 -0
- package/dist/tools/bash.js +13 -19
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +18 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/todoWrite.d.ts +2 -0
- package/dist/tools/todoWrite.js +141 -0
- package/dist/tools/todoWrite.js.map +1 -0
- package/dist/tools/yome.d.ts +2 -0
- package/dist/tools/yome.js +87 -0
- package/dist/tools/yome.js.map +1 -0
- package/dist/ui/App.js +52 -3
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/AskUserPrompt.d.ts +7 -0
- package/dist/ui/AskUserPrompt.js +78 -0
- package/dist/ui/AskUserPrompt.js.map +1 -0
- package/dist/ui/InputBar.js +20 -34
- package/dist/ui/InputBar.js.map +1 -1
- package/dist/ui/MeshApp.d.ts +9 -0
- package/dist/ui/MeshApp.js +226 -0
- package/dist/ui/MeshApp.js.map +1 -0
- package/dist/ui/MessageList.d.ts +8 -0
- package/dist/ui/MessageList.js +2 -2
- package/dist/ui/MessageList.js.map +1 -1
- package/dist/ui/MultilineTextInput.d.ts +31 -0
- package/dist/ui/MultilineTextInput.js +393 -0
- package/dist/ui/MultilineTextInput.js.map +1 -0
- package/dist/ui/MultilineTextInput.test.d.ts +1 -0
- package/dist/ui/MultilineTextInput.test.js +30 -0
- package/dist/ui/MultilineTextInput.test.js.map +1 -0
- package/dist/ui/TodoPanel.d.ts +7 -0
- package/dist/ui/TodoPanel.js +36 -0
- package/dist/ui/TodoPanel.js.map +1 -0
- package/dist/withRetry.d.ts +14 -0
- package/dist/withRetry.js +106 -0
- package/dist/withRetry.js.map +1 -0
- package/dist/yomeSkills/cli.d.ts +8 -0
- package/dist/yomeSkills/cli.js +155 -8
- package/dist/yomeSkills/cli.js.map +1 -1
- package/dist/yomeSkills/deprecate.d.ts +29 -0
- package/dist/yomeSkills/deprecate.js +99 -0
- package/dist/yomeSkills/deprecate.js.map +1 -0
- package/dist/yomeSkills/installFromHubTarball.d.ts +26 -0
- package/dist/yomeSkills/installFromHubTarball.js +161 -0
- package/dist/yomeSkills/installFromHubTarball.js.map +1 -0
- package/dist/yomeSkills/installGithub.d.ts +7 -0
- package/dist/yomeSkills/installGithub.js +42 -21
- package/dist/yomeSkills/installGithub.js.map +1 -1
- package/dist/yomeSkills/invoke.js +50 -18
- package/dist/yomeSkills/invoke.js.map +1 -1
- package/dist/yomeSkills/publish.d.ts +2 -0
- package/dist/yomeSkills/publish.js +6 -1
- package/dist/yomeSkills/publish.js.map +1 -1
- package/package.json +13 -3
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// cli/src/yomeSkills/installFromHubTarball.ts
|
|
2
|
+
//
|
|
3
|
+
// Hub-cached tarball install path. Used by `yome skill install <slug>`
|
|
4
|
+
// and as the fast path inside `installFromGithub` when the hub already
|
|
5
|
+
// has bytes for the version the user is asking for.
|
|
6
|
+
//
|
|
7
|
+
// Why this exists:
|
|
8
|
+
// - Sub-second installs vs 5-30s for `git clone --depth=1` from China.
|
|
9
|
+
// - GitHub repo can be deleted / transferred / temporarily unreachable
|
|
10
|
+
// and the cached tarball still works.
|
|
11
|
+
// - The bytes we install are byte-identical to what publisher's
|
|
12
|
+
// tarball_sha256 was computed against — no race window between
|
|
13
|
+
// publish-time and install-time on the upstream repo.
|
|
14
|
+
//
|
|
15
|
+
// Pipeline:
|
|
16
|
+
// 1. GET /api/hub/skills/<slug>?version=<v> (resolve version + sha)
|
|
17
|
+
// 2. GET /api/hub/skills/<slug>/versions/<v>/tarball (302 → public URL)
|
|
18
|
+
// 3. Stream the tar.gz into a tmp dir
|
|
19
|
+
// 4. Extract via the system `tar -xzf` (same binary cli installs require)
|
|
20
|
+
// 5. Verify sha256 of the extracted tree == hub sha256 == sha256 in the
|
|
21
|
+
// X-Yome-Skill-Sha256 header from step 2
|
|
22
|
+
// 6. Hand the extracted dir to `installFromLocal()` for the rest of
|
|
23
|
+
// the install (capability prompt, rollback snapshot, meta write)
|
|
24
|
+
//
|
|
25
|
+
// On any failure the caller falls back to `installFromGithub`. The
|
|
26
|
+
// retry path is opaque — the user just sees one install attempt.
|
|
27
|
+
import { spawnSync } from 'node:child_process';
|
|
28
|
+
import { writeFileSync, mkdtempSync, rmSync, existsSync } from 'node:fs';
|
|
29
|
+
import { tmpdir } from 'node:os';
|
|
30
|
+
import { join } from 'node:path';
|
|
31
|
+
import { installFromLocal } from './install.js';
|
|
32
|
+
import { writeInstallMeta } from './installMeta.js';
|
|
33
|
+
import { computeSkillSha256 } from './integrity.js';
|
|
34
|
+
import { readManifest } from './manifest.js';
|
|
35
|
+
const DEFAULT_HUB_BASE = 'https://yome.work';
|
|
36
|
+
function getHubBase() {
|
|
37
|
+
return (process.env.YOME_HUB_BASE ?? DEFAULT_HUB_BASE).replace(/\/+$/, '');
|
|
38
|
+
}
|
|
39
|
+
/** GET /api/hub/skills/<slug>[?version=v] — returns null on any failure. */
|
|
40
|
+
async function fetchHubMeta(slug, version) {
|
|
41
|
+
try {
|
|
42
|
+
const url = `${getHubBase()}/api/hub/skills/${encodeURIComponent(slug)}` +
|
|
43
|
+
(version ? `?version=${encodeURIComponent(version)}` : '');
|
|
44
|
+
const r = await fetch(url, { headers: { Accept: 'application/json' } });
|
|
45
|
+
if (!r.ok)
|
|
46
|
+
return null;
|
|
47
|
+
const j = (await r.json());
|
|
48
|
+
if (!j || j.ok !== true || !j.skill || !j.version)
|
|
49
|
+
return null;
|
|
50
|
+
return {
|
|
51
|
+
skill: {
|
|
52
|
+
slug: String(j.skill.slug ?? slug),
|
|
53
|
+
github_full_name: j.skill.github_full_name ?? null,
|
|
54
|
+
effective_latest_version: j.skill.effective_latest_version ?? null,
|
|
55
|
+
},
|
|
56
|
+
ver: {
|
|
57
|
+
version: String(j.version.version),
|
|
58
|
+
tarball_sha256: j.version.tarball_sha256 ?? null,
|
|
59
|
+
deprecated: !!j.version.deprecated,
|
|
60
|
+
deprecation_reason: j.version.deprecation_reason ?? null,
|
|
61
|
+
replaced_by_version: j.version.replaced_by_version ?? null,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Install a slug by pulling the hub-cached tarball. Returns ok=false +
|
|
71
|
+
* a structured reason whenever the hub doesn't have a usable tarball
|
|
72
|
+
* — the caller can then fall back to a GitHub clone.
|
|
73
|
+
*/
|
|
74
|
+
export async function installFromHubTarball(slug, opts = {}) {
|
|
75
|
+
const meta = await fetchHubMeta(slug, opts.version);
|
|
76
|
+
if (!meta) {
|
|
77
|
+
return { ok: false, source: 'hub', reason: `hub has no record for ${slug}${opts.version ? `@${opts.version}` : ''}` };
|
|
78
|
+
}
|
|
79
|
+
// Deprecation gate (mirror installFromGithub).
|
|
80
|
+
if (meta.ver.deprecated && !opts.allowDeprecated) {
|
|
81
|
+
const replaced = meta.ver.replaced_by_version
|
|
82
|
+
? ` Use --version ${meta.ver.replaced_by_version} instead, or pass --allow-deprecated to override.`
|
|
83
|
+
: ' Pass --allow-deprecated to install it anyway.';
|
|
84
|
+
const why = meta.ver.deprecation_reason ? ` Reason: ${meta.ver.deprecation_reason}.` : '';
|
|
85
|
+
return { ok: false, source: 'hub', reason: `${slug}@${meta.ver.version} is deprecated.${why}${replaced}` };
|
|
86
|
+
}
|
|
87
|
+
// Resolve tarball URL via the hub redirect.
|
|
88
|
+
const tarUrl = `${getHubBase()}/api/hub/skills/${encodeURIComponent(slug)}/versions/${encodeURIComponent(meta.ver.version)}/tarball`;
|
|
89
|
+
let resp;
|
|
90
|
+
try {
|
|
91
|
+
resp = await fetch(tarUrl, { redirect: 'follow' });
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
return { ok: false, source: 'hub', reason: `tarball fetch failed: ${e.message}` };
|
|
95
|
+
}
|
|
96
|
+
if (!resp.ok) {
|
|
97
|
+
if (resp.status === 410) {
|
|
98
|
+
return { ok: false, source: 'hub', reason: `${slug}@${meta.ver.version} has no cached tarball (legacy publish; will fall back to git clone)` };
|
|
99
|
+
}
|
|
100
|
+
return { ok: false, source: 'hub', reason: `tarball fetch HTTP ${resp.status}` };
|
|
101
|
+
}
|
|
102
|
+
const tarBytes = Buffer.from(await resp.arrayBuffer());
|
|
103
|
+
if (tarBytes.length === 0) {
|
|
104
|
+
return { ok: false, source: 'hub', reason: `tarball was empty` };
|
|
105
|
+
}
|
|
106
|
+
// Extract to tmp dir.
|
|
107
|
+
const cleanupRoot = mkdtempSync(join(tmpdir(), 'yome-hub-install-'));
|
|
108
|
+
const extractDir = join(cleanupRoot, 'skill');
|
|
109
|
+
try {
|
|
110
|
+
const tarFile = join(cleanupRoot, 'skill.tar.gz');
|
|
111
|
+
writeFileSync(tarFile, tarBytes);
|
|
112
|
+
const mk = spawnSync('mkdir', ['-p', extractDir], { encoding: 'utf-8' });
|
|
113
|
+
if (mk.status !== 0) {
|
|
114
|
+
return { ok: false, source: 'hub', reason: `mkdir failed: ${mk.stderr || ''}` };
|
|
115
|
+
}
|
|
116
|
+
const ut = spawnSync('tar', ['-xzf', tarFile, '-C', extractDir], { encoding: 'utf-8' });
|
|
117
|
+
if (ut.status !== 0) {
|
|
118
|
+
return { ok: false, source: 'hub', reason: `tar -xzf failed: ${(ut.stderr || '').trim()}` };
|
|
119
|
+
}
|
|
120
|
+
// Verify sha256 of extracted tree against hub-recorded sha.
|
|
121
|
+
if (!opts.skipVerify && meta.ver.tarball_sha256) {
|
|
122
|
+
const computed = computeSkillSha256(extractDir);
|
|
123
|
+
if (computed.toLowerCase() !== meta.ver.tarball_sha256.toLowerCase()) {
|
|
124
|
+
return {
|
|
125
|
+
ok: false,
|
|
126
|
+
source: 'hub',
|
|
127
|
+
reason: `sha256 mismatch on hub tarball — refusing install. expected ${meta.ver.tarball_sha256.slice(0, 12)}…, got ${computed.slice(0, 12)}…`,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (!existsSync(join(extractDir, 'yome-skill.json'))) {
|
|
132
|
+
return { ok: false, source: 'hub', reason: `extracted tarball has no yome-skill.json — hub artefact corrupted` };
|
|
133
|
+
}
|
|
134
|
+
// Hand off to local install. installFromLocal handles capability
|
|
135
|
+
// prompt + rollback snapshot + index refresh.
|
|
136
|
+
const result = await installFromLocal(extractDir, {
|
|
137
|
+
force: opts.force,
|
|
138
|
+
verbose: opts.verbose,
|
|
139
|
+
yes: opts.yes,
|
|
140
|
+
// skipBlacklist: false (default; hub blacklist still applies)
|
|
141
|
+
});
|
|
142
|
+
if (result.ok && result.slug) {
|
|
143
|
+
// Overwrite the meta with the hub source so `yome skill update`
|
|
144
|
+
// re-pulls from hub instead of the tmp dir.
|
|
145
|
+
try {
|
|
146
|
+
const installed = readManifest(result.installedAt);
|
|
147
|
+
writeInstallMeta(result.slug, {
|
|
148
|
+
source: `hub:${slug}@${meta.ver.version}`,
|
|
149
|
+
installed_at: new Date().toISOString(),
|
|
150
|
+
manifest_version: installed?.version ?? meta.ver.version,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch { /* best effort */ }
|
|
154
|
+
}
|
|
155
|
+
return { ...result, source: 'hub', resolvedVersion: meta.ver.version };
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
rmSync(cleanupRoot, { recursive: true, force: true });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=installFromHubTarball.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installFromHubTarball.js","sourceRoot":"","sources":["../../src/yomeSkills/installFromHubTarball.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,13 @@ interface GithubInstallExtra {
|
|
|
16
16
|
expectedSha256?: string | null;
|
|
17
17
|
/** Disable post-install sha256 verification entirely (dev/debug). */
|
|
18
18
|
skipVerify?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Install a deprecated version on purpose. Without this flag, the cli
|
|
21
|
+
* refuses with a pointer to `replaced_by_version`. Default false so
|
|
22
|
+
* users get a loud signal when they're about to install something the
|
|
23
|
+
* author marked as superseded.
|
|
24
|
+
*/
|
|
25
|
+
allowDeprecated?: boolean;
|
|
19
26
|
}
|
|
20
27
|
/**
|
|
21
28
|
* Clone the repo into a tmp dir, then delegate to `installFromLocal`. Always
|
|
@@ -27,27 +27,31 @@ const DEFAULT_HUB_BASE = 'https://yome.work';
|
|
|
27
27
|
function getHubBase() {
|
|
28
28
|
return (process.env.YOME_HUB_BASE ?? DEFAULT_HUB_BASE).replace(/\/+$/, '');
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
async function fetchExpectedSha256(slug, version) {
|
|
30
|
+
async function fetchHubVersionMeta(slug, version) {
|
|
31
|
+
const empty = {
|
|
32
|
+
tarball_sha256: null,
|
|
33
|
+
deprecated: false,
|
|
34
|
+
deprecation_reason: null,
|
|
35
|
+
replaced_by_version: null,
|
|
36
|
+
};
|
|
38
37
|
try {
|
|
39
38
|
const url = `${getHubBase()}/api/hub/skills/${encodeURIComponent(slug)}?version=${encodeURIComponent(version)}`;
|
|
40
39
|
const r = await fetch(url, { headers: { Accept: 'application/json' } });
|
|
41
40
|
if (!r.ok)
|
|
42
|
-
return
|
|
41
|
+
return empty;
|
|
43
42
|
const j = (await r.json());
|
|
44
|
-
if (!j || j.ok !== true)
|
|
45
|
-
return
|
|
46
|
-
const sha = j.version
|
|
47
|
-
return
|
|
43
|
+
if (!j || j.ok !== true || !j.version)
|
|
44
|
+
return empty;
|
|
45
|
+
const sha = j.version.tarball_sha256 ?? null;
|
|
46
|
+
return {
|
|
47
|
+
tarball_sha256: sha && sha.length >= 32 ? sha : null,
|
|
48
|
+
deprecated: !!j.version.deprecated,
|
|
49
|
+
deprecation_reason: j.version.deprecation_reason ?? null,
|
|
50
|
+
replaced_by_version: j.version.replaced_by_version ?? null,
|
|
51
|
+
};
|
|
48
52
|
}
|
|
49
53
|
catch {
|
|
50
|
-
return
|
|
54
|
+
return empty;
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
const GITHUB_SHORT_RE = /^github:([^/]+)\/([^@#]+)(?:@([^#]+))?(?:#(.+))?$/i;
|
|
@@ -129,13 +133,30 @@ export async function installFromGithub(source, opts = {}) {
|
|
|
129
133
|
if (!existsSync(join(skillDir, 'yome-skill.json'))) {
|
|
130
134
|
return { ok: false, reason: `${parsed.owner}/${parsed.repo}${parsed.subPath ? `/${parsed.subPath}` : ''} has no yome-skill.json` };
|
|
131
135
|
}
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
// Hub lookup: fetch sha256 fingerprint AND deprecation status in
|
|
137
|
+
// one shot, since we're already paying the round-trip cost. Best-
|
|
138
|
+
// effort — hub unreachable / no record → empty meta and the install
|
|
139
|
+
// proceeds without verification (back-compat with offline / legacy
|
|
140
|
+
// versions).
|
|
141
|
+
const cloneManifest = readManifest(skillDir);
|
|
142
|
+
if (cloneManifest) {
|
|
143
|
+
const meta = await fetchHubVersionMeta(cloneManifest.slug, cloneManifest.version);
|
|
144
|
+
if (meta.deprecated && !opts.allowDeprecated) {
|
|
145
|
+
const replaced = meta.replaced_by_version
|
|
146
|
+
? ` Use --version ${meta.replaced_by_version} instead, or pass --allow-deprecated to override.`
|
|
147
|
+
: ' Pass --allow-deprecated to install it anyway.';
|
|
148
|
+
const why = meta.deprecation_reason ? ` Reason: ${meta.deprecation_reason}.` : '';
|
|
149
|
+
return {
|
|
150
|
+
ok: false,
|
|
151
|
+
reason: `${cloneManifest.slug}@${cloneManifest.version} is deprecated.${why}${replaced}`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (meta.deprecated && opts.allowDeprecated) {
|
|
155
|
+
const why = meta.deprecation_reason ? ` (${meta.deprecation_reason})` : '';
|
|
156
|
+
console.warn(`! installing deprecated ${cloneManifest.slug}@${cloneManifest.version}${why}`);
|
|
157
|
+
}
|
|
158
|
+
if (!opts.skipVerify && !opts.expectedSha256) {
|
|
159
|
+
opts.expectedSha256 = meta.tarball_sha256;
|
|
139
160
|
}
|
|
140
161
|
}
|
|
141
162
|
const result = await installFromLocal(skillDir, opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installGithub.js","sourceRoot":"","sources":["../../src/yomeSkills/installGithub.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,8CAA8C;AAC9C,yCAAyC;AACzC,2EAA2E;AAC3E,+EAA+E;AAC/E,qDAAqD;AACrD,8EAA8E;AAC9E,EAAE;AACF,YAAY;AACZ,sDAAsD;AACtD,0DAA0D;AAC1D,kEAAkE;AAClE,kEAAkE;AAClE,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAE1E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA2C,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,SAAS,UAAU;IACjB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;
|
|
1
|
+
{"version":3,"file":"installGithub.js","sourceRoot":"","sources":["../../src/yomeSkills/installGithub.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ import { homedir } from 'os';
|
|
|
8
8
|
import { getInstalledFast } from './skillsIndex.js';
|
|
9
9
|
import { readManifest } from './manifest.js';
|
|
10
10
|
import { isCapabilityAllowed } from './capabilities.js';
|
|
11
|
-
import { dispatchMacos, } from '../skills/runner/dispatcher.js';
|
|
11
|
+
import { dispatchMacos, loadMacosBackend, } from '../skills/runner/dispatcher.js';
|
|
12
|
+
import { dispatchNode, hasNodeBackend } from '../skills/runner/nodeBackend.js';
|
|
12
13
|
/** Expand ~ in a path arg the same way a shell would. */
|
|
13
14
|
function expandTilde(v) {
|
|
14
15
|
if (typeof v !== 'string')
|
|
@@ -74,30 +75,61 @@ export async function invokeSkill(req) {
|
|
|
74
75
|
exitCode: 13, resolvedSlug: entry.slug,
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
|
-
// Pick the right backend for this host.
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
78
|
+
// Pick the right backend for this host.
|
|
79
|
+
//
|
|
80
|
+
// The CLI is a Node process — NOT the macOS Yome.app host. So
|
|
81
|
+
// `delivery.macos.backend === "bundled"` (= Swift code that lives
|
|
82
|
+
// inside Yome.app) is unreachable from here.
|
|
83
|
+
//
|
|
84
|
+
// Backend resolution order (first viable wins):
|
|
85
|
+
// 1. OTA Node backend (backends/node/) — works on every platform
|
|
86
|
+
// and is the only path inside the daemon, headless, etc.
|
|
87
|
+
// 2. OTA macOS AppleScript backend (backends/macos/manifest.json) —
|
|
88
|
+
// darwin-only; renders templates into osascript invocations.
|
|
89
|
+
//
|
|
90
|
+
// On non-darwin hosts the AppleScript option vanishes; we return a
|
|
91
|
+
// clear diagnostic if the skill has nothing else to fall back to.
|
|
92
|
+
const positionals = (req.positionals ?? []).map((p) => typeof p === 'string' ? expandTilde(p) : p);
|
|
93
|
+
const flags = {};
|
|
94
|
+
for (const [k, v] of Object.entries(req.flags ?? {})) {
|
|
95
|
+
flags[k] = expandTilde(v);
|
|
96
|
+
}
|
|
97
|
+
const call = { positionals, flags };
|
|
98
|
+
// 1. Node backend — preferred when present (CLI is Node).
|
|
99
|
+
if (hasNodeBackend(entry.installedAt)) {
|
|
100
|
+
const r = await dispatchNode(entry.installedAt, req.action, call);
|
|
101
|
+
return { ...r, resolvedSlug: entry.slug };
|
|
102
|
+
}
|
|
103
|
+
// 2. macOS AppleScript backend.
|
|
81
104
|
const platform = process.platform;
|
|
82
105
|
if (platform !== 'darwin') {
|
|
83
106
|
return {
|
|
84
107
|
ok: false, stdout: '',
|
|
85
|
-
stderr: `
|
|
108
|
+
stderr: `no node backend for ${entry.slug}, and host is ${platform} (macOS AppleScript ` +
|
|
109
|
+
`fallback unavailable). Ask the skill author to ship a backends/node/ OTA backend.`,
|
|
86
110
|
exitCode: 1, resolvedSlug: entry.slug,
|
|
87
111
|
};
|
|
88
112
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
113
|
+
if (!loadMacosBackend(entry.installedAt)) {
|
|
114
|
+
const delivery = (manifest.delivery ?? {});
|
|
115
|
+
const macosKind = delivery.macos?.backend;
|
|
116
|
+
const hints = [];
|
|
117
|
+
if (macosKind === 'bundled') {
|
|
118
|
+
hints.push('macOS implementation is "bundled" — runs inside Yome.app (Swift), ' +
|
|
119
|
+
'not from the CLI. Use the macOS app, or have the skill author publish ' +
|
|
120
|
+
'a backends/macos/ OTA AppleScript backend or a backends/node/ Node backend.');
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
hints.push('skill is missing backends/macos/manifest.json AND backends/node/ — no usable backend for the CLI.');
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
ok: false, stdout: '',
|
|
127
|
+
stderr: `no backend the CLI can invoke for ${entry.slug}.\n` +
|
|
128
|
+
hints.map((h) => ' - ' + h).join('\n'),
|
|
129
|
+
exitCode: 2, resolvedSlug: entry.slug,
|
|
130
|
+
};
|
|
99
131
|
}
|
|
100
|
-
const
|
|
101
|
-
return
|
|
132
|
+
const r = dispatchMacos(entry.installedAt, req.action, call);
|
|
133
|
+
return { ...r, resolvedSlug: entry.slug };
|
|
102
134
|
}
|
|
103
135
|
//# sourceMappingURL=invoke.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/yomeSkills/invoke.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,sEAAsE;AACtE,mDAAmD;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAwB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/yomeSkills/invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export interface PublishResult {
|
|
|
10
10
|
ok: boolean;
|
|
11
11
|
slug?: string;
|
|
12
12
|
version?: string;
|
|
13
|
+
/** 'created' for a brand-new version row, 'noop_same_sha' for an idempotent re-publish. */
|
|
14
|
+
outcome?: 'created' | 'noop_same_sha';
|
|
13
15
|
hubResponse?: unknown;
|
|
14
16
|
reason?: string;
|
|
15
17
|
}
|
|
@@ -65,7 +65,12 @@ export async function publishSkill(cwd, opts = {}) {
|
|
|
65
65
|
? String(parsed.error) : `HTTP ${resp.status}`;
|
|
66
66
|
return { ok: false, reason: `hub rejected publish: ${reason}` };
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
const outcome = parsed && typeof parsed === 'object' && 'outcome' in parsed
|
|
69
|
+
? (parsed.outcome === 'noop_same_sha'
|
|
70
|
+
? 'noop_same_sha'
|
|
71
|
+
: 'created')
|
|
72
|
+
: 'created';
|
|
73
|
+
return { ok: true, slug: manifest.slug, version: manifest.version, outcome, hubResponse: parsed };
|
|
69
74
|
}
|
|
70
75
|
function inspectGit(cwd) {
|
|
71
76
|
const probe = spawnSync('git', ['-C', cwd, 'rev-parse', '--is-inside-work-tree'], { encoding: 'utf-8' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/yomeSkills/publish.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,EAAE;AACF,kBAAkB;AAClB,2CAA2C;AAC3C,iDAAiD;AACjD,qDAAqD;AACrD,uEAAuE;AACvE,EAAE;AACF,oEAAoE;AACpE,qEAAqE;AACrE,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAsB,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/yomeSkills/publish.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poping/yome",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Yome Agent — the open-source Empower Kernel CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -21,8 +21,12 @@
|
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tsc",
|
|
24
|
+
"build:native": "cd native/calwatch && swift build -c release && cp .build/release/yome-calwatch ../../bin/yome-calwatch",
|
|
25
|
+
"build:all": "npm run build && npm run build:native",
|
|
24
26
|
"dev": "bun --watch src/index.tsx",
|
|
25
27
|
"start": "node bin/yome.js",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"typecheck": "tsc --noEmit",
|
|
26
30
|
"prepublishOnly": "npm run build"
|
|
27
31
|
},
|
|
28
32
|
"engines": {
|
|
@@ -37,17 +41,23 @@
|
|
|
37
41
|
],
|
|
38
42
|
"license": "Apache-2.0",
|
|
39
43
|
"dependencies": {
|
|
44
|
+
"chokidar": "^3.6.0",
|
|
40
45
|
"fast-glob": "^3.3.2",
|
|
41
46
|
"ink": "^5.1.0",
|
|
42
47
|
"ink-text-input": "^6.0.0",
|
|
43
48
|
"marked": "^17.0.6",
|
|
44
49
|
"meow": "^13.0.0",
|
|
45
|
-
"
|
|
50
|
+
"node-cron": "^3.0.3",
|
|
51
|
+
"react": "^18.3.1",
|
|
52
|
+
"ws": "^8.20.1"
|
|
46
53
|
},
|
|
47
54
|
"devDependencies": {
|
|
48
55
|
"@types/bun": "latest",
|
|
49
56
|
"@types/node": "^20.14.0",
|
|
57
|
+
"@types/node-cron": "^3.0.11",
|
|
50
58
|
"@types/react": "^18.3.3",
|
|
51
|
-
"
|
|
59
|
+
"@types/ws": "^8.18.1",
|
|
60
|
+
"typescript": "^5.5.0",
|
|
61
|
+
"vitest": "^4.1.5"
|
|
52
62
|
}
|
|
53
63
|
}
|