@tera-system/pro 0.2.13 → 0.2.15
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/MANIFEST.json +6 -6
- package/README.md +2 -2
- package/RELEASES.md +29 -0
- package/package.json +6 -2
- package/scripts/lib/license-gate.mjs +1 -1
- package/scripts/tera-sync.mjs +12 -0
package/MANIFEST.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tera-system/pro",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Build manifest for the Tera System Pro commercial plugin component (THIN mode — content served from teranoo.com signed bundle).",
|
|
5
5
|
"compatibleEnvironments": [
|
|
6
6
|
"opencode"
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"projectControlTemplates": 1,
|
|
16
16
|
"assets": 49
|
|
17
17
|
},
|
|
18
|
-
"bundleRef": "core-bundle-v0.2.
|
|
19
|
-
"builtAt": "2026-08-
|
|
18
|
+
"bundleRef": "core-bundle-v0.2.15.signed.json (SHA256 D8566622C3AD4A2BF4E7B2D4CD3F8DE2F1B5537FCCF35B1EA770012D7AFB52FB)",
|
|
19
|
+
"builtAt": "2026-08-31",
|
|
20
20
|
"sha256": {
|
|
21
|
-
"agents": "
|
|
21
|
+
"agents": "5df28267510ec689b1a5e7b2e14ddb3ae9f5babe0160b2ae28527114c011f9c3",
|
|
22
22
|
"commands": "f8c91dab42e41d1f8362edfd816964ceabdbd95e8ebdd02e83ea36f7f805a259",
|
|
23
|
-
"core/tera-system": "
|
|
24
|
-
"tools": "
|
|
23
|
+
"core/tera-system": "543daed61504e0a502515e9d689e51a53c50c4d90d8c42e0ffc08598bbec0669",
|
|
24
|
+
"tools": "86ec41d886f42ae0faf0ee341abf73ab6abd29380c59246dedc47bcdbb1e7358",
|
|
25
25
|
"core/project-control": "cb979181d50e54c9b9b9173ffc890ca021bfaefe9678b1cad4a2f67ceac3dfdd"
|
|
26
26
|
}
|
|
27
27
|
}
|
package/README.md
CHANGED
|
@@ -38,8 +38,8 @@ node scripts/install.js --target /path/to/workspace
|
|
|
38
38
|
ط¨ط¹ط¯ ط§ظ„طھط«ط¨ظٹطھطŒ ظپط¹ظ‘ظ„ ط§ظ„ظ…ظپطھط§ط:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
|
-
TERA_LICENSE_KEY=your-key
|
|
42
|
-
|
|
41
|
+
TERA_LICENSE_KEY=your-key npx tera-license # ط£ظˆ
|
|
42
|
+
npx tera-sync
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
ط§ظ„طھطظ‚ظ‚ ظٹط¹ظ…ظ„ ط¹ط¨ط±: API ط§ظ„ط³ظٹط±ظپط± → fallback ط£ظˆظپظ„ط§ظٹظ† (Ed25519) → ظ†ط¨ط¶ ظ‚ظ„ط¨ ظƒظ„ 3 ط£ظٹط§ظ….
|
package/RELEASES.md
CHANGED
|
@@ -4,6 +4,35 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## 0.2.15 (2026-08-31)
|
|
8
|
+
|
|
9
|
+
### Research library + package info persistence + website deployment info (SCP-2026-08-31-001/002/003)
|
|
10
|
+
|
|
11
|
+
**What changed:**
|
|
12
|
+
- **Reusable Research Library (SCP-2026-08-31-001)** — `domain-research-agent` now applies Reuse-First (checks `../Teranoo-Research/00_INDEX.md` before any websearch) + a mandatory 4-question score gate (Score≥3 → saves as DRAFT in the private `Teranoo-Research` repo; DRAFT→READY only by Majed). `DOMAIN_INTELLIGENCE_PROTOCOL.md` §10 governs the protocol. The research library is a **separate private repo outside the bundle** — not distributed.
|
|
13
|
+
- **Package/website info persisted (SCP-2026-08-31-002/003)** — `TERA_DISTRIBUTION_POLICY.md` now records the official npm packages (`@tera-system/core`, `@tera-system/pro`), the origin repo `https://github.com/Alabasi1980/Teranoo-System`, the website repo `https://github.com/Alabasi1980/TeraWebsite`, and the deploy panel `https://coolify.teranoo.com/`. Fixed wrong `RepositoryUrl` in docs. `TeraSystemMaintenanceChecklist.md` gained a package-bump reminder.
|
|
14
|
+
|
|
15
|
+
**Bundle:** ships updated signed bundle `core-bundle-v0.2.15.signed.json` (200 files, contentSha256 643cf7c64502baac53160fadc89dcb361a8b55f6487c1b75faf8c148209aeb09, SHA256 D8566622C3AD4A2BF4E7B2D4CD3F8DE2F1B5537FCCF35B1EA770012D7AFB52FB) to the server.
|
|
16
|
+
|
|
17
|
+
**Deployment order:** publish npm `0.2.15` FIRST, then update the server bundle (same rule as 0.2.14).
|
|
18
|
+
|
|
19
|
+
## 0.2.14 (2026-08-30)
|
|
20
|
+
|
|
21
|
+
### Buyable tool access: bin entries + npx commands + sync integrity fix (SCP-2026-08-30-004)
|
|
22
|
+
|
|
23
|
+
**What changed:**
|
|
24
|
+
- **package.json `bin` entries added** — `tera-license`, `tera-sync`, `tera-heartbeat`, `tera-preflight` are now real commands. Buyers run `npx tera-sync`, `npx tera-preflight`, `npx tera-license activate <key>` from their workspace root. Previously `npx` failed (E404 — not a bin) and `npm run` failed ("Missing script" — scripts live in the package, not the project root).
|
|
25
|
+
- **tera-sync.mjs: integrity refresh after apply** — after applying the bundle, the integrity manifest is recreated. Previously a sync that changed bundle content left the install-time snapshot stale → preflight reported "modified files" → license gate BLOCKED. This would have broken existing buyers after a bundle update.
|
|
26
|
+
- **license-gate.mjs runtime message** — activation instruction now `npx tera-license activate <key>` (was `npm run tera-license -- activate <key>`, which fails from the buyer's project root).
|
|
27
|
+
- **TERA_LICENSE_GUARD.md** — same `npx` instruction in the Unlicensed block + preflight verification via `npx tera-preflight`.
|
|
28
|
+
- **README.md** — activation commands use `npx`.
|
|
29
|
+
|
|
30
|
+
**Why:**
|
|
31
|
+
- First real buyer trial proved neither `npx` (E404) nor `npm run` (Missing script) reached the package tools — the entry door to the system was broken for every buyer.
|
|
32
|
+
- Bundle content changed (guard text) — this release ships the updated signed bundle `core-bundle-v0.2.14.signed.json` (200 files, contentSha256 5b49116ded49caa3479d95cf96593e6f3d00a463a9f2ab6ca61152c5baf67f67) to the server.
|
|
33
|
+
|
|
34
|
+
**Deployment order (corrected):** publish npm `0.2.14` FIRST, then update the server bundle. npm-first ensures existing buyers already have the integrity-refresh fix in tera-sync before the bundle content changes; server-first would cause a temporary "modified files" scare for existing buyers running sync with old scripts.
|
|
35
|
+
|
|
7
36
|
|
|
8
37
|
|
|
9
38
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tera-system/pro",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Tera System Pro — commercial edition (thin): system files are fetched from teranoo.com as a signed bundle; enforced license gate + heartbeat",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"type": "module",
|
|
@@ -19,7 +19,11 @@
|
|
|
19
19
|
],
|
|
20
20
|
"bin": {
|
|
21
21
|
"tera-restore": "scripts/install.js",
|
|
22
|
-
"tera-pro-restore": "scripts/install.js"
|
|
22
|
+
"tera-pro-restore": "scripts/install.js",
|
|
23
|
+
"tera-license": "scripts/tera-license.mjs",
|
|
24
|
+
"tera-sync": "scripts/tera-sync.mjs",
|
|
25
|
+
"tera-heartbeat": "scripts/tera-heartbeat.mjs",
|
|
26
|
+
"tera-preflight": "scripts/preflight.mjs"
|
|
23
27
|
},
|
|
24
28
|
"scripts": {
|
|
25
29
|
"postinstall": "node scripts/install.js",
|
|
@@ -125,7 +125,7 @@ export async function enforceLicenseGate(target, options = {}) {
|
|
|
125
125
|
"❌ Tera System License Required.\n" +
|
|
126
126
|
"Current state: Unlicensed (trial mode).\n\n" +
|
|
127
127
|
"Visit https://teranoo.com/pricing to obtain a license key.\n" +
|
|
128
|
-
"Then run:
|
|
128
|
+
"Then run: npx tera-license activate <key>",
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
|
package/scripts/tera-sync.mjs
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import fs from "node:fs";
|
|
17
17
|
import path from "node:path";
|
|
18
18
|
import { verifyBundle, applyBundle } from "./lib/bundle.mjs";
|
|
19
|
+
import { createIntegrityManifest, saveIntegrityManifest } from "./lib/integrity.mjs";
|
|
19
20
|
|
|
20
21
|
const DEFAULT_URL = "https://teranoo.com/api/tera-system/bundle";
|
|
21
22
|
|
|
@@ -108,6 +109,17 @@ const syncStateFile = path.join(target, ".tera", "sync.state.json");
|
|
|
108
109
|
syncedAt: new Date().toISOString(),
|
|
109
110
|
}, null, 2));
|
|
110
111
|
|
|
112
|
+
// Refresh the integrity manifest AFTER applying files (SCP-2026-08-30-004).
|
|
113
|
+
// Without this, a sync that changes bundle content would leave the install-time
|
|
114
|
+
// snapshot stale and preflight would report "modified" → license gate BLOCKS.
|
|
115
|
+
try {
|
|
116
|
+
const integrityManifest = createIntegrityManifest(target);
|
|
117
|
+
saveIntegrityManifest(target, integrityManifest);
|
|
118
|
+
console.log(`✔ Integrity updated : ${integrityManifest.fileCount} files tracked`);
|
|
119
|
+
} catch (err) {
|
|
120
|
+
console.log(`⚠ Integrity update failed: ${err.message} — run install again if preflight blocks`);
|
|
121
|
+
}
|
|
122
|
+
|
|
111
123
|
console.log(`✔ Sync state : .tera/sync.state.json`);
|
|
112
124
|
console.log("\n✔ sync complete");
|
|
113
125
|
})().catch((err) => {
|