@geoly-ai/social-hub-cli 0.3.3 → 0.3.5
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/CHANGELOG.md +17 -0
- package/dist/client-delivery.test.d.ts +2 -0
- package/dist/client-delivery.test.d.ts.map +1 -0
- package/dist/client-delivery.test.js +201 -0
- package/dist/client-delivery.test.js.map +1 -0
- package/dist/cmd-manifest.json +45 -2
- package/dist/cmd-manifest.test.js +28 -0
- package/dist/cmd-manifest.test.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +302 -0
- package/dist/index.js.map +1 -1
- package/dist/permissions-gates-notify.d.ts +26 -0
- package/dist/permissions-gates-notify.d.ts.map +1 -0
- package/dist/permissions-gates-notify.js +118 -0
- package/dist/permissions-gates-notify.js.map +1 -0
- package/dist/permissions-gates-notify.test.d.ts +2 -0
- package/dist/permissions-gates-notify.test.d.ts.map +1 -0
- package/dist/permissions-gates-notify.test.js +107 -0
- package/dist/permissions-gates-notify.test.js.map +1 -0
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +2 -0
- package/dist/permissions.js.map +1 -1
- package/dist/register-extensions.d.ts.map +1 -1
- package/dist/register-extensions.js +5 -9
- package/dist/register-extensions.js.map +1 -1
- package/dist/register-notify.d.ts +172 -0
- package/dist/register-notify.d.ts.map +1 -0
- package/dist/register-notify.js +1148 -0
- package/dist/register-notify.js.map +1 -0
- package/dist/register-notify.test.d.ts +2 -0
- package/dist/register-notify.test.d.ts.map +1 -0
- package/dist/register-notify.test.js +309 -0
- package/dist/register-notify.test.js.map +1 -0
- package/package.json +3 -3
- package/skills/README.md +1 -0
- package/skills/manifest.json +6 -1
- package/skills/reddit-content-rewrite/SKILL.md +58 -3
- package/skills/reddit-content-writing/SKILL.md +43 -5
- package/skills/reddit-content-writing/references/phase4-writing.md +3 -1
- package/skills/reddit-matrix.lock.json +4 -4
- package/skills/reddit-phase-brief/SKILL.md +30 -13
- package/skills/reddit-phase-brief/references/phase4-brief-workflow.md +39 -4
- package/skills/reddit-strategy-shared/references/content-diversity-contract.md +60 -5
- package/skills/reddit-strategy-shared/references/evidence-policy.md +30 -0
- package/skills/reddit-strategy-shared/references/handoff-schemas.md +7 -3
- package/skills/social-hub-notifications/SKILL.md +351 -0
- package/skills/social-hub-posts/SKILL.md +36 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,23 @@ All notable changes to `@geoly-ai/social-hub-cli` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
Release workflow: `pnpm release:cli` → `pnpm publish:cli`.
|
|
6
6
|
|
|
7
|
+
## [0.3.5] - 2026-08-03
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- 事件订阅通知能力 —— 独立事件流 + 广播游标订阅 + long-poll
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- 补 compose env 白名单 + skill 首次启用前置说明
|
|
16
|
+
|
|
17
|
+
## [0.3.4] - 2026-07-31
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- 写作矩阵 P0-C —— 五项写作前置门与返工机制(vendored)
|
|
22
|
+
- 客户交付 Phase1 Wave2-A —— SDK/CLI 接 Block3 client-delivery API
|
|
23
|
+
|
|
7
24
|
## [0.3.3] - 2026-07-31
|
|
8
25
|
|
|
9
26
|
### Fixed
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-delivery.test.d.ts","sourceRoot":"","sources":["../src/client-delivery.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for the `client-delivery` CLI command group:
|
|
3
|
+
* - staff + client subcommands register on the program;
|
|
4
|
+
* - request-changes reads its body via --json-file (Windows-friendly) and
|
|
5
|
+
* forwards it to the SDK;
|
|
6
|
+
* - approve forwards the CAS expectedRevisionHash and a 409 (hash conflict)
|
|
7
|
+
* propagates faithfully instead of being swallowed;
|
|
8
|
+
* - list-bundles forwards the required brandId filter.
|
|
9
|
+
*/
|
|
10
|
+
import { beforeAll, afterEach, describe, expect, it, vi } from "vitest";
|
|
11
|
+
import { writeFileSync, mkdtempSync } from "node:fs";
|
|
12
|
+
import { tmpdir } from "node:os";
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
const clientDeliveryRequestChanges = vi
|
|
15
|
+
.fn()
|
|
16
|
+
.mockResolvedValue({ revision: {} });
|
|
17
|
+
const clientDeliveryApproveRevision = vi
|
|
18
|
+
.fn()
|
|
19
|
+
.mockResolvedValue({ revision: {} });
|
|
20
|
+
const clientDeliveryListBundles = vi.fn().mockResolvedValue({ items: [] });
|
|
21
|
+
vi.mock("@geoly-ai/social-hub-sdk", () => ({
|
|
22
|
+
SocialHubClient: vi.fn(),
|
|
23
|
+
getSocialHubHealth: vi.fn(),
|
|
24
|
+
}));
|
|
25
|
+
vi.mock("./client.js", () => ({
|
|
26
|
+
requireClient: () => ({
|
|
27
|
+
clientDeliveryRequestChanges,
|
|
28
|
+
clientDeliveryApproveRevision,
|
|
29
|
+
clientDeliveryListBundles,
|
|
30
|
+
}),
|
|
31
|
+
resolveTeamId: (t) => t ?? "team-1",
|
|
32
|
+
getBaseUrl: () => "http://localhost",
|
|
33
|
+
}));
|
|
34
|
+
let program;
|
|
35
|
+
beforeAll(async () => {
|
|
36
|
+
program = (await import("./index.js")).program;
|
|
37
|
+
vi.spyOn(console, "log").mockImplementation(() => { });
|
|
38
|
+
}, 30000);
|
|
39
|
+
function group() {
|
|
40
|
+
return program.commands.find((c) => c.name() === "client-delivery");
|
|
41
|
+
}
|
|
42
|
+
function subNames() {
|
|
43
|
+
return group()?.commands.map((c) => c.name()) ?? [];
|
|
44
|
+
}
|
|
45
|
+
function subCmd(name) {
|
|
46
|
+
return group()?.commands.find((c) => c.name() === name);
|
|
47
|
+
}
|
|
48
|
+
afterEach(() => {
|
|
49
|
+
clientDeliveryRequestChanges.mockClear();
|
|
50
|
+
clientDeliveryApproveRevision.mockClear();
|
|
51
|
+
clientDeliveryListBundles.mockClear();
|
|
52
|
+
// Commander stores parsed option values on the singleton command; clear them
|
|
53
|
+
// so a value from one parseAsync run does not leak into the next.
|
|
54
|
+
for (const name of ["request-changes", "approve", "list-bundles"]) {
|
|
55
|
+
const cmd = subCmd(name);
|
|
56
|
+
for (const key of ["json", "jsonFile", "expectedHash", "note", "brand"]) {
|
|
57
|
+
cmd?.setOptionValue(key, undefined);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
describe("client-delivery command registration", () => {
|
|
62
|
+
it("registers the group", () => {
|
|
63
|
+
expect(program.commands.map((c) => c.name())).toContain("client-delivery");
|
|
64
|
+
});
|
|
65
|
+
it("registers staff + client subcommands", () => {
|
|
66
|
+
const names = subNames();
|
|
67
|
+
for (const expected of [
|
|
68
|
+
// staff
|
|
69
|
+
"create-bundle",
|
|
70
|
+
"upsert-item",
|
|
71
|
+
"create-revision",
|
|
72
|
+
"submit-revision",
|
|
73
|
+
"create-product",
|
|
74
|
+
"create-fact-version",
|
|
75
|
+
"activate-fact-version",
|
|
76
|
+
"create-policy-version",
|
|
77
|
+
"activate-policy-version",
|
|
78
|
+
// client
|
|
79
|
+
"list-bundles",
|
|
80
|
+
"get-bundle",
|
|
81
|
+
"list-items",
|
|
82
|
+
"get-item",
|
|
83
|
+
"list-revisions",
|
|
84
|
+
"get-revision",
|
|
85
|
+
"list-comments",
|
|
86
|
+
"list-events",
|
|
87
|
+
"approve",
|
|
88
|
+
"request-changes",
|
|
89
|
+
"add-comment",
|
|
90
|
+
"resolve-comment",
|
|
91
|
+
"create-client-fact-version",
|
|
92
|
+
]) {
|
|
93
|
+
expect(names).toContain(expected);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe("client-delivery request-changes JSON input", () => {
|
|
98
|
+
const body = {
|
|
99
|
+
expectedRevisionHash: "hash-abc",
|
|
100
|
+
comments: [{ fieldKey: "title", body: "shorten" }],
|
|
101
|
+
};
|
|
102
|
+
function tmpFile() {
|
|
103
|
+
const dir = mkdtempSync(join(tmpdir(), "cd-json-"));
|
|
104
|
+
const file = join(dir, "body.json");
|
|
105
|
+
writeFileSync(file, JSON.stringify(body), "utf8");
|
|
106
|
+
return file;
|
|
107
|
+
}
|
|
108
|
+
it("reads body from --json-file and forwards to the SDK", async () => {
|
|
109
|
+
const file = tmpFile();
|
|
110
|
+
await program.parseAsync([
|
|
111
|
+
"node",
|
|
112
|
+
"social-hub",
|
|
113
|
+
"client-delivery",
|
|
114
|
+
"request-changes",
|
|
115
|
+
"--revision",
|
|
116
|
+
"r-1",
|
|
117
|
+
"--json-file",
|
|
118
|
+
file,
|
|
119
|
+
]);
|
|
120
|
+
expect(clientDeliveryRequestChanges).toHaveBeenCalledWith("team-1", "r-1", body);
|
|
121
|
+
});
|
|
122
|
+
it("reads body from -j @file", async () => {
|
|
123
|
+
const file = tmpFile();
|
|
124
|
+
await program.parseAsync([
|
|
125
|
+
"node",
|
|
126
|
+
"social-hub",
|
|
127
|
+
"client-delivery",
|
|
128
|
+
"request-changes",
|
|
129
|
+
"--revision",
|
|
130
|
+
"r-1",
|
|
131
|
+
"-j",
|
|
132
|
+
`@${file}`,
|
|
133
|
+
]);
|
|
134
|
+
expect(clientDeliveryRequestChanges).toHaveBeenCalledWith("team-1", "r-1", body);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
describe("client-delivery approve (CAS)", () => {
|
|
138
|
+
it("forwards --expected-hash as expectedRevisionHash", async () => {
|
|
139
|
+
await program.parseAsync([
|
|
140
|
+
"node",
|
|
141
|
+
"social-hub",
|
|
142
|
+
"client-delivery",
|
|
143
|
+
"approve",
|
|
144
|
+
"--revision",
|
|
145
|
+
"r-1",
|
|
146
|
+
"--expected-hash",
|
|
147
|
+
"hash-abc",
|
|
148
|
+
"--note",
|
|
149
|
+
"lgtm",
|
|
150
|
+
]);
|
|
151
|
+
expect(clientDeliveryApproveRevision).toHaveBeenCalledWith("team-1", "r-1", {
|
|
152
|
+
expectedRevisionHash: "hash-abc",
|
|
153
|
+
note: "lgtm",
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
it("propagates a 409 hash conflict instead of swallowing it", async () => {
|
|
157
|
+
clientDeliveryApproveRevision.mockRejectedValueOnce(new Error("HTTP 409: revision changed; reload before deciding"));
|
|
158
|
+
await expect(program.parseAsync([
|
|
159
|
+
"node",
|
|
160
|
+
"social-hub",
|
|
161
|
+
"client-delivery",
|
|
162
|
+
"approve",
|
|
163
|
+
"--revision",
|
|
164
|
+
"r-1",
|
|
165
|
+
"--expected-hash",
|
|
166
|
+
"stale",
|
|
167
|
+
])).rejects.toThrow(/HTTP 409/);
|
|
168
|
+
});
|
|
169
|
+
it("propagates a 403 (api_key rejected; decision needs a user credential)", async () => {
|
|
170
|
+
// Client decisions require an auth-login user; a static api_key is refused
|
|
171
|
+
// server-side and the SDK surfaces it as HTTP 403. The CLI must not swallow
|
|
172
|
+
// it — credentials are decided by `auth login`, the CLI only relays.
|
|
173
|
+
clientDeliveryApproveRevision.mockRejectedValueOnce(new Error("HTTP 403: this action requires an authenticated user"));
|
|
174
|
+
await expect(program.parseAsync([
|
|
175
|
+
"node",
|
|
176
|
+
"social-hub",
|
|
177
|
+
"client-delivery",
|
|
178
|
+
"approve",
|
|
179
|
+
"--revision",
|
|
180
|
+
"r-1",
|
|
181
|
+
"--expected-hash",
|
|
182
|
+
"hash-abc",
|
|
183
|
+
])).rejects.toThrow(/HTTP 403/);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
describe("client-delivery list-bundles", () => {
|
|
187
|
+
it("forwards the required brandId filter", async () => {
|
|
188
|
+
await program.parseAsync([
|
|
189
|
+
"node",
|
|
190
|
+
"social-hub",
|
|
191
|
+
"client-delivery",
|
|
192
|
+
"list-bundles",
|
|
193
|
+
"--brand",
|
|
194
|
+
"brand-9",
|
|
195
|
+
]);
|
|
196
|
+
expect(clientDeliveryListBundles).toHaveBeenCalledWith("team-1", {
|
|
197
|
+
brandId: "brand-9",
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=client-delivery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-delivery.test.js","sourceRoot":"","sources":["../src/client-delivery.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cmd-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-
|
|
3
|
-
"cliVersion": "0.3.
|
|
2
|
+
"generatedAt": "2026-08-03T02:45:41.626Z",
|
|
3
|
+
"cliVersion": "0.3.5",
|
|
4
4
|
"commands": [
|
|
5
5
|
"accounts",
|
|
6
6
|
"accounts brand-bindings",
|
|
@@ -121,6 +121,29 @@
|
|
|
121
121
|
"campaigns get",
|
|
122
122
|
"campaigns list",
|
|
123
123
|
"campaigns update",
|
|
124
|
+
"client-delivery",
|
|
125
|
+
"client-delivery activate-fact-version",
|
|
126
|
+
"client-delivery activate-policy-version",
|
|
127
|
+
"client-delivery add-comment",
|
|
128
|
+
"client-delivery approve",
|
|
129
|
+
"client-delivery create-bundle",
|
|
130
|
+
"client-delivery create-client-fact-version",
|
|
131
|
+
"client-delivery create-fact-version",
|
|
132
|
+
"client-delivery create-policy-version",
|
|
133
|
+
"client-delivery create-product",
|
|
134
|
+
"client-delivery create-revision",
|
|
135
|
+
"client-delivery get-bundle",
|
|
136
|
+
"client-delivery get-item",
|
|
137
|
+
"client-delivery get-revision",
|
|
138
|
+
"client-delivery list-bundles",
|
|
139
|
+
"client-delivery list-comments",
|
|
140
|
+
"client-delivery list-events",
|
|
141
|
+
"client-delivery list-items",
|
|
142
|
+
"client-delivery list-revisions",
|
|
143
|
+
"client-delivery request-changes",
|
|
144
|
+
"client-delivery resolve-comment",
|
|
145
|
+
"client-delivery submit-revision",
|
|
146
|
+
"client-delivery upsert-item",
|
|
124
147
|
"comment-drafts",
|
|
125
148
|
"comment-drafts create",
|
|
126
149
|
"comment-drafts delete",
|
|
@@ -273,6 +296,25 @@
|
|
|
273
296
|
"notification-channels list",
|
|
274
297
|
"notification-channels test",
|
|
275
298
|
"notification-channels update",
|
|
299
|
+
"notify",
|
|
300
|
+
"notify ack",
|
|
301
|
+
"notify pull",
|
|
302
|
+
"notify source-configs",
|
|
303
|
+
"notify source-configs activate",
|
|
304
|
+
"notify source-configs create",
|
|
305
|
+
"notify source-configs get",
|
|
306
|
+
"notify source-configs list",
|
|
307
|
+
"notify source-configs set-enabled",
|
|
308
|
+
"notify source-configs sources",
|
|
309
|
+
"notify subscriptions",
|
|
310
|
+
"notify subscriptions create",
|
|
311
|
+
"notify subscriptions delete",
|
|
312
|
+
"notify subscriptions get",
|
|
313
|
+
"notify subscriptions list",
|
|
314
|
+
"notify subscriptions pause",
|
|
315
|
+
"notify subscriptions reset",
|
|
316
|
+
"notify subscriptions resume",
|
|
317
|
+
"notify subscriptions update",
|
|
276
318
|
"openclaw-ingest",
|
|
277
319
|
"openclaw-ingest runs",
|
|
278
320
|
"openclaw-ingest status",
|
|
@@ -333,6 +375,7 @@
|
|
|
333
375
|
"reddit refresh-progress",
|
|
334
376
|
"reddit refresh-status",
|
|
335
377
|
"reddit stats",
|
|
378
|
+
"reddit team-buckets",
|
|
336
379
|
"reddit update",
|
|
337
380
|
"reports",
|
|
338
381
|
"reports create",
|
|
@@ -18,6 +18,8 @@ describe("cmd-manifest", () => {
|
|
|
18
18
|
expect(paths).toContain("events append");
|
|
19
19
|
expect(paths).toContain("accounts status-snapshots create");
|
|
20
20
|
expect(paths).toContain("reddit batch-upsert");
|
|
21
|
+
// 外部 agent 回填外部来源帖的入口:桶 UUID 只能从这里拿(桶不在 teams 列表里)。
|
|
22
|
+
expect(paths).toContain("reddit team-buckets");
|
|
21
23
|
expect(paths).toContain("compliance sanctions-create");
|
|
22
24
|
expect(paths).toContain("compliance sanctions-update");
|
|
23
25
|
expect(paths).toContain("compliance sanctions-delete");
|
|
@@ -27,6 +29,32 @@ describe("cmd-manifest", () => {
|
|
|
27
29
|
expect(paths).toContain("style-profiles active");
|
|
28
30
|
expect(paths).toContain("style-profiles approve");
|
|
29
31
|
expect(paths).toContain("subreddit-annotations upsert");
|
|
32
|
+
// 事件订阅通知:agent 的消费面(pull/ack 是两条独立命令 —— 本期不提供 --auto-ack)。
|
|
33
|
+
expect(paths).toContain("notify subscriptions create");
|
|
34
|
+
expect(paths).toContain("notify subscriptions list");
|
|
35
|
+
expect(paths).toContain("notify subscriptions get");
|
|
36
|
+
expect(paths).toContain("notify subscriptions update");
|
|
37
|
+
expect(paths).toContain("notify subscriptions pause");
|
|
38
|
+
expect(paths).toContain("notify subscriptions resume");
|
|
39
|
+
expect(paths).toContain("notify subscriptions delete");
|
|
40
|
+
expect(paths).toContain("notify subscriptions reset");
|
|
41
|
+
expect(paths).toContain("notify pull");
|
|
42
|
+
expect(paths).toContain("notify ack");
|
|
43
|
+
expect(paths).toContain("notify source-configs sources");
|
|
44
|
+
expect(paths).toContain("notify source-configs list");
|
|
45
|
+
expect(paths).toContain("notify source-configs get");
|
|
46
|
+
expect(paths).toContain("notify source-configs create");
|
|
47
|
+
expect(paths).toContain("notify source-configs activate");
|
|
48
|
+
expect(paths).toContain("notify source-configs set-enabled");
|
|
49
|
+
});
|
|
50
|
+
it("does not expose --auto-ack on notify pull (Phase 1 安全约定)", () => {
|
|
51
|
+
const notify = program.commands.find((c) => c.name() === "notify");
|
|
52
|
+
const pull = notify?.commands.find((c) => c.name() === "pull");
|
|
53
|
+
const flags = (pull?.options ?? []).map((o) => o.long);
|
|
54
|
+
expect(flags).toContain("--receipt-file");
|
|
55
|
+
expect(flags).toContain("--follow");
|
|
56
|
+
// CLI 写完 stdout 不代表下游 agent 已完成截图/发飞书;自动 ack 会丢事件。
|
|
57
|
+
expect(flags).not.toContain("--auto-ack");
|
|
30
58
|
});
|
|
31
59
|
it("buildCmdManifest includes all registered leaf paths", () => {
|
|
32
60
|
const manifest = buildCmdManifest(program);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-manifest.test.js","sourceRoot":"","sources":["../src/cmd-manifest.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC5B,CAAC,CAAC,CAAC;AAEJ,IAAI,OAAwD,CAAC;AAE7D,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd-manifest.test.js","sourceRoot":"","sources":["../src/cmd-manifest.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDpC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAs5E9B,8DAA8D;AAC9D,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,GAAG,IAAI,CAOf;AA2/BD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC;AAQF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,GACA,OAAO,CAAC;IAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAkJnE;AA+1ED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|