@flytedesk/app-kit 4.0.0 → 6.0.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/dist/auth/plugin.js +22 -2
- package/dist/auth/plugin.js.map +1 -1
- package/dist/auth/testing/fake-idp.d.ts +9 -0
- package/dist/auth/testing/fake-idp.js +33 -5
- package/dist/auth/testing/fake-idp.js.map +1 -1
- package/dist/bigquery/client.d.ts +4 -4
- package/dist/bigquery/client.js +2 -2
- package/dist/bigquery/client.js.map +1 -1
- package/dist/bigquery/errors.d.ts +19 -0
- package/dist/bigquery/errors.js +41 -0
- package/dist/bigquery/errors.js.map +1 -1
- package/dist/bigquery/index.d.ts +3 -3
- package/dist/bigquery/index.js +1 -1
- package/dist/bigquery/index.js.map +1 -1
- package/dist/bigquery/load.d.ts +25 -7
- package/dist/bigquery/load.js +61 -31
- package/dist/bigquery/load.js.map +1 -1
- package/dist/bigquery/query.js +14 -1
- package/dist/bigquery/query.js.map +1 -1
- package/dist/bigquery/schema.d.ts +5 -0
- package/dist/bigquery/schema.js +35 -0
- package/dist/bigquery/schema.js.map +1 -0
- package/dist/bigquery/types.d.ts +57 -17
- package/dist/chat/index.d.ts +52 -21
- package/dist/chat/index.js +50 -20
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/mcp/entry.d.ts +37 -0
- package/dist/chat/mcp/entry.js +135 -0
- package/dist/chat/mcp/entry.js.map +1 -0
- package/dist/cli/is-running-as-main.d.ts +1 -0
- package/dist/cli/is-running-as-main.js +54 -0
- package/dist/cli/is-running-as-main.js.map +1 -0
- package/dist/cli/sync-engine.d.ts +1 -32
- package/dist/cli/sync-engine.js +7 -45
- package/dist/cli/sync-engine.js.map +1 -1
- package/dist/flags/evaluate.d.ts +43 -0
- package/dist/flags/evaluate.js +64 -0
- package/dist/flags/evaluate.js.map +1 -0
- package/dist/flags/index.d.ts +22 -6
- package/dist/flags/index.js +21 -6
- package/dist/flags/index.js.map +1 -1
- package/dist/flags/plugin.js +73 -7
- package/dist/flags/plugin.js.map +1 -1
- package/dist/flags/types.d.ts +25 -0
- package/package.json +3 -2
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* app-kit-chat-mcp (AK-34) — a runnable stdio entry point for
|
|
4
|
+
* `@flytedesk/app-kit/chat`'s MCP server, so a consuming app's
|
|
5
|
+
* `.danxbot/config/mcp-servers/*.yml` can launch a real chat MCP server without
|
|
6
|
+
* vendoring a copy of `mcp-protocol.js`/`mcp-server.js` into its own repo.
|
|
7
|
+
*
|
|
8
|
+
* ## Launch form
|
|
9
|
+
*
|
|
10
|
+
* This package publishes FIVE bins and none is named `app-kit`, so npx needs
|
|
11
|
+
* `--package=` to say which package to fetch (separate from which bin to run):
|
|
12
|
+
*
|
|
13
|
+
* npx -y --package=@flytedesk/app-kit@<v> app-kit-chat-mcp --tools <abs path>
|
|
14
|
+
*
|
|
15
|
+
* `npx -y @flytedesk/app-kit@<v> app-kit-chat-mcp` (no `--package=`) fails —
|
|
16
|
+
* verified against a real `npm pack` tarball run via `npx --package=<tgz>` from a
|
|
17
|
+
* clean directory with no `node_modules` (see entry.test.ts's "packed via npm pack,
|
|
18
|
+
* run via npx --package" suite).
|
|
19
|
+
*
|
|
20
|
+
* `--tools <path>` is resolved against `process.cwd()`, which danxbot sets to its
|
|
21
|
+
* OWN clean-room working directory — an app's yml MUST pass a
|
|
22
|
+
* `${DANX_REPO_ROOT}`-absolute path, never a bare relative one.
|
|
23
|
+
*
|
|
24
|
+
* ## The `--tools` module — kit injection, not a package import
|
|
25
|
+
*
|
|
26
|
+
* The module must NOT `import` `@flytedesk/app-kit` itself — that cannot resolve
|
|
27
|
+
* from danxbot's unbuilt dispatch clone (no `node_modules`), and would just move the
|
|
28
|
+
* vendoring problem this card closes into "the app re-implements createReplyTool".
|
|
29
|
+
* Instead this file injects a `ChatMcpKit` (`createReplyTool`, `parseReplyArguments`,
|
|
30
|
+
* `createChatMcpProtocol` — the same values `@flytedesk/app-kit/chat` exports) as
|
|
31
|
+
* the module's one argument:
|
|
32
|
+
*
|
|
33
|
+
* export default function build(kit) {
|
|
34
|
+
* return kit.createChatMcpProtocol({
|
|
35
|
+
* serverName: "my-app-chat",
|
|
36
|
+
* tools: [kit.createReplyTool({ description: "...", deliver: postReply }), ...],
|
|
37
|
+
* });
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* The default export returns a `ChatMcpProtocol` (`{handleMessage}`), not a plain
|
|
41
|
+
* options bag, so it can wrap the built protocol before returning (e.g.
|
|
42
|
+
* media-planner's MP-169 `loggedProtocol`). A module wanting type-checking can
|
|
43
|
+
* reference the exported `BuildChatServer`/`ChatMcpKit` TYPES via a `// @ts-check`
|
|
44
|
+
* JSDoc `@type` comment — type-only, erased, resolves fine from the app's own dev
|
|
45
|
+
* environment; it must never become a value import.
|
|
46
|
+
*
|
|
47
|
+
* ## Dependency-free at runtime
|
|
48
|
+
*
|
|
49
|
+
* Node builtins + this package's own `mcp-protocol.js`/`mcp-server.js` (themselves
|
|
50
|
+
* dependency-free) + `../../cli/is-running-as-main.js` (also Node-builtins-only —
|
|
51
|
+
* deliberately not imported from `../../cli/sync-engine.js`, which pulls in
|
|
52
|
+
* `cross-spawn` for its own Prisma-shelling subcommands).
|
|
53
|
+
*/
|
|
54
|
+
import { pathToFileURL } from "node:url";
|
|
55
|
+
import { resolve as resolvePath } from "node:path";
|
|
56
|
+
import { createChatMcpProtocol, createReplyTool, parseReplyArguments, } from "../mcp-protocol.js";
|
|
57
|
+
import { createChatMcpStdioServer } from "../mcp-server.js";
|
|
58
|
+
import { isRunningAsMain } from "../../cli/is-running-as-main.js";
|
|
59
|
+
const KIT = {
|
|
60
|
+
createReplyTool,
|
|
61
|
+
parseReplyArguments,
|
|
62
|
+
createChatMcpProtocol,
|
|
63
|
+
};
|
|
64
|
+
export class ChatMcpEntryError extends Error {
|
|
65
|
+
}
|
|
66
|
+
/** Parse argv into `{toolsPath}`. Exported for direct unit testing. */
|
|
67
|
+
export function parseArgs(argv) {
|
|
68
|
+
let toolsPath;
|
|
69
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
70
|
+
const arg = argv[i];
|
|
71
|
+
if (arg === "--tools") {
|
|
72
|
+
toolsPath = argv[i + 1];
|
|
73
|
+
i += 1;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
throw new ChatMcpEntryError(`app-kit-chat-mcp: unrecognized argument "${arg}"`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (toolsPath === undefined || toolsPath === "") {
|
|
80
|
+
throw new ChatMcpEntryError("app-kit-chat-mcp: missing required --tools <absolute path to the app's tools module>");
|
|
81
|
+
}
|
|
82
|
+
return { toolsPath };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Dynamically `import()` the app's tools module and validate its default export.
|
|
86
|
+
* Exported for direct unit testing (no process spawn needed to exercise the loading
|
|
87
|
+
* and validation logic — see entry.test.ts's own split between a fast in-process
|
|
88
|
+
* suite for this function and real stdio/npx spawn suites for the whole process).
|
|
89
|
+
*/
|
|
90
|
+
export async function loadBuildChatServer(toolsPath) {
|
|
91
|
+
const absolutePath = resolvePath(process.cwd(), toolsPath);
|
|
92
|
+
let mod;
|
|
93
|
+
try {
|
|
94
|
+
mod = await import(pathToFileURL(absolutePath).href);
|
|
95
|
+
}
|
|
96
|
+
catch (cause) {
|
|
97
|
+
throw new ChatMcpEntryError(`app-kit-chat-mcp: could not load tools module "${toolsPath}" (resolved to ` +
|
|
98
|
+
`${absolutePath}): ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
99
|
+
}
|
|
100
|
+
const candidate = mod.default;
|
|
101
|
+
if (typeof candidate !== "function") {
|
|
102
|
+
throw new ChatMcpEntryError(`app-kit-chat-mcp: tools module "${toolsPath}" must have a default export that is a ` +
|
|
103
|
+
`function returning a ChatMcpProtocol; got ${typeof candidate}.`);
|
|
104
|
+
}
|
|
105
|
+
return candidate;
|
|
106
|
+
}
|
|
107
|
+
/** Run the server: load the tools module, build the protocol (via the injected
|
|
108
|
+
* kit), and start stdio. Exported for direct unit testing of argument/validation
|
|
109
|
+
* failures without a process spawn. */
|
|
110
|
+
export async function main(argv) {
|
|
111
|
+
const { toolsPath } = parseArgs(argv);
|
|
112
|
+
const buildChatServer = await loadBuildChatServer(toolsPath);
|
|
113
|
+
let protocol;
|
|
114
|
+
try {
|
|
115
|
+
protocol = await buildChatServer(KIT);
|
|
116
|
+
}
|
|
117
|
+
catch (cause) {
|
|
118
|
+
throw new ChatMcpEntryError(`app-kit-chat-mcp: tools module "${toolsPath}" threw while building its chat server: ` +
|
|
119
|
+
`${cause instanceof Error ? cause.message : String(cause)}`);
|
|
120
|
+
}
|
|
121
|
+
if (protocol === null ||
|
|
122
|
+
typeof protocol !== "object" ||
|
|
123
|
+
typeof protocol.handleMessage !== "function") {
|
|
124
|
+
throw new ChatMcpEntryError(`app-kit-chat-mcp: tools module "${toolsPath}"'s default export must return a ` +
|
|
125
|
+
`ChatMcpProtocol ({handleMessage(message)}); got ${typeof protocol}.`);
|
|
126
|
+
}
|
|
127
|
+
createChatMcpStdioServer({ protocol }).start();
|
|
128
|
+
}
|
|
129
|
+
if (isRunningAsMain(import.meta.url)) {
|
|
130
|
+
main(process.argv.slice(2)).catch((err) => {
|
|
131
|
+
console.error(err instanceof ChatMcpEntryError ? err.message : err);
|
|
132
|
+
process.exitCode = 1;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/chat/mcp/entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isRunningAsMain(moduleUrl: string): boolean;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the module at `moduleUrl` (pass `import.meta.url`) is the one Node was
|
|
3
|
+
* invoked to run directly — the ESM successor to `require.main === module`, shared
|
|
4
|
+
* by every bin wrapper (trace-sync.ts/profile-sync.ts/flags-sync.ts/spa-server/cli.ts
|
|
5
|
+
* and src/chat/mcp/entry.ts) so there's one fix point instead of N copies of the
|
|
6
|
+
* same check. Node builtins ONLY (`node:fs`, `node:url`) — importing this file never
|
|
7
|
+
* drags in anything else, which is why src/chat/mcp/entry.ts imports it directly
|
|
8
|
+
* instead of importing `isRunningAsMain` from ./sync-engine.js: that file also pulls
|
|
9
|
+
* in `cross-spawn` (for its Prisma-shelling subcommands) at module scope, which would
|
|
10
|
+
* break entry.ts's own "Node builtins + this package's own chat modules only"
|
|
11
|
+
* dependency-free bar. sync-engine.ts re-exports this same function so its existing
|
|
12
|
+
* importers (trace-sync.ts et al.) are unaffected.
|
|
13
|
+
*
|
|
14
|
+
* A raw `import.meta.url === pathToFileURL(process.argv[1]).href` string comparison
|
|
15
|
+
* (the previous check) is NOT reliable: a package manager's bin shim can leave
|
|
16
|
+
* `argv[1]` pointing at a *symlink* while Node resolves the ESM module id through
|
|
17
|
+
* that symlink to the real target path for `import.meta.url` — so the two name the
|
|
18
|
+
* same file but compare unequal. This is not hypothetical: pnpm's
|
|
19
|
+
* `node_modules/<pkg>` is exactly such a symlink into its content-addressable
|
|
20
|
+
* store, and it reproduces on Windows for every real invocation path (`pnpm exec
|
|
21
|
+
* flags-sync init`, an npm-script `"flags-sync init"` run via `pnpm run`, etc.) —
|
|
22
|
+
* confirmed by instrumenting a real 0.3.0 install: `argv[1]` resolved to
|
|
23
|
+
* `...\node_modules\@flytedesk\app-kit\dist\cli\flags-sync.js` (the symlinked
|
|
24
|
+
* path) while `import.meta.url` resolved to
|
|
25
|
+
* `...\node_modules\.pnpm\@flytedesk+app-kit@0.3.0_.../node_modules\@flytedesk\app-kit\dist\cli\flags-sync.js`
|
|
26
|
+
* (the real store path). The mismatch meant `main()` was never called at all —
|
|
27
|
+
* every CLI entrypoint silently no-op'd: exit code 0, no output, nothing written.
|
|
28
|
+
*
|
|
29
|
+
* `realpathSync.native` (the real OS `realpath` syscall, not Node's pure-JS
|
|
30
|
+
* fallback — verified directly: the JS fallback leaves an on-disk casing mismatch
|
|
31
|
+
* unresolved, e.g. `RealFile.js` vs `realfile.js` compare unequal even though NTFS
|
|
32
|
+
* treats them as the same file, while `.native` correctly normalizes both to the
|
|
33
|
+
* same canonical path) resolves both sides to the same canonical filesystem path
|
|
34
|
+
* first — following symlinks AND normalizing casing — so the comparison is correct
|
|
35
|
+
* regardless of symlinks, path-separator style, or casing differences between how
|
|
36
|
+
* a shell/bin-shim sets `argv[1]` and how Node constructs `import.meta.url` for
|
|
37
|
+
* the same file.
|
|
38
|
+
*/
|
|
39
|
+
import { realpathSync } from "node:fs";
|
|
40
|
+
import { fileURLToPath } from "node:url";
|
|
41
|
+
export function isRunningAsMain(moduleUrl) {
|
|
42
|
+
if (process.argv[1] === undefined)
|
|
43
|
+
return false;
|
|
44
|
+
try {
|
|
45
|
+
return (realpathSync.native(fileURLToPath(moduleUrl)) ===
|
|
46
|
+
realpathSync.native(process.argv[1]));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Either path doesn't exist / isn't resolvable (e.g. a REPL or a bundler that
|
|
50
|
+
// gives import.meta.url a non-file URL) — definitely not "run directly" then.
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=is-running-as-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-running-as-main.js","sourceRoot":"","sources":["../../src/cli/is-running-as-main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,CACL,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC7C,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,8EAA8E;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1,35 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Whether the module at `moduleUrl` (pass `import.meta.url`) is the one Node was
|
|
3
|
-
* invoked to run directly — the ESM successor to `require.main === module`, shared
|
|
4
|
-
* by every bin wrapper (trace-sync.ts/profile-sync.ts/flags-sync.ts) so there's one
|
|
5
|
-
* fix point instead of three copies of the same check.
|
|
6
|
-
*
|
|
7
|
-
* A raw `import.meta.url === pathToFileURL(process.argv[1]).href` string comparison
|
|
8
|
-
* (the previous check) is NOT reliable: a package manager's bin shim can leave
|
|
9
|
-
* `argv[1]` pointing at a *symlink* while Node resolves the ESM module id through
|
|
10
|
-
* that symlink to the real target path for `import.meta.url` — so the two name the
|
|
11
|
-
* same file but compare unequal. This is not hypothetical: pnpm's
|
|
12
|
-
* `node_modules/<pkg>` is exactly such a symlink into its content-addressable
|
|
13
|
-
* store, and it reproduces on Windows for every real invocation path (`pnpm exec
|
|
14
|
-
* flags-sync init`, an npm-script `"flags-sync init"` run via `pnpm run`, etc.) —
|
|
15
|
-
* confirmed by instrumenting a real 0.3.0 install: `argv[1]` resolved to
|
|
16
|
-
* `...\node_modules\@flytedesk\app-kit\dist\cli\flags-sync.js` (the symlinked
|
|
17
|
-
* path) while `import.meta.url` resolved to
|
|
18
|
-
* `...\node_modules\.pnpm\@flytedesk+app-kit@0.3.0_.../node_modules\@flytedesk\app-kit\dist\cli\flags-sync.js`
|
|
19
|
-
* (the real store path). The mismatch meant `main()` was never called at all —
|
|
20
|
-
* every CLI entrypoint silently no-op'd: exit code 0, no output, nothing written.
|
|
21
|
-
*
|
|
22
|
-
* `realpathSync.native` (the real OS `realpath` syscall, not Node's pure-JS
|
|
23
|
-
* fallback — verified directly: the JS fallback leaves an on-disk casing mismatch
|
|
24
|
-
* unresolved, e.g. `RealFile.js` vs `realfile.js` compare unequal even though NTFS
|
|
25
|
-
* treats them as the same file, while `.native` correctly normalizes both to the
|
|
26
|
-
* same canonical path) resolves both sides to the same canonical filesystem path
|
|
27
|
-
* first — following symlinks AND normalizing casing — so the comparison is correct
|
|
28
|
-
* regardless of symlinks, path-separator style, or casing differences between how
|
|
29
|
-
* a shell/bin-shim sets `argv[1]` and how Node constructs `import.meta.url` for
|
|
30
|
-
* the same file.
|
|
31
|
-
*/
|
|
32
|
-
export declare function isRunningAsMain(moduleUrl: string): boolean;
|
|
1
|
+
export { isRunningAsMain } from "./is-running-as-main.js";
|
|
33
2
|
/**
|
|
34
3
|
* Everything that differs between `trace-sync` and `profile-sync`. `name` picks out
|
|
35
4
|
* prisma/fragments/<name>.prisma, prisma/fragments/<name>.meta.json, and every
|
package/dist/cli/sync-engine.js
CHANGED
|
@@ -53,53 +53,15 @@
|
|
|
53
53
|
*/
|
|
54
54
|
import { createHash } from "node:crypto";
|
|
55
55
|
import spawn from "cross-spawn";
|
|
56
|
-
import { copyFileSync, cpSync, existsSync, mkdirSync, readFileSync,
|
|
56
|
+
import { copyFileSync, cpSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
|
|
57
57
|
import path from "node:path";
|
|
58
58
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* A raw `import.meta.url === pathToFileURL(process.argv[1]).href` string comparison
|
|
66
|
-
* (the previous check) is NOT reliable: a package manager's bin shim can leave
|
|
67
|
-
* `argv[1]` pointing at a *symlink* while Node resolves the ESM module id through
|
|
68
|
-
* that symlink to the real target path for `import.meta.url` — so the two name the
|
|
69
|
-
* same file but compare unequal. This is not hypothetical: pnpm's
|
|
70
|
-
* `node_modules/<pkg>` is exactly such a symlink into its content-addressable
|
|
71
|
-
* store, and it reproduces on Windows for every real invocation path (`pnpm exec
|
|
72
|
-
* flags-sync init`, an npm-script `"flags-sync init"` run via `pnpm run`, etc.) —
|
|
73
|
-
* confirmed by instrumenting a real 0.3.0 install: `argv[1]` resolved to
|
|
74
|
-
* `...\node_modules\@flytedesk\app-kit\dist\cli\flags-sync.js` (the symlinked
|
|
75
|
-
* path) while `import.meta.url` resolved to
|
|
76
|
-
* `...\node_modules\.pnpm\@flytedesk+app-kit@0.3.0_.../node_modules\@flytedesk\app-kit\dist\cli\flags-sync.js`
|
|
77
|
-
* (the real store path). The mismatch meant `main()` was never called at all —
|
|
78
|
-
* every CLI entrypoint silently no-op'd: exit code 0, no output, nothing written.
|
|
79
|
-
*
|
|
80
|
-
* `realpathSync.native` (the real OS `realpath` syscall, not Node's pure-JS
|
|
81
|
-
* fallback — verified directly: the JS fallback leaves an on-disk casing mismatch
|
|
82
|
-
* unresolved, e.g. `RealFile.js` vs `realfile.js` compare unequal even though NTFS
|
|
83
|
-
* treats them as the same file, while `.native` correctly normalizes both to the
|
|
84
|
-
* same canonical path) resolves both sides to the same canonical filesystem path
|
|
85
|
-
* first — following symlinks AND normalizing casing — so the comparison is correct
|
|
86
|
-
* regardless of symlinks, path-separator style, or casing differences between how
|
|
87
|
-
* a shell/bin-shim sets `argv[1]` and how Node constructs `import.meta.url` for
|
|
88
|
-
* the same file.
|
|
89
|
-
*/
|
|
90
|
-
export function isRunningAsMain(moduleUrl) {
|
|
91
|
-
if (process.argv[1] === undefined)
|
|
92
|
-
return false;
|
|
93
|
-
try {
|
|
94
|
-
return (realpathSync.native(fileURLToPath(moduleUrl)) ===
|
|
95
|
-
realpathSync.native(process.argv[1]));
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
// Either path doesn't exist / isn't resolvable (e.g. a REPL or a bundler that
|
|
99
|
-
// gives import.meta.url a non-file URL) — definitely not "run directly" then.
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
59
|
+
// Re-exported so trace-sync.ts/profile-sync.ts/flags-sync.ts keep importing it from
|
|
60
|
+
// here unchanged — the implementation (and its symlink/casing bug history) now lives
|
|
61
|
+
// in its own Node-builtins-only module because src/chat/mcp/entry.ts needs the exact
|
|
62
|
+
// same check WITHOUT this file's `cross-spawn` import coming along for the ride. See
|
|
63
|
+
// is-running-as-main.ts's own doc comment for the full contract.
|
|
64
|
+
export { isRunningAsMain } from "./is-running-as-main.js";
|
|
103
65
|
export class SyncCliError extends Error {
|
|
104
66
|
}
|
|
105
67
|
function readJson(filePath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../src/cli/sync-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../src/cli/sync-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { FlagRow } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The one caller identity `evaluateFlag` needs — deliberately not `AuthedUser`
|
|
4
|
+
* (auth/shared-types.ts) itself, so this module stays free of any dependency on
|
|
5
|
+
* `../auth`: a consumer with its own identity system (not @flytedesk/app-kit/auth)
|
|
6
|
+
* can call this evaluator too, as long as it can produce this shape. `plugin.ts`'s
|
|
7
|
+
* `GET {routePrefix}/me` route builds it from `request.authUser` (`id`, and
|
|
8
|
+
* `roles.map((r) => r.id)` — flytedesk-id role ids, matching `FlagRow.roles`).
|
|
9
|
+
*/
|
|
10
|
+
export interface FlagEvaluationUser {
|
|
11
|
+
id: string;
|
|
12
|
+
roleIds: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The single per-user flag evaluator @flytedesk/app-kit/flags owns (MP-252). Pure
|
|
16
|
+
* and synchronous — no I/O, no Fastify, no Prisma — so any consumer (the
|
|
17
|
+
* `GET {routePrefix}/me` route below, a batch job, a test) can call it directly
|
|
18
|
+
* against a `FlagRow` it already has in hand.
|
|
19
|
+
*
|
|
20
|
+
* Precedence, evaluated in this exact order (ported from media-planner's own
|
|
21
|
+
* `evaluateFlag`, which this replaces as the one evaluator — MP-222 already
|
|
22
|
+
* deleted that copy, and the design system's copy is next, PLN-2):
|
|
23
|
+
*
|
|
24
|
+
* 1. Kill switch: `!flag.enabled` -> always `false`, before anything else.
|
|
25
|
+
* 2. Per-user override: `flag.users[user.id]`, when set (`!= null`) and a user
|
|
26
|
+
* is known, wins over every other rule — the whole point of an override.
|
|
27
|
+
* 3. Role targeting: when `flag.roles` is non-empty, a `user` holding one of
|
|
28
|
+
* those roles gets `true`. Anyone else (a non-matching user, or no user at
|
|
29
|
+
* all) falls through to the flag's rollout being fully on (`>= 100`) rather
|
|
30
|
+
* than being bucketed — role targeting and percentage rollout are mutually
|
|
31
|
+
* exclusive by design once roles are set: a partial rollout with roles
|
|
32
|
+
* configured gates on role membership alone, not on whether an outside
|
|
33
|
+
* caller *also* would have landed in the rollout bucket.
|
|
34
|
+
* 4. No role targeting configured: fully on (`>= 100`) -> `true`; fully off
|
|
35
|
+
* (`<= 0`) -> `false`; otherwise a stable per-user bucket decides, and an
|
|
36
|
+
* unknown caller (`user === null`) never qualifies for a partial rollout.
|
|
37
|
+
*
|
|
38
|
+
* `user` is `null` for an unauthenticated caller — `GET {routePrefix}/me` never
|
|
39
|
+
* calls this with `null` (it requires authentication first), but the evaluator
|
|
40
|
+
* stays total over both cases so any future authenticated-optional consumer gets
|
|
41
|
+
* the same well-defined answer without a second code path.
|
|
42
|
+
*/
|
|
43
|
+
export declare function evaluateFlag(flag: Pick<FlagRow, "key" | "enabled" | "rollout" | "roles" | "users">, user: FlagEvaluationUser | null): boolean;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable 0–99 bucket from a string, so a percentage-rollout answer never flickers
|
|
3
|
+
* between requests/reloads for the same user. FNV-1a, 32-bit — ported verbatim
|
|
4
|
+
* (same hash, same seed shape `${flagKey}:${userId}`) from media-planner's
|
|
5
|
+
* `services/session.ts` `bucket`, which itself matched the design system's demo
|
|
6
|
+
* `session.js` approximation. Keeping the identical hash here (the one evaluator
|
|
7
|
+
* every consumer now shares) means a user's rollout bucket for a given flag key
|
|
8
|
+
* does not change just because evaluation moved server-side into app-kit.
|
|
9
|
+
*/
|
|
10
|
+
function bucket(seed) {
|
|
11
|
+
let h = 2166136261;
|
|
12
|
+
for (let i = 0; i < seed.length; i++) {
|
|
13
|
+
h ^= seed.charCodeAt(i);
|
|
14
|
+
h = Math.imul(h, 16777619);
|
|
15
|
+
}
|
|
16
|
+
return Math.abs(h) % 100;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The single per-user flag evaluator @flytedesk/app-kit/flags owns (MP-252). Pure
|
|
20
|
+
* and synchronous — no I/O, no Fastify, no Prisma — so any consumer (the
|
|
21
|
+
* `GET {routePrefix}/me` route below, a batch job, a test) can call it directly
|
|
22
|
+
* against a `FlagRow` it already has in hand.
|
|
23
|
+
*
|
|
24
|
+
* Precedence, evaluated in this exact order (ported from media-planner's own
|
|
25
|
+
* `evaluateFlag`, which this replaces as the one evaluator — MP-222 already
|
|
26
|
+
* deleted that copy, and the design system's copy is next, PLN-2):
|
|
27
|
+
*
|
|
28
|
+
* 1. Kill switch: `!flag.enabled` -> always `false`, before anything else.
|
|
29
|
+
* 2. Per-user override: `flag.users[user.id]`, when set (`!= null`) and a user
|
|
30
|
+
* is known, wins over every other rule — the whole point of an override.
|
|
31
|
+
* 3. Role targeting: when `flag.roles` is non-empty, a `user` holding one of
|
|
32
|
+
* those roles gets `true`. Anyone else (a non-matching user, or no user at
|
|
33
|
+
* all) falls through to the flag's rollout being fully on (`>= 100`) rather
|
|
34
|
+
* than being bucketed — role targeting and percentage rollout are mutually
|
|
35
|
+
* exclusive by design once roles are set: a partial rollout with roles
|
|
36
|
+
* configured gates on role membership alone, not on whether an outside
|
|
37
|
+
* caller *also* would have landed in the rollout bucket.
|
|
38
|
+
* 4. No role targeting configured: fully on (`>= 100`) -> `true`; fully off
|
|
39
|
+
* (`<= 0`) -> `false`; otherwise a stable per-user bucket decides, and an
|
|
40
|
+
* unknown caller (`user === null`) never qualifies for a partial rollout.
|
|
41
|
+
*
|
|
42
|
+
* `user` is `null` for an unauthenticated caller — `GET {routePrefix}/me` never
|
|
43
|
+
* calls this with `null` (it requires authentication first), but the evaluator
|
|
44
|
+
* stays total over both cases so any future authenticated-optional consumer gets
|
|
45
|
+
* the same well-defined answer without a second code path.
|
|
46
|
+
*/
|
|
47
|
+
export function evaluateFlag(flag, user) {
|
|
48
|
+
if (!flag.enabled)
|
|
49
|
+
return false;
|
|
50
|
+
if (user && flag.users && flag.users[user.id] != null) {
|
|
51
|
+
return !!flag.users[user.id];
|
|
52
|
+
}
|
|
53
|
+
if (flag.roles && flag.roles.length) {
|
|
54
|
+
if (user && user.roleIds.some((r) => flag.roles.includes(r)))
|
|
55
|
+
return true;
|
|
56
|
+
return flag.rollout >= 100;
|
|
57
|
+
}
|
|
58
|
+
if (flag.rollout >= 100)
|
|
59
|
+
return true;
|
|
60
|
+
if (flag.rollout <= 0)
|
|
61
|
+
return false;
|
|
62
|
+
return user ? bucket(`${flag.key}:${user.id}`) < flag.rollout : false;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=evaluate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/flags/evaluate.ts"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAsE,EACtE,IAA+B;IAE/B,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACtD,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,OAAO,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACxE,CAAC"}
|
package/dist/flags/index.d.ts
CHANGED
|
@@ -35,15 +35,31 @@
|
|
|
35
35
|
* onChange: async (key, changes, actor) => {
|
|
36
36
|
* await recordAudit({ actorId: actor.id, who: actor.name, action: "flag.update", target: key, ... });
|
|
37
37
|
* },
|
|
38
|
+
* // MP-252, REQUIRED. This plugin applies requirePermission(...) itself to
|
|
39
|
+
* // ONLY the three admin routes below; GET /flags/me stays open to any
|
|
40
|
+
* // authenticated caller no matter what this names. Register this plugin
|
|
41
|
+
* // once, ungated, at the top level — do NOT wrap this whole
|
|
42
|
+
* // `.register(appKitFlags, ...)` call in your own gated scope (that was the
|
|
43
|
+
* // pre-MP-252 pattern): it would gate GET /flags/me too, since Fastify's
|
|
44
|
+
* // addHook applies to every route a nested plugin registers inside that
|
|
45
|
+
* // scope (see AppKitFlagsOptions.managePermission's doc comment).
|
|
46
|
+
* managePermission: "flags.manage",
|
|
38
47
|
* });
|
|
39
48
|
*
|
|
40
|
-
* // GET /flags -> { rows, pager, sort, filter }
|
|
41
|
-
* // GET /flags/:key -> single flag, or 404
|
|
42
|
-
* // PATCH /flags/:key { enabled?, rollout?, roles?, users? } -> updated flag
|
|
49
|
+
* // GET /flags -> { rows, pager, sort, filter } (requires managePermission)
|
|
50
|
+
* // GET /flags/:key -> single flag, or 404 (requires managePermission)
|
|
51
|
+
* // PATCH /flags/:key { enabled?, rollout?, roles?, users? } -> updated flag (requires managePermission)
|
|
52
|
+
* // GET /flags/me -> { [key]: boolean }, evaluated for the caller (MP-252 — always any authenticated user)
|
|
43
53
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
54
|
+
* The admin routes (GET/PATCH above) are gated by
|
|
55
|
+
* `requirePermission(...managePermission)` (MP-252, required — no ungated-by-
|
|
56
|
+
* default mode, and no way to opt this plugin's OWN admin routes out of it).
|
|
57
|
+
* `GET /flags/me` is deliberately the one route `managePermission` never
|
|
58
|
+
* touches: every authenticated caller gets their own evaluated flags, by design,
|
|
59
|
+
* with no rule data in the response — see plugin.ts's doc comment on that route
|
|
60
|
+
* and `evaluateFlag` below for the precedence rule it evaluates.
|
|
47
61
|
*/
|
|
48
62
|
export { appKitFlags } from "./plugin.js";
|
|
63
|
+
export { evaluateFlag } from "./evaluate.js";
|
|
64
|
+
export type { FlagEvaluationUser } from "./evaluate.js";
|
|
49
65
|
export type { AppKitFlagsOptions, FlagFields, FlagListResponseBody, FlagMeta, FlagPager, FlagPatch, FlagResponseBody, FlagRow, FlagStore, } from "./types.js";
|
package/dist/flags/index.js
CHANGED
|
@@ -35,15 +35,30 @@
|
|
|
35
35
|
* onChange: async (key, changes, actor) => {
|
|
36
36
|
* await recordAudit({ actorId: actor.id, who: actor.name, action: "flag.update", target: key, ... });
|
|
37
37
|
* },
|
|
38
|
+
* // MP-252, REQUIRED. This plugin applies requirePermission(...) itself to
|
|
39
|
+
* // ONLY the three admin routes below; GET /flags/me stays open to any
|
|
40
|
+
* // authenticated caller no matter what this names. Register this plugin
|
|
41
|
+
* // once, ungated, at the top level — do NOT wrap this whole
|
|
42
|
+
* // `.register(appKitFlags, ...)` call in your own gated scope (that was the
|
|
43
|
+
* // pre-MP-252 pattern): it would gate GET /flags/me too, since Fastify's
|
|
44
|
+
* // addHook applies to every route a nested plugin registers inside that
|
|
45
|
+
* // scope (see AppKitFlagsOptions.managePermission's doc comment).
|
|
46
|
+
* managePermission: "flags.manage",
|
|
38
47
|
* });
|
|
39
48
|
*
|
|
40
|
-
* // GET /flags -> { rows, pager, sort, filter }
|
|
41
|
-
* // GET /flags/:key -> single flag, or 404
|
|
42
|
-
* // PATCH /flags/:key { enabled?, rollout?, roles?, users? } -> updated flag
|
|
49
|
+
* // GET /flags -> { rows, pager, sort, filter } (requires managePermission)
|
|
50
|
+
* // GET /flags/:key -> single flag, or 404 (requires managePermission)
|
|
51
|
+
* // PATCH /flags/:key { enabled?, rollout?, roles?, users? } -> updated flag (requires managePermission)
|
|
52
|
+
* // GET /flags/me -> { [key]: boolean }, evaluated for the caller (MP-252 — always any authenticated user)
|
|
43
53
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
54
|
+
* The admin routes (GET/PATCH above) are gated by
|
|
55
|
+
* `requirePermission(...managePermission)` (MP-252, required — no ungated-by-
|
|
56
|
+
* default mode, and no way to opt this plugin's OWN admin routes out of it).
|
|
57
|
+
* `GET /flags/me` is deliberately the one route `managePermission` never
|
|
58
|
+
* touches: every authenticated caller gets their own evaluated flags, by design,
|
|
59
|
+
* with no rule data in the response — see plugin.ts's doc comment on that route
|
|
60
|
+
* and `evaluateFlag` below for the precedence rule it evaluates.
|
|
47
61
|
*/
|
|
48
62
|
export { appKitFlags } from "./plugin.js";
|
|
63
|
+
export { evaluateFlag } from "./evaluate.js";
|
|
49
64
|
//# sourceMappingURL=index.js.map
|
package/dist/flags/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flags/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|