@forwardimpact/outpost 3.12.1 → 3.13.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/package.json +3 -2
- package/src/kb-manager.js +58 -5
- package/src/kb-validator.js +762 -0
- package/src/outpost.js +73 -8
- package/templates/.claude/agents/chief-of-staff.md +14 -6
- package/templates/.claude/agents/concierge.md +9 -2
- package/templates/.claude/agents/head-hunter.md +9 -2
- package/templates/.claude/agents/librarian.md +11 -4
- package/templates/.claude/agents/postman.md +9 -2
- package/templates/.claude/agents/recruiter.md +9 -2
- package/templates/.claude/skills/anarlog-follow/SKILL.md +53 -29
- package/templates/.claude/skills/anarlog-follow/references/sessions.md +52 -0
- package/templates/.claude/skills/anarlog-process/SKILL.md +88 -45
- package/templates/.claude/skills/anarlog-process/references/extraction.md +19 -11
- package/templates/.claude/skills/anarlog-process/references/sessions.md +92 -58
- package/templates/.claude/skills/anarlog-process/scripts/scan.mjs +404 -163
- package/templates/.claude/skills/candidate-report/SKILL.md +12 -9
- package/templates/.claude/skills/changelog/SKILL.md +106 -56
- package/templates/.claude/skills/deck-create/SKILL.md +60 -2
- package/templates/.claude/skills/deck-review/SKILL.md +4 -1
- package/templates/.claude/skills/deck-summarize/SKILL.md +6 -2
- package/templates/.claude/skills/deck-summarize/references/brief-template.md +1 -1
- package/templates/.claude/skills/doc-collab/SKILL.md +16 -11
- package/templates/.claude/skills/doc-create/SKILL.md +6 -3
- package/templates/.claude/skills/draft-emails/SKILL.md +31 -25
- package/templates/.claude/skills/draft-emails/references/template.md +1 -1
- package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +14 -8
- package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +9 -3
- package/templates/.claude/skills/extract-entities/SKILL.md +17 -16
- package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +2 -1
- package/templates/.claude/skills/extract-entities/references/conditions.md +6 -5
- package/templates/.claude/skills/extract-entities/references/links.md +34 -10
- package/templates/.claude/skills/extract-entities/references/recruitment.md +15 -10
- package/templates/.claude/skills/extract-entities/references/resolution.md +1 -1
- package/templates/.claude/skills/extract-entities/references/sources.md +1 -1
- package/templates/.claude/skills/extract-entities/references/templates-conditions.md +10 -4
- package/templates/.claude/skills/extract-entities/references/templates-people-orgs.md +29 -10
- package/templates/.claude/skills/extract-entities/references/templates-priorities.md +8 -2
- package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +19 -7
- package/templates/.claude/skills/meeting-prep/SKILL.md +23 -18
- package/templates/.claude/skills/organize-files/SKILL.md +3 -0
- package/templates/.claude/skills/person-identify/SKILL.md +58 -10
- package/templates/.claude/skills/person-identify/scripts/identify.sh +110 -11
- package/templates/.claude/skills/person-lookup/SKILL.md +8 -3
- package/templates/.claude/skills/person-lookup/scripts/lookup.sh +27 -1
- package/templates/.claude/skills/req-assess/SKILL.md +19 -11
- package/templates/.claude/skills/req-assess/references/interview-template.md +6 -1
- package/templates/.claude/skills/req-assess/references/panel-template.md +5 -1
- package/templates/.claude/skills/req-bundle/SKILL.md +164 -0
- package/templates/.claude/skills/req-bundle/references/matching.md +70 -0
- package/templates/.claude/skills/req-bundle/references/pdf-structure.md +74 -0
- package/templates/.claude/skills/req-bundle/scripts/split-bundle.mjs +377 -0
- package/templates/.claude/skills/req-decide/SKILL.md +26 -18
- package/templates/.claude/skills/req-decide/references/template.md +2 -2
- package/templates/.claude/skills/req-forget/SKILL.md +39 -22
- package/templates/.claude/skills/req-forget/references/classify.md +12 -10
- package/templates/.claude/skills/req-forget/references/locations.md +27 -22
- package/templates/.claude/skills/req-forget/references/report-template.md +23 -15
- package/templates/.claude/skills/req-scan/SKILL.md +6 -3
- package/templates/.claude/skills/req-scan/references/template.md +11 -1
- package/templates/.claude/skills/req-screen/SKILL.md +78 -34
- package/templates/.claude/skills/req-screen/references/rubric.md +38 -42
- package/templates/.claude/skills/req-screen/references/scoring.md +79 -0
- package/templates/.claude/skills/req-screen/references/template.md +26 -14
- package/templates/.claude/skills/req-track/SKILL.md +44 -44
- package/templates/.claude/skills/req-track/references/fields.md +18 -15
- package/templates/.claude/skills/req-track/references/overlays.md +42 -0
- package/templates/.claude/skills/req-track/references/signals.md +2 -2
- package/templates/.claude/skills/req-track/references/templates.md +28 -27
- package/templates/.claude/skills/req-workday/SKILL.md +49 -20
- package/templates/.claude/skills/req-workday/references/brief.md +81 -0
- package/templates/.claude/skills/req-workday/references/templates.md +6 -73
- package/templates/.claude/skills/req-workday/references/xlsx-format.md +19 -0
- package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +96 -20
- package/templates/.claude/skills/send-chat/SKILL.md +11 -11
- package/templates/.claude/skills/sync-apple-calendar/SKILL.md +3 -0
- package/templates/.claude/skills/sync-apple-mail/SKILL.md +3 -0
- package/templates/.claude/skills/sync-teams/SKILL.md +3 -0
- package/templates/.claude/skills/upstream-instructions/SKILL.md +8 -5
- package/templates/.claude/skills/upstream-instructions/references/examples.md +3 -3
- package/templates/CLAUDE.md +96 -87
- package/templates/MIGRATION.md +359 -0
- package/templates/registry.yaml +25 -0
- package/templates/.claude/skills/anarlog-follow/scripts/follow.mjs +0 -243
- package/templates/.claude/skills/anarlog-trim/SKILL.md +0 -186
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forwardimpact/outpost",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.13.0",
|
|
4
4
|
"description": "Personal operations center — context assembled from email, calendar, and knowledge so preparation is continuous instead of a morning scramble.",
|
|
5
5
|
"homepage": "https://www.forwardimpact.team",
|
|
6
6
|
"repository": {
|
|
@@ -51,7 +51,8 @@
|
|
|
51
51
|
"@forwardimpact/libcli": "^0.1.0",
|
|
52
52
|
"@forwardimpact/libpreflight": "^0.1.0",
|
|
53
53
|
"@forwardimpact/libtelemetry": "^0.1.33",
|
|
54
|
-
"@forwardimpact/libutil": "^0.1.0"
|
|
54
|
+
"@forwardimpact/libutil": "^0.1.0",
|
|
55
|
+
"yaml": "^2.9.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@forwardimpact/libmock": "^0.1.0"
|
package/src/kb-manager.js
CHANGED
|
@@ -6,6 +6,8 @@ import { join, dirname, resolve, basename } from "node:path";
|
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
import { createLogger } from "@forwardimpact/libtelemetry";
|
|
8
8
|
|
|
9
|
+
import { LEGACY_ROOTS } from "./kb-validator.js";
|
|
10
|
+
|
|
9
11
|
/** Manage the knowledge base lifecycle: init, update, and settings merge. */
|
|
10
12
|
export class KBManager {
|
|
11
13
|
#fs;
|
|
@@ -207,14 +209,23 @@ export class KBManager {
|
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
await this.#ensureDir(dest);
|
|
210
|
-
// Create the
|
|
211
|
-
//
|
|
212
|
-
// The skills that write into the
|
|
213
|
-
// Organizations, ...) create them on
|
|
214
|
-
|
|
212
|
+
// Create the tier directories and the personal `Briefings/` root only.
|
|
213
|
+
// The numbered tiers are the knowledge graph and the units of sharing;
|
|
214
|
+
// every other root entry is personal. The skills that write into the
|
|
215
|
+
// entity subdirectories (People, Organizations, ...) create them on
|
|
216
|
+
// demand inside each tier.
|
|
217
|
+
for (const d of [
|
|
218
|
+
"0-Draft",
|
|
219
|
+
"1-Management",
|
|
220
|
+
"2-Confidential",
|
|
221
|
+
"3-Team",
|
|
222
|
+
"4-Public",
|
|
223
|
+
"Briefings",
|
|
224
|
+
])
|
|
215
225
|
await this.#ensureDir(join(dest, d));
|
|
216
226
|
|
|
217
227
|
await this.copyBundledFiles(templateDir, dest);
|
|
228
|
+
await this.#installRegistry(templateDir, dest);
|
|
218
229
|
await this.#linkIntoDocuments(dest);
|
|
219
230
|
|
|
220
231
|
this.#logger.info(
|
|
@@ -265,10 +276,52 @@ export class KBManager {
|
|
|
265
276
|
};
|
|
266
277
|
}
|
|
267
278
|
await this.copyBundledFiles(templateDir, dest);
|
|
279
|
+
await this.#installRegistry(templateDir, dest);
|
|
280
|
+
await this.#installMigrationGuide(templateDir, dest);
|
|
268
281
|
this.#logger.info(`\nKnowledge base updated: ${dest}`);
|
|
269
282
|
return { ok: true, value: { dest } };
|
|
270
283
|
}
|
|
271
284
|
|
|
285
|
+
/**
|
|
286
|
+
* Install the default `registry.yaml` when the KB has none. The registry
|
|
287
|
+
* is a personal surface humans edit, so this method never overwrites an
|
|
288
|
+
* existing one. `copyBundledFiles` copies named files only and never picks
|
|
289
|
+
* it up.
|
|
290
|
+
* @param {string} tpl - Template directory
|
|
291
|
+
* @param {string} dest - Knowledge base directory
|
|
292
|
+
* @returns {Promise<void>}
|
|
293
|
+
*/
|
|
294
|
+
async #installRegistry(tpl, dest) {
|
|
295
|
+
const src = join(tpl, "registry.yaml");
|
|
296
|
+
const destPath = join(dest, "registry.yaml");
|
|
297
|
+
if (!(await this.#exists(src)) || (await this.#exists(destPath))) return;
|
|
298
|
+
await this.#fs.copyFile(src, destPath);
|
|
299
|
+
this.#logger.info(` Installed registry.yaml`);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Install MIGRATION.md while the KB still carries a legacy layout
|
|
304
|
+
* (`Knowledge/` or `Drafts/` at the root). A conforming KB never receives
|
|
305
|
+
* it, and this method removes nothing.
|
|
306
|
+
* @param {string} tpl - Template directory
|
|
307
|
+
* @param {string} dest - Knowledge base directory
|
|
308
|
+
* @returns {Promise<void>}
|
|
309
|
+
*/
|
|
310
|
+
async #installMigrationGuide(tpl, dest) {
|
|
311
|
+
let legacy = false;
|
|
312
|
+
for (const marker of LEGACY_ROOTS) {
|
|
313
|
+
if (await this.#exists(join(dest, marker))) legacy = true;
|
|
314
|
+
}
|
|
315
|
+
if (!legacy) return;
|
|
316
|
+
await this.#fs.copyFile(
|
|
317
|
+
join(tpl, "MIGRATION.md"),
|
|
318
|
+
join(dest, "MIGRATION.md"),
|
|
319
|
+
);
|
|
320
|
+
this.#logger.info(
|
|
321
|
+
` Installed MIGRATION.md — this knowledge base carries the legacy layout. Follow it to migrate to tiers.`,
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
|
|
272
325
|
/**
|
|
273
326
|
* @param {string} p
|
|
274
327
|
* @returns {string}
|