youmd 0.2.1 → 0.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.
@@ -42,6 +42,7 @@ const path = __importStar(require("path"));
42
42
  const chalk_1 = __importDefault(require("chalk"));
43
43
  const config_1 = require("../lib/config");
44
44
  const api_1 = require("../lib/api");
45
+ const onboarding_1 = require("../lib/onboarding");
45
46
  async function publishCommand() {
46
47
  console.log("");
47
48
  if (!(0, config_1.isAuthenticated)()) {
@@ -70,7 +71,7 @@ async function publishCommand() {
70
71
  return;
71
72
  }
72
73
  const config = (0, config_1.readGlobalConfig)();
73
- console.log("you.md -- publishing bundle");
74
+ console.log(" " + chalk_1.default.bold("you.md") + chalk_1.default.dim(" -- publishing bundle"));
74
75
  console.log("");
75
76
  // Read the bundle files
76
77
  const youJson = JSON.parse(fs.readFileSync(youJsonPath, "utf-8"));
@@ -80,12 +81,12 @@ async function publishCommand() {
80
81
  const manifest = fs.existsSync(manifestPath)
81
82
  ? JSON.parse(fs.readFileSync(manifestPath, "utf-8"))
82
83
  : { version: youJson.version || 1, entries: [] };
83
- console.log("\u251C\u2500\u2500 Reading you.json (v" + (youJson.version || "?") + ")");
84
- console.log("\u251C\u2500\u2500 Reading you.md (" + youMd.length + " bytes)");
85
- console.log("\u251C\u2500\u2500 Reading manifest.json");
86
- // Upload the bundle
87
- console.log("\u251C\u2500\u2500 Uploading to " +
88
- chalk_1.default.cyan("uncommon-chicken-142.convex.site"));
84
+ console.log(" \u251C\u2500\u2500 " + chalk_1.default.dim("reading") + " you.json (v" + (youJson.version || "?") + ")");
85
+ console.log(" \u251C\u2500\u2500 " + chalk_1.default.dim("reading") + " you.md (" + youMd.length + " bytes)");
86
+ console.log(" \u251C\u2500\u2500 " + chalk_1.default.dim("reading") + " manifest.json");
87
+ // Upload the bundle with a thinking spinner
88
+ const spinner = new onboarding_1.Spinner("beaming you up to the agent internet");
89
+ spinner.start();
89
90
  try {
90
91
  const uploadRes = await (0, api_1.uploadBundle)({
91
92
  manifest,
@@ -93,22 +94,22 @@ async function publishCommand() {
93
94
  youMd,
94
95
  });
95
96
  if (!uploadRes.ok) {
97
+ spinner.stop();
96
98
  const errData = uploadRes.data;
97
99
  console.log("");
98
- console.log(chalk_1.default.red("upload failed") +
100
+ console.log(chalk_1.default.red(" upload failed") +
99
101
  " -- " +
100
102
  (errData?.error || `status ${uploadRes.status}`));
101
103
  console.log("");
102
104
  return;
103
105
  }
104
- console.log("\u251C\u2500\u2500 Bundle saved");
105
106
  // Publish the latest bundle
106
- console.log("\u2514\u2500\u2500 Publishing...");
107
107
  const pubRes = await (0, api_1.publishLatest)();
108
+ spinner.stop();
108
109
  if (!pubRes.ok) {
109
110
  const errData = pubRes.data;
110
111
  console.log("");
111
- console.log(chalk_1.default.red("publish failed") +
112
+ console.log(chalk_1.default.red(" publish failed") +
112
113
  " -- " +
113
114
  (errData?.error || `status ${pubRes.status}`));
114
115
  console.log("");
@@ -121,22 +122,31 @@ async function publishCommand() {
121
122
  localConfig.lastPublished = new Date().toISOString();
122
123
  (0, config_1.writeLocalConfig)(localConfig);
123
124
  }
125
+ const liveUrl = result.url || `https://you.md/${result.username}`;
124
126
  console.log("");
125
- console.log(chalk_1.default.green("\u2713") +
126
- " Published version " +
127
+ console.log(" " + chalk_1.default.green("\u2713") +
128
+ " published v" +
127
129
  result.version +
128
130
  " as " +
129
- chalk_1.default.cyan(result.username));
131
+ chalk_1.default.bold(result.username));
130
132
  console.log("");
131
- const liveUrl = result.url || `https://you.md/${result.username}`;
132
- console.log(" live: " + chalk_1.default.cyan(liveUrl));
133
- console.log(" api: " +
133
+ console.log(" " + chalk_1.default.bold("you are live on the agent internet."));
134
+ console.log("");
135
+ console.log(" \u250C" + "\u2500".repeat(liveUrl.length + 4) + "\u2510");
136
+ console.log(" \u2502 " + chalk_1.default.cyan.bold(liveUrl) + " \u2502");
137
+ console.log(" \u2514" + "\u2500".repeat(liveUrl.length + 4) + "\u2518");
138
+ console.log("");
139
+ console.log(chalk_1.default.dim(" api: ") +
134
140
  chalk_1.default.cyan(`https://uncommon-chicken-142.convex.site/api/v1/profiles?username=${result.username}`));
135
141
  console.log("");
142
+ console.log(chalk_1.default.dim(" share your identity: ") +
143
+ chalk_1.default.cyan("youmd link create"));
144
+ console.log("");
136
145
  }
137
146
  catch (err) {
147
+ spinner.stop();
138
148
  console.log("");
139
- console.log(chalk_1.default.red("error") + " -- failed to publish bundle");
149
+ console.log(chalk_1.default.red(" error") + " -- failed to publish bundle");
140
150
  if (err instanceof Error) {
141
151
  console.log(" " + err.message);
142
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function pullCommand(): Promise<void>;
2
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,kBAwLhC"}
@@ -0,0 +1,209 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.pullCommand = pullCommand;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const api_1 = require("../lib/api");
44
+ const config_1 = require("../lib/config");
45
+ async function pullCommand() {
46
+ const config = (0, config_1.readGlobalConfig)();
47
+ if (!config.token) {
48
+ console.log(chalk_1.default.hex("#C46A3A")(" not authenticated. run: youmd login"));
49
+ return;
50
+ }
51
+ if (!config.username) {
52
+ console.log(chalk_1.default.hex("#C46A3A")(" no username configured. run: youmd login"));
53
+ return;
54
+ }
55
+ const username = config.username;
56
+ console.log(chalk_1.default.dim(` pulling profile for @${username}...`));
57
+ // Fetch the published profile from the API
58
+ const profile = await (0, api_1.getPublicProfile)(username);
59
+ if (!profile || !profile.youJson) {
60
+ console.log(chalk_1.default.hex("#C46A3A")(" no published bundle found on you.md"));
61
+ console.log(chalk_1.default.dim(" publish your local bundle first: youmd build && youmd publish"));
62
+ return;
63
+ }
64
+ const bundleDir = (0, config_1.getLocalBundleDir)();
65
+ // Create directories if needed
66
+ const profileDir = path.join(bundleDir, "profile");
67
+ const prefsDir = path.join(bundleDir, "preferences");
68
+ const voiceDir = path.join(bundleDir, "voice");
69
+ fs.mkdirSync(profileDir, { recursive: true });
70
+ fs.mkdirSync(prefsDir, { recursive: true });
71
+ fs.mkdirSync(voiceDir, { recursive: true });
72
+ const youJson = profile.youJson;
73
+ const identity = youJson.identity || {};
74
+ const bio = identity.bio || {};
75
+ const now = youJson.now || {};
76
+ const projects = youJson.projects || [];
77
+ const values = youJson.values || [];
78
+ const links = youJson.links || {};
79
+ const prefs = youJson.preferences || {};
80
+ const analysis = youJson.analysis || {};
81
+ const voice = youJson.voice || {};
82
+ let filesWritten = 0;
83
+ // Write profile/about.md
84
+ if (bio.long || bio.medium || bio.short || identity.name) {
85
+ const aboutContent = `---
86
+ title: "About"
87
+ ---
88
+
89
+ # ${identity.name || username}
90
+
91
+ ${bio.long || bio.medium || bio.short || ""}
92
+ `;
93
+ fs.writeFileSync(path.join(profileDir, "about.md"), aboutContent);
94
+ filesWritten++;
95
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" profile/about.md"));
96
+ }
97
+ // Write profile/now.md
98
+ const focus = now.focus || [];
99
+ if (focus.length > 0) {
100
+ const nowContent = `---
101
+ title: "Now"
102
+ ---
103
+
104
+ ${focus.map((f) => `- ${f}`).join("\n")}
105
+ `;
106
+ fs.writeFileSync(path.join(profileDir, "now.md"), nowContent);
107
+ filesWritten++;
108
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" profile/now.md"));
109
+ }
110
+ // Write profile/projects.md
111
+ if (projects.length > 0) {
112
+ const projectsContent = `---
113
+ title: "Projects"
114
+ ---
115
+
116
+ ${projects.map((p) => `## ${p.name}\n${p.description || ""}\n- Role: ${p.role || "contributor"}\n- Status: ${p.status || "active"}\n${p.url ? `- URL: ${p.url}` : ""}`).join("\n\n")}
117
+ `;
118
+ fs.writeFileSync(path.join(profileDir, "projects.md"), projectsContent);
119
+ filesWritten++;
120
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" profile/projects.md"));
121
+ }
122
+ // Write profile/values.md
123
+ if (values.length > 0) {
124
+ const valuesContent = `---
125
+ title: "Values"
126
+ ---
127
+
128
+ ${values.map((v) => `- ${v}`).join("\n")}
129
+ `;
130
+ fs.writeFileSync(path.join(profileDir, "values.md"), valuesContent);
131
+ filesWritten++;
132
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" profile/values.md"));
133
+ }
134
+ // Write profile/links.md
135
+ const linkEntries = Object.entries(links).filter(([, url]) => url);
136
+ if (linkEntries.length > 0) {
137
+ const linksContent = `---
138
+ title: "Links"
139
+ ---
140
+
141
+ ${linkEntries.map(([platform, url]) => `- **${platform}**: ${url}`).join("\n")}
142
+ `;
143
+ fs.writeFileSync(path.join(profileDir, "links.md"), linksContent);
144
+ filesWritten++;
145
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" profile/links.md"));
146
+ }
147
+ // Write preferences/agent.md
148
+ if (prefs.agent) {
149
+ const agentContent = `---
150
+ title: "Agent Preferences"
151
+ ---
152
+
153
+ Tone: ${prefs.agent.tone || "direct, curious"}
154
+ Formality: ${prefs.agent.formality || "casual-professional"}
155
+ ${prefs.agent.avoid?.length ? `Avoid: ${prefs.agent.avoid.join(", ")}` : ""}
156
+ `;
157
+ fs.writeFileSync(path.join(prefsDir, "agent.md"), agentContent);
158
+ filesWritten++;
159
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" preferences/agent.md"));
160
+ }
161
+ // Write preferences/writing.md
162
+ if (prefs.writing) {
163
+ const writingContent = `---
164
+ title: "Writing Style"
165
+ ---
166
+
167
+ Style: ${prefs.writing.style || ""}
168
+ Format: ${prefs.writing.format || "markdown preferred"}
169
+ `;
170
+ fs.writeFileSync(path.join(prefsDir, "writing.md"), writingContent);
171
+ filesWritten++;
172
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" preferences/writing.md"));
173
+ }
174
+ // Write voice/voice.md (overall)
175
+ if (voice.overall || analysis.voice_summary) {
176
+ const voiceContent = `---
177
+ title: "Voice Profile"
178
+ ---
179
+
180
+ ${voice.overall || analysis.voice_summary || ""}
181
+ `;
182
+ fs.writeFileSync(path.join(voiceDir, "voice.md"), voiceContent);
183
+ filesWritten++;
184
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" voice/voice.md"));
185
+ }
186
+ // Write voice platform-specific files
187
+ const platforms = voice.platforms || {};
188
+ for (const [platform, content] of Object.entries(platforms)) {
189
+ if (content) {
190
+ fs.writeFileSync(path.join(voiceDir, `voice.${platform}.md`), content);
191
+ filesWritten++;
192
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(` voice/voice.${platform}.md`));
193
+ }
194
+ }
195
+ // Write you.json
196
+ fs.writeFileSync(path.join(bundleDir, "you.json"), JSON.stringify(youJson, null, 2));
197
+ filesWritten++;
198
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" you.json"));
199
+ // Write you.md
200
+ if (profile.youMd) {
201
+ fs.writeFileSync(path.join(bundleDir, "you.md"), profile.youMd);
202
+ filesWritten++;
203
+ console.log(chalk_1.default.green(" ✓") + chalk_1.default.dim(" you.md"));
204
+ }
205
+ console.log("");
206
+ console.log(chalk_1.default.green(` pulled ${filesWritten} files from you.md/${username}`));
207
+ console.log(chalk_1.default.dim(` bundle dir: ${bundleDir}`));
208
+ }
209
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function pushCommand(options: {
2
+ publish?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAOA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,iBA+F/D"}
@@ -0,0 +1,114 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.pushCommand = pushCommand;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const config_1 = require("../lib/config");
44
+ const compiler_1 = require("../lib/compiler");
45
+ const api_1 = require("../lib/api");
46
+ async function pushCommand(options) {
47
+ const config = (0, config_1.readGlobalConfig)();
48
+ if (!config.token) {
49
+ console.log(chalk_1.default.hex("#C46A3A")(" not authenticated. run: youmd login"));
50
+ return;
51
+ }
52
+ if (!(0, config_1.localBundleExists)()) {
53
+ console.log(chalk_1.default.hex("#C46A3A")(" no local bundle found."));
54
+ console.log(chalk_1.default.dim(" run: youmd init"));
55
+ return;
56
+ }
57
+ const bundleDir = (0, config_1.getLocalBundleDir)();
58
+ // Step 1: Compile the bundle from local files
59
+ console.log(chalk_1.default.dim(" compiling local bundle..."));
60
+ const bundle = (0, compiler_1.compileBundle)(bundleDir);
61
+ if (!bundle) {
62
+ console.log(chalk_1.default.hex("#C46A3A")(" compilation failed."));
63
+ return;
64
+ }
65
+ // Write compiled files locally
66
+ (0, compiler_1.writeBundle)(bundleDir, bundle);
67
+ const youJsonPath = path.join(bundleDir, "you.json");
68
+ const youMdPath = path.join(bundleDir, "you.md");
69
+ const manifestPath = path.join(bundleDir, "manifest.json");
70
+ if (!fs.existsSync(youJsonPath)) {
71
+ console.log(chalk_1.default.hex("#C46A3A")(" you.json not found after compilation."));
72
+ return;
73
+ }
74
+ const youJson = JSON.parse(fs.readFileSync(youJsonPath, "utf-8"));
75
+ const youMd = fs.existsSync(youMdPath)
76
+ ? fs.readFileSync(youMdPath, "utf-8")
77
+ : "";
78
+ const manifest = fs.existsSync(manifestPath)
79
+ ? JSON.parse(fs.readFileSync(manifestPath, "utf-8"))
80
+ : {};
81
+ // Step 2: Upload to Convex
82
+ console.log(chalk_1.default.dim(" pushing to you.md..."));
83
+ try {
84
+ const uploadResult = await (0, api_1.uploadBundle)({
85
+ manifest,
86
+ youJson,
87
+ youMd,
88
+ });
89
+ if (!uploadResult.ok) {
90
+ console.log(chalk_1.default.hex("#C46A3A")(` push failed: ${JSON.stringify(uploadResult.data)}`));
91
+ return;
92
+ }
93
+ console.log(chalk_1.default.green(" ✓") +
94
+ chalk_1.default.dim(` bundle uploaded (v${uploadResult.data?.version || "?"})`));
95
+ // Step 3: Auto-publish if --publish flag
96
+ if (options.publish !== false) {
97
+ console.log(chalk_1.default.dim(" publishing..."));
98
+ const pubResult = await (0, api_1.publishLatest)();
99
+ if (pubResult.ok) {
100
+ console.log(chalk_1.default.green(" ✓") +
101
+ chalk_1.default.dim(` published v${pubResult.data.version} → you.md/${pubResult.data.username}`));
102
+ }
103
+ else {
104
+ console.log(chalk_1.default.hex("#C46A3A")(` publish failed: ${JSON.stringify(pubResult.data)}`));
105
+ }
106
+ }
107
+ console.log("");
108
+ console.log(chalk_1.default.green(" push complete."));
109
+ }
110
+ catch (err) {
111
+ console.log(chalk_1.default.hex("#C46A3A")(` push failed: ${err instanceof Error ? err.message : String(err)}`));
112
+ }
113
+ }
114
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAYA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoFnD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAYA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoInD"}
@@ -44,7 +44,7 @@ const config_1 = require("../lib/config");
44
44
  const api_1 = require("../lib/api");
45
45
  async function statusCommand() {
46
46
  console.log("");
47
- console.log("you.md -- status");
47
+ console.log(" " + chalk_1.default.bold("you.md") + chalk_1.default.dim(" -- status"));
48
48
  console.log("");
49
49
  // Check authentication
50
50
  const authed = (0, config_1.isAuthenticated)();
@@ -56,7 +56,7 @@ async function statusCommand() {
56
56
  (hasBundle ? chalk_1.default.green("initialized") : chalk_1.default.yellow("not initialized")));
57
57
  if (!hasBundle) {
58
58
  console.log("");
59
- console.log("Run " + chalk_1.default.cyan("youmd init") + " to create a local bundle.");
59
+ console.log(" run " + chalk_1.default.cyan("youmd init") + " to create a local bundle.");
60
60
  console.log("");
61
61
  // Still show remote status if authenticated
62
62
  if (authed) {
@@ -67,12 +67,13 @@ async function statusCommand() {
67
67
  const bundleDir = (0, config_1.getLocalBundleDir)();
68
68
  // Check manifest for build status
69
69
  const manifestPath = path.join(bundleDir, "manifest.json");
70
+ let lastBuildTime = "";
70
71
  if (fs.existsSync(manifestPath)) {
71
72
  try {
72
73
  const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
73
74
  if (manifest.version > 0) {
74
75
  console.log(" version: " + chalk_1.default.green("v" + manifest.version));
75
- console.log(" built: " + manifest.generatedAt);
76
+ lastBuildTime = manifest.generatedAt;
76
77
  }
77
78
  else {
78
79
  console.log(" version: " + chalk_1.default.yellow("not built"));
@@ -97,16 +98,58 @@ async function statusCommand() {
97
98
  else {
98
99
  console.log(" publish: " + chalk_1.default.yellow("never"));
99
100
  }
100
- // Count profile and preference files
101
- const profileDir = path.join(bundleDir, "profile");
102
- const prefsDir = path.join(bundleDir, "preferences");
103
- const profileCount = fs.existsSync(profileDir)
104
- ? fs.readdirSync(profileDir).filter((f) => f.endsWith(".md")).length
105
- : 0;
106
- const prefsCount = fs.existsSync(prefsDir)
107
- ? fs.readdirSync(prefsDir).filter((f) => f.endsWith(".md")).length
108
- : 0;
109
- console.log(" files: " + profileCount + " profile, " + prefsCount + " preferences");
101
+ // Last build timestamp
102
+ if (lastBuildTime) {
103
+ const builtDate = new Date(lastBuildTime);
104
+ const ago = timeSince(builtDate);
105
+ console.log(" built: " + chalk_1.default.dim(ago + " ago"));
106
+ }
107
+ // Rich section summary with tree characters
108
+ console.log("");
109
+ console.log(" " + chalk_1.default.bold("local bundle:"));
110
+ const dirs = [
111
+ { dir: "profile", label: "profile" },
112
+ { dir: "preferences", label: "preferences" },
113
+ ];
114
+ for (let d = 0; d < dirs.length; d++) {
115
+ const { dir, label } = dirs[d];
116
+ const dirPath = path.join(bundleDir, dir);
117
+ if (!fs.existsSync(dirPath))
118
+ continue;
119
+ const files = fs
120
+ .readdirSync(dirPath)
121
+ .filter((f) => f.endsWith(".md"))
122
+ .sort();
123
+ if (files.length === 0)
124
+ continue;
125
+ const isLastDir = d === dirs.length - 1;
126
+ const dirConnector = isLastDir ? "\u2514\u2500\u2500" : "\u251C\u2500\u2500";
127
+ const dirPipe = isLastDir ? " " : "\u2502 ";
128
+ console.log(" " + dirConnector + " " + chalk_1.default.bold(label));
129
+ for (let i = 0; i < files.length; i++) {
130
+ const file = files[i];
131
+ const filePath = path.join(dirPath, file);
132
+ const raw = fs.readFileSync(filePath, "utf-8");
133
+ const contentLines = raw
134
+ .replace(/---[\s\S]*?---/, "")
135
+ .trim()
136
+ .split("\n")
137
+ .filter((l) => l.trim() && !l.startsWith("<!--"));
138
+ const hasContent = contentLines.length > 0;
139
+ const preview = hasContent
140
+ ? contentLines[0].replace(/^#+\s*/, "").trim().slice(0, 45)
141
+ : "";
142
+ const isLast = i === files.length - 1;
143
+ const fileConnector = isLast ? "\u2514\u2500\u2500" : "\u251C\u2500\u2500";
144
+ const name = path.basename(file, ".md");
145
+ const statusIcon = hasContent ? chalk_1.default.green("\u2713") : chalk_1.default.dim("\u2022");
146
+ const nameStr = hasContent ? chalk_1.default.cyan(name + ".md") : chalk_1.default.dim(name + ".md");
147
+ const previewStr = hasContent
148
+ ? chalk_1.default.dim(" -- " + preview)
149
+ : chalk_1.default.dim(" (empty)");
150
+ console.log(" " + dirPipe + fileConnector + " " + statusIcon + " " + nameStr + previewStr);
151
+ }
152
+ }
110
153
  // Remote status
111
154
  if (authed) {
112
155
  console.log("");
@@ -116,6 +159,19 @@ async function statusCommand() {
116
159
  console.log("");
117
160
  }
118
161
  }
162
+ function timeSince(date) {
163
+ const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
164
+ if (seconds < 60)
165
+ return "just now";
166
+ const minutes = Math.floor(seconds / 60);
167
+ if (minutes < 60)
168
+ return minutes + "m";
169
+ const hours = Math.floor(minutes / 60);
170
+ if (hours < 24)
171
+ return hours + "h";
172
+ const days = Math.floor(hours / 24);
173
+ return days + "d";
174
+ }
119
175
  async function showRemoteStatus() {
120
176
  console.log(" " + chalk_1.default.dim("--- remote ---"));
121
177
  try {