Seeded repo with intent and a cool extension.

This commit is contained in:
2026-05-17 22:34:39 +02:00
parent c9796bee6c
commit 7b40a1ecab
3 changed files with 1532 additions and 3 deletions

511
INTENT.md Normal file
View File

@@ -0,0 +1,511 @@
# INTENT
## Project Name
**can-you-assist**
Short name / command name:
**cya**
---
## Purpose
`can-you-assist` exists to provide a command-line assistant interface for getting practical work done in the console with the help of large language models.
The project aims to make LLM-based assistance available directly where many technical users already work: in shells, repositories, local filesystems, notes, scripts, logs, and project directories.
Instead of requiring users to remember every option, flag, subcommand, file format, or tool-specific convention, `cya` should allow users to express intent in natural language and receive useful, context-aware help for command-line tasks.
The guiding idea is simple:
> Let the user ask for help at the console, let available LLM infrastructure provide the reasoning, and keep the memory, history, preferences, and adaptation under the users control.
---
## Primary Utility
`cya` provides a command-line tool that helps users interact with their local working environment through LLM-supported assistance.
It should support tasks such as:
- understanding files, folders, repositories, notes, and project structures;
- generating, explaining, improving, or transforming shell commands;
- assisting with code repository inspection and maintenance;
- helping with file-based workflows;
- summarizing and navigating textual content;
- providing context-aware hints without requiring users to remember detailed command syntax;
- adapting to user preferences, workflows, aliases, conventions, and recurring patterns over time.
The tool should act as a practical helper for console-based work, not as a replacement for the shell, editor, version control system, or specialized CLI tools.
---
## Core Motivation
Modern command-line environments are powerful but cognitively expensive.
Users often know what they want to achieve but do not remember:
- the exact command;
- the right flags;
- the safest invocation;
- the expected file format;
- the best tool for the job;
- the local project conventions;
- the accumulated context from previous related work.
LLM-based tools can help with this, but many existing systems centralize memory, history, adaptation, and workflow knowledge inside vendor-controlled applications.
`cya` should provide a user-controlled alternative:
- the user chooses or configures the available LLM backend;
- interaction history remains inspectable and portable;
- preferences and learned patterns are stored under user control;
- project-specific context can be managed locally;
- the tool can integrate with different LLM infrastructures instead of being locked to one provider.
---
## Intended Users
`cya` is primarily intended for users who work frequently in a terminal and want lightweight LLM assistance without leaving their local workflow.
Important user groups include:
- software developers;
- technical writers;
- repository maintainers;
- system operators;
- power users managing file-based notes and knowledge spaces;
- users working with many command-line tools but not wanting to memorize all details;
- users who want LLM assistance while keeping memory and adaptation portable and transparent.
---
## Primary Use Cases
### 1. Command Assistance
The user describes what they want to do, and `cya` suggests an appropriate command or sequence of commands.
Examples:
```bash
cya "find all markdown files modified this week"
cya "show me the git branches that are already merged"
cya "compress this folder but exclude node_modules"
````
The goal is not merely command generation, but safe, explainable, context-aware assistance.
---
### 2. Filesystem and Content Interaction
`cya` should help users work with local files and directories.
Examples:
```bash
cya "summarize the notes in this folder"
cya "find files that look like project plans"
cya "extract todos from these markdown files"
cya "compare these two config files"
```
The tool should be especially useful for text-heavy local workspaces such as code repositories, markdown notes, documentation trees, logs, and exported knowledge bases.
---
### 3. Code Repository Assistance
`cya` should help users inspect, understand, and work with code repositories.
Examples:
```bash
cya "what does this repo do?"
cya "where is the CLI entry point?"
cya "find likely places where authentication is handled"
cya "summarize recent changes"
cya "suggest a safe first refactoring step"
```
The project should support repository-aware context discovery without assuming one fixed project structure or language ecosystem.
---
### 4. Local Notes and Knowledge Work
`cya` should help users interact with file-based notes, project journals, markdown documents, and knowledge collections.
Examples:
```bash
cya "collect open decisions from these notes"
cya "turn this rough note into a project outline"
cya "find related notes about deployment"
cya "summarize what I worked on in this directory"
```
This use case is important because many users maintain valuable context in local text files rather than in centralized SaaS tools.
---
### 5. Personalized Console Helper
`cya` should adapt to the users habits over time.
It should be able to remember things such as:
* preferred command styles;
* preferred editors;
* shell conventions;
* repository conventions;
* naming preferences;
* common project types;
* preferred explanation depth;
* safety preferences;
* recurring workflows.
This adaptation should be implemented through user-controlled memory rather than opaque vendor-side personalization.
---
## Relationship to `llm-connect`
`cya` should use **llm-connect** as the abstraction layer for accessing LLM capabilities.
The purpose of this relationship is to keep `cya` independent from any single LLM provider, application, API, or runtime.
`llm-connect` should provide the connectivity layer for:
* selecting available LLM backends;
* sending prompts and context;
* receiving completions or structured responses;
* supporting different providers or local models;
* allowing users to configure their own LLM infrastructure.
`cya` should not hard-code one privileged LLM vendor as its conceptual foundation.
Instead:
> `cya` asks for assistance; `llm-connect` determines how available LLM infrastructure is reached.
---
## Relationship to `phase-memory`
`cya` should use **phase-memory** to provide memory, history, preferences, and adaptation under user control.
The purpose of this relationship is to separate assistant behavior from opaque application-managed memory.
`phase-memory` should support:
* storing interaction history;
* managing user preferences;
* capturing recurring workflows;
* maintaining project-specific memory;
* distinguishing global, local, temporary, and contextual memory;
* allowing users to inspect, modify, export, reset, or delete memory.
This is a core design principle:
> The users working memory should belong to the user, not to a vendor-owned assistant interface.
`cya` should therefore treat memory as a local or user-controlled capability, not as an invisible feature hidden behind a hosted product.
---
## Design Principles
### Console-Native
`cya` should feel natural in a terminal environment.
It should work well with:
* shell pipelines;
* current working directory context;
* local files;
* environment variables;
* git repositories;
* scripts;
* standard input and output;
* human-readable text;
* machine-readable output where useful.
---
### User-Controlled
The user should remain in control of:
* which LLM backend is used;
* what context is sent;
* what history is stored;
* what preferences are remembered;
* what project memory exists;
* when potentially destructive actions are executed.
`cya` should assist, not take over.
---
### Explainable and Inspectable
When `cya` suggests commands or actions, it should be possible to inspect what it is doing.
Important behaviors should be explainable:
* why a command was suggested;
* what files are being read;
* what context is being used;
* what memory influenced the answer;
* what risks may exist;
* what assumptions were made.
---
### Safe by Default
`cya` should avoid dangerous automatic execution.
Potentially destructive operations should require explicit user confirmation.
Examples include:
* deleting files;
* overwriting files;
* force-pushing git branches;
* changing permissions;
* running network-affecting commands;
* executing generated scripts;
* modifying many files at once.
The tool should prefer preview, explanation, and confirmation over blind execution.
---
### Backend-Agnostic
`cya` should not be tied to one assistant product.
It should be able to use different LLM infrastructures through `llm-connect`, including:
* hosted LLM APIs;
* local models;
* CLI-based LLM tools;
* organization-provided endpoints;
* future agentic runtimes.
The command-line interface should remain stable even if the underlying LLM infrastructure changes.
---
### Memory-Aware but Not Memory-Dependent
`cya` should become more useful through memory, but it should not require memory to function.
A first-time user should be able to use it immediately.
A long-time user should benefit from accumulated context, preferences, and workflow knowledge.
---
## Conceptual Architecture
At a conceptual level, `cya` consists of the following responsibilities:
### 1. CLI Interface
The command-line entry point used by the user.
Responsible for:
* parsing user input;
* identifying command modes;
* handling stdin/stdout;
* resolving current directory context;
* presenting results;
* asking for confirmation where needed.
---
### 2. Context Collector
Responsible for gathering relevant local context.
Possible sources include:
* current working directory;
* selected files;
* git status;
* repository metadata;
* configuration files;
* piped input;
* recent command history, where available and permitted;
* explicit user-provided context.
The context collector should be conservative and transparent.
---
### 3. Assistance Orchestrator
Responsible for turning user intent and collected context into a structured assistance request.
It decides:
* what kind of help is being requested;
* what context is relevant;
* whether memory should be consulted;
* whether the answer should be a command, explanation, patch, summary, or plan;
* whether safety checks are needed.
---
### 4. LLM Access Layer
Provided through `llm-connect`.
Responsible for:
* communicating with the selected LLM backend;
* abstracting provider differences;
* supporting configuration of available models and endpoints.
---
### 5. Memory Layer
Provided through `phase-memory`.
Responsible for:
* user preferences;
* project-specific memory;
* interaction history;
* workflow adaptation;
* reusable patterns;
* inspectable assistant state.
---
### 6. Safety and Confirmation Layer
Responsible for identifying risky actions and enforcing confirmation flows.
This layer should help prevent accidental damage caused by generated commands or misunderstood instructions.
---
## Expected Repository Role
This repository should contain the implementation and documentation for the `cya` command-line tool.
It should define:
* the CLI behavior;
* configuration model;
* integration points with `llm-connect`;
* integration points with `phase-memory`;
* prompt and context-handling conventions;
* safety rules;
* user-facing documentation;
* examples and workflows;
* tests for core command behavior.
---
## Out of Scope
The project should not initially aim to become:
* a full IDE;
* a full agentic coding environment;
* a vendor-specific LLM client;
* a replacement for Claude Code, Codex, shell tools, git, editors, or package managers;
* a centralized SaaS memory platform;
* an autonomous system that freely modifies the filesystem without confirmation;
* a general-purpose chatbot detached from console work.
`cya` may overlap with existing LLM console tools, but its intended differentiator is user-controlled, console-native assistance with portable memory and backend-agnostic LLM access.
---
## Initial Scope
The initial version should focus on a small but useful command-line assistant loop.
A reasonable first scope includes:
* a `cya` command that accepts natural-language requests;
* current-directory awareness;
* optional file input;
* optional stdin input;
* basic command suggestion;
* basic explanation mode;
* safe preview-first behavior;
* integration with `llm-connect`;
* simple integration with `phase-memory` for preferences and history;
* configuration file support;
* clear documentation of what context is sent to the LLM.
Example commands:
```bash
cya "what does this repo do?"
cya "suggest a command to find large files"
cya explain "tar -czf archive.tar.gz ./docs"
cya files "summarize these markdown files" README.md docs/*.md
cat error.log | cya "what is going wrong here?"
```
---
## Long-Term Direction
Over time, `cya` may evolve into a personalized command-line assistant substrate.
Possible future capabilities include:
* project-specific assistant profiles;
* reusable workflow recipes;
* local command learning;
* shell integration;
* repository indexing;
* structured task execution plans;
* safe patch generation;
* memory inspection and editing commands;
* team-shared memory packs;
* domain-specific helper plugins;
* integration with agentic coding tools;
* support for multiple concurrent LLM backends;
* transparent context and cost reporting.
The long-term ambition is not to create yet another closed assistant interface, but to provide a small, powerful, user-controlled bridge between local work and available LLM intelligence.
---
## Success Criteria
The project is successful if users can:
* get useful command-line help without remembering tool details;
* work more effectively with local files, notes, and repositories;
* choose their own LLM backend;
* inspect and control what context is used;
* preserve their own history and preferences;
* adapt the assistant to their workflows over time;
* avoid vendor lock-in for assistant memory and personalization;
* safely use LLM assistance in real console workflows.
---
## Mission Statement
`can-you-assist` gives users a console-native, backend-agnostic LLM helper that understands local work, remembers under user control, and helps get things done without requiring command-line trivia to be kept in human memory.

View File

@@ -1,3 +1,3 @@
# repo-seed
A git repository template to bootstrap coulomb projects from.
Cya provides a console-native, backend-agnostic LLM helper that understands local work,
remembers, is under user control, and helps get things done without requiring command-line
trivia to be kept in human memory.

File diff suppressed because it is too large Load Diff