@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.
Files changed (126) hide show
  1. package/README.md +5 -7
  2. package/README.zh-CN.md +5 -7
  3. package/bin/yome-calwatch +0 -0
  4. package/dist/context.js +6 -3
  5. package/dist/context.js.map +1 -1
  6. package/dist/daemon/calendarPermission.d.ts +10 -0
  7. package/dist/daemon/calendarPermission.js +68 -0
  8. package/dist/daemon/calendarPermission.js.map +1 -0
  9. package/dist/daemon/cronCli.d.ts +19 -0
  10. package/dist/daemon/cronCli.js +403 -0
  11. package/dist/daemon/cronCli.js.map +1 -0
  12. package/dist/daemon/envHint.d.ts +5 -0
  13. package/dist/daemon/envHint.js +139 -0
  14. package/dist/daemon/envHint.js.map +1 -0
  15. package/dist/daemon/humanCron.d.ts +1 -0
  16. package/dist/daemon/humanCron.js +72 -0
  17. package/dist/daemon/humanCron.js.map +1 -0
  18. package/dist/daemon/humanOnce.d.ts +1 -0
  19. package/dist/daemon/humanOnce.js +54 -0
  20. package/dist/daemon/humanOnce.js.map +1 -0
  21. package/dist/daemon/index.d.ts +5 -0
  22. package/dist/daemon/index.js +168 -0
  23. package/dist/daemon/index.js.map +1 -0
  24. package/dist/daemon/launchd.d.ts +7 -0
  25. package/dist/daemon/launchd.js +93 -0
  26. package/dist/daemon/launchd.js.map +1 -0
  27. package/dist/daemon/log.d.ts +17 -0
  28. package/dist/daemon/log.js +57 -0
  29. package/dist/daemon/log.js.map +1 -0
  30. package/dist/daemon/paths.d.ts +11 -0
  31. package/dist/daemon/paths.js +27 -0
  32. package/dist/daemon/paths.js.map +1 -0
  33. package/dist/daemon/runTaskEntry.d.ts +1 -0
  34. package/dist/daemon/runTaskEntry.js +67 -0
  35. package/dist/daemon/runTaskEntry.js.map +1 -0
  36. package/dist/daemon/runner.d.ts +21 -0
  37. package/dist/daemon/runner.js +175 -0
  38. package/dist/daemon/runner.js.map +1 -0
  39. package/dist/daemon/scheduler.d.ts +5 -0
  40. package/dist/daemon/scheduler.js +162 -0
  41. package/dist/daemon/scheduler.js.map +1 -0
  42. package/dist/daemon/taskStore.d.ts +62 -0
  43. package/dist/daemon/taskStore.js +88 -0
  44. package/dist/daemon/taskStore.js.map +1 -0
  45. package/dist/daemon/triggers/calendar.d.ts +8 -0
  46. package/dist/daemon/triggers/calendar.js +248 -0
  47. package/dist/daemon/triggers/calendar.js.map +1 -0
  48. package/dist/daemon/triggers/childRunner.d.ts +14 -0
  49. package/dist/daemon/triggers/childRunner.js +111 -0
  50. package/dist/daemon/triggers/childRunner.js.map +1 -0
  51. package/dist/daemon/triggers/cron.d.ts +14 -0
  52. package/dist/daemon/triggers/cron.js +91 -0
  53. package/dist/daemon/triggers/cron.js.map +1 -0
  54. package/dist/daemon/triggers/file.d.ts +7 -0
  55. package/dist/daemon/triggers/file.js +123 -0
  56. package/dist/daemon/triggers/file.js.map +1 -0
  57. package/dist/daemon/triggers/once.d.ts +10 -0
  58. package/dist/daemon/triggers/once.js +80 -0
  59. package/dist/daemon/triggers/once.js.map +1 -0
  60. package/dist/index.js +96 -9
  61. package/dist/index.js.map +1 -1
  62. package/dist/skills/runner/dispatcher.d.ts +74 -3
  63. package/dist/skills/runner/dispatcher.js +258 -48
  64. package/dist/skills/runner/dispatcher.js.map +1 -1
  65. package/dist/skills/runner/dispatcher.test.d.ts +1 -0
  66. package/dist/skills/runner/dispatcher.test.js +141 -0
  67. package/dist/skills/runner/dispatcher.test.js.map +1 -0
  68. package/dist/skills/runner/kernel.js +0 -1
  69. package/dist/skills/runner/kernel.js.map +1 -1
  70. package/dist/skills/runner/nodeBackend.d.ts +32 -0
  71. package/dist/skills/runner/nodeBackend.js +147 -0
  72. package/dist/skills/runner/nodeBackend.js.map +1 -0
  73. package/dist/state/todos.d.ts +12 -0
  74. package/dist/state/todos.js +32 -0
  75. package/dist/state/todos.js.map +1 -0
  76. package/dist/tools/askUser.d.ts +20 -0
  77. package/dist/tools/askUser.js +126 -0
  78. package/dist/tools/askUser.js.map +1 -0
  79. package/dist/tools/bash.js +13 -19
  80. package/dist/tools/bash.js.map +1 -1
  81. package/dist/tools/index.d.ts +2 -0
  82. package/dist/tools/index.js +18 -5
  83. package/dist/tools/index.js.map +1 -1
  84. package/dist/tools/todoWrite.d.ts +2 -0
  85. package/dist/tools/todoWrite.js +141 -0
  86. package/dist/tools/todoWrite.js.map +1 -0
  87. package/dist/tools/yome.d.ts +2 -0
  88. package/dist/tools/yome.js +87 -0
  89. package/dist/tools/yome.js.map +1 -0
  90. package/dist/ui/App.js +52 -3
  91. package/dist/ui/App.js.map +1 -1
  92. package/dist/ui/AskUserPrompt.d.ts +7 -0
  93. package/dist/ui/AskUserPrompt.js +78 -0
  94. package/dist/ui/AskUserPrompt.js.map +1 -0
  95. package/dist/ui/InputBar.js +20 -34
  96. package/dist/ui/InputBar.js.map +1 -1
  97. package/dist/ui/MessageList.d.ts +8 -0
  98. package/dist/ui/MessageList.js +2 -2
  99. package/dist/ui/MessageList.js.map +1 -1
  100. package/dist/ui/MultilineTextInput.d.ts +31 -0
  101. package/dist/ui/MultilineTextInput.js +393 -0
  102. package/dist/ui/MultilineTextInput.js.map +1 -0
  103. package/dist/ui/MultilineTextInput.test.d.ts +1 -0
  104. package/dist/ui/MultilineTextInput.test.js +30 -0
  105. package/dist/ui/MultilineTextInput.test.js.map +1 -0
  106. package/dist/ui/TodoPanel.d.ts +7 -0
  107. package/dist/ui/TodoPanel.js +36 -0
  108. package/dist/ui/TodoPanel.js.map +1 -0
  109. package/dist/yomeSkills/cli.d.ts +8 -0
  110. package/dist/yomeSkills/cli.js +155 -8
  111. package/dist/yomeSkills/cli.js.map +1 -1
  112. package/dist/yomeSkills/deprecate.d.ts +29 -0
  113. package/dist/yomeSkills/deprecate.js +99 -0
  114. package/dist/yomeSkills/deprecate.js.map +1 -0
  115. package/dist/yomeSkills/installFromHubTarball.d.ts +26 -0
  116. package/dist/yomeSkills/installFromHubTarball.js +161 -0
  117. package/dist/yomeSkills/installFromHubTarball.js.map +1 -0
  118. package/dist/yomeSkills/installGithub.d.ts +7 -0
  119. package/dist/yomeSkills/installGithub.js +42 -21
  120. package/dist/yomeSkills/installGithub.js.map +1 -1
  121. package/dist/yomeSkills/invoke.js +50 -18
  122. package/dist/yomeSkills/invoke.js.map +1 -1
  123. package/dist/yomeSkills/publish.d.ts +2 -0
  124. package/dist/yomeSkills/publish.js +6 -1
  125. package/dist/yomeSkills/publish.js.map +1 -1
  126. 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
