@quietloudlab/ai-interaction-atlas 1.0.1 → 1.0.2

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.
Files changed (2) hide show
  1. package/README.md +156 -365
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -4,24 +4,78 @@
4
4
  [![License](https://img.shields.io/npm/l/@quietloudlab/ai-interaction-atlas)](https://opensource.org/licenses/Apache-2.0)
5
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue)](https://www.typescriptlang.org/)
6
6
 
7
- A shared language for designing AI experiences across human actions, AI tasks, system operations, data, constraints, and touchpoints.
7
+ A shared language for designing **legible, inspectable AI systems**.
8
8
 
9
- **100+ interaction patterns** organized into **6 system dimensions** to help you design inspectable, responsible AI systems.
9
+ The AI Interaction Atlas is a structured taxonomy of interaction patterns used to design, reason about, and document human–AI systems. It focuses on *how systems behave*, *where agency lives*, and *what constraints shape outcomes* — not just models or UI.
10
10
 
11
- 🌐 [**Explore the Atlas**](https://ai-interaction.com) | 📖 [**Documentation**](https://ai-interaction.com/rationale) | 🐙 [**GitHub**](https://github.com/quietloudlab/ai-interaction-atlas)
11
+ **180 structured elements** across **6 system dimensions**, designed to make AI systems visible before they are built.
12
+
13
+ 🌐 **Explore the Atlas:** https://ai-interaction.com
14
+ 🐙 **GitHub:** https://github.com/quietloudlab/ai-interaction-atlas
12
15
 
13
16
  ---
14
17
 
15
- ## Why Use This Package?
18
+ ## What This Package Is
19
+
20
+ This npm package provides the **Atlas data and utilities**:
16
21
 
17
- The AI Interaction Atlas provides structured data for:
22
+ - A curated, opinionated dataset of AI interaction patterns
23
+ - Strongly typed structures for tasks, data, constraints, and touchpoints
24
+ - Search, filtering, and validation utilities
25
+ - Zero dependencies, tree-shakeable, framework-agnostic
18
26
 
19
- - 🤖 **Building AI coding assistants** that understand interaction design patterns
20
- - 🛠️ **Creating design tools** that reference the taxonomy
21
- - 📊 **Validating AI workflows** against established patterns
22
- - 🔍 **Searching patterns programmatically** by keyword or dimension
23
- - 📝 **Generating documentation** from interaction flows
24
- - 🧪 **Training and education** with structured AI design patterns
27
+ It is designed to be used:
28
+ - in code
29
+ - in prompts
30
+ - in documentation
31
+ - in tools built by you or the community
32
+
33
+ ---
34
+
35
+ ## What This Package Is *Not*
36
+
37
+ - ❌ Not an AI framework
38
+ - ❌ Not a UI kit
39
+ - ❌ Not an orchestration engine
40
+ - ❌ Not a visual editor
41
+
42
+ > **Note:**
43
+ > A visual canvas for composing and mapping systems using the Atlas is being explored separately.
44
+ > This package intentionally focuses on the **language layer**, not the tooling.
45
+
46
+ ---
47
+
48
+ ## Who This Is For
49
+
50
+ You may find the Atlas useful if you are:
51
+
52
+ - Designing AI-powered products or workflows
53
+ - Building internal tools or design systems for AI teams
54
+ - Creating AI assistants that reason about interaction patterns
55
+ - Documenting or auditing AI systems
56
+ - Teaching or learning applied AI system design
57
+
58
+ You do **not** need to be an ML engineer to use the Atlas.
59
+ It encodes *design intent and system behavior*, not implementation details.
60
+
61
+ ---
62
+
63
+ ## Why Use the Atlas?
64
+
65
+ Most AI products are designed at the wrong level of abstraction.
66
+
67
+ Teams jump to:
68
+ > “Use an LLM”
69
+ > “Add an agent”
70
+ > “Automate this”
71
+
72
+ Instead of asking:
73
+ - Where does human judgment remain essential?
74
+ - Which decisions are probabilistic vs deterministic?
75
+ - What constraints govern safety, latency, or trust?
76
+ - Who is accountable when the system fails?
77
+
78
+ The Atlas provides a **shared vocabulary** to answer those questions *before* systems harden.
25
79
 
26
80
  ---
27
81
 
@@ -43,46 +97,54 @@ pnpm add @quietloudlab/ai-interaction-atlas
43
97
 
44
98
  ## Quick Start
45
99
 
46
- ```typescript
100
+ ```ts
47
101
  import {
48
102
  AI_TASKS,
49
- HUMAN_TASKS,
50
- SYSTEM_TASKS,
51
103
  searchPatterns,
52
104
  getPattern,
105
+ validateWorkflow,
53
106
  getAtlasStats
54
107
  } from '@quietloudlab/ai-interaction-atlas';
55
108
 
56
- // Get all AI capabilities
109
+ // Inspect available AI capabilities
57
110
  console.log(`${AI_TASKS.length} AI task patterns available`);
58
111
 
59
- // Search for patterns
112
+ // Search patterns by keyword
60
113
  const reviewPatterns = searchPatterns('review', { dimensions: ['human'] });
61
- console.log(reviewPatterns);
62
114
 
63
- // Get a specific pattern by ID
64
- const classifyTask = getPattern('classify-intent');
65
- console.log(classifyTask?.description);
115
+ // Retrieve a specific pattern
116
+ const classifyIntent = getPattern('classify-intent');
117
+ console.log(classifyIntent?.description);
118
+
119
+ // Validate a proposed system workflow
120
+ const validation = validateWorkflow([
121
+ 'ai_classify_intent',
122
+ 'human_review_output',
123
+ 'system_log_event'
124
+ ]);
125
+
126
+ if (!validation.valid) {
127
+ console.error('Invalid pattern IDs:', validation.invalidIds);
128
+ }
66
129
 
67
130
  // Get Atlas statistics
68
- const stats = getAtlasStats();
69
- console.log(`Total patterns: ${stats.total}`);
131
+ console.log(getAtlasStats());
70
132
  ```
71
133
 
72
134
  ---
73
135
 
74
- ## The Six Dimensions
136
+ ## The Six System Dimensions
75
137
 
76
- The Atlas organizes AI interactions into six core dimensions:
138
+ The Atlas models AI systems as compositions of six dimensions:
77
139
 
78
- | Dimension | Description | Count |
79
- |-----------|-------------|-------|
80
- | **AI Tasks** | Probabilistic capabilities (detect, classify, generate, transform) | 45+ |
81
- | **Human Tasks** | Human actions in the loop (review, approve, configure, decide) | 28+ |
82
- | **System Tasks** | Infrastructure operations (routing, caching, logging, state) | 31+ |
83
- | **Data Artifacts** | Information types that flow through the system | 52+ |
84
- | **Constraints** | Boundaries that shape design (latency, privacy, cost, quality) | 42+ |
85
- | **Touchpoints** | Where interactions happen (UI, API, voice, AR) | 18+ |
140
+ | Dimension | Description |
141
+ |---------|-------------|
142
+ | **AI Patterns** | Probabilistic capabilities (detect, classify, generate, transform) |
143
+ | **Human Actions** | Where human agency lives (review, approve, decide, configure) |
144
+ | **System Operations** | Deterministic infrastructure behavior (routing, caching, logging) |
145
+ | **Data Artifacts** | Inputs, outputs, and contextual information |
146
+ | **Constraints** | Boundaries that shape behavior (latency, privacy, accuracy, cost) |
147
+ | **Touchpoints** | Where systems surface (UI, API, voice, notifications) |
86
148
 
87
149
  ---
88
150
 
@@ -90,24 +152,24 @@ The Atlas organizes AI interactions into six core dimensions:
90
152
 
91
153
  ### Data Collections
92
154
 
93
- ```typescript
155
+ ```ts
94
156
  import {
95
- AI_TASKS, // Array of AI capability patterns
96
- HUMAN_TASKS, // Array of human action patterns
97
- SYSTEM_TASKS, // Array of system operation patterns
98
- DATA_ARTIFACTS, // Array of data type definitions
99
- CONSTRAINTS, // Array of constraint definitions
100
- TOUCHPOINTS, // Array of touchpoint definitions
101
- LAYERS, // Array of processing layer definitions
102
- WORKFLOW_TEMPLATES, // Array of pre-built workflow templates
103
- EXAMPLES, // Array of real-world examples
104
- ATLAS_DATA // All data in one object
157
+ AI_TASKS,
158
+ HUMAN_TASKS,
159
+ SYSTEM_TASKS,
160
+ DATA_ARTIFACTS,
161
+ CONSTRAINTS,
162
+ TOUCHPOINTS,
163
+ LAYERS,
164
+ WORKFLOW_TEMPLATES,
165
+ EXAMPLES,
166
+ ATLAS_DATA
105
167
  } from '@quietloudlab/ai-interaction-atlas';
106
168
  ```
107
169
 
108
170
  ### Types
109
171
 
110
- ```typescript
172
+ ```ts
111
173
  import type {
112
174
  AiTask,
113
175
  HumanTask,
@@ -123,371 +185,100 @@ import type {
123
185
 
124
186
  ---
125
187
 
126
- ## API Reference
127
-
128
- ### Search Functions
129
-
130
- #### `searchPatterns(query, options?)`
131
-
132
- Search across all Atlas patterns by keyword.
133
-
134
- ```typescript
135
- import { searchPatterns } from '@quietloudlab/ai-interaction-atlas';
136
-
137
- // Search all dimensions
138
- const results = searchPatterns('review');
139
-
140
- // Search specific dimensions
141
- const humanResults = searchPatterns('review', {
142
- dimensions: ['human']
143
- });
144
-
145
- // Case-sensitive search
146
- const exactMatches = searchPatterns('API', {
147
- caseSensitive: true
148
- });
149
-
150
- // Limit results
151
- const topResults = searchPatterns('generate', {
152
- dimensions: ['ai'],
153
- limit: 5
154
- });
155
- ```
156
-
157
- **Options:**
158
- - `dimensions?: Array<'ai' | 'human' | 'system' | 'data' | 'constraints' | 'touchpoints'>` - Dimensions to search (default: all)
159
- - `caseSensitive?: boolean` - Case sensitive search (default: false)
160
- - `searchDescription?: boolean` - Search in description field (default: true)
161
- - `limit?: number` - Limit number of results (default: no limit)
162
-
163
- ---
164
-
165
- #### `getPattern(id)`
166
-
167
- Get a specific pattern by ID (slug or target_id).
168
-
169
- ```typescript
170
- import { getPattern } from '@quietloudlab/ai-interaction-atlas';
171
-
172
- const task = getPattern('classify-intent');
173
- const artifact = getPattern('embedding');
174
- const constraint = getPattern('privacy-compliance');
175
-
176
- if (task) {
177
- console.log(task.name);
178
- console.log(task.description);
179
- console.log(task.inputs);
180
- console.log(task.outputs);
181
- }
182
- ```
183
-
184
- ---
185
-
186
- #### `getPatternsByDimension(dimension)`
187
-
188
- Get all patterns from a specific dimension.
189
-
190
- ```typescript
191
- import { getPatternsByDimension } from '@quietloudlab/ai-interaction-atlas';
192
-
193
- const aiTasks = getPatternsByDimension('ai');
194
- const constraints = getPatternsByDimension('constraints');
195
- ```
196
-
197
- ---
198
-
199
- ### Filter Functions
200
-
201
- #### `filterByLayer(tasks, layerId)`
202
-
203
- Filter tasks by processing layer.
188
+ ## API Overview
204
189
 
205
- ```typescript
206
- import { AI_TASKS, filterByLayer } from '@quietloudlab/ai-interaction-atlas';
190
+ ### `searchPatterns(query, options?)`
191
+ Search across all Atlas elements by keyword.
207
192
 
208
- const inboundTasks = filterByLayer(AI_TASKS, 'layer_inbound');
209
- const internalTasks = filterByLayer(AI_TASKS, 'layer_internal');
193
+ ```ts
194
+ searchPatterns('review', { dimensions: ['human'], limit: 5 });
210
195
  ```
211
196
 
212
- ---
213
-
214
- #### `getTasksByLayer(layerId)`
215
-
216
- Get all tasks (AI, Human, System) in a specific layer.
197
+ ### `getPattern(id)`
198
+ Retrieve a single pattern by ID (slug or target_id).
217
199
 
218
- ```typescript
219
- import { getTasksByLayer } from '@quietloudlab/ai-interaction-atlas';
220
-
221
- const inbound = getTasksByLayer('layer_inbound');
222
- console.log(inbound.ai); // AI tasks in inbound layer
223
- console.log(inbound.human); // Human tasks in inbound layer
224
- console.log(inbound.system); // System tasks in inbound layer
200
+ ```ts
201
+ getPattern('privacy-compliance');
225
202
  ```
226
203
 
227
- ---
228
-
229
- #### `filterArtifactsByCategory(category)`
230
-
231
- Filter data artifacts by category.
232
-
233
- ```typescript
234
- import { filterArtifactsByCategory } from '@quietloudlab/ai-interaction-atlas';
204
+ ### `getPatternsByDimension(dimension)`
205
+ Retrieve all patterns from one dimension.
235
206
 
236
- const textArtifacts = filterArtifactsByCategory('text');
237
- const visualArtifacts = filterArtifactsByCategory('visual');
207
+ ```ts
208
+ getPatternsByDimension('constraints');
238
209
  ```
239
210
 
240
- ---
241
-
242
- #### `getAtlasStats()`
243
-
244
- Get statistics about the Atlas.
245
-
246
- ```typescript
247
- import { getAtlasStats } from '@quietloudlab/ai-interaction-atlas';
248
-
249
- const stats = getAtlasStats();
250
- console.log(stats);
251
- // {
252
- // ai: 45,
253
- // human: 28,
254
- // system: 31,
255
- // data: 52,
256
- // constraints: 42,
257
- // touchpoints: 18,
258
- // layers: 4,
259
- // total: 216
260
- // }
261
- ```
262
-
263
- ---
211
+ ### `validateWorkflow(nodeIds)`
212
+ Validate that a workflow uses valid Atlas elements.
264
213
 
265
- ### Validation Functions
266
-
267
- #### `isValidTaskId(taskId)`
268
-
269
- Check if a task ID exists in the Atlas.
270
-
271
- ```typescript
272
- import { isValidTaskId } from '@quietloudlab/ai-interaction-atlas';
273
-
274
- if (isValidTaskId('ai_classify_intent')) {
275
- console.log('Valid task!');
276
- }
277
- ```
278
-
279
- ---
280
-
281
- #### `validateWorkflow(nodeIds)`
282
-
283
- Validate a workflow design.
284
-
285
- ```typescript
286
- import { validateWorkflow } from '@quietloudlab/ai-interaction-atlas';
287
-
288
- const result = validateWorkflow([
289
- 'ai_classify_intent',
214
+ ```ts
215
+ validateWorkflow([
216
+ 'ai_generate_text',
290
217
  'human_review_output',
291
- 'system_log_event'
218
+ 'system_store_result'
292
219
  ]);
293
-
294
- if (!result.valid) {
295
- console.error('Invalid IDs:', result.invalidIds);
296
- }
297
- ```
298
-
299
- ---
300
-
301
- #### Type Guards
302
-
303
- ```typescript
304
- import { isAiTask, isHumanTask, isSystemTask } from '@quietloudlab/ai-interaction-atlas';
305
-
306
- if (isAiTask(someTask)) {
307
- // TypeScript knows this is an AiTask
308
- console.log(someTask.layer);
309
- }
310
- ```
311
-
312
- ---
313
-
314
- ## Real-World Use Cases
315
-
316
- ### 1. LLM System Prompt
317
-
318
- Include Atlas patterns in your AI assistant's context:
319
-
320
- ```typescript
321
- import { AI_TASKS, HUMAN_TASKS } from '@quietloudlab/ai-interaction-atlas';
322
-
323
- const systemPrompt = `
324
- You are an AI workflow designer. Use these interaction patterns from the AI Interaction Atlas:
325
-
326
- AI Capabilities:
327
- ${AI_TASKS.map(t => `- ${t.name}: ${t.description}`).join('\n')}
328
-
329
- Human Actions:
330
- ${HUMAN_TASKS.map(t => `- ${t.name}: ${t.description}`).join('\n')}
331
-
332
- Design workflows that combine these patterns effectively.
333
- `;
334
220
  ```
335
221
 
336
222
  ---
337
223
 
338
- ### 2. Validate Workflow Designs
339
-
340
- Ensure workflows use valid patterns:
341
-
342
- ```typescript
343
- import { validateWorkflow, getPattern } from '@quietloudlab/ai-interaction-atlas';
344
-
345
- function analyzeWorkflow(nodeIds: string[]) {
346
- const validation = validateWorkflow(nodeIds);
224
+ ## Real-World Uses
347
225
 
348
- if (!validation.valid) {
349
- console.error('Invalid patterns:', validation.invalidIds);
350
- return false;
351
- }
352
-
353
- // Analyze each node
354
- nodeIds.forEach(id => {
355
- const pattern = getPattern(id);
356
- console.log(`✓ ${pattern?.name}`);
357
- });
358
-
359
- return true;
360
- }
361
- ```
362
-
363
- ---
364
-
365
- ### 3. Generate Documentation
366
-
367
- Auto-generate workflow documentation:
368
-
369
- ```typescript
370
- import { getPattern } from '@quietloudlab/ai-interaction-atlas';
371
-
372
- function documentWorkflow(nodeIds: string[]) {
373
- const docs = nodeIds.map(id => {
374
- const pattern = getPattern(id);
375
- if (!pattern) return null;
376
-
377
- return {
378
- name: pattern.name,
379
- description: pattern.description,
380
- inputs: pattern.inputs,
381
- outputs: pattern.outputs
382
- };
383
- }).filter(Boolean);
384
-
385
- return docs;
386
- }
387
- ```
388
-
389
- ---
390
-
391
- ### 4. Build a Pattern Search Tool
392
-
393
- Create a CLI tool for exploring patterns:
394
-
395
- ```typescript
396
- import { searchPatterns, getAtlasStats } from '@quietloudlab/ai-interaction-atlas';
397
-
398
- function searchCLI(query: string) {
399
- console.log('Searching Atlas...\n');
400
-
401
- const results = searchPatterns(query);
402
-
403
- console.log(`Found ${results.length} patterns:\n`);
404
-
405
- results.forEach(pattern => {
406
- console.log(`- ${pattern.name}`);
407
- console.log(` ${pattern.description}\n`);
408
- });
409
-
410
- const stats = getAtlasStats();
411
- console.log(`\nAtlas contains ${stats.total} total patterns.`);
412
- }
413
- ```
414
-
415
- ---
416
-
417
- ### 5. Filter by Constraint
418
-
419
- Find patterns compatible with specific constraints:
420
-
421
- ```typescript
422
- import {
423
- AI_TASKS,
424
- CONSTRAINTS,
425
- filterConstraintsByCategory
426
- } from '@quietloudlab/ai-interaction-atlas';
427
-
428
- // Get all privacy-related constraints
429
- const privacyConstraints = filterConstraintsByCategory('Quality & Safety');
430
-
431
- // Find AI tasks suitable for high-privacy scenarios
432
- const privateTasks = AI_TASKS.filter(task => {
433
- // Your custom logic to check compatibility
434
- return task.description.toLowerCase().includes('privacy');
435
- });
436
- ```
226
+ - **Design audits:** Map an existing AI product to surface risks and gaps
227
+ - **System prompts:** Ground AI assistants in real interaction patterns
228
+ - **Documentation:** Generate inspectable system diagrams and specs
229
+ - **Tooling:** Build search, validation, or mapping tools on top of the Atlas
230
+ - **Education:** Teach applied AI system design with concrete language
437
231
 
438
232
  ---
439
233
 
440
234
  ## TypeScript Support
441
235
 
442
- This package is written in TypeScript and includes full type definitions.
443
-
444
- ```typescript
445
- import type {
446
- AiTask,
447
- HumanTask,
448
- IOSpec,
449
- AtlasData
450
- } from '@quietloudlab/ai-interaction-atlas';
236
+ Written in TypeScript with full type definitions.
451
237
 
238
+ ```ts
452
239
  function analyzeTask(task: AiTask) {
453
- // Full type safety and autocomplete
454
- const inputs: IOSpec | undefined = task.inputs;
455
- const outputs: IOSpec | undefined = task.outputs;
456
- const layer: string = task.layer;
240
+ console.log(task.layer);
241
+ console.log(task.inputs);
242
+ console.log(task.outputs);
457
243
  }
458
244
  ```
459
245
 
460
246
  ---
461
247
 
462
- ## Bundle Size
248
+ ## Bundle & Dependencies
463
249
 
464
- - **~220KB** uncompressed
465
- - **Tree-shakeable** - import only what you need
466
- - **Zero dependencies** - pure data
250
+ - ~220KB uncompressed
251
+ - Tree-shakeable
252
+ - Zero runtime dependencies
253
+ - Pure data + utilities
467
254
 
468
255
  ---
469
256
 
470
257
  ## License
471
258
 
472
- Apache 2.0 - see [LICENSE](LICENSE) file for details.
259
+ Apache 2.0 free to use, modify, and integrate commercially.
260
+ See [LICENSE](LICENSE) for details.
473
261
 
474
262
  ---
475
263
 
476
264
  ## About
477
265
 
478
- Created by [Brandon Harwood](https://www.linkedin.com/in/brandon-harwood/) at [quietloudlab](https://quietloudlab.com), a design and research studio specializing in human-centered AI.
266
+ Created by **Brandon Harwood** at **quietloudlab**
267
+ a design and research studio focused on human-centered AI, system legibility, and responsible interaction design.
479
268
 
480
- ---
481
-
482
- ## Links
483
-
484
- - 🌐 [Live Atlas](https://ai-interaction.com)
485
- - 📖 [Rationale](https://ai-interaction.com/rationale)
486
- - 🐙 [GitHub Repository](https://github.com/quietloudlab/ai-interaction-atlas)
487
- - 🐛 [Report Issues](https://github.com/quietloudlab/ai-interaction-atlas/issues)
269
+ - 🌐 https://quietloudlab.com
270
+ - 🌐 https://ai-interaction.com
488
271
 
489
272
  ---
490
273
 
491
274
  ## Contributing
492
275
 
493
- The Atlas is open source and contributions are welcome! See the main repository for contribution guidelines.
276
+ The Atlas is open source and evolving.
277
+
278
+ Contributions, issues, and discussions are welcome — especially around:
279
+ - new patterns
280
+ - clearer definitions
281
+ - real-world examples
282
+ - missing constraints
283
+
284
+ See the GitHub repository for contribution guidelines.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quietloudlab/ai-interaction-atlas",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "A shared language for designing AI experiences - 100+ interaction patterns across human actions, AI tasks, system operations, data, constraints, and touchpoints",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -51,7 +51,7 @@
51
51
  "homepage": "https://ai-interaction.com",
52
52
  "repository": {
53
53
  "type": "git",
54
- "url": "https://github.com/quietloudlab/ai-interaction-atlas.git",
54
+ "url": "git+https://github.com/quietloudlab/ai-interaction-atlas.git",
55
55
  "directory": "atlas-package"
56
56
  },
57
57
  "bugs": {