fridayy 1.2.1 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -3
- package/dist/adapters/laravel/adapter.d.ts +21 -0
- package/dist/adapters/laravel/adapter.d.ts.map +1 -0
- package/dist/adapters/laravel/adapter.js +130 -0
- package/dist/adapters/laravel/adapter.js.map +1 -0
- package/dist/adapters/laravel/route-scanner.d.ts +39 -0
- package/dist/adapters/laravel/route-scanner.d.ts.map +1 -0
- package/dist/adapters/laravel/route-scanner.js +238 -0
- package/dist/adapters/laravel/route-scanner.js.map +1 -0
- package/dist/adapters/manual/adapter.d.ts.map +1 -1
- package/dist/adapters/manual/adapter.js +2 -5
- package/dist/adapters/manual/adapter.js.map +1 -1
- package/dist/adapters/nodejs/adapter.d.ts.map +1 -1
- package/dist/adapters/nodejs/adapter.js +2 -5
- package/dist/adapters/nodejs/adapter.js.map +1 -1
- package/dist/adapters/openapi/adapter.d.ts.map +1 -1
- package/dist/adapters/openapi/adapter.js +2 -5
- package/dist/adapters/openapi/adapter.js.map +1 -1
- package/dist/adapters/openapi/request-builder.d.ts +20 -1
- package/dist/adapters/openapi/request-builder.d.ts.map +1 -1
- package/dist/adapters/openapi/request-builder.js +32 -0
- package/dist/adapters/openapi/request-builder.js.map +1 -1
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +2 -0
- package/dist/adapters/registry.js.map +1 -1
- package/dist/adapters/rest/adapter.d.ts.map +1 -1
- package/dist/adapters/rest/adapter.js +10 -10
- package/dist/adapters/rest/adapter.js.map +1 -1
- package/dist/adapters/rest/executor.d.ts.map +1 -1
- package/dist/adapters/rest/executor.js +1 -2
- package/dist/adapters/rest/executor.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +27 -3
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +61 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +8 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/review.d.ts.map +1 -1
- package/dist/cli/commands/review.js +25 -0
- package/dist/cli/commands/review.js.map +1 -1
- package/dist/cli/commands/secrets.d.ts +9 -0
- package/dist/cli/commands/secrets.d.ts.map +1 -0
- package/dist/cli/commands/secrets.js +50 -0
- package/dist/cli/commands/secrets.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +14 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +34 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui/banner.d.ts.map +1 -1
- package/dist/cli/ui/banner.js +2 -1
- package/dist/cli/ui/banner.js.map +1 -1
- package/dist/config/credentials-store.d.ts +24 -0
- package/dist/config/credentials-store.d.ts.map +1 -0
- package/dist/config/credentials-store.js +73 -0
- package/dist/config/credentials-store.js.map +1 -0
- package/dist/config/global-dir.d.ts +21 -0
- package/dist/config/global-dir.d.ts.map +1 -0
- package/dist/config/global-dir.js +34 -0
- package/dist/config/global-dir.js.map +1 -0
- package/dist/config/package-info.d.ts +8 -0
- package/dist/config/package-info.d.ts.map +1 -0
- package/dist/config/package-info.js +27 -0
- package/dist/config/package-info.js.map +1 -0
- package/dist/core/authentication/secret-resolver.d.ts +11 -2
- package/dist/core/authentication/secret-resolver.d.ts.map +1 -1
- package/dist/core/authentication/secret-resolver.js +18 -3
- package/dist/core/authentication/secret-resolver.js.map +1 -1
- package/dist/core/discovery/project-scanner.d.ts +1 -0
- package/dist/core/discovery/project-scanner.d.ts.map +1 -1
- package/dist/core/discovery/project-scanner.js +31 -1
- package/dist/core/discovery/project-scanner.js.map +1 -1
- package/dist/core/permissions/classifier.js +3 -3
- package/dist/core/permissions/classifier.js.map +1 -1
- package/dist/core/permissions/enforcer.d.ts +10 -0
- package/dist/core/permissions/enforcer.d.ts.map +1 -1
- package/dist/core/permissions/enforcer.js +22 -2
- package/dist/core/permissions/enforcer.js.map +1 -1
- package/dist/core/schema/types.d.ts +5 -2
- package/dist/core/schema/types.d.ts.map +1 -1
- package/dist/core/validation/config-schema.d.ts +10 -5
- package/dist/core/validation/config-schema.d.ts.map +1 -1
- package/dist/core/validation/config-schema.js +3 -2
- package/dist/core/validation/config-schema.js.map +1 -1
- package/dist/mcp/server/fridayy-server.d.ts +23 -1
- package/dist/mcp/server/fridayy-server.d.ts.map +1 -1
- package/dist/mcp/server/fridayy-server.js +87 -26
- package/dist/mcp/server/fridayy-server.js.map +1 -1
- package/dist/mcp/tools/tool-annotations.d.ts +21 -0
- package/dist/mcp/tools/tool-annotations.d.ts.map +1 -0
- package/dist/mcp/tools/tool-annotations.js +29 -0
- package/dist/mcp/tools/tool-annotations.js.map +1 -0
- package/dist/mcp/tools/tool-handler.d.ts.map +1 -1
- package/dist/mcp/tools/tool-handler.js +35 -0
- package/dist/mcp/tools/tool-handler.js.map +1 -1
- package/dist/security/audit-logger.d.ts.map +1 -1
- package/dist/security/audit-logger.js +4 -1
- package/dist/security/audit-logger.js.map +1 -1
- package/dist/security/sanitizer.d.ts.map +1 -1
- package/dist/security/sanitizer.js +26 -5
- package/dist/security/sanitizer.js.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;SACnE,MAAM,CAAC,aAAa,EAAE,uCAAuC,CAAC;SAC9D,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;SACvC,MAAM,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F5D"}
|
|
@@ -34,18 +34,21 @@ export function registerReviewCommand(program) {
|
|
|
34
34
|
const count = defaultConfigManager.bulkUpdateStatus(() => true, 'APPROVED', rootDir);
|
|
35
35
|
logger.success(`Approved all ${chalk.bold(count)} tools.`);
|
|
36
36
|
printToolsSummary(defaultConfigManager.loadTools(rootDir));
|
|
37
|
+
printRestartReminder();
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
40
|
if (options.approveRead) {
|
|
40
41
|
const count = defaultConfigManager.bulkUpdateStatus(t => t.permissions.type === 'READ', 'APPROVED', rootDir);
|
|
41
42
|
logger.success(`Approved all ${chalk.bold(count)} READ tools.`);
|
|
42
43
|
printToolsSummary(defaultConfigManager.loadTools(rootDir));
|
|
44
|
+
printRestartReminder();
|
|
43
45
|
return;
|
|
44
46
|
}
|
|
45
47
|
if (options.approve) {
|
|
46
48
|
const ok = defaultConfigManager.updateToolStatus(options.approve, 'APPROVED', rootDir);
|
|
47
49
|
if (ok) {
|
|
48
50
|
logger.success(`Approved tool "${chalk.bold(options.approve)}".`);
|
|
51
|
+
printRestartReminder();
|
|
49
52
|
}
|
|
50
53
|
else {
|
|
51
54
|
logger.error(`Tool "${options.approve}" not found.`);
|
|
@@ -56,6 +59,7 @@ export function registerReviewCommand(program) {
|
|
|
56
59
|
const ok = defaultConfigManager.updateToolStatus(options.reject, 'REJECTED', rootDir);
|
|
57
60
|
if (ok) {
|
|
58
61
|
logger.success(`Rejected tool "${chalk.bold(options.reject)}".`);
|
|
62
|
+
printRestartReminder();
|
|
59
63
|
}
|
|
60
64
|
else {
|
|
61
65
|
logger.error(`Tool "${options.reject}" not found.`);
|
|
@@ -66,6 +70,7 @@ export function registerReviewCommand(program) {
|
|
|
66
70
|
const ok = defaultConfigManager.updateToolStatus(options.block, 'BLOCKED', rootDir);
|
|
67
71
|
if (ok) {
|
|
68
72
|
logger.success(`Blocked tool "${chalk.bold(options.block)}".`);
|
|
73
|
+
printRestartReminder();
|
|
69
74
|
}
|
|
70
75
|
else {
|
|
71
76
|
logger.error(`Tool "${options.block}" not found.`);
|
|
@@ -87,6 +92,19 @@ export function registerReviewCommand(program) {
|
|
|
87
92
|
}
|
|
88
93
|
});
|
|
89
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* fridayy review only writes to fridayy.tools.json on disk — there is no file
|
|
97
|
+
* watching or MCP `notifications/tools/list_changed` support (a server loads
|
|
98
|
+
* its tool list once, at startup). Without this, a user who runs
|
|
99
|
+
* `fridayy review --approve-all` while a server is already running sees a
|
|
100
|
+
* success message and reasonably assumes the change is now live; it silently
|
|
101
|
+
* is not, and the tool keeps failing with a PENDING/BLOCKED error until the
|
|
102
|
+
* server is restarted.
|
|
103
|
+
*/
|
|
104
|
+
function printRestartReminder() {
|
|
105
|
+
console.log(chalk.yellow('\n⚠ This only updates fridayy.tools.json on disk. If a server is already running (`fridayy start`), ' +
|
|
106
|
+
'restart it for this change to take effect — approvals are not applied live.'));
|
|
107
|
+
}
|
|
90
108
|
function printToolsSummary(tools) {
|
|
91
109
|
console.log(chalk.bold('\nCurrent Tools Review Status:\n'));
|
|
92
110
|
for (const tool of tools) {
|
|
@@ -121,12 +139,15 @@ async function runInteractiveReview(tools, rootDir) {
|
|
|
121
139
|
if (action === 'approve-read') {
|
|
122
140
|
const count = defaultConfigManager.bulkUpdateStatus(t => t.permissions.type === 'READ', 'APPROVED', rootDir);
|
|
123
141
|
logger.success(`Approved ${count} READ tools.`);
|
|
142
|
+
printRestartReminder();
|
|
124
143
|
}
|
|
125
144
|
else if (action === 'approve-all') {
|
|
126
145
|
const count = defaultConfigManager.bulkUpdateStatus(() => true, 'APPROVED', rootDir);
|
|
127
146
|
logger.success(`Approved all ${count} tools.`);
|
|
147
|
+
printRestartReminder();
|
|
128
148
|
}
|
|
129
149
|
else if (action === 'individual') {
|
|
150
|
+
let changedCount = 0;
|
|
130
151
|
for (const tool of tools) {
|
|
131
152
|
const choice = await select({
|
|
132
153
|
message: `Tool "${tool.name}" [${tool.permissions.type}] (${tool.source.method || ''} ${tool.source.path || ''})`,
|
|
@@ -139,9 +160,13 @@ async function runInteractiveReview(tools, rootDir) {
|
|
|
139
160
|
});
|
|
140
161
|
if (choice !== 'KEEP') {
|
|
141
162
|
defaultConfigManager.updateToolStatus(tool.name, choice, rootDir);
|
|
163
|
+
changedCount++;
|
|
142
164
|
}
|
|
143
165
|
}
|
|
144
166
|
logger.success('Individual review completed.');
|
|
167
|
+
if (changedCount > 0) {
|
|
168
|
+
printRestartReminder();
|
|
169
|
+
}
|
|
145
170
|
}
|
|
146
171
|
}
|
|
147
172
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/cli/commands/review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,eAAe,EAAE,qDAAqD,CAAC;SAC9E,MAAM,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;SACvD,MAAM,CAAC,kBAAkB,EAAE,iCAAiC,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SAC3D,MAAM,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,WAAW,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE9B,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,IAAI,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACrF,MAAM,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3D,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,oBAAoB,CAAC,gBAAgB,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,EAClC,UAAU,EACV,OAAO,CACR,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAChE,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACvF,IAAI,EAAE,EAAE,CAAC;gBACP,MAAM,CAAC,OAAO,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/cli/commands/review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Secrets Command
|
|
3
|
+
* Manages the global, per-device credentials store (see config/credentials-store.ts)
|
|
4
|
+
* so an API key can be configured once on a machine and reused by every Fridayy
|
|
5
|
+
* project there, instead of being duplicated in plaintext per-project config files.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare function registerSecretsCommand(program: Command): void;
|
|
9
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6C7D"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Secrets Command
|
|
3
|
+
* Manages the global, per-device credentials store (see config/credentials-store.ts)
|
|
4
|
+
* so an API key can be configured once on a machine and reused by every Fridayy
|
|
5
|
+
* project there, instead of being duplicated in plaintext per-project config files.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { defaultCredentialsStore } from '../../config/credentials-store.js';
|
|
9
|
+
import { logger } from '../ui/logger.js';
|
|
10
|
+
export function registerSecretsCommand(program) {
|
|
11
|
+
const secretsCmd = program
|
|
12
|
+
.command('secrets')
|
|
13
|
+
.description('Manage the global per-device credentials store');
|
|
14
|
+
secretsCmd
|
|
15
|
+
.command('set <name> <value>')
|
|
16
|
+
.description('Store a secret (e.g. FRIDAYY_API_KEY) in the global credentials store for this device')
|
|
17
|
+
.action((name, value) => {
|
|
18
|
+
defaultCredentialsStore.set(name, value);
|
|
19
|
+
logger.success(`Stored secret ${chalk.cyan(name)} in ${chalk.gray(defaultCredentialsStore.getPath())}`);
|
|
20
|
+
console.log(chalk.gray(' Any project on this device can now resolve this secret via envKey / auth scheme name, ' +
|
|
21
|
+
'without storing it in fridayy.config.json.'));
|
|
22
|
+
});
|
|
23
|
+
secretsCmd
|
|
24
|
+
.command('list')
|
|
25
|
+
.description('List the names of secrets stored in the global credentials store (values are not shown)')
|
|
26
|
+
.action(() => {
|
|
27
|
+
const names = defaultCredentialsStore.list();
|
|
28
|
+
if (names.length === 0) {
|
|
29
|
+
console.log(chalk.gray(`No secrets stored in ${defaultCredentialsStore.getPath()}`));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.log(chalk.bold(`Secrets in ${defaultCredentialsStore.getPath()}:\n`));
|
|
33
|
+
for (const name of names) {
|
|
34
|
+
console.log(` - ${name}`);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
secretsCmd
|
|
38
|
+
.command('remove <name>')
|
|
39
|
+
.description('Remove a secret from the global credentials store')
|
|
40
|
+
.action((name) => {
|
|
41
|
+
const removed = defaultCredentialsStore.remove(name);
|
|
42
|
+
if (removed) {
|
|
43
|
+
logger.success(`Removed secret ${chalk.cyan(name)}`);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
logger.error(`No secret named "${name}" found.`);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../../src/cli/commands/secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,UAAU,GAAG,OAAO;SACvB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,gDAAgD,CAAC,CAAC;IAEjE,UAAU;SACP,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,uFAAuF,CAAC;SACpG,MAAM,CAAC,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QACtC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxG,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,0FAA0F;YACxF,4CAA4C,CAC/C,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yFAAyF,CAAC;SACtG,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,UAAU;SACP,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;QACvB,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8F3D"}
|
|
@@ -16,6 +16,7 @@ export function registerStartCommand(program) {
|
|
|
16
16
|
.option('-p, --port <port>', 'Port number for SSE transport', '3000')
|
|
17
17
|
.option('-h, --host <host>', 'Host address for SSE transport', 'localhost')
|
|
18
18
|
.option('--no-animation', 'Skip startup animation')
|
|
19
|
+
.option('--allow-insecure', 'Allow starting the SSE transport on a non-loopback host without an API key (not recommended)')
|
|
19
20
|
.action(async (options) => {
|
|
20
21
|
const rootDir = process.cwd();
|
|
21
22
|
if (!defaultConfigManager.configExists(rootDir)) {
|
|
@@ -44,12 +45,24 @@ export function registerStartCommand(program) {
|
|
|
44
45
|
if (transport === 'sse') {
|
|
45
46
|
const port = parseInt(options.port || String(config.server?.port || 3000), 10);
|
|
46
47
|
const host = options.host || config.server?.host || 'localhost';
|
|
48
|
+
const isLoopback = ['localhost', '127.0.0.1', '::1'].includes(host);
|
|
49
|
+
const apiKeyEnvVar = config.server?.apiKeyEnvVar || 'FRIDAYY_SERVER_API_KEY';
|
|
50
|
+
const apiKey = process.env[apiKeyEnvVar];
|
|
51
|
+
if (!isLoopback && !apiKey && !options.allowInsecure) {
|
|
52
|
+
console.error(chalk.red(`✖ Refusing to start SSE transport on non-loopback host "${host}" without an API key.`));
|
|
53
|
+
console.error(chalk.yellow(` Set the ${apiKeyEnvVar} environment variable (or config.server.apiKeyEnvVar) to require ` +
|
|
54
|
+
`an API key for every request, or pass --allow-insecure to start anyway (not recommended).`));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
if (!apiKey) {
|
|
58
|
+
console.log(chalk.yellow(`⚠ No API key configured (${apiKeyEnvVar}). Anyone who can reach this host/port can invoke your approved tools.`));
|
|
59
|
+
}
|
|
47
60
|
console.log(chalk.green(`✓ Fridayy MCP Server (SSE) running at http://${host}:${port}`));
|
|
48
61
|
console.log(chalk.cyan(` - SSE Endpoint: http://${host}:${port}/sse`));
|
|
49
62
|
console.log(chalk.cyan(` - Messages Post: http://${host}:${port}/messages`));
|
|
50
63
|
console.log(chalk.cyan(` - Health Check: http://${host}:${port}/health`));
|
|
51
64
|
console.log(`\nExposing ${chalk.bold.green(exposedTools.length)} approved tools to MCP clients.\n`);
|
|
52
|
-
await server.startSse(port, host);
|
|
65
|
+
await server.startSse(port, host, apiKey);
|
|
53
66
|
}
|
|
54
67
|
else {
|
|
55
68
|
// Stdio transport: Logs go to stderr to keep stdout pristine for JSON-RPC messages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,wBAAwB,EAAE,mCAAmC,EAAE,OAAO,CAAC;SAC9E,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,MAAM,CAAC;SACpE,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,WAAW,CAAC;SAC1E,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE9B,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;YAClC,MAAM;YACN,KAAK;YACL,eAAe,EAAE,sBAAsB;SACxC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,eAAe,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,OAAO,CAAC;QAE3E,IAAI,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAChD,WAAW,EAAE,CAAC;YACd,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,mBAAmB,EAAE,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,MAAM,CAAC,gFAAgF,CAAC,CAC/F,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC,CAAC;QACzH,CAAC;QAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,SAAS,IAAI,OAAO,CAmCnC;AAED,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* Fridayy - Universal Application-to-MCP Platform CLI
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from 'commander';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import fs from 'node:fs';
|
|
6
8
|
import { registerInitCommand } from './commands/init.js';
|
|
7
9
|
import { registerScanCommand } from './commands/scan.js';
|
|
8
10
|
import { registerGenerateCommand } from './commands/generate.js';
|
|
@@ -10,16 +12,18 @@ import { registerReviewCommand } from './commands/review.js';
|
|
|
10
12
|
import { registerStartCommand } from './commands/start.js';
|
|
11
13
|
import { registerToolsCommand } from './commands/tools.js';
|
|
12
14
|
import { registerConfigCommand } from './commands/config.js';
|
|
15
|
+
import { registerSecretsCommand } from './commands/secrets.js';
|
|
13
16
|
import { registerDoctorCommand } from './commands/doctor.js';
|
|
14
17
|
import { registerUseCommand } from './commands/use.js';
|
|
15
18
|
import { printBanner } from './ui/banner.js';
|
|
16
19
|
import { runStartupAnimation } from './ui/startup-animation.js';
|
|
20
|
+
import { getPackageVersion } from '../config/package-info.js';
|
|
17
21
|
export function createCli() {
|
|
18
22
|
const program = new Command();
|
|
19
23
|
program
|
|
20
24
|
.name('fridayy')
|
|
21
25
|
.description('Universal Application-to-MCP Platform — Turn existing APIs into AI-ready MCP tools')
|
|
22
|
-
.version(
|
|
26
|
+
.version(getPackageVersion())
|
|
23
27
|
.action(async () => {
|
|
24
28
|
printBanner();
|
|
25
29
|
await runStartupAnimation();
|
|
@@ -31,6 +35,7 @@ export function createCli() {
|
|
|
31
35
|
console.log(' fridayy review → Review and approve tools');
|
|
32
36
|
console.log(' fridayy start → Start the MCP server');
|
|
33
37
|
console.log(' fridayy tools → List all tools and statuses');
|
|
38
|
+
console.log(' fridayy secrets → Manage the global per-device credentials store');
|
|
34
39
|
console.log(' fridayy doctor → Run diagnostics and health check\n');
|
|
35
40
|
});
|
|
36
41
|
// Register subcommands
|
|
@@ -42,6 +47,7 @@ export function createCli() {
|
|
|
42
47
|
registerStartCommand(program);
|
|
43
48
|
registerToolsCommand(program);
|
|
44
49
|
registerConfigCommand(program);
|
|
50
|
+
registerSecretsCommand(program);
|
|
45
51
|
registerDoctorCommand(program);
|
|
46
52
|
return program;
|
|
47
53
|
}
|
|
@@ -49,8 +55,33 @@ export async function run() {
|
|
|
49
55
|
const program = createCli();
|
|
50
56
|
await program.parseAsync(process.argv);
|
|
51
57
|
}
|
|
52
|
-
// If directly executed
|
|
53
|
-
|
|
58
|
+
// If directly executed. Compares *resolved* (symlink-following) filesystem
|
|
59
|
+
// paths, via fs.realpathSync + fileURLToPath, rather than raw URL/argv
|
|
60
|
+
// strings or an `endsWith(...)` heuristic.
|
|
61
|
+
//
|
|
62
|
+
// Both matter: a plain path.resolve() comparison breaks on Windows, where
|
|
63
|
+
// import.meta.url and argv[1] differ in separator style and percent-encoding.
|
|
64
|
+
// And an `endsWith('fridayy')` fallback is actively dangerous — `npm install
|
|
65
|
+
// -g` creates the CLI's bin entry as a symlink literally named `fridayy` (no
|
|
66
|
+
// extension), so process.argv[1] for every real installed invocation matches
|
|
67
|
+
// that heuristic. That made this module think it was run directly and call
|
|
68
|
+
// run() during bin/fridayy.js's `import`, which then calls run() again itself
|
|
69
|
+
// — every command executed twice for every user who installed the package,
|
|
70
|
+
// while `node bin/fridayy.js` and `tsx src/cli/index.ts` in local dev never
|
|
71
|
+
// triggered it. realpath comparison has no such false positive: the installed
|
|
72
|
+
// symlink resolves to bin/fridayy.js, not to this file.
|
|
73
|
+
const isDirectlyExecuted = (() => {
|
|
74
|
+
const entry = process.argv[1];
|
|
75
|
+
if (!entry)
|
|
76
|
+
return false;
|
|
77
|
+
try {
|
|
78
|
+
return fs.realpathSync(fileURLToPath(import.meta.url)) === fs.realpathSync(entry);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
})();
|
|
84
|
+
if (isDirectlyExecuted) {
|
|
54
85
|
run().catch((err) => {
|
|
55
86
|
console.error('Fatal error:', err);
|
|
56
87
|
process.exit(1);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,wBAAgB,SAAS,IAAI,MAAM,CAgBlC;AAID,wBAAgB,WAAW,CAAC,KAAK,UAAQ,GAAG,IAAI,CAK/C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
package/dist/cli/ui/banner.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Exact layout and styling matching Fridayy design specifications.
|
|
4
4
|
*/
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
+
import { getPackageVersion } from '../../config/package-info.js';
|
|
6
7
|
export function getBanner() {
|
|
7
8
|
const line1 = chalk.bold.white(' ███████╗██████╗ ██╗██████╗ █████╗ ██╗ ██╗██╗ ██╗');
|
|
8
9
|
const line2 = chalk.bold.white(' ██╔════╝██╔══██╗██║██╔══██╗██╔══██╗╚██╗ ██╔╝╚██╗ ██╔╝');
|
|
@@ -13,7 +14,7 @@ export function getBanner() {
|
|
|
13
14
|
const logo = `\n${line1}\n${line2}\n${line3}\n${line4}\n${line5}\n${line6}\n`;
|
|
14
15
|
const authorSub = chalk.gray(' sabarivasan\n');
|
|
15
16
|
const tagline = chalk.bold.white(' Universal Application-to-MCP Platform – Turn existing APIs into AI tools\n');
|
|
16
|
-
const badges = ` ${chalk.cyan.bold(
|
|
17
|
+
const badges = ` ${chalk.cyan.bold(`v${getPackageVersion()}`)} ${chalk.bgHex('#5e17eb').white.bold(' MCP Standard ')} ${chalk.gray('•')} ${chalk.yellow('⚡')} Developed with ${chalk.red('❤️')} by ${chalk.hex('#00f5d4').bold('Sabarivasan')}\n`;
|
|
17
18
|
const repo = ` ${chalk.gray('Repository:')} ${chalk.underline.hex('#00d2ff')('https://github.com/Sabari-Vasan-SM/fridayy')}\n`;
|
|
18
19
|
return `${logo}${authorSub}${tagline}${badges}${repo}`;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAE1F,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;IAE9E,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;IAClH,MAAM,MAAM,GAAG,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC/P,MAAM,IAAI,GAAG,oBAAoB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,4CAA4C,CAAC,IAAI,CAAC;IAE/I,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,KAAK;IACvC,IAAI,CAAC,aAAa,IAAI,KAAK,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACzB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,aAAa,GAAG,KAAK,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Global Credentials Store
|
|
3
|
+
* Reads/writes a per-user credentials file (see global-dir.ts) so secrets can be
|
|
4
|
+
* configured once per device and reused across every Fridayy project, instead of
|
|
5
|
+
* being duplicated in plaintext inside per-project fridayy.config.json files.
|
|
6
|
+
*
|
|
7
|
+
* This is a plain JSON file, not an OS keychain — it is restricted to the
|
|
8
|
+
* current user via filesystem permissions (chmod 600 on POSIX) but is not
|
|
9
|
+
* encrypted at rest. Prefer real environment variables / a secrets manager for
|
|
10
|
+
* production deployments.
|
|
11
|
+
*/
|
|
12
|
+
export type CredentialsMap = Record<string, string>;
|
|
13
|
+
export declare class CredentialsStore {
|
|
14
|
+
private readonly filePath;
|
|
15
|
+
constructor(filePath?: string);
|
|
16
|
+
getPath(): string;
|
|
17
|
+
load(): CredentialsMap;
|
|
18
|
+
get(key: string): string | undefined;
|
|
19
|
+
set(key: string, value: string): void;
|
|
20
|
+
remove(key: string): boolean;
|
|
21
|
+
list(): string[];
|
|
22
|
+
}
|
|
23
|
+
export declare const defaultCredentialsStore: CredentialsStore;
|
|
24
|
+
//# sourceMappingURL=credentials-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials-store.d.ts","sourceRoot":"","sources":["../../src/config/credentials-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,MAAmC;IAEnE,OAAO,IAAI,MAAM;IAIjB,IAAI,IAAI,cAAc;IAetB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBrC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAU5B,IAAI,IAAI,MAAM,EAAE;CAGxB;AAED,eAAO,MAAM,uBAAuB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Global Credentials Store
|
|
3
|
+
* Reads/writes a per-user credentials file (see global-dir.ts) so secrets can be
|
|
4
|
+
* configured once per device and reused across every Fridayy project, instead of
|
|
5
|
+
* being duplicated in plaintext inside per-project fridayy.config.json files.
|
|
6
|
+
*
|
|
7
|
+
* This is a plain JSON file, not an OS keychain — it is restricted to the
|
|
8
|
+
* current user via filesystem permissions (chmod 600 on POSIX) but is not
|
|
9
|
+
* encrypted at rest. Prefer real environment variables / a secrets manager for
|
|
10
|
+
* production deployments.
|
|
11
|
+
*/
|
|
12
|
+
import fs from 'node:fs';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
import { getGlobalCredentialsPath } from './global-dir.js';
|
|
15
|
+
export class CredentialsStore {
|
|
16
|
+
filePath;
|
|
17
|
+
constructor(filePath = getGlobalCredentialsPath()) {
|
|
18
|
+
this.filePath = filePath;
|
|
19
|
+
}
|
|
20
|
+
getPath() {
|
|
21
|
+
return this.filePath;
|
|
22
|
+
}
|
|
23
|
+
load() {
|
|
24
|
+
if (!fs.existsSync(this.filePath)) {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const raw = fs.readFileSync(this.filePath, 'utf-8');
|
|
29
|
+
const parsed = JSON.parse(raw);
|
|
30
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// A corrupt or unreadable credentials file must never crash secret
|
|
34
|
+
// resolution; treat it as empty and let env vars / config still work.
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
get(key) {
|
|
39
|
+
return this.load()[key];
|
|
40
|
+
}
|
|
41
|
+
set(key, value) {
|
|
42
|
+
const dir = path.dirname(this.filePath);
|
|
43
|
+
if (!fs.existsSync(dir)) {
|
|
44
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
45
|
+
}
|
|
46
|
+
const store = this.load();
|
|
47
|
+
store[key] = value;
|
|
48
|
+
fs.writeFileSync(this.filePath, JSON.stringify(store, null, 2), { encoding: 'utf-8', mode: 0o600 });
|
|
49
|
+
// Ensure permissions are tightened even if the file already existed with
|
|
50
|
+
// looser permissions (writeFileSync's `mode` only applies when creating).
|
|
51
|
+
try {
|
|
52
|
+
fs.chmodSync(this.filePath, 0o600);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Best-effort on platforms (e.g. Windows) where POSIX chmod semantics
|
|
56
|
+
// don't apply; the directory/file are still user-scoped by their location.
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
remove(key) {
|
|
60
|
+
const store = this.load();
|
|
61
|
+
if (!(key in store)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
delete store[key];
|
|
65
|
+
fs.writeFileSync(this.filePath, JSON.stringify(store, null, 2), { encoding: 'utf-8', mode: 0o600 });
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
list() {
|
|
69
|
+
return Object.keys(this.load());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export const defaultCredentialsStore = new CredentialsStore();
|
|
73
|
+
//# sourceMappingURL=credentials-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials-store.js","sourceRoot":"","sources":["../../src/config/credentials-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,WAAmB,wBAAwB,EAAE;QAA7C,aAAQ,GAAR,QAAQ,CAAqC;IAAG,CAAC;IAEvE,OAAO;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;YACnE,sEAAsE;YACtE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,KAAa;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpG,yEAAyE;QACzE,0EAA0E;QAC1E,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,2EAA2E;QAC7E,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,GAAW;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,IAAI;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Cross-Platform Global Directory Resolver
|
|
3
|
+
* Resolves an OS-appropriate, per-user directory for Fridayy state that should
|
|
4
|
+
* be shared across projects on the same machine (e.g. credentials), following
|
|
5
|
+
* each platform's own convention instead of assuming a POSIX-style home layout.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Returns the OS-appropriate root directory for per-user application config:
|
|
9
|
+
* - Windows: %APPDATA% (falls back to <home>/AppData/Roaming)
|
|
10
|
+
* - macOS: <home>/Library/Application Support
|
|
11
|
+
* - Linux/other: $XDG_CONFIG_HOME (falls back to <home>/.config)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getGlobalConfigDir(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Path to the global credentials store shared across every Fridayy project on
|
|
16
|
+
* this device. Intended as a safer alternative to embedding `auth.*.value`
|
|
17
|
+
* secrets directly inside a per-project fridayy.config.json (which is easy to
|
|
18
|
+
* accidentally commit to source control).
|
|
19
|
+
*/
|
|
20
|
+
export declare function getGlobalCredentialsPath(): string;
|
|
21
|
+
//# sourceMappingURL=global-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-dir.d.ts","sourceRoot":"","sources":["../../src/config/global-dir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAY3C;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Cross-Platform Global Directory Resolver
|
|
3
|
+
* Resolves an OS-appropriate, per-user directory for Fridayy state that should
|
|
4
|
+
* be shared across projects on the same machine (e.g. credentials), following
|
|
5
|
+
* each platform's own convention instead of assuming a POSIX-style home layout.
|
|
6
|
+
*/
|
|
7
|
+
import os from 'node:os';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
/**
|
|
10
|
+
* Returns the OS-appropriate root directory for per-user application config:
|
|
11
|
+
* - Windows: %APPDATA% (falls back to <home>/AppData/Roaming)
|
|
12
|
+
* - macOS: <home>/Library/Application Support
|
|
13
|
+
* - Linux/other: $XDG_CONFIG_HOME (falls back to <home>/.config)
|
|
14
|
+
*/
|
|
15
|
+
export function getGlobalConfigDir() {
|
|
16
|
+
const home = os.homedir();
|
|
17
|
+
if (process.platform === 'win32') {
|
|
18
|
+
return path.join(process.env.APPDATA || path.join(home, 'AppData', 'Roaming'), 'fridayy');
|
|
19
|
+
}
|
|
20
|
+
if (process.platform === 'darwin') {
|
|
21
|
+
return path.join(home, 'Library', 'Application Support', 'fridayy');
|
|
22
|
+
}
|
|
23
|
+
return path.join(process.env.XDG_CONFIG_HOME || path.join(home, '.config'), 'fridayy');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Path to the global credentials store shared across every Fridayy project on
|
|
27
|
+
* this device. Intended as a safer alternative to embedding `auth.*.value`
|
|
28
|
+
* secrets directly inside a per-project fridayy.config.json (which is easy to
|
|
29
|
+
* accidentally commit to source control).
|
|
30
|
+
*/
|
|
31
|
+
export function getGlobalCredentialsPath() {
|
|
32
|
+
return path.join(getGlobalConfigDir(), 'credentials.json');
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=global-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-dir.js","sourceRoot":"","sources":["../../src/config/global-dir.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE1B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Package Metadata Reader
|
|
3
|
+
* Reads the CLI's own version from package.json at runtime, so the version
|
|
4
|
+
* displayed by `--version` and the banner can never drift out of sync with a
|
|
5
|
+
* hardcoded string left behind after a release bump.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getPackageVersion(): string;
|
|
8
|
+
//# sourceMappingURL=package-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-info.d.ts","sourceRoot":"","sources":["../../src/config/package-info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,wBAAgB,iBAAiB,IAAI,MAAM,CAgB1C"}
|