folder-nature 0.1.0__tar.gz

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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Illia Hladkyi
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.
@@ -0,0 +1,205 @@
1
+ Metadata-Version: 2.4
2
+ Name: folder-nature
3
+ Version: 0.1.0
4
+ Summary: Semantic identity for filesystem folders — folders become conversation partners
5
+ Author: Illia Hladkyi
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/myfjin/folder-nature
8
+ Project-URL: Repository, https://github.com/myfjin/folder-nature
9
+ Project-URL: Issues, https://github.com/myfjin/folder-nature/issues
10
+ Keywords: filesystem,metadata,semantic,organization,self-hosted
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: System Administrators
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: System :: Filesystems
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: PyYAML>=6.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7.0; extra == "dev"
29
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
30
+ Dynamic: license-file
31
+
32
+ # folder-nature
33
+
34
+ > *Folders are not containers. They're ecosystems with collective memory, personality, and rules.*
35
+
36
+ A directory becomes a conversation partner: it has identity, purpose, rules,
37
+ and history, all captured in a hidden `.folder-nature` YAML file at the
38
+ directory's root.
39
+
40
+ ## What problem this solves
41
+
42
+ Filesystems don't carry meaning. `~/Projects/old_v3_final/` could be anything.
43
+ Search-by-filename doesn't help when you can't remember the filename. New team
44
+ members start from zero. AI assistants scan everything.
45
+
46
+ folder-nature attaches a small piece of YAML to each directory that captures:
47
+ - What this folder is for
48
+ - What kind of folder it is (workspace, archive, configs, ...)
49
+ - What tags apply
50
+ - What rules govern it
51
+ - When it was created and what notable things happened
52
+
53
+ Once attached, you can search by meaning, walk up to find the boss folder,
54
+ validate the tree, and let AI tools query a folder's intent before they
55
+ interact with its contents.
56
+
57
+ ## Install
58
+
59
+ ```bash
60
+ pip install git+https://github.com/myfjin/folder-nature.git
61
+ ```
62
+
63
+ Requires Python 3.10+. Single runtime dependency: PyYAML.
64
+
65
+ > **PyPI release planned for late July 2026.** Once published, install
66
+ > will simplify to `pip install folder-nature`.
67
+
68
+ ## 5-minute tour
69
+
70
+ ```bash
71
+ # Create something to tag
72
+ mkdir demo && cd demo
73
+ mkdir -p Old_Stuff RANDOM new_new_final download untitled_folder
74
+
75
+ # Tag the root
76
+ folder-nature init . --template workspace --name "demo-workspace"
77
+
78
+ # Show what got created
79
+ folder-nature show .
80
+
81
+ # Reorganize + tag the new structure
82
+ mkdir -p projects/{active,archive} clients/{acme,startup-x} documents
83
+ folder-nature init projects/active --template workspace
84
+ folder-nature init projects/archive --template archive
85
+ folder-nature init clients --template client-project --name "my-clients"
86
+ folder-nature init documents --template documentation
87
+
88
+ # Search by meaning
89
+ folder-nature search . --tag client
90
+ folder-nature search . --being collector
91
+
92
+ # Validate the tree
93
+ folder-nature validate .
94
+
95
+ # Tree view
96
+ folder-nature list .
97
+ ```
98
+
99
+ ## Templates (`init --template`)
100
+
101
+ Five archetypes ship with the package:
102
+
103
+ | Template | When to use |
104
+ |----------|-------------|
105
+ | `workspace` | Active project working directory |
106
+ | `client-project` | Client-specific work folder |
107
+ | `archive` | Historical / inactive storage |
108
+ | `deployment` | Production-touching configs and scripts |
109
+ | `documentation` | Docs, references, guides |
110
+
111
+ Customize at init time with `--name "your-name"` or edit the resulting
112
+ `.folder-nature` file directly afterward.
113
+
114
+ ## Commands
115
+
116
+ | Command | What it does |
117
+ |---------|--------------|
118
+ | `folder-nature init [PATH] [--template T]` | Create a new `.folder-nature` |
119
+ | `folder-nature show [PATH]` | Print closest `.folder-nature` (walks up) |
120
+ | `folder-nature query [PATH]` | Find the `director: true` ancestor |
121
+ | `folder-nature search [ROOT] [--tag T] [--being B] [--name N]` | Filter folders by criteria |
122
+ | `folder-nature validate [ROOT]` | Schema-check all `.folder-nature` files in tree |
123
+ | `folder-nature list [ROOT]` | Tree view of every tagged folder |
124
+ | `folder-nature version` | Print tool + schema versions |
125
+
126
+ `PATH` and `ROOT` default to the current directory.
127
+
128
+ ## Schema v1.0
129
+
130
+ A `.folder-nature` file is YAML with this shape:
131
+
132
+ ```yaml
133
+ schema_version: "1.0" # REQUIRED
134
+
135
+ identity: # REQUIRED
136
+ name: "Projects"
137
+ being: "director"
138
+ purpose: "Canonical root for all work"
139
+
140
+ director: true # OPTIONAL (default false)
141
+
142
+ tags: # OPTIONAL
143
+ - work
144
+ - canonical
145
+ - active
146
+
147
+ rules: # OPTIONAL
148
+ - "Only deployed code lives here"
149
+
150
+ memory: # OPTIONAL
151
+ created: "2026-05-09"
152
+ last_significant_change: "2026-06-22"
153
+ notable_events:
154
+ - "2026-05-09: initial setup"
155
+ ```
156
+
157
+ The `identity.being` field accepts a controlled vocabulary plus arbitrary
158
+ custom values (extensibility hatch). Known types:
159
+
160
+ `director` · `collector` · `workspace` · `assets` · `configs` ·
161
+ `documentation` · `ideas` · `external` · `legal` · `team-shared` ·
162
+ `private` · `system`
163
+
164
+ ## Design principles
165
+
166
+ 1. **Files, not databases.** Each folder owns its own YAML. Git-friendly,
167
+ editor-friendly, no central store.
168
+ 2. **Self-hosted.** Runs entirely local. No network calls. No telemetry.
169
+ 3. **Schema-versioned.** Future schema bumps migrate cleanly.
170
+ 4. **AI-readable.** Optional integration with LLM assistants — they query the
171
+ folder's nature before interacting with its contents.
172
+ 5. **Open from day one.** MIT licensed. Code reviewable. Schema documented.
173
+
174
+ ## Roadmap
175
+
176
+ - **v0.1 (this release):** core MVP — schema, CLI, 5 templates, tests
177
+ - **v0.2:** export/import, migration tool, more templates
178
+ - **v1.0:** AI integration (`folder-nature ai-suggest`), filesystem watcher,
179
+ comprehensive docs
180
+
181
+ ## License
182
+
183
+ MIT. See [LICENSE](LICENSE).
184
+
185
+ ## Development
186
+
187
+ ```bash
188
+ git clone https://github.com/myfjin/folder-nature
189
+ cd folder-nature
190
+ python3 -m venv .venv
191
+ .venv/bin/pip install -e ".[dev]"
192
+ .venv/bin/pytest
193
+ ```
194
+
195
+ Test suite: 66 tests covering schema validation, filesystem operations,
196
+ search, and CLI integration. Should run in <1 second.
197
+
198
+ ## Origin
199
+
200
+ folder-nature emerged from internal infrastructure work in early 2026 —
201
+ a working hypothesis that filesystems become more useful when directories
202
+ carry semantic identity. The concept proved itself on a 3-node operational
203
+ mesh before being extracted as this standalone tool.
204
+
205
+ 🐍🦅💎
@@ -0,0 +1,174 @@
1
+ # folder-nature
2
+
3
+ > *Folders are not containers. They're ecosystems with collective memory, personality, and rules.*
4
+
5
+ A directory becomes a conversation partner: it has identity, purpose, rules,
6
+ and history, all captured in a hidden `.folder-nature` YAML file at the
7
+ directory's root.
8
+
9
+ ## What problem this solves
10
+
11
+ Filesystems don't carry meaning. `~/Projects/old_v3_final/` could be anything.
12
+ Search-by-filename doesn't help when you can't remember the filename. New team
13
+ members start from zero. AI assistants scan everything.
14
+
15
+ folder-nature attaches a small piece of YAML to each directory that captures:
16
+ - What this folder is for
17
+ - What kind of folder it is (workspace, archive, configs, ...)
18
+ - What tags apply
19
+ - What rules govern it
20
+ - When it was created and what notable things happened
21
+
22
+ Once attached, you can search by meaning, walk up to find the boss folder,
23
+ validate the tree, and let AI tools query a folder's intent before they
24
+ interact with its contents.
25
+
26
+ ## Install
27
+
28
+ ```bash
29
+ pip install git+https://github.com/myfjin/folder-nature.git
30
+ ```
31
+
32
+ Requires Python 3.10+. Single runtime dependency: PyYAML.
33
+
34
+ > **PyPI release planned for late July 2026.** Once published, install
35
+ > will simplify to `pip install folder-nature`.
36
+
37
+ ## 5-minute tour
38
+
39
+ ```bash
40
+ # Create something to tag
41
+ mkdir demo && cd demo
42
+ mkdir -p Old_Stuff RANDOM new_new_final download untitled_folder
43
+
44
+ # Tag the root
45
+ folder-nature init . --template workspace --name "demo-workspace"
46
+
47
+ # Show what got created
48
+ folder-nature show .
49
+
50
+ # Reorganize + tag the new structure
51
+ mkdir -p projects/{active,archive} clients/{acme,startup-x} documents
52
+ folder-nature init projects/active --template workspace
53
+ folder-nature init projects/archive --template archive
54
+ folder-nature init clients --template client-project --name "my-clients"
55
+ folder-nature init documents --template documentation
56
+
57
+ # Search by meaning
58
+ folder-nature search . --tag client
59
+ folder-nature search . --being collector
60
+
61
+ # Validate the tree
62
+ folder-nature validate .
63
+
64
+ # Tree view
65
+ folder-nature list .
66
+ ```
67
+
68
+ ## Templates (`init --template`)
69
+
70
+ Five archetypes ship with the package:
71
+
72
+ | Template | When to use |
73
+ |----------|-------------|
74
+ | `workspace` | Active project working directory |
75
+ | `client-project` | Client-specific work folder |
76
+ | `archive` | Historical / inactive storage |
77
+ | `deployment` | Production-touching configs and scripts |
78
+ | `documentation` | Docs, references, guides |
79
+
80
+ Customize at init time with `--name "your-name"` or edit the resulting
81
+ `.folder-nature` file directly afterward.
82
+
83
+ ## Commands
84
+
85
+ | Command | What it does |
86
+ |---------|--------------|
87
+ | `folder-nature init [PATH] [--template T]` | Create a new `.folder-nature` |
88
+ | `folder-nature show [PATH]` | Print closest `.folder-nature` (walks up) |
89
+ | `folder-nature query [PATH]` | Find the `director: true` ancestor |
90
+ | `folder-nature search [ROOT] [--tag T] [--being B] [--name N]` | Filter folders by criteria |
91
+ | `folder-nature validate [ROOT]` | Schema-check all `.folder-nature` files in tree |
92
+ | `folder-nature list [ROOT]` | Tree view of every tagged folder |
93
+ | `folder-nature version` | Print tool + schema versions |
94
+
95
+ `PATH` and `ROOT` default to the current directory.
96
+
97
+ ## Schema v1.0
98
+
99
+ A `.folder-nature` file is YAML with this shape:
100
+
101
+ ```yaml
102
+ schema_version: "1.0" # REQUIRED
103
+
104
+ identity: # REQUIRED
105
+ name: "Projects"
106
+ being: "director"
107
+ purpose: "Canonical root for all work"
108
+
109
+ director: true # OPTIONAL (default false)
110
+
111
+ tags: # OPTIONAL
112
+ - work
113
+ - canonical
114
+ - active
115
+
116
+ rules: # OPTIONAL
117
+ - "Only deployed code lives here"
118
+
119
+ memory: # OPTIONAL
120
+ created: "2026-05-09"
121
+ last_significant_change: "2026-06-22"
122
+ notable_events:
123
+ - "2026-05-09: initial setup"
124
+ ```
125
+
126
+ The `identity.being` field accepts a controlled vocabulary plus arbitrary
127
+ custom values (extensibility hatch). Known types:
128
+
129
+ `director` · `collector` · `workspace` · `assets` · `configs` ·
130
+ `documentation` · `ideas` · `external` · `legal` · `team-shared` ·
131
+ `private` · `system`
132
+
133
+ ## Design principles
134
+
135
+ 1. **Files, not databases.** Each folder owns its own YAML. Git-friendly,
136
+ editor-friendly, no central store.
137
+ 2. **Self-hosted.** Runs entirely local. No network calls. No telemetry.
138
+ 3. **Schema-versioned.** Future schema bumps migrate cleanly.
139
+ 4. **AI-readable.** Optional integration with LLM assistants — they query the
140
+ folder's nature before interacting with its contents.
141
+ 5. **Open from day one.** MIT licensed. Code reviewable. Schema documented.
142
+
143
+ ## Roadmap
144
+
145
+ - **v0.1 (this release):** core MVP — schema, CLI, 5 templates, tests
146
+ - **v0.2:** export/import, migration tool, more templates
147
+ - **v1.0:** AI integration (`folder-nature ai-suggest`), filesystem watcher,
148
+ comprehensive docs
149
+
150
+ ## License
151
+
152
+ MIT. See [LICENSE](LICENSE).
153
+
154
+ ## Development
155
+
156
+ ```bash
157
+ git clone https://github.com/myfjin/folder-nature
158
+ cd folder-nature
159
+ python3 -m venv .venv
160
+ .venv/bin/pip install -e ".[dev]"
161
+ .venv/bin/pytest
162
+ ```
163
+
164
+ Test suite: 66 tests covering schema validation, filesystem operations,
165
+ search, and CLI integration. Should run in <1 second.
166
+
167
+ ## Origin
168
+
169
+ folder-nature emerged from internal infrastructure work in early 2026 —
170
+ a working hypothesis that filesystems become more useful when directories
171
+ carry semantic identity. The concept proved itself on a 3-node operational
172
+ mesh before being extracted as this standalone tool.
173
+
174
+ 🐍🦅💎
@@ -0,0 +1,57 @@
1
+ """folder-nature — semantic identity for filesystem folders.
2
+
3
+ A directory becomes a conversation partner: it has identity, purpose, rules,
4
+ and history, all captured in a hidden ``.folder-nature`` YAML file.
5
+
6
+ Public API:
7
+
8
+ from folder_nature import (
9
+ FolderNature,
10
+ SchemaError,
11
+ find_director,
12
+ get_folder_nature,
13
+ write_folder_nature,
14
+ search,
15
+ validate,
16
+ )
17
+
18
+ CLI entry point: ``folder-nature`` (see ``folder_nature.cli``).
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+ __version__ = "0.1.0"
24
+ __schema_version__ = "1.0"
25
+
26
+ from .schema import (
27
+ FolderNature,
28
+ SchemaError,
29
+ SCHEMA_VERSION,
30
+ BEING_TYPES,
31
+ validate as validate_data,
32
+ )
33
+ from .core import (
34
+ find_director,
35
+ get_folder_nature,
36
+ read_folder_nature,
37
+ write_folder_nature,
38
+ NATURE_FILENAME,
39
+ )
40
+ from .search import search, list_all
41
+
42
+ __all__ = [
43
+ "__version__",
44
+ "__schema_version__",
45
+ "FolderNature",
46
+ "SchemaError",
47
+ "SCHEMA_VERSION",
48
+ "BEING_TYPES",
49
+ "NATURE_FILENAME",
50
+ "validate_data",
51
+ "find_director",
52
+ "get_folder_nature",
53
+ "read_folder_nature",
54
+ "write_folder_nature",
55
+ "search",
56
+ "list_all",
57
+ ]