youmd 0.5.0 → 0.6.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/dist/__tests__/api.test.d.ts +2 -0
- package/dist/__tests__/api.test.d.ts.map +1 -0
- package/dist/__tests__/api.test.js +84 -0
- package/dist/__tests__/api.test.js.map +1 -0
- package/dist/__tests__/compiler.test.d.ts +2 -0
- package/dist/__tests__/compiler.test.d.ts.map +1 -0
- package/dist/__tests__/compiler.test.js +127 -0
- package/dist/__tests__/compiler.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +79 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/decompile.test.d.ts +2 -0
- package/dist/__tests__/decompile.test.d.ts.map +1 -0
- package/dist/__tests__/decompile.test.js +102 -0
- package/dist/__tests__/decompile.test.js.map +1 -0
- package/dist/__tests__/hash.test.d.ts +2 -0
- package/dist/__tests__/hash.test.d.ts.map +1 -0
- package/dist/__tests__/hash.test.js +44 -0
- package/dist/__tests__/hash.test.js.map +1 -0
- package/dist/__tests__/integration.test.d.ts +2 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +277 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/skill-renderer.test.d.ts +2 -0
- package/dist/__tests__/skill-renderer.test.d.ts.map +1 -0
- package/dist/__tests__/skill-renderer.test.js +68 -0
- package/dist/__tests__/skill-renderer.test.js.map +1 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +6 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/agents.d.ts +2 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +93 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +73 -20
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +63 -4
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/diff.d.ts +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +402 -16
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/export.js +1 -1
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +131 -23
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link.d.ts +1 -0
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +76 -12
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +76 -59
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +7 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +115 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/mcp.d.ts +6 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +258 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/preview.d.ts.map +1 -1
- package/dist/commands/preview.js +191 -7
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/private.d.ts.map +1 -1
- package/dist/commands/private.js +248 -0
- package/dist/commands/private.js.map +1 -1
- package/dist/commands/prompts.d.ts +12 -0
- package/dist/commands/prompts.d.ts.map +1 -0
- package/dist/commands/prompts.js +245 -0
- package/dist/commands/prompts.js.map +1 -0
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +3 -2
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +42 -133
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +146 -38
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +39 -83
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +95 -19
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +132 -96
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +53 -29
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +177 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +93 -7
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +143 -38
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/compiler.d.ts +16 -33
- package/dist/lib/compiler.d.ts.map +1 -1
- package/dist/lib/compiler.js +499 -84
- package/dist/lib/compiler.js.map +1 -1
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +10 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/decompile.d.ts +21 -0
- package/dist/lib/decompile.d.ts.map +1 -0
- package/dist/lib/decompile.js +304 -0
- package/dist/lib/decompile.js.map +1 -0
- package/dist/lib/onboarding.d.ts +4 -4
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +116 -25
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/skill-catalog.d.ts.map +1 -1
- package/dist/lib/skill-catalog.js +57 -8
- package/dist/lib/skill-catalog.js.map +1 -1
- package/dist/lib/skill-renderer.d.ts.map +1 -1
- package/dist/lib/skill-renderer.js +18 -0
- package/dist/lib/skill-renderer.js.map +1 -1
- package/dist/lib/skills.d.ts +8 -3
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/lib/skills.js +281 -82
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/vault.d.ts +40 -0
- package/dist/lib/vault.d.ts.map +1 -0
- package/dist/lib/vault.js +187 -0
- package/dist/lib/vault.js.map +1 -0
- package/dist/mcp/server.d.ts +21 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +1283 -0
- package/dist/mcp/server.js.map +1 -0
- package/examples/houston/directives/agent.md +13 -0
- package/examples/houston/preferences/agent.md +14 -0
- package/examples/houston/profile/about.md +15 -0
- package/examples/houston/profile/links.md +10 -0
- package/examples/houston/profile/projects.md +37 -0
- package/examples/houston/profile/values.md +9 -0
- package/examples/houston/voice/voice.md +13 -0
- package/examples/jordan/directives/agent.md +13 -0
- package/examples/jordan/preferences/agent.md +16 -0
- package/examples/jordan/profile/about.md +15 -0
- package/examples/jordan/profile/links.md +10 -0
- package/examples/jordan/profile/projects.md +29 -0
- package/examples/jordan/profile/values.md +9 -0
- package/examples/jordan/voice/voice.md +12 -0
- package/examples/priya/directives/agent.md +13 -0
- package/examples/priya/preferences/agent.md +15 -0
- package/examples/priya/profile/about.md +15 -0
- package/examples/priya/profile/links.md +9 -0
- package/examples/priya/profile/projects.md +28 -0
- package/examples/priya/profile/values.md +9 -0
- package/examples/priya/voice/voice.md +12 -0
- package/package.json +11 -5
- package/skills/claude-md-generator.md +25 -0
- package/skills/meta-improve.md +27 -0
- package/skills/proactive-context-fill.md +52 -0
- package/skills/project-context-init.md +26 -0
- package/skills/voice-sync.md +48 -0
- package/skills/you-logs.md +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const api_1 = require("../lib/api");
|
|
5
|
+
(0, vitest_1.describe)("getMeUser", () => {
|
|
6
|
+
(0, vitest_1.it)("prefers nested user fields from the live /me response shape", () => {
|
|
7
|
+
const me = {
|
|
8
|
+
user: {
|
|
9
|
+
username: "nested-user",
|
|
10
|
+
email: "nested@example.com",
|
|
11
|
+
displayName: "Nested User",
|
|
12
|
+
plan: "pro",
|
|
13
|
+
createdAt: 123,
|
|
14
|
+
},
|
|
15
|
+
latestBundle: null,
|
|
16
|
+
publishedBundle: null,
|
|
17
|
+
bundleCount: 0,
|
|
18
|
+
};
|
|
19
|
+
(0, vitest_1.expect)((0, api_1.getMeUser)(me)).toEqual({
|
|
20
|
+
username: "nested-user",
|
|
21
|
+
email: "nested@example.com",
|
|
22
|
+
displayName: "Nested User",
|
|
23
|
+
plan: "pro",
|
|
24
|
+
createdAt: 123,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
(0, vitest_1.it)("falls back to legacy flat fields for backward compatibility", () => {
|
|
28
|
+
const me = {
|
|
29
|
+
username: "flat-user",
|
|
30
|
+
email: "flat@example.com",
|
|
31
|
+
displayName: "Flat User",
|
|
32
|
+
plan: "free",
|
|
33
|
+
createdAt: 456,
|
|
34
|
+
latestBundle: null,
|
|
35
|
+
publishedBundle: null,
|
|
36
|
+
bundleCount: 0,
|
|
37
|
+
};
|
|
38
|
+
(0, vitest_1.expect)((0, api_1.getMeUser)(me)).toEqual({
|
|
39
|
+
username: "flat-user",
|
|
40
|
+
email: "flat@example.com",
|
|
41
|
+
displayName: "Flat User",
|
|
42
|
+
plan: "free",
|
|
43
|
+
createdAt: 456,
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.describe)("getPublicProfile", () => {
|
|
48
|
+
(0, vitest_1.afterEach)(() => {
|
|
49
|
+
vitest_1.vi.restoreAllMocks();
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)("parses vendor +json profile responses and wraps flat payloads", async () => {
|
|
52
|
+
const payload = {
|
|
53
|
+
schema: "you-md/v1",
|
|
54
|
+
username: "vendor-user",
|
|
55
|
+
identity: {
|
|
56
|
+
name: "Vendor User",
|
|
57
|
+
},
|
|
58
|
+
_profile: {
|
|
59
|
+
displayName: "Vendor User",
|
|
60
|
+
},
|
|
61
|
+
youMd: "# Vendor User",
|
|
62
|
+
};
|
|
63
|
+
vitest_1.vi.stubGlobal("fetch", vitest_1.vi.fn(async () => new Response(JSON.stringify(payload), {
|
|
64
|
+
status: 200,
|
|
65
|
+
headers: {
|
|
66
|
+
"Content-Type": "application/vnd.you-md.v1+json",
|
|
67
|
+
},
|
|
68
|
+
})));
|
|
69
|
+
await (0, vitest_1.expect)((0, api_1.getPublicProfile)("vendor-user")).resolves.toEqual({
|
|
70
|
+
youJson: {
|
|
71
|
+
schema: "you-md/v1",
|
|
72
|
+
username: "vendor-user",
|
|
73
|
+
identity: {
|
|
74
|
+
name: "Vendor User",
|
|
75
|
+
},
|
|
76
|
+
youMd: "# Vendor User",
|
|
77
|
+
},
|
|
78
|
+
youMd: "# Vendor User",
|
|
79
|
+
username: "vendor-user",
|
|
80
|
+
displayName: "Vendor User",
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=api.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":";;AAAA,mCAA6D;AAC7D,oCAA0E;AAE1E,IAAA,iBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,GAAe;YACrB,IAAI,EAAE;gBACJ,QAAQ,EAAE,aAAa;gBACvB,KAAK,EAAE,oBAAoB;gBAC3B,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,GAAG;aACf;YACD,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,IAAA,eAAM,EAAC,IAAA,eAAS,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5B,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,GAAe;YACrB,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,GAAG;YACd,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,IAAA,eAAM,EAAC,IAAA,eAAS,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5B,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,WAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE;gBACR,IAAI,EAAE,aAAa;aACpB;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,aAAa;aAC3B;YACD,KAAK,EAAE,eAAe;SACvB,CAAC;QAEF,WAAE,CAAC,UAAU,CACX,OAAO,EACP,WAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CACf,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACpC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE;gBACP,cAAc,EAAE,gCAAgC;aACjD;SACF,CAAC,CACH,CACF,CAAC;QAEF,MAAM,IAAA,eAAM,EAAC,IAAA,sBAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7D,OAAO,EAAE;gBACP,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE;oBACR,IAAI,EAAE,aAAa;iBACpB;gBACD,KAAK,EAAE,eAAe;aACvB;YACD,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,aAAa;YACvB,WAAW,EAAE,aAAa;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/compiler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const vitest_1 = require("vitest");
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const compiler_1 = require("../lib/compiler");
|
|
41
|
+
(0, vitest_1.describe)("compiler", () => {
|
|
42
|
+
let tmpDir;
|
|
43
|
+
(0, vitest_1.beforeEach)(() => {
|
|
44
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "youmd-test-"));
|
|
45
|
+
// Create minimal bundle structure
|
|
46
|
+
fs.mkdirSync(path.join(tmpDir, "profile"), { recursive: true });
|
|
47
|
+
fs.mkdirSync(path.join(tmpDir, "preferences"), { recursive: true });
|
|
48
|
+
});
|
|
49
|
+
(0, vitest_1.afterEach)(() => {
|
|
50
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)("compiles an empty bundle without error", () => {
|
|
53
|
+
const result = (0, compiler_1.compileBundle)(tmpDir);
|
|
54
|
+
(0, vitest_1.expect)(result).toBeDefined();
|
|
55
|
+
(0, vitest_1.expect)(result.youJson).toBeDefined();
|
|
56
|
+
(0, vitest_1.expect)(result.markdown).toBeDefined();
|
|
57
|
+
(0, vitest_1.expect)(result.manifest).toBeDefined();
|
|
58
|
+
(0, vitest_1.expect)(result.stats).toBeDefined();
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.it)("compiles about.md into identity fields", () => {
|
|
61
|
+
fs.writeFileSync(path.join(tmpDir, "profile", "about.md"), `---
|
|
62
|
+
title: About
|
|
63
|
+
---
|
|
64
|
+
# Houston Golden
|
|
65
|
+
|
|
66
|
+
**Tagline:** Building the identity protocol
|
|
67
|
+
|
|
68
|
+
**Location:** Miami, FL
|
|
69
|
+
|
|
70
|
+
Founded BAMF Media. Building You.md.`);
|
|
71
|
+
const result = (0, compiler_1.compileBundle)(tmpDir);
|
|
72
|
+
const identity = result.youJson.identity;
|
|
73
|
+
(0, vitest_1.expect)(identity).toBeDefined();
|
|
74
|
+
(0, vitest_1.expect)(identity.name).toBe("Houston Golden");
|
|
75
|
+
});
|
|
76
|
+
(0, vitest_1.it)("compiles projects.md into projects array", () => {
|
|
77
|
+
fs.writeFileSync(path.join(tmpDir, "profile", "projects.md"), `---
|
|
78
|
+
title: Projects
|
|
79
|
+
---
|
|
80
|
+
## You.md
|
|
81
|
+
- **Role:** Founder
|
|
82
|
+
- **Status:** building
|
|
83
|
+
- **Description:** Identity context protocol.
|
|
84
|
+
- **URL:** https://you.md
|
|
85
|
+
|
|
86
|
+
## BAMF Media
|
|
87
|
+
- **Role:** CEO
|
|
88
|
+
- **Status:** active
|
|
89
|
+
- **Description:** Growth marketing agency.`);
|
|
90
|
+
const result = (0, compiler_1.compileBundle)(tmpDir);
|
|
91
|
+
const projects = result.youJson.projects;
|
|
92
|
+
(0, vitest_1.expect)(projects).toBeDefined();
|
|
93
|
+
(0, vitest_1.expect)(projects.length).toBeGreaterThanOrEqual(2);
|
|
94
|
+
(0, vitest_1.expect)(projects[0].name).toBe("You.md");
|
|
95
|
+
});
|
|
96
|
+
(0, vitest_1.it)("compiles preferences into agent prefs", () => {
|
|
97
|
+
fs.writeFileSync(path.join(tmpDir, "preferences", "agent.md"), `---
|
|
98
|
+
title: Agent Preferences
|
|
99
|
+
---
|
|
100
|
+
**Tone:** direct, no fluff
|
|
101
|
+
**Formality:** casual-professional
|
|
102
|
+
**Avoid:** corporate speak, emoji`);
|
|
103
|
+
const result = (0, compiler_1.compileBundle)(tmpDir);
|
|
104
|
+
const prefs = result.youJson.preferences;
|
|
105
|
+
(0, vitest_1.expect)(prefs).toBeDefined();
|
|
106
|
+
const agent = prefs.agent;
|
|
107
|
+
(0, vitest_1.expect)(agent.tone).toContain("direct");
|
|
108
|
+
});
|
|
109
|
+
(0, vitest_1.it)("writes bundle files to disk", () => {
|
|
110
|
+
const result = (0, compiler_1.compileBundle)(tmpDir);
|
|
111
|
+
(0, compiler_1.writeBundle)(tmpDir, result);
|
|
112
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmpDir, "you.json"))).toBe(true);
|
|
113
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmpDir, "you.md"))).toBe(true);
|
|
114
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(tmpDir, "manifest.json"))).toBe(true);
|
|
115
|
+
// you.json should be valid JSON
|
|
116
|
+
const parsed = JSON.parse(fs.readFileSync(path.join(tmpDir, "you.json"), "utf-8"));
|
|
117
|
+
(0, vitest_1.expect)(parsed.schema).toBe("you-md/v1");
|
|
118
|
+
});
|
|
119
|
+
(0, vitest_1.it)("tracks stats correctly", () => {
|
|
120
|
+
fs.writeFileSync(path.join(tmpDir, "profile", "about.md"), "# Test\nHello");
|
|
121
|
+
fs.writeFileSync(path.join(tmpDir, "profile", "values.md"), "- Integrity\n- Speed");
|
|
122
|
+
const result = (0, compiler_1.compileBundle)(tmpDir);
|
|
123
|
+
(0, vitest_1.expect)(result.stats.totalSections).toBeGreaterThan(0);
|
|
124
|
+
(0, vitest_1.expect)(result.filesRead.length).toBeGreaterThan(0);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=compiler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.test.js","sourceRoot":"","sources":["../../src/__tests__/compiler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const vitest_1 = require("vitest");
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
(0, vitest_1.describe)("config", () => {
|
|
41
|
+
let originalHome;
|
|
42
|
+
let tmpHome;
|
|
43
|
+
(0, vitest_1.beforeEach)(() => {
|
|
44
|
+
tmpHome = fs.mkdtempSync(path.join(os.tmpdir(), "youmd-config-test-"));
|
|
45
|
+
originalHome = process.env.HOME;
|
|
46
|
+
process.env.HOME = tmpHome;
|
|
47
|
+
});
|
|
48
|
+
(0, vitest_1.afterEach)(() => {
|
|
49
|
+
process.env.HOME = originalHome;
|
|
50
|
+
fs.rmSync(tmpHome, { recursive: true, force: true });
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)("getConvexSiteUrl returns default when no config", async () => {
|
|
53
|
+
// Re-import to pick up new HOME
|
|
54
|
+
const { getConvexSiteUrl } = await Promise.resolve().then(() => __importStar(require("../lib/config")));
|
|
55
|
+
const url = getConvexSiteUrl();
|
|
56
|
+
(0, vitest_1.expect)(url).toContain("convex.site");
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)("getConvexSiteUrl returns apiUrl from config when set", async () => {
|
|
59
|
+
const configDir = path.join(tmpHome, ".youmd");
|
|
60
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
61
|
+
fs.writeFileSync(path.join(configDir, "config.json"), JSON.stringify({ apiUrl: "https://custom.convex.site" }));
|
|
62
|
+
// Need fresh import
|
|
63
|
+
vitest_1.vi.resetModules();
|
|
64
|
+
const { getConvexSiteUrl } = await Promise.resolve().then(() => __importStar(require("../lib/config")));
|
|
65
|
+
const url = getConvexSiteUrl();
|
|
66
|
+
// May or may not pick up the custom URL depending on module caching
|
|
67
|
+
(0, vitest_1.expect)(url).toContain("convex.site");
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)("isAuthenticated returns false when no token", async () => {
|
|
70
|
+
const { isAuthenticated } = await Promise.resolve().then(() => __importStar(require("../lib/config")));
|
|
71
|
+
(0, vitest_1.expect)(isAuthenticated()).toBe(false);
|
|
72
|
+
});
|
|
73
|
+
(0, vitest_1.it)("localBundleExists returns false when no .youmd dir", async () => {
|
|
74
|
+
const { localBundleExists } = await Promise.resolve().then(() => __importStar(require("../lib/config")));
|
|
75
|
+
// We're in a temp dir with no .youmd
|
|
76
|
+
(0, vitest_1.expect)(localBundleExists()).toBe(false);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAyE;AACzE,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,IAAA,iBAAQ,EAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,YAAgC,CAAC;IACrC,IAAI,OAAe,CAAC;IAEpB,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACvE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,gCAAgC;QAChC,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC,CACzD,CAAC;QAEF,oBAAoB;QACpB,WAAE,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,oEAAoE;QACpE,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;QAC1D,IAAA,eAAM,EAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,eAAe,GAAC,CAAC;QAC5D,qCAAqC;QACrC,IAAA,eAAM,EAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decompile.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/decompile.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const os = __importStar(require("os"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const vitest_1 = require("vitest");
|
|
40
|
+
const compiler_1 = require("../lib/compiler");
|
|
41
|
+
const decompile_1 = require("../lib/decompile");
|
|
42
|
+
const tempDirs = [];
|
|
43
|
+
function makeTempDir() {
|
|
44
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "youmd-decompile-"));
|
|
45
|
+
tempDirs.push(dir);
|
|
46
|
+
return dir;
|
|
47
|
+
}
|
|
48
|
+
(0, vitest_1.describe)("decompileToFilesystem", () => {
|
|
49
|
+
(0, vitest_1.afterEach)(() => {
|
|
50
|
+
for (const dir of tempDirs.splice(0)) {
|
|
51
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.it)("does not scaffold empty/default-only sections from nested bundles", () => {
|
|
55
|
+
const bundleDir = makeTempDir();
|
|
56
|
+
(0, decompile_1.decompileToFilesystem)(bundleDir, {
|
|
57
|
+
schema: "you-md/v1",
|
|
58
|
+
username: "tester",
|
|
59
|
+
identity: {
|
|
60
|
+
name: "Test User",
|
|
61
|
+
bio: {
|
|
62
|
+
short: "Short bio.",
|
|
63
|
+
medium: "Short bio.",
|
|
64
|
+
long: "Short bio.",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
now: {
|
|
68
|
+
focus: [],
|
|
69
|
+
},
|
|
70
|
+
preferences: {
|
|
71
|
+
writing: {
|
|
72
|
+
style: "",
|
|
73
|
+
format: "markdown preferred",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
projects: [],
|
|
77
|
+
values: [],
|
|
78
|
+
links: {},
|
|
79
|
+
voice: {},
|
|
80
|
+
agent_directives: {},
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(bundleDir, "profile", "about.md"))).toBe(true);
|
|
83
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(bundleDir, "profile", "now.md"))).toBe(false);
|
|
84
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(bundleDir, "preferences", "writing.md"))).toBe(false);
|
|
85
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(bundleDir, "profile", "projects.md"))).toBe(false);
|
|
86
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(bundleDir, "profile", "values.md"))).toBe(false);
|
|
87
|
+
(0, vitest_1.expect)(fs.existsSync(path.join(bundleDir, "profile", "links.md"))).toBe(false);
|
|
88
|
+
});
|
|
89
|
+
(0, vitest_1.it)("does not synthesize writing defaults when no writing section exists", () => {
|
|
90
|
+
const bundleDir = makeTempDir();
|
|
91
|
+
for (const dir of ["profile", "preferences", "voice", "directives"]) {
|
|
92
|
+
fs.mkdirSync(path.join(bundleDir, dir), { recursive: true });
|
|
93
|
+
}
|
|
94
|
+
fs.writeFileSync(path.join(bundleDir, "profile", "about.md"), '---\ntitle: "About"\n---\n\n# Test User\n\nA real bio.\n');
|
|
95
|
+
const compiled = (0, compiler_1.compileBundle)(bundleDir);
|
|
96
|
+
const writing = (compiled.youJson.preferences?.writing ??
|
|
97
|
+
{});
|
|
98
|
+
(0, vitest_1.expect)(writing.style).toBe("");
|
|
99
|
+
(0, vitest_1.expect)(writing.format).toBe("");
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=decompile.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decompile.test.js","sourceRoot":"","sources":["../../src/__tests__/decompile.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/hash.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const hash_1 = require("../lib/hash");
|
|
5
|
+
(0, vitest_1.describe)("hash", () => {
|
|
6
|
+
(0, vitest_1.describe)("computeContentHash", () => {
|
|
7
|
+
(0, vitest_1.it)("returns a 64-char hex string (SHA-256)", () => {
|
|
8
|
+
const hash = (0, hash_1.computeContentHash)({ test: true }, "# test");
|
|
9
|
+
(0, vitest_1.expect)(hash).toMatch(/^[0-9a-f]{64}$/);
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)("is deterministic — same input produces same hash", () => {
|
|
12
|
+
const a = (0, hash_1.computeContentHash)({ x: 1, y: "hello" }, "markdown");
|
|
13
|
+
const b = (0, hash_1.computeContentHash)({ x: 1, y: "hello" }, "markdown");
|
|
14
|
+
(0, vitest_1.expect)(a).toBe(b);
|
|
15
|
+
});
|
|
16
|
+
(0, vitest_1.it)("is order-independent for object keys", () => {
|
|
17
|
+
const a = (0, hash_1.computeContentHash)({ z: 1, a: 2 }, "md");
|
|
18
|
+
const b = (0, hash_1.computeContentHash)({ a: 2, z: 1 }, "md");
|
|
19
|
+
(0, vitest_1.expect)(a).toBe(b);
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)("is sensitive to JSON changes", () => {
|
|
22
|
+
const a = (0, hash_1.computeContentHash)({ x: 1 }, "same");
|
|
23
|
+
const b = (0, hash_1.computeContentHash)({ x: 2 }, "same");
|
|
24
|
+
(0, vitest_1.expect)(a).not.toBe(b);
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.it)("is sensitive to markdown changes", () => {
|
|
27
|
+
const a = (0, hash_1.computeContentHash)({ x: 1 }, "hello");
|
|
28
|
+
const b = (0, hash_1.computeContentHash)({ x: 1 }, "hello world");
|
|
29
|
+
(0, vitest_1.expect)(a).not.toBe(b);
|
|
30
|
+
});
|
|
31
|
+
(0, vitest_1.it)("handles empty objects", () => {
|
|
32
|
+
const hash = (0, hash_1.computeContentHash)({}, "");
|
|
33
|
+
(0, vitest_1.expect)(hash).toMatch(/^[0-9a-f]{64}$/);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
(0, vitest_1.describe)("shortHash", () => {
|
|
37
|
+
(0, vitest_1.it)("returns first 12 characters", () => {
|
|
38
|
+
const hash = "abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890";
|
|
39
|
+
(0, vitest_1.expect)((0, hash_1.shortHash)(hash)).toBe("abcdef123456");
|
|
40
|
+
(0, vitest_1.expect)((0, hash_1.shortHash)(hash)).toHaveLength(12);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=hash.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../../src/__tests__/hash.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":""}
|