@dforge-core/dforge-mcp 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,44 @@ All notable changes to `@dforge-core/dforge-mcp`. This project uses semver-ish
4
4
  `0.1.0-rc.N` pre-release tags; the published version is set at publish time via
5
5
  the release workflow, so committed `package.json` versions are placeholders.
6
6
 
7
+ ## 0.2.3
8
+
9
+ Catches up with the platform's current-user work: `currentUserId()` exists now,
10
+ and the three ways an author can get this wrong each get their own diagnostic
11
+ instead of a generic "unknown function".
12
+
13
+ ### Fixed — `dforge_action_check` flagged real built-ins as unknown
14
+
15
+ `DSL_BUILTINS` is a hand-maintained mirror of `DslBuiltins.FunctionNames` in
16
+ dForge-core, and it had drifted: `addMinutes`, `applyProfile` and
17
+ `getFileBase64` were missing, so a module using them was told its correct code
18
+ was wrong. Nothing compared the two lists, which is why it went unnoticed.
19
+ `test/dsl-builtins-drift.test.ts` now asserts they match in both directions,
20
+ parsing the authoritative list out of a sibling dForge-core checkout.
21
+
22
+ ### Added — `userId()` and `CURRENT_USER_ID()` diagnostics
23
+
24
+ - **`userId()`** is now an `error` (`user-id-called-as-function`) carrying the
25
+ platform's own sentence: *'userId' is a value, not a function — write 'userId'
26
+ without parentheses, or 'currentUserId()'*. It used to draw only a generic
27
+ `unknown-builtin` warning that called `userId` "not a DSL host function",
28
+ which is misleading — it is a host value, just not callable. The platform
29
+ rejects this at compile time now, so the checker matches its severity.
30
+ - **`CURRENT_USER_ID()`** in `execute:` joins `TODAY()`/`NOW()` as formula-only.
31
+ The message is per-function rather than date-specific, so it points at
32
+ `currentUserId()` here and `now()` there.
33
+ - **`currentUserId()`** and bare **`userId`** both check clean.
34
+
35
+ ### Changed — reference docs
36
+
37
+ `dsl-reference.md` and the skill's `action-dsl.md` gain the full built-in list,
38
+ the formula-vs-`execute:` split for `CURRENT_USER_ID()`, and the 64-bit id
39
+ contract: ids are BigInt inside `execute:` and stay exact, arithmetic mixing
40
+ BigInt and Number throws, and a large id written as a bare numeric literal
41
+ rounds before the comparison runs. The skill reference also drops
42
+ `IF(condition, trueVal, falseVal)`, which it listed as an `execute:` ternary
43
+ helper — it is formula-only and the compiler rejects it.
44
+
7
45
  ## 0.2.2
8
46
 
9
47
  Mirrors the platform change that gives the `M` column flag its meaning — in the