mnemospark 1.2.0 → 1.2.2
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 +48 -12
- package/dist/cli.js +135 -41
- package/dist/cli.js.map +1 -1
- package/dist/index.js +135 -41
- package/dist/index.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/skills/mnemospark/SKILL.md +4 -2
- package/skills/mnemospark/references/commands.md +1 -1
- package/scripts/README.md +0 -55
- package/scripts/install-aws-cli.sh +0 -28
- package/scripts/install-jq.sh +0 -13
- package/scripts/install-pnpm.sh +0 -20
- package/scripts/reinstall.sh +0 -102
- package/scripts/uninstall.sh +0 -67
- package/scripts/verify-dev-tools.sh +0 -56
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "mnemospark",
|
|
3
3
|
"name": "mnemospark",
|
|
4
|
-
"version": "1.2.
|
|
4
|
+
"version": "1.2.2",
|
|
5
5
|
"description": "mnemospark is an OpenClaw plugin that gives agentic systems instant, secure access to cloud storage, compute, and proprietary datasets paid via x402 with USDC on Base. Wallet and go.",
|
|
6
6
|
"configSchema": {
|
|
7
7
|
"type": "object",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mnemospark",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "mnemospark is an OpenClaw plugin that gives agentic systems instant, secure access to cloud storage, compute, and proprietary datasets paid via x402 with USDC on Base. Wallet and go.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,7 +18,9 @@ Use this skill for mnemospark cloud backup/storage workflows, async operation tr
|
|
|
18
18
|
|
|
19
19
|
3. **Flag style:** Use **`--key value`** for all arguments (and bare flags like `--async`, `--latest`, `--renewal`, `--cancel` where applicable). Do **not** build shell commands with slash prefixes (`/mnemospark …`) or `name:value` forms—those are for **in-chat** slash UX. The chat handler accepts multiple spellings; **shell automation must use `--key value`**.
|
|
20
20
|
|
|
21
|
-
4. **
|
|
21
|
+
4. **SQLite:** Do **not** use the host `sqlite3` binary to read `~/.openclaw/mnemospark/state.db`. mnemospark uses Node’s built-in SQLite (`node:sqlite`). For **`price-storage`** after a local **backup**, you may **omit `--object-id-hash`**; the CLI reads sha256 from local state. Otherwise pass `--object-id-hash` from backup output.
|
|
22
|
+
|
|
23
|
+
5. **Discovery:** `node <ABSOLUTE_PATH_TO_EXTENSION>/dist/cli.js cloud help` shows the same help as `/mnemospark cloud help`.
|
|
22
24
|
|
|
23
25
|
## Inputs expected
|
|
24
26
|
|
|
@@ -50,7 +52,7 @@ Let `CLI` = `node <ABSOLUTE_PATH_TO_EXTENSION>/dist/cli.js cloud`. Replace `<ABS
|
|
|
50
52
|
**Primary subcommands**
|
|
51
53
|
|
|
52
54
|
- `CLI backup <file|directory> --name <friendly-name> [--async] [--orchestrator <inline|subagent>] [--timeout-seconds <n>]` — **`--name` is required.**
|
|
53
|
-
- `CLI price-storage --wallet-address <addr> --object-id <id> --object-id-hash <hash> --gb <gb> --provider <provider> --region <region>` — **`--provider` and `--region` are required** (defaults often `aws` / `us-east-1`; override as needed).
|
|
55
|
+
- `CLI price-storage --wallet-address <addr> --object-id <id> [--object-id-hash <hash>] --gb <gb> --provider <provider> --region <region>` — **`--provider` and `--region` are required** (defaults often `aws` / `us-east-1`; override as needed). Omit **`--object-id-hash`** when the object row exists in local SQLite after **backup**; pass it when quoting without a prior local backup row.
|
|
54
56
|
- `CLI upload --quote-id <quote-id> --wallet-address <addr> --object-id <id> --object-id-hash <hash> [--name <friendly-name>] [--async] [--orchestrator <inline|subagent>] [--timeout-seconds <n>]`
|
|
55
57
|
- `CLI ls --wallet-address <addr> [--object-key <object-key> | --name <friendly-name>] [--latest|--at <timestamp>]`
|
|
56
58
|
- `CLI download --wallet-address <addr> [--object-key <object-key> | --name <friendly-name>] [--latest|--at <timestamp>] [--async] [--orchestrator <inline|subagent>] [--timeout-seconds <n>]`
|
|
@@ -15,7 +15,7 @@ Slash usage: `/mnemospark cloud <subcommand> …`. CLI/agent: `node dist/cli.js
|
|
|
15
15
|
|
|
16
16
|
### Price storage quote
|
|
17
17
|
|
|
18
|
-
`price-storage --wallet-address <addr> --object-id <id> --object-id-hash <hash> --gb <gb> --provider aws --region us-east-1` (defaults; override `--provider` / `--region` for other regions)
|
|
18
|
+
`price-storage --wallet-address <addr> --object-id <id> [--object-id-hash <hash>] --gb <gb> --provider aws --region us-east-1` (defaults; override `--provider` / `--region` for other regions). Omit `--object-id-hash` when the object already exists in local SQLite after **backup** (mnemospark resolves sha256 via `node:sqlite`; do not shell out to the `sqlite3` binary).
|
|
19
19
|
|
|
20
20
|
### Upload
|
|
21
21
|
|
package/scripts/README.md
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
# Scripts
|
|
2
|
-
|
|
3
|
-
Development and install scripts for mnemospark.
|
|
4
|
-
|
|
5
|
-
## Install scripts (run once per machine)
|
|
6
|
-
|
|
7
|
-
**Prerequisites:** Node.js v20+ is required for pnpm. AWS credentials and GitHub auth are configured separately (IAM role, `aws configure`, `gh auth login`).
|
|
8
|
-
|
|
9
|
-
| Script | Purpose |
|
|
10
|
-
| ------------------------------ | ------------------------------------------------ |
|
|
11
|
-
| `./scripts/install-pnpm.sh` | Enable pnpm via Node corepack. Idempotent. |
|
|
12
|
-
| `./scripts/install-aws-cli.sh` | Install AWS CLI v2 on Ubuntu x86_64. Idempotent. |
|
|
13
|
-
| `./scripts/install-jq.sh` | Optional: install jq via apt. Idempotent. |
|
|
14
|
-
|
|
15
|
-
Run from repo root, e.g.:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
./scripts/install-pnpm.sh
|
|
19
|
-
./scripts/install-aws-cli.sh
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
AWS CLI credentials are not installed by the script; use IAM role or `aws configure` per environment.
|
|
23
|
-
|
|
24
|
-
## Verification
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
./scripts/verify-dev-tools.sh
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Checks: `aws --version`, `aws sts get-caller-identity`, `node -v`, `pnpm -v`, `git --version`, `gh auth status`. Optionally runs `pnpm install`, `pnpm build`, `pnpm test` unless `SKIP_PNPM_BUILD=1`.
|
|
31
|
-
|
|
32
|
-
Full pass requires AWS credentials and `gh auth login` to be configured.
|
|
33
|
-
|
|
34
|
-
## Optional: jq
|
|
35
|
-
|
|
36
|
-
jq is optional (per development_tools_requirements_doc). To install on Ubuntu:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
sudo apt install -y jq
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Or run `./scripts/install-jq.sh` if present.
|
|
43
|
-
|
|
44
|
-
## Documentation
|
|
45
|
-
|
|
46
|
-
Documentation lives in the separate **mnemospark-docs** repository. Clone or open that repo directly when editing product and API docs:
|
|
47
|
-
|
|
48
|
-
- Repo: `git@github.com:pawlsclick/mnemospark-docs.git`
|
|
49
|
-
|
|
50
|
-
Do not expect a `.company` subdirectory in this repo; that Git submodule has been removed in favor of working directly in `mnemospark-docs`.
|
|
51
|
-
|
|
52
|
-
## Other scripts
|
|
53
|
-
|
|
54
|
-
- `reinstall.sh` — Reinstall mnemospark OpenClaw plugin.
|
|
55
|
-
- `uninstall.sh` — Uninstall mnemospark plugin and clean config.
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Install AWS CLI v2 on Ubuntu (x86_64). Idempotent: if aws --version already shows v2.x, exit 0.
|
|
3
|
-
# Credentials are out of scope (IAM role or aws configure per environment).
|
|
4
|
-
set -e
|
|
5
|
-
|
|
6
|
-
AWS_URL="https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"
|
|
7
|
-
TMP_DIR="${TMPDIR:-/tmp}/awscliv2-$$"
|
|
8
|
-
|
|
9
|
-
if command -v aws >/dev/null 2>&1; then
|
|
10
|
-
ver=$(aws --version 2>&1 || true)
|
|
11
|
-
if [[ "$ver" =~ aws-cli/2\. ]]; then
|
|
12
|
-
echo "AWS CLI v2 already installed: $ver"
|
|
13
|
-
exit 0
|
|
14
|
-
fi
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
cleanup() { rm -rf "$TMP_DIR"; }
|
|
18
|
-
trap cleanup EXIT
|
|
19
|
-
mkdir -p "$TMP_DIR"
|
|
20
|
-
cd "$TMP_DIR"
|
|
21
|
-
|
|
22
|
-
echo "Downloading AWS CLI v2..."
|
|
23
|
-
curl -sSfL "$AWS_URL" -o awscliv2.zip
|
|
24
|
-
unzip -q awscliv2.zip
|
|
25
|
-
sudo ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
|
|
26
|
-
|
|
27
|
-
echo "AWS CLI v2 installed: $(aws --version)"
|
|
28
|
-
exit 0
|
package/scripts/install-jq.sh
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Optional: install jq on Ubuntu. Idempotent: if jq already works, exit 0.
|
|
3
|
-
# See development_tools_requirements_doc.md §2.7 — jq is optional.
|
|
4
|
-
set -e
|
|
5
|
-
|
|
6
|
-
if command -v jq >/dev/null 2>&1; then
|
|
7
|
-
jq --version >/dev/null 2>&1 && { echo "jq already installed: $(jq --version)"; exit 0; }
|
|
8
|
-
fi
|
|
9
|
-
|
|
10
|
-
sudo apt-get update -qq
|
|
11
|
-
sudo apt-get install -y jq
|
|
12
|
-
echo "jq installed: $(jq --version)"
|
|
13
|
-
exit 0
|
package/scripts/install-pnpm.sh
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Install and enable pnpm on Ubuntu dev instance via Node corepack.
|
|
3
|
-
# Idempotent: if pnpm already works, exit 0.
|
|
4
|
-
# Prerequisite: Node.js v20+ (engines in package.json).
|
|
5
|
-
set -e
|
|
6
|
-
|
|
7
|
-
if command -v pnpm >/dev/null 2>&1; then
|
|
8
|
-
pnpm -v >/dev/null 2>&1 && { echo "pnpm already installed: $(pnpm -v)"; exit 0; }
|
|
9
|
-
fi
|
|
10
|
-
|
|
11
|
-
if ! command -v node >/dev/null 2>&1; then
|
|
12
|
-
echo "Error: Node.js is required. Install Node.js v20+ first." >&2
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
corepack enable
|
|
17
|
-
corepack prepare pnpm@latest --activate
|
|
18
|
-
|
|
19
|
-
echo "pnpm installed: $(pnpm -v)"
|
|
20
|
-
exit 0
|
package/scripts/reinstall.sh
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
|
|
6
|
-
echo "mnemospark reinstall"
|
|
7
|
-
echo ""
|
|
8
|
-
|
|
9
|
-
# 1. Remove mnemospark plugin files only
|
|
10
|
-
echo "→ Removing plugin files..."
|
|
11
|
-
rm -rf ~/.openclaw/extensions/mnemospark
|
|
12
|
-
|
|
13
|
-
# 2. Clean only mnemospark config entries (do not touch blockrun/openclaw)
|
|
14
|
-
echo "→ Cleaning config entries (mnemospark only)..."
|
|
15
|
-
node -e "
|
|
16
|
-
const f = require('os').homedir() + '/.openclaw/openclaw.json';
|
|
17
|
-
const fs = require('fs');
|
|
18
|
-
if (!fs.existsSync(f)) {
|
|
19
|
-
console.log(' No openclaw.json found, skipping');
|
|
20
|
-
process.exit(0);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
let c;
|
|
24
|
-
try {
|
|
25
|
-
c = JSON.parse(fs.readFileSync(f, 'utf8'));
|
|
26
|
-
} catch (err) {
|
|
27
|
-
const backupPath = f + '.corrupt.' + Date.now();
|
|
28
|
-
console.error(' ERROR: Invalid JSON in openclaw.json');
|
|
29
|
-
console.error(' ' + err.message);
|
|
30
|
-
try {
|
|
31
|
-
fs.copyFileSync(f, backupPath);
|
|
32
|
-
console.log(' Backed up to: ' + backupPath);
|
|
33
|
-
} catch {}
|
|
34
|
-
console.log(' Skipping config cleanup...');
|
|
35
|
-
process.exit(0);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (c.plugins?.entries?.mnemospark) delete c.plugins.entries.mnemospark;
|
|
39
|
-
if (c.plugins?.installs?.mnemospark) delete c.plugins.installs.mnemospark;
|
|
40
|
-
if (Array.isArray(c.plugins?.allow)) {
|
|
41
|
-
c.plugins.allow = c.plugins.allow.filter(p => p !== 'mnemospark');
|
|
42
|
-
}
|
|
43
|
-
fs.writeFileSync(f, JSON.stringify(c, null, 2));
|
|
44
|
-
console.log(' Config cleaned');
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
# 3. Kill mnemospark proxy (port 7120)
|
|
48
|
-
echo "→ Stopping old proxy..."
|
|
49
|
-
lsof -ti :7120 | xargs kill -9 2>/dev/null || true
|
|
50
|
-
|
|
51
|
-
# 4. Remove stale models cache so it gets regenerated
|
|
52
|
-
echo "→ Cleaning models cache..."
|
|
53
|
-
rm -f ~/.openclaw/agents/main/agent/models.json 2>/dev/null || true
|
|
54
|
-
|
|
55
|
-
# 5. Install mnemospark plugin
|
|
56
|
-
echo "→ Installing mnemospark..."
|
|
57
|
-
openclaw plugins install mnemospark
|
|
58
|
-
|
|
59
|
-
# 6. Verify installation
|
|
60
|
-
echo "→ Verifying installation..."
|
|
61
|
-
DIST_PATH="$HOME/.openclaw/extensions/mnemospark/dist/index.js"
|
|
62
|
-
if [ ! -f "$DIST_PATH" ]; then
|
|
63
|
-
echo " ⚠️ dist/ files missing, clearing npm cache and retrying..."
|
|
64
|
-
npm cache clean --force 2>/dev/null || true
|
|
65
|
-
rm -rf ~/.openclaw/extensions/mnemospark
|
|
66
|
-
openclaw plugins install mnemospark
|
|
67
|
-
|
|
68
|
-
if [ ! -f "$DIST_PATH" ]; then
|
|
69
|
-
echo " ❌ Installation failed - dist/index.js still missing"
|
|
70
|
-
exit 1
|
|
71
|
-
fi
|
|
72
|
-
fi
|
|
73
|
-
echo " ✓ dist/index.js verified"
|
|
74
|
-
|
|
75
|
-
# 7. Ensure mnemospark is in plugins.allow
|
|
76
|
-
echo "→ Adding to plugins allow list..."
|
|
77
|
-
node -e "
|
|
78
|
-
const os = require('os');
|
|
79
|
-
const fs = require('fs');
|
|
80
|
-
const path = require('path');
|
|
81
|
-
const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json');
|
|
82
|
-
|
|
83
|
-
if (fs.existsSync(configPath)) {
|
|
84
|
-
try {
|
|
85
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
86
|
-
if (!config.plugins) config.plugins = {};
|
|
87
|
-
if (!Array.isArray(config.plugins.allow)) config.plugins.allow = [];
|
|
88
|
-
if (!config.plugins.allow.includes('mnemospark')) {
|
|
89
|
-
config.plugins.allow.push('mnemospark');
|
|
90
|
-
console.log(' Added mnemospark to plugins.allow');
|
|
91
|
-
}
|
|
92
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
93
|
-
} catch (e) {
|
|
94
|
-
console.log(' Could not update config:', e.message);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
"
|
|
98
|
-
|
|
99
|
-
echo ""
|
|
100
|
-
echo "✓ Done. Run: openclaw gateway restart"
|
|
101
|
-
echo ""
|
|
102
|
-
echo "To uninstall: bash ~/.openclaw/extensions/mnemospark/scripts/uninstall.sh"
|
package/scripts/uninstall.sh
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
echo "mnemospark uninstall"
|
|
5
|
-
echo ""
|
|
6
|
-
|
|
7
|
-
# 1. Stop mnemospark proxy (port 7120)
|
|
8
|
-
echo "→ Stopping proxy..."
|
|
9
|
-
lsof -ti :7120 | xargs kill -9 2>/dev/null || true
|
|
10
|
-
|
|
11
|
-
# 2. Remove mnemospark plugin files only
|
|
12
|
-
echo "→ Removing plugin files..."
|
|
13
|
-
rm -rf ~/.openclaw/extensions/mnemospark
|
|
14
|
-
|
|
15
|
-
# 3. Clean only mnemospark entries from openclaw.json (do not touch blockrun/openclaw)
|
|
16
|
-
echo "→ Cleaning openclaw.json (mnemospark only)..."
|
|
17
|
-
node -e "
|
|
18
|
-
const os = require('os');
|
|
19
|
-
const fs = require('fs');
|
|
20
|
-
const path = require('path');
|
|
21
|
-
const configPath = path.join(os.homedir(), '.openclaw', 'openclaw.json');
|
|
22
|
-
|
|
23
|
-
if (!fs.existsSync(configPath)) {
|
|
24
|
-
console.log(' No openclaw.json found, skipping');
|
|
25
|
-
process.exit(0);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
try {
|
|
29
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
30
|
-
let changed = false;
|
|
31
|
-
|
|
32
|
-
// Remove only mnemospark plugin entries
|
|
33
|
-
if (config.plugins?.entries?.mnemospark) {
|
|
34
|
-
delete config.plugins.entries.mnemospark;
|
|
35
|
-
changed = true;
|
|
36
|
-
}
|
|
37
|
-
if (config.plugins?.installs?.mnemospark) {
|
|
38
|
-
delete config.plugins.installs.mnemospark;
|
|
39
|
-
changed = true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Remove only mnemospark from plugins.allow
|
|
43
|
-
if (Array.isArray(config.plugins?.allow)) {
|
|
44
|
-
const before = config.plugins.allow.length;
|
|
45
|
-
config.plugins.allow = config.plugins.allow.filter(p => p !== 'mnemospark');
|
|
46
|
-
if (config.plugins.allow.length !== before) {
|
|
47
|
-
console.log(' Removed mnemospark from plugins.allow');
|
|
48
|
-
changed = true;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (changed) {
|
|
53
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
54
|
-
console.log(' Config cleaned');
|
|
55
|
-
} else {
|
|
56
|
-
console.log(' No mnemospark entries found');
|
|
57
|
-
}
|
|
58
|
-
} catch (err) {
|
|
59
|
-
console.error(' Error:', err.message);
|
|
60
|
-
}
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
echo ""
|
|
64
|
-
echo "✓ mnemospark uninstalled"
|
|
65
|
-
echo ""
|
|
66
|
-
echo "Restart OpenClaw to apply changes:"
|
|
67
|
-
echo " openclaw gateway restart"
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Verify required development tools for mnemospark. Exit 0 only if all checks pass.
|
|
3
|
-
# Run from repo root. AWS credentials and gh auth must be configured for full pass.
|
|
4
|
-
# Optional: set SKIP_PNPM_BUILD=1 to skip pnpm install/build/test (e.g. when no AWS creds).
|
|
5
|
-
set -e
|
|
6
|
-
|
|
7
|
-
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
8
|
-
cd "$REPO_ROOT"
|
|
9
|
-
|
|
10
|
-
fail() { echo " FAIL: $1" >&2; exit 1; }
|
|
11
|
-
|
|
12
|
-
echo "Checking aws..."
|
|
13
|
-
command -v aws >/dev/null 2>&1 || fail "aws not found. Run scripts/install-aws-cli.sh"
|
|
14
|
-
aws --version >/dev/null 2>&1 || fail "aws --version failed"
|
|
15
|
-
echo " ok"
|
|
16
|
-
|
|
17
|
-
echo "Checking aws sts get-caller-identity..."
|
|
18
|
-
aws sts get-caller-identity >/dev/null 2>&1 || fail "AWS credentials not configured (aws sts get-caller-identity failed). Use IAM role or aws configure."
|
|
19
|
-
echo " ok"
|
|
20
|
-
|
|
21
|
-
echo "Checking node..."
|
|
22
|
-
command -v node >/dev/null 2>&1 || fail "node not found. Install Node.js v20+."
|
|
23
|
-
node -v >/dev/null 2>&1 || fail "node -v failed"
|
|
24
|
-
echo " ok"
|
|
25
|
-
|
|
26
|
-
echo "Checking pnpm..."
|
|
27
|
-
command -v pnpm >/dev/null 2>&1 || fail "pnpm not found. Run scripts/install-pnpm.sh"
|
|
28
|
-
pnpm -v >/dev/null 2>&1 || fail "pnpm -v failed"
|
|
29
|
-
echo " ok"
|
|
30
|
-
|
|
31
|
-
echo "Checking git..."
|
|
32
|
-
command -v git >/dev/null 2>&1 || fail "git not found"
|
|
33
|
-
git --version >/dev/null 2>&1 || fail "git --version failed"
|
|
34
|
-
echo " ok"
|
|
35
|
-
|
|
36
|
-
echo "Checking gh auth status..."
|
|
37
|
-
command -v gh >/dev/null 2>&1 || fail "gh (GitHub CLI) not found"
|
|
38
|
-
# Use --json so exit code is 0 when logged in (avoids exit 1 from "plain text" warning)
|
|
39
|
-
gh auth status --json hosts >/dev/null 2>&1 || fail "gh auth status failed. Run gh auth login."
|
|
40
|
-
echo " ok"
|
|
41
|
-
|
|
42
|
-
if [[ "${SKIP_PNPM_BUILD}" == "1" ]]; then
|
|
43
|
-
echo "Skipping pnpm install/build/test (SKIP_PNPM_BUILD=1)"
|
|
44
|
-
else
|
|
45
|
-
echo "Running pnpm install..."
|
|
46
|
-
pnpm install || fail "pnpm install failed"
|
|
47
|
-
echo " ok"
|
|
48
|
-
echo "Running pnpm build..."
|
|
49
|
-
pnpm build || fail "pnpm build failed"
|
|
50
|
-
echo " ok"
|
|
51
|
-
echo "Running pnpm test..."
|
|
52
|
-
pnpm test || fail "pnpm test failed"
|
|
53
|
-
echo " ok"
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
echo "All required dev tools verified."
|