
Security News
pnpm 11.5 Adds Support for Recognizing npm Staged Publishes
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.
tasknotes-nlp-core
Advanced tools
Framework-agnostic natural-language task parsing for TaskNotes-style workflows.
tasknotes-nlp-core turns free text like:
Pay rent tomorrow 9am #finance @home +admin every month
into structured task data (title, dates, tags, contexts, projects, recurrence, estimates, and custom fields).
npm install tasknotes-nlp-core
NaturalLanguageParserCore: main parser engineTriggerConfigService: helper for trigger/property mappingDEFAULT_NLP_TRIGGERSgetAvailableLanguages, getLanguageConfig, detectSystemLanguage)import {
NaturalLanguageParserCore,
DEFAULT_NLP_TRIGGERS,
type StatusConfig,
type PriorityConfig,
} from "tasknotes-nlp-core";
const statusConfigs: StatusConfig[] = [
{
id: "open",
value: "open",
label: "Open",
color: "#64748b",
isCompleted: false,
order: 0,
autoArchive: false,
autoArchiveDelay: 0,
},
{
id: "done",
value: "done",
label: "Done",
color: "#22c55e",
isCompleted: true,
order: 1,
autoArchive: true,
autoArchiveDelay: 7,
},
];
const priorityConfigs: PriorityConfig[] = [
{ id: "urgent", value: "urgent", label: "Urgent", color: "#ef4444", weight: 100 },
{ id: "normal", value: "normal", label: "Normal", color: "#3b82f6", weight: 50 },
];
const parser = new NaturalLanguageParserCore(
statusConfigs,
priorityConfigs,
true, // defaultToScheduled
"en", // language code
DEFAULT_NLP_TRIGGERS // optional trigger config
);
const parsed = parser.parseInput(
"Pay rent tomorrow 9am #finance @home +admin every month 30m"
);
console.log(parsed);
parseInput() returns:
interface ParsedTaskData {
title: string;
details?: string;
dueDate?: string; // yyyy-MM-dd
scheduledDate?: string; // yyyy-MM-dd
dueTime?: string; // HH:mm
scheduledTime?: string; // HH:mm
priority?: string;
status?: string;
tags: string[];
contexts: string[];
projects: string[];
recurrence?: string; // rrule string
estimate?: number; // minutes
isCompleted?: boolean;
userFields?: Record<string, string | string[]>;
}
new NaturalLanguageParserCore(
statusConfigs?,
priorityConfigs?,
defaultToScheduled?,
languageCode?,
nlpTriggers?,
userFields?,
options?
)
statusConfigs: optional custom status list. If omitted, language fallback matching is used.priorityConfigs: optional custom priority list. If omitted, language fallback matching is used.defaultToScheduled:
true: ambiguous date text (for example tomorrow) goes to scheduledDatefalse: ambiguous date text goes to dueDatelanguageCode: one of supported codes (defaults to en).nlpTriggers: trigger map for tags/contexts/projects/status/priority.userFields: custom field definitions with trigger support.options.dateLocale: locale used for ambiguous numeric dates, for example en-GB parses 11/06/2026 as 2026-06-11.options.dateOrder: explicit numeric date order override, either day-first or month-first.Quoted spans and backslash-prefixed literals are preserved as plain title text
instead of being parsed as NLP syntax. For example, "Today" and \tomorrow
remain literal text, and \@ABC remains @ABC instead of becoming a context.
Default triggers:
# -> tags@ -> contexts+ -> projects* -> status! -> priority (disabled by default)Example custom trigger config:
const customTriggers = {
triggers: [
{ propertyId: "tags", trigger: "#", enabled: true },
{ propertyId: "contexts", trigger: "@", enabled: true },
{ propertyId: "projects", trigger: ">", enabled: true },
{ propertyId: "status", trigger: "~", enabled: true },
{ propertyId: "priority", trigger: "!", enabled: true },
],
};
userFields supports these types:
textnumberdatebooleanlistList and text-like values support quoted multi-word input (for example ~client "Acme Corp").
Built-in languages:
en, es, fr, de, ru, zh, ja, it, nl, pt, sv, ukHelpers:
import { getAvailableLanguages, detectSystemLanguage } from "tasknotes-nlp-core";
Note: detectSystemLanguage() uses navigator.language when available; in non-browser runtimes it falls back to en.
Recurrence phrases are parsed into RRULE strings (for example FREQ=WEEKLY;BYDAY=MO).
For display, you can convert RRULE text with rrule or use parser preview helpers:
const previewItems = parser.getPreviewData(parsed);
const previewText = parser.getPreviewText(parsed);
This package is intentionally UI/framework agnostic. A common setup is:
NaturalLanguageParserCore in an adapter service.npm install
npm run build
npm run release:patch # x.y.z -> x.y.(z+1)
npm run release:minor # x.y.z -> x.(y+1).0
npm run release:major # x.y.z -> (x+1).0.0
These commands run npm version, create a git tag, push main with tags, and publish to npm.
MIT
FAQs
Shared natural language parsing core for TaskNotes
The npm package tasknotes-nlp-core receives a total of 47 weekly downloads. As such, tasknotes-nlp-core popularity was classified as not popular.
We found that tasknotes-nlp-core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.