@karmaniverous/jeeves-meta-openclaw 0.12.5 → 0.12.7
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/content/tools-platform.md +14 -0
- package/dist/cli.js +39 -4
- package/dist/index.js +54 -27861
- package/dist/rollup.config.d.ts +3 -3
- package/dist/skills/jeeves-meta/SKILL.md +23 -6
- package/dist/src/serviceClient.d.ts +9 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +56 -56
|
@@ -24,6 +24,20 @@ When editing files outside the workspace, use the bridge pattern: copy in → ed
|
|
|
24
24
|
|
|
25
25
|
**Cross-channel sends:** Use the `message` tool with an explicit `target` to send to a different channel or DM.
|
|
26
26
|
|
|
27
|
+
### Slack File Downloads
|
|
28
|
+
|
|
29
|
+
To download a Slack-hosted file, first try the `message` tool's `download-file` action. If that fails, fall back to a direct HTTP fetch using the bot token:
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
fetch(url_private_download, {
|
|
33
|
+
headers: { Authorization: 'Bearer ' + botToken },
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The bot token is at `channels.slack.accounts.default.botToken` in `openclaw.json`.
|
|
38
|
+
|
|
39
|
+
Never tell the user a file can't be downloaded until both methods have been tried.
|
|
40
|
+
|
|
27
41
|
### Plugin Lifecycle
|
|
28
42
|
|
|
29
43
|
```bash
|
package/dist/cli.js
CHANGED
|
@@ -4749,6 +4749,9 @@ function requireRange () {
|
|
|
4749
4749
|
}
|
|
4750
4750
|
|
|
4751
4751
|
parseRange (range) {
|
|
4752
|
+
// strip build metadata so it can't bleed into the version
|
|
4753
|
+
range = range.replace(BUILDSTRIPRE, '');
|
|
4754
|
+
|
|
4752
4755
|
// memoize range parsing for performance.
|
|
4753
4756
|
// this is a very hot path, and fully deterministic.
|
|
4754
4757
|
const memoOpts =
|
|
@@ -4874,6 +4877,7 @@ function requireRange () {
|
|
|
4874
4877
|
const SemVer = requireSemver$1();
|
|
4875
4878
|
const {
|
|
4876
4879
|
safeRe: re,
|
|
4880
|
+
src,
|
|
4877
4881
|
t,
|
|
4878
4882
|
comparatorTrimReplace,
|
|
4879
4883
|
tildeTrimReplace,
|
|
@@ -4881,6 +4885,9 @@ function requireRange () {
|
|
|
4881
4885
|
} = requireRe();
|
|
4882
4886
|
const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = requireConstants();
|
|
4883
4887
|
|
|
4888
|
+
// unbounded global build-metadata stripper used by parseRange
|
|
4889
|
+
const BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g');
|
|
4890
|
+
|
|
4884
4891
|
const isNullSet = c => c.value === '<0.0.0-0';
|
|
4885
4892
|
const isAny = c => c.value === '';
|
|
4886
4893
|
|
|
@@ -5932,7 +5939,7 @@ function requireSubset () {
|
|
|
5932
5939
|
if (higher === c && higher !== gt) {
|
|
5933
5940
|
return false
|
|
5934
5941
|
}
|
|
5935
|
-
} else if (gt.operator === '>=' && !
|
|
5942
|
+
} else if (gt.operator === '>=' && !c.test(gt.semver)) {
|
|
5936
5943
|
return false
|
|
5937
5944
|
}
|
|
5938
5945
|
}
|
|
@@ -5950,7 +5957,7 @@ function requireSubset () {
|
|
|
5950
5957
|
if (lower === c && lower !== lt) {
|
|
5951
5958
|
return false
|
|
5952
5959
|
}
|
|
5953
|
-
} else if (lt.operator === '<=' && !
|
|
5960
|
+
} else if (lt.operator === '<=' && !c.test(lt.semver)) {
|
|
5954
5961
|
return false
|
|
5955
5962
|
}
|
|
5956
5963
|
}
|
|
@@ -24346,14 +24353,14 @@ const SECTION_ORDER = [
|
|
|
24346
24353
|
* Core library version, inlined at build time.
|
|
24347
24354
|
*
|
|
24348
24355
|
* @remarks
|
|
24349
|
-
* The `0.5.
|
|
24356
|
+
* The `0.5.10` placeholder is replaced by
|
|
24350
24357
|
* `@rollup/plugin-replace` during the build with the actual version
|
|
24351
24358
|
* from `package.json`. This ensures the correct version survives
|
|
24352
24359
|
* when consumers bundle core into their own dist (where runtime
|
|
24353
24360
|
* `import.meta.url`-based resolution would find the wrong package.json).
|
|
24354
24361
|
*/
|
|
24355
24362
|
/** The core library version from package.json (inlined at build time). */
|
|
24356
|
-
const CORE_VERSION = '0.5.
|
|
24363
|
+
const CORE_VERSION = '0.5.10';
|
|
24357
24364
|
|
|
24358
24365
|
/**
|
|
24359
24366
|
* Workspace and config root initialization.
|
|
@@ -24366,12 +24373,26 @@ const CORE_VERSION = '0.5.9';
|
|
|
24366
24373
|
* - `{configRoot}/jeeves-{name}/` for each component
|
|
24367
24374
|
*/
|
|
24368
24375
|
let state;
|
|
24376
|
+
const WINDOWS_DRIVE_RE = /^[a-zA-Z]:/;
|
|
24377
|
+
/**
|
|
24378
|
+
* Throw if a path looks like a Windows drive letter on a non-Windows platform.
|
|
24379
|
+
*
|
|
24380
|
+
* @param label - Human-readable name for the path (used in error messages).
|
|
24381
|
+
* @param value - The raw path string to validate.
|
|
24382
|
+
*/
|
|
24383
|
+
function rejectWindowsDrivePath(label, value) {
|
|
24384
|
+
if (process.platform !== 'win32' && WINDOWS_DRIVE_RE.test(value)) {
|
|
24385
|
+
throw new Error(`jeeves-core: ${label} "${value}" looks like a Windows drive-letter path and will not resolve correctly on this platform.`);
|
|
24386
|
+
}
|
|
24387
|
+
}
|
|
24369
24388
|
/**
|
|
24370
24389
|
* Initialize the core library with workspace and config root paths.
|
|
24371
24390
|
*
|
|
24372
24391
|
* @param options - Workspace and config root paths.
|
|
24373
24392
|
*/
|
|
24374
24393
|
function init(options) {
|
|
24394
|
+
rejectWindowsDrivePath('configRoot', options.configRoot);
|
|
24395
|
+
rejectWindowsDrivePath('workspacePath', options.workspacePath);
|
|
24375
24396
|
state = {
|
|
24376
24397
|
workspacePath: options.workspacePath,
|
|
24377
24398
|
configRoot: options.configRoot,
|
|
@@ -26177,6 +26198,20 @@ When editing files outside the workspace, use the bridge pattern: copy in → ed
|
|
|
26177
26198
|
|
|
26178
26199
|
**Cross-channel sends:** Use the \`message\` tool with an explicit \`target\` to send to a different channel or DM.
|
|
26179
26200
|
|
|
26201
|
+
### Slack File Downloads
|
|
26202
|
+
|
|
26203
|
+
To download a Slack-hosted file, first try the \`message\` tool's \`download-file\` action. If that fails, fall back to a direct HTTP fetch using the bot token:
|
|
26204
|
+
|
|
26205
|
+
\`\`\`js
|
|
26206
|
+
fetch(url_private_download, {
|
|
26207
|
+
headers: { Authorization: 'Bearer ' + botToken },
|
|
26208
|
+
});
|
|
26209
|
+
\`\`\`
|
|
26210
|
+
|
|
26211
|
+
The bot token is at \`channels.slack.accounts.default.botToken\` in \`openclaw.json\`.
|
|
26212
|
+
|
|
26213
|
+
Never tell the user a file can't be downloaded until both methods have been tried.
|
|
26214
|
+
|
|
26180
26215
|
### Plugin Lifecycle
|
|
26181
26216
|
|
|
26182
26217
|
\`\`\`bash
|