gooseworks 0.2.9 → 0.3.0
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 +37 -1
- package/dist/agents/claude-mcp.d.ts +10 -0
- package/dist/agents/claude-mcp.d.ts.map +1 -1
- package/dist/agents/claude-mcp.js +31 -0
- package/dist/agents/claude-mcp.js.map +1 -1
- package/dist/commands/call.d.ts +3 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +124 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/env.d.ts +3 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +51 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/fetch.d.ts +3 -0
- package/dist/commands/fetch.d.ts.map +1 -0
- package/dist/commands/fetch.js +72 -0
- package/dist/commands/fetch.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +14 -5
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +25 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/orthogonal.d.ts +3 -0
- package/dist/commands/orthogonal.d.ts.map +1 -0
- package/dist/commands/orthogonal.js +105 -0
- package/dist/commands/orthogonal.js.map +1 -0
- package/dist/commands/update.js +4 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/skills/installer.d.ts +17 -0
- package/dist/skills/installer.d.ts.map +1 -1
- package/dist/skills/installer.js +47 -0
- package/dist/skills/installer.js.map +1 -1
- package/dist/skills/master-skill.d.ts +35 -6
- package/dist/skills/master-skill.d.ts.map +1 -1
- package/dist/skills/master-skill.js +226 -50
- package/dist/skills/master-skill.js.map +1 -1
- package/dist/skills/names.d.ts.map +1 -1
- package/dist/skills/names.js +4 -1
- package/dist/skills/names.js.map +1 -1
- package/dist/utils/http.d.ts +15 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +110 -0
- package/dist/utils/http.js.map +1 -0
- package/package.json +2 -2
- package/skills/gooseworks/SKILL.md +44 -54
package/README.md
CHANGED
|
@@ -149,6 +149,37 @@ Standalone skills installed with `--with` skip the catalog search step. After `n
|
|
|
149
149
|
| Enrichment | Contact enrichment, company research, tech stack |
|
|
150
150
|
| Monitoring | Newsletter scanning, review site tracking |
|
|
151
151
|
|
|
152
|
+
## Ads creation (`ads-remix`)
|
|
153
|
+
|
|
154
|
+
Alongside the GTM `gooseworks` skill, the CLI installs a **separate** `ads-remix` entry
|
|
155
|
+
skill for creating ad creative — remix a static ad template into a branded ad, or read a
|
|
156
|
+
brand for ads. Claude auto-loads whichever skill matches the task; the two are
|
|
157
|
+
domain-scoped and never merged.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
gooseworks install --claude --mcp
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Then in Claude Code: *"remix template `<id>` for `<your-site>`"*.
|
|
164
|
+
|
|
165
|
+
**The GooseWorks MCP server is REQUIRED for ads.** All brand/project/render reads and
|
|
166
|
+
writes go through the `gooseworks` MCP server (e.g. `get_brand_kit`, `submit_render`).
|
|
167
|
+
`install` registers it with `--mcp` (or `--all`) and verifies it's reachable; if it isn't,
|
|
168
|
+
you'll see a warning — the ads flow will fail without MCP. Re-run
|
|
169
|
+
`gooseworks install --claude --mcp` if needed.
|
|
170
|
+
|
|
171
|
+
Media generation (image edits) is billed to your GooseWorks credits via the media proxy —
|
|
172
|
+
no separate ad-credit balance.
|
|
173
|
+
|
|
174
|
+
### Keeping skills up to date
|
|
175
|
+
|
|
176
|
+
- **Entry skills** (`gooseworks`, `ads-remix`) are vendored in the CLI. They're (re)installed
|
|
177
|
+
on `install`/`update`, and **refreshed on `login`** — but only when their content actually
|
|
178
|
+
changed (a content-hash stamp skips unchanged ones, so re-running is cheap). Bump the CLI
|
|
179
|
+
(`npx gooseworks@latest …`) to get new entry-skill content.
|
|
180
|
+
- **Recipe skills** (e.g. `remix-graphic-ad-from-reference`) are **fetched live** from
|
|
181
|
+
goose-skills each time they're used, so they're always current — nothing to update.
|
|
182
|
+
|
|
152
183
|
## File Layout
|
|
153
184
|
|
|
154
185
|
### Credentials
|
|
@@ -163,7 +194,11 @@ Standalone skills installed with `--with` skip the catalog search step. After `n
|
|
|
163
194
|
```
|
|
164
195
|
~/.agents/skills/
|
|
165
196
|
├── gooseworks/
|
|
166
|
-
│
|
|
197
|
+
│ ├── SKILL.md # GTM skill — teaches your agent to use 100+ data tools
|
|
198
|
+
│ └── .gooseworks-version # content-hash stamp (freshness check; skip rewrite if unchanged)
|
|
199
|
+
├── ads-remix/
|
|
200
|
+
│ ├── SKILL.md # Ads-creation entry skill (remix + brand context; requires MCP)
|
|
201
|
+
│ └── .gooseworks-version
|
|
167
202
|
└── goose-graphics/
|
|
168
203
|
└── SKILL.md # Optional standalone skill installed with --with
|
|
169
204
|
```
|
|
@@ -173,6 +208,7 @@ Standalone skills installed with `--with` skip the catalog search step. After `n
|
|
|
173
208
|
```
|
|
174
209
|
~/.claude/skills/
|
|
175
210
|
├── gooseworks → ~/.agents/skills/gooseworks
|
|
211
|
+
├── ads-remix → ~/.agents/skills/ads-remix
|
|
176
212
|
└── goose-graphics → ~/.agents/skills/goose-graphics
|
|
177
213
|
```
|
|
178
214
|
|
|
@@ -7,5 +7,15 @@
|
|
|
7
7
|
* Returns true if configured, false if skipped (missing mcp_server_url).
|
|
8
8
|
*/
|
|
9
9
|
export declare function configureClaudeMcp(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Verify the GooseWorks MCP server is reachable (its unauthenticated /health
|
|
12
|
+
* endpoint). Ads creation REQUIRES MCP, so install surfaces this loudly. Returns
|
|
13
|
+
* { ok } — never throws. Confirms reachability, not token validity (that surfaces
|
|
14
|
+
* on the first tool call).
|
|
15
|
+
*/
|
|
16
|
+
export declare function verifyMcpReachable(timeoutMs?: number): Promise<{
|
|
17
|
+
ok: boolean;
|
|
18
|
+
error?: string;
|
|
19
|
+
}>;
|
|
10
20
|
export declare function removeClaudeMcp(): void;
|
|
11
21
|
//# sourceMappingURL=claude-mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-mcp.d.ts","sourceRoot":"","sources":["../../src/agents/claude-mcp.ts"],"names":[],"mappings":"AA6CA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAuB5C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAiBtC"}
|
|
1
|
+
{"version":3,"file":"claude-mcp.d.ts","sourceRoot":"","sources":["../../src/agents/claude-mcp.ts"],"names":[],"mappings":"AA6CA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAuB5C;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBnG;AAED,wBAAgB,eAAe,IAAI,IAAI,CAiBtC"}
|
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.configureClaudeMcp = configureClaudeMcp;
|
|
37
|
+
exports.verifyMcpReachable = verifyMcpReachable;
|
|
37
38
|
exports.removeClaudeMcp = removeClaudeMcp;
|
|
38
39
|
const fs = __importStar(require("fs"));
|
|
39
40
|
const path = __importStar(require("path"));
|
|
@@ -96,6 +97,36 @@ function configureClaudeMcp() {
|
|
|
96
97
|
writeConfig(config);
|
|
97
98
|
return true;
|
|
98
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Verify the GooseWorks MCP server is reachable (its unauthenticated /health
|
|
102
|
+
* endpoint). Ads creation REQUIRES MCP, so install surfaces this loudly. Returns
|
|
103
|
+
* { ok } — never throws. Confirms reachability, not token validity (that surfaces
|
|
104
|
+
* on the first tool call).
|
|
105
|
+
*/
|
|
106
|
+
async function verifyMcpReachable(timeoutMs = 5000) {
|
|
107
|
+
const creds = (0, credentials_1.getCredentials)();
|
|
108
|
+
if (!creds?.mcp_server_url)
|
|
109
|
+
return { ok: false, error: 'no mcp_server_url in credentials' };
|
|
110
|
+
let healthUrl;
|
|
111
|
+
try {
|
|
112
|
+
healthUrl = new URL('/health', creds.mcp_server_url).toString();
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return { ok: false, error: `invalid mcp_server_url: ${creds.mcp_server_url}` };
|
|
116
|
+
}
|
|
117
|
+
const controller = new AbortController();
|
|
118
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
119
|
+
try {
|
|
120
|
+
const res = await fetch(healthUrl, { signal: controller.signal });
|
|
121
|
+
return res.ok ? { ok: true } : { ok: false, error: `health check returned ${res.status}` };
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
return { ok: false, error: err?.message || 'unreachable' };
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
clearTimeout(timer);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
99
130
|
function removeClaudeMcp() {
|
|
100
131
|
try {
|
|
101
132
|
if (!fs.existsSync(CLAUDE_CONFIG_PATH))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-mcp.js","sourceRoot":"","sources":["../../src/agents/claude-mcp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,gDAuBC;AAED,0CAiBC;
|
|
1
|
+
{"version":3,"file":"claude-mcp.js","sourceRoot":"","sources":["../../src/agents/claude-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,WAAW,SA8EpB,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
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.callCommand = 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
|
+
const DIRECT_PROXIES = new Set(['apify', 'apollo', 'crustdata']);
|
|
42
|
+
function parseJsonOption(value, name) {
|
|
43
|
+
if (value === undefined)
|
|
44
|
+
return undefined;
|
|
45
|
+
try {
|
|
46
|
+
return JSON.parse(value);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
throw new Error(`--${name} must be valid JSON: ${err.message}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
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. "apify", "hunter", "pdl")')
|
|
55
|
+
.argument('<path>', 'Endpoint path (e.g. "acts/.../runs", "/v2/email-finder")')
|
|
56
|
+
.option('--method <verb>', 'HTTP method (only used for direct-proxy providers; default POST)', 'POST')
|
|
57
|
+
.option('--body <json>', 'Request body as JSON string')
|
|
58
|
+
.option('--query <json>', 'Query parameters as JSON string')
|
|
59
|
+
.action(async (provider, path, opts) => {
|
|
60
|
+
const creds = (0, credentials_1.getCredentials)();
|
|
61
|
+
if (!creds) {
|
|
62
|
+
logger.error('Not logged in. Run "gooseworks login" first.');
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
let bodyParsed;
|
|
66
|
+
let queryParsed;
|
|
67
|
+
try {
|
|
68
|
+
bodyParsed = parseJsonOption(opts.body, 'body');
|
|
69
|
+
queryParsed = parseJsonOption(opts.query, 'query');
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
logger.error(err.message);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
const isDirect = DIRECT_PROXIES.has(provider.toLowerCase());
|
|
76
|
+
let endpointPath;
|
|
77
|
+
let method;
|
|
78
|
+
let body;
|
|
79
|
+
let query;
|
|
80
|
+
if (isDirect) {
|
|
81
|
+
const cleanPath = path.replace(/^\/+/, '');
|
|
82
|
+
endpointPath = `/v1/proxy/${provider.toLowerCase()}/${cleanPath}`;
|
|
83
|
+
method = (opts.method ?? 'POST').toUpperCase();
|
|
84
|
+
body = bodyParsed;
|
|
85
|
+
if (queryParsed && typeof queryParsed === 'object') {
|
|
86
|
+
query = queryParsed;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
endpointPath = '/v1/proxy/orthogonal/run';
|
|
91
|
+
method = 'POST';
|
|
92
|
+
body = {
|
|
93
|
+
api: provider,
|
|
94
|
+
path,
|
|
95
|
+
...(queryParsed !== undefined ? { query: queryParsed } : {}),
|
|
96
|
+
...(bodyParsed !== undefined ? { body: bodyParsed } : {}),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const spin = logger.spinner(`Calling ${provider} ${path}...`);
|
|
100
|
+
try {
|
|
101
|
+
const response = await (0, http_1.requestJson)({
|
|
102
|
+
apiBase: creds.api_base,
|
|
103
|
+
apiKey: creds.api_key,
|
|
104
|
+
method,
|
|
105
|
+
path: endpointPath,
|
|
106
|
+
body: method === 'GET' || method === 'HEAD' ? undefined : body,
|
|
107
|
+
query,
|
|
108
|
+
});
|
|
109
|
+
spin.stop();
|
|
110
|
+
const output = response.data !== undefined ? response.data : response;
|
|
111
|
+
console.log(JSON.stringify(output, null, 2));
|
|
112
|
+
if (response.cost?.credits !== undefined) {
|
|
113
|
+
const c = response.cost.credits;
|
|
114
|
+
logger.info(`Cost: ${c} credit${c === 1 ? '' : 's'}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
spin.stop();
|
|
119
|
+
const message = err instanceof Error ? err.message : 'Call failed';
|
|
120
|
+
logger.error(message);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,UAAU,SAUnB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
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.envCommand = void 0;
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const credentials_1 = require("../auth/credentials");
|
|
39
|
+
const logger = __importStar(require("../utils/logger"));
|
|
40
|
+
exports.envCommand = new commander_1.Command('env')
|
|
41
|
+
.description('Print shell export commands for GooseWorks credentials (use: eval $(gooseworks env))')
|
|
42
|
+
.action(() => {
|
|
43
|
+
const creds = (0, credentials_1.getCredentials)();
|
|
44
|
+
if (!creds) {
|
|
45
|
+
logger.error('Not logged in. Run "gooseworks login" first.');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
console.log(`export GOOSEWORKS_API_KEY="${creds.api_key}"`);
|
|
49
|
+
console.log(`export GOOSEWORKS_API_BASE="${creds.api_base}"`);
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qDAAqD;AACrD,wDAA0C;AAE7B,QAAA,UAAU,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,sFAAsF,CAAC;KACnG,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,KAAK,GAAG,IAAA,4BAAc,GAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/commands/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,eAAO,MAAM,YAAY,SAgCrB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
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.fetchCommand = 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
|
+
exports.fetchCommand = new commander_1.Command('fetch')
|
|
42
|
+
.description('Fetch a GooseWorks skill (content + scripts + dependencies) by slug')
|
|
43
|
+
.argument('<slug>', 'Skill slug (e.g. "reddit-scraper")')
|
|
44
|
+
.action(async (slug) => {
|
|
45
|
+
const creds = (0, credentials_1.getCredentials)();
|
|
46
|
+
if (!creds) {
|
|
47
|
+
logger.error('Not logged in. Run "gooseworks login" first.');
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
const spin = logger.spinner(`Fetching skill ${slug}...`);
|
|
51
|
+
try {
|
|
52
|
+
const response = await (0, http_1.requestJson)({
|
|
53
|
+
apiBase: creds.api_base,
|
|
54
|
+
apiKey: creds.api_key,
|
|
55
|
+
method: 'GET',
|
|
56
|
+
path: `/api/skills/catalog/${encodeURIComponent(slug)}`,
|
|
57
|
+
});
|
|
58
|
+
spin.stop();
|
|
59
|
+
if (response.status === 'error' || !response.data) {
|
|
60
|
+
logger.error('Failed to fetch skill');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
console.log(JSON.stringify(response.data, null, 2));
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
spin.stop();
|
|
67
|
+
const message = err instanceof Error ? err.message : 'Fetch failed';
|
|
68
|
+
logger.error(message);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/commands/fetch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,qDAAqD;AACrD,wCAA4C;AAC5C,wDAA0C;AAuB7B,QAAA,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,qEAAqE,CAAC;KAClF,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,KAAK,GAAG,IAAA,4BAAc,GAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAW,EAAuB;YACvD,OAAO,EAAE,KAAK,CAAC,QAAQ;YACvB,MAAM,EAAE,KAAK,CAAC,OAAO;YACrB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,oBAAoB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,oBAAoB,IAAI,OAAO,CAqH9C;AAED,eAAO,MAAM,cAAc,SAAyB,CAAC"}
|
package/dist/commands/install.js
CHANGED
|
@@ -74,12 +74,12 @@ Examples:
|
|
|
74
74
|
logger.step(1, 3, 'Authenticating...');
|
|
75
75
|
const creds = await (0, login_1.ensureLoggedIn)(opts.apiBase);
|
|
76
76
|
logger.success(`Logged in as ${creds.email}`);
|
|
77
|
-
// Step 2: Install
|
|
78
|
-
logger.step(2, 3, 'Installing GooseWorks
|
|
77
|
+
// Step 2: Install entry skills (clean old skills first)
|
|
78
|
+
logger.step(2, 3, 'Installing GooseWorks skills...');
|
|
79
79
|
(0, installer_1.removeAllSkills)();
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
for (const r of (0, installer_1.installManagedEntrySkills)((0, master_skill_1.getEntrySkills)(), { force: true })) {
|
|
81
|
+
logger.success(`Installed ${r.name} skill to ~/.agents/skills/${r.name}/`);
|
|
82
|
+
}
|
|
83
83
|
for (const slug of opts.with || []) {
|
|
84
84
|
try {
|
|
85
85
|
logger.info(`Installing standalone skill ${slug}...`);
|
|
@@ -109,6 +109,15 @@ Examples:
|
|
|
109
109
|
if (wantMcp) {
|
|
110
110
|
if ((0, claude_mcp_1.configureClaudeMcp)()) {
|
|
111
111
|
logger.success("Registered 'gooseworks' MCP server in ~/.claude.json");
|
|
112
|
+
// Ads creation REQUIRES a reachable MCP server — verify and fail loud.
|
|
113
|
+
const mcp = await (0, claude_mcp_1.verifyMcpReachable)();
|
|
114
|
+
if (mcp.ok) {
|
|
115
|
+
logger.success('GooseWorks MCP server reachable');
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
logger.warn(`GooseWorks MCP server NOT reachable (${mcp.error}). Ads creation requires it — ` +
|
|
119
|
+
'restart Claude Code and check your connection; the ads-remix skill will fail without MCP.');
|
|
120
|
+
}
|
|
112
121
|
}
|
|
113
122
|
else {
|
|
114
123
|
logger.info("Skipped MCP (no mcp_server_url in credentials — older backend?)");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AA2BpC,eAAO,MAAM,YAAY,SAqBrB,CAAC;AAEL;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAiB,sDAW9D"}
|
package/dist/commands/login.js
CHANGED
|
@@ -38,8 +38,31 @@ exports.ensureLoggedIn = ensureLoggedIn;
|
|
|
38
38
|
const commander_1 = require("commander");
|
|
39
39
|
const credentials_1 = require("../auth/credentials");
|
|
40
40
|
const oauth_server_1 = require("../auth/oauth-server");
|
|
41
|
+
const installer_1 = require("../skills/installer");
|
|
42
|
+
const master_skill_1 = require("../skills/master-skill");
|
|
43
|
+
const claude_1 = require("../agents/claude");
|
|
44
|
+
const detect_1 = require("../agents/detect");
|
|
41
45
|
const logger = __importStar(require("../utils/logger"));
|
|
42
46
|
const config_1 = require("../config");
|
|
47
|
+
/**
|
|
48
|
+
* Refresh vendored entry skills on login for users who have already set up
|
|
49
|
+
* (`gooseworks` skill present). This is the "update skills on login": it picks up
|
|
50
|
+
* new or content-changed entry skills (e.g. the ads-remix skill) without
|
|
51
|
+
* rewriting unchanged ones, then re-symlinks Claude so the new skill is visible.
|
|
52
|
+
* Bootstrapping a first-time install stays the job of `gooseworks install`.
|
|
53
|
+
*/
|
|
54
|
+
function refreshEntrySkillsOnLogin() {
|
|
55
|
+
if (!(0, installer_1.getInstalledSkills)().includes('gooseworks'))
|
|
56
|
+
return;
|
|
57
|
+
const changed = (0, installer_1.installManagedEntrySkills)((0, master_skill_1.getEntrySkills)())
|
|
58
|
+
.filter((r) => r.action === 'installed')
|
|
59
|
+
.map((r) => r.name);
|
|
60
|
+
if (changed.length === 0)
|
|
61
|
+
return;
|
|
62
|
+
logger.success(`Refreshed skills: ${changed.join(', ')}`);
|
|
63
|
+
if ((0, detect_1.isAgentInstalled)('claude'))
|
|
64
|
+
(0, claude_1.configureClaude)();
|
|
65
|
+
}
|
|
43
66
|
exports.loginCommand = new commander_1.Command('login')
|
|
44
67
|
.description('Sign in to GooseWorks with Google')
|
|
45
68
|
.option('--api-base <url>', 'API base URL', config_1.API_BASE)
|
|
@@ -47,12 +70,14 @@ exports.loginCommand = new commander_1.Command('login')
|
|
|
47
70
|
const existing = (0, credentials_1.getCredentials)();
|
|
48
71
|
if (existing) {
|
|
49
72
|
logger.success(`Already logged in as ${existing.email}`);
|
|
73
|
+
refreshEntrySkillsOnLogin();
|
|
50
74
|
logger.info('Run "gooseworks logout" first to switch accounts.');
|
|
51
75
|
return;
|
|
52
76
|
}
|
|
53
77
|
try {
|
|
54
78
|
const result = await (0, oauth_server_1.runOAuthFlow)(opts.apiBase);
|
|
55
79
|
logger.success(`Logged in as ${result.email}`);
|
|
80
|
+
refreshEntrySkillsOnLogin();
|
|
56
81
|
}
|
|
57
82
|
catch (err) {
|
|
58
83
|
const message = err instanceof Error ? err.message : 'Login failed';
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,wCAWC;AAjED,yCAAoC;AACpC,qDAAqD;AACrD,uDAAoD;AACpD,mDAAoF;AACpF,yDAAwD;AACxD,6CAAmD;AACnD,6CAAoD;AACpD,wDAA0C;AAC1C,sCAAqC;AAErC;;;;;;GAMG;AACH,SAAS,yBAAyB;IAChC,IAAI,CAAC,IAAA,8BAAkB,GAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO;IACzD,MAAM,OAAO,GAAG,IAAA,qCAAyB,EAAC,IAAA,6BAAc,GAAE,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,CAAC,OAAO,CAAC,qBAAqB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,IAAA,yBAAgB,EAAC,QAAQ,CAAC;QAAE,IAAA,wBAAe,GAAE,CAAC;AACpD,CAAC;AAEY,QAAA,YAAY,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,kBAAkB,EAAE,cAAc,EAAE,iBAAQ,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,CAAC,wBAAwB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,yBAAyB,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAY,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,yBAAyB,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,UAAkB,iBAAQ;IAC7D,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAY,EAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAA,4BAAc,GAAE,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orthogonal.d.ts","sourceRoot":"","sources":["../../src/commands/orthogonal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EpC,eAAO,MAAM,iBAAiB,SAGJ,CAAC"}
|