@mossbear/projections 0.1.0-alpha.26
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/LICENSE +21 -0
- package/README.md +7 -0
- package/dist/agents-dir.d.ts +13 -0
- package/dist/agents-dir.d.ts.map +1 -0
- package/dist/agents-dir.js +36 -0
- package/dist/agents-dir.js.map +1 -0
- package/dist/agents-dir.test.d.ts +2 -0
- package/dist/agents-dir.test.d.ts.map +1 -0
- package/dist/agents-dir.test.js +30 -0
- package/dist/agents-dir.test.js.map +1 -0
- package/dist/agents-md.d.ts +12 -0
- package/dist/agents-md.d.ts.map +1 -0
- package/dist/agents-md.js +47 -0
- package/dist/agents-md.js.map +1 -0
- package/dist/agents-md.test.d.ts +2 -0
- package/dist/agents-md.test.d.ts.map +1 -0
- package/dist/agents-md.test.js +44 -0
- package/dist/agents-md.test.js.map +1 -0
- package/dist/claude-md.d.ts +17 -0
- package/dist/claude-md.d.ts.map +1 -0
- package/dist/claude-md.js +43 -0
- package/dist/claude-md.js.map +1 -0
- package/dist/claude-md.test.d.ts +2 -0
- package/dist/claude-md.test.d.ts.map +1 -0
- package/dist/claude-md.test.js +61 -0
- package/dist/claude-md.test.js.map +1 -0
- package/dist/claude-rules.d.ts +17 -0
- package/dist/claude-rules.d.ts.map +1 -0
- package/dist/claude-rules.js +43 -0
- package/dist/claude-rules.js.map +1 -0
- package/dist/claude-rules.test.d.ts +2 -0
- package/dist/claude-rules.test.d.ts.map +1 -0
- package/dist/claude-rules.test.js +34 -0
- package/dist/claude-rules.test.js.map +1 -0
- package/dist/compatibility-attribution.d.ts +7 -0
- package/dist/compatibility-attribution.d.ts.map +1 -0
- package/dist/compatibility-attribution.js +11 -0
- package/dist/compatibility-attribution.js.map +1 -0
- package/dist/cursor-rules.d.ts +17 -0
- package/dist/cursor-rules.d.ts.map +1 -0
- package/dist/cursor-rules.js +36 -0
- package/dist/cursor-rules.js.map +1 -0
- package/dist/cursor-rules.test.d.ts +2 -0
- package/dist/cursor-rules.test.d.ts.map +1 -0
- package/dist/cursor-rules.test.js +58 -0
- package/dist/cursor-rules.test.js.map +1 -0
- package/dist/detect-format.d.ts +15 -0
- package/dist/detect-format.d.ts.map +1 -0
- package/dist/detect-format.js +88 -0
- package/dist/detect-format.js.map +1 -0
- package/dist/detect-format.test.d.ts +2 -0
- package/dist/detect-format.test.d.ts.map +1 -0
- package/dist/detect-format.test.js +104 -0
- package/dist/detect-format.test.js.map +1 -0
- package/dist/eval-path.d.ts +91 -0
- package/dist/eval-path.d.ts.map +1 -0
- package/dist/eval-path.js +110 -0
- package/dist/eval-path.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/path-rules.d.ts +45 -0
- package/dist/path-rules.d.ts.map +1 -0
- package/dist/path-rules.js +65 -0
- package/dist/path-rules.js.map +1 -0
- package/dist/skill-member-path.d.ts +51 -0
- package/dist/skill-member-path.d.ts.map +1 -0
- package/dist/skill-member-path.js +76 -0
- package/dist/skill-member-path.js.map +1 -0
- package/dist/skill-member-path.test.d.ts +2 -0
- package/dist/skill-member-path.test.d.ts.map +1 -0
- package/dist/skill-member-path.test.js +0 -0
- package/dist/skill-member-path.test.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The scope-relative path predicates that both attached-file derivations share.
|
|
3
|
+
*
|
|
4
|
+
* A guide's attached files land in two different places depending on the guide's
|
|
5
|
+
* shape — a plain guide's criteria go to the eval shadow tree (`eval-path.ts`), a
|
|
6
|
+
* skill's members go inside its own directory (`skill-member-path.ts`) — but both
|
|
7
|
+
* derivations answer the same safety questions first, and a second copy of those
|
|
8
|
+
* answers is a second thing to get wrong. They live here so the two derivations
|
|
9
|
+
* cannot drift on what counts as a safe path or as a skill.
|
|
10
|
+
*/
|
|
11
|
+
import { SafeRelativePosixPathSchema } from '@mossbear/protocol';
|
|
12
|
+
import * as v from 'valibot';
|
|
13
|
+
import { detectFormat } from './detect-format.js';
|
|
14
|
+
/**
|
|
15
|
+
* The `.mossbear/` directory as a whole is Mossbear's own state — the sidecar, the
|
|
16
|
+
* repo config, pulled context, and the eval shadow tree. None of it is guidance,
|
|
17
|
+
* so a *guide* path that claims to live there is a caller error rather than a
|
|
18
|
+
* file to derive anything from.
|
|
19
|
+
*/
|
|
20
|
+
const MOSSBEAR_DIR_SEGMENT = '.mossbear';
|
|
21
|
+
export function toPosix(path) {
|
|
22
|
+
return path.replaceAll('\\', '/');
|
|
23
|
+
}
|
|
24
|
+
export function isSafeRelativePath(path) {
|
|
25
|
+
return v.safeParse(SafeRelativePosixPathSchema, path).success;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Split a scope-relative path into its lower-cased segments.
|
|
29
|
+
*
|
|
30
|
+
* Lower-cased because recognition and derivation pull in opposite directions:
|
|
31
|
+
* a shadow path is *written* as exactly `.mossbear/evals/…`, but on a
|
|
32
|
+
* case-insensitive filesystem `.Mossbear/Evals/AGENTS.md` names the same file, and
|
|
33
|
+
* the two ways of being wrong about it are not symmetric — classifying eval
|
|
34
|
+
* criteria as guidance hands a rubric to an agent as instructions, while
|
|
35
|
+
* classifying a stray capitalised path as eval content merely declines to treat
|
|
36
|
+
* it as a guide. Recognition therefore leans the safe way.
|
|
37
|
+
*/
|
|
38
|
+
export function segmentsOf(path) {
|
|
39
|
+
return toPosix(path).toLowerCase().split('/');
|
|
40
|
+
}
|
|
41
|
+
/** True when `path` is inside `.mossbear/`, whatever it holds. */
|
|
42
|
+
export function isUnderMossbearDir(path) {
|
|
43
|
+
return segmentsOf(path)[0] === MOSSBEAR_DIR_SEGMENT;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* True when a path is a skill's own `SKILL.md`.
|
|
47
|
+
*
|
|
48
|
+
* The rule is *the attached file lives with its guide*, and a skill's guide is a
|
|
49
|
+
* directory — so its criteria are the positional `EVAL.md` inside it and its
|
|
50
|
+
* members are the rest of that directory
|
|
51
|
+
* (`skillMemberContentType`, `apps/dashboard/src/server/rules/skillMembers.ts:60-66`).
|
|
52
|
+
* Shadowing a skill as well would put one skill's rubric in two places, split it
|
|
53
|
+
* out of the directory that makes a skill portable, and hand the next reconciler
|
|
54
|
+
* two rows to disagree over — the "two shapes of one fact" CLAUDE.md → Simplicity
|
|
55
|
+
* refuses. `detectFormat` is the same test discovery uses, so what counts as a
|
|
56
|
+
* skill here cannot drift from what counts as one there.
|
|
57
|
+
*
|
|
58
|
+
* This one predicate partitions the two derivations: `evalShadowPath` returns
|
|
59
|
+
* null exactly where this is true, and `skillMemberPath` returns null exactly
|
|
60
|
+
* where it is false.
|
|
61
|
+
*/
|
|
62
|
+
export function isSkillGuidePath(path) {
|
|
63
|
+
return detectFormat(path) === 'skill-md';
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=path-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-rules.js","sourceRoot":"","sources":["../src/path-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,WAAW,CAAA;AAExC,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CAAC,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC,OAAO,CAAA;AAC/D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAA;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,UAAU,CAAA;AAC1C,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a **skill's member files** live on disk: inside the skill's own
|
|
3
|
+
* directory, beside the `SKILL.md` that names it.
|
|
4
|
+
*
|
|
5
|
+
* This is the other half of the rule `eval-path.ts` states — *the attached file
|
|
6
|
+
* lives with its guide* — for the guide shape that is a directory rather than a
|
|
7
|
+
* bare file. A skill is `<dir>/SKILL.md` plus whatever `scripts/`,
|
|
8
|
+
* `references/` and `assets/` it carries, and those members are what make it
|
|
9
|
+
* runnable: a `SKILL.md` delivered without them is a skill that cannot do its
|
|
10
|
+
* job. `isSkillGuidePath` partitions the two derivations exactly —
|
|
11
|
+
* `evalShadowPath` returns null where it is true, this returns null where it is
|
|
12
|
+
* false — so no guide can ever get both, and none can get neither.
|
|
13
|
+
*
|
|
14
|
+
* **Why the server derives it rather than each client.** Identical to
|
|
15
|
+
* `evalShadowPath`'s reason, and it is the failure `skill-member-delivery` was
|
|
16
|
+
* filed for: members are `guide_files` rows attached to their guide by
|
|
17
|
+
* `guide_id` with no bundle membership of their own
|
|
18
|
+
* (`apps/dashboard/src/server/rules/skillMembers.ts:200-205`), so the only thing
|
|
19
|
+
* that knows where a member belongs is the guide's own path. Letting each
|
|
20
|
+
* subscribed clone re-derive that from a member name would be the per-clone
|
|
21
|
+
* divergence `unified-item-sync` exists to remove — and letting none of them
|
|
22
|
+
* derive it is what shipped, which is a skill delivered in pieces with the sync
|
|
23
|
+
* reporting success.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* The scope-relative path a skill member lands at, or `null` when it has no
|
|
27
|
+
* representable home.
|
|
28
|
+
*
|
|
29
|
+
* `guidePath` is the skill's own `SKILL.md`, scope-relative; `memberPath` is the
|
|
30
|
+
* member's path *relative to the skill directory* — the form the importer stores
|
|
31
|
+
* in member metadata (`SkillMemberMetadata.path`). The result is relative to the
|
|
32
|
+
* same scope root the guide path is, so a `global` skill's members land under the
|
|
33
|
+
* home directory by the same rule that puts a `project` skill's under the
|
|
34
|
+
* checkout, with no second scope decision to keep in sync.
|
|
35
|
+
*
|
|
36
|
+
* Null, never a repaired path, in every rejecting case — the caller reports the
|
|
37
|
+
* member as unplaceable rather than writing it somewhere approximate:
|
|
38
|
+
*
|
|
39
|
+
* - the guide is not a skill (a plain guide has no directory to hold members),
|
|
40
|
+
* or its path is unsafe or inside `.mossbear/`;
|
|
41
|
+
* - the member path is absolute, traverses, carries control characters, or is
|
|
42
|
+
* over-long — `memberPath` is remote-supplied and is parsed, not trusted;
|
|
43
|
+
* - the joined result is unsafe or would land in `.mossbear/`, which is Mossbear's own
|
|
44
|
+
* state and is rewritten by sync.
|
|
45
|
+
*
|
|
46
|
+
* The result is re-checked rather than assumed safe from its two halves: length
|
|
47
|
+
* is the case that only exists after joining, where a legal guide path and a
|
|
48
|
+
* legal member path together exceed the bound the wire format enforces.
|
|
49
|
+
*/
|
|
50
|
+
export declare function skillMemberPath(guidePath: string, memberPath: string): string | null;
|
|
51
|
+
//# sourceMappingURL=skill-member-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-member-path.d.ts","sourceRoot":"","sources":["../src/skill-member-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBpF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a **skill's member files** live on disk: inside the skill's own
|
|
3
|
+
* directory, beside the `SKILL.md` that names it.
|
|
4
|
+
*
|
|
5
|
+
* This is the other half of the rule `eval-path.ts` states — *the attached file
|
|
6
|
+
* lives with its guide* — for the guide shape that is a directory rather than a
|
|
7
|
+
* bare file. A skill is `<dir>/SKILL.md` plus whatever `scripts/`,
|
|
8
|
+
* `references/` and `assets/` it carries, and those members are what make it
|
|
9
|
+
* runnable: a `SKILL.md` delivered without them is a skill that cannot do its
|
|
10
|
+
* job. `isSkillGuidePath` partitions the two derivations exactly —
|
|
11
|
+
* `evalShadowPath` returns null where it is true, this returns null where it is
|
|
12
|
+
* false — so no guide can ever get both, and none can get neither.
|
|
13
|
+
*
|
|
14
|
+
* **Why the server derives it rather than each client.** Identical to
|
|
15
|
+
* `evalShadowPath`'s reason, and it is the failure `skill-member-delivery` was
|
|
16
|
+
* filed for: members are `guide_files` rows attached to their guide by
|
|
17
|
+
* `guide_id` with no bundle membership of their own
|
|
18
|
+
* (`apps/dashboard/src/server/rules/skillMembers.ts:200-205`), so the only thing
|
|
19
|
+
* that knows where a member belongs is the guide's own path. Letting each
|
|
20
|
+
* subscribed clone re-derive that from a member name would be the per-clone
|
|
21
|
+
* divergence `unified-item-sync` exists to remove — and letting none of them
|
|
22
|
+
* derive it is what shipped, which is a skill delivered in pieces with the sync
|
|
23
|
+
* reporting success.
|
|
24
|
+
*/
|
|
25
|
+
import { isSafeRelativePath, isSkillGuidePath, isUnderMossbearDir, toPosix, } from './path-rules.js';
|
|
26
|
+
/**
|
|
27
|
+
* The scope-relative path a skill member lands at, or `null` when it has no
|
|
28
|
+
* representable home.
|
|
29
|
+
*
|
|
30
|
+
* `guidePath` is the skill's own `SKILL.md`, scope-relative; `memberPath` is the
|
|
31
|
+
* member's path *relative to the skill directory* — the form the importer stores
|
|
32
|
+
* in member metadata (`SkillMemberMetadata.path`). The result is relative to the
|
|
33
|
+
* same scope root the guide path is, so a `global` skill's members land under the
|
|
34
|
+
* home directory by the same rule that puts a `project` skill's under the
|
|
35
|
+
* checkout, with no second scope decision to keep in sync.
|
|
36
|
+
*
|
|
37
|
+
* Null, never a repaired path, in every rejecting case — the caller reports the
|
|
38
|
+
* member as unplaceable rather than writing it somewhere approximate:
|
|
39
|
+
*
|
|
40
|
+
* - the guide is not a skill (a plain guide has no directory to hold members),
|
|
41
|
+
* or its path is unsafe or inside `.mossbear/`;
|
|
42
|
+
* - the member path is absolute, traverses, carries control characters, or is
|
|
43
|
+
* over-long — `memberPath` is remote-supplied and is parsed, not trusted;
|
|
44
|
+
* - the joined result is unsafe or would land in `.mossbear/`, which is Mossbear's own
|
|
45
|
+
* state and is rewritten by sync.
|
|
46
|
+
*
|
|
47
|
+
* The result is re-checked rather than assumed safe from its two halves: length
|
|
48
|
+
* is the case that only exists after joining, where a legal guide path and a
|
|
49
|
+
* legal member path together exceed the bound the wire format enforces.
|
|
50
|
+
*/
|
|
51
|
+
export function skillMemberPath(guidePath, memberPath) {
|
|
52
|
+
const guide = toPosix(guidePath);
|
|
53
|
+
if (!isSafeRelativePath(guide))
|
|
54
|
+
return null;
|
|
55
|
+
if (isUnderMossbearDir(guide))
|
|
56
|
+
return null;
|
|
57
|
+
if (!isSkillGuidePath(guide))
|
|
58
|
+
return null;
|
|
59
|
+
const member = toPosix(memberPath);
|
|
60
|
+
if (!isSafeRelativePath(member))
|
|
61
|
+
return null;
|
|
62
|
+
// A `skill-md` path always sits under a `skills/` directory and ends in
|
|
63
|
+
// `/skill.md` (`detect-format.ts`), so it always has a parent — there is no
|
|
64
|
+
// root-level skill and therefore no empty-directory case to handle.
|
|
65
|
+
const separatorIndex = guide.lastIndexOf('/');
|
|
66
|
+
if (separatorIndex === -1)
|
|
67
|
+
return null;
|
|
68
|
+
const skillDir = guide.slice(0, separatorIndex);
|
|
69
|
+
const joined = `${skillDir}/${member}`;
|
|
70
|
+
if (!isSafeRelativePath(joined))
|
|
71
|
+
return null;
|
|
72
|
+
if (isUnderMossbearDir(joined))
|
|
73
|
+
return null;
|
|
74
|
+
return joined;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=skill-member-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-member-path.js","sourceRoot":"","sources":["../src/skill-member-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,GACR,MAAM,iBAAiB,CAAA;AAExB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,UAAkB;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAChC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,IAAI,kBAAkB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEzC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAClC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAE5C,wEAAwE;IACxE,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,cAAc,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAA;IACtC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,IAAI,kBAAkB,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-member-path.test.d.ts","sourceRoot":"","sources":["../src/skill-member-path.test.ts"],"names":[],"mappings":""}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-member-path.test.js","sourceRoot":"","sources":["../src/skill-member-path.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mossbear/projections",
|
|
3
|
+
"version": "0.1.0-alpha.26",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Guide file format detection and compatibility renderers for Mossbear — AGENTS.md, .agents/, CLAUDE.md, .claude/rules/, .cursorrules.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"!dist/.tsbuildinfo",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/auden-to/auden.git",
|
|
25
|
+
"directory": "packages/projections"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public",
|
|
29
|
+
"provenance": false
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsc --project tsconfig.json",
|
|
33
|
+
"dev": "tsc --project tsconfig.json --watch",
|
|
34
|
+
"typecheck": "tsc --project tsconfig.json --noEmit",
|
|
35
|
+
"lint": "oxlint",
|
|
36
|
+
"lint:fix": "oxfmt && oxlint --fix",
|
|
37
|
+
"format": "oxfmt",
|
|
38
|
+
"format:check": "oxfmt --check",
|
|
39
|
+
"test": "vitest run"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@mossbear/protocol": "0.1.0-alpha.26"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"typescript": "*"
|
|
46
|
+
}
|
|
47
|
+
}
|