@nggaigc/cli 0.1.53 → 0.1.55

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.
@@ -0,0 +1,123 @@
1
+ /** Signed, finite aliases for new starts only. Never used for accepted run recovery. */
2
+ import { createHash, createPublicKey, verify } from "node:crypto";
3
+ import { readFile } from "node:fs/promises";
4
+ import { IndependentSkillError, } from "./independent-skill.js";
5
+ export const startCompatibilityDomain = "NGGAIGC/START-COMPATIBILITY/v1\0";
6
+ export function canonical(value) {
7
+ if (value === null || typeof value !== "object")
8
+ return JSON.stringify(value);
9
+ if (Array.isArray(value))
10
+ return `[${value.map(canonical).join(",")}]`;
11
+ return `{${Object.keys(value)
12
+ .sort()
13
+ .map((k) => `${JSON.stringify(k)}:${canonical(value[k])}`)
14
+ .join(",")}}`;
15
+ }
16
+ export function startCompatibilityInput(payload) {
17
+ return Buffer.from(startCompatibilityDomain + canonical(payload), "utf8");
18
+ }
19
+ function record(v) {
20
+ return !!v && typeof v === "object" && !Array.isArray(v);
21
+ }
22
+ function keys(v, expected) {
23
+ return Object.keys(v).sort().join(",") === expected.sort().join(",");
24
+ }
25
+ function fail() {
26
+ throw new IndependentSkillError("START_COMPATIBILITY_INVALID");
27
+ }
28
+ export function verifyStartCompatibility(value, trust) {
29
+ if (!record(value) ||
30
+ !keys(value, ["payload", "signature"]) ||
31
+ !record(value.payload) ||
32
+ !record(value.signature))
33
+ fail();
34
+ const p = value.payload, s = value.signature;
35
+ if (!keys(p, ["schemaVersion", "catalog", "contract", "aliases"]) ||
36
+ p.schemaVersion !== "nggaigc-start-compatibility/v1" ||
37
+ p.contract !== "same-skill-inputs-pricing-permissions" ||
38
+ !record(p.catalog) ||
39
+ !keys(p.catalog, ["releaseId", "catalogVersion", "releaseSha256"]) ||
40
+ typeof p.catalog.releaseId !== "string" ||
41
+ typeof p.catalog.catalogVersion !== "string" ||
42
+ typeof p.catalog.releaseSha256 !== "string" ||
43
+ !/^[a-f0-9]{64}$/.test(p.catalog.releaseSha256) ||
44
+ !Array.isArray(p.aliases) ||
45
+ !p.aliases.length ||
46
+ p.aliases.length > 128)
47
+ fail();
48
+ const seen = new Set();
49
+ for (const a of p.aliases) {
50
+ if (!record(a) ||
51
+ !keys(a, [
52
+ "id",
53
+ "fromVersion",
54
+ "fromManifestSha256",
55
+ "toVersion",
56
+ "toManifestSha256",
57
+ ]) ||
58
+ typeof a.id !== "string" ||
59
+ !/^skill\.[a-z0-9][a-z0-9.-]{0,79}$/.test(a.id) ||
60
+ typeof a.fromVersion !== "string" ||
61
+ typeof a.toVersion !== "string" ||
62
+ !/^\d+\.\d+\.\d+$/.test(a.fromVersion) ||
63
+ !/^\d+\.\d+\.\d+$/.test(a.toVersion) ||
64
+ a.fromVersion === a.toVersion ||
65
+ typeof a.fromManifestSha256 !== "string" ||
66
+ typeof a.toManifestSha256 !== "string" ||
67
+ !/^[a-f0-9]{64}$/.test(a.fromManifestSha256) ||
68
+ !/^[a-f0-9]{64}$/.test(a.toManifestSha256) ||
69
+ seen.has(`${a.id}@${a.fromVersion}`))
70
+ fail();
71
+ seen.add(`${a.id}@${a.fromVersion}`);
72
+ }
73
+ if (!keys(s, ["algorithm", "keyId", "scope", "value"]) ||
74
+ s.algorithm !== "ed25519" ||
75
+ s.keyId !== trust.keyId ||
76
+ s.scope !== "nggaigc-start-compatibility/v1" ||
77
+ typeof s.value !== "string" ||
78
+ !/^[A-Za-z0-9+/]{86}==$/.test(s.value))
79
+ fail();
80
+ try {
81
+ const key = createPublicKey(trust.publicKeyPem);
82
+ if (createHash("sha256")
83
+ .update(key.export({ type: "spki", format: "der" }))
84
+ .digest("hex") !== trust.spkiSha256 ||
85
+ !verify(null, startCompatibilityInput(p), key, Buffer.from(s.value, "base64")))
86
+ fail();
87
+ }
88
+ catch {
89
+ fail();
90
+ }
91
+ return p;
92
+ }
93
+ export async function resolveStartAlias(snapshot, index, id, version, trust, options = {}) {
94
+ if (version === undefined ||
95
+ index.entries.some((e) => e.id === id && e.version === version && e.state === "active"))
96
+ return;
97
+ if (options.exactVersion)
98
+ throw new IndependentSkillError("SKILL_UNAVAILABLE");
99
+ let value = options.migrationPermit;
100
+ if (value === undefined) {
101
+ try {
102
+ value = JSON.parse(await readFile(new URL("../vendor/start-compatibility.json", import.meta.url), "utf8"));
103
+ }
104
+ catch {
105
+ throw new IndependentSkillError("SKILL_UNAVAILABLE");
106
+ }
107
+ }
108
+ const permit = verifyStartCompatibility(value, trust);
109
+ if (!record(snapshot) ||
110
+ permit.catalog.releaseId !== snapshot.releaseId ||
111
+ permit.catalog.catalogVersion !== snapshot.catalogVersion ||
112
+ permit.catalog.releaseSha256 !== snapshot.releaseSha256)
113
+ throw new IndependentSkillError("START_COMPATIBILITY_CATALOG_MISMATCH");
114
+ const aliases = permit.aliases.filter((a) => a.id === id && a.fromVersion === version);
115
+ if (aliases.length !== 1)
116
+ throw new IndependentSkillError("SKILL_UNAVAILABLE");
117
+ const alias = aliases[0], targets = index.entries.filter((e) => e.id === id && e.state === "active");
118
+ if (targets.length !== 1 ||
119
+ targets[0].version !== alias.toVersion ||
120
+ targets[0].manifestSha256 !== alias.toManifestSha256)
121
+ fail();
122
+ return alias;
123
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nggaigc/cli",
3
- "version": "0.1.53",
3
+ "version": "0.1.55",
4
4
  "description": "Secure NGGAIGC Skill installer for Codex, WorkBuddy and compatible agents.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": "nggaigc-plugin-package/v1",
3
3
  "artifactId": "plugin.nggaigc",
4
- "version": "1.1.49",
5
- "sourceCommit": "69db1c015defab063dc6ac590c3191c3f2accf13",
6
- "artifactPath": "packages/plugins/nggaigc-plugin-1.1.49.zip",
7
- "sha256": "8f102ea49ea1123c44d2e199fb6f03a520a85890735a3dc88bbbf9718ec8dc65",
8
- "sizeBytes": 508722,
4
+ "version": "1.1.50",
5
+ "sourceCommit": "1e279eedc984589fae1ebadd2ea23c6b3582aea4",
6
+ "artifactPath": "packages/plugins/nggaigc-plugin-1.1.50.zip",
7
+ "sha256": "9aee975327e5ced69de3e51cb3fe9151b9cd45354f4651765faa3fef756208c1",
8
+ "sizeBytes": 510586,
9
9
  "fileCount": 24,
10
10
  "platforms": [
11
11
  "win32-x64",
@@ -13,35 +13,35 @@
13
13
  "darwin-arm64"
14
14
  ],
15
15
  "files": {
16
- ".codex-plugin/plugin.json": "ff760760b31838bcf605fc6239c02dd5efbe08e5c66ca2999ab63a75cf535ef0",
16
+ ".codex-plugin/plugin.json": "dd73ab1a5d077fd6ecbba753508b18a05606318b3c63856706e75ec6635a5419",
17
17
  "installer/install.cjs": "76f4ed73233fd39900fb0bedbc434dea39e52e6b6b4622f3fd388a5ca09c6f62",
18
18
  "installer/legacy-root-digests.json": "922552646a5aa6cff8616c372912a37b1d5f263351206b85785ed9b2eae31641",
19
19
  "installer/signed-pair-1.1.16.json": "ccb22a90302cc5c9c585067ebc211a27b0c9d8a177c2740a5678a58a3d70bfe9",
20
20
  "installer/signed-pair-1.1.17.json": "a3697506c929aaa085a6d994fc3a1b9a87e522ec6e1e32f3f760e6a534effa2b",
21
21
  "migration/seedream-1.1.3/agents/openai.yaml": "3cbf034ddccd64a7972acd37e7433683a3944f3d8c7b5bdccbbd70e517bf5a8c",
22
- "migration/seedream-1.1.3/references/image-generation.md": "208389b3ea4647040232c65a9b91ebcc20787818f57535f16664a7c4db842b3f",
22
+ "migration/seedream-1.1.3/references/image-generation.md": "15a6dd1f96c53240ef9e961049a7b323ca3c42d2dcf01c9982f1849f01e96afe",
23
23
  "migration/seedream-1.1.3/references/source.json": "75998d079a229435d1097b00bd008703bd38026fc6485c312254925bf55398a8",
24
24
  "migration/seedream-1.1.3/scripts/seedream.mjs": "dcc6af4d945790d9dfd7fac21c60934759d7ac2576a14507d0299f4833942a96",
25
- "migration/seedream-1.1.3/SKILL.md": "5c5cf3c2d99376f246425e873c5566436ed528256372ac3208abb60364c4517c",
25
+ "migration/seedream-1.1.3/SKILL.md": "65e39b129f40f86b76b24a19be6494f9b091bc3d1ccffd20b8a6cd56130a0cb7",
26
26
  "skills/nggaigc/agents/openai.yaml": "8936d97b9821e687e224e9349cc42be2ee5fc20988562efffbcb70080aedf87c",
27
- "skills/nggaigc/references/catalog-and-updates.md": "a43bee94a480aa2bf0b1e7038cee6f27fb86d2bd8fa88a28a63678963d7c1530",
28
- "skills/nggaigc/references/source.json": "64ac80a785146b993aace78f00e88bdd6a571957d019f8ac093264f8c59b9210",
27
+ "skills/nggaigc/references/catalog-and-updates.md": "534979fe28e85463c4558700e14401268b1c0e443fc49092199eef1911449f0c",
28
+ "skills/nggaigc/references/source.json": "9eb7fb5d860eb56f45aca2389b6510b6b5b750598b9b4fa3699e18918bf5ccd4",
29
29
  "skills/nggaigc/scripts/api_client.mjs": "e16bf750a297ef7e88e4843d2fba9c33b412a66516bfe76822d7deec6c153069",
30
30
  "skills/nggaigc/scripts/api_package.mjs": "824ea8f935e2c3aec7ad5ea5c6ad043f1b77ccd9918c86687a9bd61558954fe4",
31
- "skills/nggaigc/scripts/bootstrap-public.json": "1c5ef86f600dc35543db9f20fe0142fc97ff7f2940b585eb2a27860e3328e83f",
32
- "skills/nggaigc/scripts/launch-ngg-client.cjs": "97c3fb740eba0c0a3dc3ef9f24f3cbb201cd2e1b3209d14b782744bcc083e232",
31
+ "skills/nggaigc/scripts/bootstrap-public.json": "2dda72f76afa947a8b6cf2c40b89860f9b83c45927b0d1e312eb4537c81c1de8",
32
+ "skills/nggaigc/scripts/launch-ngg-client.cjs": "5ad2797a09c02998d26c111a999b6224d58fb5325391a38321a693b5225bf965",
33
33
  "skills/nggaigc/scripts/macos-keychain": "b0bdf29d14219d38ca18c7e5c599deb0daa8c8ac70b0babbc7d4fb23673079ec",
34
34
  "skills/nggaigc/scripts/macos-keychain.swift": "1b57e74fde66c824fe970547dd8ca0883a3334c34c065e85a8a2a90d4556a7f5",
35
- "skills/nggaigc/scripts/ngg_client.mjs": "43ce6697bd15f2bfef089031e33eab73ef1f3883cc724962f1e82731c676ef0c",
36
- "skills/nggaigc/scripts/ngg-session.mjs": "dbb69158307e3726a567ae65987f61d6ad15f75e3c6e2d41bf43bc50f15d91ec",
35
+ "skills/nggaigc/scripts/ngg_client.mjs": "8e6794297a2eb0df15845c1cb3264dbf4cc18699305f6c7d81d8edc32c82f2e0",
36
+ "skills/nggaigc/scripts/ngg-session.mjs": "c567d12a313caa93110371e50ddaad287cede2b7d9d2c077d40d0cf258fb7d65",
37
37
  "skills/nggaigc/scripts/supported-platforms.json": "ec8b0754c489e04534a1d9880dd6664ba9c5bcd07789e06d138e0923f23575ff",
38
38
  "skills/nggaigc/scripts/windows-credential.ps1": "641888d8c6016bb84f18df19315322ed802c5709fbe5209250eaf1b0ce498aec",
39
- "skills/nggaigc/SKILL.md": "8cb3eb8a03cf144ce15fa01d7d342495c2b11ba0f6a0cf61a493e1e43c83a11f"
39
+ "skills/nggaigc/SKILL.md": "bca7a53138b6f820c0a735dcdcb20b688e9a702699bc84babc4ef6a630988a07"
40
40
  },
41
41
  "signature": {
42
42
  "algorithm": "ed25519",
43
43
  "keyId": "ngg-signing-skill-release-1",
44
44
  "scope": "artifact-bytes",
45
- "value": "OTRlG+kA7/YmFdLHqdeGfoDftbYidQFCfZay4RSPWdaNmgpuIy32fT7s/u2GWbkAbUz8L1attssM6IPZUraZAg=="
45
+ "value": "qRAynXXtHPBZyWKaozm+Rc2rLoE+zPKZ93tDw3k4/J5r/zce8xlO7crJwCwfVf50mEAFcky8AwrXFt3E9fe4Bw=="
46
46
  }
47
47
  }
