@dcyfr/ai-notebooks 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.env.example +21 -0
- package/.github/workflows/ci.yml +33 -0
- package/.github/workflows/release.yml +82 -0
- package/AGENTS.md +38 -0
- package/CHANGELOG.md +58 -0
- package/CONTRIBUTING.md +34 -0
- package/LICENSE +21 -0
- package/README.md +134 -0
- package/SECURITY.md +924 -0
- package/docs/API.md +1775 -0
- package/docs/ARCHITECTURE.md +70 -0
- package/docs/DEVELOPMENT.md +70 -0
- package/docs/plans/PROMOTION_CHECKLIST_DCYFR_AI_NOTEBOOKS_2026-02-08.md +293 -0
- package/eslint.config.mjs +23 -0
- package/examples/data-exploration/index.ts +95 -0
- package/examples/data-pipeline/index.ts +111 -0
- package/examples/model-analysis/index.ts +118 -0
- package/package.json +57 -0
- package/src/index.ts +208 -0
- package/src/notebook/cell.ts +149 -0
- package/src/notebook/index.ts +50 -0
- package/src/notebook/notebook.ts +232 -0
- package/src/notebook/runner.ts +141 -0
- package/src/pipeline/dataset.ts +220 -0
- package/src/pipeline/index.ts +60 -0
- package/src/pipeline/runner.ts +195 -0
- package/src/pipeline/statistics.ts +182 -0
- package/src/pipeline/transform.ts +187 -0
- package/src/types/index.ts +301 -0
- package/src/utils/csv.ts +106 -0
- package/src/utils/format.ts +78 -0
- package/src/utils/index.ts +37 -0
- package/src/utils/validation.ts +142 -0
- package/src/visualization/chart.ts +149 -0
- package/src/visualization/formatter.ts +140 -0
- package/src/visualization/index.ts +34 -0
- package/src/visualization/themes.ts +60 -0
- package/tests/cell.test.ts +158 -0
- package/tests/dataset.test.ts +159 -0
- package/tests/notebook.test.ts +168 -0
- package/tests/pipeline.test.ts +158 -0
- package/tests/runner.test.ts +168 -0
- package/tests/statistics.test.ts +162 -0
- package/tests/transform.test.ts +165 -0
- package/tests/types.test.ts +258 -0
- package/tests/utils.test.ts +257 -0
- package/tests/visualization.test.ts +224 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +19 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Changesets
|
|
2
|
+
|
|
3
|
+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
|
|
4
|
+
with multi-package repos, or single-package repos to help you version and publish your code. You can
|
|
5
|
+
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
|
|
6
|
+
|
|
7
|
+
We have a quick list of common questions to get you started engaging with this project in
|
|
8
|
+
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://unpkg.com/@changesets/config@3.1.2/schema.json",
|
|
3
|
+
"changelog": "@changesets/cli/changelog",
|
|
4
|
+
"commit": false,
|
|
5
|
+
"fixed": [],
|
|
6
|
+
"linked": [],
|
|
7
|
+
"access": "public",
|
|
8
|
+
"baseBranch": "main",
|
|
9
|
+
"updateInternalDependencies": "patch",
|
|
10
|
+
"ignore": []
|
|
11
|
+
}
|
package/.env.example
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Environment
|
|
2
|
+
JUPYTER_PORT=8888
|
|
3
|
+
JUPYTER_TOKEN=your-secret-token
|
|
4
|
+
|
|
5
|
+
# Data Sources
|
|
6
|
+
DATA_DIR=./data
|
|
7
|
+
OUTPUT_DIR=./output
|
|
8
|
+
|
|
9
|
+
# Database (optional)
|
|
10
|
+
DB_CONNECTION_STRING=sqlite:///data/local.db
|
|
11
|
+
|
|
12
|
+
# AI Provider (for AI-assisted analysis)
|
|
13
|
+
LLM_PROVIDER=openai
|
|
14
|
+
OPENAI_API_KEY=your-openai-api-key
|
|
15
|
+
|
|
16
|
+
# Visualization
|
|
17
|
+
CHART_THEME=dcyfr
|
|
18
|
+
EXPORT_FORMAT=png
|
|
19
|
+
|
|
20
|
+
# Logging
|
|
21
|
+
LOG_LEVEL=info
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
name: Test
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
continue-on-error: true # Allow migration to proceed
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
node-version: ['20', '22']
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- uses: actions/setup-node@v4
|
|
23
|
+
with:
|
|
24
|
+
node-version: ${{ matrix.node-version }}
|
|
25
|
+
cache: 'npm'
|
|
26
|
+
- run: npm ci
|
|
27
|
+
- run: npm run test:coverage
|
|
28
|
+
- name: Upload coverage
|
|
29
|
+
if: matrix.node-version == '22'
|
|
30
|
+
uses: actions/upload-artifact@v4
|
|
31
|
+
with:
|
|
32
|
+
name: coverage
|
|
33
|
+
path: coverage/
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pull-requests: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
env:
|
|
14
|
+
NODE_VERSION: '20'
|
|
15
|
+
NPM_CONFIG_PROVENANCE: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
release:
|
|
19
|
+
name: Release to npm
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
environment: production
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout repository
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0
|
|
28
|
+
|
|
29
|
+
- name: Setup Node.js
|
|
30
|
+
uses: actions/setup-node@v4
|
|
31
|
+
with:
|
|
32
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
33
|
+
cache: '' # No cache - package is part of workspace
|
|
34
|
+
|
|
35
|
+
- name: Install dependencies
|
|
36
|
+
run: |
|
|
37
|
+
npm install
|
|
38
|
+
npm install -D @changesets/cli @changesets/changelog-github
|
|
39
|
+
|
|
40
|
+
- name: Upgrade npm for Trusted Publishing
|
|
41
|
+
run: npm install -g npm@latest
|
|
42
|
+
|
|
43
|
+
- name: Verify npm version and OIDC support
|
|
44
|
+
run: |
|
|
45
|
+
echo "npm version:"
|
|
46
|
+
npm --version
|
|
47
|
+
if ! npm --version | awk '{if ($1 < 11.5) exit 1}'; then
|
|
48
|
+
echo "❌ npm version must be >= 11.5 for OIDC support"
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
echo "✅ npm version compatible"
|
|
52
|
+
|
|
53
|
+
echo "Checking OIDC environment:"
|
|
54
|
+
if env | grep -q ACTIONS_ID_TOKEN; then
|
|
55
|
+
echo "✅ OIDC token available"
|
|
56
|
+
else
|
|
57
|
+
echo "⚠️ OIDC token not found (may not be needed at this step)"
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
- name: Run linter
|
|
61
|
+
run: npm run lint
|
|
62
|
+
continue-on-error: true
|
|
63
|
+
|
|
64
|
+
- name: Type check
|
|
65
|
+
run: npm run typecheck
|
|
66
|
+
continue-on-error: true
|
|
67
|
+
|
|
68
|
+
- name: Run tests
|
|
69
|
+
run: npm run test:run
|
|
70
|
+
continue-on-error: true
|
|
71
|
+
|
|
72
|
+
- name: Build package
|
|
73
|
+
run: npm run build
|
|
74
|
+
continue-on-error: true
|
|
75
|
+
|
|
76
|
+
- name: Create Release Pull Request or Publish
|
|
77
|
+
uses: changesets/action@v1
|
|
78
|
+
with:
|
|
79
|
+
publish: npm run release
|
|
80
|
+
env:
|
|
81
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
82
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# AGENTS.md — @dcyfr/ai-notebooks
|
|
2
|
+
|
|
3
|
+
## Project Overview
|
|
4
|
+
|
|
5
|
+
TypeScript data science notebook toolkit providing notebook engine, data pipelines, statistics, and visualization.
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
src/
|
|
11
|
+
├── types/ # Zod schemas and TypeScript types
|
|
12
|
+
├── notebook/ # Cell management, notebook CRUD, execution engine
|
|
13
|
+
├── pipeline/ # Dataset operations, transforms, statistics, ETL runner
|
|
14
|
+
├── visualization/ # Chart builders, text renderers, themes
|
|
15
|
+
└── utils/ # CSV parsing, formatting, data validation
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Key Patterns
|
|
19
|
+
|
|
20
|
+
- **Immutable data transforms** — All dataset operations return new instances
|
|
21
|
+
- **Zod schemas** — Type definitions derived from Zod schemas in `types/index.ts`
|
|
22
|
+
- **Fluent pipeline API** — `createPipeline().step().step().run()`
|
|
23
|
+
- **Text-based rendering** — Charts and tables render to strings (no DOM dependency)
|
|
24
|
+
|
|
25
|
+
## Testing
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm run test # All tests
|
|
29
|
+
npm run test:watch # Watch mode
|
|
30
|
+
npm run test:coverage # Coverage (80% threshold)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Conventions
|
|
34
|
+
|
|
35
|
+
- Pure functions where possible
|
|
36
|
+
- No side effects in data transforms
|
|
37
|
+
- All public APIs exported through barrel files
|
|
38
|
+
- Descriptive function names matching domain terminology
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# @dcyfr/ai-notebooks
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- a8e574a: **Production Release v1.0.0 — Data Science Notebook Toolkit**
|
|
8
|
+
|
|
9
|
+
Promote @dcyfr/ai-notebooks to production-ready v1.0.0 with comprehensive notebook execution, data pipelines, and visualization support.
|
|
10
|
+
|
|
11
|
+
**Features:**
|
|
12
|
+
|
|
13
|
+
- ✅ **Notebook Engine** — Create, manage, execute computational notebooks with cells and outputs
|
|
14
|
+
- ✅ **Data Pipeline** — Multi-step ETL pipelines with transforms, aggregation, joins, validation
|
|
15
|
+
- ✅ **Statistics** — Descriptive stats, correlation analysis, quantiles, frequency counts
|
|
16
|
+
- ✅ **Visualization** — Chart builders and text-based renderers (bar charts, tables, sparklines)
|
|
17
|
+
- ✅ **Data Utilities** — CSV parsing, dataset operations, composable validation rules
|
|
18
|
+
- ✅ **Type-Safe** — Full TypeScript support with Zod schema validation
|
|
19
|
+
|
|
20
|
+
**Quality Metrics:**
|
|
21
|
+
|
|
22
|
+
- 96.95% line coverage, 85.98% branch coverage
|
|
23
|
+
- 199/199 tests passing (31 test suites)
|
|
24
|
+
- ESLint clean (0 violations)
|
|
25
|
+
- Strict TypeScript compilation
|
|
26
|
+
|
|
27
|
+
**Migration Path:**
|
|
28
|
+
Install via npm:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install @dcyfr/ai-notebooks
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Create and execute notebooks:
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import {
|
|
38
|
+
createNotebook,
|
|
39
|
+
addCell,
|
|
40
|
+
codeCell,
|
|
41
|
+
executeNotebook,
|
|
42
|
+
} from "@dcyfr/ai-notebooks";
|
|
43
|
+
|
|
44
|
+
const notebook = createNotebook({ title: "My Analysis" });
|
|
45
|
+
addCell(notebook, codeCell({ code: "const data = [1, 2, 3];" }));
|
|
46
|
+
const result = await executeNotebook(notebook);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Documentation:**
|
|
50
|
+
|
|
51
|
+
- [API Reference](docs/API.md) — 4,440 words, comprehensive examples
|
|
52
|
+
- [Security Guide](docs/SECURITY.md) — 28,867 bytes, best practices
|
|
53
|
+
|
|
54
|
+
## 0.1.1
|
|
55
|
+
|
|
56
|
+
### Patch Changes
|
|
57
|
+
|
|
58
|
+
- 02d1fec: Migrate to changesets for automated publishing with Trusted Publishers
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Contributing to @dcyfr/ai-notebooks
|
|
2
|
+
|
|
3
|
+
## Development Setup
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
git clone https://github.com/dcyfr/dcyfr-ai-notebooks.git
|
|
7
|
+
cd dcyfr-ai-notebooks
|
|
8
|
+
npm install
|
|
9
|
+
npm test
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Guidelines
|
|
13
|
+
|
|
14
|
+
- Write tests for all new functionality
|
|
15
|
+
- Use TypeScript strict mode
|
|
16
|
+
- Follow existing code patterns (immutable data, pure functions)
|
|
17
|
+
- Export all public APIs through barrel files (`index.ts`)
|
|
18
|
+
- Include JSDoc comments on all public functions
|
|
19
|
+
|
|
20
|
+
## Pull Requests
|
|
21
|
+
|
|
22
|
+
1. Fork the repository
|
|
23
|
+
2. Create a feature branch
|
|
24
|
+
3. Write tests and implementation
|
|
25
|
+
4. Ensure all tests pass: `npm test`
|
|
26
|
+
5. Ensure types check: `npm run typecheck`
|
|
27
|
+
6. Submit a pull request
|
|
28
|
+
|
|
29
|
+
## Code Style
|
|
30
|
+
|
|
31
|
+
- Use `const` by default
|
|
32
|
+
- Prefer explicit return types on public functions
|
|
33
|
+
- Use Zod schemas for runtime validation
|
|
34
|
+
- Keep functions small and focused
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DCYFR
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# @dcyfr/ai-notebooks
|
|
2
|
+
|
|
3
|
+
Data science notebook toolkit for TypeScript — create, execute, and analyze computational notebooks with built-in data pipeline and visualization support.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Notebook Engine** — Create, manage, and execute computational notebooks with cells, outputs, and metadata
|
|
8
|
+
- **Data Pipeline** — Build multi-step ETL pipelines with transforms, aggregation, joins, and validation
|
|
9
|
+
- **Statistics** — Descriptive statistics, correlation analysis, quantiles, and frequency counts
|
|
10
|
+
- **Visualization** — Chart specification builders and text-based renderers (bar charts, tables, sparklines)
|
|
11
|
+
- **Data Utilities** — CSV parsing, dataset operations, data validation with composable rules
|
|
12
|
+
- **Type-Safe** — Full TypeScript support with Zod schema validation
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @dcyfr/ai-notebooks
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Create and Execute a Notebook
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import {
|
|
24
|
+
createNotebook,
|
|
25
|
+
addCell,
|
|
26
|
+
codeCell,
|
|
27
|
+
markdownCell,
|
|
28
|
+
executeNotebook,
|
|
29
|
+
getExecutionSummary,
|
|
30
|
+
} from '@dcyfr/ai-notebooks';
|
|
31
|
+
|
|
32
|
+
// Create a notebook
|
|
33
|
+
let nb = createNotebook({ title: 'My Analysis' });
|
|
34
|
+
nb = addCell(nb, markdownCell('# Hello World'));
|
|
35
|
+
nb = addCell(nb, codeCell('const x = 42;\nconsole.log(x);'));
|
|
36
|
+
|
|
37
|
+
// Execute
|
|
38
|
+
const { result } = await executeNotebook(nb);
|
|
39
|
+
const summary = getExecutionSummary(result);
|
|
40
|
+
console.log(`Completed: ${summary.completed}/${summary.total}`);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Data Analysis
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import {
|
|
47
|
+
createDataset,
|
|
48
|
+
describe,
|
|
49
|
+
sortBy,
|
|
50
|
+
head,
|
|
51
|
+
renderDatasetTable,
|
|
52
|
+
renderStatsTable,
|
|
53
|
+
} from '@dcyfr/ai-notebooks';
|
|
54
|
+
|
|
55
|
+
const data = createDataset([
|
|
56
|
+
{ name: 'Alice', score: 92.5 },
|
|
57
|
+
{ name: 'Bob', score: 88.0 },
|
|
58
|
+
{ name: 'Charlie', score: 95.3 },
|
|
59
|
+
], 'students');
|
|
60
|
+
|
|
61
|
+
// Descriptive statistics
|
|
62
|
+
console.log(renderStatsTable(describe(data)));
|
|
63
|
+
|
|
64
|
+
// Top performers
|
|
65
|
+
console.log(renderDatasetTable(head(sortBy(data, 'score', false))));
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Data Pipelines
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import { createPipeline, filterRows, normalize, aggregate } from '@dcyfr/ai-notebooks';
|
|
72
|
+
import type { Dataset } from '@dcyfr/ai-notebooks';
|
|
73
|
+
|
|
74
|
+
const pipeline = createPipeline<Dataset>('my-pipeline')
|
|
75
|
+
.step('filter', async (data) => filterRows(data, (r) => r.active === true))
|
|
76
|
+
.step('normalize', async (data) => normalize(data, 'score'))
|
|
77
|
+
.step('aggregate', async (data) =>
|
|
78
|
+
aggregate(data, 'category', {
|
|
79
|
+
avg_score: { column: 'score', fn: 'avg' },
|
|
80
|
+
count: { column: 'score', fn: 'count' },
|
|
81
|
+
})
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
const { result, output } = await pipeline.run(dataset);
|
|
85
|
+
console.log(`Status: ${result.status}, Steps: ${result.steps.length}`);
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Visualization
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
import { barChart, renderBarChart, sparkline } from '@dcyfr/ai-notebooks';
|
|
92
|
+
|
|
93
|
+
const chart = barChart('Sales', ['Q1', 'Q2', 'Q3', 'Q4'], [120, 150, 180, 200]);
|
|
94
|
+
console.log(renderBarChart(chart));
|
|
95
|
+
|
|
96
|
+
console.log('Trend:', sparkline([120, 150, 180, 200]));
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Module Structure
|
|
100
|
+
|
|
101
|
+
| Module | Import Path | Description |
|
|
102
|
+
|--------|------------|-------------|
|
|
103
|
+
| Notebook | `@dcyfr/ai-notebooks/notebook` | Cell/notebook CRUD, execution engine |
|
|
104
|
+
| Pipeline | `@dcyfr/ai-notebooks/pipeline` | Dataset ops, transforms, statistics, ETL |
|
|
105
|
+
| Visualization | `@dcyfr/ai-notebooks/visualization` | Charts, tables, themes, formatters |
|
|
106
|
+
| Utils | `@dcyfr/ai-notebooks/utils` | CSV, formatting, validation |
|
|
107
|
+
|
|
108
|
+
## Examples
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Data exploration
|
|
112
|
+
npx tsx examples/data-exploration/index.ts
|
|
113
|
+
|
|
114
|
+
# Data pipeline
|
|
115
|
+
npx tsx examples/data-pipeline/index.ts
|
|
116
|
+
|
|
117
|
+
# Model analysis
|
|
118
|
+
npx tsx examples/model-analysis/index.ts
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Development
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm install
|
|
125
|
+
npm run test # Run tests
|
|
126
|
+
npm run test:watch # Watch mode
|
|
127
|
+
npm run test:coverage # Coverage report
|
|
128
|
+
npm run build # Build
|
|
129
|
+
npm run typecheck # Type check
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## License
|
|
133
|
+
|
|
134
|
+
MIT — See [LICENSE](LICENSE) for details.
|