From 6c870ac86de357bf85e7dfa813645599713bb7be Mon Sep 17 00:00:00 2001 From: Tomasz Kopacz Date: Thu, 5 Feb 2026 13:01:21 +0000 Subject: [PATCH 1/5] feat: --tags SecurityControl=Ignore SecurityExemption=StorageAccountKeyAccess --- __azurite_db_queue__.json | 1 + __azurite_db_queue_extent__.json | 1 + challenge-0/README.md | 2 +- challenge-0/seed_data.py | 122 +++++++++++++++++++++++++++++++ 4 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 __azurite_db_queue__.json create mode 100644 __azurite_db_queue_extent__.json create mode 100644 challenge-0/seed_data.py diff --git a/__azurite_db_queue__.json b/__azurite_db_queue__.json new file mode 100644 index 0000000..ff1cfb8 --- /dev/null +++ b/__azurite_db_queue__.json @@ -0,0 +1 @@ +{"filename":"/workspaces/pltk-agentic-factory-hack/__azurite_db_queue__.json","collections":[{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$QUEUES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"name":{"name":"name","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$QUEUES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$MESSAGES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"queueName":{"name":"queueName","dirty":false,"values":[]},"messageId":{"name":"messageId","dirty":false,"values":[]},"visibleTime":{"name":"visibleTime","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$MESSAGES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file diff --git a/__azurite_db_queue_extent__.json b/__azurite_db_queue_extent__.json new file mode 100644 index 0000000..7376c25 --- /dev/null +++ b/__azurite_db_queue_extent__.json @@ -0,0 +1 @@ +{"filename":"/workspaces/pltk-agentic-factory-hack/__azurite_db_queue_extent__.json","collections":[{"name":"$EXTENTS_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"id":{"name":"id","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$EXTENTS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file diff --git a/challenge-0/README.md b/challenge-0/README.md index 5ec7785..698d696 100644 --- a/challenge-0/README.md +++ b/challenge-0/README.md @@ -214,7 +214,7 @@ export RESOURCE_GROUP="rg-tire-factory-hack-${RG_SUFFIX}" export LOCATION="swedencentral" # Create resource group -az group create --name $RESOURCE_GROUP --location $LOCATION +az group create --name $RESOURCE_GROUP --location $LOCATION --tags SecurityControl=Ignore SecurityExemption=StorageAccountKeyAccess # Deploy infrastructure az deployment group create \ diff --git a/challenge-0/seed_data.py b/challenge-0/seed_data.py new file mode 100644 index 0000000..8358184 --- /dev/null +++ b/challenge-0/seed_data.py @@ -0,0 +1,122 @@ +import json +import os +from azure.cosmos import CosmosClient, PartitionKey + +def load_json_data(file_path): + """Load data from JSON file""" + data = [] + try: + with open(file_path, 'r', encoding='utf-8') as f: + content = json.load(f) + # If it's already a list, use it as is + if isinstance(content, list): + data = content + else: + data = [content] + print(f"βœ… Loaded {len(data)} records from {file_path}") + return data + except Exception as e: + print(f"❌ Error loading {file_path}: {e}") + return [] + +def setup_cosmos_db(): + """Set up Cosmos DB database and containers""" + print("πŸ“¦ Setting up Cosmos DB...") + + # Initialize Cosmos client + cosmos_client = CosmosClient(os.environ['COSMOS_ENDPOINT'], os.environ['COSMOS_KEY']) + + # Create database + database_name = "FactoryOpsDB" + try: + database = cosmos_client.create_database_if_not_exists(id=database_name) + print(f"βœ… Database '{database_name}' ready") + except Exception as e: + print(f"❌ Error creating database: {e}") + return None, None + + # Container definitions with partition keys and optional TTL + containers_config = { + 'Machines': {'partition_key': '/type'}, + 'Thresholds': {'partition_key': '/machineType'}, + 'Telemetry': {'partition_key': '/machineId', 'ttl': 2592000}, # 30 days TTL + 'KnowledgeBase': {'partition_key': '/machineType'}, + 'PartsInventory': {'partition_key': '/category'}, + 'Technicians': {'partition_key': '/department'}, + 'WorkOrders': {'partition_key': '/status'}, + 'MaintenanceHistory': {'partition_key': '/machineId'}, + 'MaintenanceWindows': {'partition_key': '/isAvailable'}, + 'Suppliers': {'partition_key': '/category'} + } + + container_clients = {} + for container_name, config in containers_config.items(): + try: + container = database.create_container_if_not_exists( + id=container_name, + partition_key=PartitionKey(path=config['partition_key']), + default_ttl=config.get('ttl', None) + ) + container_clients[container_name] = container + print(f"βœ… Container '{container_name}' ready") + except Exception as e: + print(f"❌ Error creating container {container_name}: {e}") + + return database, container_clients + +def seed_cosmos_data(container_clients): + """Seed data into Cosmos DB containers""" + print("πŸ“¦ Seeding Cosmos DB data...") + + # Data file mappings (relative to challenge-0 directory) + data_mappings = { + 'Machines': 'data/machines.json', + 'Thresholds': 'data/thresholds.json', + 'Telemetry': 'data/telemetry-samples.json', + 'KnowledgeBase': 'data/knowledge-base.json', + 'PartsInventory': 'data/parts-inventory.json', + 'Technicians': 'data/technicians.json', + 'WorkOrders': 'data/work-orders.json', + 'MaintenanceHistory': 'data/maintenance-history.json', + 'MaintenanceWindows': 'data/maintenance-windows.json', + 'Suppliers': 'data/suppliers.json' + } + + for container_name, file_path in data_mappings.items(): + if container_name in container_clients: + data = load_json_data(file_path) + if data: + container = container_clients[container_name] + success_count = 0 + for item in data: + try: + # Ensure document has an id + if 'id' not in item: + print(f"⚠️ Item in {container_name} missing 'id' field") + continue + container.create_item(body=item) + success_count += 1 + except Exception as e: + if "Conflict" not in str(e): # Ignore conflicts (already exists) + print(f"⚠️ Error inserting item into {container_name}: {e}") + print(f"βœ… Imported {success_count} items into {container_name}") + +def main(): + """Main function to orchestrate the data seeding""" + # Check required environment variables + required_vars = ['COSMOS_ENDPOINT', 'COSMOS_KEY'] + missing_vars = [var for var in required_vars if not os.environ.get(var)] + + if missing_vars: + print(f"❌ Missing environment variables: {', '.join(missing_vars)}") + return + + # Set up Cosmos DB + database, container_clients = setup_cosmos_db() + if container_clients: + seed_cosmos_data(container_clients) + + print("βœ… Data seeding completed successfully!") + +if __name__ == "__main__": + main() From 8ec15201277e4bc7076cecb141c97023a56536e8 Mon Sep 17 00:00:00 2001 From: Tomasz Kopacz Date: Thu, 5 Feb 2026 13:21:40 +0000 Subject: [PATCH 2/5] ok --- challenge-0/README.md | 5 ++ challenge-0/purge-soft-deleted.sh | 138 ++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100755 challenge-0/purge-soft-deleted.sh diff --git a/challenge-0/README.md b/challenge-0/README.md index 698d696..3ae1436 100644 --- a/challenge-0/README.md +++ b/challenge-0/README.md @@ -223,6 +223,11 @@ az deployment group create \ --parameters location=$LOCATION ``` +# If redeployed - purge all soft-deleted Azure Resources +``` +./purge-soft-deleted.sh --resource-group $RESOURCE_GROUP +``` + ⏱️Deployment takes approximately 5-10 minutes. diff --git a/challenge-0/purge-soft-deleted.sh b/challenge-0/purge-soft-deleted.sh new file mode 100755 index 0000000..0844857 --- /dev/null +++ b/challenge-0/purge-soft-deleted.sh @@ -0,0 +1,138 @@ +#!/bin/bash +# Script to purge all soft-deleted Azure resources +# Usage: ./purge-soft-deleted.sh [--resource-group ] + +set -e + +# Parse arguments +while [[ $# -gt 0 ]]; do + case $1 in + --resource-group|-g) + RESOURCE_GROUP="$2" + shift 2 + ;; + *) + echo "Unknown option: $1" + exit 1 + ;; + esac +done + +if [ -z "$RESOURCE_GROUP" ]; then + echo "Usage: ./purge-soft-deleted.sh --resource-group " + exit 1 +fi + +echo "=== Purging soft-deleted resources for resource group: $RESOURCE_GROUP ===" + +# Get location from resource group +LOCATION=$(az group show --name "$RESOURCE_GROUP" --query location -o tsv 2>/dev/null || echo "") + +# 1. Purge soft-deleted Key Vaults +echo "" +echo ">>> Checking for soft-deleted Key Vaults..." +DELETED_VAULTS=$(az keyvault list-deleted --query "[?properties.vaultId && contains(properties.vaultId, '$RESOURCE_GROUP')].name" -o tsv 2>/dev/null || echo "") + +if [ -n "$DELETED_VAULTS" ]; then + for vault in $DELETED_VAULTS; do + echo "Purging Key Vault: $vault" + az keyvault purge --name "$vault" --no-wait || echo " Failed to purge $vault" + done +else + echo " No soft-deleted Key Vaults found." +fi + +# Also check all deleted vaults in the location +if [ -n "$LOCATION" ]; then + echo ">>> Checking all soft-deleted Key Vaults in location: $LOCATION..." + DELETED_VAULTS_LOC=$(az keyvault list-deleted --query "[?properties.location=='$LOCATION'].name" -o tsv 2>/dev/null || echo "") + if [ -n "$DELETED_VAULTS_LOC" ]; then + for vault in $DELETED_VAULTS_LOC; do + echo "Purging Key Vault: $vault" + az keyvault purge --name "$vault" --location "$LOCATION" --no-wait 2>/dev/null || echo " Failed to purge $vault (may already be purged)" + done + fi +fi + +# 2. Purge soft-deleted Cognitive Services accounts (includes Azure OpenAI) +echo "" +echo ">>> Checking for soft-deleted Cognitive Services accounts..." +DELETED_COGNITIVE=$(az cognitiveservices account list-deleted --query "[?contains(id, '$RESOURCE_GROUP')].{name:name, location:location}" -o json 2>/dev/null || echo "[]") + +if [ "$DELETED_COGNITIVE" != "[]" ] && [ -n "$DELETED_COGNITIVE" ]; then + echo "$DELETED_COGNITIVE" | jq -r '.[] | "\(.name)|\(.location)"' | while IFS='|' read -r name location; do + if [ -n "$name" ] && [ -n "$location" ]; then + echo "Purging Cognitive Services account: $name in $location" + az cognitiveservices account purge --name "$name" --resource-group "$RESOURCE_GROUP" --location "$location" 2>/dev/null || echo " Failed to purge $name" + fi + done +else + echo " No soft-deleted Cognitive Services accounts found." +fi + +# Also list all deleted cognitive services in case RG match didn't work +echo ">>> Checking all soft-deleted Cognitive Services accounts..." +ALL_DELETED_COGNITIVE=$(az cognitiveservices account list-deleted -o json 2>/dev/null || echo "[]") +if [ "$ALL_DELETED_COGNITIVE" != "[]" ] && [ -n "$ALL_DELETED_COGNITIVE" ]; then + echo "Found soft-deleted Cognitive Services:" + echo "$ALL_DELETED_COGNITIVE" | jq -r '.[] | " - \(.name) (location: \(.location))"' + + # Try to purge each one + echo "$ALL_DELETED_COGNITIVE" | jq -r '.[] | "\(.name)|\(.location)"' | while IFS='|' read -r name location; do + if [ -n "$name" ] && [ -n "$location" ]; then + echo "Purging Cognitive Services account: $name in $location" + az cognitiveservices account purge --name "$name" --resource-group "$RESOURCE_GROUP" --location "$location" 2>/dev/null || echo " Note: May need different resource group for $name" + fi + done +fi + +# 3. Purge soft-deleted API Management instances +echo "" +echo ">>> Checking for soft-deleted API Management instances..." +DELETED_APIM=$(az apim deletedservice list --query "[?contains(serviceId, '$RESOURCE_GROUP')].{name:name, location:location}" -o json 2>/dev/null || echo "[]") + +if [ "$DELETED_APIM" != "[]" ] && [ -n "$DELETED_APIM" ]; then + echo "$DELETED_APIM" | jq -r '.[] | "\(.name)|\(.location)"' | while IFS='|' read -r name location; do + if [ -n "$name" ] && [ -n "$location" ]; then + echo "Purging API Management: $name in $location" + az apim deletedservice purge --service-name "$name" --location "$location" 2>/dev/null || echo " Failed to purge $name" + fi + done +else + echo " No soft-deleted API Management instances found." +fi + +# Also list all deleted APIM +echo ">>> Checking all soft-deleted API Management instances..." +ALL_DELETED_APIM=$(az apim deletedservice list -o json 2>/dev/null || echo "[]") +if [ "$ALL_DELETED_APIM" != "[]" ] && [ -n "$ALL_DELETED_APIM" ]; then + echo "Found soft-deleted API Management instances:" + echo "$ALL_DELETED_APIM" | jq -r '.[] | " - \(.name) (location: \(.location))"' + + echo "$ALL_DELETED_APIM" | jq -r '.[] | "\(.name)|\(.location)"' | while IFS='|' read -r name location; do + if [ -n "$name" ] && [ -n "$location" ]; then + echo "Purging API Management: $name in $location" + az apim deletedservice purge --service-name "$name" --location "$location" --no-wait 2>/dev/null || echo " Failed to purge $name" + fi + done +fi + +# 4. Purge soft-deleted App Configuration stores +echo "" +echo ">>> Checking for soft-deleted App Configuration stores..." +DELETED_APPCONFIG=$(az appconfig list-deleted --query "[?contains(configurationStoreId, '$RESOURCE_GROUP')].{name:name, location:location}" -o json 2>/dev/null || echo "[]") + +if [ "$DELETED_APPCONFIG" != "[]" ] && [ -n "$DELETED_APPCONFIG" ]; then + echo "$DELETED_APPCONFIG" | jq -r '.[] | "\(.name)|\(.location)"' | while IFS='|' read -r name location; do + if [ -n "$name" ] && [ -n "$location" ]; then + echo "Purging App Configuration: $name in $location" + az appconfig purge --name "$name" --location "$location" --yes 2>/dev/null || echo " Failed to purge $name" + fi + done +else + echo " No soft-deleted App Configuration stores found." +fi + +echo "" +echo "=== Soft-delete purge completed ===" +echo "Note: Some purge operations run asynchronously and may take a few minutes to complete." From f007c22d46527df8bbfffae41ce617e21d6b2652 Mon Sep 17 00:00:00 2001 From: Tomasz Kopacz Date: Thu, 5 Feb 2026 16:30:46 +0000 Subject: [PATCH 3/5] fix: update .env path in README for challenge 2 --- .gitignore | 1 + challenge-2/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 686bede..8c99dc5 100644 --- a/.gitignore +++ b/.gitignore @@ -262,3 +262,4 @@ obj/ project.lock.json project.fragment.lock.json artifacts/ +challenge-2/RepairPlanner/ diff --git a/challenge-2/README.md b/challenge-2/README.md index 8e04486..0b5359c 100644 --- a/challenge-2/README.md +++ b/challenge-2/README.md @@ -338,7 +338,7 @@ Try out your agent. ```bash # Load environment variables -export $(cat ../.env | xargs) +export $(cat ../../.env | xargs) dotnet run ``` From fc37d7b1d1e5e923224ea7a01982ec54a0949318 Mon Sep 17 00:00:00 2001 From: Tomasz Kopacz Date: Fri, 6 Feb 2026 10:54:59 +0100 Subject: [PATCH 4/5] refactor: remove seed_data.py as it is no needed --- challenge-0/seed_data.py | 122 --------------------------------------- 1 file changed, 122 deletions(-) delete mode 100644 challenge-0/seed_data.py diff --git a/challenge-0/seed_data.py b/challenge-0/seed_data.py deleted file mode 100644 index 8358184..0000000 --- a/challenge-0/seed_data.py +++ /dev/null @@ -1,122 +0,0 @@ -import json -import os -from azure.cosmos import CosmosClient, PartitionKey - -def load_json_data(file_path): - """Load data from JSON file""" - data = [] - try: - with open(file_path, 'r', encoding='utf-8') as f: - content = json.load(f) - # If it's already a list, use it as is - if isinstance(content, list): - data = content - else: - data = [content] - print(f"βœ… Loaded {len(data)} records from {file_path}") - return data - except Exception as e: - print(f"❌ Error loading {file_path}: {e}") - return [] - -def setup_cosmos_db(): - """Set up Cosmos DB database and containers""" - print("πŸ“¦ Setting up Cosmos DB...") - - # Initialize Cosmos client - cosmos_client = CosmosClient(os.environ['COSMOS_ENDPOINT'], os.environ['COSMOS_KEY']) - - # Create database - database_name = "FactoryOpsDB" - try: - database = cosmos_client.create_database_if_not_exists(id=database_name) - print(f"βœ… Database '{database_name}' ready") - except Exception as e: - print(f"❌ Error creating database: {e}") - return None, None - - # Container definitions with partition keys and optional TTL - containers_config = { - 'Machines': {'partition_key': '/type'}, - 'Thresholds': {'partition_key': '/machineType'}, - 'Telemetry': {'partition_key': '/machineId', 'ttl': 2592000}, # 30 days TTL - 'KnowledgeBase': {'partition_key': '/machineType'}, - 'PartsInventory': {'partition_key': '/category'}, - 'Technicians': {'partition_key': '/department'}, - 'WorkOrders': {'partition_key': '/status'}, - 'MaintenanceHistory': {'partition_key': '/machineId'}, - 'MaintenanceWindows': {'partition_key': '/isAvailable'}, - 'Suppliers': {'partition_key': '/category'} - } - - container_clients = {} - for container_name, config in containers_config.items(): - try: - container = database.create_container_if_not_exists( - id=container_name, - partition_key=PartitionKey(path=config['partition_key']), - default_ttl=config.get('ttl', None) - ) - container_clients[container_name] = container - print(f"βœ… Container '{container_name}' ready") - except Exception as e: - print(f"❌ Error creating container {container_name}: {e}") - - return database, container_clients - -def seed_cosmos_data(container_clients): - """Seed data into Cosmos DB containers""" - print("πŸ“¦ Seeding Cosmos DB data...") - - # Data file mappings (relative to challenge-0 directory) - data_mappings = { - 'Machines': 'data/machines.json', - 'Thresholds': 'data/thresholds.json', - 'Telemetry': 'data/telemetry-samples.json', - 'KnowledgeBase': 'data/knowledge-base.json', - 'PartsInventory': 'data/parts-inventory.json', - 'Technicians': 'data/technicians.json', - 'WorkOrders': 'data/work-orders.json', - 'MaintenanceHistory': 'data/maintenance-history.json', - 'MaintenanceWindows': 'data/maintenance-windows.json', - 'Suppliers': 'data/suppliers.json' - } - - for container_name, file_path in data_mappings.items(): - if container_name in container_clients: - data = load_json_data(file_path) - if data: - container = container_clients[container_name] - success_count = 0 - for item in data: - try: - # Ensure document has an id - if 'id' not in item: - print(f"⚠️ Item in {container_name} missing 'id' field") - continue - container.create_item(body=item) - success_count += 1 - except Exception as e: - if "Conflict" not in str(e): # Ignore conflicts (already exists) - print(f"⚠️ Error inserting item into {container_name}: {e}") - print(f"βœ… Imported {success_count} items into {container_name}") - -def main(): - """Main function to orchestrate the data seeding""" - # Check required environment variables - required_vars = ['COSMOS_ENDPOINT', 'COSMOS_KEY'] - missing_vars = [var for var in required_vars if not os.environ.get(var)] - - if missing_vars: - print(f"❌ Missing environment variables: {', '.join(missing_vars)}") - return - - # Set up Cosmos DB - database, container_clients = setup_cosmos_db() - if container_clients: - seed_cosmos_data(container_clients) - - print("βœ… Data seeding completed successfully!") - -if __name__ == "__main__": - main() From ab8e2caa6a5588b4258df7e7a3c8edb432093c13 Mon Sep 17 00:00:00 2001 From: Tomasz Kopacz Date: Fri, 6 Feb 2026 10:59:32 +0100 Subject: [PATCH 5/5] refactor: remove unused Azurite database JSON files --- __azurite_db_queue__.json | 1 - __azurite_db_queue_extent__.json | 1 - 2 files changed, 2 deletions(-) delete mode 100644 __azurite_db_queue__.json delete mode 100644 __azurite_db_queue_extent__.json diff --git a/__azurite_db_queue__.json b/__azurite_db_queue__.json deleted file mode 100644 index ff1cfb8..0000000 --- a/__azurite_db_queue__.json +++ /dev/null @@ -1 +0,0 @@ -{"filename":"/workspaces/pltk-agentic-factory-hack/__azurite_db_queue__.json","collections":[{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$QUEUES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"name":{"name":"name","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$QUEUES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$MESSAGES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"accountName":{"name":"accountName","dirty":false,"values":[]},"queueName":{"name":"queueName","dirty":false,"values":[]},"messageId":{"name":"messageId","dirty":false,"values":[]},"visibleTime":{"name":"visibleTime","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$MESSAGES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file diff --git a/__azurite_db_queue_extent__.json b/__azurite_db_queue_extent__.json deleted file mode 100644 index 7376c25..0000000 --- a/__azurite_db_queue_extent__.json +++ /dev/null @@ -1 +0,0 @@ -{"filename":"/workspaces/pltk-agentic-factory-hack/__azurite_db_queue_extent__.json","collections":[{"name":"$EXTENTS_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"id":{"name":"id","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$EXTENTS_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file