@nowline/mcp 0.0.0-dev.20260603150914.g70caedb

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 ADDED
@@ -0,0 +1,190 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to the Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by the Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding any notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ Copyright 2026 Lolay, Inc.
179
+
180
+ Licensed under the Apache License, Version 2.0 (the "License");
181
+ you may not use this file except in compliance with the License.
182
+ You may obtain a copy of the License at
183
+
184
+ http://www.apache.org/licenses/LICENSE-2.0
185
+
186
+ Unless required by applicable law or agreed to in writing, software
187
+ distributed under the License is distributed on an "AS IS" BASIS,
188
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
189
+ See the License for the specific language governing permissions and
190
+ limitations under the License.
@@ -0,0 +1,9 @@
1
+ /** Full text of the nowline.5 DSL man page. Serves as the `nowline://reference` resource. */
2
+ export declare const REFERENCE_MAN_PAGE: string;
3
+ export interface ExampleFile {
4
+ name: string;
5
+ content: string;
6
+ }
7
+ /** Canonical example .nowline files bundled as the `nowline://examples` resource. */
8
+ export declare const EXAMPLES: ExampleFile[];
9
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/generated/resources.ts"],"names":[],"mappings":"AAIA,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,EAAE,MAAow3C,CAAC;AAEty3C,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,eAAO,MAAM,QAAQ,EAAE,WAAW,EA6DjC,CAAC"}
@@ -0,0 +1,69 @@
1
+ // GENERATED — do not edit. Re-run `pnpm --filter @nowline/mcp build` to regenerate.
2
+ //
3
+ // Source: packages/cli/man/nowline.5 (reference) + examples/*.nowline (examples).
4
+ /** Full text of the nowline.5 DSL man page. Serves as the `nowline://reference` resource. */
5
+ export const REFERENCE_MAN_PAGE = ".Dd $Mdocdate$\n.Dt NOWLINE 5\n.Os\n.Sh NAME\n.Nm nowline\n.Nd Nowline DSL roadmap file format\n.Sh DESCRIPTION\nA\n.Pa .nowline\nfile is an indentation-significant outline that defines a roadmap, not\na Gantt chart.\nThe file itself is the product; every other artifact (SVG, PNG, PDF,\nHTML, Markdown+Mermaid, XLSX, MS Project XML) is a view of it produced\nby\n.Xr nowline 1 .\n.Pp\nThis page documents the file format.\nFor the rendering pipeline and visual contracts, see\n.Pa specs/rendering.md\nin the source repository.\nFor the CLI surface, see\n.Xr nowline 1 .\n.Pp\nThe canonical, prose source for everything below is\n.Pa specs/dsl.md\nin the source repository; this page is a hand-authored reference\ndistilled from it.\n.Sh FILE STRUCTURE\nA\n.Pa .nowline\nfile has up to four sections in strict order:\n.Bl -enum -offset indent\n.It\n.Sy nowline\ndirective (optional, recommended). Must be the first non-comment,\nnon-blank line if present.\n.It\n.Sy include\ndeclarations (optional). Pull in other\n.Pa .nowline\nfiles.\n.It\n.Sy config\nsection (optional). Rendering configuration: styles, defaults,\nscale, calendar, symbols.\n.It\n.Sy roadmap\nsection (required). Content: persons, teams, anchors, labels, sizes,\nstatuses, swimlanes, items, milestones, footnotes.\n.El\n.Pp\n.Sy config\nand\n.Sy roadmap\nare section markers, not indent-containers.\nKeywords inside each section appear at the top level (not indented\nunder the marker).\nIndentation is used where nesting is real: style properties under a\n.Sy style\nblock, items under a\n.Sy swimlane ,\nteam members under a\n.Sy team .\n.Pp\nIndentation is significant.\nTwo-space indent is canonical; one tab is also accepted.\nSpaces and tabs must not be mixed inside a single file \\(em the\nparser rejects mixed indentation with an error identifying the first\noffending line.\n.Pp\nStrings are double-quoted\n.Pq Qq Auth refactor ,\nnot bare or single-quoted.\nProperties are\n.Sy key:value\npairs on the same line as the entity; values containing spaces must\nbe double-quoted.\nProperty keys never use\n.Sq = .\n.Pp\nBuilt-in keywords and property names are kebab-case\n.Pq Sy capacity-icon , Sy days-per-week , Sy in-progress .\nAuthor-chosen identifiers may use any combination of letters,\ndigits, underscores, and dashes\n.Pq Sy auth-refactor , Sy authRefactor , Sy auth_refactor ;\nthey must start with a letter or underscore.\n.Pp\nComments use\n.Sq //\nfor single-line and\n.Sq /* */\nfor multi-line.\nA trailing\n.Sq \\e\ncontinues a line; indentation on the continuation line is cosmetic.\nUse\n.Sq \\e\\e\nfor a literal backslash.\n.Sh DIRECTIVE\nThe\n.Sy nowline\ndirective declares which DSL major version a file targets:\n.Bd -literal -offset indent\nnowline v1\n.Ed\n.Pp\nThe version is integer-only\n.Pq Sy v1 , Sy v2 , Sy v3 , ...\nand is independent of the npm package version.\nWithin a DSL major, the parser must accept every valid file written\nfor that major; new syntax may be added between package minor/patch\nreleases, but no breaking change to an existing valid\n.Sy nowline v1\nfile ships without bumping the directive to\n.Sy v2 .\nWhen the parser encounters a version newer than it supports, it\nemits an error identifying the required version.\nWhen the directive is omitted, the parser assumes the latest\nversion it supports.\n.Pp\nThe directive line accepts optional file-level properties after the\nversion.\nThe only directive property today is\n.Sy locale: ,\na BCP-47 tag controlling localized rendering and validator\nmessages:\n.Bd -literal -offset indent\nnowline v1 locale:fr-CA\n.Ed\n.Pp\nUnknown directive keys are an error so typos surface immediately.\nSee\n.Pa specs/localization.md\nfor the locale model and precedence chain.\n.Pp\nThe\n.Sy nowline\ndirective is the only construct that does not follow the universal\ndeclaration pattern\n.Pq see Sx GRAMMAR :\nno identifier, no title, just the keyword and version.\n.Sh INCLUDES\n.Sy include\npulls another\n.Pa .nowline\nfile into the current file:\n.Bd -literal -offset indent\ninclude \"shared/teams.nowline\"\ninclude \"brand-styles.nowline\" roadmap:ignore\ninclude \"partner.nowline\" config:isolate roadmap:isolate\n.Ed\n.Pp\nTwo optional properties \\(em\n.Sy config:\nand\n.Sy roadmap:\n\\(em control how the included file's content is handled.\nThey operate on two independent categories:\n.Bl -tag -width \"Roadmap (content)\"\n.It Sy Config\nThe included file's\n.Sy scale ,\n.Sy style ,\n.Sy symbol ,\n.Sy default ,\nand\n.Sy calendar\ndeclarations.\n.It Sy Roadmap\nThe included file's\n.Sy roadmap\ndeclaration plus all its content (persons, teams, anchors, labels,\nsizes, statuses, swimlanes, items, milestones, footnotes).\n.El\n.Pp\n.Sy config:\nmodes:\n.Bl -tag -width \"isolate\"\n.It Sy merge Pq default\nChild config items are merged into the parent.\nOn collision, the\n.Em parent wins\nand the parser emits a warning identifying the shadowed definition\nand source file.\n.It Sy ignore\nChild config is dropped entirely.\nIf child roadmap content is merged, it resolves styles from the\nparent's post-merge config.\n.It Sy isolate\nChild config is only available within the child file; parent config\nis only available in the parent.\nNeither side bleeds into the other.\n.El\n.Pp\n.Sy roadmap:\nmodes:\n.Bl -tag -width \"isolate\"\n.It Sy merge Pq default\nChild content entities are merged into the parent.\nOn collision,\n.Em parent wins\nand a warning is emitted.\nA swimlane collision drops the swimlane's contained items as well.\nMerged content resolves styles from the post-merge config.\n.It Sy ignore\nChild content is dropped.\nUse for shared style libraries\n.Pq Sy include \"brand.nowline\" roadmap:ignore .\nShared label, status, and size vocabulary uses\n.Sy roadmap:merge ,\nnot\n.Sy roadmap:ignore .\n.It Sy isolate\nChild content stays scoped to the child file and uses only the\nchild's config.\nThe child must contain a\n.Sy roadmap\ndeclaration (needed for the region label).\nThe isolated content renders as a visually distinct region with its\nown border.\n.El\n.Pp\nIncludes are processed depth-first, in file order.\nWhen the processor encounters an\n.Sy include ,\nit processes that child (and its includes recursively) before\ncontinuing with the next declaration.\nConfig is merged before roadmap content at each level.\n.Pp\nDiamond includes (A includes B and C, both include D) are valid;\nD is processed once on first encounter.\nDuplicate includes of the same file in a single file are an error.\nCircular includes are an error.\n.Pp\nIncludes are resolved relative to the including file's directory.\nPaths use forward slashes on all platforms.\nIncludes must appear before\n.Sy config\nand\n.Sy roadmap\n\\(em they are the first declarations in a file (after the optional\n.Sy nowline\ndirective).\n.Pp\nFor any include whose\n.Sy roadmap:\nmode is not\n.Sy ignore ,\nif the child file declares a\n.Sy roadmap ,\nthe parent and child must agree on\n.Sy start: \\(em\nboth absent, or both present with identical values.\nA mismatch is an error reported on the parent's\n.Sy include\nline; this is an explicit exception to the\n.Qq parent wins\nmerge behaviour because\n.Sy start:\ndefines the shared timeline baseline.\n.Sh CONFIG SECTION\nThe optional\n.Sy config\nsection marker appears before\n.Sy roadmap .\nConfig keywords sit at the top level (not indented under the\nmarker) and define rendering vocabulary, defaults, axis settings,\nday arithmetic, and custom symbols.\n.Pp\nFive config keywords:\n.Sy scale ,\n.Sy style ,\n.Sy symbol ,\n.Sy default ,\n.Sy calendar .\nEvery config entry is optional; if\n.Sy config\nis omitted, all built-in defaults apply.\n.Ss style \\(em named visual definition\nA\n.Sy style\ndeclares a named visual treatment.\nProperties are indented beneath:\n.Bd -literal -offset indent\nstyle enterprise \"Enterprise readiness\"\n bg: blue\n fg: navy\n text: white\n border: solid\n icon: shield\n\nstyle risky\n border: dashed\n fg: orange\n.Ed\n.Pp\nStyles follow the universal\n.Sy [id] [\"title\"]\npattern.\nProperties are listed under\n.Sx STYLE PROPERTIES\nbelow.\n.Ss symbol \\(em custom named symbol\nA\n.Sy symbol\ndeclares a custom symbol for use by\n.Sy icon:\nand\n.Sy capacity-icon:\nstyle properties.\nAuthors use the inline Unicode-literal form\n.Pq Sy capacity-icon:\"\\(rs\"\nfor one-off symbols; named\n.Sy symbol\ndeclarations are for reusable ones.\n.Bd -literal -offset indent\nsymbol budget \"Budget\" unicode:\"\\(em\" ascii:\"$\"\nsymbol fte unicode:\"\\eu{1F464}\" ascii:\"@\"\nsymbol star unicode:\"\\(em\"\n.Ed\n.Pp\nRequired:\n.Sy unicode:\"<string>\"\n\\(em the Unicode character (literal or\n.Sy \\eu{...}\nescape, may be a multi-codepoint grapheme cluster).\n.Pp\nOptional:\n.Sy ascii:\"<string>\"\n\\(em short ASCII fallback for terminals lacking the glyph,\n\\(<= 3 ASCII characters; defaults to\n.Sq \\&?\nwhen omitted.\n.Pp\nA\n.Sy symbol\nid must not shadow a built-in icon name\n.Pq Sy none , Sy multiplier , Sy person , Sy people , Sy points , Sy time , Sy shield , Sy warning , Sy lock .\n.Ss default \\(em default property values per entity type\n.Sy default <entity> <properties>\nsets default property values for a given entity type.\nOne declaration per entity type per file:\n.Bd -literal -offset indent\ndefault item status:planned shadow:subtle\ndefault label style:subtle corner-radius:full\ndefault swimlane padding:sm spacing:none\ndefault roadmap padding:md header-height:md font:sans\ndefault milestone weight:bold\ndefault footnote style:subtle shadow:subtle\ndefault anchor style:subtle\ndefault parallel bracket:none\ndefault group padding:xs spacing:xs\n.Ed\n.Pp\nSupported entity types:\n.Sy item , label , swimlane , roadmap , parallel , group , milestone , footnote , anchor .\nWhen an entity omits a property, the matching default applies;\nexplicit values on the entity always override defaults.\n.Pp\nIdentity-defining, sizing, sequencing, reference, and prose\nproperties cannot be defaulted because they must be explicit per\nentity.\nBanned, by entity type:\n.Bl -tag -width \"default footnote\"\n.It Sy default item\n.Sy size , duration , after , before , remaining , link , description , owner .\n.It Sy default milestone\n.Sy date , after , link , description .\n.It Sy default anchor\n.Sy date , link , description .\n.It Sy default footnote\n.Sy on , link , description .\n.El\n.Pp\nRaw style properties\n.Pq Sy bg , Sy fg , Sy text , Sy border , Sy shadow , ...\nare allowed on\n.Sy default\nbecause\n.Sy default\nlives in\n.Sy config ,\nthe presentation section.\nThe ban on raw style properties applies to roadmap-section\nentities, not to\n.Sy default\nlines.\n.Pp\n.Sy capacity\nis allowed on\n.Sy default item\nbut\n.Em not\non\n.Sy default swimlane\n\\(em each lane's budget is intentionally explicit at its declaration\nsite.\n.Sy utilization-warn-at: ,\n.Sy utilization-over-at: ,\nand\n.Sy capacity-icon:\nare allowed on both\n.Sy default swimlane\nand\n.Sy default item\nper the usual presentation-property rule.\n.Ss scale \\(em axis display\n.Sy scale\nconfigures the timeline axis.\nColumn width is set by\n.Sy scale:<duration>\non the\n.Sy roadmap\ndeclaration; this block configures display:\n.Bd -literal -offset indent\nscale\n name: sprints\n label-every: 2\n label: \"Sprint {n}\"\n.Ed\n.Bl -tag -width \"label-every\"\n.It Sy name\nDisplay label for the scale unit (e.g.\n.Qq sprint ) .\nDefaults to an auto-generated name based on the roadmap's\n.Sy scale:\nduration.\n.It Sy label-every\nShow an axis label every Nth column.\nDefaults to the renderer's choice.\n.It Sy label\nAxis label format.\n.Sq {n}\nis the column index.\n.El\n.Pp\nThe\n.Sy scale\nconfig block is optional.\nA file can declare\n.Sy scale:2w\non its\n.Sy roadmap\nwith no\n.Sy scale\nblock and the renderer picks all display defaults.\n.Ss calendar \\(em day arithmetic\nThe\n.Sy calendar:\nproperty on\n.Sy roadmap\nselects day-arithmetic mode:\n.Bl -tag -width \"calendar:business\"\n.It Sy calendar:business Pq default\nEngineering working-day arithmetic.\n.Sy days-per-week:5 ,\n.Sy days-per-month:22 ,\n.Sy days-per-quarter:65 ,\n.Sy days-per-year:260 .\n.It Sy calendar:full\nCalendar-day arithmetic with weekends.\n.Sy days-per-week:7 ,\n.Sy days-per-month:30 ,\n.Sy days-per-quarter:90 ,\n.Sy days-per-year:365 .\n.It Sy calendar:custom\nAuthor-supplied values via the\n.Sy calendar\nconfig block.\n.El\n.Pp\nA\n.Sy calendar\nconfig block is only meaningful when\n.Sy roadmap\ndeclares\n.Sy calendar:custom .\nWhen custom, all four\n.Sy days-per-*\nfields are required:\n.Bd -literal -offset indent\nconfig\n\ncalendar\n days-per-week: 6\n days-per-month: 26\n days-per-quarter: 78\n days-per-year: 312\n\nroadmap rotating-shift \"Rotating Shift\" calendar:custom\n.Ed\n.Pp\nAll four entries must be positive integers.\nThere is no partial form.\n.Pp\nEach\n.Sy days-per-*\nfield is independently defined: a duration like\n.Sy 1y\nresolves to\n.Sy days-per-year\ndirectly, not by multiplying through months or weeks.\nThis is why business mode's\n.Sy 1y\nis\n.Sy 260d ,\nnot\n.Sy 12 \\(mu 22d = 264d .\n.Sh ROADMAP SECTION\nThe\n.Sy roadmap\nsection marker is required and appears exactly once per file.\nRoadmap keywords sit at the top level (not indented under the\nmarker) and form the content of the file.\n.Pp\nThe\n.Sy roadmap\ndeclaration line itself accepts:\n.Bd -literal -offset indent\nroadmap platform-2026 \"Platform 2026\" \\e\n author:\"Acme\" \\e\n start:2026-01-06 \\e\n scale:2w \\e\n calendar:business \\e\n logo:\"./brand/acme.svg\" \\e\n logo-size:md\n.Ed\n.Bl -tag -width \"calendar:\"\n.It Sy author:\nFree-form string.\n.It Sy start:\nISO date\n.Pq Pa YYYY-MM-DD ,\nthe timeline baseline.\nRequired if any\n.Sy anchor\nor any dated\n.Sy milestone\nexists.\nEvery anchor date and dated milestone date must be on or after\n.Sy start: .\n.It Sy scale:\nRaw duration literal for column width\n.Pq Sy 2w , Sy 1q ;\ndefaults to\n.Sy 1w .\n.It Sy calendar:\n.Sy business | full | custom .\nDefaults to\n.Sy business .\n.It Sy logo:\nPath to a logo file\n.Pq Sy .svg , Sy .png , Sy .jpg / Sy .jpeg , Sy .webp ,\nresolved relative to the\n.Pa .nowline\nfile's directory.\nForward slashes on all platforms; only local paths are accepted.\nAsset resolution happens at render time, not parse time \\(em a file\nreferencing a missing logo is still a valid document.\n.It Sy logo-size:\nSize preset\n.Pq Sy xs | sm | md | lg | xl ,\ndefault\n.Sy md .\n.El\n.Pp\nTwelve roadmap-section keywords:\n.Sy swimlane , item , parallel , group ,\n.Sy person , team , anchor , label , size , status , milestone ,\n.Sy footnote .\nEach follows the universal\n.Sy [id] [\"title\"] [key:value...]\npattern.\n.Ss swimlane \\(em group items by team / area / stream\n.Bd -literal -offset indent\nswimlane platform owner:platform capacity:5\n item auth-refactor \"Auth refactor\" size:l after:kickoff\n item platform-qa \"Platform QA\" size:s capacity:2\n.Ed\n.Pp\nItems, parallels, and groups are indented beneath.\nProperties:\n.Bl -tag -width \"utilization-over-at\"\n.It Sy owner:\nPerson or team id.\n.It Sy capacity:\nPer-timestep budget.\nInteger or decimal only; no percent form.\n.It Sy utilization-warn-at: , Sy utilization-over-at:\nThresholds for the lane utilization underline.\nEach accepts a percent literal\n.Pq Sy 80% ,\na positive decimal interpreted as a fraction\n.Pq Sy 0.8 ,\nor the bareword\n.Sy none\nto opt out of that color band.\nDefaults\n.Sy 80%\nand\n.Sy 100% .\nWhen both numeric thresholds are set,\n.Sy warn-at \\(<= over-at .\n.El\n.Ss item \\(em work item\nItems live inside swimlanes (or\n.Sy parallel /\n.Sy group\nblocks) and must declare at least one of\n.Sy size:\nor\n.Sy duration: .\nSee\n.Sx ITEM PROPERTIES\nbelow.\n.Bd -literal -offset indent\nswimlane platform\n item auth-refactor \"Auth refactor\" size:l status:done\n item \"Quick cleanup\" size:s\n item sso size:m\n.Ed\n.Ss parallel \\(em parallel execution block\n.Sy parallel\nruns its children in parallel.\nChildren can be bare items or groups.\n.Bd -literal -offset indent\nswimlane platform\n item auth \"Auth refactor\" size:l\n parallel\n item api-v2 \"API v2\" size:m\n item sdk-update \"SDK update\" size:s\n item integration \"Integration\" size:s\n.Ed\n.Pp\n.Sy api-v2\nand\n.Sy sdk-update\nstart at the same time (after\n.Sy auth\nfinishes).\nWhen the\n.Sy parallel\nblock ends, the next sibling\n.Pq Sy integration\nwaits for all parallel children to complete (implicit join on\ndedent).\nA\n.Sy parallel\nblock must contain at least 2 children; a single-child parallel\nemits a warning.\n.Ss group \\(em sequential item bundle\n.Sy group\nbundles items into a named sequential track.\nInside a swimlane (outside a parallel block), the group is\nsequential with respect to its siblings.\n.Bd -literal -offset indent\nswimlane platform\n group api-work \"API Work\" labels:enterprise\n item api-v2 \"API v2\" size:m\n item api-docs \"API docs\" size:s\n item deploy \"Deploy\" size:s\n.Ed\n.Pp\nA\n.Sy group\nwith\n.Sy style: ,\n.Sy labels: ,\nor other visual properties renders with a visible bounding box\nplus a small title chiclet.\nA\n.Sy group\nwith no styling is purely structural \\(em it only governs\nsequencing and inner row growth, with no visible artifact.\n.Ss anchor \\(em named date on the timeline\n.Bd -literal -offset indent\nanchor kickoff date:2026-01-06\nanchor code-freeze \"Code Freeze\" date:2026-05-01\n.Ed\n.Pp\n.Sy date:\nis required.\nAnchors are referenced by\n.Sy after:\nand\n.Sy before:\non items, parallels, groups, and milestones to pin their position.\n.Ss label \\(em semantic tag / chip vocabulary\nLabels live in the roadmap section so content and vocabulary live\ntogether; visual defaults live in\n.Sy config\nvia\n.Sy default label\nand referenced\n.Sy style\nblocks.\n.Bd -literal -offset indent\nlabel enterprise \"Enterprise readiness\" style:enterprise\nlabel security \"Security hardening\" style:enterprise-red\nlabel low-confidence style:risky-dotted\n.Ed\n.Pp\nA\n.Sy label\nline accepts\n.Sy style:id\nplus universal properties\n.Pq Sy labels: , Sy link: , description .\nRaw style properties are\n.Em not\nallowed on a\n.Sy label\nline.\nLabels used on items without a matching\n.Sy label\ndeclaration are valid; they render with chip defaults from\n.Sy default label\nor system defaults.\n.Ss size \\(em named effort budget\nA\n.Sy size\nmaps a named t-shirt size to a single-engineer effort budget.\n.Bd -literal -offset indent\nsize xs \"Extra Small\" effort:0.5d\nsize s \"Small\" effort:3d\nsize m \"Medium\" effort:1w\nsize l \"Large\" effort:2w\nsize xl \"Extra Large\" effort:1m\n.Ed\n.Pp\n.Sy effort:\nis required and must be a positive raw duration literal\n.Pq decimal-aware: Sy 0.5d , Sy 1.5w .\nThe id must not match the raw duration pattern\n.Sy \\&\\ed+(\\e.\\ed+)?[dwmqy]\nor be a bare\n.Sy d , w , m , q , y\n\\(em this avoids ambiguity at the call site.\n.Pp\nOn items, the on-bar size chip renders the size's optional\n.Sy title\nwhen provided, falling back to the id verbatim.\n.Sy size m \"M\" effort:1w\nrenders\n.Qq M ;\n.Sy size m effort:1w\nrenders\n.Qq m .\n.Pp\n.Sy size\ndeclarations must precede any item that references them.\n.Ss status \\(em custom status value\n.Bd -literal -offset indent\nstatus awaiting-review \"Awaiting Review\"\nstatus in-review \"In Review\"\nstatus deferred \"Deferred\"\n.Ed\n.Pp\nExtends the built-in set\n.Po\n.Sy planned ,\n.Sy in-progress\n.Pq alias Sy active ,\n.Sy done\n.Pq alias Sy completed ,\n.Sy at-risk ,\n.Sy blocked\n.Pc .\nThe aliases canonicalize at the layout boundary; both spellings\nare valid input.\n.Pp\nCustom statuses have no inherent semantics beyond what renderers\nassign; the DSL only guarantees the value resolves and can carry\na display title.\nRenderers may map custom statuses to visual treatments via\n.Sy default item style:...\nor entity-level\n.Sy style:\noverrides.\n.Pp\n.Sy status\ndeclarations must precede any entity that references them.\n.Ss milestone \\(em achievement marker\n.Bd -literal -offset indent\nmilestone v1-ga \"v1 GA\" date:2026-06-30\nmilestone beta \"Beta\" after:auth-refactor\nmilestone v1-ga \"v1 GA\" after:[core-api, audit-log]\nmilestone v1-ga \"v1 GA\" date:2026-06-30 after:[core-api, audit-log]\n.Ed\n.Pp\nAt least one of\n.Sy date:\nor\n.Sy after:\nis required.\nWith both, the\n.Sy date:\nis an intended target, not a hard cap; slippage (dependencies not\nconverging by the target date) is a rendering concern, not a\nvalidation error.\n.Ss footnote \\(em attachable annotation\n.Bd -literal -offset indent\nfootnote \"Vendor dependency\" on:audit-log\n description \"Blocked until vendor contract is signed.\"\n\nfootnote capacity-risk \"Team capacity risk\" on:[mobile, platform]\n description \"Both teams are understaffed through Q2.\"\n.Ed\n.Pp\n.Sy on:\nis required and references one or more identifiers (item,\nswimlane, anchor, milestone, person, team).\nUse bracket notation for multiples:\n.Sy on:[id1, id2] .\nFootnotes are numbered sequentially by document order; a\nsuperscript number appears on every entity the footnote attaches\nto.\n.Ss person and team \\(em organisational vocabulary\n.Bd -literal -offset indent\nperson sam \"Sam Chen\" link:https://github.com/samchen\nperson jen \"Jennifer Wu\"\n\nteam engineering \"Engineering\"\n team platform \"Platform Team\"\n person sam\n person jen\n team mobile \"Mobile Team\"\n.Ed\n.Pp\nA\n.Sy person\nmay be declared at the roadmap top level or nested inside a\n.Sy team .\n.Bl -tag -width \"person <id>\"\n.It Sy person <id>\nBare reference.\nInside a\n.Sy team\nit denotes membership.\nAt the roadmap top level it is a no-op (parser may emit a\nwarning).\n.It Sy person <id> [\"title\"] [properties]\nDeclaration.\nCreates the person.\nIf nested inside a\n.Sy team ,\nthe declaration also establishes membership.\n.El\n.Pp\nPerson identifiers are global within the merged file scope\nregardless of where they are declared.\nA person may be declared at most once in the merged scope;\nduplicate declarations are an error.\n.Pp\n.Sy team\nnesting inside another\n.Sy team\nis always a declaration.\nTeams cannot be referenced with a bare\n.Sy team <id>\nline.\n.Pp\nBoth\n.Sy person\nand\n.Sy team\nsupport\n.Sy link:\nand the\n.Sy description\nsub-directive.\n.Sh UNIVERSAL PROPERTIES\nThese properties are valid on every entity type: items, swimlanes,\nparallel blocks, groups, milestones, anchors, persons, teams,\nlabels, sizes, statuses, footnotes.\n.Bl -tag -width \"description\"\n.It Sy labels:\nList.\nTags for filtering and display.\n.Sy labels:enterprise\nor\n.Sy labels:[enterprise, security] .\nOn an item, each label renders as an atomic chiclet inside the\nbar.\n.It Sy link:\nBare URL (no quotes).\nOne link per entity.\n.It Sy style:\nIdentifier.\nSingle reference to a named style declared in\n.Sy config .\nThis is the only visual property allowed on a roadmap-section\nentity.\n.It Sy description\nSub-directive.\nIndented under the entity.\nLonger explanatory text:\n.Sy description \"Details here\" .\n.El\n.Pp\n.Sy Content vs. rendering separation .\nEntities in the roadmap section carry only semantic information\nplus an optional single\n.Sy style:id\nreference.\nRaw style properties\n.Po\n.Sy bg , Sy fg , Sy text , Sy border , Sy icon , Sy shadow ,\n.Sy font , Sy weight , Sy italic , Sy text-size , Sy padding ,\n.Sy spacing , Sy header-height , Sy corner-radius , Sy bracket ,\n.Sy capacity-icon , Sy timeline-position , Sy minor-grid\n.Pc\nmay only appear in\n.Sy style\nblocks and\n.Sy default <entity>\nlines \\(em both of which live in\n.Sy config .\n.Sh ITEM PROPERTIES\n.Sy status , owner , after ,\nand\n.Sy before\nare also valid on swimlanes, parallel blocks, and groups.\nThe rest are item-only.\n.Bl -tag -width \"remaining\"\n.It Sy status:\nBuilt-in:\n.Sy planned ,\n.Sy in-progress\n.Pq alias Sy active ,\n.Sy done\n.Pq alias Sy completed ,\n.Sy at-risk ,\n.Sy blocked .\nCustom:\n.Sy status:awaiting-review\nmatching a\n.Sy status\ndeclaration.\n.It Sy owner:\nPerson or team id.\nSingular \\(em one accountable owner.\n.It Sy after:\nIdentifier or bracketed list.\nThe entity starts after the referenced entity finishes.\n.Sy after:[a, b]\nstarts after the latest finisher.\nAccepts item, milestone, anchor, parallel, or group ids.\n.It Sy before:\nIdentifier or bracketed list.\nThe entity must finish before the referenced entity starts.\n.Sy before:[a, b]\nfinishes before the earliest starter.\n.It Sy size:\nSize alias.\n.Sy size:l\nreferences a\n.Sy size\ndeclaration; the item's calendar duration is\n.Sy effort \\(di item_capacity\n.Pq Sy capacity:\ndefaults to\n.Sy 1\nwhen absent.\nItems only \\(em not valid on\n.Sy parallel\nor\n.Sy group .\n.It Sy duration:\nRaw duration literal only\n.Pq Sy 2w , Sy 3m , Sy 0.5d ;\nno alias names.\n.Sy size:\nis the alias mechanism.\nWhen set alongside\n.Sy size: ,\n.Sy duration:\nwins for bar width and meta-line driver (size chip omitted).\nItems only.\n.It Sy remaining:\nWork remaining.\nTwo equivalent forms: percent\n.Pq Sy remaining:30%\nor single-eng effort literal\n.Pq Sy remaining:1w , Sy remaining:0.5d .\nA literal is normalized to a percent during layout.\nBoth forms render identically.\n.Sy status:done\ntakes priority.\nItems only.\n.It Sy capacity:\nConcurrent capacity consumed by this item while it runs.\nPositive integer\n.Pq Sy capacity:2 ,\ndecimal\n.Pq Sy capacity:0.5 ,\nor percent literal\n.Pq Sy capacity:50%\nwhich parses to a decimal.\nItems only.\n.El\n.Pp\n.Sy Required properties .\n.Sy item\ndeclarations must include at least one of\n.Sy size:\nor\n.Sy duration: .\n.Sy anchor\ndeclarations require\n.Sy date: .\n.Sy milestone\ndeclarations require at least one of\n.Sy date:\nor\n.Sy after: .\n.Sy footnote\ndeclarations require\n.Sy on: .\nOmitting a required property is a validation error that names the\nentity by id or title.\n.Sh CAPACITY\n.Sy capacity:\nis an optional annotation that models per-timestep throughput.\nBoth swimlanes and items may declare it, and the two annotations\nare fully independent \\(em neither requires the other.\n.Bd -literal -offset indent\nswimlane platform capacity:5\n item auth size:l capacity:2\n parallel\n item api size:m capacity:2\n item sdk size:m capacity:1\n item qa size:s capacity:50%\n.Ed\n.Pp\nThe unit is opaque to the DSL: authors decide whether\n.Sy 5\nmeans engineers, story points, FTE, hours, or any other measure\n.Pq same opacity contract as Sy size:l until a Sy size declaration gives it meaning .\n.Pp\nWhere it can appear:\n.Bl -tag -width \"swimlane\"\n.It Sy swimlane\nInteger or decimal only (no percent form).\nThe lane's per-timestep budget.\n.It Sy item\nInteger, decimal, or percent literal.\nThe item's concurrent consumption.\n.It Sy parallel , Sy group\nNot valid \\(em derived from children (sum at each timestep across\nparallel; pass-through for group).\nSame exclusion family as\n.Sy size , duration , remaining .\n.El\n.Pp\nDefault capacity:\n.Bl -tag -width \"Duration-literal items\"\n.It Sy Sized items\n.Sy size:\ndeclared, no explicit\n.Sy capacity: \\(em\ncapacity defaults to\n.Sy 1\nin both duration derivation\n.Pq Sy duration = effort \\(di 1 = effort\nand overload accounting.\n.It Sy Duration-literal items\n.Sy duration:\ndeclared, no\n.Sy size: ,\nno explicit\n.Sy capacity: \\(em\ncapacity stays unset and the item contributes\n.Sy 0\nto overload (uncounted).\nThe literal duration is the bar width regardless.\n.It Sy Explicit Sy capacity:N\nAlways wins for both purposes.\n.El\n.Pp\nLifetime: capacity is constant for the item's full duration.\nNo ramps in\n.Sy v1 .\n.Pp\n.Sy Utilization thresholds .\nSwimlanes that declare\n.Sy capacity:\npaint a tri-state utilization underline (green / yellow / red)\nalong the bottom of the band based on the per-timestep load\nfunction\n.Sy f(x) = \\(*S items[i].capacity for items active at x .\n.Bl -tag -width \"utilization-over-at\"\n.It Sy utilization-warn-at:N% Pq default Sy 80%\nAt or above this fraction of\n.Sy capacity: ,\nthe segment paints\n.Sy yellow .\n.It Sy utilization-over-at:N% Pq default Sy 100%\nAt or above this fraction of\n.Sy capacity: ,\nthe segment paints\n.Sy red .\n.El\n.Pp\nBelow\n.Sy warn-at\nthe segment paints\n.Sy green .\nBoth thresholds accept the literal value\n.Sy none\nto opt out of that color band:\n.Sy utilization-warn-at:none\ncollapses to a binary green/red indicator;\n.Sy utilization-over-at:none\nremoves red entirely; setting both to\n.Sy none\nsuppresses the underline outright.\n.Sh SIZING PRECEDENCE\nWhen an item declares both\n.Sy size:\nand\n.Sy duration: ,\nthe explicit\n.Sy duration:\nliteral wins for bar width and the meta line: the size chip is\nnot shown (only the literal appears as the driver token).\n.Bl -column -offset indent \"size:\" \"duration:\" \"capacity:\" \"Resulting duration\"\n.It Sy size: Ta Sy duration: Ta Sy capacity: Ta Resulting duration\n.It l Ta \\(em Ta \\(em Ta size.l.effort \\(di 1 (e.g. 2w)\n.It l Ta \\(em Ta 2 Ta size.l.effort \\(di 2 (e.g. 1w)\n.It l Ta 2w Ta 2 Ta 2w (literal wins; no chip)\n.It \\(em Ta 2w Ta 2 Ta 2w (capacity does not divide a literal)\n.It \\(em Ta \\(em Ta \\(em Ta validation error\n.El\n.Sh STYLE PROPERTIES\nProperties valid inside a\n.Sy style\nblock (and on\n.Sy default <entity>\nlines):\n.Bl -tag -width \"timeline-position\"\n.It Sy bg\nBackground/fill color or\n.Sy none .\nNamed\n.Po\n.Sy red , blue , yellow , green , orange ,\n.Sy purple\n.Pq alias Sy violet ,\n.Sy gray\n.Pq alias Sy grey ,\n.Sy navy , white\n.Pc ,\nhex\n.Pq Sy #2563eb ,\nor\n.Sy none\n(transparent).\n.It Sy fg\nBorder/outline color.\nNamed, hex, or\n.Sy none\n(no border).\n.It Sy text\nText color.\nNamed, hex, or\n.Sy none\n(hides text).\n.It Sy border\n.Sy solid | dashed | dotted .\n.It Sy icon\nIdentifier or string.\nBuilt-in identifiers\n.Po\n.Sy shield , warning , lock , plus the capacity-icon vocabulary\n.Pc ;\ncustom: any identifier declared by a\n.Sy symbol\ndeclaration; inline: a double-quoted Unicode literal\n.Pq Sy \"\\(rs\"\n\\(em font-dependent.\n.It Sy shadow\n.Sy none Pq default | subtle | soft | hard .\n.It Sy font\n.Sy sans Pq default | serif | mono .\n.It Sy weight\n.Sy thin | light | normal Pq default | bold .\n.It Sy italic\n.Sy true | false Pq default .\n.It Sy text-size\n.Sy xs | sm | md Pq default | lg | xl .\n.It Sy padding\n.Sy none | xs | sm | md Pq default | lg | xl .\n.It Sy spacing\n.Sy none | xs | sm | md | lg | xl .\nDefault varies by entity.\n.It Sy header-height\n.Sy none | xs | sm | md Pq default | lg | xl .\nRoadmap-only.\n.It Sy corner-radius\n.Sy none | xs | sm | md | lg | xl | full .\n.It Sy bracket\n.Sy none Pq default | solid | dashed .\nParallel-only.\n.It Sy capacity-icon\nGlyph used as the suffix to capacity numbers.\nBuilt-in identifiers:\n.Sy none ,\n.Sy multiplier\n.Pq default \\(em \"\\(mu\" ,\n.Sy person ,\n.Sy people ,\n.Sy points\n.Pq \"\\(em\" ,\n.Sy time\n.Pq \"\\(em\" .\nCustom: any\n.Sy symbol\nid; inline: a double-quoted Unicode literal.\n.It Sy timeline-position\n.Sy top Pq default | bottom | both .\nRoadmap-only.\n.Sy both\nmirrors the date strip at the chart bottom.\n.It Sy minor-grid\n.Sy true | false Pq default .\nRoadmap-only.\nWhen\n.Sy true ,\ndraws faint dotted grid lines at every tick boundary.\n.El\n.Pp\nBuilt-in icon names are rendered from a curated SVG library\nshipped with the renderer, not from Unicode emoji codepoints.\nThis guarantees consistent visual output across every platform\n(web, CLI, exports).\nAuthors who want platform-default emoji rendering use an inline\nUnicode literal instead of the named identifier.\n.Sh GRAMMAR\n.Ss Universal declaration pattern\nEvery entity declaration follows the same shape:\n.Bd -literal -offset indent\nkeyword [id] [\"title\"] [key:value ...]\n.Ed\n.Bl -tag -width \"Identifier\"\n.It Sy Identifier\nUnquoted, matches\n.Sy [a-zA-Z_][a-zA-Z0-9_-]* .\nUsed for referencing.\nOptional \\(em auto-generated from the title (kebab-cased) if\nomitted.\n.It Sy Title\nDouble-quoted string.\nHuman-readable display name.\nOptional.\nAlways double-quoted, even single-word titles \\(em the quote is\nhow the parser distinguishes id from title.\n.El\n.Pp\nAt least one of\n.Sy id\nor\n.Sy \"title\"\nmust be present.\nEvery other input is a keyed property using\n.Sy key:value .\n.Pp\nThe\n.Sy nowline\ndirective is the only construct without an id or title; every\nother declaration follows this pattern.\n.Ss Identifiers\nIdentifiers match\n.Sy [a-zA-Z_][a-zA-Z0-9_-]* \\(em\nletters, digits, underscores, and dashes, starting with a letter\nor underscore.\nThey must be unique across the merged result (the file and all\nits includes); items, parallel blocks, groups, anchors, persons,\nteams, milestones, footnotes share one namespace.\n.Pp\nIdiomatic Nowline uses kebab-case but\n.Sy authRefactor ,\n.Sy auth_refactor ,\nand\n.Sy MED\nare equally valid.\n.Pp\nWhen omitted, the parser generates one by slugifying the title to\nkebab-case:\n.Qq Audit log v2\nbecomes\n.Sy audit-log-v2 .\n.Ss Lists\nAny list-typed property accepts a single value without brackets or\nmultiple values with bracket notation:\n.Bd -literal -offset indent\nlabels:enterprise\nlabels:[enterprise, security]\n.Ed\n.Pp\nNo quotes around identifiers in lists.\nComma-separated, optional spaces.\n.Ss Dependencies\n.Sy after:\nand\n.Sy before:\neach accept a single identifier or a bracketed list.\nReferences may target items, milestones, anchors, parallel\nblocks, or groups.\n.Bl -bullet -offset indent -compact\n.It\n.Sy after:id\n\\(em this entity starts after the referenced entity finishes (or\nafter the referenced anchor date).\n.It\n.Sy after:[id1, id2, ...]\n\\(em starts after\n.Em all\nreferenced entities finish (i.e. after the latest of them).\n.It\n.Sy before:id\n\\(em this entity must finish before the referenced entity starts\n(or before the referenced anchor date).\n.It\n.Sy before:[id1, id2, ...]\n\\(em finishes before the\n.Em earliest\nof the referenced entities starts.\n.El\n.Pp\nCircular dependencies across the full graph (including every\nelement of list-form references) are a validation error.\n.Ss Line continuation\nA trailing\n.Sq \\e\nmeans the next line continues the same declaration.\nIndentation on the continuation line is cosmetic.\nOnly valid at the end of a property line \\(em not inside strings\nor comments.\nUse\n.Sq \\e\\e\nfor a literal backslash.\n.Bd -literal -offset indent\nitem auth \"Auth refactor\" duration:2w status:in-progress \\e\n owner:sam labels:[security,enterprise] \\e\n link:https://github.com/acme/auth/issues/123 \\e\n style:flagged\n.Ed\n.Ss Comments\n.Bd -literal -offset indent\n// This is a single-line comment\n\n/* This is a\n multi-line comment */\n.Ed\n.Sh VALIDATION\nThe parser produces clear error messages with file position and\nsuggestions (fuzzy-match\n.Qq did you mean X?\nhints).\nRules group as follows; full prose lives in\n.Pa specs/dsl.md .\n.Ss Structural\n.Bl -bullet -offset indent -compact\n.It\nExactly one\n.Sy roadmap\ndeclaration per file (subject to\n.Sy include\n.Sy roadmap:\nmode).\n.It\nAll identifiers are unique across the merged result.\nParent wins on collision, with a warning.\n.It\nEvery entity must have at least an identifier or a title (or\nboth).\n.It\nFile structure must follow the section order:\n.Sy nowline\ndirective (optional, first non-comment line),\n.Sy include ,\n.Sy config ,\n.Sy roadmap .\n.It\nThe\n.Sy nowline\ndirective version must match\n.Sy v\\&\\ed+ .\nA version newer than the parser supports is an error identifying\nthe required version.\n.It\nAt least one swimlane is required in the merged result.\n.It\nIndentation must be consistent within a file: spaces\n.Em or\ntabs, not both.\nMixed indentation is a parse error identifying the first offending\nline.\n.It\n.Sy label ,\n.Sy size ,\nand\n.Sy status\ndeclarations must appear in the roadmap section.\nPlacing them before\n.Sy roadmap\nis an error.\n.El\n.Ss References\n.Bl -bullet -offset indent -compact\n.It\nAll elements of\n.Sy after: ,\n.Sy before: ,\nand\n.Sy on:\nmust resolve to declared identifiers within the merged scope.\n.It\nA\n.Sy size:\nor\n.Sy status:\nreference must resolve to a declaration that appears\n.Em earlier in the file\n(or in an earlier include).\nForward references are an error.\n.It\nNo circular dependencies in\n.Sy after / before\nchains.\n.El\n.Ss Values\n.Bl -bullet -offset indent -compact\n.It\n.Sy anchor date:\nand dated\n.Sy milestone date:\nvalues are valid ISO 8601 dates\n.Pq Pa YYYY-MM-DD , calendar-valid .\n.It\n.Sy duration:\nand\n.Sy scale:\nvalues match the raw duration pattern\n.Sy \\&\\ed+(\\e.\\ed+)?[dwmqy] .\n.It\nA\n.Sy size\ndeclaration's id must not match the raw duration pattern and must\nnot be a bare\n.Sy d , w , m , q , y .\n.It\nEvery\n.Sy size\ndeclaration must specify\n.Sy effort: ;\nthe value must be a positive raw duration literal.\n.It\n.Sy capacity:\non a\n.Sy swimlane\nmust be a positive integer or decimal (no percent form).\n.Sy capacity:\non an\n.Sy item\nmust be a positive integer, decimal, or percent literal.\n.Sy capacity:\nis not valid on\n.Sy parallel\nor\n.Sy group .\n.It\n.Sy utilization-warn-at:\nand\n.Sy utilization-over-at:\nmust each be a positive percent literal, a positive decimal\nfraction, or\n.Sy none .\nWhen both numeric thresholds are set,\n.Sy warn-at \\(<= over-at .\n.It\n.Sy capacity-icon:\nvalue must be a built-in identifier\n.Po\n.Sy none , Sy multiplier , Sy person , Sy people , Sy points , Sy time\n.Pc ,\nan identifier matching a\n.Sy symbol\ndeclaration in scope, or a double-quoted Unicode literal.\nSame contract for\n.Sy icon: .\n.It\n.Sy remaining:\nis either a percentage\n.Pq Sy 0% \\(en Sy 100%\nor a single-eng effort literal.\nWhen the literal exceeds total effort (computed percent\n.Sy > 100% ) ,\nthe layout step emits a soft warning and clamps the painted bar\nto 100% remaining; rendering is never blocked.\n.El\n.Ss Calendar\n.Bl -bullet -offset indent -compact\n.It\n.Sy calendar:\non\n.Sy roadmap\nmust be one of\n.Sy business , full , custom .\n.It\nA\n.Sy calendar\nconfig block is only valid when the roadmap declares\n.Sy calendar:custom .\n.It\nWhen\n.Sy calendar:custom ,\nall four\n.Sy days-per-*\nentries are required and must be positive integers.\n.El\n.Ss Roadmap start property\n.Bl -bullet -offset indent -compact\n.It\n.Sy roadmap start:\nmust be a valid ISO 8601 date.\n.It\nIf a file contains any\n.Sy anchor\nor any dated\n.Sy milestone ,\n.Sy start:\nis required.\n.It\nEvery anchor date and every dated milestone date must be on or\nafter\n.Sy start: .\n.El\n.Ss Persons and teams\n.Bl -bullet -offset indent -compact\n.It\nA\n.Sy person\nmay be declared at most once in the merged file scope.\nA declaration is identified by the presence of a title or any\nkeyed property on the line.\n.It\nA bare\n.Sy person <id>\ninside a\n.Sy team\ndenotes membership and is valid with or without a separate\ndeclaration.\n.It\nA bare\n.Sy person <id>\nat roadmap top level with no matching declaration anywhere is a\nno-op (parser may emit a warning).\n.El\n.Ss Includes\n.Bl -bullet -offset indent -compact\n.It\n.Sy include\npaths must resolve to an existing\n.Pa .nowline\nfile relative to the including file's directory.\n.It\nNo circular includes.\n.It\n.Sy include\ndeclarations appear before\n.Sy config\nand\n.Sy roadmap\n(after the\n.Sy nowline\ndirective if present).\n.It\nDuplicate\n.Sy include\nof the same file in a single file is an error.\n.It\n.Sy config:\nmust be\n.Sy merge , ignore , or isolate .\n.Sy roadmap:\nmust be\n.Sy merge , ignore , or isolate .\n.It\nOn\n.Sy config:isolate ,\n.Sy style:\nreferences within the isolated file must resolve within that\nfile's own config.\n.It\nOn\n.Sy roadmap:isolate ,\nthe included file must contain a\n.Sy roadmap\ndeclaration.\n.It\nFor any\n.Sy include\nwhose\n.Sy roadmap:\nmode is not\n.Sy ignore ,\nparent and child must agree on\n.Sy start: \\(em\nboth absent or both present with identical values.\nA mismatch is an error reported on the parent's\n.Sy include\nline.\n.El\n.Ss Parallel and group\n.Bl -bullet -offset indent -compact\n.It\n.Sy parallel\nmust contain at least 2 children.\nA single-child parallel emits a warning.\n.It\n.Sy group\nmust contain at least 1 child.\n.It\n.Sy size , duration , remaining , capacity\nare not valid on\n.Sy parallel\nor\n.Sy group\n(computed from children).\n.It\n.Sy parallel\nis valid inside swimlane or group.\n.Pp\n.Sy group\nis valid inside swimlane, parallel, or group.\n.El\n.Ss Defaults\n.Bl -bullet -offset indent -compact\n.It\nThe first positional argument after\n.Sy default\nmust be one of:\n.Sy item , label , swimlane , roadmap , parallel , group ,\n.Sy milestone , footnote , anchor .\n.It\nDuplicate\n.Sy default <entity>\ndeclarations for the same entity type within a single file are\nan error.\n.It\nA\n.Sy default <entity>\nthat sets a banned property\n.Pq see Sx CONFIG SECTION\nis an error.\n.El\n.Ss Symbols\n.Bl -bullet -offset indent -compact\n.It\nEvery\n.Sy symbol\ndeclaration must specify a non-empty\n.Sy unicode:\"<string>\" .\n.It\n.Sy ascii: ,\nif present, must be a quoted string of length \\(<= 3 ASCII\ncharacters.\n.It\nA\n.Sy symbol\nid must not shadow a built-in icon name.\n.It\nA\n.Sy symbol\nreference\n.Pq Sy icon:NAME or Sy capacity-icon:NAME\nmust resolve to a built-in or an earlier\n.Sy symbol\ndeclaration.\nForward references are an error.\n.El\n.Sh EXAMPLES\nA complete\n.Pa .nowline\nfile exercising the major language features:\n.Bd -literal -offset indent\nnowline v1\n\ninclude \"shared/teams.nowline\"\n\nconfig\n\nstyle enterprise \"Enterprise readiness\"\n bg: blue\n fg: navy\n text: white\n border: solid\n icon: shield\n\nstyle risky\n border: dashed\n fg: orange\n\ndefault item status:planned shadow:subtle\ndefault label style:subtle corner-radius:full\ndefault swimlane padding:sm spacing:none\n\nroadmap platform-2026 \"Platform 2026\" \\e\n author:\"Acme Engineering\" \\e\n logo:\"./brand/acme.svg\" \\e\n start:2026-01-06 scale:2w calendar:business\n\nperson sam \"Sam Chen\" link:https://github.com/samchen\nperson jen \"Jennifer Wu\"\n\nteam engineering \"Engineering\"\n team platform \"Platform Team\"\n person sam\n person jen\n team mobile \"Mobile Team\"\n\nanchor kickoff date:2026-01-06\nanchor code-freeze \"Code Freeze\" date:2026-05-01\nanchor ga-date \"GA Date\" date:2026-06-01\n\nsize xs \"Extra Small\" effort:1d\nsize s \"Small\" effort:3d\nsize m \"Medium\" effort:1w\nsize l \"Large\" effort:2w\nsize xl \"Extra Large\" effort:1m\n\nstatus awaiting-review \"Awaiting Review\"\n\nlabel enterprise \"Enterprise readiness\" style:enterprise\nlabel security \"Security hardening\" style:enterprise\nlabel low-confidence style:risky\n\nswimlane platform owner:platform capacity:5\n item auth-refactor \"Auth refactor\" size:l after:kickoff \\e\n status:done owner:sam labels:enterprise capacity:3 \\e\n link:https://github.com/acme/auth/issues/123\n parallel after:auth-refactor\n group audit-track \"Audit Track\" labels:security\n item audit-log \"Audit log v2\" size:xl before:code-freeze \\e\n remaining:30% labels:[enterprise, security] capacity:2\n description \"Comprehensive audit trail for admin actions\"\n item audit-ui \"Audit UI\" size:m capacity:1\n item sso \"SSO plugins\" size:m \\e\n labels:[enterprise, low-confidence] capacity:50%\n item platform-qa \"Platform QA\" size:s capacity:2\n\nswimlane mobile owner:mobile capacity:2\n item offline \"Offline mode\" size:l after:kickoff owner:jen \\e\n status:at-risk remaining:60% capacity:3\n item push-v2 \"Push notifications v2\" size:m owner:mobile capacity:1\n\nmilestone beta \"Beta\" after:auth-refactor\nmilestone v1-ga \"v1 GA\" after:[auth-refactor, audit-log]\nmilestone ga-launch \"GA launch\" date:2026-06-01 \\e\n after:[auth-refactor, audit-log]\n\nfootnote \"Vendor dependency\" on:audit-log\n description \"Blocked until vendor contract is signed.\"\nfootnote capacity-risk \"Team capacity risk\" on:[mobile, platform]\n description \"Mobile team is down to 2 engineers through Q2.\"\n.Ed\n.Sh SEE ALSO\n.Xr nowline 1\n.Pq Sy man 1 nowline\n.Pp\nThe\n.Sy specs/\ndirectory in the source repository documents the DSL grammar in\nprose\n.Pq Pa specs/dsl.md ,\nthe layout / rendering pipeline\n.Pq Pa specs/rendering.md ,\nthe localization model\n.Pq Pa specs/localization.md ,\nand OSS milestones\n.Pq Pa specs/milestones.md .\n.Sh AUTHORS\n.An The Nowline Authors Aq Mt maintainers@nowline.io\n";
6
+ /** Canonical example .nowline files bundled as the `nowline://examples` resource. */
7
+ export const EXAMPLES = [
8
+ {
9
+ "name": "capacity.nowline",
10
+ "content": "nowline v1\n\n// Lean example: one engineering swimlane with lane capacity, item capacity,\n// and utilization along the band. \"On-call support\" is 1 of 4 = 25% of\n// the team. For warn/over/segment demos see tests/utilization-states.nowline.\n\nroadmap eng-q1 \"Engineering Q1\" start:2026-01-05 length:8w\n\nswimlane engineering \"Engineering\" capacity:4\n item support \"On-call support\" duration:8w capacity:1\n item auth-refactor \"Auth refactor\" duration:3w capacity:2 status:in-progress\n item search-v2 \"Search v2\" duration:2w capacity:2 after:auth-refactor\n"
11
+ },
12
+ {
13
+ "name": "continuation.nowline",
14
+ "content": "nowline v1\n\nconfig\n\ndefault item shadow:subtle\n\nroadmap r \"Spec example\" start:2026-01-05 scale:1w calendar:business\n\nanchor kickoff date:2026-01-05\n\nswimlane platform \"Platform\"\n item auth \"Auth refactor\" duration:2w status:in-progress \\\n owner:sam labels:[security,enterprise] \\\n link:https://github.com/acme/auth/issues/123 \\\n style:flagged\n"
15
+ },
16
+ {
17
+ "name": "dependencies.nowline",
18
+ "content": "nowline v1\n\nconfig\n\nstyle concurrent\n bracket: solid\n\nstyle risky\n border: dashed\n fg: orange\n\ndefault item shadow:subtle\n\nroadmap dependency-demo \"Dependency Demo\" author:\"Platform engineering\" start:2026-01-05 scale:1w\n\nanchor kickoff date:2026-01-05\nanchor code-freeze \"code-freeze\" date:2026-03-02\n\nswimlane backend \"Backend\"\n item api \"API v2\" duration:2w after:kickoff\n parallel concurrent-block style:concurrent\n item search \"Search service\" duration:3w\n item audit \"Audit pipeline\" duration:7w before:code-freeze\n item deploy \"Deploy\" duration:1w\n\nswimlane frontend \"Frontend\"\n item sdk \"SDK update\" duration:2w after:api\n item ui \"New console UI\" duration:3w after:[sdk, search]\n\nmilestone beta \"Beta\" after:[deploy, ui]\n"
19
+ },
20
+ {
21
+ "name": "inline-date-pins.nowline",
22
+ "content": "nowline v1\n\n// Inline date pins on `after:` / `before:` — pin an item, group, or\n// parallel to a specific calendar date without declaring a named\n// `anchor`. The renderer paints a small `calendar` glyph in the\n// entity's top-left (`after`) or top-right (`before`) corner. See\n// `specs/dsl.md` \"Inline date pins\" and `specs/rendering.md`\n// \"Inline-date glyph\".\n\nconfig\n\nstyle flagged\n border: dashed\n fg: orange\n\nroadmap inline-pins \"Inline date pins\" start:2026-01-05 scale:1w\n\nswimlane platform \"Platform\"\n\n // Single inline date pin on `after:` — the item starts on\n // 2026-02-09 even though the lane cursor would have placed it\n // earlier.\n item kickoff-prep \"Kickoff prep\" duration:1w\n item launch \"Launch readiness\" duration:2w after:2026-02-09\n\n // Single inline date pin on `before:` — the item must finish by\n // 2026-04-13. Caps the natural end via the existing red-overflow\n // rule when the item runs long.\n item docs \"Docs handoff\" duration:2w before:2026-04-13\n\n // Mixed list — one ISO date plus one entity id. Starts after the\n // LATEST of the two: the launch item's end OR 2026-03-15\n // (whichever is later).\n item integration \"Integration window\" duration:2w after:[launch, 2026-03-15]\n\nswimlane releases \"Releases\"\n\n // Group with an inline-date `after:` — the whole group starts\n // on 2026-02-23. Glyph attaches to the group's bounding box.\n group api-track \"API track\" style:flagged after:2026-02-23\n item api-design \"API design\" duration:1w\n item api-build \"API build\" duration:2w\n\n // Parallel with an inline-date `before:` — the whole parallel\n // must finish by 2026-05-25.\n parallel rollouts \"Region rollouts\" before:2026-05-25\n item us-rollout \"US rollout\" duration:2w\n item eu-rollout \"EU rollout\" duration:2w\n"
23
+ },
24
+ {
25
+ "name": "isolate-include.nowline",
26
+ "content": "nowline v1\n\ninclude \"./partner.nowline\" roadmap:isolate\n\nroadmap primary-release \"Primary Release\" author:\"Core + Integrations + isolated partner include\" start:2026-01-05 scale:1w\n\nanchor kickoff date:2026-01-05\n\nswimlane core \"Core\"\n item core-api \"Core API\" duration:3w after:kickoff\n item migrations \"Migrations\" duration:2w after:core-api\n\nswimlane integrations \"Integrations\"\n item bridge \"Partner bridge\" duration:2w after:migrations\n\nmilestone ga \"GA\" after:bridge\n"
27
+ },
28
+ {
29
+ "name": "long.nowline",
30
+ "content": "nowline v1\n\nconfig\n\nscale\n name: weeks\n label-every: 4\n label: \"W{n}\"\n\nstyle tech-debt-style\n bg: gray\n text: white\n\nstyle near-term\n bg: blue\n text: white\n border: solid\n\nstyle long-term\n bg: green\n text: white\n border: solid\n\ndefault item shadow:subtle\ndefault swimlane padding:sm spacing:none\ndefault roadmap padding:md header-height:md font:sans timeline-position:both\ndefault parallel bracket:none\n\nroadmap long-2026 \"Long Example 2026\" author:\"Acme Engineering\" start:2026-01-05\n\nsize xs effort:1d\nsize sm effort:3d\nsize md effort:1w\nsize lg effort:2w\nsize xl effort:1m\n\nlabel tech-debt \"Tech debt\" style:tech-debt-style\nlabel agent \"Agent\" style:near-term\nlabel self-service \"Self-service\" style:long-term\n\nanchor kickoff date:2026-01-06\nanchor mid-year \"Mid-year Review\" date:2026-07-01\nanchor eoy \"End of Year\" date:2026-12-14\n\nswimlane platform\n item pf-auth-refactor \"Auth refactor\" size:lg after:kickoff status:done labels:tech-debt\n item pf-service-mesh \"Service mesh\" size:xl after:pf-auth-refactor status:in-progress remaining:40% labels:agent\n item pf-api-gateway \"API gateway\" size:lg after:pf-service-mesh labels:agent\n item pf-events \"Event bus\" size:md\n item pf-caching \"Caching tier\" size:md\n item pf-telemetry \"Telemetry pipe\" size:md labels:tech-debt\n item pf-rate-limit \"Rate limit rewrite\" size:sm\n item pf-logs \"Log ingestion\" size:sm\n item pf-metrics \"Metrics v2\" size:md\n item pf-tracing \"Distributed tracing\" size:md labels:agent\n parallel after:pf-tracing\n group agent-platform-track \"Agent platform track\"\n item pf-agent-runtime \"Agent runtime\" size:md labels:agent\n item pf-agent-sdk \"Agent SDK\" size:md labels:agent\n item pf-agent-auth \"Agent auth\" size:md labels:agent\n item pf-agent-observability \"Agent observability\" size:md labels:[agent, tech-debt]\n item pf-agent-eval \"Agent eval harness\" size:md labels:agent\n group self-service-framework \"Self-service framework\"\n item pf-ss-catalog \"Service catalog\" size:md labels:self-service\n item pf-ss-onboarding \"Self-service onboarding\" size:md labels:self-service\n item pf-ss-templates \"Project templates\" size:md labels:self-service\n item pf-ss-quotas \"Quota management\" size:md labels:self-service\n item pf-ss-billing \"Self-service billing\" size:md labels:self-service\n\nswimlane ios\n item ios-offline \"Offline mode\" size:lg after:kickoff status:at-risk remaining:60%\n item ios-push \"Push notifications\" size:md\n item ios-widgets \"Home-screen widgets\" size:md labels:tech-debt\n item ios-deep-link \"Deep linking\" size:sm\n item ios-performance \"Performance pass\" size:md\n item ios-share \"Share sheet\" size:sm\n item ios-biometric \"Biometric auth\" size:md\n item ios-agent-surface \"Agent entry point\" size:md labels:agent\n item ios-agent-voice \"Agent voice mode\" size:md labels:agent\n item ios-watch \"Watch companion\" size:lg\n item ios-carplay \"CarPlay support\" size:lg\n item ios-ipad \"iPad adaptation\" size:xl\n item ios-a11y \"Accessibility pass\" size:md\n item ios-localization \"Localization pass\" size:md\n item ios-onboarding \"Onboarding v2\" size:md\n item ios-camera \"Camera refactor\" size:md labels:tech-debt\n item ios-notifications \"Notification center\" size:sm\n item ios-settings \"Settings revamp\" size:md\n item ios-crash \"Crash hardening\" size:sm\n item ios-agent-chat \"Agent chat UI\" size:md labels:agent\n\nswimlane android\n item and-offline \"Offline sync\" size:lg after:kickoff status:in-progress remaining:55%\n item and-push \"Push notifications\" size:md\n item and-material-you \"Material You themes\" size:md\n item and-deep-link \"Deep linking\" size:sm\n item and-performance \"Performance pass\" size:md labels:tech-debt\n item and-biometric \"Biometric auth\" size:md\n item and-agent-surface \"Agent entry point\" size:md labels:agent\n item and-agent-voice \"Agent voice mode\" size:md labels:agent\n item and-wear \"Wear OS companion\" size:lg\n item and-auto \"Android Auto\" size:lg\n item and-tablet \"Tablet adaptation\" size:xl\n item and-a11y \"Accessibility pass\" size:md\n item and-localization \"Localization pass\" size:md\n item and-onboarding \"Onboarding v2\" size:md\n item and-camera \"Camera refactor\" size:md labels:tech-debt\n item and-notifications \"Notification center\" size:sm\n item and-settings \"Settings revamp\" size:md\n item and-crash \"Crash hardening\" size:sm\n item and-widgets \"Glanceable widgets\" size:md\n item and-agent-chat \"Agent chat UI\" size:md labels:agent\n\nswimlane web\n item web-spa-upgrade \"SPA framework upgrade\" size:xl after:kickoff status:in-progress remaining:30% labels:tech-debt\n item web-design-system \"Design system v3\" size:lg\n item web-a11y \"Accessibility pass\" size:md\n item web-perf-budget \"Perf budget tooling\" size:md\n item web-ssr \"SSR rollout\" size:lg\n item web-edge-cache \"Edge caching\" size:md\n item web-agent-console \"Agent console\" size:md labels:agent\n item web-agent-playground \"Agent playground\" size:md labels:agent\n item web-ss-portal \"Self-service portal\" size:lg labels:self-service\n item web-ss-docs \"Self-service docs\" size:md labels:self-service\n item web-ss-onboarding \"Self-service onboarding\" size:md labels:self-service\n item web-auth-ui \"Auth UI refresh\" size:md\n item web-dashboards \"Dashboards v2\" size:md\n item web-billing-ui \"Billing UI\" size:md\n item web-notifications \"In-app notifications\" size:sm\n item web-localization \"Localization pass\" size:md\n item web-settings \"Settings revamp\" size:md\n item web-search \"Search v2\" size:md\n item web-admin \"Admin console\" size:md\n item web-pwa \"PWA install flow\" size:sm\n\nswimlane data\n item data-warehouse \"Warehouse migration\" size:xl after:kickoff status:in-progress remaining:50% labels:tech-debt\n item data-streaming \"Streaming pipeline\" size:lg labels:agent\n item data-catalog \"Data catalog\" size:md\n item data-lineage \"Data lineage\" size:md\n item data-governance \"Governance policies\" size:md\n item data-privacy \"Privacy tooling\" size:md\n item data-agent-features \"Agent feature store\" size:md labels:agent\n item data-agent-eval \"Agent eval dataset\" size:md labels:agent\n item data-ss-exports \"Self-service exports\" size:md labels:self-service\n item data-ss-sql \"Self-service SQL editor\" size:lg labels:self-service\n item data-reverse-etl \"Reverse ETL\" size:md\n item data-dq-alerts \"Data quality alerts\" size:md\n item data-pii-scan \"PII scanner\" size:md\n item data-contract \"Data contracts\" size:md\n item data-bi-integration \"BI integration\" size:md\n item data-notebook \"Notebook hosting\" size:md\n item data-replication \"Cross-region replication\" size:lg\n item data-metadata \"Metadata service\" size:md\n item data-backfills \"Backfill tooling\" size:md\n item data-ml-registry \"ML registry\" size:md\n\nswimlane science\n item sci-retrieval \"Retrieval rewrite\" size:lg after:kickoff labels:agent\n item sci-ranker \"Ranker v2\" size:md labels:agent\n item sci-embedding \"Embedding model\" size:lg labels:agent\n item sci-prompt-lib \"Prompt library\" size:sm labels:agent\n item sci-eval-bench \"Eval benchmarks\" size:md labels:agent\n item sci-red-team \"Red-team suite\" size:md\n item sci-hallucination \"Hallucination guardrails\" size:md labels:agent\n item sci-distillation \"Model distillation\" size:lg labels:tech-debt\n item sci-guardrails \"Safety guardrails\" size:md\n item sci-finetune \"Fine-tune pipeline\" size:md\n item sci-feedback \"Feedback loop\" size:md\n item sci-ab-tests \"A/B eval harness\" size:md\n item sci-routing \"Model routing\" size:md\n item sci-caching \"Inference cache\" size:sm\n item sci-latency \"Latency optimization\" size:md\n item sci-memory \"Long-term memory\" size:md labels:agent\n item sci-tools \"Tool-use framework\" size:md labels:agent\n item sci-multimodal \"Multimodal pipeline\" size:lg\n item sci-cost \"Cost optimization\" size:md\n item sci-refresh \"Data refresh cadence\" size:sm\n\nswimlane security\n item sec-audit-log \"Audit log v2\" size:xl after:kickoff status:at-risk remaining:25% labels:tech-debt\n item sec-sso \"SSO hardening\" size:lg\n item sec-mfa \"MFA rollout\" size:md\n item sec-rbac \"RBAC v2\" size:lg\n item sec-secrets \"Secrets manager migration\" size:md\n item sec-keys \"Key rotation\" size:md\n item sec-csp \"CSP tightening\" size:sm labels:tech-debt\n item sec-waf \"WAF rules\" size:md\n item sec-pentest-q1 \"Q1 pentest response\" size:md\n item sec-pentest-q3 \"Q3 pentest response\" size:md\n item sec-compliance-soc2 \"SOC 2 Type II\" size:lg\n item sec-compliance-iso \"ISO 27001\" size:xl\n item sec-vuln-scan \"Vuln scanner rollout\" size:md\n item sec-dep-scan \"Dependency scanning\" size:sm\n item sec-incident-runbooks \"Incident runbooks\" size:md\n item sec-siem \"SIEM onboarding\" size:lg\n item sec-zero-trust \"Zero-trust rollout\" size:lg\n item sec-device-posture \"Device posture\" size:md\n item sec-bug-bounty \"Bug bounty program\" size:md\n item sec-training \"Security training\" size:sm\n\nswimlane infra\n item infra-k8s \"Kubernetes upgrade\" size:lg after:kickoff status:done labels:tech-debt\n item infra-ci \"CI pipeline rewrite\" size:lg labels:tech-debt\n item infra-cost \"Cost reduction\" size:md\n item infra-multi-region \"Multi-region rollout\" size:xl\n item infra-dr \"Disaster recovery\" size:lg\n item infra-sre-runbooks \"SRE runbooks\" size:md\n item infra-observability \"Observability stack\" size:md\n item infra-tracing \"Tracing backbone\" size:md\n item infra-log-pipeline \"Log pipeline\" size:md\n item infra-metrics \"Metrics backbone\" size:md\n item infra-chaos \"Chaos engineering\" size:md\n item infra-backup \"Backup/restore audit\" size:sm\n item infra-tf-modules \"Terraform module library\" size:md\n item infra-secrets \"Secrets plumbing\" size:sm\n item infra-network \"Network redesign\" size:lg\n item infra-dns \"DNS hardening\" size:sm\n item infra-registry \"Internal registry\" size:md\n item infra-cdn \"CDN strategy\" size:md\n item infra-iac-drift \"IaC drift detection\" size:md\n item infra-runtime \"Runtime modernization\" size:lg\n\nmilestone beta \"Beta\" after:[pf-service-mesh, web-spa-upgrade]\nmilestone ga-launch \"GA Launch\" date:2026-12-15 after:[pf-api-gateway, sec-audit-log, data-warehouse]\n\nfootnote vendor-dep \"Vendor dependency\" on:sec-audit-log\n description \"Blocked until vendor contract is signed. Expected March resolution.\"\n\nfootnote agent-rollout \"Agent platform rollout\" on:[pf-service-mesh, pf-agent-runtime, sci-retrieval]\n description \"Shared program milestone across platform and science for the agent launch.\"\n"
31
+ },
32
+ {
33
+ "name": "minimal.fr.nowline",
34
+ "content": "nowline v1 locale:fr-CA\n\nroadmap minimal \"Démarrage\" start:2026-01-05 scale:2w author:\"Jane Doe\"\n\nswimlane ingenierie \"Ingénierie\"\n item recherche \"Recherche\" duration:3w status:done\n item conception \"Conception\" duration:2w status:in-progress remaining:5d\n item realisation \"Réalisation\" duration:3w status:planned\n"
35
+ },
36
+ {
37
+ "name": "minimal.nowline",
38
+ "content": "nowline v1\n\nroadmap minimal \"Starter\" start:2026-01-05 scale:2w author:\"Jane Doe\"\n\nswimlane engineering \"Engineering\"\n parallel concurrent-block style:concurrent\n group research-group \"Research\"\n item research \"Research\" duration:3w status:done\n item design \"Design\" duration:2w status:in-progress remaining:5d\n item build \"Build\" duration:3w status:planned\n group release-group \"Release\"\n item release \"Release\" duration:1w status:planned\n item deploy \"Deploy\" duration:1w status:planned\n"
39
+ },
40
+ {
41
+ "name": "nested.nowline",
42
+ "content": "nowline v1\n\ninclude \"./nested/platform.nowline\" roadmap:isolate\ninclude \"./nested/ios.nowline\" roadmap:isolate\ninclude \"./nested/android.nowline\" roadmap:isolate\ninclude \"./nested/web.nowline\" roadmap:isolate\ninclude \"./nested/data.nowline\" roadmap:isolate\n\nconfig\n\nscale\n name: weeks\n label-every: 4\n label: \"W{n}\"\n\nstyle tech-debt-style\n bg: gray\n text: white\n\nstyle near-term\n bg: blue\n text: white\n border: solid\n\nstyle long-term\n bg: green\n text: white\n border: solid\n\ndefault item shadow:subtle\ndefault swimlane padding:sm spacing:none\ndefault roadmap padding:md header-height:md font:sans\n\nroadmap nested-2026 \"Nested Example 2026\" author:\"Acme Security\" start:2026-01-05\n\nsize sm effort:3d\nsize md effort:1w\nsize lg effort:2w\nsize xl effort:1m\n\nlabel tech-debt \"Tech debt\" style:tech-debt-style\nlabel agent \"Agent\" style:near-term\nlabel self-service \"Self-service\" style:long-term\n\nanchor kickoff date:2026-01-06\nanchor eoy \"End of Year\" date:2026-12-14\n\nswimlane security\n item sec-audit-log \"Audit log v2\" size:xl after:kickoff status:at-risk remaining:25% labels:tech-debt\n item sec-sso \"SSO hardening\" size:lg\n item sec-mfa \"MFA rollout\" size:md\n item sec-rbac \"RBAC v2\" size:lg\n item sec-agent-auth \"Agent auth hardening\" size:md labels:agent\n item sec-agent-secrets \"Agent secrets isolation\" size:md labels:agent\n item sec-secrets \"Secrets manager migration\" size:md\n item sec-compliance-soc2 \"SOC 2 Type II\" size:lg\n item sec-zero-trust \"Zero-trust rollout\" size:lg\n item sec-dep-scan \"Dependency scanning\" size:sm labels:tech-debt\n\nmilestone security-ga \"Security GA\" date:2026-12-01 after:[sec-audit-log, sec-compliance-soc2]\n\nfootnote vendor-dep \"Vendor dependency\" on:sec-audit-log\n description \"Blocked until vendor contract is signed. Expected March resolution.\"\n"
43
+ },
44
+ {
45
+ "name": "partner.nowline",
46
+ "content": "nowline v1\n\nroadmap partner \"Partner - Vendor plugin roadmap\" start:2026-01-05 scale:1w\n\nanchor kickoff date:2026-01-05\n\nswimlane plugin \"Plugin\"\n item plugin-alpha \"Plugin alpha\" duration:4w after:kickoff\n item plugin-beta \"Plugin beta\" duration:2w after:plugin-alpha\n"
47
+ },
48
+ {
49
+ "name": "platform-2026.nowline",
50
+ "content": "nowline v1\n\nconfig\n\nstyle enterprise-style \"Enterprise readiness\"\n bg: blue\n text: white\n\nstyle risky-style\n border: dashed\n fg: orange\n\nstyle audit-track-style\n bg: orange\n text: white\n\ndefault item shadow:subtle\ndefault roadmap padding:md header-height:md font:sans\n\nroadmap platform-2026 \"Platform 2026\" author:\"Acme Engineering\" start:2026-01-05 scale:1w calendar:business\n\nperson sam \"Sam Chen\"\nperson jen \"Jennifer Wu\"\n\nteam platform-team \"Platform Team\"\nteam mobile-team \"Mobile Team\"\n\nanchor kickoff date:2026-01-05\nanchor code-freeze \"Code Freeze\" date:2026-03-02\nanchor ga-date \"GA Date\" date:2026-03-16\n\nsize med effort:1w\nsize lg effort:2w\nsize xl effort:4w\n\nlabel enterprise \"Enterprise readiness\" style:enterprise-style\nlabel security \"Security\" style:enterprise-style\nlabel low-confidence \"Low confidence\" style:risky-style\n\nstatus handoff \"Handoff\"\n\nswimlane platform \"Platform\" owner:platform-team\n item auth-refactor \"Auth refactor\" size:lg after:kickoff status:done owner:sam labels:enterprise link:https://github.com/acme/auth/issues/123\n parallel after:auth-refactor\n group audit-track \"Audit Track\" style:audit-track-style labels:security\n item audit-log \"Audit log v2\" size:lg before:code-freeze status:in-progress remaining:30% labels:[enterprise, security] link:https://wiki.acme.com/audit\n item audit-ui \"Audit UI\" size:med\n item sso \"SSO plugins\" size:med labels:[enterprise, low-confidence]\n item platform-qa \"Platform QA\" size:med status:handoff\n\nswimlane mobile \"Mobile\" owner:mobile-team\n item offline \"Offline mode\" size:lg after:kickoff owner:jen status:at-risk remaining:60%\n item push-v2 \"Push notifications v2\" size:med owner:mobile-team\n\nmilestone beta \"Beta\" after:auth-refactor\nmilestone v1-ga \"v1 GA\" after:[auth-refactor, audit-log]\nmilestone ga-launch \"GA launch\" date:2026-03-16\n\nfootnote vendor-dep \"Vendor dependency\" on:audit-log\n description \"Blocked until vendor contract is signed.\"\nfootnote capacity-risk \"Team capacity risk\" on:[mobile, platform]\n description \"Mobile team is down to 2 engineers through Q2.\"\n"
51
+ },
52
+ {
53
+ "name": "product.nowline",
54
+ "content": "nowline v1\n\nconfig\n\nscale\n name: weeks\n label-every: 2\n label: \"W{n}\"\n\ncalendar\n days-per-week: 5\n days-per-month: 22\n days-per-quarter: 65\n days-per-year: 260\n\nstyle enterprise-style \"Enterprise readiness\"\n bg: blue\n fg: navy\n text: white\n border: solid\n\nstyle risky\n border: dashed\n fg: orange\n\nstyle subtle\n bg: gray\n\ndefault item shadow:subtle\ndefault swimlane padding:sm spacing:none\ndefault roadmap padding:md header-height:md font:sans\ndefault parallel bracket:none\n\nroadmap platform-2026 \"Platform 2026\" author:\"Acme Engineering\" start:2026-01-05 calendar:custom\n\nperson sam \"Sam Chen\"\nperson jen \"Jennifer Wu\"\n\nsize xs effort:1d\nsize sm effort:3d\nsize md effort:1w\nsize lg effort:2w\nsize xl effort:1m\n\nstatus awaiting-review\nstatus in-review\n\nlabel enterprise \"Enterprise readiness\" style:enterprise-style\nlabel security \"Security hardening\" style:enterprise-style\nlabel low-confidence style:risky\n\nanchor kickoff date:2026-01-06\nanchor code-freeze \"Code Freeze\" date:2026-05-01\nanchor ga-date \"GA Date\" date:2026-06-01\n\nswimlane platform\n item auth-refactor \"Auth refactor\" size:lg after:kickoff status:done owner:sam labels:enterprise link:https://github.com/acme/platform/issues/123\n parallel after:auth-refactor\n group audit-track \"Audit Track\" labels:security\n item audit-log \"Audit log v2\" size:xl before:code-freeze remaining:30% labels:[enterprise, security]\n description \"Comprehensive audit trail for all admin actions\"\n item audit-ui \"Audit UI\" size:md\n item sso \"SSO plugins\" size:md labels:[enterprise, low-confidence]\n item platform-qa \"Platform QA\" size:sm\n\nswimlane mobile\n item offline \"Offline mode\" size:lg after:kickoff owner:jen status:at-risk remaining:60% link:https://github.com/acme/mobile/pull/87\n item push-v2 \"Push notifications v2\" size:md\n\nmilestone beta \"Beta\" after:auth-refactor\nmilestone ga-launch \"GA launch\" date:2026-06-01 after:[auth-refactor, audit-log]\n\nfootnote vendor-footnote \"Vendor dependency\" on:audit-log\n description \"Blocked until vendor contract is signed. Expected March resolution.\"\n"
55
+ },
56
+ {
57
+ "name": "showcase.nowline",
58
+ "content": "nowline v1\n\nroadmap showcase \"Nowline Showcase\" start:2026-01-05 scale:1m author:\"Nowline\"\n\nanchor kickoff date:2026-01-05\n\nswimlane engineering \"Engineering\"\n item design \"Design spec\" duration:2w after:kickoff status:done\n parallel after:design\n group build \"Build\"\n item api \"API surface\" duration:3w status:in-progress remaining:1w\n item ui \"Web client\" duration:3w status:in-progress remaining:2w\n item integrate \"Integration tests\" duration:2w\n item ship \"Ship\" duration:1w after:integrate\n\nswimlane marketing \"Marketing\"\n item brief \"Launch brief\" duration:1w after:kickoff status:done\n item assets \"Launch assets\" duration:3w after:brief\n item announce \"Announcement\" duration:1w after:ship\n\nmilestone launch \"Launch\" after:[ship, announce]\n"
59
+ },
60
+ {
61
+ "name": "sizing.nowline",
62
+ "content": "nowline v1\n\n// Lean example: T-shirt sizes plus one \"crash a job\" — an XL burns one\n// month of effort but lands as a 2w bar with capacity:2. Full matrix of\n// size + capacity combinations lives in tests/size-and-capacity.nowline.\n\nroadmap web-q1 \"Web Platform Q1\" start:2026-01-05 length:6w\n\nsize md effort:1w\nsize lg effort:2w\nsize xl effort:1m\n\nswimlane web \"Web platform\"\n item header-refresh \"Header refresh\" size:md\n // XL effort (1m) divided by capacity 2 → 2w bar on the timeline.\n item auth-refactor \"Auth refactor\" size:xl capacity:2\n item search-v2 \"Search v2\" size:lg after:header-refresh\n"
63
+ },
64
+ {
65
+ "name": "teams.nowline",
66
+ "content": "nowline v1\n\nroadmap teams-2026 \"Teams Roadmap 2026\" start:2026-01-05\n\nperson sam \"Sam Chen\" link:https://github.com/samchen\nperson jen \"Jennifer Wu\"\nperson alex \"Alex Rivera\"\n\nteam engineering \"Engineering\"\n team platform-team \"Platform Team\"\n person sam\n person jen\n team mobile-team \"Mobile Team\"\n person alex\n\nanchor kickoff date:2026-01-06\nanchor mid-year date:2026-07-01\nanchor eoy \"End of Year\" date:2026-12-15\n\nswimlane platform owner:platform-team\n item auth \"Auth refactor\" duration:1m after:kickoff owner:sam status:done\n item api-v2 \"API v2\" duration:2w owner:jen status:in-progress remaining:40%\n\nswimlane mobile owner:mobile-team\n item offline \"Offline mode\" duration:1m after:kickoff owner:alex status:at-risk remaining:60%\n item push \"Push notifications\" duration:2w owner:alex\n\nmilestone beta \"Beta\" after:[auth, api-v2]\nmilestone ga \"GA\" date:2026-12-01 after:[offline, push]\n\nfootnote eng-capacity \"Mobile team capacity risk\" on:mobile-team\n description \"Mobile team is understaffed through Q2.\"\n\nfootnote vendor-dep \"Vendor dependency\" on:[auth, api-v2]\n description \"Blocked until vendor contract is signed.\"\n"
67
+ }
68
+ ];
69
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/generated/resources.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,kFAAkF;AAElF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAW,2v3CAA2v3C,CAAC;AAOty3C,qFAAqF;AACrF,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACnC;QACI,MAAM,EAAE,kBAAkB;QAC1B,SAAS,EAAE,slBAAslB;KACpmB;IACD;QACI,MAAM,EAAE,sBAAsB;QAC9B,SAAS,EAAE,4XAA4X;KAC1Y;IACD;QACI,MAAM,EAAE,sBAAsB;QAC9B,SAAS,EAAE,gyBAAgyB;KAC9yB;IACD;QACI,MAAM,EAAE,0BAA0B;QAClC,SAAS,EAAE,o0DAAo0D;KACl1D;IACD;QACI,MAAM,EAAE,yBAAyB;QACjC,SAAS,EAAE,ggBAAggB;KAC9gB;IACD;QACI,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,2vVAA2vV;KACzwV;IACD;QACI,MAAM,EAAE,oBAAoB;QAC5B,SAAS,EAAE,uVAAuV;KACrW;IACD;QACI,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,ikBAAikB;KAC/kB;IACD;QACI,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,i4DAAi4D;KAC/4D;IACD;QACI,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,kSAAkS;KAChT;IACD;QACI,MAAM,EAAE,uBAAuB;QAC/B,SAAS,EAAE,qqEAAqqE;KACnrE;IACD;QACI,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,iqEAAiqE;KAC/qE;IACD;QACI,MAAM,EAAE,kBAAkB;QAC1B,SAAS,EAAE,szBAAszB;KACp0B;IACD;QACI,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4nBAA4nB;KAC1oB;IACD;QACI,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,msCAAmsC;KACjtC;CACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ // @nowline/mcp — entry point for `npx @nowline/mcp`.
3
+ //
4
+ // Parses the optional --root flag, creates the MCP server, and connects it to
5
+ // the stdio transport. The server module (createMcpServer) is shared with
6
+ // the CLI's `--mcp` flag (packages/cli/src/commands/mcp-host.ts).
7
+ //
8
+ // Usage:
9
+ // npx @nowline/mcp [--root <path>] [--version]
10
+ //
11
+ // Spec: specs/mcp.md. Plan: export_determinism s8 + s10.
12
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
13
+ import { createMcpServer } from './server.js';
14
+ function parseArgs(argv) {
15
+ const args = argv.slice(2);
16
+ let root;
17
+ let help = false;
18
+ let version = false;
19
+ for (let i = 0; i < args.length; i++) {
20
+ if (args[i] === '--root' && i + 1 < args.length) {
21
+ root = args[++i];
22
+ }
23
+ else if (args[i] === '-h' || args[i] === '--help') {
24
+ help = true;
25
+ }
26
+ else if (args[i] === '--version' || args[i] === '-v') {
27
+ version = true;
28
+ }
29
+ }
30
+ return { root, help, version };
31
+ }
32
+ const { root, help, version } = parseArgs(process.argv);
33
+ if (version) {
34
+ process.stdout.write('0.5.1\n');
35
+ process.exit(0);
36
+ }
37
+ if (help) {
38
+ process.stdout.write([
39
+ 'Usage: npx @nowline/mcp [options]',
40
+ '',
41
+ 'Start the Nowline MCP server (stdio transport).',
42
+ '',
43
+ 'Options:',
44
+ ' --root <path> Allowed root for file operations. Defaults to cwd.',
45
+ ' --version, -v Print version and exit.',
46
+ ' --help, -h Show this help.',
47
+ '',
48
+ ].join('\n'));
49
+ process.exit(0);
50
+ }
51
+ const server = createMcpServer({ allowedRoot: root });
52
+ const transport = new StdioServerTransport();
53
+ await server.connect(transport);
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,qDAAqD;AACrD,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,kEAAkE;AAClE,EAAE;AACF,SAAS;AACT,iDAAiD;AACjD,EAAE;AACF,0DAA0D;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,SAAS,SAAS,CAAC,IAAc;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClD,IAAI,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACrD,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,IAAI,OAAO,EAAE,CAAC;IACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,IAAI,IAAI,EAAE,CAAC;IACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAChB;QACI,mCAAmC;QACnC,EAAE;QACF,iDAAiD;QACjD,EAAE;QACF,UAAU;QACV,sEAAsE;QACtE,2CAA2C;QAC3C,mCAAmC;QACnC,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export interface McpServerOptions {
3
+ /** Working directory — all file paths are resolved relative to this root. Defaults to process.cwd(). */
4
+ allowedRoot?: string;
5
+ /** Server name shown in the MCP client. Defaults to 'nowline'. */
6
+ name?: string;
7
+ /** Server version. Defaults to package version. */
8
+ version?: string;
9
+ }
10
+ export declare function createMcpServer(opts?: McpServerOptions): McpServer;
11
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6IpE,MAAM,WAAW,gBAAgB;IAC7B,wGAAwG;IACxG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,SAAS,CAqZtE"}