@poping/yome 0.0.3 → 0.0.4
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/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 +168 -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/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 +96 -9
- package/dist/index.js.map +1 -1
- 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/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/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 +10 -2
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type InstallResult } from './install.js';
|
|
2
|
+
export interface InstallFromHubExtra {
|
|
3
|
+
/** Override version. When omitted we install the slug's latest non-deprecated. */
|
|
4
|
+
version?: string;
|
|
5
|
+
/** Pass through to installFromLocal — auto-grant capabilities, useful in CI. */
|
|
6
|
+
yes?: boolean;
|
|
7
|
+
/** Pass through. */
|
|
8
|
+
force?: boolean;
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
/** Install a deprecated version on purpose. Default false. */
|
|
11
|
+
allowDeprecated?: boolean;
|
|
12
|
+
/** Disable post-install sha256 verification (dev/debug). Default false. */
|
|
13
|
+
skipVerify?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface InstallFromHubResult extends InstallResult {
|
|
16
|
+
/** Distinguish "really came from hub" from "fell through to github". */
|
|
17
|
+
source?: 'hub' | 'fallback';
|
|
18
|
+
/** The exact version installed (resolved on the hub). */
|
|
19
|
+
resolvedVersion?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Install a slug by pulling the hub-cached tarball. Returns ok=false +
|
|
23
|
+
* a structured reason whenever the hub doesn't have a usable tarball
|
|
24
|
+
* — the caller can then fall back to a GitHub clone.
|
|
25
|
+
*/
|
|
26
|
+
export declare function installFromHubTarball(slug: string, opts?: InstallFromHubExtra): Promise<InstallFromHubResult>;
|
|
@@ -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":"AAAA,8CAA8C;AAC9C,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,oDAAoD;AACpD,EAAE;AACF,mBAAmB;AACnB,yEAAyE;AACzE,yEAAyE;AACzE,0CAA0C;AAC1C,kEAAkE;AAClE,mEAAmE;AACnE,0DAA0D;AAC1D,EAAE;AACF,YAAY;AACZ,uEAAuE;AACvE,2EAA2E;AAC3E,wCAAwC;AACxC,4EAA4E;AAC5E,0EAA0E;AAC1E,8CAA8C;AAC9C,sEAAsE;AACtE,sEAAsE;AACtE,EAAE;AACF,mEAAmE;AACnE,iEAAiE;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAA2C,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,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;AAoCD,4EAA4E;AAC5E,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAAgB;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GACP,GAAG,UAAU,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC5D,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAIxB,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/D,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;gBAClC,gBAAgB,EAAG,CAAC,CAAC,KAAK,CAAC,gBAA2B,IAAI,IAAI;gBAC9D,wBAAwB,EAAG,CAAC,CAAC,KAAK,CAAC,wBAAmC,IAAI,IAAI;aAC/E;YACD,GAAG,EAAE;gBACH,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBAClC,cAAc,EAAG,CAAC,CAAC,OAAO,CAAC,cAAyB,IAAI,IAAI;gBAC5D,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU;gBAClC,kBAAkB,EAAG,CAAC,CAAC,OAAO,CAAC,kBAA6B,IAAI,IAAI;gBACpE,mBAAmB,EAAG,CAAC,CAAC,OAAO,CAAC,mBAA8B,IAAI,IAAI;aACvE;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,OAA4B,EAAE;IACtF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;IACxH,CAAC;IAED,+CAA+C;IAC/C,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB;YAC3C,CAAC,CAAC,kBAAkB,IAAI,CAAC,GAAG,CAAC,mBAAmB,mDAAmD;YACnG,CAAC,CAAC,gDAAgD,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,kBAAkB,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAC;IAC7G,CAAC;IAED,4CAA4C;IAC5C,MAAM,MAAM,GAAG,GAAG,UAAU,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;IACrI,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,yBAA0B,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,sEAAsE,EAAE,CAAC;QACjJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IACnF,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACnE,CAAC;IAED,sBAAsB;IACtB,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAClD,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACzE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACxF,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAC9F,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrE,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,+DAA+D,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;iBAC9I,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mEAAmE,EAAE,CAAC;QACnH,CAAC;QAED,iEAAiE;QACjE,8CAA8C;QAC9C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,8DAA8D;SAC/D,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7B,gEAAgE;YAChE,4CAA4C;YAC5C,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,WAAY,CAAC,CAAC;gBACpD,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE;oBAC5B,MAAM,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;oBACzC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACtC,gBAAgB,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO;iBACzD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACzE,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
|
|
@@ -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":"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,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,aAAa,EACb,gBAAgB,GAEjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE/E,yDAAyD;AACzD,SAAS,WAAW,CAAC,CAAwC;IAC3D,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,EAAE,CAAC;IAChC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,CAAC;AACX,CAAC;AAoBD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IACrC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAkB;IAClD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,wBAAwB,GAAG,CAAC,YAAY,EAAE;YACzE,QAAQ,EAAE,GAAG;SACd,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,KAAK,CAAC,IAAI,sCAAsC;YACxF,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,8BAA8B,KAAK,CAAC,WAAW,EAAE;YAChF,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI;SACtC,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,mBAAmB,IAAI,EAAE,CAEnD,CAAC;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,EACJ,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjD,yBAAyB,KAAK,CAAC,IAAI,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7D,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI;SACvC,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,EAAE;IACF,8DAA8D;IAC9D,kEAAkE;IAClE,6CAA6C;IAC7C,EAAE;IACF,gDAAgD;IAChD,mEAAmE;IACnE,8DAA8D;IAC9D,sEAAsE;IACtE,kEAAkE;IAClE,EAAE;IACF,mEAAmE;IACnE,kEAAkE;IAClE,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,WAAW,CAAC,CAAC,CAAY,CAAC,CAAC,CAAC,CAAC,CACvD,CAAC;IACF,MAAM,KAAK,GAA0D,EAAE,CAAC;IACxE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,IAAI,GAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAElD,0DAA0D;IAC1D,IAAI,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,EACJ,uBAAuB,KAAK,CAAC,IAAI,iBAAiB,QAAQ,sBAAsB;gBAChF,mFAAmF;YACrF,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI;SACtC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAqD,CAAC;QAC/F,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CACR,oEAAoE;gBACpE,wEAAwE;gBACxE,6EAA6E,CAC9E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;QAClH,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,EACJ,qCAAqC,KAAK,CAAC,IAAI,KAAK;gBACpD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7D,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -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.4",
|
|
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,21 @@
|
|
|
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",
|
|
50
|
+
"node-cron": "^3.0.3",
|
|
45
51
|
"react": "^18.3.1"
|
|
46
52
|
},
|
|
47
53
|
"devDependencies": {
|
|
48
54
|
"@types/bun": "latest",
|
|
49
55
|
"@types/node": "^20.14.0",
|
|
56
|
+
"@types/node-cron": "^3.0.11",
|
|
50
57
|
"@types/react": "^18.3.3",
|
|
51
|
-
"typescript": "^5.5.0"
|
|
58
|
+
"typescript": "^5.5.0",
|
|
59
|
+
"vitest": "^4.1.5"
|
|
52
60
|
}
|
|
53
61
|
}
|