Binary file
@@ -0,0 +1,47 @@
1
+ {
2
+ "schemaVersion": "nggaigc-plugin-package/v1",
3
+ "artifactId": "plugin.nggaigc",
4
+ "version": "1.1.49",
5
+ "sourceCommit": "69db1c015defab063dc6ac590c3191c3f2accf13",
6
+ "artifactPath": "packages/plugins/nggaigc-plugin-1.1.49.zip",
7
+ "sha256": "8f102ea49ea1123c44d2e199fb6f03a520a85890735a3dc88bbbf9718ec8dc65",
8
+ "sizeBytes": 508722,
9
+ "fileCount": 24,
10
+ "platforms": [
11
+ "win32-x64",
12
+ "win32-arm64",
13
+ "darwin-arm64"
14
+ ],
15
+ "files": {
16
+ ".codex-plugin/plugin.json": "ff760760b31838bcf605fc6239c02dd5efbe08e5c66ca2999ab63a75cf535ef0",
17
+ "installer/install.cjs": "76f4ed73233fd39900fb0bedbc434dea39e52e6b6b4622f3fd388a5ca09c6f62",
18
+ "installer/legacy-root-digests.json": "922552646a5aa6cff8616c372912a37b1d5f263351206b85785ed9b2eae31641",
19
+ "installer/signed-pair-1.1.16.json": "ccb22a90302cc5c9c585067ebc211a27b0c9d8a177c2740a5678a58a3d70bfe9",
20
+ "installer/signed-pair-1.1.17.json": "a3697506c929aaa085a6d994fc3a1b9a87e522ec6e1e32f3f760e6a534effa2b",
21
+ "migration/seedream-1.1.3/agents/openai.yaml": "3cbf034ddccd64a7972acd37e7433683a3944f3d8c7b5bdccbbd70e517bf5a8c",
22
+ "migration/seedream-1.1.3/references/image-generation.md": "208389b3ea4647040232c65a9b91ebcc20787818f57535f16664a7c4db842b3f",
23
+ "migration/seedream-1.1.3/references/source.json": "75998d079a229435d1097b00bd008703bd38026fc6485c312254925bf55398a8",
24
+ "migration/seedream-1.1.3/scripts/seedream.mjs": "dcc6af4d945790d9dfd7fac21c60934759d7ac2576a14507d0299f4833942a96",
25
+ "migration/seedream-1.1.3/SKILL.md": "5c5cf3c2d99376f246425e873c5566436ed528256372ac3208abb60364c4517c",
26
+ "skills/nggaigc/agents/openai.yaml": "8936d97b9821e687e224e9349cc42be2ee5fc20988562efffbcb70080aedf87c",
27
+ "skills/nggaigc/references/catalog-and-updates.md": "a43bee94a480aa2bf0b1e7038cee6f27fb86d2bd8fa88a28a63678963d7c1530",
28
+ "skills/nggaigc/references/source.json": "64ac80a785146b993aace78f00e88bdd6a571957d019f8ac093264f8c59b9210",
29
+ "skills/nggaigc/scripts/api_client.mjs": "e16bf750a297ef7e88e4843d2fba9c33b412a66516bfe76822d7deec6c153069",
30
+ "skills/nggaigc/scripts/api_package.mjs": "824ea8f935e2c3aec7ad5ea5c6ad043f1b77ccd9918c86687a9bd61558954fe4",
31
+ "skills/nggaigc/scripts/bootstrap-public.json": "1c5ef86f600dc35543db9f20fe0142fc97ff7f2940b585eb2a27860e3328e83f",
32
+ "skills/nggaigc/scripts/launch-ngg-client.cjs": "97c3fb740eba0c0a3dc3ef9f24f3cbb201cd2e1b3209d14b782744bcc083e232",
33
+ "skills/nggaigc/scripts/macos-keychain": "b0bdf29d14219d38ca18c7e5c599deb0daa8c8ac70b0babbc7d4fb23673079ec",
34
+ "skills/nggaigc/scripts/macos-keychain.swift": "1b57e74fde66c824fe970547dd8ca0883a3334c34c065e85a8a2a90d4556a7f5",
35
+ "skills/nggaigc/scripts/ngg_client.mjs": "43ce6697bd15f2bfef089031e33eab73ef1f3883cc724962f1e82731c676ef0c",
36
+ "skills/nggaigc/scripts/ngg-session.mjs": "dbb69158307e3726a567ae65987f61d6ad15f75e3c6e2d41bf43bc50f15d91ec",
37
+ "skills/nggaigc/scripts/supported-platforms.json": "ec8b0754c489e04534a1d9880dd6664ba9c5bcd07789e06d138e0923f23575ff",
38
+ "skills/nggaigc/scripts/windows-credential.ps1": "641888d8c6016bb84f18df19315322ed802c5709fbe5209250eaf1b0ce498aec",
39
+ "skills/nggaigc/SKILL.md": "8cb3eb8a03cf144ce15fa01d7d342495c2b11ba0f6a0cf61a493e1e43c83a11f"
40
+ },
41
+ "signature": {
42
+ "algorithm": "ed25519",
43
+ "keyId": "ngg-signing-skill-release-1",
44
+ "scope": "artifact-bytes",
45
+ "value": "OTRlG+kA7/YmFdLHqdeGfoDftbYidQFCfZay4RSPWdaNmgpuIy32fT7s/u2GWbkAbUz8L1attssM6IPZUraZAg=="
46
+ }
47
+ }
@@ -0,0 +1,124 @@
1
+ {
2
+ "payload": {
3
+ "schemaVersion": "nggaigc-start-compatibility/v1",
4
+ "catalog": {
5
+ "releaseId": "catalog-2026.11.02.3",
6
+ "catalogVersion": "1.10.168",
7
+ "releaseSha256": "11fa89a45efc9b859d26ae6398b97b3a7559c1d614eefae3ff59a9403f481950"
8
+ },
9
+ "contract": "same-skill-inputs-pricing-permissions",
10
+ "aliases": [
11
+ {
12
+ "id": "skill.h3-aqing-video",
13
+ "fromVersion": "0.1.3",
14
+ "fromManifestSha256": "aa9bfafce6e01c47b4d1c55cb4222374b7c86dfd0a7eb9b7fd4f75b8ce6725b3",
15
+ "toVersion": "0.1.4",
16
+ "toManifestSha256": "8a6f2c926938bd5e39f06ee8618f6a3618176aebc5d2fe891d0f2f57bb623df2"
17
+ },
18
+ {
19
+ "id": "skill.h3-broll-video-assets",
20
+ "fromVersion": "0.1.9",
21
+ "fromManifestSha256": "d4f3a01ce66879e668935af9ccba225ca08ca9b123296e8f7e6144a2beb71674",
22
+ "toVersion": "0.1.10",
23
+ "toManifestSha256": "14b2d3996d927f2b3c995c3e827a33e990bcca923aa64f84c905b24b3badcfe4"
24
+ },
25
+ {
26
+ "id": "skill.image-singing-digital-human",
27
+ "fromVersion": "0.1.3",
28
+ "fromManifestSha256": "e9ae6ca29c8711afceccd423f260b249c6744582ba98cbcbc5bcfc89187a2c11",
29
+ "toVersion": "0.1.4",
30
+ "toManifestSha256": "941ca6ea1cd72540adef38f57f6b09b7e7635c72760f9c4eaa4a92e4fc86465a"
31
+ },
32
+ {
33
+ "id": "skill.image-singing-video",
34
+ "fromVersion": "0.1.2",
35
+ "fromManifestSha256": "6ef089b81c8da8a1039faeaff80a4559815e07bf46a11482003a191d8656187d",
36
+ "toVersion": "0.1.3",
37
+ "toManifestSha256": "a4ec99e3478b100c4abc1662e6cc01b8e41bb01f6653643d20e9910b8ff8b6c8"
38
+ },
39
+ {
40
+ "id": "skill.knowledge-narration-video",
41
+ "fromVersion": "0.1.7",
42
+ "fromManifestSha256": "076755d1414537fc46899cab8bae79c25e3607a923cff9df35c2b55c3f5c1c0b",
43
+ "toVersion": "0.1.8",
44
+ "toManifestSha256": "32be1dd0d3b59b575239eaf61a4b78226a17a9db757c1b1eb51559a01f946b15"
45
+ },
46
+ {
47
+ "id": "skill.ngg-depth-dance-copy",
48
+ "fromVersion": "0.2.1",
49
+ "fromManifestSha256": "efb34854dd2d5ab5e8d33363ca1ce93c69c7743cac143c16c34c360a8bab89fd",
50
+ "toVersion": "0.2.2",
51
+ "toManifestSha256": "6eca6fc0897875ba56c0cb460052f7f490f6833c61164daf3dfc22b4e9530fd9"
52
+ },
53
+ {
54
+ "id": "skill.ngg-drama-workflow",
55
+ "fromVersion": "0.3.4",
56
+ "fromManifestSha256": "04fdfac21e7010b4268e02b3d2424d9fb1b9359e88461464967565a09e8ec196",
57
+ "toVersion": "0.3.5",
58
+ "toManifestSha256": "1e94cabce4f46f7c4dec439e18ec66b19274a71516384379f92477e67275ca88"
59
+ },
60
+ {
61
+ "id": "skill.video-lipsync",
62
+ "fromVersion": "0.1.1",
63
+ "fromManifestSha256": "4d4ed19d17c56a0de549e1516c76b1c359749bfcd39dd52b7b24f216d5b68733",
64
+ "toVersion": "0.1.2",
65
+ "toManifestSha256": "cce3409eba007acb6901cf01cf5bf57167fa04b22f903aaa600de71ee77d7e4d"
66
+ },
67
+ {
68
+ "id": "skill.video-lipsync-workflow",
69
+ "fromVersion": "0.1.1",
70
+ "fromManifestSha256": "b22a9f7b107d9dd1d10be530cd31d6b207f5efa96628793987d7c3aeb3b26b1f",
71
+ "toVersion": "0.1.2",
72
+ "toManifestSha256": "a5f8e045e01dcff66cf1f65ab0f831d5349909606a47b4e2fe793c6d6a5cd5c2"
73
+ },
74
+ {
75
+ "id": "skill.voice-clone",
76
+ "fromVersion": "0.1.5",
77
+ "fromManifestSha256": "99220323b89b7412d4eda6b9a169965627744d0f32da9d3a30b8155b49799785",
78
+ "toVersion": "0.1.6",
79
+ "toManifestSha256": "7778a8e8cef0b426293c0f73c690a1cd464a0a10d8b9154e558e48ff0b2dbb25"
80
+ },
81
+ {
82
+ "id": "skill.w2-1-digital-human",
83
+ "fromVersion": "0.1.4",
84
+ "fromManifestSha256": "280038085869beb851f85189c66f3785b78436cb356f3d4e998f3a7f29f84c06",
85
+ "toVersion": "0.1.5",
86
+ "toManifestSha256": "5ed03ba9ea025f8327daae1bf4b56b6b36496eb6ae32bc09b9fe708b7d4bd1db"
87
+ },
88
+ {
89
+ "id": "skill.w2-1-image-digital-human",
90
+ "fromVersion": "0.1.6",
91
+ "fromManifestSha256": "12a470f19dd1115cd07b4ea65f7bfe03f2b4a7b1288f2535628a673bcb4a86b7",
92
+ "toVersion": "0.1.7",
93
+ "toManifestSha256": "80bbb639b345fd0dd91fba08243755f15bc9d186873cd33bde176603314e2e48"
94
+ },
95
+ {
96
+ "id": "skill.w3-multimodal-video",
97
+ "fromVersion": "1.2.9",
98
+ "fromManifestSha256": "393a95738fb1f8eda4bcf048afc695663c00f2d844cce76adb25c22db2eb2c47",
99
+ "toVersion": "1.2.10",
100
+ "toManifestSha256": "63aa79081179d5032a6b3dee796fc3c9e137b4edada312029d63ec1d52ff3514"
101
+ },
102
+ {
103
+ "id": "skill.w3-video-copy",
104
+ "fromVersion": "0.1.36",
105
+ "fromManifestSha256": "bbb3b9869b3a50b4724c30465e9b4addd7dde1514b4e4814e8d91664d01f64e8",
106
+ "toVersion": "0.1.37",
107
+ "toManifestSha256": "1a5c06a3dc14f612d2423b47701fb88f492ee2046741126b03d310c33907fb8a"
108
+ },
109
+ {
110
+ "id": "skill.w3g-video-generation",
111
+ "fromVersion": "0.1.2",
112
+ "fromManifestSha256": "d75ecfb49ba264601b360bcec6bc9e5ab19f6e9294ae01b9957da2fd8f41950b",
113
+ "toVersion": "0.1.3",
114
+ "toManifestSha256": "08ced5591a854739a7bd6594969d5bcf4ce6d392cf7423e72ac81dceffcb2489"
115
+ }
116
+ ]
117
+ },
118
+ "signature": {
119
+ "algorithm": "ed25519",
120
+ "keyId": "ngg-signing-skill-release-1",
121
+ "scope": "nggaigc-start-compatibility/v1",
122
+ "value": "TieQh/DsCu0K6ViZsYATqXFnBIFtnJxk97Nd3j9Jp8F4VfeacC7IE2vOlG5VLz/gWvxXqALy6J9OOiBJi45PDQ=="
123
+ }
124
+ }