@sendbird/cli 0.0.0-stage → 0.3.0-alpha.1
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/.claude-plugin/plugin.json +11 -0
- package/.codex-plugin/plugin.json +33 -0
- package/LICENSE +13 -0
- package/NOTICE.md +1105 -0
- package/PROVENANCE.md +15 -0
- package/README.md +457 -2
- package/dist/acl.d.ts +2 -0
- package/dist/acl.js +12 -0
- package/dist/acl.js.map +1 -0
- package/dist/billing-plan.d.ts +68 -0
- package/dist/billing-plan.js +235 -0
- package/dist/billing-plan.js.map +1 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +20 -0
- package/dist/browser.js.map +1 -0
- package/dist/calls-catalog.d.ts +79 -0
- package/dist/calls-catalog.js +322 -0
- package/dist/calls-catalog.js.map +1 -0
- package/dist/calls-credits.d.ts +31 -0
- package/dist/calls-credits.js +224 -0
- package/dist/calls-credits.js.map +1 -0
- package/dist/calls-trial.d.ts +45 -0
- package/dist/calls-trial.js +77 -0
- package/dist/calls-trial.js.map +1 -0
- package/dist/calls.d.ts +10 -0
- package/dist/calls.js +470 -0
- package/dist/calls.js.map +1 -0
- package/dist/catalog.d.ts +67 -0
- package/dist/catalog.js +784 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +502 -0
- package/dist/cli.js.map +1 -0
- package/dist/core.d.ts +86 -0
- package/dist/core.js +531 -0
- package/dist/core.js.map +1 -0
- package/dist/diagnostics.d.ts +206 -0
- package/dist/diagnostics.js +664 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/discovery.d.ts +700 -0
- package/dist/discovery.js +838 -0
- package/dist/discovery.js.map +1 -0
- package/dist/docs.d.ts +31 -0
- package/dist/docs.js +137 -0
- package/dist/docs.js.map +1 -0
- package/dist/features.d.ts +131 -0
- package/dist/features.js +227 -0
- package/dist/features.js.map +1 -0
- package/dist/generated-api.d.ts +116 -0
- package/dist/generated-api.js +118 -0
- package/dist/generated-api.js.map +1 -0
- package/dist/human-format.d.ts +40 -0
- package/dist/human-format.js +205 -0
- package/dist/human-format.js.map +1 -0
- package/dist/human-list.d.ts +2 -0
- package/dist/human-list.js +368 -0
- package/dist/human-list.js.map +1 -0
- package/dist/human-output.d.ts +10 -0
- package/dist/human-output.js +1351 -0
- package/dist/human-output.js.map +1 -0
- package/dist/human-pro.d.ts +3 -0
- package/dist/human-pro.js +201 -0
- package/dist/human-pro.js.map +1 -0
- package/dist/human-progress.d.ts +5 -0
- package/dist/human-progress.js +49 -0
- package/dist/human-progress.js.map +1 -0
- package/dist/local.d.ts +42 -0
- package/dist/local.js +707 -0
- package/dist/local.js.map +1 -0
- package/dist/oauth-callback.d.ts +3 -0
- package/dist/oauth-callback.js +66 -0
- package/dist/oauth-callback.js.map +1 -0
- package/dist/oauth-lock.d.ts +6 -0
- package/dist/oauth-lock.js +212 -0
- package/dist/oauth-lock.js.map +1 -0
- package/dist/oauth.d.ts +32 -0
- package/dist/oauth.js +493 -0
- package/dist/oauth.js.map +1 -0
- package/dist/presentation.d.ts +208 -0
- package/dist/presentation.js +156 -0
- package/dist/presentation.js.map +1 -0
- package/dist/pro-api-catalog.d.ts +24 -0
- package/dist/pro-api-catalog.js +619 -0
- package/dist/pro-api-catalog.js.map +1 -0
- package/dist/pro-api.d.ts +10 -0
- package/dist/pro-api.js +338 -0
- package/dist/pro-api.js.map +1 -0
- package/dist/project.d.ts +34 -0
- package/dist/project.js +62 -0
- package/dist/project.js.map +1 -0
- package/dist/recovery.d.ts +41 -0
- package/dist/recovery.js +417 -0
- package/dist/recovery.js.map +1 -0
- package/dist/runner.d.ts +47 -0
- package/dist/runner.js +603 -0
- package/dist/runner.js.map +1 -0
- package/dist/sdk-catalog.d.ts +69 -0
- package/dist/sdk-catalog.js +527 -0
- package/dist/sdk-catalog.js.map +1 -0
- package/dist/sdk-config.d.ts +19 -0
- package/dist/sdk-config.js +85 -0
- package/dist/sdk-config.js.map +1 -0
- package/dist/sdk-dto.d.ts +244 -0
- package/dist/sdk-dto.js +98 -0
- package/dist/sdk-dto.js.map +1 -0
- package/dist/sdk-limits.d.ts +2 -0
- package/dist/sdk-limits.js +3 -0
- package/dist/sdk-limits.js.map +1 -0
- package/dist/sdk-node-file-reader.d.ts +6 -0
- package/dist/sdk-node-file-reader.js +38 -0
- package/dist/sdk-node-file-reader.js.map +1 -0
- package/dist/sdk-pro-catalog.d.ts +22 -0
- package/dist/sdk-pro-catalog.js +234 -0
- package/dist/sdk-pro-catalog.js.map +1 -0
- package/dist/sdk-pro-runtime.d.ts +31 -0
- package/dist/sdk-pro-runtime.js +293 -0
- package/dist/sdk-pro-runtime.js.map +1 -0
- package/dist/sdk-query.d.ts +10 -0
- package/dist/sdk-query.js +29 -0
- package/dist/sdk-query.js.map +1 -0
- package/dist/sdk-runtime.d.ts +15 -0
- package/dist/sdk-runtime.js +685 -0
- package/dist/sdk-runtime.js.map +1 -0
- package/dist/sdk-worker.d.ts +1 -0
- package/dist/sdk-worker.js +26 -0
- package/dist/sdk-worker.js.map +1 -0
- package/dist/sdk.d.ts +29 -0
- package/dist/sdk.js +346 -0
- package/dist/sdk.js.map +1 -0
- package/dist/search-engine.d.ts +17 -0
- package/dist/search-engine.js +54 -0
- package/dist/search-engine.js.map +1 -0
- package/dist/search-intents.d.ts +2 -0
- package/dist/search-intents.js +98 -0
- package/dist/search-intents.js.map +1 -0
- package/dist/search.d.ts +7 -0
- package/dist/search.js +58 -0
- package/dist/search.js.map +1 -0
- package/dist/secret-output.d.ts +2 -0
- package/dist/secret-output.js +108 -0
- package/dist/secret-output.js.map +1 -0
- package/dist/shell.d.ts +3 -0
- package/dist/shell.js +14 -0
- package/dist/shell.js.map +1 -0
- package/dist/skills.d.ts +210 -0
- package/dist/skills.js +374 -0
- package/dist/skills.js.map +1 -0
- package/dist/value-semantics.d.ts +70 -0
- package/dist/value-semantics.js +173 -0
- package/dist/value-semantics.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/windows.d.ts +4 -0
- package/dist/windows.js +136 -0
- package/dist/windows.js.map +1 -0
- package/dist/workflows.d.ts +228 -0
- package/dist/workflows.js +1207 -0
- package/dist/workflows.js.map +1 -0
- package/package.json +86 -4
- package/plugin.json +22 -0
- package/references/agent-guide.json +196 -0
- package/references/commands.md +247 -0
- package/references/dashboard-inventory.json +14796 -0
- package/references/docs-index.json +2709 -0
- package/references/sdk-commands.json +15065 -0
- package/references/workflows.json +1246 -0
- package/skills/sendbird/SKILL.md +96 -0
- package/skills/sendbird/agents/openai.yaml +4 -0
- package/skills/sendbird/references/build-chat-app.md +49 -0
- package/skills/sendbird/references/client-guide.md +34 -0
- package/skills/sendbird/references/client-plugin-bridge.md +77 -0
- package/skills/sendbird/references/client-plugin-install.md +39 -0
- package/skills/sendbird/references/operational-checks.md +35 -0
- package/skills/sendbird/references/pro-capabilities.md +52 -0
- package/skills/sendbird/scripts/client-guide.mjs +283 -0
- package/skills/sendbird/scripts/client-plugin-bridge.mjs +703 -0
- package/skills/sendbird-setup/SKILL.md +18 -0
- package/skills/sendbird-setup/agents/openai.yaml +4 -0
- package/skills/sendbird-setup/references/onboarding.md +73 -0
- package/skills/sendbird-setup/scripts/install-cli.mjs +447 -0
- package/skills/sendbird-setup/scripts/npm-run.mjs +34 -0
package/dist/skills.js
ADDED
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/** Offline registration of the bundled CLI Skill. Never installs client plugins or hooks. */
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmdirSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
4
|
+
import { dirname, join, relative, sep } from "node:path";
|
|
5
|
+
import { homedir } from "node:os";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { CliError, parse } from "./core.js";
|
|
9
|
+
import { VERSION } from "./version.js";
|
|
10
|
+
const agents = ["claude", "codex"];
|
|
11
|
+
const scopes = ["project", "user"];
|
|
12
|
+
const receiptName = ".sendbird-cli-skill.json";
|
|
13
|
+
const source = fileURLToPath(new URL("../skills/sendbird/", import.meta.url));
|
|
14
|
+
const licensePath = fileURLToPath(new URL("../LICENSE", import.meta.url));
|
|
15
|
+
const digest = (s) => createHash("sha256").update(s).digest("hex");
|
|
16
|
+
const fail = (message) => {
|
|
17
|
+
throw new CliError("E_SKILL_INSTALL", message, 2);
|
|
18
|
+
};
|
|
19
|
+
function present(path) {
|
|
20
|
+
try {
|
|
21
|
+
lstatSync(path);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
if (e.code === "ENOENT")
|
|
26
|
+
return false;
|
|
27
|
+
throw e;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** No symlinks or special files; bounded inspection never follows an unmanaged tree. */
|
|
31
|
+
function tree(root) {
|
|
32
|
+
const files = Object.create(null);
|
|
33
|
+
let bytes = 0, entries = 0;
|
|
34
|
+
const walk = (dir) => {
|
|
35
|
+
if (!lstatSync(dir).isDirectory() || lstatSync(dir).isSymbolicLink())
|
|
36
|
+
fail("Skill directory is not a regular directory");
|
|
37
|
+
for (const entry of readdirSync(dir).sort()) {
|
|
38
|
+
if (++entries > 256)
|
|
39
|
+
fail("Skill tree exceeds the entry limit");
|
|
40
|
+
if (dir === root && entry === receiptName)
|
|
41
|
+
continue;
|
|
42
|
+
const path = join(dir, entry), st = lstatSync(path);
|
|
43
|
+
if (st.isSymbolicLink())
|
|
44
|
+
fail("Skill contains a symlink; no files were changed");
|
|
45
|
+
if (st.isDirectory()) {
|
|
46
|
+
files[relative(root, path).split(sep).join("/") + "/"] =
|
|
47
|
+
Buffer.alloc(0);
|
|
48
|
+
walk(path);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (!st.isFile() ||
|
|
52
|
+
st.size > 1024 * 1024 ||
|
|
53
|
+
Object.keys(files).length >= 128)
|
|
54
|
+
fail("Skill tree is not a bounded regular-file installation");
|
|
55
|
+
bytes += st.size;
|
|
56
|
+
if (bytes > 2 * 1024 * 1024)
|
|
57
|
+
fail("Skill tree exceeds the inspection limit");
|
|
58
|
+
files[relative(root, path).split(sep).join("/")] = readFileSync(path);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
walk(root);
|
|
63
|
+
return files;
|
|
64
|
+
}
|
|
65
|
+
const hashes = (files) => Object.fromEntries(Object.keys(files)
|
|
66
|
+
.sort()
|
|
67
|
+
.map((path) => [path, digest(files[path])]));
|
|
68
|
+
const fingerprint = (files) => digest(JSON.stringify(files));
|
|
69
|
+
const receiptSchema = z
|
|
70
|
+
.object({
|
|
71
|
+
schema_version: z.literal(1),
|
|
72
|
+
owner: z.literal("@sendbird/cli"),
|
|
73
|
+
skill: z.literal("sendbird"),
|
|
74
|
+
agent: z.enum(agents),
|
|
75
|
+
scope: z.enum(scopes),
|
|
76
|
+
version: z.string(),
|
|
77
|
+
files: z.record(z.string(), z.string().regex(/^[a-f0-9]{64}$/)),
|
|
78
|
+
content_sha256: z.string().regex(/^[a-f0-9]{64}$/),
|
|
79
|
+
})
|
|
80
|
+
.strict();
|
|
81
|
+
function target(agent, scope) {
|
|
82
|
+
const base = realpathSync(scope === "project" ? process.cwd() : homedir());
|
|
83
|
+
const segments = [agent === "claude" ? ".claude" : ".agents", "skills"];
|
|
84
|
+
let parent = base;
|
|
85
|
+
for (const segment of segments) {
|
|
86
|
+
parent = join(parent, segment);
|
|
87
|
+
if (present(parent) &&
|
|
88
|
+
(!lstatSync(parent).isDirectory() || lstatSync(parent).isSymbolicLink()))
|
|
89
|
+
fail("Skill search path contains a symlink or non-directory; choose another scope");
|
|
90
|
+
}
|
|
91
|
+
return { agent, scope, parent, path: join(parent, "sendbird") };
|
|
92
|
+
}
|
|
93
|
+
function inspect(t, bundledHash) {
|
|
94
|
+
if (!present(t.path))
|
|
95
|
+
return {
|
|
96
|
+
...t,
|
|
97
|
+
state: "not_registered",
|
|
98
|
+
version: null,
|
|
99
|
+
content_sha256: null,
|
|
100
|
+
};
|
|
101
|
+
try {
|
|
102
|
+
if (!lstatSync(t.path).isDirectory() || lstatSync(t.path).isSymbolicLink())
|
|
103
|
+
throw Error();
|
|
104
|
+
const receipt = join(t.path, receiptName);
|
|
105
|
+
if (!present(receipt) ||
|
|
106
|
+
!lstatSync(receipt).isFile() ||
|
|
107
|
+
lstatSync(receipt).isSymbolicLink() ||
|
|
108
|
+
lstatSync(receipt).size > 64 * 1024)
|
|
109
|
+
throw Error();
|
|
110
|
+
const r = receiptSchema.parse(JSON.parse(readFileSync(receipt, "utf8")));
|
|
111
|
+
if (r.agent !== t.agent ||
|
|
112
|
+
r.scope !== t.scope ||
|
|
113
|
+
fingerprint(r.files) !== r.content_sha256)
|
|
114
|
+
throw Error();
|
|
115
|
+
const actual = hashes(tree(t.path));
|
|
116
|
+
const clean = JSON.stringify(actual) === JSON.stringify(r.files);
|
|
117
|
+
return {
|
|
118
|
+
...t,
|
|
119
|
+
state: !clean
|
|
120
|
+
? "modified"
|
|
121
|
+
: r.content_sha256 === bundledHash && r.version === VERSION
|
|
122
|
+
? "current"
|
|
123
|
+
: "update_available",
|
|
124
|
+
version: r.version,
|
|
125
|
+
content_sha256: r.content_sha256,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return { ...t, state: "unmanaged", version: null, content_sha256: null };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function transaction(t) {
|
|
133
|
+
return {
|
|
134
|
+
lock_present: present(join(t.parent, ".sendbird-cli-skill.lock")),
|
|
135
|
+
backup_paths: present(t.parent)
|
|
136
|
+
? readdirSync(t.parent)
|
|
137
|
+
.filter((name) => name.startsWith(".sendbird-skill-backup-"))
|
|
138
|
+
.map((name) => join(t.parent, name))
|
|
139
|
+
: [],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/** Remove only a tree whose complete content/receipt was checked while holding our lock. */
|
|
143
|
+
function erase(root) {
|
|
144
|
+
if (lstatSync(root).isSymbolicLink() || !lstatSync(root).isDirectory())
|
|
145
|
+
fail("Cleanup target changed; inspect the retained installation manually");
|
|
146
|
+
for (const entry of readdirSync(root)) {
|
|
147
|
+
const path = join(root, entry), st = lstatSync(path);
|
|
148
|
+
if (st.isDirectory() && !st.isSymbolicLink())
|
|
149
|
+
erase(path);
|
|
150
|
+
else
|
|
151
|
+
unlinkSync(path);
|
|
152
|
+
}
|
|
153
|
+
rmdirSync(root);
|
|
154
|
+
}
|
|
155
|
+
export function skillCommand(action, fields, opts = {}) {
|
|
156
|
+
parse(z.enum(["install", "remove", "status", "show"]), action);
|
|
157
|
+
const agent = fields.agent === undefined
|
|
158
|
+
? undefined
|
|
159
|
+
: parse(z.enum(agents), fields.agent);
|
|
160
|
+
const scope = fields.scope === undefined
|
|
161
|
+
? undefined
|
|
162
|
+
: parse(z.enum(scopes), fields.scope);
|
|
163
|
+
const files = tree(source);
|
|
164
|
+
files["LICENSE"] = readFileSync(licensePath);
|
|
165
|
+
const fileHashes = hashes(files), bundledHash = fingerprint(fileHashes);
|
|
166
|
+
if (action === "show") {
|
|
167
|
+
if (agent || scope)
|
|
168
|
+
fail("skills show does not take --agent or --scope");
|
|
169
|
+
return {
|
|
170
|
+
skill: "sendbird",
|
|
171
|
+
version: VERSION,
|
|
172
|
+
path: join(source, "SKILL.md"),
|
|
173
|
+
content: files["SKILL.md"].toString("utf8"),
|
|
174
|
+
references: Object.keys(files)
|
|
175
|
+
.filter((p) => p !== "SKILL.md" && !p.endsWith("/"))
|
|
176
|
+
.map((p) => (p === "LICENSE" ? licensePath : join(source, p))),
|
|
177
|
+
next: "Read the referenced files relative to the Skill path as needed. Registration is optional for this session.",
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (action === "status") {
|
|
181
|
+
const installations = (agent ? [agent] : agents).flatMap((a) => (scope ? [scope] : scopes).map((s) => {
|
|
182
|
+
try {
|
|
183
|
+
const t = target(a, s);
|
|
184
|
+
const { parent: _, ...status } = inspect(t, bundledHash);
|
|
185
|
+
return { ...status, transaction: transaction(t) };
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return {
|
|
189
|
+
agent: a,
|
|
190
|
+
scope: s,
|
|
191
|
+
path: null,
|
|
192
|
+
state: "unsafe_path",
|
|
193
|
+
version: null,
|
|
194
|
+
content_sha256: null,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}));
|
|
198
|
+
return {
|
|
199
|
+
skill: "sendbird",
|
|
200
|
+
bundled_version: VERSION,
|
|
201
|
+
installations,
|
|
202
|
+
note: "Filesystem registration only; host loading and automatic invocation are not verified. Duplicate local/plugin Skills may coexist; do not install another copy if the host already provides this Skill.",
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
if (!agent)
|
|
206
|
+
fail("Specify --agent claude or --agent codex");
|
|
207
|
+
const t = target(agent, scope ?? "project"), state = inspect(t, bundledHash);
|
|
208
|
+
if (transaction(t).backup_paths.length)
|
|
209
|
+
fail("A retained Skill backup needs manual review; inspect skills status before another change");
|
|
210
|
+
if (["unmanaged", "modified"].includes(state.state))
|
|
211
|
+
fail("Existing Skill is unmanaged or modified; no files were changed. Choose another scope or resolve it manually");
|
|
212
|
+
if (action === "remove" && !opts.yes && !opts.dryRun)
|
|
213
|
+
throw new CliError("E_CONFIRMATION", "Removing a registered Skill requires --yes", 2);
|
|
214
|
+
const planned = action === "remove"
|
|
215
|
+
? state.state === "not_registered"
|
|
216
|
+
? "absent"
|
|
217
|
+
: "removed"
|
|
218
|
+
: state.state === "current"
|
|
219
|
+
? "current"
|
|
220
|
+
: state.state === "not_registered"
|
|
221
|
+
? "installed"
|
|
222
|
+
: "updated";
|
|
223
|
+
const result = {
|
|
224
|
+
skill: "sendbird",
|
|
225
|
+
agent: t.agent,
|
|
226
|
+
scope: t.scope,
|
|
227
|
+
path: t.path,
|
|
228
|
+
version: VERSION,
|
|
229
|
+
previous_version: state.version,
|
|
230
|
+
state: planned,
|
|
231
|
+
content_sha256: bundledHash,
|
|
232
|
+
host_loaded: null,
|
|
233
|
+
next: "Reload Skills or start a new host session if required, then check that sendbird is available. Installation does not guarantee automatic selection. Client plugins are installed separately through their official flow.",
|
|
234
|
+
};
|
|
235
|
+
if (opts.dryRun)
|
|
236
|
+
return {
|
|
237
|
+
...result,
|
|
238
|
+
dry_run: true,
|
|
239
|
+
note: "Preview only; no files, profiles or credentials changed and no network requests were sent.",
|
|
240
|
+
};
|
|
241
|
+
if (["absent", "current"].includes(planned))
|
|
242
|
+
return result;
|
|
243
|
+
try {
|
|
244
|
+
mkdirSync(t.parent, { recursive: true });
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
fail(`Cannot create the Skill search directory. Run sendbird skills install --agent ${t.agent} --scope ${t.scope} in your normal terminal if your agent sandbox protects .agents or .claude; otherwise check directory permissions. No Skill was registered`);
|
|
248
|
+
}
|
|
249
|
+
// A lock coordinates CLI processes; this is not an OS boundary against hostile same-user changes.
|
|
250
|
+
const lock = join(t.parent, ".sendbird-cli-skill.lock");
|
|
251
|
+
try {
|
|
252
|
+
mkdirSync(lock);
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
fail("Another Skill registration is active or interrupted. Inspect skills status; never remove a live lock");
|
|
256
|
+
}
|
|
257
|
+
const staged = join(t.parent, `.sendbird-skill-${randomUUID()}`), backup = join(t.parent, `.sendbird-skill-backup-${randomUUID()}`);
|
|
258
|
+
let moved = false, published = false;
|
|
259
|
+
try {
|
|
260
|
+
const checked = inspect(t, bundledHash);
|
|
261
|
+
if (checked.state !== state.state ||
|
|
262
|
+
checked.content_sha256 !== state.content_sha256)
|
|
263
|
+
fail("Skill changed during registration; inspect status before retrying");
|
|
264
|
+
if (action !== "remove") {
|
|
265
|
+
mkdirSync(staged);
|
|
266
|
+
for (const [path, content] of Object.entries(files)) {
|
|
267
|
+
const destination = join(staged, path);
|
|
268
|
+
if (path.endsWith("/")) {
|
|
269
|
+
mkdirSync(destination, { recursive: true });
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
mkdirSync(dirname(destination), { recursive: true });
|
|
273
|
+
writeFileSync(destination, content, { flag: "wx", mode: 0o644 });
|
|
274
|
+
}
|
|
275
|
+
writeFileSync(join(staged, receiptName), JSON.stringify({
|
|
276
|
+
schema_version: 1,
|
|
277
|
+
owner: "@sendbird/cli",
|
|
278
|
+
skill: "sendbird",
|
|
279
|
+
agent: t.agent,
|
|
280
|
+
scope: t.scope,
|
|
281
|
+
version: VERSION,
|
|
282
|
+
files: fileHashes,
|
|
283
|
+
content_sha256: bundledHash,
|
|
284
|
+
}, null, 2) + "\n", { flag: "wx", mode: 0o644 });
|
|
285
|
+
}
|
|
286
|
+
if (present(t.path)) {
|
|
287
|
+
renameSync(t.path, backup);
|
|
288
|
+
moved = true;
|
|
289
|
+
}
|
|
290
|
+
if (action !== "remove") {
|
|
291
|
+
if (present(t.path))
|
|
292
|
+
fail("Skill destination changed; no replacement was attempted");
|
|
293
|
+
renameSync(staged, t.path);
|
|
294
|
+
published = true;
|
|
295
|
+
}
|
|
296
|
+
if (moved) {
|
|
297
|
+
if (fingerprint(hashes(tree(backup))) !== state.content_sha256)
|
|
298
|
+
fail("Skill backup changed; retained it for manual review");
|
|
299
|
+
erase(backup);
|
|
300
|
+
}
|
|
301
|
+
return result;
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
if (moved && !published && !present(t.path) && present(backup))
|
|
305
|
+
renameSync(backup, t.path);
|
|
306
|
+
throw error instanceof CliError
|
|
307
|
+
? error
|
|
308
|
+
: new CliError("E_SKILL_INSTALL", "Skill registration failed; inspect skills status and any retained backup before retrying", 2);
|
|
309
|
+
}
|
|
310
|
+
finally {
|
|
311
|
+
if (present(staged))
|
|
312
|
+
erase(staged);
|
|
313
|
+
rmdirSync(lock);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const entrySchema = z.object({
|
|
317
|
+
agent: z.enum(agents),
|
|
318
|
+
scope: z.enum(scopes),
|
|
319
|
+
path: z.string().nullable(),
|
|
320
|
+
state: z.enum([
|
|
321
|
+
"not_registered",
|
|
322
|
+
"unmanaged",
|
|
323
|
+
"modified",
|
|
324
|
+
"current",
|
|
325
|
+
"update_available",
|
|
326
|
+
"unsafe_path",
|
|
327
|
+
]),
|
|
328
|
+
version: z.string().nullable(),
|
|
329
|
+
content_sha256: z.string().nullable(),
|
|
330
|
+
transaction: z
|
|
331
|
+
.object({ lock_present: z.boolean(), backup_paths: z.array(z.string()) })
|
|
332
|
+
.optional(),
|
|
333
|
+
});
|
|
334
|
+
export const skillSchemas = {
|
|
335
|
+
show: z.object({
|
|
336
|
+
skill: z.literal("sendbird"),
|
|
337
|
+
version: z.string(),
|
|
338
|
+
path: z.string(),
|
|
339
|
+
content: z.string(),
|
|
340
|
+
references: z.array(z.string()),
|
|
341
|
+
next: z.string(),
|
|
342
|
+
}),
|
|
343
|
+
status: z.object({
|
|
344
|
+
skill: z.literal("sendbird"),
|
|
345
|
+
bundled_version: z.string(),
|
|
346
|
+
installations: z.array(entrySchema),
|
|
347
|
+
note: z.string(),
|
|
348
|
+
}),
|
|
349
|
+
install: z.object({
|
|
350
|
+
skill: z.literal("sendbird"),
|
|
351
|
+
agent: z.enum(agents),
|
|
352
|
+
scope: z.enum(scopes),
|
|
353
|
+
path: z.string(),
|
|
354
|
+
version: z.string(),
|
|
355
|
+
previous_version: z.string().nullable(),
|
|
356
|
+
state: z.enum(["installed", "updated", "current", "removed", "absent"]),
|
|
357
|
+
content_sha256: z.string(),
|
|
358
|
+
host_loaded: z.null(),
|
|
359
|
+
next: z.string(),
|
|
360
|
+
dry_run: z.boolean().optional(),
|
|
361
|
+
note: z.string().optional(),
|
|
362
|
+
}),
|
|
363
|
+
};
|
|
364
|
+
export function skillSchema(command) {
|
|
365
|
+
if (!command.startsWith("skills "))
|
|
366
|
+
return;
|
|
367
|
+
const action = command.slice(7);
|
|
368
|
+
return action === "show"
|
|
369
|
+
? skillSchemas.show
|
|
370
|
+
: action === "status"
|
|
371
|
+
? skillSchemas.status
|
|
372
|
+
: skillSchemas.install;
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Presentation/discovery metadata only. Never coerce API input or response DTOs.
|
|
2
|
+
* Interpretation rules: docs/value-semantics.md; mappings were checked against upstream sources.
|
|
3
|
+
*/
|
|
4
|
+
type Meaning = {
|
|
5
|
+
value: number;
|
|
6
|
+
name: string;
|
|
7
|
+
label: string;
|
|
8
|
+
description: string;
|
|
9
|
+
};
|
|
10
|
+
/** Paths are result-relative; original API fields are root-relative with --raw.
|
|
11
|
+
* CLI-added readback fields are absent from --raw; * means an array item.
|
|
12
|
+
* Known values document meaning, not entitlement, execution success or a write allowlist.
|
|
13
|
+
*/
|
|
14
|
+
export declare function valueSemantics(command: string): {
|
|
15
|
+
version: number;
|
|
16
|
+
path_root: string;
|
|
17
|
+
wildcard: string;
|
|
18
|
+
unknown_values: string;
|
|
19
|
+
input: string;
|
|
20
|
+
fields: ({
|
|
21
|
+
kind: "enum";
|
|
22
|
+
values: Meaning[];
|
|
23
|
+
path: string;
|
|
24
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
25
|
+
} | {
|
|
26
|
+
kind: "enum";
|
|
27
|
+
values: Meaning[];
|
|
28
|
+
path: string;
|
|
29
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
30
|
+
} | {
|
|
31
|
+
kind: "enum";
|
|
32
|
+
values: Meaning[];
|
|
33
|
+
path: string;
|
|
34
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
35
|
+
} | {
|
|
36
|
+
kind: "enum";
|
|
37
|
+
values: Meaning[];
|
|
38
|
+
path: string;
|
|
39
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
40
|
+
} | {
|
|
41
|
+
kind: "enum";
|
|
42
|
+
values: Meaning[];
|
|
43
|
+
path: string;
|
|
44
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
45
|
+
} | {
|
|
46
|
+
kind: "enum";
|
|
47
|
+
values: Meaning[];
|
|
48
|
+
path: string;
|
|
49
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
50
|
+
} | {
|
|
51
|
+
kind: "enum";
|
|
52
|
+
values: Meaning[];
|
|
53
|
+
path: string;
|
|
54
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
55
|
+
} | {
|
|
56
|
+
kind: "sentinel";
|
|
57
|
+
values: Meaning[];
|
|
58
|
+
path: string;
|
|
59
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
60
|
+
} | {
|
|
61
|
+
kind: "sentinel";
|
|
62
|
+
values: Meaning[];
|
|
63
|
+
path: string;
|
|
64
|
+
vocabulary: "guest_user_policy" | "unread_badge" | "profanity_mode" | "domain_mode" | "image_mode" | "image_likelihood" | "profanity_action" | "character_cap" | "message_rate";
|
|
65
|
+
})[];
|
|
66
|
+
} | undefined;
|
|
67
|
+
export declare function withValueSemantics(command: string, schema: Record<string, unknown>): Record<string, unknown>;
|
|
68
|
+
/** A copy for human rendering only, after redaction. Arbitrary metadata is never traversed. */
|
|
69
|
+
export declare function humanValueSemantics(command: string, result: unknown): unknown;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
const meaning = (value, name, label, description = label) => ({ value, name, label, description });
|
|
2
|
+
const vocabularies = {
|
|
3
|
+
unread_badge: {
|
|
4
|
+
kind: "enum",
|
|
5
|
+
values: [meaning(0, "off", "Disabled"), meaning(1, "on", "Enabled")],
|
|
6
|
+
},
|
|
7
|
+
guest_user_policy: {
|
|
8
|
+
kind: "enum",
|
|
9
|
+
values: [
|
|
10
|
+
meaning(0, "read_write", "Tokenless read/write", "Chat users without an issued token may read and write, subject to channel permissions. Users with issued tokens still need them."),
|
|
11
|
+
meaning(1, "read_only", "Tokenless read only", "Chat users without an issued token may read but cannot send messages. This does not describe Calls permissions."),
|
|
12
|
+
meaning(2, "block", "Token required", "Tokenless SDK connections are blocked."),
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
profanity_mode: {
|
|
16
|
+
kind: "enum",
|
|
17
|
+
values: [
|
|
18
|
+
meaning(0, "none", "Disabled"),
|
|
19
|
+
meaning(1, "replace", "Replace with asterisks"),
|
|
20
|
+
meaning(2, "block", "Block message"),
|
|
21
|
+
meaning(3, "detect", "Detect only", "Detect profanity without replacing or blocking the message. Other moderation rules may still apply."),
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
domain_mode: {
|
|
25
|
+
kind: "enum",
|
|
26
|
+
values: [
|
|
27
|
+
meaning(0, "none", "Disabled"),
|
|
28
|
+
meaning(1, "pass_if_matched", "Allow listed domains"),
|
|
29
|
+
meaning(2, "block_if_matched", "Block listed domains"),
|
|
30
|
+
meaning(3, "replace_if_matched", "Replace listed domains"),
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
image_mode: {
|
|
34
|
+
kind: "enum",
|
|
35
|
+
values: [
|
|
36
|
+
meaning(0, "none", "Disabled"),
|
|
37
|
+
meaning(1, "normal", "Normal"),
|
|
38
|
+
meaning(2, "strict", "Strict"),
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
image_likelihood: {
|
|
42
|
+
kind: "enum",
|
|
43
|
+
values: [
|
|
44
|
+
meaning(0, "unknown", "Unknown likelihood"),
|
|
45
|
+
meaning(1, "very_unlikely", "Very unlikely"),
|
|
46
|
+
meaning(2, "unlikely", "Unlikely"),
|
|
47
|
+
meaning(3, "possible", "Possible"),
|
|
48
|
+
meaning(4, "likely", "Likely"),
|
|
49
|
+
meaning(5, "very_likely", "Very likely"),
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
profanity_action: {
|
|
53
|
+
kind: "enum",
|
|
54
|
+
values: [
|
|
55
|
+
meaning(0, "none", "No action"),
|
|
56
|
+
meaning(1, "mute", "Mute user"),
|
|
57
|
+
meaning(2, "kick", "Kick user"),
|
|
58
|
+
meaning(3, "ban", "Ban user"),
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
character_cap: {
|
|
62
|
+
kind: "sentinel",
|
|
63
|
+
values: [
|
|
64
|
+
meaning(-1, "no_app_cap", "No app character cap", "No application-level character cap. Other service limits can still apply."),
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
message_rate: {
|
|
68
|
+
kind: "sentinel",
|
|
69
|
+
values: [
|
|
70
|
+
meaning(-1, "system_limit", "System limit", "Use the service's system limit, not unlimited messaging."),
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
const settingBindings = [
|
|
75
|
+
{ path: "profanity_filter.type", vocabulary: "profanity_mode" },
|
|
76
|
+
{ path: "domain_filter.type", vocabulary: "domain_mode" },
|
|
77
|
+
{ path: "image_moderation.type", vocabulary: "image_mode" },
|
|
78
|
+
...["adult", "spoof", "medical", "violence", "racy"].map((category) => ({
|
|
79
|
+
path: `image_moderation.limits.${category}`,
|
|
80
|
+
vocabulary: "image_likelihood",
|
|
81
|
+
})),
|
|
82
|
+
{
|
|
83
|
+
path: "profanity_triggered_moderation.action",
|
|
84
|
+
vocabulary: "profanity_action",
|
|
85
|
+
},
|
|
86
|
+
{ path: "max_message_length", vocabulary: "character_cap" },
|
|
87
|
+
{ path: "user_messages_per_channel", vocabulary: "message_rate" },
|
|
88
|
+
];
|
|
89
|
+
function bindings(command) {
|
|
90
|
+
if (/^(chat|calls) push (list|create|update)$/.test(command) ||
|
|
91
|
+
command === "calls push delete") {
|
|
92
|
+
const path = "push_configurations.*.has_unread_count_badge";
|
|
93
|
+
const entries = command.endsWith(" delete")
|
|
94
|
+
? []
|
|
95
|
+
: [{ path, vocabulary: "unread_badge" }];
|
|
96
|
+
if (command.startsWith("calls ") && !command.endsWith(" list"))
|
|
97
|
+
entries.push({
|
|
98
|
+
path: `readback.settings.${path}`,
|
|
99
|
+
vocabulary: "unread_badge",
|
|
100
|
+
});
|
|
101
|
+
return entries;
|
|
102
|
+
}
|
|
103
|
+
if (/^app auth-policy (get|set)$/.test(command) || command === "app get")
|
|
104
|
+
return [{ path: "guest_user_policy", vocabulary: "guest_user_policy" }];
|
|
105
|
+
if (/^chat settings (get|update)$/.test(command) ||
|
|
106
|
+
/^chat settings custom (get|create|update)$/.test(command))
|
|
107
|
+
return settingBindings;
|
|
108
|
+
if (command === "chat settings custom list")
|
|
109
|
+
return settingBindings.map((entry) => ({
|
|
110
|
+
...entry,
|
|
111
|
+
path: `channel_custom_type_settings.*.${entry.path}`,
|
|
112
|
+
}));
|
|
113
|
+
if (/^chat moderation keywords (global|custom) (list|add|delete)$/.test(command))
|
|
114
|
+
return [settingBindings[0]];
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
/** Paths are result-relative; original API fields are root-relative with --raw.
|
|
118
|
+
* CLI-added readback fields are absent from --raw; * means an array item.
|
|
119
|
+
* Known values document meaning, not entitlement, execution success or a write allowlist.
|
|
120
|
+
*/
|
|
121
|
+
export function valueSemantics(command) {
|
|
122
|
+
const entries = bindings(command);
|
|
123
|
+
if (!entries.length)
|
|
124
|
+
return undefined;
|
|
125
|
+
return {
|
|
126
|
+
version: 1,
|
|
127
|
+
path_root: "result; original response fields are at the response root with --raw; CLI-added readback fields are absent from --raw",
|
|
128
|
+
wildcard: "* matches array items only",
|
|
129
|
+
unknown_values: "Preserve the raw value. Do not infer meaning or permissions for undocumented values.",
|
|
130
|
+
input: "Keep numeric wire values in requests. Check the command input schema; response meanings do not add writable fields or allowed input values.",
|
|
131
|
+
fields: entries.map(({ path, vocabulary }) => ({
|
|
132
|
+
path,
|
|
133
|
+
vocabulary,
|
|
134
|
+
...vocabularies[vocabulary],
|
|
135
|
+
})),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function withValueSemantics(command, schema) {
|
|
139
|
+
const semantics = valueSemantics(command);
|
|
140
|
+
return semantics
|
|
141
|
+
? { ...schema, "x-sendbird-value-semantics": semantics }
|
|
142
|
+
: schema;
|
|
143
|
+
}
|
|
144
|
+
function humanValue(vocabulary, value) {
|
|
145
|
+
if (typeof value !== "number")
|
|
146
|
+
return value;
|
|
147
|
+
const definition = vocabularies[vocabulary];
|
|
148
|
+
const known = definition.values.find((entry) => entry.value === value);
|
|
149
|
+
if (known)
|
|
150
|
+
return `${known.label} (${value})`;
|
|
151
|
+
return definition.kind === "enum" ? `Unknown (${value})` : value;
|
|
152
|
+
}
|
|
153
|
+
function mapPath(value, path, vocabulary) {
|
|
154
|
+
if (!path.length)
|
|
155
|
+
return humanValue(vocabulary, value);
|
|
156
|
+
const [key, ...rest] = path;
|
|
157
|
+
if (key === "*")
|
|
158
|
+
return Array.isArray(value)
|
|
159
|
+
? value.map((item) => mapPath(item, rest, vocabulary))
|
|
160
|
+
: value;
|
|
161
|
+
if (!value ||
|
|
162
|
+
typeof value !== "object" ||
|
|
163
|
+
Array.isArray(value) ||
|
|
164
|
+
!Object.hasOwn(value, key))
|
|
165
|
+
return value;
|
|
166
|
+
const object = value;
|
|
167
|
+
return { ...object, [key]: mapPath(object[key], rest, vocabulary) };
|
|
168
|
+
}
|
|
169
|
+
/** A copy for human rendering only, after redaction. Arbitrary metadata is never traversed. */
|
|
170
|
+
export function humanValueSemantics(command, result) {
|
|
171
|
+
return bindings(command).reduce((value, entry) => mapPath(value, entry.path.split("."), entry.vocabulary), result);
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=value-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-semantics.js","sourceRoot":"","sources":["../src/value-semantics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
package/dist/version.js
ADDED