- * Best-effort hub lookup for a skill's expected sha256 fingerprint at
32
- * the given version. Returns null if the hub doesn't know about this
33
- * slug, doesn't have a fingerprint for that version (older publish), or
34
- * is unreachable. The caller treats null as "no verification possible,
35
- * proceed".
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 null;
41
+ return empty;
43
42
  const j = (await r.json());
44
- if (!j || j.ok !== true)
45
- return null;
46
- const sha = j.version?.tarball_sha256 ?? null;
47
- return sha && sha.length >= 32 ? sha : null;
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 null;
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
- // If the caller didn't pre-fetch an expectedSha256, do it now from
133
- // the hub. Best-effort hub unreachable or no fingerprint → null,
134
- // and the install proceeds without verification (back-compat).
135
- if (!opts.skipVerify && !opts.expectedSha256) {
136
- const cloneManifest = readManifest(skillDir);
137
- if (cloneManifest) {
138
- opts.expectedSha256 = await fetchExpectedSha256(cloneManifest.slug, cloneManifest.version);
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":"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"}
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. We're CLI-on-macOS so the
78
- // delivery.macos slot is what we want; if the skill only ships a node
79
- // backend, dispatch to that instead (M1node backend not implemented
80
- // yet, returns an explanatory error).
78
+ // Pick the right backend for this host.
79
+ //
80
+ // The CLI is a Node processNOT 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: `hub skill execution currently requires macOS (got ${platform})`,
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
- const r = await runMacos(entry, req);
90
- return { ...r, resolvedSlug: entry.slug };
91
- }
92
- async function runMacos(entry, req) {
93
- // Expand ~ everywhere — AppleScript's `POSIX file "..."` doesn't honour
94
- // tilde, and forcing the LLM to spell out /Users/me/... is annoying.
95
- const positionals = (req.positionals ?? []).map((p) => typeof p === 'string' ? expandTilde(p) : p);
96
- const flags = {};
97
- for (const [k, v] of Object.entries(req.flags ?? {})) {
98
- flags[k] = expandTilde(v);
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 call = { positionals, flags };
101
- return dispatchMacos(entry.installedAt, req.action, call);
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":"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"}
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
- return { ok: true, slug: manifest.slug, version: manifest.version, hubResponse: parsed };
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;AAmBpD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,OAAuB,EAAE;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,GAAG,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,wCAAwC,EAAE,CAAC;IAC5F,MAAM,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAEpF,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAElF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAE7E,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnG,MAAM,GAAG,GAAG,GAAG,OAAO,mBAAmB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IACrF,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IACtC,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,UAAU,EAAE;gBAC1C,YAAY,EAAE,cAAc;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA4B,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM;YACtE,CAAC,CAAC,MAAM,CAAE,MAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,MAAM,EAAE,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC3F,CAAC;AAYD,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAE9E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/G,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,MAAM,EAAE,EAAE,CAAC;IAEtF,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5G,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2EAA2E,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAEhK,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC;AAgBD,SAAS,gBAAgB,CAAC,CAAgB,EAAE,CAAa,EAAE,GAAW;IACpE,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAClC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACpC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QACpC,qBAAqB,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM;QACzC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI;QACtB,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;KACxC,CAAC;AACJ,CAAC"}
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;AAqBpD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,OAAuB,EAAE;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,GAAG,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,wCAAwC,EAAE,CAAC;IAC5F,MAAM,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAEpF,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAElF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAE7E,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnG,MAAM,GAAG,GAAG,GAAG,OAAO,mBAAmB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IACrF,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IACtC,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,UAAU,EAAE;gBAC1C,YAAY,EAAE,cAAc;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA4B,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QAAC,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,MAAM;YACtE,CAAC,CAAC,MAAM,CAAE,MAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,MAAM,EAAE,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,OAAO,GACX,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM;QACzD,CAAC,CAAC,CAAE,MAA+B,CAAC,OAAO,KAAK,eAAe;YAC3D,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACpG,CAAC;AAYD,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAE9E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/G,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,MAAM,EAAE,EAAE,CAAC;IAEtF,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5G,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzE,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2EAA2E,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAEhK,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC;AAgBD,SAAS,gBAAgB,CAAC,CAAgB,EAAE,CAAa,EAAE,GAAW;IACpE,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAClC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACpC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;QACpC,qBAAqB,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM;QACzC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,IAAI;QACtB,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC;KACxC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poping/yome",
3
- "version": "0.0.3",
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
  }