gooseworks 0.3.14 → 0.3.16
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 +52 -2
- package/dist/auth/attribution.d.ts +14 -0
- package/dist/auth/attribution.d.ts.map +1 -0
- package/dist/auth/attribution.js +37 -0
- package/dist/auth/attribution.js.map +1 -0
- package/dist/auth/oauth-server.d.ts +4 -4
- package/dist/auth/oauth-server.d.ts.map +1 -1
- package/dist/auth/oauth-server.js +8 -8
- package/dist/auth/oauth-server.js.map +1 -1
- package/dist/commands/call.d.ts.map +1 -1
- package/dist/commands/call.js +6 -5
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/install.js +1 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/log.d.ts +15 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +121 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +10 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +228 -143
- package/dist/skills/master-skill.js.map +1 -1
- package/package.json +1 -1
- package/skills/goose-ads/SKILL.md +106 -102
- package/skills/goose-product-photos/SKILL.md +105 -0
- package/skills/goose-video/SKILL.md +24 -1
- package/skills/gooseworks/SKILL.md +98 -40
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GooseWorks
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Put your AI agent on the growth team. GooseWorks gives Claude Code, Cursor, and Codex specialist skills for research, lead generation, social data, ads, product photography, graphics, and growth work—with one install.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -24,7 +24,15 @@ npx gooseworks install --all
|
|
|
24
24
|
This does three things:
|
|
25
25
|
1. Opens browser for Google sign-in
|
|
26
26
|
2. Installs the GooseWorks skill into your coding agent
|
|
27
|
-
3. You're ready — ask your agent to "scrape reddit", "find leads", "research competitors"
|
|
27
|
+
3. You're ready — ask your agent to "scrape reddit", "find leads", "research competitors", or "create product photos"
|
|
28
|
+
|
|
29
|
+
New to GooseWorks? Start inside your coding agent with:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
/gooseworks onboard me
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Onboarding collects the essential information GooseWorks needs to understand the company, its goals, and the work you want help with. That becomes a reusable **Company Brain** which improves future research, analysis, creative, and growth work. Existing users can keep using `/gooseworks` normally and only update their company context when they choose.
|
|
28
36
|
|
|
29
37
|
Use `--with <skill-slug>` to install standalone GooseWorks skills alongside the main GooseWorks skill. For example, `--with goose-graphics` installs `/goose-graphics` locally so your agent can run it directly without doing a catalog lookup through `/gooseworks`.
|
|
30
38
|
|
|
@@ -57,6 +65,7 @@ npx gooseworks install --codex # Configure for Codex
|
|
|
57
65
|
npx gooseworks install --all # Configure all detected agents
|
|
58
66
|
npx gooseworks install --claude --with goose-graphics
|
|
59
67
|
npx gooseworks install --claude --with goose-graphics --with aeo
|
|
68
|
+
npx gooseworks install --all --ref <campaign-or-referral-code>
|
|
60
69
|
```
|
|
61
70
|
|
|
62
71
|
**What it does:**
|
|
@@ -159,6 +168,47 @@ npx gooseworks update
|
|
|
159
168
|
|
|
160
169
|
Standalone skills installed with `--with` skip the catalog search step. After `npx gooseworks install --claude --with goose-graphics`, you can invoke `/goose-graphics ...` directly from Claude Code.
|
|
161
170
|
|
|
171
|
+
## What growth teams can ask
|
|
172
|
+
|
|
173
|
+
Use `/gooseworks` naturally. It can bring in specialist capabilities without requiring you to know the internal skill name:
|
|
174
|
+
|
|
175
|
+
```text
|
|
176
|
+
/gooseworks Analyze the ads my three competitors are currently running.
|
|
177
|
+
/gooseworks Mine these TikTok and Instagram comments for objections and buying intent.
|
|
178
|
+
/gooseworks Find skincare creators whose audiences match women aged 25–40 in the US.
|
|
179
|
+
/gooseworks Diagnose our Meta performance and recommend the next creative test.
|
|
180
|
+
/gooseworks Research demand for this new product idea.
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
For focused creative work you can also use:
|
|
184
|
+
|
|
185
|
+
- `/goose-ads` for static ads, ad research, and ad performance.
|
|
186
|
+
- `/goose-product-photos` for studio, lifestyle, marketplace, social, and on-model product photography.
|
|
187
|
+
- `/goose-video` for supported video-ad formats.
|
|
188
|
+
- `goose-graphics` for social graphics, carousels, slides, and branded visual content.
|
|
189
|
+
- `animate-image` to turn an approved still into a short motion creative.
|
|
190
|
+
|
|
191
|
+
Consumer and ecommerce brands are one important use case. The same `/gooseworks` coworker remains useful for B2B teams, agencies, sales, research, lead generation, and other GTM work.
|
|
192
|
+
|
|
193
|
+
## Direct provider calls
|
|
194
|
+
|
|
195
|
+
### `call`
|
|
196
|
+
|
|
197
|
+
Call managed data providers without buying a separate provider key. ScrapeCreators uses its first-party GooseWorks proxy and defaults to GET:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
npx gooseworks call scrapecreators /v2/instagram/post/comments \
|
|
201
|
+
--query='{"url":"https://www.instagram.com/p/POST_ID/"}'
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
For the few official ScrapeCreators POST operations, pass the method and JSON body explicitly:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
npx gooseworks call scrapecreators /v1/facebook/adLibrary/search/ads \
|
|
208
|
+
--method POST \
|
|
209
|
+
--body='{"query":"running shoes","country":"US"}'
|
|
210
|
+
```
|
|
211
|
+
|
|
162
212
|
## Security & data handling
|
|
163
213
|
|
|
164
214
|
We'd rather you know exactly what this CLI does before you run it:
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AttributionResult {
|
|
2
|
+
recorded: boolean;
|
|
3
|
+
kind?: 'marketing' | 'referral' | 'unknown';
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Attach an authenticated --ref touch without changing the user's original
|
|
7
|
+
* signup attribution. The backend resolves marketing refs and keeps creator /
|
|
8
|
+
* user referral handling on the existing OAuth path.
|
|
9
|
+
*
|
|
10
|
+
* Attribution is best-effort: a campaign tracking outage must never block
|
|
11
|
+
* login or installation.
|
|
12
|
+
*/
|
|
13
|
+
export declare function recordAttributionRef(apiBase: string, ref: string | undefined, apiKey: string): Promise<AttributionResult>;
|
|
14
|
+
//# sourceMappingURL=attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../../src/auth/attribution.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAuB5B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.recordAttributionRef = recordAttributionRef;
|
|
4
|
+
/**
|
|
5
|
+
* Attach an authenticated --ref touch without changing the user's original
|
|
6
|
+
* signup attribution. The backend resolves marketing refs and keeps creator /
|
|
7
|
+
* user referral handling on the existing OAuth path.
|
|
8
|
+
*
|
|
9
|
+
* Attribution is best-effort: a campaign tracking outage must never block
|
|
10
|
+
* login or installation.
|
|
11
|
+
*/
|
|
12
|
+
async function recordAttributionRef(apiBase, ref, apiKey) {
|
|
13
|
+
const trimmed = ref?.trim();
|
|
14
|
+
if (!trimmed)
|
|
15
|
+
return { recorded: false };
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(`${apiBase.replace(/\/$/, '')}/api/cli/attribution`, {
|
|
18
|
+
method: 'POST',
|
|
19
|
+
headers: {
|
|
20
|
+
Authorization: `Bearer ${apiKey}`,
|
|
21
|
+
'Content-Type': 'application/json',
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify({ ref: trimmed }),
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok)
|
|
26
|
+
return { recorded: false };
|
|
27
|
+
const body = await response.json();
|
|
28
|
+
return {
|
|
29
|
+
recorded: body.recorded === true,
|
|
30
|
+
...(body.kind ? { kind: body.kind } : {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return { recorded: false };
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=attribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../src/auth/attribution.ts"],"names":[],"mappings":";;AAaA,oDA2BC;AAnCD;;;;;;;GAOG;AACI,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,GAAuB,EACvB,MAAc;IAEd,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,EAAE;YAChF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;SACvC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAgC,CAAC;QACjE,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI;YAChC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -7,12 +7,12 @@ interface OAuthResult {
|
|
|
7
7
|
mcp_server_url?: string;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* @param
|
|
10
|
+
* @param attributionRef Referral or marketing code (from `--ref`). Forwarded to
|
|
11
11
|
* the `/cli/auth` page as `?creator_ref=`, which passes it onto `/auth/google`
|
|
12
12
|
* so the backend attributes a first-time signup to that creator's cash rail.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Marketing refs are also resolved after authentication by the CLI's
|
|
14
|
+
* authenticated attribution call.
|
|
15
15
|
*/
|
|
16
|
-
export declare function runOAuthFlow(apiBase: string,
|
|
16
|
+
export declare function runOAuthFlow(apiBase: string, attributionRef?: string): Promise<OAuthResult>;
|
|
17
17
|
export {};
|
|
18
18
|
//# sourceMappingURL=oauth-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,
|
|
1
|
+
{"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CAkItB"}
|
|
@@ -45,13 +45,13 @@ const logger = __importStar(require("../utils/logger"));
|
|
|
45
45
|
const config_1 = require("../config");
|
|
46
46
|
const OAUTH_TIMEOUT_MS = 120_000;
|
|
47
47
|
/**
|
|
48
|
-
* @param
|
|
48
|
+
* @param attributionRef Referral or marketing code (from `--ref`). Forwarded to
|
|
49
49
|
* the `/cli/auth` page as `?creator_ref=`, which passes it onto `/auth/google`
|
|
50
50
|
* so the backend attributes a first-time signup to that creator's cash rail.
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* Marketing refs are also resolved after authentication by the CLI's
|
|
52
|
+
* authenticated attribution call.
|
|
53
53
|
*/
|
|
54
|
-
async function runOAuthFlow(apiBase,
|
|
54
|
+
async function runOAuthFlow(apiBase, attributionRef) {
|
|
55
55
|
const state = crypto.randomBytes(16).toString('hex');
|
|
56
56
|
const frontendBase = config_1.FRONTEND_URL;
|
|
57
57
|
return new Promise((resolve, reject) => {
|
|
@@ -140,10 +140,10 @@ async function runOAuthFlow(apiBase, creatorRef) {
|
|
|
140
140
|
// correct backend (e.g. http://localhost:5999 for local dev vs. the
|
|
141
141
|
// ngrok/prod URL baked into NEXT_PUBLIC_API_URL).
|
|
142
142
|
let authUrl = `${frontendBase}/cli/auth?callback_port=${port}&state=${state}&api_base=${encodeURIComponent(apiBase)}`;
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
if (
|
|
146
|
-
authUrl += `&creator_ref=${encodeURIComponent(
|
|
143
|
+
// Preserve the existing creator-referral rail. The same value is sent to
|
|
144
|
+
// the authenticated attribution endpoint after OAuth for marketing refs.
|
|
145
|
+
if (attributionRef) {
|
|
146
|
+
authUrl += `&creator_ref=${encodeURIComponent(attributionRef)}`;
|
|
147
147
|
}
|
|
148
148
|
logger.info('Opening browser for Google sign-in...');
|
|
149
149
|
(0, open_1.default)(authUrl).catch(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,oCAqIC;AA/JD,2CAA6B;AAE7B,+CAAiC;AACjC,gDAAwB;AACxB,+CAAkE;AAClE,wDAA0C;AAC1C,sCAAyC;AAEzC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAWjC;;;;;;GAMG;AACI,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,
|
|
1
|
+
{"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,eAAO,MAAM,WAAW,SA+EpB,CAAC"}
|
package/dist/commands/call.js
CHANGED
|
@@ -38,7 +38,7 @@ const commander_1 = require("commander");
|
|
|
38
38
|
const credentials_1 = require("../auth/credentials");
|
|
39
39
|
const http_1 = require("../utils/http");
|
|
40
40
|
const logger = __importStar(require("../utils/logger"));
|
|
41
|
-
const DIRECT_PROXIES = new Set(['apify', 'apollo', 'crustdata']);
|
|
41
|
+
const DIRECT_PROXIES = new Set(['apify', 'apollo', 'crustdata', 'scrapecreators']);
|
|
42
42
|
function parseJsonOption(value, name) {
|
|
43
43
|
if (value === undefined)
|
|
44
44
|
return undefined;
|
|
@@ -50,10 +50,10 @@ function parseJsonOption(value, name) {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
exports.callCommand = new commander_1.Command('call')
|
|
53
|
-
.description('Call any external provider (apify, apollo, crustdata, hunter, pdl, etc.)')
|
|
54
|
-
.argument('<provider>', 'Provider name (e.g. "
|
|
53
|
+
.description('Call any external provider (apify, scrapecreators, apollo, crustdata, hunter, pdl, etc.)')
|
|
54
|
+
.argument('<provider>', 'Provider name (e.g. "scrapecreators", "apify", "hunter")')
|
|
55
55
|
.argument('<path>', 'Endpoint path (e.g. "acts/.../runs", "/v2/email-finder")')
|
|
56
|
-
.option('--method <verb>', 'HTTP method (only used for direct-proxy providers;
|
|
56
|
+
.option('--method <verb>', 'HTTP method (only used for direct-proxy providers; ScrapeCreators defaults to GET, others to POST)')
|
|
57
57
|
.option('--body <json>', 'Request body as JSON string')
|
|
58
58
|
.option('--query <json>', 'Query parameters as JSON string')
|
|
59
59
|
.action(async (provider, path, opts) => {
|
|
@@ -80,7 +80,8 @@ exports.callCommand = new commander_1.Command('call')
|
|
|
80
80
|
if (isDirect) {
|
|
81
81
|
const cleanPath = path.replace(/^\/+/, '');
|
|
82
82
|
endpointPath = `/v1/proxy/${provider.toLowerCase()}/${cleanPath}`;
|
|
83
|
-
|
|
83
|
+
const defaultMethod = provider.toLowerCase() === 'scrapecreators' ? 'GET' : 'POST';
|
|
84
|
+
method = (opts.method ?? defaultMethod).toUpperCase();
|
|
84
85
|
body = bodyParsed;
|
|
85
86
|
if (queryParsed && typeof queryParsed === 'object') {
|
|
86
87
|
query = queryParsed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qDAAqD;AACrD,wCAA4C;AAC5C,wDAA0C;AAE1C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -61,7 +61,7 @@ Examples:
|
|
|
61
61
|
.option('--mcp', 'Also register the GooseWorks MCP server')
|
|
62
62
|
.option('--with <skill-slug>', 'Also install a standalone GooseWorks skill (repeatable)', collectSkillSlug, [])
|
|
63
63
|
.option('--api-base <url>', 'API base URL', config_1.API_BASE)
|
|
64
|
-
.option('--ref <code>', '
|
|
64
|
+
.option('--ref <code>', 'Referral or marketing campaign code for attribution')
|
|
65
65
|
.action(async (opts) => {
|
|
66
66
|
logger.banner((0, version_1.getVersion)());
|
|
67
67
|
const targetAgents = resolveTargetAgents(opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,oDA0JC;AAlLD,yCAAoC;AACpC,mCAAyC;AACzC,mDAAyG;AACzG,6CAAmD;AACnD,qDAA8E;AAC9E,2CAAoE;AACpE,6CAAmD;AACnD,6CAAgE;AAChE,wDAA0C;AAC1C,yDAAwD;AACxD,sCAAqC;AACrC,wCAAwC;AAaxC,SAAgB,oBAAoB;IAClC,OAAO,IAAI,mBAAO,CAAC,SAAS,CAAC;SAC5B,WAAW,CAAC;;;;uEAIwD,CAAC;SACrE,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC;SAC/C,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;SACxC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;SAC1C,MAAM,CAAC,OAAO,EAAE,mDAAmD,CAAC;SACpE,MAAM,CAAC,OAAO,EAAE,yCAAyC,CAAC;SAC1D,MAAM,CAAC,qBAAqB,EAAE,yDAAyD,EAAE,gBAAgB,EAAE,EAAE,CAAC;SAC9G,MAAM,CAAC,kBAAkB,EAAE,cAAc,EAAE,iBAAQ,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,oDA0JC;AAlLD,yCAAoC;AACpC,mCAAyC;AACzC,mDAAyG;AACzG,6CAAmD;AACnD,qDAA8E;AAC9E,2CAAoE;AACpE,6CAAmD;AACnD,6CAAgE;AAChE,wDAA0C;AAC1C,yDAAwD;AACxD,sCAAqC;AACrC,wCAAwC;AAaxC,SAAgB,oBAAoB;IAClC,OAAO,IAAI,mBAAO,CAAC,SAAS,CAAC;SAC5B,WAAW,CAAC;;;;uEAIwD,CAAC;SACrE,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC;SAC/C,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;SACxC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;SAC1C,MAAM,CAAC,OAAO,EAAE,mDAAmD,CAAC;SACpE,MAAM,CAAC,OAAO,EAAE,yCAAyC,CAAC;SAC1D,MAAM,CAAC,qBAAqB,EAAE,yDAAyD,EAAE,gBAAgB,EAAE,EAAE,CAAC;SAC9G,MAAM,CAAC,kBAAkB,EAAE,cAAc,EAAE,iBAAQ,CAAC;SACpD,MAAM,CAAC,cAAc,EAAE,qDAAqD,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;QACrC,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAU,GAAE,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzC,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAc,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9C,wDAAwD;QACxD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,iCAAiC,CAAC,CAAC;QACrD,IAAA,2BAAe,GAAE,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,IAAA,qCAAyB,EAAC,IAAA,6BAAc,GAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7E,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,8BAA8B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,IAAI,KAAK,CAAC,CAAC;gBACtD,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,MAAM,IAAA,kCAAsB,EAAC,IAAI,EAAE;oBACjC,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;wBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC7D,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC;4BAC9D,MAAM,CAAC,IAAI,CAAC,gBAAgB,UAAU,IAAI,KAAK,cAAc,IAAI,EAAE,CAAC,CAAC;4BACrE,YAAY,GAAG,UAAU,CAAC;wBAC5B,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBACH,MAAM,CAAC,OAAO,CAAC,8BAA8B,IAAI,wBAAwB,IAAI,GAAG,CAAC,CAAC;YACpF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,CAAC,KAAK,CAAC,sCAAsC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBACtD,yEAAyE;gBACzE,yEAAyE;gBACzE,IAAI,CAAC;oBACH,IAAA,wBAAe,GAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CACT,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;wBAC3E,uDAAuD,CAC1D,CAAC;gBACJ,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,IAAA,+BAAkB,GAAE,EAAE,CAAC;wBACzB,MAAM,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;wBACvE,uEAAuE;wBACvE,MAAM,GAAG,GAAG,MAAM,IAAA,+BAAkB,GAAE,CAAC;wBACvC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;4BACX,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;wBACpD,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,IAAI,CACT,wCAAwC,GAAG,CAAC,KAAK,gCAAgC;gCAC/E,2FAA2F,CAC9F,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBACrD,IAAI,CAAC;oBACH,IAAA,sBAAc,GAAE,CAAC;gBACnB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CACT,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;wBAC3E,uDAAuD,CAC1D,CAAC;gBACJ,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,IAAA,yBAAiB,GAAE,EAAE,CAAC;wBACxB,MAAM,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC;wBAC7E,MAAM,GAAG,GAAG,MAAM,IAAA,+BAAkB,GAAE,CAAC;wBACvC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;4BACX,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;wBACpD,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,IAAI,CACT,wCAAwC,GAAG,CAAC,KAAK,gCAAgC;gCAC/E,qFAAqF,CACxF,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBAC7C,MAAM,MAAM,GAAG,IAAA,wBAAe,EAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;oBACjD,MAAM,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACtD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvB,MAAM,CAAC,OAAO,CAAC,mBAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;oBACpF,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACrB,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;gBACrH,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CACpE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,wBAAwB,UAAU,+BAA+B,CAAC,CAAC;QAE/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAEY,QAAA,cAAc,GAAG,oBAAoB,EAAE,CAAC;AAErD,SAAS,mBAAmB,CAAC,IAAoB;IAC/C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,IAAA,qBAAY,GAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAClE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC;QACrD,CAAC;QACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,QAAkB;IACzD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* `gooseworks log` — record one diagnostic event for the current skill/CLI run
|
|
4
|
+
* (GOOSE-2862). This is the SHELL-side writer, alongside the agent's
|
|
5
|
+
* `log_cli_event` MCP tool and the Python `gw_log()` helper in `media_proxy.py`.
|
|
6
|
+
* All three POST to `/api/internal/cli-logs` and land in the same `cli_run_logs`
|
|
7
|
+
* table, grouped by run id.
|
|
8
|
+
*
|
|
9
|
+
* Use it in a skill's shell steps whenever something is off — an API is failing,
|
|
10
|
+
* a required input/asset is missing, an instruction is ambiguous, a step is
|
|
11
|
+
* blocked — or just to mark progress. Best-effort: a POST failure warns and
|
|
12
|
+
* exits 0 so it never breaks the script that called it.
|
|
13
|
+
*/
|
|
14
|
+
export declare const logCommand: Command;
|
|
15
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,SA6FpB,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.logCommand = void 0;
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const credentials_1 = require("../auth/credentials");
|
|
39
|
+
const http_1 = require("../utils/http");
|
|
40
|
+
const logger = __importStar(require("../utils/logger"));
|
|
41
|
+
/**
|
|
42
|
+
* `gooseworks log` — record one diagnostic event for the current skill/CLI run
|
|
43
|
+
* (GOOSE-2862). This is the SHELL-side writer, alongside the agent's
|
|
44
|
+
* `log_cli_event` MCP tool and the Python `gw_log()` helper in `media_proxy.py`.
|
|
45
|
+
* All three POST to `/api/internal/cli-logs` and land in the same `cli_run_logs`
|
|
46
|
+
* table, grouped by run id.
|
|
47
|
+
*
|
|
48
|
+
* Use it in a skill's shell steps whenever something is off — an API is failing,
|
|
49
|
+
* a required input/asset is missing, an instruction is ambiguous, a step is
|
|
50
|
+
* blocked — or just to mark progress. Best-effort: a POST failure warns and
|
|
51
|
+
* exits 0 so it never breaks the script that called it.
|
|
52
|
+
*/
|
|
53
|
+
exports.logCommand = new commander_1.Command('log')
|
|
54
|
+
.description('Record a diagnostic event for the current run (broken API, missing input, ' +
|
|
55
|
+
'confusion, or a progress note). Visible to the GooseWorks team.')
|
|
56
|
+
.argument('<message>', 'Plain-language description of what happened / what is wrong')
|
|
57
|
+
.option('--event-type <type>', 'info | step | generation | api_failure | error | blocker | missing_input | confusion', 'info')
|
|
58
|
+
.option('--level <level>', 'debug | info | warn | error', 'info')
|
|
59
|
+
.option('--skill <name>', 'Skill/capability being run (default: $GW_SKILL)')
|
|
60
|
+
.option('--run-id <id>', 'Run id to group events (default: $GW_RUN_ID)')
|
|
61
|
+
.option('--project-id <id>', 'Ad project id (default: $GW_PROJECT_ID)')
|
|
62
|
+
.option('--provider <name>', 'e.g. "fal", "elevenlabs"')
|
|
63
|
+
.option('--model <id>', 'Model id, when the event is about a generation')
|
|
64
|
+
.option('--duration-ms <n>', 'Duration of the operation, in milliseconds')
|
|
65
|
+
.option('--details <json>', 'Free-form JSON context (error text, request/response, step…)')
|
|
66
|
+
.option('--quiet', 'Do not print a confirmation line')
|
|
67
|
+
.action(async (message, opts) => {
|
|
68
|
+
const creds = (0, credentials_1.getCredentials)();
|
|
69
|
+
if (!creds) {
|
|
70
|
+
logger.error('Not logged in. Run "gooseworks login" first.');
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
let details;
|
|
74
|
+
if (opts.details !== undefined) {
|
|
75
|
+
try {
|
|
76
|
+
details = JSON.parse(opts.details);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
logger.error(`--details must be valid JSON: ${err.message}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const runId = opts.runId ?? process.env.GW_RUN_ID;
|
|
84
|
+
if (!runId) {
|
|
85
|
+
logger.error('No run id. Pass --run-id or set GW_RUN_ID in the environment.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const projectId = opts.projectId ?? process.env.GW_PROJECT_ID;
|
|
89
|
+
const durationMs = opts.durationMs !== undefined ? Number(opts.durationMs) : undefined;
|
|
90
|
+
try {
|
|
91
|
+
const res = await (0, http_1.requestJson)({
|
|
92
|
+
apiBase: creds.api_base,
|
|
93
|
+
apiKey: creds.api_key,
|
|
94
|
+
method: 'POST',
|
|
95
|
+
path: '/api/internal/cli-logs',
|
|
96
|
+
query: projectId ? { project_id: projectId } : undefined,
|
|
97
|
+
body: {
|
|
98
|
+
run_id: runId,
|
|
99
|
+
message,
|
|
100
|
+
event_type: opts.eventType,
|
|
101
|
+
level: opts.level,
|
|
102
|
+
skill: opts.skill ?? process.env.GW_SKILL,
|
|
103
|
+
provider: opts.provider,
|
|
104
|
+
model: opts.model,
|
|
105
|
+
duration_ms: durationMs !== undefined && Number.isFinite(durationMs)
|
|
106
|
+
? durationMs
|
|
107
|
+
: undefined,
|
|
108
|
+
details,
|
|
109
|
+
source: 'cli',
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
if (!opts.quiet) {
|
|
113
|
+
logger.success(`Logged ${opts.eventType ?? 'info'} event${res.id ? ` (${res.id})` : ''}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
// Diagnostics must never break the caller — warn and exit 0.
|
|
118
|
+
logger.warn(`Could not record log event: ${err.message}`);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ export declare const loginCommand: Command;
|
|
|
4
4
|
* Ensures the user is logged in, running OAuth if needed.
|
|
5
5
|
* Returns credentials or exits the process.
|
|
6
6
|
*/
|
|
7
|
-
export declare function ensureLoggedIn(apiBase?: string,
|
|
7
|
+
export declare function ensureLoggedIn(apiBase?: string, ref?: string): Promise<import("../auth/credentials").Credentials>;
|
|
8
8
|
//# sourceMappingURL=login.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,eAAO,MAAM,YAAY,SA4BrB,CAAC;AAEL;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,sDAkB5E"}
|
package/dist/commands/login.js
CHANGED
|
@@ -49,6 +49,7 @@ const claude_mcp_1 = require("../agents/claude-mcp");
|
|
|
49
49
|
const detect_1 = require("../agents/detect");
|
|
50
50
|
const logger = __importStar(require("../utils/logger"));
|
|
51
51
|
const config_1 = require("../config");
|
|
52
|
+
const attribution_1 = require("../auth/attribution");
|
|
52
53
|
/**
|
|
53
54
|
* Refresh vendored entry skills on login for users who have already set up
|
|
54
55
|
* (`gooseworks` skill present). This is the "update skills on login": it picks up
|
|
@@ -102,11 +103,12 @@ function showNextSteps() {
|
|
|
102
103
|
exports.loginCommand = new commander_1.Command('login')
|
|
103
104
|
.description('Sign in to GooseWorks with Google')
|
|
104
105
|
.option('--api-base <url>', 'API base URL', config_1.API_BASE)
|
|
105
|
-
.option('--ref <code>', '
|
|
106
|
+
.option('--ref <code>', 'Referral or marketing campaign code for attribution')
|
|
106
107
|
.action(async (opts) => {
|
|
107
108
|
const existing = (0, credentials_1.getCredentials)();
|
|
108
109
|
if (existing) {
|
|
109
110
|
logger.success(`Already logged in as ${existing.email}`);
|
|
111
|
+
await (0, attribution_1.recordAttributionRef)(existing.api_base || opts.apiBase, opts.ref, existing.api_key);
|
|
110
112
|
refreshEntrySkillsOnLogin();
|
|
111
113
|
syncMcpRegistration();
|
|
112
114
|
logger.info('Run "gooseworks logout" first to switch accounts.');
|
|
@@ -114,6 +116,7 @@ exports.loginCommand = new commander_1.Command('login')
|
|
|
114
116
|
}
|
|
115
117
|
try {
|
|
116
118
|
const result = await (0, oauth_server_1.runOAuthFlow)(opts.apiBase, opts.ref);
|
|
119
|
+
await (0, attribution_1.recordAttributionRef)(opts.apiBase, opts.ref, result.api_key);
|
|
117
120
|
logger.success(`Logged in as ${result.email}`);
|
|
118
121
|
refreshEntrySkillsOnLogin();
|
|
119
122
|
syncMcpRegistration();
|
|
@@ -130,16 +133,19 @@ exports.loginCommand = new commander_1.Command('login')
|
|
|
130
133
|
* Ensures the user is logged in, running OAuth if needed.
|
|
131
134
|
* Returns credentials or exits the process.
|
|
132
135
|
*/
|
|
133
|
-
async function ensureLoggedIn(apiBase = config_1.API_BASE,
|
|
136
|
+
async function ensureLoggedIn(apiBase = config_1.API_BASE, ref) {
|
|
134
137
|
const existing = (0, credentials_1.getCredentials)();
|
|
135
|
-
if (existing)
|
|
138
|
+
if (existing) {
|
|
139
|
+
await (0, attribution_1.recordAttributionRef)(existing.api_base || apiBase, ref, existing.api_key);
|
|
136
140
|
return existing;
|
|
137
|
-
|
|
141
|
+
}
|
|
142
|
+
const result = await (0, oauth_server_1.runOAuthFlow)(apiBase, ref);
|
|
138
143
|
const creds = (0, credentials_1.getCredentials)();
|
|
139
144
|
if (!creds) {
|
|
140
145
|
logger.error('Failed to save credentials after login');
|
|
141
146
|
process.exit(1);
|
|
142
147
|
}
|
|
148
|
+
await (0, attribution_1.recordAttributionRef)(apiBase, ref, creds.api_key);
|
|
143
149
|
// Fresh login via an install/other command path — nudge onboarding too, so
|
|
144
150
|
// `gooseworks install --all` on a logged-out machine also opens the page.
|
|
145
151
|
openOnboarding();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ const orthogonal_1 = require("./commands/orthogonal");
|
|
|
16
16
|
const styles_1 = require("./commands/styles");
|
|
17
17
|
const formats_1 = require("./commands/formats");
|
|
18
18
|
const doctor_1 = require("./commands/doctor");
|
|
19
|
+
const log_1 = require("./commands/log");
|
|
19
20
|
const version_1 = require("./version");
|
|
20
21
|
const program = new commander_1.Command();
|
|
21
22
|
program
|
|
@@ -36,5 +37,6 @@ program.addCommand(orthogonal_1.orthogonalCommand);
|
|
|
36
37
|
program.addCommand(styles_1.stylesCommand);
|
|
37
38
|
program.addCommand(formats_1.formatsCommand);
|
|
38
39
|
program.addCommand(doctor_1.doctorCommand);
|
|
40
|
+
program.addCommand(log_1.logCommand);
|
|
39
41
|
program.parse();
|
|
40
42
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,gDAAoD;AACpD,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,8CAAkD;AAClD,gDAAoD;AACpD,8CAAkD;AAClD,4CAAgD;AAChD,wCAA4C;AAC5C,0CAA8C;AAC9C,sDAA0D;AAC1D,8CAAkD;AAClD,gDAAoD;AACpD,8CAAkD;AAClD,uCAAuC;AAEvC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,IAAA,oBAAU,GAAE,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,8BAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,gDAAoD;AACpD,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,8CAAkD;AAClD,gDAAoD;AACpD,8CAAkD;AAClD,4CAAgD;AAChD,wCAA4C;AAC5C,0CAA8C;AAC9C,sDAA0D;AAC1D,8CAAkD;AAClD,gDAAoD;AACpD,8CAAkD;AAClD,wCAA4C;AAC5C,uCAAuC;AAEvC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,IAAA,oBAAU,GAAE,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,8BAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAM7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAM7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAwR9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA0UhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CA2blD"}
|